0

私の問題文は次のとおりです:-

   I have a college , every college have some students , 
every student has some data(for eg student id , student name , class etc) related to him.

私が答えたい質問の種類は次のとおりです:-

a) get all students of a particular college.(student id and name only not the other data)
b) get data of a student of a college given his ID and college name .
c) create a student to a college.(ADD a new student in college).
d) delete a student of a particular college given his id and college name .
e) UPdate a students data of a particular college given his ID and college name .

私は次のスキーマを考えました:-

row_key を college$student_id (大学と学生 ID の連結) として使用し、値を JSON の学生のデータとして使用する 1 つの列ファミリー。行キーとして大学を持ち、コンマ区切りの文字列として連結された学生 ID と学生名 (学生名は最初の CF の学生データの一部) のリストを含む 1 つの列を持つ別の列ファミリー。(特に最初のクエリの場合)

私はそれですべての質問に答えることができます。

2番目に考えられるのは、大学がrow_key、列名がstudent_id、値が学生データ(学生名も含む)の列ファミリーです。この CF 自体で、すべてのクエリに答えることができます。

しかし、特定の大学のすべての学生を取得する効率の点で、クエリはどのように動作しますか。

最初のアプローチで2番目の列ファミリーを保持している学生IDと学生名のみが必要な場合でも、行全体がメモリに取り込まれることを読みました。特定のIDと大学の学生が必要な場合でも、最初のアプローチで最初のCFを持っているものを提供するために、メモリ内の行全体が必要になります

第二に、このアプローチでは、ホットスポットの問題が発生する可能性があります。

特定の ID と大学の学生が必要な場合でも、最初のアプローチで最初の CF を取得するために、メモリ内の行全体が必要になります。

私が 2 番目のアプローチを考えていた唯一の理由は、クラスター内の複数のノードから複数の取得を行う必要がある次の新しいクエリのためでした。

学生の ID のリストを指定して、特定の大学のすべての学生を取得します。

私の最初のアプローチでは、大学のデータがノード全体に分散されるため、多くのノードから取得する必要があります。一方、大学が鍵であるため、2番目のアプローチでは、1つのノード自体から取得します。

しかし、2 番目のアプローチには、上で説明した他の多くの欠点がありました。

より良いアプローチは何ですか、または最初のアプローチは正しく効率的ですか?

4

1 に答える 1