The NoSQL DB is a database that provides a mechanism for storage and retrieval of data which is modeled by means other than the tabular relations used in relational databases. These databases have speed and high scalability. This kind of database has become more popular in several applications, which include financial one. As result of both increases, the number of success cases and the number of vendors. However, NoSQL has issues such as specific behavior, model, different types, and goals. Go deeply in the NoSQL world and how to solve the NoSQL variety on this presentation.
5. Column
● Hbase
● Cassandra
● Scylla
● Clouddata
● SimpleDb
● DynamoDB
Row-key Columns...
Apollo
Aphrodi
te
Ares
Sun
Duty
{Love, happy}
Duty
War
Duty
Sword
weapon
Color
Krato
s
Dead Gods
13
6. Graph
● Neo4j
● InfoGrid
● Sones
● HyperGraphDB
Apollo Ares
Krat
os
was dead was dead
Is brother
killed killed
11. The Perfect Solution
● Abstraction API
● Communication API
● No lock-in
● Split problems
12. Apache Diana was Born (incubator)
● API Communication layer
● Apache Project
● Document, key-value, Column, Graph
● Universal Adapter
● Standard
13. What Diana is not
● A new API to replace JPA
● A new API to abstraction layer
● Just one API communication to solve all kind of NoSQL
database
● Be responsible to do integrations with other technologies such
as CDI, EJB, Bean Validation, Spring, etc.
14. Diana Project
● Commons API
● Document API
● Graph API
● Key-value API
● Column API
● Four TCKs
34. Diana Query Language
Select
select * from bucket;
select key1, key2 from bucket;
Insert
INSERT INTO bucket VALUES (key, value);
INSERT INTO bucket VALUES (key, value) ttl 20 (seconds, minutes, hours, days);
Delete
DELETE FROM bucket WHERE id =value;
35. Diana Query Language
Insert
INSERT INTO collection (column1,column2,column3,...)
VALUES (value1,value2,value3,...);
INSERT INTO collection (column1,column2,column3,...)
VALUES (value1,value2,value3,...) (value1,value2,value3,...);
INSERT INTO collection (column1,column2,column3,...)
VALUES (value1,value2,value3,...) ttl 20 (seconds, minutes, hours, days);
INSERT INTO collection (column1,column2,column3,...)
VALUES (value1,value2,value3,...) ttl 20 (seconds, minutes, hours, days) async;
36. Diana Query Language
Select
select * from collection;
select field, field2 from collection;
select field, field2 from collection where id = 2;
select field, field2 from collection where id >= 2 or field >3;
Delete
DELETE FROM collection WHERE id =value;
DELETE field, field2 FROM collection WHERE id =value;
37. Diana Query Language
Insert
INSERT INTO family (column1,column2,column3,...)
VALUES (value1,value2,value3,...);
INSERT INTO family (column1,column2,column3,...)
VALUES (value1,value2,value3,...) (value1,value2,value3,...);
INSERT INTO family (column1,column2,column3,...)
VALUES (value1,value2,value3,...) ttl 20 (seconds, minutes, hours, days);
INSERT INTO family (column1,column2,column3,...)
VALUES (value1,value2,value3,...) ttl 20 (seconds, minutes, hours, days) async;
38. Diana Query Language
Select
select * from family;
select field, field2 from family;
select field, field2 from family where id = 2;
select field, field2 from family where id >= 2 and index >3;
Delete
DELETE FROM family WHERE id =value;
DELETE field, field2 FROM family WHERE id =value;