Google app engine 在谷歌应用程序引擎上更改模型的后果

Google app engine 在谷歌应用程序引擎上更改模型的后果,google-app-engine,google-cloud-datastore,app-engine-ndb,Google App Engine,Google Cloud Datastore,App Engine Ndb,SQL Alchemy或Django默认基于关系数据库。因此,对模型的任何更改都需要迁移工具,如sqlalchemy migrate或South 现在切换到谷歌应用程序引擎并利用ndb,如果我改变了一个模型会发生什么?从理论上讲,像Big Table这样的NoSQL数据库不应该关心不断发展的模式,因此不需要迁移 然而,定义一个像这样的模型,清楚地表明了一个要验证的模式 class ExampleModel(ndb.Model): example_name = ndb.StringProp

SQL Alchemy或Django默认基于关系数据库。因此,对模型的任何更改都需要迁移工具,如sqlalchemy migrate或South

现在切换到谷歌应用程序引擎并利用ndb,如果我改变了一个模型会发生什么?从理论上讲,像Big Table这样的NoSQL数据库不应该关心不断发展的模式,因此不需要迁移

然而,定义一个像这样的模型,清楚地表明了一个要验证的模式

class ExampleModel(ndb.Model):
    example_name = ndb.StringProperty(required=True)
    example_description = ndb.TextProperty(required=True)
    added_by = ndb.UserProperty()
    timestamp = ndb.DateTimeProperty(auto_now_add=True)
那么,如果我添加了一个字段,会发生什么呢?更改字段,甚至删除字段

我的假设如下:

添加字段

  • 也许最简单的情况是,只会创建模型的新实例 根据新字段进行验证。加载任何旧实例时, 该字段仍然是空的。但是,如果字段为 按要求设置
删除字段

  • 在这种情况下,所有旧实例都将包含 删除的字段。但他们留在那里,从现在起将被忽视 开
修改字段名

  • 上述两者的结合;新名称将被视为 新字段和旧字段将被忽略和孤立

这个假设正确吗?

您可以在文档中找到许多问题的答案:

但是,如果按要求设置字段,会发生什么情况

根据需要设置属性只意味着您必须直接在构造函数中设置值,这样现有实体就不会受到影响