У вікі спільноти SO було проведено певну дискусію щодо того, чи слід керувати версіями об'єктів бази даних. Тим НЕ менше, я не бачив багато дискусій про передовий практиці для створення процесу збирання-автоматизації для об'єктів бази даних.
Це було дискусійним моментом для моєї команди - тим більше, що розробники та DBA часто мають різні цілі, підходи та проблеми при оцінці переваг та ризиків автоматизованого підходу до розгортання бази даних.
Мені хотілося б почути деякі ідеї спільноти про те, які практики були ефективними в реальному світі.
Я розумію, що це дещо суб'єктивно, які практики справді найкращі, але я думаю, що хороший діалог про те, яка робота може бути корисною для багатьох людей.
Ось кілька моїх цікавих питань щодо проблемних питань у цій темі. Вони не мають бути остаточним списком - скоріше відправною точкою, щоб люди могли зрозуміти, що я шукаю.
- Чи слід будувати як тестове, так і виробниче середовище з управління джерелами?
- Чи повинні обидва бути побудовані за допомогою автоматизації - чи виробництво має будуватися шляхом копіювання об'єктів із стабільного, завершеного тестового середовища?
- Як ви вирішуєте потенційні відмінності між тестовим та виробничим середовищем в сценаріях розгортання?
- Як ви перевіряєте, що сценарії розгортання працюватимуть так само ефективно, як і в тесті?
- Які типи об’єктів слід контролювати версії?
- Просто код (процедури, пакети, тригери, java тощо)?
- Індекси?
- Обмеження?
- Визначення таблиці?
- Сценарії зміни таблиці? (наприклад, сценарії ALTER)
- Все?
- Які типи об'єктів не повинні контролюватися версіями?
- Послідовності?
- Гранти?
- Облікові записи користувачів?
- Як слід організувати об’єкти бази даних у вашому сховищі SCM?
- Як ви маєте справу з разовими речами, такими як скрипти перетворення або сценарії ALTER?
- Як ви маєте справу з вилученням об'єктів із бази даних?
- Хто повинен відповідати за просування об’єктів від розробки до рівня тесту?
- Як ви координуєте зміни від декількох розробників?
- Як ви маєте справу з розгалуженням для об’єктів бази даних, які використовуються у кількох системах?
- Які винятки, якщо такі є, можуть бути прийнятними для цього процесу?
- Питання безпеки?
- Дані, що стосуються деедентифікації?
- Сценарії, які неможливо повністю автоматизувати?
- Як ви можете зробити процес стійким і примусовим?
- Помилка розробника?
- До несподіваних екологічних проблем?
- Для відновлення після катастроф?
- Як ви переконуєте осіб, які приймають рішення, що переваги DB-SCM справді виправдовують витрати?
- Анекдотичні докази?
- Промислові дослідження?
- Рекомендації щодо найкращої практики в галузі?
- Звернення до визнаних органів влади?
- Аналіз витрат / вигод?
- Хто повинен "володіти" об'єктами бази даних у цій моделі?
- Розробники?
- DBA?
- Аналітики даних?
- Більше одного?