Mysql
 sql >> Base de données >  >> RDS >> Mysql

Partage de base de données vs partitionnement

Le partitionnement est plus un terme générique pour diviser les données entre des tables ou des bases de données. Le sharding est un type spécifique de partitionnement, qui fait partie de ce qu'on appelle le partitionnement horizontal.

Ici, vous répliquez le schéma sur (généralement) plusieurs instances ou serveurs, en utilisant une sorte de logique ou d'identifiant pour savoir quelle instance ou quel serveur rechercher les données. Un identifiant de ce type est souvent appelé "Shard Key".

Une logique courante sans clé consiste à utiliser l'alphabet pour diviser les données. A-D est l'instance 1, E-G est l'instance 2, etc. Les données client sont bien adaptées à cela, mais leur taille sera quelque peu déformée entre les instances si le partitionnement ne tient pas compte du fait que certaines lettres sont plus courantes que d'autres.

Une autre technique courante consiste à utiliser un système ou une logique de synchronisation des clés qui garantit des clés uniques entre les instances.

Un exemple bien connu que vous pouvez étudier est la façon dont Instagram a résolu son partitionnement au début (voir lien ci-dessous). Ils ont commencé partitionnés sur très peu de serveurs, utilisant Postgres pour diviser les données dès le départ. Je crois que c'était plusieurs milliers de fragments logiques sur ces quelques fragments physiques. Lisez leur superbe article de 2012 ici :Instagram Engineering - Sharding &IDs

Voir également ici :http://www.quora. com/Quelle est la différence entre le partitionnement et la partition