Начать с дампа, необходимого для управления исходным кодом приложения, управляемого базой данных? - PullRequest
0 голосов
/ 30 января 2012

Каковы плюсы и минусы использования файла дампа в качестве основы для миграции данных и схем, в отличие от полностью основанного на сценариях или дельта-базы данных инструмента?

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

Обсуждаемые решения:

База данных дампов -

  1. Начните с файлом опорной точки сброса.
  2. Сценарии изменения базы данных проверены в системе контроля версий.
  3. Развертывание влечет за собой загрузку файла дампа и запуск сценариев изменения

Схема + миграция

  1. Вся схема и некоторые данные, не относящиеся к конфигурации пользователя, хранятся в формате DDL и DML в SCM.
  2. Скрипты миграции с использованием схемы последнего выпуска хранятся в SCM.
  3. Развертывание влечет за собой загрузку схемы и миграцию данных. 3.

Моя интуиция заключается в том, что использование двоичного формата в качестве основы - это плохо, но я должен быть в состоянии убедить других (если это действительно так), которые утверждают, что это необходимо.


Я переформулировал этот вопрос, чтобы было легче ответить.

Ниже приведен оригинальный вопрос:

Я работаю с командой над корпоративным приложением, управляемым базой данных и надеемся улучшить наш процесс. В настоящее время существует много Ручной процесс обновления базы данных на всех уровнях. Целью является автоматизированный процесс обновления базы данных последовательно и в автоматизированная мода, (в соответствии с идеей атомных коммитов и ближе к непрерывной доставке), что принесет многочисленные преимущества.

Я думаю, что схема (и определенные данные, необходимые для приложения конфигурации) должны быть представлены в системе контроля версий, а в Кроме того, любые скрипты, необходимые для преобразования и загрузки пользовательских данных из текущая производственная база данных. Я читал, что это не рекомендуется иметь файл дампа (.dmp) в управлении исходным кодом, и интуитивно, я согласен сильно. Однако я не согласен со всеми по проекту. Встречный аргумент в том, что на самом деле это невозможно или по крайней мере это слишком сложно, чтобы не начать с файла дампа. Я встаю против моего предела знаний базы данных и не могу спорить многозначительно ... Я больше разработчик, а не специалист по базам данных. Предлагаемая альтернатива заключается в том, чтобы сохранить сценарии изменения, которые изменяют дамп в последнюю схему.

Может кто-нибудь помочь мне понять плюсы и минусы каждого подхода немного лучше? Нужен ли подход на основе дампа, хорошая идея или не очень хорошая идея, а почему?

Небольшая предыстория, которая может иметь отношение: приложение находится в производство, поэтому каждая новая версия должна импортировать данные как часть процесс развертывания и по понятным причинам на интеграцию и UAT Уровни это должны быть реальные данные. Однако это приложение не "поставляется" и установленными клиентами, на данное время, поддерживается внутренне. Я понимаю, что будут детали конкретный для моего проекта, поэтому ответ должен быть направлен на общий случай.

Ответы [ 2 ]

1 голос
/ 11 февраля 2012

Много плохих вещей возникает из-за наличия разных скриптов для новой установки и обновления. Я работал в Oracle E-Business Suite в начале 2000-х годов, и инструмент adpatch в моем опыте устранил эту роковую вариацию.

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

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

Если ваша схема находится в хорошем состоянии, ваши наборы данных будут наиболее легко заботиться о себе.

1 голос
/ 30 января 2012

Большинство проектов, в которых я принимал участие, имели явные сценарии SQL для создания схемы и начальной вставки данных. (и обновите сценарии с помощью операторов alter и миграций данных)

Также есть такие вещи, как Liquibase для управления изменениями базы данных.

http://www.liquibase.org/bestpractices

...