Comment conserver l'Historique des Données

Certains collègues et je suis entré dans un débat sur la meilleure façon de stocker les données historiques. Actuellement, pour certains systèmes, j'ai utiliser un tableau pour stocker les données historiques, et je garde une table originale pour le courant, active record. Alors, disons que j'ai de la table FOO. En vertu de mon système, tous les dossiers actifs vont dans FOO, et tous les documents historiques vont dans FOO_Hist. De nombreux domaines différents, dans FOO peut être mise à jour par l'utilisateur, donc je veux garder un compte exact de tout mis à jour. FOO_Hist détient exactement les mêmes champs que FOO, à l'exception d'une auto-incrémentation HIST_ID. Chaque fois que FOO est mis à jour, j'ai effectuer une instruction insert dans FOO_Hist similaires à: insert into FOO_HIST select * from FOO where id = @id.

Mon collègue dit que c'est un mauvais design parce que je ne devrait pas avoir une copie exacte d'un tableau, pour des raisons historiques et faut juste insérer un autre enregistrement dans la table active avec un drapeau indiquant que c'est pour des raisons historiques.

Est-il un standard pour traiter les données historiques de stockage? Il me semble que je ne veux pas encombrer mes dossiers actifs avec tous mes documents historiques dans le même tableau, considérant qu'il est peut-être plus d'un million d'enregistrements (je suis en train de penser à long terme).

Comment vous ou votre entreprise gérer cela?

Je suis à l'aide de MS SQL Server 2008, mais j'aimerais garder la réponse générique et arbitraire de n'importe quel SGBD.

InformationsquelleAutor Aaron | 2010-10-06