Partage de technologie

La gestion des bases de données à l'ère du big data : l'importance du partitionnement des bases de données et la séparation de la lecture et de l'écriture

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Préface

Les termes « partitionnement » et « fractionnement de base de données » sont souvent mentionnés dans le domaine des bases de données, faisant généralement référence à des concepts similaires, mais différant dans les détails. Le partitionnement de base de données fait généralement référence à la distribution des données d'une grande base de données vers plusieurs bases de données plus petites afin d'améliorer les performances et la gérabilité. Le fractionnement d'une base de données, quant à lui, fait plus largement référence à la décomposition d'un système de base de données en parties plus petites, ce qui peut inclure le partage de base de données ou d'autres types de fractionnement, tels que le partage de tables.

Voici les différences entre le partitionnement et le fractionnement de base de données :

fonctionnalitéPartage de base de donnéesFractionnement de la base de données
définitionDistribuez les données sur plusieurs instances de bases de données physiques.Divisez le système de base de données en entités plus petites.
ButAméliorez les performances, l’évolutivité et la tolérance aux pannes.Améliorez les performances, la gestion et l’évolutivité.
taperComprend principalement le fractionnement horizontal et le fractionnement vertical.Y compris la sous-base de données, la sous-table, la division horizontale, la division verticale, etc.
diviser horizontalementIl s'agit d'une forme de partitionnement qui divise les données par lignes.Probablement une partie d'une division de base de données.
diviser verticalementIl s'agit d'une forme de partitionnement qui divise les données en colonnes.Probablement une partie d'une division de base de données.
complexité de mise en œuvreUne logique de routage plus élevée et supplémentaire est requise.Cela dépend de la méthode de division spécifique.
InfluenceLe code de la couche application devra peut-être être modifié pour s'adapter à la sous-bibliothèque.Le code de la couche application devra peut-être être modifié pour tenir compte des changements.
exempleStockez les données de différents utilisateurs dans différentes bases de données, par exemple, attribuez-les à différentes bases de données en fonction de la valeur de hachage de l'ID utilisateur. Divisez une grande table en plusieurs tables plus petites ou divisez verticalement les données en différentes tables ou bibliothèques. Répartition verticale : stockez les informations sur l'utilisateur et les informations de commande dans différentes bases de données ; répartition horizontale : stockez le tableau des commandes dans différentes bases de données en fonction de la plage d'ID de commande.

Exemple de bibliothèque de branche

  1. -- 分库示例:将订单信息按照用户ID的哈希值存储到不同的数据库
  2. -- 数据库1
  3. CREATE DATABASE orders_db_1;
  4. USE orders_db_1;
  5. CREATE TABLE orders (
  6. order_id INT PRIMARY KEY,
  7. user_id INT,
  8. total_amount DECIMAL(10, 2),
  9. order_date DATE
  10. );
  11. -- 数据库2
  12. CREATE DATABASE orders_db_2;
  13. USE orders_db_2;
  14. CREATE TABLE orders (
  15. order_id INT PRIMARY KEY,
  16. user_id INT,
  17. total_amount DECIMAL(10, 2),
  18. order_date DATE
  19. );

Exemple de fractionnement de base de données

  1. -- 垂直拆分示例:将用户信息表和订单信息表分离到不同的数据库
  2. -- 主数据库
  3. CREATE DATABASE main_database;
  4. USE main_database;
  5. -- 用户信息表
  6. CREATE TABLE users (
  7. user_id INT PRIMARY KEY,
  8. username VARCHAR(50),
  9. email VARCHAR(100)
  10. );
  11. -- 订单信息表
  12. CREATE DATABASE orders_database;
  13. USE orders_database;
  14. CREATE TABLE orders (
  15. order_id INT PRIMARY KEY,
  16. user_id INT,
  17. total_amount DECIMAL(10, 2),
  18. order_date DATE
  19. );

Le partage de base de données et le fractionnement de base de données sont utilisés dans différents scénarios pour répondre aux besoins métiers spécifiques et aux défis techniques :

ScènesPartage de base de donnéesFractionnement de la base de données
Le volume de données est trop importantLorsque la quantité de données dans une seule base de données dépasse les capacités de stockage ou de traitement d'un seul serveur.Lorsque la taille d'une table de base de données affecte les performances des requêtes.
Goulot d’étranglement des performancesEn cas d'opérations de lecture et d'écriture simultanées élevées, une seule base de données ne peut pas fournir un débit suffisant.Les opérations de lecture et d'écriture sur une seule table commencent à ralentir, affectant le temps de réponse des applications.
Exigences d'évolutivitéLa base de données doit être étendue horizontalement pour améliorer les performances en ajoutant davantage de nœuds de base de données.Les données doivent être divisées verticalement pour réduire la charge sur une seule base de données et simplifier la gestion.
Reprise après sinistre et repriseDans un environnement distribué, la capacité de reprise après sinistre et la récupération rapide du système peuvent être améliorées grâce au partitionnement.En divisant la base de données, vous pouvez plus facilement sauvegarder et restaurer des parties de vos données.
Lié à la logique métierIl ne convient pas aux scénarios comportant des requêtes inter-tables complexes, car la latence et la complexité du réseau peuvent augmenter après le partitionnement de la base de données.Les données peuvent être divisées selon la logique métier afin que les données associées soient stockées ensemble et que les requêtes entre bases de données soient réduites.
Ajustement de l'architecture du systèmeLorsque l'architecture du système doit prendre en charge l'informatique distribuée et le traitement de données à grande échelle.Lorsque les structures de données doivent être réorganisées pour optimiser une requête ou une opération spécifique.
Contrôle des coûtsDes ressources matérielles bon marché peuvent être utilisées via le partitionnement pour réduire le coût total de possession.En optimisant le stockage des données et les modèles d'accès, les ressources de stockage et de calcul peuvent être économisées.
Isolation et sécurité des donnéesL'isolement physique des données peut être obtenu grâce au partitionnement géographique pour répondre aux exigences réglementaires.Les données peuvent être divisées par sensibilité ou fréquence d'accès pour un contrôle de sécurité plus granulaire.

      Bien que le partitionnement et le fractionnement de bases de données puissent tous deux être utilisés pour résoudre les problèmes ci-dessus, leurs objectifs sont différents. Les sous-bases de données sont plus enclines à résoudre le stockage et le traitement de données à grande échelle, ainsi qu'à améliorer l'évolutivité et les capacités de reprise après sinistre du système. Le fractionnement des bases de données se concentre davantage sur l'optimisation de l'organisation des données et des modèles d'accès, ainsi que sur la simplification de la gestion des bases de données.