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

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 kunt u 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)

Niet beschikbaar NoSQL of niet-relationeel SQL of relationeel
Ideaal voor:
  • Verwerking van grote hoeveelheden niet-gerelateerde, onbepaalde of snel veranderende gegevens.
  • Gegevens die niet aan schema's zijn gebonden of een schema dat wordt gedicteerd door de app.
  • Apps waarbij prestaties en beschikbaarheid belangrijker zijn dan een sterke consistentie.
  • Apps die altijd zijn ingeschakeld en worden uitgevoerd voor gebruikers wereldwijd.
  • Verwerking van logisch gerelateerde en afzonderlijke gegevens die vooraf kunnen worden vastgesteld.
  • Een schema dat moet worden onderhouden en synchroon moet worden gehouden voor de app en de database.
  • Oudere systemen die zijn ontworpen voor relationele structuren.
  • Apps waarbij complexe query's of transacties met meerdere rijen moeten worden uitgevoerd.
Scenario's:
  • Mobiele apps.
  • Analyses in realtime.
  • Inhoudsbeheer.
  • Personalisatie.
  • IoT-apps.
  • Databasemigratie.
  • Boekhoudings-, financierings- en banksystemen.
  • Voorraadbeheersystemen.
  • Transactiebeheersystemen.
Schaal:
  • Horizontale schaling van gegevens door sharding over verschillende servers.
  • Verticale schaling van gegevens door het serververmogen te vergroten.
Gegevensmodel:
  • Databasetypen: sleutel/waardepaar-, document-, kolommen- en grafiekdatabase.
  • Hierbij worden gegevens opgeslagen afhankelijk van het databasetype.
  • Databasetype: tabellen met rijen, gegroepeerd in relaties.
  • Maakt gebruik van Structured Query Language (SQL).
  • Hierbij worden gegevens opgeslagen als rijen in tabellen. Gerelateerde gegevens die afzonderlijk zijn opgeslagen en worden samengevoegd voor complexe query's.
Niet beschikbaar Meer informatie over niet-relationele gegevensmodellen Meer informatie over relationele gegevensmodellen

Hoe bepaal ik wat voor NoSQL-database ik moet gebruiken?

Kies een gegevensmodel

Veel NoSQL-databases zijn gericht op aggregaties, verzamelingen van gegevens waarmee u als een eenheid werkt. Daarom sluiten deze databases veel beter aan op de moderne, objectgeoriënteerde programmeertalen. Wanneer u een NoSQL-database kiest, wilt u waarschijnlijk eerst een gegevensmodel kiezen en vervolgens bepalen welke NoSQL-databases dat model ondersteunen en welke programmeertalen en SDK's elke database ondersteunt.

Meer informatie over programmeermodellen en API's

Weeg de voor- en nadelen van consistentie tegen elkaar af

Bij de meeste NoSQL-databases kunt u kiezen uit de uiteinden van een consistentieschaal, van sterke consistentie, waarbij u de nieuwste gegevens ontvangt maar u misschien moet wachten, tot eventuele consistentie, waarbij u 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 u de meeste flexibiliteit biedt in consistentiemodellen die passen bij uw behoeften en waarmee u deze het beste kunt beheren.

Meer informatie over consistentie, beschikbaarheid en partitietolerantie

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 uw cloudopties rekening met het volgende:

  • Ondersteunde gegevensmodellen. Ondersteunt de cloudprovider alle gegevensmodellen die u wilt gebruiken?
  • Implementatie en bewerkingen. Hoe eenvoudig kunt u de database implementeren en zo nodig naar andere regio's repliceren?
  • Geografische aanwezigheid. Waar bevinden zich de datacenters van de cloudprovider? Kunt u de gegevens op de gewenste locatie plaatsen? Hoe leeft u de regelgeving voor de privacy van algemene gegevens na, zoals de AVG van de Europese Unie?
  • Gemak van replicatie. Hoe geschiedt de replicatie van uw database naar een andere geografische regio?
  • Schaalbaarheid. Bieden de NoSQL-databases u 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?
  • Ecosysteem. 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 u 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 uw 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 uw 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 uw 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 u gewoon uw bestaande hulpprogramma's, stuurprogramma's, bibliotheken en SDK's blijft gebruiken.

Aan de slag met NoSQL en databasemigratie naar de cloud

Ontdek hoe u apps ontwikkelt met een nieuwe flexibiliteit en schaalbaarheid in het beheer van uw databasesystemen en verschillende gegevenstypen, plus hoe u 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.

Meer informatie over Azure Cosmos DB voor NoSQL-gegevens

Meer informatie