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

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

2022-11-19 07:02:46 来源:中国专利 TAG:
1.本技术涉及数据库
技术领域
:,更具体地,涉及一种数据存储方法、装置、存储介质及计算机设备。
背景技术
::2.数据库(database)是指按照数据结构来组织、存储和管理数据的仓库。具体为一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。随着社会的发展,数据量急剧增长,现在人们借助计算机和数据库技术科学的保存大量的数据,以便能更好的利用这些数据资源。3.目前,在利用数据库进行数据存储时,通常会基于业务需求建立对应的数据库,并且按照月份对数据库进行分表。然而,由于不同业务之间的数据规模往往会存在较大差距,使用按月分表的数据表来存储数据时容易导致单表存储不均,进而造成单表承载压力过大或单表存储资源浪费的情况。技术实现要素:4.本技术实施例提供一种数据存储方法、装置、存储介质以及计算机设备。旨在提升数据库的单表之间存储数据的均衡性。5.一方面,本技术实施例提供一种数据存储方法,该方法包括:响应于存储请求确定关键字,关键字至少包括数据表名;根据关键字判断在第一数据库中是否查找到对应的目标主键标号,目标主键标号用于表征待存储数据在数据表中的唯一标识;若在第一数据库中查找到对应的目标主键标号,则根据目标主键标号将待存储数据进行数据存储。6.可选地,根据目标主键标号将待存储数据进行数据存储,包括:确定当前时间点所处的存储时间;根据存储时间和目标主键标号确定第二数据库中的目标数据表;将待存储数据存储至目标数据表。7.可选地,将待存储数据存储至目标数据表,包括:根据目标主键标号确定待存储数据的在目标数据表中的存储位置;根据存储位置将待存储数据插入至存储位置。8.可选地,存储时间包括月份存储时间,确定当前时间点所处的存储时间,包括:确定当前时间点所处的月份存储时间;根据存储时间和目标主键标号确定第二数据库中的目标数据表,包括:将月份存储时间与第二数据库中每个数据表的存储时间进行匹配,获取存储时间与月份存储时间匹配的至少一个月份匹配数据表;根据目标主键标号从至少一个月份匹配数据表中确定目标数据表。9.可选地,根据目标主键标号从至少一个月份匹配数据表中确定目标数据表,包括:获取每个月份匹配数据表的标号范围;将目标主键标号与每个月份匹配数据表的标号范围进行匹配,并将标号范围包括目标主键标号的月份匹配数据表作为目标数据表。10.可选地,在根据关键字判断在第一数据库中是否查找到对应的目标主键标号之后,还包括:若未在第一数据库中获取目标主键标号,则执行号段生成操作;判断号段生成操作是否执行成功;若号段生成操作执行成功,则将生成的主键标号存储至第一数据库。11.可选地,在根据关键字判断在第一数据库中是否查找到对应的目标主键标号之后,还包括:若号段生成操作未执行成功,则重新确定关键字;返回执行根据关键字判断在第一数据库中是否查找到对应的目标主键标号。12.可选地,执行号段生成操作,包括:获取主键号段表,主键号段表至少包括最大主键标号、号段步长、版本号;根据最大主键标号、号段长度和版本号生成预设数量的主键标号。13.可选地,在根据最大主键标号、号段长度和版本号生成预设数量的主键标号之后,还包括:对最大主键标号和版本号进行更新。14.可选地,在响应于存储请求确定关键字之前,还包括:获取第一数据库中主键标号的使用率;判断使用率是否大于预设阈值,预设阈值用于表征第一数据库中存储主键标号的最低数量;若使用率大于预设阈值,则执行号段生成操作。15.另一方面,本技术实施例还提供一种数据存储装置,该装置包括:确定模块,用于响应于存储请求确定关键字,所述关键字至少包括数据表名;查找模块,用于根据所述关键字判断在第一数据库中是否查找到对应的目标主键标号,所述目标主键标号用于表征待存储数据在数据表中的唯一标识;存储模块,用于若在第一数据库中查找到对应的目标主键标号,则根据所述目标主键标号将所述待存储数据进行数据存储。16.可选地,存储模块可以包括时间确定单元、数据表确定单元以及数据存储单元。时间确定单元,用于确定当前时间点所处的存储时间;数据表确定单元,用于根据所述存储时间和所述目标主键标号确定第二数据库中的目标数据表;数据存储单元,用于将所述待存储数据存储至所述目标数据表。17.可选地,数据存储单元可以具体用于:根据目标主键标号确定所述待存储数据的在所述目标数据表中的存储位置;根据所述存储位置将所述待存储数据插入至所述存储位置。18.可选地,所述存储时间包括月份存储时间,时间确定单元可以具体用于确定当前时间点所处的月份存储时间;19.数据表确定单元可以包括:时间匹配子单元以及数据表确定子单元。时间匹配子单元,用于将所述月份存储时间与第二数据库中每个数据表的存储时间进行匹配,获取存储时间与所述月份存储时间匹配的至少一个月份匹配数据表;数据表确定子单元,用于根据目标主键标号从所述至少一个月份匹配数据表中确定目标数据表。20.可选地,数据表确定子单元可以具体用于:获取每个所述月份匹配数据表的标号范围;将所述目标主键标号与每个所述月份匹配数据表的标号范围进行匹配,并将标号范围包括所述目标主键标号的月份匹配数据表作为目标数据表。21.可选地,数据存储装置还可以包括:第一执行模块,用于若未在第一数据库中获取目标主键标号,则执行号段生成操作;第一判断模块,用于判断所述号段生成操作是否执行成功;第二存储模块,用于若所述号段生成操作执行成功,则将生成的主键标号存储至所述第一数据库。22.可选地,数据存储装置还可以包括:第二确定模块,用于若所述号段生成操作未执行成功,则重新确定关键字;第二查找模块,用于返回执行根据所述关键字判断在第一数据库中是否查找到对应的目标主键标号。23.可选地,执行模块可以具体用于:获取主键号段表,所述主键号段表至少包括最大主键标号、号段步长、版本号;根据所述最大主键标号、所述号段长度和所述版本号生成预设数量的主键标号。24.可选地,执行模块还可以具体用于:对所述最大主键标号和所述版本号进行更新。25.可选地,数据存储装置还可以包括:获取模块,用于获取第一数据库中主键标号的使用率;第二判断模块,用于判断所述使用率是否大于预设阈值,所述预设阈值用于表征所述第一数据库中存储主键标号的最低数量;第二执行模块,用于若所述使用率大于所述预设阈值,则执行号段生成操作。26.另一方面,本技术实施例还提供一种计算机设备,该计算机设备包括处理器以及存储器,存储器存储有计算机程序指令,计算机程序指令被处理器调用时执行上述的数据存储方法。27.另一方面,本技术实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有程序代码,其中,在所述程序代码被处理器运行时执行上述的数据存储方法。28.另一方面,本技术实施例还提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,所述计算机指令存储在存储介质中。计算机设备的处理器从存储介质读取所述计算机指令,处理器执行所述计算机指令,使得所述计算机执行上述数据存储方法中的步骤。29.本技术提供的一种数据存储方法,可以响应于存储请求确定关键字,并根据关键字判断在第一数据库中是否查找到对应的目标主键标号,该目标主键标号用于表征待存储数据在数据表中的唯一标识,若在第一数据库中查找到对应的目标主键标号,则根据目标主键标号将待存储数据进行数据存储。如此,在响应存储请求确定关键字后,根据该关键字查询出存储数据的目标主键标号,并根据该目标主键标号确定对应的分表,进而将存储数存储至该分表中。从而使得待存储数据可以存放至目标主键标号所在的分表中,避免将数据直接存储至月份对应的数据表中,从而减轻单表存储的承载压力,有效地提升数据库中单表之间存储数据的均衡性。附图说明30.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。31.图1示出了本技术实施例提供的一种数据存储方法的流程示意图。32.图2示出了本技术实施例提供的一种数据存储方法的应用场景示意图。33.图3示出了本技术实施例提供的另一种数据存储方法的流程示意图。34.图4示出了本技术实施例提供的一种主键标号的存储示意图。35.图5示出了本技术实施例提供的一种数据存储任务的流程图。36.图6示出了本技术实施例提供的一种数据存储装置的模块框图。37.图7是本技术实施例提供的一种计算机设备的模块框图。38.图8是本技术实施例提供的一种计算机可读存储介质的模块框图。具体实施方式39.下面详细描述本技术的实施方式,实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性地,仅用于解释本技术,而不能理解为对本技术的限制。40.为了使本
技术领域
:的人员更好地理解本技术的方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整的描述。显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。41.目前,用户在使用数据库管理系统时会按照具体的业务类型建立不同的数据库,例如,某公司主要经营业务a、业务b和业务c,公司为这三类业务分别建立各自对应的数据库以存储业务数据,例如,数据库a、数据库b和数据库c,其中,每个业务数据库中都以月份为划分单位,建立各个月份对应的数据表,例如,数据库a中包含有十二月份各各自对应的数据表进而公司会将业务a每个月的业务数据分别存储至对应月份的数据表中。42.然而,由于每个业务在不同的月份所产生的数据量是不同,不同业务数据规模相差可能较大,单纯的按月分表,很可能超过单表承载的上限。例如,数据表的存储上限为五百万条,若业务a在五月份的存储数量有六百万条,因此数据表无法存储实际数量的存储数据,此外,若业务a在十二月份的存储数量只有七十万条,那么数据表又会剩余较多存储项,造成存储资源浪费。43.为了解决上述问题,发明人经过长期研究,提出了本技术实施例提供的数据存储方法,该方法可以本技术提供的一种数据存储方法,可以响应于存储请求确定关键字,并根据关键字判断在第一数据库中是否查找到对应的目标主键标号,该目标主键标号用于表征待存储数据在数据表中的唯一标识,若在第一数据库中查找到对应的目标主键标号,则根据目标主键标号将待存储数据进行数据存储。如此,在响应存储请求确定关键字后,根据该关键字查询出存储数据的目标主键标号,并根据该目标主键标号确定对应的分表,进而将待存储的数据存储至该分表中,从而使得数据存放至目标主键标号对应的分表中,避免将数据直接存储至月份数据表中,从而提升单表承载压力的均衡性。44.下面将以计算机设备为例,说明本实施例的具体流程,当然,可以理解的是,本实施例所应用的计算机设备可以为服务器或者终端等,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn、区块链以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱等,但并不局限于此。45.请参阅图1,图1示出了本技术实施例提供的一种数据存储方法,该数据存储方法可以包括以下步骤:46.步骤s110:响应于存储请求确定关键字。47.考虑到按照月份分表进行数据存储,会导致单表数据承载压力会出现不均衡的情况,为此,本技术实施例采用基于存储时间和主键标号范围相结合的分表策略来进行数据表的分表,再将待存储数据存储于主键标号范围对应的数据表中。48.其中,存储请求指的是存储数据的指令,当获取待存储的数据时可以生成存储指令,例如,用户将业务数据存储至数据库系统时,数据库系统会在用户点击上传数据的时刻生成存储请求。关键字(key)为号段数据,至少包括业务前缀、表名(table_name)、当前已申请最大的主键标号(max_id)、每次申请的号段长度(step)以及版本号(version)等。关键字包括的号段数据可以根据实际需求进行设置,在此不做限定。49.作为一种实施方式,当获取到存储请求时,可以响应于存储请求确定。具体地,可以基于不同的号段数据,例如,业务前缀、table_name、max_id、step以及版本号version来组装关键字,可以记作key=“业务前缀:table_name:max_id:step:version”。在本技术实施例中,通过关键字可以确定具体业务类型,区分存储时间(如,月份)从而便于后续获取主键标号。50.步骤s120:根据关键字判断在第一数据库中是否查找到对应的目标主键标号。51.为了使得存储数据的数据表之间的负载更加均衡,本技术实施例采用基于时间和主键标号相结合的分表策略,使得每个存储数据的数据表都会有预定的主键标号范围,因此在数据存储过程中,每个数据表主键标号不能再采用数据库的自增主键标号,需要具有存放主键标号的数据库,也即第一数据库获取。52.其中,第一数据库获取指的是建立在缓存(cache)中的缓存数据库,例如,远程字典服务(remotedictionaryserver,redis)数据库,该第一数据库中维护有号段表,用于存储主键标号,缓存数据库具有较好吞吐量,redis采用了单线程处理请求,避免了线程切换和锁竞争锁带来的额外消耗,可以有效提高数据存储的效率。目标主键标号指的是对待存储数据进行数据存储时,所用的主关键字(primarykey),也即唯一身份证标识号(identitydocument,id)。53.作为一种实施方式,可以生成的主键标号存储在第一数据库中,进一步地,基于关键字在第一数据库中查询是否存在关键字对应的目标主键标号。例如,redis中存储的号段表中主键标号的范围是[0000,1999],根据需要取出的目标主键标号id=1998对redis中的号段表进行查询,判断是否能够查询到目标主键标号id。[0054]步骤s130:若在第一数据库中查找到对应的目标主键标号,则根据目标主键标号将待存储数据进行数据存储。[0055]其中,数据存储指的是根据目标主键标号将待存储数据存储到非缓存数据库,也即第二数据库,例如,建立在硬盘或者云服务器上的关系型数据库(mysql)。这样通过缓存数据库(第一数据库)存储主键标号,再通过非缓存数据库(第二数据库)存储数据可以保障不同业务的数据库在存储数据时的负载均衡,使得数据库的存储性能更加稳定。[0056]在一些实施例中,该若在第一数据库中查找到对应的目标主键标号,则根据目标主键标号将待存储数据进行数据存储的步骤可以包括:[0057](1)确定当前时间点所处的存储时间。[0058]其中,存储时间指的是存储数据时的当前时间点,该存储时间可以具有不同类型,包括月份存储时间(n月),也可以为单日存储时间(n月m日),需要说明的是,存储时间的类型可以根据实际业务数据的数据量和数据类型等进行设置。例如,在业务数据的单日的数据量较大时,可以设置存储时间为月份存储时间,业务数据的数据类型(产品类型、报价)单日间的差距较大时,可以设置为单日存储时间。[0059]作为一种实施方式,若在第一数据库中查找到对应的目标主键标号,则确定当前时间点所处的存储时间。例如,当前时间为2022年6月1日,可以确定当前时间点所处的月份存储时间为2022年6月。[0060](2)根据存储时间和目标主键标号确定第二数据库中的目标数据表。[0061]其中,目标数据表指的是用于存储待存储数据的数据表,该数据表载有数据表信息,包括表名和主键标号范围。在存储数据时,可以通过根据存储时间和目标主键标号在第二数据库中查找到目标数据表。[0062]作为一种实施方式,该根据存储时间和目标主键标号确定第二数据库中的目标数据表的步骤可以包括:[0063](2.1)将月份存储时间与第二数据库中每个数据表的存储时间进行匹配,获取存储时间与月份存储时间匹配的至少一个月份匹配数据表。[0064](2.2)根据目标主键标号从至少一个月份匹配数据表中确定目标数据表。[0065]以存储时间为月份存储时间为例,考虑到第二数据库在每个月份都会存储多个数据表,因此,可以先根据月份存储时间查找出月份匹配数据表,再从月份匹配数据表中确定出含有目标主键标号的数据表。其中,月份匹配数据表指的是第二数据库中月份与月份存储时间匹配的数据表。[0066]示例性地,获取每个月份匹配数据表的标号范围,并将目标主键标号与每个月份匹配数据表的标号范围进行匹配,进而将标号范围包括目标主键标号的月份匹配数据表作为目标数据表。[0067]例如,月份存储时间为6月,在第二数据库中将月份为6月的数据表全部查找出来,得到三张六月份的数据表其中,的标号范围为[0000,999],的标号范围为[1000,1999],的标号范围为[2000,2999],目标主键标号id=1878∈[1000,1999],所以作为目标数据表。[0068](3)将待存储数据存储至目标数据表。[0069]作为一种实施方式,在确定目标数据表之后,可以根据目标主键标号确定待存储数据的在目标数据表中的存储位置,进一步地,根据存储位置将待存储数据插入至存储位置。例如,若目标主键标号id=1878在中的存储位置为第879项/行,则将待存储数据存储至的第879行。[0070]由于不能采用数据库的自增id,每次需要生成一个号段(id范围)的主键标号用于存储数据。所以存储号段中主键标号有可能会被使用完,因此,在判断在第一数据库中是否查找到对应的目标主键标号时,可以可能出现查找不到对应的目标主键标号的情况。[0071]在另一些实施例中,若未在第一数据库中获取目标主键标号,则执行号段生成操作,并判断号段生成操作是否执行成功,若号段生成操作执行成功,则将生成的主键标号存储至第一数据库。其中,生成操作用于生成新的主键标号。[0072]具体地,当在第一数据库中未能查找到对应的目标主键标号时,可以执行号段生成操作,若号段生成操作执行成功,则将生成的主键标号存储至第一数据库,若若号段生成操作未执行成功,则可以从第二数据库确定新的关键字,再重新尝试获取目标主键标号。[0073]本技术实施例中,可以响应于存储请求确定关键字,并根据关键字判断在第一数据库中是否查找到对应的目标主键标号,该目标主键标号用于表征待存储数据在数据表中的唯一标识,若在第一数据库中查找到对应的目标主键标号,则根据目标主键标号将待存储数据进行数据存储。如此,在响应存储请求确定关键字后,根据该关键字查询出存储数据的目标主键标号,并根据该目标主键标号确定对应的分表,进而将存储数存储至该分表中,使得存储数据存放至目标主键标号对应的分表中,避免直接存储至月份数据表中,从而提升单表承载压力的均衡性。[0074]结合上述实施例所描述的方法,以下将举例作进一步详细说明。[0075]下面将以数据存储装置具体集成在计算机设备中为例进行说明,并将针对图3所示的流程结合图2所示的应用场景进行详细地阐述,该计算机设备可以为服务器或者终端设备等。请参阅图3,图3示出了本技术实施例提供的另一种数据存储方法,在具体的实施例中,该数据存储方法可以运用到如图2所示的数据存储场景中。[0076]数据存储服务供应商提供服务端,该服务端包括云服务器310,云服务器310包括用于存储主键标号的数据库(第一数据库,如redis数据库)311以及用于存储业务数据的数据库(第二数据库,如mysql数据库)312,其中,存储主键标号的数据库安装在该云服务器310的缓存中。存储业务数据的数据库用于对用户从客户端上传的业务数据进行存储,其中,客户端为用户使用数据存储服务时,在手机320上打开的数据存储软件330。[0077]需要注意的是,图2仅是本技术实施例提供的一种应用的示意图,本发明实施例描述的应用场景是为了更加清楚的说明本发明实施例的技术方案,并不构成对于本发明实施例提供的技术方案的限定。例如,图2中的客户端的数量可以为多个,以实现一个服务端可以同时为多个客户端提供数据存储服务的功能。客户端所安装的设备也可以为平板电脑,笔记本电脑,增强现实(augmentedreality,ar)ar/虚拟现实(virtualreality,vr),虚拟数字人等。本领域普通技术人员可知,随着新的应用场景的出现,本发明实施例提供的技术方案对于类似的技术问题,同样适用。所述数据存储方法具体可以包括以下步骤:[0078]步骤s210:计算机设备获取第一数据库中主键标号的使用率。[0079]考虑到主键标号在使用完时,采能生成新的主键标号,存在一定的等待时长,为了提高数据存储的效率,可以在主键标号还未使用完时开始生成新的主键标号。其中,使用率指的是第一数据库的号段表中主键标号的使用率,例如,已经使用的主键标号数量与一次生成主键标号数量之比。[0080]作为一种实施方式,计算机设备可以周期性地获取第一数据库的号段表中已使用的主键标号的数量,进而计算出主键标号的使用率,例如,号段表可以存储一次生成的主键标号的数量为α=1000,云服务器310可以每0.35秒获取号段表中被使用的id的数量β=600,进而计算出当前的主键标号的使用率θ=β/α=60%。[0081]步骤s220:计算机设备判断使用率是否大于预设阈值。[0082]其中,预设阈值为预先设置的用于决定是否生成新的主键标号的条件。预设阈值可以基于设备性能和实际的实验来确定,在此不做限定。当缓存中的id的使用率超过预设阈值时,会自动生成下一个主键标号id的号段,以提高存储效率。[0083]步骤s230:若使用率大于预设阈值,则计算机设备执行号段生成操作。[0084]其中,号段生成操作为生成新的主键标号的操作,具体地,计算机设备可以通过执行号段生成操作相关的代码(sql语句),申请id号段,也即生成递增顺序的主键标号。示例性地,云端服务器310可以执行sql语句生成新的主键标号,并将该主键标号存储至缓存中的主键号段数据表中。[0085]步骤s240:计算机设备响应于存储请求确定关键字。[0086]示例性地,当计算机设备获取到存储请求时,计算机设备可以响应于存储请求确定。具体地,可以基于不同的号段数据业务前缀、table_name、max_id、step以及版本号version来组装关键字,可以记作key=“业务前缀:table_name:max_id:step:version”。通过关键字可以确定具体业务类型,区分存储时间(如,月份)从而便于后续获取主键标号。[0087]步骤s250:计算机设备根据关键字判断在第一数据库中是否查找到对应的目标主键标号。[0088]示例性地,计算机设备可以生成的主键标号存储在redis中,进一步地,基于关键字在redis中查询是否存在关键字对应的目标主键标号id。具体地,redis中存储的号段表中主键标号的范围是[0000,1999],计算机设备可以根据的需要去出的目标主键标号id=1998对redis中的号段表进行查询,从而判断是否能够查询到目标主键标号。[0089]步骤s260:若未在第一数据库中获取目标主键标号,则计算机设备执行号段生成操作。[0090]由于本技术实施例中的云服务器310在存储业务数据时所使用的主键标号id不是mysql数据库的自增id,而是从缓存中redis数据库获取到到一个号段(id范围)内的id,因此,在判断在第一数据库中是否查找到对应的目标主键标号时,存在查找不到对应的目标主键标号得情况。所以若未在第一数据库中获取目标主键标号,则计算机设备可以执行号段生成操作。[0091]作为一种实施方式,该若未在第一数据库中获取目标主键标号,则计算机设备执行号段生成操作的步骤可以包括:[0092](1)计算机设备获取主键号段表。[0093](2)计算机设备根据最大主键标号、号段长度和版本号生成预设数量的主键标号。[0094]表1[0095]字段名称字段类型索引允许空字段描述idintprino主键idmax_idbigintno最大主键标号stepintno号段步长table_namevarchar(128)no月份表名,如:demo_202107versionintno版本号update_ipvarchar(64)no更新节点ipupdate_timedatetimeno更新时间[0096]其中,主键号段表用于存储生成的主键标号。主键号段表至少包括最大主键标号、号段步长、版本号等,例如,主键号段表的表信息如表1所示。[0097]示例性地,计算机设备可以根据最大主键标号、号段长度和版本号生成预设数量的主键标号。例如,云端服务器310可以执行下述的sql语句生成新的预设数量的主键标号:[0098]updateid_generatorsetmax_id=max_id step,//更新最大主键标号[0099]version=version 1whereversion=#{version}andtable_name=“demo_202107”[0100]//更新版本号[0101]在云端服务器310生成新的主键标号时,可以将新的主键标号存储至redis,采用list结构维护。新的主键标号得数量由号段步长step决定。例如,号段步长step=1000,第k次生成的主键标号后的最大主键标号max_idk=1999,那么第k 1次生成的主键标号的最大主键标号max_idk 1=step max_idk=2999。生成的新的主键标号的号段为[2000,2999]。其中,更新版本号version可以保证多结点竞争时的数据安全,保证并发时数据的正确性。[0102]步骤s270:计算机设备判断号段生成操作是否执行成功。[0103]在执行完号段生成操作后,可以判断号段生成操作是否执行成功。示例性地,云服务器310可以判断是否成功生成新的主键标号。[0104]步骤s280a:若号段生成操作执行成功,则计算机设备将生成的主键标号存储至第一数据库。[0105]作为一种实施方式,若计算机设备判定号段生成操作执行成功,则可以将生成的主键标号存储至第一数据库的主键号段表中。请参阅图4,图4示出了一种主键标号的存储示意图。云服务器310将生成的新的主键标号[2000,2999],采用list结构维护在redis中。[0106]具体地,以基于key,将主键标号2000存储至value1中,将主键标号2001存储至value2中,如此,按照这种list的链式结构将主键标号[2000,2999]存储在对应的value中。[0107]步骤s280b:若号段生成操作未执行成功,则计算机设备重新确定关键字,并返回执行根据关键字判断在第一数据库中是否查找到对应的目标主键标号。[0108]作为一种实施方式,若计算机设备判定号段生成操作未执行成功,则可以重新确定关键字,并返回执行根据关键字判断在第一数据库中是否查找到对应的目标主键标号,以便再次申请执行号段生成操作,重新生成主键标号。[0109]步骤s290:若在第一数据库中查找到对应的目标主键标号,则计算机设备根据目标主键标号将待存储数据进行数据存储。[0110]其中,数据存储指的是根据目标主键标号将待存储数据存储到非缓存数据库,也即第二数据库,例如,mysql。这样通过redis存储主键标号,通过mysql存储数据可以保障不同业务的数据库负载均衡,存储性能更加稳定。[0111]在一些实施例中,该若在第一数据库中查找到对应的目标主键标号,则计算机设备根据目标主键标号将待存储数据进行数据存储的步骤可以包括:[0112](1)计算机设备确定当前时间点所处的存储时间。[0113]其中,存储时间可以为月份存储时间,也可以为单日存储时间。示例性地,以月份存储时间为例,云服务器310在响应存储请求时,可以获取当前时间点:20220601,并确定当前时间点所处的月份存储时间为202206。[0114](2)计算机设备根据存储时间和目标主键标号确定第二数据库中的目标数据表。[0115]其中,目标数据表指的是用于存储待存储数据的数据表,该数据表载有数据表信息,包括表名和主键标号范围。本技术实施例是基于时间和主键标号id的范围构建目标数据表,如下表2所示的目标数据表:[0116]表2[0117]表名id范围demo_202107_11-5000000demo_202107_25000001-100000000……[0118]存储数据是维护在目标数据表中的,目标数据表的数据表信息,包括表名和主键标号范围,其中表名中包括存储月份和表号,存储月份表示该目标数据表存储的是几月份的业务数据,表号用于表示该目标数据表为该月份下的第几张数据表。例如,表名“demo_202107_2”表示该目标数据表为七月份的第二张数据表。[0119]需要说明书的是,每张目标数据表都存储有固定id范围的数据,每个月份下,数据表的张数由当月所存储的业务数据量以及数据表的数据上限决定。表名中的表号可以基于id与数据表的数据上限计算得出,例如,id=5000009,数据表的数据上限为5000000,则表号为id/数据表的数据上限=(5000009/5000000) 1=1。[0120]作为一种实施方式,该计算机设备根据存储时间和目标主键标号确定第二数据库中的目标数据表的步骤可以包括:[0121](2.1)计算机设备将月份存储时间与第二数据库中每个数据表的存储时间进行匹配,获取存储时间与月份存储时间匹配的至少一个月份匹配数据表。[0122](2.2)计算机设备根据目标主键标号从至少一个月份匹配数据表中确定目标数据表。[0123]示例性的,计算机设备获取可以每个月份匹配数据表的标号范围,进而将目标主键标号与每个月份匹配数据表的标号范围进行匹配,并将标号范围包括目标主键标号的月份匹配数据表作为目标数据表。[0124]例如,云服务器310在获取月份存储时间202206时,可以在mysql中查询出6月份中的所以数据表作为月份匹配数据表,包括:进一步地,基于获取的目标主键标号id=1878来确定将业务数据存在哪一个数据表,也即目标数据表。查询到所以将作为目标数据表。[0125](3)计算机设备将待存储数据存储至目标数据表。[0126]作为一种实施方式,计算机设备可以根据目标主键标号确定待存储数据的在目标数据表中的存储位置,并根据存储位置将待存储数据插入至存储位置。例如,云服务器310确定为目标数据表时,若目标主键标号id=1878在中的存储位置为第879行,则将待存储数据存储至的第879行。[0127]示例性地,请参阅图5,图5示出了一种数据存储任务的流程图,在具体的实施例中,该数据存储任务可以运用到如图2所示的数据存储场景中。具体地,用户在手机320上安装有进行存储业务数据的数据存储软件330,云服务器310将数据表建立在mysql中。[0128]用户通过手机320使用数据存储软件330对获取的业务数据进行数据存储时,数据存储软件330向云服务器310发送存储请求,云服务器310接收到存储请求后,响应于存储请求确定关键字key,进一步地,判断在redis中是否查找到对应的目标主键标号id,若查找到,则从redis中获取目标主键标号id,并根据当前时间点确定月份匹配数据表,再根据目标主键标号id确定目标数据表,进行数据存储,将业务数据存储至目标数据表。[0129]可选地,若在redis中未查找到对应的目标主键标号id,则执行号段生成操作,具体地,云服务器310可以通过update语句申请主键标号id,并判断号段生成操作是否执行成功,若号段生成操作执行成功,则将生成的主键标号存储至redis。若号段生成操作未执行成功,则可以重新确定关键字,再重新尝试获取目标主键标号。[0130]本技术实施例中,可以获取第一数据库中主键标号的使用率,并判断使用率是否大于预设阈值,若使用率大于预设阈值,则执行号段生成操作,在主键标号还未使用完时开始生成新的主键标号,从而提高数据存储的效率。[0131]进一步地,响应于存储请求确定关键字,关键字至少包括数据表名,并根据关键字判断在第一数据库中是否查找到对应的目标主键标号,若未在第一数据库中获取目标主键标号,则计算机设备执行号段生成操作,并判断号段生成操作是否执行成功,若号段生成操作执行成功,则计算机设备将生成的主键标号存储至第一数据库,若号段生成操作未执行成功,则计算机设备重新确定关键字,并返回执行根据关键字判断在第一数据库中是否查找到对应的目标主键标号,若在第一数据库中查找到对应的目标主键标号,则计算机设备根据目标主键标号将待存储数据进行数据存储。[0132]如此,在响应存储请求确定关键字后,根据该关键字查询出存储数据的目标主键标号,并根据该目标主键标号确定对应的分表,进而将存储数存储至该分表中,使得存储数据存放至目标主键标号对应的分表中,避免直接存储至月份数据表中,从而提升单表承载压力的均衡性。[0133]请参阅图6,其示出了本技术实施例提供的一种数据存储装置400的结构框图。该数据存储装置400包括:确定模块410,用于响应于存储请求确定关键字,所述关键字至少包括数据表名;查找模块420,用于根据所述关键字判断在第一数据库中是否查找到对应的目标主键标号,所述目标主键标号用于表征待存储数据在数据表中的唯一标识;存储模块430,用于若在第一数据库中查找到对应的目标主键标号,则根据所述目标主键标号将所述待存储数据进行数据存储。[0134]在一些实施例中,存储模块430可以包括时间确定单元、数据表确定单元以及数据存储单元。时间确定单元,用于确定当前时间点所处的存储时间;数据表确定单元,用于根据所述存储时间和所述目标主键标号确定第二数据库中的目标数据表;数据存储单元,用于将所述待存储数据存储至所述目标数据表。[0135]在一些实施例中,数据存储单元可以具体用于:根据目标主键标号确定所述待存储数据的在所述目标数据表中的存储位置;根据所述存储位置将所述待存储数据插入至所述存储位置。[0136]在一些实施例中,所述存储时间包括月份存储时间,时间确定单元可以具体用于确定当前时间点所处的月份存储时间;[0137]数据表确定单元可以包括:时间匹配子单元以及数据表确定子单元。时间匹配子单元,用于将所述月份存储时间与第二数据库中每个数据表的存储时间进行匹配,获取存储时间与所述月份存储时间匹配的至少一个月份匹配数据表;数据表确定子单元,用于根据目标主键标号从所述至少一个月份匹配数据表中确定目标数据表。[0138]在一些实施例中,数据表确定子单元可以具体用于:获取每个所述月份匹配数据表的标号范围;将所述目标主键标号与每个所述月份匹配数据表的标号范围进行匹配,并将标号范围包括所述目标主键标号的月份匹配数据表作为目标数据表。[0139]在一些实施例中,数据存储装置400还可以包括:第一执行模块,用于若未在第一数据库中获取目标主键标号,则执行号段生成操作;第一判断模块,用于判断所述号段生成操作是否执行成功;第二存储模块,用于若所述号段生成操作执行成功,则将生成的主键标号存储至所述第一数据库。[0140]在一些实施例中,数据存储装置400还可以包括:第二确定模块,用于若所述号段生成操作未执行成功,则重新确定关键字;第二查找模块,用于返回执行根据所述关键字判断在第一数据库中是否查找到对应的目标主键标号。[0141]在一些实施例中,执行模块430可以具体用于:获取主键号段表,所述主键号段表至少包括最大主键标号、号段步长、版本号;根据所述最大主键标号、所述号段长度和所述版本号生成预设数量的主键标号。[0142]在一些实施例中,执行模块430还可以具体用于:对所述最大主键标号和所述版本号进行更新。[0143]在一些实施例中,数据存储装置400还可以包括:使用率获取模块,用于获取第一数据库中主键标号的使用率;第二判断模块,用于判断所述使用率是否大于预设阈值,所述预设阈值用于表征所述第一数据库中存储主键标号的最低数量;第二执行模块,用于若所述使用率大于所述预设阈值,则执行号段生成操作。[0144]所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。[0145]在本技术所提供的几个实施例中,模块相互之间的耦合可以是电性,机械或其它形式的耦合。[0146]另外,在本技术各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。[0147]本技术提供的方案,可以响应于存储请求确定关键字,并根据关键字判断在第一数据库中是否查找到对应的目标主键标号,该目标主键标号用于表征待存储数据在数据表中的唯一标识,若在第一数据库中查找到对应的目标主键标号,则根据目标主键标号将待存储数据进行数据存储。如此,在响应存储请求确定关键字后,根据该关键字查询出存储数据的目标主键标号,并根据该目标主键标号确定对应的分表,进而将存储数存储至该分表中,使得存储数据存放至目标主键标号对应的分表中,避免直接存储至月份数据表中,从而提升单表承载压力的均衡性。[0148]如图7所示,本技术实施例还提供一种计算机设备500,该计算机设备500包括处理器510、存储器520、电源530和输入单元540,存储器520存储有计算机程序指令,计算机程序指令被处理器510调用时,可实执行上述的实施例提供的各种方法步骤。本领域技术人员可以理解,图中示出的计算机设备的结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:[0149]处理器510可以包括一个或多个处理核。处理器510利用各种接口和线路连接整个电池管理系统内的各种部分,通过运行或执行存储在存储器520内的指令、程序、代码集或指令集,调用存储在存储器520内的数据,执行电池管理系统的各种功能和处理数据,以及执行计算机设备的各种功能和处理数据,从而对计算机设备进行整体控制。可选地,处理器510可以采用数字信号处理(digitalsignalprocessing,dsp)、现场可编程门阵列(field-programmablegatearray,fpga)、可编程逻辑阵列(programmablelogicarray,pla)中的至少一种硬件形式来实现。处理器510可集成中央处理器510(centralprocessingunit,cpu)、图像处理器510(graphicsprocessingunit,gpu)和调制解调器等中的一种或几种的组合。其中,cpu主要处理操作系统、用户界面和应用程序等;gpu用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器510中,单独通过一块通信芯片进行实现。[0150]存储器520可以包括随机存储器520(randomaccessmemory,ram),也可以包括只读存储器520(read-onlymemory)。存储器520图可用于存储指令、程序、代码、代码集或指令集。存储器520可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各种方法实施例的指令等。存储数据区还可以存储计算机设备在使用中所创建的数据(比如电话本和音视频数据)等。相应地,存储器520还可以包括存储器控制器,以提供处理器510对存储器520的访问。[0151]电源530可以通过电源管理系统与处理器510逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源530还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。[0152]输入单元540,该输入单元540可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。[0153]尽管未示出,计算机设备500还可以包括显示单元等,在此不再赘述。具体在本实施例中,计算机设备中的处理器510会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器520中,并由处理器510来运行存储在存储器520中的应用程序,从而实现前述实施例提供的各种方法步骤。[0154]如图8所示,本技术实施例还提供一种计算机可读存储介质600,该计算机可读存储介质600中存储有计算机程序指令610,计算机程序指令610可被处理器调用以执行上述实施例中所描述的方法。[0155]计算机可读存储介质可以是诸如闪存、eeprom(电可擦除可编程只读存储器)、eprom、硬盘或者rom之类的电子存储器。可选地,计算机可读存储介质包括非易失性计算机可读存储介质(non-transitorycomputer-readablestoragemedium)。计算机可读存储介质600具有执行上述方法中的任何方法步骤的程序代码的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码可以例如以适当形式进行压缩。[0156]根据本技术的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例提供的各种可选实现方式中提供的方法。[0157]以上,仅是本技术的较佳实施例而已,并非对本技术作任何形式上的限制,虽然本技术已以较佳实施例揭示如上,然而并非用以限定本技术,任何本领域技术人员,在不脱离本技术技术方案范围内,当可利用上述揭示的技术内容做出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本技术技术方案内容,依据本技术的技术实质对以上实施例所作的任何简介修改、等同变化与修饰,均仍属于本技术技术方案的范围内。当前第1页12当前第1页12
再多了解一些

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

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

相关文献