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

57,960

Published on

Published in: Technology
1 Comment
56 Likes
Statistics
Notes
No Downloads
Views
Total Views
57,960
On Slideshare
0
From Embeds
0
Number of Embeds
12
Actions
Shares
0
Downloads
1,064
Comments
1
Likes
56
Embeds 0
No embeds

No notes for slide

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
  1. A particular slide catching your eye?

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

×