相关疑难解决方法(0)

在MongoDB中实现数据版本控制的方法

您能否分享一下您如何在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进行简单文档版本控制后建模)

database-versioning mongodb

289
推荐指数
6
解决办法
11万
查看次数

在Cassandra中实现数据版本控制的方法

您能否分享一下您如何在Cassandra中实现数据版本控制的想法?

假设我需要在简单的地址簿中对记录进行版本控制.(地址簿记录存储为ColumnFamily中的行).我期待历史:

  • 将很少使用
  • 将一次性使用以"时间机器"的方式呈现它
  • 单个记录的版本不会超过几百个.
  • 历史不会过期.

我正在考虑以下方法:

  • 将地址簿转换为超级列族并将多个版本的地址簿记录存储在一行(按时间戳)键为超级列.

  • 创建新的超级列族以存储旧记录或更改记录.这种结构如下:

    {'地址簿行键':{'时间戳1':{'名字':'新名称','由'修改':'用户ID',},

    'time stamp2': {
            'first name': 'new name',
            'modified by': 'user id',
        },
    },
    
    Run Code Online (Sandbox Code Playgroud)

    '另一个地址簿行键':{'时间戳':{....

  • 将版本存储为新ColumnFamilly中附加的序列化(JSON)对象.将版本集表示为行,将版本表示为列.(使用CouchDB进行简单文档版本控制后建模)

database-versioning cassandra

20
推荐指数
1
解决办法
1万
查看次数

在PostreSQL中实现数据版本控制的方法

您能否分享一下您如何在PostgreSQL中实现数据版本控制?(我已经问过关于CassandraMongoDB的类似问题.如果您有任何想法,哪个数据库更好,请分享)

假设我需要在简单的地址簿中对记录进行版本控制.为简单起见,地址簿记录存储在一个表中而没有关系.我期待历史:

  • 将很少使用
  • 将一次性使用以"时间机器"的方式呈现它
  • 单个记录的版本不会超过几百个.
  • 历史不会过期.

我正在考虑以下方法:

  • 创建一个新的对象表来存储记录的历史记录,其中包含地址簿表的模式副本,并将时间戳和外键添加到地址簿表中.

  • 创建一种架构较少的表来存储对通讯录记录的更改.这样的表包括:AddressBookId,TimeStamp,FieldName,Value.这样我只存储记录的更改,我不必保持历史表和地址簿表同步.

  • 创建一个表来存储seralized(JSON)通讯簿记录或更改通讯簿记录.这样的表看起来如下:AddressBookId,TimeStamp,Object(varchar).同样这是架构,所以我不必保持历史表与地址簿表同步.(这是使用CouchDB进行简单文档版本控制后建模的)

postgresql database-versioning

13
推荐指数
1
解决办法
6153
查看次数