Your SlideShare is downloading. ×
Perchè potresti avere bisogno di un database NoSQL  anche se non sei Google o Facebook Luca Garulli
The  graph db  for  the Enterprise & Web www.orientechnologies.com
Why do I could need something different than a Relational DBMS ? www.orientechnologies.com
(1) RDBMSs have more than 30 years Information Technology is not properly  the same of  '70 ... www.orientechnologies.com
(2) In the  Web age applications could have Thousands  or  Millions of users Are you ready for this? www.orientechnologies...
(3)  Time-to-Market measured not anymore in years/man but days/weeks  for a demo and months for the final www.orientechnol...
(4) Applications are more “ social”  with much more  relationships -  tabular data and  +  interconnected  Graphs www.orie...
(5) Who believe yet to the bullshit that performance problems can be resolved just by  scaling  with the hardware? www.ori...
(6) We use new stuff everyday HTTP ,  REST ,  Javascript  & JSON How can I use them in better way without conversions & ma...
(7) Modern applications are mostly  I/O Bound not CPU bound. Often the DB Is the bottleneck of all www.orientechnologies.com
www.orientechnologies.com NoSQL =  “Not Only SQL” =  make the  best choice  for your use case
Can I trust new DBMSs? www.orientechnologies.com
www.orientechnologies.com
www.orientechnologies.com Non exhaustive list of NoSQL products: AllegroGraph, Amazon SimpleDB, Amazon Dynamo, Dynomite, B...
www.orientechnologies.com The “NoSQL container” groups so very-very-very different products, no standard, difficult to cho...
www.orientechnologies.com Can I have a Fast, scalable, flexible storage with  transactions , SQL  and  security easy to us...
www.orientechnologies.com The fastest  NoSQL   document - graph  dbms
+12 years of research www.orientechnologies.com
+1,5 year of design and development www.orientechnologies.com
= best features of newest NoSQL  solutions + best features of  Relational DBMS + new ideas  and  concepts www.orientechnol...
Ø  config download, unzip, run! cut & paste the db www.orientechnologies.com
No dependencies with 3 rd  parties software no conflicts  with other software About  1 Mb  of run-time libraries www.orien...
Java ® runs  everywhere  is available JRE1.5+ robust  engine www.orientechnologies.com
150,000 records per second www.orientechnologies.com
Schema- less schema is not mandatory,  relaxed model , collect heterogeneous documents all together  www.orientechnologies...
Schema- full schema with  constraints  on fields and  validation rules Customer.age > 17 Customer.address not null Custome...
Schema- mixed schema with mandatory and optional fields + constraints the best of schema-less and schema-full modes www.or...
ACID Transactions db.begin(); try{ // your code ... db.commit(); } catch( Exception e ) { db.rollback(); } www.orientechno...
Complex types native support for  collections :  ['cool','fast'] maps  (key/value):   { 'age', 33 } and  embedded  documen...
Relationships are  direct links no Relational JOINS to connect multiple tables Load  trees  and  graphs  in  few ms ! www....
Example of a Graph www.orientechnologies.com
SQL select * from employee where name like '%Jay%' and status=0 www.orientechnologies.com
www.orientechnologies.com A  NoSQL  product that supports  SQL ? Naa... is it a joke?
www.orientechnologies.com For the most of the queries everyday a programmer needs SQL  is simpler, more  readable  and com...
www.orientechnologies.com SELECT SUM(price) as prices, SUM(cost) as costs, prices-costs, margin/price FROM Balance VS func...
For  Relational  skilled Developers (everyone of us?) using OrientDB is  easy www.orientechnologies.com
Asynchronous Query invoke  callback  when a record matches the condition doesn't collect the result set perfect for  immed...
Language bindings Java  as native JRuby ,   Scala   and   Javascript   ready C ,   C++ ,   Ruby ,   Node.js  in progress w...
Your language is not supported (yet)? Write an  adapter  using the C, Java or HTTP binding www.orientechnologies.com
HTTP RESTful firewall  friendly use it from the web  browser use it from the  ESB  (SOA) www.orientechnologies.com
Native JSON { '@rid' = '26:10', '@class' = 'Developer', 'name' : 'Luca', 'surname' : 'Garulli', 'company' : '19:76' } www....
Import/Export uses  JSON  format online  operations (don't stop the database) www.orientechnologies.com
MVRB+Tr e e  index the best of  B+Tree  and  RB-Tree fast on browsing,  low insertion cost It's a  new algorithm  (soon pu...
www.orientechnologies.com OO Inheritance Definition of  Classes  of documents Classes can  extend  others classes Queries ...
Hooks similar to  triggers catch events against  records ,  database  and  transactions implement  custom  cascade deletio...
Fetch plans Choose what to fetch on query and document loading Documents not fetched will be  lazy-loaded  on request Invo...
Security users  and  roles ,  encrypted  passwords fine grain  privileges www.orientechnologies.com
4 storage modes embedded client/server distributed in-memory www.orientechnologies.com
Embedded mode really fast runs in the  same JVM  of the application, less resources, no tcp/ip used www.orientechnologies....
Client/server mode client and server are separated JVMs thousands of clients  concurrently remote tcp/ip binary transport ...
Distributed mode distribute database clusters on multiple servers  (in alpha status) www.orientechnologies.com
In-memory mode Database lives only in memory No disk is used Destroyed at shutdown www.orientechnologies.com
www.orientechnologies.com Java API Document Database Graph Database Object Database
Document Database the base of all DB implementations documents have dynamic structure something like a smart  Map<String,O...
Demo! www.orientechnologies.com
SQL Query List<ODocument> result = db.query( new OSQLSynchQuery( &quot;select * from person where city.name = 'Rome'&quot;...
Native Query List<ODocument> result = new ONativeSynchQuery<ODocument, OQueryContextNativeSchema<ODocument>>( db, &quot;Pr...
Update a document List<ODocument> result = db.query( new OSQLSynchQuery( &quot;select * from person where city.name = 'Rom...
Delete a document List<ODocument> result = db.query( new OSQLSynchQuery( &quot;select * from person where city.name = 'Rom...
from/to JSON  // EXPORT JSON System.out.println( document.toJSON() ); // IMPORT JSON document.fromJSON( “{  '@class' = 'De...
Use hooks (triggers) public class HookTest extends ORecordHookAbstract { public saveProfile(){ ODatabaseObjectTx database ...
Object Database wrapper on top of Document Database binds  POJO  from/to the database no OR-Mapping complexity no enhancem...
POJO mapping Uses the  reflection  to bind POJO fields at start-up caches reflection meta-data 1-to-1 binding configurable...
Demo! www.orientechnologies.com
Polymorphics SQL Query List<Person> result = database.query( new OSQLSynchQuery(&quot;select from person where city.name =...
Graph Database wrapper on top of Document Database Few simple concepts:  Vertex ,  Edge , Property  and  Index www.oriente...
TinkerPop Blueprints http://tinkerpop.com Standard de-facto to interact with GraphDBs implements  transactional  and index...
TinkerPop Blueprints Available implementations: OrientDB Neo4J, Sail (RDF storage) Under development: InfiniteGraph, DEX, ...
GraphDB  & Blueprints API OrientGraph graph = new OrientGraph(&quot;local:/tmp/db/graph”); Vertex actor = graph.addVertex(...
TinkerPop  scripting  language easy  to learn and understand Used for operations against graphs www.orientechnologies.com
www.orientechnologies.com Graph example graph-example-1.xml
Load graph  Run the console, open the database and load a graph in xml format marko:~/software/gremlin$  ./gremlin.sh   ,,...
Search Displays outgoing edges of vertices with name equals to 'marko', then the name of inbound vertices gremlin>  g:key-...
API resume object, key/value and graph elements all work on top of  Document you can always access to the  underlying  doc...
Enhanced SQL SQL is not enough for collections, maps, trees and graphs need to  enhance  SQL syntax Easy syntax derived fr...
SQL & relationships select from Account where  address .city.country.name  = 'Italy' select from Account where addresses  ...
SQL & trees/graphs select from Profile where friends  traverse(0,7)  ( sex = 'female' ) (Soon new specific operators for t...
SQL & strings select from Profile where name .toUpperCase()  = 'LUCA' select from City where country.name .substring(1,3)....
SQL & conversions select from Shapes where area .toFloat()  > 3.14 select from Agenda where birthDate .toDateTime()  > '19...
SQL & schema-less select from Profile where  any()  like '%Jay%' select from Stock where  all()  is not null www.orientech...
SQL & collections select from Tree where children  contains  ( married = true ) select from Tree where children  containsA...
SQL & documents select from Vehicle where  @class  = 'Car' select from Friend where  @version  > 100 select from File wher...
High-Availability Cluster of distributed server nodes Synchronous, Asynchronous and Read-Only Replication Load-balancing b...
Demo again! OrientDB Studio www.orientechnologies.com
Always  Free Open Source  Apache 2 license free for any purposes, even commercials www.orientechnologies.com
Prof €$$ ional $ € rvic €$ by a network of companies through Orient Technologies support, training, consulting, mentoring ...
www.orientechnologies.com OrientDB for Java developers 8 hours OrientDB Master Development 14 hours OrientDB for SOA 6 hou...
Certification Program to be part of the network do courses share revenues for support work as consultant www.orientechnolo...
NuvolaBase.com (beta) www.orientechnologies.com The first Graph Database on the Cloud always available few seconds to setu...
NuvolaBase.com (beta) www.orientechnologies.com By Alfonso Focareta twitter.com/afocareta  & Dino Ciuffetti twitter.com/tu...
NuvolaBase.com (beta) www.orientechnologies.com Only 350 FREE accounts available for the  Get your account for FREE insert...
Luca Garulli Author of  OrientDB  and Roma <Meta> Framework Open Source projects, Member of JSR#12 (jdo 1.0) and JSR#243 (...
Upcoming SlideShare
Loading in...5
×

Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o Facebook

2,423

Published on

La presentazione di Luca Garulli
in occasione del Codemotion, Roma 5 marzo 2011 http://www.codemotion.it

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,423
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
0
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Transcript of "Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o Facebook"

  1. 1. Perchè potresti avere bisogno di un database NoSQL anche se non sei Google o Facebook Luca Garulli
  2. 2. The graph db for the Enterprise & Web www.orientechnologies.com
  3. 3. Why do I could need something different than a Relational DBMS ? www.orientechnologies.com
  4. 4. (1) RDBMSs have more than 30 years Information Technology is not properly the same of '70 ... www.orientechnologies.com
  5. 5. (2) In the Web age applications could have Thousands or Millions of users Are you ready for this? www.orientechnologies.com
  6. 6. (3) Time-to-Market measured not anymore in years/man but days/weeks for a demo and months for the final www.orientechnologies.com
  7. 7. (4) Applications are more “ social” with much more relationships - tabular data and + interconnected Graphs www.orientechnologies.com
  8. 8. (5) Who believe yet to the bullshit that performance problems can be resolved just by scaling with the hardware? www.orientechnologies.com
  9. 9. (6) We use new stuff everyday HTTP , REST , Javascript & JSON How can I use them in better way without conversions & mapping? www.orientechnologies.com
  10. 10. (7) Modern applications are mostly I/O Bound not CPU bound. Often the DB Is the bottleneck of all www.orientechnologies.com
  11. 11. www.orientechnologies.com NoSQL = “Not Only SQL” = make the best choice for your use case
  12. 12. Can I trust new DBMSs? www.orientechnologies.com
  13. 13. www.orientechnologies.com
  14. 14. www.orientechnologies.com Non exhaustive list of NoSQL products: AllegroGraph, Amazon SimpleDB, Amazon Dynamo, Dynomite, BerkleyDB, Google BigTable, Cassandra, CouchDB, DB4O, Hbase, Hipertable, Hive, Jackrabbit, InfiniteGraph, InfoGrid, Memcached, MemcacheDB, Mnesia, M/DB/DT.M, MongoDB, Neo4J, OrientDB , Pig, Project Voldemort, RavenDB, Redis, Riak, Scalaris, Sesame, Sones, Terrastore, Tokyo Cabinet/Tyrant, Yahoo! Pnuts/Sherpa
  15. 15. www.orientechnologies.com The “NoSQL container” groups so very-very-very different products, no standard, difficult to choice, difficult to learn them
  16. 16. www.orientechnologies.com Can I have a Fast, scalable, flexible storage with transactions , SQL and security easy to use and maintain?
  17. 17. www.orientechnologies.com The fastest NoSQL document - graph dbms
  18. 18. +12 years of research www.orientechnologies.com
  19. 19. +1,5 year of design and development www.orientechnologies.com
  20. 20. = best features of newest NoSQL solutions + best features of Relational DBMS + new ideas and concepts www.orientechnologies.com
  21. 21. Ø config download, unzip, run! cut & paste the db www.orientechnologies.com
  22. 22. No dependencies with 3 rd parties software no conflicts with other software About 1 Mb of run-time libraries www.orientechnologies.com
  23. 23. Java ® runs everywhere is available JRE1.5+ robust engine www.orientechnologies.com
  24. 24. 150,000 records per second www.orientechnologies.com
  25. 25. Schema- less schema is not mandatory, relaxed model , collect heterogeneous documents all together www.orientechnologies.com
  26. 26. Schema- full schema with constraints on fields and validation rules Customer.age > 17 Customer.address not null Customer.surname is mandatory Customer.email matches 'b[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,4}b' www.orientechnologies.com
  27. 27. Schema- mixed schema with mandatory and optional fields + constraints the best of schema-less and schema-full modes www.orientechnologies.com
  28. 28. ACID Transactions db.begin(); try{ // your code ... db.commit(); } catch( Exception e ) { db.rollback(); } www.orientechnologies.com
  29. 29. Complex types native support for collections : ['cool','fast'] maps (key/value): { 'age', 33 } and embedded documents no more additional tables to handle them www.orientechnologies.com
  30. 30. Relationships are direct links no Relational JOINS to connect multiple tables Load trees and graphs in few ms ! www.orientechnologies.com
  31. 31. Example of a Graph www.orientechnologies.com
  32. 32. SQL select * from employee where name like '%Jay%' and status=0 www.orientechnologies.com
  33. 33. www.orientechnologies.com A NoSQL product that supports SQL ? Naa... is it a joke?
  34. 34. www.orientechnologies.com For the most of the queries everyday a programmer needs SQL is simpler, more readable and compact then Scripting (Map/Reduce)
  35. 35. 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 }; }
  36. 36. For Relational skilled Developers (everyone of us?) using OrientDB is easy www.orientechnologies.com
  37. 37. Asynchronous Query invoke callback when a record matches the condition doesn't collect the result set perfect for immediate results useful to compute aggregates www.orientechnologies.com
  38. 38. Language bindings Java as native JRuby , Scala and Javascript ready C , C++ , Ruby , Node.js in progress www.orientechnologies.com
  39. 39. Your language is not supported (yet)? Write an adapter using the C, Java or HTTP binding www.orientechnologies.com
  40. 40. HTTP RESTful firewall friendly use it from the web browser use it from the ESB (SOA) www.orientechnologies.com
  41. 41. Native JSON { '@rid' = '26:10', '@class' = 'Developer', 'name' : 'Luca', 'surname' : 'Garulli', 'company' : '19:76' } www.orientechnologies.com
  42. 42. Import/Export uses JSON format online operations (don't stop the database) www.orientechnologies.com
  43. 43. MVRB+Tr e e index the best of B+Tree and RB-Tree fast on browsing, low insertion cost It's a new algorithm (soon public) www.orientechnologies.com
  44. 44. www.orientechnologies.com OO Inheritance Definition of Classes of documents Classes can extend others classes Queries are polymorphics Contact name : string surname : string Customer orders : List<Order> Provider products : List<Product>
  45. 45. Hooks similar to triggers catch events against records , database and transactions implement custom cascade deletion algorithm enforce constraints www.orientechnologies.com
  46. 46. Fetch plans Choose what to fetch on query and document loading Documents not fetched will be lazy-loaded on request 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 ] www.orientechnologies.com
  47. 47. Security users and roles , encrypted passwords fine grain privileges www.orientechnologies.com
  48. 48. 4 storage modes embedded client/server distributed in-memory www.orientechnologies.com
  49. 49. Embedded mode really fast runs in the same JVM of the application, less resources, no tcp/ip used www.orientechnologies.com
  50. 50. Client/server mode client and server are separated JVMs thousands of clients concurrently remote tcp/ip binary transport www.orientechnologies.com
  51. 51. Distributed mode distribute database clusters on multiple servers (in alpha status) www.orientechnologies.com
  52. 52. In-memory mode Database lives only in memory No disk is used Destroyed at shutdown www.orientechnologies.com
  53. 53. www.orientechnologies.com Java API Document Database Graph Database Object Database
  54. 54. Document Database the base of all DB implementations documents have dynamic structure something like a smart Map<String,Object> or a record with dynamic fields www.orientechnologies.com
  55. 55. Demo! www.orientechnologies.com
  56. 56. SQL Query List<ODocument> result = db.query( new OSQLSynchQuery( &quot;select * from person where city.name = 'Rome'&quot; ) ); for( ODocument d : result ) { System.out.println( &quot;Person: &quot; + d.field( &quot;name&quot; ) + d.field( &quot;surname&quot; ) ); } www.orientechnologies.com
  57. 57. Native Query List<ODocument> result = new ONativeSynchQuery<ODocument, OQueryContextNativeSchema<ODocument>>( db, &quot;Profile&quot;, new OQueryContextNativeSchema<ODocument>()) { @Override public boolean filter(OQueryContextNativeSchema<ODocument> iRecord) { return iRecord.field(&quot;city&quot;).field(&quot;name&quot;).eq(&quot;Rome&quot;).and().field(&quot;name&quot;).like(&quot;G%&quot;).go(); }; }.setLimit(20).execute(); www.orientechnologies.com
  58. 58. Update a document List<ODocument> result = db.query( new OSQLSynchQuery( &quot;select * from person where city.name = 'Rome'&quot;)); for( ODocument d : result ) { d.field( &quot;local&quot;, true ); d.save(); } // IT'S THE SAME OF: db.command( new OSQLCommand( &quot;update person set local = true where city.name = 'Rome'&quot;)) .execute(); Copyright © 2010 Luca Garulli - www.orientechnologies.com
  59. 59. Delete a document List<ODocument> result = db.query( new OSQLSynchQuery( &quot;select * from person where city.name = 'Rome'&quot; ) ); for( ODocument d : result ) { d.delete(); // IT'S THE SAME OF: int deleted = db.command( new OSQLCommand( &quot;delete person where city.name = 'Rome'&quot;)).execute(); Copyright © 2010 Luca Garulli - www.orientechnologies.com
  60. 60. from/to JSON // EXPORT JSON System.out.println( document.toJSON() ); // IMPORT JSON document.fromJSON( “{ '@class' = 'Developer', 'name' : 'Luca', 'surname' : 'Garulli' }” ); document.save(); www.orientechnologies.com
  61. 61. Use hooks (triggers) public class HookTest extends ORecordHookAbstract { public saveProfile(){ ODatabaseObjectTx database = new ODatabaseObjectTx(&quot;remote:localhost/demo&quot;); database.open(&quot;writer&quot;, &quot;writer&quot;); database.registerHook(this); ... } @Override public void onRecordAfterCreate(ORecord<?> iRecord){ System.out.println(&quot;Record created successfully&quot;); } } www.orientechnologies.com
  62. 62. Object Database wrapper on top of Document Database binds POJO from/to the database no OR-Mapping complexity no enhancement, no Java Proxies www.orientechnologies.com
  63. 63. POJO mapping Uses the reflection to bind POJO fields at start-up caches reflection meta-data 1-to-1 binding configurable options by @annotations www.orientechnologies.com
  64. 64. Demo! www.orientechnologies.com
  65. 65. Polymorphics SQL Query List<Person> result = database.query( new OSQLSynchQuery(&quot;select from person where city.name = 'Rome'&quot;)); for( Person p : result ) { if( p instanceof Customer ) System.out.println(&quot;Customer: &quot; + p.getName() + “ “ + p.getSurname() ); } www.orientechnologies.com Queries are polymorphics and subclasses of Person can be part of result set
  66. 66. Graph Database wrapper on top of Document Database Few simple concepts: Vertex , Edge , Property and Index www.orientechnologies.com
  67. 67. TinkerPop Blueprints http://tinkerpop.com Standard de-facto to interact with GraphDBs implements transactional and indexable property graph model with bidirectional edges www.orientechnologies.com
  68. 68. TinkerPop Blueprints Available implementations: OrientDB Neo4J, Sail (RDF storage) Under development: InfiniteGraph, DEX, Redis www.orientechnologies.com
  69. 69. GraphDB & Blueprints API OrientGraph graph = new OrientGraph(&quot;local:/tmp/db/graph”); Vertex actor = graph.addVertex(null); actor.setProperty(&quot;name&quot;, &quot;Leonardo&quot;); actor.setProperty(&quot;surname&quot;, &quot;Di Caprio&quot;); Vertex movie = graph.addVertex(null); movie.setProperty(&quot;name&quot;, &quot;Inception&quot;); Edge edge = graph.addEdge(null, actor, movie, &quot;StarredIn&quot;); graph.shutdown(); www.orientechnologies.com
  70. 70. TinkerPop scripting language easy to learn and understand Used for operations against graphs www.orientechnologies.com
  71. 71. www.orientechnologies.com Graph example graph-example-1.xml
  72. 72. Load graph Run the console, open the database and load a graph in xml format marko:~/software/gremlin$ ./gremlin.sh ,,,/ (o o) -----oOOo-(_)-oOOo----- gremlin> $_g := orientdb:open('/tmp/graph/test') ==>orientgraph[/tmp/graph/test] gremlin> g:load('data/graph-example-1.xml') ==>true gremlin> $_g ==>orientgraph[/tmp/graph/test] www.orientechnologies.com
  73. 73. Search Displays outgoing edges of vertices with name equals to 'marko', then the name of inbound vertices gremlin> g:key-v('name','marko')/outE ==>e[6:0][5:2-knows->5:1] ==>e[6:1][5:2-knows->5:4] ==>e[6:4][5:2-created->5:0] gremlin> g:key-v('name','marko')/outE/inV/@name ==>vadas ==>josh ==>lop gremlin> g:close() ==>true www.orientechnologies.com
  74. 74. API resume object, key/value and graph elements all work on top of Document you can always access to the underlying document changes to the document are reflected to the object, key/value and graph elements and viceversa www.orientechnologies.com
  75. 75. Enhanced SQL SQL is not enough for collections, maps, trees and graphs need to enhance SQL syntax Easy syntax derived from JDO/JPA standards www.orientechnologies.com
  76. 76. SQL & relationships select from Account where address .city.country.name = 'Italy' select from Account where addresses contains ( city.country.name = 'Italy') www.orientechnologies.com
  77. 77. SQL & trees/graphs select from Profile where friends traverse(0,7) ( sex = 'female' ) (Soon new specific operators for trees and graphs) www.orientechnologies.com
  78. 78. SQL & strings select from Profile where name .toUpperCase() = 'LUCA' select from City where country.name .substring(1,3).toUpperCase() = 'TAL' select from Agenda where phones contains ( number .indexOf( '+39' ) > -1 ) select from Agenda where email matches 'bA-Z0-9._%+-?+@A-Z0-9.-?+.A-Z?{2,4}b' www.orientechnologies.com
  79. 79. SQL & conversions select from Shapes where area .toFloat() > 3.14 select from Agenda where birthDate .toDateTime() > '1976-10-26 07:00:00' select from Workflow where completed .toBoolean() = true www.orientechnologies.com
  80. 80. SQL & schema-less select from Profile where any() like '%Jay%' select from Stock where all() is not null www.orientechnologies.com
  81. 81. SQL & collections select from Tree where children contains ( married = true ) select from Tree where children containsAll ( married = true ) select from User where roles containsKey 'shutdown' select from Profile where tags in 'cool' select from Graph where edges .size() > 0 www.orientechnologies.com
  82. 82. SQL & documents select from Vehicle where @class = 'Car' select from Friend where @version > 100 select from File where @size > 1000000 www.orientechnologies.com
  83. 83. High-Availability Cluster of distributed server nodes Synchronous, Asynchronous and Read-Only Replication Load-balancing between client ↔ servers and Servers ↔ Servers www.orientechnologies.com
  84. 84. Demo again! OrientDB Studio www.orientechnologies.com
  85. 85. Always Free Open Source Apache 2 license free for any purposes, even commercials www.orientechnologies.com
  86. 86. Prof €$$ ional $ € rvic €$ by a network of companies through Orient Technologies support, training, consulting, mentoring www.orientechnologies.com
  87. 87. www.orientechnologies.com OrientDB for Java developers 8 hours OrientDB Master Development 14 hours OrientDB for SOA 6 hours OrientDB and the power of graphs 6 hours OrientDB for DBA 6 hours OrientPlanet for Web Developers 6 hours
  88. 88. Certification Program to be part of the network do courses share revenues for support work as consultant www.orientechnologies.com Contact commercial @orientechnologies.com
  89. 89. NuvolaBase.com (beta) www.orientechnologies.com The first Graph Database on the Cloud always available few seconds to setup it use it from app & mobile
  90. 90. NuvolaBase.com (beta) www.orientechnologies.com By Alfonso Focareta twitter.com/afocareta & Dino Ciuffetti twitter.com/tuxweb
  91. 91. NuvolaBase.com (beta) www.orientechnologies.com Only 350 FREE accounts available for the Get your account for FREE inserting “ CM2011 ” as promotional code! “ CM2011”
  92. 92. Luca Garulli Author of OrientDB and Roma <Meta> Framework Open Source projects, Member of JSR#12 (jdo 1.0) and JSR#243 (jdo 2.0) CTO at Asset Data and Orient Technologies Technical Manager at Romulus consortium www.orientechnologies.com www.twitter.com/ lgarulli @Rome, Italy

×