Cassandraでデータバージョニングをどのように実装するかについての考えを共有できますか?
単純な名簿のレコードをバージョン管理する必要があるとします。(名簿レコードは、ColumnFamilyに行として保存されます)。私はその歴史を期待しています:
- 使用頻度は低くなります
- 「タイムマシン」方式でそれを提示するために一度に使用されます
- 1つのレコードに対して数百を超えるバージョンはありません。
- 履歴は期限切れになりません。
私は次のアプローチを検討しています:
アドレス帳をスーパーカラムファミリに変換し、複数のバージョンのアドレス帳レコードをスーパーカラムとして(タイムスタンプで)キー設定された1つの行に保存します。
新しいスーパーカラムファミリを作成して、古いレコードまたはレコードへの変更を保存します。このような構造は次のようになります。
{'名簿行キー':{'タイムスタンプ1':{'名':'新しい名前'、'変更者':'ユーザーID'、}、
'time stamp2': { 'first name': 'new name', 'modified by': 'user id', }, },
'別の名簿行キー':{'タイムスタンプ':{...。
新しいColumnFamillyに添付されたシリアル化された(JSON)オブジェクトとしてバージョンを保存します。バージョンのセットを行として、バージョンを列として表します。( CouchDBを使用した単純なドキュメントのバージョン管理をモデルにしています)