CN113032479A - 一种HBase非主键索引的方法及HBase系统 - Google Patents
一种HBase非主键索引的方法及HBase系统 Download PDFInfo
- Publication number
- CN113032479A CN113032479A CN201911350573.6A CN201911350573A CN113032479A CN 113032479 A CN113032479 A CN 113032479A CN 201911350573 A CN201911350573 A CN 201911350573A CN 113032479 A CN113032479 A CN 113032479A
- Authority
- CN
- China
- Prior art keywords
- index
- hbase
- layer
- electronic data
- primary key
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种hbase非主键索引的方法及hbase系统,涉及分布式存储领域,所述方法包括步骤1:构建基于HBase区域观察者模式的协议处理器的第一层索引;步骤2:实现基于HBase区域观察者模式的协议处理器的第二层索引。本发明利用分层式索引进行快速定位并查询到目标电子数据,从而能够对数据进行分析后提取有价值的信息,解决了在HBase中基于非行键的数据查询效率低,并且造成较多资源浪费的问题。
Description
技术领域
本发明涉及分布式存储领域,特别是涉及一种HBase非主键索引的方法及HBase系统。
背景技术
NoSQL数据库(非关系型数据库)的典型代表是HBase(Hadoop Database,分布式存储系统),HBase适用存储非结构化数据,数据表的索引由行键、列族以及时间戳组成,通过时间戳可以区分数据的不同版本,另外HBase能够实现列族的动态添加。与传统的关系型数据库不同,HBase没有丰富的数据类型,只有简单的字符串类型。因此,其他数据类型的操作都需要客户进行额外处理;另外,为了能够在分布式环境下提供更好的性能,HBase不具有事务的一致性,并且不支持跨行、多表连接等复杂的查询操作。HBase以HDFS(分布式文件系统)作为底层存储框架,同时提供MapRedeuce(映射归隐)技术来并行处理大规模数据。
随着客户使用的需求越来越多,应用场景的日益复杂,客户对查询方式的要求变得更加多样化。HBase中只提供每行数据的rowkey(行键)作为数据检索的唯一索引。其中,rowkey按照字典序排列,在rowkey上能够提供高效的点查询和范围查询,使得HBase在检索数据方面有很多的局限性。
针对HBase在检索数据方面局限性的优化,目前有许多可行的方案:
1.利用开源分布式搜索引擎提前对数据库中存储的数据创建索引,可以直接查询索引层,从而缩短查询响应时间。
2.利用分片位图索引机制,首先对不同数据结点中存储的数据建立局部位图索引;然后对字段值进行全部排序以便使各数据结点了解局部数据在全局中的分部情况;当索引任务到达时,各个数据节点可以并发且独立地完成各自的检索任务。
3.将索引信息维护在HBase数据表中,并且索引表和数据表分部存储,同时通过扩展客户端功能来实现索引查询和维护操作,当客户端进行数据查询的操作时需要进行两次RPC(Remote Procedure Call Protocol,远程过程调用)操作,第一次RPC操作发生在对索引表进行查询时,如果数据存在则找到相应的rowkey并返回客户端,如果数据不存在,则直接结束操作;第二次RPC操作发生在客户端,客户端根据返回的rowkey进行查询,对主表进行查询并返回最终的查询结果。
在HBase中,数据以rowkey的形式存储,并且依据rowkey对数据进行分块、组织和存储,提供基于rowkey的查询,因此与rowkey相关的查询操作都能得到很好的效果,但是由于HBase中没有很好提供基于非rowkey的查询,因此非rowkey的查询往往需要进行全表扫描,则会造成很多的资源浪费,导致查询效率低下。
通过分析现有方案,主要存在以下不足:
1.利用HBase的协处理器技术来实现HBase的非rowkey属性索引,但因为HBase是0.92版本之后才引入协处理器功能,对HBase协处理器功能的研究还不是非常充分,其对查询的索引支持也十分有限,即协处理器还有待完善。
2.一些索引方案的查询过程需要执行两次RPC操作,当客户端进行查询操作时,首先执行第一次RPC操作,查询索引表得到对应的rowkey,如果查询结果为空则结束本次操作;然后执行第二次RPC操作,客户端利用rowkey对主表进行查询并得到最终结果,这必然会造成系统开销的增大从使检索的效率降低;另外第一次的RPC调用中还存在大量随机读的问题,同样使检索的效率降低。
3.与查询主键不同的是,当执行基于非rowkey属性的查询时,由于其存储的随机性,查询时不可以使用客户端缓存功能。这就会造成每次客户端根据索引表查询到主键的时都需要再发起一次RPC操作,查询主表来得到最终结果,这样会造成计算机集群的网络和应用的开销增大。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种一种HBase非主键索引的方法及HBase系统,解决在HBase中基于非行键的数据查询效率低,并且造成较多资源浪费的问题。
本发明提供一种HBase非主键索引的方法,所述方法包括以下步骤:
步骤1:构建基于HBase区域观察者模式的协议处理器的第一层索引;
步骤2:实现基于HBase区域观察者模式的协议处理器的第二层索引。
于本发明的一实施例中,所述第一层索引步骤如下:
步骤1.1:通过区域观察者实例捕获客户端操作的钩子函数来查询索引;
步骤1.2:通过区域观察者模式的协议处理器为每个区域对象载入索引层来维护索引;
步骤1.3:采用d-left计数布隆过滤器表示电子数据的分布信息;
步骤1.4:通过d-left计数布隆过滤器确定每个区域对象中是否存储有目标电子数据;
步骤1.5:通过查询第一层索引快速定位存储了目标电子数据的相关区域对象,标识区域对象后传递给第二层索引。
于本发明的一实施例中,所述第二层索引步骤如下:
步骤2.1:通过第二层索引在第一层索引定位的相关区域对象中继续查询目标电子数据;
步骤2.2:遍历所有的目标电子数据后将目标电子数据存储在HDFS上。
于本发明的一实施例中,所述第二层索引对所有的电子数据创建倒排索引后存储在HDFS。
于本发明的一实施例中,所述第一层索引和第二层索引还包括在使用协处理器之前,将协处理器部署在HBase上。
一种HBase非主键索引的HBase系统,所述系统包括:
第一索引层:基于d-left计数布隆过滤器定位区域对象的电子数据,并且对区域对象进行标识后传递给第二索引层;
第二索引层:对标识区域对象的相关区域中的目标电子数据继续查询,并且将目标电子数据存储在HDFS上。
如上所述,本发明的一种HBase非主键索引的方法及HBase系统,具有以下有益效果:本发明利用分层式索引进行快速定位并查询到目标数据,从而能够对数据进行分析后提取有价值的信息,解决了在HBase中基于非行键的数据查询效率低,并且造成较多资源浪费的问题。
附图说明
图1显示为本发明实施例中公开的发明方法流程图。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
如图1所示,本发明提供一种HBase非主键索引的方法,所述方法包括以下步骤:
步骤1:构建基于HBase区域观察者模式的协议处理器的第一层索引;
步骤2:实现基于HBase区域观察者模式的协议处理器的第二层索引。
所述第一层索引步骤如下:
步骤1.1:通过区域观察者实例捕获客户端操作的钩子函数来查询索引;
步骤1.2:通过区域观察者模式的协议处理器为每个区域对象载入索引层来维护索引;
步骤1.3:采用d-left计数布隆过滤器表示电子数据的分布信息;
步骤1.4:通过d-left计数布隆过滤器确定每个区域对象中是否存储有目标电子数据;
步骤1.5:通过查询第一层索引快速定位存储了目标电子数据的相关区域对象,标识区域对象后传递给第二层索引。
所述第二层索引步骤如下:
步骤2.1:通过第二层索引在第一层索引定位的相关区域对象中继续查询目标电子数据;
步骤2.2:遍历所有的目标电子数据后将目标电子数据存储在HDFS上。
其中,所述第二层索引对所有的电子数据创建倒排索引后存储在HDFS上所述第一层索引和第二层索引都是基于区域观察者模式的协处理器实现的,因此所述第一层索引和第二层索引还包括在使用协处理器之前,将协处理器部署在HBase上。
本发明提供一种HBase非主键索引的HBase系统,所述HBase系统包括:
第一索引层:基于d-left计数布隆过滤器定位区域对象的电子数据,并且对区域对象进行标识后传递给第二索引层;
第二索引层:对标识区域对象的相关区域中的目标电子数据继续查询,并且将目标电子数据存储在HDFS上。
具体的,所述HBase非主键索引的方法的具体步骤如下:
一、第一层索引的实现;
1.第一层索引管理类部署
第一层索引是基于区域观察者模式的协处理器实现的,在使用协处理器之前需要在HBase上部署协处理器,部署协处理器步骤如下:
(1)将编译好的包含第一层索引对应的区域观察者模式的协处理器实现类的文件添加到环境变量文件(hbase-env.sh)中,使得区域服务器在JAVA运行环境(JRE)可以加载协处理器;
(2)在HBase中加载该区域观察者模式的协处理器;
(3)重启HBase使步骤(1)和(2)的配置文件生效。
2.创建索引列
创建索引列包含步骤如下:
(1)建所需的配置实例Configuration;
(2)创建实例HBaseAdmin;
(3)创建表描述符HTableDescriptor;
(4)创建列族描述符HColumnDescripto;
(5)在表描述符中添加列族描述符
(6)创建表;
3.创建实例Scan
创建实例Scan包含步骤如下:
(1)创建一个空的实例Scan;
(2)创建过滤器;
(3)设置扫描过程中的过滤器
4.带索引区域的打开
(1)实例化区域协处理机主机RegionCoprocessorHost,从配置文件hbase-site.xml中加载第一层索引对应的区域观察者模式的协处理器FirstLayerRegionObserver;
(2)实例化第一层协处理器FirstLayerRegionObserver;
(3)初始化第一层协处理器FirstLayerRegionObserver,调用其start()方法,在start()方法中创建第一层索引的索引管理器实例IndexManager1和区域对象;
(4)打开区域对象并完成初始化;
(5)区域协处理机主机RegionCoprocessorHost调用协处理器FirstLayerRegionObserver的postOpen()方法,在postOpen()方法中索引管理器会读取索引元信息,加载所有索引文件,如果索引文件不存在则重建索引文件,并重建索引文件映射。
5.对记忆存储MemStore创建第一层索引
当记忆存储MemStore中的数据量大到超出设定的阀值时,区域服务器HRegionServer会将基于存储MemStore中的电子信息数据全推送到存储文件StoreFile中;此时协处理器FirstLayerRegionObserver的preFlush()方法会被调用,在preFlush()方法中索引管理器调用buildIndexOfMemstore()方法对这部分电子信息数据建立第一层索引;另外记忆存储MemStore中的每一个数据的键值对都有其对应的类型,当过滤器扫描记忆存储MemStore中的数据时,其中用于标记该数据的键值对被删除(Delete操作)的类型即墓碑标记(Delete)应该被记录下来,并且同样地需要对这些数据的键值对构建索引。
6.查询数据
查询数据包含步骤如下:
(1)第一层索引的索引管理器IndexManager1根据Scan实例创建索引查询上下文IndexScannerContext;
(2)判断所创建的索引查询上下文IndexScannerContext的值,如果其不为空(null),则以一定的假阳性概率判断所要查询的电子信息数据存储在该区域对象上,并创建相应的RegionScanner扫描器;否则返回一个值为null的空扫描器。
二、第二层索引的实现;
1.第二层索引管理类部署
(1)将编译好的包含第二层索引对应的区域观察者模式的协处理器实现类的文件添加到环境变量文件(hbase-env.sh)中,使得区域服务器在Java运行环境(JRE)可以加载协处理器;
(2)在HBase中加载该区域观察者模式的协处理器;
(3)重启HBase使步骤(1)和(2)的配置文件生效;
2.带索引区域的打开
(1)实例化区域协处理机主机RegionCoprocessorHost,当其加载完第一层索引对应的区域观察者模式的协处理器FirstLayerRegionObserver后,从配置文件hbase-site.xml配置文件中加载第二层索引对应的区域观察者模式处理器SecondLayerRegionObserver;
(2)实例化第二层协处理器SecondLayerRegionObserver;
(3)初始化第二层协处理器SecondLayerRegionObserver,调用其start()方法,在start()方法中创建第二层索引的索引管理器实例IndexManager2和区域对象;
(4)打开区域对象并完成初始化;
(5)当区域协处理机主机RegionCoprocessorHost调用完FirstLayerRegionObserver协处理器的postOpen()方法以后,调用SecondLayerRegionObserver协处理器的postOpen()方法,在postOpen()方法中IndexManager2索引管理器会读取索引元信息,加载所有索引文件,如果索引文件不存在则重建索引文件,并且重建索引文件映射;
3.对记忆存储MemStore创建第二层索引
与对记忆存储MemStore中的电子信息数据创建第一层索引类似,当MemStore中的电子信息数据量大到超出设定的阀值时,区域服务器HRegionServer会将MemStore中的电子信息数据全部推送到一个存储文件StoreFile中。
此时第二层协处理器SecondLayerRegionObserver类的preFlush()方法会被调用,在preFlush()方法中第二层索引的索引管理器IndexManager2会调用buildIndexOfMemstore()方法对这部分电子信息数据建立第二层索引——倒排索引。同样的,当Scanner扫描记忆存储MemStore中的电子信息数据时,其需要把记忆存储MemStore中被标记上墓碑标记(Delete)的电子信息数据的键值对记录下来,并且对这些电子信息数据的键值对构建索引。具体思路是获得Scanner扫描器实例之后,遍历其中所有的电子信息数据,对这些电子信息数据创建倒排索引,然后将其存储在HDFS上;
4.查询数据
查询数据包含步骤如下:
(1)第二层索引的索引管理器IndexManager2根据Scan实例创建索引查询上下文(IndexScannerContext);
(2)判断所创建的索引查询上下文IndexScannerContext的值,如果其不为空(null),则创建相应的RegionScanner扫描器,实现这些包含目标电子邮件数据的相关区域的行数据迭代;否则返回一个值为null的空扫描器,不对其进行任何其他处理。
综上所述,对于没有任何非主键属性索引的标准HBase而言,无论查询所得的记录条数的多少,只要执行的是针对非主键属性上的查询,都要进行全表扫描,遍历所有的电子数据;本发明实现了分层式非主键属性索引的HBase,则可以利用分层式索引进行快速定位并查询到目标电子数据,从而能够对数据进行分析后提取有价值的信息。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
Claims (6)
1.一种HBase非主键索引的方法,其特征在于,所述方法包括以下步骤:
步骤1:构建基于HBase区域观察者模式的协议处理器的第一层索引;
步骤2:实现基于HBase区域观察者模式的协议处理器的第二层索引。
2.根据权利要求1所述的HBase非主键索引的方法,其特征在于,所述第一层索引步骤如下:
步骤1.1:通过区域观察者实例捕获客户端操作的钩子函数来查询索引;
步骤1.2:通过区域观察者模式的协议处理器为每个区域对象载入索引层来维护索引;
步骤1.3:采用d-left计数布隆过滤器表示电子数据的分布信息;
步骤1.4:通过d-left计数布隆过滤器确定每个区域对象中是否存储有目标电子数据;
步骤1.5:通过查询第一层索引快速定位存储了目标电子数据的相关区域对象,标识区域对象后传递给第二层索引。
3.根据权利要求1所述的HBase非主键索引的方法,其特征在于,所述第二层索引步骤如下:
步骤2.1:通过第二层索引在第一层索引定位的相关区域对象中继续查询目标电子数据;
步骤2.2:遍历所有的目标电子数据后将目标电子数据存储在HDFS上。
4.根据权利要求3所述的HBase非主键索引的方法,其特征在于:所述第二层索引对所有的电子数据创建倒排索引后存储在HDFS上。
5.根据权利要求1所述的HBase非主键索引的方法,其特征在于:所述第一层索引和第二层索引还包括在使用协处理器之前,将协处理器部署在HBase上。
6.一种HBase非主键索引的HBase系统,其特征在于,所述系统包括:
第一索引层:基于d-left计数布隆过滤器定位区域对象的电子数据,并且对区域对象进行标识后传递给第二索引层;
第二索引层:对标识区域对象的相关区域中的目标电子数据继续查询,并且将目标电子数据存储在HDFS上。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911350573.6A CN113032479A (zh) | 2019-12-24 | 2019-12-24 | 一种HBase非主键索引的方法及HBase系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911350573.6A CN113032479A (zh) | 2019-12-24 | 2019-12-24 | 一种HBase非主键索引的方法及HBase系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113032479A true CN113032479A (zh) | 2021-06-25 |
Family
ID=76452193
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911350573.6A Pending CN113032479A (zh) | 2019-12-24 | 2019-12-24 | 一种HBase非主键索引的方法及HBase系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113032479A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104850572A (zh) * | 2014-11-18 | 2015-08-19 | 中兴通讯股份有限公司 | HBase非主键索引构建与查询方法及其系统 |
CN107451214A (zh) * | 2016-09-21 | 2017-12-08 | 广州特道信息科技有限公司 | 一种非主键查询方法和分布式NewSQL数据库系统 |
CN109165222A (zh) * | 2018-08-20 | 2019-01-08 | 福州大学 | 一种基于协处理器的HBase二级索引创建方法以及系统 |
CN109284351A (zh) * | 2018-08-14 | 2019-01-29 | 青海大学 | 一种基于HBase数据库的数据查询方法 |
CN109800222A (zh) * | 2018-12-11 | 2019-05-24 | 中国科学院信息工程研究所 | 一种HBase二级索引自适应优化方法和系统 |
-
2019
- 2019-12-24 CN CN201911350573.6A patent/CN113032479A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104850572A (zh) * | 2014-11-18 | 2015-08-19 | 中兴通讯股份有限公司 | HBase非主键索引构建与查询方法及其系统 |
CN107451214A (zh) * | 2016-09-21 | 2017-12-08 | 广州特道信息科技有限公司 | 一种非主键查询方法和分布式NewSQL数据库系统 |
CN109284351A (zh) * | 2018-08-14 | 2019-01-29 | 青海大学 | 一种基于HBase数据库的数据查询方法 |
CN109165222A (zh) * | 2018-08-20 | 2019-01-08 | 福州大学 | 一种基于协处理器的HBase二级索引创建方法以及系统 |
CN109800222A (zh) * | 2018-12-11 | 2019-05-24 | 中国科学院信息工程研究所 | 一种HBase二级索引自适应优化方法和系统 |
Non-Patent Citations (1)
Title |
---|
黄璨: "HBase非主键属性索引方法及实现", 《中国优秀博硕士学位论文全文数据库 信息科技辑》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109800222B (zh) | 一种HBase二级索引自适应优化方法和系统 | |
US6438562B1 (en) | Parallel index maintenance | |
US7401089B2 (en) | Storage reports file system scanner | |
US6829606B2 (en) | Similarity search engine for use with relational databases | |
CN106326381B (zh) | 基于MapDB构建的HBase数据检索方法 | |
US20150142733A1 (en) | System and method for efficient management of big data in a database using streaming tables | |
CN108600321A (zh) | 一种基于分布式内存云的图数据存储方法和系统 | |
CN104850572A (zh) | HBase非主键索引构建与查询方法及其系统 | |
US20160253382A1 (en) | System and method for improving a query response rate by managing a column-based store in a row-based database | |
CN113986873B (zh) | 一种海量物联网数据模型化的处理、存储与共享方法 | |
US20130013890A1 (en) | Database system | |
US9183267B2 (en) | Linked databases | |
CN108140040A (zh) | 存储器中数据库的选择性数据压缩 | |
JPH07191891A (ja) | 多次元データを格納しかつアクセスするコンピュータ方法及び格納構造 | |
CN107247778A (zh) | 用于实施可扩展数据存储服务的系统和方法 | |
US11216516B2 (en) | Method and system for scalable search using microservice and cloud based search with records indexes | |
CN110362549A (zh) | 日志存储检索方法、电子装置及计算机设备 | |
CN105159950B (zh) | 海量数据实时排序查询方法及系统 | |
CN111639075A (zh) | 一种基于扁平化r树的非关系数据库矢量数据管理方法 | |
CN116541427B (zh) | 数据查询方法、装置、设备及存储介质 | |
CN111026709A (zh) | 基于集群访问的数据处理方法及装置 | |
CN113032479A (zh) | 一种HBase非主键索引的方法及HBase系统 | |
CN113656438B (zh) | 数据树的数据查询方法及装置 | |
Kvet | Database Block Management using Master Index | |
CN110389939A (zh) | 一种基于NoSQL和分布式文件系统的物联网存储系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210625 |
|
RJ01 | Rejection of invention patent application after publication |