CN111459945A - 一种基于HBase的分层式索引查询方法 - Google Patents
一种基于HBase的分层式索引查询方法 Download PDFInfo
- Publication number
- CN111459945A CN111459945A CN202010266077.9A CN202010266077A CN111459945A CN 111459945 A CN111459945 A CN 111459945A CN 202010266077 A CN202010266077 A CN 202010266077A CN 111459945 A CN111459945 A CN 111459945A
- Authority
- CN
- China
- Prior art keywords
- index
- hbase
- data
- file
- query method
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 15
- 230000002085 persistent effect Effects 0.000 claims abstract description 11
- 238000001914 filtration Methods 0.000 claims description 3
- 238000013461 design Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/148—File search processing
- G06F16/152—File search processing using file content signatures, e.g. hash values
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Library & Information Science (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于HBase的分层式索引查询方法,该方法建立了分层式索引模型,所述分层式索引模型包含基于HBase建立的持久性索引层、基于Redis建立的分布式热点索引缓存层。所述持久性索引层用于为非主键属性建立索引,并将索引信息保存在HBase中,借助HBase获得良好的可扩展性和容错性;所述热点索引缓存层基于Redis在内存中存储热点索引,降低磁盘访问开销,进一步提高查询效率。
Description
技术领域
本发明涉及一种索引查询方法,尤其涉及一种基于HBase的分层式索引查询方法。
背景技术
随着云计算、物联网、社交网络等技术的发展,数据快速积累,大数据时代已经到来。数据量的快速增长,传统的数据处理、存储和分析技术存在查询效率低,数据维护困难等问题。例如,根据eMarketer(市场研究公司)的研究数据显示,新浪微博2018年拥有3.41亿用户,同比增长17%,微博每天新增25亿条分享内容,32亿条评论,使用传统关系型数据表已经难以支撑大数据背景下的业务需求。
为解决关系型数据库难以存储、查询大数据的问题,非关系型分布式存储系统应运而生,例如,Apache社区的顶级项目HBase,Facebook的Cassandra系统以及高效内存数据存储系统Redis等等。在这些非关系型存储系统中,HBase的应用最为广泛。HBase(HadoopDatabase)底层使用类B+树索引结构,在HBase中检索数据通常有2种方式:基于行键查询、扫描。基于行键查询又分为2种情况:基于单个行键查询和基于一定范围的行键查询。由于底层采用了类B+树的索引结构,HBase基于行键查询数据效率非常高效,时间复杂度可以达到O(logN);如果使用布隆过滤器(Bloom filter),时间复杂度甚至可以达到O(1)。但是,HBase在面对复杂非主键查询条件时,必须使用扫描操作,扫描操作需要对全表数据进行扫描,这导致HBase在面对非主键查询时效率较低。大数据背景下,各个行业应用的数据规模可以达到亿级以上,如果每次非主键查询都需要对全表进行扫描,延时过高,无法满足各个行业应用的需求。
发明内容
发明目的:本发明提出一种可实现非主键快速查询的分层式索引查询方法。
技术方案:本发明所述的基于HBase的分层式索引查询方法,包括步骤:
(1)建立分层式索引模型;
(2)采用一致性哈希算法对分层式索引模型中的所有索引热点数据进行查询。
进一步地,所述步骤(1)具体包括:
(11)基于HBase建立持久化索引层;
(12)基于Redis服务器建立分布式热点索引缓存层。
进一步地,步骤(11)中,所述持久化索引层包括目录表、文件表,所述目录表用于存储管理文件表中的索引信息;所述文件表用于存储数据。
进一步地,所述文件表的主键行键设计为目录表中的序号ID与文件名的组合,所述序号ID用于文件的查找和过滤。
进一步地,所述步骤(12)中,所述分布式热点索引缓存层用于存储目录表中热点索引数据,为文件表中非主键字段建立索引信息。
进一步地,所述步骤(2)包括:
(21)对数据进行一致性哈希,找到数据索引信息所在的存储节点;
(22)利用哈希机制,找到存储节点内的索引数据地址。
有益效果:本发明通过在HBase上搭建持久化索引层,在Redis服务器上搭建基于内存的热点索引缓存层,为持久索引存储层的非主键建立索引并将热点数据缓存在内存中,提高了比标准HBase更优的查询效率。
附图说明
图1是本发明所述方法总体流程示意图;
图2是本发明所述分层式索引模型示意图;
图3是本发明非主键查询流程图。
具体实施方式
下面结合附图和实施例对本发明的技术方案作进一步的说明。
如图1所示,本发明所述的基于HBase的分层式索引查询方法,包括步骤:
1)基于HBase建立持久化索引层
在Hbase中建立2个表:目录表,文件表。其中文件表用来真正存储数据,而目录表用来存储管理文件表中的索引信息。然后分别为文件表、目录表设计表的Rowkey使其支持起始文件检索、文件前缀匹配等复杂检索。
2)目录表Rowkey的设计
传统关系型数据库通常会使用id作为索引查询数据,与关系型数据库不同,HBase基于主键(Rowkey)查询数据,且由于底层采用类B+树索引结构,基于Rowkey的查询效率非常高效。因此,合理的Rowkey设计变得至关重要。第一种方案考虑使用文件id作为Rowkey,此时会面临2个问题:1)用户如何知道文件id;2)如果用户只知道文件名字,检索该文件需要对整个HBase进行扫描操作,无法满足快速读取的要求。第二种方案使用文件名作为Rowkey,把文件数据作为列族,这种方案同样存在一个问题:不同的文件夹下可能会存在相同的文件名,违背了Rowkey的唯一性原则。第三种方案使用文件的全路径作为Rowkey,这种方案基本可以要求。
目录表是持久化索引存储层的核心,通过对目录表Rowkey进行合理的设计,使其能够提高复杂检索的响应速度。对于目录表,定义如下格式的结构:
<文件路径:sub:子目录:t:<value>>
<文件路径:cf:creator:t:<value>>
<文件路径:cf:seqid:t:<value>>
将目录表的Rowkey设置为文件的路径,并创建2个列族:sub、cf,如表1所示。其中,sub列族下存储的是当前目录下所有的子文件夹,例如,sub:dir2=1,sub:dir3=1,这表示在dir1下有2个子文件夹;cf列族下存储的是当前文件的一些基础属性,它有2列:creator、seqid。其中,creator列是文件的创建者的相关信息,而seqid列是一个重要的标识,它将和文件名组合起来作为数据表的Rowkey。用户可以根据目录的绝对路径来找到一条记录,然后根据其下的sub列族找到这个目录下的所有子目录。
表1目录表结构
3)文件表Rowkey的设计
文件表在HBase中真正存储数据文件,对于文件表,定义如下格式的结构:
<seqid_文件名:c:content:t:<value>>
<seqid_文件名:cf:creator:t:<value>>
<seqid_文件名:cf:size:t:<value>>
<seqid_文件名:cf:type:t:<value>>
目录表中的seqid与文件名组合起来作为文件表的Rowkey,并创建2个列族:c、cf,如表2所示。其中,c列族下的content列存储了文件的内容;cf列族下存储的是当前文件的一些基础属性,它有3列:filename、size、type。其中,文件名称的相关信息存储在filename列,文件大小存储在size列,文件类型存储type列。文件表的设计以seqid与文件名的组合做为Rowkey。通过seqid实现文件的查找和过滤,如果想查找某个文件,只需要获取到父目录的seqid,然后拼接成文件的Rowkey就可以随机的读取。另外,HBase本身支持字典排序,在加了seqid后,文件名依然有序,可以通过起止文件名对文件进行过滤操作。另外,文件表中文件名的选取是依据存储数据的不同而选取。
表2文件表结构
4)基于Redis建立分布式热点索引缓存层
如图2所示,为降低查询数据时磁盘开销并增加HOS非主键查询能力,引入基于Redis的分布式热点索引缓存层,为文件表中关键字段建立索引信息和存储目录表中热点索引数据。如图3所示,对于非主键查询,基于Redis建立索引信息,存储结构为key-value模式,如表3。其中,key为非主键字段的列名,value为Rowkey。在查询数据时,客户端从Redis上查询到非主键字段对应的Rowkey,然后基于Rowkey在HBase中快速查到数据。内存索引构建的基本思路类似于倒排索引,内存索引缓存层中的每个索引主键对应着一个具有相同索引列值的索引记录集合,该集合包含了与该索引值对应的所有索引表数据记录,与基于Hbase的持久化索引存储层一样,集合中也包含了可能需要访问的其他非主键属性。
表3非主键索引结构
key | Value |
Filename1 | Rowkey1 |
Filename2 | Rowkey2 |
Filename3 | Rowkey3 |
热点数据的索引主键做为key,而索引集合作为Redis Set的value保存在内存缓存中。引入一致性哈希算法来完成索引热点数据在分布式内存中的存储管理。一致性哈希为内存索引缓存层提供了良好的可扩展性,当索引缓存层的内存使用率偏高时,通过加入新的节点即能够实现索引缓存层容量的动态增加。一致性哈希通过将数据hash到不同的存储节点上,从而保证了各个存储节点的平衡。当需要查询数据的索引信息时,在分层式索引模型中,通过2个步骤找到数据的索引信息:a.对数据进行一致性哈希,找到数据索引信息所在的存储节点;b.在Redis节点内通过哈希机制找到索引数据地址。
Claims (6)
1.一种基于HBase的分层式索引查询方法,其特征在于,包括步骤:
(1)建立分层式索引模型;
(2)采用一致性哈希算法对分层式索引模型中的所有索引热点数据进行查询。
2.根据权利要求1所述的基于HBase的分层式索引查询方法,其特征在于,所述步骤(1)具体包括:
(11)基于HBase建立持久化索引层;
(12)基于Redis服务器建立分布式热点索引缓存层。
3.根据权利要求2所述的基于HBase的分层式索引查询方法,其特征在于:步骤(11)中,所述持久化索引层包括目录表、文件表,所述目录表用于存储管理文件表中的索引信息;所述文件表用于存储数据。
4.根据权利要求3所述的基于HBase的分层式索引查询方法,其特征在于:所述文件表的主键行键设计为目录表中的序号ID与文件名的组合,所述序号ID用于文件的查找和过滤。
5.根据权利要求2所述的基于HBase的分层式索引查询方法,其特征在于,所述步骤(12)中,所述分布式热点索引缓存层用于存储目录表中热点索引数据,为文件表中非主键字段建立索引信息。
6.根据权利要求1所述的基于HBase的分层式索引查询方法,其特征在于,所述步骤(2)包括:
(21)对数据进行一致性哈希,找到数据索引信息所在的存储节点;
(22)利用哈希机制,找到存储节点内的索引数据地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010266077.9A CN111459945B (zh) | 2020-04-07 | 2020-04-07 | 一种基于HBase的分层式索引查询方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010266077.9A CN111459945B (zh) | 2020-04-07 | 2020-04-07 | 一种基于HBase的分层式索引查询方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111459945A true CN111459945A (zh) | 2020-07-28 |
CN111459945B CN111459945B (zh) | 2023-11-10 |
Family
ID=71681415
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010266077.9A Active CN111459945B (zh) | 2020-04-07 | 2020-04-07 | 一种基于HBase的分层式索引查询方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111459945B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112035427A (zh) * | 2020-09-02 | 2020-12-04 | 中国平安财产保险股份有限公司 | 基于Redis和HBase的数据查询方法及相关设备 |
CN112084188A (zh) * | 2020-08-25 | 2020-12-15 | 北京明略昭辉科技有限公司 | HBase内存索引构建方法、系统及存储介质 |
CN112333020A (zh) * | 2020-11-03 | 2021-02-05 | 广东电网有限责任公司 | 一种基于五元组的网络安全监测及数据报文解析系统 |
CN113779043A (zh) * | 2021-11-05 | 2021-12-10 | 北京泰策科技有限公司 | 一种数据分布式缓存自动加载与转换方法 |
CN114547393A (zh) * | 2022-02-23 | 2022-05-27 | 平安普惠企业管理有限公司 | 数据查询方法、装置、电子设备及介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104778225A (zh) * | 2015-03-27 | 2015-07-15 | 浙江大学 | 一种非结构化数据多存储系统中同步数据的方法 |
CN104850572A (zh) * | 2014-11-18 | 2015-08-19 | 中兴通讯股份有限公司 | HBase非主键索引构建与查询方法及其系统 |
CN105095300A (zh) * | 2014-05-16 | 2015-11-25 | 阿里巴巴集团控股有限公司 | 一种数据库备份方法及系统 |
CN105677826A (zh) * | 2016-01-04 | 2016-06-15 | 博康智能网络科技股份有限公司 | 一种针对海量非结构化数据的资源管理方法 |
CN109582643A (zh) * | 2018-11-20 | 2019-04-05 | 中国石油大学(华东) | 一种基于HBase的实时动态数据管理系统 |
CN110162528A (zh) * | 2019-05-24 | 2019-08-23 | 安徽芃睿科技有限公司 | 海量大数据检索方法及系统 |
-
2020
- 2020-04-07 CN CN202010266077.9A patent/CN111459945B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105095300A (zh) * | 2014-05-16 | 2015-11-25 | 阿里巴巴集团控股有限公司 | 一种数据库备份方法及系统 |
CN104850572A (zh) * | 2014-11-18 | 2015-08-19 | 中兴通讯股份有限公司 | HBase非主键索引构建与查询方法及其系统 |
CN104778225A (zh) * | 2015-03-27 | 2015-07-15 | 浙江大学 | 一种非结构化数据多存储系统中同步数据的方法 |
CN105677826A (zh) * | 2016-01-04 | 2016-06-15 | 博康智能网络科技股份有限公司 | 一种针对海量非结构化数据的资源管理方法 |
CN109582643A (zh) * | 2018-11-20 | 2019-04-05 | 中国石油大学(华东) | 一种基于HBase的实时动态数据管理系统 |
CN110162528A (zh) * | 2019-05-24 | 2019-08-23 | 安徽芃睿科技有限公司 | 海量大数据检索方法及系统 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112084188A (zh) * | 2020-08-25 | 2020-12-15 | 北京明略昭辉科技有限公司 | HBase内存索引构建方法、系统及存储介质 |
CN112035427A (zh) * | 2020-09-02 | 2020-12-04 | 中国平安财产保险股份有限公司 | 基于Redis和HBase的数据查询方法及相关设备 |
CN112333020A (zh) * | 2020-11-03 | 2021-02-05 | 广东电网有限责任公司 | 一种基于五元组的网络安全监测及数据报文解析系统 |
CN112333020B (zh) * | 2020-11-03 | 2023-07-21 | 广东电网有限责任公司 | 一种基于五元组的网络安全监测及数据报文解析系统 |
CN113779043A (zh) * | 2021-11-05 | 2021-12-10 | 北京泰策科技有限公司 | 一种数据分布式缓存自动加载与转换方法 |
CN114547393A (zh) * | 2022-02-23 | 2022-05-27 | 平安普惠企业管理有限公司 | 数据查询方法、装置、电子设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111459945B (zh) | 2023-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111459945B (zh) | 一种基于HBase的分层式索引查询方法 | |
US8938459B2 (en) | System and method for distributed index searching of electronic content | |
CN104794123B (zh) | 一种为半结构化数据构建NoSQL数据库索引的方法及装置 | |
US20150039629A1 (en) | Method for storing and searching tagged content items in a distributed system | |
CN103282899B (zh) | 文件系统中数据的存储方法、访问方法及装置 | |
CN103544261B (zh) | 一种海量结构化日志数据全局索引管理方法及装置 | |
CN106874383A (zh) | 一种分布式文件系统元数据的解耦合分布方法 | |
CN105677826A (zh) | 一种针对海量非结构化数据的资源管理方法 | |
US9600501B1 (en) | Transmitting and receiving data between databases with different database processing capabilities | |
CN102332030A (zh) | 用于分布式键-值存储系统的数据存储、管理和查询方法及系统 | |
US9262511B2 (en) | System and method for indexing streams containing unstructured text data | |
CN102024019B (zh) | 一种分布式文件系统中基于后缀树的目录组织方法 | |
JP5557824B2 (ja) | 階層ファイルストレージに対する差分インデクシング方法 | |
EP3767486B1 (en) | Multi-record index structure for key-value stores | |
Von der Weth et al. | Multiterm keyword search in NoSQL systems | |
WO2020125630A1 (zh) | 文件读取 | |
WO2023179787A1 (zh) | 分布式文件系统的元数据管理方法和装置 | |
CN105912696A (zh) | 一种基于对数归并的dns索引创建方法及查询方法 | |
Weintraub et al. | Needle in a haystack queries in cloud data lakes. | |
CN114297145A (zh) | 一种ipfs节点本地基于关键词搜索文件的方法、介质及系统 | |
CN103136294A (zh) | 文件操作方法及装置 | |
CN109213760A (zh) | 非关系数据存储的高负载业务存储及检索方法 | |
CN103823805B (zh) | 基于社区的相关帖推荐系统及推荐方法 | |
CN115328857A (zh) | 文件访问方法、装置、客户端及存储介质 | |
CN114519045A (zh) | 一种非关系型数据库的父子文档关联方法及系统 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |