NoSQL Database: wat is NoSQL?
Een overzicht om aan de slag te gaan
Wat zijn NoSQL-databases?
Naar NoSQL-databases wordt afwisselend verwezen met 'niet-relationeel', 'NoSQL-databases' of 'niet-SQL' om aan te geven dat deze zeer grote volumes met snel veranderende, ongestructureerde gegevens kunnen verwerken op andere manieren dan een relationele database (SQL) met rijen en tabellen doet.
NoSQL-technologieën bestaan onder verschillende namen al sinds de jaren '60 van de vorige eeuw, maar hebben aan populariteit gewonnen door veranderingen in het gegevenslandschap. Ontwikkelaars moeten zich vanwege deze veranderingen aanpassen om de enorme omvang en het brede scala aan gegevens afkomstig van de cloud, mobiele apparaten, social media en big data te kunnen verwerken.
Nieuwe gegevens en gegevenstypen worden gegenereerd in een duizelingwekkend tempo, van tweets van beroemdheden die viral gaan tot levensreddende informatie in elektronische medische records. NoSQL-databases hebben zich ontwikkeld tot een instrument waarmee ontwikkelaars snel databasesystemen kunnen maken voor het opslaan van de nieuwe informatie en het beschikbaar maken hiervan zodat hiernaar kan worden gezocht, informatie kan worden samengevoegd en gegevens kunnen worden geanalyseerd.
De voordelen van NoSQL-databases (NoSQL-DB’s)
Met NoSQL-databases kunnen IT-professionals en -ontwikkelaars de steeds grotere diversiteit aan gegevenstypen en -modellen aan. Daarnaast verwerken deze databases zeer effectief onvoorspelbare gegevens met zeer hoge querysnelheden. Ze bieden ook een soepele databasemigratie naar de cloud voor bestaande NoSQL-workloads.
Ontwikkelen met flexibiliteit
NoSQL-databases kunnen goed inspringen op ongeplande situaties en zijn geschikt voor cycli van frequente softwareversies en een snellere en flexibelere ontwikkeling van apps.
Gegevens verwerken met flexibiliteit
NoSQL biedt ontwikkelaars meer vrijheid, snelheid en flexibiliteit om zowel schema's als query's aan te passen aan gegevensvereisten. Bij gegevens die zijn opgeslagen in een verzameling kunnen eenvoudiger herhaaldelijk verbeteringen worden aangebracht, zonder dat er van tevoren een schema moet worden ontworpen.
Gebruik op elke schaal
NoSQL-databases kunnen aantrekkelijke operationele voordelen en besparingen bieden door de mogelijkheid om horizontaal "uit" te schalen of minder dure servers toe te voegen zonder dat er een upgrade nodig is. Ze kunnen worden geschaald om meer gegevens te verwerken of één grote database bevatten in een zeer distribueerbaar cluster van servers.
Typen gegevensmodellen bij NoSQL-databases
De meeste niet-relationele, krachtige databases, soms ook wel 'niet alleen SQL' genoemd, kunnen ook zeer gestructureerde gegevens verwerken. Ze zijn niet beperkt tot de vaste gegevensmodellen zoals relationele databases (SQL).
De vier meest voorkomende typen NoSQL-databases zijn:
Sleutel-waardeparen
In databases op basis van sleutel-waardeparen worden paren sleutels en waarden opgeslagen met behulp van een hashtabel. Databases op basis van sleutel-waardeparen kun je het beste gebruiken wanneer er een sleutel bekend is en de gekoppelde waarde voor de sleutel onbekend is.
Document
Documentdatabases zijn een uitbreiding op het concept van de database op basis van sleutel-waardeparen door hele documenten te ordenen in groepen die verzamelingen worden genoemd. Deze databases ondersteunen geneste sleutel-waardeparen en staan query's toe op elk kenmerk in een document.
Kolommen
In databases met kolommen, brede kolommen of kolomgroepen worden gegevens efficiënt opgeslagen en worden query's uitgevoerd op rijen met verspreide gegevens. Deze databases zijn nuttig wanneer er query's worden uitgevoerd in specifieke kolommen in de database.
Grafiek
Grafiekdatabases maken gebruik van een model dat is gebaseerd op knooppunten en edges om gegevens weer te geven die met elkaar zijn verbonden. Deze gegevens kunnen bijvoorbeeld betrekking hebben op relaties tussen personen in een sociaal netwerk. De databases bieden een vereenvoudigde opslag en navigatie in complexe relaties.
Kiezen tussen relationele databases (SQL) en niet-relationele databases (NoSQL)
NoSQL of niet-relationeel | SQL of relationeel | |
---|---|---|
IDEAAL VOOR: |
|
|
SCENARIO'S: |
|
|
Schaal: |
|
|
GEGEVENSMODEL: |
|
|
|
Hoe bepaal ik wat voor NoSQL-database ik moet gebruiken?
Kies een gegevensmodel
Veel NoSQL-databases zijn gericht op aggregaties, verzamelingen van gegevens waarmee je als een eenheid werkt. Daarom sluiten deze databases veel beter aan op de moderne, objectgeoriënteerde programmeertalen. Wanneer je een NoSQL-database kiest, wil je waarschijnlijk eerst een gegevensmodel kiezen en vervolgens bepalen welke NoSQL-databases dat model ondersteunen en welke programmeertalen en SDK's elke database ondersteunt.
Weeg de voor- en nadelen van consistentie tegen elkaar af
Bij de meeste NoSQL-databases kun je kiezen uit de uiteinden van een consistentieschaal, van sterke consistentie, waarbij je de nieuwste gegevens ontvangt maar misschien moet wachten, tot eventuele consistentie, waarbij je een snelle reactie ontvangt maar waarbij de gegevens verouderd kunnen zijn. Er zijn ook veel NoSQL-databases die andere consistentieniveaus ondersteunen die doorgaans meer in het midden van deze uiteinden liggen. Kies de NoSQL-database die je de meeste flexibiliteit biedt in consistentiemodellen die passen bij je behoeften en waarmee je deze het beste kunt beheren.
Houd rekening met de cloud en databasemigratie
NoSQL-databases, met hun gedistribueerde aard en horizontale schaalbaarheid, zijn zeer geschikt voor cloudcomputing, hoewel ook veel NoSQL-databasesystemen zijn ontworpen om on-premises of in hybride scenario's te worden uitgevoerd.
Houd bij het bepalen van je cloudopties rekening met het volgende:
- Ondersteunde gegevensmodellen. Ondersteunt de cloudprovider alle gegevensmodellen die je wilt gebruiken?
- Implementatie en bewerkingen. Hoe eenvoudig kun je de database implementeren en zo nodig naar andere regio's repliceren?
- Geografische aanwezigheid. Waar bevinden zich de datacenters van de cloudprovider? Kun je de gegevens op de gewenste locatie plaatsen? Hoe leef je de regelgeving voor de privacy van algemene gegevens na, zoals de AVG van de Europese Unie?
- Gemak van replicatie. Hoe geschiedt de replicatie van je database naar een andere geografische regio?
- Schaalbaarheid. Bieden de NoSQL-databases je voldoende prestaties en mogelijkheden voor uitbreiding? Zijn er mogelijkheden om omhoog of omlaag te schalen of om horizontaal te schalen?
- Hoge beschikbaarheid. Wat gebeurt er bij een onverwachte fout? Biedt de service ingebouwde hoge beschikbaarheid en herstel na een noodgeval?
- Serviceniveaus. Welke beschikbaarheidsniveaus of garanties met betrekking tot wachttijden worden er geboden?
- Ecosystem. Is de database nauw geïntegreerd met de rest van het cloudplatform en kan deze snel worden samengevoegd om nieuwe oplossingen te maken?
Manieren waarop je NoSQL-databasesystemen kunt gebruiken
Gegevensmodellen die zijn gebaseerd op NoSQL zijn zeer geschikt voor bedrijven die apps voor mobiele apparaten, internet, Internet of Things (IoT) en games willen ontwikkelen en waarvoor flexibele, schaalbare, zeer functionele databases met hoge prestaties moeten worden gebruikt die zorgen voor kwalitatieve apps, of het nu gaat om bijvoorbeeld apps op het gebied van gaming, e-commerce, de analyse van big data of realtime-web-apps.
Distribueer je apps wereldwijd
Zorg voor meer gebruikers, waar deze zich ook ter wereld mogen bevinden, met de verbeterde app-prestaties als gevolg van een hoge beschikbaarheid en herstel na noodgevallen.
Bied realtime klantervaringen
Zorg voor gebruikersspecifieke informatie, realtime-aanbevelingen [or: aanbevelingen in real-time] en een verbeterde gebruikerservaring met de NoSQL-databases.
Speel in op verschillende IoT-workloads
Schaal direct en flexibel om een langdurige gegevensopname met veel schrijfbewerkingen te verwerken met verbeterde queryprestaties voor IoT-apps.
Verbeter je e-commerce-apps
Met de flexibele schema's en hiërarchische gegevens, is NoSQL zeer geschikt voor het opslaan van productcatalogusgegevens wanneer diverse producten verschillende kenmerken hebben.
Bied gamers nieuwe content
Bied gepersonaliseerde informatie met statistieken tijdens de game, de integratie van social media en klassementen. Korte wachttijden en flexibele schaalbaarheid bieden ondersteuning voor verkeerspieken tijdens toernooien en het opstarten van games.
Ontwikkel serverloze apps
Maak gebruik van naadloze schaling van gegevensopname, doorvoer en gegevensvolumes met directe beschikbaarheid, automatische indexering, stabiele gegevensopnamesnelheden en queryprestaties.
Verkrijg betere inzichten uit big data
Implementeer machine learning op schaal voor snel veranderende gegevens in grote volumes en haal meer uit je analyses.
Migreer bestaande NoSQL-workloads naar de cloud
Besteed minder tijd aan het beheren van een on-premises database met een migratie naar de cloud, terwijl je gewoon je bestaande hulpprogramma's, stuurprogramma's, bibliotheken en SDK's blijft gebruiken.
Aan de slag met NoSQL en databasemigratie naar de cloud
Ontdek hoe je apps ontwikkelt met een nieuwe flexibiliteit en schaalbaarheid in het beheer van je databasesystemen en verschillende gegevenstypen, plus hoe je een databasemigratie naar de cloud uitvoert voor bestaande NoSQL-workloads. Bekijk een technisch overzicht van Azure Cosmos DB voor ontwikkelaars en ontdek meer over systeemeigen ondersteuning voor NoSQL in een wereldwijd gedistribueerde, zeer schaalbare service voor meerdere modellen databases.