1.1 Hoe een NoSQL-database werkt

NoSQL-databases gebruiken verschillende gegevensmodellen om toegang te krijgen tot gegevens en deze te manipuleren. Dit type databases is geoptimaliseerd voor gegevensintensieve toepassingen die een lage latentie en flexibele gegevensmodellen vereisen. Dit alles wordt bereikt door de strikte vereisten voor gegevensconsistentie die kenmerkend zijn voor andere soorten databases, te verzachten.

Overweeg een voorbeeld van schemamodellering voor een eenvoudige database met boeken.

  • In een relationele database wordt een boekinvoer vaak opgesplitst in meerdere delen (of "genormaliseerd") en opgeslagen in afzonderlijke tabellen waarvan de relaties worden gedefinieerd door primaire en externe sleutelbeperkingen. In dit voorbeeld heeft de tabel Boeken de kolommen ISBN , Boektitel en "ISBN".en"Auteur"kolommende tabel Auteur-ISBN deenAuteursnaamenAuteur-IDde kolommenAuteurstabelEditienummer. Het relationele model is ontworpen om de referentiële integriteit tussen tabellen in een database te behouden. De gegevens worden genormaliseerd om redundantie te verminderen en zijn over het algemeen geoptimaliseerd voor opslag.

  • In een NoSQL-database wordt een boekrecord meestal opgeslagen als een JSON-document. Voor elk boek of elk element worden de waarden ISBN , Boektitel , Editienummer , Auteursnaam en Auteurs-ID opgeslagen als attributen in één enkel document. In dit model zijn de gegevens geoptimaliseerd voor intuïtieve ontwikkeling en horizontale schaalbaarheid.

1.2 Waarvoor kunnen NoSQL-databases worden gebruikt?

NoSQL-databases zijn zeer geschikt voor veel moderne toepassingen, zoals mobiele, gaming- en webtoepassingen, die flexibele, schaalbare databases vereisen met hoge prestaties en rijke functionaliteit die maximale bruikbaarheid kunnen bieden.

  • Flexibiliteit . Doorgaans bieden NoSQL-databases flexibele schema's, waardoor snellere ontwikkeling en incrementele implementatie mogelijk is. Door het gebruik van flexibele datamodellen zijn NoSQL-databases goed geschikt voor semi-gestructureerde en ongestructureerde data.

  • Schaalbaarheid . NoSQL-databases zijn ontworpen om te schalen met behulp van gedistribueerde hardwareclusters, niet door dure, betrouwbare servers toe te voegen. Sommige cloudserviceproviders voeren deze bewerkingen op de achtergrond uit en bieden een volledig beheerde service.

  • Hoge prestaties . NoSQL-databases zijn geoptimaliseerd voor specifieke datamodellen en toegangspatronen om hogere prestaties te bereiken dan relationele databases.

  • Brede functionaliteit . NoSQL-databases bieden rijke API's en gegevenstypen die specifiek zijn ontworpen voor hun respectievelijke gegevensmodellen.

1.3 Typen NoSQL-databases

NoSQL-databases worden gebruikt waar het niet erg handig is om gegevens in de vorm van tabellen op te slaan. Daarom worden ze in zeer verschillende formaten opgeslagen. Gewoonlijk zijn er 6 hoofdgegevenstypen van NoSQL-databases.

DB gebaseerd op sleutel-waardeparen

Databases die sleutel-waardeparen gebruiken, ondersteunen een hoge scheidbaarheid en bieden ongekende horizontale schaling die niet haalbaar is met andere soorten databases. Goede use-cases voor key-value-databases zijn gaming-, advertentie- en IoT-toepassingen.

Amazon DynamoDB zorgt bijvoorbeeld voor een stabiele databasewerking met een vertraging van niet meer dan enkele milliseconden op elke schaal. Deze robuuste prestatie was de belangrijkste reden voor het migreren van Snapchat Stories naar DynamoDB, aangezien deze Snapchat-functie gepaard gaat met de grootste opslagbelasting.

Document

In applicatiecode worden data vaak weergegeven als een object of document in een JSON-achtige indeling omdat het een efficiënt en intuïtief datamodel is voor ontwikkelaars. Met documentdatabases kunnen ontwikkelaars gegevens in een database opslaan en opvragen met behulp van hetzelfde documentmodel dat ze in hun applicatiecode gebruiken. Door de flexibele, semi-gestructureerde, hiërarchische aard van documenten en documentdatabases kunnen ze meegroeien met de behoeften van de toepassing.

Het documentmodel werkt goed in catalogi, gebruikersprofielen en contentmanagementsystemen waar elk document uniek is en in de loop van de tijd verandert. Amazon DocumentDB (compatibel met MongoDB) en MongoDB zijn algemene documentdatabases die functionele en intuïtieve API's bieden voor agile ontwikkeling.

Grafische databases

Graph-databases maken het gemakkelijker om applicaties te ontwikkelen en uit te voeren die werken met sets van complexe gegevens. Typische voorbeelden van het gebruik van grafische databases zijn sociale netwerken, aanbevelingsdiensten, fraudedetectiesystemen en kennisgrafieken. Amazon Neptune is een volledig beheerde grafische databaseservice. Neptune ondersteunt het Property Graph en Resource Description Framework (RDF) en biedt twee grafische API's om uit te kiezen: TinkerPop en RDF/SPARQL. Gemeenschappelijke grafische databases zijn Neo4j en Giraph.

DB in het geheugen

Vaak gebruiken gaming- en advertentietoepassingen leaderboards, sessieopslag en realtime analyses. Dergelijke mogelijkheden vereisen een reactie binnen enkele microseconden, terwijl een sterke toename van het verkeer op elk moment mogelijk is.

Amazon MemoryDB voor Redis is een Redis-compatibele, betrouwbare in-memory databaseservice die leeslatentie terugbrengt tot milliseconden en duurzaamheid biedt in meerdere beschikbaarheidszones. MemoryDB is speciaal gebouwd voor ultrahoge prestaties en betrouwbaarheid, zodat het kan worden gebruikt als de primaire database voor moderne op microservice gebaseerde applicaties.

Amazon ElastiCache is een volledig beheerde Redis- en Memcached-compatibele in-memory caching-service voor werklasten met lage latentie en hoge doorvoer. Klanten zoals Tinder die hun apps nodig hebben om in realtime te reageren, gebruiken in-memory in plaats van schijfopslagsystemen. Een ander voorbeeld van een speciaal gebouwd datawarehouse is de Amazon DynamoDB Accelerator (DAX). Met DAX kan DynamoDB gegevens meerdere malen sneller lezen.

Zoek databases

Veel toepassingen genereren logboeken om het voor ontwikkelaars gemakkelijker te maken om problemen op te lossen en op te lossen. Amazon OpenSearch is een speciaal gebouwde service voor bijna realtime visualisatie en analyse van automatisch gegenereerde datastromen door semi-gestructureerde logs en statistieken te indexeren, aggregeren en doorzoeken.

Bovendien is Amazon OpenSearch een krachtige, krachtige full-text zoekservice. Expedia maakt gebruik van meer dan 150 Amazon OpenSearch-servicedomeinen, 30 TB aan gegevens en 30 miljard documenten voor een verscheidenheid aan bedrijfskritische use-cases, van operationele monitoring en probleemoplossing tot gedistribueerde applicatiestacktracering en kostenoptimalisatie.

1.4 Vergelijking van SQL (relationele) en NoSQL (niet-relationele) databases

NoSQL heeft veel voordelen, dus je moet in theorie weten dat de tool die je nodig hebt al bestaat voordat je het zelf schrijft. Hieronder zal ik een vergelijking geven van NoSQL- en SQL-databases:

Geschikte werklasten

Relationele databases zijn ontworpen voor transactionele en zeer consistente toepassingen voor real-time transactieverwerking (OLTP) en zijn zeer geschikt voor realtime analytische verwerking (OLAP).

NoSQL-databases zijn ontworpen om te werken met een reeks gegevenstoegangspatronen, waaronder toepassingen met lage latentie. NoSQL-zoekdatabases zijn ontworpen voor analyse van semi-gestructureerde gegevens.

Gegevensmodel

Het relationele model normaliseert gegevens en transformeert deze in tabellen met rijen en kolommen. Een schema definieert op rigide wijze tabellen, rijen, kolommen, indexen, relaties tussen tabellen en andere database-elementen. Zo'n database zorgt voor de integriteit van referentiegegevens in relaties tussen tabellen.

NoSQL-databases bieden een verscheidenheid aan gegevensmodellen, zoals sleutel-waardeparen, documenten en grafieken die zijn geoptimaliseerd voor hoge prestaties en schaalbaarheid.

ZURE eigenschappen

Relationele databases bieden een reeks ACID-eigenschappen: atomiciteit, consistentie, isolatie, betrouwbaarheid.

  • Atomiciteit vereist dat een transactie in zijn geheel of helemaal niet wordt uitgevoerd.
  • Consistentie betekent dat zodra een transactie is voltooid, de gegevens moeten voldoen aan het databaseschema.
  • Isolatie vereist dat parallelle transacties afzonderlijk van elkaar worden uitgevoerd.
  • Betrouwbaarheid verwijst naar de mogelijkheid om te herstellen naar de laatst opgeslagen staat na een onverwachte systeemstoring of stroomuitval.

NoSQL-databases bieden vaak een compromis, waarbij de rigide vereisten van ACID-eigenschappen worden versoepeld ten gunste van een flexibeler gegevensmodel dat horizontale schaalbaarheid mogelijk maakt. Dit maakt NoSQL een uitstekende keuze voor use-cases met hoge bandbreedte en lage latentie die horizontale schaalvergroting vereisen die verder gaat dan een enkele instantie.

Prestatie

Prestaties zijn voornamelijk afhankelijk van het schijfsubsysteem. Optimalisatie van query's, indexen en tabelstructuur is vaak vereist voor maximale prestaties.

Prestaties zijn meestal afhankelijk van de grootte van het onderliggende hardwarecluster, netwerklatentie en de aanroepende toepassing.

Schalen

Relationele databases worden meestal geschaald door de rekenkracht van de hardware te vergroten of door afzonderlijke kopieën toe te voegen voor leeswerklasten.

NoSQL-databases ondersteunen doorgaans hoge scheidbaarheid door schaalbare toegangspatronen op basis van een gedistribueerde architectuur. Dit verbetert de doorvoer en levert consistente prestaties op vrijwel onbeperkte schaal.

API

Verzoeken voor het schrijven en ophalen van gegevens worden in SQL geschreven. Deze queries worden geparseerd en uitgevoerd door een relationele database.

Met objectgeoriënteerde API's kunnen applicatieontwikkelaars eenvoudig datastructuren schrijven en ophalen. Met behulp van partitiesleutels kunnen toepassingen sleutel-waardeparen, kolommensets of semi-gestructureerde documenten doorzoeken die seriële objecten en toepassingskenmerken bevatten.