Die meisten RDBMS-Systeme garantieren die sogenannten ACID-Eigenschaften . Die meisten dieser Eigenschaften reduzieren sich auf Konsistenz ; Jede Änderung an Ihren Daten überträgt Ihre Datenbank von einem konsistenten Zustand in einen anderen konsistenten Zustand.
Wenn Sie beispielsweise mehrere Datensätze in einer einzigen Transaktion aktualisieren, stellt die Datenbank sicher, dass die betroffenen Datensätze nicht von anderen Abfragen geändert werden, solange die Transaktion nicht abgeschlossen wurde. Während der Transaktion können mehrere Tabellen für die Änderung gesperrt werden. Wenn diese Tabellen auf mehrere Shards / Server verteilt sind, dauert es länger, die entsprechenden Sperren zu erhalten, die Daten zu aktualisieren und die Sperren aufzuheben.
Das CAP-Theorem besagt, dass ein verteiltes (dh skalierbares) System nicht alle der folgenden Eigenschaften gleichzeitig garantieren kann :
RDBMS-Systeme garantieren Konsistenz. Durch das Härten wird das System für die Partitionierung tolerant. Aus dem Theorem folgt, dass das System daher die Verfügbarkeit nicht garantieren kann. Deshalb kann ein Standard-RDBMS nicht sehr gut skalieren: Es kann nicht die Verfügbarkeit garantieren. Und was nützt eine Datenbank, wenn Sie nicht darauf zugreifen können?
NoSQL-Datenbanken verlieren ihre Konsistenz zugunsten der Verfügbarkeit. Aus diesem Grund sind sie besser skalierbar.
Ich sage nicht, dass RDBMS-Systeme überhaupt nicht skalieren können, es ist nur schwieriger. In diesem Artikel werden einige der möglichen Shard-Schemata und die möglicherweise auftretenden Probleme beschrieben. Die meisten Ansätze opfern die Konsistenz, die eines der wichtigsten Merkmale von RDBMS-Systemen ist und die Skalierung verhindert.