一种拉链表数据存储方法和装置制造方法及图纸

技术编号:16919235 阅读:37 留言:0更新日期:2017-12-31 14:50
本申请提供了一种拉链表数据存储方法和装置,该方法包括:将历史数据存储于拉链表中对应的历史分区,所述历史分区是预先配置的,对应于不同的历史周期并且按照所述对应的历史周期的先后顺序衔接,所述历史数据的结束时间为所述历史分区对应的历史周期;将有效数据存储于拉链表中的有效分区,所述有效分区是预先配置的,衔接于全部历史分区之前或者之后,所述有效数据的结束时间为未来时间。本申请的方案将拉链表中各周期内已封链的历史数据和有效数据分别分区存储,使对拉链表进行查询或者刷新操作时能够仅扫描相应分区,节约计算资源,缩短拉链表查询或者刷新的时长。

【技术实现步骤摘要】
一种拉链表数据存储方法和装置
本申请涉及数据处理
,尤其涉及一种拉链表数据存储方法和装置。
技术介绍
数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合。拉链表是数据仓库中的一种数据模型,用来存储一个事物从起始到当前状态的所有变化的信息,是处理缓慢变化数据的一种方式。仅当源端业务数据发生变化时,拉链表才相应地变更,既保留了历史数据的变化信息,又不浪费存储空间。数据仓库拉链表的每条记录包含开始时间(dw_start_date)与结束时间(dw_end_date)两个额外的字段,代表该条记录的状态在数据仓库的生命周期。当某条数据的结束时间是一个历史时间时,说明该条数据在该历史时间之后已经有了新的状态,原数据仅代表历史状态,而不再有效。当某条数据的结束时间是一个未来时间时,表明该条数据当前处于有效状态,通常统一所有当前有效的数据的结束时间为一个较大的未来时间点,例如3999-12-31。一个典型的数据仓库拉链表如表1所示:表1拉链表示例如果需要从表1的拉链表中查询最新的订单状态,则限定dw_end_date=3999-12-31对整个拉链表进行查询;如果需要查询2016-06-21日订单的历史状态,则需限定dw_start_date<=2016-06-21,且dw_end_date>=2016-06-21的查询规则对整个拉链表进行查询。现有数据仓库拉链表刷新的一般方法如下:1)源端业务系统按一定周期,例如以“日”为周期,抽取每个周期内的新增、变化记录并传递给数据仓库,记为增量表;以周期为单位对拉链表进行刷新,将当前需要刷新的周期记为刷新周期(ETL_DATE)。2)扫描拉链表中全部dw_end_date=3999-12-31的数据,将其与刷新周期的增量表关联,即按照用户ID、订单ID等对象的唯一标识进行关联,关联成功的条目的数据为需要封链的数据,将这些数据的dw_end_date由3999-12-31置为刷新周期的前一周期(ETL_DATE-1)。3)将增量表中数据的dw_start_date置为当前刷新周期(ETL_DATE),并将其dw_end_date置为3999-12-31,之后将增量表中的数据插入拉链表尾部。现有技术的不足在于,在查询拉链表中的有效数据或者历史数据时,或者在刷新拉链表时,均需要对整个拉链表进行扫描,占用大量计算资源,并且查询和刷新时间长。
技术实现思路
本申请实施例提出了一种拉链表数据存储方法和装置,能够节约计算资源,并缩短拉链表查询或者刷新的时长。在一个方面,本申请实施例提供了一种拉链表数据存储方法,其特征在于,所述方法包括:将历史数据存储于拉链表中对应的历史分区,所述历史分区对应于不同的历史周期并且按照所述对应的历史周期的先后顺序衔接,所述历史数据的结束时间为所述历史分区对应的历史周期;将有效数据存储于拉链表中的有效分区,所述有效分区衔接于全部历史分区之前或者之后,所述有效数据的结束时间为未来时间。优选的,所述方法还包括:获取历史状态查询请求,所述历史状态查询请求包括需要查询的历史周期的信息;扫描所述需要查询的历史周期和之后所有历史周期对应的历史分区,以及有效分区中的数据,确定其中开始时间小于等于所述历史周期,并且结束时间大于等于所述历史周期的数据为查询结果。优选的,所述方法还包括:获取刷新周期的增量数据;在所述拉链表的有效分区中确定与所述增量数据相关联的关联数据,在所述有效分区的数据中提取所述关联数据;在所述拉链表创建与所述刷新周期的前一周期对应的历史分区;将所述关联数据插入所述刷新周期前一周期对应的历史分区;将所述增量数据插入所述拉链表有效分区。优选的,在所述有效分区的数据中提取所述关联数据之后,还包括:将所述关联数据插入第一临时表;将所述提取了关联数据后的有效分区中的数据插入第二临时表:所述将所述关联数据插入所述刷新周期前一周期对应的历史分区,包括:将所述第一临时表中的关联数据插入所述刷新周期前一周期对应的历史分区;所述将所述增量数据插入所述拉链表的有效分区,包括:将所述增量数据插入所述第二临时表;将所述第二临时表的数据插入所述拉链表的有效分区中。优选的,将所述关联数据插入所述刷新周期前一周期对应的历史分区,包括:将所述关联数据的结束时间置为所述刷新周期的前一周期,之后插入所述刷新周期前一周期对应的历史分区;所述将所述增量数据插入所述拉链表有效分区,包括:将所述增量数据的开始时间置为所述刷新周期,并将所述增量数据的结束时间置为未来时间后插入所述拉链表有效分区。在另一个方面,本申请实施例提供了一种拉链表数据存储装置,其特征在于,所述装置包括处理单元和存储单元:所述处理单元用于将历史数据存储于所述存储单元的拉链表中对应的历史分区,以及用于将有效数据存储于所述存储单元的拉链表中的有效分区;所述存储单元用于存储所述拉链表,所述拉链表包括至少一个所述历史分区和一个所述有效分区,所述历史分区分别对应于不同的历史周期并且按照所述对应的历史周期的先后顺序衔接,所述历史数据的结束时间为所述历史分区对应的历史周期,所述有效分区衔接于全部历史分区之前或者之后,所述有效数据的结束时间为未来时间。优选的,所述处理单元,还用于获取历史状态查询请求,所述历史状态查询请求包括需要查询的历史周期的信息;所述处理单元在所述存储单元中扫描所述需要查询的历史周期和之后所有历史周期对应的历史分区,以及有效分区中的数据,确定其中开始时间小于等于所述历史周期,并且结束时间大于等于所述历史周期的数据为查询结果。优选的,所述处理单元,还用于获取刷新周期的增量数据;在所述存储单元中的所述拉链表的有效分区中确定与所述增量数据相关联的关联数据,在所述有效分区的数据中提取所述关联数据;在所述存储单元中的所述拉链表创建与所述刷新周期的前一周期对应的历史分区;将所述关联数据插入所述刷新周期前一周期对应的历史分区;将所述增量数据插入所述拉链表有效分区。优选的,所述处理单元,还用于在所述有效分区的数据中提取所述关联数据之后,将所述关联数据插入所述存储单元中的第一临时表;将所述提取了关联数据后的有效分区中的数据插入所述存储单元中的第二临时表;将所述第一临时表中的关联数据插入所述刷新周期前一周期对应的历史分区;所述将所述增量数据插入所述拉链表的有效分区,包括:将所述增量数据插入所述第二临时表;将所述第二临时表的数据插入所述拉链表的有效分区中。优选的,所述处理单元,还用于将所述关联数据的结束时间置为所述刷新周期的前一周期,之后插入所述刷新周期前一周期对应的历史分区;将所述增量数据的开始时间置为所述刷新周期,并将所述增量数据的结束时间置为未来时间后插入所述拉链表有效分区。本申请的有益效果如下:通过将历史数据存储于拉链表中对应的历史分区,所述历史分区对应于不同的历史周期并且按照所述对应的历史周期的先后顺序衔接,所述历史数据的结束时间为所述历史分区对应的历史周期;将有效数据存储于拉链表中的有效分区,所述有效分区衔接于全部历史分区之前或者之后,所述有效数据的结束时间为未来时间。本申请的方案将拉链表中各周期内已封链的历史数据和有效数据分别分区存储,使对拉链表进行查询或者刷新操作时能够仅扫描相应分区,节约计算资源,缩短拉本文档来自技高网
...
一种拉链表数据存储方法和装置

【技术保护点】
一种拉链表数据存储方法,其特征在于,所述方法包括:将历史数据存储于拉链表中对应的历史分区,所述历史分区对应于不同的历史周期并且按照所述对应的历史周期的先后顺序衔接,所述历史数据的结束时间为所述历史分区对应的历史周期;将有效数据存储于拉链表中的有效分区,所述有效分区衔接于全部历史分区之前或者之后,所述有效数据的结束时间为未来时间。

【技术特征摘要】
1.一种拉链表数据存储方法,其特征在于,所述方法包括:将历史数据存储于拉链表中对应的历史分区,所述历史分区对应于不同的历史周期并且按照所述对应的历史周期的先后顺序衔接,所述历史数据的结束时间为所述历史分区对应的历史周期;将有效数据存储于拉链表中的有效分区,所述有效分区衔接于全部历史分区之前或者之后,所述有效数据的结束时间为未来时间。2.如权利要求1所述的方法,其特征在于,所述方法还包括:获取历史状态查询请求,所述历史状态查询请求包括需要查询的历史周期的信息;扫描所述需要查询的历史周期和之后所有历史周期对应的历史分区,以及有效分区中的数据,确定其中开始时间小于等于所述历史周期,并且结束时间大于等于所述历史周期的数据为查询结果。3.如权利要求1所述的方法,其特征在于,所述方法还包括:获取刷新周期的增量数据;在所述拉链表的有效分区中确定与所述增量数据相关联的关联数据,在所述有效分区的数据中提取所述关联数据;在所述拉链表创建与所述刷新周期的前一周期对应的历史分区;将所述关联数据插入所述刷新周期前一周期对应的历史分区;将所述增量数据插入所述拉链表有效分区。4.如权利要求3所述的方法,其特征在于,在所述有效分区的数据中提取所述关联数据之后,还包括:将所述关联数据插入第一临时表;将所述提取了关联数据后的有效分区中的数据插入第二临时表;所述将所述关联数据插入所述刷新周期前一周期对应的历史分区,包括:将所述第一临时表中的关联数据插入所述刷新周期前一周期对应的历史分区;所述将所述增量数据插入所述拉链表的有效分区,包括:将所述增量数据插入所述第二临时表;将所述第二临时表的数据插入所述拉链表的有效分区中。5.如权利要求3所述的方法,其特征在于,将所述关联数据插入所述刷新周期前一周期对应的历史分区,包括:将所述关联数据的结束时间置为所述刷新周期的前一周期,之后插入所述刷新周期前一周期对应的历史分区;所述将所述增量数据插入所述拉链表有效分区,包括:将所述增量数据的开始时间置为所述刷新周期,并将所述增量数据的结束时间置为未来时间后插入所述拉链表有效分区。6.一种拉链表数据存储装置,其特征在于,所述装置包括处理单元...

【专利技术属性】
技术研发人员:徐亮亮
申请(专利权)人:咪咕互动娱乐有限公司
类型:发明
国别省市:江苏,32

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

1