SlideShare una empresa de Scribd logo
1 de 57
Descargar para leer sin conexión
NEO4J ET SON ECOSYSTÈME
                                                                              Sylvain ROUSSY
                                                        Ingénieur conseil – HINNOYA
                                                                sroussy@hinnoya.fr
                                                                                 @SylvainRoussy




   JUG Lyon : – Neo4j et son ecosystème                      15 Janvier 2013 –
   sroussy@hinnoya.fr
JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
Plan


     Qu’est-ce que NEO4j ?
     Qu’est qu’une BDD orientée « Graphe » ?
     Pourquoi utiliser une BDD orientée « Graphe » ?
     A propos de NEO4j…
     NEO4j avec Java
     NEO4j sans Java
     Interroger NEO4j
     Intégrer NEO4j
     S’abstraire de NEO4j
     Outillage
     Conclusions

JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
QU’EST-CE QUE NEO4J ?




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
Qu’est-ce que NEO4j ?




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
Qu’est-ce que NEO4j ?




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr   5
Qu’est-ce que NEO4j ?




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr   6
Qu’est-ce que NEO4j ?




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr   7
Qu’est-ce que NEO4j ?




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr   8
Qu’est-ce que NEO4j ?




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr   9
Qu’est-ce que NEO4j ?




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr   10
QU’EST-CE QU’UNE BASE DE
       DONNÉES ORIENTÉE « GRAPHE »?




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
Base de données orientée « Graphe »


* Une base dont la structure est représentée sous forme de
  « graphe » (théorie des graphes)




     Ce graphe est basé sur des Nœuds et des Arcs

             NEO4j :                    Node – Relationships
             Blueprints :               Vertex – Edges


JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
Base de données orientée « Graphe »


* Dans cette structure de données, nous considérons
  que la relation est aussi importante que l’entité

     La relation est identifiée par un nom (sémantique)




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
Quelques bases de données orientées « Graphe »


   NEO4j (Java)
 Neo Technology

   OrientDB (Java)
 Nuvela Base

   DEX (C++)
 Sparsity Technologies

   TinkerGraph (Java)
 TinkerPop



JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
POURQUOI UTILISER UNE BASE DE
      DONNÉES ORIENTÉE « GRAPHE »?




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
Reconnaître des structures




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
Reconnaître des structures




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
Reconnaître des structures




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
Reconnaître des structures


     Quels sont, dans mon cercle d’amis, les victimes et les
     revendeurs de mes livres ?

                                Sylvain -> « PRETE » -> Ami
                                 Ami -> « VENDS » -> Ami2
                               Ami2 -> « OFFRE » -> Sylvain




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
Cas d’utilisations


     Où la relation est importante !
       Réseaux sociaux (Viadeo, LinkedIn, etc.)

     Où la reconnaissance de structure est importante !
       Fraudes, Excellences
       Mes amis qui n’en sont pas…

     Où le chemin est important ! (Shortest Path, …)
       Généalogie (Héritage)
       Système d’information géographique
       Séquence (Groupware, etc.)

JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
A PROPOS DE NEO4J




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
A propos de NEO4j

     Editeur : Neo Technology (créée en 2000 – Suède/USA)

     Version stable à ce jour : 1.8.1 (14/12/2012)
     Version en cours de stabilisation : 1.9 M03

     30 Milliards de nœuds
     30 Milliards de relations
     64 Milliards de propriétés

     www.neo4j.org
     « HEROKU »




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
A propos de NEO4j


     Deux types d’utilisation :

           Embedded
      GraphDatabaseService graph =
                          new EmbeddedGraphDatabase("/var/mydb");



           Server (JETTY)
                 REST API




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
NEO4J AVEC JAVA




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
Créer des nœuds…

     // Création d’un premier nœud

     Node node1 = graph.createNode();
     node1.setProperty("name", "Base de données");


     // Création d’un second nœud

     Node node2 = graph.createNode();
     node1.setProperty("name", « NEO4j");




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
… et créer des relations

     // Création d'une relation "EST" du second noeud vers le premier

     Relationship rel =
                 node2.createRelationshipTo(node1,
                 DynamicRelationshipType.withName("EST")) ;




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
Indexer des propriétés (Lucène)


     Basé sur triplette : propriété, valeur, objet

     Implicitement par configuration
           node_auto_indexing=true
           node_keys_indexable=name,age
           relationship_auto_indexing=true
           relationship_keys_indexable=name,age


     Explicitement
       Par le code (IndexManager)
       Manuellement (Shell)
       REST

JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
Utiliser les transactions (ACID)

     // Ouverture et Commit d’une transaction

     Transaction tx = graph.beginTx ();
     […]
     tx.success ();

     // RollBack

     tx.failure ();

     Fermeture de la transaction                                    (relâchement des
     verrous)

     tx.finish ();


JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
NEO4J SANS JAVA




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
Créer des nœuds…
      // Création d’un premier noeud

      POST http://localhost:7474/db/data/node
      Accept: application/json
      Content-Type: application/json

      {
          "name" : "base de données"
      }

      // Création d’un second noeud

      POST http://localhost:7474/db/data/node
      Accept: application/json
      Content-Type: application/json

      {
          "name" : « NEO4j"
      }

JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
… et créer des relations
      // Création d’un premier noeud

      POST http://localhost:7474/db/data/node/1/relationships
      Accept: application/json
      Content-Type: application/json

      {
          "to" : "http://localhost:7474/db/data/node/0",
          "type" : « EST"
      }




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
Batch


     Transaction atomique

     POST http://localhost:7474/db/data/batch
     Accept: application/json
     Content-Type: application/json




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
INTERROGER NEO4J




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
CYPHER : Langage d’interrogation


     Langage d’interrogation propriétaire à NEO4j
     Proche de SQL
     Permet l’interrogation et la modification des
     données

     Basé sur quatre éléments clés :

           START : nœud(s) ou relation(s) de départ
           MATCH : motif relationnel
           WHERE : restriction
           RETURN : éléments à retourner
JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
CYPHER : Langage d’interrogation

     Quels sont, dans mon cercle d’amis, les victimes et
     les revendeurs de mes livres ?

START sylvain=node(0)

MATCH sylvain-[:PRETE]->ami-[:VENDS]->ami2-[:OFFRE]->sylvain

RETURN ami.Nom AS REVENDEUR, ami2.Nom AS VICTIME




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
CYPHER : Langage d’interrogation



     CYPHER s’utilise depuis :

           Le code JAVA

           L’API REST

           La console d’administration Web

           Le Shell




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
Code Java : Utiliser un « traversier » (Traversal)


     TraversalDescription description =
     Traversal.description()
        .breadthFirst()
        .relationships (PRETE, Direction.OUTGOING )
        .relationships(VENDS, Direction.OUTGOING )
        .relationships(OFFRE, Direction.OUTGOING )
        .evaluator( Evaluators.toDepth( 5 ) )
        .uniqueness (Uniqueness.RELATIONSHIP_PATH);




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
Code Java : Utiliser un traversier (Traversal)

     Node sylvain = graph.getNodeById(0);
     for (Path position : description.traverse( sylvain ) )
     {
       System.out.println ("Path :"+position.toString());
     }



         Path :(0)
         Path :(0)--[PRETE,1]-->(2)
         Path :(0)--[PRETE,1]-->(2)--[VENDS,2]-->(3)
         Path :(0)--[PRETE,1]-->(2)--[VENDS,2]-->(3)--[OFFRE,3]-->(0)




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
GREMLIN : Langage d’interrogation (Tinkerpop)

     GREMLIN est Groovy
     NEO4J, Tinkergraph, DEX, OrientDB, etc.




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
INTÉGRER NEO4J (DAO)




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
En pure Java
     public class Person
     {
       static final String NAME = "name";

         private final Node underlyingNode;

         Person( Node personNode ) {
           this.underlyingNode = personNode;
         }

         protected Node getUnderlyingNode() {
           return underlyingNode;
         }

            public String getName() {
             return (String)underlyingNode.getProperty( NAME );
         } […]


JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
Avec Spring DATA
      @NodeEntity
      public class Movie
      {
        @GraphId
        Long id;

         @Indexed(type = FULLTEXT, indexName = "search")
         String title;

         Person director;

         @RelatedTo(type="ACTS_IN", direction = INCOMING)
         Set<Person> actors;

         @RelatedToVia(type = "RATED")
         Iterable<Rating> ratings;

        @Query("start movie=node({self}) match movie-->genre<--similar return
      similar")
         Iterable<Movie> similarMovies;
      }
                                      http://www.springsource.org/spring-data/neo4j

JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
S’ABSTRAIRE DE NEO4J




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
Tinkerpop




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
Tinkerpop : Blueprints


     Graph blueGraph = new Neo4jGraph("/var/mydb");

     Vertex v1 = blueGraph.addVertex(1);
     v1.setProperty("name", "Base de données");

     Vertex v2 = blueGraph.addVertex(2);
     v2.setProperty("name", "NEO4j");

     Edge rel = blueGraph.addEdge(3, v1, v2, "EST");



JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
Tinkerpop : Frames

     public interface FramesPerson extends VertexFrame
     {
         @Property ("lastname")
         public String getLastname ();

             @Property ("lastname")
             public void setLastName (String lastname);

             @Adjacency (label = "KNOWS")
             public Iterable<FramePerson> getFriends ();

             @Adjacency (label = "KNOWS")
             public void addFriend (FramesPerson friend);
     }

JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
OUTILLAGE




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
Shell


     Permet la consultation d’une base en cours
     d’utilisation !

 $> Neo4jShell -path /var/mydb -readonly




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
Console Web - Dashboard

     http://monserveur_db:7474




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
Console Web – Data browser




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
Console Web – Console




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
Neoclipse




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
POURQUOI NEO4J ?




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
Pourquoi NEO4j ?


     Support d’un éditeur : Neo Technology

      • Version communautaire (GPL)

      • Version Advanced (AGPL)
             • Advanced monitoring

      • Version Enterprise (AGPL)
             • Sauvegarde à chaud
             • HA


     Documentation dense (+500 pages pour le manuel)

JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
CONCLUSION




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
Conclusion



     Représentation naturelle des relations


     « Data driven »



     Savoir-faire en cours…




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr
Merci de votre attention !



     Questions ?




JUG Lyon : – Neo4j et son écosystème   15 Janvier 2013 – sroussy@hinnoya.fr

Más contenido relacionado

Destacado

01 nosql and multi model database
01   nosql and multi model database01   nosql and multi model database
01 nosql and multi model databaseMahdi Atawneh
 
Moteurs de recommendation avec Neo4j et GraphAwareReco
Moteurs de recommendation avec Neo4j et GraphAwareRecoMoteurs de recommendation avec Neo4j et GraphAwareReco
Moteurs de recommendation avec Neo4j et GraphAwareRecoChristophe Willemsen
 
Base de données graphe et Neo4j
Base de données graphe et Neo4jBase de données graphe et Neo4j
Base de données graphe et Neo4jBoris Guarisma
 
Neo4j -[:LOVES]-> Cypher
Neo4j -[:LOVES]-> CypherNeo4j -[:LOVES]-> Cypher
Neo4j -[:LOVES]-> Cypherjexp
 
Cassandra pour les développeurs java
Cassandra pour les développeurs javaCassandra pour les développeurs java
Cassandra pour les développeurs javaJérémy Sevellec
 
Recommandations avec Neo4j et le GraphAware Recommendation Engine
Recommandations avec Neo4j et le GraphAware Recommendation EngineRecommandations avec Neo4j et le GraphAware Recommendation Engine
Recommandations avec Neo4j et le GraphAware Recommendation EngineChristophe Willemsen
 
Graphes et détection de fraude : exemple de l'assurance
Graphes et détection de fraude : exemple de l'assuranceGraphes et détection de fraude : exemple de l'assurance
Graphes et détection de fraude : exemple de l'assuranceLinkurious
 
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02Jérôme Mainaud
 
Investissements au myanmar actionnaire nominé au myanmar
Investissements au myanmar   actionnaire nominé au myanmarInvestissements au myanmar   actionnaire nominé au myanmar
Investissements au myanmar actionnaire nominé au myanmarAnyaS19
 
3 étapes pour débuter votre collaboration avec votre assistant virtuel
3 étapes pour débuter votre collaboration avec votre assistant virtuel3 étapes pour débuter votre collaboration avec votre assistant virtuel
3 étapes pour débuter votre collaboration avec votre assistant virtuelSmartelia
 
AG 2010 : Commission Communication
AG 2010 : Commission CommunicationAG 2010 : Commission Communication
AG 2010 : Commission Communicationguest1e2594be
 
Moi !? Heureux ?! Comment traverser sa vie professionnelle sans trop de casse...
Moi !? Heureux ?! Comment traverser sa vie professionnelle sans trop de casse...Moi !? Heureux ?! Comment traverser sa vie professionnelle sans trop de casse...
Moi !? Heureux ?! Comment traverser sa vie professionnelle sans trop de casse...Marielle de Miribel
 
Inforum ProLibre 26 novembre 2003
Inforum ProLibre 26 novembre 2003Inforum ProLibre 26 novembre 2003
Inforum ProLibre 26 novembre 2003robertpluss
 
Social Media en Empresas 2.0 - Axsummit
Social Media en Empresas 2.0 - AxsummitSocial Media en Empresas 2.0 - Axsummit
Social Media en Empresas 2.0 - AxsummitAxeleratum
 
Weekly Actions Du 22 Au 26 Mars 2010
Weekly Actions Du 22 Au 26  Mars 2010Weekly Actions Du 22 Au 26  Mars 2010
Weekly Actions Du 22 Au 26 Mars 2010Cherradi -
 
Presentaci+n1n k
Presentaci+n1n kPresentaci+n1n k
Presentaci+n1n knachoconde
 
POTENCIAL DE LAS NUEVAS TECNOLOGIAS DE INFORMACION (SOCIAL NETWORKING)
POTENCIAL DE LAS NUEVAS TECNOLOGIAS DE INFORMACION (SOCIAL NETWORKING)POTENCIAL DE LAS NUEVAS TECNOLOGIAS DE INFORMACION (SOCIAL NETWORKING)
POTENCIAL DE LAS NUEVAS TECNOLOGIAS DE INFORMACION (SOCIAL NETWORKING)magdabaladi
 

Destacado (20)

01 nosql and multi model database
01   nosql and multi model database01   nosql and multi model database
01 nosql and multi model database
 
Multi model-databases
Multi model-databasesMulti model-databases
Multi model-databases
 
Moteurs de recommendation avec Neo4j et GraphAwareReco
Moteurs de recommendation avec Neo4j et GraphAwareRecoMoteurs de recommendation avec Neo4j et GraphAwareReco
Moteurs de recommendation avec Neo4j et GraphAwareReco
 
Base de données graphe et Neo4j
Base de données graphe et Neo4jBase de données graphe et Neo4j
Base de données graphe et Neo4j
 
Neo4j -[:LOVES]-> Cypher
Neo4j -[:LOVES]-> CypherNeo4j -[:LOVES]-> Cypher
Neo4j -[:LOVES]-> Cypher
 
Cassandra pour les développeurs java
Cassandra pour les développeurs javaCassandra pour les développeurs java
Cassandra pour les développeurs java
 
Recommandations avec Neo4j et le GraphAware Recommendation Engine
Recommandations avec Neo4j et le GraphAware Recommendation EngineRecommandations avec Neo4j et le GraphAware Recommendation Engine
Recommandations avec Neo4j et le GraphAware Recommendation Engine
 
Graphes et détection de fraude : exemple de l'assurance
Graphes et détection de fraude : exemple de l'assuranceGraphes et détection de fraude : exemple de l'assurance
Graphes et détection de fraude : exemple de l'assurance
 
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
 
Investissements au myanmar actionnaire nominé au myanmar
Investissements au myanmar   actionnaire nominé au myanmarInvestissements au myanmar   actionnaire nominé au myanmar
Investissements au myanmar actionnaire nominé au myanmar
 
Los Tejidos
Los TejidosLos Tejidos
Los Tejidos
 
3 étapes pour débuter votre collaboration avec votre assistant virtuel
3 étapes pour débuter votre collaboration avec votre assistant virtuel3 étapes pour débuter votre collaboration avec votre assistant virtuel
3 étapes pour débuter votre collaboration avec votre assistant virtuel
 
AG 2010 : Commission Communication
AG 2010 : Commission CommunicationAG 2010 : Commission Communication
AG 2010 : Commission Communication
 
Moi !? Heureux ?! Comment traverser sa vie professionnelle sans trop de casse...
Moi !? Heureux ?! Comment traverser sa vie professionnelle sans trop de casse...Moi !? Heureux ?! Comment traverser sa vie professionnelle sans trop de casse...
Moi !? Heureux ?! Comment traverser sa vie professionnelle sans trop de casse...
 
Inforum ProLibre 26 novembre 2003
Inforum ProLibre 26 novembre 2003Inforum ProLibre 26 novembre 2003
Inforum ProLibre 26 novembre 2003
 
Social Media en Empresas 2.0 - Axsummit
Social Media en Empresas 2.0 - AxsummitSocial Media en Empresas 2.0 - Axsummit
Social Media en Empresas 2.0 - Axsummit
 
Weekly Actions Du 22 Au 26 Mars 2010
Weekly Actions Du 22 Au 26  Mars 2010Weekly Actions Du 22 Au 26  Mars 2010
Weekly Actions Du 22 Au 26 Mars 2010
 
el milenio
el milenioel milenio
el milenio
 
Presentaci+n1n k
Presentaci+n1n kPresentaci+n1n k
Presentaci+n1n k
 
POTENCIAL DE LAS NUEVAS TECNOLOGIAS DE INFORMACION (SOCIAL NETWORKING)
POTENCIAL DE LAS NUEVAS TECNOLOGIAS DE INFORMACION (SOCIAL NETWORKING)POTENCIAL DE LAS NUEVAS TECNOLOGIAS DE INFORMACION (SOCIAL NETWORKING)
POTENCIAL DE LAS NUEVAS TECNOLOGIAS DE INFORMACION (SOCIAL NETWORKING)
 

Similar a 201301 - Focus Neo4j

FLUPA UX-Day 2012 - Ergonomie et design : Et demain ? - par Grégoire Gérard
FLUPA UX-Day 2012 - Ergonomie et design : Et demain ? - par Grégoire GérardFLUPA UX-Day 2012 - Ergonomie et design : Et demain ? - par Grégoire Gérard
FLUPA UX-Day 2012 - Ergonomie et design : Et demain ? - par Grégoire GérardFlupa
 
Rezopole LyonIX : TunIXP workshop
Rezopole LyonIX : TunIXP workshopRezopole LyonIX : TunIXP workshop
Rezopole LyonIX : TunIXP workshopATI Tunisia
 
Présentation SMX Paris 2013 : Comment développer une vraie stratégie de conte...
Présentation SMX Paris 2013 : Comment développer une vraie stratégie de conte...Présentation SMX Paris 2013 : Comment développer une vraie stratégie de conte...
Présentation SMX Paris 2013 : Comment développer une vraie stratégie de conte...Raphael Labbé
 
Présentation générale eZ Publish
Présentation générale eZ PublishPrésentation générale eZ Publish
Présentation générale eZ PublishGauthier Garnier
 
Les principaux logiciels pour l'analyse de réseau
Les principaux logiciels pour l'analyse de réseauLes principaux logiciels pour l'analyse de réseau
Les principaux logiciels pour l'analyse de réseauLaurent Beauguitte
 
Présentation GeolLLibre PostGeol
Présentation GeolLLibre PostGeolPrésentation GeolLLibre PostGeol
Présentation GeolLLibre PostGeolPierre Chevalier
 
Publication et intégration de données ouvertes
Publication et intégration de données ouvertesPublication et intégration de données ouvertes
Publication et intégration de données ouvertesFrançois Scharffe
 
Normandy JUG - Elasticsearch
Normandy JUG - ElasticsearchNormandy JUG - Elasticsearch
Normandy JUG - ElasticsearchDavid Pilato
 
Comment apprend-on aujourd'hui ?
Comment apprend-on aujourd'hui ?Comment apprend-on aujourd'hui ?
Comment apprend-on aujourd'hui ?Jean-Marie Gilliot
 
Global Azure Bootcamp 2016 - Lyon : DevOps Datascience
Global Azure Bootcamp 2016 - Lyon : DevOps Datascience Global Azure Bootcamp 2016 - Lyon : DevOps Datascience
Global Azure Bootcamp 2016 - Lyon : DevOps Datascience FactoVia
 
Habilitation to conduct research (Habilitation à diriger des recherches)
Habilitation to conduct research (Habilitation à diriger des recherches)Habilitation to conduct research (Habilitation à diriger des recherches)
Habilitation to conduct research (Habilitation à diriger des recherches)Ana Roxin
 
Présentation au GéoCamp Lyon de janvier2014
Présentation au GéoCamp Lyon de janvier2014Présentation au GéoCamp Lyon de janvier2014
Présentation au GéoCamp Lyon de janvier2014Sylvain Maillard
 
Iut lyon 1 introduction à l'agilité - 20 juin 2012
Iut lyon 1   introduction à l'agilité - 20 juin 2012Iut lyon 1   introduction à l'agilité - 20 juin 2012
Iut lyon 1 introduction à l'agilité - 20 juin 2012agnes_crepet
 
Systematic/NEOPPOD dévoilent la première base de données objets NoSQL Open So...
Systematic/NEOPPOD dévoilent la première base de données objets NoSQL Open So...Systematic/NEOPPOD dévoilent la première base de données objets NoSQL Open So...
Systematic/NEOPPOD dévoilent la première base de données objets NoSQL Open So...Paris, France
 
3. open street map frédéric RODRIGO
3. open street map frédéric RODRIGO3. open street map frédéric RODRIGO
3. open street map frédéric RODRIGOteleparc
 
BreizhCamp 2015 - D3js par l'exemple
BreizhCamp 2015 - D3js par l'exempleBreizhCamp 2015 - D3js par l'exemple
BreizhCamp 2015 - D3js par l'exempleRossi Oddet
 
Youtube : 10 commandements de la génération d'audience - SMX Paris 2013
Youtube : 10 commandements de la génération d'audience - SMX Paris 2013Youtube : 10 commandements de la génération d'audience - SMX Paris 2013
Youtube : 10 commandements de la génération d'audience - SMX Paris 2013Aurélie Moulin
 
Analyse du RSN "Plazza" et de la communication d'Orange
Analyse du RSN "Plazza" et de la communication d'OrangeAnalyse du RSN "Plazza" et de la communication d'Orange
Analyse du RSN "Plazza" et de la communication d'OrangeThomas Malice
 
Faire de la recherche en sciences humaines avec le Libre - RMLL 2013
Faire de la recherche en sciences humaines avec le Libre - RMLL 2013 Faire de la recherche en sciences humaines avec le Libre - RMLL 2013
Faire de la recherche en sciences humaines avec le Libre - RMLL 2013 topaza_pyra
 

Similar a 201301 - Focus Neo4j (20)

FLUPA UX-Day 2012 - Ergonomie et design : Et demain ? - par Grégoire Gérard
FLUPA UX-Day 2012 - Ergonomie et design : Et demain ? - par Grégoire GérardFLUPA UX-Day 2012 - Ergonomie et design : Et demain ? - par Grégoire Gérard
FLUPA UX-Day 2012 - Ergonomie et design : Et demain ? - par Grégoire Gérard
 
Rezopole LyonIX : TunIXP workshop
Rezopole LyonIX : TunIXP workshopRezopole LyonIX : TunIXP workshop
Rezopole LyonIX : TunIXP workshop
 
Présentation SMX Paris 2013 : Comment développer une vraie stratégie de conte...
Présentation SMX Paris 2013 : Comment développer une vraie stratégie de conte...Présentation SMX Paris 2013 : Comment développer une vraie stratégie de conte...
Présentation SMX Paris 2013 : Comment développer une vraie stratégie de conte...
 
Présentation générale eZ Publish
Présentation générale eZ PublishPrésentation générale eZ Publish
Présentation générale eZ Publish
 
Les principaux logiciels pour l'analyse de réseau
Les principaux logiciels pour l'analyse de réseauLes principaux logiciels pour l'analyse de réseau
Les principaux logiciels pour l'analyse de réseau
 
Présentation GeolLLibre PostGeol
Présentation GeolLLibre PostGeolPrésentation GeolLLibre PostGeol
Présentation GeolLLibre PostGeol
 
Publication et intégration de données ouvertes
Publication et intégration de données ouvertesPublication et intégration de données ouvertes
Publication et intégration de données ouvertes
 
Normandy JUG - Elasticsearch
Normandy JUG - ElasticsearchNormandy JUG - Elasticsearch
Normandy JUG - Elasticsearch
 
Comment apprend-on aujourd'hui ?
Comment apprend-on aujourd'hui ?Comment apprend-on aujourd'hui ?
Comment apprend-on aujourd'hui ?
 
Global Azure Bootcamp 2016 - Lyon : DevOps Datascience
Global Azure Bootcamp 2016 - Lyon : DevOps Datascience Global Azure Bootcamp 2016 - Lyon : DevOps Datascience
Global Azure Bootcamp 2016 - Lyon : DevOps Datascience
 
Habilitation to conduct research (Habilitation à diriger des recherches)
Habilitation to conduct research (Habilitation à diriger des recherches)Habilitation to conduct research (Habilitation à diriger des recherches)
Habilitation to conduct research (Habilitation à diriger des recherches)
 
Présentation au GéoCamp Lyon de janvier2014
Présentation au GéoCamp Lyon de janvier2014Présentation au GéoCamp Lyon de janvier2014
Présentation au GéoCamp Lyon de janvier2014
 
Iut lyon 1 introduction à l'agilité - 20 juin 2012
Iut lyon 1   introduction à l'agilité - 20 juin 2012Iut lyon 1   introduction à l'agilité - 20 juin 2012
Iut lyon 1 introduction à l'agilité - 20 juin 2012
 
Systematic/NEOPPOD dévoilent la première base de données objets NoSQL Open So...
Systematic/NEOPPOD dévoilent la première base de données objets NoSQL Open So...Systematic/NEOPPOD dévoilent la première base de données objets NoSQL Open So...
Systematic/NEOPPOD dévoilent la première base de données objets NoSQL Open So...
 
3. open street map frédéric RODRIGO
3. open street map frédéric RODRIGO3. open street map frédéric RODRIGO
3. open street map frédéric RODRIGO
 
BreizhCamp 2015 - D3js par l'exemple
BreizhCamp 2015 - D3js par l'exempleBreizhCamp 2015 - D3js par l'exemple
BreizhCamp 2015 - D3js par l'exemple
 
Culture du Programmeur
Culture du ProgrammeurCulture du Programmeur
Culture du Programmeur
 
Youtube : 10 commandements de la génération d'audience - SMX Paris 2013
Youtube : 10 commandements de la génération d'audience - SMX Paris 2013Youtube : 10 commandements de la génération d'audience - SMX Paris 2013
Youtube : 10 commandements de la génération d'audience - SMX Paris 2013
 
Analyse du RSN "Plazza" et de la communication d'Orange
Analyse du RSN "Plazza" et de la communication d'OrangeAnalyse du RSN "Plazza" et de la communication d'Orange
Analyse du RSN "Plazza" et de la communication d'Orange
 
Faire de la recherche en sciences humaines avec le Libre - RMLL 2013
Faire de la recherche en sciences humaines avec le Libre - RMLL 2013 Faire de la recherche en sciences humaines avec le Libre - RMLL 2013
Faire de la recherche en sciences humaines avec le Libre - RMLL 2013
 

Más de lyonjug

DIY: Analyse statique en Java
DIY: Analyse statique en JavaDIY: Analyse statique en Java
DIY: Analyse statique en Javalyonjug
 
Lightning talk LyonJUG février 2016 - Ansible
Lightning talk LyonJUG février 2016 - AnsibleLightning talk LyonJUG février 2016 - Ansible
Lightning talk LyonJUG février 2016 - Ansiblelyonjug
 
Introduction LyonJUG décembre 2015
Introduction LyonJUG décembre 2015Introduction LyonJUG décembre 2015
Introduction LyonJUG décembre 2015lyonjug
 
Introduction LyonJUG Janvier 2016
Introduction LyonJUG Janvier 2016Introduction LyonJUG Janvier 2016
Introduction LyonJUG Janvier 2016lyonjug
 
Presentation jug novembre2015
Presentation jug novembre2015Presentation jug novembre2015
Presentation jug novembre2015lyonjug
 
201502 - Integration Testing
201502 - Integration Testing201502 - Integration Testing
201502 - Integration Testinglyonjug
 
201311 - Middleware
201311 - Middleware201311 - Middleware
201311 - Middlewarelyonjug
 
201303 - Golo
201303 - Golo201303 - Golo
201303 - Gololyonjug
 
201303 - Java8
201303 - Java8201303 - Java8
201303 - Java8lyonjug
 
201305 - Lambda by R. Forax
201305 - Lambda by R. Forax201305 - Lambda by R. Forax
201305 - Lambda by R. Foraxlyonjug
 
201301 - Panorama NoSQL
201301 - Panorama NoSQL201301 - Panorama NoSQL
201301 - Panorama NoSQLlyonjug
 
201209 Lombok & Guava
201209 Lombok & Guava201209 Lombok & Guava
201209 Lombok & Guavalyonjug
 
201209 LT Clojure
201209 LT Clojure201209 LT Clojure
201209 LT Clojurelyonjug
 
Spring Batch Workshop (advanced)
Spring Batch Workshop (advanced)Spring Batch Workshop (advanced)
Spring Batch Workshop (advanced)lyonjug
 
Spring Batch Workshop
Spring Batch WorkshopSpring Batch Workshop
Spring Batch Workshoplyonjug
 
Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...
Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...
Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...lyonjug
 
GlassFish, Application versioning et rolling upgrade en haute disponibilité
GlassFish, Application versioning et rolling upgrade en haute disponibilitéGlassFish, Application versioning et rolling upgrade en haute disponibilité
GlassFish, Application versioning et rolling upgrade en haute disponibilitélyonjug
 
Développement dans le cloud - Sacha Labourey
Développement dans le cloud - Sacha LaboureyDéveloppement dans le cloud - Sacha Labourey
Développement dans le cloud - Sacha Laboureylyonjug
 
Présentation Granite ds lyon 2011 par William Draï
Présentation Granite ds lyon 2011 par William DraïPrésentation Granite ds lyon 2011 par William Draï
Présentation Granite ds lyon 2011 par William Draïlyonjug
 
20091020 JPA2
20091020 JPA220091020 JPA2
20091020 JPA2lyonjug
 

Más de lyonjug (20)

DIY: Analyse statique en Java
DIY: Analyse statique en JavaDIY: Analyse statique en Java
DIY: Analyse statique en Java
 
Lightning talk LyonJUG février 2016 - Ansible
Lightning talk LyonJUG février 2016 - AnsibleLightning talk LyonJUG février 2016 - Ansible
Lightning talk LyonJUG février 2016 - Ansible
 
Introduction LyonJUG décembre 2015
Introduction LyonJUG décembre 2015Introduction LyonJUG décembre 2015
Introduction LyonJUG décembre 2015
 
Introduction LyonJUG Janvier 2016
Introduction LyonJUG Janvier 2016Introduction LyonJUG Janvier 2016
Introduction LyonJUG Janvier 2016
 
Presentation jug novembre2015
Presentation jug novembre2015Presentation jug novembre2015
Presentation jug novembre2015
 
201502 - Integration Testing
201502 - Integration Testing201502 - Integration Testing
201502 - Integration Testing
 
201311 - Middleware
201311 - Middleware201311 - Middleware
201311 - Middleware
 
201303 - Golo
201303 - Golo201303 - Golo
201303 - Golo
 
201303 - Java8
201303 - Java8201303 - Java8
201303 - Java8
 
201305 - Lambda by R. Forax
201305 - Lambda by R. Forax201305 - Lambda by R. Forax
201305 - Lambda by R. Forax
 
201301 - Panorama NoSQL
201301 - Panorama NoSQL201301 - Panorama NoSQL
201301 - Panorama NoSQL
 
201209 Lombok & Guava
201209 Lombok & Guava201209 Lombok & Guava
201209 Lombok & Guava
 
201209 LT Clojure
201209 LT Clojure201209 LT Clojure
201209 LT Clojure
 
Spring Batch Workshop (advanced)
Spring Batch Workshop (advanced)Spring Batch Workshop (advanced)
Spring Batch Workshop (advanced)
 
Spring Batch Workshop
Spring Batch WorkshopSpring Batch Workshop
Spring Batch Workshop
 
Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...
Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...
Engagement des sociétés d'Ingénierie dans la contribution open source : un ce...
 
GlassFish, Application versioning et rolling upgrade en haute disponibilité
GlassFish, Application versioning et rolling upgrade en haute disponibilitéGlassFish, Application versioning et rolling upgrade en haute disponibilité
GlassFish, Application versioning et rolling upgrade en haute disponibilité
 
Développement dans le cloud - Sacha Labourey
Développement dans le cloud - Sacha LaboureyDéveloppement dans le cloud - Sacha Labourey
Développement dans le cloud - Sacha Labourey
 
Présentation Granite ds lyon 2011 par William Draï
Présentation Granite ds lyon 2011 par William DraïPrésentation Granite ds lyon 2011 par William Draï
Présentation Granite ds lyon 2011 par William Draï
 
20091020 JPA2
20091020 JPA220091020 JPA2
20091020 JPA2
 

201301 - Focus Neo4j

  • 1. NEO4J ET SON ECOSYSTÈME Sylvain ROUSSY Ingénieur conseil – HINNOYA sroussy@hinnoya.fr @SylvainRoussy JUG Lyon : – Neo4j et son ecosystème 15 Janvier 2013 – sroussy@hinnoya.fr JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 2. Plan Qu’est-ce que NEO4j ? Qu’est qu’une BDD orientée « Graphe » ? Pourquoi utiliser une BDD orientée « Graphe » ? A propos de NEO4j… NEO4j avec Java NEO4j sans Java Interroger NEO4j Intégrer NEO4j S’abstraire de NEO4j Outillage Conclusions JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 3. QU’EST-CE QUE NEO4J ? JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 4. Qu’est-ce que NEO4j ? JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 5. Qu’est-ce que NEO4j ? JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr 5
  • 6. Qu’est-ce que NEO4j ? JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr 6
  • 7. Qu’est-ce que NEO4j ? JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr 7
  • 8. Qu’est-ce que NEO4j ? JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr 8
  • 9. Qu’est-ce que NEO4j ? JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr 9
  • 10. Qu’est-ce que NEO4j ? JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr 10
  • 11. QU’EST-CE QU’UNE BASE DE DONNÉES ORIENTÉE « GRAPHE »? JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 12. Base de données orientée « Graphe » * Une base dont la structure est représentée sous forme de « graphe » (théorie des graphes) Ce graphe est basé sur des Nœuds et des Arcs NEO4j : Node – Relationships Blueprints : Vertex – Edges JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 13. Base de données orientée « Graphe » * Dans cette structure de données, nous considérons que la relation est aussi importante que l’entité La relation est identifiée par un nom (sémantique) JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 14. Quelques bases de données orientées « Graphe » NEO4j (Java) Neo Technology OrientDB (Java) Nuvela Base DEX (C++) Sparsity Technologies TinkerGraph (Java) TinkerPop JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 15. POURQUOI UTILISER UNE BASE DE DONNÉES ORIENTÉE « GRAPHE »? JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 16. Reconnaître des structures JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 17. Reconnaître des structures JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 18. Reconnaître des structures JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 19. Reconnaître des structures Quels sont, dans mon cercle d’amis, les victimes et les revendeurs de mes livres ? Sylvain -> « PRETE » -> Ami Ami -> « VENDS » -> Ami2 Ami2 -> « OFFRE » -> Sylvain JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 20. Cas d’utilisations Où la relation est importante ! Réseaux sociaux (Viadeo, LinkedIn, etc.) Où la reconnaissance de structure est importante ! Fraudes, Excellences Mes amis qui n’en sont pas… Où le chemin est important ! (Shortest Path, …) Généalogie (Héritage) Système d’information géographique Séquence (Groupware, etc.) JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 21. A PROPOS DE NEO4J JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 22. A propos de NEO4j Editeur : Neo Technology (créée en 2000 – Suède/USA) Version stable à ce jour : 1.8.1 (14/12/2012) Version en cours de stabilisation : 1.9 M03 30 Milliards de nœuds 30 Milliards de relations 64 Milliards de propriétés www.neo4j.org « HEROKU » JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 23. A propos de NEO4j Deux types d’utilisation : Embedded GraphDatabaseService graph = new EmbeddedGraphDatabase("/var/mydb"); Server (JETTY) REST API JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 24. NEO4J AVEC JAVA JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 25. Créer des nœuds… // Création d’un premier nœud Node node1 = graph.createNode(); node1.setProperty("name", "Base de données"); // Création d’un second nœud Node node2 = graph.createNode(); node1.setProperty("name", « NEO4j"); JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 26. … et créer des relations // Création d'une relation "EST" du second noeud vers le premier Relationship rel = node2.createRelationshipTo(node1, DynamicRelationshipType.withName("EST")) ; JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 27. Indexer des propriétés (Lucène) Basé sur triplette : propriété, valeur, objet Implicitement par configuration node_auto_indexing=true node_keys_indexable=name,age relationship_auto_indexing=true relationship_keys_indexable=name,age Explicitement Par le code (IndexManager) Manuellement (Shell) REST JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 28. Utiliser les transactions (ACID) // Ouverture et Commit d’une transaction Transaction tx = graph.beginTx (); […] tx.success (); // RollBack tx.failure (); Fermeture de la transaction (relâchement des verrous) tx.finish (); JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 29. NEO4J SANS JAVA JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 30. Créer des nœuds… // Création d’un premier noeud POST http://localhost:7474/db/data/node Accept: application/json Content-Type: application/json { "name" : "base de données" } // Création d’un second noeud POST http://localhost:7474/db/data/node Accept: application/json Content-Type: application/json { "name" : « NEO4j" } JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 31. … et créer des relations // Création d’un premier noeud POST http://localhost:7474/db/data/node/1/relationships Accept: application/json Content-Type: application/json { "to" : "http://localhost:7474/db/data/node/0", "type" : « EST" } JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 32. Batch Transaction atomique POST http://localhost:7474/db/data/batch Accept: application/json Content-Type: application/json JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 33. INTERROGER NEO4J JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 34. CYPHER : Langage d’interrogation Langage d’interrogation propriétaire à NEO4j Proche de SQL Permet l’interrogation et la modification des données Basé sur quatre éléments clés : START : nœud(s) ou relation(s) de départ MATCH : motif relationnel WHERE : restriction RETURN : éléments à retourner JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 35. CYPHER : Langage d’interrogation Quels sont, dans mon cercle d’amis, les victimes et les revendeurs de mes livres ? START sylvain=node(0) MATCH sylvain-[:PRETE]->ami-[:VENDS]->ami2-[:OFFRE]->sylvain RETURN ami.Nom AS REVENDEUR, ami2.Nom AS VICTIME JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 36. CYPHER : Langage d’interrogation CYPHER s’utilise depuis : Le code JAVA L’API REST La console d’administration Web Le Shell JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 37. Code Java : Utiliser un « traversier » (Traversal) TraversalDescription description = Traversal.description() .breadthFirst() .relationships (PRETE, Direction.OUTGOING ) .relationships(VENDS, Direction.OUTGOING ) .relationships(OFFRE, Direction.OUTGOING ) .evaluator( Evaluators.toDepth( 5 ) ) .uniqueness (Uniqueness.RELATIONSHIP_PATH); JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 38. Code Java : Utiliser un traversier (Traversal) Node sylvain = graph.getNodeById(0); for (Path position : description.traverse( sylvain ) ) { System.out.println ("Path :"+position.toString()); } Path :(0) Path :(0)--[PRETE,1]-->(2) Path :(0)--[PRETE,1]-->(2)--[VENDS,2]-->(3) Path :(0)--[PRETE,1]-->(2)--[VENDS,2]-->(3)--[OFFRE,3]-->(0) JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 39. GREMLIN : Langage d’interrogation (Tinkerpop) GREMLIN est Groovy NEO4J, Tinkergraph, DEX, OrientDB, etc. JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 40. INTÉGRER NEO4J (DAO) JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 41. En pure Java public class Person { static final String NAME = "name"; private final Node underlyingNode; Person( Node personNode ) { this.underlyingNode = personNode; } protected Node getUnderlyingNode() { return underlyingNode; } public String getName() { return (String)underlyingNode.getProperty( NAME ); } […] JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 42. Avec Spring DATA @NodeEntity public class Movie { @GraphId Long id; @Indexed(type = FULLTEXT, indexName = "search") String title; Person director; @RelatedTo(type="ACTS_IN", direction = INCOMING) Set<Person> actors; @RelatedToVia(type = "RATED") Iterable<Rating> ratings; @Query("start movie=node({self}) match movie-->genre<--similar return similar") Iterable<Movie> similarMovies; } http://www.springsource.org/spring-data/neo4j JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 43. S’ABSTRAIRE DE NEO4J JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 44. Tinkerpop JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 45. Tinkerpop : Blueprints Graph blueGraph = new Neo4jGraph("/var/mydb"); Vertex v1 = blueGraph.addVertex(1); v1.setProperty("name", "Base de données"); Vertex v2 = blueGraph.addVertex(2); v2.setProperty("name", "NEO4j"); Edge rel = blueGraph.addEdge(3, v1, v2, "EST"); JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 46. Tinkerpop : Frames public interface FramesPerson extends VertexFrame { @Property ("lastname") public String getLastname (); @Property ("lastname") public void setLastName (String lastname); @Adjacency (label = "KNOWS") public Iterable<FramePerson> getFriends (); @Adjacency (label = "KNOWS") public void addFriend (FramesPerson friend); } JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 47. OUTILLAGE JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 48. Shell Permet la consultation d’une base en cours d’utilisation ! $> Neo4jShell -path /var/mydb -readonly JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 49. Console Web - Dashboard http://monserveur_db:7474 JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 50. Console Web – Data browser JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 51. Console Web – Console JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 52. Neoclipse JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 53. POURQUOI NEO4J ? JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 54. Pourquoi NEO4j ? Support d’un éditeur : Neo Technology • Version communautaire (GPL) • Version Advanced (AGPL) • Advanced monitoring • Version Enterprise (AGPL) • Sauvegarde à chaud • HA Documentation dense (+500 pages pour le manuel) JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 55. CONCLUSION JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 56. Conclusion Représentation naturelle des relations « Data driven » Savoir-faire en cours… JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr
  • 57. Merci de votre attention ! Questions ? JUG Lyon : – Neo4j et son écosystème 15 Janvier 2013 – sroussy@hinnoya.fr