NoSQL-zelfstudie: wat is, soorten NoSQL-databases en voorbeelden

Wat is NoSQL?

NoSQL Database is een niet-relationeel gegevensbeheersysteem dat geen vast schema vereist. Het vermijdt joins en is eenvoudig te schalen. Het belangrijkste doel van het gebruik van een NoSQL-database is voor gedistribueerde datastores met gigantische dataopslagbehoeften. NoSQL wordt gebruikt voor Big data en realtime webapps. Bedrijven als Twitter, Facebook en Google verzamelen bijvoorbeeld elke dag terabytes aan gebruikersgegevens.

NoSQL-database staat voor 'Niet alleen SQL' of 'Niet SQL'. Hoewel een betere term “NoREL” zou zijn, sloeg NoSQL aan. Carl Strozz introduceerde het NoSQL-concept in 1998.

Traditioneel RDBMS gebruikt SQL-syntaxis om gegevens op te slaan en op te halen voor verdere inzichten. In plaats daarvan omvat een NoSQL-databasesysteem een ​​breed scala aan databasetechnologieën die gestructureerde, semi-gestructureerde, ongestructureerde en polymorfe gegevens kunnen opslaan. Laten we NoSQL begrijpen met een diagram in deze NoSQL-database-tutorial:

NoSQL-database

Waarom NoSQL?

Het concept van NoSQL-databases werd populair bij internetgiganten als Google, Facebook, Amazon, enz. die te maken hebben met enorme hoeveelheden gegevens. De reactietijd van het systeem wordt traag als u RDBMS gebruikt voor enorme hoeveelheden gegevens.

Om dit probleem op te lossen, zouden we onze systemen kunnen ‘opschalen’ door onze bestaande hardware te upgraden. Dit proces is duur.

Het alternatief voor dit probleem is het verdelen van de databasebelasting over meerdere hosts wanneer de belasting toeneemt. Deze methode staat bekend als ‘uitschalen’.

NoSQL

De NoSQL-database is niet-relationeel, dus schaalbaarder dan relationele databases, omdat deze zijn ontworpen met webapplicaties in gedachten.

Korte geschiedenis van NoSQL-databases

  • 1998 - Carlo Strozzi gebruikt de term NoSQL voor zijn lichtgewicht, open-source relationele database
  • 2000- Grafiekdatabase Neo4j wordt gelanceerd
  • 2004 - Google BigTable wordt gelanceerd
  • 2005 - CouchDB wordt gelanceerd
  • 2007- Het onderzoekspaper over Amazon Dynamo wordt vrijgegeven
  • 2008 - Facebook opent bronnen de Cassandra project
  • 2009- De term NoSQL werd opnieuw geïntroduceerd

Kenmerken van NoSQL

Niet-relationeel

  • NoSQL-databases volgen nooit de relationeel model
  • Voorzie nooit tabellen van platte records met vaste kolommen
  • Werk met op zichzelf staande aggregaten of BLOB's
  • Vereist geen object-relationele mapping en gegevensnormalisatie
  • Geen complex functies zoals querytalen, queryplanners, referentiële integriteitsjoins, ACID

Schemavrij

  • NoSQL-databases zijn schemavrij of hebben ontspannen schema's
  • Vereist geen enkele definitie van het schema van de gegevens
  • Biedt heterogeenneoons structuren van gegevens in hetzelfde domein
Kenmerken van NoSQL
NoSQL is schemavrij

Eenvoudige API

  • Biedt eenvoudig te gebruiken interfaces voor het opslaan en opvragen van de verstrekte gegevens
  • API's maken datamanipulatie en selectiemethoden op laag niveau mogelijk
  • Op tekst gebaseerde protocollen die meestal worden gebruikt met HTTP REST met JSON
  • Meestal geen op standaard gebaseerde NoSQL-querytaal gebruikt
  • Databases met internettoegang die worden uitgevoerd als internetgerichte services

Distributed

  • Meerdere NoSQL-databases kunnen gedistribueerd worden uitgevoerd
  • Biedt automatische schaling en failover-mogelijkheden
  • Vaak kan het ACID-concept worden opgeofferd voor schaalbaarheid en doorvoer
  • Meestal nee syncroneuze replicatie tussen gedistribueerde knooppunten Asyncroneuze Multi-Master Replicatie, peer-to-peer, HDFS-replicatie
  • Biedt alleen uiteindelijke consistentie
  • Niets gedeeld Archistructuur. Dit maakt minder coördinatie en hogere distributie mogelijk.
Kenmerken van NoSQL
NoSQL is niets gedeeld.

Soorten NoSQL-databases

NoSQL-databases zijn hoofdzakelijk onderverdeeld in vier typen: sleutel-waardepaar, kolomgeoriënteerd, grafiekgebaseerd en documentgeoriënteerd. Elke categorie heeft zijn unieke kenmerken en beperkingen. Geen van de hierboven gespecificeerde databases is beter om alle problemen op te lossen. Gebruikers moeten de database selecteren op basis van hun productbehoeften.

Soorten NoSQL-databases:

  • Sleutel-waarde paargebaseerd
  • Kolomgeoriënteerde grafiek
  • Op grafieken gebaseerd
  • Documentgericht

Soorten NoSQL-databases

Sleutelwaardepaar gebaseerd

Gegevens worden opgeslagen in sleutel/waarde-paren. Het is zo ontworpen dat het veel gegevens en zware belasting kan verwerken.

Sleutel-waardepaaropslagdatabases slaan gegevens op als een hashtabel waarbij elke sleutel uniek is en de waarde een JSON, BLOB (Binary Large Objects), string, enz. kan zijn.

Een sleutel-waardepaar kan bijvoorbeeld een sleutel als ‘Website’ bevatten die is gekoppeld aan een waarde als ‘Guru99’.

Sleutelwaardepaar gebaseerd

Het is een van de meest eenvoudige NoSQL-databasevoorbeelden. Dit soort NoSQL-database wordt gebruikt als verzameling, woordenboeken, associatieve arrays, enz. Sleutelwaardewinkels helpen de ontwikkelaar schemaloze gegevens op te slaan. Ze werken het beste voor de inhoud van winkelwagentjes.

Redis, Dynamo en Riak zijn enkele NoSQL-voorbeelden van databases met sleutelwaardeopslag. Ze zijn allemaal gebaseerd op Amazon's Dynamopapier.

Op kolommen gebaseerd

Kolomgeoriënteerde databases werken op kolommen en zijn gebaseerd op BigTable-papier van Google. Elke kolom wordt afzonderlijk behandeld. Waarden van databases met één kolom worden aaneengesloten opgeslagen.

Kolomgebaseerde NoSQL-database

Op kolommen gebaseerde NoSQL-database

Ze leveren hoge prestaties bij aggregatiequery's zoals SUM, COUNT, AVG, MIN etc. omdat de gegevens direct beschikbaar zijn in een kolom.

Op kolommen gebaseerde NoSQL-databases worden veel gebruikt om datawarehouses te beheren, business intelligence, CRM, Bibliotheekpascatalogi,

HBase, Cassandra, HBase, Hypertable zijn NoSQL-queryvoorbeelden van op kolommen gebaseerde databases.

Documentgericht

Documentgeoriënteerde NoSQL DB slaat gegevens op en haalt deze op als een sleutelwaardepaar, maar het waardegedeelte wordt opgeslagen als een document. Het document wordt opgeslagen in JSON- of XML-formaten. De waarde wordt door de DB begrepen en kan worden opgevraagd.

Relationele versus. Document

Relationele versus. Document

In dit diagram aan uw linkerkant kunt u zien dat we rijen en kolommen hebben, en aan de rechterkant hebben we een documentendatabase die een vergelijkbare structuur heeft als JSON. Voor de relationele database moet u weten welke kolommen u heeft, enzovoort. Voor een documentdatabase hebt u echter een gegevensopslag zoals een JSON-object. U hoeft niet te definiëren welke het flexibel maken.

Het documenttype wordt meestal gebruikt voor CMS-systemen, blogplatforms, realtime analyses en e-commerce-applicaties. Het mag niet worden gebruikt voor complex transacties waarvoor meerdere bewerkingen of zoekopdrachten tegen verschillende aggregaatstructuren nodig zijn.

Amazon SimpleDB, CouchDB, MongoDB, Riak, Lotusnoten, MongoDB, zijn populair Document is ontstaan DBMS-systemen.

Op grafieken gebaseerd

Een database van het grafiektype slaat entiteiten op, evenals de relaties tussen die entiteiten. De entiteit wordt opgeslagen als een knooppunt met de relatie als randen. Een rand geeft een relatie tussen knooppunten. Elk knooppunt en elke rand heeft een unieke identificatie.

Op grafieken gebaseerd

Vergeleken met een relationele database waarin tabellen losjes met elkaar zijn verbonden, is een Graph-database multirelationeel van aard. Het doorlopen van relaties gaat snel omdat ze al in de database zijn vastgelegd en het niet nodig is om ze te berekenen.

Graph-base-database meestal gebruikt voor sociale netwerken, logistiek, ruimtelijke gegevens.

Neo4J, Oneindige grafiek, OrientDB, FlockDB zijn enkele populaire grafiekgebaseerde databases.

Querymechanismehulpmiddelen voor NoSQL

Het meest gebruikelijke mechanisme voor het ophalen van gegevens is het op REST gebaseerde ophalen van een waarde op basis van de sleutel/ID met GET-bron

Documentarchief Database biedt moeilijkere zoekopdrachten omdat ze de waarde in een sleutel-waardepaar begrijpen. Met CouchDB kunt u bijvoorbeeld weergaven definiëren met MapReduce

Wat is het CAP-theorema?

CAP-stelling wordt ook wel brouwersstelling genoemd. Er wordt gesteld dat het voor een gedistribueerde dataopslag onmogelijk is om meer dan twee van de drie garanties te bieden

  1. Consistentie
  2. Beschikbaarheid
  3. Partitie tolerantie

Consistentie:

De gegevens moeten consistent blijven, zelfs na de uitvoering van een bewerking. Dit betekent dat zodra gegevens zijn geschreven, elk toekomstig leesverzoek die gegevens moet bevatten. Na het bijwerken van de bestelstatus moeten alle klanten bijvoorbeeld dezelfde gegevens kunnen zien.

Beschikbaarheid:

De database moet altijd beschikbaar en responsief zijn. Het mag geen downtime hebben.

Partitietolerantie:

Partitietolerantie betekent dat het systeem moet blijven functioneren, zelfs als de communicatie tussen de servers niet stabiel is. De servers kunnen bijvoorbeeld worden opgedeeld in meerdere groepen die mogelijk niet met elkaar communiceren. Als een deel van de database hier niet beschikbaar is, blijven andere delen altijd onaangetast.

Eventuele consistentie

De term ‘uiteindelijke consistentie’ betekent het hebben van kopieën van gegevens op meerdere machines om een ​​hoge beschikbaarheid en schaalbaarheid te verkrijgen. Wijzigingen die in een gegevensitem op de ene machine zijn aangebracht, moeten dus worden doorgegeven aan andere replica's.

Gegevensreplicatie is mogelijk niet instantneoons omdat sommige exemplaren onmiddellijk zullen worden bijgewerkt, terwijl andere te zijner tijd zullen worden bijgewerkt. Deze kopieën kunnen onderling zijn, maar na verloop van tijd worden ze consistent. Vandaar de naam uiteindelijke consistentie.

BASE: Basisch Abeschikbaar, Svaak staat, Eventuele consistentie

  • Kort gezegd betekent beschikbaar dat DB altijd beschikbaar is volgens de CAP-stelling
  • Zachte toestand betekent zelfs zonder input; de systeemstatus kan veranderen
  • Uiteindelijke consistentie betekent dat het systeem in de loop van de tijd consistent zal worden

Eventuele consistentie

Voordelen van NoSQL

  • Kan worden gebruikt als primaire of analytische gegevensbron
  • Big Data-mogelijkheden
  • Geen enkel storingspunt
  • Eenvoudige replicatie
  • Geen aparte cachinglaag nodig
  • Het biedt snelle prestaties en horizontale schaalbaarheid.
  • Kan gestructureerde, semi-gestructureerde en ongestructureerde gegevens met hetzelfde effect verwerken
  • Objectgeoriënteerd programmeren dat gemakkelijk te gebruiken en flexibel is
  • NoSQL-databases hebben geen speciale krachtige server nodig
  • Ondersteuning van belangrijke ontwikkelaarstalen en platforms
  • Eenvoudig te implementeren dan het gebruik van RDBMS
  • Het kan dienen als de primaire gegevensbron voor online applicaties.
  • Verwerkt big data die de datasnelheid, variëteit, volume en com beheertplexity
  • Blinkt uit in gedistribueerde database- en multi-datacenteractiviteiten
  • Elimineert de noodzaak van een specifieke cachinglaag om gegevens op te slaan
  • Biedt een flexibel schemaontwerp dat eenvoudig kan worden gewijzigd zonder downtime of serviceonderbreking

Nadelen van NoSQL

  • Geen standaardisatieregels
  • Beperkte querymogelijkheden
  • RDBMS databases en tools zijn relatief volwassen
  • Het biedt geen traditionele databasemogelijkheden, zoals consistentie wanneer meerdere transacties tegelijkertijd worden uitgevoerdneonormaal.
  • Wanneer het gegevensvolume toeneemt, is het moeilijk om unieke waarden te behouden, omdat sleutels moeilijk worden
  • Werkt niet zo goed met relationele gegevens
  • De leercurve is zwaar voor nieuwe ontwikkelaars
  • Open source-opties zijn dus niet zo populair voor bedrijven.

Samengevat

  • NoSQL is een niet-relationeel DMS dat geen vast schema vereist, joins vermijdt en eenvoudig te schalen is
  • Het concept van NoSQL-databases werd populair bij internetgiganten als Google, Facebook, Amazon, enz. die te maken hebben met enorme hoeveelheden gegevens
  • In het jaar 1998 gebruikte Carlo Strozzi de term NoSQL voor zijn lichtgewicht, open-source relationele database
  • NoSQL-databases volgen nooit het relationele model: het is schemavrij of heeft ontspannen schema's
  • Er zijn vier soorten NoSQL-databases: 1). Sleutel-waarde paargebaseerd 2). Kolomgeoriënteerde grafiek 3). Op grafieken gebaseerde 4). Documentgericht
  • NOSQL kan met hetzelfde effect gestructureerde, semi-gestructureerde en ongestructureerde gegevens verwerken
  • CAP-stelling bestaat uit drie woorden Consistentie, Beschikbaarheid en Partitietolerantie
  • BASE staat voor Basisch Abeschikbaar, Svaak staat, Eventuele consistentie
  • De term ‘uiteindelijke consistentie’ betekent het hebben van kopieën van gegevens op meerdere machines om een ​​hoge beschikbaarheid en schaalbaarheid te verkrijgen
  • NOSQL bieden beperkte zoekmogelijkheden