Warum NoSQL sagt, dass traditionelles RDBMS bei skalierbar [geschlossen] nicht gut ist

8

Ich habe einen Artikel gelesen sagen, dass RDBMS wie MySQL ist nicht gut skalierbar, aber NoSQL wie MongoDB kann gut shard. Ich möchte wissen, welche Funktion RDBMS zur Verfügung gestellt hat, kann nicht gut shard.

    
shuitu 06.08.2010, 11:11
quelle

3 Antworten

30

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 :

  • Konsistenz
  • Verfügbarkeit
  • Partitionstoleranz

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.

    
Niels van der Rest 06.08.2010, 12:31
quelle
0

Abfragen mit mehreren Shards sind komplex (zB JOINs zwischen Tabellen in verschiedenen Shards)

    
ggarber 06.08.2010 11:20
quelle
0

Warum NoSQL-Typen und Dudetten Joins nicht mögen: Ссылка

    
TTT 06.08.2010 19:16
quelle

Tags und Links