Wat zijn NoSQL databases?


Big Data

NoSQL

NoSQL databases zijn speciaal gebouwd voor specifieke datamodellen en hebben flexibele schema’s voor het bouwen van moderne applicaties. NoSQL databases worden algemeen erkend vanwege hun eenvoudige ontwikkeling, functionaliteit en prestaties voor Big Data. Ze gebruiken een verscheidenheid aan gegevensmodellen, waaronder document, grafiek, sleutelwaarde, in-memory en zoeken.

Hoe werkt een NoSQL (niet-relationele) database?

NoSQL-databases gebruiken een verscheidenheid aan gegevensmodellen voor toegang tot en beheer van data, zoals documenten, grafieken, sleutelwaarden, in-memory en search. Deze typen databases zijn bovendien speciaal geoptimaliseerd voor toepassingen die een groot datavolume, lage latency en flexibele datamodellen vereisen. Dit bereiken we met name door enkele data-consistentie- constrains die andere databases kennen te versoepelen.

Bekijk het voorbeeld van het modelleren van het schema voor een eenvoudige boeken-database:

  • In een relationele database wordt een boekrecord vaak genormaliseerd en opgeslagen in afzonderlijke tabellen. Relaties definiëren we bovendien door primaire en externe sleutels. In dit voorbeeld heeft de Boeken tabel kolommen voor ISBN, Boek Titel en druknummer. De Auteurs tabel heeft kolommen voor Auteurs ID en auteur Naam. Ten slotte is er een Auteur-ISBN tabel met kolommen voor Auteurs ID en ISBN. Het relationele model is ontworpen om de database in staat te stellen referentiële integriteit tussen tabellen in de database af te dwingen, genormaliseerd om de redundantie te verminderen en bovendien geoptimaliseerd voor opslag.
  • In een NoSQL-database slaan we een boekrecord gewoonlijk op als een JSON-document. Voor ieder boek namelijk: het item, ISBN, Boek Titel , druknummer, auteur Naam en Auteur ID. We slaan ze op als attributen in een enkel document. In dit model zijn data eveneens geoptimaliseerd voor intuïtieve ontwikkeling en horizontale schaalbaarheid.

Waarom zouden we een niet-relationele database gebruiken?

NoSQL-databases zijn ideaal voor veel moderne toepassingen, zoals mobiel, web en gaming. Daarvoor zijn flexibele, schaalbare, krachtige en uiterst functionele databases nodig om geweldige gebruikerservaringen te bieden.

  • Schaalbaarheid: NoSQL databases zijn over het algemeen ook ontworpen om te schalen op gedistribueerde hardware clusters. Dit echter tegenover het schalen op dure en robuuste servers. Sommige cloud-providers bieden deze techniek als een volledige managed service.
  • Flexibiliteit: NoSQL-databases bieden over het algemeen flexibele schema’s die tevens snellere en meer iteratieve ontwikkeling mogelijk maken. Het flexibele datamodel maakt NoSQL-databases daarom ideaal voor semi-gestructureerde en ongestructureerde data.
  • Krachtige prestaties: de NoSQL-database is geoptimaliseerd voor specifieke datamodellen (zoals documenten, sleutelwaarden en grafieken). Tevens kent NoSQL toegangspatronen die hogere prestaties mogelijk maken dan vergelijkbare functionaliteit op relationele databases.
  • Zeer functioneel: NoSQL-databases bieden tevens zeer functionele API’s en datatypen die speciaal zijn gebouwd voor elk van hun respectievelijke datamodellen.

Al decennialang was het relationele datamodel het overheersende datamodel dat werd gebruikt voor de ontwikkeling van applicaties. Relationele databases zoals Oracle, DB2, SQL Server, MySQL en PostgreSQL, allemaal klinkende namen in de IT. Pas halverwege de late jaren 2000 begon men ook andere datamodellen over te nemen en te gebruiken. Om deze nieuwe klassen van databases en datamodellen te kunnen onderscheiden werd de term “NoSQL” bedacht. De termen “NoSQL” en “niet-relationeel” worden vaak door elkaar gebruikt.

Hoewel er vele typen NoSQL-databases met verschillende functies zijn, toont de volgende tabel de belangrijkste verschillen tussen SQL- en NoSQL-databases.

Relationeel versus NoSQL

  Relationele databasesNoSQL-databases
Optimale workloadsRelationele databases zijn ontworpen voor transactionele en sterk consistente online transactieverwerking (OLTP) -toepassingen en zijn goed voor online analytische verwerking (OLAP).NoSQL-sleutelwaarde-, document-, grafiek- en in-memory-databases zijn ontworpen voor een aantal datatoegangspatronen die toepassingen met lage latentie omvatten. NoSQL-zoekdatabases zijn tevens ontworpen voor analyse van semi-gestructureerde data.
GegevensmodelHet relationele model normaliseert data in tabellen die zijn samengesteld uit rijen en kolommen. Een schema definieert de tabellen, rijen, kolommen, indexen, relaties tussen tabellen en andere database-elementen strikt. De database dwingt bovendien de referentiële integriteit af in relaties tussen tabellen.NoSQL-databases bieden echter een verscheidenheid aan datamodellen die document, grafiek, sleutelwaarde, in-memory en search omvatten.
ACID eigenschappenRelationele databases bieden eigenschappen voor atomiciteit, consistentie, isolatie en duurzaamheid (ACID): Atomiciteit vereist dat een transactie volledig of helemaal niet wordt uitgevoerd. Consistentie vereist dat wanneer een transactie is vastgelegd, de gegevens moeten voldoen aan het databaseschema. Isolatie vereist dat gelijktijdige transacties afzonderlijk van elkaar worden uitgevoerd. Duurzaamheid vereist tevens de mogelijkheid om te herstellen van een onverwachte systeemstoring of stroomuitval naar de laatst bekende staat.NoSQL-databases maken vaak afwegingen door sommige van de ACID-eigenschappen van relationele databases te versoepelen voor een flexibeler datamodel dat je horizontaal kan schalen. Dit maakt NoSQL-databases een uitstekende keuze voor use-cases met hoge doorvoer en lage latentie die we horizontaal moeten schalen buiten de beperkingen van één instance.
PrestatieDe prestaties zijn over het algemeen afhankelijk van het storagesysteem. De optimalisatie van query’s, indexen en tabelstructuur is ook vaak vereist om topprestaties te bereiken.Prestaties zijn over het algemeen een functie van de onderliggende grote hardwarecluster, networklatency en de aanroepende applicatie.
Schaal Relationele databases schalen doorgaans op door de rekenkracht van de hardware te vergroten of scale-out uit te breiden door replica’s toe te voegen voor read-only workloads.NoSQL-databases zijn echter doorgaans partitioneerbaar. Toegangspatronen met sleutelwaarde kunnen opschalen door gedistribueerde architectuur te gebruiken om de doorvoer te vergroten die consistente prestaties biedt op bijna grenzeloze schaal.
APIsVerzoeken om data op te slaan en op te halen, verlopen via query’s. Die voldoen aan een gestructureerde querytaal (SQL). Deze query’s voert de relationele database uit.Met objectgebaseerde API’s kunnen app-ontwikkelaars eenvoudig in-memory datastructuren opslaan en ophalen. Met partitiesleutels kunnen apps sleutelwaarden, kolomsets of semi-gestructureerde documenten opzoeken die geserialiseerde app-objecten en -kenmerken bevatten.
LinkedIn GroupDiscussieer mee op LinkedIn.
Samenvatting
Wat zijn NoSQL databases?
Artikel
Wat zijn NoSQL databases?
Beschrijving
NoSQL databases zijn speciaal gebouwd voor specifieke datamodellen en hebben flexibele schema's voor het bouwen van moderne applicaties. NoSQL databases worden algemeen erkend vanwege hun eenvoudige ontwikkeling, functionaliteit en prestaties voor Big Data. Ze gebruiken een verscheidenheid aan gegevensmodellen, waaronder document, grafiek, sleutelwaarde, in-memory en zoeken.
Auteur
Publisher Naam
ITpedia
Publisher Logo
Sidebar