Как можно изменить схему базы отслеживания групп?

Какие методологии контроля версий помогают командам людей отслеживать изменения схемы базы данных?

66 голосов | спросил Toby 3 Jpm1000000pmMon, 03 Jan 2011 23:46:32 +030011 2011, 23:46:32

5 ответов


44

всего пару минут назад я проверял это: Таблица, которая должна существовать во всех проектах с базой данных , кажется достаточно простой, чтобы практиковать, проверьте:

  

Itâ € ™ s называется schema_version (или миграции, или что вам подходит), и его целью является отслеживание структурных или данных изменений в базе данных.   Возможная структура (пример в MySQL):

create table schema_version (
     `when` timestamp not null default CURRENT_TIMESTAMP,
     `key` varchar(256) not null,
     `extra` varchar(256),
     primary key (`key`)
) ENGINE=InnoDB;
     

вставить в schema_version (key, extra)) значения ('001', 'schema version');

     

Добавляете ли вы эту таблицу из начала проекта или сразу после того, как вы развернули первую версию на промежуточном или производственном сервере.

     

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

     

â € |

ответил eiefai 3 Jpm1000000pmMon, 03 Jan 2011 23:49:46 +030011 2011, 23:49:46
23

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

В противном случае RedGate имеет инструмент для интеграции источника контроль в SSMS и SQL Compare - это полезно для сравнения /синхронизации схем MS SQL Server. Visual Studio Database Edition также имеет встроенный инструмент сравнения схем .

Другой вопрос SO приводит меня к Migrator Dot Net , о котором я собираюсь начать расследование в течение моего обильного свободного времени. Это похоже на хороший метод, но это может быть больше затрат времени /накладных расходов, чем вы готовы сделать.

ответил Larry Smithmier 4 Jam1000000amTue, 04 Jan 2011 00:22:04 +030011 2011, 00:22:04
12

eiefai уже упомянул таблицу, которая должна существовать во всех проектах с базой данных . Это отличная запись в блоге, но IMO это лишь часть пути к рабочему решению для контроля версий базы данных. Я думаю, что любая попытка «ответить» на этот вопрос в реальном мире должна учитывать некоторые другие данные о VCS и базах данных:

ответил TML 5 Jam1000000amWed, 05 Jan 2011 10:05:53 +030011 2011, 10:05:53
8

Есть несколько разных ракурсов, чтобы подойти к этому вопросу, я думаю. Я считаю, что «инструмент-первый» угол будет меняться в зависимости от платформы и личных предпочтений. Пример: я использую проект базы данных в MS Visual Studio, но я не уверен, что это отличное решение для MySQL. Я также знаю людей, которые довольно продаются на своих любимых инструментах от Redgate, Erwin, Embarcadero и т. Д.

В этом вопросе также есть «первый процесс», который, как мы надеемся, будет повторно рассмотрен на этом сайте в последующих вопросах. Ключевые элементы в этом процессе получают вашу схему под контролем источника и управления изменениями, так что вы можете применять изменения схемы от версии «x» до версии «y» в значительной степени по требованию.

Окончательный ответ на эту тему будет в конечном итоге похож на книгу, поэтому, вероятно, стоит начать, ссылаясь на один: Redgate недавно опубликовал бесплатную электронную книгу под названием « Руководство Red Gate для разработки на основе SQL Server Team ", и пока есть много дел, которые нужно обсуждать, это довольно хорошее место для начала обсуждения, ИМО. Вопреки имени, большая часть материала в этой книге является достаточно общей для применения к любой БД (а не только к SQL Server) и любому набору инструментов (а не только к Redgate). Если вы этого еще не видели, это, безусловно, стоит обезжирить, по крайней мере.

Наконец, вероятно, стоит связать «унаследованный ответ» из stackoverflow .

ответил D. Lambert 4 Jam1000000amTue, 04 Jan 2011 00:21:58 +030011 2011, 00:21:58
5

SchemaCrawler - мой инструмент для создания текстового файла со всеми объектами схемы базы данных. Я разработал этот текстовый вывод как для чтения человеком, так и для несовместимого с другим сервером.

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

ответил Sualeh Fatehi 7 FebruaryEurope/MoscowbMon, 07 Feb 2011 04:59:52 +0300000000amMon, 07 Feb 2011 04:59:52 +030011 2011, 04:59:52

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132