CN107526733A - 一种拉链表数据存储方法和装置 - Google Patents

一种拉链表数据存储方法和装置 Download PDF

Info

Publication number
CN107526733A
CN107526733A CN201610443598.0A CN201610443598A CN107526733A CN 107526733 A CN107526733 A CN 107526733A CN 201610443598 A CN201610443598 A CN 201610443598A CN 107526733 A CN107526733 A CN 107526733A
Authority
CN
China
Prior art keywords
data
history
slide fastener
cycle
subregion
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
Application number
CN201610443598.0A
Other languages
English (en)
Inventor
徐亮亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
MIGU Interactive Entertainment Co Ltd
Original Assignee
MIGU Interactive Entertainment Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by MIGU Interactive Entertainment Co Ltd filed Critical MIGU Interactive Entertainment Co Ltd
Priority to CN201610443598.0A priority Critical patent/CN107526733A/zh
Publication of CN107526733A publication Critical patent/CN107526733A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

一种拉链表数据存储方法和装置
技术领域
本申请涉及数据处理技术领域,尤其涉及一种拉链表数据存储方法和装置。
背景技术
数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合。拉链表是数据仓库中的一种数据模型,用来存储一个事物从起始到当前状态的所有变化的信息,是处理缓慢变化数据的一种方式。仅当源端业务数据发生变化时,拉链表才相应地变更,既保留了历史数据的变化信息,又不浪费存储空间。
数据仓库拉链表的每条记录包含开始时间(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示出了本申请实施例三中拉链表刷新方法的流程示意图;
图3示出了本申请实施例六中拉链表数据存储方法的流程示意图;
图4示出了本申请实施例七中拉链表实现装置的结构示意图。
具体实施方式
为了使本申请的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。并且在不冲突的情况下,本说明中的实施例及实施例中的特征可以互相结合。
发明人在发明过程中注意到:在查询拉链表中的有效数据或者历史数据时,或者在刷新拉链表时,均需要对整个拉链表进行扫描,占用大量计算资源,并且查询和刷新时间长。
基于此,本申请实施例提出了将拉链表中各周期内已封链的历史数据和有效数据分别分区存储,使对拉链表进行查询或者刷新操作时能够仅扫描相应分区,节约计算资源,缩短拉链表查询或者刷新的时长。下面结合实施例对本申请的具体实施方式进行描述。
实施例一:
本申请实施例一提供了一种拉链表数据存储方法,包括:
将历史数据存储于拉链表中对应的历史分区,所述历史分区对应于不同的历史周期并且按照所述对应的历史周期的先后顺序衔接,所述历史数据的结束时间为所述历史分区对应的历史周期;
将有效数据存储于拉链表中的有效分区,所述有效分区衔接于全部历史分区之前或者之后,所述有效数据的结束时间为未来时间。
拉链表预先被配置为多个分区,其中包括一个有效分区用于存储当前有效的数据,即当前未封链的数据;还包括一个或者多个历史分区,每个历史分区对应一个历史周期,即每个历史分区用于存储其对应的历史周期的已封链的数据。对拉链表进行分区后,逻辑上拉链表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间,即物理文件上,各个分区可通过指针或者索引查找。
拉链表中各历史分区按照各历史分区对应的历史周期的先后顺序进行排序并相互衔接,而有效分区与各历史分区相对独立,即有效分区不会位于各历史分区队列中,具体的可通过指针或者索引等现有技术实现。典型的分区衔接方法可以为:1)按照由旧至新的顺序排列各历史分区,距当前时间较近的历史分区在拉链表尾部,而更早之前的历史分区在拉链表头部,之后将有效分区列于全部历史分区之后,即整个拉链表的最尾部;或者2)按照由新至旧的顺序排列各历史分区,距当前时间较久远的历史分区在拉链表尾部,而距当前时间较近的历史分区在拉链表头部,并且将有效分区列于全部历史分区之前,即整个拉链表的最头部。当然也可以本领域技术人员知晓的其他历史分区按顺序排列而有效分区相对独立排列的方式。
基于配置的分区,在拉链表的各历史分区中分别存储对应的历史数据,即存储所述历史分区对应的历史周期的已封链的数据,这些数据的特征是结束时间均为所述历史分区对应的历史周期。在所述有效分区中存储当前未封链,即有效的数据,这些数据的特征是结束时间为未来时间,此处的未来时间通常统一为一个较久远的未来时间,例如3999-12-31或9999-12-31。
需要说明的是,本实施例的应用场景可以是建立和更新拉链表的过程,即拉链表由最初的仅包含有效分区,到逐渐有封链数据的过程中,随时依照预设的分区配置规则创建与新历史周期相对应的新的历史分区,用于存储该周期内的封链数据,并将新的分区按照顺序衔接其他历史分区中。本实施例的应用场景还可以是对已有的拉链表按照预设的分区配置规则进行调整,例如背景技术中的表一按照本实施例中的拉链表数据存储方法调整后得到分区拉链表,如表2所示:
表2分区的拉链表示例
在经过分区后的拉链表中查询某个最新数据时,只需扫描有效分区即可;而查询历史数据时,例如在表2中查询3号订单6月21日的状态时,只需要以dw_start_date<=2016-06-21,且dw_end_date>=2016-06-21为条件,扫描6月21日即该日以后的历史分区以及有效分区即可,不需要再扫描6月20日历史分区中的数据;在刷新过程中,仅需扫描有效分区,将增量数据与有效分区中的数据进行关联。随着拉链表存储的数据的增加,在查询和刷新过程中无需查询全表的有益效果将更加明显。
本实施例中,将拉链表中各周期内已封链的历史数据和有效数据分别分区存储,使对拉链表进行查询或者刷新操作时能够仅扫描相应分区,节约计算资源,缩短拉链表查询或者刷新的时长。
实施例二:
本实施例在实施例一拉链表数据存储方法的基础上,提供了所述拉链表查询的方法。图1示出了本申请实施例二中拉链表查询方法流程示意图,如图1所示,包括:
步骤101,获取历史状态查询请求,所述历史状态查询请求包括需要查询的历史周期的信息;
步骤102,扫描所述需要查询的历史周期和之后所有历史周期对应的历史分区,以及有效分区中的数据,确定其中开始时间小于等于所述历史周期,并且结束时间大于等于所述历史周期的数据为查询结果。
在步骤101中,获取用户希望查询某一历史周期当时的数据状态的请求,所述请求包括需要查询的历史周期的信息,例如当用户希望在上述表2中查询2016年6月21日当天订单的状态时,所述请求中应当包括2016-06-21这一历史周期的信息,以便为用户设置检索条件。
在步骤102中,扫描所述需要查询的历史周期和之后所有历史周期对应的历史分区,以及有效分区中的数据,检索条件为开始时间小于等于所述历史周期,并且结束时间大于等于所述历史周期,满足要求的数据即为查询结果。因为在所述需要查询的历史周期之前一个周期对应的历史分区中,存储的是在前一周期中已经封链的数据,即再前一个周期已经失效的数据,因此在查询某一历史周期的数据状态时,无需在对该周期前的历史分区进行扫描,节约了计算资源,缩短了拉链表查询或者刷新的时长。随着拉链表存储的数据的增加,在查询历史数据的过程中无需查询全表的有益效果将更加明显。
实施例三:
本实施例在实施例一拉链表数据存储方法的基础上,提供了所述拉链表刷新的方法。图2示出了本申请实施例三中拉链表刷新方法流程示意图,如图2所示,包括:
步骤201,获取刷新周期的增量数据;
步骤202,在所述拉链表的有效分区中确定与所述增量数据相关联的关联数据,在所述有效分区的数据中提取所述关联数据;
步骤203,在所述拉链表创建与所述刷新周期的前一周期对应的历史分区;
步骤204,将所述关联数据插入所述刷新周期前一周期对应的历史分区;
步骤205,将所述增量数据插入所述拉链表有效分区。
在步骤201中,源端业务系统会按照一定周期,例如每天,记录各周期内的增量数据,依据所述各周期的增量数据对拉链表进行更新。在将某一周期内的增量数据刷新至拉链表中时,定义该周期为刷新周期,获取刷新周期的增量数据。为存储和后续计算方便,可将其存储于数据仓库中增量表中。
在步骤202中,将所述拉链表的有效分区中的数据与所述刷新周期的增量数据进行关联,即按照用户ID、订单ID等对象的唯一标识进行关联,当某一用户ID或者订单ID既在拉链表的有效分区中有相关数据,又在所述增量数据中有相关数据,则关联成功。在拉链表的有效分区中确定关联成功的数据,将其提取出来。提取完成后可删除有效分区中的关联数据,也可以不删除。
在步骤203中,在所述拉链表创建与所述刷新周期的前一周期对应的历史分区,将所述历史分区与之前的全部历史分区按顺序衔接。
在步骤204中,将所述关联数据插入步骤203中创建的,与刷新周期前一周期对应的历史分区中。因为当有效分区中的某些数据能够跟增量数据关联成功时,说明这些数据在刷新周期发生了变化,即当前有效分区中的这些数据的状态仅在前一个周期中是有效的,应当冻结在前一个周期中,因此将关联成功的数据从当前的有效分区中提取出来插入刷新周期前一周期对应的历史分区中。
优选的,将所述关联数据插入所述刷新周期前一周期对应的历史分区,包括:将所述关联数据的结束时间置为所述刷新周期的前一周期,之后插入所述刷新周期前一周期对应的历史分区。即在插入关联数据前,需要将其结束时间由未来时间更改为刷新周期的前一周期。
在步骤205中,将所述增量数据插入所述拉链表有效分区。当步骤202中删除了有效分区中的关联数据时,仅需要将所述增量数据插入有效分区即可;若在步骤202中未删除有效分区中的关联数据时,需要以增量数据中关联成功的数据替换有效分区中的关联数据,并将增量数据中未关联成功的数据添加至所述有效分区中。
优选的,所述将所述增量数据插入所述拉链表有效分区,包括:将所述增量数据的开始时间置为所述刷新周期,并将所述增量数据的结束时间置为未来时间后插入所述拉链表有效分区。其中将开始时间置为所述刷新周期表明这些数据是最新更新的,而将结束时间置为未来时间表明这些数据目前是有效的。
本实施例提供了一种拉链表刷新方法,在刷新过程中只需关联有效分区,无需扫描全表,并且再刷新过程中创建相应的历史分区存储已封链数据,继续保持本申请中拉链表的分区结构。
实施例四:
本实施例在实施例三拉链表刷新方法的基础上,提供了一种具体的刷新方法:
在步骤202之后,还包括:将所述关联数据插入第一临时表;将所述提取了关联数据后的有效分区中的数据插入第二临时表;
所述步骤204具体包括:将所述第一临时表中的关联数据插入所述刷新周期前一周期对应的历史分区;
所述步骤205具体包括:将所述增量数据插入所述第二临时表;将所述第二临时表的数据插入所述拉链表的有效分区中。
本实施例中,因为将原有效分区中的关联数据提取至第一临时表,并将未关联成功的数据(即删除了关联数据后的剩余数据),或者当前有效分区中的所有数据提取至第二临时表,确保相关数据已经分别保存至临时表,所以之后对原拉链表的诸如插入历史分区、插入数据等操作将更易实现。
在拉链表中创建了所述刷新周期前一周期对应的历史分区之后,可将所述第一临时表中的关联数据插入所述刷新周期前一周期对应的历史分区中,在所述第一临时表中更易对关联数据的结束时间等信息进行修改。
最后将所述增量数据插入所述拉链表有效分区的实现方式为,将增量数据插入所述第二临时表,插入方式与实施例三中相同,在所述第二临时表中更易完成数据更新或者插入,也更易对增量数据的开始时间和结束时间进行写入。在第二临时表中整合了所有当前有效的数据后,将所述第二临时表整体插入拉链表的有效分区中,即删除原有效分区的数据,以第二临时表中的数据整体替换。
本实施例通过第一临时表和第二临时表实现刷新过程中的数据操作,将操作与原拉链表隔离,并且在临时表中更易对少量数据进行操作。
实施例五:
本实施例以类似背景技术中的实例说明拉链表的创建和更新方法。在2016年6月21日之前,所述拉链表为空,数据仓库周期性的从源端业务系统获取增量数据如表3所示:
表3 增量数据
在6月20日过后,根据6月20日的增量数据能够得到拉链表如表4所示:
表4 6月20日过后的拉链表
此时拉链表中暂时只有一个分区即有效分区。
在6月21日过后,根据6月21日的增量数据刷新拉链表,将表3中6月21日的增量数据,与表4进行关联,其中订单编号为1的数据关联成功,建立6月21日前一日,即6月20日的历史分区,将原有效分区中的订单编号为1的数据插入拉链表6月20日的历史分区中,并将其dw_end_date改为6月20日。将6月21日增量数据的dw_start_date置为6月21日,dw_end_date置为3999/12/31后与原有效分区中的未关联成功的数据整合,即将增量数据中订单编号为1、4和5的数据与原有效分区中订单编号为2和3的数据整合,得到拉链表新的有效分区的数据。刷新后的拉链表如表5所示:
表5 6月21日过后的拉链表
在6月22日过后,根据6月22日的增量数据刷新拉链表,将表3中6月22日的增量数据,与表5进行关联,其中订单编号为3和5的数据关联成功,建立6月22日前一日,即6月21日的历史分区,将原有效分区中的订单编号为3和5的数据插入拉链表6月21日的历史分区中,并将其dw_end_date改为6月21日。将6月22日的增量数据的dw_start_date置为6月22日,dw_end_date置为3999/12/31后与原有效分区中的未关联成功的数据与整合,即将增量数据中订单编号为3、5和6的数据与原有效分区中的订单编号为1、2和4的数据整合,得到拉链表新的有效分区的数据。刷新后的拉链表如表6所示:
表6 6月22日过后的拉链表
依此类推。
实施例六:
本实施例中涉及的每个表的情况说明如下:
1拉链表:对表中的记录按dw_end_date字段的日期范围分区,其中PD39991231保存的是最新记录,其他分区保存的是历史日的记录,例如PD20160401分区保存的是dw_end_date=2016-04-01的历史记录。
2、临时表:表结构与拉链表一致,包含两个分区,分区C保存最新数据,即dw_end_date=3999-12-31的记录;分区H保存需要封链的数据,即dw_end_date=ETL_DATE-1的记录。
3、增量表:保存从源端业务系统传递过来的当日新增、变化的记录。
本实施例中拉链表刷新流程如图3所示,主要包括:
步骤301,源端业务系统按日抽取前一日(记为ETL_DATE日)的新增、变化记录并传递给数据仓库,保存到增量表。
步骤302,拉链表的PD39991231子分区与增量表关联,关联上的记录为状态发生变化的,需要封链,将dw_end_date置为ETL_DATE-1,并插入临时表的H分区;关联不上的记录为状态未变化的,需要保留,dw_end_date仍为3999-12-31,并插入临时表的C分区。
步骤303,将增量表中的记录dw_start_date置为ETL_DATE,dw_end_date置为3999-12-31,并插入临时表的C分区。
步骤304,清空拉链表PD39991231子分区的记录。
步骤305,将临时表的C分区的记录插入拉链表的PD39991231子分区;将临时表的H分区的记录插入拉链表的PD ETL_DATE-1子分区。
实施例七:
基于同一发明构思,本申请实施例中还提供了一种拉链表数据存储装置,由于这些设备解决问题的原理与一种拉链表数据存储方法相似,因此这些设备的实施可以参见方法的实施,重复之处不再赘述。
图4为本申请实施例六中拉链表实现装置的结构示意图。
如图4所示,本申请实施例六中拉链表实现装置400包括处理单元401和存储单元402:
所述处理单元401用于将历史数据存储于所述存储单元402的拉链表中对应的历史分区,以及用于将有效数据存储于所述存储单元402的拉链表中的有效分区;
所述存储单元402用于存储所述拉链表,所述拉链表包括至少一个所述历史分区和一个所述有效分区,所述历史分区分别对应于不同的历史周期并且按照所述对应的历史周期的先后顺序衔接,所述历史数据的结束时间为所述历史分区对应的历史周期,所述有效分区衔接于全部历史分区之前或者之后,所述有效数据的结束时间为未来时间。
优选的,所述处理单元401,还用于获取历史状态查询请求,所述历史状态查询请求包括需要查询的历史周期的信息;
所述处理单元401在所述存储单元402中扫描所述需要查询的历史周期和之后所有历史周期对应的历史分区,以及有效分区中的数据,确定其中开始时间小于等于所述历史周期,并且结束时间大于等于所述历史周期的数据为查询结果。
优选的,所述处理单元401,还用于获取刷新周期的增量数据;
在所述存储单元402中的所述拉链表的有效分区中确定与所述增量数据相关联的关联数据,在所述有效分区的数据中提取所述关联数据;
在所述存储单元402中的所述拉链表创建与所述刷新周期的前一周期对应的历史分区;
将所述关联数据插入所述刷新周期前一周期对应的历史分区;
将所述增量数据插入所述拉链表有效分区。
优选的,所述处理单元401,还用于在所述有效分区的数据中提取所述关联数据之后,将所述关联数据插入所述存储单元402中的第一临时表;将所述提取了关联数据后的有效分区中的数据插入所述存储单元402中的第二临时表;
将所述第一临时表中的关联数据插入所述刷新周期前一周期对应的历史分区;
所述将所述增量数据插入所述拉链表的有效分区,包括:将所述增量数据插入所述第二临时表;
将所述第二临时表的数据插入所述拉链表的有效分区中。
优选的,所述处理单元401,还用于将所述关联数据的结束时间置为所述刷新周期的前一周期,之后插入所述刷新周期前一周期对应的历史分区;
将所述增量数据的开始时间置为所述刷新周期,并将所述增量数据的结束时间置为未来时间后插入所述拉链表有效分区。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (10)

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

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610443598.0A CN107526733A (zh) 2016-06-20 2016-06-20 一种拉链表数据存储方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610443598.0A CN107526733A (zh) 2016-06-20 2016-06-20 一种拉链表数据存储方法和装置

Publications (1)

Publication Number Publication Date
CN107526733A true CN107526733A (zh) 2017-12-29

Family

ID=60734517

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610443598.0A Pending CN107526733A (zh) 2016-06-20 2016-06-20 一种拉链表数据存储方法和装置

Country Status (1)

Country Link
CN (1) CN107526733A (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109299093A (zh) * 2018-09-17 2019-02-01 平安科技(深圳)有限公司 Hive数据库中拉链表的更新方法、装置和计算机设备
CN109857738A (zh) * 2019-01-07 2019-06-07 平安科技(深圳)有限公司 数据存储方法、装置、计算机设备及存储介质
CN110096509A (zh) * 2019-05-16 2019-08-06 普元信息技术股份有限公司 大数据环境下实现历史数据拉链表存储建模处理的系统及方法
CN110457401A (zh) * 2019-07-08 2019-11-15 南京苏宁软件技术有限公司 数据存储方法、装置、计算机设备和存储介质
CN111078709A (zh) * 2019-12-28 2020-04-28 辽宁振兴银行股份有限公司 一种基于数仓工具hive的非更新方式的增量拉链实现方法
CN112527833A (zh) * 2020-12-04 2021-03-19 青岛海尔科技有限公司 用于拉链表的数据存储方法、设备及计算机可读存储介质
CN112559641A (zh) * 2020-12-07 2021-03-26 泰康保险集团股份有限公司 拉链表的处理方法及装置、可读存储介质及电子设备
CN112699126A (zh) * 2020-12-31 2021-04-23 五八有限公司 数据存储方法、装置、电子设备及存储介质
CN113010523A (zh) * 2021-03-23 2021-06-22 华泰证券股份有限公司 数据仓库拉链表存储方法、刷新方法及可读存储介质
CN116719971A (zh) * 2023-05-08 2023-09-08 中银金融科技有限公司 拉链表数据加载方法、装置和电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090144221A1 (en) * 2007-12-03 2009-06-04 International Business Machines Corporation Dynamic time-dimension-dependent physical management on diverse media of very large event-recording data-store
CN102141963A (zh) * 2010-01-28 2011-08-03 阿里巴巴集团控股有限公司 一种数据分析方法和设备
CN103678392A (zh) * 2012-09-20 2014-03-26 阿里巴巴集团控股有限公司 一种数据增量合并的方法及其装置
CN105095484A (zh) * 2015-08-17 2015-11-25 北京京东世纪贸易有限公司 一种数据拉链方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090144221A1 (en) * 2007-12-03 2009-06-04 International Business Machines Corporation Dynamic time-dimension-dependent physical management on diverse media of very large event-recording data-store
CN102141963A (zh) * 2010-01-28 2011-08-03 阿里巴巴集团控股有限公司 一种数据分析方法和设备
CN103678392A (zh) * 2012-09-20 2014-03-26 阿里巴巴集团控股有限公司 一种数据增量合并的方法及其装置
CN105095484A (zh) * 2015-08-17 2015-11-25 北京京东世纪贸易有限公司 一种数据拉链方法

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109299093A (zh) * 2018-09-17 2019-02-01 平安科技(深圳)有限公司 Hive数据库中拉链表的更新方法、装置和计算机设备
CN109857738A (zh) * 2019-01-07 2019-06-07 平安科技(深圳)有限公司 数据存储方法、装置、计算机设备及存储介质
CN110096509A (zh) * 2019-05-16 2019-08-06 普元信息技术股份有限公司 大数据环境下实现历史数据拉链表存储建模处理的系统及方法
CN110457401A (zh) * 2019-07-08 2019-11-15 南京苏宁软件技术有限公司 数据存储方法、装置、计算机设备和存储介质
CN110457401B (zh) * 2019-07-08 2022-11-08 南京苏宁软件技术有限公司 数据存储方法、装置、计算机设备和存储介质
CN111078709A (zh) * 2019-12-28 2020-04-28 辽宁振兴银行股份有限公司 一种基于数仓工具hive的非更新方式的增量拉链实现方法
CN112527833A (zh) * 2020-12-04 2021-03-19 青岛海尔科技有限公司 用于拉链表的数据存储方法、设备及计算机可读存储介质
CN112559641A (zh) * 2020-12-07 2021-03-26 泰康保险集团股份有限公司 拉链表的处理方法及装置、可读存储介质及电子设备
CN112699126A (zh) * 2020-12-31 2021-04-23 五八有限公司 数据存储方法、装置、电子设备及存储介质
CN113010523A (zh) * 2021-03-23 2021-06-22 华泰证券股份有限公司 数据仓库拉链表存储方法、刷新方法及可读存储介质
CN116719971A (zh) * 2023-05-08 2023-09-08 中银金融科技有限公司 拉链表数据加载方法、装置和电子设备
CN116719971B (zh) * 2023-05-08 2024-04-09 中银金融科技有限公司 拉链表数据加载方法、装置和电子设备

Similar Documents

Publication Publication Date Title
CN107526733A (zh) 一种拉链表数据存储方法和装置
CN105630863B (zh) 用于多版本并发提交状态的事务控制块
US5878409A (en) Method and apparatus for implementing partial declustering in a parallel database system
EP3079078B1 (en) Multi-version concurrency control method in database, and database system
EP2924594A1 (en) Data encoding and corresponding data structure in a column-store database
CN102141963B (zh) 一种数据分析方法和设备
US9195701B2 (en) System and method for flexible distributed massively parallel processing (MPP) database
WO2010062554A2 (en) Index compression in databases
US20090204570A1 (en) Method and apparatus for performing multi-stage table updates
CN105117355A (zh) 存储器、存储器系统及其数据处理方法
CN105956123A (zh) 基于局部更新软件的数据处理方法及装置
CN110795499A (zh) 基于大数据的集群数据同步方法、装置、设备及存储介质
CN113010523A (zh) 数据仓库拉链表存储方法、刷新方法及可读存储介质
US6745198B1 (en) Parallel spatial join index
US20160125021A1 (en) Efficient updates in non-clustered column stores
CN106503186A (zh) 一种数据管理方法、客户端及系统
CN106484818B (zh) 一种基于Hadoop和HBase的层次聚类方法
CN109241063A (zh) 一种数据合并方法及系统
CN102207964A (zh) 实时海量数据索引建立方法及系统
CN108182244A (zh) 一种基于多层次列式存储结构的时序数据存储方法
CN112269802A (zh) 一种基于Clickhouse频繁删改查优化的方法及系统
KR101642072B1 (ko) 하이브리드스토리지장치 및 방법
CN109388638B (zh) 用于分布式大规模并行处理数据库的方法及系统
JPS62287350A (ja) インデツクス一括更新方式
CN117312445A (zh) 数据同步方法、装置、计算机设备、存储介质和程序产品

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20171229

RJ01 Rejection of invention patent application after publication