Publicatie:NoSQL

Uit Meemoo Kennisbank
Naar navigatie springen Naar zoeken springen


Samenvatting

Wie ooit bibliotheek- of archiefdata in een databank heeft geïmporteerd, weet dat het vaak passen en meten is om gegevens heelhuids in een nieuw systeem te krijgen. Data ‘past’ vrijwel nooit vanzelf in een nieuw systeem. De oude datastructuur moet ‘gemapt’ worden naar een nieuwe en dat betekent data opknippen en samenvoegen waardoor ze soms onherkenbaar terug uit je systeem te voorschijn komt. NoSQL-databanken beloven een oplossing voor dit probleem. Geen mappings meer naar starre datastructuren, maar al je data doorzoekbaar in haar oorspronkelijke vorm. Maar wat is eigenlijk een NoSQL-databank? En klopt het dat ze je data intact laat?


Referentie
Titel NoSQL (Voorkeurstitel)
Locatie META Nummer 2018/3
Uitgever
Jaar van uitgave 2018
Rechten CC-BY-SA
Persistent ID


Auteur

Nastasia Vanderperren (PACKED vzw)

NoSQL

De SQL in NoSQL staat voor Structured Query Language, een taal waarmee je data in relationele databanken bevraagt, bewerkt en aanmaakt. NoSQL staat voor ‘geen SQL’ of ‘not only SQL’ en omvat een heel diverse familie niet-relationele databanken. Een relationele databank zoals MariaDB of Standaard:MySQL beschrijft zaken in tabellen die met kruisverwijzingen - de relaties - aan elkaar gekoppeld zijn. Hoe complexer je datastructuur, hoe meer tabellen nodig zijn om data in zijn oorspronkelijke vorm op te nemen. Dit maakt relationele databanken minder geschikt om complexe, fragmentaire data te beheren. Data moet eerst geherstructureerd worden, wat tijd en veel inhoudelijke compromissen vraagt.

NoSQL-databanken bestaan al even lang als relationele databanken, maar werden pas echt populair met de opkomst van het semantische web en big data. Ze zijn namelijk veel beter met rommelige data want ze hebben geen vooraf vastgelegde datastructuur nodig. Er zijn voor ons drie belangrijke soorten NoSQL-databanken.

Key-value stores

Dit zijn de eenvoudigste databanken. Informatie wordt bewaard als een lijst met id’s, bv. het ISBN-nummer 9789463187367, en waardes, bv. het boek ‘Het archief’. Informatie terugvinden gebeurt via een opzoeking van de id.

Key-value stores zoals Redis worden vooral gebruikt om vluchtige informatie, bv. de inhoud van je winkelkarretje in een webwinkel, snel terug te vinden. Het zijn erg performante databanken, maar voor archiefinventarissen zijn ze te beperkt. Je kunt geen relaties tussen data leggen.

Document stores

Document stores kunnen wel relaties leggen. Alle data over een object wordt in één document bewaard, zonder dat ze gesplitst moeten worden in verschillende tabellen. Zo’n document bestaat uit een verzameling van hiërarchisch geneste key-value paren, waarbij de key de attribuutnaam is (‘titel’) en de value de waarde (‘Het Archief’), die trouw de datastructuur weergeven. Door verschillende van die key-value paren in één document te plaatsen, kun je alle metadata over één boek of één archief in één document steken.

Document stores zoals MongoDB hebben dus geen vooraf gedefinieerde datastructuur nodig. Elk document in de databank kan zijn eigen structuur hebben en alle keys zijn afzonderlijk doorzoekbaar. Dat maakt ze erg geschikt om fragmentaire data toch goed doorzoekbaar te maken.

Graph stores

Voorbeeld van data in een graafdatabank.

Een graph store is een databank die data opslaat als ‘knopen’ en ‘bogen’: De ‘knoop’ is het object, de ‘boog’ is de relatie die twee of meerdere objecten met elkaar verbindt. De relatie tussen objecten is even belangrijk als de objecten zelf. Dit is een heel krachtig instrument om de betekenis van je data semantisch correct weer te geven. Het is ook een flexibel instrument omdat je eenvoudig nieuwe concepten en relaties kunt toevoegen.

Graph stores zoals Neo4j zijn erg geschikt om de betekenis en rijkdom van je data te behouden, maar ze vereisen wel een mapping van je data naar het systeem van ‘knopen’ en ‘bogen’. Je zult dus betekenisvolle relaties moeten definiëren tussen de verschillende data, zodat je later op basis van die relaties zoekvragen kunt stellen aan je databank.

Besluit

NoSQL-databanken zijn dus beter geschikt om rijke, gefragmenteerde data efficiënt doorzoekbaar te maken. Naargelang je noden kies je voor een key-value, document of graph store. Een nadeel is het ontbreken van een universele zoektaal zoals SQL voor relationele databanken. Elke NoSQL-databank heeft immers zijn eigen zoektaal.