Question

Comme vous développer une application de base de données change inévitablement pop-up.Le truc que j'ai trouver est de garder votre construction de base de données dans l'étape avec votre code.Dans le passé, j'ai ajouté une étape de génération qui a exécuté des scripts SQL à l'encontre de la base de données cible, mais qui est dangereux dans la mesure où vous pourriez inadvertanly ajouter des données fausses ou pour le pire.

Ma question est: quels sont les trucs et astuces pour garder la base de données dans l'étape avec le code?Qu'en est-il de vous faire reculer le code?La ramification?

Était-ce utile?

La solution

Les numéros de Version intégré dans la base de données sont utiles.Vous avez deux choix, l'intégration des valeurs dans une table (permet la gestion des versions multiples objets) qui peut être interrogé ou explicitement nommé objet (tel qu'une table ou somesuch) vous pouvez tester.

Lorsque vous relâchez la production, avez-vous un plan de restauration en cas de catastrophe inattendue?Si vous le faites, c'est l'application d'un schéma de restauration script?Utilisez votre script de restauration de restauration de la base de données d'une précédente version du code.

Autres conseils

Vous devriez être en mesure de créer votre base de données à partir de zéro dans un état connu.

Tout en étant en mesure de le faire est utile (surtout au début d'un nouveau projet), beaucoup (la plupart?) les bases de données va rapidement devenir trop grand pour que cela soit possible.Aussi, si vous avez des Gouttes, alors vous allez avoir des problèmes de générer des scripts SQL pour l'ensemble de votre base de données.

J'ai vraiment été intéressé par une sorte de DB, système de gestion de versions, mais je n'ai rien trouvé encore.Ainsi, au lieu d'une solution, vous aurez mon vote.:-P

Vous vraiment ne voulez pas être en mesure de prendre une machine de nettoyage, d'obtenir la dernière version à partir du contrôle de code source, construire en une seule étape, et exécuter tous les tests en une seule étape.Faire de cette rapide vous permet de produire des logiciels plus rapidement.

Tout comme les bibliothèques externes, configuration de base de données doit également être en contrôle de code source.

Notez que je ne dis pas que toutes vos base de données contenu doit être dans le même contrôle de code source, juste assez pour arriver à un état propre.(Ne sauvegarder votre base de données de contenu, si!)

Définir vos objets de schéma et de vos données de référence dans le contrôle de version des fichiers texte.Par exemple, vous pouvez définir le schéma dans Couple le format et les données dans DBUnit format (les deux utilisent le XML).Vous pouvez ensuite utiliser des outils (nous avons écrit notre propre) pour générer le DDL et DML que vous prenez à partir d'une version de votre application à l'autre.Notre outil peut prendre en entrée (a) schéma de la version précédente et les données des fichiers XML ou (b) une base de données existante, de sorte que vous êtes toujours en mesure d'obtenir une base de données d'un état dans l'état correct.

J'aime la façon dont Django t-il.Vous construisez des modèles et de la lorsque vous exécutez un syncdb il applique les modèles que vous avez créés.Si vous ajoutez un modèle vous avez juste besoin d'exécuter syncdb de nouveau.Ce serait facile d'avoir votre script de génération fais à chaque fois que vous faites un push.

Le problème vient quand vous avez besoin de modifier une table qui est déjà fait.Je ne pense pas que syncdb poignées.Que serait vous obliger à aller dans et ajouter manuellement la table et également ajouter une propriété du modèle.Vous auriez probablement eu envie de version de l'instruction alter.Les modèles seraient toujours sous contrôle de version, si vous avez besoin de vous pourrait obtenir un db schéma et en cours d'exécution sur une nouvelle zone sans exécuter les scripts sql.Un autre problème avec cela, c'est de garder la trace de la statique des données que vous en voulez toujours dans la db.

Rails de scripts de migration sont assez sympa aussi.

Un DB système de contrôle de version serait génial, mais je ne sais pas vraiment une telle chose.

Tout en étant en mesure de le faire est utile (surtout au début d'un nouveau projet), beaucoup (la plupart?) les bases de données va rapidement devenir trop grand pour que cela soit possible.Aussi, si vous avez des Gouttes, alors vous allez avoir des problèmes de générer des scripts SQL pour l'ensemble de votre base de données.

Les sauvegardes et la compression peuvent vous y aider.Désolé, il n'y a aucune excuse pour ne pas être en mesure d'obtenir un bon ensemble de données pour l'élaboration de contre.Même si c'est juste un sous-ensemble.

Mettez votre base de données de l'évolution sous contrôle de version.Je vous recommande de regarder neXtep designer :http://www.nextep-softwares.com/wiki

C'est un libre GPL produit qui offre une toute nouvelle approche de la base de données de développement et de déploiement en reliant les informations de version de SQL moteur de génération automatique de calculer tout script de mise à niveau vous devez mettre à jour n'importe quelle version de votre base de données dans un autre.Toute base de données existante pourrait être la version contrôlée par une inversion de la synchronisation.

Il soutient actuellement Oracle, MySql et PostgreSql.DB2 soutien est en cours de développement.C'est un plein de fonctionnalités de la base de données de l'environnement de développement où vous travaillez toujours sur la version d'éléments contrôlés à partir d'un référentiel.Vous pouvez publier vos mises à jour par simple synchronisation en cours de développement et vous pouvez générer exportable de la base de données des livraisons qui vous serez en mesure d'exécuter sur n'importe quel cible de la base de données par le biais d'un programme d'installation autonome qui valide les versions, effectue des vérifications structurelles et applique les scripts de mise à niveau.

L'IDE vous propose également des éditeurs SQL, gestion de la dépendance, de support modulaire pour la base de données de composants de modèle, modèle de données, des diagrammes, des clients SQL et beaucoup plus.

L'ensemble de la documentation et des concepts pourrait être trouvé dans le wiki.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top