In letzter Zeit hat NoSQL immense Popularität erlangt.
Was sind die Vorteile von NoSQL gegenüber herkömmlichem RDBMS ?
In letzter Zeit hat NoSQL immense Popularität erlangt.
Was sind die Vorteile von NoSQL gegenüber herkömmlichem RDBMS ?
Antworten:
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:
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.
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.
Die Geschichte scheint so auszusehen:
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.
Alle anderen erkennen, was Google gerade getan hat.
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.
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
NoSQL ist aus den folgenden Gründen / Eigenschaften von NoSQL besser als RDBMS
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
Wir müssen RDBMS (SQL) und NoSQL (nicht nur SQL) verwenden, abhängig vom Geschäftsfall und den Anforderungen
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.
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.
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.
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.
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.