HBase二级索引查询引擎实现探讨

来源 :科技风 | 被引量 : 0次 | 上传用户:abc747665
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:本文主要对如何基于HBase构建二级索引查询引擎进行研究探讨。首先分析说明了HBase查询灵活性上存在的问题,接着简单介绍二级索引的含义,从而引入本文讨论的主题,最后给出较详细的查询引擎总体架构图及各核心功能模块的实现方案。
  关键词:二级索引;查询引擎;HBase
  HBase是一个分布式、列式数据库,因其具有高扩展性、高并发性、稳定性以及数据高安全性等优点,而被大多数分布式系统所使用。但其数据查询支持上较关系型数据库就要弱很多,只能通过完整的Rowkey进行get或按前缀模糊scan的方式进行,必要时再辅助以SingleColumnValueFilter、RowFilter、ValueFilter方式进一步对数据进行过滤。为了保证数据查询的效率,表设计时必须慎重考虑Rowkey的设计,但随着业务需求的变化,原先的Rowkey信息往往不能满足需要,此时只能通过降低查询性能或重新设计Rowkey并对历史数据重新导入以满足需求。接下來我们将要介绍的二级索引查询引擎,可以减小业务需求变化时引起Rowkey设计方案过时引起的查询问题。
  1 二级索引查询引擎
  1.1 什么是二级索引
  关系型数据库表的索引分为两类:主索引(聚集索引)和二级索引(非聚集索引)。主索引一般对应的是主键,而系统可以根据需要建立多个二级索引,辅助与提升查询性能。基于HBase实现的二级索引主数据Rowkey相当于主索引,而我们扩展出来的索引数据既是二级索引,借助二级索引可以实现查询条件非Rowkey组成部分的查询需求与提升查询性能。
  1.2 Coprocessor介绍
  一个功能再强大的系统都不能满足其所有使用者的一切需求。而Coprocessor就是HBase专门为用户提供扩展功能的一个途径。借助Coprocessor,用户可以根据自己实际需求定制出适合自己的功能,并借助HBase现有的框架体系实现高效运行。
  Coprocessor功能在0.92版本中引入,其支持两种协处理器:EndPoint和Observer。
  1.2.1EndPoint
  类似于关系型数据库的存储过程,使用者通过开发对应的客户端、服务端即可,通过在RegionServer上高效执行本地计算操作。
  1.2.2Observer
  类似于关系型数据库的触发器,用户通过它可以在服务端实现动作拦截进行特殊处理。
  1.3 二级索引查询引擎
  引擎架构图
  从引擎架构图可以看出,客户端通过原生的HTable类将数据put至RegionServer(以下简称RS),接着RS端Coprocessor的Observer功能对put/delete指令进行拦截,通过索引构造器生成事先配置的索引数据;查询则通过EndPoint来实现,客户端通过自定义API设置好查询条件,并提交到RS端,服务端首先分析客户端提交的条件信息,通过查询决策器选择最优的索引进行查询。下面我们对关键模块功能实现方案进行分析:
  1.3.1Rowkey设计
  二级索引的实现方案中,Region除了保留客户端put上来的主数据外,还需保留索引数据与主数据的对应关系,为了提升性能需要保证索引数据、主数据在同Region中,避免出现跨Region读写,因此索引数据可以参考以下规则设计:
  Region.startKey.indexName.indexValue.MainRowkey
  1.3.2索引构造器
  解析业务数据,根据预先加载的索引信息,从业务数据中提取索引字段值,并依次生成索引数据。
  1.3.3查询决策器
  根据预先加载的索引信息,从业务数据中提取索引字段,并分析查询条件,根据策略从已有的索引信息匹配最优的查询索引,如,某表存在以下两组索引:
  indexName1:fieldA
  indexName2:fieldA.fieldB
  客户端提交上来的查询条件为:fieldA=xxx and fieldB=yyyy and fieldC>=zzz…
  此时查询决策器根据最优策略选择indexName2索引进行查询。
  1.3.4索引查询
  通过二级索引获取主数据的过程相较传统的关系型数据库并没有多少区别,首先根据二级索引字段值找到索引数据,再通过索引数据获取主数据内容。
  1.3.5全表扫描
  对于设置了二级索引功能属性的表,Region保留有索引、主数据,实际运用过程中索引记录数将超过主数据,为了提升遍历业务数据的效率,须提提供只遍历主数据的功能。
  2 结语
  本文首先对HBase的功能进行简单描述后,重点分析说明HBase在查询灵活性上存在的问题,从而进入HBase二级索查询引擎的主题。接着较详细地说明Coprocessor核心功能与类型,最后给出查询引擎的架构图以及各核心功能的实现方案。HBase做为Apache重要的子项目之一,目前比较稳定,并且已有的功能可以满足大多数系统的需求,借助Coprocessor用户可以像本文所描述的二级查询引擎一样实现属于自己的功能。
  参考文献:
  [1][美]乔治.HBase权威指南.出版社:人民邮电出版社.
  [2][美]迪米达克.HBase实战.出版社:人民邮电出版社.
其他文献
近年来重庆城镇化进程中社区教育取得了许多可喜成绩,但也存在动力不足、责任不清、缺乏特色等问题,各级政府应通过加大宣传、创新管理、丰富内容、整合资源、加强保障等措施
摘 要:本文探讨了如何在大学物理实验课程中激发学生的自主参与性,阐述了教学改革所采用的“适当省略加合理引导”这一方法。通过一个常见的大学物理实验,给出了这一方法的具体教学实施示范以及成效,体现了激发自主参与性的必要和它带来的优势。  关键词:大学物理实验;教学改革;自主参与性  大学物理实验这门课程,作为面向理工科各专业学生的一门必修基础课程,是构成大学物理课程的一个重要组成部分。大学物理实验作为
摘要:伴随着计算机技术的高速发展及网络技术的普及,我国已全面进入信息化时代,在这个信息高速发展的时代,计算机网络信息安全面临着各种机遇和挑战。计算机网络信息安全成为了信息化建设过程当中的重要环节,如何突破技术壁垒,确保在不断的更新换代的网络技术中,为计算机网络信息安全保驾护航,为计算机网络提供安全方便的延展空间,成为各方关注的焦点。本文展开对计算机网络技术的研究和分析,介绍简单的虚拟网络技术,和其
随着长寿经济的快速发展,城乡居民生活水平的不断提高,人民群众对文化的需求也越来越迫切。近几年来,在各级党委、政府的重视下,加大文化建设的硬件和软件建设力度,文化基础设施建
1月27日,市长黄奇帆在全市开放型经济工作座谈会上指出,要主动适应经济发展新常态,全面提升对外开放水平,更好凸显开放对经济发展的支撑作用,不断推动重庆开放向广度、深度、
桑天牛Apriona germari(Hope.)是毛白杨、桑、构、苹果、无花果等多种用材林、经济林树种的主要蛀干害虫.掌握该虫的林间羽化动态对开展防治和测报工作有重要意义.我们于1995
当下社会的科技发展不断进步,人们的生活水平也在不断地提升。电能在当下社会的经济发展中扮演着非常重要的角色。无论是在人们日常生活中,还是社会中相关机构或是企业的生产
盆栽果树既可观花、观叶、观果,又可充分利用城市园林、屋顶、阳台、室内等小范围内空间进行果品生产,赏心悦目之余又有佳果可食。现将主要栽培管理方法介绍如下。 1 选盆 花盆