В вики сообщества SO было некоторое обсуждение того, следует ли управлять версиями объектов базы данных. Однако я не видел особого обсуждения передовых методов создания процесса автоматизации сборки для объектов базы данных.
Это было спорным вопросом для моей команды, особенно потому, что разработчики и администраторы баз данных часто имеют разные цели, подходы и проблемы при оценке преимуществ и рисков автоматизированного подхода к развертыванию баз данных.
Я хотел бы услышать некоторые идеи от сообщества SO о том, какие практики оказались эффективными в реальном мире.
Я понимаю, что это несколько субъективно, какие практики действительно лучше, но я думаю, что хороший диалог о том, какая работа может быть полезен для многих людей.
Вот несколько моих тизерных вопросов о проблемных областях в этой теме. Это не исчерпывающий список, а скорее отправная точка для людей, которые помогут понять, что я ищу.
- Следует ли создавать как тестовую, так и производственную среду из системы контроля версий?
- Должны ли оба быть построены с использованием автоматизации - или производство должно быть построено путем копирования объектов из стабильной, завершенной тестовой среды?
- Как вы справляетесь с потенциальными различиями между тестовой и производственной средами в сценариях развертывания?
- Как вы проверяете, что сценарии развертывания будут работать в производственной среде так же эффективно, как и при тестировании?
- Какие типы объектов следует контролировать по версиям?
- Просто код (процедуры, пакеты, триггеры, Java и т. Д.)?
- Индексы?
- Ограничения?
- Определения таблиц?
- Сценарии изменения таблицы? (например, сценарии ALTER)
- Все?
- Какие типы объектов не должны контролироваться по версиям?
- Последовательности?
- Гранты?
- Учетные записи пользователей?
- Как следует организовать объекты базы данных в репозитории SCM?
- Как вы справляетесь с одноразовыми вещами, такими как сценарии преобразования или сценарии ALTER?
- Как вы справляетесь с удалением объектов из базы данных?
- Кто должен нести ответственность за продвижение объектов от уровня разработки до уровня тестирования?
- Как вы координируете изменения от нескольких разработчиков?
- Как вы справляетесь с ветвлением для объектов базы данных, используемых несколькими системами?
- Какие исключения, если таковые имеются, можно сделать из этого процесса?
- Проблемы с безопасностью?
- Данные, требующие деидентификации?
- Скрипты, которые нельзя полностью автоматизировать?
- Как сделать процесс отказоустойчивым и исполнимым?
- К ошибке разработчика?
- К неожиданным экологическим проблемам?
- Для аварийного восстановления?
- Как убедить лиц, принимающих решения, в том, что преимущества DB-SCM действительно оправдывают затраты?
- Смехотворное проишествие?
- Отраслевые исследования?
- Рекомендации передовой практики отрасли?
- Обращения к признанным властям?
- Анализ выгоды и затрат?
- Кто должен «владеть» объектами базы данных в этой модели?
- Разработчики?
- DBA?
- Аналитики данных?
- Больше, чем один?