2009-05-12 4 views
1

Comment les utilisateurs recommandent-ils de gérer les mises à jour de structure de base de données?comment gérer les mises à jour de structure de base de données

par exemple. de nouvelles fonctionnalités sont ajoutées qui requièrent la modification des tables existantes, l'ajout de nouvelles, etc.

Existe-t-il un bon logiciel ou un exemple d'écriture d'instructions de type ALTER.

+0

vous auriez dû mentionner mysql dans la question, il aura une incidence sur la façon dont vous pouvez générer des scripts, modifier le db, etc. –

Répondre

4

S'il existe un logiciel capable d'analyser les différences entre deux schémas (RedGate SQL Compare) et de générer les scripts de modification nécessaires, je préfère écrire mes propres instructions de modification de la base de données. De cette façon, j'ai un contrôle total sur ce qui est en train d'être changé - rien de plus, rien de moins. Roulez les modifications dans un script Install.sql, ou quelque chose comme ça, pour chaque version de base de données afin que vous puissiez simplement exécuter ce script et mettre à jour la base de données. Ceci permet de déplacer facilement les changements de dev à test en production.

Voir: Deploying SQL Server Databases from Test to Live

+0

Im demandant au nom de quelqu'un au travail - La version Pro de Red-gate sql comparer semble bon et abordable. –

+0

Si vous parlez de la gestion des structures de base de données entre les versions de la même base de données, SQL Compare est génial, nous utilisons au travail et cela fait gagner du temps. – Nick

+0

+1 Flexible et efficace – Andomar

1

Si vous ne voulez pas écrire à la main toutes les instructions alter, SQL Server Management Studio a une interface graphique pour faire face à tous ce genre de choses. Vous pouvez utiliser l'interface graphique, puis regarder le script qu'il génère et aller de là si vous voulez une approche rapide et hybride.

+0

Quelque chose pour Linux ou Mac? J'ai essayé de poser la question d'une manière neutre de la technologie, mais nos besoins sont pile LAMP sur les serveurs et Mac et Ubuntu sur dev desktops –

0

Vous ne mentionnez pas la portée de votre application ou le nombre de développeurs, etc., il est donc un peu difficile de faire des recommandations. Toutefois, si votre développement se compose de plusieurs projets simultanés et plusieurs développeurs et que vous copiez à partir d'un développement à la production que je recommande quelque chose comme ce qui suit:

  • mettre en œuvre 3 « zones »: dev, qa, production.
  • développer tous les changements de dev, créer tous les changements dans les scripts, utilisez quelque chose comme cvs pour suivre les changements sur tous les objets
  • lorsque des changements sont prêts et testés, exécutez vos scripts dans qa, cela validera vos scripts et procédure d'installation
  • lorsque vous êtes prêt exécuter vos scripts et procédure d'installation sur la production

Note: qa est presque identique à la production, à l'exception des modifications appliquées en attente de leur production finale installer. Vous pouvez périodiquement restaurer une sauvegarde de production sur qa et dev pour les resynchroniser (assurez-vous que tous les développeurs sont conscients de cela et planifiez en conséquence), car (en fonction du nombre de les développeurs) ils (production vs qa vs dev) vont commencer à encourir plus de différences au fil du temps.

+0

Notre configuration est: serveur de test - MySQL 5, PHP5.2, apache2 serveur Production - mysql 5, php5.2, apache2 nous avons également phpMyAdmin en cours d'exécution. –

+0

J'ai supprimé les références de serveur sql et ajouté une balise "mysql" à votre question. Combien de développeurs, si ce n'est que vous, il est différent de 10 personnes. Si vous changez seulement les tables une fois par an, c'est différent des changements de table chaque semaine. –

+0

Une de nos équipes travaille comme ça, et c'est un gâchis. Les changements prennent tellement de temps qu'ils commencent à se chevaucher. Le stockage de chaque objet dans CVS signifie que les modifications sont réparties sur plusieurs fichiers, ce qui rend le déploiement long et sujet aux erreurs. Et les développeurs oublient leurs requêtes à partir du moment où QA les approuve, livrant des produits que les utilisateurs finaux perçoivent comme étant à moitié cuits. Votre kilométrage peut varier; J'espère que cela fonctionne mieux chez vous :) – Andomar

1

Je vais ajouter une chose. Il ne suffit pas d'écrire une instruction alter table pour modifier une structure de table. Si vous modifiez une structure de table, assurez-vous avant de l'exécuter que vous savez exactement quelles autres vues, fonctions, tables, procédures stockées, triggers, packages SSIS (DTS) (pour SQL Server) et code dynamique des applications sera affecté par le changement. Si vous n'êtes pas complètement sûr de ce que d'autres objets peuvent être affectés, vous n'êtes pas prêt à modifier la table. J'ai vu beaucoup trop de fonctions critiques d'affaires casser parce que quelqu'un a hapahazardly changé une structure de table sans considérer quoi d'autre a utilisé cette structure. Si vous envisagez d'apporter des modifications structurelles à la base de données, je vous suggère de lire le refactoring de la base de données avant de le faire.

Ici isa bon livre pour commencer: http://www.amazon.com/Refactoring-Databases-Evolutionary-Addison-Wesley-Signature/dp/0321293533

Questions connexes