Тестирование и управление версиями базы данных на основе версий кода - PullRequest
7 голосов
/ 29 августа 2008

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

Мой вопрос: каковы советы и рекомендации, чтобы держать базу в ногу с кодом? Как насчет того, чтобы откатить код? Ветвление

Ответы [ 7 ]

3 голосов
/ 29 августа 2008

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

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

1 голос
/ 04 сентября 2009

Определите ваши объекты схемы и ваши справочные данные в текстовых файлах с управлением версиями. Например, вы можете определить схему в формате Torque и данные в формате DBUnit (оба используют XML). Затем вы можете использовать инструменты (мы написали наши собственные) для генерации DDL и DML, которые переносят вас из одной версии вашего приложения в другую. Наш инструмент может принимать в качестве входных данных (а) XML-файлы схемы и данных предыдущей версии или (б) существующую базу данных, так что вы всегда сможете получить базу данных любого состояния в правильном состоянии.

1 голос
/ 14 сентября 2008

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

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

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

1 голос
/ 29 августа 2008

Вы должны быть в состоянии создать свою базу данных с нуля до известного состояния.

Хотя возможность сделать это полезна (особенно на ранних стадиях нового проекта), многие (большинство?) Базы данных быстро станут слишком большими, чтобы это стало возможным. Кроме того, если у вас есть какие-либо большие двоичные объекты, у вас возникнут проблемы с созданием сценариев SQL для всей базы данных.

Я определенно интересовался какой-то системой управления версиями БД, но пока ничего не нашел. Так что вместо решения вы получите мой голос. : -Р

0 голосов
/ 23 октября 2010

Положите ваши разработки базы данных под контроль версий. Я рекомендую взглянуть на дизайнер neXtep: http://www.nextep -softwares.com / вики

Это бесплатный продукт GPL, который предлагает совершенно новый подход к разработке и развертыванию баз данных, связывая информацию о версиях с механизмом генерации SQL, который может автоматически вычислять любой сценарий обновления, необходимый для обновления любой версии базы данных, в другую. Любая существующая база данных может управляться версией с помощью обратной синхронизации.

В настоящее время он поддерживает Oracle, MySql и PostgreSql. Поддержка DB2 находится в стадии разработки. Это полнофункциональная среда разработки баз данных, в которой вы всегда работаете с элементами управления версиями из репозитория. Вы можете публиковать свои обновления с помощью простой синхронизации во время разработки и создавать экспортные поставки базы данных, которые вы сможете выполнить для любой целевой базы данных с помощью автономного установщика, который проверяет версии, выполняет структурные проверки и применяет сценарии обновления.

В среде IDE также имеются редакторы SQL, управление зависимостями, поддержка компонентов модульной модели базы данных, диаграммы моделей данных, клиенты SQL и многое другое.

Всю документацию и концепции можно найти в вики.

0 голосов
/ 29 августа 2008

Хотя возможность сделать это полезна (особенно на ранних этапах нового проекта), многие (большинство?) Базы данных быстро станут слишком большими, чтобы это стало возможным. Кроме того, если у вас есть какие-либо большие двоичные объекты, у вас возникнут проблемы с созданием сценариев SQL для всей базы данных.

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

0 голосов
/ 29 августа 2008

Мне нравится, как это делает Джанго. Вы строите модели, и когда вы запускаете syncdb, он применяет созданные вами модели. Если вы добавляете модель, вам просто нужно снова запустить syncdb. Это было бы легко, если бы ваш скрипт компоновки выполнялся каждый раз, когда вы нажимали.

Проблема возникает, когда вам нужно изменить таблицу, которая уже сделана. Я не думаю, что syncdb справится с этим. Это потребует, чтобы вы вошли и вручную добавили таблицу, а также добавили свойство в модель. Возможно, вы захотите сделать версию этого утверждения. Модели всегда будут находиться под контролем версий, поэтому, если вам нужно, вы можете получить схему БД и запустить ее на новом компьютере без запуска сценариев SQL Еще одна проблема - отслеживание статических данных, которые вы всегда хотите получить в БД.

Скрипты Rails-миграции тоже довольно хороши.

Система управления версиями БД была бы великолепна, но я не знаю, что такое.

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