я следующий сценарий для моего приложения:Flyway/Liquibase для структуры базы данных и DBUnit для вставки базы данных?
- -Производство серверов
- 1 Тест сервер
- п Разработка Компьютеры
Для миграции базы данных мы используем Hibernate схему обновление для схемы и DBUnit для заполнения всех производственных данных (на всех серверах/компьютерах). Когда обновление схемы завершено, я генерирую новый DTD-файл для новой схемы, поэтому я могу сделать новый импорт XML-файла DBUnit. Приложение обновляет базу данных при запуске с помощью XML-файла (только для разработчиков и тестовых серверов/компьютеров!)
Конечно, этот подход не является оптимальным и хрупким. Поэтому я посмотрел на Liquibase и Flyway. Оба кажутся отличными инструментами, но я не получаю: как мне переносить данные? В моем случае я удаляю данные производственной системы один раз в неделю и добавляю ее в исходный элемент управления приложениями как XML-файл DBUnit, поэтому все разработчики имеют «свежие» данные, а тестовый сервер также имеет текущие данные о производстве.
Проблема, которую я вижу с Liquibase и Flyway, заключается в том, что нет решения, как автоматизировать различия с данными базы данных и автоматически генерировать изменения миграции.
Так что моя идея заключается в следующем со следующими шагами:
- Набор Hibernate для проверки вместо обновления.
- Когда требуется изменение базы данных STRUCTURAL, я добавляю ее в сценарий миграции для основной версии.
- В сценарии миграции никаких вставок базы данных нет.
- Создайте новый DTD для DBunit на основе новой структуры базы данных
- Создайте DBUnit XML из производственной базы данных.
Другой идеей было бы использовать пролетные пути JavaMigration и предоставить исходный дамп базы данных на основе DBUnit. Все другие изменения для данных базы данных будут обрабатываться в сценариях миграции. Но все еще есть проблема: как сделать diff от текущего состояния сценария миграции и состояния базы данных производства?
Было бы удивительным, если кто-нибудь может дать мне намеки, как обрабатывать мой сценарий :)
Я не уверен, как создавать сценарии переноса данных с этим подходом ... Не могли бы вы это прояснить? Есть ли способ с Flyway создать сценарий diff-migration? –
Как я понял, вы делаете все свалку PROD еженедельно. Почему вам также нужен diff данных, если вы все равно даете? –
Я хотел бы создать сценарий миграции со всеми НОВЫМИ данными в производственной базе данных (также с измененными данными). Таким образом, каждую неделю скрипт добавляет новый сценарий перехода на лету в проект (и контроль версий) со всеми различиями в базе данных. Насколько я понял, это рекомендуемый способ (?). Размер моей базы данных составляет несколько сотен мегабайт. Таким образом, каждый полный дамп проверяется на управление версиями (когда это не требуется, так как есть всего несколько наборов данных) будет излишним. –