跟踪数据库数据的变化制造技术

技术编号:28880806 阅读:10 留言:0更新日期:2021-06-15 23:18
用于跟踪数据库数据的变化的系统、方法和设备。一种方法包括确定要对数据库的表的微分区执行的变化,并通过生成体现该变化的新的微分区来执行对该表的变化。该方法包括更新包括对表进行的变化的日志的表历史,其中变化的日志中的每个变化包括时间戳,并且其中更新表历史包括将该变化插入到变化的日志中。

【技术实现步骤摘要】
【国外来华专利技术】跟踪数据库数据的变化相关申请的交叉引用本申请要求于2018年11月6日提交的序列号为16/182,112的美国专利申请的优先权,该美国专利申请的内容以其整体并入本文。
本公开涉及用于数据库的系统、方法和设备,并且更特别地涉及跟踪数据库数据的变化。背景数据库广泛用于计算应用中的数据储存和访问。数据库可以包括一个或更多个表,这些表包括或引用数据,数据可以使用通常称为DML(数据操作语言)语句的数据库操作来进行读取、修改或删除。数据库可以在一个或更多个表中的任何位置存储从小型数据集到超大数据集。该数据可以被组织中的各种用户访问,或者甚至可以(例如经由网站或应用程序接口(API))用于服务公共用户。计算资源和储存资源以及它们的底层体系结构都可以在实现理想的数据库性能方面发挥重要作用。数据库数据可以通过各种命令(包括修改数据库表中一个或更多个行的插入命令、删除命令和更新命令)进行修改。跟踪这样的修改并确定第一组数据库数据和第二组数据库数据之间的增量信息可能是昂贵的。本文公开了用于有效跟踪对数据库数据进行的变化的系统、方法和设备。附图简述参考以下附图描述了本公开的非限制性和非穷尽的实施例,其中,除非以其它方式说明,在所有各个附图中相似的参考数字指代相似的部分。图1是示出根据一个实施例的对表版本进行的修改的框图;图2是示出根据一个实施例的对数据库的微分区执行的删除命令的框图;图3是示出根据一个实施例的对数据库的微分区执行的插入命令的框图;图4是示出根据一个实施例的对数据库的微分区执行的更新命令的框图;图5是示出根据一个实施例的具有数据库服务管理器的数据库系统的框图;图6是示出根据一个实施例的数据库服务管理器的部件的框图;图7是示出根据一个实施例的变化跟踪管理器的部件的框图;图8是示出根据一个实施例的用于跟踪数据库数据的变化的方法的示意流程图;图9是示出根据一个实施例的用于跟踪数据库数据的变化的方法的示意流程图;和图10是描绘符合本文公开的方法和系统的至少一个实施例的示例计算设备的框图。详细描述公开了用于跟踪数据库数据的变化和用于返回数据库表的增量的系统、方法和设备。数据库变化跟踪可以返回数据库表中哪些行已发生变化以及这些行如何变化的概要。数据库表的增量指示哪些行已经发生变化以及它们在两个时间戳之间如何变化,而不包括关于在两个时间戳之间发生的所有中间变化的信息。变化跟踪审核指示在指定时间段内行修改的完整历史。变化跟踪一直以来非常昂贵,并且需要大量资源和储存容量。传统上,数据库系统是使用事务日志构建的,该事务日志体现了数据库中进行的所有变化。事务日志通常用于使事务变化具有原子性和持久性,并且在数据库系统崩溃且必须恢复信息的情况下又可以被用于恢复。事务包括数据库中发生的所有变化,并可用于重建这些变化。然而,因为没有随机访问储存结构来加快重建数据库的过程,从而项目必须使用日志扫描来进行存储,事务日志方法需要大量的系统资源。此外,事务日志本身是物理的,并且必须对其进行解析且将其应用于页面结构,以提供整行图像和变化。在本领域已知的替代方法中,关于数据变化的时间信息可以存储在数据库表中的两个事务时间戳列中。事务时间戳列指示行有效时的事务时间。可以生成内部历史表,该历史表存储具有来自事务时间戳列的时间戳的更新的数据信息。更新和删除将变化的行的值复制到内部历史表中,并更新事务时间戳列以标记行的有效事务生命期(lifetime)。当需要历史数据集或变化的数据集时,必须将当前表和内部历史表联合起来,以收集两个事务时间点之间的增量或历史信息。对事务时间戳列和内部历史表的维护给数据库事务增加了大量开销。此外,增量查询在被请求时必须联合来自两个表中的信息。变化跟踪信息可以作为元数据存储在数据库中。该元数据描述了存储在客户数据库表中的数据,但实际上并不是存储的表数据。元数据可能会变得非常大(尤其是如果有许多客户的大型数据库表)。当前的数据库系统在处理大量元数据方面有严格的限制。当前的数据库系统将元数据存储在可变储存设备和服务(包括主存储器、文件系统和键值存储)中。这些设备和服务允许元数据就地更新数据。如果数据记录变化,则可能会用新信息进行更新,而旧信息将被覆盖。这允许数据库通过就地更新元数据来轻松维护可变元数据。然而,这些可变储存设备和服务有限制。限制至少有两个方面。首先,可变储存设备(例如主存储器和文件系统)在储存容量方面有严格的限制。如果元数据的大小超过这些限制,就不可能在那里存储更多的元数据。其次,可变储存服务(例如键值存储)在读取大量元数据时表现不佳。读取数据是使用范围扫描来执行的,这需要很长时间才能完成。实际上,在大规模部署中,范围扫描可能需要很多分钟或甚至接近一个小时才能完成。这些限制使得不可能在现有的可变储存设备和服务中存储大量元数据。本文公开的系统、方法和设备提供了改进的元数据储存和管理,其包括将元数据存储在不可变(非可变)储存器(例如微分区)中。如本文所使用的,不可变或非可变储存包括其中数据不能或不允许被就地覆盖或更新的储存。例如,位于储存介质的单元或区域中的数据的变化可以作为新文件存储在储存介质的不同的、带时间戳的单元或区域中。可变储存可以包括其中允许数据被就地覆盖或更新的储存。例如,当与储存介质的给定单元或区域相关的数据发生变化时,储存介质的该给定单元或区域中的数据可以被覆盖。在一个实施例中,元数据被存储和维护在云中的非可变储存服务上。这些储存服务可能包括例如AmazonS3MicrosoftAzureBlobStorage和GoogleCloud这些服务中有许多不允许就地更新数据(即非可变或不可变)。数据文件只能被添加或删除,但决不能被更新。在一个实施例中,在这些服务上存储和维护元数据要求,对于元数据的每个变化,元数据文件被添加到储存服务。这些元数据文件可以在后台周期性地合并成更大的“压缩”或合并的元数据文件。在实施例中,表中的所有数据被自动划分到被称为微分区的不可变储存设备中。微分区可以被认为是批处理单元,其中每个微分区具有连续的储存单元。举例来说,每个微分区可以包含在50MB至500MB之间的未压缩数据(注意,储存中的实际大小可能更小,因为数据可能被压缩存储)。表中的成组的行可以映射到以柱状方式组织的单个微分区中。这种大小和结构允许对非常大的表进行极其精细的修剪,这些表可以由数百万或甚至数亿个微分区组成。可以自动收集关于存储在微分区中的所有行的元数据,其包括:微分区中每个列的值的范围;不同值的数量;和/或用于优化和高效查询处理的附加属性。在一个实施例中,可以在所有表上自动执行微分区。例如,可以使用在插入/加载数据时发生的顺序对表进行透明分区。下面提供了符合本公开的实施例的系统和方法的详细描述。虽然描述了几个实施例,但是应当理解,本公开不限于任何一个实施例,而是包括许多替代、修改和等同物。此外,尽管在以下描述中阐述了许多具体细节以提供对本文公开的本文档来自技高网...

【技术保护点】
1.一种用于跟踪数据库数据的变化的方法,所述方法包括:/n确定要对数据库的表的微分区执行的变化;/n通过生成体现所述变化的新的微分区来执行所述变化;和/n更新表历史,所述表历史包括对所述表进行的变化的日志,所述变化的日志中的每个变化包括时间戳,对所述表历史的所述更新包括将所述变化插入到所述变化的日志中。/n

【技术特征摘要】
【国外来华专利技术】20181106 US 16/182,1121.一种用于跟踪数据库数据的变化的方法,所述方法包括:
确定要对数据库的表的微分区执行的变化;
通过生成体现所述变化的新的微分区来执行所述变化;和
更新表历史,所述表历史包括对所述表进行的变化的日志,所述变化的日志中的每个变化包括时间戳,对所述表历史的所述更新包括将所述变化插入到所述变化的日志中。


2.根据权利要求1所述的方法,还包括接收对所述表在第一时间戳和第二时间戳之间的增量的请求,并响应性地通过查询所述表历史来确定所述增量。


3.根据权利要求1或权利要求2所述的方法,其中,执行所述变化还包括从所述数据库中移除所述微分区。


4.根据权利要求1或权利要求2所述的方法,其中,所述变化被应用于所述表的多个微分区,使得执行所述变化包括生成多个新的微分区以及从所述数据库中移除所述多个微分区。


5.根据权利要求1或权利要求2所述的方法,其中,所述变化包括以下中的一项或更多项:对所述表的一个或更多个行的删除、插入、合并和更新。


6.根据权利要求2所述的方法,其中,所述增量包括以下项中至少一项的指示:在所述第一时间戳和所述第二时间戳之间变化的所述表的一个或更多个行和一个或更多个微分区。


7.根据权利要求1或权利要求2所述的方法,还包括针对所述表的多个行中的每一行生成行标识,其中,所述行标识与对所述表进行的变化的所述日志中的适用的时间戳相关联地存储在所述表历史中。


8.根据权利要求7所述的方法,其中,针对所述表的所述多个行中的每一行生成所述行标识包括:
对于所述表的所述多个行中的任何未修改的行,基于微分区和所述未修改的行中的行数据被存储的行位置,来导出所述未修改的行的所述行标识;和
对于通过执行所述变化而被修改的所述表的所述多个行中的任何被修改的行,针对体现所述变化的所述新的微分区中的所述被修改的行,生成所述行标识。


9.根据权利要求2所述的方法,其中,确定所述增量包括将与所述第一时间戳相关联的第一组数据和与所述第二时间戳相关联的第二组数据进行比较,其中,所述比较包括导出在所述第一组数据和所述第二组数据之间的元组粒度变化。


10.根据权利要求1或权利要求2所述的方法,其中,所述表历史包括存储在微分区中的一个或更多个变化跟踪列,并且其中,所述一个或更多个变化跟踪列包括指示以下项中的一项或更多项的数据:值的原始微分区标识、值的原始行标识、行上发生的变化操作以及值是否被更新的指示。


11.根据权利要求1或权利要求2所述的方法,其中,生成体现所述变化的所述新的微分区包括:
从所述微分区复制一个或更多个未修改的行以及与所述一个或更多个未修改的行相关联地存储的变化历史信息;
基于所述变化,生成一个或更多个新的修改的行;和
针对所述一个或更多个新的修改的行中的每一行,生成行标识。


12.根据权利要求2所述的方法,其中,所述第一时间戳与第一组微分区相关联,而所述第二时间戳与第二组微分区相关联,并且其中,确定所述增量包括:
将所述第一组微分区的第一组规则和所述第二组微分区的第二组规则进行比较;
针对所述第一时间戳和所述第二时间戳中的每一个,从所述表历史中导出适用的变化跟踪信息;和
确定在所述第一组微分区和所述第二组微分区之间已经被进行添加、删除和更新中的一项或更多项的一个或更多个行。


13.根据权利要求1或权利要求2所述的方法,其中,所述表历史中的所述变化的日志包括:
发起对所述表的修改的一个或更多个事务的列表,其中,每个该修改包括:添加的行、删除的行或更新的行;和
在所述一个或更多个事务的列表中每个事务的时间戳。


14.根据权利要求1或权利要求2所述的方法,其中,所述表历史中的所述变化的日志包括所述表中的多个行中的每一行的沿袭,其中,所述沿袭包括修改的日志,所述修改的日志具有与每个修改相关联的时间戳,并且其中,所述沿袭使得能够跨所述表中的多个微分区跟踪所述多个行中的每一行。


15.一种用于跟踪数据库数据的变化的系统,所述系统包括:
一个或更多个处理器;以及
数据储存器,所述数据储存器包含能够由所述一个或更多个处理器执行以执行操作的指令,所述操作包括:
确定要对数据库的表的微分区执行的变化;
通过生成体现所述变化的新的微分区来执行所述变化;和
更新表历史,所述表历史包括对所述表进行的变化的日志,所述变化的日志中的每个变化包括时间戳,对所述表历史的所述更新包括将所述变化插入到所述变化的日志中。


16.根据权利要求15所述的系统,所述操作还包括接收对所述表在第一时间戳和第二时间戳之间的增量的请求,并响应性地通过查询所述表历史来确定所述增量。


17.根据权利要求15或权利要求16所述的系统,其中,所述变化包括以下中的一项或更多项:对所述表的一个或更多个行的删除、插入、合并和更新。


18.根据权利要求16所述的系统,其中,所述增量包括以下项中至少一项的指示:在所述第一时间戳和所述第二时间戳之间变化的所述表的一个或更多个行和一个或更多个微分区。


19.根据权利要求15或权利要求16所述的系统,所述操作还包括针对所述表的多个行中的每一行生成行标识,其中,所述行标识与对所述表进行的变化的所述日志中的适用的时间戳相关联地存储在所述表历史中,并且其中,针对所述表的所述多个行中的每一行生成所述行标识包括:
对于所述表的所述多个行中的任何未修改的行,基于所述未修改的行中的数据被存储在哪里,来导出所述未修改的行的所述行标识;和
对于通过执行所述变化而被修改的所述表的所述多个行中的任何被修改的行,针对体现所述变化的所述新的微分区中的所述被修改的行,生成所述行标识。


20.根据权利要求16所述的系统,其中,确定所述...

【专利技术属性】
技术研发人员:伊斯特凡·切里托尔斯滕·格拉布斯本诺特·戴奇维勒
申请(专利权)人:斯诺弗雷克公司
类型:发明
国别省市:美国;US

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

1