Maison  >  Article  >  Il existe plusieurs façons de diviser une base de données

Il existe plusieurs façons de diviser une base de données

hzc
hzcoriginal
2020-06-29 13:20:255591parcourir

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.

Il existe plusieurs façons de diviser une base de données

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn