360HBase二级索引方案学习总结
2015-10-12 10:15
330 查看
在今年的北京QCon大会上,360公司的系统部技术经理赵健博在演讲中公布了360公司的HBase二级索引方案,这一方案的提出将比华为HBase二级索引更好的解决了Hbase的多维实时查询问题。它的核心思想是保证了索引和数据在同一region上,减少了IO通信,提升了HBase的读性能,并且无非修改HBase源码,实现更加简单。
360HBase二级索引公布的演讲视频:http://www.infoq.com/cn/presentations/qihoo360-hbase-two-stage-index-design-and-practice。
经过自己对其一段时间的学习和研究,列出一些总结如下:
1、设计思想
索引的思想依然是倒排索引的思想,即将需要查询的列作为索引数据的Rokwey,查询列所在记录的Rowkey作为索引数据的value。
2、索引设计
该方案是将索引与数据放在了同一个Region的不同family里。索引的Rowkey首字段是Region的startKey,它保证了索引和数据在同一个Region里,接下来是索引的类型INDEX,然后是建索引的列,最后是该列所在的记录的RowKey,索引的value是用来解析索引RowKey的反序列化信息。
3、写路径
几乎没变化。写数据时,先看索引说明里,看哪些列需要建索引,然后给这些列建立索引,将索引和数据都放在同一个put对象中。
4、读路径
先需要创建一个scanner,这里扩展了scanner对象,下面的一个框图代表一个Region。查询时先通过查询条件建立一棵检索树,然后通过检索树去找RowKey,最后通过RowKey去原表seek数据。
5、分裂
针对索引,产生一次分裂后,第一个daughter没有任何变化信息,第二个daughter的索引rowkey需要变更一下。
6、与华为Hbase二级索引方案的比较
7、性能
7.1 单并发写入性能
写代价的损失很小。
7.2 检索性能数据
360HBase二级索引公布的演讲视频:http://www.infoq.com/cn/presentations/qihoo360-hbase-two-stage-index-design-and-practice。
经过自己对其一段时间的学习和研究,列出一些总结如下:
1、设计思想
索引的思想依然是倒排索引的思想,即将需要查询的列作为索引数据的Rokwey,查询列所在记录的Rowkey作为索引数据的value。
2、索引设计
该方案是将索引与数据放在了同一个Region的不同family里。索引的Rowkey首字段是Region的startKey,它保证了索引和数据在同一个Region里,接下来是索引的类型INDEX,然后是建索引的列,最后是该列所在的记录的RowKey,索引的value是用来解析索引RowKey的反序列化信息。
3、写路径
几乎没变化。写数据时,先看索引说明里,看哪些列需要建索引,然后给这些列建立索引,将索引和数据都放在同一个put对象中。
4、读路径
先需要创建一个scanner,这里扩展了scanner对象,下面的一个框图代表一个Region。查询时先通过查询条件建立一棵检索树,然后通过检索树去找RowKey,最后通过RowKey去原表seek数据。
5、分裂
针对索引,产生一次分裂后,第一个daughter没有任何变化信息,第二个daughter的索引rowkey需要变更一下。
6、与华为Hbase二级索引方案的比较
7、性能
7.1 单并发写入性能
写代价的损失很小。
7.2 检索性能数据
相关文章推荐
- git 创建分支并切换
- 白石老人
- mvn生成runnablejar 的方法
- Android不发版也能在线修Bug?——AndFix 框架
- 华为机试:查找字符串
- 【jQuery】判断浏览器类型和版本
- 三招让你的 APP 假装“更快”
- iOS抽奖转盘动画之转场动画与动画组
- 黑马程序员——Java语言的发展史
- Android学习之 面试资料整理[2]
- c++五种内存分配、堆与栈区别
- Git Flow
- 工业相机参数之帧率相关知识详解:
- Java中的小问题
- mvc的 404 处理
- 数字媒体技术3---wangronggang
- JS部分代码分享
- 再谈Java双括弧技巧:不规范的语法?
- C# Winform窗体自动运行隐藏
- 手工配置LVS