SlideShare a Scribd company logo
Otávio Santana @otaviojava Werner Keil @wernerkeil
Eclipse JNoSQL
About the Speakers
Werner Keil
Consultant – Coach
Open Source Evangelist
Software Architect
Apache, Eclipse Committer,
Agile Alliance Member
Expert Group member in many JSRs
Spec Lead – JSR354, JSR385
Jakarta EE Specification Committee Member
Twitter @wernerkeil
[www.linkedin.com/in/catmedia]
About the Speakers
Otávio Goncalves de Santana
Software engineer, Tomitribe
Java Champion, SouJava JUG Leader
Apache, Eclipse and OpenJDK Committer
Expert Group member in many JSRs
Spec Lead – JSR 354, JSR 385
JNoSQL Project Lead
Representative at JCP EC for SouJava
[www.linkedin.com/in/otaviojava]
NoSQL
01 Database
02 Doesn't use structure
03 No Transactions
04 Base
Five different types05
Key Value
AmazonDynamo
AmazonS3
Redis
Hazelcast
Apollo
Ares
Aphrodite
Sun
War
Love Beauty
Column Family
Apollo
Aphrodite
Ares
Kratos
Duty
Duty
Duty
Dead Gods
Love, happy
Sun
War
13
Color
weapon
Sword
Row-key ColumnsHBase
Scylla
SimpleDb
Cassandra
DynamoDB
Clouddata
Document
{
"name":"Diana",
"duty":[
"Hunting",
"Moon",
"Nature"
],
"siblings":{
"Apollo":"brother"
}
}
ApacheCouchDB
MongoDB
Couchbase
Graph
Apollo Ares
Kratos
was killed by was killed by
killed killed
Neo4j
InfoGrid
Sones
HyperGraphDB
Multi-Model
01
02
03
04
OrientDB (graph, document)
Couchbase (key value, document)
Elasticsearch (document, graph)
ArangoDB (document, graph, key-value)
SQL vs NoSQL
SQL KEY-VALUE COLUMN DOCUMENTS GRAPH
Table Bucket Column family Collection
Row Key/value pair column Documents Vertex
Column Key/value pair Key/value pair Vertex and Edge
property
Relationship Link Edge
BASE vs ACID
• Basically Available
• Soft state
• Eventual consistency
• Atomicity
• Consistency
• Isolation
• Durability
CAP
Scalability vs Complexity
Scalability
Complexity
key-value
Column
Document
Graph
Relational Application NoSQL Application
Logic Tier Logic Tier
DAO DAO
JPAJPAJPAJPA
JDBC JDBCJDBCJDBC
Data Tier
APIAPI API
Data Tier
The Current Solution
DAO
Solution Solution
Hibernate OGM
TopLink
JPA problem for NoSQL
01
02
03
04
05
06
Saves Async
Async Callback
Time to Live (TTL)
Consistency Level
SQL based
Diversity in NoSQL
The Eclipse JNoSQL Solution
DIANA
ARTEMIS
JNoSQL
DAO
Mapping
Communication
Column Documents Key Graph
Data Tier
01
02
03
04
Mapping API
Communication API
No lock-in
Divide and Conquer
Diana
API Communication layer
Document, key-value,
Column, Graph (TinkerPop)
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);
Eclipse JNoSQL
DocumentEntity entity = DocumentEntity.of("collection");
entity.add(name, value);
01
02
03
04
Configuration
Factory
Manager
Entity
Names & Definitions
Names & Definitions
ColumnConfiguration<?> configuration = new DriverConfiguration();
try(ColumnFamilyManagerFactory managerFactory = configuration.get()) {
ColumnFamilyManager entityManager =
managerFactory.get(KEY_SPACE);
entityManager.insert(entity);
ColumnQuery select = select().from(COLUMN_FAMILY)
.where("id").eq("Ada").build();
ColumnDeleteQuery delete = delete().from(COLUMN_FAMILY)
.where("id").eq("Ada").build();
Optional<ColumnEntity> result = entityManager.singleResult(query);
entityManager.delete(delete);
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)));
//cassandra only
List<ColumnEntity> entities = entityManagerCassandra
.cql("select * from newKeySpace.newColumnFamily where id=10;");
entityManagerCassandra.insert(entity, ConsistencyLevel.ALL);
//mutiple implementation
entityManager.insert(entity);
ColumnQuery query =
select().from(COLUMN_FAMILY).where("id").eq(10L).build();
Optional<ColumnEntity> result = entityManager.singleResult(query);
01
02
03
04
05
06
Artemis
CDI Based
Diana Based
Annotation Based
Events to insert, delete, update
Supports to Bean Validation
Configurable and Extensible
07 Query Method
01
02
03
04
Annotated Entities
Template
Repository
Configuration
Names & Definitions
Annotated Entities
01
02
03
Mapped Superclass
Entity
Column
@Entity("god")
public class God {
@Column
private String name;
@Column
private long age;
@Column
private Set<String> powers;
}
Template
God artemis = ...;
DocumentTemplate template = …
template.insert(artemis);
template.update(artemis);
DocumentQuery query = ...
List<God> gods = template.select(query);
Repository
interface GodRepository extends Repository<God, String> {
Optional<God> findByName(String name);
Stream<God> findByNameAndAgeOrderByName(String name, Integer age);
}
Repository
@Inject
@Database(DatabaseType.COLUMN)
private GodRepository godRepository;
@Inject
@Database(DatabaseType.KEY_VALUE)
private GodRepository godRepository;
Support for
JSON XML YAML
Configuration
@Inject
@ConfigurationUnit
private
DocumentCollectionManagerFactory<?>
entityManager;
Diversity
@Entity("god")
public class God {
@Column
private String name;
@UDT("weapon")
@Column
private Weapon weapon;
}
interface GodRepository extends
CassandraRepository<God, String> {
@CQL("select * from God where name = ?")
List<God> findByName(String name);
}
We have Query by Text
DocumentTemplate documentTemplate = ...;
ColumnTemplate columnTemplate = ...;
KeyValueTempalte keyValueTemplate =...;
GraphTemplate graphTemplate =...;
List<Movie> movies = documentTemplate.query("select * from Movie where
year > 2012");
List<Person> people = columnTemplate.query("select * from Person where
age = 25");
Optional<God> god = keyValueTemplate.query("get "Diana"");
List<City> cities = graphTemplate.query("g.V().hasLabel('City')");
We have Query by Text
PreparedStatement preparedStatement = template.prepare("select * from
Person where name = @name");
preparedStatement.bind("name", "Ada");
List<Person> adas = preparedStatement.getResultList();
//to graph just keep using gremlin
PreparedStatement prepare =
graphTemplate().prepare("g.V().hasLabel(param)");
prepare.bind("param", "Person");
List<Person> people = preparedStatement.getResultList();
We have Query by Text
interface PersonRepository extends Repository<Person, Long> {
@Query("select * from Person")
Optional<Person> findByQuery();
@Query("select * from Person where id = @id")
Optional<Person> findByQuery(@Param("id") String id);
}
Demo
Hazelcast
MongoDB
Neo4J
CDI 2.0 with Java SE
Configuration
JNoSQL
NoSQL Providers
Draft and code
proposal
Community
Feedback
Involve NoSQL
Vendors
Involve Solution
Vendors
Eclipse Project
Road Map
Development
Specification Process
● Java EE now contributed to Eclipse Foundation
● Jakarta EE
● Code First
Jakarta EE forwards with new specifications
● Hopefully a new spec and namespace confirmed around
Oracle Code One / ECE
“jakarta.nosql”
See https://www.tomitribe.com/blog/jnosql-and-jakarta-ee/
JUGs/Communities
References
Communication API
Support to Async operations
APIs
Mapping API
Bean Validation
Events
Repository
Template
Query by text
Prepared Statement
http://jnosql.org/
https://github.com/eclipse?q=Jnosql
https://dev.eclipse.org/mailman/listinfo/jnosql-dev
https://gitter.im/JNOSQL/developers
https://wiki.eclipse.org/JNoSQL
Thank you
Otávio Santana @otaviojava Werner Keil @wernerkeil

More Related Content

Similar to JNoSQL: The Definitive Solution for Java and NoSQL Databases (20)

PDF
Eclipse JNoSQL: The Definitive Solution for Java and NoSQL Database
Otávio Santana
 
PPTX
Eclipse JNoSQL: The Definitive Solution for Java and NoSQL Databases
Werner Keil
 
PDF
JavaOne 2017 - JNoSQL: The Definitive Solution for Java and NoSQL Database [C...
Leonardo De Moura Rocha Lima
 
PDF
Eclipse JNoSQL updates from JCP September 11
Otávio Santana
 
PDF
NoSQL, no Limits, lots of Fun!
Otávio Santana
 
PPTX
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
tdc-globalcode
 
PPTX
NoSQL Endgame JCON Conference 2020
Thodoris Bais
 
PPTX
NoSQL Endgame - Java2Days 2020 Virtual
Werner Keil
 
PDF
Jakarta EE Meets NoSQL at the Cloud Age
Otávio Santana
 
PDF
Jakarta EE Meets NoSQL at the Cloud Age | JakartaOne Livestream
Jakarta_EE
 
PPTX
JakartaData-JCon.pptx
EmilyJiang23
 
PDF
Jakarta EE Meets NoSQL in the Cloud Age [DEV6109]
Otávio Santana
 
PDF
Eclipse JNoSQL: One API to Many NoSQL Databases - BYOL [HOL5998]
Otávio Santana
 
PPTX
NoSQL Endgame DevoxxUA Conference 2020
Thodoris Bais
 
PPTX
NoSQL Endgame Percona Live Online 2020
Thodoris Bais
 
PDF
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
tdc-globalcode
 
PDF
Palestra Java + NoSQL = Iniciativa JNoSQL no TDC Florianópolis
Marcelo Souza Vieira
 
PPTX
EclipseCon 2021 NoSQL Endgame
Thodoris Bais
 
PPTX
NoSQL Endgame LWJUG 2021
Thodoris Bais
 
PPTX
Eclipse JNoSQL Good Practices at OXM
Rafael Chinelato Del Nero
 
Eclipse JNoSQL: The Definitive Solution for Java and NoSQL Database
Otávio Santana
 
Eclipse JNoSQL: The Definitive Solution for Java and NoSQL Databases
Werner Keil
 
JavaOne 2017 - JNoSQL: The Definitive Solution for Java and NoSQL Database [C...
Leonardo De Moura Rocha Lima
 
Eclipse JNoSQL updates from JCP September 11
Otávio Santana
 
NoSQL, no Limits, lots of Fun!
Otávio Santana
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
tdc-globalcode
 
NoSQL Endgame JCON Conference 2020
Thodoris Bais
 
NoSQL Endgame - Java2Days 2020 Virtual
Werner Keil
 
Jakarta EE Meets NoSQL at the Cloud Age
Otávio Santana
 
Jakarta EE Meets NoSQL at the Cloud Age | JakartaOne Livestream
Jakarta_EE
 
JakartaData-JCon.pptx
EmilyJiang23
 
Jakarta EE Meets NoSQL in the Cloud Age [DEV6109]
Otávio Santana
 
Eclipse JNoSQL: One API to Many NoSQL Databases - BYOL [HOL5998]
Otávio Santana
 
NoSQL Endgame DevoxxUA Conference 2020
Thodoris Bais
 
NoSQL Endgame Percona Live Online 2020
Thodoris Bais
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
tdc-globalcode
 
Palestra Java + NoSQL = Iniciativa JNoSQL no TDC Florianópolis
Marcelo Souza Vieira
 
EclipseCon 2021 NoSQL Endgame
Thodoris Bais
 
NoSQL Endgame LWJUG 2021
Thodoris Bais
 
Eclipse JNoSQL Good Practices at OXM
Rafael Chinelato Del Nero
 

More from Werner Keil (20)

PPTX
Securing eHealth, eGovernment and eBanking with Java - DWX '21
Werner Keil
 
PPTX
OpenDDR and Jakarta MVC - JavaLand 2021
Werner Keil
 
PPTX
How JSR 385 could have Saved the Mars Climate Orbiter - Zurich IoT Day 2021
Werner Keil
 
PPTX
OpenDDR and Jakarta MVC - Java2Days 2020 Virtual
Werner Keil
 
PPTX
JCON 2020: Mobile Java Web Applications with MVC and OpenDDR
Werner Keil
 
PPTX
How JSR 385 could have Saved the Mars Climate Orbiter - JFokus 2020
Werner Keil
 
PPTX
Money, Money, Money, can be funny with JSR 354 (Devoxx BE)
Werner Keil
 
PPTX
Money, Money, Money, can be funny with JSR 354 (DWX 2019)
Werner Keil
 
PPTX
How JSR 385 could have Saved the Mars Climate Orbiter - Adopt-a-JSR Day
Werner Keil
 
PPTX
Physikal - Using Kotlin for Clean Energy - KUG Munich
Werner Keil
 
PPTX
Physikal - JSR 363 and Kotlin for Clean Energy - Java2Days 2017
Werner Keil
 
PPTX
Performance Monitoring for the Cloud - Java2Days 2017
Werner Keil
 
PPTX
Eclipse Science F2F 2016 - JSR 363
Werner Keil
 
PPTX
Java2Days - Security for JavaEE and the Cloud
Werner Keil
 
PPTX
Apache DeviceMap - Web-Dev-BBQ Stuttgart
Werner Keil
 
PPTX
The First IoT JSR: Units of Measurement - JUG Berlin-Brandenburg
Werner Keil
 
PPTX
JSR 354: Money and Currency API - Short Overview
Werner Keil
 
PPTX
JavaLand: Quantified Social - Fitness-Geräte und -Portale mit Agorava
Werner Keil
 
PPTX
Enterprise 2.0 with Open Source Frameworks like Agorava
Werner Keil
 
PPTX
JSR 375 - Have you seen Java EE Security API lately? - codemotion Tel Aviv 2015
Werner Keil
 
Securing eHealth, eGovernment and eBanking with Java - DWX '21
Werner Keil
 
OpenDDR and Jakarta MVC - JavaLand 2021
Werner Keil
 
How JSR 385 could have Saved the Mars Climate Orbiter - Zurich IoT Day 2021
Werner Keil
 
OpenDDR and Jakarta MVC - Java2Days 2020 Virtual
Werner Keil
 
JCON 2020: Mobile Java Web Applications with MVC and OpenDDR
Werner Keil
 
How JSR 385 could have Saved the Mars Climate Orbiter - JFokus 2020
Werner Keil
 
Money, Money, Money, can be funny with JSR 354 (Devoxx BE)
Werner Keil
 
Money, Money, Money, can be funny with JSR 354 (DWX 2019)
Werner Keil
 
How JSR 385 could have Saved the Mars Climate Orbiter - Adopt-a-JSR Day
Werner Keil
 
Physikal - Using Kotlin for Clean Energy - KUG Munich
Werner Keil
 
Physikal - JSR 363 and Kotlin for Clean Energy - Java2Days 2017
Werner Keil
 
Performance Monitoring for the Cloud - Java2Days 2017
Werner Keil
 
Eclipse Science F2F 2016 - JSR 363
Werner Keil
 
Java2Days - Security for JavaEE and the Cloud
Werner Keil
 
Apache DeviceMap - Web-Dev-BBQ Stuttgart
Werner Keil
 
The First IoT JSR: Units of Measurement - JUG Berlin-Brandenburg
Werner Keil
 
JSR 354: Money and Currency API - Short Overview
Werner Keil
 
JavaLand: Quantified Social - Fitness-Geräte und -Portale mit Agorava
Werner Keil
 
Enterprise 2.0 with Open Source Frameworks like Agorava
Werner Keil
 
JSR 375 - Have you seen Java EE Security API lately? - codemotion Tel Aviv 2015
Werner Keil
 
Ad

Recently uploaded (20)

PPTX
Agentic Automation: Build & Deploy Your First UiPath Agent
klpathrudu
 
PPTX
AEM User Group: India Chapter Kickoff Meeting
jennaf3
 
PPTX
OpenChain @ OSS NA - In From the Cold: Open Source as Part of Mainstream Soft...
Shane Coughlan
 
PPTX
Customise Your Correlation Table in IBM SPSS Statistics.pptx
Version 1 Analytics
 
PPTX
Coefficient of Variance in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PDF
The 5 Reasons for IT Maintenance - Arna Softech
Arna Softech
 
PDF
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 
PDF
MiniTool Power Data Recovery 8.8 With Crack New Latest 2025
bashirkhan333g
 
PPTX
Agentic Automation Journey Session 1/5: Context Grounding and Autopilot for E...
klpathrudu
 
PDF
AOMEI Partition Assistant Crack 10.8.2 + WinPE Free Downlaod New Version 2025
bashirkhan333g
 
PPTX
Hardware(Central Processing Unit ) CU and ALU
RizwanaKalsoom2
 
PDF
Add Background Images to Charts in IBM SPSS Statistics Version 31.pdf
Version 1 Analytics
 
PPTX
Help for Correlations in IBM SPSS Statistics.pptx
Version 1 Analytics
 
PDF
IObit Driver Booster Pro 12.4.0.585 Crack Free Download
henryc1122g
 
PDF
Top Agile Project Management Tools for Teams in 2025
Orangescrum
 
PDF
유니티에서 Burst Compiler+ThreadedJobs+SIMD 적용사례
Seongdae Kim
 
PDF
Technical-Careers-Roadmap-in-Software-Market.pdf
Hussein Ali
 
PPTX
Comprehensive Risk Assessment Module for Smarter Risk Management
EHA Soft Solutions
 
PPTX
Milwaukee Marketo User Group - Summer Road Trip: Mapping and Personalizing Yo...
bbedford2
 
PPTX
Finding Your License Details in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
Agentic Automation: Build & Deploy Your First UiPath Agent
klpathrudu
 
AEM User Group: India Chapter Kickoff Meeting
jennaf3
 
OpenChain @ OSS NA - In From the Cold: Open Source as Part of Mainstream Soft...
Shane Coughlan
 
Customise Your Correlation Table in IBM SPSS Statistics.pptx
Version 1 Analytics
 
Coefficient of Variance in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
The 5 Reasons for IT Maintenance - Arna Softech
Arna Softech
 
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 
MiniTool Power Data Recovery 8.8 With Crack New Latest 2025
bashirkhan333g
 
Agentic Automation Journey Session 1/5: Context Grounding and Autopilot for E...
klpathrudu
 
AOMEI Partition Assistant Crack 10.8.2 + WinPE Free Downlaod New Version 2025
bashirkhan333g
 
Hardware(Central Processing Unit ) CU and ALU
RizwanaKalsoom2
 
Add Background Images to Charts in IBM SPSS Statistics Version 31.pdf
Version 1 Analytics
 
Help for Correlations in IBM SPSS Statistics.pptx
Version 1 Analytics
 
IObit Driver Booster Pro 12.4.0.585 Crack Free Download
henryc1122g
 
Top Agile Project Management Tools for Teams in 2025
Orangescrum
 
유니티에서 Burst Compiler+ThreadedJobs+SIMD 적용사례
Seongdae Kim
 
Technical-Careers-Roadmap-in-Software-Market.pdf
Hussein Ali
 
Comprehensive Risk Assessment Module for Smarter Risk Management
EHA Soft Solutions
 
Milwaukee Marketo User Group - Summer Road Trip: Mapping and Personalizing Yo...
bbedford2
 
Finding Your License Details in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
Ad

JNoSQL: The Definitive Solution for Java and NoSQL Databases