SlideShare une entreprise Scribd logo
1  sur  59
Neo4j, what else???


 Ron van Weverwijk
AGENDA

• Positionering   binnen NoSql
• Wat   is een graph (Graaf)
• Neo4j

• Neoclipse

• Kamer   van Koophandel
• Vragen?
VIER NOSQL CATEGORIEËN
KEY-VALUE STORE
COLUMN FAMILY (BIGTABLE)
DOCUMENT DATABASES
GRAPH DATABASES
WAT IS EEN GRAPH?

• Leonhard   Euler (1736)

• Seven   Bridges of Königsberg




                    http://en.wikipedia.org/wiki/Seven_Bridges_of_Königsberg
WAAR ZIJN GRAPHS GOED
          IN?
http://inmaps.linkedinlabs.com/
NEO4J
Experiment: Hoe zijn 2 nodes verbonden?




• 1000   personen

• gemiddeld   50 relaties

• Zijn
     2 personen verbonden
 met maximaal 4 stappen?

• Warme    cache
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
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
NODES (VERTICES)
RELATIONS (EDGES)
PROPERTIES OP NODES

    type: persoon                   type: team
      name: Ron                      name: S2




                    type: persoon
                    name: Corjan
GETYPEERDE RELATIES

                     speelt_in
    type: persoon                   type: team
      name: Ron                      name: S2




                                     coach_van


                    type: persoon
                    name: Corjan
PROPERTIES OP RELATIES

                      speelt_in
     type: persoon                   type: team
       name: Ron                      name: S2
                      jaar: 2011



                                      coach_van
                                      jaar: 2011

                     type: persoon
                     name: Corjan
PROPERTIES

• Alle    Java primitieven kunnen gebruikt worden:

  • String

  • boolean

  • int

  • double

  • ...
SCHEMA-LESS DATABASE
           !=
DATABASE WITHOUT DESIGN
Doctor Who (Jim Webber)
FILEBASED
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 );
CREATE NODES
Transaction tx = db.beginTx();
try {
  Node ron = db.createNode();
  ron.setProperty("name", "Ron van Weverwijk");
  tx.success();
} finally {
  tx.finish();
}
CREATE RELATIONS
Transaction tx = db.beginTx();
try {
  Node ron = db.createNode();
  ron.setProperty("name", "Ron van Weverwijk");

 Node lindy = db.createNode();
 susan.setProperty("name", "Lindy van Weverwijk - Tersteeg");


  lindy.createRelationshipTo(ron,
             DynamicRelationshipType.withName("MARIED"));

   tx.success();
} finally {
  tx.finish();
}
RELATIONS
DynamicRelationshipType.withName("MARIED");

public enum RelationTypes implements RelationshipType{
      MARIED,FRIENDS,LIVING
}

public class MariedRelationship implements
RelationshipType{
  public String name() {
      return "maried";
  }
}
TRAVERSING
TraversalDescription traversal =
 new TraversalDescriptionImpl()
          .depthFirst()
          .uniqueness(Uniqueness.RELATIONSHIP_PATH);

Iterable<Path> paths = traversal.traverse(startNode);

                   Ron            Lindy




                          Adres
INCLUDE_AND_PRUNE
INCLUDE_AND_CONTINUE
 EXCLUDE_AND_ PRUNE
EXCLUDE_AND_CONTINUE
ALGORITHMS

• find   all paths

• find   all simple paths

• find   the shortest path

• Dijkstra   algorithm

• The   a* search algorithm
INDEXING:
GRAPHS ARE THERE OWN
        INDEX
LUCENE

Transaction tx = db.beginTx();
 try {
    Node ron = db.createNode();
 	

 ron.setProperty("name", "Ron van Weverwijk");
       Index<Node> people = db.index().forNodes("people");
       people.add(ron, "name", ron.getProperty("name"));
        tx.success();
    } finally {
      tx.finish();
}
HORIZONTAL PARTITIONING
       IS HARD




      Duur om te doorlopen
HIGH AVAILABLE
EVENTUALLY CONSISTENT
NEOCLIPSE


• eclipse   applicatie

• bekijk   je Neo4j graph

• toevoegen     / verwijderen nodes en relations
player_of
Mathieu                                 coach_of
                           S2                            Corjan
          player_of



               commission_member_of
     Ron                              Webcommissie

                                  commission_member_of



                         Dennis
NODE WRAPPING

public interface Member {

    String getName();

    void setName(String name);

    // .....
}
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);
    }
}
KAMER VAN KOOPHANDEL


• Instelling   van en voor het bedrijfsleven

• Registreren

• Informeren

• Stimuleren
OPDRACHT



• Hoe   zijn bedrijven onderling verbonden?
PROBLEEM

• HuidigeDB2 database was niet geschikt om graph
 gerelateerde vragen te beantwoorden

• Huidige   systeem kon maximaal 3 niveaus terug geven

• Response    tijden waren te hoog

• Belasting   van het huidige systeem was te zwaar
REGISTRATIE:
FOCUS OP ORGANISATIE
        Uw keuken
          B.V.


              Bestuurder



         Bob de
         Bouwer
IN NEO4J LEGGEN WE DE
  FOCUS OP DE RELATIE

     Uw keuken                Zijn keuken
       B.V.                       B.V.


                 Bestuurder        Bestuurder



                   Bob de
                   Bouwer
NIET ALLEEN 1 NIVEAU MAAR
       ALLE NIVEAU’S
                      Haar keuken
                          B.V.



                             Bestuurder


                      Zijn keuken
      Uw keuken           B.V.            Schaakvereniging
        B.V.                                 Schaatmat

                             Bestuurder
         Bestuurder                        Bestuurder

                       Bob de
                       Bouwer
VERBETERING

•1   vraag per 5 sec   • 15   vragen per sec
CIJFERS EN FEITEN

• 11   900 000 nodes
• 12   000 000 relaties
•2   gb geheugen
• 12   gb diskspace
• AIX   Power 7,
 0.7 CPU @ 3.0GHZ
HUIDIGE OPZET




DB2       Neo4j
GELEERDE LESSEN


• Blijf   tekenen: Maak het netwerk visueel

• Maak     proefopzetjes en refactor

• Pas     node wrapping toe om het domein simpel te houden

• Typeer     nodes
NEO4J 1.5


• kleinere   disk-footprint

• Cypher     verbeteringen

• HA   verbeteringen

• Verbeterde    webadmin
NEO4J SHORTLIST EU
CREDITS
                                 KvK




                  Kees van den             Silvester van   Ron van
Jasper Feenstra
                      Berg                     der Bijl    Weverwijk




 Feenstra IT                 Four Scouts                     Xebia
Ron van Weverwijk
rvanweverwijk@xebia.com

Contenu connexe

En vedette

Eleccions a l’escola
Eleccions a l’escolaEleccions a l’escola
Eleccions a l’escola
terraprims
 
Bracelets by Adriana Laura Mendez
Bracelets by Adriana Laura MendezBracelets by Adriana Laura Mendez
Bracelets by Adriana Laura Mendez
Punto Crochet
 
Desenmascarando los mitos de gestión/ Debunking Management Myths
Desenmascarando los mitos de gestión/ Debunking Management MythsDesenmascarando los mitos de gestión/ Debunking Management Myths
Desenmascarando los mitos de gestión/ Debunking Management Myths
chapudin
 
Bangladesh presentation
Bangladesh presentationBangladesh presentation
Bangladesh presentation
Hassan Nabi
 
04 Progettazione Logica
04  Progettazione Logica04  Progettazione Logica
04 Progettazione Logica
guestbe916c
 
Dn12 u3 a22_ggab
Dn12 u3 a22_ggabDn12 u3 a22_ggab
Dn12 u3 a22_ggab
cutegatita
 
Presentación proyecto
Presentación proyectoPresentación proyecto
Presentación proyecto
Miyam Es WeNa
 
Presentación de redes sociales
Presentación de redes socialesPresentación de redes sociales
Presentación de redes sociales
racamposm
 
Educação a distância
Educação a distânciaEducação a distância
Educação a distância
Vanessa
 

En vedette (19)

Ensaladas by savipi
Ensaladas by savipiEnsaladas by savipi
Ensaladas by savipi
 
Niños traviesos
Niños traviesosNiños traviesos
Niños traviesos
 
Eleccions a l’escola
Eleccions a l’escolaEleccions a l’escola
Eleccions a l’escola
 
Bracelets by Adriana Laura Mendez
Bracelets by Adriana Laura MendezBracelets by Adriana Laura Mendez
Bracelets by Adriana Laura Mendez
 
L’hivern
L’hivernL’hivern
L’hivern
 
Desenmascarando los mitos de gestión/ Debunking Management Myths
Desenmascarando los mitos de gestión/ Debunking Management MythsDesenmascarando los mitos de gestión/ Debunking Management Myths
Desenmascarando los mitos de gestión/ Debunking Management Myths
 
O que pensam os natalenses sobre a COPA da FIFA em Natal
O que pensam os natalenses sobre a  COPA da FIFA em NatalO que pensam os natalenses sobre a  COPA da FIFA em Natal
O que pensam os natalenses sobre a COPA da FIFA em Natal
 
Bangladesh presentation
Bangladesh presentationBangladesh presentation
Bangladesh presentation
 
04 Progettazione Logica
04  Progettazione Logica04  Progettazione Logica
04 Progettazione Logica
 
Dn12 u3 a22_ggab
Dn12 u3 a22_ggabDn12 u3 a22_ggab
Dn12 u3 a22_ggab
 
Presentación proyecto
Presentación proyectoPresentación proyecto
Presentación proyecto
 
Pirata
PirataPirata
Pirata
 
Fysieke werkplek HNW Marc Hoes
Fysieke werkplek HNW Marc HoesFysieke werkplek HNW Marc Hoes
Fysieke werkplek HNW Marc Hoes
 
Presentación de redes sociales
Presentación de redes socialesPresentación de redes sociales
Presentación de redes sociales
 
El comercio
El comercioEl comercio
El comercio
 
Maria mercado
Maria mercadoMaria mercado
Maria mercado
 
Educação a distância
Educação a distânciaEducação a distância
Educação a distância
 
Aplicativo Ifreex tutorial
Aplicativo Ifreex tutorialAplicativo Ifreex tutorial
Aplicativo Ifreex tutorial
 
Diego lucena
Diego lucenaDiego lucena
Diego lucena
 

Neo4J, what else?