最近HadoopとHBaseについて読んでいて、この用語に出くわしました-
HBaseは、オープンソースの分散型sparse、列指向ストアです。
スパースとはどういう意味ですか? スパース行列 と関係がありますか?効率的に保存できるデータ型の性質だと思いますので、もっと知りたいと思います。
通常のデータベースでは、行はまばらですが、列はまばらではありません。行が作成されると、そのフィールド(行と列の共通部分に割り当てられたストレージであるフィールド)に値が存在するかどうかに関係なく、すべての列にストレージが割り当てられます。
これにより、固定長の行により、読み取りおよび書き込み時間が大幅に改善されます。可変長データ型は、ポインターの類似物で処理されます。
スパース列はパフォーマンスの低下を招き、NULLを示すために必要なスペースは、非常に大きな非連続したストレージ。
ストレージは安いです。パフォーマンスはそうではありません。
ストレージレベルでは、すべてのデータがキーと値のペアとして保存されます。各ストレージファイルにはインデックスが含まれているため、各Key-Valueの開始位置と長さがわかります。
この結果、非常に長いキー(完全なURLなど)があり、そのキーに関連付けられている列が多い場合、スペースを無駄にする可能性があります。これは、圧縮をオンにすることでいくらか改善されます。
参照: http://www.larsgeorge.com/2009/10/hbase-architecture-101-storage.html
hBaseストレージの詳細については
HBaseに関するスパースは、実際、スパース行列と同じコンテキストで使用されます。これは基本的に、nullのフィールドが(スペースの観点から)自由に格納できることを意味します。
このテーマについてもう少し詳しく触れているブログ投稿をいくつか見つけました。
http://blog.rapleaf.com/dev/2008/03/11/matching-impedance-when-to-use-hbase/
http://jimbojw.com/wiki/index.php?title=Understanding_Hbase_and_BigTable
私が見た中で最高の記事で、多くのデータベース用語も説明しています。
テーブルにデータを格納する方法は2つあり、スパースデータとデンスデータのいずれかになります。スパースデータの例。
2015年1月から2015年11月までの従業員によるトランザクションの売上データを含むテーブルで操作を実行する必要があるとします。クエリをトリガーした後、従業員がトランザクションを行わなかった場合、上記のタイムスタンプ条件を満たすデータを取得し、行全体が返されます。ブランク
例えば。 EMPNo名前製品日付数量
1234 Mike Hbase 2014/12/01 1
5678
3454 Jole Flume 2015/09/12 3
empno5678の行にはデータがなく、残りの行にはデータが含まれています。空白の行と入力された行を含むテーブル全体を考慮すると、スパースデータと呼ぶことができます。
入力されたデータのみを取得する場合、それは高密度データと呼ばれます。