More Related Content More from Xebia Nederland BV More from Xebia Nederland BV (14) Neo4 j, what else?14. PageRank is gebouwd met 15 regels code!
Bron:http://www.royans.net/arch/pregel-googles-other-data-processing-infrastructure/
20. Experiment: Hoe zijn 2 nodes verbonden?
• 1000 personen
• gemiddeld 50 relaties
• Zijn
2 personen verbonden
met maximaal 4 stappen?
• Warme cache
21. Experiment: Hoe zijn 2 nodes verbonden?
• 1000 personen Relationeel Neo4j
• gemiddeld 50 relaties
• Zijn
1000 2000ms 2ms
2 personen verbonden
met maximaal 4 stappen?
• Warme cache 1 000 000 ? 2ms
22. Experiment: Hoe zijn 2 nodes verbonden?
• 1000 personen Relationeel Neo4j
• gemiddeld 50 relaties
• Zijn
1000 2000ms 2ms
2 personen verbonden
met maximaal 4 stappen?
• Warme cache 1 000 000 ? 2ms
25. GETYPEERDE RELATIES
speelt_in
type: persoon type: team
name: Ron name: S2
coach_van
type: persoon
name: Corjan
26. PROPERTIES OP RELATIES
speelt_in
type: persoon type: team
name: Ron name: S2
jaar: 2011
coach_van
jaar: 2011
type: persoon
name: Corjan
27. PROPERTIES
• Alle Java primitieven kunnen gebruikt worden:
• String
• boolean
• int
• double
• ...
31. EMBEDDABLE, SERVER
HIGH AVAILABLE
• new EmbeddedGraphDatabase("/tmp/neodb");
• GET http://localhost:7474/db/data/node/123
• Map<String,String> config = HighlyAvailableGraphDatabase.loadConfigurations( configFile );
GraphDatabaseService db = new HighlyAvailableGraphDatabase( path, config );
34. SHOW ME THE CODE!
Start database
Maak nodes
Maak relaties
Maak lucene index
36. ALGORITHMS
• find all paths
• find all simple paths
• find the shortest path
• Dijkstra algorithm
• The a* search algorithm
38. player_of
Mathieu coach_of
S2 Corjan
player_of
commission_member_of
Ron Webcommissie
commission_member_of
Dennis
39. GELEERDE LESSEN
• Blijf tekenen: Maak het netwerk visueel
• Maak proefopzetjes en refactor
• Pas node wrapping toe om het domein simpel te houden
• Typeer nodes
• gebruik BatchInsert voor veel data
41. NODE WRAPPING
public class MemberNode implements Member {
private Node node;
public static final String MEMBER_NAME_KEY = "name";
public MemberNode(Node node) {
this.node = node;
}
public String getName() {
return (String) getNode().getProperty(MEMBER_NAME_KEY);
}
public void setName(String name) {
getNode().setProperty(MEMBER_NAME_KEY, name);
}
}
42. NODE WRAPPING
public Team getMyTeam() {
Relationship teamRelationship =
getNode().getSingleRelationship(PLAYER_OF,
Direction.OUTGOING);
Node teamNode = teamRelationship.getEndNode();
return new Team(teamNode);
}