Es geht nicht um NoSQL vs SQL, es geht um BASE vs ACID.
Skalierbar muss in seine Bestandteile zerlegt werden:
- Leseskalierung = Erledigt höhere Volumina von Lesevorgängen
- Schreibskalierung = Erledigt höhere Volumina von Schreibvorgängen
ACID-kompatible Datenbanken (wie herkömmliche RDBMS) können Lesevorgänge skalieren. Sie sind von Natur aus nicht weniger effizient als NoSQL-Datenbanken, da die (möglichen) Leistungsengpässe durch Dinge verursacht werden, die NoSQL (manchmal) fehlt (wie Joins und wo Einschränkungen), die Sie nicht verwenden können. Mit SQL-RDBMS-Clustern können Lesevorgänge skaliert werden, indem zusätzliche Knoten in den Cluster eingefügt werden. Es gibt Einschränkungen, inwieweit Leseoperationen skaliert werden können. Diese ergeben sich jedoch aus der Schwierigkeit, Schreibvorgänge zu skalieren, wenn Sie mehr Knoten in den Cluster einfügen.
Beim Skalieren von Texten wird es haarig. Das ACID-Prinzip unterwirft verschiedene Einschränkungen, die Sie in schließlich konsistenten (BASE-) Architekturen nicht sehen:
- Atomicity bedeutet, dass Transaktionen als Ganzes abgeschlossen werden müssen oder fehlschlagen müssen. Daher muss eine Menge Buchhaltung hinter den Kulissen betrieben werden, um dies zu gewährleisten.
- Konsistenzbeschränkungen bedeuten, dass alle Knoten im Cluster identisch sein müssen. Wenn Sie auf einen Knoten schreiben, muss dieser Schreibvorgang auf alle anderen Knoten kopiert werden, bevor eine Antwort an den Client zurückgegeben wird. Dies macht es schwierig, einen herkömmlichen RDBMS-Cluster zu skalieren.
- Haltbarkeitsbeschränkungen bedeuten, dass Sie sicherstellen müssen, bevor eine Antwort an den Client zurückgesendet wird, dass der Schreibvorgang auf die Festplatte geschrieben wurde, um niemals einen Schreibvorgang zu verlieren.
Um Schreibvorgänge oder die Anzahl der Knoten in einem Cluster über einen bestimmten Punkt hinaus zu skalieren, müssen Sie einige der ACID-Anforderungen lockern können:
- Durch das Löschen von Atomicity können Sie die Dauer verkürzen, für die Tabellen (Datensätze) gesperrt sind. Beispiel: MongoDB, CouchDB.
- Durch das Löschen von Consistency können Sie Schreibvorgänge über Clusterknoten hinweg skalieren. Beispiele: Riak, Cassandra.
- Durch das Löschen von Durability können Sie auf Schreibbefehle reagieren, ohne die Festplatte zu leeren. Beispiele: Memcache, Redis.
NoSQL-Datenbanken folgen normalerweise dem BASE-Modell anstelle des ACID-Modells. Sie geben die A-, C- und / oder D-Anforderungen auf und verbessern im Gegenzug die Skalierbarkeit. Bei einigen wie Cassandra können Sie sich für die Garantien von ACID entscheiden, wenn Sie diese benötigen. Es sind jedoch nicht immer alle NoSQL-Datenbanken skalierbarer.
Der SQL-API fehlt ein Mechanismus zur Beschreibung von Abfragen, bei denen die Anforderungen von ACID gelockert werden. Aus diesem Grund sind alle BASE-Datenbanken NoSQL.
Persönliche Anmerkung: Ein letzter Punkt, den ich ansprechen möchte, ist, dass in den meisten Fällen, in denen NoSQL zur Verbesserung der Leistung verwendet wird, eine Lösung für ein ordnungsgemäßes RDBMS möglich ist, indem ein ordnungsgemäß normalisiertes Schema mit geeigneten Indizes verwendet wird. Wie von genau dieser Site (unterstützt von MS SQL Server) bewiesen, können RDBMS auf hohe Arbeitslasten skaliert werden, wenn Sie sie ordnungsgemäß verwenden. Leute, die nicht verstehen, wie man RDBMS optimiert, sollten sich von NoSQL fernhalten, weil sie nicht verstehen, welche Risiken sie mit ihren Daten eingehen.
Update (17.09.2019):
Die Datenbanklandschaft hat sich seit dem Posten dieser Antwort weiterentwickelt. Obwohl es immer noch eine Dichotomie zwischen der RDBMS ACID-Welt und der NoSQL BASE-Welt gibt, ist die Linie unübersichtlicher geworden. Die NoSQL-Datenbanken haben Funktionen aus der RDBMS-Welt wie SQL-APIs und Transaktionsunterstützung hinzugefügt. Es gibt jetzt sogar Datenbanken, die SQL, ACID und Schreibskalierung versprechen , wie Google Cloud Spanner, YugabyteDB oder CockroachDB. Typischerweise steckt der Teufel im Detail, aber für die meisten Zwecke sind diese "SÄURE genug". Für einen tieferen Einblick in die Datenbanktechnologie und deren Entwicklung können Sie sich dieses Foliendeck ansehen (die Foliennotizen enthalten die dazugehörige Erklärung).