Я не могу на всю жизнь найти документацию о том, как обрабатывать миграции с помощью Google App Engine и CloudSQL. Я использую среду выполнения Go.Что является лучшей стратегией миграции для GAE CloudSQL
Очевидно, что схема приложения будет меняться и развиваться с течением времени, и миграция должна выполняться. В настоящее время я запускаю миграцию вручную. Это не масштабируемо.
Есть ли у кого есть решение?
Я вижу некоторые специфические проблемы:
я могу получить версию текущего
app.yaml
развернутой версии с использованием VersionID. Однако как проверить, произошла ли миграция для этой версии? Мне нужно было бы сохранить номер версии в таблице db и проверить ее в функцииinit()
?Однако, когда вы загружаете новую версию приложения, с новой схемой GAE будет медленно migrate your traffic что означает, как только первый экземпляр
init()
в новой версии работает, и миграция завершается, трафик на старую версию будет сбой в этих транзакциях db.Я мог бы немного смягчить проблему выше, выполнив версию моего API. Но это ограничивает стратегии миграции, такие как удаление таблиц и т.д.
Наконец, я разочарован тем, что нет documentation на это, насколько я могу судить.
Я не думаю, что есть какие-то уникальные проблемы, характерные для окружающей среды. Cloud SQL - это просто mysql, а gae - это то, где вы запускаете свой код. –
по крайней мере один конкретный случай, потенциально представляющий интерес: http://stackoverflow.com/questions/34670194/handling-schema-migrations-in-app-engine –
@DanCornilescu спасибо! Однако это похоже на объекты хранилища данных. –