如何将现有生产数据与App Engine中的架构更改进行协调?

Kpt*_*Kpt 5 java database google-app-engine backwards-compatibility

假设您以特定方式设计App Engine模型类,将代码投入生产并允许用户与您的应用程序进行一段时间的交互,从而将数据生成到App Engine数据存储区中.

现在,假设您决定对其中一个Model类进行更改.

是否有建议的过程来执行此操作 - 在我的情况下是在Java应用程序中 - 以便在新代码投入生产时,它不会导致应用程序在针对具有旧模式的预先存在的数据运行时中断?

例如,在将任何新代码上传到生产环境之前,是否应下载生产数据并对其进行测试?

这类问题的最佳做法是什么?

Dav*_*ith 2

如果架构更改允许,一种方法是延迟将需要架构更改的版本设置为默认版本,直到架构更改完成。

上传新版本,让它静置一段时间以更新索引,然后运行 ​​MapReduce 来触及(并迁移)任何需要更新的实体。完成后,将新版本设为默认版本。