20-02-2017 Door: Rick van der Lans

Wanneer is NoSQL nuttig?

Deel dit bericht

Veel organisaties worstelen met de vraag in welke gevallen ze een van de nieuwe NoSQL-producten moeten gebruiken. In deze blog worden enkele eisen beschreven waaraan systemen moeten voldoen wil het gebruik van NoSQL-technologie nuttig zijn.

Deze blog richt zich voornamelijk op de volgende categorieën van NoSQL-producten: de key-value stores (zoals DynamoDB en Riak), de document stores (zoals CouchDB en MongoDB), de column-family stores (zoals Apache HBase en Cassandra), maar niet de graph stores. Deze drie categorieën NoSQL-producten verschillen in de manier waarop ze gegevens organiseren, welke gegevensstructuren ze ondersteunen, hoe ze hun transactiemechanismen geïmplementeerd hebben, enzovoorts. Zelfs binnen een categorie kunnen de producten zeer divers zijn. In feite, als alle individuele producten in detail vergeleken worden, dan is de enige overeenkomst dat ze tot de NoSQL-categorie behoren. Dit is dus geen homogene verzameling van producten zoals de SQL-producten dat wel zijn.

Ongeacht deze verschillen zijn de meeste het best toepasbaar bij het ontwikkelen van systemen die aan de volgende eisen voldoen:

Transactioneel: Het systeem moet transactioneel van aard zijn. De meeste NoSQL-producten zijn niet sterk in hun ondersteuning voor analyses en complexe rapportages. Ze ondersteunen hiervoor niet de juiste interne functionaliteit. Wel zijn ze buitengewoon goed in het uitvoeren van transacties. Dit is dan ook waar de kracht van de NoSQL-producten ligt.

Zware transactionele workload: Het systeem moet een groot aantal transacties en/of concurrent gebruikers ondersteunen. Het zou overdreven zijn om een transactioneel systeem met een NoSQL-product te ontwikkelen dat hooguit vijftig transacties per uur verwerkt. Dan is een traditionelere technologie meer op zijn plaats. NoSQL-producten zijn ontworpen voor het bouwen van systemen die big data manipuleren en een zware transactionele workload ondersteunen.

Single-record transacties: Eén van de technische redenen waarom NoSQL-producten een grote transactionele werklast aankunnen, is dat zij een eenvoudig concurrency-mechanisme ondersteunen dat weinig overhead kent. Dit mechanisme ondersteunt echter geen multi-tabel of multi-record transacties. Transacties zijn beperkt tot verwerken van één record in één tabel. Dit vereenvoudigt het concurrency-mechanisme en verbetert daardoor de transactionele schaalbaarheid. Het systeem moet dan wel met deze beperking kunnen werken.

‘Massive Data Ingestion’: Het systeem moet in staat zijn enorme hoeveelheden gegevens in een korte periode te laden. NoSQL-producten kunnen uitstekend omgaan met dergelijke hoeveelheden, waardoor zij geschikt zijn voor, bijvoorbeeld, weblog- en sensoromgevingen.

Eenvoudige rapportage: Het systeem hoeft uitsluitend eenvoudige queries uit te voeren, zoals point queries. Voorbeelden van point queries zijn: Zoek factuur AB457 of Zoek de omschrijving van product 5792. Dit soort queries zullen de transactionele werklast niet verstoren. De meeste NoSQL-producten hebben geen functionele eigenschappen voor het specificeren van complexe queries noch de benodigde optimalisatiemogelijkheden.

Dynamische gegevensstructuren: Voor sommige systemen is het noodzakelijk dat gegevensstructuren gemakkelijk gewijzigd kunnen worden. NoSQL-producten ondersteunen dynamische gegevensstructuren. Bij dynamische gegevensstructuren kunnen kolommen of elementen gemakkelijk toegevoegd of gewijzigd worden. Wanneer een nieuw record wordt toegevoegd en het bevat een nieuw element of nieuwe kolom, dan zal het NoSQL-product dit record verwerken zonder dat alle andere records in de tabel gereorganiseerd moeten worden.

Complexe gegevensstructuren: Sommige systemen zijn gemakkelijker te ontwerpen wanneer de gegevens die logisch bij elkaar horen ook bij elkaar opgeslagen zijn, ook als dat betekent dat de gegevensstructuren sterk gedenormaliseerd worden. NoSQL-producten zijn juist ontworpen om te werken met gedenormaliseerde structuren, zoals arrays, hiërarchieën, sets en repeating groups.

‘Smal’ gegevensmodel: Als het systeem een complex gegevensmodel vereist dat uit honderden tabellen en onderlinge relaties bestaat, dan is NoSQL niet de juiste keuze. NoSQL-producten functioneren goed als het gegevensmodel ‘smal’ is, of met andere woorden, als het niet uit te veel tabellen bestaat.

Uiteraard kunnen NoSQL-producten verschillen wat betreft de ondersteuning van deze vereisten. Zoals aangegeven is het een heterogene groep producten, maar hopelijk helpt deze blog organisaties bij, enerzijds, het beslissen of zij een NoSQL-product moeten en kunnen gebruiken voor het systeem dat zij willen ontwikkelen, en anderzijds bij het grofweg bepalen welk product de juiste keuze voor hen is.

Rick van der Lans

Rick van der Lans is een gerespecteerd en onafhankelijk analist, adviseur, auteur en internationaal bekende spreker. Hij is gespecialiseerd in datawarehousing, business intelligence, big data en databasetechnologie. Hij heeft vele seminars en webinars gepresenteerd en keynotes bij industry-leading conferenties. Hij weet als geen ander een goede balans te vinden tussen op de praktijk toegesneden technologische en strategische zaken. Al meer dan tien jaar is hij de voorzitter van de jaarlijkse European Enterprise Data and Business Intelligence Conference in Londen en de jaarlijkse Data Warehousing en Business Intelligence Summit in Nederland. Rick helpt cliënten wereldwijd met het ontwerpen van hun data warehouse, big data en business intelligence architecturen en begeleid hen bij het selecteren van de geschikte producten. Hij is invloedrijk geweest bij het wereldwijd introduceren van de nieuwe logische datawarehouse architectuur waarmee organisaties meer flexibele business intelligence systemen kunnen ontwikkelen. Rick heeft honderden artikelen en blogs geschreven voor toonaangevende vakbladen en websites en van zijn hand zijn vele educatieve en populaire whitepapers verschenen voor een groot aantal leveranciers. Hij was de auteur van het eerste beschikbare boek over SQL, getiteld Introduction to SQL, dat in vele talen gepubliceerd is en waarvan meer dan 100.000 exemplaren verkocht zijn. Recentelijk publiceerde hij het boek Data Virtualization for Business Intelligence Systems.

Rick verzorgt bij Adept Events een seminar over de architectuur, ontwerp en technologie van het Logisch Datawarehouse alsmede een seminar over het Ontwerpen van Nieuwe Data Architecturen.

Alle blogs van deze auteur

Partners