Si vous mettez à jour votre entrepôt de données chaque jour, vous avez un état particulier lorsque vous remplacez les données d'hier par les données d'aujourd'hui. Au cours de cette étape, votre entrepôt de données est probablement indisponible. Si tous vos utilisateurs sont dans le même fuseau horaire, vous ne ressentez aucune pression, aussi longtemps que vous pouvez lancer la mise à jour entre 3 et 5 heures du matin. Mais si vos utilisateurs sont dispersés à travers le monde, vous voulez être déconnecté le moins longtemps possible, parce que dans ce cas, le soleil ne se couche jamais sur l'entrepôt de données. Alors, comment pouvez-vous réduire ce temps d'arrêt au strict minimum?
Dans cet article, nous allons décrire un ensemble de techniques qui fonctionnent pour tous les principaux SGBD relationnels qui prennent en charge le partitionnement. Les détails exacts d'administration des partitions varient un peu d'un SGBD à un autre, mais vous saurez quelles questions poser.
Une partition est un segment physique d'une table. Bien que la table a un nom unique, une table partitionnée peut être gérée comme si elle était constituée de plusieurs fichiers physiques distincts. Dans cet article, je suppose que votre partitionnement permet
- de déplacer une partition, mais pas l'ensemble de la table, vers un nouveau périphérique de stockage
- de prendre une partition, mais pas l'ensemble de la table, déconnectée
- de supprimer et reconstruire un index sur la partition, mais pas sur l'ensemble de la table
- d'ajouter, de supprimer et de modifier des enregistrements d'une partition désignée
- de renommer une partition
- de remplacer une partition avec une autre copie de la partition
Votre SGBD permet de partitionner une table selon un ordre de tri que vous spécifiez. Si vous ajoutez des données quotidiennement, vous avez besoin de partitionner les tables de faits en vous basant sur la date principale dans la table de faits. Dans d'autres articles j'ai mentionné que si vous utilisez des clés de substitution (entier), alors vous devez vous assurer que les clés de substitution de la dimension Date sont attribués dans l'ordre chronologique. De cette façon, lorsque vous triez votre table de faits sur la clé de substitution Date, tout les enregistrements les plus récents sont dans une même partition.
Si votre table de fait est nommé FACT, vous avez également besoin d'une copie non indexée appelé LOADFACT. En fait, dans toutes les étapes suivantes, nous ne parlons que de la partition la plus courante, pas de l'ensemble de la table! Voici les étapes pour rester hors ligne aussi peu que possible. Nous allons déconnecté à l'étape 4 et revenir en ligne à l'étape 7:
- Charger les données d'hier dans la partition LOADFACT. Assurez vous de la bonne qualité des données.
- Lorsque vous avez terminé le chargement, faire une copie de LOADFACT appelée COPYLOADFACT.
- Créer des index sur LOADFACT.
- Mettre FACT hors ligne (en fait juste la partition la plus récente).
- Renommer la partition FACT le plus récente en SAVEFACT.
- Renommer LOADFACT (partition) en FACT, la partition la plus récente.
- Mettre FACT en ligne.
- Maintenant nettoyer en renommant COPYLOADFACT comme étant le nouveau LOADFACT. Vous pouvez reprendre les données entrantes dans cette nouvelle LOADFACT.
- Si tout va bien, vous pouvez supprimer SAVEFACT.
Ainsi, nous avons réduit l'intervalle de déconnexion à seulement deux opérations de renommage aux étapes 5 et 6. Assurément, ces opérations de renommage seront plus rapide si la taille physique de la partition la plus récente est la plus petite possible.
Il est évident que ce scénario est un objectif idéal. Votre entrepôt de données est surement plus complexe et les principales difficultés auxquelles vous devrez réfléchir sont:
- les limitations de partitionnement de votre SGBD
- le besoin de charger d'anciennes données dans votre table de faits
- gérer les tables agrégées dérivées de la table de faits
Source originale: www.kimballgroup.com
Article original "Kimball Design Tip #27: Being offline as little as possible", publié le 1 août 2001.
Aucun commentaire:
Enregistrer un commentaire