Grafiekdatabase

Een grafiekdatabase, ook wel semantische database genoemd, is een softwaretoepassing die is ontworpen om netwerkgrafieken op te slaan, te bevragen en te wijzigen. Een netwerkgrafiek is een visuele constructie die bestaat uit knooppunten en randen. Elk knooppunt vertegenwoordigt een entiteit (zoals een persoon) en elke rand vertegenwoordigt een verbinding of relatie tussen twee knooppunten. 

Grafiekdatabases bestaan al lang in een of andere vorm. Een stamboom is bijvoorbeeld een heel eenvoudige grafiekdatabase. 

Het concept om databases te gebruiken om relaties digitaal in kaart te brengen, begon rond 2015 populair te worden in het bedrijfsleven, toen de toegenomen rekenkracht, in-memory computing, en overeengekomen standaarden het concept van academici naar real-world toepassingen in het bedrijfsleven en enterprise computing verplaatsten.

Grafiekdatabases zijn zeer geschikt voor het analyseren van onderlinge verbindingen, en daarom is er veel belangstelling voor het gebruik van grafiekdatabases om gegevens uit sociale media te ontginnen. Grafiekdatabases zijn ook nuttig voor het werken met gegevens in bedrijfsdisciplines die complexe relaties en dynamische schema's met zich meebrengen, zoals supply chain management, het identificeren van de bron van een IP-telefonieprobleem en het creëren van "klanten die dit kochten, keken ook naar..." aanbevelingsengines.

Het concept achter het grafisch maken van een database wordt vaak toegeschreven aan de 18e-eeuwse wiskundige Leonhard Euler.

De structuur van een grafiekdatabase

Traditioneel geclassificeerd als een type NoSQL-database, worden grafiekdatabases soms aangeduid als triple stores. Dat komt omdat dit type database een speciale index gebruikt die informatie over knooppunten, randen en de relatie tussen hen opslaat in groepen van drie.

Een triple, dat ook wel een assertie wordt genoemd, heeft drie hoofdvelden: een subject, een predicaat en een object. Elk subject, predicaat of object wordt vertegenwoordigd door een unieke resource identifier (URI).

Hoe informatie wordt geïndexeerd

In een triple store bevat het eerste veld in de database de URI voor het subject, het tweede veld bevat de URI voor het predicaat en het derde veld bevat een URI voor het object.Hoewel er een aantal verschillende strategieën zijn die grafiekdatabases kunnen gebruiken om triples op te slaan, gebruiken de meeste een index die de drie primaire velden afkort tot {?s, ?p, ?o}. 

Bijv. als de visuele constructie voor een grafiek als volgt is gegeven:

Knooppunten en randen

Dan ziet de index er als volgt uit:

 Rij

?s

?p

?o

1

:Bob

:marriedTo

:Julie

2

:Bob

:brotherOf

:Steve

3

:Bob

:listensTo

:RockMusic

4

:Julie

:listensTo

:RockMusic

5

:Julie

:sisterInLawTo

:Steve

6

:Jim

:worksFor

:IBM

How information in a graph database is queried

Each triple in a graph database only gets stored once in the index. Just like relational databases, it's a simple process to do a straight lookup query in a graph database.

  • If the query is for what information is known about Bob, the indexer programming only needs to search rows 1-3 of the database.

The real power and speed of a graph database comes from indexing combinations of triples.  Here's are a few examples:

  • If the query is for who Bob is married to, the indexer will look for the predicate :marriedTo in rows 1-3 and then retrieve the matching object.  (Bob is married to Julie.) 
  • If the query is to identify everyone who listens to the same kind of music as Bob, the indexer will first ask { :Bob :listensTo ?o } and identify :RockMusic as the object.

In de tweede query zullen de resultaten :RockMusic in rij 3 en 4 teruggeven.  Het onderwerp in rij 3 is Bob zelf, dus wie het onderwerp in rij 4 is, zal de andere persoon zijn die naar rockmuziek luistert. (Het blijkt Julie te zijn, de vrouw van Bob.) 

Typen grafische databases

Historisch gezien zijn grafische databases verdeeld in twee categorieën -- eigendomsgrafieken die eenvoudigweg knooppunten en randen ondersteunen, en kennisgrafieken zoals de bovenstaande die zich kunnen richten op de semantische aspecten van gegevens en informatie opslaan in triples. In het algemeen  zijn de indexeringsstrategieën voor beide typen vergelijkbaar.

Verwacht wordt dat kennisgrafieken en eigenschappengrafieken in de loop van de tijd zullen samensmelten en dat de architectonische verschillen tussen deze twee typen grafiekdatabanken zullen vervagen.

Gebruiksscenario's voor grafische databases

Huidige gebruiksscenario's voor grafische databases zijn onder meer:

  • Zodat gegevensanalisten gegevensreeksen kunnen samenvoegen zonder complexe query's te hoeven maken en uitvoeren die combinaties van tabellen samenvoegen, zoals in het relationele databasemodel.
  • Help ontwikkelaars bij het opzetten van de back-end voor voice assistants door mogelijke gebruikersvragen in kaart te brengen met correcte antwoorden. 
  • Ontdek clusters van gebeurtenissen die op ongebruikelijke manieren met elkaar verbonden zijn om fraude op te sporen.
  • Onmiddellijke verbindingen onderzoeken om potentiële indirecte verbindingen voor aanbevelingsengines te identificeren.

Toekomst van grafiekdatabases

Grafiekdatabases zullen het komende decennium naar verwachting een belangrijke rol spelen op uiteenlopende gebieden als machine learning, Bayesiaanse analyse, data science en kunstmatige intelligentie, en ook helpen bij het beheer van bedrijfsgegevens en de uitwisseling van gegevens.

Een van de belangrijkste gevolgen voor dit type database zal zijn dat de gegevensfederatie wordt verbeterd. Wanneer kennis-grafieken gemakkelijk kunnen worden gefedereerd, zal de ene database in staat zijn om te bepalen dat het gegevens nodig heeft die het niet heeft en automatisch die gegevens ophalen uit andere kennis-grafieken. Met deze mogelijkheid is het waarschijnlijk dat federatie ontwikkelaars zal helpen blockchains te creëren die relevante metadata gebruiken om transacties in het bankwezen, financiën, stemmen en slimme contracten te authenticeren.

Zie ook:  social graph, graph search