Gestion de la vie des données

Problèmes d’historisation/archivage de données.
Lors du développement d’une nouvelle application les concepteurs pensent rarement dans la durée et il est très exceptionnel de trouver dans les éléments d’architecture la notion de « durée de vie » ou de « cycle de vie » des données. Cet état de choses est en train de changer car on stocke de plus en plus de données et que stocker toutes les données accessibles « en live » coûte très cher.
Les problèmes ne commencent qu’avec le temps … car les données s’accumulent. Les sauvegardes deviennent plus longues, les temps de réponse se dégradent insensiblement et finissent par devenir un vrai problème pour les utilisateurs dont l’activité principale ne doit pas être d’attendre un résultat devant un écran figé.
J’ai rencontré des applications de suivi de livraison dont les temps de réponse étaient devenus « catastrophiques », et qui, après analyse montrent que les tables interrogées comportent 10 ans d’historique alors que le suivi demandé ne concerne en général que les quelques derniers jours.
Si, en plus, l’indexation n’est pas parfaite on atteint des temps de réponse très variables entre gros et petits clients pouvant varier de 2 à 30 secondes, le plus long pour les plus gros clients … Et pour un utilisateur normal 30 secondes correspondent à une durée prohibitive qui perturbe son travail.

Par ailleurs la plupart des données ont plusieurs vies …
L’accès rapide à une facture est indispensable tant qu’elle est « en cours » puis « payée », mais plus tard elle reste intéressante pour assurer un suivi du client, pour calculer des statistiques commerciales, pour répondre à des règlements administratifs (archivage). Mais ces derniers usages ne nécessitent plus un accès fréquent et rapide aux données, il est donc intéressant de les « sortir » de l’endroit où elles sont nées pour les entreposer dans un endroit moins prestigieux .. et moins coûteux.
Il est donc très important de définir le cycle de vie des données pour ne pas se retrouver avec les factures et bons de livraison des dix dernières années dans le système de suivi « technique » et financier des livraisons. Pour le suivi des livraisons, dès la livraison effectuée la donnée ne présente plus d’intérêt direct et peut être « sortie » du système opérationnel pour être transférée dans un système où elle restera disponible pour tous les besoins statistiques.

Une conservation trop longue présente plusieurs inconvénients :

  • Les volumes stockés augmentent et nécessitent des ajouts au systèmes de stockage.
  • Les sauvegardes durent de plus en plus longtemps.
  • Les temps de réponse s’allongent.
  • Les opérations de maintenance deviennent de plus en plus consommatrices de temps.

Mais même les besoins statistiques diminuent avec le temps et la dernière période de la vie d’une donnée se passe dans des archives gelées ( glacier ? ).
Il faut donc répartir les données sur des systèmes différents en fonction de leur usage instantané.
Ceci présente en plus l’avantage de ne pas surcharger un système « temps réel » utilisé par de nombreuses personne avec des traitements statistiques de longue durée qui pénalisent les utilisateurs at qui surtout donnent des temps de réponse très variables selon le lancement de ces gros traitements.
Une « bonne » répartition est en général :

  • Un système « temps réel » interactif ne doit pas contenir de données inutilisées et ne doit pas avoir à « supporter » des traitements lourds en concurrence avec le travail des utilisateurs interactifs.
    La nuit ou le week-end permettent de « sortir » les données devenues obsolètes pour les envoyer dans un système « statistique » qui traitera de grosses quantités de données pour fournir les analyses et autres résultats statistiques utiles.
  • Le système « statistiques » devra lui même être « purgé » des données devenues trop anciennes qui pourront être stockées dans des machines (ou sites) d’archivage avant d’être éliminées.

La répartition des données au cours de leur vie sur des machines de caractéristiques différentes présente beaucoup d'avantages notamment au niveau coût par l'optimisation du stockage et du couple processeurs/mémoire, sans compter une meilleure expérience utilisateur pour la partie interactive ...

  • Processeurs et disques rapides, beaucoup de mémoire pour les applications interactives.
  • Disques de grosse capacité pour les machines "statistiques"
  • "glacier" pour les données plus anciennes à conserver légalement