Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Neo4j Graph Database Presentation (German)

12,403 views

Published on

Warum ist ein Graph - bestehend aus Knoten und Verbindungen (jeweils mit Attributen) eigentlich so gut geeignet, die meisten Domänen ohne Verrenkungen zu modellieren? Warum habe ich bisher noch nie etwas von der etablierten Graphendatenbank Neo4j gehört? Was kann ich denn konkret damit machen? Welche interessanten Anwendungsgebiete gibt es? Das objektorientierte API ist gut und schön, aber ich möchte meine Objekte direkt in den Graphen abbilden, kann ich das? Gibt es Neo4j, mit spannenden Datensets, auch als gehostete Lösung, um direkt zu starten? Was für eine Programmiersprache brauche ich denn für eine ...4j-Datenbank?

Diese und viele andere Fragen wollen wir in der Präsentation beantworten. Von den Grundlagen angefangen, über Beispiele mit Aha-Effekten bis zum kompakten API von Neo4j und den Treibern für viele Programmiersprachen wird alles vorgestellt. Besonders wichtig ist die Mächtigkeit in Bezug auf die einfache Modellierung beliebiger Domänen. Dabei kann das Objekt-Graph-Mapping auf der Basis der von uns entwickelten Spring-Data-Graph Bibliothek noch einmal kräftig punkten. Den Abschluss der Präsentation bildet ein Abstecher zu gehosteten Neo4j-Instanzen, die besonders für PaaS-Provider, wie z.B. Heroku, sehr geeignet sind.

Published in: Technology, Business
  • Überprüfen Sie die Quelle ⇒ www.WritersHilfe.com ⇐ . Diese Seite hat mir geholfen, eine Diplomarbeit zu schreiben.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Neo4j Graph Database Presentation (German)

  1. 1. Gute Beziehungen Graphendatenbanken für Jedermann twitter: @mesirii / #neo4jMichael Hunger email: michael@neotechnology.com web: http://www.neo4j.org/Hacker @ Neo Technology web: http://www.jexp.de/
  2. 2. Agenda JAX 2011 Matrix PRESENTED_AT MODELS MODELS PRESENTED_ATPRESENTED_AT Neo4j NOSQL IS_A BELONGS_TO 2
  3. 3. Relationales Modell, allseits bekannt We all know the relational model. It has been predominant for a long time. Attendees username fullname registration speaker payment mtiberg Michael Tiberg null no 0 thobe Tobias Ivarsson 2010-04-07 yes 0 joe John Doe 2010-02-05 no 700 ... ... ... ... ... 3
  4. 4. Relationales Modell, allseits bekannt We all know the relational model. Attendees It has been predominant for a long time. username fullname registration speaker paymentmtiberg Michael Tiberg null no 0thobe Tobias Ivarsson 2010-04-07 yes 0joe John Doe 2010-02-05 no 700 ... ... ... ... ... 3
  5. 5. Relationales Modell, allseits bekannt We all know the relational model. It has been predominant for a long time. Attendees username fullname registration speaker payment mtiberg Michael Tiberg null no 0 thobe Tobias Ivarsson 2010-04-07 yes 0 joe John Doe 2010-02-05 no 700 ... ... ... ... ... 3
  6. 6. Attendees The relational model hasusername fullname registration speaker payment a few problems, such as: •poor support for sparse data •modifying the datamtiberg Michael Tiberg null no 0 model is almost exclusively done through adding tablesthobe Tobias Ivarsson 2010-04-07 yes 0joe John Doe 2010-02-05 no 700 ... ... ... ... ...Locationusername latitude longitude title publishthobe 55°3647.70"N 12°5834.50"E Malmö yes Sanjoe 37°4936.00"N 122°2522.00"W no Francisco ... ... ... ... ... 4
  7. 7. Attendees username fullname registration speaker payment mtiberg Michael Tiberg null no 0 thobe Tobias Ivarsson 2010-04-07 yes 0 joe John Doe 2010-02-05 no 700 ... ... ... ... ... Location username latitude longitude title publish thobe 55°3647.70"N 12°5834.50"E Malmö yesAfter a while, modelingcomplex relationshipsleads to complicated Sanschemasjoe 37°4936.00"N 122°2522.00"W no Francisco ... ... ... ... ... 5
  8. 8. Attendees Sessions username fullname registration speaker payment id title time room ... ... ... ... ... ... mtiberg Michael Tiberg null no 0 ... ... ... ... ... thobe Tobias Ivarsson 2010-04-07 yes 0 Session attendance joe John Doe 2010-02-05 no 700 session user ... ... ... ... ... ... ... Location ... ... username latitude longitude title publish More complication... thobe 55°3647.70"N 12°5834.50"E Malmö yes ... ... ... ...After a while, modeling ... ...complex relationships ... ...leads to complicated ...... ...... San ......schemasjoe 37°4936.00"N 122°2522.00"W no ...... Francisco ...... ...... ...... ...... ... ... ... ... ... 5
  9. 9. After a while, modelingcomplex relationshipsleads to complicatedschemas 5
  10. 10. Netze sind überall 6
  11. 11. Willkommen in der Matrix - die Welt - ein Netz Google Bildersuche: „graph OR network“ 7
  12. 12. Willkommen in der Matrix - die Welt - ein Netz ๏ Zusammenhänge in • Politik,Wirtschaft, Geschichte,Wissenschaft,Verkehr ๏ Biologie, Chemie, Physik, Soziologie • Körper, Ökosphere, Reaktionen, Interaktionen ๏ Internet • Hardware, Software, Interaktion ๏ Soziale Netzwerke • Familie, Freunde • Arbeit, Communities • Nachbarn, Städte, Lebensräume, Gesellschaft 8
  13. 13. Gute Beziehungen๏ die Welt besteht aus Dingen und deren Beziehungen๏ Beziehungen sind oft genauso wichtig wie die Dinge๏ Netze = Ganzes > Summe der Teile๏ komplexe Zusammenhänge๏ ständiger Wandel,Veränderung auch von Strukturen๏ Graph: Beziehungen sind Teil der Daten๏ RDBMS: Beziehungen sind Teil des starren Schemas 9
  14. 14. Fragen und Antworten๏ Komplexe Fragen๏ Antworten liegen zwischen den Zeilen (Dingen)๏ Lokalität der Informationen๏ Globale Suchen sind sehr teuer๏ Antwortzeiten sollten konstant sein, unabhängig von Datenmenge 10
  15. 15. Kategorien ?๏ Kategorien == Klassen, Bäume ?๏ Was ist wenn mehr als eine Kategorie passt?๏ Tags๏ Kategorie über Beziehungen „IS_A“๏ beliebig viele, schnelle Änderung๏ „virtuelle“ Beziehungen - Traversals๏ Kategorie dynamisch aus den Fragestellungen 11
  16. 16. 3 aktuelle Beispiele 12
  17. 17. Fowler & Christakis „Connected“ 13
  18. 18. New York Times R&D „Cascade“ 14
  19. 19. Deb Roy - MIT & Bluefin Labs „Birth of a Word“ TED Talk Researches Social Reactions to (Media) Events 15
  20. 20. Trends im Internet 16
  21. 21. Informationswachstum Datenmenge Vernetzung Geräteaktive NutzerArchitekturen 17
  22. 22. Informationswachstum Datenmenge Vernetzung Geräteaktive NutzerArchitekturen 1990 17
  23. 23. Informationswachstum Datenmenge Vernetzung Geräteaktive NutzerArchitekturen Application 1990 17
  24. 24. Informationswachstum Datenmenge Vernetzung Geräteaktive NutzerArchitekturen Application Text 1990 17
  25. 25. Informationswachstum Datenmenge Vernetzung Geräteaktive NutzerArchitekturen Application Text Hypertext 1990 17
  26. 26. Informationswachstum Datenmenge Vernetzung Geräteaktive NutzerArchitekturen Application Text Hypertext 1990 web 1.0 17
  27. 27. Informationswachstum Datenmenge Vernetzung Geräteaktive NutzerArchitekturen Application Hypertext RSS Text 1990 web 1.0 17
  28. 28. Informationswachstum Datenmenge Vernetzung Geräteaktive NutzerArchitekturen Application Blogs Hypertext RSS Text 1990 web 1.0 17
  29. 29. Informationswachstum Datenmenge Vernetzung Geräteaktive NutzerArchitekturen Applications Application Blogs Hypertext RSS Text 1990 web 1.0 17
  30. 30. Informationswachstum Datenmenge Vernetzung Geräteaktive NutzerArchitekturen Applications Application Blogs RSS Wikis Text Hypertext 1990 web 1.0 17
  31. 31. Informationswachstum Datenmenge Vernetzung Geräteaktive NutzerArchitekturen Applications Application Blogs RSS Wikis Text Hypertext 1990 2000 web 1.0 17
  32. 32. Informationswachstum Datenmenge Vernetzung Geräteaktive NutzerArchitekturen Applications Application user generated Blogs RSS Wikis Text Hypertext 1990 2000 web 1.0 17
  33. 33. Informationswachstum Datenmenge Vernetzung Geräteaktive NutzerArchitekturen Applications Application user generated tagging Blogs RSS Wikis Text Hypertext 1990 2000 web 1.0 17
  34. 34. Informationswachstum Datenmenge Vernetzung Geräteaktive NutzerArchitekturen Applications Application user generated tagging Blogs RSS Wikis Text Hypertext 1990 2000 web 1.0 web 2.0 17
  35. 35. Informationswachstum Datenmenge Vernetzung Geräteaktive NutzerArchitekturen Applications RDF Application user generated tagging Blogs RSS Wikis Text Hypertext 1990 2000 web 1.0 web 2.0 17
  36. 36. Informationswachstum Datenmenge Vernetzung Geräteaktive NutzerArchitekturen Applications RDF Application user Ontologien generated tagging Blogs RSS Wikis Text Hypertext 1990 2000 web 1.0 web 2.0 17
  37. 37. Informationswachstum Datenmenge Services / Applications Vernetzung Geräteaktive NutzerArchitekturen Applications RDF Application user Ontologien generated tagging Blogs RSS Wikis Text Hypertext 1990 2000 web 1.0 web 2.0 17
  38. 38. Informationswachstum Datenmenge Services / Applications Vernetzung Geräteaktive NutzerArchitekturen Semantic Web Applications RDF Application user Ontologien generated tagging Blogs RSS Wikis Text Hypertext 1990 2000 web 1.0 web 2.0 17
  39. 39. Informationswachstum Datenmenge Services / Applications Vernetzung Geräteaktive NutzerArchitekturen Semantic Web Applications RDF Application user Ontologien generated tagging Blogs RSS Wikis Text Hypertext 1990 2000 2011 web 1.0 web 2.0 17
  40. 40. Informationswachstum Datenmenge Services / Applications Giant Global Vernetzung Graph Geräteaktive NutzerArchitekturen Semantic Web Applications RDF Application user Ontologien generated tagging Blogs RSS Wikis Text Hypertext 1990 2000 2011 web 1.0 web 2.0 17
  41. 41. Informationswachstum Datenmenge Services / Applications Giant Global Vernetzung Graph Geräteaktive NutzerArchitekturen Semantic Web Applications RDF Application user Ontologien generated tagging Blogs RSS Wikis Text Hypertext 1990 2000 2011 web 1.0 web 2.0 web 3.0 17
  42. 42. Herausforderung - CAP๏ CAP Theorem (Brewer 2000) • Consistency • Availability • Partition Tolerance 18
  43. 43. NOSQL heisstNot Only SQL Polyglot Persistence 19
  44. 44. Vier NOSQL Kategorien NOSQL 20
  45. 45. Kategorie 1: Key-Value Datenbanken๏ Herkunft: • “Dynamo: Amazon’s Highly Available Key-Value Store” (2007)๏ Datenmodell: • Verteilte HashMap - Key-Value Paare๏ Beispiele: • Project Voldemort • Tokyo {Cabinet,Tyrant, etc} • Riak 21
  46. 46. Kategorie II: Column (BigTable) Datenbanken๏ Herkunft: • “Bigtable:(2006) Data” A Distributed Storage System for Structured๏ Datenmodell: • Große Tabelle mit Spalten Familien๏ Beispiele: • HBase • HyperTable • Cassandra 22
  47. 47. Kategorie III: Dokumentendatenbanken๏ Herkunft: • Lotus Notes๏ Datenmodell: • Sammlung von Dokumenten • Ein Dokument ist eine Key-Value Menge๏ Beispiele: • CouchDB (CouchBase) • MongoDB 23
  48. 48. Kategorie IV: Graphendatenbanken๏ Herkunft: • Graphentheory, Euler๏ Datenmodell: • Knoten mit Attributen • Gerichtete Kanten • Kanten mit Identität,Typ und Attributen • Hyperedges 24
  49. 49. Scaling to size vs. Scaling to complexity Size Key/Value stores Bigtable clones Document databases Graph databases Billions of nodes and relationships > 90% of use cases Complexity 25
  50. 50. Komplexes Problem? Passende Tools! Image credits: Unknown :’( 26
  51. 51. Polyglot Persistence๏ Ein System, mehrere Datenbanken - das beste Tool für das Problem nutzen๏ Beispiele: • RDBMS für strukturierte DatenEntitäten Graphendatenbank für die Relationen zwischen den und eine • Domänenmodell in derDokumenten Datenbankgroße Dokumente in einer Graphendatenbank und 27
  52. 52. Graphendatenbanken 28
  53. 53. Overview Graph Databases๏Neo4j ๏InfoGrid๏Sones GraphDB ๏DEX๏Infinite Graph ๏VertexDB (Objectivity) ๏FlockDB (Twitter)๏AllegroGraph (Franz ๏Trinity (Microsoft) inc.) ๏CloudGraph๏OrientDB๏HypergraphDB 29
  54. 54. The Property Graph data model•Nodes•Relationships bet ween Nodes•Relationships have Labels•Relationships are directed, but traversed at equalspeed in both directions•The semantics of the direction is up to theapplication (LIVES WITH is reflexive, LOVES is not)•Nodes have key-value properties•Relationships have key-value properties 30
  55. 55. The Property Graph data model•Nodes•Relationships bet ween Nodes•Relationships have Labels•Relationships are directed, but traversed at equalspeed in both directions•The semantics of the direction is up to theapplication (LIVES WITH is reflexive, LOVES is not)•Nodes have key-value properties•Relationships have key-value properties 30
  56. 56. The Property Graph data model•Nodes•Relationships bet ween Nodes•Relationships have Labels•Relationships are directed, but traversed at equalspeed in both directions•The semantics of the direction is up to theapplication (LIVES WITH is reflexive, LOVES is not)•Nodes have key-value properties•Relationships have key-value properties 30
  57. 57. The Property Graph data model LIVES WITH LOVES OWNS DRIVES•Nodes•Relationships bet ween Nodes•Relationships have Labels•Relationships are directed, but traversed at equalspeed in both directions•The semantics of the direction is up to theapplication (LIVES WITH is reflexive, LOVES is not)•Nodes have key-value properties•Relationships have key-value properties 30
  58. 58. The Property Graph data model LOVES LIVES WITH LOVES OWNS DRIVES•Nodes•Relationships bet ween Nodes•Relationships have Labels•Relationships are directed, but traversed at equalspeed in both directions•The semantics of the direction is up to theapplication (LIVES WITH is reflexive, LOVES is not)•Nodes have key-value properties•Relationships have key-value properties 30
  59. 59. The Property Graph data model name: “Mary” LOVES name: “James” age: 35 age: 32 LIVES WITH twitter: “@spam” LOVES OWNS DRIVES•Nodes•Relationships bet ween Nodes•Relationships have Labels brand: “Volvo”•Relationships are directed, but traversed at equal model: “V70”speed in both directions•The semantics of the direction is up to theapplication (LIVES WITH is reflexive, LOVES is not)•Nodes have key-value properties•Relationships have key-value properties 30
  60. 60. The Property Graph data model name: “Mary” LOVES name: “James” age: 35 age: 32 LIVES WITH twitter: “@spam” LOVES OWNS item type: “car” DRIVES•Nodes•Relationships bet ween Nodes•Relationships have Labels brand: “Volvo”•Relationships are directed, but traversed at equal model: “V70”speed in both directions•The semantics of the direction is up to theapplication (LIVES WITH is reflexive, LOVES is not)•Nodes have key-value properties•Relationships have key-value properties 30
  61. 61. Graphen sind whiteboard friendly An application domain model outlined on a whiteboard or piece of paper would be translated to an ER-diagram, then normalized to fit a Relational Database. With a Graph Database the model from the whiteboard is implemented directly. Image credits: Tobias Ivarsson 31
  62. 62. Graphen sind whiteboard friendly An application domain model outlined on a whiteboard or piece of paper would be translated to an ER-diagram, then normalized to fit a Relational Database. With a Graph Database the model from the whiteboard is implemented directly. * 1 * * 1 * 1 * 1 * Image credits: Tobias Ivarsson 31
  63. 63. Graphen sind whiteboard friendly An application domain model outlined on a whiteboard or piece of paper would be translated to an ER-diagram, then normalized to fit a Relational Database. With a Graph Database the model from the whiteboard is implemented directly. thobe Joe project blog Wardrobe Strength Hello Joe Modularizing Jython Neo4j performance analysis Image credits: Tobias Ivarsson 31
  64. 64. Anwendungsgebiete๏ Vernetzte Domänen๏ Beziehungen zwischen Entitäten sind ein wichtiger Aspekt๏ Komplexe Fragestellungen๏ Lokale Antworten, durch mehrstufige Traversierung 32
  65. 65. typische Beispiele 33
  66. 66. Routing 34
  67. 67. Soziale Netze 35
  68. 68. Abhängigkeiten, Nachvollziehbarkeit 36
  69. 69. Spatial - GIS 37
  70. 70. ungeeignete Anwendungsgebiete๏ Datenmengen > Pentabyte๏ viele parallele simple lookup Anfragen (KV)๏ massive Setoperationen auf großen, gleich strukturierten Daten (RDBMS)๏ viele große Binärdaten (BLOB) 38
  71. 71. Neo4j is a Graph Database Graph databases FOCUS on the interconnection bet ween entities. 39
  72. 72. IS _ANeo4j Graph Database Graph databases FOCUS on the interconnection bet ween entities. 39
  73. 73. Anforderungen an ein Soziales Netzwerk๏ Mit Freunden interagieren๏ Empfehlungen für neue Freunde๏ Sozialer Kontext einer Person z.B. Wie bin ich mit derjenigen verbunden?๏ Rechte innerhalb des Netzes • z.b. Darf ich auf Daten der Person zugreifen? 40
  74. 74. “Schema” design๏ Personen sind Knoten๏ Freundschaften sind Beziehungen zwischen Personen Knoten๏ Gruppen sind Knoten๏ Gruppenmitgliedschaft sind Beziehungen zwischen von Personen Knoten zu Gruppen Knoten๏ Index für Personen Knoten für Suche nach Namen๏ Index für Gruppen Knoten für Suche nach Namen๏ Traversals für Empfehlungen für Personen die nach Namen gesucht wurden๏ Zugriffsrechte über Traversals von aktueller Person über Gruppen zu Zielperson 41
  75. 75. Beispiel: Ein soziales Netzwerk 42
  76. 76. Ein kleines soziales NetzKnoten haben verschiedene EigenschaftenMatrix Charaktere: Menschen vs. ProgrammeStrukturen und Eigenschaften nach und nach aufbauenFragestellungen: Gegner von Neo
  77. 77. Ein kleines soziales Netz FRIENDSHIP MEMBERSHIP Dozer Nebuchadnezzar crew ily :F am r a lifie Qu Tank Morpheus Agent Brown Agent SmithThomas Anderson Cypher Q ua lifi er :L ov er s Agent taskforce Trinity 44
  78. 78. Neo4j API: Creating a social graphGraphDatabaseService graphDb = new EmbeddedGraphDatabase( GRAPH_STORAGE_LOCATION );Transaction tx = graphDb.beginTx();try { Node mrAnderson = graphDb.createNode(); mrAnderson.setProperty( "name", "Thomas Anderson" ); mrAnderson.setProperty( "age", 29 ); Node morpheus = graphDb.createNode(); morpheus.setProperty( "name", "Morpheus" ); morpheus.setProperty( "rank", "Captain" ); Relationship friendship = mrAnderson.createRelationshipTo( morpheus, SocialGraphTypes.FRIENDSHIP ); tx.success();} finally { tx.finish();} 45
  79. 79. Neo4j SDG API: Creating a social graph @NodeEntity class Person { @Indexed String name; @Min(0) @Max(120) int age; Rank rank; @RelatedTo(elementClass= Person.class, type = "FRIENDSHIP") Set<Person> friends; } Person mrAnderson = new Person("Thomas Anderson"); mrAnderson.setAge( 29 ); Person morpheus = new Person("Morpheus" ); morpheus.setRank( Rank.Captain ); mrAnderson.getFriends().add(morpheus); mrAnderson.relateTo(morpheus, "FRIENDSHIP"); 46
  80. 80. Neo4j Ruby API: Creating a social graph gem install neo4jrequire ”rubygems”require neo4jclass Person include Neo4j::NodeMixin property :name, :age, :rank index :name has_n :friendsendNeo4j::Transaction.run do neo = Person.new :name=>Neo, :age=>29 morpheus = Person.new :name=>Morpheus, :rank=>Captain neo.friends << morpheusendneo.friends.each {|p|...} 47
  81. 81. Neo4j API: Recommend new friendsNode person = ...TraversalDescription friendsOfFriends = Traversal.description() .relationships( SocialGraphTypes.FRIENDSHIP ) .breadthFirst() .evaluator( Evaluators.atDepth( 2 ) );for ( Node recommendation : friendsOfFriends.traverse( person ).nodes() ) { System.out.println( recommendedFriend.getProperty("name") );} 48
  82. 82. Neo4j SDG API: Recommend new friendsclass Person { @GraphTraversalBuilder(elementClass=Person.class, builder = FOFBuilder.class) Iterable<Person> friendOfFriends;}class FOFBuilder implements FieldTraversalDescriptionBuilder { public TraversalDescription build(NodeBacked start ...) { return Traversal.description().breadthFirst() .relationships( SocialGraphTypes.FRIENDSHIP ) .evaluator( Evaluators.atDepth( 2 ) );}}TraversalDescription friendsOfFriends =for ( Person recommendation : person.getFriendsOfFriends()) { System.out.println( recommendation.getName() );} 49
  83. 83. Neo4j API: How do I know this person?Node me = ...Node you = ...PathFinder shortestPathFinder = GraphAlgoFactory.shortestPath( Traversals.expanderForTypes( SocialGraphTypes.FRIENDSHIP, Direction.BOTH ), /* maximum depth: */ 4 );Path shortestPath = shortestPathFinder.findSinglePath(me, you);for ( Node friend : shortestPath.nodes() ) { System.out.println( friend.getProperty( "name" ) );} 50
  84. 84. Gibt es eine Verbindung im sozialen Netz๏ Jeder hat durchschnittlich 50 Freunde Tobias Emil Johan Peter 51
  85. 85. Gibt es eine Verbindung im sozialen Netz๏ Jeder hat durchschnittlich 50 Freunde Tobias Emil Johan Peter Database # persons query time Relational database 1 000 2 000 ms Neo4j Graph Database 1 000 2 ms Neo4j Graph Database 1 000 000 2 ms 51
  86. 86. Gibt es eine Verbindung im sozialen Netz๏ Jeder hat durchschnittlich 50 Freunde Tobias Emil Johan Peter Database # persons query time Relational database 1 000 2 000 ms Neo4j Graph Database 1 000 2 ms Neo4j Graph Database 1 000 000 2 ms 51
  87. 87. Gibt es eine Verbindung im sozialen Netz๏ Jeder hat durchschnittlich 50 Freunde Tobias Emil Johan Peter Database # persons query time Relational database 1 000 2 000 ms Neo4j Graph Database 1 000 2 ms Neo4j Graph Database 1 000 000 2 ms 51
  88. 88. Gibt es eine Verbindung im sozialen Netz๏ Jeder hat durchschnittlich 50 Freunde Tobias Emil Johan Peter Database # persons query time Relational database 1 000 2 000 ms Neo4j Graph Database 1 000 2 ms Neo4j Graph Database 1 000 000 2 ms 51
  89. 89. Visualisierung 52
  90. 90. Visualisierung Energie-Markt-Simulation •Alfredas Chmieliauskas (Doktorant) •TU Delft •Spring Data Graph •Tinkerpop Gremlin •Visualisierung GraphViz 53
  91. 91. Mehr über Neo4j๏ Neo4j läuft produktiv • In 24/7 Betrieb seit 2003๏ Neo4j wird aktiv entwickelt • Neo Technology hatte mehrere VC Finanzierungs - Runden๏ Neo4j erbringt hochperformante Graphen-Operationen • 32 Mrd Knoten/Relationships & 64 Mrd Properties • traversiert 1’000’000+ Relationships / Sekunde auf Standardhardware 54
  92. 92. Features๏ ACID (JTA/JTS, XA, 2PC, Tx recovery, deadlock detection, MVCC)๏ Treiber (nativ, REST) für viele Programmiersprachen๏ Property Graph Model๏ hochperformante Traversals๏ Data Size / Short Strings๏ eigenes binäres Storage-Format (NIO / memory mapping)๏ Integration externer Transaction Manager๏ verschiedene Indexing Provider (Lucene, Redis, Berkeley DB) 55
  93. 93. Bindings REST:// 56
  94. 94. Domänen Frameworks Iʼm excited about Spring Data Graph. - Rod Johnson๏ Zusammenarbeit mit vmware / SpringSource • Annotationen für Domänen Objekte • transparentes Mapping (AspectJ) • Neo4jTemplate • Neo4j-Server Integration • Tx-Integration๏ http://www.springsource.org/spring-data/neo4j๏ Tutorial Beispiel App - http://cineasts.net๏ Guide-Book http://bit.ly/das-book 57
  95. 95. Domänen Frameworks๏ Neo4jrb 1.0 - Komplett-Integration (Ruby, Rails)๏ Grails - Plugin๏ Django - Integration๏ Qi4j (www.qi4j.org) • Framework für DDD in reinem Java5 • Entities / Associations / Properties • Neo4j ist ein “EntityStore”๏ Jo4neo (http://code.google.com/p/jo4neo) • Annotations • Neo4j Persistence Pattern in Domänen Objekte 58
  96. 96. Anwender๏ StudiVZ - soziale Netze๏ ThingWorx - Network of Things๏ amanziTel - TelCo Infrastruktur๏ Bio4j - bioinformatics DB๏ structr - open source CMS๏ evident Software - device management๏ und viele mehr๏ einige Großfirmen, die (noch) nicht genannt werden wollen 59
  97. 97. Neo4j ist Open Source - Produkte & Lizenzen๏ Community Edition • alle Features, Embedded und Server • GPL๏ Advanced • + Monitoring & Support • AGPL oder Commercial๏ Enterprise • HA • Online Backup • AGPL oder Commercial 60
  98. 98. Aktive Community๏ Open Source & Engagement ist Grundlage für Erfolg๏ durch GPL noch einmal verstärkt๏ sehr aktive Mailingliste (700 / Monat)๏ GitHub • http://github.com/neo4j • http://github.com/neo4j-examples๏ Wiki • http://wiki.neo4j.org๏ Alle Bindings / Driver von der Community entwickelt • http://neo4j.org/community/languages/ 61
  99. 99. Social movie database tutorial - cineasts.net Runs on top of the Spring Framework, Spring Data Graph and Neo4j Also available on VMware‘s PaaS offering CloudFoundry http://cineasts.cloudfoundry.com 62
  100. 100. Die Zukunft๏ Neo4j-Hosting • Heroku • CloudFoundry • DotCloud • Azure๏ Query Language from n=NODE(name,“Emil“), n -[r,KNOWS,..]-> f where f.name = „Michael“ select n.name, f.name, r.length๏ bessere Remote-Protokolle๏ mehr Index Provider (Redis, BDB) 63
  101. 101. @Neo4j OR #neo4j http://neotechnology.com

×