it-swarm.com.de

Was sind die Unterschiede zwischen NoSQL und einem herkömmlichen RDBMS?

Was sind die Unterschiede zwischen NoSQL und einem herkömmlichen RDBMS?

In den letzten Monaten wurde NoSQL häufig in den technischen Nachrichten erwähnt. Was sind die wichtigsten Merkmale im Vergleich zu einem herkömmlichen RDBMS? Auf welcher Ebene (physisch, logisch) treten die Unterschiede auf?

Wo kann man NoSQL am besten nutzen? Warum?

71
Spredzy

NoSQL steht für "Nicht nur SQL" und bedeutet normalerweise, dass die Datenbank keine relationale Datenbank ist, was in den letzten Jahrzehnten sehr beliebt war.

Der Grund, warum NoSQL in den letzten Jahren so beliebt war, liegt hauptsächlich darin, dass eine relationale Datenbank, die aus einem Server herauswächst, nicht mehr so ​​einfach zu verwenden ist. Mit anderen Worten, sie lassen sich in einem verteilten System nicht sehr gut skalieren. Alle großen Websites, auf denen Sie Google, Yahoo, Facebook und Amazon erwähnt haben (ich weiß nicht viel über Digg), haben viele Daten und speichern die Daten in verteilten Systemen für mehrere Gründe dafür. Es kann sein, dass die Daten nicht auf einen Server passen oder dass Anforderungen für eine hohe Verfügbarkeit bestehen.

CAP-Theorem

Die Eigenschaften eines verteilten Systems können durch CAP Theorem beschrieben werden. Von den drei Eigenschaften können Sie höchstens zwei haben:

  • [~ # ~] c [~ # ~] Konsistenz
  • [~ # ~] eine [~ # ~] Verfügbarkeit
  • toleranz gegenüber Netzwerk [~ # ~] p [~ # ~] Artitionierung

Amazon Dynamo verwendet Eventual Consistency , um alle drei Eigenschaften zu erhalten. Das Papier Dynamo: Amazon's Highly Available Key-Value Store ist lesenswert, wenn Sie sich mit NoSQL-Datenbanken und verteilten Systemen vertraut machen. Amazon Dynamo verfügt über die Eigenschaften A und P.

Google verfolgt mit BigTable einen anderen Ansatz, der die Eigenschaften C und A aufweist.

Andere NoSQL-Datenbanken

Wie ich am Anfang schrieb, gibt es viele andere Arten von NoSQL-Datenbanken, die für unterschiedliche Anforderungen ausgelegt sind. Z.B. Diagrammdatenbanken wie Neo4j , Dokumentendatenbanken wie CouchDB und Multimodell-/Objektdatenbanken wie OrientDB .

Abschließend möchte ich sagen, dass relationale Datenbanken weiterhin beliebt sein werden. Sie sind sehr flexibel und wartbar. Aber sie sind nicht immer die beste Wahl.

61
Jonas

NoSQL ist ein sehr weit gefasster Begriff und wird normalerweise als "Nicht nur SQL" bezeichnet. Der Begriff fällt in der Nicht-RDBMS-Community aus.

Sie werden feststellen, dass die NoSQL-Datenbank nur wenige gemeinsame Merkmale aufweist. Sie können grob in einige Kategorien unterteilt werden:

  • schlüssel-/Wertspeicher
  • Von Bigtable inspirierte Datenbanken (basierend auf dem Papier von Google Bigtable)
  • Von Dynamo inspirierte Datenbanken
  • verteilte Datenbanken
  • dokumentendatenbanken

Dies ist eine große Frage, die jedoch in dieser Übersicht über verteilte Datenbanken ziemlich gut beantwortet wird.

Für eine kurze Antwort:

NoSQL-Datenbanken können auf verschiedene Teile von ACID verzichten, um bestimmte andere Vorteile zu erzielen - Partitionstoleranz, Leistung, Lastverteilung oder lineare Skalierung durch Hinzufügen neuer Hardware.

Wann sie verwendet werden sollen, hängt ganz von den Anforderungen Ihrer Anwendung ab.

22

NoSQL ist eine Art Datenbank, die kein festes Schema hat, wie es ein herkömmliches RDBMS tut. Bei den NoSQL-Datenbanken wird das Schema zur Laufzeit vom Entwickler definiert. Sie schreiben keine normalen SQL-Anweisungen für die Datenbank, sondern verwenden stattdessen eine API, um die benötigten Daten abzurufen. Die NoSQL-Datenbanken können normalerweise problemlos auf verschiedene physische Server skaliert werden, ohne dass Sie wissen müssen, auf welchem ​​Server sich die gesuchten Daten befinden.

Es gibt jedoch einige Nachteile für all diese Flexibilität: Die NoSQL-Datenbanken sind im Vergleich zu RDBMS-Systemen wie SQL Server, Oracle, DB2, MySQL usw. ziemlich funktionslos. Es gibt keinen Service Broker, keine Transaktionsprotokollierung, keine ETL-Pakete usw.

NoSQL ist nicht neu. Es gibt es tatsächlich seit 50-60 Jahren. Damals hieß es COBOL. Dieselbe genaue Idee, nur eine andere Gruppe hatte sie.

12
mrdenny

Wenn Sie auf das relationale Setup, auf Primär- und Fremdschlüssel sowie auf den zusätzlichen Aufwand für die Aufrechterhaltung der Transaktionssicherheit verzichten, können Sie häufig extreme Leistungssteigerungen erzielen. Dies gilt jedoch nicht nur für die neuen Datenbanken/Datenspeicher, da MySQL beispielsweise so optimiert wurde, dass es unter Umgehung von Ebenen auf "NoSQL-Ebenen" funktioniert.

Kurz gesagt, Sie können oft eine beeindruckende Leistung erzielen, wenn Sie das Risiko eingehen, möglicherweise Daten zu verlieren. Die meisten NoSQL-Systeme tun dies. Beispielsweise stellt MongoDB Datenänderungen bereit, die geschrieben werden sollen, wenn dies zweckmäßig ist. Die Daten selbst sind sicher und transaktionssicher, werden jedoch in einem flüchtigen Speicher (Speicher) gespeichert. Wenn Sie die Stromversorgung verlieren, können Sie nicht 100% sicher sein, dass Sie keine Daten verloren haben oder dass Sie keine beschädigten Daten haben.

Es ist ein Kompromiss zwischen Sicherheit und Leistung.

6
Johanna Larsson

Ein guter Anfang ist der Wikipedia-Eintrag . Anstatt Daten in einer Tabelle mit einer anderen zu verknüpfen, speichern Sie die Dinge im Wesentlichen als Schlüsselwertpaare, und es gibt kein Datenbankschema. Sie werden stattdessen im Code behandelt.

Einige Sites verwenden gleichzeitig NoSQL und die typischen RDBMS-Server, um jedoch unterschiedliche Daten zu speichern. Sie müssen sich also nicht für das eine oder andere entscheiden.

5
steve.lippert

Ich habe intensiv an der MongoDB NoSQL-Datenbank und Oracle gearbeitet.

Schema

Die SQL-Datenbank verfügt über ein eigenes vordefiniertes Schema zum Speichern strukturierter Daten.

In der NoSQL-Datenbank gibt es kein vordefiniertes Schema. Hier ist das Schema das dynamischste Element, das auf den Datenelementen basiert.

Skalierbarkeit

SQL-Datenbanken sind vertikal skalierbar. Wenn wir also die SQL-Basisdatenbank skalieren möchten, müssen wir den Hardware-Schub geben, auf dem das DBMS-System installiert ist. Hier wird manchmal die Skalierbarkeit eingeschränkt.

NoSQL-Datenbanken sind horizontal skalierbar. Wenn wir sie skalieren möchten, müssen wir weitere Knoten hinzufügen und ein Verteilungsnetzwerk erstellen, das auf unseren eigenen Anforderungen und der erforderlichen Leistung basiert. Auf diese Weise reduzieren sie die Belastung der Datenbank

Datenabruf

In SQL-basierten Datenbanken können wir zum Definieren und Bearbeiten von Daten SQL (Structured Query Language) verwenden, das heutzutage sehr leistungsfähig ist.

In Bezug auf die NoSQL-Datenbank konzentrieren sich Abfragen auf Sammlung und Dokumente. Manchmal wird es als UnQL (Unstructured Query Language) bezeichnet. Dies befindet sich noch in der Evolutionsphase und ist daher von Anbieter zu Anbieter der NoSQL-Datenbank unterschiedlich.

Weitere Informationen zu den wichtigsten Unterschieden finden Sie in meinem Blog: nterschied zwischen SQL- und NoSQL-Datenbank

0