#neo4jPeter Neubauer   @peterneubauer                 peter@neotechnology.comNeo Technology
Neo4j – what is it?  Java based, embeddable, data-local  GPL/AGPL  ACID, JTA compliant  Indexing framework  24/7 since 200...
Building a node space (core API)GraphDatabaseService graphDb = ... // Get factory// Create Thomas Neo AndersonNode mrAnder...
Building a node spaceGraphDatabaseService graphDb = ... // Get factoryTransaction tx = graphdb.beginTx();// Create Thomas ...
Code (2): Traversing a node space// Instantiate a traverser that returns Mr Andersons friendsTraverser friendsTraverser = ...
Rubygem install neo4jrequire ”rubygems”require neo4jclass Person  include Neo4j::NodeMixin  property :name, :age, :occupat...
Neo4j 1.3 news GPL Community Edition 128 Billion primitives address space More graph algos Short string → long Web visuali...
Web admin
Neo4j High Availability
Neo4j – what do I do with it?  Network Management  Master Data Management  Social  Finance  Spatial  Other    Bioinformati...
Call Data Records (CDR)  Forming a graph  Location based  Possible uses:    Find clusters (better plans)    Build social c...
Financial data – fraud detection                                                                                name = ......
Routing
Social graphs Recommendations Location based services Influencers Shortest path
Recommendations and big graphs Global heuristics   Page rank Local recommendations    Shortest paths    Hammock functions ...
Impact Analytics, CMDB, NetworkManagement, Provisioning
Impact Analytics, CMDB, NetworkManagement, Provisioning
Master Data Management
Multiple indexes - GIS
Neo4j dynamic layers                         Geometry                     Layer1                         Encoder          ...
OpenStreetMap
Network Topology analysis Analytics of network coverage and frequencies   Cell towers   Drive data   Infrastructure Analyt...
Cell network analysis
Cell network analysis
Simulations (Energy market) agents, markets, power plants, bids, substances, technologies
Relevant research areas Distributed traversals   Parallel (BSP) and Local (Neo4j)   Crossing shards   Multithreaded Graph ...
Questions?             Image credit: lost again! Sorry :(
http://neotechnology.com
Upcoming SlideShare
Loading in …5
×

GDM 2011 - Neo4j and real world apps.

9,358 views

Published on

There is a lot of research happening in graph databases these days. This is a

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

No Downloads
Views
Total views
9,358
On SlideShare
0
From Embeds
0
Number of Embeds
2,315
Actions
Shares
0
Downloads
188
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide

GDM 2011 - Neo4j and real world apps.

  1. 1. #neo4jPeter Neubauer @peterneubauer peter@neotechnology.comNeo Technology
  2. 2. Neo4j – what is it? Java based, embeddable, data-local GPL/AGPL ACID, JTA compliant Indexing framework 24/7 since 2003 High Availability clustering support Great community Tinkerpop pipes processing stack
  3. 3. Building a node space (core API)GraphDatabaseService graphDb = ... // Get factory// Create Thomas Neo AndersonNode mrAnderson = graphDb.createNode();mrAnderson.setProperty( "name", "Thomas Anderson" );mrAnderson.setProperty( "age", 29 );// Create MorpheusNode morpheus = graphDb.createNode();morpheus.setProperty( "name", "Morpheus" );morpheus.setProperty( "rank", "Captain" );morpheus.setProperty( "occupation", "Total bad ass" );// Create a relationship representing that they know each othermrAnderson.createRelationshipTo( morpheus, RelTypes.KNOWS );// ...create Trinity, Cypher, Agent Smith, Architect similarly
  4. 4. Building a node spaceGraphDatabaseService graphDb = ... // Get factoryTransaction tx = graphdb.beginTx();// Create Thomas Neo AndersonNode mrAnderson = graphDb.createNode();mrAnderson.setProperty( "name", "Thomas Anderson" );mrAnderson.setProperty( "age", 29 );// Create MorpheusNode morpheus = graphDb.createNode();morpheus.setProperty( "name", "Morpheus" );morpheus.setProperty( "rank", "Captain" );morpheus.setProperty( "occupation", "Total bad ass" );// Create a relationship representing that they know each othermrAnderson.createRelationshipTo( morpheus, RelTypes.KNOWS );// ...create Trinity, Cypher, Agent Smith, Architect similarlytx.commit();
  5. 5. Code (2): Traversing a node space// Instantiate a traverser that returns Mr Andersons friendsTraverser friendsTraverser = mrAnderson.traverse( Traverser.Order.BREADTH_FIRST, StopEvaluator.END_OF_GRAPH, ReturnableEvaluator.ALL_BUT_START_NODE, RelTypes.KNOWS, Direction.OUTGOING );// Traverse the node space and print out the resultSystem.out.println( "Mr Andersons friends:" );for ( Node friend : friendsTraverser ){ System.out.printf( "At depth %d => %s%n", friendsTraverser.currentPosition().getDepth(), friend.getProperty( "name" ) );}
  6. 6. Rubygem install neo4jrequire ”rubygems”require neo4jclass Person include Neo4j::NodeMixin property :name, :age, :occupation index :name has_n :friendsendNeo4j::Transactoin.run do neo = Person.new :name=>Neo, :age=>29 morpheus = Person.new :name=>Morpheus, :occupation=>badass neo.friends << morpheusendneo.friends.each {|p|...}
  7. 7. Neo4j 1.3 news GPL Community Edition 128 Billion primitives address space More graph algos Short string → long Web visualization Gremlin 0.9 built-in HA improvements
  8. 8. Web admin
  9. 9. Neo4j High Availability
  10. 10. Neo4j – what do I do with it? Network Management Master Data Management Social Finance Spatial Other Bioinformatics RDF Routing
  11. 11. Call Data Records (CDR) Forming a graph Location based Possible uses: Find clusters (better plans) Build social connections Find influencers
  12. 12. Financial data – fraud detection name = ... name = “The Tavern” lat = 1295238237 long = 234823492 42name = “Mr Godfather” AWkarma = veeeery-low HDRcash = 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-lil IT TRAN title = “ATM @ Wall St” id = 230918484233 amount = $1000 cash_left = 384204 2 name = ...
  13. 13. Routing
  14. 14. Social graphs Recommendations Location based services Influencers Shortest path
  15. 15. Recommendations and big graphs Global heuristics Page rank Local recommendations Shortest paths Hammock functions Random walks Dijkstra, A*, Shooting star etc
  16. 16. Impact Analytics, CMDB, NetworkManagement, Provisioning
  17. 17. Impact Analytics, CMDB, NetworkManagement, Provisioning
  18. 18. Master Data Management
  19. 19. Multiple indexes - GIS
  20. 20. Neo4j dynamic layers Geometry Layer1 Encoder Dynamic Query Layer2 Dynamic Styles Layer3 Dynamic Meta-InfConnected domain data Neo4j Spatial GIS and Spatial stacks
  21. 21. OpenStreetMap
  22. 22. Network Topology analysis Analytics of network coverage and frequencies Cell towers Drive data Infrastructure Analytics Spatial signal strength Antenna placement and azimuth Frequency planning Network differences over time Reporting and charting
  23. 23. Cell network analysis
  24. 24. Cell network analysis
  25. 25. Simulations (Energy market) agents, markets, power plants, bids, substances, technologies
  26. 26. Relevant research areas Distributed traversals Parallel (BSP) and Local (Neo4j) Crossing shards Multithreaded Graph sharding Upfront sharding utils Runtime sharding algos Partial sharding/replication Parallel garbage collection under high load Big graph algos and heuristics
  27. 27. Questions? Image credit: lost again! Sorry :(
  28. 28. http://neotechnology.com

×