GDM 2011 - Neo4j and real world apps.

9,240 views
9,019 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,240
On SlideShare
0
From Embeds
0
Number of Embeds
2,316
Actions
Shares
0
Downloads
167
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

×