一种数据管理方法、装置、计算设备及存储介质与流程

文档序号:33125707发布日期:2023-02-01 05:06阅读:25来源:国知局
一种数据管理方法、装置、计算设备及存储介质与流程

1.本发明实施例涉及数据库技术领域,特别涉及一种数据管理方法、装置、计算设备及存储介质。


背景技术:

2.在仿真技术试验中,一次试验会产生数亿条数据,这些数据是由仿真软件产生,需要存入数据库,并实现数据内容的快速查询、读取。然而,由于数据量巨大,传统数据库管理方法无法满足要求。
3.因此,亟需一种新的数据管理方法。


技术实现要素:

4.为了解决传统数据库管理方法无法满足海量数据的快速查询、读取的问题,本发明实施例提供了一种数据管理方法、装置、计算设备及存储介质。
5.第一方面,本发明实施例提供了一种数据管理方法,包括:
6.获取待存储的若干个文档;
7.对每一个所述文档进行分词处理,以在对应索引中生成索引列表,并将每一个所述文档存入该索引的对应分片中;
8.当接收到查询请求时,该索引中的每一个节点均将所述查询请求下发到该节点管理的每一个分片中;
9.每一个所述分片根据所述索引列表和所述查询请求,查询存储到该分片中的每一个所述文档,以生成该分片的结果集;
10.对生成的所有结果集进行汇总排序,得到查询结果。
11.优选的,所述索引列表包括若干个分词、每一个所述分词对应的文档id、每一个所述分词在对应文档中的位置信息以及每一个所述分词在对应文档中的权重比例。
12.优选的,所述对每一个所述文档进行分词处理,以在对应索引中生成索引列表,并将每一个所述文档存入该索引的对应分片中,包括:
13.依次将每一个所述文档写入内存中,以生成对应索引中逐渐增大的翻译文件;
14.随着所述文档的不断写入,每隔一段时间对该段时间内写入的所述文档进行分词处理,并根据分词结果在索引列表中建立索引关系之后,将该段时间内写入的所述文档划分生成一个分段;
15.设定时间后,执行一次磁盘写入操作,以将所述翻译文件中的每一个所述分段写入该索引的对应分片中。
16.优选的,还包括:
17.在每相邻两次磁盘写入操作之间,记录该相邻两次磁盘写入操作之间所有的操作,以在故障后根据记录还原进度。
18.优选的,在所述执行一次磁盘写入操作,以将所述翻译文件中的每一个所述分段
写入该索引的对应分片中之后,还包括:将对应分片中的每一个所述分段进行合并。
19.优选的,每一个所述分片对应一个删除文件;
20.当接收到删除请求时,在所述删除文件中标识该文档已被删除,直至将多个所述分段进行合并时,再将该文档从对应分片中删除。
21.优选的,所述每一个所述分片根据所述索引列表和所述查询请求,查询存储到该分片中的每一个所述文档,以生成该分片的结果集,包括:
22.针对每一个分片,均执行:
23.根据所述查询请求,确定所述查询请求中的目标分词;
24.根据所述目标分词和所述索引列表,确定所述目标分词所对应的文档id;
25.根据所述目标分词所对应的文档id,查询该分片中存储的每一个文档,确定出所述目标分词在该分片中对应的目标文档,并根据所述目标分词在每一个所述目标文档中的权重比例,对该分片中查询出的目标文档进行排序;
26.根据预先确定的返回排序号,利用对应排序号的目标文档生成该分片的结果集。
27.第二方面,本发明实施例还提供了一种数据管理装置,包括:
28.获取单元,用于获取待存储的若干个文档;
29.存储单元,用于对每一个所述文档进行分词处理,以在对应索引中生成索引列表,并将每一个所述文档存入该索引的对应分片中;
30.下发单元,用于当接收到查询请求时,该索引中的每一个节点均将所述查询请求下发到该节点管理的每一个分片中;
31.查询单元,用于使每一个所述分片根据所述索引列表和所述查询请求,查询存储到该分片中的每一个所述文档,以生成该分片的结果集;
32.汇总单元,用于对生成的所有结果集进行汇总排序,得到查询结果。
33.第三方面,本发明实施例还提供了一种计算设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时,实现本说明书任一实施例所述的方法。
34.第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行本说明书任一实施例所述的方法。
35.本发明实施例提供了一种数据管理方法、装置、计算设备及存储介质,首先,对待存储的每一个文档进行分词处理,以在对应索引中生成索引列表,并将每一个文档存入该索引的对应分片中;那么,当接收到查询请求时,该索引中的每一个节点均将查询请求下发到该节点管理的每一个分片中;然后,每一个分片根据索引列表和查询请求,查询存储到该分片中的每一个文档,生成该分片的结果集;最后,对生成的所有结果集进行汇总排序,可以得到最终的查询结果,以此来提高海量数据的查询速度,可以满足数亿条数据的管理应用要求。
附图说明
36.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明
的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
37.图1是本发明一实施例提供的一种数据管理方法流程图;
38.图2是本发明一实施例提供的一种电子设备的硬件架构图;
39.图3是本发明一实施例提供的一种数据管理装置结构图。
具体实施方式
40.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
41.如前所述,在仿真技术试验中,一次试验会产生数亿条数据,这些数据是由仿真软件产生,需要存入数据库,并实现数据内容的快速查询、读取。然而,由于数据量巨大,传统数据库管理方法无法满足要求。
42.为了解决上述技术问题,发明人可以考虑对待存储的每一个文档进行分词处理,处理之后将每一个文档分发到不同的分片中,以在接收到查询请求时,每个分片可以各自查询存储在自己分片内的文档,以此来提高查询速度。
43.下面描述以上构思的具体实现方式。
44.请参考图1,本发明实施例提供了一种数据管理方法,该方法包括:
45.步骤100:获取待存储的若干个文档;
46.步骤102:对每一个文档进行分词处理,以在对应索引中生成索引列表,并将每一个文档存入该索引的对应分片中;
47.步骤104:当接收到查询请求时,该索引中的每一个节点均将查询请求下发到该节点管理的每一个分片中;
48.步骤106:每一个分片根据索引列表和查询请求,查询存储到该分片中的每一个文档,以生成该分片的结果集;
49.步骤108:对生成的所有结果集进行汇总排序,得到查询结果。
50.本发明实施例中,首先,对待存储的每一个文档进行分词处理,以在对应索引中生成索引列表,并将每一个文档存入该索引的对应分片中;那么,当接收到查询请求时,该索引中的每一个节点均将查询请求下发到该节点管理的每一个分片中;然后,每一个分片根据索引列表和查询请求,查询存储到该分片中的每一个文档,生成该分片的结果集;最后,对生成的所有结果集进行汇总排序,可以得到最终的查询结果,以此来提高海量数据的查询速度,可以满足数亿条数据的管理应用要求。
51.下面描述图1所示的各个步骤的执行方式。
52.针对步骤100和步骤102:
53.在本实施例中,使用java语言编程来实现整个方案,可以在pc机上运行。利用elasticsearch搜索服务器来实现文档的存储和查询。
54.在一些实施方式中,索引列表包括若干个分词、每一个分词对应的文档id、每一个分词在对应文档中的位置信息以及每一个分词在对应文档中的权重比例。
55.本实施例中,每个文档都对应一个id,倒排索引会按照指定语法对每一个文档进行分词,然后维护一张索引列表,列举所有文档中出现的分词以及每一个分词对应的文档id、每一个分词在该文档中出现的位置信息和每一个分词在对应文档中的权重比例,即出现频率。索引列表是实现"分词-文档矩阵"的一种具体存储形式。
56.在一些实施方式中,步骤102可以包括步骤s1-s3:
57.步骤s1,依次将每一个文档写入内存中,以生成对应索引中逐渐增大的翻译文件;
58.步骤s2,随着文档的不断写入,每隔一段时间对该段时间内写入的文档进行分词处理,并根据分词结果在索引列表中建立索引关系之后,将该段时间内写入的文档划分生成一个分段;
59.步骤s3,设定时间后,执行一次磁盘写入操作,以将翻译文件中的每一个分段写入该索引的对应分片中。
60.在本实施例中,在本步骤s1中,首先依次将每一个文档写入内存中的一个translog文件(transaction.log)中,其中translog文件会随着文档的不断写入而增大,此时,如果发出查询请求,这些新文档是不能被索引到的;在步骤s2中,本实施例中一段时间设置为1s,每隔1s对这1s内写入的文档进行分词处理,并在索引列表中建立这1s内的文档和各分词的索引关系,然后将1s内的文档写入该translog文件中的文件系统缓存中,并在文件系统缓存中生成一个分段(segment),此时,segment里的文档可以被搜索到,但是尚未写入硬盘,可能会因宕机而导致文档丢失;在步骤s3中,由于不断有新的文档写入,步骤s1和s2将不断重复执行,不断生成新的segment文件,而translog文件将越来越大。因此,在设定时间或者translog文件达到一定存储量时,执行一次磁盘写入操作,以将translog文件的文件系统缓存中的分段(segment)写入磁盘中该索引的对应分片中,而translog将被删除(此后会生成新的translog)。
61.需要说明的是,一个索引中存在多个节点,用于管理该索引中的分片,文档保存在各分片中,各分片被分配给各节点。其中,节点有不同的类型,其中有一种协调节点,可以根据各节点管理的分片中的文档量,来确定各translog文件写入哪个分片中,以此来平衡各个节点的负载。而当增加或减少节点时,协调节点会在各节点之间迁移分片,以使得文档数据均衡分布。
62.在一些实施方式中,还包括:
63.在每相邻两次磁盘写入操作之间,记录该相邻两次磁盘写入操作之间所有的操作,以在故障后根据记录还原进度。
64.在本实施例中,引入了translog文件来记录每相邻两次磁盘写入操作之间所有的操作,这样当机器从故障中恢复或者机器重启后,可以根据该translog文件进行还原。
65.在一些实施方式中,在执行一次磁盘写入操作,以将翻译文件中的每一个分段写入该索引的对应分片中之后,还包括:将对应分片中的每一个分段进行合并。
66.在本实施例中,由于不断生成新的segment文件,对每一个分片进行查询时,会轮流查询该分片中的所有segment,这非常影响搜索的性能,因此每隔固定时间将每一个segment合并成一个新的更大的segment,所有被合并的旧segment会被清除。
67.在一些实施方式中,每一个分片对应一个删除文件;
68.当接收到删除请求时,在删除文件中标识该文档已被删除,直至将多个分段进行
合并时,再将该文档从对应分片中删除。
69.在本实施例中,索引列表是不能修改的,因此更新和删除操作并不是直接在原索引列表上执行。每个分片上的各分段(segment)都会维护一个删除文件,该删除文件用来记录被删除的文档,每当用户发起一个删除请求,文档并没有被真正删除,索引列表也没有发生改变,而是在删除文件中标识该文档已被删除。因此,被删除的文档依然可以被检索到,只是在返回结果时被过滤掉,每次启动分段合并工作时,那些被标识为删除的文档才会被真正删除。
70.而在更新文档时,首先查找原文档,得到该文档的版本号,然后将更新后的文档写入内存,即写入一个新文档,同时旧文档被标识为删除。
71.针对步骤104:
72.在步骤104中,当一个节点接收到一个查询请求,则这个节点就变成了协调节点。协调节点会将查询请求分发给其他每一个节点,以使每一个节点将查询请求下发到该节点管理的每一个分片中。
73.针对步骤106:
74.在一些实施方式中,步骤106可以包括:
75.针对每一个分片,均执行:
76.根据查询请求,确定查询请求中的目标分词;
77.根据目标分词和索引列表,确定目标分词所对应的文档id;
78.根据目标分词所对应的文档id,查询该分片中存储的每一个文档,确定出目标分词在该分片中对应的目标文档,并根据目标分词在每一个目标文档中的权重比例,对该分片中查询出的目标文档进行排序;
79.根据预先确定的返回排序号,利用对应排序号的目标文档生成该分片的结果集。
80.在本实施例中,每一个分片均是一个lucene的实例,分片本身就是一个完整的搜索引擎。因此,针对每一个分片,在接收到查询请求时,均会根据查询请求中的目标分词,确定出目标分词在索引列表中对应的文档id,该分片会查询其中所存储的每一个文档,以确定目标分词在该分片中对应的目标文档,并根据目标分词在每一个目标文档中的权重比例,对该分片中查询出的目标文档进行排序。客户端可以要求返回排序中从第from开始数量为size的结果集,那么该分片会创建一个大小为from+size的优先级队列,将对应排序号的目标文档的信息在优先级队列中的对应放置,即生成该分片的结果集。
81.针对步骤108:
82.在本步骤中,每个分片将步骤106得到的结果集返回给协调节点,协调节点对所有结果集进行汇总,根据每一条结果中目标分词在该目标文档中的权重比例进行排序,得到最终的查询结果。
83.在查询完之后,客户端仍需要返回这些目标文档的,协调节点会向含有该目标文档的分片发送获取请求,分片获取对应的目标文档返回给协调节点,协调节点将目标文档返回给客户端。
84.最后,将本实施例的方案与传统的mysql数据库的性能进行对比,对比结果如下表1所示。
85.表1
[0086] mysql本方案版本5.76.2.2数据量1000万条1000万条查询速度6.011s0.203s新增速度0.008s0.253s修改速度13.016s0.051s删除速度12.215s0.052s
[0087]
由上表1可以看出,本方案在数据量相同的情况下,查询速度是mysql的30倍。修改速度和删除速度也均快于mysql数十倍。
[0088]
本实施例的方案还与传统的hbase数据库的性能了进行对比,对比结果如下表2所示。
[0089]
表2
[0090][0091]
由上表2可以看出,本方案与hbase数据库均录入2.7亿条数据,在进行全表扫描查询时,传统方式hbase查询耗时是本方案查询耗时的90倍。
[0092]
综上,本方案可以提高海量数据的查询速度,可以满足数亿条数据的管理应用要求。
[0093]
如图2、图3所示,本发明实施例提供了一种数据管理装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。从硬件层面而言,如图2所示,为本发明实施例提供的一种帧频切换的图像压缩装置所在计算设备的一种硬件架构图,除了图2所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的计算设备通常还可以包括其他硬件,如负责处理报文的转发芯片等等。以软件实现为例,如图3所示,作为一个逻辑意义上的装置,是通过其所在计算设备的cpu将非易失性存储器中对应的计算机程序读取到内存中运行形成的。
[0094]
如图3所示,本实施例提供的一种数据管理装置,包括:
[0095]
获取单元301,用于获取待存储的若干个文档;
[0096]
存储单元302,用于对每一个文档进行分词处理,以在对应索引中生成索引列表,并将每一个文档存入该索引的对应分片中;
[0097]
下发单元303,用于当接收到查询请求时,该索引中的每一个节点均将查询请求下发到该节点管理的每一个分片中;
[0098]
查询单元304,用于使每一个分片根据索引列表和查询请求,查询存储到该分片中的每一个文档,以生成该分片的结果集;
[0099]
汇总单元305,用于对生成的所有结果集进行汇总排序,得到查询结果。
[0100]
在本发明的一个实施例中,存储单元302中,索引列表包括若干个分词、每一个分词对应的文档id、每一个分词在对应文档中的位置信息以及每一个分词在对应文档中的权重比例。
[0101]
在本发明的一个实施例中,存储单元302用于执行:
[0102]
依次将每一个文档写入内存中,以生成对应索引中逐渐增大的翻译文件,
[0103]
随着文档的不断写入,每隔一段时间对该段时间内写入的文档进行分词处理,并根据分词结果在索引列表中建立索引关系之后,将该段时间内写入的文档划分生成一个分段;
[0104]
设定时间后,执行一次磁盘写入操作,以将翻译文件中的每一个分段写入该索引的对应分片中。
[0105]
在本发明的一个实施例中,存储单元302还用于:
[0106]
在每相邻两次磁盘写入操作之间,记录该相邻两次磁盘写入操作之间所有的操作,以在故障后根据记录还原进度。
[0107]
在本发明的一个实施例中,存储单元302在执行一次磁盘写入操作,以将翻译文件中的每一个分段写入该索引的对应分片中之后,还用于将对应分片中的每一个分段进行合并。
[0108]
在本发明的一个实施例中,存储单元302中,每一个分片对应一个删除文件;
[0109]
当接收到删除请求时,在删除文件中标识该文档已被删除,直至将多个分段进行合并时,再将该文档从对应分片中删除。
[0110]
在本发明的一个实施例中,查询单元304用于执行:
[0111]
针对每一个分片,均执行:
[0112]
根据查询请求,确定查询请求中的目标分词;
[0113]
根据目标分词和索引列表,确定目标分词所对应的文档id;
[0114]
根据目标分词所对应的文档id,查询该分片中存储的每一个文档,确定出目标分词在该分片中对应的目标文档,并根据目标分词在每一个目标文档中的权重比例,对该分片中查询出的目标文档进行排序;
[0115]
根据预先确定的返回排序号,利用对应排序号的目标文档生成该分片的结果集。
[0116]
上述装置内的各模块之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
[0117]
本发明实施例还提供了一种计算设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时,实现本发明任一实施例中的一种数据管理方法。
[0118]
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序在被处理器执行时,使所述处理器执行本发明任一实施例中的一种数据管理方法。
[0119]
具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机(或cpu或mpu)读出并执行存储在存储介质中的程序代码。
[0120]
在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实
施例的功能,因此程序代码和存储程序代码的存储介质构成了本发明的一部分。
[0121]
用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如cd-rom、cd-r、cd-rw、dvd-rom、dvd-ram、dvd-rw、dvd+rw)、磁带、非易失性存储卡和rom。可选择地,可以由通信网络从服务器计算机上下载程序代码。
[0122]
此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。
[0123]
此外,可以理解的是,将由存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展模块中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展模块上的cpu等来执行部分和全部实际操作,从而实现上述实施例中任一实施例的功能。
[0124]
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
[0125]
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质中。
[0126]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1