一种基于值日志系统的数据修改历史的查询方法和系统技术方案

技术编号:32116467 阅读:16 留言:0更新日期:2022-01-29 19:01
本发明专利技术公开了一种基于值日志系统的数据修改历史的查询方法和系统,方法包括如下步骤:(1)基于值日志技术的数据库/KV数据处理系统中的工作线程/进程接收用户的数据查询请求;(2)工作线程/进程对用户的数据查询语句进行解析;(3)工作线程/进程根据数据查询语句解析的结果,确定查询数据的范围;(4)工作线程/进程基于步骤(3)确定的查询数据的范围并检索索引找到符合条件的所有记录;(5)工作线程/进程将数据检索的结果返回客户端。系统包括:接受请求模块,操作解析模块,查询范围确定模块,数据检索模块和结果返回模块。本发明专利技术能够持久化数据的所有历史版本,可查询任意记录的所有历史版本,为用户提供直观的数据变化过程。为用户提供直观的数据变化过程。为用户提供直观的数据变化过程。

【技术实现步骤摘要】
一种基于值日志系统的数据修改历史的查询方法和系统


[0001]本专利技术涉及值日志
,尤其是一种基于值日志系统的数据修改历史的查询方法和系统。

技术介绍

[0002]包括传统数据库在内的各种数据处理系统提供的数据查询功能,均只支持查询用户当前可见的最新记录查询,这是由其存储方式决定的。在此类数据处理系统中,当用户发起数据修改请求,数据处理系统会将旧记录写入回滚段(如Oracle)或者保留在B树(如postgresql)中,然后在B树中插入修改后的新记录。此时如果有其他的用户同时进行该数据的查询,此类数据处理系统将根据可见性判断返回合适的记录。但是,由于回滚段和B树中保存的历史数据时长是有限的(Oracle会自动回收回滚段空间,Postgresql会通过vacuum机制清理历史数据),回滚段或者B树中的历史版本数据一旦被回收,意味着整个系统只有最新版本的数据被保存,用户将不能查找到该数据修改前的值。

技术实现思路

[0003]本专利技术所要解决的技术问题在于,提供一种基于值日志系统的数据修改历史的查询方法和系统,能够持久化数据的所有历史版本,可查询任意记录的所有历史版本,拓宽了数据库查询的定义,可以为用户提供直观的数据变化过程。
[0004]为解决上述技术问题,本专利技术提供一种基于值日志系统的数据修改历史的查询方法,包括如下步骤:
[0005](1)基于值日志技术的数据库/KV数据处理系统中的工作线程/进程接收用户的数据查询请求;
[0006](2)工作线程/进程对用户的数据查询语句进行解析;
[0007](3)工作线程/进程根据数据查询语句解析的结果,确定查询数据的范围;
[0008](4)工作线程/进程基于步骤(3)确定的查询数据的范围并检索索引找到符合条件的所有记录;
[0009](5)工作线程/进程将数据检索的结果返回客户端。
[0010]优选的,步骤(3)中,确定查询数据的范围具体包括如下步骤:
[0011](31)当用户的查询请求不包含查询数据修改历史的语法成分时,查询范围就确定为符合查询条件的最新的可见版本;
[0012](32)当用户的查询请求包含查询数据修改历史的语法成分时,查询范围的确定典型的包括如下几种情况或者它们的组合:
[0013](a)基于时间范围进行查询;
[0014](b)基于LSN范围进行查询;
[0015](c)基于偏移量范围进行查询。
[0016]优选的,步骤(a)中,基于时间范围进行查询具体为:用户在查询请求中指定起始
时间和终止时间;当不指定起始时间时,表示查询从建库开始到指定终止时间期限内的所有符合条件的数据历史记录;不指定终止时间时,表示查询从指定起始时间到现在所有可见的数据历史记录;若都没有指定,则表示查询所有可见的数据的历史记录;当要支持基于时间范围进行查询时,需要在索引记录中保留数据插入时的系统时间信息。便于快速找到符合指定时间范围的物理记录;如果对时间精度和性能要求不高,也可以考虑在只在值日志文件的块头/块尾写下系统时间值,这样就需要先基于索引找到所有的物理记录,然后根据物理记录所属数据块中写下的系统时间来判断物理记录是否在指定的时间范围内。
[0017]优选的,步骤(b)中,基于LSN范围进行查询具体为:包括数据库/KV系统在内的各种数据处理系统一般对每个记录都有一个LSN(日志序列号)标志,该LSN是单调递增,随着数据库上操作的增加而不断递增。和基于时间范围进行查询类似,用户指定起始LSN和终止LSN来限定要查询的数据修改历史记录;当不指定起始LSN时,表示查询从建库开始到指定终止LSN范围内的所有符合条件的数据历史记录;不指定终止LSN时,表示查询从指定起始LSN到现在所有可见的数据历史记录;若都没有指定,则表示查询所有可见的数据的历史记录。和基于时间范围进行查询类似,基于LSN范围进行查询时,也需要在索引记录中保留数据插入时的LSN值信息。
[0018]优选的,步骤(c)中,基于偏移量范围进行查询具体为:基于值日志技术的数据处理系统由于数据是不断追加产生,因此偏移量的大小也直接体现了数据的新旧程度。用户指定起始偏移量和终止偏移量来限定要查询的数据修改历史记录;当不指定起始偏移量时,表示查询从建库开始到指定终止偏移量范围内的所有符合条件的数据历史记录;不指定终止偏移量时,表示查询从指定起始偏移量到现在所有可见的数据历史记录;若都没有指定,则表示查询所有可见的数据的历史记录。基于偏移量范围进行查询时,要求在索引记录中保留数据追加到值日志文件时的偏移地址信息。
[0019]相应的,一种基于值日志系统的数据修改历史的查询系统,包括:接受请求模块:该模块用于接收用户的数据查询请求;
[0020]操作解析模块:该模块负责用户的数据查询语句的解析;
[0021]查询范围确定模块:该模块根据数据查询语句解析的结果,确定查询数据的范围;
[0022]数据检索模块:该模块利用索引和基于查询范围确定模块判定的范围来检索到符合条件的所有记录;
[0023]结果返回模块:该模块将检索到符合条件的数据返回给客户端。
[0024]优选的,数据查询语句解析的结果为下面两种情况:
[0025](a)当用户的查询请求不包含查询数据修改历史的语法成分时,查询范围就确定为符合查询条件的最新的可见版本;
[0026](b)当用户的查询请求包含查询数据修改历史的语法成分时,查询范围的确定典型的包括如下几种情况或者它们的组合:基于时间范围进行查询、基于LSN范围进行查询或基于偏移量范围进行查询。
[0027]优选的,基于时间范围进行查询具体为:用户可以在查询请求中指定起始时间和终止时间。当不指定起始时间时,表示查询从建库开始到指定终止时间期限内的所有符合条件的数据历史记录。不指定终止时间时,表示查询从指定起始时间到现在所有可见的数据历史记录。若都没有指定,则表示查询所有可见的数据的历史记录。需要注意的是,当要
支持基于时间范围进行查询时,需要在插入记录时,在索引记录中保留数据插入时的系统时间信息,这样便于快速找到符合指定时间范围的物理记录。(如果对时间精度和性能要求不高,也可以考虑在只在值日志文件的块头/块尾写下系统时间值,这样就需要先基于索引找到所有的物理记录,然后根据物理记录所属数据块中写下的系统时间来判断物理记录是否在指定的时间范围内)。
[0028]优选的,基于LSN范围进行查询具体为:包括数据库/KV系统在内的各种数据处理系统一般对每个记录都有一个LSN(日志序列号)标志,该LSN是单调递增,随着数据库上操作的增加而不断递增。和基于时间范围进行查询类似,用户可以指定起始LSN和终止LSN来限定要查询的数据修改历史记录。当不指定起始LSN时,表示查询从建库开始到指定终止LSN范围内的所有符合条件的数据历史记录。不指定终止LSN时,表示查询从指定起始LSN到现在所有可见的数据历史记录。若都没有指定,则表示本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于值日志系统的数据修改历史的查询方法,其特征在于,包括如下步骤:(1)基于值日志技术的数据库/KV数据处理系统中的工作线程/进程接收用户的数据查询请求;(2)工作线程/进程对用户的数据查询语句进行解析;(3)工作线程/进程根据数据查询语句解析的结果,确定查询数据的范围;(4)工作线程/进程基于步骤(3)确定的查询数据的范围并检索索引找到符合条件的所有记录;(5)工作线程/进程将数据检索的结果返回客户端。2.如权利要求1所述的基于值日志系统的数据修改历史的查询方法,其特征在于,步骤(3)中,确定查询数据的范围具体包括如下步骤:(31)当用户的查询请求不包含查询数据修改历史的语法成分时,查询范围就确定为符合查询条件的最新的可见版本;(32)当用户的查询请求包含查询数据修改历史的语法成分时,查询范围的确定典型的包括如下几种情况或者它们的组合:(a)基于时间范围进行查询;(b)基于LSN范围进行查询;(c)基于偏移量范围进行查询。3.如权利要求2所述的基于值日志系统的数据修改历史的查询方法,其特征在于,步骤(a)中,基于时间范围进行查询具体为:用户在查询请求中指定起始时间和终止时间;当不指定起始时间时,表示查询从建库开始到指定终止时间期限内的所有符合条件的数据历史记录;不指定终止时间时,表示查询从指定起始时间到现在所有可见的数据历史记录;若都没有指定,则表示查询所有可见的数据的历史记录;当要支持基于时间范围进行查询时,需要在索引记录中保留数据插入时的系统时间信息。4.如权利要求2所述的基于值日志系统的数据修改历史的查询方法,其特征在于,步骤(b)中,基于LSN范围进行查询具体为:用户指定起始LSN和终止LSN来限定要查询的数据修改历史记录;当不指定起始LSN时,表示查询从建库开始到指定终止LSN范围内的所有符合条件的数据历史记录;不指定终止LSN时,表示查询从指定起始LSN到现在所有可见的数据历史记录;若都没有指定,则表示查询所有可见的数据的历史记录;基于LSN范围进行查询时,需要在索引记录中保留数据插入时的LSN值信息。5.如权利要求2所述的基于值日志系统的数据修改历史的查询方法,其特征在于,步骤(c)中,基于偏移量范围进行查询具体为:用户指定起始偏移量和终止偏移量来限定要查询的数据修改历史记录;当不指定起始偏移量时,表示查询从建库开始到指定终止偏移量范围内的所有符合条件的数据历史记录;不指定终止偏移量时,表示查询从指定起始偏移量到现在所有可见的数据历史记录;若都没有指定,则表示查询所有可见...

【专利技术属性】
技术研发人员:付新李庆春葛玉梅郭继红赵远方沈忱
申请(专利权)人:达梦数据技术江苏有限公司
类型:发明
国别省市:

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

1