一种记录数据变化历史的拉链表设计方法技术

技术编号:16270098 阅读:42 留言:0更新日期:2017-09-22 21:45
本发明专利技术公开了一种记录数据变化历史的拉链表设计方法,首先设计历史拉链表模型,然后通过对数据的比较获取需要开链的增量数据和需要封链的数据,最后将更新数据和新增数据存储到历史拉链表中。本发明专利技术在记录数据变化历史的拉链表设计中采用了拉链表结构设计和拉链算法设计,数据表结构、算法设计合理,可以有效记录并利用变化的历史数据,同时大大的节约了存储资源。本发明专利技术提供记录数据变化历史的拉链表,既适用于传统关系型数据仓库的模型设计,也适用于大数据平台数据仓库模型设计,比如Hive等,具有广泛的应用前景。

【技术实现步骤摘要】
一种记录数据变化历史的拉链表设计方法
本专利技术涉及一种记录数据变化历史的拉链表设计方法,属于数据仓库设计

技术介绍
在数据仓库的数据模型设计过程中,经常会需要保存数据的变化历史,而且数据量的变化又不能呈现呈指数式或几何式增长。拉链表是针对数据仓库设计中表存储数据的方式而定义的,所谓拉链,就是记录历史。记录一个事物从开始,一直到当前状态的所有变化的信息。而历史拉链表既可以满足对于历史数据的需求,又可以极大的节省存储资源。比如银行交易系统中,账户余额的变化非常频繁,如果账户余额每次发生变化或者每天都记录账户的余额,随着时间的变化,数据量将会呈现指数级别增长。假设有某银行有一张余额表,每天保留所有账户的余额信息,1月1日有3个账户,每个账户余额都是100元,如表1所示:表1:某银行所有账户1月1日余额表账户余额余额变化时间110020170101210020170101310020170101到了1月2日,表中有5条记录,如表2所示:表2:某银行所有账户1月2日余额表账户余额余额变化时间11002017010121002017010135020170101410020170102510020170102到了1月3日,表中有6条记录,如表3所示:表3:某银行所有账户1月3日余额表账户余额余额变化时间1100201701012200201701013502017010141002017010255020170102610020170103如果在数据仓库中只保留一份全量数据,那么最后的余额数据和1月3日一样,如果需要查看之前的余额,则无法满足;每天都保留一份全量,那么数据仓库中该余额表将会有14条记录,而且好多记录都是重复的没有任何变化,数据量增大,会浪费存储资源。而拉链表可以满足这种需求。截止1月3日,历史拉链表存储数据如下,只有9条数据,如表4所示:表4:某银行所有账户拉链表余额如果在数据仓库中只保留一份全量数据,那么最后的余额数据和1月3日一样,如果需要查看之前的余额,则无法满足;每天都保留一份全量,那么数据量的变化将指数级增长,导致浪费大量的存储资源。为了解决以上技术问题,迫切需要设计一种新的记录数据变化历史的拉链表。
技术实现思路
针对上述技术的不足,本专利技术提供了一种记录数据变化历史的拉链表设计方法,其充分利用历史数据,能够极大节省存储资源。本专利技术解决其技术问题采取的技术方案是:一种记录数据变化历史的拉链表设计方法,其特征是,首先设计历史拉链表模型,然后通过对数据的比较获取需要开链的增量数据和需要封链的数据,最后将更新数据和新增数据存储到历史拉链表中。进一步地,所述的拉链表设计方法包括以下步骤:步骤1,设计历史拉链表模型,所述历史拉链表包括源表、目标表和临时表;步骤2,进行数据恢复,将目标表恢复到数据恢复机制临时表;步骤3,从目标表中取出上日状态正常的数据存储到历史数据临时表中;步骤4,从源表中获取当日数据存储到当前数据临时表中;步骤5,对历史数据临时表和当前数据临时表进行全字段比较,获取需要开链的增量数据和需要封链的数据,并分别存储到新增数据临时表和关链数据表中;步骤6,根据新增数据临时表和关链数据表删除目标表中需要更新的数据;步骤7,向目标表中插入更新数据;步骤8,向目标表中插入新增数据。进一步地,所述源表包括数据ID、数据状态和数据状态变化时间,所述目标表包括数据ID、数据状态、数据状态开始时间和数据状态结束时间,所述临时表包括数据ID、数据状态、数据状态开始时间和数据状态结束时间。进一步地,所述临时表包括数据恢复机制临时表、历史数据临时表、当前数据临时表,新增数据临时表和关链数据临时表。进一步地,在步骤2中,进行数据恢复的过程包括:删除数据状态开始时间大于当天的数据;将状态结束时间大于当天且不为无限大数据的状态结束时间更新为无限大。进一步地,在步骤3中,所述从目标表中取出的上日状态正常数据为状态结束时间为最大日期的未被封链数据。进一步地,在步骤4中,将从源表中获取当日数据的状态开始时间置为当天、状态结束时间置为最大日期后存储到当前数据临时表中。进一步地,在步骤5中,所述需要开链的增量数据包括:当前数据临时表中有而历史数据临时表没有的数据,以及当前数据临时表和历史数据临时表都有但其属性值有更新的数据。进一步地,在步骤5中,所述需要封链的数据包括:历史数据临时表中有而当前数据临时表没有的数据,以及当前数据临时表和历史数据临时表都有但其属性值已经改变的数据。进一步地,在步骤7中,将向目标表中插入的更新数据的状态结束日期值置成当天日期。本专利技术的有益效果是:本专利技术在记录数据变化历史的拉链表设计中采用了拉链表结构设计和拉链算法设计,数据表结构、算法设计合理,可以有效记录并利用变化的历史数据,同时大大的节约了存储资源。本专利技术提供记录数据变化历史的拉链表,既适用于传统关系型数据仓库的模型设计(Oracle、DB2、Mysql等),也适用于大数据平台数据仓库模型设计,比如Hive等,具有广泛的应用前景。附图说明下面结合说明书附图对本专利技术进行说明。图1为本专利技术的方法流程图。具体实施方式为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本专利技术进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本专利技术的不同结构。为了简化本专利技术的公开,下文中对特定例子的部件和设置进行描述。此外,本专利技术可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本专利技术省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本专利技术。为了解决数据仓库中部分历史数据变化快、数据量大、浪费存储资源的问题,本专利技术提供的一种记录数据变化历史的拉链表设计方法,首先设计历史拉链表模型,然后通过对数据的比较获取需要开链的增量数据和需要封链的数据,最后将更新数据和新增数据存储到历史拉链表中,本专利技术具有充分利用历史数据,极大节省存储资源的优点。如图1所示,本专利技术所述的拉链表设计方法包括以下具体步骤:步骤1,设计历史拉链表模型,所述历史拉链表包括源表、目标表和临时表;步骤2,进行数据恢复,将目标表恢复到数据恢复机制临时表;步骤3,从目标表中取出上日状态正常的数据存储到历史数据临时表中;步骤4,从源表中获取当日数据存储到当前数据临时表中;步骤5,对历史数据临时表和当前数据临时表进行全字段比较,获取需要开链的增量数据和需要封链的数据,并分别存储到新增数据临时表和关链数据表中;步骤6,根据新增数据临时表和关链数据表删除目标表中需要更新的数据;步骤7,向目标表中插入更新数据;步骤8,向目标表中插入新增数据。历史拉链表需要三种数据表,源表、目标表、临时表。以Oracle数据库为例,表结构设计如下:表5:源表ODS_XT_ZT字段名称类型约束备注IDVARCHAR2(8)IDSTATUSVARCHAR2(8)状态ODS_DATA_DATEVARCHAR2(8)状态变化时间表6:目标表EDW_T100_STATUS_H字段名称类型约束备注IDVARCHAR2(8)notnullIDSTATUSVARCHAR2(8)notnu本文档来自技高网
...
一种记录数据变化历史的拉链表设计方法

【技术保护点】
一种记录数据变化历史的拉链表设计方法,其特征是,首先设计历史拉链表模型,然后通过对数据的比较获取需要开链的增量数据和需要封链的数据,最后将更新数据和新增数据存储到历史拉链表中。

【技术特征摘要】
1.一种记录数据变化历史的拉链表设计方法,其特征是,首先设计历史拉链表模型,然后通过对数据的比较获取需要开链的增量数据和需要封链的数据,最后将更新数据和新增数据存储到历史拉链表中。2.根据权利要求1所述的一种记录数据变化历史的拉链表设计方法,其特征是,所述的拉链表设计方法包括以下步骤:步骤1,设计历史拉链表模型,所述历史拉链表包括源表、目标表和临时表;步骤2,进行数据恢复,将目标表恢复到数据恢复机制临时表;步骤3,从目标表中取出上日状态正常的数据存储到历史数据临时表中;步骤4,从源表中获取当日数据存储到当前数据临时表中;步骤5,对历史数据临时表和当前数据临时表进行全字段比较,获取需要开链的增量数据和需要封链的数据,并分别存储到新增数据临时表和关链数据表中;步骤6,根据新增数据临时表和关链数据表删除目标表中需要更新的数据;步骤7,向目标表中插入更新数据;步骤8,向目标表中插入新增数据。3.根据权利要求2所述的一种记录数据变化历史的拉链表设计方法,其特征是,所述源表包括数据ID、数据状态和数据状态变化时间,所述目标表包括数据ID、数据状态、数据状态开始时间和数据状态结束时间,所述临时表包括数据ID、数据状态、数据状态开始时间和数据状态结束时间。4.根据权利要求3所述的一种记录数据变化历史的拉链表设计方法,其特征是,所述临时表包括数据恢复机制临时表、历史数据临时表、...

【专利技术属性】
技术研发人员:张承乾
申请(专利权)人:郑州云海信息技术有限公司
类型:发明
国别省市:河南,41

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

1