Существует ли система контроля версий для изменений структуры базы данных?

Я часто сталкиваюсь со следующей проблемой.

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

Итак, я делаю push в живую систему и получаю большую, очевидную ошибку, что нет NewColumnX, уф.

Независимо от того, что это может быть не лучшей практикой для данной ситуации, существует ли система контроля версий для баз данных? Меня не волнует конкретная технология баз данных. Я просто хочу знать, существует ли такая система. Если она работает с MS SQL Server, то отлично.

Комментарии к вопросу (2)
Решение

В Ruby on Rails существует понятие migration - быстрый сценарий для изменения базы данных.

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

Чтобы мигрировать вверх, вы выполняете команду "db:migrate", которая смотрит на вашу версию и применяет необходимые скрипты. Вы можете мигрировать вниз аналогичным образом.

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

Комментарии (1)

I' m немного старой школы, в этом я использую исходные файлы для создания базы данных. Есть на самом деле 2 файла - проект-database.sql и проект-updates.sql - первое для схемы и постоянных данных и второго для модификаций. Конечно, оба находятся под исходным контролем.

Когда база данных изменяется, я сначала обновляю главную схему в проекте-database.sql, затем копирую соответствующую информацию к проекту-updates.sql, например, ИЗМЕНЯЮ заявления СТОЛА. Я могу тогда применить обновления базы данных развития, проверить, повторить, пока не преуспели. Затем регистрация файлов, проверьте снова и обратитесь к производству.

Кроме того, у меня обычно есть стол в db - Конфигурации - такой как:

SQL

CREATE TABLE Config
(
    cfg_tag VARCHAR(50),
    cfg_value VARCHAR(100)
);

INSERT INTO Config(cfg_tag, cfg_value) VALUES
( 'db_version', '$Revision: $'),
( 'db_revision', '$Revision: $');

Затем я добавляю следующее к разделу обновления:

UPDATE Config SET cfg_value='$Revision: $' WHERE cfg_tag='db_revision';

'Db_version' только изменен, когда база данных воссоздана, и 'db_revision' дает мне признак, как далеко db от основания.

Я мог держать обновления в их собственных отдельных файлах, но я принял решение делать пюре из них всех вместе и использовать cut& приклейте, чтобы извлечь соответствующие разделы. Немного больше домашнего хозяйства в порядке, т.е. удалите ':' от $ за 1,1$Revision, чтобы заморозить их.

Комментарии (0)

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

Чтобы достигнуть хорошей практики управления изменениями базы данных, мы должны определить несколько основных целей. Таким образом Система Миграции Схемы MyBatis (или Миграции MyBatis, если коротко) ищет на:

  • Работа с любой базой данных, новой или существующей
  • Усильте исходную систему управления (например, Подрывная деятельность)
  • Позвольте параллельным разработчикам или командам работать независимо
  • Позвольте конфликты, очень видимые и легко управляемые
  • Допускайте передовую и обратную миграцию (развейте, передайте соответственно),
  • Сделайте текущее состояние базы данных легкодоступным и понятным
  • Позвольте миграции несмотря на привилегии доступа или бюрократию
  • Работа с любой методологией
  • Поощряет хорошие, последовательные методы
Комментарии (0)

У Redgate есть продукт, названный Исходный Контроль SQL. Это объединяется с TFS, SVN, Хранилищем SourceGear, Хранилищем, Про, Подвижным, По необходимости, и Мерзавец.

Комментарии (0)

Интересно, что никто не упомянул общедоступный инструмент liquibase, который является базирующейся Явой и должен работать почти на каждую базу данных, которая поддерживает jdbc. По сравнению с рельсами это использует xml вместо этого рубин, чтобы выполнить изменения схемы. Хотя мне не нравится xml для проблемно-ориентированных языков, очень прохладное преимущество xml состоит в том, что liquibase знает, как понизить определенные операции до прежнего уровня как



Так Вы don' t должен обращаться с этим собственным

Чистые sql заявления или импорт данных также поддержаны.

Комментарии (2)

Я настоятельно рекомендую дельту SQL. Я просто использую его, чтобы произвести различные сценарии когда i' m сделанное кодирование моей особенности и проверки те сценарии в мой источник управляют инструментом (Подвижный:))

У них есть оба SQL-сервер & версия Oracle.

Комментарии (0)

Большинство движков баз данных должны поддерживать сброс вашей базы данных в файл. Я знаю, что MySQL поддерживает, во всяком случае. Это будет просто текстовый файл, так что вы можете отправить его в Subversion, или что вы там используете. Это было бы просто для того, чтобы запустить diff на файлах также.

Комментарии (1)

Если you' ре используя SQL-сервер было бы трудно избить Чувака Данных (иначе Выпуск Базы данных Визуальной Студии). Как только Вы приобретаете навык его, делание схемы выдерживает сравнение между Вашей управляемой источником версией базы данных, и версия в производстве - бриз. И щелчком Вы можете произвести свой различный DDL.

There' s учебное видео на MSDN that' s очень полезный.

Я знаю о DBMS_METADATA и Жабе, но если бы кто-то мог бы придумать Чувака Данных для Oracle тогда, жизнь была бы действительно сладка.

Комментарии (0)

Смотрите на пакет оракула DBMS_METADATA.

В частности, следующие методы особенно полезны:

  • 'DBMS_METADATA.GET_DDL'
  • 'DBMS_METADATA.SET_TRANSFORM_PARAM'
  • 'DBMS_METADATA.GET_GRANTED_DDL'

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

Не уверенный, если есть что-то это простое для MSSQL.

Комментарии (0)

Имейте свою начальную букву, создают заявления стола в диспетчере вариантов, затем добавляют, изменяют заявления стола, но никогда не редактируют файлы, просто больше изменяет файлы, идеально названные последовательно, или как раз когда " изменение set" таким образом, Вы можете найти все изменения для конкретного развертывания.

Самая выносливая часть, которую я вижу, отслеживает зависимости, например, поскольку конкретная таблица B развертывания, возможно, должна была бы быть обновлена перед столом A.

Комментарии (0)

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

Комментарии (0)

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

Пример: Полностью измените свою схему развития в Студию ER - сравнивают его с производством, и это перечислит все различия. Это может сценарий изменения или просто протолкнуть их автоматически.

Как только у Вас есть схема в Студии ER, Вы можете или сохранить сценарий создания или сохранить его как собственный набор из двух предметов и спасти его в контроле вариантов. Если Вы когда-нибудь хотите вернуться к прошлой версии схемы, просто проверить ее и выдвинуть ее на Вашу db платформу.

Комментарии (0)

Я пишу свои сценарии выпуска db параллельно с кодированием и сохраняю сценарии выпуска в проекте определенным разделом в SS. Если я вношу изменение в кодекс, который требует изменения db, то я обновляю сценарий выпуска одновременно. До выпуска я работаю на сценарии выпуска чистый dev db (скопированная структура, мудрая от производства), и делаю мое заключительное тестирование на нем.

Комментарии (0)

I' ve, сделанный это прочь и на в течение многих лет - справляющийся (или пытающийся справиться) версии схемы. Лучшие подходы зависят от инструментов, которые Вы имеете. Если Вы можете получить Программное средство Поисков " Схема Manager" you' ll быть в хорошем состоянии. У Oracle есть свой собственный, низший инструмент, который также называют " Схема Manager" (путающий очень?), что я don' t рекомендуют.

Без автоматизированного инструмента (см. другие комментарии здесь о Чуваке Данных), тогда you' ll использовать сценарии и файлы DDL непосредственно. Выберите подход, зарегистрируйте его и следуйте за ним строго. Мне нравится иметь способность воссоздать базу данных в любой данный момент, таким образом, я предпочитаю иметь полный экспорт DDL всей базы данных (если I' m DBA), или схемы разработчика (если I' m в способе разработки нового продукта).

Комментарии (0)

У Разработчика PLSQL, инструмента от Всей Автоматизации Arround, есть плагин для хранилищ, который работает хорошо (но не большой) с Визуальным Безопасным Источником.

От сети:

Программное расширение Контроля Вариантов обеспечивает тесную интеграцию между Разработчиком PL/SQL IDE > > и любая Система управления Вариантов, которая поддерживает Microsoft SCC Interface Specification. > > Это включает большинство популярных Систем управления Вариантов, таких как Microsoft Visual SourceSafe, > > Merant PVCS и Исходная Целостность MKS.

< http://www.allroundautomations.com/plsvcs.html>

Комментарии (0)

There' s PHP5 " миграция базы данных framework" названный Ruckusing. Я haven' t использовал его, но примеры показывают идею, если Вы используете язык, чтобы создать базу данных как и, когда необходимый, Вы только должны отследить исходные файлы.

Комментарии (0)

Вы можете использовать [Microsoft SQL Server Data Tools] (http://msdn.microsoft.com/en-gb/data/tools.aspx) в визуальной студии, чтобы произвести сценарии для объектов базы данных как часть Проекта SQL-сервера. Вы можете тогда добавить сценарии, чтобы поставить контроль, используя исходную интеграцию контроля, которая встроена в визуальную студию. Кроме того, Проекты SQL-сервера позволяют Вам, проверяют объекты базы данных, используя компилятор и производят сценарии развертывания, чтобы обновить существующую базу данных или создать новую.

Комментарии (0)

Схема Выдерживает сравнение для Oracle, инструмент, специально предназначенный, чтобы мигрировать изменения от нашей базы данных Oracle до другого. Пожалуйста, посетите URL ниже для ссылки для скачивания, где Вы будете в состоянии использовать программное обеспечение для полностью функционального испытания.

http://www.red-gate.com/Products/schema_compare_for_oracle/index.htm

Комментарии (0)

We' ve, используемый Системный Выпуск Базы данных Команды MS с довольно хорошим успехом. Это объединяется с контролем вариантов TFS и Визуальной Студией более или менее беспрепятственно и позволяет нам, управляет сохраненным procs, взглядами, и т.д., легко. Урегулирование конфликтов может быть болью, но история вариантов полна однажды it' s сделанный. После этого миграции к обеспечению качества и производство чрезвычайно просты.

It' s ярмарка, чтобы сказать это it' s продукт вариантов 1.0, тем не менее, и не без нескольких проблем.

Комментарии (0)

I' d рекомендуют один из двух подходов. Во-первых, вложите капитал в PowerDesigner от Sybase. Версия для предприятий. Это позволяет Вам проектировать Физический datamodels, и многое другое. Но это идет с хранилищем, которое позволяет Вам регистрироваться в своих моделях. Каждая новая регистрация может быть новой версией, она может сравнить любую версию с любой другой версией и даже с тем, что находится в Вашей базе данных в то время. Это тогда представит список каждого различия и спросит, который должен мигрироваться …, и затем это строит сценарий, чтобы сделать это. Это не дешево, но это - сделка по дважды цене, и это - ROI, приблизительно 6 месяцев.

Другая идея состоит в том, чтобы включить DDL, ревизующий (работы в Oracle). Это составит таблицу с каждым изменением, которое Вы вносите. Если Вы подвергаете сомнению изменения от метки времени, Вы в последний раз переместили свои изменения базы данных, чтобы подталкивать к прямо сейчас, у Вас будет заказанный список всего, что Вы сделали. Некоторые, где пунктам, чтобы устранить изменения балансовой суммы нравится, составляют таблицу foo; сопровождаемый столом снижения foo; и Вы можете ЛЕГКО построить ультрасовременный сценарий. Почему держат изменения в Wiki, это удваивает работу. Позвольте базе данных отследить их для Вас.

Комментарии (0)