Database
 sql >> Datenbank >  >> RDS >> Database

Relationale vs. nicht relationale Datenbanken – Teil 1

In den letzten Jahren haben NoSQL- oder nicht-relationale Datenbank-Tools in Bezug auf die Speicherung großer Datenmengen und deren einfache Skalierung große Popularität erlangt. Es wird diskutiert, ob nicht-relationale Datenbanken in Zukunft relationale Datenbanken ersetzen werden. Angesichts der zunehmenden Anzahl von sozialen Daten und anderen unstrukturierten Daten stellen sich die folgenden Fragen zu relationalen Datenbanken.
Sind relationale Datenbanken in der Lage, Big Data zu verarbeiten?
Können relationale Datenbanken massiv skaliert werden? Datenmenge?
Sind relationale Datenbanken für die Daten des modernen Zeitalters geeignet?
Bevor Sie diese Fragen beantworten, lassen Sie uns einige Grundlagen sowohl relationaler als auch nicht-relationaler Datenbanken wissen.

Grundlagen relationaler und nicht relationaler Datenbanken

Relationale Datenbanken: Das Konzept der relationalen Datenbank wurde in den 1970er Jahren entwickelt. Das wichtigste Merkmal aller relationalen Datenbanken ist die Unterstützung von ACID-Eigenschaften (Automicity, Consistency, Isolation and Durability), die sicherstellt, dass alle Transaktionen zuverlässig verarbeitet werden.
Automatizität: Jede Transaktion ist einzigartig und stellt sicher, dass, wenn ein logischer Teil einer Transaktion fehlschlägt, alles zurückgesetzt wird, sodass die Daten unverändert bleiben.
Konsistenz: Alle in die Datenbank geschriebenen Daten unterliegen den definierten Regeln (Einschränkungen, Auslöser usw.)
Isolation: Änderungen, die in einer Transaktion vorgenommen werden, sind für andere Transaktionen nicht sichtbar, bis sie festgeschrieben sind.
Dauerhaftigkeit: Änderungen, die in einer Transaktion festgeschrieben werden, werden gespeichert und sind in der Datenbank verfügbar, selbst wenn es zu einem Stromausfall kommt oder die Datenbank plötzlich offline geht.
Streng strukturiert: Die Objekte in den relationalen Datenbanken sind streng strukturiert. Alle Daten in der Tabelle werden in Zeilen und Spalten gespeichert. Jede Spalte hat einen Datentyp. Es ist meist normalisiert. Die Structured Query Language (SQL) eignet sich für relationale Datenbanken, um Daten strukturiert zu speichern und abzurufen. Abfragen sind einfache englische Befehle. Es gibt immer eine feste Anzahl von Spalten, obwohl zusätzliche Spalten später hinzugefügt werden können. Die meisten Tabellen sind über Primär- und Fremdschlüssel miteinander verbunden und bieten so „Referentielle Integrität“ zwischen den Objekten. Die wichtigsten Anbieter sind ORACLE, SQL Server, MySQL, PostgreSQL usw.
Nicht relationale Datenbanken: Das Konzept der nicht relationalen Datenbanken kam ins Spiel, um das schnelle Wachstum unstrukturierter Daten zu bewältigen und sie einfach zu skalieren. Dies bietet ein flexibles Schema, sodass es keine „referenzielle Integrität“ gibt, wie wir sie in relationalen Datenbanken sehen. Die Daten sind stark denormalisiert und erfordern keine JOINs zwischen Objekten. Dies lockert die ACID-Eigenschaft relationaler Datenbanken und unterstützt CAP (Consistency, Availability, and Partitioning). Aber von diesen dreien sind nur zwei zu jedem Zeitpunkt garantiert. Im Gegensatz zu ACID wird es also nur BASE (Basically Available Soft State, Eventual Consistency) unterstützen. Die ersten Datenbanken, die auf der Grundlage dieser Konzepte erstellt wurden, sind BigTable von Google, HBase von Yahoo, Cassandra von Facebook usw.
Kategorien nicht relationaler Datenbanken: Nichtrelationale Datenbanken können in vier Hauptkategorien eingeteilt werden, z. B. Schlüsselwertdatenbank, Spaltendatenbank, Dokumentendatenbank und Diagrammdatenbank.
Schlüsselwertdatenbank: Dies ist die einfachste Form einer NoSQL-Datenbank, bei der jeder Wert mit dem eindeutigen Schlüssel verknüpft ist. (ex Redis)
Spaltendatenbank: Diese Datenbank ist in der Lage, große Datenmengen zu speichern und zu verarbeiten, indem sie einen Zeiger verwendet, der auf viele Spalten zeigt, die über einen Cluster verteilt sind. (ex HBase)
Dokumentendatenbank: Diese Datenbank kann viele Schlüsselwertdokumente mit vielen verschachtelten Ebenen enthalten. Effizientes Abfragen ist mit dieser Datenbank möglich. Die Dokumente werden im JSON-Format gespeichert. (ex MongoDB)
Graph-Datenbank: Anstelle herkömmlicher Zeilen und Spalten verwendet diese Datenbank Knoten und Kanten, um Diagrammstrukturen darzustellen und Daten zu speichern. (ehemals Neo4J)