使用对象数据库时,如何处理对象模型的重大更改?

Dea*_*ane 8 google-app-engine objectdatasource nosql

如果使用对象数据库,当需要更改对象模型的结构时会发生什么?

例如,我正在玩Google App Engine.当我正在开发我的应用程序时,我意识到在某些情况下,我错误地命名了一个类,我想更改名称.我认为我需要巩固两个班级.

但是,我认为我不能,因为类的名称直观地绑定到数据存储区中,并且存在这些类名下存储的实际数据.

我认为从数据存储中抽象出对象模型的"旧方法"的好处是数据存储对对象模型一无所知 - 这只是数据.因此,您可以更改对象模型,只是以不同方式从数据存储区加载数据.

因此,一般来说,当使用与您的数据模型密切相关的数据存储时...您如何改变周围的事物?

Nic*_*son 2

如果您只关心类命名,则可以更改类名称而不更改类型(数据存储中使用的标识符):

class Foo(db.Model):
  @classmethod
  def kind(cls):
    return 'Bar'
Run Code Online (Sandbox Code Playgroud)

如果你想重命名你的类,只需实现kind()上面的方法,并让它返回旧的类名。

如果您需要更改数据存储中数据的实际表示形式,则必须运行 MapReduce更新旧数据。