OrientDB for real & Web App development


Published on

NoSQLDay, Brescia Italy

Published in: Technology

OrientDB for real & Web App development

  1. 1. for real & Web App development www.orientechnologies.com NoSqlDay – Brescia, Italy 2011
  2. 2. What?!!! How a DBMS can improve the development of Web Applications ? www.orientechnologies.com
  3. 3. ...And... Why Web Applications would 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. 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
  13. 13. www.orientechnologies.com The “NoSQL container” groups so very-very-very different products, no standard, difficult to choice, difficult to learn them
  14. 14. www.orientechnologies.com Can I have a Fast, scalable, flexible storage with transactions , SQL and security easy to use and maintain?
  15. 15. www.orientechnologies.com The fastest NoSQL document - graph dbms
  16. 16. = best features of newest NoSQL solutions + best features of Relational DBMS + new ideas and concepts www.orientechnologies.com
  17. 17. 0 config Very light = 1 Mb No dependencies Java = run everywhere Fast = 200,000 insert/sec ACID Transactions SQL www.orientechnologies.com
  18. 18. Direct Link = No JOIN Schema-less Schema-full Schema-mixed Complex types (list/set/map/...) Support for Trees and Graphs www.orientechnologies.com
  19. 19. Binary protocol HTTP RESTful like protocol Native import/export JSON Object Oriented concepts Security www.orientechnologies.com
  20. 20. Embeddable In-memory Client/Server Distributed N nodes www.orientechnologies.com
  21. 21. Example of a Graph www.orientechnologies.com
  22. 22. 100% compliant with TinkerPop Blueprints standard for GraphDBs Support for GREMLIN Graph language Several Graph algorithms available www.orientechnologies.com
  23. 23. SQL & relationships select from Account where address .city.country.name = 'Italy' select from Account where addresses contains ( city.country.name = 'Italy') www.orientechnologies.com
  24. 24. SQL & trees/graphs select from Profile where friends traverse(0,7) ( sex = 'female' ) (Soon new specific operators for trees and graphs) www.orientechnologies.com
  25. 25. 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
  26. 26. SQL & schema-less select from Profile where any() like '%Jay%' select from Stock where all() is not null www.orientechnologies.com
  27. 27. 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
  28. 28. SQL & documents select from Vehicle where @class = 'Car' select from Friend where @version > 100 select from File where @size > 1000000 www.orientechnologies.com
  29. 29. Demo! www.orientechnologies.com
  30. 30. Case Study #1 Online Backup solution built on top of OrientDB Operates in Austria, Swiss, Germany www.orientechnologies.com
  31. 31. Cluster of 6 servers 450 millions of records RAID 5 and 6 18TB of data expected 50TB next months www.orientechnologies.com
  32. 32. Double usage of OrientDB as GraphDB for the agents and as Binary repository for the Server-side cluster www.orientechnologies.com
  33. 33. www.orientechnologies.com * Agent: Virtual File System as Graph * VResource VFile VDirectory VChunk -------------- hash: string content : byte[] “ Chunks” as pieces of file max 64Kb, hashed (SHA-256) to avoid duplications of data for common files EntryPoint
  34. 34. www.orientechnologies.com Clustered Binary repository d23kLc3eIe2 : byte[64000] OrientDB Node #1 OrientDB Node #1 OrientDB Node #1 OrientDB Node #1 OrientDB Node #1 OrientDB Node #1 Cluster #1 0000-ertd Cluster #2 erte-mo93 Cluster #3 mo94-zzzz CHUNKS CHUNKS CHUNKS CHUNKS CHUNKS Dispatcher Partitionates chunks based on HASH code Agent Agent Agent CHUNKS CHUNKS CHUNKS CHUNKS CHUNKS CHUNKS CHUNKS CHUNKS CHUNKS CHUNKS
  35. 35. Case Study #2 Project “Trick” as ad-hoc CRM built on top of OrientDB First use of OrientWEB.js ! www.orientechnologies.com
  36. 36. OrientWEB.js Sneak Peak www.orientechnologies.com
  37. 37. Main goals (1) improve scalability (2) improve user's experience (3) simplify development (4) avoid constraints to web designers www.orientechnologies.com
  38. 38. What is OrientWEB.js ? Lightweight Javascript library Client-side only Based on HTTP, JSON and Graphs Under development, first alpha on April 5 th 2011 www.orientechnologies.com
  39. 39. Use the client resources to render the pages Unload the server from the heavy task of generating HTML Pages Reduce network transfer & latency The idea is not so new but revamped using new technologies... www.orientechnologies.com
  40. 40. www.orientechnologies.com HTTP GET /sql/select from company where name.startsWith( 'Asset' ) { @class = 'company', @rid = '9:34', name : 'Asset Management', address : { location : 'Via Rhodesia, 34', city : { name : 'Rome' } } } HTTP PUT /document/9:34 Browser/Server messages Agent WWW OrientDB Server
  41. 41. Binding Object ↔ Form Binds automatically complex JSON to HTML and vice-versa Conventions over Configurations Developer has full control about customization, just respect naming conventions on <tag> ids www.orientechnologies.com
  42. 42. bindObject2Form() <div id=&quot;contacts&quot;> <div>Contacts: <div> Name: <input id=&quot; contacts_?0 _name&quot;></input> Surname: <input id=&quot;contacts_?0 _surname &quot;></input> Phone: <input id=&quot;contacts_?0_phone&quot;></input> <div id=&quot;address&quot;>Address:</div> <div id=&quot; contacts_?0_address &quot;> <div> City <input id=&quot; contacts_?0_address_?1_city &quot;></input> Number <input id=&quot;contacts_?0_address_?1_houseNumber&quot;></input> Postal Code <input id=&quot;contacts_?0_address_?1_cap&quot;></input> Location <input id=&quot;contacts_?0_address_?1_road&quot;></input> <button id=&quot;contacts_?0_address_?1 !remove &quot;>Remove address</button> </div> </div> <button id=&quot;contacts_?0_address !add &quot;>Add address</button> <button id=&quot;contacts_?0 !remove &quot;>Remove contact</button> </div> </div> </div> www.orientechnologies.com Array Recursive fields 2 level arrays Actions
  43. 43. Object2Form binding $(function(){ // EXECUTE THE QUERY var result = database.query('select * from Company where name = 'Asset''); // CREATE THE FORM BINDING THE FIRST OBJECT OF THE RESULT SET var obj = result['result'][0]; form = new OForm(); form.object2form(obj); } function save(){ var obj = form.form2object() ; database.save(obj); } www.orientechnologies.com
  44. 44. What about security? www.orientechnologies.com
  45. 45. Security at schema level OUser can have multiple ORole Permissions are setted against ORole Resource + OPERATION {Create, Read, Update, Delete} Employee.create = false user 'reader' can't UPDATE records of class 'Employee' www.orientechnologies.com
  46. 46. Record level security Very similar to UNIX File System access Enabled if user class extends OSecureRecord Class OSecureRecord { OUser owner; ORole group; char[] access; // User, Group, Others } Class Employee extends OSecureRecord www.orientechnologies.com
  47. 47. More on OrientWEB.js Fully integrated with OrientDB JS driver : - preserves internal field like @class, @rid - uses field types if declared (schema-full) www.orientechnologies.com
  48. 48. Always Free Open Source Apache 2 license free for any purposes, even commercials www.orientechnologies.com
  49. 49. Prof €$$ ional $ € rvic €$ by a network of companies through Orient Technologies support, training, consulting, mentoring www.orientechnologies.com
  50. 50. 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
  51. 51. Certification Program to be part of the network do courses share revenues for support work as consultant www.orientechnologies.com Contact commercial @orientechnologies.com
  52. 52. 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
  53. 53. NuvolaBase.com (beta) www.orientechnologies.com By Alfonso Focareta twitter.com/afocareta & Dino Ciuffetti twitter.com/tuxweb
  54. 54. NuvolaBase.com (beta) www.orientechnologies.com Only 200 FREE accounts available for the NoSQLDay event Get your account for FREE inserting “ CM2011 ” as promotional code! “ CM2011”
  55. 55. 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 www.orientechnologies.com www.twitter.com/ lgarulli @Rome, Italy Discuss this talk online at http://joind.in/2944 !