次のユース ケースの Cassandra スキーマを定義しようとしています: 一意のユーザー セットごとにグループを定義します。クエリ パターンでは、入力としての一連のユーザーに基づいてグループが存在するかどうかをすばやく確認する方法が必要です。
1 に答える
与えられた情報が非常に少ないため、ここでいくつかの最良のケースの仮定を行います. 固定長の 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」を作成し、「グループ」列ファミリーでヒットを探してみてください。
グループあたりのユーザー数が多い大規模なユーザー セットを使用している場合は、別のアプローチが必要になる場合があります。
編集:グループを形成できるユーザーの最大数を教えてください。クライアントは、クエリの一部としてこれらすべてのユーザーのリストを渡す必要があると思います。