应用于数据库的数据处理方法、装置及计算机存储介质制造方法及图纸

技术编号:37352006 阅读:23 留言:0更新日期:2023-04-27 07:03
本发明专利技术公开了应用于数据库的数据处理方法,包括:数据存储引擎针对所述数据库执行数据压缩事务/快照事务过程中,将工作数据库切换为临时数据库,用于承接数据压缩事务/快照事务执行期间的数据更新操作;当所述数据压缩事务和/或快照事务执行完成后,将工作数据库切换为压缩数据库/原始数据库,所述的压缩数据库由数据压缩事务创建,所述的原始数据库为快照事务的目标数据库。本发明专利技术针对数据压缩/快照中共同存在的数据安全问题,提出新建临时数据库来区分新写入的数据和已有数据,确保操作过程更安全可靠;针对多存储引擎实例面临的更复杂的快照原子化操作,生成快照更快捷,锁冲突更不宜发生,保证了多个存储引擎的数据一致性。致性。致性。

【技术实现步骤摘要】
应用于数据库的数据处理方法、装置及计算机存储介质


[0001]本专利技术数据库存储
,具体的涉及应用于数据库的数据处理方法、装置及计算机存储介质。

技术介绍

[0002]当用B+树做数据库时,数据库随着不断地写入,数据库容量会不断增大,但即使有大量的删除操作,数据库容量也不会随之减小。这样,数据压缩应运而生,数据压缩过程是个数据重建的过程,新起一个B+数据库,扫描所有的数据,写入到新数据库中,这样保证写入的都是有用的数据,删除的会被丢弃。
[0003]数据库工作时,会持续不断有更新操作。设想一个场景,在做数据压缩时,针对某个key的更新操作仍然会写到未压缩的B+树文件中。但压缩时,这个key对应的原始va l ue可能已经写入到新的数据库中,那么读取未压缩的B+树文件和新的B+树文件,会读取到两个不相同的va l ue,也就是数据压缩过程中产生了数据不一致的情况。这是本专利技术专利所要解决的第一个技术问题。
[0004]再看快照,数据库经常不是一个实例就能扛住所有的读写,数据库的备份是数据库系统的一部分,快照是一种数据库备份的方案,目的是快速生成可工作的备份数据库。
[0005]快照是一个全量备份的过程,用来创建备份数据库的。全量备份过程分为两步,第一步是基于某个检查点生成全量快照,该全量快照包含的是这个检查点之前的所有数据;第二步是基于这个检查点之后的增量数据,这部分是备份数据库使用全量快照之后缺失的部分,需要补充完整才是一个可用的备份数据库。其中,使用快照备份时,通常需要知晓我们备份到哪个点,这个点之前的数据需要被全量拷贝并应用,这个点之后的数据可与数据库主节点沟通如何同步,这个点被称为检查点。
[0006]生成快照时,B+树的数据库文件是需要被复制的。复制文件有两种方式:拷贝及硬链接。两种方式的不同在于:拷贝后是两份文件,各自的写入是独立的;硬链接方式是拷贝出一个文件节点,而不是文件本身,但是写入的是同一份文件,对源文件的写入会体现在新文件中。但是拷贝方式有个问题,假设磁盘的写入速度是500MB/s,拷贝50GB文件需要100秒,那么生成快照的时间也至少需要100秒,而生成快照的时间段对数据更新是阻塞的,这么久的耗时是存储系统不可接受的。因此复制文件只能采用硬链接,硬链接是对文件的引用,让同一个文件拥有多个文件名,可以分散在不同的目录中。同时修改同一个文件后,与之硬链接的所有文件都一起修改了。硬链接复制文件仅产生一个新的文件节点,而不做数据拷贝,耗时几乎可以忽略不计。
[0007]如果使用硬链接进行拷贝,对数据库原始数据文件的写入,新的复制文件中也会体现这些写入操作。而传输快照到备份数据库时,操作过程需要消耗一定的时间,这段时间内的数据写入如果仍然写入原始的数据库文件中,由于采用硬链接的方式进行拷贝,传输的文件尽管是复制的文件,但是这些写入操作在复制的文件上也是可见的。这样复制文件中已经基于检查点之后的更新存在,而不是基于当前检查点的,这是快照所不允许的,因此
这个复制文件实际是个错误的文件。这是本专利技术专利所要解决的第二个技术问题。有鉴于此,特提出本专利技术专利。

技术实现思路

[0008]针对以上阐述的问题,本专利技术提出了应用于数据库的数据处理方法、装置及计算机存储介质,可以解决数据压缩下的数据安全问题,以及秒级生成快照,传输快照也可保证基于检查点的数据一致性,以及多数据存储引擎实例依然可保证快照数据的一致性。具体地,采用了如下技术方案:
[0009]应用于数据库的数据处理方法,包括:
[0010]数据存储引擎针对所述数据库执行数据压缩事务/快照事务过程中,将工作数据库切换为临时数据库,用于承接数据压缩事务/快照事务执行期间的数据更新操作;
[0011]当所述数据压缩事务和/或快照事务执行完成后,将工作数据库切换为压缩数据库/原始数据库,所述的压缩数据库由数据压缩事务创建,所述的原始数据库为快照事务的目标数据库。
[0012]作为本专利技术的可选实施方式,本专利技术的应用于数据库的数据处理方法中,所述数据库的单个存储引擎内部具有交换锁swapLock,所述存储引擎在执行工作数据库的切换操作之前,进行交换锁swapLock加锁操作。
[0013]作为本专利技术的可选实施方式,本专利技术的应用于数据库的数据处理方法中,所述数据库的单个存储引擎内部具有任务锁task l ock,所述的数据压缩事务的执行流程包括:
[0014]数据存储引擎进行任务锁task l ock加锁操作,将工作数据库切换为临时数据库;
[0015]针对当前数据库执行数据压缩操作,数据压缩操作完成后将数据压缩创建的压缩数据库作为当前数据库;
[0016]切换工作数据库为当前数据库,解锁任务锁task l ock。
[0017]作为本专利技术的可选实施方式,本专利技术的应用于数据库的数据处理方法中,所述将工作数据库切换为临时数据库包括:
[0018]数据存储引擎进行交换锁swapLock加锁操作,将工作数据库切换为临时数据库,切换完成后,解锁所述交换锁swapLock;
[0019]所述切换工作数据库为当前数据库包括:
[0020]数据存储引擎进行交换锁swapLock加锁操作,将工作数据库切换为当前数据库,切换完成后,解锁所述交换锁swapLock。
[0021]作为本专利技术的可选实施方式,本专利技术的应用于数据库的数据处理方法中,所述数据库的单个数据存储引擎内部具有尝试获取锁tryLock,所述快照事务的执行流程包括:
[0022]数据存储引擎调用所述尝试获取锁tryLock针对任务锁task l ock尝试进行加锁;
[0023]判断所述临时数据库中是否含有数据,若判断结果为是,则解锁获取锁tryLock并返回失败,若判断结果为否,则进行任务锁task l ock加锁操作;
[0024]调用尝试获取锁tryLock针对交换锁swapLock尝试进行加锁,并在所述交换锁swapLock加锁成功后,将工作数据库切换为临时数据库;
[0025]针对当前数据库执行快照操作,快照完成后,解锁任务锁task l ock。
[0026]作为本专利技术的可选实施方式,本专利技术的应用于数据库的数据处理方法中,所述调用尝试获取锁tryLock针对交换锁swapLock尝试进行加锁包括:
[0027]调用尝试获取锁tryLock,获取交换锁swapLock的当前状态;
[0028]若所述交换锁swapLock当前处于加锁状态,则尝试获取锁tryLock尝试加锁失败并返回错误,若所述交换锁swapLock当前处于解锁状态,则针对交换锁swapLock进行加锁;
[0029]所述尝试获取锁tryLock尝试加锁失败后,每隔一定时间再次执行尝试加锁操作,直至尝试加锁对象加锁成功,或者快照操作被撤销。
[0030]作为本专利技术的可选实施方式,本专利技术的应用于数据库的数据处理方法中,当单个所述数据库包含多个数据存储本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.应用于数据库的数据处理方法,其特征在于,包括:数据存储引擎针对所述数据库执行数据压缩事务/快照事务过程中,将工作数据库切换为临时数据库,用于承接数据压缩事务/快照事务执行期间的数据更新操作;当所述数据压缩事务和/或快照事务执行完成后,将工作数据库切换为压缩数据库/原始数据库,所述的压缩数据库由数据压缩事务创建,所述的原始数据库为快照事务的目标数据库。2.根据权利要求1所述的应用于数据库的数据处理方法,其特征在于,所述数据库的单个存储引擎内部具有交换锁swapLock,所述存储引擎在执行工作数据库的切换操作之前,进行交换锁swapLock加锁操作。3.根据权利要求2所述的应用于数据库的数据处理方法,其特征在于,所述数据库的单个存储引擎内部具有任务锁tasklock,所述的数据压缩事务的执行流程包括:数据存储引擎进行任务锁tasklock加锁操作,将工作数据库切换为临时数据库;针对当前数据库执行数据压缩操作,数据压缩操作完成后将数据压缩创建的压缩数据库作为当前数据库;切换工作数据库为当前数据库,解锁任务锁tasklock。4.根据权利要求3所述的应用于数据库的数据处理方法,其特征在于,所述将工作数据库切换为临时数据库包括:数据存储引擎进行交换锁swapLock加锁操作,将工作数据库切换为临时数据库,切换完成后,解锁所述交换锁swapLock;所述切换工作数据库为当前数据库包括:数据存储引擎进行交换锁swapLock加锁操作,将工作数据库切换为当前数据库,切换完成后,解锁所述交换锁swapLock。5.根据权利要求2所述的应用于数据库的数据处理方法,其特征在于,所述数据库的单个数据存储引擎内部具有尝试获取锁tryLock,所述快照事务的执行流程包括:数据存储引擎调用所述尝试获取锁tryLock针对任务锁tasklock尝试进行加锁;判断所述临时数据库中是否含有数据,若判断结果为是,则解锁获取锁tryLock并返回失败,若判断结果为否,则进行任务锁tasklock加锁操作;调用尝试获取锁tryLock针对交换锁swapLock尝试进行加锁,并在所述交换锁swapLock加锁成功后,将工作数据库切换为临时数据库;针对当前数据库执行快照操作,快照完成后,解锁任务锁tasklock。6.根据权利要求5所述的应用于数据库的数据处理方法,其特征在于,所述调用尝试获取锁tryLock针对交换锁swapLock尝试进行加锁包括:调用尝试获取锁tryLock,获取交换锁swapLock的当前状态;若所述交换锁swapLock当前处于加锁状态,则尝试获取锁tryLock尝试加锁失败并返回错误,若所述交换锁swapLock当前处于解锁状态,则针对交换锁swapLock进行加锁;所述尝试获取锁tryLock尝试加锁失败后,每隔一定时间再次执行尝试加锁操作,直至尝试加锁对象加锁成功,或者快照操作被撤销。7.根据权利要求5所述的应用于数据库的数据处理方法,其特征在于,当单个所述数据库包含多个数据存储引擎实例时,基于所有数据存储...

【专利技术属性】
技术研发人员:幸福徐锐波卢文伟刘方
申请(专利权)人:北京云思智学科技有限公司
类型:发明
国别省市:

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

1