Мне нужно реализовать механизм миграции схемы для PostgreSQL. Просто для устранения двусмысленности: под миграцией схемы я имею в виду, что мне нужно обновить структуры моей базы данных до последней версии независимо от их текущего состояния на конкретном экземпляре сервера.
Например, в первой версии я создал несколько таблиц, затем во второй версии я переименовал некоторые столбцы, а в третьей версии я удалил одну таблицу и создал другую. У меня есть несколько серверов, и на некоторых из них у меня есть версия один, на некоторых версия три и т. д.
Моя идея:
- Сгенерировать хеш для вывода, произведенного
pg_dump --только схема
каждый раз, прежде чем я изменю схему моей базы данных. Это будет надежный способ определить версию базы данных, к которой в будущем следует применить исправление.
- Содержит список исправлений с соответствующим хэшем, к которому они должны применяться.
- Когда мне нужно обновить мою базу данных, я запускаю приложение, которое будет искать хэш, соответствующий текущей структуре базы данных (путем вычисления хэша локальной базы данных и сравнения его с набором хэшей, который у меня есть) и применяю соответствующий патч.
- Повторяйте, пока следующий хеш не будет найден.
Не могли бы вы указать какие-либо слабые стороны этого подхода?