一种基于Lucene的大索引快速分裂方法与流程

文档序号:19745064发布日期:2020-01-21 18:13阅读:351来源:国知局
一种基于Lucene的大索引快速分裂方法与流程

本发明涉及文件索引技术领域,具体为一种基于lucene的大索引快速分裂方法。



背景技术:

随着大数据时代的带来,数据量呈爆发式增长。数据在入库时建立索引之后大大提升了数据的检索性能。遗憾的是为表设置索引也要付出一定的代价。首先索引的建立需要占用物理空间,当数据越来越多时,索引文件也越来越大;其次创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加;当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,数据量越多,索引文件越大,数据的维护效率也越低。

若只有一个索引文件或索引最初创建的分片数量不足,当达到一定程度时,若还有数据写入或数据更新,对索引树的重建也会非常缓慢,导致数据入库非常困难。此时需要通过重建索引重建来扩大分片的数量。

传统方案是先向当前索引中添加新的索引分片,再将当前索引数据copy到新建分片之上,通过一定的算法进行数据重新排列以达到索引分裂的目的。但当数据量过大时该过程会非常耗时,且分裂过程中如果原始数据发生修改,可能会造成数据丢失,需要一定的措施保证数据安全新性。

现有技术存在的缺点:1、现有的索引分裂技术是直接将索引数据copy到新的分片之上,当数据量很大时,因为有了一次额外的copy,这种copy带来的开销很大,而且也没有必要。2、在设定新的分片数量之后,可能需要对所有数据进行重新排列,如果数据量很大会非常耗时。3、现有的索引分裂技术需要采用一定算法进行索引分片来完成定位,分片数量是算法的一部分,修改分片数量的代价非常昂贵。4、项目数据增长具有不可预测性,难以设定确切的分片数量。5、若在使用过程中进行分片,分片过程会非常长,分裂过程如果原始数据发生修改,这些修改可能会丢失。6、若在分裂前锁定分片不能再修改,直到分裂完成后才能再修改,会因为分裂过程太长导致调用服务方产生大量的异常请求。



技术实现要素:

本发明的目的在于提供一种基于lucene的大索引快速分裂方法,以解决上述背景技术中提出的问题。

为实现上述目的,本发明提供如下技术方案:一种基于lucene的大索引快速分裂方法,包括以下步骤:

s1:利用linux下文件的软连接原理,在当前新建索引分片目录上进行标记,标记出当前文件所指向的原索引文件存储位置;

s2:借助于lucene的deletefrom特性,在当前新建索引分片上删除一半指定的索引数据,在另一块索引分片上删除相反的另一半数据,完成索引文件由一分裂为二的过程;

s3:完成索引分裂后,根据删除操作时所使用的删除条件决定当前索引数据定位的存储目录,将后续数据进行重新入库。

优选的,所述s1)中通过标记可在新的索引分片上访问到原索引数据。

优选的,所述方法通过人为手动控制,在空闲时间进行快速索引分裂。

与现有技术相比,本发明的有益效果是:包括以下几个方面:

1、分裂过程无需额外copy开销,当数据量过大时降低系统io压力;

2、不需要对数据进行重新排列,删除指定索引数据时效率高,结合上一点极大的加快了索引分裂的过程;

3、索引分裂过程完成后,后续数据入库索引数据定位规则与上述删除操作的删除条件有关,无需额外算法,简便快捷;

4、手动控制索引分裂过程,消除了项目中数据增长的不可预测性;

5、避免了在使用过程中进行索引分裂,空闲时间操作不会造成数据丢失,保障了数据的安全性;

6、索引分裂过程极快,不会占用较多时间,不影响后续服务方的请求调用。

附图说明

图1为本发明的基于lucene指定索引数据删除流程示意图;

图2为本发明的索引标记流程示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本发明的描述中,需要说明的是,术语“竖直”、“上”、“下”、“水平”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。

在本发明的描述中,还需要说明的是,除非另有明确的规定和限定,术语“设置”、“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。

请参阅图1-2,本发明提供一种技术方案:一种基于lucene的大索引快速分裂方法,包括以下步骤:

s1:利用linux下文件的软连接原理,在当前新建索引分片目录上进行标记,标记出当前文件所指向的原索引文件存储位置;

s2:借助于lucene的deletefrom特性,在当前新建索引分片上删除一半指定的索引数据,在另一块索引分片上删除相反的另一半数据,完成索引文件由一分裂为二的过程;

s3:完成索引分裂后,根据删除操作时所使用的删除条件决定当前索引数据定位的存储目录,将后续数据进行重新入库。

进一步的,所述s1)中通过标记可在新的索引分片上访问到原索引数据。

进一步的,所述方法通过人为手动控制,在空闲时间进行快速索引分裂。

工作原理:利用linux下文件的软连接原理,在当前新建索引分片目录上进行标记,标记出当前文件所指向的原索引文件存储位置,避免了copy开销,同时也可在新的索引分片上访问到原索引数据,借助于lucene的deletefrom特性,在当前新建索引分片上删除一半指定的索引数据,在另一块索引分片上删除相反的另一半数据,完成索引文件由一分裂为二的过程;因软连接原理删除链接文件源文件数据不受影响,因而可以完成索引文件由一分裂为二的过程,分裂过程无需额外copy开销,删除指定索引数据效率高,因而上述索引分裂过程极快,即使数据量很大也不会耗时太多;

完成索引分裂后,根据删除操作时所使用的删除条件决定当前索引数据定位的存储目录,将后续数据进行重新入库。

尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1