Il y a eu une discussion sur le wiki de la communauté SO pour savoir si les objets de base de données doivent être contrôlés par version. Cependant, je n'ai pas vu beaucoup de discussions sur les meilleures pratiques pour créer un processus d'automatisation de construction pour les objets de base de données.
Cela a été un point de discussion controversé pour mon équipe - d'autant plus que les développeurs et les administrateurs de bases de données ont souvent des objectifs, des approches et des préoccupations différents lors de l'évaluation des avantages et des risques d'une approche d'automatisation du déploiement de bases de données.
J'aimerais entendre quelques idées de la communauté SO sur les pratiques qui ont été efficaces dans le monde réel.
Je me rends compte qu'il est quelque peu subjectif de savoir quelles pratiques sont vraiment les meilleures, mais je pense qu'un bon dialogue sur le travail pourrait être utile à de nombreuses personnes.
Voici quelques-unes de mes questions teaser sur les sujets de préoccupation de ce sujet. Celles-ci ne sont pas censées être une liste définitive - mais plutôt un point de départ pour aider les gens à comprendre ce que je recherche.
- Les environnements de test et de production doivent-ils être créés à partir du contrôle de code source?
- Les deux devraient-ils être construits à l'aide de l'automatisation - ou la production devrait-elle être construite en copiant des objets à partir d'un environnement de test stable et finalisé?
- Comment gérez-vous les différences potentielles entre les environnements de test et de production dans les scripts de déploiement?
- Comment testez-vous que les scripts de déploiement fonctionneront aussi efficacement en production qu'en test?
- Quels types d'objets doivent être contrôlés par version?
- Juste du code (procédures, packages, déclencheurs, java, etc.)?
- Index?
- Contraintes?
- Définitions de table?
- Scripts de changement de table? (par exemple, scripts ALTER)
- Tout?
- Quels types d'objets ne doivent pas être contrôlés par version?
- Des séquences?
- Des subventions?
- Comptes utilisateur?
- Comment les objets de base de données doivent-ils être organisés dans votre référentiel SCM?
- Comment gérez-vous des choses ponctuelles comme les scripts de conversion ou les scripts ALTER?
- Comment gérez-vous la suppression d'objets de la base de données?
- Qui devrait être responsable de la promotion des objets du développement au niveau de test?
- Comment coordonnez-vous les changements de plusieurs développeurs?
- Comment gérez-vous le branchement des objets de base de données utilisés par plusieurs systèmes?
- Quelles exceptions, le cas échéant, peuvent être raisonnablement faites à ce processus?
- Problèmes de sécurité?
- Données avec des problèmes de désidentification?
- Des scripts qui ne peuvent pas être entièrement automatisés?
- Comment pouvez-vous rendre le processus résilient et exécutoire?
- À l'erreur du développeur?
- À des problèmes environnementaux inattendus?
- Pour la reprise après sinistre?
- Comment convaincre les décideurs que les avantages de DB-SCM justifient vraiment le coût?
- Preuves anecdotiques?
- Recherche industrielle?
- Recommandations de bonnes pratiques de l'industrie?
- Faire appel aux autorités reconnues?
- L'analyse coûts-avantages?
- Qui devrait «posséder» les objets de base de données dans ce modèle?
- Développeurs?
- DBA?
- Analystes de données?
- Plus d'un?