SlideShare ist ein Scribd-Unternehmen logo
1 von 54
1.0
May
2012

       www.orientechnologies.com
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
OrientDB
           =
 best features of newest NoSQL
            solutions
                +
best features of Relational DBMS
                +
       True Graph engine
                            www.orientechnologies.com
Relationships
              are direct links
no Relational JOINS to connect multiple tables
    Load trees and graphs in few ms!



                                       www.orientechnologies.com
Complex types
native support for collections, maps
               (key/value)
      and embedded documents
no more additional tables to handle them


                                   www.orientechnologies.com
Schema-mixed
schema with mandatory and optional fields + constraints
    the best of schema-less and schema-full modes




                                             www.orientechnologies.com
ACID Transactions
db.begin();

try{
  // your code
  ...
  db.commit();

} catch( Exception e ) {
  db.rollback();
}
                           www.orientechnologies.com
SQL
select * from employee where name like '%Jay%' and status=0




                                                www.orientechnologies.com
SELECT SUM(price) as prices, SUM(cost) as costs, prices-costs, margin/price
  FROM Balance

                                          VS
function (key, values) {
   var price = 0.0, cost = 0.0, margin = 0.0, marginPercent = 0.0;
   for (var i = 0; i < values.length; i++) {
      price += values[i].price;
      cost += values[i].cost;
   }
   margin = price - cost;
   marginPercent = margin / price;
   return {
      price:        price,
      cost:         cost,
      margin:        margin,
      marginPercent: marginPercent
   };
}
                                                                     www.orientechnologies.com
SQL & relationships
select from Account where address.city.country.name = 'Italy'

select from Account where addresses contains (city.country.name = 'Italy')




                                                                www.orientechnologies.com
SQL & schema-
           less
select from Profile where any() like '%Jay%'

select from Stock where all() is not null




                                               www.orientechnologies.com
HTTP
      RESTful
      firewall friendly
use it from the webbrowser
  use it from the ESB (SOA)
                          www.orientechnologies.com
Native
{
        JSON
    '@rid' = '26:10',
    '@class' = 'Developer',
    'name' : 'Luca',
    'surname' : 'Garulli',
    'out' : [ #10:33, #10:232 ]
}
                                  www.orientechnologies.com
Binary protocol
     available for Java
 and soon C, C++ and Ruby


                       www.orientechnologies.com
MVRB-Tree index
  the best of B+Tree and RB-Tree
fast on browsing, low insertion cost



                              www.orientechnologies.com
Hooks
              similar to   triggers
catch events against records, database and transactions
  implement custom cascade deletion algorithm
            enforce constraints


                                              www.orientechnologies.com
Security
users and roles, encrypted
         passwords
   fine grain privileges

                        www.orientechnologies.com
Multi-Master architecture
any node can read/write to the database
        this scale up horizontly
    adding nodes is straightforward
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.
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
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
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
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)
Synchronous Replication
Guarantees two databases are always consistent
      More expensive than asynchronous



     Server #1                Server #2


        DB-1                     DB-2
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
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
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
Conflict Management
The conflicts resolution strategy can be plugged by
         providing implementations of the
     OReplicationConflictResolver interface


                        Server #2


             Conflict Strategy   DB-2
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
Graph Database model
 wrapper on top of Document Database
Few simple concepts: Vertex, Edge,
       Property and Index

                             www.orientechnologies.com
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
TinkerPop technologies
  sort of “standard” for GraphDB
 a lot of free open-source projects

      http://tinkerpop.com


                              www.orientechnologies.com
TinkerPop Blueprints
basic API to interact with GraphDB
   implements transactional and
 indexable property graph model
        bidirectional edges


                             www.orientechnologies.com
TinkerPop Gremli
     scripting language
 easy to learn and understand
Used for operations against graphs


                             www.orientechnologies.com
g.v(89).outE('followed_by')
         .inV.outE('sung_by')
.inV.has('name','Garcia').back(3).name
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
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
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
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
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
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
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
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
OrientDB Studio/SQL query




                   Resultset is editable and
                   changes are immediately
                          persistent!

                              www.orientechnologies.com
OrientDB Studio/View graph




                             www.orientechnologies.com
Upcoming features
      New hash   Indexes,
    query performance boost,
    data consistency check,
new transaction lock mechanics,
    object DB improvements
Production usage
           Finance Solutions Of America
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
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.
Blueprints microbenchmarks
Module                    OrientDB                  Neo4j       DEX

Release                   1.0-SNAPSHOT              1.7M03      4.5.1
VertexTestSuite           11,628.98                 30,535.02   4,686.65
EdgeTestSuite             7,712.06                  41,206.89   58,671.90
GraphTestSuite            9,073.09                  55,102.35   7,428.25
IndexableGraphTestSuite   4,620.61                  11,299.02   1070.75
IndexTestSuite            2,072.23                  5,239.92    not supported
AutomaticIndexTestSuite   3,252.48                  9,402.59    not supported

TransactionGraphTestSuite 7,659.67                  22,787.29   not supported

GraphMLReaderTestSuite    4,064.23                  5,440.67    not supported


  git clone git://github.com/tinkerpop/blueprints.git
  mvn clean install
Always        Free
Open Source Apache 2 license
     free for any purposes,
       even commercials

                              www.orientechnologies.com
No dependencies
    with 3rd parties software
   no conflicts with other
            software
just 1 Mb of run-time libraries

                           www.orientechnologies.com
Ø config
 download, unzip, run!
  cut & paste the db
                     www.orientechnologies.com
Luca Garulli
                     Founder of OrientDB


                   Andrey Lomakin
                    Committer of OrientDB


                   Artem Orobets
   @lgarulli,       Commiter of OrientDB

@Andrey_Lomakin,
   @Dr_EniSh

                                   www.orientechnologies.com

Weitere ähnliche Inhalte

Was ist angesagt?

MongoDB + Java + Spring Data
MongoDB + Java + Spring DataMongoDB + Java + Spring Data
MongoDB + Java + Spring Data
Anton Sulzhenko
 
GraphConnect Europe 2016 - Building Spring Data Neo4j 4.1 Applications Like A...
GraphConnect Europe 2016 - Building Spring Data Neo4j 4.1 Applications Like A...GraphConnect Europe 2016 - Building Spring Data Neo4j 4.1 Applications Like A...
GraphConnect Europe 2016 - Building Spring Data Neo4j 4.1 Applications Like A...
Neo4j
 

Was ist angesagt? (20)

MongoDB + Java - Everything you need to know
MongoDB + Java - Everything you need to know MongoDB + Java - Everything you need to know
MongoDB + Java - Everything you need to know
 
MongoDB crud
MongoDB crudMongoDB crud
MongoDB crud
 
Cloudera Impala, updated for v1.0
Cloudera Impala, updated for v1.0Cloudera Impala, updated for v1.0
Cloudera Impala, updated for v1.0
 
NoSQL and JavaScript: a Love Story
NoSQL and JavaScript: a Love StoryNoSQL and JavaScript: a Love Story
NoSQL and JavaScript: a Love Story
 
MongoDB and hadoop
MongoDB and hadoopMongoDB and hadoop
MongoDB and hadoop
 
CouchDB – A Database for the Web
CouchDB – A Database for the WebCouchDB – A Database for the Web
CouchDB – A Database for the Web
 
OrientDB - the 2nd generation of (Multi-Model) NoSQL - Codemotion Warsaw 2016
OrientDB - the 2nd generation of (Multi-Model) NoSQL - Codemotion Warsaw 2016OrientDB - the 2nd generation of (Multi-Model) NoSQL - Codemotion Warsaw 2016
OrientDB - the 2nd generation of (Multi-Model) NoSQL - Codemotion Warsaw 2016
 
An introduction to MongoDB
An introduction to MongoDBAn introduction to MongoDB
An introduction to MongoDB
 
Webinar: Transitioning from SQL to MongoDB
Webinar: Transitioning from SQL to MongoDBWebinar: Transitioning from SQL to MongoDB
Webinar: Transitioning from SQL to MongoDB
 
Intro To Couch Db
Intro To Couch DbIntro To Couch Db
Intro To Couch Db
 
CouchDB
CouchDBCouchDB
CouchDB
 
Mongo-Drupal
Mongo-DrupalMongo-Drupal
Mongo-Drupal
 
Using Spark to Load Oracle Data into Cassandra
Using Spark to Load Oracle Data into CassandraUsing Spark to Load Oracle Data into Cassandra
Using Spark to Load Oracle Data into Cassandra
 
MongoDB + Java + Spring Data
MongoDB + Java + Spring DataMongoDB + Java + Spring Data
MongoDB + Java + Spring Data
 
Back to Basics Webinar 4: Advanced Indexing, Text and Geospatial Indexes
Back to Basics Webinar 4: Advanced Indexing, Text and Geospatial IndexesBack to Basics Webinar 4: Advanced Indexing, Text and Geospatial Indexes
Back to Basics Webinar 4: Advanced Indexing, Text and Geospatial Indexes
 
MongoDB Webtech conference 2010
MongoDB Webtech conference 2010MongoDB Webtech conference 2010
MongoDB Webtech conference 2010
 
Mongodb - NoSql Database
Mongodb - NoSql DatabaseMongodb - NoSql Database
Mongodb - NoSql Database
 
CouchDB at New York PHP
CouchDB at New York PHPCouchDB at New York PHP
CouchDB at New York PHP
 
MongoDB
MongoDBMongoDB
MongoDB
 
GraphConnect Europe 2016 - Building Spring Data Neo4j 4.1 Applications Like A...
GraphConnect Europe 2016 - Building Spring Data Neo4j 4.1 Applications Like A...GraphConnect Europe 2016 - Building Spring Data Neo4j 4.1 Applications Like A...
GraphConnect Europe 2016 - Building Spring Data Neo4j 4.1 Applications Like A...
 

Ähnlich wie OrientDB the graph database

Key-value databases in practice Redis @ DotNetToscana
Key-value databases in practice Redis @ DotNetToscanaKey-value databases in practice Redis @ DotNetToscana
Key-value databases in practice Redis @ DotNetToscana
Matteo Baglini
 

Ähnlich wie OrientDB the graph database (20)

OrientDB distributed architecture 1.1
OrientDB distributed architecture 1.1OrientDB distributed architecture 1.1
OrientDB distributed architecture 1.1
 
Spring one2gx2010 spring-nonrelational_data
Spring one2gx2010 spring-nonrelational_dataSpring one2gx2010 spring-nonrelational_data
Spring one2gx2010 spring-nonrelational_data
 
Webinar Back to Basics 3 - Introduzione ai Replica Set
Webinar Back to Basics 3 - Introduzione ai Replica SetWebinar Back to Basics 3 - Introduzione ai Replica Set
Webinar Back to Basics 3 - Introduzione ai Replica Set
 
Exchange 2010 ha ctd
Exchange 2010 ha ctdExchange 2010 ha ctd
Exchange 2010 ha ctd
 
Running Neutron at Scale - Gal Sagie & Eran Gampel - OpenStack Day Israel 2016
Running Neutron at Scale - Gal Sagie & Eran Gampel - OpenStack Day Israel 2016Running Neutron at Scale - Gal Sagie & Eran Gampel - OpenStack Day Israel 2016
Running Neutron at Scale - Gal Sagie & Eran Gampel - OpenStack Day Israel 2016
 
Exploiting NoSQL Like Never Before
Exploiting NoSQL Like Never BeforeExploiting NoSQL Like Never Before
Exploiting NoSQL Like Never Before
 
Jdbc ppt
Jdbc pptJdbc ppt
Jdbc ppt
 
Key-value databases in practice Redis @ DotNetToscana
Key-value databases in practice Redis @ DotNetToscanaKey-value databases in practice Redis @ DotNetToscana
Key-value databases in practice Redis @ DotNetToscana
 
2015 02-09 - NoSQL Vorlesung Mosbach
2015 02-09 - NoSQL Vorlesung Mosbach2015 02-09 - NoSQL Vorlesung Mosbach
2015 02-09 - NoSQL Vorlesung Mosbach
 
Mongo db roma replication and sharding
Mongo db roma replication and shardingMongo db roma replication and sharding
Mongo db roma replication and sharding
 
Technical presentation
Technical presentationTechnical presentation
Technical presentation
 
Dcc
DccDcc
Dcc
 
Change RelationalDB to GraphDB with OrientDB
Change RelationalDB to GraphDB with OrientDBChange RelationalDB to GraphDB with OrientDB
Change RelationalDB to GraphDB with OrientDB
 
Scaling with MongoDB
Scaling with MongoDBScaling with MongoDB
Scaling with MongoDB
 
Modeling Tricks My Relational Database Never Taught Me
Modeling Tricks My Relational Database Never Taught MeModeling Tricks My Relational Database Never Taught Me
Modeling Tricks My Relational Database Never Taught Me
 
Prashanthi
PrashanthiPrashanthi
Prashanthi
 
Sql server
Sql serverSql server
Sql server
 
Nimbuzz march2012
Nimbuzz march2012Nimbuzz march2012
Nimbuzz march2012
 
Open source Technology
Open source TechnologyOpen source Technology
Open source Technology
 
2013 london advanced-replication
2013 london advanced-replication2013 london advanced-replication
2013 london advanced-replication
 

Kürzlich hochgeladen

call Now 9811711561 Cash Payment乂 Call Girls in Dwarka Mor
call Now 9811711561 Cash Payment乂 Call Girls in Dwarka Morcall Now 9811711561 Cash Payment乂 Call Girls in Dwarka Mor
call Now 9811711561 Cash Payment乂 Call Girls in Dwarka Mor
vikas rana
 
the Husband rolesBrown Aesthetic Cute Group Project Presentation
the Husband rolesBrown Aesthetic Cute Group Project Presentationthe Husband rolesBrown Aesthetic Cute Group Project Presentation
the Husband rolesBrown Aesthetic Cute Group Project Presentation
brynpueblos04
 
call Now 9811711561 Cash Payment乂 Call Girls in Dwarka
call Now 9811711561 Cash Payment乂 Call Girls in Dwarkacall Now 9811711561 Cash Payment乂 Call Girls in Dwarka
call Now 9811711561 Cash Payment乂 Call Girls in Dwarka
vikas rana
 
KLINIK BATA Jual obat penggugur kandungan 087776558899 ABORSI JANIN KEHAMILAN...
KLINIK BATA Jual obat penggugur kandungan 087776558899 ABORSI JANIN KEHAMILAN...KLINIK BATA Jual obat penggugur kandungan 087776558899 ABORSI JANIN KEHAMILAN...
KLINIK BATA Jual obat penggugur kandungan 087776558899 ABORSI JANIN KEHAMILAN...
Cara Menggugurkan Kandungan 087776558899
 

Kürzlich hochgeladen (14)

call Now 9811711561 Cash Payment乂 Call Girls in Dwarka Mor
call Now 9811711561 Cash Payment乂 Call Girls in Dwarka Morcall Now 9811711561 Cash Payment乂 Call Girls in Dwarka Mor
call Now 9811711561 Cash Payment乂 Call Girls in Dwarka Mor
 
Pokemon Go... Unraveling the Conspiracy Theory
Pokemon Go... Unraveling the Conspiracy TheoryPokemon Go... Unraveling the Conspiracy Theory
Pokemon Go... Unraveling the Conspiracy Theory
 
WOMEN EMPOWERMENT women empowerment.pptx
WOMEN EMPOWERMENT women empowerment.pptxWOMEN EMPOWERMENT women empowerment.pptx
WOMEN EMPOWERMENT women empowerment.pptx
 
the Husband rolesBrown Aesthetic Cute Group Project Presentation
the Husband rolesBrown Aesthetic Cute Group Project Presentationthe Husband rolesBrown Aesthetic Cute Group Project Presentation
the Husband rolesBrown Aesthetic Cute Group Project Presentation
 
2k Shots ≽ 9205541914 ≼ Call Girls In Palam (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Palam (Delhi)2k Shots ≽ 9205541914 ≼ Call Girls In Palam (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Palam (Delhi)
 
Call Girls In Mumbai Just Genuine Call ☎ 7738596112✅ Call Girl Andheri East G...
Call Girls In Mumbai Just Genuine Call ☎ 7738596112✅ Call Girl Andheri East G...Call Girls In Mumbai Just Genuine Call ☎ 7738596112✅ Call Girl Andheri East G...
Call Girls In Mumbai Just Genuine Call ☎ 7738596112✅ Call Girl Andheri East G...
 
2k Shots ≽ 9205541914 ≼ Call Girls In Dashrath Puri (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Dashrath Puri (Delhi)2k Shots ≽ 9205541914 ≼ Call Girls In Dashrath Puri (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Dashrath Puri (Delhi)
 
2k Shots ≽ 9205541914 ≼ Call Girls In Jasola (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Jasola (Delhi)2k Shots ≽ 9205541914 ≼ Call Girls In Jasola (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Jasola (Delhi)
 
call Now 9811711561 Cash Payment乂 Call Girls in Dwarka
call Now 9811711561 Cash Payment乂 Call Girls in Dwarkacall Now 9811711561 Cash Payment乂 Call Girls in Dwarka
call Now 9811711561 Cash Payment乂 Call Girls in Dwarka
 
LC_YouSaidYes_NewBelieverBookletDone.pdf
LC_YouSaidYes_NewBelieverBookletDone.pdfLC_YouSaidYes_NewBelieverBookletDone.pdf
LC_YouSaidYes_NewBelieverBookletDone.pdf
 
(Anamika) VIP Call Girls Navi Mumbai Call Now 8250077686 Navi Mumbai Escorts ...
(Anamika) VIP Call Girls Navi Mumbai Call Now 8250077686 Navi Mumbai Escorts ...(Anamika) VIP Call Girls Navi Mumbai Call Now 8250077686 Navi Mumbai Escorts ...
(Anamika) VIP Call Girls Navi Mumbai Call Now 8250077686 Navi Mumbai Escorts ...
 
KLINIK BATA Jual obat penggugur kandungan 087776558899 ABORSI JANIN KEHAMILAN...
KLINIK BATA Jual obat penggugur kandungan 087776558899 ABORSI JANIN KEHAMILAN...KLINIK BATA Jual obat penggugur kandungan 087776558899 ABORSI JANIN KEHAMILAN...
KLINIK BATA Jual obat penggugur kandungan 087776558899 ABORSI JANIN KEHAMILAN...
 
2k Shots ≽ 9205541914 ≼ Call Girls In Mukherjee Nagar (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Mukherjee Nagar (Delhi)2k Shots ≽ 9205541914 ≼ Call Girls In Mukherjee Nagar (Delhi)
2k Shots ≽ 9205541914 ≼ Call Girls In Mukherjee Nagar (Delhi)
 
(Aarini) Russian Call Girls Surat Call Now 8250077686 Surat Escorts 24x7
(Aarini) Russian Call Girls Surat Call Now 8250077686 Surat Escorts 24x7(Aarini) Russian Call Girls Surat Call Now 8250077686 Surat Escorts 24x7
(Aarini) Russian Call Girls Surat Call Now 8250077686 Surat Escorts 24x7
 

OrientDB the graph database

  • 1. 1.0 May 2012 www.orientechnologies.com
  • 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
  • 7. ACID Transactions db.begin(); try{ // your code ... db.commit(); } catch( Exception e ) { db.rollback(); } www.orientechnologies.com
  • 8. SQL select * from employee where name like '%Jay%' and status=0 www.orientechnologies.com
  • 9. SELECT SUM(price) as prices, SUM(cost) as costs, prices-costs, margin/price FROM Balance VS function (key, values) { var price = 0.0, cost = 0.0, margin = 0.0, marginPercent = 0.0; for (var i = 0; i < values.length; i++) { price += values[i].price; cost += values[i].cost; } margin = price - cost; marginPercent = margin / price; return { price: price, cost: cost, margin: margin, marginPercent: marginPercent }; } www.orientechnologies.com
  • 10. SQL & relationships select from Account where address.city.country.name = 'Italy' select from Account where addresses contains (city.country.name = 'Italy') www.orientechnologies.com
  • 11. SQL & schema- less select from Profile where any() like '%Jay%' select from Stock where all() is not null www.orientechnologies.com
  • 12. HTTP RESTful firewall friendly use it from the webbrowser use it from the ESB (SOA) www.orientechnologies.com
  • 13. Native { JSON '@rid' = '26:10', '@class' = 'Developer', 'name' : 'Luca', 'surname' : 'Garulli', 'out' : [ #10:33, #10:232 ] } 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
  • 17. Security users and roles, encrypted passwords fine grain privileges www.orientechnologies.com
  • 18. Multi-Master architecture any node can read/write to the database this scale up horizontly adding nodes is straightforward
  • 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)
  • 24. Synchronous Replication Guarantees two databases are always consistent More expensive than asynchronous Server #1 Server #2 DB-1 DB-2
  • 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
  • 35. g.v(89).outE('followed_by') .inV.outE('sung_by') .inV.has('name','Garcia').back(3).name
  • 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
  • 45. OrientDB Studio/View graph www.orientechnologies.com
  • 46. Upcoming features New hash Indexes, query performance boost, data consistency check, new transaction lock mechanics, object DB improvements
  • 47. Production usage Finance Solutions Of America
  • 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.
  • 50. Blueprints microbenchmarks Module OrientDB Neo4j DEX Release 1.0-SNAPSHOT 1.7M03 4.5.1 VertexTestSuite 11,628.98 30,535.02 4,686.65 EdgeTestSuite 7,712.06 41,206.89 58,671.90 GraphTestSuite 9,073.09 55,102.35 7,428.25 IndexableGraphTestSuite 4,620.61 11,299.02 1070.75 IndexTestSuite 2,072.23 5,239.92 not supported AutomaticIndexTestSuite 3,252.48 9,402.59 not supported TransactionGraphTestSuite 7,659.67 22,787.29 not supported GraphMLReaderTestSuite 4,064.23 5,440.67 not supported git clone git://github.com/tinkerpop/blueprints.git mvn clean install
  • 51. Always Free Open Source Apache 2 license free for any purposes, even commercials www.orientechnologies.com
  • 52. No dependencies with 3rd parties software no conflicts with other software just 1 Mb of run-time libraries www.orientechnologies.com
  • 53. Ø config download, unzip, run! cut & paste the db www.orientechnologies.com
  • 54. Luca Garulli Founder of OrientDB Andrey Lomakin Committer of OrientDB Artem Orobets @lgarulli, Commiter of OrientDB @Andrey_Lomakin, @Dr_EniSh www.orientechnologies.com