一种数据库的处理方法、装置及系统的制作方法

文档序号:9787385阅读:661来源:国知局
一种数据库的处理方法、装置及系统的制作方法
【技术领域】
[0001] 本发明涉及数据库技术领域,特别涉及一种数据库的处理方法、装置及系统。
【背景技术】
[0002] 数据库操作的原子性是事务型数据库的基本特征,用于保证对数据库的某一操作 结果的完整性,即要么完全被执行要么完全不被执行。目前很多种类型的数据库不支持事 务处理,如分析型数据库和某些数据库的存储引擎。在使用这些数据库处理数据的过程中 可能需要保证某一执行过程的原子性,如数据的入库过程、报表的预统计执行过程。在使用 不支持事务的数据库处理这些业务时,不能保证数据处理过程的原子性。

【发明内容】

[0003] 本发明的目的在于提供一种数据库的处理方法、装置及系统,使得数据库执行的 结果要么完全被执行要么不被执行,保证了数据库执行的原子性。
[0004] 为了达到上述目的,本发明提供一种数据库的处理方法,包括:
[0005] 1. -种数据库的处理方法,其特征在于,包括:
[0006] 根据所述数据库的业务需求将所述数据库的执行流程依次分割为多个需要提供 原子性保护的原子模块;
[0007] 实时获取正在运行的目的原子模块的异常状态,根据所述异常状态确定异常类 型;
[0008] 若所述异常类型为回退类型,获取与所述回退类型对应的第一处理方法并执行所 述第一处理方法使得所述目的原子模块回退到该目的原子模块运行前的状态。
[0009] 其中,所述方法还包括:
[0010] 若所述异常类型不为回退类型,获取与该异常类型对应的第二处理方法并执行所 述第二处理方法对所述异常类型进行处理。
[0011] 其中,若所述异常类型为回退类型,获取与所述回退类型对应的第一处理方法并 执行所述第一处理方法使得所述目的原子模块回退到该目的原子模块运行前的状态的步 骤包括:
[0012] 若所述异常类型为回退类型,获取预先存储的与该回退类型对应的第一处理方法 的回退代码;
[0013] 执行所述回退代码,使得所述目的原子模块回退到该目的原子模块运行前的状 态,并结束流程。
[0014] 其中,若所述异常类型不为回退类型,获取与该异常类型对应的第二处理方法执 行所述第二处理方法对所述异常进行处理的步骤包括:
[0015] 若所述异常类型不为回退类型,获取预先存储的与该异常类型对应的第二处理方 法的处理代码;
[0016] 执行所述处理代码后,进一步获取所述目的原子模块的异常状态;
[0017] 若所述目的原子模块不存在异常,则所述数据库继续执行下一原子模块;若所述 目的原子模块存在异常,则结束流程。
[0018] 进一步的,所述回退代码为删除语句。
[0019] 本发明实施例还提供一种数据库的处理装置,包括:
[0020] 分割模块,用于根据所述数据库的业务需求将所述数据库的执行流程依次分割为 多个需要提供原子性保护的原子模块;
[0021] 异常获取模块,用于实时获取正在运行的目的原子模块的异常状态,根据所述异 常状态确定所述异常的异常类型;
[0022] 第一执行模块,用于若所述异常类型为回退类型,获取与所述回退类型对应的第 一处理方法并执行所述第一处理方法使得所述目的原子模块回退到该目的原子模块运行 前的状态。
[0023] 其中,上述处理装置还包括:
[0024] 第二执行模块,用于若所述异常类型不为回退类型,获取与该异常类型对应的第 二处理方法并执行所述第二处理方法对所述异常类型进行处理。
[0025] 其中,所述第一执行模块包括:
[0026] 第一获取单元,用于若所述异常类型为回退类型,获取预先存储的与该回退类型 对应的第一处理方法的回退代码;
[0027] 执行单元,用于执行所述回退代码,使得所述目的原子模块回退到该目的原子模 块运行前的状态,并结束流程。
[0028] 其中,所述第二执行模块包括:
[0029] 第二获取单元,用于若所述异常类型不为回退类型,获取预先存储的与该异常类 型对应的第二处理方法的处理代码;
[0030] 第三获取单元,用于执行所述处理代码后,进一步获取所述目的原子模块的异常 状态;
[0031] 判断单元,用于若所述目的原子模块不存在异常,则所述数据库继续执行下一原 子模块;若所述目的原子模块存在异常,则结束流程。
[0032] 进一步的,所述回退代码为删除语句。
[0033] 本发明实施例还提供一种系统,包括数据库,所述数据库包括多个需要提供原子 性保护的原子模块,所述系统还包括如权利要求6至10任一项所述的数据库的处理装置; [0034] 当所述原子模块出现异常类型为回退类型的异常时,所述数据库的处理装置调用 与所述回退类型对应的回退代码并执行,使得所述数据库回退到该原子模块执行之前的状 〇
[0035] 本发明的上述技术方案至少具有如下有益效果:
[0036] 本发明实施例的数据库的处理方法中,通过为每一个原子模块的异常类型设置相 应的处理方法,保证了在异常类型为回退类型时,对应的原子模块能够执行相应的处理方 法回退到该原子模块运行前的状态,保证了每一个原子模块在执行业务上具有原子性,从 而保证了整个数据执行的原子性。
【附图说明】
[0037] 图1表示本发明实施例的数据库的处理方法的基本步骤示意图;
[0038] 图2表示本发明实施例的数据库的处理方法中第二处理方法的执行步骤示意图;
[0039] 图3表示本发明实施例的数据库的处理方法的具体应用流程示意图;
[0040] 图4表示本发明实施例的数据库的处理装置的结构示意图。
【具体实施方式】
[0041] 为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具 体实施例进行详细描述。
[0042] 本发明针对现有技术中很多不支持事务处理数据库在执行过程中无法保证原子 性的问题,提供一种数据库的处理方法、装置及系统,通过为每一个原子模块的异常类型设 置相应的处理方法,保证了在异常类型为回退类型时,对应的原子模块能够执行相应的处 理方法回退到该原子模块运行前的状态,保证了每一个原子模块在执行业务上具有原子 性,从而保证了整个数据执行的原子性。
[0043] 如图1所示,本发明实施例提供一种数据库的处理方法,包括:
[0044] 步骤10,根据所述数据库的业务需求将所述数据库的执行流程依次分割为多个需 要提供原子性保护的原子模块;
[0045] 步骤11,实时获取正在运行的目的原子模块的异常状态,根据所述异常状态确定 所述异常的异常类型;
[0046] 步骤12,若所述异常类型为回退类型,获取与所述回退类型对应的第一处理方法 并执行所述第一处理方法使得所述目的原子模块回退到该目的原子模块运行前的状态。 [0047] 本发明的上述实施例中,数据库的执行流程为该数据库的整个执行过程,该整个 执行过程从业务需求上可以划分为多个原子模块,该多个原子模块在执行业务上需要保证 原子性。具体的,原子模块的业务需求可以为数据的入库过程、报表的预统计执行过程、数 据的出库过程等等一系列过程,在此不一一列举。
[0048] 具体的,本发明实施例的实际应用中,例如一段执行代码如下:
[0049]
[0051] 比如执行update语句的时候出错,col2和col3的和超出了 coll字段的范围 等;这时候就需要将整个代码块回退到之前的状态,需要将插入的所有数据清除掉,执行 delete语句可以实现。
[0052] 本发明上述实施例中,所述方法还包括:
[0053] 步骤13,若所述异常类型不为回退类型,获取与该异常类型对应的第二处理方法 并执行所述第二处理方法对所述异常类型进行处理。
[0054] 本发明具体实施例中,数据库运行过程中可能会出现各种异常,若异常类型不为 回退类型,即出现该异常时,无需将数据库回退到前一状态,而是通过其他方法进行修复, 若修复完成则继续运行数据库;若无法修复,则报错退出,由其他人员或设备进行后续处 理。
[0055] 本发明中主要将异常类型分为回退类型和不回退类型,需要说明的是,回退类型 的异常情况也分为很多种不同的情况,需根据不同的情况提供不同的分支处理流程,但其 最终目的均是将其回退到前一状态;同样不回退类型也分为很多种不同的情况,数据库根 据不同的情况分别处理。
[0056] 具体的,本发明上述实施例中,如图2所示,步骤13包括:
[0057] 步骤131,若所述异常类型不为回退类型,获取预先存储的与该异常类型对应的第 二处理方法的处理代码;
[0058] 步骤132,执行所述处理代码后,进一步获取所述目的原子模块的异常状态;
[0059] 步骤133,若所述目的原子模块不存在异常,则所述数据库继续执行下一原子模 块;若所述目的原子模块存在异常,则结束流程。
[0060] 本发明上述实施例中,若目的原子模块的异常类型不是回退类型,也获取相应的 处理方法,并对其进行处理,若处理完成后该目的原子模块不存在异常,则继续运行下一原 子模块;若处理完成后该目的原子模块还存在其他异常且无法处理,则报错退出数据库,由 后续人员或程序进行进一步处理。
[0061] 本发明的上述实施例中,步骤12包括:
[0062] 步骤121,若所述异常类型为回退类型,获取预先存储的与该回退类型对应的第一 处理方法的回退代码;
[0063] 步骤122,执行所述回退代码,使得所述目的原子模块回退到该目的原子模块运行 前的状态,并结束流程。
[0064] 本发明具体实施例中,原子模块
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1