发明内容
基于此,有必要针对上述技术问题,提供一种能够有效提高数据更新效率的数据更新方法、装置、计算机设备和存储介质。
一种数据更新方法,所述方法包括:
获取数据更新请求;
查找所述数据更新请求对应业务数据表的数据标记,所述数据标记用于标记所述业务数据表的重要程度;
根据所述数据标记所标记的业务数据表的重要程度,确定所述业务数据表中的待更新分区;
获取所述待更新分区对应的增量数据,根据所述增量数据对所述待更新分区内的业务数据表进行更新。
在其中一个实施例中,所述查找所述数据更新请求对应业务数据表的数据标记之前,还包括:
获取业务过程分类表以及各业务过程对应的业务字段分类表;
根据所述业务过程分类表的分类类别以及所述业务字段分类表中的分类类别,为各业务字段对应的业务数据表添加数据标记。
在其中一个实施例中,所述根据所述数据标记所标记的业务数据表的重要程度,确定所述业务数据表中的待更新分区包括:
根据所述数据标记所标记的业务数据表的重要程度,通过预设shell脚本获取所述业务数据表中的待更新分区;
将所述数据标记对应的待更新分区拼接后,将拼接后的所述待更新分区作为查询参数更新待更新分区查询语句;
根据所述更新后的待更新分区查询语句查找业务数据表中的待更新分区。
在其中一个实施例中,所述根据所述数据标记所标记的业务数据表的重要程度,确定所述业务数据表中的待更新分区包括:
调用预设UDF函数,更新待更新分区查询语句,所述预设UDF函数用于根据所述数据标记查找待更新分区;
根据所述更新后的待更新分区查询语句查找业务数据表中的待更新分区。
在其中一个实施例中,所述获取所述待更新分区对应的增量数据,根据所述增量数据对所述待更新分区的数据表进行更新包括:
通过Hive扫描所述待更新分区,获取所述待更新分区对应的增量数据;
根据所述增量数据,更新待更新分区内的数据表。
在其中一个实施例中,所述根据所述数据标记确定所述业务数据表中的待更新分区之后,还包括:
反馈所述待更新分区对应分区名至外部更新反馈终端;
获取所述外部更新反馈终端对所述待更新分区的分区修改指令;
根据所述分区修改指令对所述待更新分区进行更新;
所述获取所述待更新分区对应的增量数据,根据所述增量数据对所述待更新分区进行更新包括;
获取所述待更新分区对应的增量数据,根据所述增量数据对更新后的待更新分区内的业务数据表进行更新。
一种数据更新装置,所述装置包括:
请求获取模块,用于获取数据更新请求;
标记识别模块,用于查找所述数据更新请求对应业务数据表的数据标记,所述数据标记用于标记所述业务数据表的重要程度;
分区获取模块,用于根据所述数据标记所标记的业务数据表的重要程度,确定所述业务数据表中的待更新分区;
数据更新模块,用于获取所述待更新分区对应的增量数据,根据所述增量数据对所述待更新分区进行更新。
在其中一个实施例中,还包括标记添加模块,用于:
获取业务过程分类表以及各业务过程对应的业务字段分类表;
根据所述业务过程分类表的分类类别以及所述业务字段分类表中的分类类别,为各业务字段对应的业务数据表添加数据标记。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取数据更新请求;
查找所述数据更新请求对应业务数据表的数据标记,所述数据标记用于标记所述业务数据表的重要程度;
根据所述数据标记所标记的业务数据表的重要程度,确定所述业务数据表中的待更新分区;
获取所述待更新分区对应的增量数据,根据所述增量数据对所述待更新分区内的业务数据表进行更新。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取数据更新请求;
查找所述数据更新请求对应业务数据表的数据标记,所述数据标记用于标记所述业务数据表的重要程度;
根据所述数据标记所标记的业务数据表的重要程度,确定所述业务数据表中的待更新分区;
获取所述待更新分区对应的增量数据,根据所述增量数据对所述待更新分区内的业务数据表进行更新。
上述数据更新方法、装置、计算机设备和存储介质,通过获取数据更新请求;查找数据更新请求对应业务数据表的数据标记,数据标记用于标记业务数据表的重要程度;根据数据标记所标记的业务数据表的重要程度,确定所述业务数据表中的待更新分区;获取待更新分区对应的增量数据,根据增量数据对待更新分区内的业务数据表进行更新。本申请通过在获取数据更新请求后,依据预先的数据标记所标记的业务数据表的重要程度高低,来查找业务数据表中需要更新的分区,通过只对重要程度高的分区进行更新,可以有效保证数据更新的效率。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的数据方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104通过网络进行通信。终端102可以通过向服务器104发送数据更新请求来对数据进行更新,服务器104具体可以为基于hodoop的数据仓库服务器。服务器104获取数据更新请求;查找数据更新请求对应业务数据表的数据标记,数据标记用于标记业务数据表的重要程度;根据数据标记确定业务数据表中的待更新分区;获取待更新分区对应的增量数据,根据增量数据对待更新分区内的业务数据表进行更新。。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种数据更新方法,以该方法应用于图1中的服务器104为例进行说明,包括以下步骤:
步骤201,获取数据更新请求。
其中,数据更新请求是指终端102发送至服务器104端,用于对数据仓库内指定的数据进行更新的一个请求。数据仓库(DW,data warehouse),具体为企业级别的决策制定过程,提供所有类型数据支持的战略集合。此外,在另一个实施例中,服务器104被设置为定期更新数据仓库内的数据,此时当到达预设的更新时间时,即可视为得到了对应的数据更新请求。
具体地,服务器104与终端102通过网络进行连接,当终端102确定需要通过服务器104更新数据仓库内所存储的数据时,即可通过网络向服务器104发送数据更新请求。此外,服务器104也可以单独实现本申请的数据更新方法,此时服务器104被设置为定时对数据仓库内指定的数据进行更新,此时当到达预设的更新时间时,即可视为服务器104接收到了数据更新请求。
步骤203,查找数据更新请求对应业务数据表的数据标记,数据标记用于标记业务数据表的重要程度。
其中业务数据表是指数据仓库内存储的所有业务过程以及业务字段所对应的数据表,业务数据表的数据标记即为不同的业务过程以及业务字段所对应的数据标记。而不同的数据标记表明了业务过程以及业务字段的重要性,同时也表明业务过程以及业务字段对应数据表的重要性。
具体地,数据更新请求具体是指的对数据仓库内某一个大种类,或者是数据仓库内所有的数据进行更新,当接收到数据更新请求时,需要先确定数据更新请求对应的是数据仓库内的哪些数据表,同时查找这些数据表对应的数据标记,进行服务器104可以依据数据标记确定哪些数据表是重要的,而哪些数据表非重要的,以而进行后续的数据更新过程。在另一个实施例中,本申请还将需要更新数据历史分区的情况分为:仅更新短期分区和更新长期分区的情况。对于更新短期分区的情况,通过限制一段时间的分区进行更新。而对于需要更新长期分区的情况,则通过本申请中的数据更新方法来进行实现。
步骤205,根据数据标记所标记的业务数据表的重要程度,确定业务数据表中的待更新分区。
其中待更新分区是指业务数据表内需要集中更新的数据区,而待更新分区是由数据标记所确定的,在其中一个实施例中,数据标记包括高重要程度、中重要程度以及低重要程度。在其中一个实施例中,业务数据表被标记高重要程度的数据表所对应的数据存储区被认定为是需要更新的待更新分区,在另外的实施例中,被标记高重要程度以及中重要程度的数据表所对应的数据存储区被认定为是需要更新的待更新分区。
具体的,本申请的数据更新方法,需要在进行数据更新前,先计算需要更新的数据分区,进而可以直接将待更新分区生成相应的更新任务,来实现数据更新的过程。在其中一个实施例中,本申请的数据更新方法用于对基于hodoop架构的数据仓库内的缓慢变化维以及累积快照事实表的相关数据表进行更新,此时,在提交对应的数据更新任务到集群之前,可以先将更新的分区计算出来,而后转换成常量传入更新任务中,这样在数据更新的过程中就可以减少扫描分区的数量,节省读取的时间,能更高效率地完成对历史分区的更新。
步骤207,获取待更新分区对应的增量数据,根据增量数据对待更新分区内的业务数据表进行更新。
其中增量数据是指用于对待更新分区内的业务数据表进行更新所用到的数据,具体地,当确定待更新分区之后,为了对待更新分区进行更新,需要找到用于更新的增量数据,而后就可以基于增量数据来完成对业务数据表的更新。
上述数据更新方法,通过获取数据更新请求;查找数据更新请求对应业务数据表的数据标记,数据标记用于标记业务数据表的重要程度;根据数据标记所标记的业务数据表的重要程度,确定所述业务数据表中的待更新分区;获取待更新分区对应的增量数据,根据增量数据对待更新分区内的业务数据表进行更新。本申请通过在获取数据更新请求后,依据预先的数据标记所标记的业务数据表的重要程度高低,来查找业务数据表中需要更新的分区,通过只对重要程度高的分区进行更新,可以有效保证数据更新的效率。
在一个实施例中,如图3所示,步骤203之前,还包括:
步骤302,获取业务过程分类表以及各业务过程对应的业务字段分类表。
步骤304,根据业务过程分类表的分类类别以及业务字段分类表中的分类类别,为各业务字段对应的业务数据表添加数据标记。
其中,业务过程分类表是指用于为业务过程添加数据标记的分类表,而业务字段分类表则是为业务字段添加数据标记的分类表,首先可以为业务过程以及业务字段分配不同的分类,而后依据这些分类确定业务数据表的数据标记。在其中一个具体的实施例中,可以根据企业的主营业务,对企业的数据进行主体分类,并细分业务过程以及业务字段,进而确定不同业务过程以及业务字段的重要性,并对数据表的重要性级别进行定义。如参照下表1以及表2所示
表1:交易系统数据主题及业务过程重要性分类
表2:交易系统数据字段及重要性分类案例
具体的,可以根据表的重要性级别,对于重要性为中低级别的表,不对其历史分区进行更新,以保证更新的效率。对于重要级别的表,如果涉及更新涉及到的字段的重要性为低,放弃对该表的历史分区进行更新,如表2中,优惠券表的备注字段,该字段对于统计或者决策都无明显作用,选择放弃更新,提高效率。如果涉及到即需要将历史对应的分区都进行更新,并从更新的增量数据中找出需要更新的分区。本实施例中,通过为业务数据表添加相应的数据标记,从而在后续的数据更新过程,可以依据重要性程度识别出待更新分区,并只对待更新分区进行更新,可以有效提高更新效率。
如图4所示,在其中一个实施例中,步骤205包括:
步骤401,根据数据标记,通过预设shell脚本获取业务数据表中的待更新分区。
步骤403,将数据标记对应的待更新分区拼接后,将拼接后的待更新分区作为查询参数更新待更新分区查询语句。
步骤405,根据更新后的待更新分区查询语句查找业务数据表中的待更新分区。
预设shell脚本是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。在本实施例中,可以基于预设shell脚本来实现对待更新分区的识别。具体的,本申请的数据更新方法适用于基于hodoop架构的数据仓库,而hodoop一般通过Hive来实现数据的更新。而Hive在生成更新对应解析计划之时,由于需要更新的分区需要通过执行查询语句之后才可以获取到,为此在正式提交执行之时,需要对业务数据表进行全量扫描,导致资源压力大和效率受限。而本实施例中,通过预设shell脚本以及数据标记预先获取到待更新分区,而后通过将待更新分区拼接后,作为查询参数更新待更新分区查询语句;而后根据更新后的待更新分区查询语句查找业务数据表中的待更新分区。具体地,在shell中,使用Hive–e命令执行获取更新分区的语句。而后将查询到的结果,通过字符串操作,拼接为”(‘2020-01-01’,’2020-02-01’,’2020-03-01’,…)”的形式,并存入变量中,替换掉Hive原有的子查询。本实施例中,通过执行预设shell脚本,Hive可以基于更新后的查询语句直接查找业务数据表中的待更新分区,而不需要扫描全量的业务数据表,从而提高数据更新过程的处理效率。
如图5所示,在其中一个实施例中,步骤205包括:
步骤502,调用预设UDF函数,更新待更新分区查询语句,预设UDF函数用于根据数据标记查找待更新分区。
步骤504,根据更新后的待更新分区查询语句查找业务数据表中的待更新分区。
其中UDF函数是Hive的一个自定义函数,在本实施例中,服务器104可以预先定义一个用于根据数据标记查找待更新分区对应的业务字段集合的UDF函数。具体地,服务器104可以先创建相应过的java类,并假设命名为get_upd_partitions_list继承Hive的UDF父类,并重载其evaluate函数,实现以下功能:接受sql(Structured Query Language,结构化查询语言)语句,并返回字段合集。从而在Hive更新历史分区的逻辑中,调用上述UDF函数,替代Hive原有的子查询语句。本实施例中,通过执行预设UDF函数,Hive可以基于更新后的查询语句直接查找业务数据表中的待更新分区,而不需要扫描全量的业务数据表,从而提高数据更新过程的处理效率。
在其中一个实施例中,步骤207包括:通过Hive扫描待更新分区,获取待更新分区对应的增量数据;根据增量数据,更新待更新分区内的数据表。
具体的,当执行数据更新时,由于先确定了待更新分区,此时Hive可以直接扫描待更新分区,而不用扫描所有的业务数据表。同时,在数据更新的过程中也是直接获得这些待更新分区对应的增量数据,而后依据增量数据来对待更新分区进行更新,以保证数据更新的效率。本实施例中,通过Hive扫描待更新分区,并只获取待更新分区对应的增量数据,进而进行数据的更新,可以提高数据更新的效率。
在其中一个实施例中,步骤205之后,还包括:反馈待更新分区对应分区名至外部更新反馈终端;获取外部更新反馈终端对待更新分区的分区修改指令;根据分区修改指令对待更新分区进行更新。步骤207包括:获取待更新分区对应的增量数据,根据增量数据对更新后的待更新分区内的业务数据表进行更新。
其中,外部更新反馈终端用于对待更新分区进行审核确认以及修改。可以在扫描出预设的待更新分区后,由人工审核再进行一次确认。分区修改指令具体为对查询到的待更新分区进行修改,如将确定的待更新分区设置为不更新分区,以及将不更新分区设置为待更新分区。而后在后续的更新过程中也是对更新后待更新分区内的业务数据表进行更新。在本实施例中,通过外部更新反馈终端对待更新分区进行确认,可以提高待更新分区选择的准确性。
应该理解的是,虽然图2-5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-5中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图6所示,提供了一种数据更新装置,其中:
请求获取模块601,用于获取数据更新请求。
标记识别模块603,用于查找数据更新请求对应业务数据表的数据标记,数据标记用于标记业务数据表的重要程度。
分区获取模块605,用于根据数据标记所标记的业务数据表的重要程度,确定业务数据表中的待更新分区。
数据更新模块607,用于获取待更新分区对应的增量数据,根据增量数据对待更新分区进行更新。
在其中一个实施例中,还包括标记添加模块,用于:获取业务过程分类表以及各业务过程对应的业务字段分类表;根据业务过程分类表的分类类别以及业务字段分类表中的分类类别,为各业务字段对应的业务数据表添加数据标记。
在其中一个实施例中,分区确认模块605用于:根据数据标记,通过预设shell脚本获取业务数据表中的待更新分区;将数据标记对应的待更新分区拼接后,将拼接后的待更新分区作为查询参数更新待更新分区查询语句;根据更新后的待更新分区查询语句查找业务数据表中的待更新分区。
在其中一个实施例中,分区确认模块605用于:调用预设UDF函数,更新待更新分区查询语句,预设UDF函数用于根据数据标记查找待更新分区;根据更新后的待更新分区查询语句查找业务数据表中的待更新分区。
在其中一个实施例中,数据更新模块607具体用于:通过Hive扫描待更新分区,获取待更新分区对应的增量数据;根据增量数据,更新待更新分区内的数据表。
在其中一个实施例中,还包括分区审核模块,用于:反馈待更新分区对应分区名至外部更新反馈终端;获取外部更新反馈终端对待更新分区的分区修改指令;根据分区修改指令对待更新分区进行更新。数据更新模块607具体用于:获取待更新分区对应的增量数据,根据增量数据对更新后的待更新分区内的业务数据表进行更新。
关于数据更新装置的具体限定可以参见上文中对于数据更新方法的限定,在此不再赘述。上述数据更新装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据更新数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据更新方法。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
获取数据更新请求;
查找数据更新请求对应业务数据表的数据标记,数据标记用于标记业务数据表的重要程度;
根据数据标记所标记的业务数据表的重要程度,确定业务数据表中的待更新分区;
获取待更新分区对应的增量数据,根据增量数据对待更新分区内的业务数据表进行更新。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取业务过程分类表以及各业务过程对应的业务字段分类表;根据业务过程分类表的分类类别以及业务字段分类表中的分类类别,为各业务字段对应的业务数据表添加数据标记。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:根据数据标记,通过预设shell脚本获取业务数据表中的待更新分区;将数据标记对应的待更新分区拼接后,将拼接后的待更新分区作为查询参数更新待更新分区查询语句;根据更新后的待更新分区查询语句查找业务数据表中的待更新分区。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:调用预设UDF函数,更新待更新分区查询语句,预设UDF函数用于根据数据标记查找待更新分区;根据更新后的待更新分区查询语句查找业务数据表中的待更新分区。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:通过Hive扫描待更新分区,获取待更新分区对应的增量数据;根据增量数据,更新待更新分区内的数据表。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:反馈待更新分区对应分区名至外部更新反馈终端;获取外部更新反馈终端对待更新分区的分区修改指令;根据分区修改指令对待更新分区进行更新。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取数据更新请求;
查找数据更新请求对应业务数据表的数据标记,数据标记用于标记业务数据表的重要程度;
根据数据标记所标记的业务数据表的重要程度,确定业务数据表中的待更新分区;
获取待更新分区对应的增量数据,根据增量数据对待更新分区内的业务数据表进行更新。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:获取业务过程分类表以及各业务过程对应的业务字段分类表;根据业务过程分类表的分类类别以及业务字段分类表中的分类类别,为各业务字段对应的业务数据表添加数据标记。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:根据数据标记,通过预设shell脚本获取业务数据表中的待更新分区;将数据标记对应的待更新分区拼接后,将拼接后的待更新分区作为查询参数更新待更新分区查询语句;根据更新后的待更新分区查询语句查找业务数据表中的待更新分区。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:调用预设UDF函数,更新待更新分区查询语句,预设UDF函数用于根据数据标记查找待更新分区;根据更新后的待更新分区查询语句查找业务数据表中的待更新分区。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:通过Hive扫描待更新分区,获取待更新分区对应的增量数据;根据增量数据,更新待更新分区内的数据表。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:反馈待更新分区对应分区名至外部更新反馈终端;获取外部更新反馈终端对待更新分区的分区修改指令;根据分区修改指令对待更新分区进行更新。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。