Question

Sur la base de la lecture sur le web, le débordement de la pile, et la plupart du temps

Était-ce utile?

La solution

En regardant vos propositions, il ne semble pas comme quelque chose qui est faisable ni pratique. Je travaillais dans une entreprise où nous avons utilisé plus de 1k tables par base de données (système très complexe), et tout bien bossé comme ceci:

  • Demandez à une personne responsable de la DB (permet de l'appeler DBPerson) - tout changement script / db doit passer par lui. Cela évitera des changements inutiles et certains « belvédères » des questions (par exemple, si quelqu'un déplace un index pour effectuer un meilleur pour sa requête, salut pourrait détruire d'autres personnes de travail, peut-être que quelqu'un va créer une table qui est complètement redondant et inutile , etc...). Cela permet de garder db propre et efficace. Même s'il semble que cela est trop de travail pour un gars (ou son adjoint), en fait, il n'est pas -. Db en général change rarement
  • Chaque script doit passer par la validation DBPerson
  • Lorsque le script est approuvé, le DBPerson attribue un numéro et le met dans « mise à jour » dossier / svn (...), avec la numérotation appropriée (comme vous le suggérez, numéros supplémentaires par exemple).
  • Ensuite, si vous avez une certaine intégration continue en place, le script est ramassé et met à jour le db (si vous n'avez pas l'intégration continue, le faire manuellement).
  • Ne pas stocker script de base de données complète, avec toutes les données dans le script. La base de données magasin plutôt que réelle. Si vous avez des branches de la solution - ont chaque branche avec sa propre base de données, ou vous pouvez toujours avoir des scripts de mise à jour divisés pour chacune des branches pour que vous puissiez rollback / la transmettre à une autre branche. Mais, je vous recommande vraiment avoir un db pour chaque branche.
  • Vous une base de données toujours avec les données par défaut (intact) - pour les besoins des tests unitaires, tests de régression, etc. Chaque fois que vous faites des tests, les faire sur la copie de cette base de données. Vous pouvez même mettre un nettoyage chaque nuit des bases de données de test avec le principal (le cas échéant bien sûr).

Dans un environnement comme celui-ci, vous aurez plusieurs versions de base de données:

  • base de données développeurs (local) - celui que le gars dev utilise pour tester son travail. Il peut toujours copier du Maître ou Test Maître.
  • base de données principale -. Celui avec toutes les valeurs par défaut, peut-être semi-vide si vous faites redéploie à de nouveaux clients
  • Base de données de test Master - base de données principale remplie de données de test. Tous les scripts que vous avez couru sur Maître vous avez couru ici.
  • test dans la base de progrès - copiés à partir de test maître et utilisé pour tester -. Est écrasé avant tout nouvel essai
  • Si vous avez des succursales (base de données similaire avec une légère différence pour chacun des clients) que vous aurez la même chose que ci-dessus pour chaque branche ...

Vous aurez très certainement d'apporter des modifications de cette fonction de votre situation, mais de toute façon je pense que le maintien de la version textuelle du script de création de base de données complète est erroné en termes de maintenabilité, la fusion, la mise à jour, etc ...

scroll top