2008-08-28 2 views
7

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

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

ответ

3

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

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

1

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

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

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

+1

Я не согласен. Вы просто * должны * иметь возможность протестировать рабочую копию своей базы данных. Вы либо должны протестировать против производства с помощью гарантий, либо заставить ваше руководство выровнять наличные деньги для большего тестового сервера. – 2009-10-06 11:01:48

0

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

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

Сценарии миграции Rails также очень хороши.

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

0

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

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

1

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

Точно так же, как external libraries, конфигурация базы данных также должна быть в исходном управлении.

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

1

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

0

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

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

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

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

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