2010-12-13 5 views
4

Venant du monde de ruby ​​on rails, je cherche un moyen efficace de mettre à jour ma base de données (dans le cas de rails, la migration sert à cette fin).Quelle est la meilleure façon de conserver les versions de base de données avec le framework yii php?

Actuellement, je prends des instantanés de la base de données et j'exporte régulièrement le schéma entier, mais tout le processus est assez manuel.

Y a-t-il une meilleure façon de procéder?

p.s. J'utilise mysql.

+0

Je ne connais rien à PHP et ce qui est disponible dans ce monde. Mais vous pouvez toujours utiliser liquibase, qui permet le versionnage de la base de données, les rollbacks, etc, d'une manière agnostique de la plate-forme (il est écrit en Java). –

+0

Je voudrais en savoir plus sur ce que vous essayez d'accomplir. Etes-vous en train de mettre à jour d'autres bases de données avec le schéma d'un master db? Si oui, combien? Le service MySQL db fournit certainement des mécanismes pour les serveurs esclaves, qui sont souscrits à tous les changements et vont ensuite répliquer toutes les actions sur le maître. Vous n'auriez pas besoin de PHP pour l'implémenter. – zanlok

+0

zanlok, je n'essaie pas de déployer des serveurs esclaves. Un système de gestion des versions db offre de nombreux avantages. Par exemple, il est plus facile de coordonner les développeurs/branches de code et de conserver des références aux modifications de schéma de base de données. Tout type de processus manuel est sujet à l'erreur humaine. De nos jours, j'ai pensé qu'il devrait y avoir de nombreux systèmes qui suivent automatiquement vos changements et les dater. – etang

Répondre

4

Dans Yii 1.1.6 il y aura concept de migrations de base de données. Cela nous permettra de manipuler la base de données de manière DB-agnostique en utilisant le code PHP. Voir http://code.google.com/p/yii/issues/detail?id=1191 pour plus de détails.

+0

+1 Pour la pointe froide. Nous utilisons actuellement notre propre outil basé sur dbdeploy (l'implémentation au moment où nous en avions besoin était vraiment **** alors nous avons écrit la nôtre). Cela fonctionne vraiment bien pour nous. Bien que va définitivement vérifier la mise en œuvre Yii dès que 1.1.6 sort officiellement :) – Blizz

+0

Je pensais à l'aide des fonctionnalités de migrations fournies par le projet Doctrine. Cependant, la solution "prête à l'emploi" est toujours agréable – galymzhan

0

Fondamentalement: NO. Pas quelque chose de stock avec php.

CEPENDANT ... Concilier système, par exemple d'une commande SHOW CREATE <table_name>;, est encore un moyen fiable de faire ce que vous parlez - si tout à fait non négligeable dans la nature. Vous devez être très conscient des détails dans la mécanique de la définition de schéma si vous devez détecter et reproduire cela. Vous êtes toutefois libre de développer un domaine spécialisé qui suit un numéro de version que vous mettez à jour lors de la mise à jour du schéma. Ensuite, au moins, vous saurez quand les autres cibles de réplication doivent également être mises à jour - en comparant les données de ce champ de version.

La façon dont j'ai souvent vu cela mis en œuvre est de suivre toutes les commandes ALTER TABLE (etc) et de les suivre. Vous pouvez vérifier quelque chose comme un fichier 'r12345.sql' dans SVN pour un système d'exécution automatique des mises à jour db. Il est impliqué, mais ce que je veux dire, c'est qu'un script php peut vérifier tous les fichiers .sql du schéma db et exécuter chacun des uns (en série) qui vont lire les changements sur la base de données actuelle.

Beaucoup dépend de ce que vous essayez d'accomplir. Si vous fournissez plus d'informations, j'expliquerais.

Questions connexes