一种多进程共享数据库表更新方法及装置、数据库系统制造方法及图纸

技术编号:30639778 阅读:17 留言:0更新日期:2021-11-04 00:32
本申请公开了一种多进程共享数据库表更新方法及装置、数据库系统,在多进程共享数据的情况下,能有效提高数据库表更新速度并确保共享数据的可用性和一致性,上述方法应用于多进程共享数据库表更新装置及数据库系统,其中,方法包括:在所述进程启动时对所述进程的数据进行加载;在所述进程运行过程中监测是否发生异常事件;通过数据更新接口接收所述进程中数据更新操作的调用指令;根据所述调用指令执行数据更新操作后得到待更新数据;判断所述待更新数据是否满足写入所述系统数据库的条件,通过所述条件限制写入系统数据库的更新操作次数,以使得更多更新操作发生在进程缓存上;若否,则将所述待更新数据写入进程缓存,所述进程缓存为分布式缓存;若是,则将所述待更新数据写入所述系统数据库对应的表中。新数据写入所述系统数据库对应的表中。新数据写入所述系统数据库对应的表中。

【技术实现步骤摘要】
一种多进程共享数据库表更新方法及装置、数据库系统


[0001]本申请涉及数据库
,具体涉及一种多进程共享数据库表更新方法及装置、数据库系统。

技术介绍

[0002]数据库是“按照数据结构来组织、存储和管理数据的仓库”,是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。通过数据库管理系统可以对存放的数据执行增、删、改、查操作,其中改操作包括单次改多条记录和单次改一条记录,针对单次改多条记录的操作,基于传统的数据库表索引、存储过程、数据库引擎提供的缓存可以实现定位快速修改或缓存后一次性修改,但是,对于大量汇聚的单次改一条记录的操作,尤其是面向多进程高并发系统的共享数据(集中的修改库表,例如承受高并发的银联支付系统的现金转账表的记录修改),距离和修改异构性会给数据库表修改操作带来很大延迟;在极坏情况下,汇聚N条第2类操作,诸如数据库服务器与应用服务器的距离太远(例如>1000KM)、需要连接不同的数据库修改不同的表的不同字段(修改异构性太高),从而带来极大的修改延迟。
[0003]目前针对修改数据库表的提速技术主要包括:数据库表索引加速、存储过程加速、数据库引擎提供的缓存加速等。
[0004]1、数据库表索引加速:索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。通常可通过在数据库表的常用查询字段上建立二叉树索引,将定位数据库记录的时间复杂度从O(N)降低为O(log2N),从而实现数据库表修改加速。
[0005]2、存储过程加速:存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。在数据量特别庞大的情况下利用存储过程能达到倍速的效率提升。但是存储过程存在以下瓶颈:
[0006]2.a、通常只能用于结构化数据库,例如MySQL、Oracle、SQL Server等;
[0007]2.b、针对不同的数据库表和业务需求需要写特定的存储过程,定制性强,不具备普适性。
[0008]3、基于多级缓存加速:一种应用“阿姆达尔定律”(Amdahl

s Law)的加速机制,在计算机系统中被广泛使用,例如系统多级存储加速、数据库写入加速等,可用于数据库写入加速的典型内存缓存系统包括Memcached、Redis、Etcd等,一般是采用先将需要修改的数据写到内存缓存系统,然后再将数据汇总写入;但是,进程有可能崩溃、而且多个进程可能会共享数据,在这些情况下多级缓存机制并不能保持数据的持续可用性和一致性。
[0009]根据CAP定理,在一个分布式系统中,Consistency(一致性)、Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。一致性(C)指在分布式系统中的
所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本);可用性(A)指保证每个请求不管成功或者失败都有响应;分区容忍性(P)指系统中任意信息的丢失或失败不会影响系统的继续运作。CAP定理的精髓就是要么AP,要么CP,要么AC,但是不存在CAP。
[0010]多进程系统是一个典型的分布式系统,在共享数据的情况下,如果用统一的1个数据库来存储多进程的共享数据,不会出现数据不一致的情况,确保了分布式系统的C和P,但是如果系统发生了网络分区状况或者宕机,必然导致某些数据不可以访问,此时可用性条件就不能被满足,即在此情况下获得了CP系统,但是CAP不可同时满足,同时,由于共享1个数据库,在进行数据更新时,需要对表进行加锁、解锁并确保数据更新顺序与业务时序一致,从而导致数据更新速度大幅下降。
[0011]综上所述,目前就数据库表更新而言,现有技术方案面向多进程共享数据时,无法有效提升数据库表更新效率。

技术实现思路

[0012]本申请提供了一种多进程共享数据库表更新方法及装置、数据库系统,用于解决在面向多进程共享数据的数据库表更新操作中存在的缺陷,能有效提高数据库表更新速度并确保共享数据的可用性和一致性。
[0013]本申请第一方面提供了一种多进程共享数据库表更新方法,所述方法应用于进程子系统,所述进程子系统与系统数据库通信连接,所述系统数据库连接有至少一个进程子系统,所述进程子系统上运行有至少一个进程,包括:
[0014]在所述进程启动时对所述进程的数据进行加载;
[0015]在所述进程运行过程中监测是否发生异常事件;
[0016]通过数据更新接口接收所述进程中数据更新操作的调用指令;
[0017]根据所述调用指令执行数据更新操作后得到待更新数据;
[0018]判断所述待更新数据是否满足写入所述系统数据库的条件,通过所述条件限制写入系统数据库的更新操作次数,以使得更多更新操作发生在进程缓存上;
[0019]若否,则将所述待更新数据写入进程缓存,所述进程缓存为分布式缓存;
[0020]若是,则将所述待更新数据写入所述系统数据库对应的表中。
[0021]可选的,判断所述待更新数据是否满足写入所述系统数据库的条件,包括:
[0022]根据预设时间定时更新写库阈值,所述写库阈值由过去预设时间内数据更新操作的先验知识及预设滑动窗口来确定;
[0023]判断所述待更新数据是否大于所述写库阈值。
[0024]可选的,在所述进程启动时对所述进程的数据进行加载,包括:
[0025]启动所述进程,将所述进程的程序加载到计算机的内存中;
[0026]根据所述进程的标识从所述进程缓存中查询是否有对应的缓存数据;
[0027]若是,则将所述缓存数据加载到所述进程的内存。
[0028]可选的,在所述进程运行过程中监测是否发生异常事件之后,所述方法还包括:
[0029]若是,在预设退出时间内将所述进程的数据写入所述进程缓存。
[0030]可选的,在将所述待更新数据写入所述系统数据库对应的表中之后,所述方法还
包括:
[0031]从所述进程缓存中清除所述调用指令所调用的数据。
[0032]本申请第二方面提供了一种数据读取方法,所述方法应用于进程子系统的上层应用,所述进程子系统与系统数据库通信连接,包括:
[0033]接收读取目标数据的请求;
[0034]根据所述目标数据的标识从进程缓存中读取所述目标数据对应的缓存数据;
[0035]根据所述目标数据的标识从所述系统数据库对应的表中读取所述目标数据对应的表数据;
[0036]将所述缓存数据与所述表数据相加得到目标数据。
[0037]本申请第三方面提供了多进程共享数据库表更新装置,包括:
[0038]数据加载单元,用于在所述进程启动本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种多进程共享数据库表更新方法,其特征在于,所述方法应用于进程子系统,所述进程子系统与系统数据库通信连接,所述系统数据库连接有至少一个进程子系统,所述进程子系统上运行有至少一个进程,所述方法包括:在所述进程启动时对所述进程的数据进行加载;在所述进程运行过程中监测是否发生异常事件;通过数据更新接口接收所述进程中数据更新操作的调用指令;根据所述调用指令执行数据更新操作后得到待更新数据;判断所述待更新数据是否满足写入所述系统数据库的条件,通过所述条件限制写入系统数据库的更新操作次数,以使得更多更新操作发生在进程缓存上;若否,则将所述待更新数据写入进程缓存,所述进程缓存为分布式缓存;若是,则将所述待更新数据写入所述系统数据库对应的表中。2.根据权利要求1所述的多进程共享数据库表更新方法,其特征在于,判断所述待更新数据是否满足写入所述系统数据库的条件,包括:根据预设时间定时更新写库阈值,所述写库阈值由过去预设时间内数据更新操作的先验知识及预设滑动窗口来确定;判断所述待更新数据是否大于所述写库阈值。3.根据权利要求1所述的多进程共享数据库表更新方法,其特征在于,在所述进程启动时对所述进程的数据进行加载,包括:启动所述进程,将所述进程的程序加载到计算机的内存中;根据所述进程的标识从所述进程缓存中查询是否有对应的缓存数据;若是,则将所述缓存数据加载到所述进程的内存。4.根据权利要求1所述的多进程共享数据库表更新方法,其特征在于,在所述进程运行过程中监测是否发生异常事件之后,所述方法还包括:若是,在预设退出时间内将所述进程的数据写入所述进程缓存。5.根据权利要求1至4中任一项所述的多进程共享数据库表更新方法,其特征在于,在将所述待更新数据写入所述系统数据库对应的表中之后,所述方法还包括:从所述进程缓存中清除所述调用指令所调用的数据。6.一种数据读取方法,其特征在于,所述方法应用于进程子系统的上层应用,所述进程子系统与系统数据库通信连接,所述方法包括:接收读取目标数据的请求;根据所述目标数据的标识从进程缓存中读取所述目标数据对应的缓存数据;根据所述目标数据的标识从所述系统数据库对应的表中读取所述目标数据对应的表数据;将所述缓存数据与所述表数据相加得到目标数据。7.一种多进程共享数据库表更新装置,其特征在于,包括:数据加载单元,用于在所述进程启动时对所述进程的数据进行加载;异常事件单元,用于在所述进程运行过程中监测是否发生异常事件,所述异常事件包括进程异常和系统异常;第一接收单元,用于通过数据更新接口接收所述进程中数据更新操作的调用指令;
更新单元,用于根据所述调用指令...

【专利技术属性】
技术研发人员:刘祥涛
申请(专利权)人:深圳番多拉信息科技有限公司
类型:发明
国别省市:

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

1