0
Gute Beziehungen          Graphendatenbanken             für Jedermann                          twitter: @mesirii / #neo4j...
Agenda JAX 2011                        Matrix                  PRESENTED_AT                                             MO...
Relationales Modell, allseits bekannt                                                                              We all ...
Relationales Modell, allseits bekannt                                                              We all know the        ...
Relationales Modell, allseits bekannt                                                                              We all ...
Attendees                                                                            The relational model hasusername     ...
Attendees      username           fullname        registration    speaker       payment     mtiberg      Michael Tiberg   ...
Attendees                                                                     Sessions      username           fullname   ...
After a while, modelingcomplex relationshipsleads to complicatedschemas                          5
Netze sind überall                     6
Willkommen in der Matrix                             - die Welt - ein Netz      Google Bildersuche: „graph OR network“    ...
Willkommen in der Matrix                                          - die Welt - ein Netz ๏ Zusammenhänge in    • Politik,Wi...
Gute Beziehungen๏ die Welt besteht aus Dingen und deren Beziehungen๏ Beziehungen sind oft genauso wichtig wie die Dinge๏ N...
Fragen und Antworten๏ Komplexe Fragen๏ Antworten liegen zwischen den Zeilen (Dingen)๏ Lokalität der Informationen๏ Globale...
Kategorien ?๏ Kategorien == Klassen, Bäume ?๏ Was ist wenn mehr als eine Kategorie passt?๏ Tags๏ Kategorie über Beziehunge...
3 aktuelle Beispiele                       12
Fowler & Christakis „Connected“                                  13
New York Times R&D „Cascade“                               14
Deb Roy - MIT & Bluefin Labs                    „Birth of a Word“ TED Talk                    Researches Social Reactions  ...
Trends im Internet                     16
Informationswachstum Datenmenge Vernetzung       Geräteaktive NutzerArchitekturen                       17
Informationswachstum Datenmenge Vernetzung       Geräteaktive NutzerArchitekturen           1990                       17
Informationswachstum Datenmenge Vernetzung       Geräteaktive NutzerArchitekturen      Application            1990        ...
Informationswachstum Datenmenge Vernetzung       Geräteaktive NutzerArchitekturen      Application        Text            ...
Informationswachstum Datenmenge Vernetzung       Geräteaktive NutzerArchitekturen      Application        Text        Hype...
Informationswachstum Datenmenge Vernetzung       Geräteaktive NutzerArchitekturen      Application        Text         Hyp...
Informationswachstum Datenmenge Vernetzung       Geräteaktive NutzerArchitekturen      Application                     Hyp...
Informationswachstum Datenmenge Vernetzung       Geräteaktive NutzerArchitekturen      Application                        ...
Informationswachstum Datenmenge Vernetzung       Geräteaktive NutzerArchitekturen                          Applications   ...
Informationswachstum Datenmenge Vernetzung       Geräteaktive NutzerArchitekturen                          Applications   ...
Informationswachstum Datenmenge Vernetzung       Geräteaktive NutzerArchitekturen                          Applications   ...
Informationswachstum Datenmenge Vernetzung       Geräteaktive NutzerArchitekturen                          Applications   ...
Informationswachstum Datenmenge Vernetzung       Geräteaktive NutzerArchitekturen                          Applications   ...
Informationswachstum Datenmenge Vernetzung       Geräteaktive NutzerArchitekturen                          Applications   ...
Informationswachstum Datenmenge Vernetzung       Geräteaktive NutzerArchitekturen                          Applications   ...
Informationswachstum Datenmenge Vernetzung       Geräteaktive NutzerArchitekturen                          Applications   ...
Informationswachstum Datenmenge                                               Services / Applications Vernetzung       Ger...
Informationswachstum Datenmenge                                               Services / Applications Vernetzung       Ger...
Informationswachstum Datenmenge                                               Services / Applications Vernetzung       Ger...
Informationswachstum Datenmenge                                               Services / Applications        Giant Global ...
Informationswachstum Datenmenge                                               Services / Applications        Giant Global ...
Herausforderung - CAP๏ CAP Theorem (Brewer 2000)   • Consistency   • Availability   • Partition Tolerance                 ...
NOSQL heisstNot Only SQL  Polyglot Persistence                         19
Vier NOSQL Kategorien               NOSQL                        20
Kategorie 1: Key-Value Datenbanken๏ Herkunft:   • “Dynamo: Amazon’s Highly Available Key-Value Store” (2007)๏ Datenmodell:...
Kategorie II: Column (BigTable) Datenbanken๏ Herkunft:   • “Bigtable:(2006)       Data”                 A Distributed Stor...
Kategorie III: Dokumentendatenbanken๏ Herkunft:   • Lotus Notes๏ Datenmodell:   • Sammlung von Dokumenten   • Ein Dokument...
Kategorie IV: Graphendatenbanken๏ Herkunft:   • Graphentheory, Euler๏ Datenmodell:   • Knoten mit Attributen   • Gerichtet...
Scaling to size vs. Scaling to complexity    Size       Key/Value stores                          Bigtable clones         ...
Komplexes Problem? Passende Tools!                           Image credits: Unknown :’(   26
Polyglot Persistence๏ Ein System, mehrere Datenbanken     - das beste Tool für das Problem nutzen๏ Beispiele:   • RDBMS fü...
Graphendatenbanken                28
Overview Graph Databases๏Neo4j                 ๏InfoGrid๏Sones GraphDB         ๏DEX๏Infinite Graph         ๏VertexDB    (Ob...
The Property Graph data model•Nodes•Relationships bet ween Nodes•Relationships have Labels•Relationships are directed, but...
The Property Graph data model•Nodes•Relationships bet ween Nodes•Relationships have Labels•Relationships are directed, but...
The Property Graph data model•Nodes•Relationships bet ween Nodes•Relationships have Labels•Relationships are directed, but...
The Property Graph data model                                                      LIVES WITH                             ...
The Property Graph data model                                                                 LOVES                       ...
The Property Graph data model                                                                                name: “Mary” ...
The Property Graph data model                                                                                name: “Mary” ...
Graphen sind whiteboard friendly                An application domain model                                               ...
Graphen sind whiteboard friendly                       An application domain model                                        ...
Graphen sind whiteboard friendly                      An application domain model                                         ...
Anwendungsgebiete๏ Vernetzte Domänen๏ Beziehungen zwischen Entitäten sind ein wichtiger Aspekt๏ Komplexe Fragestellungen๏ ...
typische Beispiele                     33
Routing          34
Soziale Netze                35
Abhängigkeiten, Nachvollziehbarkeit                                      36
Spatial - GIS                37
ungeeignete Anwendungsgebiete๏ Datenmengen > Pentabyte๏ viele parallele simple lookup Anfragen (KV)๏ massive Setoperatione...
Neo4j is a Graph Database   Graph databases FOCUS   on the interconnection   bet ween entities.                           ...
IS _ANeo4j                      Graph Database  Graph databases FOCUS  on the interconnection  bet ween entities.         ...
Anforderungen an ein Soziales Netzwerk๏ Mit Freunden interagieren๏ Empfehlungen für neue Freunde๏ Sozialer Kontext einer P...
“Schema” design๏ Personen sind Knoten๏ Freundschaften sind Beziehungen zwischen Personen Knoten๏ Gruppen sind Knoten๏ Grup...
Beispiel: Ein soziales Netzwerk                                  42
Ein kleines soziales NetzKnoten haben verschiedene EigenschaftenMatrix Charaktere: Menschen vs. ProgrammeStrukturen und Ei...
Ein kleines soziales Netz       FRIENDSHIP       MEMBERSHIP                                                               ...
Neo4j API: Creating a social graphGraphDatabaseService graphDb = new EmbeddedGraphDatabase(  GRAPH_STORAGE_LOCATION );Tran...
Neo4j SDG API: Creating a social graph  @NodeEntity class Person {   @Indexed String name;   @Min(0) @Max(120) int age;   ...
Neo4j Ruby API: Creating a social graph  gem install neo4jrequire ”rubygems”require neo4jclass Person  include Neo4j::Node...
Neo4j API: Recommend new friendsNode person = ...TraversalDescription friendsOfFriends = Traversal.description()   .relati...
Neo4j SDG API: Recommend new friendsclass Person {  @GraphTraversalBuilder(elementClass=Person.class, builder =    FOFBuil...
Neo4j API: How do I know this person?Node me = ...Node you = ...PathFinder shortestPathFinder = GraphAlgoFactory.shortestP...
Gibt es eine Verbindung im sozialen Netz๏ Jeder hat durchschnittlich 50 Freunde             Tobias                        ...
Gibt es eine Verbindung im sozialen Netz๏ Jeder hat durchschnittlich 50 Freunde             Tobias                        ...
Gibt es eine Verbindung im sozialen Netz๏ Jeder hat durchschnittlich 50 Freunde             Tobias                        ...
Gibt es eine Verbindung im sozialen Netz๏ Jeder hat durchschnittlich 50 Freunde             Tobias                        ...
Gibt es eine Verbindung im sozialen Netz๏ Jeder hat durchschnittlich 50 Freunde             Tobias                        ...
Visualisierung                 52
Visualisierung                 Energie-Markt-Simulation                 •Alfredas Chmieliauskas (Doktorant)               ...
Mehr über Neo4j๏ Neo4j läuft produktiv   • In 24/7 Betrieb seit 2003๏ Neo4j wird aktiv entwickelt   • Neo Technology hatte...
Features๏ ACID (JTA/JTS, XA, 2PC, Tx recovery, deadlock detection, MVCC)๏ Treiber (nativ, REST) für viele Programmiersprac...
Bindings           REST://                     56
Domänen Frameworks                                       Iʼm excited about Spring Data Graph.                             ...
Domänen Frameworks๏ Neo4jrb 1.0 - Komplett-Integration (Ruby, Rails)๏ Grails - Plugin๏ Django - Integration๏ Qi4j (www.qi4...
Anwender๏ StudiVZ - soziale Netze๏ ThingWorx - Network of Things๏ amanziTel - TelCo Infrastruktur๏ Bio4j - bioinformatics ...
Neo4j ist Open Source -                                    Produkte & Lizenzen๏ Community Edition   • alle Features, Embed...
Aktive Community๏ Open Source & Engagement ist Grundlage für Erfolg๏ durch GPL noch einmal verstärkt๏ sehr aktive Mailingl...
Social movie database tutorial - cineasts.net  Runs on top of the Spring Framework, Spring Data Graph and Neo4j      Also ...
Die Zukunft๏ Neo4j-Hosting   • Heroku   • CloudFoundry   • DotCloud   • Azure๏ Query Language    from n=NODE(name,“Emil“),...
@Neo4j OR #neo4j   http://neotechnology.com
Upcoming SlideShare
Loading in...5
×

Neo4j Graph Database Presentation (German)

10,041

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
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
10,041
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
102
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • Show of Hands NOSQL , Graphendatenbanken\n
  • \n
  • Ein Blick zurück\n
  • Ein Blick zurück\n
  • TODO: pros and cons with RDBMS\n
  • TODO: explain how it get out of hand. scaling + complexity\n... what if we could rethink the model ...\n
  • TODO: explain how it get out of hand. scaling + complexity\n... what if we could rethink the model ...\n
  • TODO: explain how it get out of hand. scaling + complexity\n... what if we could rethink the model ...\n
  • TODO: explain how it get out of hand. scaling + complexity\n... what if we could rethink the model ...\n
  • TODO: explain how it get out of hand. scaling + complexity\n... what if we could rethink the model ...\n
  • TODO: explain how it get out of hand. scaling + complexity\n... what if we could rethink the model ...\n
  • TODO: explain how it get out of hand. scaling + complexity\n... what if we could rethink the model ...\n
  • TODO: explain how it get out of hand. scaling + complexity\n... what if we could rethink the model ...\n
  • \n
  • social networks (our actions in them work life health)\nthe internet\nits hardware\nits software\nour interactions\nour body\nnature environment\npolitical economic networks\nzusammenhaenge\nhistory\nscience\nzeit grünen abgeordneter handy\n
  • social networks (our actions in them work life health)\nthe internet\nits hardware\nits software\nour interactions\nour body\nnature environment\npolitical economic networks\nzusammenhaenge\nhistory\nscience\nzeit grünen abgeordneter handy\n
  • messy world\nfast changing world\nbez um graph sind teil der daten\nim rdbms teil des starren schemas\nkomplexe zusammenhaenge\nkomplexe fragen\nimmer neue kategorien - rels\ndynamisch - traversals\ntags attribute\ntemporale attribute\ndyn sprachen besser geeignet \n
  • messy world\nfast changing world\nbez um graph sind teil der daten\nim rdbms teil des starren schemas\nkomplexe zusammenhaenge\nkomplexe fragen\nimmer neue kategorien - rels\ndynamisch - traversals\ntags attribute\ntemporale attribute\ndyn sprachen besser geeignet \n
  • messy world\nfast changing world\nbez um graph sind teil der daten\nim rdbms teil des starren schemas\nkomplexe zusammenhaenge\nkomplexe fragen\nimmer neue kategorien - rels\ndynamisch - traversals\ntags attribute\ntemporale attribute\ndyn sprachen besser geeignet \n
  • messy world\nfast changing world\nbez um graph sind teil der daten\nim rdbms teil des starren schemas\nkomplexe zusammenhaenge\nkomplexe fragen\nimmer neue kategorien - rels\ndynamisch - traversals\ntags attribute\ntemporale attribute\ndyn sprachen besser geeignet \n
  • \n
  • \n
  • \n
  • messy world\nfast changing world\nbez um graph sind teil der daten\nim rdbms teil des starren schemas\nkomplexe zusammenhaenge\nkomplexe fragen\nimmer neue kategorien - rels\ndynamisch - traversals\ntags attribute\ntemporale attribute\ndyn sprachen besser geeignet \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • BASE (Brewer 1997)\nBasically Available\nSoft State\nEventual Consistent\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Most of the emerging database technologies are concerned with scaling to huge amounts of data and massive load.\nThey do so by making data opaque and distribute elements based on key.\n
  • Use the right shape of database for the right kind of object\n
  • \n
  • \n
  • \n
  • nodes\nrelationships between nodes\nrelationships have types and directions\nrelationships are traversed equally fast in each direction, direction may be significant or not\nnodes have properties\nrelationships have properties\n
  • nodes\nrelationships between nodes\nrelationships have types and directions\nrelationships are traversed equally fast in each direction, direction may be significant or not\nnodes have properties\nrelationships have properties\n
  • nodes\nrelationships between nodes\nrelationships have types and directions\nrelationships are traversed equally fast in each direction, direction may be significant or not\nnodes have properties\nrelationships have properties\n
  • nodes\nrelationships between nodes\nrelationships have types and directions\nrelationships are traversed equally fast in each direction, direction may be significant or not\nnodes have properties\nrelationships have properties\n
  • nodes\nrelationships between nodes\nrelationships have types and directions\nrelationships are traversed equally fast in each direction, direction may be significant or not\nnodes have properties\nrelationships have properties\n
  • nodes\nrelationships between nodes\nrelationships have types and directions\nrelationships are traversed equally fast in each direction, direction may be significant or not\nnodes have properties\nrelationships have properties\n
  • nodes\nrelationships between nodes\nrelationships have types and directions\nrelationships are traversed equally fast in each direction, direction may be significant or not\nnodes have properties\nrelationships have properties\n
  • nodes\nrelationships between nodes\nrelationships have types and directions\nrelationships are traversed equally fast in each direction, direction may be significant or not\nnodes have properties\nrelationships have properties\n
  • nodes\nrelationships between nodes\nrelationships have types and directions\nrelationships are traversed equally fast in each direction, direction may be significant or not\nnodes have properties\nrelationships have properties\n
  • nodes\nrelationships between nodes\nrelationships have types and directions\nrelationships are traversed equally fast in each direction, direction may be significant or not\nnodes have properties\nrelationships have properties\n
  • nodes\nrelationships between nodes\nrelationships have types and directions\nrelationships are traversed equally fast in each direction, direction may be significant or not\nnodes have properties\nrelationships have properties\n
  • nodes\nrelationships between nodes\nrelationships have types and directions\nrelationships are traversed equally fast in each direction, direction may be significant or not\nnodes have properties\nrelationships have properties\n
  • nodes\nrelationships between nodes\nrelationships have types and directions\nrelationships are traversed equally fast in each direction, direction may be significant or not\nnodes have properties\nrelationships have properties\n
  • nodes\nrelationships between nodes\nrelationships have types and directions\nrelationships are traversed equally fast in each direction, direction may be significant or not\nnodes have properties\nrelationships have properties\n
  • nodes\nrelationships between nodes\nrelationships have types and directions\nrelationships are traversed equally fast in each direction, direction may be significant or not\nnodes have properties\nrelationships have properties\n
  • nodes\nrelationships between nodes\nrelationships have types and directions\nrelationships are traversed equally fast in each direction, direction may be significant or not\nnodes have properties\nrelationships have properties\n
  • nodes\nrelationships between nodes\nrelationships have types and directions\nrelationships are traversed equally fast in each direction, direction may be significant or not\nnodes have properties\nrelationships have properties\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Disk-based\nNative graph storage engine with custom binary on-disk format\nTransactional\nJTA/JTS, XA, 2PC, Tx recovery, deadlock detection, MVCC, etc\n\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Transcript of "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
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×