HBase中包含列簇(column family)的概念.列簇本质上是列的存储容器.一张表可以有一个或多个列簇.每个列簇都有自己的HFile结婚,而且在执行合并操作时,同一个表的其他列簇不受影响

在很多实用案例中,一张表不需要多个列簇.如果一张标中国的一部分列操作完成,或者变化频率与其他列存在显著不同,则可以使用一个以上的列簇.

比如,HBase 表包含两列:列1每行包含400字节,而列2每行包含20个字节.现在我们假设列1的值只设置一次,,不会改变,但是列2的值要经常改变.另外,从访问模式上看,对列2调用的get请求远多于针对列1 的get函数.

这种情况下,使用两个列簇更好,原因如下 :

  • 降低合并成本

    如果有两个独立的列簇,那么包含列2的列簇会经常刷新memstore,所以会产生较小的合并.因为列2在其自身的列簇中,所以HBase只需要合并总记录数中的5%的数据,因此合并对性能的影响更小

  • 更好的使用数据块存储

    从HBase中检索数据时,附近(位于同一个HBase缓存中)的记录会拉入数据块缓存中.如果列1和列2在同一个列簇中,每次对列2调用get请求时都会把两列数据拉倒缓存中.缓存包含了列1 的数据,而列1中的数据接受的get请求非常少,使用的频率也非常低,这就导致了不理想的缓存分布.使用列1和列2位于不同列簇,会导致缓存中填充的数据仅来自于列2,因此增加了随后对列2调用get请求的高速缓存命中率

最新文章

  1. python案例-用户登录
  2. Complete the Sequence[HDU1121]
  3. 在Apache下发布ASP.NET程序
  4. 浅谈Bootstrap自适应功能在Web开发中的应用
  5. AIX 第3章 指令记录
  6. <转+改>Web测试中关于登录的测试
  7. java集合 collection-list-vector
  8. Using FireMonkey Layouts
  9. ☀【CSS3】icon
  10. 构建WDK驱动出现fatal error U1087: cannot have : and :: dependents for same target
  11. Vuex随笔
  12. 给指针malloc分配空间后就等于数组吗?【转】
  13. 团队作业8——Beta 阶段冲刺5th day
  14. 微信小程序生成带参数的二维码 小程序二维码
  15. C# Quartz定时任务corn时间设置详解
  16. JQ attr prop 区别
  17. neo4j的配置文件(图文详解)
  18. ubuntu 设置静态ip地址不生效问题
  19. MySQL数据类型和运算符
  20. 2018-2019 2 20165210 《网络对抗技术》Exp5 MSF基础

热门文章

  1. udb主从不同步排错
  2. 简单的GCC语法: 弄清gcc test.c 与 gcc -c test.c 的差别
  3. SQLSERVER2008 内存占用高的处理方式
  4. MySql查看时间
  5. 并不对劲的bzoj4001:loj2105:p3978:[TJOI2015]概率论
  6. centos7 追加python3 + 使用pip + virtualenv
  7. 【spring Boot】spring boot获取资源文件的三种方式【两种情况下】
  8. 深入理解计算机系统 第十章 系统级I/O 第二遍
  9. js获取图片信息
  10. ES6基础之——get 与 set