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
           And some graph problems



                             #neo4j
Peter Neubauer               @peterneubaue...
Any sufficiently advanced technology is
    indistinguishable from magic.
            Arthur C. Clarke




            @ky...
First, a recap: NOSQL data models
            Key-value stores
Data size




                          Column Family


   ...
What makes a good DB?


       Separate Logic and Data
       Support Ad-Hoc queries
       Be persistent
       Scale goo...
The property graph model
 Core abstractions:
                                               name = “Emil”

   Nodes
      ...
Social data (customer: brand-name social network)
                                                                        ...
Just a social graph?
Spatial data (customer: large telecom company)
                                                                         na...
Social? Spatial? … Social AND spatial!
Social AND spatial data (customer: LBS)
                                                                    name = “Peter”...
Financial data (customer: international bank)
                                                                            ...
Use Cases
 REST in Neo4j
 The graph as an OODB – Roo, Grails
 Jruby, Jo4neo
 Deep graph algos – Routing with A*
 Multiple ...
REST in Neo4j
  Build on self describing JSON
  Indexing
  Querying
  Bindings to PHP, C#, JS
  OpenGraph API
  Jruby, Sca...
The Graph for objects
 Keep data clean!
 Annotation based
    Grails
    Jo4neo
    Roo
    JPA
 Mixin based
   Django
   ...
The Graph as an OODB
Routing with Neo4j and A*
Routing with Neo4j and A*
Multiple indexes - GIS
 QuadTree (2D)
 Hierarchy
 Time (1D)
 On-demand index
Multiple indexes - GIS
Multiple indexes - GIS
Recommendation - Gremlin
 gremlin.tinkerpop.com
 XPath based “Perl for Graphs”
 Property Graph Model
    Neo4j, RDF-SAIL, ...
Recommendation - Gremlin
Recommendation - Gremlin
Other use cases
 Activity streams
 Process automation
   Life-filtering of event streams
   Web-of-Things data f ows
     ...
Why graph databases?
                                                       “For anything with multiple
                  ...
How ego are you? (aka other impls?)
  Franz’ Al l e g roGrap h      (http://agraph.franz.com)

     Proprietary, Lisp, RDF...
Why Neo4j?
 Most widely deployed graph db in the world
   Robust: 24/7 production since 2003
   Mature: lots of production...
Th e N e o4 j te a m
    i s h i ri n g !
Do you see the Matrix?
     Apply now.
Questions?




             Image credit: lost again! Sorry :(
http://neotechnology.com
Upcoming SlideShare
Loading in …5
×

Neo4j - 5 cool graph examples

81,136 views

Published on

Published in: Technology

Neo4j - 5 cool graph examples

  1. 1. Neo4j And some graph problems #neo4j Peter Neubauer @peterneubauer COO, Neo Technology peter@neotechnology.com
  2. 2. Any sufficiently advanced technology is indistinguishable from magic. Arthur C. Clarke @kymerawand
  3. 3. First, a recap: NOSQL data models Key-value stores Data size Column Family Document databases Graph databases We are here Data complexity
  4. 4. What makes a good DB? Separate Logic and Data Support Ad-Hoc queries Be persistent Scale good enough
  5. 5. The property graph model Core abstractions: name = “Emil” Nodes age = 29 sex = “yes” Relationships between nodes Properties on both 1 2 Traversal framework type = KNOWS High performance time = 4 years 3 queries on connected data sets type = car vendor = “SAAB” Other bindings model = “95 Aero” Langs, REST, Gremlin, RDF
  6. 6. Social data (customer: brand-name social network) name = “Marcy Runkle” name = “Hank” last_name = “Moody” name = “Mike” age = 42 42 age = 29 S W NO disclosure = public K KNOWS KNOWS KNO 1 7 3 W S KN 13 S OW name = “Charlie” KNOW S last_name = “Runkle” name = “Dani” last_name = “California” age = 3 days age = 27 2 name = “Karen”
  7. 7. Just a social graph?
  8. 8. Spatial data (customer: large telecom company) name = ... name = “The Tavern” lat = 1295238237 name = “Omni Hotel” long = 234823492 42 lat = 3492848 long = 283823423 length = 7 miles AD RO ROAD ROAD ROO 1 7 3 OAD RO 13 AD name = ... ROAD lat, long = ... name = “Swedland” lat = 23410349 length = 3 miles long = 2342348852 2 name = ...
  9. 9. Social? Spatial? … Social AND spatial!
  10. 10. Social AND spatial data (customer: LBS) name = “Peter” name = “The Tavern” lat = 1295238237 name = “Omni Hotel” long = 234823492 42 lat = 3492848 S W NO long = 283823423 weight = 10 K ROAD LIKES SIBL 1 7 3 IN G RO 13 AD name = “Emil” ROAD beer_qual = expert name = “Maria” age = 30 length = 3 miles beer_qual = non-existant 2 name = ...
  11. 11. Financial data (customer: international bank) name = ... name = “The Tavern” lat = 1295238237 long = 234823492 42 name = “Mr Godfather” AW karma = veeeery-low HDR cash = more-than-you amount = $1000 IT W OWNS TRANSFER WIT 1 7 3 HDR AW 13 S FE R DE name = “Emil” P OS cash = always-too-li'l IT TRAN title = “ATM @ Wall St” id = 230918484233 amount = $1000 cash_left = 384204 2 name = ...
  12. 12. Use Cases REST in Neo4j The graph as an OODB – Roo, Grails Jruby, Jo4neo Deep graph algos – Routing with A* Multiple indexes in the graph – GIS Recommendation systems – Gremlin and LinkedData
  13. 13. REST in Neo4j Build on self describing JSON Indexing Querying Bindings to PHP, C#, JS OpenGraph API Jruby, Scala
  14. 14. The Graph for objects Keep data clean! Annotation based Grails Jo4neo Roo JPA Mixin based Django JRuby C# (REST) PHP (REST)
  15. 15. The Graph as an OODB
  16. 16. Routing with Neo4j and A*
  17. 17. Routing with Neo4j and A*
  18. 18. Multiple indexes - GIS QuadTree (2D) Hierarchy Time (1D) On-demand index
  19. 19. Multiple indexes - GIS
  20. 20. Multiple indexes - GIS
  21. 21. Recommendation - Gremlin gremlin.tinkerpop.com XPath based “Perl for Graphs” Property Graph Model Neo4j, RDF-SAIL, Tinkergraph, MongoDB, FS LinkedData SAIL
  22. 22. Recommendation - Gremlin
  23. 23. Recommendation - Gremlin
  24. 24. Other use cases Activity streams Process automation Life-filtering of event streams Web-of-Things data f ows l Object oriented reporting Jasper Reports ReportAnywhere Scripting
  25. 25. Why graph databases? “For anything with multiple relationships, multiple connections N e o4 j ab s ol u t e l y R OCK S!” http://bit.ly/dys4nx A web where the default is social → an explosion of graph-y data “Just 3 years ago, the data sets our product handled were very simple. But the past 9-12 months have seen an e x p l os i on of the number of relationships between things.” Manager of an enterprise product for the Fortune 5000 Werner Vogels CTO, Amazon
  26. 26. How ego are you? (aka other impls?) Franz’ Al l e g roGrap h (http://agraph.franz.com) Proprietary, Lisp, RDF-oriented but real graphdb Sones g rap h DB (http://sones.com) Proprietary, .NET, in beta Twitter's Fl oc k DB (http://github.com/twitter/flockdb) Twitter's (graph) database for large and shallow graphs Google P re g e l (http://bit.ly/dP9IP) We are oh-so-secret Objectivity's I n fi n i te Gra p h (http://infinitegraph.com) New, closed OODB with Graph Layer on top
  27. 27. Why Neo4j? Most widely deployed graph db in the world Robust: 24/7 production since 2003 Mature: lots of production deployments Community: ecosystem of tools, bindings, frameworks Available NOW under AGPLv3 / commercial license AGPLv3: “if you’re open source, we’re open source” If you have proprietary software? Must buy a commercial license But the f rst one is free! For ALL use-cases. i Download http://neo4j.org Feedback http://lists.neo4j.org
  28. 28. Th e N e o4 j te a m i s h i ri n g ! Do you see the Matrix? Apply now.
  29. 29. Questions? Image credit: lost again! Sorry :(
  30. 30. http://neotechnology.com

×