これは私の使用例です。カサンドラで更新後の古いバージョンのデータを選択
私は次のクエリとのCassandraのデータの行を挿入した:私は、新しい値を持つ1つの行を更新
INSERT INTO TableWide1 (UID, TimeStampCol, Value, DateCol) VALUES ('id1','2016-03-24 17:54:36',45,'2015-03-24 00:00:00');
。
update TableWide1 set Value = 46 where uid = 'id1' and datecol='2015-03-24 00:00:00' and timestampcol='2016-03-24 17:54:36';
ここで、このデータのすべてのバージョンをCassandraから見たいと思います。私はHBaseで知っている、これはかなり簡単ですが、カサンドラではこれも可能ですか?
私はwritetime()を使用して少し調べましたが、新しく更新されたデータの最新の時刻を示しています。これはwhere節でも使用できません。
これは私のスキーマがどのように見えるかされています
CREATE TABLE TableWide1(
UID varchar,
TimeStampCol timestamp,
Value double,
DateCol timestamp,
PRIMARY KEY ((UID,DateCol), TimeStampCol)
);
ので、古いデータがまだカサンドラに存在するという事実を考えると、この技術的には可能でしょうか?最終的にパーティションの限界に達しますので、しかし
CREATE TABLE table_wide (
UID varchar,
TimeStampCol timestamp,
Value double,
PRIMARY KEY ((UID), TimeStampCol)
);
ザッツ一般的に悪い:あなたのパーティションが文句を言わない広すぎる取得する場合
いいえ、カサンドラは他のBig Tableの実装のようにセルの履歴を保持しません。 – Ralf
必要に応じて手動で行う必要があります。私は私のテーブルの1つでそれを持っています。CMSでページの新しいリビジョンを作成するたびに、別のエントリとして保存します。そうすれば、どのバージョンにもアクセスできます。 –