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