一种面向关系型数据库版本快照的构建方法及查询方法技术

技术编号:33201307 阅读:96 留言:0更新日期:2022-04-24 00:38
本发明专利技术公开了一种面向关系型数据库版本快照的构建方法及查询方法。其中构建方法包括提取数据库的对象,获取对象的标识和对象内容;通过内容寻址算法将对象内容键值化,得到对象的内容寻址标识;建立对象树目录;将对象标识和对象内容寻址标识安插在叶子节点上,通过递归向上直到root节点为止,获取当前版本快照;数据发生变化时,获取新的版本快照,将所有版本快照集合组成快照库,并将对象标识、提交信息和对象内容寻址标识关联存储在数据库表内。通过对象标识查询对象对应的版本提交号,通过版本提交号得到对应版本快照及快照内各叶子节点信息,利用内容寻址标识关联的对象内容信息,得出版本快照内其它关联对象的内容。得出版本快照内其它关联对象的内容。得出版本快照内其它关联对象的内容。

【技术实现步骤摘要】
一种面向关系型数据库版本快照的构建方法及查询方法


[0001]本专利技术涉及数据库
,特别是涉及一种面向关系型数据库版本快照的构建方法及查询方法。

技术介绍

[0002]在应用系统中,我们经常需要追溯数据变更的历史信息,例如一张设计图,可能经过多个版本的修改,当需要这张设计图的所有历史版本时,我们就需要对设计图对象进行版本跟踪。
[0003]目前行业内的应用系统通常采用类似事件溯源架构来实现数据对象的版本跟踪。其原理并不是数据库直接存储对象历史信息,而是通过跟踪存储对象所有变更操作的事件序列,具体来讲,跟踪每个变更事件包含了变更对象的ID和变更内容,对象的某一版本的历史信息通过该对象的变更事件序列的叠加来产生。
[0004]但是,这种事件溯源的方法只能满足单一业务对象的版本跟踪,并不能追溯多个对象在同一时刻的历史信息,即无法获得系统整体的快照历史。当我们不仅需要获取业务对象的历史版本,还需要获取业务对象历史版本对应的版本信息时,无法通过现有的方法来实现我们的目的。因此我们需要的是对整个系统所有版本的快照进行控制,而不是单一对象数据的版本跟踪。
[0005]传统的快照级版本控制实现技术有SVN、Git等,SVN是增量式的版本控制,它不会将各个版本完整的保留,而是记录版本之间的差异,Git是基于内容寻址存储整个快照,这类技术虽然具备快照级版本控制的能力,但由于其底层是文件系统,无法实现数据对象之间版本快照的关联查询。
[0006]鉴于此,克服该现有技术所存在的缺陷是本
亟待解决的问题。

技术实现思路

[0007]本专利技术要解决的技术问题是如何在保留关系查询功能的同时,又能具备系统变更历史的快速追溯能力,并且还能通过版本的追溯了解业务对象所关联的其它对象的情况。
[0008]本专利技术采用如下技术方案:
[0009]第一方面,本专利技术提供一种面向关系型数据库版本快照构建方法,包括:
[0010]提取数据库内的对象,获取对象的标识和对象的内容;
[0011]通过内容寻址算法将对象的内容键值化,得到对象的内容寻址标识;
[0012]建立对象的树目录:对树目录进行分层,依次为第一层、第二层

和第n层,n为大于等于3的整数,其中,数据库对象的类别决定树目录的层数,root节点为树目录的第一层,用于区分不同的快照版本;第n层为叶子节点层,用于存储对象标识和对象的内容寻址标识,并且,第n-1层的每个节点对应256个叶子节点并进行编号为0,1,2

255;
[0013]通过对象所属的类别和对象的标识得到对象对应的叶子节点存储位置,并进行存储,通过内容寻址算法得出第n-1层的节点对应的内容寻址标识,再通过递归向上操作的
方式得到root节点进行提交,得到提交信息,并将对象的标识、提交信息和对象的内容寻址标识关联的存储关系型数据库表内,获取当前版本快照;
[0014]当前快照的对象的内容发生变化时,复制当前版本快照库,将变化后的对象数据的内容通过寻址算法获取内容寻址标识,然后将对象标识和获取的内容寻址标识组成的键值对信息替换到副本对应位置的叶子节点上,再通过递归向上操作的方式得到root节点进行提交,并将对象的标识、提交信息和对象的内容寻址标识关联的存储关系型数据库表内,得到新的版本快照;
[0015]将所有版本的快照集中在一起,形成用于对象数据标识检索的快照库。
[0016]优选的,建立对象的树目录之前还包括数据库对象的分组,具体为:获取对象的类别,并将数据库内的对象按照对象所属的类别进行分组。
[0017]优选的,所述通过对象所属的类别和对象的标识得到对象对应的叶子节点存储位置,具体包括:
[0018]通过对象所属的类别,确定与对象相关联n-1层的节点;
[0019]将对象的内容寻址标识对256进行取余,得到的余数对应对象相关联n-1层的节点下面的叶子节点编号。
[0020]优选的,第n-1层的节点对应的内容为节点对应存储的所有叶子节点信息,利用内容寻址算法将节点对应存储的叶子节点信息转换为所述第n-1层的节点对应的内容寻址标识。
[0021]优选的,对象的变化不仅包括对象的内容发生变化,还包括对象的新增和对象的删除,具体为:
[0022]当新增对象时,复制当前快照,利用新增对象所属的类别和新增对象的标识得到对象对应的叶子节点存储位置,然后将新增对象的标识和内容寻址标识存到相应的叶子节点上,通过递归向上操作的方式得到root节点进行提交,得到提交信息,并将对象的标识、提交信息和对象的内容寻址标识关联的存储关系型数据库表内;
[0023]当删除对象时,复制当前快照并删除该对象对应的标识和内容寻址标识,再通过递归向上操作的方式得到root节点进行提交,得到提交信息,并将对象的标识、提交信息和对象的内容寻址标识关联的存储关系型数据库表内。
[0024]优选的,所述通过递归向上操作的方式得到root节点进行提交具体为:把上层节点所关联的下层节点信息当作上层节点的内容,获取上层节点的标识和内容寻址标识组成的键值对,并存储在相应节点上;从叶子节点开始,依次向上操作直到得到root节点的标识和内容寻址标识,并存储在root节点上为止。
[0025]优选的,所述将对象的标识、提交信息和对象的内容寻址标识关联的存储关系型数据库表内,具体为:
[0026]当获取数据库的第一个版本快照时,需要将数据库所有对象的标识、提交信息和对象的内容寻址标识关联的存储关系型数据库表内;
[0027]当获取数据库的除第一个版本外的快照时,只需将变化对象的标识、提交信息和对象的内容寻址标识关联的存储关系型数据库表内。
[0028]优选的,同时发生内容变化的对象可以为一个或多个。
[0029]优选的,所述提交信息具体包括:版本的提交号、提交者和提交时间。
[0030]第二方面,本专利技术在第一方面构建的快照库的基础上给出了一种面向关系型数据库版本快照的查询方法,具体包括:
[0031]获取所要查询对象的标识;
[0032]利用对象的标识,在数据库的表内查询出对象标识关联的所有提交信息,并得到所有提交信息内的提交号;
[0033]利用提交号找出快照库内对应的版本快照,以及快照内所包含的叶子节点上的对象标识和内容寻址标识组成的键值对信息;
[0034]利用内容寻址标识关联的对象内容信息,得出版本快照内其它关联对象的内容。
[0035]本专利技术通过关系型数据版本快照的构建方法,获取对象的所有版本快照,并通过对象标识以及对象的内容寻址标识与对象进行关联,通过递归得到版本的快照,并将对象的标识、版本的提交号以及对象的内容寻址标识存储在关系型数据库表内。在进行业务对象关联信息查询时,通过对象的标识查询对象数据库内对应的版本提交号,通过版本提交号进而得到对应的版本快照及快照上各叶子节点信息,再通过内容寻址反向算法的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种面向关系型数据库版本快照的构建方法,其特征在于,包括:提取数据库内的对象,获取对象的标识和对象的内容;通过内容寻址算法将对象的内容键值化,得到对象的内容寻址标识;建立对象的树目录:对树目录进行分层,依次为第一层、第二层

和第n层,n为大于等于3的整数,其中,数据库对象的类别决定树目录的层数,root节点为树目录的第一层,用于区分不同的快照版本;第n层为叶子节点层,用于存储对象标识和对象的内容寻址标识,并且,第n-1层的每个节点对应256个叶子节点并进行编号为0,1,2

255;通过对象所属的类别和对象的标识得到对象对应的叶子节点存储位置,并进行存储,通过内容寻址算法得出第n-1层的节点对应的内容寻址标识,再通过递归向上操作的方式得到root节点进行提交,得到提交信息,并将对象的标识、提交信息和对象的内容寻址标识关联的存储关系型数据库表内,获取当前版本快照;当前快照的对象的内容发生变化时,复制当前版本快照库,将变化后的对象数据的内容通过寻址算法获取内容寻址标识,然后将对象标识和获取的内容寻址标识组成的键值对信息替换到副本对应位置的叶子节点上,再通过递归向上操作的方式得到root节点进行提交,并将对象的标识、提交信息和对象的内容寻址标识关联的存储关系型数据库表内,得到新的版本快照;将所有版本的快照集中在一起,形成用于对象数据标识检索的快照库。2.根据权利要求1所述的面向关系型数据库版本快照的构建方法,其特征在于,建立对象的树目录之前还包括数据库对象的分组,具体为:获取对象的类别,并将数据库内的对象按照对象所属的类别进行分组。3.根据权利要求2所述的面向关系型数据库版本快照的构建方法,其特征在于,所述通过对象所属的类别和对象的标识得到对象对应的叶子节点存储位置,具体包括:通过对象所属的类别,确定与对象相关联n-1层的节点;将对象的内容寻址标识对256进行取余,得到的余数对应对象相关联n-1层的节点下面的叶子节点编号。4.根据权利要求1所述的面向关系型数据库版本快照的构建方法,其特征在于,第n-1层的节点对应的内容为节点对应存储的所有叶子节点信息,利用内容寻址算法将节点对应存储的叶子节点信息转换为所述第n-1层的节点对应的内容寻址标识。5.根据权利要求1所述的面向关系型...

【专利技术属性】
技术研发人员:李志吴炜
申请(专利权)人:中国船舶重工集团公司第七零九研究所
类型:发明
国别省市:

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

1