使用例を次に示します。
最後の N (固定バケット サイズとして 1000 としましょう) のユーザー アクションを、すべての詳細を timeuuid ベースの列に格納する必要があります。
通常、各ユーザーのアクションは、ユーザー ID が行キーである "UserAction" 列ファミリーに既にあり、アクションは timeuuid 列にあります。列名と同じ timeuuid と列値としてユーザー ID を持つすべてのアクションを格納する "AllActions" 列ファミリを使用することもできます。これは基本的に関係列ファミリーですが、残念ながらユーザー アクションの詳細はありません。この列ファミリーを使用したクエリは、ランダムなパーティショナーのためにコストがかかると思います。一方、すべての詳細を「AllActions」CF に格納すると、cassandra はその大きな行をある時点で適切に処理できなくなります。これが、固定数のtimeuuidベースの列にすべての詳細を含む最後のNユーザーアクションを保存したい理由です。
たぶん、このユースケースに対してより良い設計ソリューションがあるかもしれません...私はそれを聞くのが好きです...
そうでない場合、問題は、cassandra (CQL を使用) で固定数の (timeuuid) 列を効果的に実装する方法です。
挿入後、cql の DELETE で何らかの範囲サポートがあれば、古い (オーバーフローした) 列を削除できます。私の知る限り、これに対するサポートはありません。
それで、何か考えはありますか?前もって感謝します...