数据更新方法、装置以及存储介质与流程

未命名 10-14 阅读:107 评论:0


1.本技术涉及信息技术领域,特别是涉及一种数据更新方法、装置以及存储介质。


背景技术:

2.clickhouse是一种面向列的分布式数据库管理系统,被广泛用于大数据分析和数据仓库应用。然而,clickhouse的设计初衷是为了提供高性能的查询和分析功能,由于其面向列的存储和查询方式,clickhouse目前不能直接更新数据。目前的解决方案主要是通过删除和重新插入数据的方式来实现数据更新,但是这种方式存在着性能和效率上的问题。
3.例如,id为“pk1_1”的保险公司的id为“pk2_1_1”的保险产品进行调整,从而导致保费金额和理赔金额等信息发生变化时,需要对该数据进行更新。为了进行更新,数据库管理系统需要根据主键键值“pk1_1”和“pk2_1_1”在数据列col1中查询相应的数据,之后删除该数据并重新插入新的数据,以及根据主键键值“pk1_1”和“pk2_1_1”在数据列col2中查询相应的数据,之后删除该数据并重新插入新的数据,等等。
4.这种方式存在着以下缺陷:(1)数据更新效率低:由于需要删除和重新插入数据,这种方式的数据更新效率低下,对于大数据量(百亿级以上)的更新操作,时间成本非常高。
5.例如当数据表中的数据包含更多的行和更多的列,并且需要更新的数据量又很大时,按照以上方式进行更新,时间成本会非常高。
6.(2)数据更新不可靠:在数据更新的过程中,如果出现错误或者意外情况,可能会导致数据更新失败,甚至导致数据丢失,从而影响业务运行。
7.(3)数据更新操作复杂:由于需要通过删除和重新插入数据的方式来实现更新,这种方式的数据更新操作相对复杂,需要编写更多的代码和处理逻辑,增加了开发人员的工作量和复杂度。
8.公开号为cn116069791a,名称为一种数据的处理方法和装置、计算机设备。其中,该方法包括:利用分布式处理引擎flink的监测组件cdc监听数据管理平台上发生变更的业务数据,利用所述分布式处理引擎flink的技术栈将所述业务数据清洗后同步至数据库clickhouse,在查询平台中接收对所述数据库clickhouse的数据查询请求,通过flinkcdc可以监测并捕获数据库的所有变动,包括数据或数据表的插入、更新以及删除等,进而完整的将数据同步至数据库clickhouse,可以解决了相关技术中产生的数据不一致的技术问题,进而保证了数据管理平台和数据库clickhouse的数据一致性的技术效果。
9.公开号为cn115794842a,名称为一种数据处理方法、装置、电子设备及介质,涉及计算机技术领域。该方法包括:获取待更新数据,确定所述待更新数据的标识;确定所述待更新数据的标识是否被标记;在所述待更新数据的标识未被标记的情况下,查询clickhouse数据表中是否存在所述待更新数据的标识;在所述clickhouse数据表中不存在所述待更新数据的标识的情况下,标记所述待更新数据的标识,并将所述更新数据插入所述clickhouse数据表中。该方法通过对待更新数据的标识进行两次判断可以保证数据的唯
一性,克服了数据更新、删除时的重复、丢失的技术问题,且该方法操作简单,响应迅速,提高了响应率和效率,适用于数据高并发的情况。
10.针对上述的现有技术中存在的面向列的数据库不能直接更新数据所造成的数据更新效率低、数据更新不可靠以及数据更新操作复杂的技术问题,目前尚未提出有效的解决方案。


技术实现要素:

11.本技术的实施例提供了一种数据更新方法、装置以及存储介质,以至少解决现有技术中存在的面向列的数据库不能直接更新数据所造成的数据更新效率低、数据更新不可靠以及数据更新操作复杂的技术问题。
12.根据本技术实施例的一个方面,提供了一种数据更新方法,包括:在第一数据表中根据第一字段查询与第二字段对应的最新的版本信息,其中第一字段为主键,第二字段用于指示版本信息,第一数据表为面向列的数据库中的数据表;根据第一字段和版本信息在与第一数据表关联的按列存储的数据信息中进行查询,得到查询结果;以及根据查询结果构建第二数据表,其中第二数据表用于存储更新后的数据信息。
13.根据本技术实施例的另一个方面,还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时由处理器执行以上任意一项所述的方法。
14.根据本技术实施例的另一个方面,还提供了一种数据更新装置,包括:第一查询模块,用于在第一数据表中根据第一字段查询与第二字段对应的最新的版本信息,其中第一字段为主键,第二字段用于指示版本信息,第一数据表为面向列的数据库中的数据表;第二查询模块,用于根据第一字段和版本信息在与第一数据表关联的按列存储的数据信息中进行查询,得到查询结果;以及第一构建模块,用于根据查询结果构建第二数据表,其中第二数据表用于存储更新后的数据信息。
15.根据本技术实施例的另一个方面,还提供了一种数据更新装置,包括:处理器;以及存储器,与处理器连接,用于为处理器提供处理以下处理步骤的指令:在第一数据表中根据第一字段查询与第二字段对应的最新的版本信息,其中第一字段为主键,第二字段用于指示版本信息,第一数据表为面向列的数据库中的数据表;根据第一字段和版本信息在与第一数据表关联的按列存储的数据信息中进行查询,得到查询结果;以及根据查询结果构建第二数据表,其中第二数据表用于存储更新后的数据信息。
16.在本技术实施例中,数据库中建立数据底表,数据触发器根据主键“pk1”和“pk2”将更新的版本信息按列存储至数据底表中字段“ver”下的旧数据之后,之后将字段“pk1”、“pk2”和“ver”作为主键将更新的保费金额、理赔金额以及与该保险产品对应的说明按列分别存储至数据底表中字段“col1”、“col2”和“col3”下的旧数据之后。从而本技术方案中的数据触发器在数据底表中将更新的数据直接按列存储于未更新的旧数据之后,之后根据主键“pk1”、“pk2”和“ver”将更新的数据按列存储至数据聚合表中,在数据聚合表中对数据信息进行查询分析。从而本技术方案并不需要在数据底表中对未更新的旧数据进行删除后,再插入更新的新数据,从而保证了数据的更新速度和更新效率,减少了开发人员的工作量,使得数据更新操作更加简单。当在数据更新过程中,数据更新失败后,可以根据旧数据进行再次更新,避免发生数据丢失的情况,从而提高数据更新的可靠性。并且本技术方案有利于
用户对数据进行分析。例如,用户需要对各个保险公司各个保险产品的保费金额进行统计时,只需要对数据列“col1”中的数据进行查询分析即可。而不必在普通的数据库中那样需要逐行读取数据并在每行数据中提取与字段“col1”对应的数据值。进而解决了现有技术中存在的面向列的数据库不能直接更新数据所造成的数据更新效率低、数据更新不可靠以及数据更新操作复杂的技术问题。
附图说明
17.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:图1是用于实现根据本技术实施例1所述的方法的计算设备的硬件结构框图;图2是根据本技术实施例1所述的数据更新的系统的示意图;图3是根据本技术实施例1的第一个方面所述的数据更新方法的流程示意图;图4是根据本技术实施例1的第一个方面所述的数据更新方法的另一个流程示意图;图5是根据本技术实施例2所述的数据更新装置的示意图;以及图6是根据本技术实施例3所述的数据更新装置的示意图。
具体实施方式
18.为了使本技术领域的人员更好地理解本技术的技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。
19.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
20.根据本实施例,提供了一种数据更新方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
21.本实施例所提供的方法实施例可以在移动终端、计算机终端、服务器或者类似的计算设备中执行。图1示出了一种用于实现数据更新方法的计算设备的硬件结构框图。如图1所示,计算设备可以包括一个或多个处理器(处理器可以包括但不限于微处理器mcu或可
编程逻辑器件fpga等的处理装置)、用于存储数据的存储器、以及用于通信功能的传输装置。除此以外,还可以包括:显示器、输入/输出接口(i/o接口)、通用串行总线(usb)端口(可以作为i/o接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算设备还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
22.应当注意到的是上述一个或多个处理器和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算设备中的其他元件中的任意一个内。如本技术实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
23.存储器可用于存储应用软件的软件程序以及模块,如本技术实施例中的数据更新方法对应的程序指令/数据存储装置,处理器通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用程序的数据更新方法。存储器可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至计算设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
24.传输装置用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算设备的通信供应商提供的无线网络。在一个实例中,传输装置包括一个网络适配器(network interface controller,nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置可以为射频(radio frequency,rf)模块,其用于通过无线方式与互联网进行通讯。
25.显示器可以例如触摸屏式的液晶显示器(lcd),该液晶显示器可使得用户能够与计算设备的用户界面进行交互。
26.此处需要说明的是,在一些可选实施例中,上述图1所示的计算设备可以包括硬件元件(包括电路)、软件元件(包括存储在计算机可读介质上的计算机代码)、或硬件元件和软件元件两者的结合。应当指出的是,图1仅为特定具体实例的一个实例,并且旨在示出可存在于上述计算设备中的部件的类型。
27.图2是根据本实施例所述的数据更新的系统的示意图。参照图2所示,该系统包括:终端设备100以及数据库200。其中终端设备100与数据库200进行通信连接,从而用户通过终端设备100向数据库200发送查询请求,数据库200根据查询请求向终端设备100返回数据信息。其中数据库200为面向列的数据库,例如可以为clickhouse。
28.需要说明的是,系统中的终端设备100以及数据库200均可适用上面所述的硬件结构。
29.在上述运行环境下,根据本实施例的第一个方面,提供了一种数据更新方法,该方法由图2中所示的数据库实现。图3示出了该方法的流程示意图,参考图3所示,该方法包括:s302:在第一数据表中根据第一字段查询与第二字段对应的最新的版本信息,其中第一字段为主键,第二字段用于指示版本信息,第一数据表为面向列的数据库中的数据表;
s304:根据第一字段和版本信息在与第一数据表关联的按列存储的数据信息中进行查询,得到查询结果;以及s306:根据查询结果构建第二数据表,其中第二数据表用于存储更新后的数据信息。
30.具体地,表1示出了数据底表中存储的更新后的数据信息。参考表1所示,面向列的数据库中存储有数据底表(即,第一数据表)。其中数据底表的字段的字段类型如下:字段“pk1”为字符类型,字段“pk2”为uint64,字段“ver”为datetime64类型,“col1”为int32类型,“col2”为int32类型,“col3”为字符类型。具体地,例如字段“pk1”可以为保险公司的名称或id,“pk2”可以是保险公司中某个产品的标识id,“col1”可以是与该保险产品对应的保费金额,“col2”可以是与该保险产品对应的理赔金额,“col3”可以是与该保险产品对应的说明。从而,该表如下所示:
31.字段“ver”用于指示各个数据的版本信息。以id为“pk1_1”的保险公司的id为“pk2_1_1”的保险产品为例,可能初始的版本的版本信息是ver_1。当该保险公司对该产品进行调整时,从而更新后的数据信息的版本信息例如为ver_m。其中ver_m是id为“pk1_1”的保险公司的id为“pk2_1_1”的保险产品的最新更新后的版本信息。
32.或者,也可以将数据更新时的时间信息(年月日,时分秒)作为版本信息,从而通过时间信息表征数据的版本。
33.例如,参考图4所示,保险公司对生成保费金额和理赔金额等信息的基数进行调整时,保险代理公司的工作人员根据更新的基数,对数据底表(即,第一数据表)中的保费金额
和理赔金额等信息进行相应调整。例如,在数据底表(即,第一数据表)中,存储有id为“pk1_1”的保险公司的id为“pk2_1_1”的保险产品的版本信息、保费金额和理赔金额等数据信息,保险代理公司的工作人员对数据底表(即,第一数据表)中的数据信息进行更新。并且依照上述的对id为“pk1_1”的保险公司的id为“pk2_1_1”的保险产品的数据信息进行更新的方法,对其他保险公司的保险产品的数据信息进行更新,从而得到表1中的数据信息。其中对数据底表中的数据信息进行更新的方法,将在后文中进行说明。
34.进一步地,数据库200的数据触发器根据第一字段(即,“pk1”和“pk2”)的“pk1_1”和“pk2_1_1”在数据底表(即,第一数据表)的字段为“ver”(即,第二字段)的数据列中进行查询,从而得到所有的与第一字段“pk1_1”和“pk2_1_1”对应的版本信息,例如为“ver_1”、“ver_2”以及“ver_m”。其中“pk1_1”和“pk2_1_1”的组合字段为数据底表中的主键。之后数据触发器在所有的版本信息中,确定最新的版本信息,即“ver_m”。
35.从而在数据底表(即,第一数据表)中,当所有保险公司的所有保险产品的基数都进行统一调整时,需要将数据底表(即,第一数据表)中的数据信息进行更新,因此数据触发器根据上述的确定最新的版本信息的方法,确定与第一字段(即,“pk1”和“pk2”)对应的所有的最新的版本信息。
36.进一步地,数据触发器得到最新的版本信息后,与字段“pk1”和“pk2”对应的数据信息按列存储至数据聚合表(即,第二数据表)中,并将与第一字段(即,“pk1”和“pk2”)对应的所有的最新的版本信息,按列存储至数据聚合表(即,第二数据表)中,得到与字段ver对应的一列数据信息。
37.进一步地,数据触发器将组合字段“pk1”、“pk2”和“ver”作为主键,在数据底表(即,第一数据表)中进行查询,按列分别得到与字段“col1”、“col2”和“col3”对应的最新的数据信息。其中组合字段中的“ver”为最新的版本信息。
38.进一步地,数据触发器根据主键“pk1”、“pk2”和“ver”,将与字段“col1”、“col2”和“col3”对应的最新的数据信息分别按列存储至数据聚合表(即,第二数据表)中。
39.从而数据触发器将查询到的与字段“pk1”、“pk2”、“ver”、“col1”、“col2”和“col3”对应的数据信息按列存储至数据聚合表(即,第二数据表)中。从而数据聚合表(即,第二数据表)中存储了更新后的最新的数据信息。从而使用户通过终端设备100在数据聚合表(即,第二数据表)中进行查询和统计。
40.正如背景技术中所述的,例如,id为“pk1_1”的保险公司的id为“pk2_1_1”的保险产品进行调整,从而导致保费金额和理赔金额等信息发生变化时,需要对该数据进行更新。为了进行更新,数据库管理系统需要根据主键键值“pk1_1”和“pk2_1_1”在数据列col1中查询相应的数据,之后删除该数据并重新插入新的数据,以及根据主键键值“pk1_1”和“pk2_1_1”在数据列col2中查询相应的数据,之后删除该数据并重新插入新的数据,等等。这种方式存在着以下缺陷:(1)数据更新效率低:由于需要删除和重新插入数据,这种方式的数据更新效率低下,对于大数据量(百亿级以上)的更新操作,时间成本非常高。例如当数据表中的数据包含更多的行和更多的列,并且需要更新的数据量又很大时,按照以上方式进行更新,时间成本会非常高。(2)数据更新不可靠:在数据更新的过程中,如果出现错误或者意外情况,可能会导致数据更新失败,甚至导致数据丢失,从而影响业务运行。(3)数据更新操作复杂:由于需要通过删除和重新插入数据的方式来实现更新,这种方式的数据更新操作相
对复杂,需要编写更多的代码和处理逻辑,增加了开发人员的工作量和复杂度。
41.针对以上所述的技术问题,通过本技术实施例的技术方案,数据库中建立数据底表,数据触发器根据主键“pk1”和“pk2”将更新的版本信息按列存储至数据底表中字段“ver”下的旧数据之后,之后将字段“pk1”、“pk2”和“ver”作为主键将更新的保费金额、理赔金额以及与该保险产品对应的说明按列分别存储至数据底表中字段“col1”、“col2”和“col3”下的旧数据之后。从而本技术方案中的数据触发器在数据底表中将更新的数据直接按列存储于未更新的旧数据之后,之后根据主键“pk1”、“pk2”和“ver”将更新的数据按列存储至数据聚合表中,在数据聚合表中对数据信息进行查询分析。从而本技术方案并不需要在数据底表中对未更新的旧数据进行删除后,再插入更新的新数据,从而保证了数据的更新速度和更新效率,减少了开发人员的工作量,使得数据更新操作更加简单。当在数据更新过程中,数据更新失败后,可以根据旧数据进行再次更新,避免发生数据丢失的情况,从而提高数据更新的可靠性。并且本技术方案有利于用户对数据进行分析。例如,用户需要对各个保险公司各个保险产品的保费金额进行统计时,只需要对数据列“col1”中的数据进行查询分析即可。而不必在普通的数据库中那样需要逐行读取数据并在每行数据中提取与字段“col1”对应的数据值。进而解决了现有技术中存在的面向列的数据库不能直接更新数据所造成的数据更新效率低、数据更新不可靠以及数据更新操作复杂的技术问题。
42.可选地,在第一数据表中根据第一字段查询与第二字段对应的最新的版本信息之前,方法还包括:在第一数据表中,根据第一字段添加与第二字段对应的数据信息;以及根据第一字段和第二字段添加与剩余字段对应的数据信息。
43.具体地,当数据底表(即,第一数据表)中未添加数据信息时,数据触发器先在字段“pk1”和“pk2”下添加相应的数据信息。
44.例如数据列pk1为:
45.例如数据列pk2为:
46.之后数据触发器以字段“pk1”和“pk2”为主键,根据字段“pk1”和“pk2”在字段“ver”下添加相应的最新的版本信息。
47.例如数据列ver为:
48.之后数据触发器以字段“pk1”“pk2”和“ver”为主键,根据字段“pk1”“pk2”和“ver”分别在字段“col1”、“col2”和“col3”下按列添加相应的数据信息。
49.例如数据列col1为:
50.例如数据列col2为:
51.例如数据列col3为:
52.从而,数据底表(即,第一数据表)添加数据信息后如表2所示。
[0053][0054]
参考表2所示,例如,与id为“pk1_1”(即,字段“pk1”)的保险公司的id为“pk2_1_1”(即,字段“pk2”)的保险产品对应的版本信息(即,字段“ver”)为“ver_1”,保费金额(即,字段“col1”)为“col1_1”,理赔金额(即,字段“col2”)为“col2_1”,说明(即,字段“col3”)为“col3_1”。
[0055]
此外,当数据触发器在表2(即,数据底表)中进行数据更新时,采用添加数据的方式(而不是删除和插入的方式)在数据底表中存储更新的数据,从而得到更新后的数据底表(即,表1)。
[0056]
例如,在数据底表(即,第一数据表)中,数据触发器在字段“pk1”下添加数据信息“pk1_1”、“pk1_1”...,根据字段“pk1”在字段“pk2”下添加数据信息“pk2_1_1”、“pk2_1_2”...。
[0057]
之后数据触发器根据主键“pk1”和“pk2”,在对应的字段“ver”下添加最新的版本信息,例如“ver_m”、“ver_m+1”...。
[0058]
进一步地,数据触发器根据主键“pk1”、“pk2”和“ver”,按列分别在对应的字段“col1”、“col2”和“col3”下添加最新的数据信息,例如分别为“col1_m”、“col1_m+1”...,“col2_m”、“col2_m+1”...,“col3_m”、“col3_m+1”...,从而数据触发器完成对数据底表的更新操作。
[0059]
从而本技术方案以添加数据的方式,对数据底表的数据进行更新,更新的数据中
具有相应的版本信息。从而通过这种方式,当数据更新时,只需要对各个数据列增加数据即可,不需要再进行删除和插入的操作,从而减少了时间成本。
[0060]
可选地,方法还包括:在第二数据表中,根据第三字段查询数据信息,其中第三字段对应于第一数据表中的第一字段。
[0061]
具体地,表3示出了数据聚合表(即,第二数据表)的数据信息。其中表3如下表所示:
[0062]
例如用户通过终端设备100向数据库200发送用于查询id为“pk1_1”的保险公司的id为“pk2_1_1”的保险产品的数据信息的查询请求,数据库的数据触发器根据该查询请求在数据聚合表中根据组合字段“pk1”和“pk2”(即,第三字段)进行查询,从而得到id为“pk1_1”的保险公司的id为“pk2_1_1”的保险产品的数据信息。例如,查询结果如表4所示:
[0063]
或者,例如用户通过终端设备100向数据库200发送用于查询所有的保险公司所有保险产品的保费金额(即,字段“col1”)的查询请求,数据库的数据触发器根据该查询请求在数据聚合表中进行查询,从而得到所有的保险公司所有保险产品的保费金额。查询结果如表5所示:
[0064]
此外,在数据触发器将更新后的数据信息存储至数据聚合表时,还可以通过聚合函数对更新后的数据信息进行聚合运算,并将聚合运算后的数据信息存储至数据聚合表中。从而在分析统计更新后的数据时,无需对数据进行实时分析,直接在数据聚合表中进行查询即可,从而提高了查询和数据分析效率。
[0065]
从而,本技术方案将更新后的数据信息存储到专门用于存储更新后的数据信息的数据聚合表中,从而使得用户在查询数据时,数据触发器在数据量较少的数据聚合表中进行查询,从而保证了查询速度。
[0066]
可选地,方法还包括:获取第二数据表中的字段和数据信息;根据第二数据表中的字段和数据信息构建第三数据表,其中第三数据表为分布式数据表。
[0067]
具体地,在第二数据表构建完成之后,数据触发器获取第二数据表的字段、数据表结构以及数据信息,并根据获取到的字段、数据表结构以及数据信息构建分布式数据表(即,第三数据表)。其中分布式数据表用于用户进行远程访问。
[0068]
从而,本技术方案将面向列的数据库中的数据表中的数据信息复制到分布式数据表,从而当用户需要远程查询数据时,可以在分布式数据表中进行操作,从而避免只能在本地访问数据库,使得数据查询更便捷。
[0069]
此外,参考图4所示,数据触发器更新数据底表并根据更新的数据信息生成数据聚合表的具体步骤如下:s1:保险公司对生成保费金额和理赔金额等信息的基数进行调整,保险代理公司的工作人员通过终端设备100接收更新的基数,并将更新的基数发送至数据库200的数据触发器。
[0070]
s2:参考表1所示,在数据底表中,数据触发器在字段“pk1”下添加数据信息“pk1_1”、“pk1_1”...,根据字段“pk1”在字段“pk2”下添加数据信息“pk2_1_1”、“pk2_1_2”...。
[0071]
s3:参考表1所示,在数据底表中,数据触发器根据主键“pk1”和“pk2”,在对应的字
段“ver”下添加更新的版本信息,例如“ver_m”、“ver_m+1”...。
[0072]
s4:参考表1所示,在数据底表中,数据触发器根据主键“pk1”、“pk2”和“ver”,按列分别在对应的字段“col1”、“col2”和“col3”下添加更新的数据信息。其中在字段“col1”、“col2”和“col3”下更新的数据信息是根据已更新的基数进行调整的。
[0073]
例如分别为“col1_m”、“col1_m+1”...,“col2_m”、“col2_m+1”...,“col3_m”、“col3_m+1”...,从而数据触发器完成对数据底表的更新操作。
[0074]
s5:数据触发器根据第一字段(即,“pk1”和“pk2”)的“pk1_1”和“pk2_1_1”在数据底表(即,第一数据表)的字段为“ver”(即,第二字段)的数据列中进行查询,从而得到所有的与第一字段“pk1_1”和“pk2_1_1”对应的版本信息,例如为“ver_1”、“ver_2”以及“ver_m”。之后数据触发器在所有的版本信息中,确定最新的版本信息,即“ver_m”。
[0075]
从而在数据底表(即,第一数据表)中,当所有保险公司的所有保险产品的基数都进行统一调整时,需要将数据底表(即,第一数据表)中的数据信息进行更新,因此数据触发器根据上述的确定最新的版本信息的方法,确定与第一字段(即,“pk1”和“pk2”)对应的所有的最新的版本信息。
[0076]
s6:数据触发器得到最新的版本信息后,与字段“pk1”和“pk2”对应的数据信息按列存储至数据聚合表(即,第二数据表)中,并将与第一字段(即,“pk1”和“pk2”)对应的所有的最新的版本信息,按列存储至数据聚合表(即,第二数据表)中,得到与字段ver对应的一列数据信息。
[0077]
s7:数据触发器将组合字段“pk1”、“pk2”和“ver”作为主键,在数据底表(即,第一数据表)中进行查询,按列分别得到与字段“col1”、“col2”和“col3”对应的最新的数据信息。其中组合字段中的“ver”为最新的版本信息。
[0078]
s8:数据触发器根据主键“pk1”、“pk2”和“ver”,将与字段“col1”、“col2”和“col3”对应的最新的数据信息分别按列存储至数据聚合表(即,第二数据表)中。
[0079]
此外,参考图1所示,根据本实施例的第二个方面,提供了一种存储介质。所述存储介质包括存储的程序,其中,在所述程序运行时由处理器执行以上任意一项所述的方法。
[0080]
从而根据本实施例,数据库中建立数据底表,数据触发器根据主键“pk1”和“pk2”将更新的版本信息按列存储至数据底表中字段“ver”下的旧数据之后,之后将字段“pk1”、“pk2”和“ver”作为主键将更新的保费金额、理赔金额以及与该保险产品对应的说明按列分别存储至数据底表中字段“col1”、“col2”和“col3”下的旧数据之后。从而本技术方案中的数据触发器在数据底表中将更新的数据直接按列存储于未更新的旧数据之后,之后根据主键“pk1”、“pk2”和“ver”将更新的数据按列存储至数据聚合表中,在数据聚合表中对数据信息进行查询分析。从而本技术方案并不需要在数据底表中对未更新的旧数据进行删除后,再插入更新的新数据,从而保证了数据的更新速度和更新效率,减少了开发人员的工作量,使得数据更新操作更加简单。当在数据更新过程中,数据更新失败后,可以根据旧数据进行再次更新,避免发生数据丢失的情况,从而提高数据更新的可靠性。并且本技术方案有利于用户对数据进行分析。例如,用户需要对各个保险公司各个保险产品的保费金额进行统计时,只需要对数据列“col1”中的数据进行查询分析即可。而不必在普通的数据库中那样需要逐行读取数据并在每行数据中提取与字段“col1”对应的数据值。进而解决了现有技术中存在的面向列的数据库不能直接更新数据所造成的数据更新效率低、数据更新不可靠以及
数据更新操作复杂的技术问题。
[0081]
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
[0082]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
[0083]
图5示出了根据本实施例所述的数据更新装置500,该装置500与根据实施例1的第一个方面所述的方法相对应。参考图5所示,该装置500包括:第一查询模块510,用于在第一数据表中根据第一字段查询与第二字段对应的最新的版本信息,其中第一字段为主键,第二字段用于指示版本信息,第一数据表为面向列的数据库中的数据表;第二查询模块520,用于根据第一字段和版本信息在与第一数据表关联的按列存储的数据信息中进行查询,得到查询结果;以及第一构建模块530,用于根据查询结果构建第二数据表,其中第二数据表用于存储更新后的数据信息。
[0084]
可选地,装置500还包括:第一信息添加模块,用于在第一数据表中,根据第一字段添加与第二字段对应的数据信息;以及第二信息添加模块,用于根据第一字段和第二字段添加与剩余字段对应的数据信息。
[0085]
可选地,装置500还包括:第三查询模块,用于在第二数据表中,根据第三字段查询数据信息,其中第三字段对应于第一数据表中的第一字段。
[0086]
可选地,装置500还包括:信息获取模块,用于获取第二数据表中的字段和数据信息;第二构建模块,用于根据第二数据表中的字段和数据信息构建第三数据表,其中第三数据表为分布式数据表。
[0087]
从而根据本实施例,数据库中建立数据底表,数据触发器根据主键“pk1”和“pk2”将更新的版本信息按列存储至数据底表中字段“ver”下的旧数据之后,之后将字段“pk1”、“pk2”和“ver”作为主键将更新的保费金额、理赔金额以及与该保险产品对应的说明按列分别存储至数据底表中字段“col1”、“col2”和“col3”下的旧数据之后。从而本技术方案中的数据触发器在数据底表中将更新的数据直接按列存储于未更新的旧数据之后,之后根据主键“pk1”、“pk2”和“ver”将更新的数据按列存储至数据聚合表中,在数据聚合表中对数据信息进行查询分析。从而本技术方案并不需要在数据底表中对未更新的旧数据进行删除后,再插入更新的新数据,从而保证了数据的更新速度和更新效率,减少了开发人员的工作量,使得数据更新操作更加简单。当在数据更新过程中,数据更新失败后,可以根据旧数据进行再次更新,避免发生数据丢失的情况,从而提高数据更新的可靠性。并且本技术方案有利于
用户对数据进行分析。例如,用户需要对各个保险公司各个保险产品的保费金额进行统计时,只需要对数据列“col1”中的数据进行查询分析即可。而不必在普通的数据库中那样需要逐行读取数据并在每行数据中提取与字段“col1”对应的数据值。进而解决了现有技术中存在的面向列的数据库不能直接更新数据所造成的数据更新效率低、数据更新不可靠以及数据更新操作复杂的技术问题。
实施例3
[0088]
图6示出了根据本实施例的第一个方面所述的数据更新装置600,该装置600与根据实施例1的第一个方面所述的方法相对应。参考图6所示,该装置600包括:处理器610;以及存储器620,与处理器610连接,用于为处理器610提供处理以下处理步骤的指令:在第一数据表中根据第一字段查询与第二字段对应的最新的版本信息,其中第一字段为主键,第二字段用于指示版本信息,第一数据表为面向列的数据库中的数据表;根据第一字段和版本信息在与第一数据表关联的按列存储的数据信息中进行查询,得到查询结果;以及根据查询结果构建第二数据表,其中第二数据表用于存储更新后的数据信息。
[0089]
可选地,在第一数据表中根据第一字段查询与第二字段对应的最新的版本信息之前,还包括:在第一数据表中,根据第一字段添加与第二字段对应的数据信息;以及根据第一字段和第二字段添加与剩余字段对应的数据信息。
[0090]
可选地,装置600还包括:在第二数据表中,根据第三字段查询数据信息,其中第三字段对应于第一数据表中的第一字段。
[0091]
可选地,装置600还包括:获取第二数据表中的字段和数据信息;根据第二数据表中的字段和数据信息构建第三数据表,其中第三数据表为分布式数据表。
[0092]
从而根据本实施例,数据库中建立数据底表,数据触发器根据主键“pk1”和“pk2”将更新的版本信息按列存储至数据底表中字段“ver”下的旧数据之后,之后将字段“pk1”、“pk2”和“ver”作为主键将更新的保费金额、理赔金额以及与该保险产品对应的说明按列分别存储至数据底表中字段“col1”、“col2”和“col3”下的旧数据之后。从而本技术方案中的数据触发器在数据底表中将更新的数据直接按列存储于未更新的旧数据之后,之后根据主键“pk1”、“pk2”和“ver”将更新的数据按列存储至数据聚合表中,在数据聚合表中对数据信息进行查询分析。从而本技术方案并不需要在数据底表中对未更新的旧数据进行删除后,再插入更新的新数据,从而保证了数据的更新速度和更新效率,减少了开发人员的工作量,使得数据更新操作更加简单。当在数据更新过程中,数据更新失败后,可以根据旧数据进行再次更新,避免发生数据丢失的情况,从而提高数据更新的可靠性。并且本技术方案有利于用户对数据进行分析。例如,用户需要对各个保险公司各个保险产品的保费金额进行统计时,只需要对数据列“col1”中的数据进行查询分析即可。而不必在普通的数据库中那样需要逐行读取数据并在每行数据中提取与字段“col1”对应的数据值。进而解决了现有技术中存在的面向列的数据库不能直接更新数据所造成的数据更新效率低、数据更新不可靠以及数据更新操作复杂的技术问题。
[0093]
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0094]
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0095]
在本技术所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
[0096]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0097]
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0098]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0099]
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

技术特征:
1.一种数据更新方法,其特征在于,包括:在第一数据表中根据第一字段查询与第二字段对应的最新的版本信息,其中所述第一字段为主键,所述第二字段用于指示版本信息,所述第一数据表为面向列的数据库中的数据表;根据所述第一字段和所述版本信息在与所述第一数据表关联的按列存储的数据信息中进行查询,得到查询结果;以及根据所述查询结果构建第二数据表,其中所述第二数据表用于存储更新后的数据信息。2. 根据权利要求1所述的方法,其特征在于,在第一数据表中根据第一字段查询与第二字段对应的最新的版本信息之前,还包括:在所述第一数据表中,根据所述第一字段添加与所述第二字段对应的数据信息;以及根据所述第一字段和所述第二字段添加与剩余字段对应的数据信息。3.根据权利要求1所述的方法,其特征在于,还包括:在所述第二数据表中,根据第三字段查询数据信息,其中所述第三字段对应于所述第一数据表中的第一字段。4. 根据权利要求3所述的方法,其特征在于,还包括:获取所述第二数据表中的字段和数据信息;以及根据所述第二数据表中的字段和数据信息构建第三数据表,其中所述第三数据表为分布式数据表。5.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时由处理器执行权利要求1至4中任意一项所述的方法。6.一种数据更新装置,其特征在于,包括:第一查询模块,用于在第一数据表中根据第一字段查询与第二字段对应的最新的版本信息,其中所述第一字段为主键,所述第二字段用于指示版本信息,所述第一数据表为面向列的数据库中的数据表;第二查询模块,用于根据所述第一字段和所述版本信息在与所述第一数据表关联的按列存储的数据信息中进行查询,得到查询结果;以及第一构建模块,用于根据所述查询结果构建第二数据表,其中所述第二数据表用于存储更新后的数据信息。7. 根据权利要求6所述的装置,其特征在于,在第一数据表中根据第一字段查询与第二字段对应的最新的版本信息之前,还包括:第一信息添加模块,用于在所述第一数据表中,根据所述第一字段添加与所述第二字段对应的数据信息;以及第二信息添加模块,用于根据所述第一字段和所述第二字段添加与剩余字段对应的数据信息。8.根据权利要求6所述的装置,其特征在于,还包括:第三查询模块,用于在所述第二数据表中,根据第三字段查询数据信息,其中所述第三字段对应于所述第一数据表中的第一字段。9. 根据权利要求8所述的装置,其特征在于,还包括:信息获取模块,用于获取所述第二数据表中的字段和数据信息;以及
第二构建模块,用于根据所述第二数据表中的字段和数据信息构建第三数据表,其中所述第三数据表为分布式数据表。10. 一种数据更新装置,其特征在于,包括:处理器;以及存储器,与所述处理器连接,用于为所述处理器提供处理以下处理步骤的指令:在第一数据表中根据第一字段查询与第二字段对应的最新的版本信息,其中所述第一字段为主键,所述第二字段用于指示版本信息,所述第一数据表为面向列的数据库中的数据表;根据所述第一字段和所述版本信息在与所述第一数据表关联的按列存储的数据信息中进行查询,得到查询结果;以及根据所述查询结果构建第二数据表,其中所述第二数据表用于存储更新后的数据信息。

技术总结
本申请公开了一种数据更新方法、装置以及存储介质。涉及信息技术领域。其中,一种数据更新方法,包括:在第一数据表中根据第一字段查询与第二字段对应的最新的版本信息,其中第一字段为主键,第二字段用于指示版本信息,第一数据表为面向列的数据库中的数据表;根据第一字段和版本信息在与第一数据表关联的按列存储的数据信息中进行查询,得到查询结果;以及根据查询结果构建第二数据表,其中第二数据表用于存储更新后的数据信息。解决了现有技术中存在的面向列的数据库不能直接更新数据所造成的数据更新效率低、数据更新不可靠以及数据更新操作复杂的技术问题。更新操作复杂的技术问题。更新操作复杂的技术问题。


技术研发人员:刘阳
受保护的技术使用者:北京车与车科技有限公司
技术研发日:2023.09.01
技术公布日:2023/10/8
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐