Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Hands on Neo4J - Duchess France/Zenexity - 25/09/2013

Initiation à Neo4J v2.0 en une série de 4 exercices guidés.
http://www.duchess-france.org/hands-on-neo4j/

  • Login to see the comments

  • Be the first to like this

Hands on Neo4J - Duchess France/Zenexity - 25/09/2013

  1. 1. git clone https://github.com/LateralThoughts/hands-on-neo4j.git
  2. 2. Pré-requis du jour / RAPPEL SUPPORT TESTNG IDE
  3. 3. Page de réclame @fbiville @ogirardot @LateraIThoughts mailto:contact@lateral-thoughts.com
  4. 4. Agenda Conférence Octobre / http://tinyurl.com/soft-shake-neo4j Formation Novembre / http://tinyurl.com/humancoders-neo4j BBL : où tu veux quand tu veux ! http://www.brownbaglunch.fr/baggers.html#Florent_Biville
  5. 5. Neo4J : mais qu’est-ce que c’est ? Base de donnée orientée… (vieux barbus n’est pas une bonne réponse)
  6. 6. Base de données orientée graphe ! Flock DB
  7. 7. Graphe ? des noeuds des relations
  8. 8. Graphe ?
  9. 9. Base de données graphe ?
  10. 10. Base de données graphe ?
  11. 11. Au programme : BIRGGIT !
  12. 12. Au programme : BIRGGIT ! Le 1er gestionnaire de versions sans contenu !
  13. 13. Au programme : BIRGGIT ! Opérations possibles (à la fin de ce hands-on) ● birggit init ● birggit commit ● birggit log ● birggit gc
  14. 14. Exercices test-driven !
  15. 15. Exercice 1 APIs unitaires : création de noeuds/relations // création d’un noeud avec label Node monNoeud = graphDB.createNode( DynamicLabel.label("SUPER_LABEL") ); monNoeud.setProperty("hello", "world"); // création d’une relation Relationship love = monAutreNoeud.createRelationshipTo( monNoeud, DynamicRelationshipType.withName("IS_IN_LOVE_WITH") ); love.setProperty("start", new Date());
  16. 16. Exercice 2 Indexation “legacy” // retrieve the index manager IndexManager index = graphDb.index() // get or create index for nodes Index<Node> actors = index.forNodes(“mes_noeuds_cheris”) // or.. index.forRelationshipd(“mes_relations___”) // then add : Node reeves = graphDb.createNode(); reeves.setProperty( "name", "Keanu Reeves" ); actors.add( reeves, "name", reeves.getProperty( "name" ));
  17. 17. Exercice 3 BFS DFS
  18. 18. Exercice 3
  19. 19. Exercice 3 // first the import ! import org.neo4j.kernel.Traversal; // then the real work, with a simple traversal Node startNode = … for( Path position : Traversal.description() .depthFirst() // or not .evaluator(Traversal.toDepth(...)) .relationships(...) .traverse(startNode)) { … }
  20. 20. Exercice 4 Pattern matching sur graphe
  21. 21. Exercice 4 Pattern matching sur graphe
  22. 22. Exercice 4 Pattern matching sur graphe - illustration
  23. 23. Exercice 4 Pattern matching sur graphe - illustration
  24. 24. Exercice 4 Pattern matching sur graphe - illustration
  25. 25. Exercice 4 Pattern matching sur graphe - illustration
  26. 26. Exercice 4 Pattern matching sur graphe - syntaxe Cypher ()-->()
  27. 27. Exercice 4 Pattern matching sur graphe - syntaxe Cypher (A)-->(B)
  28. 28. Exercice 4 Pattern matching sur graphe - syntaxe Cypher (A)-[:LOVES]->(B) LOVES
  29. 29. Exercice 4 Pattern matching sur graphe - syntaxe Cypher (C)<--(A)-->(B)-->(C) A-->B-->C,A-->C
  30. 30. Exercice 4 Cypher - lecture START <lookup> MATCH <pattern> RETURN <expression> MATCH (stephan:DEVOXXIAN)-[:IS_FRIEND_WITH]->(friend:DEVOXXIAN), (friend)-[:HAS_ATTENDED]->(conf:CONFERENCE) WHERE conf.name = "Devoxx" RETURN stephan, COLLECT(friend)
  31. 31. Exercice 4 Cypher - écriture MATCH <expression> CREATE <node/rel> RETURN <expression> MATCH a:Person, b:Person WHERE a.name = 'Someone' AND b.name = 'Anyone' CREATE a-[rel:HATES]->b RETURN rel
  32. 32. Conclusion
  33. 33. Conclusion Beaucoup d’autres choses ! ● plus de Cypher (avec indexing) ● REST (unmanaged extensions, streaming) ● visualisation ○ auto : http://linkurio.us/, Neoclipse, Gephi ○ custom : d3.js, sigma.js… ● NeoAAS : http://www.graphenedb.com/, Heroku ● divers : backup, batch-import, http://gist.neo4j.org/
  34. 34. Conclusion Expérimenter http://console.neo4j.org Discuter https://groups.google.com/forum/#!forum/neo4jfr Partager http://www.meetup.com/graphdb-france/
  35. 35. Merci / auf wiedersehen ! @fbiville @ogirardot @LateraIThoughts mailto:contact@lateral-thoughts.com

×