Martin Fowler a écrit mon article préféré sur le sujet, http://martinfowler.com/articles/evodb.html . J'ai choisi de ne pas mettre les vidages de schéma sous contrôle de version car alumb et d'autres suggèrent parce que je veux un moyen facile de mettre à jour ma base de données de production.
Pour une application web où je disposerai d'une seule instance de base de données de production, j'utilise deux techniques :
Scripts de mise à jour de la base de données
Des scripts de mise à niveau de la base de données qui contiennent le DDL nécessaire pour faire passer le schéma de la version N à N+1. (Ils sont placés dans votre système de contrôle de version). Une table _version_history_, quelque chose comme
create table VersionHistory (
Version int primary key,
UpgradeStart datetime not null,
UpgradeEnd datetime
);
obtient une nouvelle entrée chaque fois qu'une mise à jour script s'exécute qui correspond à la nouvelle version.
Ainsi, il est facile de savoir quelle version du schéma de base de données existe et les scripts de mise à niveau de la base de données ne sont exécutés qu'une seule fois. Encore une fois, il s'agit no des décharges de la base de données. Plutôt, chaque script représente le changements nécessaires pour passer d'une version à l'autre. Ce sont les script que vous appliquez à votre base de données de production pour la "mettre à niveau".
Synchronisation du bac à sable du développeur
- Un script pour sauvegarder, assainir et réduire une base de données de production. Exécutez ce script après chaque mise à niveau de la base de données de production.
- Un script pour restaurer (et mettre au point, si nécessaire) la sauvegarde sur le poste de travail d'un développeur. Chaque développeur exécute ce script après chaque mise à jour de la BD de production.
Une mise en garde : mes tests automatisés s'exécutent sur une base de données au schéma correct mais vide. Ces conseils ne seront donc pas parfaitement adaptés à vos besoins.
0 votes
Consultez également ce livre blanc : The Definitive Guide to Database Version Control (en anglais). www3.dbmaestro.com/