Die Grundlagen von NoSQL-Datenbanken - und warum wir sie brauchen

Ein Leitfaden für Anfänger in die NoSQL-Welt

Das Organisieren von Daten ist eine sehr schwierige Aufgabe. Wenn wir "Organisieren" sagen, kategorisieren wir Dinge tatsächlich nach Typ und Funktion.

Eine Option ist, dass RDBMS wie eine Excel-Tabelle ist - Sie kategorisieren Daten in Form von Tabellen. Sie können Beziehungen zwischen den Tabellen herstellen.

Eine Abfrage befragt die Datenbank, die Ihnen im Gegenzug eine relevante Antwort gibt. Diese Abfragesprache ist SQL oder Structured Query Language.

Zum Beispiel,

select * from Employee_Data;

wählt alle Mitarbeiterdaten aus der Tabelle Employee_Data aus.

Relationale Datenbanken folgen einem Schema , einem detaillierten Entwurf der Funktionsweise Ihrer Tabellen.

Sie verwenden Amazon, Facebook und so viele Netzwerkanwendungen. Sie veröffentlichen Updates, fügen neue Funktionen und sogar zusätzliche Module hinzu. Wie ändert man das Schema jedes Mal? Ist es nicht zeitaufwändig für so große Unternehmen, ihre Zeit und Arbeit der Änderung des Schemas zu widmen?

Hier konnte SQL nicht funktionieren .

Die Nachteile von RDBMS

Relationale Datenbanken sind heutzutage nicht so schlecht wie Menschen. Sie werden immer noch von vielen Organisationen verwendet. Die Einführung von NoSQL in das Bild dient dazu, die Bereiche zu füllen, in denen RDBMS nicht mehr von Nutzen sein kann.

Ich werde Ihnen Beispiele zeigen, damit Sie ein klares Verständnis haben.

1. RDBMS kann nicht mit 'Data Variety' umgehen.

Die Menge unstrukturierter Daten nimmt jährlich weiter zu und die Verwaltung ist schwierig. RDBMS kann nicht alle Datentypen unter einem einheitlichen Tabellenschema erzwingen.

Datensilos sind auch ein Problem für Entwickler.

Laut Tech Target ist ein Datensilo ein Repository von Daten, das unter der Kontrolle einer Abteilung bleibt. Es ist vom Rest der Organisation isoliert.

Dies bedeutet, dass wenn mehr Silos für dieselben Daten vorhanden sind, deren Inhalt wahrscheinlich unterschiedlich ist. Dies führt zu Verwirrung darüber, welches Repository die aktuellste Version darstellt.

Der Anstieg der Daten von 2013 bis 2020 ist im Bild unten zu sehen.

Im Jahr 2020 werden rund 44 Zeta-Datenbytes generiert.

Der Umgang mit so unterschiedlichen Daten, die nicht miteinander in Beziehung stehen, könnte in RDBMS viel schwieriger sein.

Beispiel: Es ist schwierig, die Details eines Patienten mit unterschiedlichen Körperbedingungen zu speichern. Die Kategorisierung derart unterschiedlicher Daten ist in RDBMS schwierig.

2. Es ist schwierig, Tabellen und Beziehungen zu ändern.

Das Ändern der Beziehungen zwischen Tabellen oder das Hinzufügen einer neuen Tabelle kann sich auf die vorhandenen Beziehungen auswirken. Dies bedeutet, das Schema zu ändern.

Eine Änderung des Schemas wäre wie das Entfernen des vorhandenen Schemas und das Entwickeln eines neuen Schemas.

Das Hinzufügen einer neuen Funktionalität würde alle Elemente erfordern, um die neue Struktur zu unterstützen. Veränderung ist unvermeidlich.

Beispiel: Jede zusätzliche Spalte benötigt alle vorherigen Zeilen, um Werte für diese Spalte zu haben. In Cassandra (einer NoSQL-Datenbank) können Sie bestimmten Zeilenpartitionen eine Spalte hinzufügen.

3. RDBMS folgen den ACID-Eigenschaften der Datenbank.

Die ACID-Eigenschaften einer Datenbank sind Atomizität, Konsistenz, Isolation und Haltbarkeit. ‌

Atomizität - Ein "Alles oder Nichts" -Ansatz. Wenn eine Anweisung in der Transaktion fehlschlägt, wird die gesamte Transaktion zurückgesetzt.

Konsistenz - Die Transaktion muss alle vom System definierten Protokolle erfüllen. Keine halb abgeschlossenen Transaktionen.

Isolation - Keine Transaktion hat Zugriff auf eine andere Transaktion, die sich in einem Zwischen- oder unvollendeten Zustand befindet. Jede Transaktion ist unabhängig.

Haltbarkeit - Stellt sicher, dass eine Transaktion, sobald sie in die Datenbank übernommen wurde, mithilfe von Sicherungen und Transaktionsprotokollen erhalten bleibt.

Die ACID-Eigenschaften sind nicht flexibel.

Zum Beispiel folgt RDBMS der Normalisierung oder einem Einzelpunkt-Wahrheitskonzept . Für jede Änderung, die Sie vornehmen, sollten Sie strenge ACID-Eigenschaften sicherstellen. Es gelten auch die Regeln für Entitätsintegrität und referenzielle Integrität.

Der CAP-Satz

Laut Wikipedia besagt das CAP-Theorem (Brewer-Theorem), dass es für einen verteilten Datenspeicher unmöglich ist , mehr als zwei der folgenden drei Garantien gleichzeitig bereitzustellen :

Konsistenz: Wie das C in ACID.

Verfügbarkeit : ‌Ressourcen sollten immer verfügbar sein. Es sollte eine fehlerfreie Antwort geben.

Partitionstoleranz : Kein einzelner Fehlerpunkt (oder Knoten).

Es ist schwierig, alle drei Bedingungen zu erreichen. Man muss zwischen den drei Kompromisse eingehen.

BASIS zur Rettung!

‌NoSQL basiert auf einem weicheren Modell, dem BASE-Modell. BASE ( B asisch A verfügbar, S oft Zustand, E ventual Konsistenz).

Grundsätzlich verfügbar: Garantiert die Verfügbarkeit der Daten. Es wird eine Antwort auf jede Anfrage geben (kann auch ein Fehler sein).

Weicher Zustand : Der Zustand des Systems kann sich im Laufe der Zeit ändern.

Eventuelle Konsistenz: Das System wird schließlich konsistent, sobald es keine Eingaben mehr empfängt.

NoSQL-Datenbanken geben die A-, C- und / oder D-Anforderungen auf und verbessern im Gegenzug die Skalierbarkeit.

NoSQL

Zu diesem Zeitpunkt kam NoSQL zur Rettung. Es handelt sich um " Nicht nur SQL" - oder "Nicht relationale" Datenbanken.

Eigenschaften von NoSQL:

  • Schema frei
  • Eventuell konsistent (wie in der BASE-Eigenschaft)
  • Replikation von Datenspeichern zur Vermeidung von Single Point of Failure.
  • Kann mit Datenvielfalt und großen Datenmengen umgehen.

Arten von NoSQL-Datenbanken

NoSQL-Datenbanken lassen sich in vier Hauptkategorien einteilen:

Schlüsselwertspeicher - Riak, Voldemort und Redis

Wide Column Stores - Cassandra und HBase.

Dokumentendatenbanken - MongoDB

Graph - Datenbanken - Neo4j und HyperGraphDB.

Die Wörter auf der rechten Seite sind Beispiele für die Typen von NoSQL-Datenbanktypen.

1. Schlüsselwertspeicher

Ein Schlüsselwertspeicher verwendet eine Hash-Tabelle, in der ein eindeutiger Schlüssel und ein Zeiger auf ein bestimmtes Datenelement vorhanden sind.

Stellen Sie sich Schlüsselwertspeicher wie ein Telefonverzeichnis vor, in dem die Namen der Person und ihre Nummern miteinander verknüpft sind.

Schlüsselwertspeicher haben keine Standardabfragesprache. Sie rufen Daten mit den Befehlen get, put und delete ab . Dies ist der Grund für die hohe Leistung.

Anwendungen : Nützlich zum Speichern von Kommentaren und Sitzungsinformationen. ‌Pinterest verwendet Redis, um Listen von Benutzern, Followern, Entfolgern und Foren zu speichern.

2. Breite Spaltenspeicher

In einer Spaltenspeicherdatenbank sind die Spalten in jeder Zeile in dieser Zeile enthalten.

Jede Spaltenfamilie ist ein Container mit Zeilen in einer RDBMS-Tabelle. Der Schlüssel identifiziert die Zeile, die aus mehreren Spalten besteht.

Zeilen müssen nicht die gleiche Anzahl von Spalten haben. Spalten können jederzeit zu jeder Zeile hinzugefügt werden, ohne dass sie anderen Zeilen hinzugefügt werden müssen. Es ist ein partitionierter Zeilenspeicher.

Wie speichert eine Säulendatenbank Daten?

Anwendungen : Spotify verwendet Cassandra zum Speichern von Benutzerprofilattributen und Metadaten.

3. Dokumentendatenbanken

‌Dokumentenspeicher verwenden JSON-, XML- oder BSON-Dokumente (Binärcodierung von JSON) zum Speichern von Daten.

Es ist wie eine Schlüsselwertdatenbank, aber ein Dokumentenspeicher besteht aus halbstrukturierten Daten .

Ein einziges Dokument dient zum Speichern von Datensätzen und deren Daten.

‌Es werden keine Beziehungen oder Verknüpfungen unterstützt.

Wenn wir die Kundendaten und deren Bestellungen speichern möchten, können wir dazu Dokumentenspeicher verwenden.

Anwendungen: SEGAverwendet MongoDB für die Verwaltung von 11 Millionen In-Game-Konten, die auf MongoDB basieren.

4. Diagrammdatenbanken

‌Knoten und Beziehungen sind die wesentlichen Bestandteile von Graphendatenbanken. Ein Knoten repräsentiert eine Entität. Eine Beziehung gibt an , wie zwei Knoten zugeordnet sind.

‌In RDBMS führt das Hinzufügen einer weiteren Beziehung zu vielen Schemaänderungen.

In der Diagrammdatenbank müssen Daten nur einmal gespeichert werden (Knoten). Die verschiedenen Arten von Beziehungen (Kanten) werden für die gespeicherten Daten angegeben.

Die Beziehungen zwischen den Knoten sind vorbestimmt, dh sie werden zum Abfragezeitpunkt nicht bestimmt.

Das Durchqueren von dauerhaften Beziehungen ist schneller.

Es ist schwierig, eine Beziehung zwischen zwei Knoten zu ändern. Dies würde zu regressiven Änderungen in der Datenbank führen.

Beispiel : In diesem Bild funktioniert MySQL, wo viele Operationen ausgeführt werden müssen, um ein korrektes Ergebnis für Alice zu finden.

Ein Graph - Datenbank , die Beziehungen vorgibt.

Dies sind einige der grundlegenden Informationen, die Sie benötigen, um NoSQL zu erkunden. Neue Datenbanken werden für bestimmte Zwecke erfunden.

Erfahren Sie, welche Art von Daten Ihre Anwendung generiert, und wählen Sie dann ganz einfach die richtige Datenbank aus.

Ich schreibe Geschichten über Lebensunterricht, Codierung und Technologie. Um mehr zu lesen, folge mir auf Twitter und Medium.