Descripció
Neo4j és una base de dades orientada a grafs implementada en Java. Aquest tipus de bases de dades representen les dades i les seves relacions mitjançant grafs, és a dir, utilitzant nodes i arestes. Els nodes o vèrtexs es representen gràficament com a cercles, mentre que les arestes es representen amb línies. Entre els grafs que admet en trobem de dirigits, de no dirigits, amb pesos, amb etiquetes i de propietat. Entre les seves característiques principals, destaquem que permet definir propietats (atributs) en els nodes i les relacions, a més d’establir els tipus dels nodes juntament amb la definició d’índexs. És important destacar que utilitza un sistema de transaccions ACID (atomicitat, consistència, aïllament i durabilitat).
Neo4j utilitza un llenguatge propi per a les consultes denominat Cypher, el qual és bastant intuïtiu, ja que per a representar les relacions utilitza fletxes i per a representar nodes utilitza parèntesis. D’aquesta manera, s’aconsegueix que les consultes a Cypher siguin molt gràfiques.
Enllaç al recurs
Exemples d’ús
El llenguatge utilitzat a Neo4j és Cypher, per la qual cosa el nostre següent exemple estarà relacionat amb la seva utilització. Per a això emprarem un model senzill de pel·lícules, actors i directors com a exemple. Suposem que hi ha un enllaç entre una pel·lícula i una persona (el director), i també entre la pel·lícula i els actors.
En el següent exemple, volem obtenir les pel·lícules i el nom de director de les pel·lícules en les quals ha actuat l’actor Kevin Bacon:
1 match (kevin) -[:ACTED_IN] -> (movie) <- [:DIRECTED] - (director) 2 where kevin.name = 'Kevin Bacon' 3 return kevin, director, movie
- A la línia 1 s’estableix la relació d’actor de kevin (la variable que servirà per a identificar els actors) amb la pel·lícula, i la relació de direcció de la pel·lícula per part del director.
- A la línia 2 establim la condició que l’actor ha de ser Kevin Bacon.
- La línia 3 indica els nodes que cal retornar, concretament: kevin, director i pel·lícula. En aquest cas, podem veure a la sortida que les pel·lícules es representen en color verd, mentre que en morat es representen les persones, tant Kevin com els directors, atès que pel·lícules i persones són dues classes o conceptes diferents.