CN106033422A - 一种数据库操作控制方法、装置及系统 - Google Patents
一种数据库操作控制方法、装置及系统 Download PDFInfo
- Publication number
- CN106033422A CN106033422A CN201510105559.5A CN201510105559A CN106033422A CN 106033422 A CN106033422 A CN 106033422A CN 201510105559 A CN201510105559 A CN 201510105559A CN 106033422 A CN106033422 A CN 106033422A
- Authority
- CN
- China
- Prior art keywords
- database manipulation
- risk
- module
- queue
- checking request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种数据库操作控制方法、装置及系统,该方法包括:向风险控制中心发送数据库操作验证请求,所述数据库操作验证请求携带数据库操作信息;如果接收到来自风险控制中心的针对所述数据库操作验证请求的验证通过响应,则执行所述数据库操作;否则,不执行所述数据库操作。根据本发明实施例所述的技术方案,可以确保在分布式、多进程系统中行锁表情况得到控制,保障数据库不会产生行死锁,进而保障系统运行的稳定性。
Description
技术领域
本发明涉及移动通信领域,尤其涉及一种数据库操作控制方法、装置及系统。
背景技术
在通信系统的数据库应用系统中,多用户、多任务的并发性是系统最重要的技术指标之一。为了提高并发性,目前大部分关系数据库管理系统(RelationalDatabase Management System,RDBMS)都采用加锁技术。然而由于现实环境的复杂性,使用加锁技术又不可避免地会产生死锁问题。
所谓死锁,即指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无法继续运行,若无外力作用,它们都将无法推进下去,此时,称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
现有解决数据库死锁的方法主要依赖关系数据库自身的监控机制和处理措施实现,如oracle数据库通过监控机制,检查数据库表的执行过程中产生的死锁语句,找出死锁语句所属的会话并进行停止会话进程,但是,现有方法均属死锁产生后的操作,不能从根本上避免数据库死锁的产生,从而仍会因死锁现象的存在发生资源消耗,影响进程效率。
发明内容
有鉴于此,为解决现有存在的技术问题,本发明实施例提供:
一种数据库操作控制方法,包括:
获取数据库操作信息;
向风险控制中心发送数据库操作验证请求,所述数据库操作验证请求携带所述数据库操作信息;
如果接收到来自风险控制中心的针对所述数据库操作验证请求的验证通过响应,则执行所述数据库操作;否则,不执行所述数据库操作。
一具体实施例中,所述获取数据库操作信息,包括:实时监测并获取一个事物中可能会对数据库造成锁表的操作语句。
一具体实施例中,该方法还包括:
当一个事物提交后,向风险控制中心发送风险解除指令,所述风险解除指令携带所述提交的事物信息。
本发明实施例还提供一种数据库操作控制方法,包括:
接收来自终端应用的数据库操作验证请求,所述数据库操作验证请求携带数据库操作信息;
判断所述数据库操作是否满足锁表条件,如果不满足,则向终端应用发送相应的验证通过响应,并将操作验证请求记录写入执行对象队列;如果满足,则不向终端应用发送验证通过响应,将所述数据库操作验证请求插入待处理队列。
一具体实施例中,该方法还包括:
接收来自终端应用的风险解除指令,所述风险解除指令携带所述提交的事物信息;
将与所述风险解除指令对应的操作验证请求记录从执行对象队列中删除,并针对因所述事物而导致插入待处理队列的数据库操作验证请求返回验证通过响应。
本发明实施例还提供一种数据库操作控制装置,包括:获取模块、第一发送模块、第一接收模块和执行模块;其中,
所述获取模块,用于获取数据库操作信息;
所述第一发送模块,用于向风险控制中心发送数据库操作验证请求,所述数据库操作验证请求携带所述数据库操作信息;
所述第一接收模块,用于接收来自风险控制中心的验证通过响应;
所述执行模块,用于当第一接收模块接收到来自风险控制中心的验证通过响应时,执行相应的数据库操作。
一具体实施例中,所述获取模块,具体用于实时监测并获取一个事物中可能会对数据库造成锁表的操作语句。
一具体实施例中,所述第一发送模块,还用于在当一个事物提交后,向风险控制中心发送风险解除指令,所述风险解除指令携带所述提交的事物信息。
本发明实施例还提供一种数据库操作控制装置,包括:第二接收模块、判断模块、第二发送模块和队列存储模块;其中,
所述第二接收模块,用于接收来自终端应用的数据库操作验证请求,所述数据库操作验证请求携带数据库操作信息;
所述判断模块,用于判断所述数据库操作是否满足锁表条件;
所述第二发送模块,用于在判断模块确定数据库操作不满足锁表条件时,向终端应用发送相应的验证通过响应;
所述队列存储模块,用于在判断模块确定数据库操作满足锁表条件时,将所述数据库操作验证请求插入待处理队列;确定所述数据库操作不满足锁表条件时,将所述操作验证请求记录写入执行对象队列。
一具体实施例中,所述第二接收模块,还用于接收来自终端应用的风险解除指令,所述风险解除指令携带所述提交的事物信息;
所述队列存储模块,还用于根据所述风险解除指令,将与所述风险解除指令对应的操作验证请求记录从执行对象队列中删除;
所述第二发送模块,还用于根据所述风险解除指令,针对因所述事物而导致插入待处理队列的数据库操作验证请求返回验证通过响应。
本发明实施例还提供一种数据库操作控制系统,包括终端设备和风险控制中心;其中,
所述终端设备上及风险控制中心上分别设置有上述的数据库操作控制装置。
本发明实施例数据库操作控制方法、装置及系统,向风险控制中心发送数据库操作验证请求,所述数据库操作验证请求携带数据库操作信息;如果接收到来自风险控制中心的针对所述数据库操作验证请求的验证通过响应,则执行所述数据库操作;否则,不执行所述数据库操作。根据本发明实施例所述的技术方案,当不同应用进行数据库记录操作时,系统可以自动识别是否存在行锁表的风险,如果存在风险,则执行该操作的应用处于等待状态,当风险解除后该操作继续进行处理;如果不存在风险,则直接进行数据记录操作,以上控制可以确保在分布式、多进程系统中行锁表情况得到控制,保障数据库不会产生行死锁,进而保障系统运行的稳定性。
附图说明
图1为本发明实施例一种数据库操作控制方法流程示意图;
图2为本发明实施例再一种数据库操作控制方法流程示意图;
图3为本发明实施例一种数据库操作控制装置结构示意图;
图4为本发明实施例再一种数据库操作控制装置结构示意图;
图5为本发明实施例1的系统结构示意图;
图6为本发明实施例1所述未检测到风险的处理流程示意图;
图7为本发明实施例1所述检测到风险的处理流程示意图。
具体实施方式
本发明实施例提出了一种数据库操作控制方法,应用于终端侧,如图1所示,该方法包括:
步骤11:获取数据库操作信息;
步骤12:向风险控制中心发送数据库操作验证请求,所述数据库操作验证请求携带所述数据库操作信息;
步骤13:如果接收到来自风险控制中心的针对所述数据库操作验证请求的验证通过响应,则执行所述数据库操作;否则,不执行所述数据库操作。
为了实现本发明实施例,不同业务应用程序接入风险管控中心时,需要在原有功能中集成风险检测代理功能,在风险检测代理功能中,实现与风险管控中心通过TCP/IP协议交互,并进行检测代理初始化功能。需要说明的是,为了实现风险管控中心对各个业务进行管控,需要在应用配置中给应用程序分配应用编号。
一具体实施例中,所述获取数据库操作信息,包括:实时监测并获取一个事物中可能会对数据库造成锁表的操作语句。具体的,应用运行过程中,实时检测应用中事务中会对数据库造成锁表的操作(包括update、delete、insert)语句,并对各个操作进行延缓操作处理,等待事务提交前,将数据库操作指令集通过SOCKET接口上发到风险管控中心,并等待风险管控中心反馈后执行后续数据库操作。
为实现上述功能,风险检测代理需要实现以下关键环节:
在调用数据库接口中,封装风险检测功能,将一个事务中涉及会对数据库造成锁表的操作按照业务执行顺序逐一插入到“待检测缓存队列”,暂时不执行数据库操作,待等到风险管控中心返回结果后再执行操作;
与风险管控中心通信的协议基于XML通信协议,具体定义如下:
验证指令消息主要包含以下字段:
验证指令消息反馈指令:
<ORIG>CRM</ORIG>--风险管控中心
<HOME>&程序配置的应用编号</HOME>--应用程序编号
<serial_no>123456</serial_no>--工单号
<resp>0</resp>--是否允许操作,0标示允许。
一具体实施例中,该方法还包括:
当一个事物提交后,向风险控制中心发送风险解除指令,所述风险解除指令携带所述提交的事物信息。
本发明实施例还相应地提出了一种数据库操作控制方法,应用于风险管控中心,如图2所示,该方法包括:
步骤21:接收来自终端应用的数据库操作验证请求,所述数据库操作验证请求携带数据库操作信息;
步骤22:判断所述数据库操作是否满足锁表条件,如果不满足,则向终端应用发送相应的验证通过响应,并将操作验证请求记录写入执行对象队列;如果满足,则不向终端应用发送验证通过响应,将所述数据库操作验证请求插入待处理队列。
一具体实施例中,风险管控中心收到风险检测代理发送的数据库操作检测消息后,先对消息进行解析,解析完成后生成工单号,并将结果保存到临时对象,然后临时对象与执行操作语句存储对象列表以及待处理队列中数据进行比较,主要采用基于表名比对:
不存在风险情况:按照对操作的表名存放顺序进行比较,如果通过数据表的操作顺序判断应用程序不存在风险,则可以向风险检测代理反馈验证通过。
例如:
临时对象存放数据如下:
工单号:20141112114334000001
语句:Update tableA set field=valueA1where condition=valueA2;
表名:tableA
归属库database1
语句:Update tableB set field=valueB1where condition=valueB2;
表名:tableB
归属库database1
当前处于风险中的操作列表对象存放数据如下:
工单号:20141112114334000002
语句:Update tableA set field=valueA3where condition=valueA4;
表名:tableA
归属库database1
语句:Update tableB set field=valueB3where condition=valueB4;
表名:tableB
归属库database1
通过以上示例,从表名操作顺序可以看出两个应用都是在同一个库先操作tableA,后操作tableB,不存在锁表的风险,则可以允许应用程序进行数据库操作。
存在风险情况:按照对操作的表名存放顺序进行比较,如果通过数据表的操作顺序判定存在风险,则将所有与临时对象存在风险的工单号保存到临时对象的互斥工单号数组中,并将临时对象存放到待处理队列,等到风险管控中心风险解除后再进行处理;
例如:
临时对象存放数据如下:
工单号:20141112114334000003
语句:Update tableA set field=valueA1where condition=valueA2;
表名:tableA
归属库database1
语句:Update tableB set field=valueB1where condition=valueB2;
表名:tableB
归属库database1
当前处于风险中的操作列表对象存放数据如下:
工单号:20141112114334000004
语句:Update tableB set field=valueB3where condition=valueB4;
表名:tableB
归属库database1
语句:Update tableA set field=valueA3where condition=valueA4;
表名:tableA
归属库database1
从表名操作顺序可以看出当前申请验证指令先更新tableA,后更新tableB,而当前其他应用正在处理的逻辑中,包括先更新tableB,后更新tableA的操作,所以会存在锁表的风险。所以需要将数据插入到待处理队列中,此时待处理队列中增加以下存储对象:
待处理编号:20141112114334000012
工单号:20141112114334000003
互斥工单号:20141112114334000004
语句:Update tableA set field=valueA1where condition=valueA2;
表名:tableA
归属库database1
语句:Update tableB set field=valueB1where condition=valueB2;
表名:tableB
归属库database1
需要说明的是,如果比较的数据表不再同一个数据库,则没有比较的意义,另外,将临时处理对象与待处理队列数据进行比较,主要防止待处理队列中数据无法处理的情况,保证系统运行稳定、流畅。
一具体实施例中,该方法还包括:
接收来自终端应用的风险解除指令,所述风险解除指令携带所述提交的事物信息;
将与所述风险解除指令对应的操作验证请求记录从执行对象队列中删除,并针对因所述事物而导致插入待处理队列的数据库操作验证请求返回验证通过响应。
风险管控中心待处理队列中数据处理由系统自动控制处理,即当前处于风险中的对象列表中的某一个风险解除后,待处理队列监控服务自动选取队列中互斥工单号已经被完全解除风险的工单进行处理,并将该条工单插入到执行对象队列中,并向风险检测代理反馈结果;
风险检测代理接收风险控制中心反馈的结果后,按照待检测缓存队列中存放语句的顺序依次执行数据库操作,执行完成后,不论成功还是失败,均需将结果反馈通过风险解除接口给风险管控中心,操作结果遵循XML语言,具体定义如下:
风险解除接口主要包括:
<ORIG>&程序配置的应用编号</ORIG>--应用程序
<HOME>CRM</HOME>--风险管控中心
<opr_type>2</opr_type>--操作类型,2表示风险解除
<serial_no>123456</serial_no>
风险控制中心接收到风险解除指令后,从执行对象队列中将对应工单号的数据删除。
本发明实施例还相应地提出了一种数据库操作控制装置,如图3所示,该装置包括:获取模块31、第一发送模块32、第一接收模块33和执行模块34;其中,
所述获取模块31,用于获取数据库操作信息;
所述第一发送模块32,用于向风险控制中心发送数据库操作验证请求,所述数据库操作验证请求携带所述数据库操作信息;
所述第一接收模块33,用于接收来自风险控制中心的验证通过响应;
所述执行模块34,用于当第一接收模块32接收到来自风险控制中心的验证通过响应时,执行相应的数据库操作。
一具体实施例中,所述获取模块31,具体用于实时监测并获取一个事物中可能会对数据库造成锁表的操作语句。
一具体实施例中,所述第一发送模块32,还用于在当一个事物提交后,向风险控制中心发送风险解除指令,所述风险解除指令携带所述提交的事物信息。
本发明实施例还相应地提出了一种数据库操作控制装置,如图4所示,该装置用于实现风险检测代理功能,包括:第二接收模块41、判断模块42、第二发送模块43和队列存储模块44;其中,
所述第二接收模块41,用于接收来自终端应用的数据库操作验证请求,所述数据库操作验证请求携带数据库操作信息;
所述判断模块42,用于判断所述数据库操作是否满足锁表条件;
所述第二发送模块43,用于在判断模块42确定数据库操作不满足锁表条件时,向终端应用发送相应的验证通过响应;
所述队列存储模块44,用于在判断模块42确定数据库操作满足锁表条件时,将所述数据库操作验证请求插入待处理队列;确定所述数据库操作不满足锁表条件时,将所述操作验证请求记录写入执行对象队列。
一具体实施例中,所述第二接收模块41,还用于接收来自终端应用的风险解除指令,所述风险解除指令携带所述提交的事物信息;
所述队列存储模块44,还用于根据所述风险解除指令,将与所述风险解除指令对应的操作验证请求记录从执行对象队列中删除;
所述第二发送模块43,还用于根据所述风险解除指令,针对因所述事物而导致插入待处理队列的数据库操作验证请求返回验证通过响应。
本发明实施例还相应地提出了一种数据库操作控制系统,该系统包括终端设备和风险控制中心;其中,
所述终端设备上设置有图3所示的数据库操作控制装置;
所述风险控制中心上设置有图4所示的数据库操作控制装置。
需要说明的是,本发明实施例所述的方案尤其适用于多任务、分布式系统应用程序同时操作数据库同一记录的控制场景,保障数据库不会产生行死锁。
下面通过具体实施例对本发明的技术方案作进一步详细说明。
实施例1
本实施例提出了一种数据库操作控制方案,当不同应用进行数据库记录操作时,系统可以自动识别是否存在行锁表的风险,如果存在风险,则执行该操作的应用处于等待状态,当风险解除后该操作继续进行处理;如果不存在风险,则直接进行数据记录操作。通过以上控制确保在分布式、多进程系统中行锁表情况得到控制,保障系统运行的稳定性。
图5所示为本实施例的系统结构示意图,如图5所示,该系统包括:风险控制中心和终端设备,其中终端设备上包括风险检测代理(对应图4所示的数据库操作控制装置),用于对该终端设备上运行的应用进行风险检测。
需要说明的是,为了实现本发明实施例所述的方案,在系统初始化阶段,需要完成以下初始化内容:
应用接入服务控制初始化(主要描述SOCKET链接,消息接收部分)。该部分初始化功能主要包括创建服务端监听端口、服务监听队列初始化。其中,创建服务端监听端口包括:创建SOCKET监听端口,通过绑定本机端口,用于监听连接风险控制服务中心的TCP请求;服务监听队列初始化包括:客户端连接句柄,消息读写缓存;
执行操作语句存储对象初始化。即当前应用正在执行的数据库操作,格式主要包括应用编号、工单号、检测语句数组,数据库操作语句按照应用处理顺序依次存放,下文简称执行对象;
检测数据临时存储对象及待处理存储对象初始化。检测数据临时存储对象用于接收到检测代理数据后,临时存放数据对象,格式定义如下:应用编号、工单号、检测语句数组,数据库操作语句按照应用处理顺序依次存放,下文简称临时对象;检测数据待处理存储对象的存放格式可以定义如下:待处理编号(从小到大)、应用编号、工单号、检测语句数组、互斥工单号数组(存放与执行操作语句存储对象互斥的工单号),数据库操作语句按照应用处理顺序依次存放,下文简称待处理对象。
以上检测语句存储对象存储格式为:语句、操作表名、归属数据库;工单号生成规则为年月日时分秒+六位的序列号,六位序列号由000000顺序累加,步长为1,例如20141102115934000001;待处理编号同工单号相同。
另外,需要说明的是,为了实现终端应用接入风险管控中心,需要实现以下初始化功能:
接入配置初始化,包括风险管控中心IP,端口,心跳消息监测频次;
检测代理流程配置初始化,包括应用实体编号、检测缓存队列;
规则上发初始化功能,上发内容包括实体编号、规则编号、规则列表;其中规则列表包括操作语句、归属数据库。
基于图5所示的系统,本实施例所述的数据库操作控制方案包括以下步骤:
步骤1:风险监测代理对应用某一事务中涉及锁表的语句进行缓存处理;
这里,风险检测代理实时检测应用中事务中会对数据库造成锁表的操作(包括update、delete、insert)语句,并对各个操作进行延缓操作处理,将相应操作按操作顺序存储在待检测缓存队列中,在应用执行COMMIT操作过程中,将数据库操作指令集通过SOCKET接口上发到风险管控中心,并将应用进程挂起,等待风险管控中心反馈结果,将挂起的进程进行重新激活。
步骤2:将缓存数据发送到风险管控中心;
风险检测代理检将缓存数据上发到风险管控中心的同时,会将事务设置为等待状态,待风险管控中心返回结果就执行数据库操作语句,并提交。
步骤3:风险管控中心将验证请求与执行对象之间表操作顺序进行风险判断,如果存在风险,则将验证请求插入等待队列;如果不存在风险则将验证请求插入执行对象队列;
这里,风险管控中心获取风险检测代理上发的数据库操作验证请求,根据上发的数据库执行语句检测是否有存在行锁表的风险,如果存在风险则将该条验证请求设置为等待状态;待风险解除后或者没有风险存在,则直接向发起的风险检测代理反馈验证通过,并将该操作涉及的数据库操作置为“风险中”状态,后续由各自应用程序完成数据库操作。
具体的,风险管控中心收到风险检测代理发送的数据库操作检测消息后,先对消息进行解析,解析完成后生成工单号,并将结果保存到临时对象,然后临时对象与执行操作语句存储对象列表以及待处理队列中数据进行比较,主要采用基于表名比对,原则为按照对操作的表名存放顺序进行比较,如果通过数据表的操作顺序判断应用程序不存在风险,则可以向风险检测代理反馈验证通过;如果通过数据表的操作顺序判定存在风险,则将所有与临时对象存在风险的工单号保存到临时对象的互斥工单号数组中,并将临时对象存放到待处理队列,等到风险管控中心风险解除后再进行处理。
本实施例中步骤3未检测到风险的处理流程如图6所示,步骤3检测到风险的处理流程如图7所示。
步骤4:验证请求处理完成后,向风险检测代理返回验证结果;
步骤5:风险检测代理接收验证结果后,通知应用执行数据库操作;
应用执行完成数据库操作后,上发操作结束指令,风险管控中心接受指令后将涉及的数据库操作风险解除。
步骤6:数据操作执行完成后,通过风险解除接口将风险控制中心中相应的执行对象删除。
需要说明的是,本实施例中,为了保障各个应用程序不会产生数据库行锁表的情况,需要完成如下操作:
风险检测代理需要延迟一个事务中各条数据库操作的执行,待最后一条操作完成后,将所有涉及的数据库操作通过SOCKET接口上发到风险管控中心;
风险管控中心接收风险检测代理上发的数据库操作请求,并将消息存放在临时对象中;
将临时对象与当前系统中执行对象队列和待处理队列中对象进行比对;
在比对时,先进行表操作顺序比较,如果表操作顺序不满足锁表操作,则向风险检测代理返回验证通过,并将该条请求记录写入执行对象队列;如果表操作顺序满足锁表条件,则将验证请求插入待处理队列,待风险解除后自动处理该验证请求,并反馈验证通过,并将该条请求记录写入执行操作语句存储对象列表;
风险检测代理接收风险管控中心验证通过结果后,执行应用该事务中所涉及的数据库操作,待一个事务提交后,将风险解除指令通过SOCKET接口上发风险管控中心;
风险管控中心接收到风险解除指令后,将该指令对应的风险操作从执行对象队列中删除。
上述各单元可以由电子设备中的中央处理器(Central Processing Unit,CPU)、数字信号处理器(Digital Signal Processor,DSP)或可编程逻辑阵列(Field-Programmable Gate Array,FPGA)实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (11)
1.一种数据库操作控制方法,其特征在于,该方法包括:
获取数据库操作信息;
向风险控制中心发送数据库操作验证请求,所述数据库操作验证请求携带所述数据库操作信息;
如果接收到来自风险控制中心的针对所述数据库操作验证请求的验证通过响应,则执行所述数据库操作;否则,不执行所述数据库操作。
2.根据权利要求1所述的方法,其特征在于,所述获取数据库操作信息,包括:实时监测并获取一个事物中可能会对数据库造成锁表的操作语句。
3.根据权利要求2所述的方法,其特征在于,该方法还包括:
当一个事物提交后,向风险控制中心发送风险解除指令,所述风险解除指令携带所述提交的事物信息。
4.一种数据库操作控制方法,其特征在于,该方法包括:
接收来自终端应用的数据库操作验证请求,所述数据库操作验证请求携带数据库操作信息;
判断所述数据库操作是否满足锁表条件,如果不满足,则向终端应用发送相应的验证通过响应,并将操作验证请求记录写入执行对象队列;如果满足,则不向终端应用发送验证通过响应,将所述数据库操作验证请求插入待处理队列。
5.根据权利要求4所述的方法,其特征在于,该方法还包括:
接收来自终端应用的风险解除指令,所述风险解除指令携带所述提交的事物信息;
将与所述风险解除指令对应的操作验证请求记录从执行对象队列中删除,并针对因所述事物而导致插入待处理队列的数据库操作验证请求返回验证通过响应。
6.一种数据库操作控制装置,其特征在于,该装置包括:获取模块、第一发送模块、第一接收模块和执行模块;其中,
所述获取模块,用于获取数据库操作信息;
所述第一发送模块,用于向风险控制中心发送数据库操作验证请求,所述数据库操作验证请求携带所述数据库操作信息;
所述第一接收模块,用于接收来自风险控制中心的验证通过响应;
所述执行模块,用于当第一接收模块接收到来自风险控制中心的验证通过响应时,执行相应的数据库操作。
7.根据权利要求6所述的装置,其特征在于,
所述获取模块,具体用于实时监测并获取一个事物中可能会对数据库造成锁表的操作语句。
8.根据权利要求7所述的装置,其特征在于,
所述第一发送模块,还用于在当一个事物提交后,向风险控制中心发送风险解除指令,所述风险解除指令携带所述提交的事物信息。
9.一种数据库操作控制装置,其特征在于,该装置包括:第二接收模块、判断模块、第二发送模块和队列存储模块;其中,
所述第二接收模块,用于接收来自终端应用的数据库操作验证请求,所述数据库操作验证请求携带数据库操作信息;
所述判断模块,用于判断所述数据库操作是否满足锁表条件;
所述第二发送模块,用于在判断模块确定数据库操作不满足锁表条件时,向终端应用发送相应的验证通过响应;
所述队列存储模块,用于在判断模块确定数据库操作满足锁表条件时,将所述数据库操作验证请求插入待处理队列;确定所述数据库操作不满足锁表条件时,将所述操作验证请求记录写入执行对象队列。
10.根据权利要求9所述的装置,其特征在于,
所述第二接收模块,还用于接收来自终端应用的风险解除指令,所述风险解除指令携带所述提交的事物信息;
所述队列存储模块,还用于根据所述风险解除指令,将与所述风险解除指令对应的操作验证请求记录从执行对象队列中删除;
所述第二发送模块,还用于根据所述风险解除指令,针对因所述事物而导致插入待处理队列的数据库操作验证请求返回验证通过响应。
11.一种数据库操作控制系统,其特征在于,该系统包括终端设备和风险控制中心;其中,
所述终端设备上设置有权利要求6至8任一项所述的数据库操作控制装置;
所述风险控制中心上设置有权利要求9或10所述的数据库操作控制装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510105559.5A CN106033422A (zh) | 2015-03-11 | 2015-03-11 | 一种数据库操作控制方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510105559.5A CN106033422A (zh) | 2015-03-11 | 2015-03-11 | 一种数据库操作控制方法、装置及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106033422A true CN106033422A (zh) | 2016-10-19 |
Family
ID=57151000
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510105559.5A Pending CN106033422A (zh) | 2015-03-11 | 2015-03-11 | 一种数据库操作控制方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106033422A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107066877A (zh) * | 2017-03-31 | 2017-08-18 | 武汉票据交易中心有限公司 | 一种交易系统的权限变更方法及系统 |
CN108920621A (zh) * | 2018-06-28 | 2018-11-30 | 努比亚技术有限公司 | 数据更新方法、移动终端及计算机可读存储介质 |
CN109766324A (zh) * | 2018-12-14 | 2019-05-17 | 东软集团股份有限公司 | 分布式锁的控制方法、装置、可读存储介质及电子设备 |
CN110399378A (zh) * | 2018-04-17 | 2019-11-01 | 北京京东尚科信息技术有限公司 | 数据库系统锁操作分析方法及装置 |
CN111614620A (zh) * | 2020-04-17 | 2020-09-01 | 广州南翼信息科技有限公司 | 一种数据库访问控制方法、系统和存储介质 |
CN113419924A (zh) * | 2021-08-23 | 2021-09-21 | 北京安华金和科技有限公司 | 一种基于会话保持的数据库操作风险提示处理方法及装置 |
CN110399378B (zh) * | 2018-04-17 | 2024-07-16 | 北京京东尚科信息技术有限公司 | 数据库系统锁操作分析方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101551822A (zh) * | 2009-05-27 | 2009-10-07 | 北京星网锐捷网络技术有限公司 | 一种数据库复制方法和装置 |
CN101706781A (zh) * | 2009-09-29 | 2010-05-12 | 北京星网锐捷网络技术有限公司 | 一种数据库缓存集中管理方法和系统 |
CN103164455A (zh) * | 2011-12-15 | 2013-06-19 | 百度在线网络技术(北京)有限公司 | 数据库的优化方法及装置 |
CN104391913A (zh) * | 2014-11-18 | 2015-03-04 | 北京锐安科技有限公司 | 一种数据库管理方法及装置 |
CN104391995A (zh) * | 2014-12-15 | 2015-03-04 | 北京趣拿软件科技有限公司 | 一种sql语句审核的方法、数据库运维的方法及系统 |
-
2015
- 2015-03-11 CN CN201510105559.5A patent/CN106033422A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101551822A (zh) * | 2009-05-27 | 2009-10-07 | 北京星网锐捷网络技术有限公司 | 一种数据库复制方法和装置 |
CN101706781A (zh) * | 2009-09-29 | 2010-05-12 | 北京星网锐捷网络技术有限公司 | 一种数据库缓存集中管理方法和系统 |
CN103164455A (zh) * | 2011-12-15 | 2013-06-19 | 百度在线网络技术(北京)有限公司 | 数据库的优化方法及装置 |
CN104391913A (zh) * | 2014-11-18 | 2015-03-04 | 北京锐安科技有限公司 | 一种数据库管理方法及装置 |
CN104391995A (zh) * | 2014-12-15 | 2015-03-04 | 北京趣拿软件科技有限公司 | 一种sql语句审核的方法、数据库运维的方法及系统 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107066877A (zh) * | 2017-03-31 | 2017-08-18 | 武汉票据交易中心有限公司 | 一种交易系统的权限变更方法及系统 |
CN107066877B (zh) * | 2017-03-31 | 2019-12-31 | 武汉票据交易中心有限公司 | 一种交易系统的权限变更方法及系统 |
CN110399378A (zh) * | 2018-04-17 | 2019-11-01 | 北京京东尚科信息技术有限公司 | 数据库系统锁操作分析方法及装置 |
CN110399378B (zh) * | 2018-04-17 | 2024-07-16 | 北京京东尚科信息技术有限公司 | 数据库系统锁操作分析方法及装置 |
CN108920621A (zh) * | 2018-06-28 | 2018-11-30 | 努比亚技术有限公司 | 数据更新方法、移动终端及计算机可读存储介质 |
CN109766324A (zh) * | 2018-12-14 | 2019-05-17 | 东软集团股份有限公司 | 分布式锁的控制方法、装置、可读存储介质及电子设备 |
CN111614620A (zh) * | 2020-04-17 | 2020-09-01 | 广州南翼信息科技有限公司 | 一种数据库访问控制方法、系统和存储介质 |
CN113419924A (zh) * | 2021-08-23 | 2021-09-21 | 北京安华金和科技有限公司 | 一种基于会话保持的数据库操作风险提示处理方法及装置 |
CN113419924B (zh) * | 2021-08-23 | 2021-12-07 | 北京安华金和科技有限公司 | 一种基于会话保持的数据库操作风险提示处理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020024405A1 (zh) | 基于分布式协调的测试方法、装置、服务器及存储介质 | |
US9075750B2 (en) | Oracle rewind: metadata-driven undo | |
US8898109B2 (en) | Automatic transaction retry after session failure | |
CN109951547B (zh) | 事务请求并行处理方法、装置、设备和介质 | |
CN106033422A (zh) | 一种数据库操作控制方法、装置及系统 | |
CN107688487A (zh) | 用于恢复数据库会话的状态的方法和系统 | |
Daudjee et al. | Lazy database replication with ordering guarantees | |
US20070260714A1 (en) | Asynchronous interconnect protocol for a clustered dbms | |
CN107633014A (zh) | 一种数据存储方法及服务器 | |
US20160048703A1 (en) | Securing integrity and consistency of a cloud storage service with efficient client operations | |
US20140026120A1 (en) | Unit testing an enterprise javabeans (ejb) bean class | |
WO2022142781A1 (zh) | 区块链的异步落账方法、装置、介质及电子设备 | |
CN113064744A (zh) | 任务处理方法、装置、计算机可读介质及电子设备 | |
US20170085653A1 (en) | Method, device and system for message distribution | |
EP2876566A1 (en) | Lock operation method of database system, and device | |
US9043283B2 (en) | Opportunistic database duplex operations | |
CN107277022A (zh) | 进程标记方法及装置 | |
CN104407808B (zh) | 写入数据的方法和装置 | |
CN104021196B (zh) | 一种针对System V消息队列的I/O复用方法 | |
US20120142330A1 (en) | System and Method For Transactional Application Lifecycle Management For Mobile Devices | |
US11176115B2 (en) | Dependency locking | |
TWI334981B (en) | Method and computer program product for providing distributed storage configuration control within a cluster of storage devices in a storage network | |
CN112487010B (zh) | 一种区块链用户数据表更新方法、设备及存储介质 | |
US11936739B2 (en) | Automated reset of session state | |
CN111831271B (zh) | 一种支持模拟预合入流水线的Git代码评审系统及其方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20161019 |
|
RJ01 | Rejection of invention patent application after publication |