CN103778219A - 一种基于HBase的更新增量索引的方法 - Google Patents
一种基于HBase的更新增量索引的方法 Download PDFInfo
- Publication number
- CN103778219A CN103778219A CN201410025773.5A CN201410025773A CN103778219A CN 103778219 A CN103778219 A CN 103778219A CN 201410025773 A CN201410025773 A CN 201410025773A CN 103778219 A CN103778219 A CN 103778219A
- Authority
- CN
- China
- Prior art keywords
- index
- term
- hbase
- document
- content
- 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
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/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
Abstract
本发明公开了一种基于HBase的更新增量索引的方法,包括以下步骤:通过待更新文档D的标识符,从HBase索引库中获取待更新文档D的历史内容C0;解析历史内容C0,获取其全部术语的前置表FT0;解析待更新文档D的当前内容C1,获取其全部术语的前置表FT1;遍历前置表FT1,对FT1中每个术语t,结合FT0进行判断,修改前置表FT1和FT0的内容,将需要删除的术语保留在前置表FT0中,将需要增加或更新的术语保留在FT1中;将FT0中的所有术语t从HBase索引库中删除;将FT1中的所有术语提交到HBase索引库进行更新;将待更新文档D的内容替换为C1,完成待更新文档的索引更新。
Description
技术领域
本发明涉及一种在HBase(一个分布式的、面向列的开源数据库,支持百万列上亿行数据的存储)基础上对增量索引内容进行更新的方法,主要解决目前对增量索引的更新效率低的问题。
背景技术
随着互联网技术的发展,信息系统的中存储的文本数量日益庞大,为了从中查找所需信息,必须构建索引。当需要索引的数据量极大时,单个计算机提供的存储容量无法满足索引的存储需求,所以必须使用分布式的计算与存储环境满足需求。一种解决方法是采用基于HBase的倒排索引技术实现对不断增加的数据构建增量索引,另外,随着时间的积累,部分被索引的数据会发生变化,需要将增量索引系统中的索引数据相应的进行更新。因此,如何有效的对不断变化的内容更新其增量索引,满足用户在检索时对索引内容及时性的需求,成了亟待解决的难题。
针对如何有效地构建数据索引以及存储和检索,以下专利和论文提供了不同的技术方案:
文献1.一种全文检索系统的索引在线更新方法(200610112800.8);
文献2.Antonopoulos P,Konstantinou I,Tsoumakos D,et al.Efficient Updatesfor Web-Scale Indexes over the Cloud[C]:IEEE,2012:135-142.;
文献1将索引库按照文档变更的频繁程度划分为主索引库与辅助索引库两部分,其中主索引库由占绝大多数的很少改变的文档组成,辅助索引库由经常改变的少数文档组成。在更新索引时,不直接对主索引库进行更新,而是将索引的新增、删除与更新操作保存在辅助索引库中,当辅助索引库的文件大小或数量超过预先设置的阈值时,批量的将辅助索引库中的所有索引操作合并到主索引库中,或者按照系统的繁忙程度,在系统空闲时进行合并操作。采用这种方式,可以避免索引更新操作对主索引库大量读写造成的性能下降,保证索引服务持续可用。
文献2通过分析索引更新的操作的细节,发现更新索引时,其操作具有明显的局部性,不用将一个文档的所有术语都进行更新,只需要对发生变化的术语进行更新即可,避免了不必要的索引删除与新增操作。而发现变化的术语更新的步骤可以通过对比待更新文档的新旧前置表实现,不需要对文档原文进行遍历对比。采用这种方式,可以将索引更新的细节操作数量显著降低,提高索引更新的效率。
以上文献所述方法主要存在以下问题:文献1没有考虑待更新文档数据持续增加时,辅助索引库占用的存储空间将会显著提升,占用大量额外的存储空间,当索引数据的规模极大时,辅助索引库受限于单机的内存容量,无法保存更多索引更新;当总索引数量超过一定程度时,合并索引的效率会发生显著下降,不适应当前海量数据资源的索引更新;索引的更新过程的一段时期内,同时存在两个不同的索引版本,如辅助索引库发生异常,则会丢失索引更新。文献2在实现索引更新时,需要保存待索引文档的前置表,而保存前置表需要占用和索引同样大小的存储空间,造成存储浪费;而从索引中重新生成前置表,则需要扫描整个索引库,十分耗费时间。
发明内容
本发明的目的在于提出一种新的可提高更新效率的索引更新方法,以解决背景技术的方法中不适合处理海量数据索引、额外占用大量存储空间以及整体更新速度慢的问题,。
为了达到以上目的,本发明是采取如下技术方案予以实现的:
一种基于HBase的更新增量索引的方法,其特征在于,包括下述步骤:
(1)从HBase索引库中获取待更新文档D的历史内容C0
待更新文档D的历史内容在HBase索引库中已经存在,包括其内容文本与内容文本的索引,通过待更新文档D的标识符,从HBase索引库中读取其历史内容;
(2)解析待更新文档D的历史内容C0,获取C0的前置表FT0;
(3)解析待更新文档D的当前内容C1,获取C1的前置表FT1;
(4)遍历C1的前置表FT1,对FT1中每个术语t,结合FT0进行判断,修改前置表FT1和FT0的内容,具体方法如下:
判断FT0中是否存在术语t,分别进行如下处理:
a、如果不存在,则继续判断FT1的下一个术语;
b、如果存在,则判断该术语t的出现频率出现位置与FT0中术语t的出现频率出现位置是否都相同,分别进行如下处理:
i、如果都相同,则将该术语t以及t的出现频率出现位置从FT0和FT1中删除;
ii、如果任一不相同,则将该术语t以及出现频率出现位置从FT0中删除;
(5)将FT0中的所有术语t从HBase索引库中删除
步骤(4)执行完毕后,FT0中的全部术语都是待更新文档D的当前内容C1中不再存在的术语,所以更新时应从HBase索引库中删除这些术语对应的索引信息,在HBase索引库中,以FT0中的术语t作为主键,以待索引文档D的标识符作为列字段,在HBase索引库中进行查询,将对应位置的索引信息删除;
(6)将FT1中的所有术语提交到HBase索引库进行更新
步骤(4)执行完毕后,FT1中的全部术语都是待更新文档D的当前内容C1对比历史内容C0发生变化的术语,所以更新时应将这些术语的信息提交给HBase索引库,更新对应术语的索引信息,更新索引时,在HBase索引库中,以FT1中的术语t作为主键,以待索引文档D作为列字段在HBase索引库中进行查询,将对应位置的索引信息替换为FT1中术语t的出现频率与出现位置;
(7)将待更新文档D的内容替换为C1。
上述方法中,步骤(2)、(3)中所述的前置表FT0、FT1是一种实现倒排索引的列表数据结构,其每行有3列,其内容格式为:
术语 | 出现频率 | 出现位置 |
通过对文档内容进行解析,得到文档中每个术语的出现频率和出现位置,将这些信息综合在一起,即为该文档内容的前置表。
与现有技术相比,本发明的优点是:
1、利用已经存储的索引文档内容生成前置表,节省了存储索引文档前置表的存储空间,不需要额外占用更多的存储空间。
2、利用HBase的主键访问特点,实现索引更新速度与索引数据集的整体规模无关,随着索引规模的增加,更新索引的速度不会显著降低。
3、更新过程实时在线,不用维护额外的索引表,避免多个索引副本引起不一致的问题。
4、通过对比待更新文档的新旧前置表,缩小了索引更新的规模,避免不必要的索引删除与添加操作,提高了更新效率。
附图说明
图1是本发明方法的整体流程示意图。
具体实施方式
以下结合附图,对本发明基于HBase的更新增量索引方法的具体内容做细致描述。
如图1所示,一种基于HBase的更新增量索引的方法,包括下述步骤:
(1)从HBase索引库中获取待更新文档D的历史内容C0。
待更新文档D在HBase索引库中已经存在,包括其内容文本C0与内容文本的索引。通过待更新文档D的标识符作为HBase索引库的主键,可以从HBase索引库中读取其历史内容C0。利用HBase主键访问速度快的特点,从HBase索引库中读取历史内容C0的时间与HBase索引库的规模无关。
(2)解析历史内容C0,获取其前置表FT0。
在得到了待更新文档D的历史内容C0后,对C0进行一次扫描,即可得到其所有术语的前置表FT0,上述方法中,所述的前置表是一种实现倒排索引的列表数据结构,其每行有3列,其内容格式为:
术语 | 出现频率 | 出现位置 |
通过对文档内容进行解析,可以得到文档中每个术语的出现频率和出现位置,将这些信息综合在一起,即为该文档内容的前置表。
(3)解析待更新文档D的当前内容C1,获取其前置表FT1。
(4)遍历前置表FT1,对FT1中每个术语t,结合FT0进行判断,修改前置表FT1和FT0的内容,具体方法如下:
判断FT0中是否存在该术语t,分别进行如下处理:
a、如果不存在,则继续判断FT1的下一个术语。
b、如果存在,则判断该术语t的出现频率出现位置与FT0中术语t的出现频率出现位置是否都相同,分别进行如下处理:
i、如果都相同,则将该术语t以及t的出现频率出现位置从FT0和FT1中删除。
ii、如果任一不相同,则将该术语t以及出现频率出现位置从FT0中删除。
最后,判断FT1中是否还有未对比的术语,如果还有,则继续进行判断;如果没有了,则进行下一个步骤。
(5)将FT0中的所有术语t从HBase索引库中删除。
步骤(4)执行完毕后,FT0中的全部术语都是待更新文档D的当前内容C1中不再存在的术语,所以应从HBase索引库中删除这些术语对应的索引信息。在HBase索引库中,以FT0中的术语t作为主键,以待索引文档D的标识符作为列字段,在HBase索引库中进行查询,将对应位置的索引信息删除。
(6)将FT1中的所有术语提交到HBase索引库进行更新。
步骤(4)执行完毕后,FT1中的全部术语都是待更新文档D的当前内容C1对比历史内容C0发生变化的术语,包括新增加的术语和索引信息发生变化的术语,所以应将这些术语的信息提交给HBase索引库,更新对应术语的索引信息。更新索引时,在HBase索引库中,以FT1中的术语t作为主键,以待索引文档D作为列字段在HBase索引库中进行查询,将对应位置的索引信息替换为FT1中术语t的出现频率与出现位置。
(7)将待更新文档D的内容替换为C1。
步骤(5)和步骤(6)结束后,待更新文档D的索引就全部更新了,然后即可在HBase索引库中将历史内容C0替换为当前内容C1。此步骤结束后,对待更新文档D的索引更新完成。
Claims (2)
1.一种基于HBase的更新增量索引的方法,其特征在于,包括下述步骤:
(1)从HBase索引库中获取待更新文档D的历史内容C0
待更新文档D的历史内容在HBase索引库中已经存在,包括其内容文本与内容文本的索引,通过待更新文档D的标识符,从HBase索引库中读取其历史内容;
(2)解析待更新文档D的历史内容C0,获取C0的前置表FT0;
(3)解析待更新文档D的当前内容C1,获取C1的前置表FT1;
(4)遍历C1的前置表FT1,对FT1中每个术语t,结合FT0进行判断,修改前置表FT1和FT0的内容,具体方法如下:
判断FT0中是否存在术语t,分别进行如下处理:
a、如果不存在,则继续判断FT1的下一个术语;
b、如果存在,则判断该术语t的出现频率出现位置与FT0中术语t的出现频率出现位置是否都相同,分别进行如下处理:
i、如果都相同,则将该术语t以及t的出现频率出现位置从FT0和FT1中删除;
ii、如果任一不相同,则将该术语t以及出现频率出现位置从FT0中删除;
(5)将FT0中的所有术语t从HBase索引库中删除
步骤(4)执行完毕后,FT0中的全部术语都是待更新文档D的当前内容C1中不再存在的术语,所以更新时应从HBase索引库中删除这些术语对应的索引信息,在HBase索引库中,以FT0中的术语t作为主键,以待索引文档D的标识符作为列字段,在HBase索引库中进行查询,将对应位置的索引信息删除;
(6)将FT1中的所有术语提交到HBase索引库进行更新
步骤(4)执行完毕后,FT1中的全部术语都是待更新文档D的当前内容C1对比历史内容C0发生变化的术语,所以更新时应将这些术语的信息提交给HBase索引库,更新对应术语的索引信息,更新索引时,在HBase索引库中,以FT1中的术语t作为主键,以待索引文档D作为列字段在HBase索引库中进行查询,将对应位置的索引信息替换为FT1中术语t的出现频率与出现位置;
(7)将待更新文档D的内容替换为C1。
2.如权利要求1所述的基于HBase的更新增量索引的方法,其特征在于,步骤(2)、(3)中所述的前置表FT0、FT1是一种实现倒排索引的列表数据结构,其每行有3列,其内容格式为:
通过对文档内容进行解析,得到文档中每个术语的出现频率和出现位置,将这些信息综合在一起,即为该文档内容的前置表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410025773.5A CN103778219B (zh) | 2014-01-20 | 2014-01-20 | 一种基于HBase的更新增量索引的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410025773.5A CN103778219B (zh) | 2014-01-20 | 2014-01-20 | 一种基于HBase的更新增量索引的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103778219A true CN103778219A (zh) | 2014-05-07 |
CN103778219B CN103778219B (zh) | 2015-03-04 |
Family
ID=50570454
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410025773.5A Expired - Fee Related CN103778219B (zh) | 2014-01-20 | 2014-01-20 | 一种基于HBase的更新增量索引的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103778219B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106294768A (zh) * | 2016-08-11 | 2017-01-04 | 深圳市宜搜科技发展有限公司 | 信息搜索方法及信息搜索引擎 |
CN106874402A (zh) * | 2017-01-16 | 2017-06-20 | 腾讯科技(深圳)有限公司 | 搜索方法和装置 |
CN109101599A (zh) * | 2018-08-01 | 2018-12-28 | 北京奇艺世纪科技有限公司 | 一种增量索引更新方法及系统 |
CN111881328A (zh) * | 2020-07-30 | 2020-11-03 | 百度在线网络技术(北京)有限公司 | 资讯推送方法、装置、电子设备及存储介质 |
CN113434509A (zh) * | 2021-07-02 | 2021-09-24 | 挂号网(杭州)科技有限公司 | 一种增量索引的更新方法、装置、存储介质及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102915365A (zh) * | 2012-10-24 | 2013-02-06 | 苏州两江科技有限公司 | 基于Hadoop的分布式搜索引擎构建方法 |
CN103020281A (zh) * | 2012-12-27 | 2013-04-03 | 中国科学院计算机网络信息中心 | 一种基于空间数据数值索引的数据存储与检索方法 |
CN103390038A (zh) * | 2013-07-16 | 2013-11-13 | 西安交通大学 | 一种基于HBase的构建和检索增量索引的方法 |
-
2014
- 2014-01-20 CN CN201410025773.5A patent/CN103778219B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102915365A (zh) * | 2012-10-24 | 2013-02-06 | 苏州两江科技有限公司 | 基于Hadoop的分布式搜索引擎构建方法 |
CN103020281A (zh) * | 2012-12-27 | 2013-04-03 | 中国科学院计算机网络信息中心 | 一种基于空间数据数值索引的数据存储与检索方法 |
CN103390038A (zh) * | 2013-07-16 | 2013-11-13 | 西安交通大学 | 一种基于HBase的构建和检索增量索引的方法 |
Non-Patent Citations (2)
Title |
---|
PANAGIOTIS ANTONOPOULOS等: "Efficient Updates for Web-Scale Indexes over the Cloud", 《IEEE》 * |
方诗伟: "基于HBase的医疗卫生数据中心构建与异构数据库同步研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106294768A (zh) * | 2016-08-11 | 2017-01-04 | 深圳市宜搜科技发展有限公司 | 信息搜索方法及信息搜索引擎 |
CN106874402A (zh) * | 2017-01-16 | 2017-06-20 | 腾讯科技(深圳)有限公司 | 搜索方法和装置 |
CN109101599A (zh) * | 2018-08-01 | 2018-12-28 | 北京奇艺世纪科技有限公司 | 一种增量索引更新方法及系统 |
CN111881328A (zh) * | 2020-07-30 | 2020-11-03 | 百度在线网络技术(北京)有限公司 | 资讯推送方法、装置、电子设备及存储介质 |
CN113434509A (zh) * | 2021-07-02 | 2021-09-24 | 挂号网(杭州)科技有限公司 | 一种增量索引的更新方法、装置、存储介质及电子设备 |
CN113434509B (zh) * | 2021-07-02 | 2023-07-18 | 挂号网(杭州)科技有限公司 | 一种增量索引的更新方法、装置、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN103778219B (zh) | 2015-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102169507B (zh) | 一种分布式实时搜索引擎的实现方法 | |
US20190278783A1 (en) | Compaction policy | |
US20210271653A1 (en) | Mutations in a column store | |
CN100495400C (zh) | 一种全文检索系统的索引在线更新方法 | |
CN104090889B (zh) | 数据处理方法及系统 | |
CN103778219B (zh) | 一种基于HBase的更新增量索引的方法 | |
CN103279502B (zh) | 一种具有与并行文件系统结合的重复数据删除文件系统的架构及方法 | |
CN103473321A (zh) | 数据库管理方法与系统 | |
CN102063500A (zh) | 一种数据迁移的方法及装置 | |
CN104866497A (zh) | 分布式文件系统列式存储的元数据更新方法、装置、主机 | |
CN103116627B (zh) | 一种高并发soa技术访问数据库的方法和系统 | |
CN103473239A (zh) | 一种非关系型数据库数据更新方法和装置 | |
CN101464895A (zh) | 一种更新内存数据的方法、系统和装置 | |
CN103488687A (zh) | 用于大数据的搜索系统和搜索方法 | |
CN109710668B (zh) | 一种多源异构数据访问中间件构建方法 | |
CN105354315A (zh) | 分布式数据库中子表分裂的方法、子表节点和系统 | |
CN109885642B (zh) | 面向全文检索的分级存储方法及装置 | |
CN103186622A (zh) | 一种全文检索系统中索引信息的更新方法以及装置 | |
CN109063192A (zh) | 一种高性能海量文件存储系统工作方法 | |
CN103198108A (zh) | 一种索引数据更新方法、检索服务器及系统 | |
CN102654863A (zh) | 一种实时数据库历史数据组织管理方式 | |
CN103793475A (zh) | 一种分布式文件系统数据迁移的方法 | |
CN110008174A (zh) | 一种目录导出方法、系统及相关装置 | |
CN103399915A (zh) | 一种搜索引擎索引文件的优化读取方法 | |
CN109408539B (zh) | 数据操作方法、装置、服务器和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150304 Termination date: 20180120 |