SQL Alchemy 或 Django 默认基于关系数据库。因此,对模型的任何更改都需要迁移工具,例如 sqlalchemy-migrate 或 South。
现在切换到 Google App 引擎并使用 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)
那么如果我添加一个字段会发生什么?更改了一个字段,甚至删除了一个字段?
我的假设如下:
添加字段
- 也许是最简单的情况,只有模型的新实例将针对新字段进行验证。加载任何较旧的实例时,该字段仍然为空。但是,如果根据需要设置该字段会发生什么?
删除字段
- 在这种情况下,所有旧实例都将包含已删除字段的孤立数据。但他们留在那里,从现在开始将被忽略。
修改字段名称
- 以上两者的结合;新名称将被视为新字段,旧字段将被忽略和孤立。
这个假设正确吗?