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