数据存储的方法、装置、电子设备和可读介质制造方法及图纸

技术编号:29254097 阅读:24 留言:0更新日期:2021-07-13 17:24
本申请涉及一种数据存储的方法、装置、电子设备和可读介质。该方法包括:获取数据插入指令,其中,数据插入指令包括目标数据库中目标数据表的表标识以及待添加数据;获取目标数据库中上一次插入的数据所对应的第一主键值,以及获取目标数据库对应的步长值和模值,其中,步长值用于指示主键值的递增量,模值用于指示主键值与步长值的余数;根据第一主键值、步长值和模值,生成待插入主键值;根据表标识将待插入主键值和待添加数据插入目标数据表。在该方法中,获取新主键值的过程由存储数据的数据库本身即可完成,而不再需要额外发号数据库来生成新主键,从而简化了系统结构,避免发号数据库的故障对于整个系统的影响,从而提升系统的稳定性。

【技术实现步骤摘要】
数据存储的方法、装置、电子设备和可读介质
本申请涉及计算机
,尤其涉及一种数据存储的方法、装置、电子设备和可读介质。
技术介绍
分布式数据库系统是一种可以将数据分别存储在不同地理位置的物理节点上并且通过网络连接进行访问的数据库。该类数据库通常用于办公地点分散于各地的企业或者在各地均有用户接入的场景。在该类数据库中,新数据存储时如何生成数据表的唯一键是数据库核心功能。目前,分布式数据库中唯一键的生成方法通常采用发号服务器的方式。客户端需要新的唯一键时需要向发号服务器申请,发号服务器利用后端的序列号数据库生成新的唯一键,以供客户端使用。然而,现有方案中,唯一键的生成依赖于序列号数据库,在序列号数据库的宕机或响应较慢时会对整个应用系统造成应用系统不可用或效率降低,从而影响系统的稳定性。
技术实现思路
基于上述技术问题,本申请提供一种数据存储的方法,以简化了系统结构,避免发号数据库的故障对于整个系统的影响,从而提升系统的稳定性。本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。根据本申请实施例的一个方面,提供一种数据存储的方法,包括:获取数据插入指令,其中,所述数据插入指令包括目标数据库中目标数据表的表标识以及待添加数据;获取所述目标数据库中上一次插入的数据所对应的第一主键值,以及获取所述目标数据库对应的步长值和模值,其中,所述步长值用于指示主键值的递增量,所述模值用于指示主键值与所述步长值的余数;根据所述第一主键值、所述步长值和所述模值,生成待插入主键值;根据所述表标识将所述待插入主键值和所述待添加数据插入所述目标数据表。根据本申请实施例的一个方面,提供一种数据存储装置,包括:指令获取模块,用于获取数据插入指令,其中,所述数据插入指令包括目标数据库中目标数据表的表标识以及待添加数据;主键获取模块,用于获取所述目标数据库中上一次插入的数据所对应的第一主键值,以及获取所述目标数据表对应的步长值和模值,其中,所述步长值用于指示主键值的递增量,所述模值用于指示主键值与所述步长值的余数;主键生成模块,用于根据所述第一主键值、所述步长值和所述模值,生成待插入主键值;数据插入模块,用于根据所述表标识将所述待插入主键值和所述待添加数据插入所述目标数据表。在本申请的一些实施例中,基于以上技术方案,数据存储装置还包括:主键值计算模,用于若所述待插入主键值小于所述用户指定主键,则根据所述用户指定主键、所述步长值和所述模值,计算第二主键值;主键值更新模块,用于根据所述第二主键值和所述待添加数据的数量,更新所述待插入主键值。在本申请的一些实施例中,基于以上技术方案,主键获取模块,包括:标识获取单元,用于根据所述表标识,获取所述目标数据库的插入标识以及目标数据库中最近一次插入操作所对应的待处理主键值,所述插入标识用于指示对于所述目标数据库的最近一次更新操作成功或失败;最大值获取单元,用于若所述插入标识指示最近一次更新操作失败或者所述待处理主键值为零,则获取所述目标数据表中所有主键值中的最大值作为第一主键值;主键值确定单元,用于若所述插入标识指示最近一次更新操作成功或者所述待处理主键值大于零,则将所述待处理主键值确定为所述第一主键值。在本申请的一些实施例中,基于以上技术方案,数据存储装置还包括:响应接收模块,用于接收对所述目标数据表的插入操作的插入响应信息;标识更新模块,用于若所述插入响应信息指示对于所述目标数据表的插入操作失败,则更新所述目标数据库的插入标识。在本申请的一些实施例中,基于以上技术方案,数据插入模块,包括:请求生成单元,用于在数据库接入层中根据所述表标识、所述待插入主键值和所述待添加数据生成数据插入请求;请求发送单元,用于向所述目标数据库发送所述数据插入请求;其中,所述数据库接入层包括第一接入节点和第二接入节点,所述第一接入节点的步长值与所述第二接入节点的步长值相同,所述第一接入节点的模值与所述第二接入节点的模值不同。在本申请的一些实施例中,基于以上技术方案,主键生成模块,包括:加锁单元,用于针对所述第一主键值进行加锁操作;中间值计算单元,用于根据所述第一主键值和所述步长值,计算中间值;主键确定单元,用于将所述中间值与所述模值的和确定为待插入主键值;解锁单元,用于针对所述第一主键值进行解锁操作。在本申请的一些实施例中,基于以上技术方案,主键生成模块,包括:更新主键计算单元,用于根据所述第一主键值、所述步长值和所述模值,计算第一更新主键值;序列计算单元,用于根据所述第一更新主键值、所述数据插入指令中所述待添加数据的数量和所述步长值,计算对应于所述多个待添加数据的待插入主键值序列。根据本申请实施例的一个方面,提供一种电子设备,该电子包括:处理器;以及存储器,用于存储处理器的可执行指令;其中,该处理器配置为经由执行可执行指令来执行如以上技术方案中的数据存储的方法。根据本申请实施例的一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,当该计算机程序被处理器执行时实现如以上技术方案中的数据存储的方法。根据本申请实施例的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供数据存储的方法。在本申请的实施例中,根据数据插入指令,从数据库中获取最近一次插入的主键值,然后根据数据库对应的步长和模值,计算新数据对应的新主键值,然后将新主键值和待更新数据值插入数据库来进行新数据存储。获取新主键值的过程由存储数据的数据库本身即可完成,而不再需要额外发号数据库来生成新主键,从而简化了系统结构,避免发号数据库的故障对于整个系统的影响,从而提升系统的稳定性。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。附图说明此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:图1示意性地示出了本申请技术方案在一个应用场景中的示例性物理架构示意图;图2为本申请实施例中系统架构的示意图;图3示出了本申请实施例中的一种数据存储的方法的流程示意图;图4为本身申请实施例中包括异常处理的主键值生成过程的流程图;图5为本申请实施例中生成主键值的结构示意图;图6为本申请实施例中采用线程锁的主键值生成过程的流程图;图本文档来自技高网...

【技术保护点】
1.一种数据存储的方法,其特征在于,包括:/n获取数据插入指令,其中,所述数据插入指令包括目标数据库中目标数据表的表标识以及待添加数据;/n获取所述目标数据库中上一次插入的数据所对应的第一主键值,以及获取所述目标数据库对应的步长值和模值,其中,所述步长值用于指示主键值的递增量,所述模值用于指示主键值与所述步长值的余数;/n根据所述第一主键值、所述步长值和所述模值,生成待插入主键值;/n根据所述表标识将所述待插入主键值和所述待添加数据插入所述目标数据表。/n

【技术特征摘要】
1.一种数据存储的方法,其特征在于,包括:
获取数据插入指令,其中,所述数据插入指令包括目标数据库中目标数据表的表标识以及待添加数据;
获取所述目标数据库中上一次插入的数据所对应的第一主键值,以及获取所述目标数据库对应的步长值和模值,其中,所述步长值用于指示主键值的递增量,所述模值用于指示主键值与所述步长值的余数;
根据所述第一主键值、所述步长值和所述模值,生成待插入主键值;
根据所述表标识将所述待插入主键值和所述待添加数据插入所述目标数据表。


2.根据权利要求1所述的方法,其特征在于,所述数据插入指令中还包括用户指定主键;所述根据所述第一主键值、所述步长值和所述模值,生成待插入主键值之后,所述方法还包括:
若所述待插入主键值小于所述用户指定主键,则根据所述用户指定主键、所述步长值和所述模值,计算第二主键值;
根据所述第二主键值和所述待添加数据的数量,更新所述待插入主键值。


3.根据权利要求1所述的方法,其特征在于,所述获取所述目标数据库中上一次插入的数据所对应的第一主键值,包括:
根据所述表标识,获取所述目标数据库的插入标识以及目标数据库中最近一次插入操作所对应的待处理主键值,所述插入标识用于指示对于所述目标数据库的最近一次更新操作成功或失败;
若所述插入标识指示最近一次更新操作失败或者所述待处理主键值为零,则获取所述目标数据表中所有主键值中的最大值作为第一主键值;
若所述插入标识指示最近一次更新操作成功或者所述待处理主键值大于零,则将所述待处理主键值确定为所述第一主键值。


4.根据权利要求3所述的方法,其特征在于,所述根据所述表标识将所述待插入主键值和所述待添加数据插入所述目标数据表之后,所述方法还包括:
接收对所述目标数据表的插入操作的插入响应信息;
若所述插入响应信息指示对于所述目标数据表的插入操作失败,则更新所述目标数据库的插入标识。


5.根据权利要求1所述的方法,其特征在于,所述根据所述表标识将所述待插入主键值和所述待添加数据插入所述目标数据表,包括:
在数据库接入层中根据所述表标识、所述待插入主键值...

【专利技术属性】
技术研发人员:韩全安陈福荣梁飞龙崔玉明夏晓健徐永鑫
申请(专利权)人:深圳市腾讯网络信息技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1