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.
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:
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.
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.
Relationele databases | NoSQL-databases | |
Optimale workloads | Relationele 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. |
Gegevensmodel | Het 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 eigenschappen | Relationele 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. |
Prestatie | De 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. |
APIs | Verzoeken 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. |
Mogelijk is dit een vertaling van Google Translate en kan fouten bevatten. Klik hier om mee te helpen met het verbeteren van vertalingen.