Quelle est la meilleure stratégie pour la conservation de grands ensembles de données?


9

Je dirige un projet dans lequel nous enregistrerons des données métriques. J'aimerais conserver les données pendant des années. Cependant, j'aimerais également éviter que la table primaire ne soit gonflée par des données qui, bien qu'elles soient nécessaires pour les tendances à long terme, ne sont pas requises pour les rapports à court terme.

Quelle est la meilleure stratégie pour gérer cette situation? Archiver simplement les anciennes données dans une autre table? Ou "roll it up" via une certaine consolidation des données elle-même (et ensuite le stocker dans une autre table)? Ou quelque chose d'autre entièrement?

Informations complémentaires: nous utilisons SQL Server 2005.

4

Nous utilisons les deux méthodes à mon travail, mais légèrement différentes, nous gardons toutes les données des ventes dans la table primaire pendant 30 jours, puis la nuit (une partie des emplois nocturnes) les ventes des jours sont résumés (nqty Les ventes de plus de 30 jours sont archivées dans une base de données différente, puis une nouvelle base de données d'archives est créée une fois par an (nous procédons à des années d'imposition). Ainsi, nous obtenons rapidement les données de synthèse, conservons toutes les données de ventes actuelles et disposons d'un espace illimité pour les données d'archives détaillées. nous avons essayé de tout conserver dans une seule base de données (dans des tables différentes) mais la taille de fichier de la base de données (interbase) deviendrait si grande qu'elle ferait glisser le système vers le bas.

le seul vrai problème que nous avons est l'accès à des données détaillées qui couvre plusieurs base de données, la connexion et la déconnexion est lente, et l'analyse doit être fait dans le code plutôt que sql


1

Chacune de ces options sont excellents, mais cela dépend vraiment du domaine du problème. Pour des choses comme les soldes de trésorerie ou les données statistiques, je pense que le meilleur moyen est de remonter les enregistrements et de les consolider, vous pouvez ensuite déplacer les enregistrements dans une table d'archivage parallèle, en les saisissant de telle sorte que vous puissiez nécessaire. Cela maintient votre table de données primaire propre et rapide, mais vous permet de conserver les données supplémentaires pour l'audit ou autre. La question clé est de savoir comment mettre en œuvre le processus de «roll-up». Soit automatiquement, via un processus de déclenchement ou de serveur, soit par intervention de l'utilisateur au niveau de l'application?


4

Si vous utilisez SQL Server 2005, peut être un bon candidat pour utiliser partitioned tables.


2

@Jason - Je ne vois pas comment conserver les données dans de vieux fichiers texte simples vous permettra de faire facilement des analyses de tendance à long terme sur les données. Je pense que mon point de vue est que si une analyse ad-hoc (c'est-à-dire une tendance) doit être faite sur les données par les gens d'affaires, le roulage ou l'archivage des données dans les fichiers texte ne résout pas des problèmes. Bien sûr, écrire du code pour consommer un fichier texte est facile dans de nombreuses langues, mais ce problème a été résolu. En outre, je dirais que les SGBDR d'aujourd'hui sont tous extrêmement durables lorsqu'ils sont configurés et maintenus correctement. Si ce n'était pas le cas, pourquoi exploiteriez-vous une entreprise (sans parler des données archivées)? Je ne vois tout simplement pas l'intérêt de l'archivage dans un fichier de texte brut en raison de la prétention que la durabilité des fichiers texte est supérieure à celle des bases de données.


2

En fonction de contraintes telles que le budget, etc., cela ressemble à un candidat idéal pour une application d'entrepôt de données. Cela introduirait généralement un nouveau serveur à utiliser comme entrepôt de données. SQL Server 2005 prend en charge une grande partie de cette activité prête à l'emploi, vous pouvez également utiliser des services SQL Server supplémentaires (par exemple Analysis Services, Reporting Services) pour fournir une valeur supplémentaire à vos utilisateurs. (Voir http://www.microsoft.com/technet/prodtechnol/sql/2005/dwsqlsy.mspx)