миграция пролетного пути несколько раз

Мне нужно выполнить очень перенос. Это невозможно сделать с помощью SQL, я должен использовать Java. И я обрабатываю каждую строку отдельно, громоздкое обновление невозможно. Чтобы усложнить ситуацию: у одного из моих клиентов несколько миллиардов строк в таблице, у других клиентов всего пара сотен. Если я попытаюсь перенести большую таблицу базы данных, я обязательно столкнусь с проблемами памяти. В какой-то момент память транзакций заканчивается.

Что мне нужно, так это мигрировать по блокам и несколько раз вызывать шаг миграции. В идеале моя реализация JdbcMigration могла бы возвращать в систему пролетного пути информацию типа "Я еще не закончил, пожалуйста, позвоните мне еще раз" или "Я закончил, вы можете перейти к следующему шагу миграции". Если бы у меня была эта функция, я бы обработал, например, до 1 миллиона записей и позволил бы flyway зафиксировать транзакцию. И я бы повторял это до тех пор, пока есть необработанные записи.

К сожалению, метод migrate(Connection) из JdbcMigration имеет возвращаемый тип void. Есть ли способ дать flyway такой ответ?

С уважением, Кристиан


person Christian    schedule 03.01.2014    source источник


Ответы (1)


На данный момент прямой поддержки этому нет. Однако вы можете сами создавать коммиты в JdbcMigration, просто имейте в виду, что откат, сделанный Flyway в случае ошибки, больше не будет иметь такого же эффекта.

person Axel Fontaine    schedule 03.01.2014