0

次のユース ケースの Cassandra スキーマを定義しようとしています: 一意のユーザー セットごとにグループを定義します。クエリ パターンでは、入力としての一連のユーザーに基づいてグループが存在するかどうかをすばやく確認する方法が必要です。

4

1 に答える 1

2

与えられた情報が非常に少ないため、ここでいくつかの最良のケースの仮定を行います. 固定長の N ビット ハッシュ (uid と呼びましょう) を使用してユーザーを識別する独自の方法があると想定しています。また、グループ内の最大ユーザー数 (MAX) は (MAX < 64*1024*8 / n) になると想定しています。これは、Cassandra のキーの長さが 64KB に制限されているためです)。実際には、最大 32,000 人のユーザーがいる場合、ユーザーの最大数まで任意のグループを形成できることを意味します。

上記を考えると、uid の並べ替えられた連結は、グループを識別する簡単な方法であり、グループはそのようにキー付けできると言えます。

その場合、ユーザーのクエリ セットによって形成された並べ替えられた連結キーによる 1 回のルックアップで、ヒットした場合に答えが得られます。

Let's say 
key of G1 = u04,u08,u10,u12;
key of G2 = u01,u11,u12;
...
Key of GN = u09,uxx,uyy;

ユーザー u04、u08、u03 を含むグループが存在するかどうかを検索する場合は、キー「u03、u04、u08」を作成し、「グループ」列ファミリーでヒットを探してみてください。

グループあたりのユーザー数が多い大規模なユーザー セットを使用している場合は、別のアプローチが必要になる場合があります。

編集:グループを形成できるユーザーの最大数を教えてください。クライアントは、クエリの一部としてこれらすべてのユーザーのリストを渡す必要があると思います。

于 2013-01-25T22:35:19.803 に答える