NoSql vs Relationale Datenbank


Antworten:


123

Nicht alle Daten sind relational. In solchen Situationen kann NoSQL hilfreich sein.

Trotzdem steht NoSQL für "Not Only SQL". Es ist nicht beabsichtigt, SQL anzuklopfen oder zu ersetzen.

SQL hat mehrere sehr große Vorteile:

  1. Starke mathematische Basis.
  2. Deklarative Syntax.
  3. Eine bekannte Sprache in Structured Query Language (SQL).

Die sind nicht weggegangen.

Es ist ein Fehler, dies als Entweder-Oder-Argument zu betrachten. NoSQL ist eine Alternative, die die Leute in Betracht ziehen müssen, wenn es passt, das ist alles.

Dokumente können in nicht relationalen Datenbanken wie CouchDB gespeichert werden.

Vielleicht liest diesen Willen zu helfen.


10
Können Sie einige Beispiele für nicht relationale Daten nennen?
user496949

7
Dokumente und Bilder können auch in RDBMS gespeichert werden, wie SQL Server und Oracle? Warum dann NoSQL?
user496949

2
Halbstrukturierte Daten sind eine solche Klasse. Es enthält XML, E-Mails, JSON usw. Siehe die Wikipedia-Seite darauf. Die allgemeine Regel lautet, dass die Struktur vorhanden ist, aber lose definiert und dynamisch erweiterbar ist (letztere tendieren dazu, mit dem relationalen Modell zu klassifizieren - und obwohl es nicht unmöglich ist, zu modellieren, ist es definitiv umständlich). Eine andere Klasse sind "natürliche Daten": Ein Roman, ein Bild, beide ohne Metadaten.
Ich gebe Crap Antworten

2
Das kannst du nicht SELECT blob FROM images WHERE blob CONTAINS('red car'). Während Sie die Rohdaten in der Datenbank speichern können, können Sie sie nicht durchsuchen, ohne Metadaten anzuhängen. Volltextsuchmodule in RDBMS-Systemen schließen einen Teil der halbstrukturellen Lücke.
Ich gebe Crap Antworten

1
@duffymo: Dokumente sind nicht "nicht relational". Dokumente werden häufig in SQL-DBMS gespeichert, und dafür benötigen Sie kein NOSQL-DBMS. Tatsächlich verwenden NOSQL-Datenbanken häufig Datenmodelle, die weniger allgemein und in der Anwendung eingeschränkter sind als das relationale Modell. ZB Graphendatenbanken. Die Art der gespeicherten Daten erklärt keinen Vorteil von NOSQL.
Nvogel

98

Die Geschichte scheint so auszusehen:

  1. Google benötigt eine Speicherebene für den invertierten Suchindex. Sie gehen davon aus, dass ein traditionelles RDBMS es nicht schaffen wird. Daher implementieren sie einen NoSQL-Datenspeicher, BigTable, über ihrem GFS-Dateisystem. Der Hauptteil ist, dass Tausende von billigen Standardhardwaremaschinen die Geschwindigkeit und die Redundanz bereitstellen.

  2. Alle anderen erkennen, was Google gerade getan hat.

  3. Brauer Satz von CAP ist bewiesen. Alle verwendeten RDBMS-Systeme sind CA-Systeme. Die Leute beginnen auch mit CP- und AP-Systemen zu spielen. K / V-Geschäfte sind wesentlich einfacher und daher das Hauptinstrument für die Forschung.

  4. Software-as-a-Service-Systeme bieten im Allgemeinen keinen SQL-ähnlichen Speicher. Daher interessieren sich die Leute mehr für die NoSQL-Stores.

Ich denke, ein Großteil des Starts kann mit dieser Geschichte zusammenhängen. Skalierung Google hat bei Google einige neue Ideen aufgegriffen, und alle anderen folgen diesem Beispiel, da dies die einzige Lösung ist, die sie derzeit für das Skalierungsproblem kennen. Daher sind Sie bereit, alles rund um die Idee der verteilten Datenbank von Google zu überarbeiten, da dies die einzige Möglichkeit ist, über eine bestimmte Größe hinaus zu skalieren.

C - Konsistenz
A - Verfügbarkeit
P - Partitionstoleranz
K / V - Schlüssel / Wert


10
Was ist CAP, CP, AP, K / V?
bekanntasilya

3
Schlagen Sie den CAP-Satz auf Wikipedia nach. CA und CP stammen von dort. K / V ist die Abkürzung für Key / Value, eine (verteilte) endliche Zuordnung von Schlüsseln zu Werten.
Ich gebe Crap Antworten

" Alle anderen erkennen, was Google gerade getan hat. " Lol. Scheint mir eine schottische Antwort zu sein (auch bekannt als NOT CRAP).
Ruffin

38

NoSQL ist aus den folgenden Gründen / Eigenschaften von NoSQL besser als RDBMS

  1. Es unterstützt halbstrukturierte Daten und flüchtige Daten
  2. Es hat kein Schema
  3. Der Lese- / Schreibdurchsatz ist sehr hoch
  4. Die horizontale Skalierbarkeit kann leicht erreicht werden
  5. Unterstützt Bigdata in Mengen von Terra Bytes & Peta Bytes
  6. Bietet gute Unterstützung für Analysetools zusätzlich zu Bigdata
  7. Kann in billigeren Hardwaremaschinen gehostet werden
  8. Die speicherinterne Caching-Option ist verfügbar, um die Leistung von Abfragen zu erhöhen
  9. Schnellere Entwicklungslebenszyklen für Entwickler

BEARBEITEN:

Um zu beantworten, warum RDBMS nicht skaliert werden kann, werfen Sie bitte einen Blick auf RDBMS Overheads pdf, geschrieben von Stavros Harizopoulos, Daniel J. Abadi, Samuel Madden und Michael Stonebraker

RDBMS haben Probleme beim Umgang mit großen Datenmengen von Terabyte- und Peta-Bytes . Selbst wenn Sie über ein redundantes Array unabhängiger / kostengünstiger Festplatten (RAID) und Datenvernichtung verfügen, lässt es sich nicht gut für ein großes Datenvolumen skalieren. Sie benötigen sehr teure Hardware.

Protokollierung : Das Zusammenstellen von Protokolldatensätzen und das Aufspüren aller Änderungen in Datenbankstrukturen verlangsamt die Leistung. Eine Protokollierung ist möglicherweise nicht erforderlich, wenn die Wiederherstellbarkeit nicht erforderlich ist oder wenn die Wiederherstellbarkeit auf andere Weise bereitgestellt wird (z. B. durch andere Standorte im Netzwerk).

Sperren : Traditionelle Zweiphasenverriegelung stellt einen beträchtlichen Aufwandda alle Zugriffe auf Datenbankstrukturen durch eine separate Einheit geregelt werden, dem Lock Manager.

Latching : In einer Multithread-Datenbank müssen viele Datenstrukturen zwischengespeichert werden, bevor auf sie zugegriffen werden kann. Das Entfernen dieser Funktion und das Wechseln zu einem Single-Threaded-Ansatz hat spürbare Auswirkungen auf die Leistung.

Pufferverwaltung : Ein Hauptspeicher-Datenbanksystem muss nicht über einen Pufferpool auf Seiten zugreifen, wodurch bei jedem Datensatzzugriff eine Indirektionsebene vermieden wird.

Dies bedeutet nicht, dass wir NoSQL über SQL verwenden müssen.

Dennoch ist RDBMS aus den folgenden Gründen / Eigenschaften von RDBMS besser als NoSQL

  1. Transaktionen mit ACID- Eigenschaften - Atomizität, Konsistenz, Isolierung und Haltbarkeit
  2. Einhaltung des starken Schemas der Daten, die geschrieben / gelesen werden
  3. Echtzeit-Abfragemanagement (bei Datengröße <10 Tera Bytes)
  4. Ausführung komplexer Abfragen mit join & group by-Klauseln

Wir müssen RDBMS (SQL) und NoSQL (nicht nur SQL) verwenden, abhängig vom Geschäftsfall und den Anforderungen


2
Es ist erwähnenswert, dass einige NoSQL-Datenbanken ACID-Transaktionen unterstützen.
Dave Cassel

15

NOSQL hat keine besonderen Vorteile gegenüber dem relationalen Datenbankmodell. NOSQL behebt zwar bestimmte Einschränkungen aktueller SQL-DBMS, impliziert jedoch keine grundlegend neuen Funktionen gegenüber früheren Datenmodellen.

NOSQL bedeutet nur kein SQL (oder "nicht nur SQL"), aber das bedeutet nicht dasselbe wie kein relationales . Eine relationale Datenbank wäre im Prinzip eine sehr gute NOSQL-Lösung - es ist nur so, dass keines der aktuellen NOSQL-Produkte das relationale Modell verwendet.


4
Es scheint, dass Mark Madsen auf der jüngsten O'Reilly Strata-Konferenz eine neue Interpretation von "NoSQL" in seiner Geschichte der Datenbanken geprägt hat , um "Not Only SQL" zu ersetzen. Es ist jetzt: "Nein, SQL" ;-)
Lukas Eder

4

RDBMS konzentrieren sich mehr auf Beziehungen und NoSQL mehr auf Speicher.

Sie können die Verwendung von NoSQL in Betracht ziehen, wenn Ihr RDBMS Engpässe erreicht. NoSQL macht RDBMS flexibler.


4

Der größte Vorteil von NoSQL gegenüber RDBMS ist die Skalierbarkeit .
NoSQL-Datenbanken können problemlos auf viele Knoten skaliert werden, für RDBMS ist dies jedoch sehr schwierig.
Durch die Skalierbarkeit erhalten Sie nicht nur mehr Speicherplatz, sondern auch eine viel höhere Leistung, da viele Hosts gleichzeitig arbeiten.


3

Wenn Sie große Datenmengen mit hoher Leistung verarbeiten müssen

ODER

Wenn das Datenmodell nicht vorbestimmt ist

dann

NoSQL-Datenbank ist eine bessere Wahl.


2

Fügen Sie einfach alle oben angegebenen Informationen hinzu

NoSql Vorteile:

1) NoSQL ist gut, wenn Sie schnell produktionsbereit sein möchten, da es eine schemalose und objektorientierte Architektur unterstützt.

2) NoSql-Datenbanken sind letztendlich konsistent, was in einfacher Sprache bedeutet, dass sie keine Sperre für die Daten (Dokumente) bieten, wie im Fall von RDBMS, und was bedeutet, dass immer der neueste Schnappschuss von Daten verfügbar ist und somit die Latenz Ihrer Anwendung erhöht .

3) Es verwendet die MVCC-Strategie (Multi View Concurrency Control) zum Verwalten und Erstellen von Snapshots von Daten (Dokumenten).

4) Wenn Sie indizierte Daten haben möchten, können Sie eine Ansicht erstellen, die die Daten automatisch anhand der von Ihnen angegebenen Ansichtsdefinition indiziert.

NoSql Nachteile:

1) Es ist definitiv nicht für große schwere Transaktionsanwendungen geeignet, da es letztendlich konsistent ist und keine ACID-Eigenschaften unterstützt.

2) Außerdem werden mehrere Snapshots (Revisionen) Ihrer Daten (Dokumente) erstellt, da die MVCC-Methode für die Parallelitätskontrolle verwendet wird. Dadurch wird der Speicherplatz schneller als zuvor belegt, wodurch die Komprimierung und damit die Neuindizierung häufiger wird und Ihre Daten langsamer werden Antwort der Anwendung, wenn die Daten und Transaktionen in Ihrer Anwendung zunehmen. Um dem entgegenzuwirken, können Sie die Knoten horizontal skalieren, aber andererseits sind die Kosten höher als beim Vergleich der SQL-Datenbank.


1

Von mongodb.com :

NoSQL-Datenbanken unterscheiden sich von älteren relationalen Technologien in vier Hauptbereichen:

Datenmodelle : Mit einer NoSQL-Datenbank können Sie eine Anwendung erstellen, ohne das Schema zuerst definieren zu müssen, im Gegensatz zu relationalen Datenbanken, mit denen Sie Ihr Schema definieren, bevor Sie dem System Daten hinzufügen können. Kein vordefiniertes Schema erleichtert die Aktualisierung von NoSQL-Datenbanken erheblich, wenn sich Ihre Daten und Anforderungen ändern.

Datenstruktur : Relationale Datenbanken wurden in einer Zeit erstellt, in der Daten ziemlich strukturiert und durch ihre Beziehungen klar definiert waren. NoSQL-Datenbanken sind für den Umgang mit unstrukturierten Daten (z. B. Texten, Social Media-Posts, Videos, E-Mails) ausgelegt, die einen Großteil der heute vorhandenen Daten ausmachen.

Skalierung : Es ist viel billiger, eine NoSQL-Datenbank zu skalieren als eine relationale Datenbank, da Sie die Kapazität erhöhen können, indem Sie über billige Commodity-Server skalieren. Für relationale Datenbanken ist hingegen ein einzelner Server erforderlich, um Ihre gesamte Datenbank zu hosten. Um zu skalieren, müssen Sie einen größeren, teureren Server kaufen.

Entwicklungsmodell : NoSQL-Datenbanken sind Open Source, während relationale Datenbanken in der Regel Closed Source sind und Lizenzgebühren in die Verwendung ihrer Software einfließen. Mit NoSQL können Sie ohne große Investitionen in Softwaregebühren im Voraus mit einem Projekt beginnen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.