Nous migrons notre base de données vers un nouveau schéma mais voulons valider que les données ont été déplacées correctement.
Les outils de comparaison de données traditionnels peuvent comparer deux bases de données pour les différences si les schémas sont les mêmes. Dans notre cas, il y a eu des changements dans les conceptions de table, mais toutes les données de l'ancien schéma sont dans le nouveau, il a juste été déplacé un peu et je dois m'assurer qu'il est correct. Nous avons des dizaines de millions de rangées, l'inspection manuelle n'est donc pas une option.
Existe-t-il des outils qui pourraient faciliter ce type de comparaison?
Sinon, existe-t-il des bibliothèques / frameworks qui pourraient aider à lancer le développement d'une solution personnalisée?
Je suis heureux d'utiliser une solution spécifique à la base de données si nécessaire, dans ce cas pour SQL Server 2008.
Mon soluton: je compare les deux ensembles de données en créant une VIEW
de chaque table sur l'ancienne base de données avec les mêmes champs que la nouvelle table de base de données.
Je compare ensuite les données en utilisant la technique décrite ici: La façon la plus courte, la plus rapide et la plus simple de comparer deux tables dans SQL Server: UNION!
J'ai de la chance dans cette migration car la structure globale de la table est similaire à l'ancienne base de données, avec des champs déplacés d'une table à une autre, supprimés ou ajoutés. Dans le cas des éléments supprimés et ajoutés, il n'y a rien à comparer, pour les champs qui ont été déplacés ou agrégés, je fais des calculs en vue de fournir les informations correctes pour la comparaison.
La UNION
comparaison ne me montre que les lignes avec des différences, donc dès que les données sont correctes, j'obtiens un jeu de résultats vide.
Réponses:
Il n'est pas impossible de comparer deux schémas différents, c'est un calcul de votre confiance dans le résultat. J'ai essentiellement emprunté aux techniques de rapprochement bancaire
Important: Cette réconciliation ne consiste pas à s'assurer que la destination correspond exactement à la source dans son contexte de données (il y a une raison pour laquelle vous migrez vers un nouveau système), mais vous devez expliquer toute divergence!
Base:
J'ai généralement divisé la comparaison en plusieurs méthodes (en particulier pour les métriques détaillées):
Techniques:
Peu importe la méthode que j'ai utilisée pour produire ce qui sera comparé, je me retrouve avec un ensemble de fichiers / vues / dbs qui contiennent les données source et destination conciliables, puis en fonction du support, je peux utiliser l'un des outils couramment disponibles pour les comparer. Mes propres préférences sont:
Comparaison de fichiers
Créez deux dossiers différents pour SourceDB et DestinationDB (horodatage / version horodaté afin que je sache quand j'ai fait la réconciliation) et videz la sortie de mes mesures sous forme de fichiers nommés de manière appropriée, puis utilisez un outil de comparaison (tel que CSDiff ) pour identifier les différences
Comparaison Excel
En particulier lorsque je traite des rapports de gestion, je vais créer un ensemble de classeurs Excel pour comparer les rapports (essentiellement en utilisant VLookups et en comparant les totaux)
Comparaison des données
Plutôt que d'exporter les données de rapprochement dans des fichiers ou des rapports, exportez-les vers des bases de données distinctes, puis utilisez quelque chose comme Redgate SQL Data Compare pour comparer les bases de données
Autres outils:
Je n'ai essayé aucun de ceux-ci, mais une recherche rapide sur Google sur les «outils de réconciliation des données» donne:
Il y en a d'autres, mais ce sont ceux qui avaient l'air raisonnables
la source
Si vous souhaitez comparer des données dans deux conceptions de bases de données différentes, vous devez écrire du code SQL codé à la main pour comparer les données.
Il n'y a pas de bibliothèque de framework pour vérifier les données est la même dans deux bases de données disparates.
Vous seul savez ce que vous avez changé ou modifié
la source
Il vous sera impossible de comparer différents schémas. Pour résoudre votre problème, je déterminerais quelles données vous devez comparer. Je créerais ensuite une vue sur chaque serveur qui retirerait les données que je voulais comparer (en tenant compte des types de données et autres).
Une fois que les deux vues sont identiques, j'utiliserais un outil tiers comme Red Gate Data Compare pour voir quelles lignes sont différentes.
Cela ressemble à une douleur. Bonne chance!
la source
Il y a quelques années, j'ai écrit un outil pour ce faire - une comparaison de données entre deux bases de données. Depuis lors, je l'ai converti en logiciel commercial et publié sur
www.sql-server-tool.com
Le programme - nommé SCT pour "SQL Server Comparison Tool" (je n'ai jamais été doué pour nommer les choses :) - a beaucoup d'options de réglage fin, comme: ignorer les colonnes sélectionnées ou spécifier la méthode de comparaison (enregistrement par enregistrement ou clé primaire / comparaison d'index). Les "sessions" de comparaison peuvent être enregistrées et rejouées ultérieurement sans avoir à ressaisir les paramètres. Le paramètre de ligne de commande peut être utilisé pour automatiser entièrement les comparaisons.
Pour des dizaines de millions de lignes, cela peut être un peu lent - dans ce cas, je recommanderais de commencer avec un sous-ensemble de données plus petit - disons, ne comparez que les 1000 premières lignes - et voyez si un réglage fin du processus est nécessaire.
Dariusz Dziewialtowski-Gintowt
la source