代码之家  ›  专栏  ›  技术社区  ›  Piotr Czapla

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

  •  19
  • Piotr Czapla  · 技术社区  · 15 年前

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

    假设我需要在一个简单的通讯簿中修改记录。(通讯簿记录存储为列族中的行)。 我期望历史:

    • 很少使用
    • 将一次性使用,以“时间机器”的方式呈现
    • 一张唱片的版本不会超过几百个。
    • 历史不会过期。

    我正在考虑以下方法:

    • 将通讯簿转换为超级列族,并将多个版本的通讯簿记录存储在一行中(按时间戳)作为超级列。

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

      { '通讯簿行键':'{ '时间stamp1':'{ '名字':'新名称', '修改者':'用户ID', }

      'time stamp2': {
              'first name': 'new name',
              'modified by': 'user id',
          },
      },
      

      '另一个通讯簿行键':'{ “时间戳”:{ …

    • 将版本作为序列化(JSON)对象存储在新列中。将版本集表示为行,版本表示为列。(模仿后) Simple Document Versioning with CouchDB )

    2 回复  |  直到 15 年前
        1
  •  8
  •   Tyler Hobbs    15 年前

    {'address_book_18f3a8':
      {1290635938721704: {'entry1': 'entry1_stuff', 'entry2': 'entry2_stuff'}},
      {1290636018401680: {'entry1': 'entry1_stuff_v2', ...},
      ...
    }
    

    {'address_book_18f3a8': {1290635938721704: some_uuid1, 1290636018401680: some_uuid2...}}
    

        2
  •  1
  •   azi    12 年前