lighting talk neo4j fosdem 2011
TRANSCRIPT
Neo Technology
Neo4j
Graph DB Intro & Neo4j DB
Fosdem 2011
Jordi Valverde
Eclipsi Networks
#neo4j@[email protected]
GraphDB evolution
Information connectivity
1990
2000
2010
2020
Text documentsOntologiesRDFFolksonomiesTaggingUser-generated contentWikisRSSBlogsHypertextNeo4j
The property graph model
Core abstractions:Nodes
Relationships between nodes
Properties on both
Traversal frameworkHigh performance
queries on connected
data sets
name = Jordiage = 29
type = KNOWStime = 4 yearstype = carvendor = Hondamodel = Civic123
EE
Querying Neo4j? (1)
GraphDatabaseService graphDb = ... // Get factory
// Create JordiNode jordi = graphDb.createNode();jordi.setProperty( "name", "Jordi" );jordi.setProperty( "age", 29 );
// Create CarNode car = graphDb.createNode();car.setProperty( "name", "Car" );car.setProperty( "vendor", "Honda" );car.setProperty( "model", "Civic" );
// Create a relationship representing that relationate each elementjordi.createRelationshipTo( car, RelTypes.KNOWS );
Social data (customer: brand-name social network)
name = Mikeage = 291
disclosure = publicname = Charlielast_name = Runklename = Danilast_name = Californiaage = 27313
KNOWS
KNOWS
name = Hanklast_name = Moodyage = 42age = 3 daysname = Karen72
KNOWS
KNOWS
KNOWS
name = Marcy Runkle42
KNOWS
EE
Just a social graph?
EE
Spatial data (customer: large telecom company)
name = Omni Hotellat = 3492848long = 2838234231
length = 7 milesname = ...lat, long = ...name = Swedlandlat = 23410349long = 2342348852313
ROAD
ROOOAD
name = The Tavernlat = 1295238237long = 234823492length = 3 milesname = ...72
ROAD
ROAD
ROAD
name = ...42
ROAD
EE
Social? Spatial? Social AND spatial!
EE
Social AND spatial data
name = Omni Hotellat = 3492848long = 2838234231
weight = 10name = Perebeer_qual = expertname = Mariaage = 30beer_qual = non-existant313
LIKES
SIBLING
name = The Tavernlat = 1295238237long = 234823492length = 3 milesname = ...72
ROAD
ROAD
ROAD
name = Jordi42
KNOWS
EE
Financial data (customer: international bank)
name = Mr Godfatherkarma = veeeery-lowcash = more-than-you1
amount = $1000name = Emilcash = always-too-li'ltitle = ATM @ Wall Stid = 230918484233cash_left = 384204313
TRANSFER
WITHDRAW
name = The Tavernlat = 1295238237long = 234823492amount = $1000name = ...72
OWNS
DEPOSIT
TRANSFER
name = ...42
WITHDRAW
EE
Computational Genomics?
(customer: no idea!)
type = Protein
ID=SACE0A01650p1
name = T
name = G313
NEXT
NEXT
name = A
name = GL3C247972
NUCLEOTIDES
FAMILY
RELATED
name = ...42
START
EE
Computational Genomics?
(customer: no idea!)
type = Protein
ID=SACE0A01650p1
name = T
name = G313
NEXT
NEXT
name = A
name = GL3C247972
NUCLEOTIDES
FAMILY
RELATED
name = ...42
START
EE
Traverser Frameworknode.traverse(description)
Language object bindings (Ruby, Python, PHP,...)node.genes.first.name
Gremlin (perl like)./outE[label='family']/inV/@name
Graph MatchingExample graphs,
Starting point by searching
RDF, SPARQL SNOMEDSELECT ?gene, ?family WHERE ...
Querying Neo4j? (II)
neo4j-kernelCore of neo4j
neo4j-indexIndexing component
neo4j-shellA command line like shell
neo4j-remote-graphdbJAVA API for interacting with the core and JAVA app
neo4j-backupComponent for backup
neo4j-graph-algoMore relevant graph algorithms
Neo4j components
Why graph databases?
Data miningYou can make algorithms for searching patterns and add AI
High-critical environmentsYou can apply neo4j for high load databases and optimize the queries and reduce costs on hardware use
Engineering in biochemical componentsYou can make algorithms for helping the study of protein synthesys, for example
Discrete event simulationYou can apply a pattern and behavior and assign everything to a graph database
Social graphEverything in user related tastes can be organized in a graph
Network architecture
Some examples...
Routing
Visualization - Gephi
Visualization - iGraph
Most widely deployed graph db in the worldACID, persistent, embedded/server
Robust: 24/7 production since 2003
Mature: lots of production deployments
Scalable: High Availability, Master failover
Community: ecosystem of tools, bindings, frameworks
Product: OSGi, Spatial, RDF, languages
Available under AGPLv3 and as commercial productBut the first one is free! For ALL use-cases
Why Neo4j?
OrientDB (1 GPL version, Java) http://www.orientechnologies.com/orient-db.htm
Sones (GPL, Dual-licence .NET)http://www.sones.com
HyperGraphDB (GPL, JAVA)http://www.hypergraphdb.org
DEX (Privative License, JAVA)http://www.sparsity-technologies.com/dex_releases.php
...
We're the best, but...
Downloadhttp://neo4j.org
Feedbackhttp://lists.neo4j.org
http://twitter.com/neo4j
Code and morehttps://github.com/neo4j
Help & more presentationshttp://wiki.neo4j.org
http://slidesha.re/ftBtb2 Pablo Delgado (ruby on rails and neo4j) Conferencia RoR Madrid
http://slidesha.re/heSxmm Pere Urbon (fast peak on graphdb) Barcelona on rails meeting
More Info?
Questions?
Thank you...
Click to edit the title text format
Click to edit the outline text formatSecond Outline LevelThird Outline LevelFourth Outline LevelFifth Outline LevelSixth Outline LevelSeventh Outline LevelEighth Outline LevelNinth Outline Level
Click to edit the title text format
Click to edit the outline text formatSecond Outline LevelThird Outline LevelFourth Outline LevelFifth Outline LevelSixth Outline LevelSeventh Outline LevelEighth Outline LevelNinth Outline Level