Google App Engine,BigTable和模型演变

时间:2011-07-27 21:46:38

标签: spring google-app-engine jpa bigtable

我目前正在使用Spring / JPA / Google App Engine,我担心的是一个问题。

GAE很酷的是,一旦我的映射被定义,我只需要插入数据,并且存储与之相关的所有内容。

但是,如果我碰巧更改了我的映射,我该如何处理以前的数据?每次更改时我是否必须创建迁移脚本?在这种情况下,有没有办法使用Liquibase或类似的东西?或者是否有其他方法可以处理现有数据的这些变化?

非常感谢你的帮助! 罗尔夫

1 个答案:

答案 0 :(得分:1)

这取决于这些变化的性质,但在大多数情况下,至少需要进行一些光更新。要记住的一件大事是父子关系(更多细节见this previous question)和设计时的实体组;因为父母成为实体密钥的一部分,所以他们是非常不可改变的。与键名相同。

另一件事是app引擎实体是无模式的;例如,如果您有一个类Foo并且突然向其添加了一个属性prop = db.BooleanProperty(default=True),则所有现有Foo实体都不会将prop设置为True(尽管新的将)。同样,您必须手动管理ReferencePropertyListProperty(db.Key)。 App Engine确实有一个_set运算符来帮助解决这个问题,但老实说我发现它有点不可靠,当我知道他们应该知道这个事实时_set空出来了不是。无论如何,这是使用_set功能的documentation

相关问题