CN116483873A - 一种基于变更数据实现历史快照数据查询的方法 - Google Patents

一种基于变更数据实现历史快照数据查询的方法 Download PDF

Info

Publication number
CN116483873A
CN116483873A CN202310746947.6A CN202310746947A CN116483873A CN 116483873 A CN116483873 A CN 116483873A CN 202310746947 A CN202310746947 A CN 202310746947A CN 116483873 A CN116483873 A CN 116483873A
Authority
CN
China
Prior art keywords
data
change
snapshot
service
hive
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
CN202310746947.6A
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.)
Yunzhu Information Technology Chengdu Co ltd
Original Assignee
Yunzhu Information Technology Chengdu 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 Yunzhu Information Technology Chengdu Co ltd filed Critical Yunzhu Information Technology Chengdu Co ltd
Priority to CN202310746947.6A priority Critical patent/CN116483873A/zh
Publication of CN116483873A publication Critical patent/CN116483873A/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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/128Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

本发明公开了一种基于变更数据实现历史快照数据查询的方法,包括创建与业务表对应的hive外部表,指定外部表对应的hdfs的存储文件目录,预设业务表的主键;初始化业务表存量数据;监控业务表数据变更并写入hive外部表对应hdfs文件目录中,生成数据变更流水表;基于数据变更流水表和业务表主键,生成业务所需的快照数据。本发明使用hive外部表保存业务数据的所有变更记录,按照数据变更时间写入hive外部表对应hdfs文件目录下,生成数据变更流水表;使用时再根据业务需要传入快照时间,利用Spark将数据变更流水表生成快照时间对应的快照数据并写入hive临时快照表中,并在窗口函数使用完毕后删除,减少存储。

Description

一种基于变更数据实现历史快照数据查询的方法
技术领域
本发明属于数据同步领域技术领域,具体涉及一种基于变更数据实现历史快照数据查询的方法。
背景技术
hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行;Spark是一种基于内存的快速、通用、可扩展的大数据计算引擎。它集批处理、实时流处理、交互式查询、图计算与机器学习于一体,Spark可通过使用Spark SQL加载hive在hdfs上数据文件读取hive数据,然后将Spark SQL转换成RDD,然后提交到集群执行;数据变更流水表是用来记录业务数据的每一次变更(包括新增、删除、修改)的一张hive表;快照数据是指定某一个时间节点,通常是截至到某一天的业务全量数据。
为了解决能在hive查询截至到某一个时间节点的快照数据,业内一般采用如下两种方案:方案1、按照时间节点,通常是按照天为单位存下一个当时的业务快照数据,使用时根据指定日期获取当时的业务数据状态;方案2、将业务数据表设计成拉链表的形式,记录每一条业务数据所有业务含义的状态的有效时间,使用时根据有效时间获取当时的业务数据状态。
所述两种方案在数据处理中都扮演着非常重要的角色,但是他们各自也有对应的缺陷。方案1按天为单位存放快照数据,会使得存在大量的重复数据,随着时间推移会占据大量的存储空间;方案2通过设计拉链表的方式可以解决存在大量重复数据的情况,但是实现复杂,特别时遇到业务场景复杂、业务属性及状态非常多的情况下,想要设计并实现拉链表是一件极其棘手的事情。因此设计一个占用存储空间低、实现简单,并且能根据业务需求查询历史快照数据的方法,已成为所属技术领域中亟待解决的技术问题。
发明内容
本发明要解决的技术问题是:提供一种基于变更数据实现历史快照数据查询的方法,以至少解决上述部分技术问题。
为实现上述目的,本发明采用的技术方案如下:
一种基于变更数据实现历史快照数据查询的方法,包括以下步骤:
步骤1、创建与业务表对应的hive外部表,指定hdfs目录,预设业务表主键;
步骤2、初始化业务表存量数据;
步骤3、监控业务表数据变更并写入hive外部表对应hdfs目录下,生成数据变更流水表;
步骤4、基于数据变更流水表和业务表主键,使用Spark生成业务所需的快照数据。
进一步地,所述hive外部表的表结构包含对应业务表的表结构,还包括定义的数据操作类型、数据操作序号、数据变更时间、数据变更时间对应日期。
进一步地,所述定义的数据操作类型包括c、u和d,c代表创建,u代表修改,d代表删除;所述数据操作序号包括0,1,...,n,0为初始默认值、1-n表示变更数据的数据版本;数据变更时间为业务数据发生变更的时间戳,数据变更对应日期为业务数据发生变更的时间戳转化为日期格式yyyyMMdd的日期字段。
进一步地,所述步骤2还包括:将业务表的存量数据放入hive外部表对应hdfs目录下的指定目录(dt=00000000)下作为基准数据,默认hive外部表中存量数据的数据操作序号为0、定义的数据操作类型为c、数据变更时间为数据写入时间,数据变更对应日期为指定目录对应的日期00000000。
进一步地,所述步骤3包括:将业务表的变更数据实时发送至消息队列kafka;基于变更数据的变更类型,生成定义的数据操作类型;基于变更数据的数据版本,生成数据操作序号;将变更数据进入kafka时间作为数据写入时间;最后将所述定义的数据操作类型、数据操作序号和数据写入时间写入hive外部表对应hdfs目录下的日期目录dt=date(input_time,’yyyyMMdd’)下,再将变更数据其他字段信息写入hive外部表的字段中,得到数据变更流水表。
进一步地,所述步骤4包括:根据业务所需的快照时间节点,使用Spark读取数据变更流水表在hdfs目录的数据文件;利用Spark窗口函数处理数据变更流水表,得到所需的快照数据。
进一步地,所述Spark窗口函数的处理过程包括:由主键进行分组,再在组内根据数据操作序号降序排序生成数据排序序号,得到快照数据集合临时表,再选取数据排序序号等于1并且定义的数据操作类型不为d的数据,集合为所需的快照数据。
进一步地,所述步骤4还包括:使用Spark创建hive临时快照表,并将Spark得到的快照数据集合写入hive临时快照表中。
进一步地,所述hive临时快照表使用完毕,即可删除。
进一步地,在所述步骤3中,采用变化数据捕捉监控业务表数据变更。
与现有技术相比,本发明具有以下有益效果:
本发明使用hive外部表保存业务数据的所有变更记录,按照数据变更时间写入对应hdfs目录下的日期目录下,生成数据变更流水表;使用时再根据业务需要传入快照时间节点,由Spark读取数据变更流水表数据生成快照时间节点对应的快照数据集合,并将快照数据集合写入hive临时快照表中待业务使用,并在使用完毕后删除,以达到减少存储的目的。
附图说明
图1为本发明的方法流程图。
具体实施方式
术语说明:
hdfs:Hadoop分布式文件系统的简称。
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进一步详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
其中的一个实施例,如图1所示,一种基于变更数据实现历史快照数据查询的方法,包括以下步骤:
步骤1、创建与业务表对应的hive外部表,指定hdfs目录,预设业务表主键;
步骤2、初始化业务表存量数据;
步骤3、监控业务表数据变更并写入hive外部表对应hdfs目录下,生成数据变更流水表;
步骤4、基于数据变更流水表和业务表主键,使用Spark生成业务所需的快照数据。
在所述步骤1中,通过预设hive外部表对应的hdfs目录,用于步骤2与步骤3得到的业务表变更数据写入到hdfs上、以及用于步骤4生成的快照数据表时加载变更数据;通过预设业务表的主键,用于hive外部表的外键关联,以保持数据的一致性。
在所述步骤3中,采用变化数据捕获 (Change Data Capture,简称CDC)监控业务表数据变更,用于识别和捕获对数据库中的业务表所做的变更(包括数据或数据表的插入、更新、删除等),CDC实时同步传输数据,利于不停机的数据库迁移,并支持实时分析。
在所述步骤4中,使用Spark读取数据,采用Spark的窗口排序函数row_number()(over partition by order by)生成快照数据表,先进行分组、再在分组内部排序,进而查询所需快照数据。
部分实施例中,所述hive外部表的表结构包含对应业务表的表结构,还包括定义的数据操作类型、数据操作序号、数据变更时间和数据变更时间对应日期。所述定义的数据操作类型包括c、u和d,c代表创建,u代表修改,d代表删除;所述数据操作序号包括0,1,...,n,0代表初始化时同步存量数据默认设置的序号,1-n表示变更数据的数据版本;数据变更时间为业务数据发生变更的时间戳,数据变更对应日期为业务数据发生变更的时间戳转化为日期格式yyyyMMdd的日期字段。
部分实施例中,所述步骤2还包括:将业务表的存量数据放入hive外部表对应hdfs目录下的指定目录dt=00000000下作为基准数据,默认hive外部表中存量数据的数据操作序号为0、定义的数据操作类型为c、数据变更时间为数据写入时间,数据变更对应日期为指定目录对应的日期00000000。
部分实施例中,所述步骤3包括:由CDC获取业务表的变更数据,实时发送并且存储至消息队列kafka;消费kafka数据:基于变更数据的变更类型(新增、修改、删除),生成定义的数据操作类型;基于变更数据的数据版本,生成数据操作序号;将变更数据进入kafka时间作为数据写入时间,最后将所述定义的数据操作类型、数据操作序号和数据写入时间写入hive外部表外部表对应hdfs目录下的日期目录dt=date(input_time,’yyyyMMdd’)下,将变更数据其他字段信息写入hive外部表的字段中,得到数据变更流水表。特别地,如果因为不同存储介质或者因CDC工具不同,导致CDC捕获到的数据中无数据版本,即可使用数据进入kafka的时间及消息在kafka中的位置偏移offset作为数据版本。
部分实施例中,所述步骤4包括:根据业务所需的快照日期,使用Spark读取数据变更流水表在hdfs目录下的数据文件,利用Spark的窗口函数处理数据变更流水表,得到所需的快照数据;使用Spark创建hive临时快照表,并将Spark得到的快照数据集合写入hive临时快照表中。
例如,基于已有业务表,存在对应的一个数据变更流水表,如表1所示,业务需要生成截至到20221127的业务快照数据,为此先使用Spark加载该表在hdfs上的数据文件,生成Spark内存表;再利用Spark窗口函数row_number() (over partition by order by),先利用主键Id进行分组,再在组内根据数据操作序号(action_index)降序排序生成数据排序序号(rank),得到表2所示的快照数据集合临时表,然后再选取数据排序序号(rank)等于1并且定义的数据操作类型(action_type)不为d(过滤掉删除的数据)的数据,集合为表3的快照数据集合;最后创建hive临时快照表,将表3的快照数据集合的数据写入hive快照表中。具体操作代码为:创建hive临时快照表:create table if not exists table1_20221127 like table1; Spark获取快照数据集合并写入hive临时快照表:insertoverwrite table table1_20221127 select * from (select id,col1,col2,action_type,input_time,row_number() over partition by id order by action_index descrank from table1 where dt<=20221127)a where rank=1 and action_type!=’d’。
表1
表2
表3
本发明使用数据变更流水表保存所有数据变更记录,可随时根据需求生成任意时间节点的快照数据,只生成一份数据变更记录,减少重复数据存储,降低存储成本。
最后应说明的是:以上各实施例仅仅为本发明的较优实施例用以说明本发明的技术方案,而非对其限制,当然更不是限制本发明的专利范围;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围;也就是说,但凡在本发明的主体设计思想和精神上作出的毫无实质意义的改动或润色,其所解决的技术问题仍然与本发明一致的,均应当包含在本发明的保护范围之内;另外,将本发明的技术方案直接或间接的运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种基于变更数据实现历史快照数据查询的方法,其特征在于,包括以下步骤:
步骤1、创建与业务表对应的hive外部表,指定hdfs目录,预设业务表主键;
步骤2、初始化业务表存量数据;
步骤3、监控业务表数据变更并写入hive外部表对应hdfs目录下,生成数据变更流水表;
步骤4、基于数据变更流水表和业务表主键,使用Spark生成业务所需的快照数据。
2.根据权利要求1所述的一种基于变更数据实现历史快照数据查询的方法,其特征在于,所述hive外部表的表结构包含对应业务表的表结构,还包括定义的数据操作类型、数据操作序号、数据变更时间、数据变更时间对应日期。
3.根据权利要求2所述的一种基于变更数据实现历史快照数据查询的方法,其特征在于,所述定义的数据操作类型包括c、u和d,c代表创建,u代表修改,d代表删除;所述数据操作序号包括0,1,...,n,0为初始默认值、1-n表示变更数据的数据版本;数据变更时间为业务数据发生变更的时间戳,数据变更对应日期为业务数据发生变更的时间戳转化为日期格式的日期字段。
4.根据权利要求3所述的一种基于变更数据实现历史快照数据查询的方法,其特征在于,所述步骤2还包括:将业务表的存量数据放入hive外部表对应hdfs目录下的指定目录下作为基准数据,默认hive外部表中存量数据的数据操作序号为0、定义的数据操作类型为c、数据变更时间为数据写入时间,数据变更对应日期为指定目录对应的日期。
5.根据权利要求4所述的一种基于变更数据实现历史快照数据查询的方法,其特征在于,所述步骤3包括:将业务表的变更数据实时发送至消息队列kafka;基于变更数据的变更类型,生成定义的数据操作类型;基于变更数据的数据版本,生成数据操作序号;将变更数据进入kafka时间作为数据写入时间;最后将所述定义的数据操作类型、数据操作序号和数据写入时间写入hive外部表对应hdfs目录下的日期目录下,再将变更数据其他字段信息写入hive外部表的字段中,得到数据变更流水表。
6.根据权利要求2所述的一种基于变更数据实现历史快照数据查询的方法,其特征在于,所述步骤4包括:根据业务所需的快照时间节点,使用Spark读取数据变更流水表在hdfs目录的数据文件;利用Spark窗口函数处理数据变更流水表,得到所需的快照数据。
7.根据权利要求6所述的一种基于变更数据实现历史快照数据查询的方法,其特征在于,所述Spark窗口函数的处理过程包括:由主键进行分组,再在组内根据数据操作序号降序排序生成数据排序序号,得到快照数据集合临时表,再选取数据排序序号等于1并且定义的数据操作类型不为d的数据,集合为所需的快照数据。
8.根据权利要求6所述的一种基于变更数据实现历史快照数据查询的方法,其特征在于,所述步骤4还包括:使用Spark创建hive临时快照表,并将Spark得到的快照数据集合写入hive临时快照表中。
9.根据权利要求8所述的一种基于变更数据实现历史快照数据查询的方法,其特征在于,所述hive临时快照表使用完毕,即可删除。
10.根据权利要求1所述的一种基于变更数据实现历史快照数据查询的方法,其特征在于,在所述步骤3中,采用变化数据捕捉监控业务表数据变更。
CN202310746947.6A 2023-06-25 2023-06-25 一种基于变更数据实现历史快照数据查询的方法 Pending CN116483873A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310746947.6A CN116483873A (zh) 2023-06-25 2023-06-25 一种基于变更数据实现历史快照数据查询的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310746947.6A CN116483873A (zh) 2023-06-25 2023-06-25 一种基于变更数据实现历史快照数据查询的方法

Publications (1)

Publication Number Publication Date
CN116483873A true CN116483873A (zh) 2023-07-25

Family

ID=87223586

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310746947.6A Pending CN116483873A (zh) 2023-06-25 2023-06-25 一种基于变更数据实现历史快照数据查询的方法

Country Status (1)

Country Link
CN (1) CN116483873A (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070130226A1 (en) * 2005-12-01 2007-06-07 Oracle International Corporation Database system that provides for history-enabled tables
CN110674154A (zh) * 2019-09-26 2020-01-10 浪潮软件股份有限公司 一种基于Spark的对Hive中数据进行插入、更新和删除的方法
CN112632068A (zh) * 2020-12-22 2021-04-09 银盛支付服务股份有限公司 一种快速提供海量数据查询服务的解决方法
CN115129733A (zh) * 2022-06-30 2022-09-30 中国银行股份有限公司 一种银行数据变更历史的记录和查询方法、装置及设备
CN116010359A (zh) * 2022-12-14 2023-04-25 浪潮软件集团有限公司 一种基于日志进行数据存储和查询的方法及系统
CN116303834A (zh) * 2023-05-19 2023-06-23 北京弘维大数据技术有限公司 一种数据仓库历史数据存储与处理方法、系统和装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070130226A1 (en) * 2005-12-01 2007-06-07 Oracle International Corporation Database system that provides for history-enabled tables
CN110674154A (zh) * 2019-09-26 2020-01-10 浪潮软件股份有限公司 一种基于Spark的对Hive中数据进行插入、更新和删除的方法
CN112632068A (zh) * 2020-12-22 2021-04-09 银盛支付服务股份有限公司 一种快速提供海量数据查询服务的解决方法
CN115129733A (zh) * 2022-06-30 2022-09-30 中国银行股份有限公司 一种银行数据变更历史的记录和查询方法、装置及设备
CN116010359A (zh) * 2022-12-14 2023-04-25 浪潮软件集团有限公司 一种基于日志进行数据存储和查询的方法及系统
CN116303834A (zh) * 2023-05-19 2023-06-23 北京弘维大数据技术有限公司 一种数据仓库历史数据存储与处理方法、系统和装置

Similar Documents

Publication Publication Date Title
US7124146B2 (en) Incremental cardinality estimation for a set of data values
CN101127034B (zh) 数据组织、查询、呈现、存档、恢复、删除、提炼方法及装置和系统
CN104040481B (zh) 用于融合、存储和检索增量式备份数据的方法和系统
CN110879813A (zh) 一种基于二进制日志解析的MySQL数据库增量同步实现方法
CN112783901B (zh) 一种基于物联网中间件的物联网时序大数据处理方法
CN111061758B (zh) 数据存储方法、装置及存储介质
CN110096509A (zh) 大数据环境下实现历史数据拉链表存储建模处理的系统及方法
US6385616B1 (en) Time-versioned data storage mechanism
CN111427964B (zh) 一种面向运行时间戳的工业云数据存储模型
CN114218218A (zh) 基于数据仓库的数据处理方法、装置、设备及存储介质
CN105095255A (zh) 一种数据索引创建方法及装置
El Alami et al. Supply of a key value database redis in-memory by data from a relational database
CN110311817B (zh) 用于Kubernetes集群的容器日志处理系统
CN114860727A (zh) 拉链表更新方法及装置
CN110134690B (zh) Oracle数据库超大数据快速存储方法及系统
CN116483873A (zh) 一种基于变更数据实现历史快照数据查询的方法
CN110502543A (zh) 设备性能数据存储方法、装置、设备和存储介质
CN115481196A (zh) 一种实现数据库数据同步的方法和系统
JP2004192657A (ja) 情報検索システム、情報検索方法および情報検索用プログラムを記録した記録媒体
CN110633271A (zh) 一种基于json的Hbase到mysql的数据抽取方法
CN116049190B (zh) 基于Kafka的数据处理方法、装置、计算机设备和存储介质
CN116644039B (zh) 一种基于大数据的在线能力运营日志自动采集分析的方法
CN116483886B (zh) 结合kv存储引擎和时序存储引擎查询olap的方法
CN118760682A (zh) 基于ataspec2000规范的多机队可靠性数据的处理方法及可靠性数据处理装置
CN118260366A (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20230725