OrientDB

16
OrientDB The fastest NoSQL document graph dbms

Transcript of OrientDB

Page 1: OrientDB

OrientDBThe fastest NoSQL

document graph dbms

Page 2: OrientDB

Spiel

• Best of NoSQL• Best of RDBMS• New ideas & concepts

Luca Garulli

Page 3: OrientDB

Features

• HTTP / Binary• REST• JSON

Page 4: OrientDB

Features

• Schema-less• Schema-full • constraints / validations / inheritance

• Hybrid

Page 5: OrientDB

Features

• ACID Transactions• Complex Types• Arrays / Hashes / Embedded Documents

• Direct Links

Page 6: OrientDB

Features

• SQL in NoSQL • WTH?• SELECT *

FROM employee WHERE name LIKE '%Jay%' AND status = 0

Page 7: OrientDB

JSON Documents

{ '@rid' = '26:10', '@class' = 'Developer', 'name' : 'Luca', 'surname' : 'Garulli', 'company' : '19:76'}

Page 8: OrientDB

Fetch Plan

Invoice 3:100 | | customer +---------> Customer |! 5:233 | city! country +---------> City ---------> Country |! 11:2! 12:3 | orders +--------->* [OrderItem OrderItem OrderItem] [ 8:12! 8:19! 8:23 ]

Page 9: OrientDB

Java

ODocument doc = new ODocument( db, "Person" );

doc.field( "name", "Luke" );

doc.field( "surname", "Skywalker" );

doc.field( "city", new ODocument("City" ).fields("name","Rome") );

doc.save();

Page 10: OrientDB

orientdb-jruby

person_class = DB.create_class :person, :name => :stringdoc = OrientDB::Document.new DB, "Person"doc[:name] = "Luke"doc[:surname] = "Skywalker"doc[:city] = OrientDB::Document.new DB, "City", :name => "Rome"doc.save

Page 11: OrientDB

orientdb-jruby

List<ODocument> result = db.query( new OSQLSynchQuery( "select * from person where city.name = 'Rome'" ) );for( ODocument d : result ) { System.out.println( "Person: " + d.field( "name" ) + d.field( "surname" ) );}

results = DB.first 'SELECT * FROM where WHERE city = "Rome"'results.each do |doc| puts "Person: " + person.name + doc.surnameend

Page 12: OrientDB

Queries

• select from Account where address.city.country.name = 'Italy'

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

• select from Profile where any() like '%Jay%'

• select from Tree where children contains ( married = true )

• select from User where roles containsKey 'shutdown'

• select from Vehicle where @class = 'Car'

• select from Friend where @version > 100

Page 13: OrientDB

Console

ORIENT database v.0.9.23 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

Page 14: OrientDB

Web Admin

Page 15: OrientDB

WINNING, DUH!