Как вы должны построить свою базу данных из системы контроля версий? - PullRequest
102 голосов
/ 12 июня 2009

В вики-сообществе SO обсуждался вопрос о том, должны ли объекты базы данных управляться версией. Тем не менее, Я не видел много дискуссий о передовых методах создания процесса автоматизации сборки для объектов базы данных.

Это был спорный вопрос для моей команды - особенно потому, что разработчики и администраторы баз данных часто имеют разные цели, подходы и проблемы при оценке преимуществ и рисков подхода автоматизации к развертыванию базы данных.

Я хотел бы услышать некоторые идеи от сообщества SO о том, какие практики были эффективны в реальном мире.

Я понимаю, что это несколько субъективно, какие практики действительно лучше, но я думаю, что хороший диалог о том, какая работа может быть полезна для многих людей.

Вот некоторые из моих дразнилочных вопросов по проблемным областям в этой теме. Они не предназначены для того, чтобы быть окончательным списком - скорее отправной точкой для людей, чтобы помочь понять, что я ищу.

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

Ответы [ 11 ]

0 голосов
/ 19 июня 2009

Вы можете обнаружить, что Liquibase обрабатывает многое из того, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...