2009-07-19 5 views
2

Je ne suis pas sûr si cela a déjà été demandé; J'ai fait quelques recherches mais rien d'approprié ne s'est montré. OK, maintenant mon problème:Suivre les modifications sur une base de données

Je souhaite migrer une ancienne application vers un autre langage de programmation. La seule exigence que nous avons est de garder la structure de la base de données stable. Donc, pas de changements dans mon schéma de base de données. Pour le reste de l'application, je réimplémente tout à partir de zéro sans réutiliser l'ancien code.

Mon idée: pour vérifier que mon nouveau code permettait aux utilisateurs de réaliser certaines actions ou flux de travail, capturer l'état de la base de données avant et après, puis créer des tests unitaires à l'aide de ces données. Est-ce que quelqu'un sait une solution élégante pour suivre ces changements? La copie de la base de données (> 10 Go) est assez coûteuse. Je ne peux pas non plus modifier le code de l'ancienne application dans laquelle les utilisateurs vont effectuer ces exemples d'actions. Je dois le garder au niveau de la base de données.

Ma base de données est Oracle 10g.

+1

Ceci est un bon exemple de pourquoi séparer la logique métier et l'application. – jva

+0

True. Au moins, ils s'en sont rendu compte maintenant. – sebastiangeiger

+0

Avez-vous le code source de l'application d'origine? – stukelly

Répondre

2

Vous pouvez capturer l'ancien comportement de l'application avec un trace, puis valider les modifications par rapport à votre nouveau code. Mais, honnêtement, essayer d'écrire une nouvelle application en capturant les modifications de données qu'elle fait et l'imiter sera une tâche très difficile car les entrées et les sorties de l'application originale ne sont pas garanties d'être apatrides (c'est-à-dire l'ancienne application peut faire la même chose le premier 1.000.000 fois il est donné un certain ensemble d'entrées et faire quelque chose de complètement différent sur la 1000.001ème série.)

Votre meilleur pari est de recommencer avec les exigences d'affaires et utiliser l'ancienne application et une référence fonctionnelle.

+0

Vous avez raison, mais je ne me fie pas seulement aux données recueillies en observant l'ancien programme. C'est juste un moyen d'obtenir plus d'informations sur l'ancienne application et peut-être trouver des choses qui ont été négligées à l'ingénierie des exigences. – sebastiangeiger

2

Jetez un oeil à Oracle Flashback Queries.

Il permet d'exécuter des requêtes qui retournent des données passées. Le délai est limité, mais cela peut être très utile.

+0

requêtes flashback ont ​​définitivement sauvé mes fesses à quelques reprises. –

1

En 10g, le seul moyen est de faire des requêtes FLASHBACK. En 11g, nous pouvons le faire avec RAT (Real Application Testing). RAT est très utile pour ce type de test ainsi que pour les tests de charge et de volume.

Questions connexes