2. Artem Orobets
Senior Java Developer
in ExigenServices
1.5 year in Java
OrientDB committer
Andrey Lomakin
Software Architect
in ExigenServices
6+ years JEE experience
OrientDB committer
3. OrientDB
=
best features of newest NoSQL
solutions
+
best features of Relational DBMS
+
True Graph engine
www.orientechnologies.com
4. Relationships
are direct links
no Relational JOINS to connect multiple tables
Load trees and graphs in few ms!
www.orientechnologies.com
5. Complex types
native support for collections, maps
(key/value)
and embedded documents
no more additional tables to handle them
www.orientechnologies.com
6. Schema-mixed
schema with mandatory and optional fields + constraints
the best of schema-less and schema-full modes
www.orientechnologies.com
14. Binary protocol
available for Java
and soon C, C++ and Ruby
www.orientechnologies.com
15. MVRB-Tree index
the best of B+Tree and RB-Tree
fast on browsing, low insertion cost
www.orientechnologies.com
16. Hooks
similar to triggers
catch events against records, database and transactions
implement custom cascade deletion algorithm
enforce constraints
www.orientechnologies.com
19. The actors
Leader Node Only 1 per Leader per cluster, checks other nodes and
notify changes to other Peer Nodes.
Any server node in the cluster. Has a permanent
Peer Node connection to the Leader Node
Clients are connected to Server Nodes no matter if Leader
Client
or Peer
Database Database, where data are stored
Synchronous mode replication.
Asynchronous mode replication.
20. Cluster auto-discovering
At start up each Server Node sends a IP Multicast message in broadcast to
discover if any Leader Node is available to join the cluster.
Server #1
(Leader) DB DB
DB DB
DB DB
Server #2
(Peer)
DB DB
DB DB
DB DB
21. One Leader Multiple Peers
The first node to start is always the Leader but in case of failure can be elected
any other.
Server #1
(Leader) DB DB
DBDB
DB DB
Server #2 Server #3
(Peer) (Peer)
DB DB
DBDB
DB DB DB DB
DBDB
DB
22. Security
To join a cluster the Server Node has to configure the cluster name and
password
Broadcast messages are encrypted using the password
Server #1
(Leader)
Server #2 Join the cluster
(Peer) ONLY
If knows the name
DB DB
DB DB
DB DB and password
23. Multiple clusters
Multiple separate clusters can coexist in the same network
Clusters can't see each others. Are separated boxes
What identify a cluster is name + password
Cluster 'A', password
'aaa'
Server #1 Cluster 'B', password
(Leader) 'bbb'
Server #2 Server #1
(Peer) (Leader)
Server #3
(Peer) Server #2
(Peer)
Server #3
(Peer)
25. Synchronous Replication
steps
Client #1
6) Sends back OK to Client
1) Update record #1
request 3) Propagates the
update
Server #1 Server #2
2) Update record to DB-1 5) Sends back OK to Server #1 4) update record to DB-2
DB-1 DB-2
26. Asynchronous Replication
Changes are propagated without waiting for the answer
Two databases could be not consistent in the range of few
ms
Server #1 Server #2
DB-1 DB-2
27. Asynchronous Replication
steps
(4a and 4b are executed in parallel)
Client #1
4a) Sends back OK to Client #1
1) Update record request
3) Propagates the update
Server #1 Server #2
2) Update record to DB-1 4b) update record to DB-2
DB-1 DB-2
28. Conflict Management
The conflicts resolution strategy can be plugged by
providing implementations of the
OReplicationConflictResolver interface
Server #2
Conflict Strategy DB-2
29. Conflict Management
Default strategy
Server #2
Default implementation:
Conflict mark is created
Default
and conflict should be Conflict
DB-2
resolved manually Strategy
Conflict Log
30. Graph Database model
wrapper on top of Document Database
Few simple concepts: Vertex, Edge,
Property and Index
www.orientechnologies.com
31. 2 different API
OGraphDatabase All APIs
Native, damn fast, not the most beautiful API are compatible
among them!
So use the
right one
for the right
case
OrientGraph
TinkerPop Blueprints, slowest but:
common to other impls, Gremlin, SPARQL
www.orientechnologies.com
32. TinkerPop technologies
sort of “standard” for GraphDB
a lot of free open-source projects
http://tinkerpop.com
www.orientechnologies.com
33. TinkerPop Blueprints
basic API to interact with GraphDB
implements transactional and
indexable property graph model
bidirectional edges
www.orientechnologies.com
34. TinkerPop Gremli
scripting language
easy to learn and understand
Used for operations against graphs
www.orientechnologies.com
36. Inheritance
OgraphVertex (V) OgraphEdge (E)
Person Works Reside Knows
Vehicle
Address :
Address
brand : BRANDS s
since : since : Date Level :
Date till : Date LEVELS
Custome Provider
r totBuyed :
totSold : float float
www.orientechnologies.com
37. Polymorphic SQL Query
List<ODocument> result = database.query( new
OSQLSynchQuery(
"select from Person where city.name = 'Rome'" ));
Queries are polymorphics
and subclasses of Person can be
part of result set
www.orientechnologies.com
38. Fetch plans
Choose what to fetch on query and vertexes/edges loading
Vertexes/Edges not fetched will be lazy-loaded on request
Optimizes network latency
www.orientechnologies.com
39. Fetch plans
Load only the root vertex
Vertex = *:1
Luca
|
| lives city
+---------> Vertex ------------> Vertex
| 10th street Italy
| knows
+--------->* [Vertex Vertex Vertex ]
[ Marko John Nicholas]
www.orientechnologies.com
40. Fetch plans
Load root + address
Vertex = *:1 lives:2
Luca
|
| lives city
+---------> Vertex ------------> Vertex
| 10th street Italy
| knows
+--------->* [Vertex Vertex Vertex ]
[ Marko John Nicholas]
www.orientechnologies.com
41. Fetch plans
Load root + all known
Vertex = *:1 knows:1
Luca
|
| lives city
+---------> Vertex ------------> Vertex
| 10th street Italy
| knows
+--------->* [Vertex Vertex Vertex ]
[ Marko John Nicholas]
www.orientechnologies.com
42. Fetch plans
Load up 3rd level of depth
Vertex = *:3
Luca
|
| lives city
+---------> Vertex ------------> Vertex
| 10th street Italy
| knows
+--------->* [Vertex Vertex Vertex ]
[ Marko John Nicholas]
www.orientechnologies.com
43. Console
ORIENT database v.1.0.0 www.orientechnologies.com
Type 'help' to display all the commands supported.
> connect remote:localhost/demo admin admin
Connecting to database [remote:localhost/demo] with user 'admin'...OK
> select from profile where nick.startsWith('L')
---+--------+--------------------+--------------------+--------------------+
#| REC ID |NICK |SEX |AGE |
---+--------+--------------------+--------------------+--------------------+
0| 10:0|Lvca |male |34
1| 10:3|Leo |male |22
2| 10:7|Luisa |female |27
3 item(s) found. Query executed in 0.013 sec(s).
> close
Disconnecting from the database [demo]...OK
> quit
www.orientechnologies.com
44. OrientDB Studio/SQL query
Resultset is editable and
changes are immediately
persistent!
www.orientechnologies.com
48. NuvolaBase.com (beta)
The first
Graph Database
on the Cloud
always available
few seconds to setup it
use it from app & mobile
www.orientechnologies.com
49. User’s reasons to chose
Only one graph DB with cloud computing
support, high flexibility of data format,
powerful data analyzes (SQL + Gremlin),
JDBC driver, huge reduction of integration
time, good technical support.