it-swarm.com.de

NoSql vs relationale Datenbank

Vor kurzem hatNoSQLimmense Popularität erlangt. 

Was sind die Vorteile vonNoSQLgegenüber traditionellenRDBMS?

144
user496949

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

NoSQL steht für "Not Only SQL". Es ist nicht beabsichtigt, SQL anzustoßen oder zu ersetzen. 

SQL hat mehrere sehr große Vorteile: 

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

Die sind nicht gegangen.

Es ist ein Fehler, das als Argument oder als Argument zu betrachten. NoSQL ist eine Alternative, die die Leute berücksichtigen müssen, wenn es passt. Das ist alles.

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

Vielleicht lesen das wird helfen.

117
duffymo

Die Geschichte scheint so zu sein:

  1. Google benötigt eine Speicherschicht für den invertierten Suchindex. Sie glauben, dass ein traditionelles RDBMS es nicht schneiden wird. Daher implementieren sie einen NoSQL-Datenspeicher, BigTable, über ihrem GFS-Dateisystem. Der größte Teil ist, dass Tausende von Hardware-Hardwaremaschinen für Geschwindigkeit und Redundanz sorgen.

  2. Jeder andere erkennt, was Google gerade getan hat.

  3. Brewers CAP-Theorem ist bewiesen. Alle verwendeten RDBMS-Systeme sind CA-Systeme. Die Leute beginnen auch mit CP- und AP-Systemen zu spielen. K/V-Stores sind wesentlich einfacher, daher sind sie das primäre Vehikel 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-Typ-Stores.

Ich denke, ein großer Teil des Starts kann mit dieser Geschichte zusammenhängen. Die Skalierung von Google hat einige neue Ideen bei Google übernommen, und alle anderen folgen diesem Beispiel, da dies die einzige Lösung ist, die das Skalierungsproblem derzeit kennt. 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

90

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

  1. Es unterstützt semi-strukturierte 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 Volumen von Terra Bytes und Peta Bytes
  6. Bietet guten Support für Analytic-Tools zusätzlich zu Bigdata
  7. Kann auf billigeren Hardwaremaschinen gehostet werden
  8. Die Zwischenspeicherung im Speicher ist verfügbar, um die Leistung von Abfragen zu erhöhen
  9. Schnellere Entwicklungszyklen für Entwickler

EDIT: 

Um zu antworten, "warum RDBMS nicht skalieren kann", werfen Sie einen Blick auf RDBMS Overheads pdf von Stavros Harizopoulos, Daniel J. Abadi, Samuel Madden und Michael Stonebraker

RDBMS haben Schwierigkeiten, riesige Datenmengen von Terabytes und Peta Bytes zu handhaben. Selbst wenn Sie über ein redundantes Array unabhängiger/kostengünstiger Festplatten (RAID) und Datenvernichtung verfügen, eignet es sich nicht für große Datenmengen. Sie benötigen sehr teure Hardware.

Logging: Durch das Zusammenstellen von Protokolldatensätzen und das Nachverfolgen aller Änderungen in Datenbankstrukturen wird die Leistung beeinträchtigt. Die Protokollierung ist möglicherweise nicht erforderlich, wenn die Wiederherstellbarkeit nicht erforderlich ist oder wenn die Wiederherstellbarkeit auf andere Weise bereitgestellt wird (z. B. über andere Standorte im Netzwerk).

Sperren: Die herkömmliche zweiphasige Sperrung verursacht einen erheblichen Aufwand, da alle Zugriffe auf Datenbankstrukturen von einer separaten Entität, dem Sperr-Manager, gesteuert werden.

Latching: In einer Multithreaddatenbank müssen viele Datenstrukturen gesperrt werden, bevor auf sie zugegriffen werden kann. Wenn Sie diese Funktion entfernen und zu einem Ansatz mit einem einzelnen Thread wechseln, wirkt sich dies auf die Leistung aus.

Pufferverwaltung: Ein Hauptspeicher-Datenbanksystem muss nicht über einen Pufferpool auf die Seiten zugreifen, wodurch bei jedem Datensatzzugriff ein Indirektionsgrad entfällt.

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

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

  1. Transaktionen mit ACID - Eigenschaften - Atomizität, Konsistenz, Isolation und Haltbarkeit
  2. Festhalten an einem starken Schema von Daten, die geschrieben/gelesen werden
  3. Echtzeit-Abfrageverwaltung (bei Datengröße <1 0 10 Terabytes)
  4. Ausführung komplexer Abfragen mit join & group by-Klauseln

Je nach Geschäftsfall und Anforderungen müssen RDBMS (SQL) und NoSQL (nicht nur SQL) verwendet werden.

37
Ravindra babu

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

NOSQL bedeutet nur keinSQL(oder "nicht nur SQL"), aber das bedeutet nicht dasselbe wie kein relational . Eine relationale Datenbank würde prinzipiell eine sehr gute NOSQL-Lösung ergeben - es ist nur so, dass keines der aktuellen NOSQL-Produkte das relationale Modell verwendet.

14
nvogel

Der größte Vorteil von NoSQL gegenüber RDBMS ist die Skalierbarkeit. NoSQL-Datenbanken lassen sich problemlos auf viele Knoten skalieren, für RDBMS ist dies jedoch sehr schwierig. Die Skalierbarkeit bietet nicht nur mehr Speicherplatz, sondern auch eine wesentlich höhere Leistung, da viele Hosts gleichzeitig arbeiten.

3
Jonathan Yue

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

ODER 

Wenn das Datenmodell nicht vorbestimmt ist 

dann 

Die NoSQL-Datenbank ist die bessere Wahl.

3
Chris

RDBMSfokussiere mehr auf Beziehung und NoSQL fokussiere mehr auf Speicher. 

Sie können erwägen, NoSQL zu verwenden, wenn IhrRDBMSEngpässe erreicht. NoSQL machtRDBMSflexibler.

2
suiwenfeng

Fügen Sie einfach alle oben angegebenen Informationen hinzu

NoSql Vorteile:

1) NoSQL ist gut geeignet, wenn Sie aufgrund der Unterstützung von schemaloser und objektorientierter Architektur schnell produktionsbereit sein möchten.

2) NoSql DBs sind letztendlich konsistent, was in einfachen Sprachen bedeutet, dass sie keine Sperrung der Daten (Dokumente) gewähren, wie im Fall von RDBMS und was bedeutet, dass die aktuellste Momentaufnahme der Daten immer 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 einer Momentaufnahme 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 Sichtdefinition 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 Momentaufnahmen (Revisionen) Ihrer Daten (Dokumente) erstellt, da die MVCC-Methode für die Parallelitätssteuerung verwendet wird. Dadurch wird der Speicherplatz schneller als zuvor beansprucht, was die Komprimierung und damit die Neuindizierung häufiger macht und Ihre Geschwindigkeit verlangsamt Anwendungsreaktion, da die Daten und Transaktionen in Ihrer Anwendung wachsen ... Um dem entgegenzuwirken, dass Sie die Knoten horizontal skalieren können, sind die Kosten jedoch höher als beim Vergleich der SQL-Datenbank.

1
Manvendra Jina

Von mongodb.com :

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

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

Datenstruktur: Relationale Datenbanken wurden in einer Zeit aufgebaut, in der Daten recht strukturiert und durch ihre Beziehungen klar definiert waren. NoSQL-Datenbanken sind für den Umgang mit unstrukturierten Daten (z. B. Texten, Social-Media-Beiträgen, Video, E-Mail) konzipiert, die einen Großteil der heute vorhandenen Daten ausmachen.

Scaling: Es ist viel billiger, eine NoSQL-Datenbank zu skalieren als eine relationale Datenbank, da Sie Kapazität hinzufügen können, indem Sie über billige Standard-Server skalieren. Bei relationalen Datenbanken ist dagegen ein einzelner Server erforderlich, um Ihre gesamte Datenbank zu hosten. Zum 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 für die Verwendung ihrer Software anfallen. Mit NoSQL können Sie ohne große Investitionen in Software-Gebühren mit einem Projekt beginnen.

1
deadpool