SlideShare a Scribd company logo
JNoSQL
Otávio Santana
@otaviojava
otaviojava@apache.org
NoSQL
● Database
● Doesn't use structure
● Not Transaction
● BASE
● Five different types
Key Value
● AmazonDynamo
● AmazonS3
● Redis
● Scalaris
● Voldemort
● Couchbase
● Hazelcast
valuekey
valuekey
valuekey
Document
● AmazonSimpleD
● ApacheCouchdb
● MongoDb
● Riak
● Couchbase
Column Family
● Hbase
● Cassandra
● Scylla
● Clouddata
● SimpleDb
● DynamoDB
Row-key Columns...
Apollo
Aphrodite
Ares
Sun
Duty
{Love, happy}
Duty
War
Duty
Sword
weapon
Color
Kratos
Dead Gods
13
Graph
● Neo4j
● InfoGrid
● Sones
● HyperGraphDB
Apollo Ares
Kratoswas killed by was killed by
Is brother
killed killed
Multi-Model
● OrientDB (graph, document)
● Couchbase (key value, document)
● Elasticsearch (document, graph)
● Cassandra (column family, graph - in progress)
SQL Key-value Document Column Graph
Table Bucket Collection Column
Family
Vertex and
Edge
Row Key/value
pair
Document Column Vertex
Column Key/value
pair
Key/value
pair
Vertex and
Edge property
Relationship Link Edge
Relational Application
DAO
API API API
Data Tier
Logic Tier
DAO
Logic Tier
Data Tier
JPA
JDBC
JPA
JDBC
JPA
JDBC
NoSQL Application
The Current Solution
● Spring Data
● Hibernate OGM
● TopLink
DAO
Solution Solution
JPA problem for NoSQL
● Saves Async
● Async Callback
● Time to Live (TTL)
● Consistency Level
● SQL based
● Diversity in NoSQL
The Challenge
● 4 Types
● Differents goals
● Differents behaviors
JNoSQL
● Mapping API
● Communication API
● No lock-in
● Divide and conquer
DAO
Mapping
Communication
Document
Key
Column
Graph
DIANA
ARTEMIS
JNoSQL
Data Tier
JNoSQL
● Eclipse Foundation
● Apache + Eclipse License
● API to each NoSQL type
● Configurable
● Extensible
Mapping
Communication DIANA
ARTEMIS
Why Diana?
● Goddess of the hunt, nature and
moon
● Fought in Troy
● Brave warrior and hunter
● Diana Rome = Artemis Greek
Diana
● API Communication layer
● Document, key-value, Column, Graph
● Universal Adapter
● Standard
Communication Issue
ODocument document = new ODocument(“collection”);
document.field(name, value);
JsonObject jsonObject = JsonObject.create();
jsonObject.put(name, value);
BaseDocument baseDocument = new
BaseDocument();
baseDocument.addAttribute(name, value);
Document document = new Document();
document.append(name, value);
Communication Issue
ODocument document = new ODocument(“collection”);
document.field(name, value);
JsonObject jsonObject = JsonObject.create();
jsonObject.put(name, value);
BaseDocument baseDocument = new
BaseDocument();
baseDocument.addAttribute(name, value);
Document document = new Document();
document.append(name, value);
Communication Issue
DocumentEntity entity =
DocumentEntity.of("documentCollection");
Document document = Document.of(name, value);
entity.add(document);
Issues
● insert vs save
● delete vs remove
● update vs merge
● find vs. search
● callback interface to
asynchronous callback
● long to seconds
● int to seconds
● long to milliseconds
● int to milliseconds
Diana Project
● Document API
● Graph API
● Key-value API
● Column API
● Four TCKs
Database
API
Implementation
TCK
Nomenclature
● Configuration
● Factory
● Manager
● Entity
● Value
Diversity
ColumnEntity entity = ColumnEntity.of(COLUMN_FAMILY);
Column id = Column.of("id", 10L);
entity.add(id);
entity.add(Column.of("version", 0.001));
entity.add(Column.of("name", "Diana"));
entity.add(Column.of("options", Arrays.asList(1, 2, 3)));
//mutiple implementation
columnEntityManager.save(entity);
ColumnQuery query = ColumnQuery.of(COLUMN_FAMILY);
query.addCondition(ColumnCondition.eq(id));
Optional<ColumnEntity> result = columnEntityManager.singleResult(query);
//cassandra only
List<ColumnEntity> entities = columnEntityManagerCassandra
.cql("select * from newKeySpace.newColumnFamily where id=10;");
columnEntityManagerCassandra.save(entity, ConsistencyLevel.ALL);
NoSQL Providers
JUGs/Communities
Artemis● CDI Based
● Diana Based
● Annotation Based
● Events to insert, delete, update
● Supports to Bean Validation
● Configurable and Extensible
● Query Method
Annotations
● MappedSuperclass
● Entity
● Column
@Entity("movie")
public class Movie {
@Column
private String name;
@Column
private long year;
@Column
private Set<String> actors;
interface PersonRepository extends Repository<Person> {
Person findByName(String name);
void deleteByName(String name);
Optional<Person> findByAge(Integer age);
List<Person> findByNameAndAge(String name, Integer age);
Set<Person> findByAgeAndName(Integer age, String name);
Stream<Person> findByNameAndAgeOrderByName(String name, Integer age);
Queue<Person> findByNameAndAgeOrderByAge(String name, Integer age);
}
Dynamic Query
Events
Movie
firePreEntity firePreAPI firePostAPI firePostEntity
Interceptor
Configurable and
extensible
● EventManager
● CrudOperation
● ClassRepresentations
● Converter
● Decorate
● Replace
@Entity("person")
public class Person {
@Column
private String name;
@Column
private Integer age;
@UDT("address")
@Column
private Address home;
}
interface PersonRepository extends CassandraRepository<Person> {
Person findByName(String name, ConsistencyLevel level);
void deleteByName(String name, ConsistencyLevel level);
@CQL("select * from Person")
List<Person> findAll();
@CQL("select * from Person where name = ?")
List<Person> findByName(String name);
}
Road Map
✓ Draft and code proposal
✓ Community Feedback
✓ Involve NoSQL Vendors
✓ Involve Solution
Vendors
✓ Eclipse Project
✓ Development
✓ JSR
Site
http://jnosql.org/
Code
https://github.com/JNOSQL
Mailing List
https://dev.eclipse.org/mailman/listinfo/jnosql-dev
Gitter
https://gitter.im/JNOSQL/developers
Wiki
https://wiki.eclipse.org/JNoSQL
Thank you
Otávio Santana
@otaviojava
osantana@tomitribe.com
otaviojava@apache.org

More Related Content

What's hot (19)

PPT
Why is data independence (still) so important? Optiq and Apache Drill.
Julian Hyde
 
PPT
Mondrian update (Pentaho community meetup 2012, Amsterdam)
Julian Hyde
 
PPTX
Lightning Fast Analytics with Cassandra and Spark
Tim Vincent
 
PPTX
EclipseCon 2021 NoSQL Endgame
Thodoris Bais
 
PDF
Munich March 2015 - Cassandra + Spark Overview
Christopher Batey
 
PPT
SQL on Big Data using Optiq
Julian Hyde
 
PDF
Cubes – pluggable model explained
Stefan Urbanek
 
PDF
Jakarta EE Meets NoSQL at the Cloud Age
Otávio Santana
 
PDF
Spark SQL with Scala Code Examples
Todd McGrath
 
PPTX
NoSQL Endgame DevoxxUA Conference 2020
Thodoris Bais
 
PDF
Streaming SQL with Apache Calcite
Julian Hyde
 
PPTX
Lightning fast analytics with Cassandra and Spark
Victor Coustenoble
 
PDF
SQL Now! How Optiq brings the best of SQL to NoSQL data.
Julian Hyde
 
PPTX
JavaScript / Web Engineering / Web Development / html + css + js/presentation
M Sajid R
 
PPTX
Rapid prototyping of eclipse rcp applications 2017
Patrik Suzzi
 
PPT
How to integrate Splunk with any data solution
Julian Hyde
 
PPTX
Spreadsheet ml subject pivottable
Shawn Villaron
 
PDF
Streaming SQL
Julian Hyde
 
PDF
Combine Spring Data Neo4j and Spring Boot to quickl
Neo4j
 
Why is data independence (still) so important? Optiq and Apache Drill.
Julian Hyde
 
Mondrian update (Pentaho community meetup 2012, Amsterdam)
Julian Hyde
 
Lightning Fast Analytics with Cassandra and Spark
Tim Vincent
 
EclipseCon 2021 NoSQL Endgame
Thodoris Bais
 
Munich March 2015 - Cassandra + Spark Overview
Christopher Batey
 
SQL on Big Data using Optiq
Julian Hyde
 
Cubes – pluggable model explained
Stefan Urbanek
 
Jakarta EE Meets NoSQL at the Cloud Age
Otávio Santana
 
Spark SQL with Scala Code Examples
Todd McGrath
 
NoSQL Endgame DevoxxUA Conference 2020
Thodoris Bais
 
Streaming SQL with Apache Calcite
Julian Hyde
 
Lightning fast analytics with Cassandra and Spark
Victor Coustenoble
 
SQL Now! How Optiq brings the best of SQL to NoSQL data.
Julian Hyde
 
JavaScript / Web Engineering / Web Development / html + css + js/presentation
M Sajid R
 
Rapid prototyping of eclipse rcp applications 2017
Patrik Suzzi
 
How to integrate Splunk with any data solution
Julian Hyde
 
Spreadsheet ml subject pivottable
Shawn Villaron
 
Streaming SQL
Julian Hyde
 
Combine Spring Data Neo4j and Spring Boot to quickl
Neo4j
 

Similar to NoSQL, no Limits, lots of Fun! (20)

PDF
Eclipse JNoSQL: The Definitive Solution for Java and NoSQL Database
Otávio Santana
 
PPTX
JakartaData-JCon.pptx
EmilyJiang23
 
PDF
Let's talk about NoSQL Standard
Otávio Santana
 
PPTX
NoSQL: The first New Jakarta EE Specification (DWX 2019)
Werner Keil
 
PDF
Eclipse JNoSQL updates from JCP September 11
Otávio Santana
 
PDF
JavaOne 2017 - JNoSQL: The Definitive Solution for Java and NoSQL Database [C...
Leonardo De Moura Rocha Lima
 
PDF
The JNoSQL Eclipse Foundation.
Otávio Santana
 
PPTX
NoSQL Endgame - Java2Days 2020 Virtual
Werner Keil
 
PPTX
NoSQL Endgame Percona Live Online 2020
Thodoris Bais
 
PPTX
NoSQL Endgame LWJUG 2021
Thodoris Bais
 
PPTX
Eclipse JNoSQL: The Definitive Solution for Java and NoSQL Databases
Werner Keil
 
PDF
JPoint'15 Mom, I so wish Hibernate for my NoSQL database...
Alexey Zinoviev
 
PPTX
JNoSQL: The Definitive Solution for Java and NoSQL Databases
Werner Keil
 
PDF
Vskills Apache Cassandra sample material
Vskills
 
PPTX
Big data technology unit 3
RojaT4
 
PDF
Comparative study of relational and non relations database performances using...
IAEME Publication
 
PPTX
NoSQL Endgame JCON Conference 2020
Thodoris Bais
 
PDF
NoSQL Databases
zahid-mian
 
PDF
NoSQL.pdf
AnkitPangasa1
 
PPTX
unit2-ppt1.pptx
revathigollu23
 
Eclipse JNoSQL: The Definitive Solution for Java and NoSQL Database
Otávio Santana
 
JakartaData-JCon.pptx
EmilyJiang23
 
Let's talk about NoSQL Standard
Otávio Santana
 
NoSQL: The first New Jakarta EE Specification (DWX 2019)
Werner Keil
 
Eclipse JNoSQL updates from JCP September 11
Otávio Santana
 
JavaOne 2017 - JNoSQL: The Definitive Solution for Java and NoSQL Database [C...
Leonardo De Moura Rocha Lima
 
The JNoSQL Eclipse Foundation.
Otávio Santana
 
NoSQL Endgame - Java2Days 2020 Virtual
Werner Keil
 
NoSQL Endgame Percona Live Online 2020
Thodoris Bais
 
NoSQL Endgame LWJUG 2021
Thodoris Bais
 
Eclipse JNoSQL: The Definitive Solution for Java and NoSQL Databases
Werner Keil
 
JPoint'15 Mom, I so wish Hibernate for my NoSQL database...
Alexey Zinoviev
 
JNoSQL: The Definitive Solution for Java and NoSQL Databases
Werner Keil
 
Vskills Apache Cassandra sample material
Vskills
 
Big data technology unit 3
RojaT4
 
Comparative study of relational and non relations database performances using...
IAEME Publication
 
NoSQL Endgame JCON Conference 2020
Thodoris Bais
 
NoSQL Databases
zahid-mian
 
NoSQL.pdf
AnkitPangasa1
 
unit2-ppt1.pptx
revathigollu23
 
Ad

More from Otávio Santana (20)

PDF
NoSQL design pitfalls with Java
Otávio Santana
 
PDF
Modern Cloud-Native Jakarta EE Frameworks: tips, challenges, and trends.
Otávio Santana
 
PDF
Architecting Cloud Computing Solutions with Java [1.1]
Otávio Santana
 
PDF
Arquitetando soluções de computação em nuvem com Java
Otávio Santana
 
PDF
Build, run, and scale your Java applications end to end
Otávio Santana
 
PDF
Jakarta NoSQL: Meet the first Jakarta EE specification in the Cloud
Otávio Santana
 
PDF
ORMs: Heroes or Villains Inside the Architecture?
Otávio Santana
 
PDF
Boost your APIs with GraphQL 1.0
Otávio Santana
 
PDF
Jakarta EE Meets NoSQL in the Cloud Age [DEV6109]
Otávio Santana
 
PDF
Let’s Make Graph Databases Fun Again with Java [DEV6043]
Otávio Santana
 
PDF
Eclipse JNoSQL: One API to Many NoSQL Databases - BYOL [HOL5998]
Otávio Santana
 
PDF
The new generation of data persistence with graph
Otávio Santana
 
PDF
Stateless Microservice Security via JWT and MicroProfile - Guatemala
Otávio Santana
 
PDF
Stateless Microservice Security via JWT and MicroProfile - Mexico
Otávio Santana
 
PDF
Management 3.0 and open source
Otávio Santana
 
PDF
Building a Recommendation Engine with Java EE
Otávio Santana
 
PDF
Cassandra NoSQL, NoLimits!
Otávio Santana
 
PDF
Disasters of the century NoSQL
Otávio Santana
 
PDF
Building a recommendation engine with tinker pop
Otávio Santana
 
PDF
MicroProfile: uma nova forma de desenvolver aplicações corporativas na era do...
Otávio Santana
 
NoSQL design pitfalls with Java
Otávio Santana
 
Modern Cloud-Native Jakarta EE Frameworks: tips, challenges, and trends.
Otávio Santana
 
Architecting Cloud Computing Solutions with Java [1.1]
Otávio Santana
 
Arquitetando soluções de computação em nuvem com Java
Otávio Santana
 
Build, run, and scale your Java applications end to end
Otávio Santana
 
Jakarta NoSQL: Meet the first Jakarta EE specification in the Cloud
Otávio Santana
 
ORMs: Heroes or Villains Inside the Architecture?
Otávio Santana
 
Boost your APIs with GraphQL 1.0
Otávio Santana
 
Jakarta EE Meets NoSQL in the Cloud Age [DEV6109]
Otávio Santana
 
Let’s Make Graph Databases Fun Again with Java [DEV6043]
Otávio Santana
 
Eclipse JNoSQL: One API to Many NoSQL Databases - BYOL [HOL5998]
Otávio Santana
 
The new generation of data persistence with graph
Otávio Santana
 
Stateless Microservice Security via JWT and MicroProfile - Guatemala
Otávio Santana
 
Stateless Microservice Security via JWT and MicroProfile - Mexico
Otávio Santana
 
Management 3.0 and open source
Otávio Santana
 
Building a Recommendation Engine with Java EE
Otávio Santana
 
Cassandra NoSQL, NoLimits!
Otávio Santana
 
Disasters of the century NoSQL
Otávio Santana
 
Building a recommendation engine with tinker pop
Otávio Santana
 
MicroProfile: uma nova forma de desenvolver aplicações corporativas na era do...
Otávio Santana
 
Ad

Recently uploaded (20)

PDF
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
PDF
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
PPTX
Agile Chennai 18-19 July 2025 | Workshop - Enhancing Agile Collaboration with...
AgileNetwork
 
PDF
introduction to computer hardware and sofeware
chauhanshraddha2007
 
PDF
The Future of Artificial Intelligence (AI)
Mukul
 
PDF
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
PDF
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
PDF
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
PDF
Market Insight : ETH Dominance Returns
CIFDAQ
 
PDF
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
PDF
Lecture A - AI Workflows for Banking.pdf
Dr. LAM Yat-fai (林日辉)
 
PDF
TrustArc Webinar - Navigating Data Privacy in LATAM: Laws, Trends, and Compli...
TrustArc
 
PDF
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
PPTX
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
PDF
Generative AI vs Predictive AI-The Ultimate Comparison Guide
Lily Clark
 
PPTX
Introduction to Flutter by Ayush Desai.pptx
ayushdesai204
 
PDF
How ETL Control Logic Keeps Your Pipelines Safe and Reliable.pdf
Stryv Solutions Pvt. Ltd.
 
PDF
NewMind AI Weekly Chronicles – July’25, Week III
NewMind AI
 
PDF
The Past, Present & Future of Kenya's Digital Transformation
Moses Kemibaro
 
PDF
Per Axbom: The spectacular lies of maps
Nexer Digital
 
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
Agile Chennai 18-19 July 2025 | Workshop - Enhancing Agile Collaboration with...
AgileNetwork
 
introduction to computer hardware and sofeware
chauhanshraddha2007
 
The Future of Artificial Intelligence (AI)
Mukul
 
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
 
Market Insight : ETH Dominance Returns
CIFDAQ
 
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
Lecture A - AI Workflows for Banking.pdf
Dr. LAM Yat-fai (林日辉)
 
TrustArc Webinar - Navigating Data Privacy in LATAM: Laws, Trends, and Compli...
TrustArc
 
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
Generative AI vs Predictive AI-The Ultimate Comparison Guide
Lily Clark
 
Introduction to Flutter by Ayush Desai.pptx
ayushdesai204
 
How ETL Control Logic Keeps Your Pipelines Safe and Reliable.pdf
Stryv Solutions Pvt. Ltd.
 
NewMind AI Weekly Chronicles – July’25, Week III
NewMind AI
 
The Past, Present & Future of Kenya's Digital Transformation
Moses Kemibaro
 
Per Axbom: The spectacular lies of maps
Nexer Digital
 

NoSQL, no Limits, lots of Fun!