NEO4J

Relationships matter

about

Bij de term 'database' wordt (voorlopig?) nog steeds eerst en vooral aan de relationele database gedacht.

In een relationele database wordt dat georganiseerd in tabellen. Elke tabel heeft een aantal vooraf gedefinieerde kolommen waarvoor telkens vooraf een vastbepaald data type vastgelegd wordt. Elk record in een tabel heeft een veld dat een unieke sleutel (primary key) voor dat record bevat. Relaties tussen tabellen worden bepaald door in een tabel verwijzingen naar de primary keys in andere tabellen op te nemen (de foreign keys).  De relatie zelf wordt nergens bewaard, maar wordt bij het uitvoeren van queries opgebouwd door middel van joins tussen primary en foreign keys. Doordat de relaties bij het uitvoeren van de queries telkens opnieuw opgebouwd moeten worden zijn relationele database (in tegenstelling tot wat hun naam impliceert) niet bijzonder goed in 'relaties'. 

Graph database hebben een aantal raakvlakken met relationele databases, maar werken met een aantal andere concepten

  • nodes: de primaire entiteit van een graph database. Nodes kunnen geannoteerd worden met 'properties' en kunnen gegroepeerd worden met 'labels'. Nodes kunnen vergeleken worden met de tabellen in een relationele database, maar moeten niet aan een vooraf gedefinieerd schema voldoen.
  • relationships bepalen de relatie tussen twee nodes. Relaties kunnen een (optionele) richting hebben, en kunnen net als nodes properties bevatten. Relaties worden net als nodes in de database bewaard.

cypher-query-data-relationships-nicole-white-graphconnect

Doordat relaties samen met de nodes in een graph database bewaard worden en niet voor elke query opnieuw berekend dienen te worden, opent dit mogelijkheden voor een hele reeks use cases die met relationele databases niet mogelijk zijn:

  • fraud detection: door het in real-time te monitoren van relaties kunnen 'fraud rings' en andere frauduleuze constructies opgespoord worden voor ze schade kunnen aanrichten.
  • netwerk and IT infrastructure monitoring: een graph is van nature zeer geschikt voor het opslaan en bevragen van de complexe relaties binnen netwerken en tussen de verschillende componenten in een IT-infrastructuur
  • social network analysis: analyse van relaties binnen een sociaal netwerk, detecteren van 'communities' en het afleiden of voorstellen van nieuwe relaties wordt relatief eenvoudig als alle bestaande relaties eenvoudig te bevragen zijn
  • recommendation engines: op basis van bestaande relaties kunnen via algoritmes voorstellen gedaan worden voor nieuwe relaties

De wiskundige theorie rond graphs is eeuwenoud, maar door de toegenomen rekenkracht van hardware en ontwikkelingen van voornamelijk marktleider Neo4J, zijn graph databases aan een razendsnelle opmars bezig.