一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于milvus数据库的数据处理方法、电子设备及存储介质与流程

2022-12-10 20:36:37 来源:中国专利 TAG:


1.本发明涉及数据处理领域,特别是涉及一种基于milvus数据库的数据处理方法、电子设备及存储介质。


背景技术:

2.目前在使用milvus数据库时,若不对milvus数据库中的物理表进行分区,则随着物理表存储的数据量的增长,物理表会很臃肿,在需要对物理表中的数据进行查询时,需要对整个物理表的所有数据进行遍历,此种数据查询方式的查询延迟较大,资源开销也较高,导致数据查询性能较低。所以,就需对milvus数据库中的物理表进行分区,但现有的milvus数据库当使用日期信息作为分区标准时,若对物理表新增分区的数据进行内存加载时,受限于milvus数据库的限制,新增的分区不会自动加载到内存中,就需将当前物理表的所有分区数据进行释放再进行加载,此种内存加载方式耗时且消耗服务器资源,数据处理较为繁琐。


技术实现要素:

3.针对上述技术问题,本发明提供一种基于milvus数据库的数据处理方法、电子设备及存储介质,至少部分解决现有技术中存在的技术问题,本发明采用的技术方案为:根据本技术的一个方面,提供一种基于milvus数据库的数据处理方法,应用于客户端,客户端连接有milvus数据库,客户端中包括若干逻辑数据表,每个逻辑数据表对应有若干个物理数据表,每个物理数据表存储在milvus数据库中,当逻辑数据表被打开时,逻辑数据表获取对应的所有物理数据表中的数据,并在逻辑数据表中显示,每一物理数据表均具有对应的时间范围,且同一逻辑数据表对应的多个物理数据表之间对应的时间范围互不重合;每个物理数据表中的数据均包括时间信息,且每一数据的时间信息均属于其所在物理数据表的时间范围之内;所述基于milvus数据库的数据处理方法,包括如下步骤:s100、获取用户输入的目标逻辑数据表对应的待处理集合,待处理集合中包括若干个待处理数据;目标逻辑数据表为若干逻辑数据表中任意一个,目标逻辑数据表对应的物理数据表为目标物理数据表;s200、判断待处理数据中是否包括时间信息;若待处理数据中不包括时间信息,则执行步骤s300;若待处理数据中包括时间信息,则将待处理数据中的时间信息确定为第一时间t0,并执行步骤s400;s300、获取客户端的当前时间,并将当前时间确定为第一时间t0,并执行步骤s400;s400、获取每一目标物理数据表对应的时间范围,得到时间信息集q=(q1,...,qm,...,qn),qm=[t
m1
,t
m2
];其中,m=1,...,n;n为目标物理数据表的数量;qm为第m个目标物理
数据表对应的时间范围;t
m1
为第m个目标物理数据表的数据存储起始设定时间点;t
m2
为第m个目标物理数据表的数据存储截止设定时间点;t
m1
<t
m2
;s410、若t0∉
qm,则执行步骤s500;若t0∈qm,则执行步骤s600;s500、在milvus数据库中建立第一物理数据表,并建立第一物理数据表与目标逻辑数据表之间的关联关系,并执行步骤s510;s510、将待处理数据存储至第一物理数据表中;s600、将待处理数据存储至第m个目标物理数据表中。
[0004]
在本技术的一种示例性实施例中,所述客户端内存储有查询参数数据表,查询参数数据表中包括若干候选查询参数,以及每一候选查询参数对应的数据存储量;候选查询参数用于在milvus数据库中查询数据;在步骤s600之后,所述基于milvus数据库的数据处理方法还包括:s710、获取用户输入的目标逻辑数据表对应的原始查询信息,原始查询信息包括查询条件和查询时间段t0=[s1,s2];s1为查询时间段t0的起始设定时间点;s2为查询时间段t0的截止设定时间点;s1<s2;s720、若t0与qm有交集,则将qm对应的目标物理数据表确定为待查询物理数据表;s730、获取每一待查询物理数据表的当前数据存储量;s740、根据查询参数数据表,获取每一待查询物理数据表的当前数据存储量对应的目标查询参数;s750、根据查询条件、查询时间段t0和每一目标查询参数,生成目标查询信息;s760、将目标查询信息输入milvus数据库,以得到milvus数据库返回的查询结果。
[0005]
在本技术的一种示例性实施例中,客户端被配置为每隔设定时间,获取所有目标物理数据表的当前数据存储量,并存储于数据量列表中;所述步骤s730还包括:s731、根据数据量列表,获取每一待查询物理数据表的当前数据存储量。
[0006]
在本技术的一种示例性实施例中,步骤s100还包括:s110、对待处理集合中的数据进行数据清理,将存在有空字段的数据删除,将不存在空字段的数据确定为待处理数据。
[0007]
在本技术的一种示例性实施例中,客户端的当前时间为客户端的内存所在中央处理器系统的当前时间。
[0008]
在本技术的一种示例性实施例中,在步骤s510之后,所述基于milvus数据库的数据处理方法还包括:s520、控制milvus数据库将第一物理数据表加载至内存中。
[0009]
在本技术的一种示例性实施例中,第一时间t0通过时间确定函数转换为当前年份的周次数和距离当前时间的天数,时间确定函数为isoweek函数。
[0010]
在本技术的一种示例性实施例中,第一物理数据表的名称为第一时间t0转换的当前年份的周次数与客户端名称的组合。
[0011]
根据本技术的一个方面,提供一种非瞬时性计算机可读存储介质,所述存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现所述基于milvus数据库的数据处理方法。
[0012]
根据本技术的一个方面,提供一种电子设备,包括处理器和所述非瞬时性计算机可读存储介质。
[0013]
本发明至少具有以下有益效果:本发明通过待处理数据的时间信息,去查询与待处理数据对应的逻辑数据表关联的物理数据表的时间范围,若待处理数据的时间信息存在于对应的物理数据表的时间范围内,则直接将该待处理数据存储至此物理数据表中,若待处理数据的时间信息不存在于对应的物理数据表的时间范围内,则在milvus数据库中建立一个新的物理数据表,并设定新的物理数据表的时间范围,以使待处理数据的时间信息存在于新的物理数据表的时间范围内,此种数据处理方式简化了数据处理过程,且不需要对milvus数据库中的物理数据表进行分区,而是以一个物理数据表代替了一个分区,同时在显示数据时,通过逻辑数据表获取每一对应的物理数据表中的数据,并统一在逻辑数据表中显示,使得用户在前端浏览数据时,仍可以以一张表的形式浏览。
[0014]
同时,本技术中,当目标逻辑数据表增加了新对应的物理数据表后(相当于现有的物理表增加了新的分区),可以直接仅将新增的物理数据表(即第一物理数据表)加载至内存中,而不需要将目标逻辑数据表关联的其他已加载进内存的目标物理数据表从内存中释放再重新加载,从而解决了目前milvus数据库中分区物理表在新增分区加载操作时对所有物理表数据先释放再加载的问题。
附图说明
[0015]
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0016]
图1为本发明实施例提供的客户端与milvus数据库的连接框图;图2为本发明实施例提供的基于milvus数据库的数据处理方法的流程图。
具体实施方式
[0017]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0018]
milvus数据库为用于处理输入向量查询的数据库,其能够以万亿规模来索引向量,与现有的主要按照预定义模式处理结构化数据的关系数据库不同,milvus数据库是自下而上设计的,其用于处理从非结构化数据转换而来的嵌入向量。
[0019]
现有的milvus数据库中的物理表划分为多个分区,根据每行数据指定一个标签(tag),再利用开源软件meta manager模块查询该标签指定的分区,最后将待处理数据写入指定的分区内,此种数据处理方式在以日期作为分区标准进行内存加载数据时,若对物理表新增分区的数据进行内存加载时,受限于milvus数据库的限制,新增的分区不会自动加载到内存中,就需将当前物理表的所有分区数据进行释放再进行加载,而数据加载和释放
过程耗时且消耗服务器资源,数据处理较为繁琐。所以,为了弥补现有milvus数据库的物理表分区的数据处理过程复杂的缺陷,提出一种基于milvus数据库的数据处理方法。
[0020]
如图1所示,一种基于milvus数据库的数据处理方法,应用于客户端,客户端连接有milvus数据库,客户端中包括若干逻辑数据表,每个逻辑数据表对应有若干个物理数据表,每个物理数据表存储在milvus数据库中,当逻辑数据表被打开时,逻辑数据表获取对应的所有物理数据表中的数据,并在逻辑数据表中显示,每一物理数据表均具有对应的时间范围,且同一逻辑数据表对应的多个物理数据表之间对应的时间范围互不重合;每个物理数据表中的数据均包括时间信息,且每一数据的时间信息均属于其所在物理数据表的时间范围之内,客户端内还存储有查询参数数据表,查询参数数据表中包括若干候选查询参数,以及每一候选查询参数对应的数据存储量;候选查询参数用于在milvus数据库中查询数据。
[0021]
客户端中存在若干个逻辑数据表,每个逻辑数据表又对应有多个物理数据表,逻辑数据表即在客户端中向客户展示的数据表,物理数据表即在后台操作的数据表,并不会向客户展示,当其中一个逻辑数据表打开展示时,其对应的所有物理数据表均打开并按照时间信息进行排列,以组成逻辑数据表,如客户端中存在三个逻辑数据表,分别为a、b、c,其分别对应三个不同的功能数据表,逻辑数据表a中又包括两个物理数据表a和b,物理数据表a对应的时间范围为2022年的第一周到第二周,表示物理数据表a中的数据的存储时间在2022年的第一周到第二周之间,物理数据表b对应的时间范围为2022年的第二周到第三周,表示物理数据表b中的数据的存储时间在2022年的第二周到第三周之间,当逻辑数据表a在客户端打开时,物理数据表a和b也打开并以时间顺序进行数据排列,供用户查看,但用户只会查看到一个数据表,即逻辑数据表a,而物理数据表a和b则在后台进行操作。
[0022]
通过将milvus数据库中的逻辑数据表以时间范围拆分成多个物理数据表,可以在数据操作时,只对操作的数据所在的物理数据表进行操作,而无需对其他物理数据表进行操作,简便了数据处理过程,且用户仍只查看到一个数据表,不会降低用户的体验感。
[0023]
如图2所示,所述基于milvus数据库的数据处理方法,包括如下步骤:s100、获取用户输入的目标逻辑数据表对应的待处理集合,待处理集合中包括若干个待处理数据;目标逻辑数据表为若干逻辑数据表中任意一个,目标逻辑数据表对应的物理数据表为目标物理数据表;待处理集合为用户输入的待处理数据的集合,如用户同时输入多个数据,则将输入的多个数据进行组合成为待处理集合,每个待处理集合又对应有一个目标逻辑数据表,即向目标逻辑数据表中输入待处理集合,目标逻辑数据表为所有逻辑数据表之一,用户向哪个逻辑数据表输入待处理数据,哪个逻辑数据表即为目标逻辑数据表,目标逻辑数据表对应的物理数据表则对应确定为目标物理数据表。
[0024]
进一步,步骤s100还包括:s110、对待处理集合中的数据进行数据清理,将存在有空字段的数据删除,将不存在空字段的数据确定为待处理数据;数据清理是指清除掉待处理集合中存在空字段的数据,如待处理集合中的某一数据中的某一项为空白项,即未输入信息,则将此数据删除,将不存在空字段的数据确定为待处理数据,数据清理是确定待处理数据的第一步,为了确保用户输入的数据均为有效数据,
删除无效数据,也达到简化数据处理的目的,避免对无效数据进行处理以增加不必要的数据处理时间,节省资源。
[0025]
s200、判断待处理数据中是否包括时间信息;若待处理数据中不包括时间信息,则执行步骤s300;若待处理数据中包括时间信息,则将待处理数据中的时间信息确定为第一时间t0,并执行步骤s400;时间信息可以为时间戳或日期字段等能表示时间的数据信息,待处理数据中可能包括时间信息,表示其为历史数据,以表示要往对应的时间范围的物理数据表中增加,待处理数据中也可能不包括时间信息,表示其为实时数据。
[0026]
s300、获取客户端的当前时间,并将当前时间确定为第一时间t0,并执行步骤s400;客户端的当前时间为客户端的内存所在中央处理器系统的当前时间;若待处理数据中不包括时间信息,则将客户端当前时间确定为其时间信息,表示实时数据。
[0027]
s400、获取每一目标物理数据表对应的时间范围,得到时间信息集q=(q1,...,qm,...,qn),qm=[t
m1
,t
m2
];其中,m=1,...,n;n为目标物理数据表的数量;qm为第m个目标物理数据表对应的时间范围;t
m1
为第m个目标物理数据表的数据存储起始设定时间点;t
m2
为第m个目标物理数据表的数据存储截止设定时间点;t
m1
<t
m2
;确定待处理数据的时间信息后,获取待处理数据对应的所有目标物理数据表的时间范围,即每个目标物理数据表所要存储的数据的时间信息的范围,每个目标物理数据表的时间范围都有一个起始设定时间点和一个截止设定时间点,表示此目标物理数据表中存储的数据的时间信息都在其对应的起始设定时间点和截止设定时间点的时间范围内。
[0028]
同一个逻辑数据表对应的多个物理数据表的时间范围可以连续,也可以不连续,但每个物理数据表的时间范围不重合,如物理数据表a的时间范围为2022年第一周的周一至周日,与物理数据表a对应的同一个逻辑数据表的物理数据表b的时间范围可以为2022年第二周的周一至周日,也可以为其他时间段,但不允许物理数据表a和物理数据表b的时间范围有交集,以保证要输入的待处理数据只存在于一个物理数据表中。
[0029]
s410、若t0∉
qm,则执行步骤s500;若t0∈qm,则执行步骤s600;s500、在milvus数据库中建立第一物理数据表,并建立第一物理数据表与目标逻辑数据表之间的关联关系,并执行步骤s510;若输入的待处理数据的时间信息在其对应的逻辑数据表对应的所有物理数据表中均不存在,则表示当前milvus数据库中不存在该时段的数据,就需在milvus数据库中建立一个新的物理数据表,即第一物理数据表,再将第一物理数据表与待处理数据对应的目标逻辑数据表建立关联关系,以表示第一物理数据表为该目标逻辑数据表下的子数据表,在用户打开目标逻辑数据表时,也将第一物理数据表打开展示。
[0030]
如输入的待处理数据的时间信息为2022年10月9日,而其对应的物理数据表的最近的截止设定时间点为2022年的第32周,2022年10月9日不在2022年的第32周以前,则需要在milvus数据库中建立一个新的物理数据表。
[0031]
进一步,第一时间t0通过时间确定函数转换为当前年份的周次数和距离当前时间的天数,时间确定函数为isoweek函数。
[0032]
通过isoweek函数将待处理数据的第一时间t0转换为当前年份的周次数,如第一
时间t0为2022年10月9日,则通过isoweek函数转换为2022年的第41周,第一物理数据表的名称为第一时间t0转换的当前年份的周次数与客户端名称的组合,即将客户端名称加2022年的第41周命名为第一物理数据表的名称,通过时间和客户端的组合来对物理数据表命名,可以方便数据的查找和添加,当有一个待处理数据需要添加进逻辑数据表中时,直接查找对应的物理数据表的名称,即可获得对应物理数据表的时间范围,简便了数据处理过程。
[0033]
s510、将待处理数据存储至第一物理数据表中;进一步,在步骤s510之后,所述基于milvus数据库的数据处理方法还包括:s520、控制milvus数据库将第一物理数据表加载至内存中,方便客户端的读取。
[0034]
s600、将待处理数据存储至第m个目标物理数据表中。
[0035]
通过待处理数据的时间信息,去查询与待处理数据对应的逻辑数据表关联的物理数据表的时间范围,若待处理数据的时间信息存在于对应的物理数据表的时间范围内,则直接将该待处理数据存储至此物理数据表中,若待处理数据的时间信息不存在于对应的物理数据表的时间范围内,则在milvus数据库中建立一个新的物理数据表,并设定新的物理数据表的时间范围,以使待处理数据的时间信息存在于新的物理数据表的时间范围内,此种数据处理方式简化了数据处理过程,且不需要对milvus数据库中的物理数据表进行分区,而是以一个物理数据表代替了一个分区,同时在显示数据时,通过逻辑数据表获取每一对应的物理数据表中的数据,并统一在逻辑数据表中显示,使得用户在前端浏览数据时,仍可以以一张表的形式浏览。
[0036]
同时,本技术中,当目标逻辑数据表增加了新对应的物理数据表后(相当于现有的物理表增加了新的分区),可以直接仅将新增的物理数据表(即第一物理数据表)加载至内存中,而不需要将目标逻辑数据表关联的其他已加载进内存的目标物理数据表从内存中释放再重新加载,从而解决了目前milvus数据库中分区物理表在新增分区加载操作时对所有物理表数据先释放再加载的问题。
[0037]
目前除了对逻辑数据表进行数据增加外,对逻辑数据表的操作还包括数据查询操作,即用户输入查询条件、查询时间段和查询参数,对逻辑数据表进行数据查询,找到对应的数据。
[0038]
目前用户在对逻辑数据表进行数据查询时,需要输入三个因素,即查询条件、查询时间段和查询参数,查询参数表示milvus数据库查询所涉及的向量个数,后台根据查询条件和查询参数去milvus数据库中查找查询时间段内的所有数据。如果不使用任何分区表,随着单张逻辑数据表的数据量的增大,单张逻辑数据表会变得很臃肿,查询条件即查询语句不得不遍历所有数据,使查询延迟增大,资源开销也会随之增加,导致其查询性能不断下降。
[0039]
而现有的milvus数据库分区功能不适用于按照日期等分区增加的业务场景,因为增加的分区不会自动加载到内存中,只能释放当前集合的所有数据,再进行重新加载内存,其查询性能也较低,查询工作量大,且占用资源也较大,查询时间延长,继而影响用户体验。
[0040]
所以,为了解决现有milvus数据库查询性能较低的问题,提出本发明的第二实施例,如下:在步骤s600之后,所述基于milvus数据库的数据处理方法还包括:s710、获取用户输入的目标逻辑数据表对应的原始查询信息,原始查询信息包括
查询条件和查询时间段t0=[s1,s2];s1为查询时间段t0的起始设定时间点;s2为查询时间段t0的截止设定时间点;s1<s2;本发明的第二实施例的数据查询中,用户只需输入查询条件和查询时间段即可,无需再输入查询参数,由于查询参数受到多种因素影响,无法确定一个合适的数值,所以,现有的数据查询方式需要用户自行去查询合适的查询参数,增加了用户的工作量,而本发明无需用户输入查询参数,查询参数与物理数据表的数据存储量的对应关系在客户端中存储,简化了用户的处理步骤。
[0041]
s720、若t0与qm有交集,则将qm对应的目标物理数据表确定为待查询物理数据表;t0与qm有交集,则说明用户要查的数据在qm对应的目标物理数据表中,将其确定为待查询物理数据表。
[0042]
s730、获取每一待查询物理数据表的当前数据存储量;进一步,客户端被配置为每隔设定时间,获取所有目标物理数据表的当前数据存储量,并存储于数据量列表中;所述步骤s730还包括:s731、根据数据量列表,获取每一待查询物理数据表的当前数据存储量,确保用户在输入查询条件时,客户端缩短目标物理数据表的数据存储量的获取时间;s740、根据查询参数数据表,获取每一待查询物理数据表的当前数据存储量对应的目标查询参数;查询参数数据表中有查询参数与对应的数据存储量的关联关系,通过待查询物理数据表的当前数据存储量,在查询参数数据表中找到对应的查询参数。
[0043]
s750、根据查询条件、查询时间段t0和每一目标查询参数,生成目标查询信息;s760、将目标查询信息输入milvus数据库,以得到milvus数据库返回的查询结果。
[0044]
本发明的第二实施例中,用户只需要向客户端输入查询条件和查询时间段,后台通过查询条件找到对应的逻辑数据表,通过查询时间段找到逻辑数据表对应的物理数据表,再从对应的物理数据表中找到查询的数据,并反馈至客户端以展示给用户。无需用户输入查询参数,查询参数与物理数据表的数据存储量的关系存储至客户端中,由于查询参数与数据存储量的对应关系是通过测试得到的,所以可以保证数据查询的准确率,又由于数据存储量是后台批次获取的,可以避免每一次数据查询都需要获取对应的物理数据表的数据存储量,减少了资源开销的同时也提高了系统性能,简化了用户的操作流程。
[0045]
本发明的实施例还提供了一种非瞬时性计算机可读存储介质,该存储介质可设置于电子设备之中以保存用于实现方法实施例中一种方法相关的至少一条指令或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现上述实施例提供的方法。
[0046]
本发明的实施例还提供了一种电子设备,包括处理器和前述的非瞬时性计算机可读存储介质。
[0047]
本发明的实施例还提供一种计算机程序产品,其包括程序代码,当所述程序产品在电子设备上运行时,所述程序代码用于使该电子设备执行本说明书上述描述的根据本发明各种示例性实施方式的方法中的步骤。
[0048]
虽然已经通过示例对本发明的一些特定实施例进行了详细说明,但是本领域的技
术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本发明的范围。本领域的技术人员还应理解,可以对实施例进行多种修改而不脱离本发明的范围和精神。本发明开的范围由所附权利要求来限定。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献