一种数据表更新方法及装置与流程

文档序号:12733829阅读:213来源:国知局
一种数据表更新方法及装置与流程
本申请涉及计算机
技术领域
,尤其涉及一种数据表更新方法及装置。
背景技术
:随着计算机和互联网技术的发展,生产生活中的各个角落都可以已“数据”的形式表示,并且随着大数据时代来临,每时每刻产生的数据量呈几何增长,所以对计算机计算能力的要求只增不减,所谓分布式计算可以实现把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,分配给许多计算机进行处理,最后把各自计算结果综合起来得到最终的结果。分布式计算平台通常利用数据表实现较为便利地管理数据,如下表1所示的用户信息数据表,其中包含一些基础概念,账号姓名性别生日年龄等级……0001张三男1990/3/19269……0002李四女1992/11/42310……0003王五男1991/7/22245……0004赵六女1992/6/30247…………………………………………表1数据表中每一行称为一个记录,每个记录包含这一行中的所有数据;数据表中包含若干字段,每个字段可以表示某个属性,比如“姓名”、“性别”、“生日”、“年龄”、“等级”均是字段,并且对应若干字段值;主键(primarykey,又称主关键词)是表中的一个或多个字段,对应的键值用于唯一标识表中的记录,比如“账户”就可以作为主键,且在数据表中唯一,键值“0001”标识了表中“张三”、“男”、“1990/3/19”、“26”、“9”等这条记录。在一些情况下,需要对数据表中字段值进行更新,比如“年龄”、“等级(账号等级)”,随着日期变化和等级提升或降低,就需要对字段对应的字段值进行更新。现有技术对数据表中字段值进行更新时,通常对全部字段进行更新,也就是如图1所示,对数据表中的需要更新的每条记录中的全部字段值重新确定(或计算),以前文介绍“用户信息”为例,当需要对“年龄”字段值进行更新时,按照现有技术的做法,会将所有字段值据全部重新确定(获取账号、姓名、性别、计算年龄等)。如果仅需要对数据表中的部分字段进行更新,也只能按照现有技术的方式进行,这显然浪费了计算资源。所以目前在分布式计算平台中,存在如果仅需对数据表中的部分字段值进行更新,则会由于只能对数据表中的全部字段值重新确定,而导致计算资源浪费的问题。技术实现要素:本申请实施例提供一种数据表更新方法,在仅需对数据表中的部分字段值进行更新时,节约计算资源,减少浪费。本申请实施例提供一种数据表更新装置,在仅需对数据表中的部分字段值进行更新时,节约计算资源,减少浪费。本申请实施例采用下述技术方案:一种数据表更新方法,包括:确定原始数据表中需要更新的字段值,并对所述字段值进行更新;从所述原始数据表中获取与所述字段值对应的记录,并根据更新后的字段值对所述记录进行更新,生成临时数据表;根据所述临时数据表,对所述原始数据表进行更新。优选地,确定原始数据表中需要更新的字段值,并对所述字段值进行更新,包括:根据原始数据表中需要更新的字段、以及主键对应的键值,确定需要更新的字段值;根据所述字段对应字段值的确定方法,对所述键值与所述字段对应的字段值进行更新。优选地,从所述原始数据表中获取与所述字段值对应的记录,包括:根据所述键值,从所述原始数据表中获取对应的记录。优选地,从所述原始数据表中获取与所述字段值对应的记录,并根据更新后的字段值对所述记录进行更新,生成临时数据表,包括:从所述原始数据表中获取与所述字段值对应的记录、以及对应的分区值;根据更新后的字段值对所述记录进行更新,生成包含分区值的临时数据表。优选地,从所述原始数据表中获取与所述字段值对应的记录,包括:从所述原始数据表中获取与所述字段值对应的、且不包含所述字段值的记录。优选地,确定原始数据表中需要更新的字段,包括:确定原始数据表中需要添加的字段。一种数据表更新装置,包括:第一更新单元、临时数据表生成单元以及第二更新单元,其中,所述第一更新单元,确定原始数据表中需要更新的字段值,并对所述字段值进行更新;所述临时数据表生成单元,从所述原始数据表中获取与所述字段值对应的记录,并根据更新后的字段值对所述记录进行更新,生成临时数据表;所述第二更新单元,根据所述临时数据表,对所述原始数据表进行更新。优选地,第一更新单元,根据原始数据表中需要更新的字段、以及主键对应的键值,确定需要更新的字段值;根据所述字段对应字段值的确定方法,对所述键值与所述字段对应的字段值进行更新。优选地,所述临时数据表生成单元,根据所述键值,从所述原始数据表中获取对应的记录。优选地,所述临时数据表生成单元,从所述原始数据表中获取与所述字段值对应的记录、以及对应的分区值;根据更新后的字段值对所述记录进行更新,生成包含分区值的临时数据表。优选地,所述临时数据表生成单元,从所述原始数据表中获取与所述字段值对应的、且不包含所述字段值的记录。优选地,所述第一更新单元,确定原始数据表中需要添加的字段。本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:当需要对数据表中的部分字段值进行更新时,在原始数据表中确定出需要更新的字段值,并对字段值进行更新,从原始数据表中获取与需要更新的字段值对应的记录,并根据更新后的字段值对该记录进行更新,生成临时数据表,通过临时数据表对原始数据表中对应的部分进行更新。相比于现有技术只能将所有记录更新并覆盖,本申请实施例仅对需要更新的部分进行更新,并生成只包含更新字段值的记录的临时数据表,再去覆盖原始数据表,节约了计算资源,减少了对计算资源的浪费。附图说明此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1为现有技术提供的数据表更新方法的示意图图2为本申请实施例1提供的数据表更新方法的流程示意图;图3为本申请实施例1提供的数据表更新方法的示意图;图4为本申请实施例2提供的数据表更新装置的结构图。具体实施方式为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。以下结合附图,详细说明本申请各实施例提供的技术方案。实施例1如前所述,现有技术在分布式计算平台中对数据表中字段值进行更新时,通常会对全部字段进行更新,如Hadoop(一个能够对大量数据进行分布式处理的软件框架),以及ODPS(大数据计算服务,一种快速、完全托管的TB/PB级数据仓库解决方案),均可以用于支撑分布式计算平台,其中,只有insertoverwrite语句,可以用于覆盖已经存在的记录。比如需要对表1进行更新,那么就会根据需要更新的主键“账号”对应的每个键值,分别确定每条记录中的每个字段值并覆盖原始数据表,例如获取用户在账号中填写的“姓名”、“性别”、“生日”、并且确定“年龄”、以及“等级”。但是如果仅需要对部分字段值进行更新,也只能全部更新,比如,出于业务需求,仅需要对账号“0003”和“0004”中“年龄”字段进行更新,也只能按照现有技术将账号“0003”和“0004”中的全部字段值进行更新,由于在实际应用中数据量往往非常庞大,所以就会造成严重浪费计算资源。所以基于此缺陷,本申请提供了一种数据表更新方法,在仅需对数据表中的部分字段值进行更新时,节约计算资源,减少浪费。该方法的流程示意图如图2和图3所示,包括下述步骤:步骤11:确定原始数据表中需要更新的字段值,并对该字段值进行更新。前文已经介绍,数据表中包含若干字段,并且每个字段下均包含字段值,当字段值出于业务需求需要更新时,就需要先确定出需要更新的字段值。确定的操作可以是业务人员触发,也可以是通过预设事件触发;比如业务人员可以每周日触发一次更新账号等级的操作,那么在每周日业务人员触发后,就可以确定出原始数据表中需要更新的字段值为“等级”字段下包含的所有字段值;又如通过预设每一天触发一次更新“年龄”字段的事件,在每一天触发该时间后,确定出原始数据表中需要更新的字段值为“年龄”字段下包含的所有字段值。确定字段值时,可以是该字段下包含的所有字段值,也可以是部分字段值,比如可以确定“性别”字段的字段值为“女”对应的“等级”字段下包含的所有字段值为需要更新的字段值。在前文已经介绍,主键可以是表中的一个或多个字段,对应的键值用于唯一标识表中的记录,所以可以通过主键的键值来“定位”需要更新的字段值。在一种实施方式中,本步骤可以包括:根据原始数据表中需要更新的字段、以及主键对应的键值,确定需要更新的字段值。具体地,可以先确定出原始数据表中需要更新的字段,然后查找主键,并确定对需要更新的键值,最后根据字段,以及键值,定位出需要更新的字段值,比如,如下表2所示,账号姓名性别生日年龄等级……0001张三男1990/3/19269……0002李四女1992/11/42310……0003王五男1991/7/22245……0004赵六女1992/6/30247…………………………………………表2在原始数据表中,需要更新的字段为“等级”,需要更新主键对应的键值为“0003”和“0004”的账号,那么就可以确定出需要更新的字段值为“5”和“7”,即表2中的阴影部分。在实际应用中,除了修改已经存在的字段值,还可能出现添加某个(若干个)字段的需求,比如在表2的基础上,添加“在线时长”的字段,用于统计账号的在线时长。所以,在一种实施方式中,本步骤还可以包括:确定原始数据表中需要添加的字段。在确定出需要更新的字段值的前提下,就可以对该字段值进行更新,比如可以是通过直接获取的方式(获取账号中用户输入的数据)去更新字段值。在实际应用中,字段值的确定方法很可能不能直接获取到,而需要通过计算得到,比如“年龄”字段,就需要根据“生日”字段值以及当前日期进行计算;又如“等级”需要通过账号的操作记录(比如在线时长、好友数量、交易笔数等)综合确定。所以,在一种实施方式中,本步骤可以包括:根据字段对应字段值的确定方法,对该键值与该字段对应的字段值进行更新。具体地,字段对应字段值的确定方法可以是预先设定的,比如“年龄”字段,确定方法就是通过当前年份与生日年份的差,以及当前月、日是否大于生日月、日。也可以是出于业务需求修改完成的,比如“等级”字段的计算公式中,调整了个别参数的权重,或加入了某个参数等。键值就是指确定出的主键对应的键值,字段是指确定出的需要更新的字段,那么该键值与该字段对应的字段值就是需要更新的字段值,并且根据字段对应字段值的确定方法,就可以对字段值进行更新,比如在表2确定出需要更新的字段值的基础上,根据“等级”字段的确定方法,更新账号“0003”的“等级”为6,账号“0004”的“等级”为9。在此,可以为更新的字段值生成一个更新临时数据表,可以参照下表4所示,账号等级0003600049表4步骤12:从原始数据表中获取与该字段值对应的记录,并根据更新后的字段值对该记录进行更新,生成临时数据表。在前文已经介绍,通过insertoverwrite语句,可以通过新的记录覆盖原始记录,那么本步骤就可以生成一个包含更新后的字段值的记录,去覆盖原始记录。具体地,可以先从原始数据表中获取与需要更新的字段值对应的记录,比如,更新账号“0003”和“0004”中“等级”字段的字段值,就可以从原始数据表中获取与“等级”字段的字段值对应的记录,在此还可以根据获取到的原始中的记录生成一个如下表5所示的原始临时数据表,账号姓名性别生日年龄等级……0003王五男1991/7/22245……0004赵六女1992/6/30247……表5在实际应用中,字段值毕竟会有重复,所以本步骤可以包括:根据键值,从原始数据表中获取对应的记录,由于键值是唯一的,所以根据键值获取记录可以达到准确获取记录的目的。考虑到从原始数据表中获取到的记录包含了需要更新的字段值,且这个字段值也已经没有意义,所以在一种实施方式中,本步骤还可以包括:从原始数据表中获取与该字段值对应的、且不包含该字段值的记录。具体地,也可以根据获取到的不包含该字段值的记录生成如下表6所示的原始临时数据表,账号姓名性别生日年龄……0003王五男1991/7/2224……0004赵六女1992/6/3024……表6在实际应用中,尤其是分布式计算平台,数据表中会有很多(上亿条记录),所以可以为数据表建立分区,每个分区代表一个特定的分类,比如可以通过时间进行分区,也可以根据数据表中字段的其他特征进行分区,分区表可以类似于一个目录,方便查找数据表,所以在一种实施方式中,本步骤还可以包括:从原始数据表中获取与该字段值对应的记录、以及对应的分区值;根据更新后的字段值对该记录进行更新,生成包含分区值的临时数据表。比如,日期就是可以是分区值,当需要更新的字段值对应的原始数据表包含在某个分区时,在获取记录时,也需要获取对应的分区值。并且在生成临时表时,也需要包含该分区值。在获取到原始数据表中与该字段值对应的记录后,就可以根据更新后的字段值对该记录进行更新,生成临时数据表。具体地,可以将表5或表6与表4通过leftouterjoin语句根据主键的键值完成数据表的整合(拼接),将表4作为左表,表5或表6作为右表,以左表为基准,可以得到如下表7所示,更新了账号“0003”的“等级”为6,账号“0004”的“等级”为9,得到生成临时数据表。账号姓名性别生日年龄等级……0003王五男1991/7/22246……0004赵六女1992/6/30249……表7其中,等级字段是更新后的结果。步骤13:根据生成的临时数据表,对原始数据表进行更新。在步骤12中生成了临时数据表,该临时数据表中的记录为更新后的记录,可以根据更新后的记录对原始数据表中的记录通过insertoverwrite语句进行覆盖,从而完成更新,更新过程中也可以根据主键的键值,比如表7临时数据表中包含了主键的键值为“0003”和“0004”的记录,那么就可以覆盖原始数据表中主键的键值为“0003”和“0004”的记录,如下表8所示,为更新后的用户信息。账号姓名性别生日年龄等级……0001张三男1990/3/19269……0002李四女1992/11/42310……0003王五男1991/7/22246……0004赵六女1992/6/30249…………………………………………表8采用实施例1提供的方法,当需要对数据表中的部分字段值进行更新时,在原始数据表中确定出需要更新的字段值,并对字段值进行更新,从原始数据表中获取与需要更新的字段值对应的记录,并根据更新后的字段值对该记录进行更新,生成临时数据表,通过临时数据表对原始数据表中对应的部分进行更新。相比于现有技术只能将所有记录更新并覆盖,本申请实施例仅对需要更新的部分进行更新,并生成只包含更新字段值的记录的临时数据表,再去覆盖原始数据表,节约了计算资源,减少了对计算资源的浪费。现有技术中,还有一种更新数据表的方法,是先将获取包含全部记录的原始数据表,再根据业务需要更新其中的部分字段值,再根据更新后的数据表更新原始数据表。但是,由于大数据平台中数据量非常大,获取到的原始数据表也必然会占据大量存储空间,造成存储空间浪费,而本申请实施例,在仅需要对字段中部分字段值进行更新时,确定出需要更新的字段值后,仅获取需要更新的字段值对应的记录的原始数据表,从而节约了存储空间。实施例2基于相同的发明构思,实施例2提供了一种数据表更新装置,在仅需对数据表中的部分字段值进行更新时,节约计算资源,减少浪费。图4为该装置的结构图,该装置包括:第一更新单元21、临时数据表生成单元22以及第二更新单元23,其中,第一更新单元21,可以确定原始数据表中需要更新的字段值,并对字段值进行更新;临时数据表生成单元22,可以从原始数据表中获取与字段值对应的记录,并根据更新后的字段值对记录进行更新,生成临时数据表;第二更新单元23,可以根据临时数据表,对原始数据表进行更新。在一种实施方式中,第一更新单元21,可以根据原始数据表中需要更新的字段、以及主键对应的键值,确定需要更新的字段值;根据字段对应字段值的确定方法,对键值与字段对应的字段值进行更新。在一种实施方式中,临时数据表生成单元22,可以根据键值,从原始数据表中获取对应的记录。在一种实施方式中,临时数据表生成单元22,可以从原始数据表中获取与字段值对应的记录、以及对应的分区值;根据更新后的字段值对记录进行更新,生成包含分区值的临时数据表。在一种实施方式中,临时数据表生成单元22,可以从原始数据表中获取与字段值对应的、且不包含字段值的记录。在一种实施方式中,第一更新单元21,可以确定原始数据表中需要添加的字段。采用实施例2提供的装置,当需要对数据表中的部分字段值进行更新时,在原始数据表中确定出需要更新的字段值,并对字段值进行更新,从原始数据表中获取与需要更新的字段值对应的记录,并根据更新后的字段值对该记录进行更新,生成临时数据表,通过将临时数据表对原始数据表中对应的部分进行更新。相比于现有技术只能将所有记录更新并覆盖,本申请实施例仅对需要更新的部分进行更新,并生成只包含更新字段值的记录的临时数据表,再去覆盖原始数据表,节约了计算资源,减少了对计算资源的浪费。本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1