Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Datenbank-Sharding vs. Partitionierung

Partitionierung ist eher ein allgemeiner Begriff für die Aufteilung von Daten auf Tabellen oder Datenbanken. Sharding ist eine spezielle Art der Partitionierung, ein Teil der sogenannten horizontalen Partitionierung.

Hier replizieren Sie das Schema über (normalerweise) mehrere Instanzen oder Server hinweg, indem Sie eine Art Logik oder Kennung verwenden, um zu wissen, welche Instanz oder welcher Server nach den Daten suchen soll. Eine solche Kennung wird oft als „Shard Key“ bezeichnet.

Eine übliche, schlüssellose Logik besteht darin, das Alphabet zu verwenden, um die Daten zu unterteilen. A-D ist Instanz 1, E-G ist Instanz 2 usw. Kundendaten sind dafür gut geeignet, werden aber in der Größe über Instanzen hinweg etwas falsch dargestellt, wenn die Partitionierung nicht berücksichtigt, dass einige Buchstaben häufiger vorkommen als andere.

Eine andere gängige Technik ist die Verwendung eines Schlüsselsynchronisierungssystems oder einer Logik, die eindeutige Schlüssel für alle Instanzen sicherstellt.

Ein bekanntes Beispiel, das Sie studieren können, ist, wie Instagram seine Partitionierung in den frühen Tagen gelöst hat (siehe Link unten). Sie begannen partitioniert auf sehr wenigen Servern und verwendeten Postgres, um die Daten von Anfang an aufzuteilen. Ich glaube, es waren mehrere tausend logische Shards auf diesen wenigen physischen Shards. Lesen Sie hier ihren großartigen Bericht von 2012:Instagram Engineering - Sharding &IDs

Siehe auch hier:http://www.quora. com/Was-ist-der-Unterschied-zwischen-Sharding-und-Partition