Непрерывная интеграция и управление базой данных

Программа "strings" из GNU binutils очень полезна. Он будет печатать строки печатаемых символов в файле, нередко давая понять, что содержит файл или программа.

11
задан CodeMonkey 25 October 2009 в 11:47
поделиться

5 ответов

Цитата Джеффа Этвуда в отличном сообщении Get Your Database Under Version Control :

...

Я снова думал об этом потому что мой друг и соавтор К. Скотт Аллен только что написал блестящую серия из пяти частей о философии и практика управления версиями базы данных:

  1. Три правила для работы с базой данных
  2. Базовый план
  3. Сценарии изменения
  4. Представления, хранимые процедуры и тому подобное
  5. Ветвление и объединение

...

Действительно , всю серию стоит прочитать, даже если многим из вас кажется, что третья часть особенно интересна. И, кстати, взгляните на статью Bulletproof Sql Change Scripts с использованием INFORMATION_SCHEMA Views , также упомянутую в третьей части. Возможно, вы уже знаете об этом, но среди прочего передового опыта в нем объясняется, почему важно писать идемпотентные сценарии изменений.

Что касается инструментов, вы можете проверить UpToDater (ориентированный на код ), LiquiBase (на основе xml) или ... dbdeploy , маленькая жемчужина , основанная на реальном опыте разработки программного обеспечения в ThoughtWorks. Дело не в том, что два первых не подходят, но я предпочитаю этот (он доступен для Java, PHP или .NET).

21
ответ дан 27 October 2019 в 01:51
поделиться

Ознакомьтесь с структурами миграции. AFAIK, идея пришла из рельсов, но на данный момент люди создали фреймворки почти для всего остального.

1
ответ дан 27 October 2019 в 01:51
поделиться

Это зависит.

Если это выпущенный продукт, о котором вы говорите, изменения схемы необходимо будет тщательно отслеживать, чтобы вы могли спланировать процесс обновления. Было бы хорошо подумать об этом сейчас, чтобы «сценарий управления версиями» имел некоторый смысл. Но обратная / прямая совместимость обычно является только видимым для пользователя требованием, а не требованием «между компиляциями». Между выпусками имеет смысл поддерживать сценарий обновления, который изменяет таблицы базы данных, чтобы привести их к новой схеме.

Если это новый / неизданный продукт, какое вам дело, если кто-то изменит схему? И зачем вам вообще хранить базу данных между сборками непрерывной интеграции? В любом случае у вас должна быть возможность регенерировать любые тестовые данные с помощью автоматического теста.

1
ответ дан 27 October 2019 в 01:51
поделиться

Я лучше всего работаю со сценариями «миграции», которые являются следующим этапом по сравнению с простым сценарием с поддержкой версий. При миграции вы указываете изменения в базе данных (добавления, удаления и т. Д.), А также то, как отменить изменения, которые выполняет миграция. Затем он помечается версией некоторой формы, которая не будет конфликтовать с другими разработчиками. Особенно хорошим номером версии является текущее время (в формате ГГГГММДДЧЧММСС или в секундах от эпохи). Это хороший выбор, потому что очень маловероятно, что вы столкнетесь с конфликтами версий, и все еще очень легко увидеть, существуют ли новые версии из-за строго возрастающей природы таких меток времени.

Примечание: это очень сильно зависит от системы миграции в Rails. Для получения дополнительных сведений и идей я настоятельно рекомендую изучить эту систему.

6
ответ дан 27 October 2019 в 01:51
поделиться

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

0
ответ дан 27 October 2019 в 01:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: