12

おそらく似たような質問がたくさんありますが、私のシナリオには答えていません (少なくとも私は要点を理解できません)。

  • たとえば、HBase に 4 つの列ファミリーを持つテーブルがあるとします。主な理由は、各列ファミリーの VERSIONS 属性が異なる (非常に異なる) ことです。

  • すべてのファミリのすべての列は、大きなデータ (フルテキストなど) を格納していませんが、平均 1 KB (長い識別子、いくつかの短い文字列、整数など) を格納しています。

  • いくつかの方法でデータにアクセスする必要があります。列ファミリーごとにスキャンして取得する、特定の行のすべてのセルをバージョン (特定のバージョンまたは範囲) ごとに取得する、最後に、特定の行のすべての列の最新バージョンを取得する.

では、このシナリオでは、4 つの列ファミリーを持つことの欠点は何ですか? 読み取りは (行がメモリ内にない場合) 異なるストア ファイルで動作するため、効率が低下しますか?

4

4 に答える 4

13

HBase の列ファミリーの数には制限があります。列ファミリーごとに 1 つの MemStore (Hfiles に書き込む前に新しいデータを格納する書き込みキャッシュ) があり、1 つがいっぱいになると、それらはすべてフラッシュされます。

列ファミリーを追加すればするほど、作成される MemStore が増え、Memstore のフラッシュがより頻繁になります。パフォーマンスが低下します。

于 2016-04-20T19:53:36.480 に答える
7

Apache HBase wiki によると、Hbase は 2 つまたは 3 つの列ファミリーを超えるパフォーマンスの問題に直面します。

于 2012-10-08T05:48:49.343 に答える