HBase中为什么要有Column Family
2013-02-21 17:57
204 查看
在HBase中,数据是按Column Family来分割的,同一个Column Family下的所有列的数据放在一个文件(为简化下面的描述在此使用文件这个词,在HBase内部使用的是Store)中。
为什么要这样子做呢?
HBase本身的设计目标是支持稀疏表,而稀疏表通常会有很多列,但是每一行有值的列又比较少。
如果不使用Column Family的概念,那么有两种设计方案:
1.把所有列的数据放在一个文件中(也就是传统的按行存储)。那么当我们想要访问少数几个列的数据时,需要遍历每一行,读取整个表的数据,这样子是很低效的。
2.把每个列的数据单独分开存在一个文件中(按列存储)。那么当我们想要访问少数几个列的数据时,只需要读取对应的文件,不用读取整个表的数据,读取效率很高。然而,由于稀疏表通常会有很多列,这会导致文件数量特别多,这本身会影响文件系统的效率。
而Column Family的提出就是为了在上面两种方案中做一个折中。HBase中将一个Column Family中的列存在一起,而不同Column Family的数据则分开。
由于在HBase中Column Family的数量通常很小,同时HBase建议把经常一起访问的比较类似的列放在同一个Column Family中,这样就可以在访问少数几个列时,只读取尽量少的数据。
参考:
http://hbase.apache.org/book/regions.arch.html
http://research.google.com/archive/bigtable-osdi06.pdf
为什么要这样子做呢?
HBase本身的设计目标是支持稀疏表,而稀疏表通常会有很多列,但是每一行有值的列又比较少。
如果不使用Column Family的概念,那么有两种设计方案:
1.把所有列的数据放在一个文件中(也就是传统的按行存储)。那么当我们想要访问少数几个列的数据时,需要遍历每一行,读取整个表的数据,这样子是很低效的。
2.把每个列的数据单独分开存在一个文件中(按列存储)。那么当我们想要访问少数几个列的数据时,只需要读取对应的文件,不用读取整个表的数据,读取效率很高。然而,由于稀疏表通常会有很多列,这会导致文件数量特别多,这本身会影响文件系统的效率。
而Column Family的提出就是为了在上面两种方案中做一个折中。HBase中将一个Column Family中的列存在一起,而不同Column Family的数据则分开。
由于在HBase中Column Family的数量通常很小,同时HBase建议把经常一起访问的比较类似的列放在同一个Column Family中,这样就可以在访问少数几个列时,只读取尽量少的数据。
参考:
http://hbase.apache.org/book/regions.arch.html
http://research.google.com/archive/bigtable-osdi06.pdf
相关文章推荐
- Understanding HBase column-family performance options
- 在Hbase中选择多少个column family才合适呢?
- HBase 列族数量为什么越少越好
- 为什么HBase数据查询快速
- Hbase为什么会出现
- 为什么MyISAM会比Innodb的查询速度快。 btree 和 lsm(hbase) ,cola 树(tokuDB)选型和原理
- HBase入门实例: Table中Family和Qualifier的关系与区别
- 高级column family 配置
- Mysql数据导入到Hbase报错:org.apache.hadoop.hbase.HTableDescriptor.addFamily
- HBase在单Column和多Column情况下批量Put的性能对比分析
- extjs combobox column布局为什么折叠在一起
- Hbase 查询为什么快
- HBase--DependentColumnFilter(参考例过滤器 )详解
- hbase的过滤 Filter 之SingleColumnValueFilter
- extjs combobox column布局为什么折叠在一起
- HBase入门实例: Table中Family和Qualifier的关系与区别
- hbase架构原理之region、memstore、hfile、hlog、columm-family、colum、cell
- hbase 为什么查询比较快
- Cassandra源代码分析(一)Table和ColumnFamilyStore
- extjs combobox column布局为什么折叠在一起