CN114385587A - 一种面向关系型数据库版本快照的构建方法及查询方法 - Google Patents
一种面向关系型数据库版本快照的构建方法及查询方法 Download PDFInfo
- Publication number
- CN114385587A CN114385587A CN202111556000.6A CN202111556000A CN114385587A CN 114385587 A CN114385587 A CN 114385587A CN 202111556000 A CN202111556000 A CN 202111556000A CN 114385587 A CN114385587 A CN 114385587A
- Authority
- CN
- China
- Prior art keywords
- snapshot
- content
- identification
- version
- node
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种面向关系型数据库版本快照的构建方法及查询方法。其中构建方法包括提取数据库的对象,获取对象的标识和对象内容;通过内容寻址算法将对象内容键值化,得到对象的内容寻址标识;建立对象树目录;将对象标识和对象内容寻址标识安插在叶子节点上,通过递归向上直到root节点为止,获取当前版本快照;数据发生变化时,获取新的版本快照,将所有版本快照集合组成快照库,并将对象标识、提交信息和对象内容寻址标识关联存储在数据库表内。通过对象标识查询对象对应的版本提交号,通过版本提交号得到对应版本快照及快照内各叶子节点信息,利用内容寻址标识关联的对象内容信息,得出版本快照内其它关联对象的内容。
Description
技术领域
本发明涉及数据库技术领域,特别是涉及一种面向关系型数据库版本快照的构建方法及查询方法。
背景技术
在应用系统中,我们经常需要追溯数据变更的历史信息,例如一张设计图,可能经过多个版本的修改,当需要这张设计图的所有历史版本时,我们就需要对设计图对象进行版本跟踪。
目前行业内的应用系统通常采用类似事件溯源架构来实现数据对象的版本跟踪。其原理并不是数据库直接存储对象历史信息,而是通过跟踪存储对象所有变更操作的事件序列,具体来讲,跟踪每个变更事件包含了变更对象的ID和变更内容,对象的某一版本的历史信息通过该对象的变更事件序列的叠加来产生。
但是,这种事件溯源的方法只能满足单一业务对象的版本跟踪,并不能追溯多个对象在同一时刻的历史信息,即无法获得系统整体的快照历史。当我们不仅需要获取业务对象的历史版本,还需要获取业务对象历史版本对应的版本信息时,无法通过现有的方法来实现我们的目的。因此我们需要的是对整个系统所有版本的快照进行控制,而不是单一对象数据的版本跟踪。
传统的快照级版本控制实现技术有SVN、Git等,SVN是增量式的版本控制,它不会将各个版本完整的保留,而是记录版本之间的差异,Git是基于内容寻址存储整个快照,这类技术虽然具备快照级版本控制的能力,但由于其底层是文件系统,无法实现数据对象之间版本快照的关联查询。
鉴于此,克服该现有技术所存在的缺陷是本技术领域亟待解决的问题。
发明内容
本发明要解决的技术问题是如何在保留关系查询功能的同时,又能具备系统变更历史的快速追溯能力,并且还能通过版本的追溯了解业务对象所关联的其它对象的情况。
本发明采用如下技术方案:
第一方面,本发明提供一种面向关系型数据库版本快照构建方法,包括:
提取数据库内的对象,获取对象的标识和对象的内容;
通过内容寻址算法将对象的内容键值化,得到对象的内容寻址标识;
建立对象的树目录:对树目录进行分层,依次为第一层、第二层…和第n层,n为大于等于3的整数,其中,数据库对象的类别决定树目录的层数,root节点为树目录的第一层,用于区分不同的快照版本;第n层为叶子节点层,用于存储对象标识和对象的内容寻址标识,并且,第n-1层的每个节点对应256个叶子节点并进行编号为0,1,2…255;
通过对象所属的类别和对象的标识得到对象对应的叶子节点存储位置,并进行存储,通过内容寻址算法得出第n-1层的节点对应的内容寻址标识,再通过递归向上操作的方式得到root节点进行提交,得到提交信息,并将对象的标识、提交信息和对象的内容寻址标识关联的存储关系型数据库表内,获取当前版本快照;
当前快照的对象的内容发生变化时,复制当前版本快照库,将变化后的对象数据的内容通过寻址算法获取内容寻址标识,然后将对象标识和获取的内容寻址标识组成的键值对信息替换到副本对应位置的叶子节点上,再通过递归向上操作的方式得到root节点进行提交,并将对象的标识、提交信息和对象的内容寻址标识关联的存储关系型数据库表内,得到新的版本快照;
将所有版本的快照集中在一起,形成用于对象数据标识检索的快照库。
优选的,建立对象的树目录之前还包括数据库对象的分组,具体为:获取对象的类别,并将数据库内的对象按照对象所属的类别进行分组。
优选的,所述通过对象所属的类别和对象的标识得到对象对应的叶子节点存储位置,具体包括:
通过对象所属的类别,确定与对象相关联n-1层的节点;
将对象的内容寻址标识对256进行取余,得到的余数对应对象相关联n-1层的节点下面的叶子节点编号。
优选的,第n-1层的节点对应的内容为节点对应存储的所有叶子节点信息,利用内容寻址算法将节点对应存储的叶子节点信息转换为所述第n-1层的节点对应的内容寻址标识。
优选的,对象的变化不仅包括对象的内容发生变化,还包括对象的新增和对象的删除,具体为:
当新增对象时,复制当前快照,利用新增对象所属的类别和新增对象的标识得到对象对应的叶子节点存储位置,然后将新增对象的标识和内容寻址标识存到相应的叶子节点上,通过递归向上操作的方式得到root节点进行提交,得到提交信息,并将对象的标识、提交信息和对象的内容寻址标识关联的存储关系型数据库表内;
当删除对象时,复制当前快照并删除该对象对应的标识和内容寻址标识,再通过递归向上操作的方式得到root节点进行提交,得到提交信息,并将对象的标识、提交信息和对象的内容寻址标识关联的存储关系型数据库表内。
优选的,所述通过递归向上操作的方式得到root节点进行提交具体为:把上层节点所关联的下层节点信息当作上层节点的内容,获取上层节点的标识和内容寻址标识组成的键值对,并存储在相应节点上;从叶子节点开始,依次向上操作直到得到root节点的标识和内容寻址标识,并存储在root节点上为止。
优选的,所述将对象的标识、提交信息和对象的内容寻址标识关联的存储关系型数据库表内,具体为:
当获取数据库的第一个版本快照时,需要将数据库所有对象的标识、提交信息和对象的内容寻址标识关联的存储关系型数据库表内;
当获取数据库的除第一个版本外的快照时,只需将变化对象的标识、提交信息和对象的内容寻址标识关联的存储关系型数据库表内。
优选的,同时发生内容变化的对象可以为一个或多个。
优选的,所述提交信息具体包括:版本的提交号、提交者和提交时间。
第二方面,本发明在第一方面构建的快照库的基础上给出了一种面向关系型数据库版本快照的查询方法,具体包括:
获取所要查询对象的标识;
利用对象的标识,在数据库的表内查询出对象标识关联的所有提交信息,并得到所有提交信息内的提交号;
利用提交号找出快照库内对应的版本快照,以及快照内所包含的叶子节点上的对象标识和内容寻址标识组成的键值对信息;
利用内容寻址标识关联的对象内容信息,得出版本快照内其它关联对象的内容。
本发明通过关系型数据版本快照的构建方法,获取对象的所有版本快照,并通过对象标识以及对象的内容寻址标识与对象进行关联,通过递归得到版本的快照,并将对象的标识、版本的提交号以及对象的内容寻址标识存储在关系型数据库表内。在进行业务对象关联信息查询时,通过对象的标识查询对象数据库内对应的版本提交号,通过版本提交号进而得到对应的版本快照及快照上各叶子节点信息,再通过内容寻址反向算法的反向算法得到业务对象相关联的其它对象数据内容。本发明只需要比对业务数据的内容标识,就可以判断数据记录是否被修改,提高了对象变更差异查询的速度;本发明构建了一种基于内容寻址的树目录结构,可以实现通过提交节点的信息来跟踪整个系统的所有版本快照;除此之外,通过递归得到root节点的过程中,只需要更新所发生变化的对象所对应的节点分支,其它未改变的直接复制,减少了获取版本快照所花费的时间。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种面向关系型数据库版本快照的构建方法流程图;
图2是本发明实施例提供的一种面向关系型数据库版本快照的构建方法流程图;
图3是本发明实施例提供的一种面向关系型数据库版本快照的构建方法递归过程示意图;
图4是本发明实施例提供的一种面向关系型数据库版本快照的构建方法流程图;
图5是本发明实施例提供的一种面向关系型数据库版本快照的构建方法流程图;
图6是本发明实施例提供的一种面向关系型数据库版本快照的查询方法示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明的描述中,术语“内”、“外”、“纵向”、“横向”、“上”、“下”、“顶”、“底”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明而不是要求本发明必须以特定的方位构造和操作,因此不应当理解为对本发明的限制。
此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
实施例1:
本发明实施例1提供了一种面向关系型数据库版本快照的构建方法,如图1所示,具体包括:
步骤201:提取数据库的内容对象,获取对象标识和对象的内容。
本发明实施例所涉及的数据库为关系型数据库。在关系型数据库中,对象的内容也叫对象的信息,为描述对象中不同类型的信息,具体包括对象本身的元数据信息、对象与其它对象之间的链接关系信息,以及其它类型的信息数据。对象的标识类似于人类的指纹,对于一个对象而言,修改了其对象的内容,不会造成对象标识的变更,例如:在甲市场猪肉的价格为10元/斤,在乙市场为11元/斤,此时的对象为猪肉,价格对应对象的内容,价格无论怎么变化猪肉作为一个标识并不会发生变化。
步骤202:通过内容寻址算法将对象的内容键值化,得到对象的内容寻址标识。
其中,在构建本发明版本快照时,若将对象的内容存储在版本快照内,会使得快照版本的存储开销太大,并且在进行对象内容跟踪以及后续关联对象的查询过程很难受实现。本发明将对象的内容通过内容寻址算法键值成内容寻址标识,并将内容寻址标识存储在对应节点上,内容寻址标识实际上的是计算机对对象内容翻译成的一个字符串,使得在查询的过程中只需要跟踪对象的对象内容标识以及对象的标识,就可以看出对象所在的所有版本内是否被修改过。当对象的内容被修改后,对象的标识不会发生变化,但对象的的内容寻址标识会发生变化,通过跟踪对象的标识以及比对相同对象标识的对象内容标识,就可以找到该对象被修改过多少次。
步骤203:对树目录进行分层,依次为第一层、第二层…和第n层,n为大于等于3的整数,其中,数据库对象的类别决定树目录的层数,root节点为树目录的第一层,用于区分不同的快照版本;第n层为叶子节点层,用于存储对象标识和对象的内容寻址标识,并且,第n-1层的每个节点对应256个叶子节点并进行编号为0,1,2…255。
其中,本步骤为建立对象的树目录步骤。获取关系型数据库内的对象以及对象的内容,并将对象以及对象的内容转换为便于存储的标识后,需要将关系型的版本数据库的对象按照一定的规则进行存储形成一个版本快照。本发明定义了一种树目录的结构存储模型,按照树的构造设置树的层数,相应层数通过关系数据库对象的类型进行对象,并将第一层定义为root层,最后一层定义为叶子层,中间层可以理解为树的躯干部分对应数据库的类别节点。从对象的内容的组成可以判定出对象所属的类别,如图2所示,假设建立的树目录只有4层,除去root节点和叶子节点,中间层只有两层,假定中间层的类别分别为年份和项目,考虑到root节点只有1个,叶子节点设置至少有256,按照数据的多少,通常将数据和年份中数据少的设置在第二层,数据较多的设置在第三层。计算机使用的是二进制的算法,对象标识通常采用16进制的GUID(全局唯一标识符,Globally Unique Identifier)表示,为了便于计算机运算将第n-1层的每个节点对应叶子节点树设置为256个。对象的GUID串码最后两位的取值范围为00到ff,其中,各位和十位的都是16进制,每个位上的数字排列为:0、1、2、…、9、a、…、f,将字母换算成数字,a对应10,b对应11,…,f对应15,例如:某一个GUID最后两个编码为af对应的叶子编号为a×16+f,其中a对应10,f对应15,那么该GUID对应叶子节点编号为175。通过此方法将对象的标识进行对应。在使用除GUID以外的方式定义数据库内对象的标识时,n-1层的每个节点下对应的叶子节点也会发生变化,例如采用十进制的标识时,通常会将n-1层的每个节点下对应设置100个节点,通过取余得到的余数存储在相应的叶子节点上。
步骤204:通过对象所属的类别和对象的,标识得到对象对应的叶子节点存储位置,并进行存储,通过内容寻址算法得出第n-1层的节点对应的内容寻址标识,再通过递归向上操作的方式得到root节点进行提交,得到提交信息,并将对象的标识、提交信息和对象的内容寻址标识关联的存储关系型数据库表内,获取当前版本快照。
其中,在完成对象树目录的建设后,需要将数据库对象的标识和对象内容寻址标识安插在叶子节点上,通过对象的内容信息中可以知道对象所属的类别,将对象标识通过去取余运算得出该对象标识和内容寻址标识应该存储在叶子节点位置。一个叶子节点并不唯一存储一个对象的标识,当两个对象类别一样,并且计算得出的余数相同时,则两个对象的标识和内容寻址标识都会存储在相同编号的叶子节点上,并且通常会以对象标识和对象内容寻址标识组成的键值对进行存储。在所有对象的对象标识和对象寻址标识组成的键值对存入树目录结构后,在将第n-1层的节点进行操作时,将第n-1层的节点下面包含的叶子节点信息当作内容,通过内容寻址算法得出第n-1层每个节点的标识和内容寻址标识,依次使用相同的方法递归可以得到root节点的标识和内容寻址标识。当获取完毕后,进行提交,此时会记录提交信息。提交信息包括提交的时间、提交者(修改者)和提交号,提交信息主要用来区分不同的版本快照。为了查询过程能利用对象进行关联查询,将对象标识、版本的提交号以及内容寻址标识进行绑定存储在关系型数据库的表内。在进行对象快照查询时,通过对象的标识可以在关系型数据库内查询到对象标识关联的所有提交号,每个提交号对应一个版本,在这些版本中,再通过比对不同版本中数据对象的内容寻址标识以及版本提交的时间,就可以知道该对象修改了多少个版本。当需要某一个版本的关联对象内容时,获取该版本的树目录后,将对应叶子节点上的内容寻址标识翻译成对象的内容进行输出,就可以知道与该对象关联的其它对象的内容信息。
步骤205:当前快照的对象的内容发生变化时,复制当前版本快照库,将变化后的对象数据的内容通过寻址算法获取内容寻址标识,然后将对象标识和获取的内容寻址标识组成的键值对信息替换到副本对应位置的叶子节点上,再通过递归向上操作的方式得到root节点进行提交,并将对象的标识、提交信息和对象的内容寻址标识关联的存储关系型数据库表内,得到新的版本快照。
本发明实施例以对象的跟踪对象,需要获取关系型数据库所有的版本快照,也就是说只要数据库内对象的内容发生变化,以及数据库内出现新增或删除的对象,都会建立版本快照库,用来记录关系数据库对象的变化过程。在实际情况中发生内容变化的对象可以为一个或多个,当对象的内容发生变化时,对象的内容标识也会相应的发生变化,但对象的标识始终不会发生变化,通过递归的方式修改发生变化的对象的内容寻址标识替换在相应分支上,但凡因该对象内容发生变化(包括新增或删除该数据)相关联的节点的内容寻址标识都会相应的发生变化,通过递归得到对象变化后的新版本快照。如图3所示,表示从叶子节点递归向上得到root节点的过程图示,图中的对象标识和对象内容寻址标识分别使用code码和sha1值进行具体呈现。
步骤206:将所有版本的快照集中在一起,形成用于对象数据标识检索的快照库。
本发明实施例的构建方法主要是为了将对象以及对象内容变化的所有版本进行呈现,从存储的角度考虑,跟踪对象以及对象数据或造成存储开销过大。通过相应的算法,将对象的内容转换为唯一标识的内容寻址标识(实际为字符串)进行跟踪,既解决了开销问题,又能进行精准跟踪。构建对象关系型数据库的存储模型,将对象的标识和对象的内容寻址标识按照存储设定的规则存储在模型上,得到版本快照;将每次对象内容发生变化的所有版本快照都集中在一起,形成快照库。本发明构建了一种基于内容寻址的树目录结构,可以实现通过提交节点的信息来跟踪整个系统的所有版本快照;除此之外,通过递归得到root节点的过程中,只需要更新所发生变化的对象所对应的节点分支,其它未改变的直接复制,减少了获取版本快照所花费的时间。
为了说明本发明实施例关系型数据库版本快照构建方法的细节,接下来对本发明实施例作进一步阐述。
在建立对象的树目录之前还应包括数据库对象的分组,具体为:获取对象的类别,并将数据库内的对象按照对象所属的类别进行分组。
其中,在关系型数据库中,对象的内容固有存在对象的所属类别说明,通常而言,对于关系型数据库的对象在进行快照之前已经明确了对象所属分类。对象的类别决定对象影响的所属分支,也就是说对象的类型直接确定对象与树目录第n-1层的关联节点,再通过对象标识可以确定对象标识和对象的内容寻址标识组成的键值对存储的叶子节点位置。
进一步,所述通过对象所属的类别和对象的标识得到对象对应的叶子节点存储位置,如图4所示,具体包括:
步骤301:通过对象所属的类别,确定与对象相关联n-1层的节点。
步骤302:将对象的内容寻址标识对256进行取余,得到的余数对应对象相关联n-1层的节点下面的叶子节点编号。
其中,对象的树目录的除去root节点层和叶子节点层,其它层可以理解为类别层,对象的类别可以直接明确对象影响的从root节点到叶子节点的具体分支,分支表示从root节点到叶子节点的一条关联节点组成的节点线。当对象标识和对象内容寻址标识存储在相应分支的叶子节点时,由于对象的上一层节点会将与之关联的下一层节点信息当作本节点的内容,当对象内容发生变化,相应对象所影响的分支从叶子节点到root节点的对象内容寻址标识也会发生相应的变化。
本发明实施例并没有明确给出对象标识采用的具体方式,凡是能区别不同对象的标识都可以在此处适用。但有一点值得考虑的是,本发明需要将对象标识与叶子节点的编号相对应,相应的对象标识需要能转换为数字,并且转换后的数字取值范围通常大于n-1层每个节点对应叶子节点的数目。为了将所有的符合条件的标识对象的方式都统一起来,将对象标识转换为数字后,除以256得出余数,余数对应相应的叶子节点编号。对于计算机而言,对象标识一般采用二进制或16进制的方式编码,通常可以很轻易的获取对象标识对应的数字。
进一步的,所述将对象的标识、提交信息和对象的内容寻址标识关联的存储关系型数据库表内,如图5所述,具体为:
步骤401:当获取数据库的第一个版本快照时,需要将数据库所有对象的标识、提交信息和对象的内容寻址标识关联的存储关系型数据库表内;
步骤402:当获取数据库的除第一个版本外的快照时,只需将变化对象的标识、提交信息和对象的内容寻址标识关联的存储关系型数据库表内。
其中,在使用本发明实施例构建的存储模型进行查找对象的快照时,需要利用对象的标识在关系型数据库内的表查找对象关联的提交号。为了保证查询的全面性,关系型数据库的表需要包含所有对象的对象标识、提交信息和对象的内容寻址标识关联信息。当获取数据库的第一个版本快照时,将所有对象的对象标识、提交信息和对象的内容寻址标识关联信息存储在数据库表内,后面数据发生变化时,只需在数据库表内增加一行,用于存储发生变化对象的标识、提交信息和对象内容寻址标识信息即可。
进一步的,在关系型数据库中,对象的内容变化不仅包括对象的内容发生改变,同时也应包括对象的新增和对象的删除。
当新增对象时,复制当前快照,利用新增对象所属的类别和新增对象的标识得到对象对应的叶子节点存储位置,然后将新增对象的标识和内容寻址标识存到相应的叶子节点上,通过递归向上操作的方式得到root节点进行提交,得到提交信息,并将对象的标识、提交信息和对象的内容寻址标识关联的存储关系型数据库表内,得到相应的版本快照。
当删除对象时,复制当前快照并删除该对象对应的标识和内容寻址标识,再通过递归向上操作的方式得到root节点进行提交,得到提交信息,并将对象的标识、提交信息和对象的内容寻址标识关联的存储关系型数据库表内,得到相应的版本快照。
实施例2
如图6所示,表示本发明实施例的关系型数据库版本快照的查询方法流程。本发明实施例的查询方法基于对实施例1中所构建的关系型数据库的版本快照库。通过给定对象获取对象标识,再通过对象标识再关系数据库的表中查询出对象标识关联的版本快照提交号,进而通过提交号找出相应的版本快照,并将给定对象相关联的其它对象的内容寻址标识还原成对象的内容。
步骤501:获取所要查询对象的标识;
步骤502:利用对象的标识,在数据库的表内查询出对象标识关联的所有提交信息,并得到所有提交信息内的提交号;
步骤503:利用提交号找出快照库内对应的版本快照,以及快照内所包含的叶子节点上的对象标识和内容寻址标识组成的键值对信息;
步骤504:利用内容寻址标识关联的对象内容信息,得出版本快照内其它关联对象的内容。
本发明实施例的查询方法是在实施例的构建快照库的基础上,实现通过给定对象查询出与对象相关联的所有历史版本快照。将版本快照的叶子节点上的内容寻址标识转换为对象的内容进行输出,可以获取与给定对象相关联的对象的内容;不仅如此,通过比对对象不同快照内的内容寻址标识以及提交信息,可以知道对象被修改过多少次,被谁在什么时间做出的相应修改。通过对象关联对象内容以及版本快照的提交号,实现了对象的关联查询。保留关系查询功能的同时,又能具备系统变更历史的快速追溯能力,并且还能通过版本的追溯了解业务对象所关联的其它对象的情况。
本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁盘或光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
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所述的面向关系型数据库版本快照的构建方法,其特征在于,对象的变化不仅包括对象的内容发生变化,还包括对象的新增和对象的删除,具体为:
当新增对象时,复制当前快照,利用新增对象所属的类别和新增对象的标识得到对象对应的叶子节点存储位置,然后将新增对象的标识和内容寻址标识存到相应的叶子节点上,通过递归向上操作的方式得到root节点进行提交,得到提交信息,并将对象的标识、提交信息和对象的内容寻址标识关联的存储关系型数据库表内;
当删除对象时,复制当前快照并删除该对象对应的标识和内容寻址标识,再通过递归向上操作的方式得到root节点进行提交,得到提交信息,并将对象的标识、提交信息和对象的内容寻址标识关联的存储关系型数据库表内。
6.根据权利要求1所述的面向关系型数据库版本快照的构建方法,其特征在于,所述通过递归向上操作的方式得到root节点进行提交具体为:把上层节点所关联的下层节点信息当作上层节点的内容,获取上层节点的标识和内容寻址标识组成的键值对,并存储在相应节点上;从叶子节点开始,依次向上操作直到得到root节点的标识和内容寻址标识,并存储在root节点上为止。
7.根据权利要求1所述的面向关系型数据库版本快照的构建方法,其特征在于,所述将对象的标识、提交信息和对象的内容寻址标识关联的存储关系型数据库表内,具体为:
当获取数据库的第一个版本快照时,需要将数据库所有对象的标识、提交信息和对象的内容寻址标识关联的存储关系型数据库表内;
当获取数据库的除第一个版本外的快照时,只需将变化对象的标识、提交信息和对象的内容寻址标识关联的存储关系型数据库表内。
8.根据权利要求1所述的面向关系型数据库版本快照的构建方法,其特征在于,同时发生内容变化的对象可以为一个或多个。
9.根据权利要求1所述的面向关系型数据库版本快照的构建方法,其特征在于,所述提交信息具体包括:版本的提交号、提交者和提交时间。
10.一种面向关系型数据库版本快照的查询方法,其特征在于,包括:
获取所要查询对象的标识;
利用对象的标识,在数据库的表内查询出对象标识关联的所有提交信息,并得到所有提交信息内的提交号;
利用提交号找出快照库内对应的版本快照,以及快照内所包含的叶子节点上的对象标识和内容寻址标识组成的键值对信息;
利用内容寻址标识关联的对象内容信息,得出版本快照内其它关联对象的内容。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111556000.6A CN114385587A (zh) | 2021-12-17 | 2021-12-17 | 一种面向关系型数据库版本快照的构建方法及查询方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111556000.6A CN114385587A (zh) | 2021-12-17 | 2021-12-17 | 一种面向关系型数据库版本快照的构建方法及查询方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114385587A true CN114385587A (zh) | 2022-04-22 |
Family
ID=81197574
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111556000.6A Pending CN114385587A (zh) | 2021-12-17 | 2021-12-17 | 一种面向关系型数据库版本快照的构建方法及查询方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114385587A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115185891A (zh) * | 2022-09-14 | 2022-10-14 | 联想凌拓科技有限公司 | 文件系统的数据管理方法及装置、电子设备及存储介质 |
CN117033398A (zh) * | 2023-10-09 | 2023-11-10 | 之江实验室 | 一种基于dolt数据库的数据闪回查询方法及装置 |
-
2021
- 2021-12-17 CN CN202111556000.6A patent/CN114385587A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115185891A (zh) * | 2022-09-14 | 2022-10-14 | 联想凌拓科技有限公司 | 文件系统的数据管理方法及装置、电子设备及存储介质 |
CN117033398A (zh) * | 2023-10-09 | 2023-11-10 | 之江实验室 | 一种基于dolt数据库的数据闪回查询方法及装置 |
CN117033398B (zh) * | 2023-10-09 | 2024-01-16 | 之江实验室 | 一种基于dolt数据库的数据闪回查询方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100798609B1 (ko) | 데이터 소트 방법, 데이터 소트 장치 및 데이터 소트 프로그램을 기억하는 기억 매체 | |
US5742817A (en) | Method and apparatus for file server addressing | |
US7356549B1 (en) | System and method for cross-reference linking of local partitioned B-trees | |
US6185569B1 (en) | Linked data structure integrity verification system which verifies actual node information with expected node information stored in a table | |
EP0124097B1 (en) | Method for storing and retrieving data in a data base | |
US6035303A (en) | Object management system for digital libraries | |
CN114385587A (zh) | 一种面向关系型数据库版本快照的构建方法及查询方法 | |
US5913209A (en) | Full text index reference compression | |
EA007209B1 (ru) | Способ управления ключами в базе данных, база данных и способ организации базы данных | |
CN109918341B (zh) | 日志处理方法及装置 | |
CN107025290B (zh) | 一种故障树数据的存储方法及读取方法 | |
EP1350189A1 (en) | Value-instance-connectivity-computer-implemented database | |
CN111680198B (zh) | 基于文件分割与特征提取的档案管理系统及方法 | |
EP1504376B1 (en) | Data archive recovery | |
CN111400101B (zh) | 一种jfs2文件系统数据删除时的数据恢复方法及系统 | |
US7159171B2 (en) | Structured document management system, structured document management method, search device and search method | |
US9037553B2 (en) | System and method for efficient maintenance of indexes for XML files | |
CN114691721A (zh) | 图数据的查询方法、装置、电子设备及存储介质 | |
CN104636471A (zh) | 一种程序代码的查找方法及装置 | |
CN110297781B (zh) | 一种基于写时复制来恢复apfs中被删除数据的方法 | |
EP3731109B1 (en) | Versioned backup on object addressable storage system | |
JP4562749B2 (ja) | 文書の圧縮格納方法及び装置 | |
EP1208479A1 (en) | Method for organizing directories | |
RU2389066C2 (ru) | Многомерная база данных и способ управления многомерной базой данных | |
CN105930371A (zh) | 一种面向大数据的基于hdfs的维存储及查询方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |