デザイン上の理由からTTLがカウンターで利用できないことを知っています。これについてはhttps://issues.apache.org/jira/browse/CASSANDRA-2103とその他のよくある質問がありますが、私は完全にもっともらしいものを紛失しています):カッサンドラとカウンタータイプで古いデータをクリーニングする
カサンドラのカウンターの有効期限はどのようにエレガントに扱いますか?
例の使用例:特定の日のページビュー。我々は
がTABLEのページビュー(ページvarchar型、日付varchar型、カウンタビュー、PRIMARY KEY(ページ、日付))CREATEのようなテーブルがあるかもしれません。このため
。
1年後に私たちが特定の1日に持っていたビューの数はそれほど関連性がありません(代わりにビュー/月テーブルなどに集約されている可能性があります)私たちのデータベースに何の理由もありません。通常、これにTTLを入れて、Cassandraが私たちのためにそれを扱えるようにします - エレガント!しかし、カウンターテーブルにTTLを使用することはできません。これはオプションではありません。
whereキーで両方のキーを定義する必要があるため、pageviewsからdate> 'xxxx'のdeleteを実行することはできません。 最初にすべてのページを照会してから、個々の削除を発行する必要があります。これはスケーラブルではありません。 これを達成するための適切な方法はありますか?
ありがとうございます。まあ、私が言及したように仕事の清掃の問題は、ページIDを知っていなければならないということです。つまり、それらをすべて覚えておく必要があります。私の場合はどれが巨大なことができますか?あなたは、日付> = 'xxx'のページビューから削除するだけではいけません。私はこれがcassandraに対する厳しい制限であり、ttlとcounterの行を使用する正当なユースケースがあるように感じます。いくつかのテストを実行した後、プライマリキーでdistinctを選択すると、実際にはかなり速くなります。一定期間にわたって発行されるdelete文の量が指数関数的に増加するだけです。 – asteck007