контроль данных при развертывании баз данных с помощью dbdeploy - PullRequest
2 голосов
/ 15 сентября 2011

Мы работаем с Phing Задачей dbdeploy для выполнения контроля версий наших баз данных PostgreSQL, что в целом является хорошим способом работы.У меня нет особых проблем с версиями базы данных после того, как мы начали работать с ней, кроме одного мучительного сомнения: как мы контролируем данные, содержащиеся в базе данных?

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

Поэтому я подумал, что может иметь смысл написать скрипт PHP, который будет импортировать данные, скажем, из CSVфайл.Это будет работать, пока не произойдет другое изменение базы данных, которое переименует столбец, что сделает файл PHP бесполезным.Конечно, это легко исправить, обновив сценарий, включив в него изменения базы данных, и повторно запустив сценарий, но это подвержено ошибкам, и именно поэтому я и начал использовать dbdeploy.

Итак, мой вопрос:как вы обрабатываете данные при развертывании изменений или, более точно, как вы вставляете данные, необходимые для рабочей среды?

1 Ответ

1 голос
/ 22 сентября 2011

Вы правы, что данные тестирования должны быть исключены из дельт, так же как тестирование не должно проводиться в производственной системе.Что вы используете для тестирования?Phpunit, Selenium, ...?Используете ли вы PHP-фреймворк?

В любом случае, наилучшим способом может быть использование чего-то, что уже может поставляться с любым инструментом, который вы используете.Например, Symfony 1.x имеет довольно хорошее управление приборами.Для тестирования PHP-кода PHPUnit является стандартом де-факто и поставляется с некоторым управлением приборами.Попробуйте просмотреть документацию PHPUnit для получения дополнительной информации о том, как он обрабатывает наборы данных: http://www.phpunit.de/manual/current/en/database.html#understanding-datasets-and-datatables

...