Использование определений таблиц управления версиями liquibase, а не наборов изменений

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

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

Чтобы быть более конкретным, я бы хотел, чтобы liquibase сравнил мои определения таблиц с производственной базой данных и выдал инструкции alter table, необходимые, чтобы сделать базу данных текущей с моей последней версией.

Я мог бы внести код, если это необходимо, чтобы сделать это

1 ответ

  1. Liquibase и подобные ему инструменты (например, flyway ) в первую очередь предназначены для поддержки миграции баз данных. Миграция-это когда каждое изменение в БД отслеживается таким образом, чтобы его можно было воспроизвести в целевых средах, тем самым сохраняя их в синхронизации с разработкой (хотя и со сдвигом во времени). Это все о сохранении схемы под контролем редакции.

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

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

    Чтобы выполнить начальную синхронизацию, я бы предложил вам исследовать команду diffLog в сочетании с командой changeLogSync для инициализации liquibase на целевой БД.