Supose我有一个运行的mongodb实例(也使用mongo分片),每秒有数百万个数据和数千个事务,我使用morphia作为我的对象文档mappe。 因为我们希望通过错误修复,更新和...来保持项目的活力,在某些时候,改变数据模型将是不可避免的。考虑下面的例子: 我有一个持久的类(模型):
private EventAsset{
@Id
private String id;
@Constraints.Required
private String time;
private EventType eventType;
}
现在我们已经确定EventAsset.class应该更改为:
private EventAsset{
@Id
private String id;
@Constraints.Required
private String time;
@Constraints.Required
private String assetName;
}
正如您所看到的那样eventType
已被删除,并且添加了必需assetName
,此更改将阻止应用程序启动。我能想到的唯一可能的主要解决方案是
这种情况似乎是每个(或至少每隔几个月左右)每个实时项目的问题。那么这个问题有一个公认的解决方案吗?你有什么建议?
答案 0 :(得分:1)
删除@Constraints.Required
应该不是问题,添加新属性也没问题。您的应用无法启动,因为@Constraints.Required
- 是否来自Play框架的注释?
我认为这个要求在关系数据库中几乎是一样的 - 添加一个新列,使其成为必需,并且它将不再起作用。
我会看到可能的解决方案: