您能否分享一下您如何在MongoDB中实现数据版本控制?(我问过关于Cassandra的类似问题.如果你有任何想法,哪个数据库更好,请分享)
假设我需要在简单的地址簿中对记录进行版本控制.(地址簿记录存储为平面json对象).我期待历史:
我正在考虑以下方法:
创建新的对象集合以存储记录的历史记录或对记录的更改.它将为每个版本存储一个对象,并引用地址簿条目.这些记录如下:
{
'_id': 'new id',
'user': user_id,
'timestamp': timestamp,
'address_book_id': 'id of the address book record'
'old_record': {'first_name': 'Jon', 'last_name':'Doe' ...}
}
可以修改此方法以存储每个文档的版本数组.但这似乎是没有任何优势的较慢的方法.
将版本存储为附加到通讯簿条目的序列化(JSON)对象.我不确定如何将这些对象附加到MongoDB文档.也许是一个字符串数组.(使用CouchDB进行简单文档版本控制后建模)
您能否分享一下您如何在Cassandra中实现数据版本控制的想法?
假设我需要在简单的地址簿中对记录进行版本控制.(地址簿记录存储为ColumnFamily中的行).我期待历史:
我正在考虑以下方法:
将地址簿转换为超级列族并将多个版本的地址簿记录存储在一行(按时间戳)键为超级列.
创建新的超级列族以存储旧记录或更改记录.这种结构如下:
{'地址簿行键':{'时间戳1':{'名字':'新名称','由'修改':'用户ID',},
'time stamp2': {
'first name': 'new name',
'modified by': 'user id',
},
},
Run Code Online (Sandbox Code Playgroud)
'另一个地址簿行键':{'时间戳':{....
将版本存储为新ColumnFamilly中附加的序列化(JSON)对象.将版本集表示为行,将版本表示为列.(使用CouchDB进行简单文档版本控制后建模)
我们有一个购物车,如下图所示,设置运行良好,除了一个致命的缺陷.如果您下订单该订单与产品相关联,那么如果我在您购买产品后更新产品,我就无法向您展示您希望产品在购买时的样子(包括价格).这意味着我们需要版本控制.

我目前的计划是,在创建新产品或变体或编辑现有产品或变体时,在数据库中创建产品或变体的副本.购买时,将订单链接到版本,而不是产品.
这似乎相当简单,除了我可以看到的,我们不需要版本的唯一事情是类别(因为没有人关心它的类别).所以我们需要版本:
我目前的想法是,
注意: 创建产品时,也会创建默认变体,但无法删除.
所以最终结构看起来像全尺寸

现在这一切看起来都很棒,除非它看起来像是一堆重复数据,例如,如果我们更新产品,我们会复制变体,即使它们插入后也不会更新.此外,这似乎很多工作.
有没有更好的方法呢?
mysql database versioning database-design database-versioning