Neo4J, what else?

524 views

Published on

Presentation about Neo4J given at the Dutch NLjug event in november 2011.

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

  • Be the first to like this

No Downloads
Views
Total views
524
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Neo4J, what else?

  1. 1. Neo4j, what else??? Ron van Weverwijk
  2. 2. AGENDA• Positionering binnen NoSql• Wat is een graph (Graaf)• Neo4j• Neoclipse• Kamer van Koophandel• Vragen?
  3. 3. VIER NOSQL CATEGORIEËN
  4. 4. KEY-VALUE STORE
  5. 5. COLUMN FAMILY (BIGTABLE)
  6. 6. DOCUMENT DATABASES
  7. 7. GRAPH DATABASES
  8. 8. WAT IS EEN GRAPH?• Leonhard Euler (1736)• Seven Bridges of Königsberg http://en.wikipedia.org/wiki/Seven_Bridges_of_Königsberg
  9. 9. WAAR ZIJN GRAPHS GOED IN?
  10. 10. http://inmaps.linkedinlabs.com/
  11. 11. NEO4J
  12. 12. Experiment: Hoe zijn 2 nodes verbonden?• 1000 personen• gemiddeld 50 relaties• Zijn 2 personen verbonden met maximaal 4 stappen?• Warme cache
  13. 13. Experiment: Hoe zijn 2 nodes verbonden?• 1000 personen Relationeel Neo4j• gemiddeld 50 relaties• Zijn 1000 2000ms 2ms 2 personen verbonden met maximaal 4 stappen?• Warme cache 1 000 000 ? 2ms
  14. 14. Experiment: Hoe zijn 2 nodes verbonden?• 1000 personen Relationeel Neo4j• gemiddeld 50 relaties• Zijn 1000 2000ms 2ms 2 personen verbonden met maximaal 4 stappen?• Warme cache 1 000 000 ? 2ms
  15. 15. NODES (VERTICES)RELATIONS (EDGES)
  16. 16. PROPERTIES OP NODES type: persoon type: team name: Ron name: S2 type: persoon name: Corjan
  17. 17. GETYPEERDE RELATIES speelt_in type: persoon type: team name: Ron name: S2 coach_van type: persoon name: Corjan
  18. 18. PROPERTIES OP RELATIES speelt_in type: persoon type: team name: Ron name: S2 jaar: 2011 coach_van jaar: 2011 type: persoon name: Corjan
  19. 19. PROPERTIES• Alle Java primitieven kunnen gebruikt worden: • String • boolean • int • double • ...
  20. 20. SCHEMA-LESS DATABASE !=DATABASE WITHOUT DESIGN
  21. 21. Doctor Who (Jim Webber)
  22. 22. FILEBASED
  23. 23. EMBEDDABLE, SERVER HIGH AVAILABLE• new EmbeddedGraphDatabase("/tmp/neodb");• GET http://localhost:7474/db/data/node/123• Map<String,String> config = HighlyAvailableGraphDatabase.loadConfigurations( configFile ); GraphDatabaseService db = new HighlyAvailableGraphDatabase( path, config );
  24. 24. CREATE NODESTransaction tx = db.beginTx();try { Node ron = db.createNode(); ron.setProperty("name", "Ron van Weverwijk"); tx.success();} finally { tx.finish();}
  25. 25. CREATE RELATIONSTransaction tx = db.beginTx();try { Node ron = db.createNode(); ron.setProperty("name", "Ron van Weverwijk"); Node lindy = db.createNode(); susan.setProperty("name", "Lindy van Weverwijk - Tersteeg"); lindy.createRelationshipTo(ron, DynamicRelationshipType.withName("MARIED")); tx.success();} finally { tx.finish();}
  26. 26. RELATIONSDynamicRelationshipType.withName("MARIED");public enum RelationTypes implements RelationshipType{ MARIED,FRIENDS,LIVING}public class MariedRelationship implementsRelationshipType{ public String name() { return "maried"; }}
  27. 27. TRAVERSINGTraversalDescription traversal = new TraversalDescriptionImpl() .depthFirst() .uniqueness(Uniqueness.RELATIONSHIP_PATH);Iterable<Path> paths = traversal.traverse(startNode); Ron Lindy Adres
  28. 28. INCLUDE_AND_PRUNEINCLUDE_AND_CONTINUE EXCLUDE_AND_ PRUNEEXCLUDE_AND_CONTINUE
  29. 29. ALGORITHMS• find all paths• find all simple paths• find the shortest path• Dijkstra algorithm• The a* search algorithm
  30. 30. INDEXING:GRAPHS ARE THERE OWN INDEX
  31. 31. LUCENETransaction tx = db.beginTx(); try { Node ron = db.createNode(); ron.setProperty("name", "Ron van Weverwijk"); Index<Node> people = db.index().forNodes("people"); people.add(ron, "name", ron.getProperty("name")); tx.success(); } finally { tx.finish();}
  32. 32. HORIZONTAL PARTITIONING IS HARD Duur om te doorlopen
  33. 33. HIGH AVAILABLE
  34. 34. EVENTUALLY CONSISTENT
  35. 35. NEOCLIPSE• eclipse applicatie• bekijk je Neo4j graph• toevoegen / verwijderen nodes en relations
  36. 36. player_ofMathieu coach_of S2 Corjan player_of commission_member_of Ron Webcommissie commission_member_of Dennis
  37. 37. NODE WRAPPINGpublic interface Member { String getName(); void setName(String name); // .....}
  38. 38. NODE WRAPPINGpublic class MemberNode implements Member { private Node node; public static final String MEMBER_NAME_KEY = "name"; public MemberNode(Node node) { this.node = node; } public String getName() { return (String) getNode().getProperty(MEMBER_NAME_KEY); } public void setName(String name) { getNode().setProperty(MEMBER_NAME_KEY, name); }}
  39. 39. KAMER VAN KOOPHANDEL• Instelling van en voor het bedrijfsleven• Registreren• Informeren• Stimuleren
  40. 40. OPDRACHT• Hoe zijn bedrijven onderling verbonden?
  41. 41. PROBLEEM• HuidigeDB2 database was niet geschikt om graph gerelateerde vragen te beantwoorden• Huidige systeem kon maximaal 3 niveaus terug geven• Response tijden waren te hoog• Belasting van het huidige systeem was te zwaar
  42. 42. REGISTRATIE:FOCUS OP ORGANISATIE Uw keuken B.V. Bestuurder Bob de Bouwer
  43. 43. IN NEO4J LEGGEN WE DE FOCUS OP DE RELATIE Uw keuken Zijn keuken B.V. B.V. Bestuurder Bestuurder Bob de Bouwer
  44. 44. NIET ALLEEN 1 NIVEAU MAAR ALLE NIVEAU’S Haar keuken B.V. Bestuurder Zijn keuken Uw keuken B.V. Schaakvereniging B.V. Schaatmat Bestuurder Bestuurder Bestuurder Bob de Bouwer
  45. 45. VERBETERING•1 vraag per 5 sec • 15 vragen per sec
  46. 46. CIJFERS EN FEITEN• 11 900 000 nodes• 12 000 000 relaties•2 gb geheugen• 12 gb diskspace• AIX Power 7, 0.7 CPU @ 3.0GHZ
  47. 47. HUIDIGE OPZETDB2 Neo4j
  48. 48. GELEERDE LESSEN• Blijf tekenen: Maak het netwerk visueel• Maak proefopzetjes en refactor• Pas node wrapping toe om het domein simpel te houden• Typeer nodes
  49. 49. NEO4J 1.5• kleinere disk-footprint• Cypher verbeteringen• HA verbeteringen• Verbeterde webadmin
  50. 50. NEO4J SHORTLIST EU
  51. 51. CREDITS KvK Kees van den Silvester van Ron vanJasper Feenstra Berg der Bijl Weverwijk Feenstra IT Four Scouts Xebia
  52. 52. Ron van Weverwijkrvanweverwijk@xebia.com

×