一种全文索引的更新方法、装置、设备和存储介质与流程

文档序号:15615818发布日期:2018-10-09 21:21阅读:181来源:国知局

本发明实施例涉及数据库处理领域,尤其涉及一种全文索引的更新方法、装置、设备和存储介质。



背景技术:

在关系型数据库中,全文索引是一种加快数据检索的机制,通过对数据文本进行关键字分词,然后基于该关键字进行检索,可以提高文本数据的检索效率,特别是对长文本和大量文本数据的检索,其检索性能提升效果尤为明显。而由于全文索引将数据文本划分为多个关键词,然后由关键词来携带原有数据文本的一些标志信息,当有新的数据文本被分词时,势必需要对一批关键词进行更新,使得全文索引的更新代价较为高昂。

目前全文索引的更新方式通常有完全填充和增量填充两种,完全填充是在全文索引的创建初期,对当前数据表中所有的数据文本进行分词操作,并根据各关键词记录相应的数据文本在该数据表中的位置;增量填充是在全文索引建立后期,在数据表中的数据文本发生变更时,仅针对发生变更的数据文本进行分词操作,并根据该关键词记录相应变更的数据文本在该数据表中的位置,对该全文索引进行后期维护。

当前数据库全文索引的更新动作多采用定时或者手动方式进行,虽然在一定程度上减少了数据更新频率,但在更新阶段无法接收新的变更数据,期间不能对数据表中的数据文本进行插入、删除或更新操作,给数据正常操作带来不便,降低了全文索引更新的实时性。



技术实现要素:

本发明实施例提供了一种全文索引的更新方法、装置、设备和存储介质,以实现当前数据库事务期间变更数据的全文索引更新,优化全文索引的更新方式,提高全文索引的实时性。

第一方面,本发明实施例提供了一种全文索引的更新方法,该方法包括:

在检测到目标数据库事务启动后针对目标基表进行了新的变更操作时,根据所述变更操作,更新与所述目标基表上的全文索引对应的针对所述目标数据库事务的全文索引变更记录集合;

在检测到所述目标数据库事务的提交指令时,根据所述集合中对应的全文索引变更记录,更新与所述目标基表对应的全文索引。

第二方面,本发明实施例提供了一种全文索引的更新装置,该装置包括:

变更记录更新模块,用于在检测到目标数据库事务启动后针对目标基表进行了新的变更操作时,根据所述变更操作信息,更新与所述目标基表上的全文索引对应的针对所述目标数据库事务的全文索引变更记录集合;

全文索引更新模块,用于在检测到所述目标数据库事务的提交指令时,根据所述集合中对应的全文索引变更记录,更新与所述目标基表对应的全文索引。

第三方面,本发明实施例提供了一种设备,该设备包括:

一个或多个处理器;

存储装置,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明任意实施例所述的全文索引的更新方法。

第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明任意实施例所述的全文索引的更新方法。

本发明实施例提供的一种全文索引的更新方法、装置、设备和存储介质,以数据库事务为全文索引的更新单位,实现目标数据库事务期间数据变更操作的全文索引更新,优化全文索引的更新方式,使全文索引更新期间也可以执行正常的数据变更操作及对全文索引进行正常的查询操作,提高全文索引更新的实时性。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1a为本发明实施例一提供的一种全文索引的更新方法的流程图;

图1b为本发明实施例一提供的方法中更新与目标数据库事务对应的全文索引变更记录的方法流程图;

图1c为本发明实施例一提供的方法中更新与目标基表对应的全文索引的方法流程图;

图2为本发明实施例二提供的一种全文索引的更新方法的流程图;

图3为本发明实施例三提供的更新与目标基表对应的全文索引的方法流程图;

图4为本发明实施例四提供的一种全文索引的更新装置的结构示意图;

图5为本发明实施例五提供的一种设备的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

图1a为本发明实施例一提供的一种全文索引的更新方法的流程图,本实施例可适用于数据库技术中对任一数据库表对应的全文索引进行更新的情况。本实施例提供的一种全文索引的更新方法可以由本发明实施例提供的全文索引的更新装置来执行,该装置可以通过软件和/或硬件的方式来实现,并集成在执行本方法的设备中,在本实施例中执行本方法的设备可以是平板电脑、台式机和笔记本等任意一种可以执行数据库操作的智能终端。具体的,参考图1a,该方法可以包括如下步骤:

s110,在检测到目标数据库事务启动后针对目标基表进行了新的变更操作时,根据变更操作,更新与所述目标基表上的全文索引对应的针对目标数据库事务的全文索引变更记录集合。

具体的,由于全文索引是通过保存携带原有数据文本中一些标志信息的关键词进行检索,因此在出现新的数据文本时,需要通过对新的数据文本分词后的关键词重新保存,从而对全文索引进行更新。其中,本实施例中的目标基表是数据库中存储对应的数据文本的关系表,在对目标基表进行数据变更操作而出现新的数据文本,对目标基表对应的全文索引进行更新。进一步的,数据库事务是数据库中保持数据一致性的一种重要机制,作为单个逻辑工作单元执行一系列操作,在同一个数据库事务内的操作要么完全地执行,要么完全地不执行。其中,在常用的读提交和可串行化事务隔离级中,一个数据库事务内对数据文本的修改在该事务提交前对其他事务不可见。具体的,不同用户或同一用户通过选择不同的会话接口或连接接口对同一目标基表中的数据文本进行数据变更操作时,是在不同的数据库事务中执行的,系统会生成各个不同的事务标识。需要说明的是,本实施例中的目标数据库事务是启动的数据库事务中包含有对目标基表的数据变更操作的数据库事务。其中,一个目标数据库事务中可以对多个基表进行数据变更,此时可以将多个基表分别作为目标基表,并行执行后续操作。

可选的,为了实现目标数据库事务操作期间数据变更操作的全文索引更新,可以额外保存与目标基表的全文索引对应的全文索引变更记录,其中,全文索引变更记录可以对应保存目标数据库事务的执行过程中针对目标基表作出的一系列数据变更操作的操作信息,例如,变更记录可以包括针对目标基表的哪一行记录进行变更,以及对目标基表进行插入、删除和/或修改等哪一种变更。

进一步的,通过实时检测数据库中的各个数据库事务是否被开启,在目标数据库事务开启后,对应检测该目标数据库事务中针对目标基表进行的变更操作信息,并以此判断该目标数据库事务中针对目标基表具体的哪一行记录进行变更,以及对该目标基表进行的插入、删除和/或修改等中的哪一种数据变更,得到具体的操作信息后,将该对应的变更操作信息在该目标数据库事务提交前预先更新到与所述目标基表上的全文索引对应的针对该目标数据库事务的全文索引更新记录集合中,以便后续在目标数据库事务提交时,直接据此对全文索引进行相应更新,无需根据用户对目标基表的各个操作信息进行更新,从而将目标基表的数据变更操作与全文索引更新分割开来,使全文索引更新期间也可以执行正常的数据变更操作。

可选的,作为本实施例中的更新全文索引变更记录的一种方法,如图1b所示,根据变更操作信息,更新与目标基表上的全文索引对应的针对目标数据库事务的全文索引变更记录集合,可以包括:

s111,根据变更操作信息,确定变更类型以及目标基表中与变更操作匹配的记录的记录标识。

具体的,在检测到目标数据库事务启动后针对目标基表进行了新的变更操作时,判断该变更操作具体针对目标基表的哪一行记录进行变更,以及对该目标基表进行的插入、删除和/或修改等中的哪一种数据变更,从而确定该变更操作的变更类型以及目标基表中与该变更操作匹配的记录的记录标识,也就是具体对哪一行记录进行变更。其中,变更类型可以包括对目标基表中行记录的插入、删除以及修改更新中的至少一项,记录标识也可以包括对多个变更的行记录的记录标识,可选的,该记录标识可以是目标基表中主键对应的各行记录的关键字,且一定不为空。

s112,建立变更类型与记录标识之间的对应关系,并将该对应关系作为一条变更记录,加入与目标基表上的全文索引对应的针对目标数据库事务的全文索引变更记录集合中。

具体的,在根据变更操作信息确定对应的变更类型和目标基表中与该变更操作匹配的记录的记录标识后,可以通过用户在该目标数据库事务下输入的变更操作信息,建立对应变更操作中对应的变更类型与各记录标识之间的对应关系,也就是将一个变更操作中的变更类型和对应变更的记录的记录标识组合起来,作为一条变更记录,更新到与目标数据库事务对应的全文索引变更记录集合中。其中,用户输入的变更操作信息可以有多个,以此可以建立各个变更操作中对应的变更类型与各记录标识之间的对应关系。可选的,本实施例中更新全文索引变更记录的一种方法是将目标数据库事务与目标基表上的全文索引对应的全文索引变更记录集合相应设置,针对同一目标数据库事务的全文索引变更记录集合中可以有多个变更记录,包括变更类型和对应的记录标识。例如,若记录标识用id表示,变更类型中分别用i表示插入,用d表示删除,用u表示更新;则若变更操作信息为插入一行数据,则针对该目标数据库事务的全文索引变更记录集合中的该条变更记录可以通过(id,i)来表示。

示例性的,在该目标数据库事务执行过程中,建立包括变更类型和对应的记录标识的全文索引变更记录,如果变更类型为插入,则将该插入目标基表的记录标识和插入类型作为一条变更记录直接加入到对应的全文索引变更记录集合中;如果变更类型为删除,则首先判断该目标数据库事务对应的全文索引变更记录集合中之前是否有与该删除的记录标识相同的变更记录,若有,则判断该已经保存的变更记录中的变更类型,若为插入则说明用户在该目标数据库事务操作过程中首先插入一个行数据后再删除该数据,此时目标基表没有变化,因此直接删除该条变更记录,若该已经保存的变更记录中是更新,说明用户在该目标数据库事务操作过程中首先对某一行数据进行更新后再删除该更新后的行数据,此时目标基表将该行的原有数据删除,因此将该变更记录中的更新类型修改为删除,若之前没有与该删除的记录标识相同的变更记录,则将该删除目标基表的记录标识和删除类型作为一条变更记录直接加入到对应的全文索引变更记录集合中;如果变更类型为更新,则首先判断该目标数据库事务对应的全文索引变更记录集合中之前是否有与该更新的记录标识相同的变更记录,若有,此时已经保存的变更记录中的变更类型只可能为插入或更新,若是插入说明先对目标基表插入一个行数据,再对该行数据进行更新,也就是对目标基表直接插入一个更新后的行数据,而若该已经保存的变更记录中是更新,说明对目标基表同一个行数据进行两次更新,因此,若有与该更新的记录标识相同的变更记录时,保持全文索引变更记录集合中原有的变更记录不变,若之前没有与该更新的记录标识相同的变更记录,则将该更新目标基表的记录标识和更新类型作为一条变更记录直接加入到对应的全文索引变更记录集合中。

可选的,若对目标基表中多个列均创建全文索引时,目标数据库事务会根据创建的多个全文索引分别对应不同的全文索引变更记录集合,根据变更操作信息确定的变更类型以及目标基表中与变更操作匹配的记录的记录标识,在各个不同的全文索引变更记录集合中分别更新对应的变更记录。

可选的,作为本实施例中的更新全文索引变更记录的又一种方法,在根据变更操作信息,更新与目标数据库事务对应的全文索引变更记录集合之前,还可以包括:

在检测到目标数据库事务启动后针对目标基表进行了新的变更操作时,获取与目标基表上的全文索引对应的变更记录存储表。

其中,本实施例中在创建目标基表的全文索引的基础上,还可以预先设置与该目标基表上的全文索引对应的变更记录存储表,用于存储与该全文索引对应的全文索引变更记录。可选的,在检测到目标数据库事务启动后针对目标基表进行了新的变更操作时,可以直接获取与该目标基表上的全文索引对应的变更记录存储表,以便后续根据变更操作信息,及时更新存储有与该目标基表对应的全文索引变更记录的该变更记录存储表,从而实现目标基表的全文索引更新。

此时,上述s112中,建立变更类型与记录标识之间的对应关系,并将该对应关系作为一条变更记录,加入所述全文索引变更记录集合中,具体可以包括:

建立目标数据库事务的目标事务标识、变更类型与记录标识之间的对应关系作为一条变更记录,加入变更记录存储表中。

具体的,由于预先设置的变更记录存储表与目标基表上的全文索引对应,因此变更记录存储表中存储的全文索引变更记录还需要包括目标数据库事务的目标事务标识。根据目标数据库事务中用户输入的针对目标基表的新的变更操作信息,建立该目标数据库事务的目标事务标识、变更操作信息中的变更类型与记录标识之间的对应关系,也就是将三者组合起来作为一条变更记录,加入变更记录存储表中。其中,目标事务标识可以用tid来表示,此时若插入一行数据,变更记录存储表中存储的全该文索引变更记录可以通过(tid,id,i)来表示。

示例性的,在检测到目标数据库事务启动后针对目标基表进行了新的变更操作时,首先获取与该目标基表上的全文索引对应的变更记录存储表,然后根据变更操作信息中的变更类型相应更新变更记录存储表中的全文索引变更记录。当变更类型为插入时,向目标基表中插入数据后,直接将该插入操作对应的全文索引变更记录(tid,id,i)插入到变更记录存储表中;当变更类型为删除时,从目标基表中删除数据后,进一步判断变更记录存储表中之前是否保存有与该记录标识和目标事务标识均相同的变更记录,若之前存在变更记录为(tid,id,i),则直接删除该条已经存在的变更记录,若之前存在变更记录为(tid,id,u),则将该变更记录修改为(tid,id,d),若之前不存在与该记录标识和目标事务标识均相同的变更记录,则直接将该删除操作对应的全文索引变更记录(tid,id,d)插入到变更记录存储表中;当变更类型为更新时,从目标基表中更新数据后,进一步判断变更记录存储表中之前是否保存有与该记录标识和目标事务标识均相同的变更记录,若有则保持之前存在的变更记录不变,若没有则直接将该更新操作对应的全文索引变更记录(tid,id,u)插入到变更记录存储表中。

s120,在检测到目标数据库事务的提交指令时,根据集合中对应的全文索引变更记录,更新与目标基表对应的全文索引。

其中,目标数据库事务作为单个逻辑工作单元执行一系列操作,在执行完成后,根据对应的提交指令进行事务提交,此时再更新该目标基表对应的全文索引。具体的,目标基表对应的全文索引中包括标识目标基表中存储的数据文本信息的关键词自身信息,以及目标基表中包括该关键词的对应记录标识的集合信息。例如,若关键词用word来表示,记录标识集合用id_arr来表示,则全文索引可以通过多个(word,id_arr)来表示,其中id_arr中包括目标基表中存储的数据文本包括关键词word的每一行记录的记录标识。

进一步的,在检测到目标数据库事务的提交指令时,根据预先更新的与目标数据库事务对应的全文索引变更记录,确定该目标数据库事务下的变更操作的变更类型以及与该变更操作匹配的记录的记录标识,最后对目标基表中对应记录标识位置存储的数据文本进行分词处理,得到对应的关键词,并依次根据各关键词以及对应的变更类型,相应对目标基表对应的全文索引中存储的关键词和该关键词所在记录的记录标识集合进行实时更改。

可选的,在上述步骤s120的基础上,如图1c所示,在检测到目标数据库事务的提交指令时,根据全文索引变更记录,更新与目标基表对应的全文索引,具体可以包括:

s121,在检测到目标数据库事务的提交指令时,在变更记录存储表中获取与目标事务标识对应的全文索引变更记录。

具体的,在检测到目标数据库事务的提交指令时,需要对目标基表对应的全文索引进行更新,可以预先在目标基表上的全文索引对应的变更记录存储表中存储的各个数据库事务对应的变更记录中,根据目标数据库事务的目标事务标识,获取与该目标数据库事务对应的全文索引变更记录。其中,该全文索引变更记录中包括该目标数据库事务的目标事务标识,以及该目标数据库事务对应的变更操作在目标基表中的记录标识和变更类型。

s122,根据获取的全文索引变更记录中的记录标识和变更类型,确定目标基表中相应记录标识位置的变更数据文本分词后的关键词,依次根据该关键词和该关键词所在的记录标识对应更新与目标基表对应的全文索引。

具体的,在变更记录存储表中获取与目标事务标识对应的全文索引变更记录后,可以确定针对目标基表的目标数据库事务中进行的变更操作的记录标识和变更类型,与同时执行的其他数据库事务区分开来。可选的,根据目标事务标识获取的全文索引变更记录中的记录标识和变更类型,可以确定该目标数据库事务执行过程中针对目标基表对应的变更操作,并确定针对目标基表所作变更操作的相应记录标识位置的变更数据文本,对该变更数据文本进行分词,得到多个相应关键词,根据对应变更类型依次在目标基表对应的全文索引中查找是否存在该多个相应关键词,如果已经存在该关键词,则相应更新全文索引中对应的记录标识集合中的该关键词所在记录的记录标识,如果不存在该关键词,则在对应全文索引中重新添加一条记录来记载该关键词和该关键词所在记录的记录标识。可选的,在具有多个变更操作时,依次对各个变更操作中针对目标基表的变更数据文本进行分词,根据分词后的关键词和关键词所在记录的记录标识相应更新目标基表对应的全文索引。

示例性的,当获取的目标事务标识对应的全文索引变更记录为(tid,id,i)时,在目标基表中查找到该记录id位置插入的数据文本为str1,对该str1文本进行分词,得到word1、word2、…、wordn等共计n个关键词,依次对这n个关键词分别进行全文索引中的更新。如关键词word1,首先在对应的全文索引中查找word1,如果不存在,则表明该关键词为新词,在全文索引中插入该关键词记录(word1,id_arr),其中该id_arr中当前仅包括word1对应的记录标识id值;如果全文索引中存在该关键词word1,则直接将word1对应的新id值加入到已经存在的id_arr集合中。当获取的目标事务标识对应的全文索引变更记录为(tid,id,d)时,在目标基表中查找到该记录id位置删除的数据文本为str2,将str2分词得到word1、word2、…、wordn等共计n个关键词,依次对这n个关键词分别在全文索引中删除对应的记录标识id值。如关键词word1,首先在对应的全文索引中查找word1,并在对应id_arr集合中删除该对应id值,如果删除后的id_arr集合为空,则直接删除全文索引中word1对应的记录。当获取的目标事务标识对应的全文索引变更记录为(tid,id,u)时,可以看作删除操作和插入操作的有序组合,获取目标基表中该记录标识id位置在修改前的原始数据文本,将原始数据文本分词得到若干个关键词,在对应全文索引中删除这些关键词对应id_arr集合中的id值,接着获取目标基表中该记录标识id位置更新后的新数据文本,将新数据文本分词得到若干个关键词,在全文索引中依次对这些关键词和对应id_arr集合中id值进行更新。

本实施例提供的技术方案,以数据库事务为全文索引的更新单位,实现目标数据库事务期间数据变更操作的全文索引更新,优化全文索引的更新方式,使全文索引更新期间也可以执行正常的数据变更操作及对全文索引进行正常的查询操作,提高全文索引更新的实时性。

实施例二

图2为本发明实施例二提供的一种全文索引的更新方法的流程图。本实施例是在上述实施例的基础上进行优化。具体的,参照图2,本实施例可以包括如下步骤:

s201,依据用户输入的索引创建指令为目标基表中各个选定列创建全文索引。

具体的,在执行本实施例中的全文索引的更新方法时,必须保证用户预先为目标基表创建了全文索引,否则不存在对目标基表对应全文索引的更新。可选的,通过用户输入的索引创建指令根据目标基表各个选定列中的数据文本为目标基表中的各个选定列对应创建全文索引。其中,选定列可以是目标基表中的一列,也可以是多个列,每一列军对应一个全文索引。此外,用户输入的索引创建指令可以通过用户输入对应的结构化查询语言(structuredquerylanguage,sql)索引创建语句来实现。

s202,在检测到目标数据库事务启动后针对目标基表进行了新的变更操作时,根据目标基表对应的各个全文索引,更新与目标数据库事务对应的全文索引链表。

具体的,在检测到目标数据库事务启动时,会初始化生成与目标数据库事务对应的全文索引链表,初始化后的全文索引链表刚开始为空,在检测到该目标数据库事务中针对目标基表进行了新的变更操作时,可以根据系统磁盘中为目标基表中各个选定列创建的全文索引,依次将各个选定列分别对应的全文索引通过对应的索引标识添加到全文索引链表中,更新与目标数据库事务对应的包括各个对应全文索引标识的全文索引链表。

s203,根据目标数据库事务对应的全文索引链表中的各个全文索引的索引标识,获取与各个全文索引对应的变更记录存储表。

具体的,在创建目标基表上各个选定列对应的全文索引时,会自动生成与该目标基表的各个全文索引分别对应的变更记录存储表,用于存储各个数据库事务中与该目标基表上的全文索引对应的全文索引变更记录。可选的,在建立与目标数据库事务对应的全文索引链表后,由于各个选定列对应的全文索引和变更记录存储表一一对应,据此可以根据目标数据库事务对应的全文索引链表中的各个全文索引的索引标识,依次获取与各个全文索引对应的变更记录存储表,并分别对各个变更记录存储表中的全文索引变更记录依次更新,在后续对全文索引进行更新时,也可以依次根据全文索引链表中的各个全文索引的索引标识,依次更新各个全文索引中的关键词和该关键词对应的记录标识集合信息。

s204,根据变更操作,确定变更类型以及目标基表中与变更操作匹配的记录的记录标识。

s205,建立目标数据库事务的目标事务标识、变更类型与记录标识之间的对应关系作为一条变更记录,加入变更记录存储表中。

s206,在检测到目标数据库事务的提交指令时,依次获取全文索引链表中各全文索引对应的变更记录存储表,在变更记录存储表中获取与目标事务标识对应的全文索引变更记录。

s207,根据获取的全文索引变更记录中的记录标识和变更类型,确定目标基表中相应记录标识位置的变更数据文本分词后的关键词,依次根据该关键词和该关键词所在的记录标识对应更新与目标基表对应的全文索引。

s208,生成对应的更新回滚日志并存储至日志系统中,以使目标数据库事务提交失败时,目标基表与变更记录存储表不进行更新。

具体的,在分别对各个全文索引进行更新后,针对数据库全局的日志系统会自动生成各个对应的更新回滚日志,并存储在日志系统本身中,该更新回滚日志可以包括插入操作、删除操作和更新操作分别对应的回滚日志,该回滚日志保证了一旦目标数据库事务提交失败,系统可以根据对应的回滚日志将目标基表中的数据恢复到修改之前的数据状态,以使目标数据库事务提交失败时,目标基表不进行变更,也可以根据变更记录存储表和全文索引对应的回滚记录,使变更记录存储表和全文索引中的数据记录恢复到变更前的状态,不进行修改,保证了全文索引更新的正确性。

本实施例提供的技术方案,以数据库事务为全文索引的更新单位,实现目标数据库事务期间数据变更操作的全文索引更新,优化全文索引的更新方式,使全文索引更新期间也可以执行正常的数据变更操作及对全文索引进行正常的查询操作,提高全文索引更新的实时性。

实施例三

图3为本发明实施例三提供的全文索引的更新方法中更新与目标基表对应的全文索引的方法流程图,本实施例是在上述实施例的基础上提供的对更新与目标基表对应的全文索引方法的优选实例。具体的,如图3所示,该方法可以包括如下步骤:

s301,检测目标数据库事务对应的全文索引链表是否为空;若是,执行s302,若否,执行s303。

具体的,目标数据库事务对应的全文索引链表不为空,表明该目标数据库事务需要对全文索引链表上的针对目标基表对应的各个全文索引进行实时增量更新,若为空,则表明目标基表不存在全文索引,不需要更新。

s302,结束目标基表对应的全文索引相关处理。

s303,依次获取全文索引链表中的各个全文索引的索引标识,作为当前索引标识。

具体的,依次对每一全文索引进行更新。

s304,判断当前索引标识是否为空;若是,执行s302,若否,执行s305。

s305,获取当前索引标识对应的变更记录存储表和全文索引。

s306,依次获取变更记录存储表中下一条全文索引变更记录作为当前变更记录。

具体的,依次根据变更记录存储表中每一条全文索引变更记录对对应的全文索引进行更新。

s307,判断变更记录存储表中的变更记录是否处理完;若是,执行s303,若否,执行s308。

s308,判断当前变更记录中的事务标识是否为目标事务标识;若是,执行s309,若否,执行s306。

具体的,对变更记录存储表中存储的每一目标数据库事务期间进行的变更操作对应的全文索引进行更新,与其他数据库事务分割开来处理,保证全文索引更新的正确性。

s309,根据当前变更记录中的变更类型分三种情况分别对全文索引进行相应更新。

具体的,根据当前变更记录中插入操作、删除操作和更新操作的不同,分别执行不同的更新方法对全文索引进行相应更新。

s310,在变更记录存储表中删除处理完的当前变更记录,并继续执行s306,对变更记录存储表中剩余的变更记录进行处理。

具体的,删除处理完的当前变更记录,可以减少对后续执行下一变更记录的全文索引更新的影响,保证全文索引更新的正确性。

本实施例提供的技术方案,以数据库事务为全文索引的更新单位,实现目标数据库事务期间数据变更操作的全文索引更新,优化全文索引的更新方式,使全文索引更新期间也可以执行正常的数据变更操作及对全文索引进行正常的查询操作,提高全文索引更新的实时性。

实施例四

图4为本发明实施例四提供的一种全文索引的更新装置的结构示意图,如图4所示,该装置可以包括:

变更记录更新模块410,用于在检测到目标数据库事务启动后针对目标基表进行了新的变更操作时,根据变更操作,更新与所述目标基表上的全文索引对应的针对目标数据库事务的全文索引变更记录集合;

全文索引更新模块420,用于在检测到目标数据库事务的提交指令时,根据所述集合种对应的全文索引变更记录,更新与目标基表对应的全文索引。

本实施例提供的技术方案,以数据库事务为全文索引的更新单位,实现目标数据库事务期间数据变更操作的全文索引更新,优化全文索引的更新方式,使全文索引更新期间也可以执行正常的数据变更操作及对全文索引进行正常的查询操作,提高全文索引更新的实时性。

进一步的,上述变更记录更新模块410可以包括:变更信息确定单元4101,用于根据变更操作,确定变更类型以及目标基表中与变更操作匹配的记录的记录标识;变更记录添加单元4102,用于建立变更类型与记录标识之间的对应关系,并将对应关系作为一条变更记录,加入全文索引变更记录集合中。

进一步的,上述装置还可以包括:存储表获取模块430,用于在根据变更操作,更新与所述目标基表上的全文索引对应的针对目标数据库事务的全文索引变更记录集合之前,在检测到目标数据库事务启动后针对目标基表进行了新的变更操作时,获取与目标基表上的全文索引对应的变更记录存储表,该变更记录存储表可以用于存储与全文索引对应的全文索引变更记录。

相应的,上述变更记录添加单元4102可以具体用于:建立目标数据库事务的目标事务标识、变更类型与记录标识之间的对应关系作为一条变更记录,加入变更记录存储表中。

进一步的,上述全文索引更新模块420可以包括:变更记录获取单元4201,用于在检测到目标数据库事务的提交指令时,在变更记录存储表中获取与目标事务标识对应的全文索引变更记录;索引更新单元4202,用于根据获取的全文索引变更记录中的记录标识和变更类型,确定目标基表中相应记录标识位置的变更数据文本分词后的关键词,依次根据该关键词和该关键词所在的记录标识对应更新与目标基表对应的全文索引。

进一步的,上述装置还可以包括:链表更新模块440,用于在根据变更操作,更新与目标基表上的全文索引对应的针对目标数据库事务的全文索引变更记录集合之前,在检测到目标数据库事务启动后针对目标基表进行了新的变更操作时,根据目标基表对应的各个全文索引,更新与目标数据库事务对应的全文索引链表。

相应的,上述存储表获取模块430可以具体用于:根据目标数据库事务对应的全文索引链表中的各个全文索引的索引标识,获取与各个全文索引对应的变更记录存储表。

进一步的,上述装置还可以包括:更新回滚模块450,用于在根据该关键词和该关键词所在的记录标识对应更新与目标基表对应的全文索引之后,生成对应的更新回滚日志并存储至日志系统中,以使目标数据库事务提交失败时,目标基表与变更记录存储表不进行更新。

进一步的,上述装置还可以包括:全文索引创建模块460,用于在根据变更操作,更新与目标基表上的全文索引对应的针对目标数据库事务的全文索引变更记录集合之前,依据用户输入的索引创建指令为目标基表中各个选定列中的数据文本创建全文索引。

本实施例提供的全文索引的更新装置可适用于上述任意实施例提供的全文索引的更新方法,具备相应的功能和有益效果。

实施例五

图5为本发明实施例五提供的一种设备的结构示意图。如图5所示,该设备包括处理器50、存储装置51、通信装置52、输入装置53和输出装置54;设备中处理器50的数量可以是一个或多个,图5中以一个处理器50为例;设备的处理器50、存储装置51、通信装置52、输入装置53和输出装置54可以通过总线或其他方式连接,图5中以通过总线连接为例。

存储装置51作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的全文索引的更新方法对应的模块(例如,用于全文索引的更新装置中的变更记录更新模块410和全文索引更新模块420)。处理器50通过运行存储在存储装置51中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的全文索引的更新方法。

也即:所述处理器50执行存储在存储装置51中的软件程序、指令以及模块时实现:

在检测到目标数据库事务启动后针对目标基表进行了新的变更操作时,根据变更操作,更新与目标基表上的全文索引对应的针对目标数据库事务的全文索引变更记录集合;

在检测到目标数据库事务的提交指令时,根据集合中对应的全文索引变更记录,更新与目标基表对应的全文索引。

存储装置51可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储装置51可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储装置51可进一步包括相对于处理器50远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

通信装置52可用于实现网络连接或者移动数据连接。

输入装置53可用于接收输入的数据操作信息,以及产生与服务器的用户设置以及功能控制有关的键信号输入。输出装置54可包括显示屏等显示设备。

本实施例提供的一种设备可用于执行上述任意实施例提供的全文索引的更新方法,具备相应的功能和有益效果。

实施例六

本发明实施例五还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时可实现上述任意实施例中的全文索引的更新方法。该方法具体可以包括:

在检测到目标数据库事务启动后针对目标基表进行了新的变更操作时,根据变更操作,更新与目标基表上的全文索引对应的针对目标数据库事务的全文索引变更记录集合;

在检测到目标数据库事务的提交指令时,根据集合中对应的全文索引变更记录,更新与目标基表对应的全文索引。

当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的全文索引的更新方法中的相关操作。

通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

值得注意的是,上述全文索引的更新装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。

以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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