Maison >Problème commun >Il existe plusieurs façons de diviser une base de données
Le fractionnement de la base de données comprend : 1. Diviser par fonction [segmentation verticale] et placer les tableaux liés à différentes fonctions dans différentes bases de données. L'avantage est que c'est très intuitif 2. Selon une certaine partie de la base de données. Tableau Division de la plage des valeurs de champ [segmentation horizontale]. Lorsque la quantité de données dans une certaine table devient de plus en plus grande et devient insupportable, elle doit être davantage segmentée.
Plusieurs façons de diviser la base de données :
1. Diviser par fonction (segmentation verticale)
Mettre les tableaux liés aux différentes fonctions dans différentes bases de données. L'avantage est que c'est très intuitif. Mais lorsque le volume de données ou les exigences de performances d'une certaine partie de la fonction dépassent la plage contrôlable, il faut la segmenter davantage.
2. Diviser en fonction de la plage d'une certaine valeur de champ dans la table (segmentation horizontale)
Lorsque la quantité de données dans une certaine table devient de plus en plus grande et devient insupportable, elle doit être segmentée davantage. Une option consiste à segmenter en fonction de la plage de touches, par exemple, placer les ID 1 à 10 000 sur A et les ID 10 000 à 20 000 sur B. Une telle expansion est prévisible. L'autre consiste à diviser selon une certaine valeur de champ. Par exemple, selon la première lettre du nom d'utilisateur, s'il s'agit de A-D, il appartient à A et E-H appartient à B. Il existe également un déséquilibre. Lorsqu'une certaine plage dépasse la plage qu'un seul point peut supporter, elle doit continuer à être divisée. Il existe également une segmentation par date, etc.
Avantages : la taille d'une table unique est contrôlable, expansion horizontale naturelle
Inconvénients : Impossible de résoudre le problème des goulots d'étranglement d'écriture centralisés.
3. La segmentation basée sur le hachage
utilise généralement mod pour segmenter. Le nombre de bases de données à segmenter est déterminé au début, et le module de hachage est utilisé pour déterminer laquelle utiliser. Cette méthode peut distribuer les données uniformément, mais à mesure que la quantité de données augmente, lorsqu'une expansion est nécessaire, cette méthode ne peut pas réaliser une expansion en ligne. Chaque fois qu'un nœud est ajouté, l'algorithme de hachage doit être recalculé.
Par conséquent, il est recommandé d'utiliser le hachage cohérent mod 2^n avec cette méthode
En prenant la base de données de commande unifiée Dianping comme exemple, la solution pour la sous-base de données et la sous-table est 32 *32, c'est-à-dire que les quatre derniers chiffres de l'ID utilisateur sont divisés en 32 bibliothèques par le mod 32. En même temps, chaque bibliothèque est divisée en 32 tables en utilisant les quatre derniers chiffres de l'ID utilisateur div 32 mod 32, pour un total de 1024. tableaux. Son déploiement en ligne est de 8 clusters (maître-esclave), chaque cluster dispose de 4 librairies
4. Segmentation basée sur la table de routage
Les méthodes précédentes déterminent toutes les opérations basées sur les données de l'application. La segmentation basée sur la table de routage est une méthode plus souple. Il maintient une table de routage distincte et recherche dans la table de routage pour décider quelle base de données utiliser en fonction d'un certain attribut de l'utilisateur. Cette méthode est une solution plus générale.
Avantages : L'algorithme de mappage de l'identifiant et de la bibliothèque peut être modifié à volonté
Inconvénients : Des points uniques supplémentaires peuvent être introduits
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!