Date post: | 16-May-2015 |
Category: |
Technology |
Upload: | peter-neubauer |
View: | 8,596 times |
Download: | 1 times |
Neo4j – what is it?
Java based, embeddable, data-localGPL/AGPLACID, JTA compliantIndexing framework24/7 since 2003High Availability clustering supportGreat communityTinkerpop pipes processing stack
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
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();
Code (2): Traversing a node space
// Instantiate a traverser that returns Mr Anderson's 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 Anderson's friends:" );for ( Node friend : friendsTraverser ){
System.out.printf( "At depth %d => %s%n",friendsTraverser.currentPosition().getDepth(),friend.getProperty( "name" ) );
}
Rubygem install neo4j
require ”rubygems”require 'neo4j'
class Person include Neo4j::NodeMixin property :name, :age, :occupation index :name has_n :friendsend
Neo4j::Transactoin.run do neo = Person.new :name=>'Neo', :age=>29 morpheus = Person.new :name=>'Morpheus', :occupation=>'badass' neo.friends << morpheusend
neo.friends.each {|p|...}
Neo4j 1.3 news
GPL Community Edition128 Billion primitives address spaceMore graph algosShort string → longWeb visualizationGremlin 0.9 built-inHA improvements
Web admin
Neo4j High Availability
Neo4j – what do I do with it?
Network ManagementMaster Data ManagementSocialFinanceSpatialOther
BioinformaticsRDFRouting
Call Data Records (CDR)Forming a graphLocation basedPossible uses:
Find clusters (better plans)Build social connectionsFind influencers
Financial data – fraud detection
name = “Mr Godfather”karma = veeeery-lowcash = more-than-you
11
amount = $1000
name = “Emil”cash = always-too-li'l
title = “ATM @ Wall St”id = 230918484233cash_left = 384204
33
1313
TRANSFER WITHDRAW
name = “The Tavern”lat = 1295238237long = 234823492
amount = $1000
name = ...
77
22
OWNS
DEPOSITTR
ANSF
ER
name = ...
4242
WITHDRAW
Routing
Social graphs
RecommendationsLocation based servicesInfluencersShortest path
Recommendations and big graphsGlobal heuristics
Page rankLocal recommendations
Shortest pathsHammock functionsRandom walksDijkstra, A*, Shooting star etc
Impact Analytics, CMDB, Network Management, Provisioning
Impact Analytics, CMDB, Network Management, Provisioning
Master Data Management
Multiple indexes - GIS
Neo4j dynamic layers
Layer1
Layer2
Layer3
GeometryEncoder
DynamicQuery
DynamicStyles
DynamicMeta-Inf
Connected domain data Neo4j Spatial GIS and Spatial stacks
OpenStreetMap
Network Topology analysis
Analytics of network coverage and frequenciesCell towersDrive dataInfrastructure
AnalyticsSpatial signal strengthAntenna placement and azimuthFrequency planningNetwork differences over timeReporting and charting
Cell network analysis
Cell network analysis
Simulations (Energy market)
agents, markets, power plants, bids, substances, technologies
Relevant research areasDistributed traversals
Parallel (BSP) and Local (Neo4j)Crossing shardsMultithreaded
Graph shardingUpfront sharding utilsRuntime sharding algosPartial sharding/replication
Parallel garbage collection under high loadBig graph algos and heuristics
Questions?
Image credit: lost again! Sorry :(
http://neotechnology.com