SGBD distribué - Stratégies de conception

Dans le dernier chapitre, nous avions introduit différentes alternatives de conception. Dans ce chapitre, nous étudierons les stratégies qui aident à adopter les conceptions. Les stratégies peuvent être globalement divisées en réplication et fragmentation. Cependant, dans la plupart des cas, une combinaison des deux est utilisée.

Réplication de données

La réplication de données est le processus de stockage de copies séparées de la base de données sur deux sites ou plus. Il s'agit d'une technique populaire de tolérance aux pannes des bases de données distribuées.

Avantages de la réplication des données

  • Reliability - En cas de défaillance d'un site, le système de base de données continue de fonctionner puisqu'une copie est disponible sur un ou plusieurs autres sites.

  • Reduction in Network Load- Étant donné que des copies locales des données sont disponibles, le traitement des requêtes peut être effectué avec une utilisation réduite du réseau, en particulier aux heures de grande écoute. La mise à jour des données peut être effectuée aux heures creuses.

  • Quicker Response - La disponibilité de copies locales des données garantit un traitement rapide des requêtes et par conséquent un temps de réponse rapide.

  • Simpler Transactions- Les transactions nécessitent moins de jointures de tables situées sur différents sites et une coordination minimale sur le réseau. Ainsi, ils deviennent de nature plus simple.

Inconvénients de la réplication des données

  • Increased Storage Requirements- La conservation de plusieurs copies de données est associée à des coûts de stockage accrus. L'espace de stockage requis est en multiples du stockage requis pour un système centralisé.

  • Increased Cost and Complexity of Data Updating- Chaque fois qu'une donnée est mise à jour, la mise à jour doit être reflétée dans toutes les copies des données sur les différents sites. Cela nécessite des techniques et des protocoles de synchronisation complexes.

  • Undesirable Application – Database coupling- Si des mécanismes de mise à jour complexes ne sont pas utilisés, la suppression de l'incohérence des données nécessite une coordination complexe au niveau de l'application. Il en résulte un couplage application - base de données indésirable.

Certaines techniques de réplication couramment utilisées sont:

  • Réplication de snapshot
  • Réplication en temps quasi réel
  • Réplication pull

Fragmentation

La fragmentation consiste à diviser une table en un ensemble de tables plus petites. Les sous-ensembles de la table sont appelésfragments. La fragmentation peut être de trois types: horizontale, verticale et hybride (combinaison horizontale et verticale). La fragmentation horizontale peut en outre être classée en deux techniques: la fragmentation horizontale primaire et la fragmentation horizontale dérivée.

La fragmentation doit être effectuée de manière à ce que la table d'origine puisse être reconstruite à partir des fragments. Ceci est nécessaire pour que la table d'origine puisse être reconstruite à partir des fragments chaque fois que nécessaire. Cette exigence est appelée «reconstructivité».

Avantages de la fragmentation

  • Étant donné que les données sont stockées à proximité du site d'utilisation, l'efficacité du système de base de données est augmentée.

  • Les techniques d'optimisation des requêtes locales sont suffisantes pour la plupart des requêtes car les données sont disponibles localement.

  • Étant donné que les données non pertinentes ne sont pas disponibles sur les sites, la sécurité et la confidentialité du système de base de données peuvent être maintenues.

Inconvénients de la fragmentation

  • Lorsque des données provenant de différents fragments sont nécessaires, les vitesses d'accès peuvent être très élevées.

  • En cas de fragmentations récursives, le travail de reconstruction nécessitera des techniques coûteuses.

  • Le manque de copies de sauvegarde des données dans différents sites peut rendre la base de données inefficace en cas de défaillance d'un site.

Fragmentation verticale

Dans la fragmentation verticale, les champs ou colonnes d'une table sont regroupés en fragments. Afin de maintenir la reconstructivité, chaque fragment doit contenir le ou les champs de clé primaire de la table. La fragmentation verticale peut être utilisée pour renforcer la confidentialité des données.

Par exemple, considérons qu'une base de données University conserve des enregistrements de tous les étudiants inscrits dans une table Student ayant le schéma suivant.

ÉTUDIANT

Regd_No Nom Cours Adresse Semestre Honoraires Des marques

Désormais, les détails des frais sont conservés dans la section des comptes. Dans ce cas, le concepteur fragmentera la base de données comme suit -

CREATE TABLE STD_FEES AS 
   SELECT Regd_No, Fees 
   FROM STUDENT;

Fragmentation horizontale

La fragmentation horizontale regroupe les tuples d'une table en fonction des valeurs d'un ou plusieurs champs. La fragmentation horizontale devrait également confirmer la règle de la reconstruction. Chaque fragment horizontal doit avoir toutes les colonnes de la table de base d'origine.

Par exemple, dans le schéma de l'étudiant, si les détails de tous les étudiants du cours d'informatique doivent être conservés à l'École d'informatique, le concepteur fragmentera horizontalement la base de données comme suit -

CREATE COMP_STD AS 
   SELECT * FROM STUDENT  
   WHERE COURSE = "Computer Science";

Fragmentation hybride

Dans la fragmentation hybride, une combinaison de techniques de fragmentation horizontale et verticale est utilisée. C'est la technique de fragmentation la plus flexible car elle génère des fragments avec un minimum d'informations étrangères. Cependant, la reconstruction de la table originale est souvent une tâche coûteuse.

La fragmentation hybride peut être effectuée de deux manières différentes -

  • Dans un premier temps, générez un ensemble de fragments horizontaux; puis générer des fragments verticaux à partir d'un ou plusieurs des fragments horizontaux.

  • Dans un premier temps, générez un ensemble de fragments verticaux; puis générer des fragments horizontaux à partir d'un ou plusieurs des fragments verticaux.