NoSQL voor Relationele Geesten

Wanneer ontwikkelaars voor het eerst nadenken over het beheren van gegevens of het kiezen van een database voor hun applicatie, is het eerste wat vaak in hen opkomt —

— dat klopt, een tabel.

Ze zetten vervolgens verschillende tabellen op voor de verschillende soorten gegevens, zoals het hebben van één tabel voor gebruikers en een andere voor producten, bestellingen, enzovoort. Met gegevens verspreid over verschillende tabellen, zullen ze onvermijdelijk een relatie met elkaar hebben. Daarom zullen de tabellen verwijzingen hebben naar de items in andere tabellen via een vreemde sleutel. En uiteindelijk kunnen ze elke keer kiezen voor een relationele database om hun problemen op te lossen. Vooral bij het omgaan met relaties kan het idee van een niet-relationele database erg onintuitief lijken.

Maar het probleem is — gegevens zijn niet altijd plat. Gegevensvereisten kunnen complex zijn, en wanneer ontwikkelaars hun gegevens visualiseren zonder rekening te houden met databases, zijn ze vaak niet tabulair. In plaats daarvan kunnen ze genest, hiërarchisch of zelfs grafisch lijken.

Graph, nested, and hierarchical data

Je hoeft niet elke keer een tabel voor te stellen wanneer je begint te werken met gegevens. In moderne applicaties moeten gegevens vaak een flexibele schema hebben met complexe gegevenstypen. Daarom is het niet altijd de beste idee om het in een tabel te flatten. Daarbovenop hebben relationele databases ook hun eigen schaalbeperkingen. Naarmate je opschaalt, moet je je misschien zorgen maken over sharding, wat vaak aanzienlijke wijzigingen op applicatieniveau vereist.

Betreed niet-relationele databases, of meer algemeen bekend als NoSQL. U zou het volledige potentieel van NoSQL kunnen missen als u ze heeft vermeden bij uw ontwerpkeuzes. In dit artikel definiëren we snel wat niet-relationele databases zijn en bieden we vervolgens verschillende NoSQL-databasekeuzes voor verschillende echte problemen.

Naar het einde toe zullen we ook bespreken welke voordelen NoSQL-databases bieden ten opzichte van relationele databases, en ook ingaan op scenario’s waarin een relationele database nog steeds een betere keuze is.

Niet-Relationele Databases, of NoSQL

Kort gezegd slaan deze databases gegevens op in een niet-tabelformaat op. Ze komen in verschillende soorten, elk gebouwd voor specifieke doeleinden en het soort niet-gestructureerde gegevens dat ze kunnen ondersteunen. De meest voorkomende zijn:

  1. Documentdatabases: slaan gegevens op in JSON-achtige documenten
  2. Sleutel-waarde databases: slaan gegevens op met een ‘sleutel-waarde’-structuur voor unieke sleutels.
  3. Grafiekdatabases: gebruiken knooppunten, randen en eigenschappen om relaties tussen datapunten voor te stellen en op te slaan.

Andere soorten zijn kolomgeoriënteerd, in-memory en tijdreeksdatabases.

Verschillende NoSQL-databaseproviders bieden functies zoals het maken van indexen op bepaalde velden, ontwikkelaarsvriendelijke SDK’s, hoge beschikbaarheid, transactiebewerkingen en de mogelijkheid om uw database eenvoudig op of neer te schalen.

Problemen Oplossen in het Echte Leven Met NoSQL

Laten we wat voorbeelden bekijken waar we echte problemen oplossen met NoSQL-databases.

Het bouwen van een blogtoepassing die reacties en tags ondersteunt

Documentdatabases zijn het beste voor dergelijke contentmanagementsystemen. Elke inhoud kan een apart document zijn. Het schema is flexibel en elk document kan subcollecties bevatten. U kunt gebruikmaken van de indexeermogelijkheden van array-velden van de documentdatabaseproviders om complexe queries uit te voeren, bijvoorbeeld het ophalen van alle blogs met hun tags.

Sociale en professionele netwerkplatforms

Grafiekdatabases helpen bij het definiëren van complexe relaties tussen mensen. Vind eenvoudig vrienden van vrienden via grafiekzoekopdrachten.

IoT-sensordata

Gebruik tijdreeksgegevens om enorme hoeveelheden getimede gegevens van een sensorapparaat te verwerken.

Winkelwagen

Gebruik een key-value pair-database, die hoge gelijktijdigheid biedt met snelle lees- en schrijfbewerkingen. U kunt key-value-databases ook gebruiken om gebruikerssessie-informatie op te slaan, en de winkelwagen kan een veld zijn binnen de sessie (voor een individuele winkelsessie).

Aanbevelingsengines

Gebruik grafiekdatabases om relaties tussen gebruikers, producten en voorkeuren in kaart te brengen.

Waar NoSQL beter presteert dan relationele databases

Hieronder volgen enkele punten waar NoSQL-databases voordelen bieden ten opzichte van relationele databases:

  1. Ontwikkelaarsproductiviteit: NoSQL-databaseproviders bieden API’s en SDK’s op maat voor moderne applicatieontwikkeling, waardoor sneller prototypen en ontwikkelen mogelijk is.
  2. Schaalbaarheid: NoSQL-databases schalen horizontaal (waarbij je eenvoudig meer servers of nodes hoeft toe te voegen), wat kosteneffectief en makkelijker te beheren is in vergelijking met verticale schaling die nodig is bij relationele databases.
  3. Flexibiliteit: NoSQL biedt een flexibel schema, wat perfect is voor agile ontwikkeling en evoluerende applicatie-eisen.
  4. Omgaan met geneste gegevens: Vaak zijn gegevens genest of hiërarchisch, zoals in JSON- of XML-formaten. NoSQL-databases kunnen deze formaten ondersteunen, waarbij een complexe transformatie nodig kan zijn bij het gebruik van relationele databases voor deze gegevens.

Waar relationele databases nog steeds een voordeel hebben

Hieronder staan enkele gebruiksscenario’s waar relationele databases relevant blijven en een goed idee zijn.

  1. Analytics en rapportage: Relationele databases zijn geoptimaliseerd voor ad-hoc queries, aggregaties en rapportage. Voor alle analytische en rapportagescenario’s zijn relationele databases nog steeds een go-to keuze.
  2. Intensief gebruik van relaties en joins: Hoewel je nog steeds relaties kunt beheren en werken met NoSQL-databases, als je applicatie zeer sterk afhankelijk is van joins tussen verschillende datasets, kunnen relationele databases nog steeds een goed idee zijn.
  3. Consistentie boven beschikbaarheid: In scenario’s waar dataconsistentie belangrijker is dan beschikbaarheid (bijv. financiële transacties), kunnen relationele databases meer garanties bieden.

En daarmee sluiten we ons artikel af. We hebben onderzocht wat NoSQL-databases zijn en hoe ze echte uitdagingen in gegevensbeheer aanpakken. NoSQL-databases openen een wereld van mogelijkheden voor moderne toepassingen, van hun flexibiliteit in het omgaan met complexe gegevensstructuren tot de krachtige functies die door aanbieders worden geboden. Voor degenen die NoSQL nog niet hebben uitgeprobeerd, hoop ik dat dit je inspireert om het eens te proberen in je volgende project — je zou zomaar kunnen ontdekken dat het perfect aansluit bij je behoeften.

Source:
https://dzone.com/articles/nosql-for-relational-minds