CN110442578A - 拉链表更新方法、装置、服务器及计算机可读存储介质 - Google Patents

拉链表更新方法、装置、服务器及计算机可读存储介质 Download PDF

Info

Publication number
CN110442578A
CN110442578A CN201910694990.6A CN201910694990A CN110442578A CN 110442578 A CN110442578 A CN 110442578A CN 201910694990 A CN201910694990 A CN 201910694990A CN 110442578 A CN110442578 A CN 110442578A
Authority
CN
China
Prior art keywords
data
open chain
interim
zipper
traffic
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
CN201910694990.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.)
New H3C Big Data Technologies Co Ltd
Original Assignee
New H3C Big Data Technologies 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 New H3C Big Data Technologies Co Ltd filed Critical New H3C Big Data Technologies Co Ltd
Priority to CN201910694990.6A priority Critical patent/CN110442578A/zh
Publication of CN110442578A publication Critical patent/CN110442578A/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/2379Updates performed during online database operations; commit processing
    • 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

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)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提出一种拉链表更新方法、装置、服务器及计算机可读存储介质,涉及数据存储技术领域。该方法包括:若数据库中的待处理业务表是采用全量抽取的方式获得,则根据待处理业务表的表结构和数据,创建业务表临时表,根据拉链表的表结构和开链区的数据,创建开链区数据临时表,根据业务表临时表和开链区数据临时表,确定待封链数据和待开链数据,根据待封链数据和待开链数据对拉链表进行更新。由于在根据业务表临时表和开链区数据临时表确定待封链数据和待开链数据时,仅需使用开链区中的数据,不必使用封链区中的数据,有效减少了对比数据量,从而极大减少了磁盘io操作。

Description

拉链表更新方法、装置、服务器及计算机可读存储介质
技术领域
本申请涉及数据存储技术领域,具体而言,涉及一种拉链表更新方法、装置、服务器及计算机可读存储介质。
背景技术
随着信息技术的快速发展,数据呈爆发式的增长,需要对大量的数据进行存储。在数据库中表的数据量较大、数据有更新操作、需要查看某一个时间点或者时间段的历史快照信息、数据变化的比例和频率不大(例如,1000 万条数据,每天变化的只有10万)等场景中,若增量保存数据,则无法保留历史数据,若全量保存数据,则会重复存储很多不变的数据,造成存储空间的大量浪费。拉链表的产生,既能满足对历史数据的查看需求,又能在最大程度上节省存储空间。
目前的拉链表实现方案中,对于存在时间戳的表,可以根据时间戳增量抽取原业务表中的数据来更新拉链表;对于不带时间戳的表,需全量抽取原业务表中的数据与拉链表中的全部数据进行关联对比,根据关联对比结果进行拉链表的更新。由于每次都要与全部的拉链表数据进行关联对比,故会产生大量的磁盘io操作,对性能有大量消耗;且在更新拉链表时,是采用全盘覆盖的方式,进一步增加了磁盘io操作。
发明内容
有鉴于此,本申请的目的在于提供一种拉链表更新方法、装置、服务器及计算机可读存储介质,以减少磁盘io操作。
为了实现上述目的,本申请实施例采用的技术方案如下:
第一方面,本申请实施例提供了一种拉链表更新方法,应用于处理数据库的服务器,所述数据库中预先创建有拉链表,所述拉链表按照预设的分区键值划分为开链区和封链区;所述方法包括:若所述数据库中的待处理业务表是采用全量抽取的方式获得,则根据所述待处理业务表的表结构和数据,创建业务表临时表;根据所述拉链表的表结构和所述开链区的数据,创建开链区数据临时表;根据所述业务表临时表和所述开链区数据临时表,确定待封链数据和待开链数据;根据所述待封链数据和所述待开链数据对所述拉链表进行更新。
第二方面,本申请实施例还提供了一种拉链表更新装置,应用于处理数据库的服务器,所述数据库中预先创建有拉链表,所述拉链表按照预设的分区键值划分为开链区和封链区;所述装置包括:业务表临时表创建模块,用于若所述数据库中的待处理业务表是采用全量抽取的方式获得,则根据所述待处理业务表的表结构和数据,创建业务表临时表;开链区数据临时表创建模块,用于根据所述拉链表的表结构和所述开链区的数据,创建开链区数据临时表;数据确定模块,用于根据所述业务表临时表和所述开链区数据临时表,确定待封链数据和待开链数据;更新模块,用于根据所述待封链数据和所述待开链数据对所述拉链表进行更新。
第三方面,本申请实施例还提供了一种服务器,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的计算机程序,所述处理器执行所述计算机程序时,实现上述第一方面所述的方法。
第四方面,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的方法。
相对现有技术,本申请具有以下有益效果:
本申请实施例提供的拉链表更新方法、装置、服务器及计算机可读存储介质中,由于在创建拉链表时指定了分区,即按照预设的分区键值划分为开链区和封链区,这样在创建开链区数据临时表时,直接使用开链区中存放的数据即可,避免了使用where语句指定查询条件,从而触发全盘扫描。在根据业务表临时表和开链区数据临时表确定待封链数据和待开链数据时,仅需使用开链区中的数据,不必使用封链区中的数据,有效避免了现有技术中与全部的拉链表数据进行关联对比,减少了对比数据量,从而极大减少了磁盘 io操作。在更新拉链表的过程中,根据待封链数据和待开链数据仅需要更改需封链和需开链的数据,无需全量覆盖拉链表,从而进一步减少了磁盘 io操作。此外,由于拉链表进行了分区设计,当上层业务查询建立好的拉链表时,可以有效避免全盘扫描。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请实施例提供的服务器的方框示意图。
图2示出了待处理业务表的一种示意图。
图3示出了拉链表的一种示意图。
图4示出了本申请实施例提供的拉链表更新方法的一种流程示意图。
图5示出了待处理业务表的另一种示意图。
图6示出了业务表临时表的一种示意图。
图7示出了开链区数据临时表的一种示意图。
图8示出了连接表的一种示意图。
图9示出了拉链表更新后的示意图。
图10示出了本申请实施例提供的拉链表更新装置的一种功能模块图。
图标:100-服务器;300-拉链表更新装置;110-存储器;120-处理器;130-通信模块;310-判断模块;320-业务表临时表创建模块;330-开链区数据临时表创建模块;340-数据确定模块;350-更新模块。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
请参照图1,是本申请实施例提供的服务器100的方框示意图。服务器 100包括存储器110、处理器120及通信模块130。存储器110、处理器120 以及通信模块130各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。
其中,存储器110用于存储程序或者数据。存储器110可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-Only Memory,PROM),可擦除只读存储器(ErasableProgrammable Read-Only Memory,EPROM),电可擦除只读存储器(Electric ErasableProgrammable Read-Only Memory, EEPROM)等。
处理器120用于读/写存储器110中存储的数据或程序,并执行相应地功能。
通信模块130用于通过网络建立服务器100与其它通信终端之间的通信连接,并用于通过网络收发数据。
应当理解的是,图1所示的结构仅为服务器100的结构示意图,服务器 100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。
本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器120执行时实现本申请揭示的拉链表更新方法。
该服务器100可以用于处理数据库,服务器100可从原业务表中抽取表结构及数据到该数据库中,并在该数据库中建立对应的表,本实施例中将该表称为待处理业务表。其中,服务器100可以根据实际业务场景选择抽取系统当前日期的前一天、前一周、前一个月的数据,本申请对此不做限制。
在本实施例中,该数据库为需要创建拉链表的数据库,以满足对历史数据的查看需求。因此,当该数据库中不存在拉链表时,需要根据数据库中的待处理业务表的表结构和数据创建拉链表。
其中,服务器100在创建拉链表时,需在待处理业务表的表结构基础上添加开始时间字段和结束时间字段,并通过分区操作对该拉链表进行分区,从而将拉链表按照预设的分区键值划分为开链区和封链区,开链区的数据为拉链表中的开链数据,封链区的数据为拉链表中的封链数据。
在本实施例中,可以指定以拉链表中的结束时间字段对拉链表进行分区,拉链表中结束时间字段的值为该预设的分区键值的数据(即开链数据)位于开链区,拉链表中结束时间字段的值不为该预设的分区键值的数据(即封链数据)位于封链区。
也即是说,在根据待处理业务表的表结构和数据创建拉链表后,该拉链表与该待处理业务表相比,拉链表中的数据与待处理业务表中的数据一致,拉链表的表结构相对待处理业务表新增开始时间字段和结束时间字段,开链区的数据对应的结束时间字段的值为分区键值,封链区的数据对应的结束时间字段的值不为分区键值。
在一个示例中,可以设置拉链表中的开始时间字段的默认值为系统当前日期的前一天,结束时间字段的默认值是“9999-12-31”,则分区键值也为“9999-12-31”,即结束时间字段的值为“9999-12-31”的数据位于开链区,结束时间字段的值不为“9999-12-31”的数据位于封链区。
下面,对拉链表的创建过程进行详细说明。假设系统当前日期为 2019/01/02,图2为从原业务表抽取到数据库中的用于创建拉链表的待处理业务表,该待处理业务表的表结构包括两个字段,即name字段和age字段。根据图2所示的待处理业务表的表结构和数据可以创建图3所示的拉链表,其中,图3所示的拉链表的表结构不仅包括name字段和age字段,而且相比图2所示的待处理业务表还新增了开始时间字段(即start_time字段) 和结束时间字段(即end_time字段),拉链表的name字段和age字段的值与待处理业务表的name字段和age字段的值对应一致,拉链表中每一行的 start_time字段的值均为系统当前日期的前一天2019/01/01,end_time字段的值均为“9999-12-31”,由于每一行的end_time字段的值均为“9999-12-31”,故此时拉链表中每一行的数据均为开链数据,位于开链区。
可见,该拉链表在按照预设的分区键值划分为开链区和封链区后,逻辑上仍然是一张完整的表,只是拉链表中的数据在物理上存放时,基于划分的开链区和封链区能够将拉链表中的开链数据与封链数据进行物理分离,这样当查询拉链表中的数据时,不会每次都进行全盘扫描,从而极大减少了磁盘 io操作。
下面,在服务器100处理的数据库中已经预先创建有拉链表的基础上,对拉链表的更新进行详细说明。请参照图4,为本申请实施例提供的拉链表更新方法的一种流程示意图。需要说明的是,本申请实施例提供的拉链表更新方法并不以图4以及以下的具体顺序为限制,应当理解,在其他实施例中,本申请实施例提供的拉链表更新方法其中部分步骤的顺序可以根据实际需要相互交换,或者其中的部分步骤也可以省略或删除。该拉链表更新方法可以应用在图1所示的服务器100中,下面将对图4所示的具体流程进行详细阐述。
步骤S201,判断数据库中的待处理业务表是采用全量抽取还是增量抽取的方式获得。
在本实施例中,当原业务表中有主键(例如,时间戳)并且业务场景中无删除操作时,则可以采用增量抽取的方式从原业务表中抽取表结构及数据到数据库中,并根据抽取的表结构及数据建立该待处理业务表;当原业务表中没有主键或者业务场景中有删除操作,则需要采用全量抽取的方式从原业务表中抽取表结构及数据到数据库中,并根据抽取的表结构及数据建立该待处理业务表。
当数据库中的待处理业务表是采用全量抽取的方式获得时,则需要使用全量对比的方案更新拉链表,即执行步骤S202、S203、S204和S206;当数据库中的待处理业务表是采用增量抽取的方式获得时,则需要使用增量对比的方案更新拉链表,即执行步骤S205和S206。
步骤S202,若数据库中的待处理业务表是采用全量抽取的方式获得,根据待处理业务表的表结构和数据,创建业务表临时表。
在本实施例中,业务表临时表的表结构相对待处理业务表新增第一关联字段,且第一关联字段的值根据待处理业务表的数据生成。
也即是说,该业务表临时表中不仅包括待处理业务表中的所有字段和数据,而且还新增了第一关联字段,该业务表临时表中每一行的第一关联字段的值,可以由待处理业务表中对应这一行的字段的值进行拼接后生成。
例如,假设系统当前日期为2019/01/03,图5为当前从原业务表抽取的系统当前日期的前一天(即2019/01/02)的数据和表结构建立的待处理业务表,原业务表中的数据在2019/01/02相对前一天2019/01/01发生了新增、修改、删除。其中,图5所示的待处理业务表与图2相比,小明的年龄由12修改为13,小李的记录被删除,新增了小天的记录。此时数据库中已经存在图3所示的拉链表,则根据图5所示的待处理业务表的表结构和数据可以创建得到图6所示的业务表临时表。其中,图6所示的业务表临时表的表结构不仅包括name字段和age字段,而且相比图5所示的待处理业务表还新增了md5_1字段(即第一关联字段),业务表临时表的name字段和age 字段的值与待处理业务表的name字段和age字段的值对应一致,业务表临时表中每一行的md5_1字段的值可以由待处理业务表的name字段的值和age 字段的值拼接而成的字符串生成。
步骤S203,根据拉链表的表结构和开链区的数据,创建开链区数据临时表。
在本实施例中,开链区数据临时表的表结构相对拉链表新增第二关联字段,且第二关联字段的值根据开链区的数据生成。
也即是说,该开链区数据临时表中不仅包括拉链表中的所有字段和拉链表中的开链数据,而且还新增了第二关联字段,该开链区数据临时表中每一行的第二关联字段的值,可以由开链区中对应这一行的字段的值进行拼接后生成。
例如,根据图3所示的拉链表的表结构和数据可以创建得到图7所示的开链区数据临时表,该开链区数据临时表的表结构不仅包括name字段、age 字段、start_time字段和end_time字段,而且相比图3所示的拉链表还新增了md5_2字段(即第二关联字段),开链区数据临时表的name字段、age 字段、start_time字段和end_time字段的值与拉链表的name字段、age字段、start_time字段和end_time字段的值对应一致,开链区数据临时表中每一行的md5_2字段的值可以由拉链表中name字段的值和age字段的值拼接而成的字符串生成。
由于在创建拉链表时进行了分区设计,拉链表中的开链数据放在开链区,拉链表中的封链数据放在封链区,在创建开链区数据临时表时,不需要使用 where语句指定查询条件,从而触发全盘扫描来查找开链数据,故有效减少了磁盘io操作。
需要说明的是,上述的步骤S202和步骤S203可以同时执行,也可以先执行步骤S202,再执行步骤S203,或者先执行步骤S203,再执行步骤S202,本申请对此不做限制。
步骤S204,根据业务表临时表和开链区数据临时表,确定待封链数据和待开链数据。
该步骤S204具体可以包括:根据第一关联字段的值和第二关联字段的值对业务表临时表和开链区数据临时表进行全连接,得到连接表,将连接表中业务表临时表数据为空的部分对应的开链区数据临时表中的数据作为待封链数据,将连接表中开链区数据临时表中数据为空的部分对应的业务表临时表中的数据作为待开链数据。
以图6所示的业务表临时表和图7所示的开链区数据临时表为例,由于待处理业务表中小王、小红和小张的name字段和age字段的值均未改变,所以其在业务表临时表中对应的md5_1字段的值和在开链区数据临时表中对应的md5_2字段的值相同,而小明的age字段的值发生了改变,所以其在业务表临时表中对应的md5_1字段的值和在开链区数据临时表中对应的md5_2字段的值不同。将图6所示的业务表临时表和图7所示的开链区数据临时表根据md5_1字段的值和md5_2字段的值进行全连接后,可以得到图8所示的连接表;其中,连接表的第1~3列为业务表临时表的内容,即连接表中的md5 字段的值与业务表临时表中的md5_1字段的值对应一致,连接表的第4~7列为开链区数据临时表的内容,则业务表临时表中数据为空的部分对应的开链区数据临时表中的数据(即开链区数据临时表中小明、小李的数据)为待封链数据,开链区数据临时表中数据为空的部分对应的业务表临时表中的数据 (即业务表临时表中小明、小天的数据)为待开链数据。
可见,由于在创建业务表临时表和开链区数据临时表时,均将表中name 字段和age字段的值映射为一个字段(md5_1字段或md5_2字段)的值,在进行业务表临时表和开链区数据临时表的全连接操作时,将全字段对比转变为 md5_1字段与md5_2字段的关联问题,从而有效提高了对比效率。此外,在进行业务表临时表和开链区数据临时表的全连接过程中,由于只需使用拉链表中的开链数据与业务表临时表中的数据进行对比,不必使用封链数据,不仅减少了对比过程中的对比数据量,还大大减少了磁盘io操作。
步骤S205,若数据库中的待处理业务表是采用增量抽取的方式获得,则根据待处理业务表和拉链表确定待封链数据和待开链数据。
在本实施例中,当待处理业务表是采用增量抽取的方式获得时,则该待处理业务表中已经带有时间戳,且该待处理业务表中的数据为新增或修改的数据,故可以根据时间戳对待处理业务表中的数据和拉链表中的数据进行关联对比(例如,将待处理业务表和拉链表进行左连接),然后根据关联对比结果确定待封链数据和待开链数据。
步骤S206,根据待封链数据和待开链数据对拉链表进行更新。
其中,该步骤S206具体可以包括:将待封链数据在拉链表中进行封链操作,以使待封链数据由开链区迁移到封链区,将待开链数据插入到开链区。
例如,当根据图8所示的连接表确定开链区数据临时表中小明、小李的数据为待封链数据,业务表临时表中小明、小天的数据为待开链数据后,在图3所示的拉链表中对待封链数据进行封链操作,将待开链数据插入到拉链表的开链区中,则可以得到图9所示的更新后的拉链表。在图9中,开链区数据临时表中小明、小李的数据(即待封链数据)对应的end_time字段的值由“9999-12-31”更改为系统当前日期的前一天(即“2019/01/02”),业务表临时表中小明、小天的数据(即待开链数据)插入开链区后,在拉链表中对应的start_time字段的值为系统当前日期为2019/01/02,对应的 end_time字段的值为“9999-12-31”。
可见,在本申请中,由于开链数据和封链数据放在不同的分区,在每次更新拉链表时,仅需要更改需封链和需开链的数据,无需对拉链表进行全量覆盖,从而有效减少了磁盘io操作。并且,当上层业务查询建立好的拉链表时,拉链表的分区设计可以有效避免全盘扫描。
为了执行上述实施例及各个可能的方式中的相应步骤,下面给出一种拉链表更新装置的实现方式。请参阅图10,图10为本申请实施例提供的一种拉链表更新装置300的功能模块图。需要说明的是,本实施例所提供的拉链表更新装置300,其基本原理及产生的技术效果和上述实施例相同,为简要描述,本实施例部分未提及之处,可参考上述的实施例中相应内容。该拉链表更新装置300包括:判断模块310、业务表临时表创建模块320、开链区数据临时表创建模块330、数据确定模块340及更新模块350。
可选地,上述模块可以软件或固件(Firmware)的形式存储于图1所示的存储器110中或固化于该服务器100的操作系统(Operating System,OS) 中,并可由图1中的处理器120执行。同时,执行上述模块所需的数据、程序的代码等可以存储在存储器110中。
该判断模块310用于判断数据库中的待处理业务表是采用全量抽取还是增量抽取的方式获得。
可以理解,该判断模块310还可以执行上述步骤S201。
该业务表临时表创建模块320用于若数据库中的待处理业务表是采用全量抽取的方式获得,则根据待处理业务表的表结构和数据,创建业务表临时表。
在本实施例中,业务表临时表的表结构相对待处理业务表新增第一关联字段,且第一关联字段的值根据待处理业务表的数据生成。
可以理解,该业务表临时表创建模块320可以执行上述步骤S202。
该开链区数据临时表创建模块330用于根据拉链表的表结构和开链区的数据,创建开链区数据临时表。
其中,当数据库中还没有建立拉链表时,可以根据数据库中的待处理业务表的表结构和数据预先创建一个拉链表,该拉链表按照预设的分区键值划分为开链区和封链区,拉链表的表结构相对待处理业务表新增开始时间字段和结束时间字段,开链区的数据对应的结束时间字段的值为分区键值,封链区的数据对应的结束时间字段的值不为分区键值。
在本实施例中,开链区数据临时表的表结构相对拉链表新增第二关联字段,且第二关联字段的值根据开链区的数据生成。
可以理解,该开链区数据临时表创建模块330可以执行上述步骤S203。
该数据确定模块340用于根据业务表临时表和开链区数据临时表,确定待封链数据和待开链数据。
其中,该数据确定模块340具体用于根据第一关联字段的值和第二关联字段的值对业务表临时表和开链区数据临时表进行全连接,得到连接表,并将连接表中业务表临时表数据为空的部分对应的开链区数据临时表中的数据作为待封链数据,将连接表中开链区数据临时表中数据为空的部分对应的业务表临时表中的数据作为待开链数据。
该数据确定模块340还用于若数据库中的待处理业务表是采用增量抽取的方式获得,则根据待处理业务表和拉链表确定待封链数据和待开链数据。
可以理解,该数据确定模块340可以执行上述步骤S204和步骤S205。
该更新模块350用于根据待封链数据和待开链数据对拉链表进行更新。
其中,该更新模块350具体用于将待封链数据在拉链表中进行封链操作,以使待封链数据由开链区迁移到封链区,将待开链数据插入到开链区。
可以理解,该更新模块350可以执行上述步骤S206。
综上所述,本申请实施例提供的拉链表更新方法、装置、服务器及计算机可读存储介质中,当数据库中的待处理业务表是采用全量抽取的方式获得时,根据待处理业务表的表结构和数据,创建业务表临时表,根据拉链表的表结构和开链区的数据,创建开链区数据临时表,根据业务表临时表和开链区数据临时表,确定待封链数据和待开链数据,根据待封链数据和待开链数据对拉链表进行更新。由于在创建拉链表时指定了分区,即按照预设的分区键值划分为开链区和封链区,这样在创建开链区数据临时表时,直接使用开链区中存放的数据即可,避免了使用where语句指定查询条件,从而触发全盘扫描。在根据业务表临时表和开链区数据临时表确定待封链数据和待开链数据时,仅需使用开链区中的数据,不必使用封链区中的数据,有效避免了现有技术中与全部的拉链表数据进行关联对比,减少了对比数据量,从而极大减少了磁盘io操作。在更新拉链表的过程中,根据待封链数据和待开链数据仅需要更改需封链和需开链的数据,无需全量覆盖拉链表,从而进一步减少了磁盘io操作。此外,由于拉链表进行了分区设计,当上层业务查询建立好的拉链表时,可以有效避免全盘扫描。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (12)

1.一种拉链表更新方法,其特征在于,应用于处理数据库的服务器,所述数据库中预先创建有拉链表,所述拉链表按照预设的分区键值划分为开链区和封链区;所述方法包括:
若所述数据库中的待处理业务表是采用全量抽取的方式获得,则根据所述待处理业务表的表结构和数据,创建业务表临时表;
根据所述拉链表的表结构和所述开链区的数据,创建开链区数据临时表;
根据所述业务表临时表和所述开链区数据临时表,确定待封链数据和待开链数据;
根据所述待封链数据和所述待开链数据对所述拉链表进行更新。
2.根据权利要求1所述的方法,其特征在于,所述根据所述待封链数据和所述待开链数据对所述拉链表进行更新的步骤包括:
将所述待封链数据在所述拉链表中进行封链操作,以使所述待封链数据由所述开链区迁移到所述封链区;
将所述待开链数据插入到所述开链区。
3.根据权利要求1所述的方法,其特征在于,所述数据库中预先创建的拉链表是根据所述数据库中的待处理业务表的表结构和数据创建的;其中,所述拉链表的表结构相对所述待处理业务表新增开始时间字段和结束时间字段,所述开链区的数据对应的所述结束时间字段的值为所述分区键值,所述封链区的数据对应的所述结束时间字段的值不为所述分区键值。
4.根据权利要求1所述的方法,其特征在于,所述业务表临时表的表结构相对所述待处理业务表新增第一关联字段,且所述第一关联字段的值根据所述待处理业务表的数据生成;所述开链区数据临时表的表结构相对所述拉链表新增第二关联字段,且所述第二关联字段的值根据所述开链区的数据生成;
所述根据所述业务表临时表和所述开链区数据临时表,确定待封链数据和待开链数据的步骤包括:
根据所述第一关联字段的值和所述第二关联字段的值对所述业务表临时表和所述开链区数据临时表进行全连接,得到连接表;
将所述连接表中所述业务表临时表数据为空的部分对应的所述开链区数据临时表中的数据作为待封链数据;
将所述连接表中所述开链区数据临时表中数据为空的部分对应的所述业务表临时表中的数据作为待开链数据。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述数据库中的待处理业务表是采用增量抽取的方式获得,则根据所述待处理业务表和所述拉链表确定待封链数据和待开链数据。
6.一种拉链表更新装置,其特征在于,应用于处理数据库的服务器,所述数据库中预先创建有拉链表,所述拉链表按照预设的分区键值划分为开链区和封链区;所述装置包括:
业务表临时表创建模块,用于若所述数据库中的待处理业务表是采用全量抽取的方式获得,则根据所述待处理业务表的表结构和数据,创建业务表临时表;
开链区数据临时表创建模块,用于根据所述拉链表的表结构和所述开链区的数据,创建开链区数据临时表;
数据确定模块,用于根据所述业务表临时表和所述开链区数据临时表,确定待封链数据和待开链数据;
更新模块,用于根据所述待封链数据和所述待开链数据对所述拉链表进行更新。
7.根据权利要求6所述的装置,其特征在于,所述更新模块用于将所述待封链数据在所述拉链表中进行封链操作,以使所述待封链数据由所述开链区迁移到所述封链区,将所述待开链数据插入到所述开链区。
8.根据权利要求6所述的装置,其特征在于,所述数据库中预先创建的拉链表是根据所述数据库中的待处理业务表的表结构和数据创建的;其中,所述拉链表的表结构相对所述待处理业务表新增开始时间字段和结束时间字段,所述开链区的数据对应的所述结束时间字段的值为所述分区键值,所述封链区的数据对应的所述结束时间字段的值不为所述分区键值。
9.根据权利要求6所述的装置,其特征在于,所述业务表临时表的表结构相对所述待处理业务表新增第一关联字段,且所述第一关联字段的值根据所述待处理业务表的数据生成;所述开链区数据临时表的表结构相对所述拉链表新增第二关联字段,且所述第二关联字段的值根据所述开链区的数据生成;
所述数据确定模块用于根据所述第一关联字段的值和所述第二关联字段的值对所述业务表临时表和所述开链区数据临时表进行全连接,得到连接表,并将所述连接表中所述业务表临时表数据为空的部分对应的所述开链区数据临时表中的数据作为待封链数据,将所述连接表中所述开链区数据临时表中数据为空的部分对应的所述业务表临时表中的数据作为待开链数据。
10.根据权利要求6所述的装置,其特征在于,所述数据确定模块还用于若所述数据库中的待处理业务表是采用增量抽取的方式获得,则根据所述待处理业务表和所述拉链表确定待封链数据和待开链数据。
11.一种服务器,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的计算机程序,所述处理器执行所述计算机程序时,实现如权利要求1-5中任一项所述的方法。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-5中任一项所述的方法。
CN201910694990.6A 2019-07-30 2019-07-30 拉链表更新方法、装置、服务器及计算机可读存储介质 Pending CN110442578A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910694990.6A CN110442578A (zh) 2019-07-30 2019-07-30 拉链表更新方法、装置、服务器及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910694990.6A CN110442578A (zh) 2019-07-30 2019-07-30 拉链表更新方法、装置、服务器及计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN110442578A true CN110442578A (zh) 2019-11-12

Family

ID=68432260

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910694990.6A Pending CN110442578A (zh) 2019-07-30 2019-07-30 拉链表更新方法、装置、服务器及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN110442578A (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111641690A (zh) * 2020-05-20 2020-09-08 北京字节跳动网络技术有限公司 会话消息处理方法、装置及电子设备
CN112241408A (zh) * 2020-09-30 2021-01-19 航天信息股份有限公司 基于临时表的发票数据批量入库方法
CN112527833A (zh) * 2020-12-04 2021-03-19 青岛海尔科技有限公司 用于拉链表的数据存储方法、设备及计算机可读存储介质
CN112559641A (zh) * 2020-12-07 2021-03-26 泰康保险集团股份有限公司 拉链表的处理方法及装置、可读存储介质及电子设备
CN112765135A (zh) * 2021-01-29 2021-05-07 北京达佳互联信息技术有限公司 数据处理方法、装置、电子设备及存储介质
CN113010523A (zh) * 2021-03-23 2021-06-22 华泰证券股份有限公司 数据仓库拉链表存储方法、刷新方法及可读存储介质
CN113742321A (zh) * 2020-09-24 2021-12-03 北京沃东天骏信息技术有限公司 一种数据更新的方法和装置
CN114218238A (zh) * 2021-12-16 2022-03-22 城云科技(中国)有限公司 记录数据完整变化信息的数据存储方法、系统及应用
CN116383228A (zh) * 2023-06-05 2023-07-04 建信金融科技有限责任公司 数据处理方法、装置、计算机设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101504664A (zh) * 2009-03-18 2009-08-12 中国工商银行股份有限公司 对全量源数据进行抽取转换加载的装置及方法
US20120191682A1 (en) * 2005-12-01 2012-07-26 Oracle International Corporation Database system that provides for history-enabled tables
CN103678392A (zh) * 2012-09-20 2014-03-26 阿里巴巴集团控股有限公司 一种数据增量合并的方法及其装置
CN107193985A (zh) * 2017-05-27 2017-09-22 郑州云海信息技术有限公司 一种记录数据变化历史的拉链表设计方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120191682A1 (en) * 2005-12-01 2012-07-26 Oracle International Corporation Database system that provides for history-enabled tables
CN101504664A (zh) * 2009-03-18 2009-08-12 中国工商银行股份有限公司 对全量源数据进行抽取转换加载的装置及方法
CN103678392A (zh) * 2012-09-20 2014-03-26 阿里巴巴集团控股有限公司 一种数据增量合并的方法及其装置
CN107193985A (zh) * 2017-05-27 2017-09-22 郑州云海信息技术有限公司 一种记录数据变化历史的拉链表设计方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
刘荣辉: "《大数据架构技术与实例分析》", 31 January 2018, 东北师范大学出版社 *
杨伯钢等: "《城市房屋管理地理信息系统技术与应用》", 31 January 2017, 中国地图出版社 *
黄章树,吴海东: "《数据库原理及应用综合实践教程》", 31 July 2016, 厦门大学出版社 *

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111641690A (zh) * 2020-05-20 2020-09-08 北京字节跳动网络技术有限公司 会话消息处理方法、装置及电子设备
CN113742321A (zh) * 2020-09-24 2021-12-03 北京沃东天骏信息技术有限公司 一种数据更新的方法和装置
CN112241408A (zh) * 2020-09-30 2021-01-19 航天信息股份有限公司 基于临时表的发票数据批量入库方法
CN112241408B (zh) * 2020-09-30 2024-06-04 航天信息股份有限公司 基于临时表的发票数据批量入库方法
CN112527833A (zh) * 2020-12-04 2021-03-19 青岛海尔科技有限公司 用于拉链表的数据存储方法、设备及计算机可读存储介质
CN112559641A (zh) * 2020-12-07 2021-03-26 泰康保险集团股份有限公司 拉链表的处理方法及装置、可读存储介质及电子设备
CN112559641B (zh) * 2020-12-07 2024-02-06 泰康保险集团股份有限公司 拉链表的处理方法及装置、可读存储介质、电子设备
CN112765135B (zh) * 2021-01-29 2023-12-05 北京达佳互联信息技术有限公司 数据处理方法、装置、电子设备及存储介质
CN112765135A (zh) * 2021-01-29 2021-05-07 北京达佳互联信息技术有限公司 数据处理方法、装置、电子设备及存储介质
CN113010523A (zh) * 2021-03-23 2021-06-22 华泰证券股份有限公司 数据仓库拉链表存储方法、刷新方法及可读存储介质
CN114218238A (zh) * 2021-12-16 2022-03-22 城云科技(中国)有限公司 记录数据完整变化信息的数据存储方法、系统及应用
CN116383228A (zh) * 2023-06-05 2023-07-04 建信金融科技有限责任公司 数据处理方法、装置、计算机设备和存储介质
CN116383228B (zh) * 2023-06-05 2023-08-25 建信金融科技有限责任公司 数据处理方法、装置、计算机设备和存储介质

Similar Documents

Publication Publication Date Title
CN110442578A (zh) 拉链表更新方法、装置、服务器及计算机可读存储介质
US9477727B2 (en) Abstracting data for use by a mobile device having occasional connectivity
US10606816B2 (en) Compression-aware partial sort of streaming columnar data
CN109508355A (zh) 一种数据抽取方法、系统及终端设备
CN105956123A (zh) 基于局部更新软件的数据处理方法及装置
CN109298868A (zh) 测绘影像数据处理软件智能动态部署及卸载方法
CN107545021A (zh) 一种数据存储方法及装置
US11249975B2 (en) Data archiving method and system using hybrid storage of data
CN109408507B (zh) 多属性数据的处理方法、装置、设备及可读存储介质
CN109241159A (zh) 一种数据立方体的分区查询方法、系统及终端设备
CN108363684A (zh) 表单创建方法、装置及服务器
CN104423968A (zh) 设计业务逻辑的方法、执行其的服务器和储存媒介
CN114064213A (zh) 基于Kubernets容器环境的快速编排服务方法及系统
CN110209736A (zh) 区块链数据处理的装置、方法及存储介质
CN110457358A (zh) 一种信息采集方法、装置、服务器及计算机可读存储介质
CN101727503A (zh) 一种创建磁盘文件系统的方法
CN111435329A (zh) 一种自动化测试方法和装置
CN115687276B (zh) 一种文件处理方法、装置、电子设备及存储介质
CN116360891A (zh) 一种可视化人工智能建模的算子自定义的方法和系统
CN102571381A (zh) 一种信息存储方法以及信息存储装置
CN110221778A (zh) 酒店数据的处理方法、系统、存储介质以及电子设备
CN109657004A (zh) 一种数据同步方法及装置
CN101526940A (zh) 一种应用系统物理数据库与内存数据库的数据同步方法
CN110825846B (zh) 数据处理方法及装置
CN110019071A (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: 20191112

RJ01 Rejection of invention patent application after publication