数据存储方法、装置及计算机设备与流程

文档序号:16999501发布日期:2019-03-02 01:39阅读:155来源:国知局
数据存储方法、装置及计算机设备与流程
本发明涉及数据存储
技术领域
,具体而言,涉及一种数据存储调整方法、装置及计算机设备。
背景技术
:随着大数据的兴起,采用数据库对数据进行存储受到广泛的应用。但随着需要存储的数据越来越多,数据库内存储的数据量过大,并且数据库的访问量也随之增大,增大了数据库对外提供服务的压力,降低了数据访问速度。技术实现要素:针对上述现有技术中存在的问题,本发明提供了一种数据存储方法、装置及计算机设备,可以实现通过多个存储节点分散地存储数据,减少单个存储节点上存储的数据量,提高数据访问速度。第一方面,本发明实施例提供了一种数据存储方法,其中,包括:接收待存储数据;获取索引,所述索引为数据类型与存储节点的关联关系;基于所述索引确定所述待存储数据对应的数据类型;基于确定的数据类型在所述索引中找到目标存储节点;将所述待存储数据存储至所述目标存储节点。结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,所述待存储数据包括至少一个数据字段;所述索引中的数据类型包括:至少一个关键字段。结合第一方面的第一种可能的实施方式,本发明实施例提供了第一方面的第二种可能的实施方式,其中,所述基于所述索引确定所述待存储数据对应的数据类型,包括:如果所述索引中的一个数据类型中所有的关键字段均能在所述待存储数据中匹配到相同的数据字段,则判定所述待存储数据属于该数据类型。结合第一方面的第二种可能的实施方式,本发明实施例提供了第一方面的第三种可能的实施方式,其中,每个所述关键字段包括:关键字和第一对应值;每个所述数据字段包括:标签名和第二对应值;如果一个关键字段的关键字和一个数据字段的标签名相同,且第一对应值和第二对应值相同,则判定所述关键字段与所述数据字段相同。结合第一方面至第一方面的第三种可能的实施方式中的任意一项实施方式,本发明实施例提供了第一方面的第四种可能的实施方式,其中,所述基于确定的数据类型在所述索引中找到目标存储节点,还包括:如果基于确定的数据类型在所述索引中找到一个存储节点,则确定所述存储节点中与所述待存储数据对应的数据类型的存储空间;如果所述存储空间未满,则将找到的存储节点确定为所述目标存储节点;如果所述存储空间已满,则新增一个存储节点,并将新增的所述存储节点确定为所述目标存储节点,并在所述索引中增加所述数据类型与新增的存储节点的关联关系。结合第一方面的第四种可能的实施方式,本发明实施例提供了第一方面的第五种可能的实施方式,其中,通过以下方方法判断所述存储空间已满:获取与所述存储空间对应的存储量阈值和当前存储量值;如果所述当前存储量值小于所述存储量阈值,则判定所述存储空间未满,否则,则判定存储空间已满。结合第一方面至第一方面的第三种可能的实施方式中的任意一项实施方式,本发明实施例提供了第一方面的第六种可能的实施方式,其中,所述基于确定的数据类型在所述索引中找到目标存储节点,还包括如果基于确定的数据类型在所述索引中找到多个存储节点,则通过以下方法从多个存储节点中确定一个为所述目标存储节点:确定每个所述存储节点中与所述待存储数据对应的数据类型的存储空间;从多个存储节点中选择存储空间剩余量最大的存储节点作为目标存储节点。结合第一方面的第六种可能的实施方式,本发明实施例提供了第一方面的第七种可能的实施方式,其中,通过以下方法确定所述存储空间的剩余量:获取与所述存储空间对应的存储量阈值和当前存储量值;对当前存储量值和存储量阈值进行比值计算;基于所述比值确定所述存储空间的剩余量。第二方面,本发明实施例还提供了一种数据存储装置,其中,所述装置包括:数据接收模块,用于接收待存储数据;索引获取模块,用于获取索引,所述索引为数据类型与存储节点的关联关系;数据存储模块,用于基于所述索引确定所述待存储数据对应的数据类型;基于确定的数据类型在所述索引中找到目标存储节点;将所述待存储数据存储至所述目标存储节点。结合第二方面,本发明实施例提供了第二方面的第一种可能的实施方式,其中,所述待存储数据包括至少一个数据字段;所述索引中的数据类型包括至少一个关键字段。结合第二方面的第一种可能的实施方式,本发明实施例提供了第二方面的第二种可能的实施方式,其中,所述数据存储模块还用于:如果所述索引中的一个数据类型中所有的关键字段均能在所述待存储数据中匹配到相同的数据字段,则判定所述待存储数据属于该数据类型。结合第二方面的第二种可能的实施方式,本发明实施例提供了第二方面的第三种可能的实施方式,其中,每个所述关键字段包括:关键字和第一对应值;每个所述数据字段包括:标签名和第二对应值;所述数据存储模块还用于:如果一个关键字段的关键字和一个数据字段的标签名相同,且第一对应值和第二对应值相同,则判定所述关键字段与所述数据字段相同。结合第二方面至第二方面的第三种可能的实施方式中的任意一项实施方式,本发明实施例提供了第二方面的第四种可能的实施方式,其中,所述数据存储模块还用于:如果基于确定的数据类型在所述索引中找到一个存储节点,则确定所述存储节点中与所述待存储数据对应的数据类型的存储空间;如果所述存储空间未满,则将找到的存储节点确定为所述目标存储节点;如果所述存储空间已满,则新增一个存储节点,并将新增的所述存储节点确定为所述目标存储节点,并在所述索引中增加所述数据类型与新增的存储节点的关联关系。结合第二方面的第四种可能的实施方式,本发明实施例提供了第二方面的第五种可能的实施方式,其中,所述数据存储模块还用于:获取与所述存储空间对应的存储量阈值和当前存储量值;如果所述当前存储量值小于所述存储量阈值,则判定所述存储空间未满,否则,则判定存储空间已满。结合第二方面至第二方面的第三种可能的实施方式中的任意一项实施方式,本发明实施例提供了第二方面的第六种可能的实施方式,其中,所述数据存储模块还用于:确定每个所述存储节点中与所述待存储数据对应的数据类型的存储空间;从多个存储节点中选择存储空间剩余量最大的存储节点作为目标存储节点。结合第二方面的第种可能的实施方式,本发明实施例提供了第二方面的第七种可能的实施方式,其中,所述数据存储模块还用于:获取与所述存储空间对应的存储量阈值和当前存储量值;对当前存储量值和存储量阈值进行比值计算;基于所述比值确定所述存储空间的剩余量。第三方面,本发明实施例还提供了一种计算机设备,其中,包括处理器和存储器,所述存储器中存储有能够被所述处理器执行的机器可执行指令,所述处理器执行所述机器可执行指令以实现第一方面中任一项所述的方法。第四方面,本发明实施例还提供了一种计算机可读存储介质,其中,所述计算机可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现第一方面的任一项所述的方法。本发明实施例带来了以下有益效果:本发明实施例提供的数据存储方法、装置及计算机设备,设置有多个存储节点,且将数据类型与存储节点的关联关系预先保存在索引中,当接收到待存储数据时,可以根据索引确定待存储数据对应的数据类型,并根据确定的数据类型在索引中找到目标存储节点,从而将待存储数据存储至目标存储节点上,可以实现通过多个存储节点分散地存储数据,减少单个存储节点上存储的数据量,提高数据访问速度。本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。附图说明为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明一实施例所提供的数据存储方法的流程图;图2为图1中步骤s108的流程图;图3为本发明另一实施例所提供的数据存储装置的结构框图;图4为本发明一实施例所提供的一种计算机设备的结构框图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。针对现有的数据库内存储的数据量过大,降低了数据库的访问速度的问题,本发明实施例提供了一种数据存储方法、装置及计算机设备,以下首先对本发明的数据存储方法进行详细介绍。实施例一本实施例提供了一种数据存储方法,应用于数据库中,也可以说应用于数据库的管理节点。示例性地,该数据库可以采用非结构式数据库,例如es(elasticsearch)数据库,es数据库是一个兼有搜索引擎和nosql数据库功能的开源系统,基于java/lucene语言构建,可以用于全文搜索,结构化搜索以及实时分析。如图1所示,该方法包括如下步骤:步骤s102,接收待存储数据。数据库的管理节点接收待存储数据。待存储数据中可以包括一个或多个数据字段,每个数据字段包括标签名和第二对应值。步骤s104,获取索引。其中,索引中存储有数据类型与存储节点的关联关系。索引可以存储于该数据库对应的缓存中,例如,该缓存可以是redis(数据结构缓存器)。数据库的管理节点在接收到待存储数据后,从缓存中读取索引。与从存储节点或从硬盘中读取索引相比,从缓存中读取索引,读取速度更快。在一种可选的实施例中,索引可以采用表格的形式存储数据类型与存储节点的关联关系,如表1所示。表1数据类型存储节点type=1、area=2、user=3;node1type=4、area=5、user=6;node2type=7、area=8、user=9;node3、node4从表1中可以看出,索引中的数据类型包括一个或多个关键字段,每个关键字段包括关键字和第一对应值。如索引中的第一种数据类型包括三个关键字段,分别为:type=1、area=2、user=3。步骤s106,基于索引确定待存储数据对应的数据类型。如果一个关键字段的关键字和一个数据字段的标签名相同,且该关键字的第一对应值和该标签名的第二对应值相同,则认为该关键字段与该数据字段相同。如果索引中的一个数据类型中所有的关键字段均能在待存储数据中匹配到相同的数据字段,则判定待存储数据属于该数据类型。步骤s108,基于确定的数据类型在索引中找到目标存储节点。由于索引中存储有数据类型与存储节点的关联关系,因此基于确定的数据类型可以在索引中找到对应的存储节点,将找到的存储节点作为目标存储节点。步骤s110,将待存储数据存储至目标存储节点。可选地,上述步骤s108可以采用图2所示的方式实现,包括:步骤s1081,基于确定的数据类型在索引中查找目标存储节点。步骤s1082,判断查找到的目标存储节点是否仅包含一个存储节点;如果是,执行步骤s1083;如果否,执行步骤s1087。步骤s1083,确定该存储节点中与待存储数据对应的数据类型的存储空间。在一种可选的实施例中,缓存中存储有各个存储节点的存储空间参数,包括存储空间对应的存储量阈值和当前存储量值。各个存储节点的存储空间参数可以存储在索引中。示例性地,表1所示的索引中的各个存储节点的存储空间参数为:node1:存储量阈值200、当前存储量值100;node2:存储量阈值200、当前存储量值200;node3:存储量阈值200、当前存储量值100;node4:存储量阈值200、当前存储量值150。步骤s1084,判断该存储空间是否已满;如果是,执行步骤s1086;如果否,执行步骤s1085。可以通过以下步骤来判断存储空间是否已满:获取与存储空间对应的存储量阈值和当前存储量值,可以从缓存中读取存储空间对应的存储量阈值和当前存储量值。如果当前存储量值小于存储量阈值,则判定存储空间未满,否则,则判定存储空间已满。步骤s1085,将找到的存储节点确定为目标存储节点。例如,当获取的待存储数据为<type=1;area=2;user=3;……….>时,获取的索引如表1所示,根据索引可以确定待存储数据对应的数据类型为索引中的第一种数据类型:type=1、area=2、user=3,该数据类型对应的存储节点为node1。从缓存中获取node1的存储空间参数为:存储量阈值200、当前存储量值100。由于当前存储量值100小于存储量阈值200,因此,该存储节点的存储空间未满,将node1作为目标存储节点,将待存储数据存储至node1。步骤s1086,新增一个存储节点,并将新增的存储节点确定为目标存储节点,并在索引中增加数据类型与新增的存储节点的关联关系。例如,当获取的待存储数据为<type=4、area=5、user=6;……….>时,获取的索引如表1所示,根据索引可以确定待存储数据对应的数据类型为索引中的第二种数据类型:type=4、area=5、user=6,该数据类型对应的存储节点为node2。从缓存中获取node2节点的存储空间参数为:存储量阈值200、当前存储量值200。由于当前存储量值200不小于存储量阈值200,因此,该存储节点的存储空间已满,可以新增一个存储节点node5,并在索引中的第二种数据类型(type=4、area=5、user=6)所对应的存储节点中增加存储节点node5。将待存储数据存储至node5。步骤s1087,确定每个存储节点中与待存储数据对应的数据类型的存储空间。如果查找到的目标存储节点包含多个存储节点,确定每个存储节点中与待存储数据对应的数据类型的存储空间。步骤s1088,从多个存储节点中选择存储空间剩余量最大的存储节点作为目标存储节点。同样,可以从缓存中获取与存储空间对应的存储量阈值和当前存储量值;对当前存储量值和存储量阈值进行比值计算;基于比值确定存储空间的剩余量,选择存储空间剩余量最大的存储节点作为目标存储节点。例如,当获取的待存储数据为<type=7、area=8、user=9;……….>时,获取的索引如表1所示,根据索引可以确定待存储数据对应的数据类型为索引中的第三种数据类型:type=7、area=8、user=9,且该数据类型对应的存储节点为node3和node4。从缓存中获取node3的存储空间参数为:存储量阈值200、当前存储量值100;node4的存储空间参数为:存储量阈值200、当前存储量值150。计算得到node3的存储空间剩余量为100/200,node4的存储空间剩余量为150/200,可以看出,node3的存储空间剩余量大于node4的存储空间剩余量。因此,将node3作为目标存储节点,将待存储数据存储至node3。本发明实施例提供的数据存储方法,设置有多个存储节点,且将数据类型与存储节点的关联关系预先保存在索引中,当接收到待存储数据时,可以根据索引确定待存储数据对应的数据类型,并根据确定的数据类型在索引中找到目标存储节点,从而将待存储数据存储至目标存储节点上,可以实现通过多个存储节点分散地存储数据,减少单个存储节点上存储的数据量,提高数据访问速度,同时,达到数据库中的数据存储均衡的效果。实施例二与上述方法实施例相对应地,本实施例提供了一种数据存储装置,如图3所示,该装置包括:数据接收模块31,用于接收待存储数据。索引获取模块32,用于获取索引,索引为数据类型与存储节点的关联关系。数据存储模块33,用于基于索引确定待存储数据对应的数据类型;基于确定的数据类型在索引中找到目标存储节点;将待存储数据存储至目标存储节点。上述待存储数据包括至少一个数据字段;索引中的数据类型包括至少一个关键字段。进一步地,上述数据存储模块33还用于:如果索引中的一个数据类型中所有的关键字段均能在待存储数据中匹配到相同的数据字段,则判定待存储数据属于该数据类型。每个关键字段包括:关键字和第一对应值;每个数据字段包括:标签名和第二对应值;上述数据存储模块还用于:如果一个关键字段的关键字和一个数据字段的标签名相同,且第一对应值和第二对应值相同,则判定关键字段与数据字段相同。上述数据存储模块33还用于:如果基于确定的数据类型在索引中找到一个存储节点,则确定存储节点中与待存储数据对应的数据类型的存储空间;如果存储空间未满,则将找到的存储节点确定为目标存储节点;如果存储空间已满,则新增一个存储节点,并将新增的存储节点确定为目标存储节点,并在索引中增加数据类型与新增的存储节点的关联关系。上述数据存储模块33还用于:获取与存储空间对应的存储量阈值和当前存储量值;如果当前存储量值小于存储量阈值,则判定存储空间未满,否则,则判定存储空间已满。上述数据存储模块33还用于:确定每个存储节点中与待存储数据对应的数据类型的存储空间;从多个存储节点中选择存储空间剩余量最大的存储节点作为目标存储节点。上述数据存储模块33还用于:获取与存储空间对应的存储量阈值和当前存储量值;对当前存储量值和存储量阈值进行比值计算;基于比值确定存储空间的剩余量。本发明实施例提供的数据存储装置,设置有多个存储节点,且将数据类型与存储节点的关联关系预先保存在索引中,当接收到待存储数据时,可以根据索引确定待存储数据对应的数据类型,并根据确定的数据类型在索引中找到目标存储节点,从而将待存储数据存储至目标存储节点上,可以实现通过多个存储节点分散地存储数据,减少单个存储节点上存储的数据量,提高数据访问速度,同时,达到数据库中的数据存储均衡的效果。实施例三在上述实施例的基础上,本公开实施例还提供了一种计算机设备,如图4所示,该计算机设备包括处理器41,存储器42和总线43。其中,存储器42,可用于存储软件程序以及模块,如本发明实施例中的数据存储装置对应的程序指令/模块,以及处理器41通过运行存储在存储器42的软件程序以及模块,从而执行对应的各种功能应用以及数据处理,如本发明实施例提供的数据存储方法,存储器42可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(如本发明实施例的数据存储方法)等;存储数据区可存储根据显示设备的使用所创建的数据(比如各种实施例数据)等。此外,存储器42可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。处理器41是该电子设备的控制中心,利用各种接口和线路连接整个设备的各个部分,通过运行或执行存储在存储器42内的软件程序和/或模块,以及调用存储在存储器42内的数据,执行各种功能和处理数据,从而对电子设备进行整体监控。可选的,处理器41可包括一个或多个处理单元。总线43,连接该计算机设备的各个模块单元,用于向处理器41发出的控制指令信息,以及将存储器42存储的信息传输给处理器41。本发明实施例提供的计算机设备还可包括比图4中所示更多或者更少的组件,或者具有与图4所示不同的配置。图4中所示的各组件可以采用硬件、软件或其组合实现。进一步地,本发明实施例还提供了一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现上述的数据备份方法。本发明实施例提供的数据存储方法、装置及计算机设备具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。需要说明的是,在本发明所提供的实施例中,应该理解到,所揭露系统和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本
技术领域
的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1