0

Hbaseが内部でどのように機能するかを理解するのを手伝ってください。

列の値は別のテーブルのキーを参照できますか?

例えば:

subjectId を外部キーとして持つ Student テーブルがあり、Subject テーブルが主キーとして id を持っているとします。Student と Subject を一緒にマッピングするにはどうすればよいでしょうか?

4

1 に答える 1

2

HBaseが内部でどのように機能するかを理解するのを手伝ってください。

これは、ここで完全に説明することはできません。詳細については、このリンクを参照してください。

列の値は別のテーブルのキーを参照できますか?

列は、同じテーブルまたは別のテーブルの別の行のキーを確実に格納できます。最初のテーブルからこの値を読み取ってから、行をフェッチするために 2 番目のテーブルに移動する必要があります (両方の行が異なるテーブルにある場合)。

例: 外部キーとして subjectId を持つ Student テーブルがあり、Subject テーブルが id を主キーとして持っているとします。Student と Subject を一緒にマッピングするにはどうすればよいでしょうか?

HBase を誤解しているようです。従来の RDBMS のようには機能しません。HBase を使用する場合、主キー、複合キー、または外部キーの概念はありません。ただし、行キーを主キーとして扱うことができます。行は、これらの行キーに基づいて辞書順にソートされます。

あなたの質問に戻ります。テーブルに 2 つの列ファミリー (1 つは学生用、もう 1 つは科目用) を持つことができます。このようにして、あるテーブルから別のテーブルに移動することなく、あらゆるものにアクセスできます。

HTH


あなたのコメントに応えて:

すべての列を一緒に含む列ファミリーが 1 つだけのテーブルを作成することもできます。このようなもの :

ここに画像の説明を入力

または、これら 2 種類のデータを分離したい場合は、次のように、学生関連データ用に 1 つ、科目関連データ用に 1 つの、2 つの列ファミリーを持つ 1 つのテーブルを作成できます。

ここに画像の説明を入力

学生ごとに一意になるため、学生 IDを行キーとして使用します。フェッチしたい場合:

1. 科目データ サイエンスに申し込んだすべての学生を取得します 。これを実現するには、columnvalue フィルターを使用します。

1. 特定の学生のすべての科目を一覧表示する:これは簡単です。その特定の行に乗るだけです。

学生が申請すると、科目ごとに列を追加し続けます。

于 2013-08-05T12:05:10.883 に答える