CN105095484B - 一种数据拉链方法 - Google Patents
一种数据拉链方法 Download PDFInfo
- Publication number
- CN105095484B CN105095484B CN201510500914.9A CN201510500914A CN105095484B CN 105095484 B CN105095484 B CN 105095484B CN 201510500914 A CN201510500914 A CN 201510500914A CN 105095484 B CN105095484 B CN 105095484B
- Authority
- CN
- China
- Prior art keywords
- zipper
- subregion
- data
- incremental data
- zipper table
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Slide Fasteners (AREA)
Abstract
本申请公开了一种数据拉链方法和装置,其中方法包括:预先在拉链表中设置拉链表记录创建时间字段,所述字段为分区字段;根据当前的增量数据表,确定新抽取的增量数据所关联的拉链表记录创建时间;从所述拉链表的活动分区中,选择所述确定的拉链表记录创建时间所对应的子分区作为当前的目标比对分区;对于每条所述增量数据,判断该条增量数据所关联的拉链表记录是否存在于所述目标比对分区范围内,并根据所述判断的结果,将该条增量数据插入或更新至所述拉链表中。采用本发明可以提高数据拉链效率,降低运算资源的开销。
Description
技术领域
本发明涉及移动通信技术,特别是涉及一种数据拉链方法。
背景技术
数据拉链是数据仓库构建过程中的一个重要环节。所谓拉链就是历史记录。记录一个事物从开始,一直到当前状态的所有变化的信息。拉链得到的拉链表既能反应数据的历史状态,又能最大程度地节省存储。
现有的数据拉链方法是将当日的增量数据(包括新产生的数据或发生变化的数据)与当前的拉链表的活动分区中的数据进行对比,如果增量数据存在于活动(active)分区中,则需要对活动分区中的相应数据进行更新,并且需要把被更新的历史数据保存到无效(expired)分区中,否则,直接将该增量数据插入当前的拉链表中。
下面以核心交易系统的订单拉链表的生成为例,对上述传统的拉链方法进行说明:
表1
表2
表3
上述表1为一订单拉链表示例(fdm_orders_chain),表2为表1中各字段的定义。表3为当天的增量数据表(bdm_orders_di)。其中,dp、end_date和dt三个字段为分区字段。利用分区字段的不同取值可以将数据表划分为若干数据分区,例如,根据dp字段的不同取值可以将订单拉链表分为两个分区,即ACTIVE分区和EXPIRED分区。
基于上述数据表进行拉链时,是将bdm_orders_di表中最新dt值对应的分区数据与fdm_orders_chain表中ACTIVE分区数据对比,如果不存在,则直接插入fdm_orders_chain表中,如果存在,则对所存在的数据进行更新,并将更新前的数据保存到EXPIRED分区中最新end_date值对应的分区数据中。
在上述数据表具体是利用Hive工具生成的Hive表,由于Hive表的数据不支持数据更新操作(Update),因此,只能对Hive表或者表的某个分区进行数据覆盖。这样,在利用上述拉链方法进行操作时,需要遍历整个ACTIVE分区,也就是说,整个ACTIVE分区就成了新增数据的目标比对分区,以确定是否需要直接插入新增数据,或者是对已有数据的更新。
在实际应用中,随着时间的积累,拉链表中处于活动状态的数据量可能会很庞大,每日产生的增量数据可能远小于ACTIVE分区中的数据,这样,在进行拉链处理时,再将增量数据与ACTIVE分区中的数据进行一一比对,就会产生较大地计算资源开销,同时还会降低拉链效率。
发明内容
有鉴于此,本发明的主要目的在于提供一种数据拉链方法和装置,可以提高数据拉链效率,降低运算资源的开销。
为了达到上述目的,本发明提出的技术方案为:
一种数据拉链方法,包括:
预先在拉链表中设置拉链表记录创建时间字段,所述字段为分区字段;
根据当前的增量数据表,确定新抽取的增量数据所关联的拉链表记录创建时间;
从所述拉链表的活动分区中,选择所述确定的拉链表记录创建时间所对应的子分区作为当前的目标比对分区;
对于每条所述增量数据,判断该条增量数据所关联的拉链表记录是否存在于所述目标比对分区范围内,并根据所述判断的结果,将该条增量数据插入或更新至所述拉链表中。
一种数据拉链装置,包括:
配置单元,用于预先在拉链表中设置拉链表记录创建时间字段,所述字段为分区字段;
创建时间提取单元,用于根据当前的增量数据表,确定新抽取的增量数据所关联的拉链表记录创建时间;
目标比对分区确定单元,用于从所述拉链表的活动分区中,选择所述确定的拉链表记录创建时间所对应的子分区作为当前的目标比对分区;
拉链表处理单元,用于对于每条所述增量数据,判断该条增量数据所关联的拉链表记录是否存在于所述目标比对分区范围内,并根据所述判断的结果,将该条增量数据插入或更新至所述拉链表中。
综上所述,本发明提出的数据拉链方法和装置,基于新抽取的增量数据所关联的拉链表记录创建时间,来缩小用于与增量数据进行比较的数据范围,从而可以大幅度缩小数据拉链时的数据查询范围,缩短处理时间,提高拉链效率,减少运算资源开销。
附图说明
图1为本发明实施例的方法流程示意图;
图2为本发明实施例的装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步地详细描述。
本发明的核心思想是:将增量数据表中用于指示增量数据所关联的拉链表数据记录的创建时间的分区字段,增加至拉链表中,这样,可以将拉链表中的活动分区进一步按照记录创建时间进行分区。这样,在进行拉链时,可以只选择活动分区中最新增量数据所涉及的创建时间分区作为拉链的目标对比分区,只将目标对比分区范围内的数据与最新增量数据进行比较,来完成增量数据的插入或更新。如此,通过缩小拉链过程中参与数据比对的活动状态数据量,可以大幅度提高海量数据的拉链效率,降低运算资源的开销。
图1为本发明实施例一的流程示意图,如图1所示,该实施例的数据拉链方法主要包括:
步骤101、预先在拉链表中设置拉链表记录创建时间字段,所述字段为分区字段。
本步骤,用于在拉链表中配置属性为分区字段的拉链表记录创建时间字段。
这里需要说明的是:同传统的拉链表一样,拉链表中配置了“记录状态”这一分区字段,所不同的是还配置了创建时间分区字段,因此,在活动分区中可以进一步基于该创建时间分区字段进行子分区的划分,即可以得到若干创建时间子分区。这样,就可以有针对性的选择一些子分区作为拉链时与增量数据比对的数据范围,从而可以大幅度缩小数据比较范围,提高数据拉链效率,降低运算资源开销。
具体地,拉链表记录创建时间字段的时间单位可以由本领域技术人员根据实际需要进行设置,例如,可以是天,小时等,在此不再赘述。
具体地,所述拉链表可以为订单数据拉链表,但不限于此。
步骤102、根据当前的增量数据表,确定新抽取的增量数据所关联的拉链表记录创建时间。
本步骤,用于根据增量数据表,确定出各新抽取的增量数据分别对应的拉链表记录创建时间,以便在后续步骤中,根据这些创建时间确定出拉链表活动分区中用于与增量数据进行比较的创建时间分区。
这里需要说明的是,与传统的方案相同,在增量数据表中将配置了用于指示增量数据所关联的拉链表记录的创建时间的字段,以及增量数据的抽取时间字段。这样,基于这两个字段,就可以根据增量数据表,确定出新抽取的各增量数据分别对应的拉链表记录创建时间。具体地,可以利用一张缓冲表来保存所确定出的拉链表记录创建时间。
步骤103、从所述拉链表的活动分区中,选择所述确定的拉链表记录创建时间所对应的子分区作为当前的目标比对分区。
本步骤,用于将步骤102中确定出的拉链表记录创建时间在拉链表活动分区中所对应的子分区作为目标比对分区,即用于与新抽取的增量数据进行比较的数据范围。这样,相比于将拉链表的整个活动分区作为比对范围的传统方案,在处理海量数据时,本发明可以大幅度缩小数据比较范围。
步骤104、对于每条所述增量数据,判断该条增量数据所关联的拉链表记录是否存在于所述目标比对分区范围内,并根据所述判断的结果,将该条增量数据插入或更新至所述拉链表中。
本步骤,用于在步骤103所确定出的目标比对分区范围内,进一步确定拉链时基于各新抽取的增量数据所执行的具体操作,即是在拉链表是执行数据插入还是数据更新操作。
较佳地,所述将该条增量数据插入或更新至所述拉链表中包括:
如果该条增量数据所关联的拉链表记录存在于所述目标比对分区范围内,则将所述目标比对分区中的相应数据进行更新,并将被更新的历史数据保存到所述拉链表的无效分区中;否则,将该条增量数据,插入到所述拉链表的活动分区中拉链表记录创建时间为当前时间的子分区。
上述方法中,当在目标比对分区范围内有增量数据所关联的拉链表记录时,则需要对原有的数据进行相应的替换更新,并将被更新的旧数据保存到拉链表的无效分区中,而当在目标比对分区范围内没有增量数据所关联的拉链表记录时,则需要在拉链表的活动分区中为其建立新的记录,即执行相应的插入操作,并且由于拉链表中的创建时间为分区字段,因此,在进行插入时需要插入到以当前时间为创建时间的子分区中。
图2为与上述方法相对应的一种数据拉链装置结构示意图,如图2所示,该装置包括:
配置单元,用于预先在拉链表中设置拉链表记录创建时间字段,所述字段为分区字段;
创建时间提取单元,用于根据当前的增量数据表,确定新抽取的增量数据所关联的拉链表记录创建时间;
目标比对分区确定单元,用于从所述拉链表的活动分区中,选择所述确定的拉链表记录创建时间所对应的子分区作为当前的目标比对分区;
拉链表处理单元,用于对于每条所述增量数据,判断该条增量数据所关联的拉链表记录是否存在于所述目标比对分区范围内,并根据所述判断的结果,将该条增量数据插入或更新至所述拉链表中。
较佳地,所述拉链表处理单元进一步用于,如果该条增量数据所关联的拉链表记录存在于所述目标比对分区范围内,则将所述目标比对分区中的相应数据进行更新,并将被更新的历史数据保存到所述拉链表的无效分区中;否则,将该条增量数据,插入到所述拉链表的活动分区中拉链表记录创建时间为当前时间的分区。
具体地,所述拉链表可以为订单数据拉链表,但不限于此。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种数据拉链方法,其特征在于,包括:
预先在拉链表中设置拉链表记录创建时间字段,所述字段为分区字段;
根据当前的增量数据表,确定新抽取的增量数据所关联的拉链表记录创建时间;
从所述拉链表的活动分区中,选择所述确定的拉链表记录创建时间所对应的子分区作为当前的目标比对分区;
对于每条所述增量数据,判断该条增量数据所关联的拉链表记录是否存在于所述目标比对分区范围内,并根据所述判断的结果,将该条增量数据插入或更新至所述拉链表中。
2.根据权利要求1所述的方法,其特征在于,所述拉链表为订单数据拉链表。
3.根据权利要求1所述的方法,其特征在于,所述将该条增量数据插入或更新至所述拉链表中包括:
如果该条增量数据所关联的拉链表记录存在于所述目标比对分区范围内,则将所述目标比对分区中的相应数据进行更新,并将被更新的历史数据保存到所述拉链表的无效分区中;否则,将该条增量数据,插入到所述拉链表的活动分区中拉链表记录创建时间为当前时间的分区。
4.一种数据拉链装置,其特征在于,包括:
配置单元,用于预先在拉链表中设置拉链表记录创建时间字段,所述字段为分区字段;
创建时间提取单元,用于根据当前的增量数据表,确定新抽取的增量数据所关联的拉链表记录创建时间;
目标比对分区确定单元,用于从所述拉链表的活动分区中,选择所述确定的拉链表记录创建时间所对应的子分区作为当前的目标比对分区;
拉链表处理单元,用于对于每条所述增量数据,判断该条增量数据所关联的拉链表记录是否存在于所述目标比对分区范围内,并根据所述判断的结果,将该条增量数据插入或更新至所述拉链表中。
5.根据权利要求4所述的装置,其特征在于,所述拉链表为订单数据拉链表。
6.根据权利要求4所述的装置,其特征在于,所述拉链表处理单元进一步用于,如果该条增量数据所关联的拉链表记录存在于所述目标比对分区范围内,则将所述目标比对分区中的相应数据进行更新,并将被更新的历史数据保存到所述拉链表的无效分区中;否则,将该条增量数据,插入到所述拉链表的活动分区中拉链表记录创建时间为当前时间的分区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510500914.9A CN105095484B (zh) | 2015-08-17 | 2015-08-17 | 一种数据拉链方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510500914.9A CN105095484B (zh) | 2015-08-17 | 2015-08-17 | 一种数据拉链方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105095484A CN105095484A (zh) | 2015-11-25 |
CN105095484B true CN105095484B (zh) | 2019-03-12 |
Family
ID=54575919
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510500914.9A Active CN105095484B (zh) | 2015-08-17 | 2015-08-17 | 一种数据拉链方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105095484B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107526733A (zh) * | 2016-06-20 | 2017-12-29 | 咪咕互动娱乐有限公司 | 一种拉链表数据存储方法和装置 |
CN108108374B (zh) * | 2016-11-25 | 2021-11-16 | 百度在线网络技术(北京)有限公司 | 一种数据仓库的存储方法及装置 |
CN107193985A (zh) * | 2017-05-27 | 2017-09-22 | 郑州云海信息技术有限公司 | 一种记录数据变化历史的拉链表设计方法 |
CN107679136A (zh) * | 2017-09-22 | 2018-02-09 | 上海携程商务有限公司 | 拉链表的存储方法及存储系统 |
CN108763259A (zh) * | 2018-04-03 | 2018-11-06 | 四川新网银行股份有限公司 | 一种大数据平台数据加载转化算法 |
CN111753019A (zh) * | 2019-03-26 | 2020-10-09 | 北京沃东天骏信息技术有限公司 | 一种应用于数据仓库的数据分区方法和装置 |
CN110083602B (zh) * | 2019-04-15 | 2021-07-06 | 北京三快在线科技有限公司 | 一种基于hive表的数据存储及数据处理的方法及装置 |
CN110096509A (zh) * | 2019-05-16 | 2019-08-06 | 普元信息技术股份有限公司 | 大数据环境下实现历史数据拉链表存储建模处理的系统及方法 |
CN111078709A (zh) * | 2019-12-28 | 2020-04-28 | 辽宁振兴银行股份有限公司 | 一种基于数仓工具hive的非更新方式的增量拉链实现方法 |
CN112699126A (zh) * | 2020-12-31 | 2021-04-23 | 五八有限公司 | 数据存储方法、装置、电子设备及存储介质 |
CN112817970B (zh) * | 2021-01-14 | 2023-03-31 | 内蒙古蒙商消费金融股份有限公司 | 一种数据表的生成方法和装置 |
CN112507042B (zh) * | 2021-02-01 | 2021-05-18 | 北京睿企信息科技有限公司 | 一种支持增量实体关联的关系图谱计算方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101794299A (zh) * | 2010-01-27 | 2010-08-04 | 浪潮(山东)电子信息有限公司 | 一种历史数据管理的增量定义、处理方法 |
CN103678392A (zh) * | 2012-09-20 | 2014-03-26 | 阿里巴巴集团控股有限公司 | 一种数据增量合并的方法及其装置 |
CN104239567A (zh) * | 2014-09-28 | 2014-12-24 | 北京国双科技有限公司 | 数据仓库中的维度处理方法和装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8326777B2 (en) * | 2009-07-31 | 2012-12-04 | Yahoo! Inc. | Supplementing a trained model using incremental data in making item recommendations |
CN102043789A (zh) * | 2009-10-21 | 2011-05-04 | 阿里巴巴集团控股有限公司 | 一种更新数据表的方法和装置 |
-
2015
- 2015-08-17 CN CN201510500914.9A patent/CN105095484B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101794299A (zh) * | 2010-01-27 | 2010-08-04 | 浪潮(山东)电子信息有限公司 | 一种历史数据管理的增量定义、处理方法 |
CN103678392A (zh) * | 2012-09-20 | 2014-03-26 | 阿里巴巴集团控股有限公司 | 一种数据增量合并的方法及其装置 |
CN104239567A (zh) * | 2014-09-28 | 2014-12-24 | 北京国双科技有限公司 | 数据仓库中的维度处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105095484A (zh) | 2015-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105095484B (zh) | 一种数据拉链方法 | |
CN105868190B (zh) | 一种在etl中优化任务处理的方法及系统 | |
US10747213B2 (en) | Scheduling optimization system and method in hot press forging process | |
KR100984580B1 (ko) | 스케줄링 서비스의 사용자-지정 구성 | |
CN107526733A (zh) | 一种拉链表数据存储方法和装置 | |
US20190171479A1 (en) | Method and system for scheduling transactions in a data system | |
CN107229721A (zh) | 一种变更数据抽取的方法及装置 | |
WO2018000678A1 (zh) | 模块流程化调度方法及装置 | |
CN106500341A (zh) | 一种智能热水器的控制方法及系统 | |
CN105893263A (zh) | 一种测试任务调度方法 | |
CN103019805A (zh) | 一种多线程环境下定时器的设置方法 | |
CN102270156A (zh) | 一种实时嵌入式系统定时器管理方法 | |
CN104182441A (zh) | 一种数据表同步方法及装置 | |
CN106302843B (zh) | 一种ip地址库更新方法及装置 | |
KR101773781B1 (ko) | 웹 기반의 사용자 지향적 데이터 시각화 방법 및 장치 | |
CN110245145A (zh) | 关系型数据库到Hadoop数据库的结构同步方法和装置 | |
CN104901998B (zh) | 一体化云服务监控方法 | |
CN105930178A (zh) | 一种可配置的参数动态装载方法及系统 | |
CN106855862A (zh) | 一种快速比较方法及装置 | |
CN106250501B (zh) | 报表处理方法及报表系统 | |
CN101833585A (zh) | 数据库服务器操作控制系统、方法及设备 | |
CN106155594B (zh) | 一种数据处理方法及装置 | |
CN106990913B (zh) | 一种大规模流式集合数据的分布式处理方法 | |
CN108073658B (zh) | 一种数据同步系统及方法 | |
CN105045879B (zh) | 一种数据并行处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |