[解決済み] なぜHbaseにカラムファミリーが必要なのか?
質問
コラムファミリーを持つ理由は何ですか?例
シナリオ1 :
Table Row-Key ColumnFamily1 ColumnFamily2 ColumnFamily3
シナリオ2 :
Table1 Row-Key Column1...ColumnN
Table2 Row-Key Column1...ColumnN
Table3 Row-Key Column1...ColumnN
シナリオ1では、1つのテーブルは多くの列ファミリーを持つことができますが、すべての列ファミリーは別々に保存されます。では、なぜカラムファミリという概念そのものがあるのでしょうか?なぜ、単純にシナリオ2だけではダメなのでしょうか?シナリオ2でも、HBaseが提供する機能をブロックしているわけではありません。動的なカラムを後から追加することも可能です(他の機能も)。
私の唯一の懸念は、カラムファミリーが別々に保存されている場合、なぜそれらが同じテーブルにあるのか、ということです。私は、カラムファミリーを持つ意図は何か(どんな問題を解決するのか)にしか興味がないのですが。
どのように解決するのですか?
テーブルの定義は、論理的に一緒に属しているデータのための組織の単位です。 列ファミリは、アクセスパターンに基づいてパフォーマンスを最適化するために、テーブル内に部分構造を作成する方法を提供します(これが解決する問題です)。
現実的には、テーブル内のカラムファミリーは別々のファイルに格納されますが、HBaseがある行のすべての値を同じリージョンに格納するという意味では、それらは「近接」して格納されることになります。これには、カラムファミリーの別ファイルも含まれる。 これらは別々のファイルに格納されていますが、同じリージョンサーバによって所有されています。
対照的に、データを異なるテーブルに分割した場合、同じ "行" の一部が異なる HBase リージョンに存在し、それらにアクセスする際にクラスタ内の異なる Region Server で検索するオーバーヘッドを支払うことになるのです。
そのため、データの一部をカラムファミリーではなく別のテーブルに置くと、データの管理が難しくなるだけでなく、HBaseが持つ多くのパフォーマンス上のメリットを失うことになります。
関連
-
[解決済み】Javaパッケージが存在しないエラー
-
[解決済み】指定された子にはすでに親がいます。先に子の親に対してremoveView()を呼び出す必要がある(Android)
-
[解決済み】Javaクラスの "型に解決できない"
-
[解決済み】HTTPステータス500 サーブレットクラスのインスタンス化エラー [重複]。
-
[解決済み] この2回(1927年)を引き算すると、なぜおかしな結果になるのでしょうか?
-
[解決済み] なぜパスワードにはStringではなくchar[]が好まれるのですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] B "の印刷が "#"の印刷より劇的に遅いのはなぜですか?
-
[解決済み] リフレクションとは何か、なぜ有用なのか?
-
[解決済み】なぜJavaの+=, -=, *=, /=複合代入演算子はキャスティングを必要としないのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】"実引数リストと形式引数リストの長さが異なる"
-
[解決済み】代入の左手は必ず変数 CharAt
-
[解決済み】popBackStack()とreplace()の操作はどう違うのですか?
-
[解決済み】不正なエスケープ文字"㊧"について
-
[解決済み】 java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver [重複]。
-
[解決済み】Java JDK - doubleからintへの非可逆変換の可能性
-
[解決済み] メソッドがそのスーパークラスのメソッドをオーバーライドしない
-
[解決済み】ソースルート外のJavaファイル intelliJ
-
[解決済み] Hide Utility Class Constructor : ユーティリティクラスはパブリックまたはデフォルトコンストラクタを持つべきではありません。
-
[解決済み】予期しない型エラー