SlideShare a Scribd company logo
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
Neo4J, what else?
Neo4J, what else?
WAAR ZIJN GRAPHS GOED
          IN?
http://inmaps.linkedinlabs.com/
Neo4J, what else?
Neo4J, what else?
Neo4J, what else?
Neo4J, what else?
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
Neo4J, what else?
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

More Related Content

PDF
Neo4 j, what else?
PDF
What Is Your Healthy Body Weight
PPSX
Se precisarem de mim
PDF
PDF
Revista da turma da mônica sobre drogas
PPSX
Construcciones automatizadas multiplataforma con TFS2010
DOCX
A sexualidade na era moderna
PPTX
Investimentos Na Inclusão Digital no Brasil
Neo4 j, what else?
What Is Your Healthy Body Weight
Se precisarem de mim
Revista da turma da mônica sobre drogas
Construcciones automatizadas multiplataforma con TFS2010
A sexualidade na era moderna
Investimentos Na Inclusão Digital no Brasil

Viewers also liked (19)

PPS
Niños traviesos
PPTX
Eleccions a l’escola
PPT
Bracelets by Adriana Laura Mendez
PPT
L’hivern
PPTX
Desenmascarando los mitos de gestión/ Debunking Management Myths
PDF
O que pensam os natalenses sobre a COPA da FIFA em Natal
PPT
Bangladesh presentation
PDF
04 Progettazione Logica
PPTX
Dn12 u3 a22_ggab
PPTX
Presentación proyecto
PDF
Pirata
PPTX
Fysieke werkplek HNW Marc Hoes
PDF
Presentación de redes sociales
PPTX
El comercio
PPTX
Maria mercado
PPTX
Educação a distância
PDF
Aplicativo Ifreex tutorial
PPTX
Diego lucena
Niños traviesos
Eleccions a l’escola
Bracelets by Adriana Laura Mendez
L’hivern
Desenmascarando los mitos de gestión/ Debunking Management Myths
O que pensam os natalenses sobre a COPA da FIFA em Natal
Bangladesh presentation
04 Progettazione Logica
Dn12 u3 a22_ggab
Presentación proyecto
Pirata
Fysieke werkplek HNW Marc Hoes
Presentación de redes sociales
El comercio
Maria mercado
Educação a distância
Aplicativo Ifreex tutorial
Diego lucena
Ad

Neo4J, what else?