基于局部更新软件的数据处理方法及装置的制造方法

文档序号:10580173阅读:192来源:国知局
基于局部更新软件的数据处理方法及装置的制造方法
【专利摘要】本发明公开了一种基于局部更新软件的数据处理方法及装置。其中,该方法包括:从消息队列中读取关系型数据库的增量数据;获取查询数据库中的各个数据文件的索引和增量数据的主键;从各个数据文件的索引中,查找与主键匹配的目标索引;在查找到目标索引的情况下,在确定目标索引所对应的目标数据文件之后,利用增量数据更新目标数据文件,得到增量数据文件,其中,数据文件包括目标数据文件。本发明解决了impala对级别较大的数据量无法进行新增、修改或者删除的局部更新的技术问题。
【专利说明】
基于局部更新软件的数据处理方法及装置
技术领域
[0001]本发明涉及数据处理领域,具体而言,涉及一种基于局部更新软件的数据处理方法及装置。【背景技术】
[0002]图1是根据现有技术的一种查询系统的示意图,如图1所示,Impala是Cloudera公司主导开发的新型查询系统,它提供SQL(Structed Query Language,结构化查询语言)语义,能查询存储在Hadoop的HDFS(Hadoop Distributed File System,分布式文件系统)和 HBase(Hadoop Database,分布式的面向列的开源数据库)中的PB(petabyte,计算机中较高级的存储单位)级大数据。数据存储格式采用parquet(面向分析型业务的列式存储格式), 它的最大特点也是最大卖点就是它的快速。图1中的Command-line shell为命令行界面; HUE/Thrift/ODBC/JDBC其中的HUE是一个开源的Apache Hadoop UI系统,Thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发,ODBC是Open Database Connectivity的缩写,译为开放数据库连接,JDBC是JavaData Base Connectivity的缩写,S卩java数据库连接;Hive Metastore是模块代码分析结构,HDFS NN中的HDFS是Hadoop Distributed File System的缩写,译为分布式文件系统;State Store是一个数据存储区,Impalad也即为上述的Impala,SQLParser为语法解释器,Query Optimizeer为查询优化器;Query Planner为查询计划器;Query Coordinator查询协调器;Query Exec Engine为查询执行引擎;Hadoop Storage为Hadoop的存储模块,(e ? g ? HDFS,HBase)即为该Hadoop的存储模块可以为HDFS或者HBase。
[0003]对于做大数据的数据交互查询,数据从关系型数据库导入,每次做数据的交互查询需要从关系型数据库加载全量数据,正常情况下,历史库、交易库数据量都非常大,一般是GB(gigabyte,千兆字节)级别、甚至是PB(petabyte,计算机中较高级的存储单位)级别, 对于历史数据多,每天增量数据也多的情况下,将数据从关系数据库加载全量数据不太现实,且耗时较长,难以忍受。目前impala数据加载普遍采用的实现方式是每次全量从历史库、交易库加载数据到impala,以满足数据查询需求。而加载增量数据仅可以处理插入操作,不能处理删除和修改操作。
[0004]针对上述的impala对级别较大的数据量无法进行新增、修改或者删除的局部更新的问题,目前尚未提出有效的解决方案。
【发明内容】

[0005]本发明实施例提供了一种基于局部更新软件的数据处理方法及装置,以至少解决 impala对级别较大的数据量无法进行新增、修改或者删除的局部更新的技术问题。
[0006]根据本发明实施例的一方面,提供了一种基于局部更新软件的数据处理方法,该方法包括:从消息队列中读取关系型数据库的增量数据;获取查询数据库中的各个数据文件的索引和所述增量数据的主键;从所述各个数据文件的索引中,查找与所述主键匹配的目标索引;在查找到所述目标索引的情况下,在确定所述目标索引所对应的目标数据文件之后,利用所述增量数据更新所述目标数据文件,得到增量数据文件,其中,所述数据文件包括所述目标数据文件。
[0007]进一步地,在查找与所述主键匹配的目标索引之后,所述方法还包括:在未查找到所述目标索引的情况下,新建目标数据文件;利用所述增量数据更新所述目标数据文件,得到增量数据文件。
[0008]进一步地,在得到增量数据文件之后,所述方法包括:获取所述查询数据库的存储单元的预设文件数据容量,其中,所述存储单元用于存储所述增量数据文件;根据所述预设文件数据容量和所述增量数据文件的文件数据容量的对比结果,对所述增量数据文件进行调整,得到调整后的增量数据文件。
[0009]进一步地,根据所述预设文件数据容量和所述增量数据文件的文件数据容量的对比结果,对所述增量数据文件进行调整,得到调整后的增量数据文件包括:若所述增量数据文件的文件数据容量大于所述存储单元的预设文件数据容量,则根据所述增量数据文件的索引将所述增量数据文件中存储的各个记录项进行排序,根据所述排序的结果将所述增量数据文件拆分成一个或多个所述预设文件数据容量的数据文件和一个拆分文件,其中,所述拆分文件的数据容量小于等于所述预设文件数据容量,所述数据文件和所述拆分文件中包括多个所述记录项,每个所述索引与各个所述记录项一一对应。
[0010]进一步地,根据所述预设文件数据容量和所述增量数据文件的文件数据容量的对比结果,对所述增量数据文件进行调整,得到调整后的增量数据文件包括:若所述增量数据文件的文件数据容量小于所述存储单元的预设文件数据容量,则根据所述增量数据文件的索引将所述增量数据文件中存储的各个记录项进行排序,根据所述排序的结果将多个所述增量数据文件聚变成一个或多个所述预设文件数据容量的数据文件和一个聚变子文件,其中,所述聚变子文件的数据容量小于等于所述预设文件数据容量,所述数据文件和所述聚变子文件包括多个所述记录项,每个所述索引与所述各个记录项一一对应。
[0011]进一步地,从所述各个数据文件的索引中,查找与所述主键匹配的目标索引包括: 判断所述各个数据文件的索引的范围是否包括所述增量数据文件的主键;若存在数据文件的所述索引的范围包括所述主键,则将所述索引确定为所述目标索引。
[0012]进一步地,利用所述增量数据更新所述目标数据文件包括:根据所述目标数据文件的文件名确定与所述目标数据文件对应的临时文件;将所述增量数据保存到所述目标数据文件对应的临时文件中;将所述临时文件与所述目标数据文件合并。
[0013]进一步地,所述增量数据为多个,所述方法还包括:在将所述增量数据保存到所述目标数据文件对应的临时文件中的同时,并行将所述临时文件与所述目标数据文件合并。
[0014]进一步地,在从所述各个数据文件的索引中,查找与所述主键匹配的目标索引之前,所述方法包括:获取分区字段,将所述数据文件按照所述分区字段进行分区,得到多个分区数据文件;从所述各个数据文件的索引中,查找与所述主键匹配的目标索引包括:在所述分区数据文件的索引中查找与所述主键对应的所述索引。
[0015]进一步地,所述增量数据为用于对所述关系型数据库进行插入、修改或删除操作的数据,所述查询数据库为Impala数据库。
[0016]根据本发明实施例的另一方面,还提供了一种基于局部更新软件的数据处理装置,该装置包括:读取单元,用于从消息队列中读取关系型数据库的增量数据;第一获取单元,用于获取查询数据库中的各个数据文件的索引和所述增量数据的主键;查找单元,用于从所述各个数据文件的索引中,查找与所述主键匹配的目标索引;第一更新单元,用于在查找到所述目标索引的情况下,在确定所述目标索引所对应的目标数据文件之后,利用所述增量数据更新所述目标数据文件,得到增量数据文件,其中,所述数据文件包括所述目标数据文件。
[0017]进一步地,所述装置还包括:新建单元,用于在查找与所述主键匹配的目标索引之后,在未查找到所述目标索引的情况下,新建目标数据文件;第二更新单元,用于利用所述增量数据更新所述目标数据文件,得到增量数据文件。[〇〇18]进一步地,所述装置包括:第二获取单元,用于在得到增量数据文件之后,获取所述查询数据库的存储单元的预设文件数据容量,其中,所述存储单元用于存储所述增量数据文件;调整单元,用于根据所述预设文件数据容量和所述增量数据文件的文件数据容量的对比结果,对所述增量数据文件进行调整,得到调整后的增量数据文件。
[0019]进一步地,所述调整单元包括:裂变模块,用于若所述增量数据文件的文件数据容量大于所述存储单元的预设文件数据容量,则根据所述增量数据文件的索引将所述增量数据文件中存储的各个记录项进行排序,根据所述排序的结果将所述增量数据文件拆分成一个或多个所述预设文件数据容量的数据文件和一个拆分文件,其中,所述拆分文件的数据容量小于等于所述预设文件数据容量,所述数据文件和所述拆分文件中包括多个所述记录项,每个所述索引与各个所述记录项--对应。
[0020]进一步地,所述调整单元包括:聚变模块,用于若所述增量数据文件的文件数据容量小于所述存储单元的预设文件数据容量,则根据所述增量数据文件的索引将所述增量数据文件中存储的各个记录项进行排序,根据所述排序的结果将多个所述增量数据文件聚变成一个或多个所述预设文件数据容量的数据文件和一个聚变子文件,其中,所述聚变子文件的数据容量小于等于所述预设文件数据容量,所述数据文件和所述聚变子文件包括多个所述记录项,每个所述索引与所述各个记录项--对应。
[0021]进一步地,所述查找单元包括:判断模块,用于判断所述各个数据文件的索引的范围是否包括所述增量数据文件的主键;第一确定模块,用于若存在数据文件的所述索引的范围包括所述主键,则将所述索引确定为所述目标索引。
[0022]进一步地,所述第一更新单元或者所述第二更新单元包括:第二确定模块,用于根据所述目标数据文件的文件名确定与所述目标数据文件对应的临时文件;保存模块,用于将所述增量数据保存到所述目标数据文件对应的临时文件中;合并模块,用于将所述临时文件与所述目标数据文件合并。
[0023]进一步地,所述增量数据为多个,所述装置还包括:并行单元,用于在将所述增量数据保存到所述目标数据文件对应的临时文件中的同时,并行将所述临时文件与所述目标数据文件合并。
[0024]进一步地,所述装置包括:第三获取单元,用于在从所述各个数据文件的索引中, 查找与所述主键匹配的目标索引之前,获取分区字段,将所述数据文件按照所述分区字段进行分区,得到多个分区数据文件;所述查找单元包括:查找模块,用于在所述分区数据文件的索引中查找与所述主键对应的所述索引。
[0025]进一步地,所述增量数据为用于对所述关系型数据库进行插入、修改或删除操作的数据,所述查询数据库为Impala数据库。
[0026]在本发明实施例中,在读取关系型数据库的增量数据之后,获取查询数据库中的各个数据文件的索引和增量数据的主键,然后从索引中查找与主键匹配的目标索引,在查找到该目标索引的情况下,再通过该目标索引确定与之对应的目标数据文件,然后利用增量数据更新目标数据文件,得到增量数据文件。通过上述实施例,在关系型数据库中产生增量数据时,通过预先创建的索引(包括索引和主键),可以查找到与增量数据对应的目标数据文件,并使用该增量数据更新目标数据文件,无需将产生变化的全量数据全部重新导入查询数据库,从而实现了快速利用增量数据局部更新查询数据库的数据文件的效果,并能够利用查询数据库分析处理关系型数据库的新增、修改或删除的增量数据,进而解决了 impala对级别较大的数据量无法进行新增、修改或者删除的局部更新的技术问题。【附图说明】
[0027]此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0028]图1是根据现有技术的一种查询系统的示意图;
[0029]图2是根据本发明实施例的一种基于局部更新软件的数据处理方法的流程图;
[0030]图3是根据本发明实施例的一种可选的基于局部更新软件的数据处理方法的原理图;
[0031]图4是根据本发明实施例的另一种可选的基于局部更新软件的数据处理方法的原理图;以及
[0032]图5是根据本发明实施例的一种基于局部更新软件的数据处理装置的示意图。 【具体实施方式】
[0033]为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。[〇〇34]需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0035]根据本发明实施例,提供了一种基于局部更新软件的数据处理方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0036]图2是根据本发明实施例的一种基于局部更新软件的数据处理方法的流程图,如图2所示,该方法包括如下步骤:[〇〇37]步骤S202,从消息队列中读取关系型数据库的增量数据。
[0038]步骤S204,获取查询数据库中的各个数据文件的索引和增量数据的主键。[〇〇39]步骤S206,从各个数据文件的索引中,查找与主键匹配的目标索引。
[0040]步骤S208,在查找到目标索引的情况下,在确定目标索引所对应的目标数据文件之后,利用增量数据更新目标数据文件,得到增量数据文件,其中,数据文件包括目标数据文件。
[0041]采用本发明,在读取关系型数据库的增量数据之后,获取查询数据库中的各个数据文件的索引和增量数据的主键,然后从索引中查找与主键匹配的目标索引,在查找到该目标索引的情况下,再通过该目标索引确定与之对应的目标数据文件,然后利用增量数据更新目标数据文件,得到增量数据文件。通过上述实施例,在关系型数据库中产生增量数据时,通过预先创建的索引(包括索引和主键),可以查找到与增量数据对应的目标数据文件, 并使用该增量数据更新目标数据文件,无需将产生变化的全量数据全部重新导入查询数据库,从而实现了快速利用增量数据局部更新查询数据库的数据文件的效果,并能够利用查询数据库分析处理关系型数据库的新增、修改或删除的增量数据,进而解决了 impala对级别较大的数据量无法进行新增、修改或者删除的局部更新的技术问题。
[0042]可选地,增量数据为用于对关系型数据库进行插入、修改或删除操作的数据,查询数据库为Impala数据库。
[0043]具体地,上述实施例中的增量数据可以为用于对关系型数据库中的数据进行新增、修改或者删除处理的数据,在从消息队列中读取关系型数据库的增量数据之前,可以通过关系型数据库中的触发器获取增量数据,或者通过事务日志的形式记录增量数据,然后将该增量数据传入KAFKA中,其中,KAFKA为一种高吞吐量的分布式发布订阅消息系统,然后查询数据库再从KAFKA中获取该增量数据;在查询数据库(如,impala)的hdfs(即上述的 HDFS)中存储有多个数据文件,每个数据文件都对应一个索引(即索引),每个增量数据也对应一个索引(即主键),根据主键可以在索引中找到与该主键相匹配的索引作为目标索引, 其中,索引是用于描述每个数据文件包括哪些数据。
[0044]进一步可选的,每个数据文件可以与hdfs块大小接近一致,数据文件与hdfs块大小接近一致可以使查询数据库的交互查询更加高效,即更加能提高查询数据库(如impala) 的数据加载效率,减少数据在网络上的传输,提高并行度。在利用增量数据更新目标数据文件,得到增量数据文件之后,该方法还可以包括刷新目标索引的内容。[〇〇45]通过上述实施例,实现了在基本数据已导入查询数据库(如,impala)的情况下,提供新增、修改、删除的数据增量可以同步到查询数据库中,并且这个同步过程耗时短的效果。
[0046]可选地,在查找与主键匹配的目标索引之后,该方法还包括:在未查找到目标索引的情况下,新建目标数据文件;利用增量数据更新目标数据文件,得到增量数据文件。
[0047]在上述实施例中,在从消息队列中读取关系型数据库的增量数据之后,获取查询数据库中的各个数据文件的索引和增量数据的主键,从各个数据文件的索引中,查找与主键匹配的目标索引,在未查找到目标索引的情况下,新建目标数据文件;利用增量数据更新目标数据文件,得到增量数据文件。通过上述实施例,当未查找到该目标索引时新建目标数据文件,对该新建的目标数据文件进行更新,以实现对增量数据文件的灵活处理,以适应不同的实际情况。
[0048]具体地,无论是否查找到目标索引,该增量数据都能够成功的更新目标数据文件。 其中,更新可以包括合并的过程。
[0049]可选地,在得到增量数据文件之后,该方法包括:获取查询数据库的存储单元的预设文件数据容量,其中,存储单元用于存储增量数据文件;根据预设文件数据容量和增量数据文件的文件数据容量的对比结果,对增量数据文件进行调整,得到调整后的增量数据文件。
[0050]在上述实施例中,查询数据库可以为impala,存储单元可以是hdfs块,在获取查询数据库的存储单元的预设文件数据容量之后,可以根据该预设文件数据容量与增量数据文件的文件数据容量的对比结果,来进一步的调整增量数据文件的大小。通过上述实施例,可以实现将增量数据文件合理的分块存储于查询数据库中的存储模块中,并使得该调整后的增量数据文件能够进行高效的交互查询。
[0051]具体地,在做索引(包括目标索引)和数据文件整理时,当发现数据文件(如增量数据文件)过大,做数据文件的裂变处理。当有多个小的数据文件时,做数据文件的聚变处理, 并更新索引。
[0052]可选地,根据预设文件数据容量和增量数据文件的文件数据容量的对比结果,对增量数据文件进行调整,得到调整后的增量数据文件包括:若增量数据文件的文件数据容量大于存储单元的预设文件数据容量,则根据增量数据文件的索引将增量数据文件中存储的各个记录项进行排序,根据排序的结果将增量数据文件拆分成一个或多个预设文件数据容量的数据文件和一个拆分文件,其中,拆分文件的数据容量小于等于预设文件数据容量, 数据文件和拆分文件中包括多个记录项,每个索引与各个记录项一一对应。[〇〇53]在上述实施例中,对比结果显示增量数据文件的文件数据容量大于存储单元的预设文件数据容量,那么将增量数据文件中的各个记录项按照该记录项对应的索引进行排序,可以选取排序在预设范围内的索引对应的多个记录项作为一个数据文件,该数据文件的数据容量可以等于预设文件数据容量,并将该数据文件从原来的增量数据文件中拆分出来(即裂变),拆分出来后剩余的记录项可以作为上述的拆分文件,然后可以更新经过拆分后的数据文件和拆分文件对应的索引。通过上述实施例,可以实现将较大的增量数据文件有效的进行拆分的效果。
[0054]可选地,根据预设文件数据容量和增量数据文件的文件数据容量的对比结果,对增量数据文件进行调整,得到调整后的增量数据文件包括:若增量数据文件的文件数据容量小于存储单元的预设文件数据容量,则根据增量数据文件的索引将增量数据文件中存储的各个记录项进行排序,根据排序的结果将多个增量数据文件聚变成一个或多个预设文件数据容量的数据文件和一个聚变子文件,其中,聚变子文件的数据容量小于等于预设文件数据容量,数据文件和聚变子文件包括多个记录项,每个索引与各个记录项一一对应。
[0055]具体地,上述的数据文件的裂变过程相当于拆分处理的过程,裂变过程是根据数据内容(即多个记录项)进行排序,按照hdfs块大小(即上述的预设文件数据容量)划分数据内容,将这些数据内容保存为数据文件。
[0056]在上述实施例中,当对比结果显示增量数据文件的文件数据容量小于存储单元的预设文件数据容量,那么也可以将增量数据文件中的各个记录项按照该记录项对应的索引进行排序,可以选取多个增量数据文件中排序在预设范围内的索引对应的多个记录项合并 (即聚变),作为一个数据文件,该数据文件的数据容量可以等于预设文件数据容量,并将原来的多个增量数据文件中剩下的记录项合并,作为聚变子文件,然后可以更新经过合并后的数据文件和聚变子文件对应的索引。通过上述实施例,可以实现将较大的增量数据文件有效的进行合并的效果。
[0057]具体地,上述实施例中的聚变过程可以理解为是多个小数据容量的数据文件的合并的过程,先对这些小数据文件进行合并排序,当到达hdfs块大小(即上述的预设文件数据容量)即生成一个数据文件,由于数据文件与内容关系发生变化,则需要更新索引。[〇〇58]可选地,从各个数据文件的索引中,查找与主键匹配的目标索引包括:判断各个数据文件的索引的范围是否包括增量数据文件的主键;若存在数据文件的索引的范围包括主键,则将索引确定为目标索引。[〇〇59]在上述实施例中,在查找与主键匹配的目标索引的过程可以理解为,在各个数据文件的索引的范围若包括增量数据文件的主键,则确定该索引为目标索引。通过上述实施例,可以高效的通过主键和索引获取到目标索引。
[0060]具体地,若第一数据文件的索引的范围为1-9999,第二数据文件的索引的范围为 1000-19999,增量数据的主键为1-100,那么第一数据文件的索引的范围包括主键,则将该第一数据文件的索引的范围确定为目标索引。[0061 ]可选地,利用增量数据更新目标数据文件包括:根据目标数据文件的文件名确定与目标数据文件对应的临时文件;将增量数据保存到目标数据文件对应的临时文件中;将临时文件与目标数据文件合并。
[0062]在上述实施例中,在更新目标数据文件时,可以先根据增量数据的主键查找到与该主键匹配的目标索引,根据该目标索引找到对应的目标数据文件,并根据该目标文件的文件名确定具有相同文件名的临时文件,该临时文件与该目标文件相对应,可以先将该增量数据存储到该临时文件中,并定时将该临时文件与目标数据文件进行合并,以达到利用临时文件中的增量数据更新目标数据文件的效果。
[0063]可选地,增量数据为多个,该方法还包括:在将增量数据保存到目标数据文件对应的临时文件中的同时,并行将临时文件与目标数据文件合并。
[0064]在上述实施例中,并行执行将增量数据保存到目标数据文件对应的临时文件中的环节、以及将临时文件与目标数据文件合并环节,可以实现提高数据处理效率的效果。
[0065]具体地,整个数据加载过程包括两个环节,inclog Save环节和inclog Flush环-K-
[0066]其中,Inclog Save环节的主要功能是接收增量数据,该增量数据可以是插入、修改、删除,接收到增量数据根据索引(即主键),存储到的数据文件对应的临时文件中,这样的临时文件我们称为inclog,并更新索引。[0〇67] Inclog Flush主要功能是将临时文件inclog与这个文件对应的数据文件parquet 做合并,包括新增、删除、修改。
[0068]进一步可选地,为了提高两个环节的并行度,可以采用两个大目录,每个处理环节独占其中一个目录。当有空闲目录时,独占状态可以释放,并占用另一个空闲目录,目的是释放独占的目录以备另一处理环节占用,其中,目录可以理解为操作系统文件。
[0069]为了提高检索效率,还可以将数据文件按照某个分区字段进行分区,分区过程不需要impala参与,其中,分区字段可以为男、女,或者可以为省会等字段,分区的过程可以理解为将数据文件进行拆分的过程。
[0070]可选地,在从各个数据文件的索引中,查找与主键匹配的目标索引之前,该方法包括:获取分区字段,将数据文件按照分区字段进行分区,得到多个分区数据文件;从各个数据文件的索引中,查找与主键匹配的目标索引包括:在分区数据文件的索引中查找与主键对应的索引。
[0071]在上述的实施例中,可以先获取分区字段,将数据文件按照分区字段进行分区,得到多个分区数据文件,然后在分区数据文件的索引中查找与主键对应的索引。通过上述实施例,可以提尚查找的效率。[0〇72]具体地,Impala的底层存储可以直接采用hbase,能解决数据局部更新的问题,但是带来更加严重的影响数据的交互查询效率。因为impala是调用hbase的接口去查询数据, 查询效率低;另外,Impala本身提供分区功能,但是在进行分区时,数据是需要准备好的,不能对数据文件进行修改。
[0073]下面结合图3和图4对上述的基于局部更新软件的数据处理方法做详细的介绍。
[0074]如图3所示,首先进行数据接收服务,具体可以为到KAFKA中的消息队列中读取关系型数据库的增量数据,然后利用该增量数据对查询数据库中的数据文件进行具备更新, 在进行局部更新时,可以先根据该增量数据的主键查找到与该主键相匹配的数据文件的索引,将该查找到的索引确定为目标索引,根据目标索引找到待更新的目标数据文件,将增量数据存储在与该目标数据文件对应的位于本地的临时文件中,并将相关的目标索引存储于元数据中,其中,本地还存储有事务日志文件,然后在一段预设时间段后,将该临时文件中的增量数据和目标数据文件进行合并,以利用该增量数据更新目标数据文件,得到增量数据文件,在进行局部更新之后,可以将该增量数据文件进行聚变或者裂变,得到多个大小接近hdfs块大小的列式文件,然后将该列式文件存储于hdfs中。
[0075]如图4所示,关系型数据库的整理数据可以记录于事务日志文件中,通过索引元数据的列表可以得到各个数据文件(如图4所示的文件所在列中的列式文件1和列式文件2)的索引(如索引范围所在列中的1-9999和10000-19999),其中,列式文件1对应的索引范围为 1-9999,列式文件2对应的索引范围为10000-19999,如图4右边所示的列式文件1、列式文件 2以及列式文件3为裂变和聚变处理之后的数据文件。
[0076]根据本发明实施例的另一方面,还提供了一种基于局部更新软件的数据处理装置,图5是根据本发明实施例的一种基于局部更新软件的数据处理装置的示意图,如图5所示,该装置包括:读取单元52、第一获取单元54、查找单元56以及第一更新单元58。
[0077]其中,读取单元52,用于从消息队列中读取关系型数据库的增量数据。
[0078]第一获取单元54,用于获取查询数据库中的各个数据文件的索引和增量数据的主键。[〇〇79]查找单元56,用于从各个数据文件的索引中,查找与主键匹配的目标索引。
[0080]第一更新单元58,用于在查找到目标索引的情况下,在确定目标索引所对应的目标数据文件之后,利用增量数据更新目标数据文件,得到增量数据文件,其中,数据文件包括目标数据文件。
[0081]可选地,增量数据为用于对关系型数据库进行插入、修改或删除操作的数据,查询数据库为Impala数据库。
[0082]采用本发明,在读取关系型数据库的增量数据之后,获取查询数据库中的各个数据文件的索引和增量数据的主键,然后从索引中查找与主键匹配的目标索引,在查找到该目标索引的情况下,再通过该目标索引确定与之对应的目标数据文件,然后利用增量数据更新目标数据文件,得到增量数据文件。通过上述实施例,在关系型数据库中产生增量数据时,通过预先创建的索引(包括索引和主键),可以查找到与增量数据对应的目标数据文件, 并使用该增量数据更新目标数据文件,无需将产生变化的全量数据全部重新导入查询数据库,从而实现了快速利用增量数据局部更新查询数据库的数据文件的效果,并能够利用查询数据库分析处理关系型数据库的新增、修改或删除的增量数据,进而解决了 impala对级别较大的数据量无法进行新增、修改或者删除的局部更新的技术问题。
[0083]可选地,该装置还包括:新建单元,用于在查找与主键匹配的目标索引之后,在未查找到目标索引的情况下,新建目标数据文件;第二更新单元,用于利用增量数据更新目标数据文件,得到增量数据文件。
[0084]在上述实施例中,在从消息队列中读取关系型数据库的增量数据之后,获取查询数据库中的各个数据文件的索引和增量数据的主键,从各个数据文件的索引中,查找与主键匹配的目标索引,在未查找到目标索引的情况下,新建目标数据文件;利用增量数据更新目标数据文件,得到增量数据文件。通过上述实施例,当未查找到该目标索引时新建目标数据文件,对该新建的目标数据文件进行更新,以实现对增量数据文件的灵活处理,以适应不同的实际情况。
[0085]可选地,该装置包括:第二获取单元,用于在得到增量数据文件之后,获取查询数据库的存储单元的预设文件数据容量,其中,存储单元用于存储增量数据文件;调整单元, 用于根据预设文件数据容量和增量数据文件的文件数据容量的对比结果,对增量数据文件进行调整,得到调整后的增量数据文件。[〇〇86] 在上述实施例中,查询数据库可以为impala,存储单元可以是hdfs块,在获取查询数据库的存储单元的预设文件数据容量之后,可以根据该预设文件数据容量与增量数据文件的文件数据容量的对比结果,来进一步的调整增量数据文件的大小。通过上述实施例,可以实现将增量数据文件合理的分块存储于查询数据库中的存储模块中,并使得该调整后的增量数据文件能够进行高效的交互查询。[〇〇87]可选地,调整单元包括:裂变模块,用于若增量数据文件的文件数据容量大于存储单元的预设文件数据容量,则根据增量数据文件的索引将增量数据文件中存储的各个记录项进行排序,根据排序的结果将增量数据文件拆分成一个或多个预设文件数据容量的数据文件和一个拆分文件,其中,拆分文件的数据容量小于等于预设文件数据容量,数据文件和拆分文件中包括多个记录项,每个索引与各个记录项---对应。
[0088]在上述实施例中,对比结果显示增量数据文件的文件数据容量大于存储单元的预设文件数据容量,那么将增量数据文件中的各个记录项按照该记录项对应的索引进行排序,可以选取排序在预设范围内的索引对应的多个记录项作为一个数据文件,该数据文件的数据容量可以等于预设文件数据容量,并将该数据文件从原来的增量数据文件中拆分出来(即裂变),拆分出来后剩余的记录项可以作为上述的拆分文件,然后可以更新经过拆分后的数据文件和拆分文件对应的索引。通过上述实施例,可以实现将较大的增量数据文件有效的进行拆分的效果。
[0089]可选地,调整单元包括:聚变模块,用于若增量数据文件的文件数据容量小于存储单元的预设文件数据容量,则根据增量数据文件的索引将增量数据文件中存储的各个记录项进行排序,根据排序的结果将多个增量数据文件聚变成一个或多个预设文件数据容量的数据文件和一个聚变子文件,其中,聚变子文件的数据容量小于等于预设文件数据容量,数据文件和聚变子文件包括多个记录项,每个索引与各个记录项--对应。
[0090]在上述实施例中,当对比结果显示增量数据文件的文件数据容量小于存储单元的预设文件数据容量,那么也可以将增量数据文件中的各个记录项按照该记录项对应的索引进行排序,可以选取多个增量数据文件中排序在预设范围内的索引对应的多个记录项合并 (即聚变),作为一个数据文件,该数据文件的数据容量可以等于预设文件数据容量,并将原来的多个增量数据文件中剩下的记录项合并,作为聚变子文件,然后可以更新经过合并后的数据文件和聚变子文件对应的索引。通过上述实施例,可以实现将较大的增量数据文件有效的进行合并的效果。
[0091]可选地,查找单元包括:判断模块,用于判断各个数据文件的索引的范围是否包括增量数据文件的主键;第一确定模块,用于若存在数据文件的索引的范围包括主键,则将索引确定为目标索引。
[0092]在上述实施例中,在查找与主键匹配的目标索引的过程可以理解为,在各个数据文件的索引的范围若包括增量数据文件的主键,则确定该索引为目标索引。通过上述实施例,可以高效的通过主键和索引获取到目标索引。
[0093]可选地,第一更新单元或者第二更新单元包括:第二确定模块,用于根据目标数据文件的文件名确定与目标数据文件对应的临时文件;保存模块,用于将增量数据保存到目标数据文件对应的临时文件中;合并模块,用于将临时文件与目标数据文件合并。
[0094]在上述实施例中,在更新目标数据文件时,可以先根据增量数据的主键查找到与该主键匹配的目标索引,根据该目标索引找到对应的目标数据文件,并根据该目标文件的文件名确定具有相同文件名的临时文件,该临时文件与该目标文件相对应,可以先将该增量数据存储到该临时文件中,并定时将该临时文件与目标数据文件进行合并,以达到利用临时文件中的增量数据更新目标数据文件的效果。
[0095]可选地,增量数据为多个,装置还包括:并行单元,用于在将增量数据保存到目标数据文件对应的临时文件中的同时,并行将临时文件与目标数据文件合并。
[0096]在上述实施例中,并行执行将增量数据保存到目标数据文件对应的临时文件中的环节、以及将临时文件与目标数据文件合并环节,可以实现提高数据处理效率的效果。
[0097]可选地,装置包括:第三获取单元,用于在从各个数据文件的索引中,查找与主键匹配的目标索引之前,获取分区字段,将数据文件按照分区字段进行分区,得到多个分区数据文件;查找单元包括:查找模块,用于在分区数据文件的索引中查找与主键对应的索引。
[0098]在上述的实施例中,可以先获取分区字段,将数据文件按照分区字段进行分区,得到多个分区数据文件,然后在分区数据文件的索引中查找与主键对应的索引。通过上述实施例,可以提尚查找的效率。
[0099]上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0100]在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0101]在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接, 可以是电性或其它的形式。
[0102]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0103]另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。[〇1〇4]所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(R0M,Read-0nly Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0105]以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
【主权项】
1.一种基于局部更新软件的数据处理方法,其特征在于,包括:从消息队列中读取关系型数据库的增量数据;获取查询数据库中的各个数据文件的索引和所述增量数据的主键;从所述各个数据文件的索引中,查找与所述主键匹配的目标索引;在查找到所述目标索引的情况下,在确定所述目标索引所对应的目标数据文件之后, 利用所述增量数据更新所述目标数据文件,得到增量数据文件,其中,所述数据文件包括所述目标数据文件。2.根据权利要求1所述的方法,其特征在于,在查找与所述主键匹配的目标索引之后, 所述方法还包括:在未查找到所述目标索引的情况下,新建目标数据文件;利用所述增量数据更新所述目标数据文件,得到增量数据文件。3.根据权利要求1所述的方法,其特征在于,在得到增量数据文件之后,所述方法包括: 获取所述查询数据库的存储单元的预设文件数据容量,其中,所述存储单元用于存储所述增量数据文件;根据所述预设文件数据容量和所述增量数据文件的文件数据容量的对比结果,对所述 增量数据文件进行调整,得到调整后的增量数据文件。4.根据权利要求3所述的方法,其特征在于,根据所述预设文件数据容量和所述增量数 据文件的文件数据容量的对比结果,对所述增量数据文件进行调整,得到调整后的增量数 据文件包括:若所述增量数据文件的文件数据容量大于所述存储单元的预设文件数据容量,则根据 所述增量数据文件的索引将所述增量数据文件中存储的各个记录项进行排序,根据所述排 序的结果将所述增量数据文件拆分成一个或多个所述预设文件数据容量的数据文件和一 个拆分文件,其中,所述拆分文件的数据容量小于等于所述预设文件数据容量,所述数据文 件和所述拆分文件中包括多个所述记录项,每个所述索引与各个所述记录项一一对应。5.根据权利要求3所述的方法,其特征在于,根据所述预设文件数据容量和所述增量数 据文件的文件数据容量的对比结果,对所述增量数据文件进行调整,得到调整后的增量数 据文件包括:若所述增量数据文件的文件数据容量小于所述存储单元的预设文件数据容量,则根据 所述增量数据文件的索引将所述增量数据文件中存储的各个记录项进行排序,根据所述排 序的结果将多个所述增量数据文件聚变成一个或多个所述预设文件数据容量的数据文件 和一个聚变子文件,其中,所述聚变子文件的数据容量小于等于所述预设文件数据容量,所 述数据文件和所述聚变子文件包括多个所述记录项,每个所述索引与所述各个记录项一一 对应。6.根据权利要求1所述的方法,其特征在于,从所述各个数据文件的索引中,查找与所 述主键匹配的目标索引包括:判断所述各个数据文件的索引的范围是否包括所述增量数据文件的主键;若存在数据文件的所述索引的范围包括所述主键,则将所述索引确定为所述目标索 引。7.根据权利要求1或2所述的方法,其特征在于,利用所述增量数据更新所述目标数据文件包括:根据所述目标数据文件的文件名确定与所述目标数据文件对应的临时文件;将所述增量数据保存到所述目标数据文件对应的临时文件中;将所述临时文件与所述目标数据文件合并。8.根据权利要求7所述的方法,其特征在于,所述增量数据为多个,所述方法还包括: 在将所述增量数据保存到所述目标数据文件对应的临时文件中的同时,并行将所述临时文件与所述目标数据文件合并。9.根据权利要求8所述的方法,其特征在于,在从所述各个数据文件的索引中,查找与所述主键匹配的目标索引之前,所述方法包 括:获取分区字段,将所述数据文件按照所述分区字段进行分区,得到多个分区数据文件; 从所述各个数据文件的索引中,查找与所述主键匹配的目标索引包括:在所述分区数 据文件的索引中查找与所述主键对应的所述索引。10.根据权利要求1所述的方法,其特征在于,所述增量数据为用于对所述关系型数据 库进行插入、修改或删除操作的数据,所述查询数据库为Impala数据库。11.一种基于局部更新软件的数据处理装置,其特征在于,包括:读取单元,用于从消息队列中读取关系型数据库的增量数据;第一获取单元,用于获取查询数据库中的各个数据文件的索引和所述增量数据的主 键;查找单元,用于从所述各个数据文件的索引中,查找与所述主键匹配的目标索引; 第一更新单元,用于在查找到所述目标索引的情况下,在确定所述目标索引所对应的 目标数据文件之后,利用所述增量数据更新所述目标数据文件,得到增量数据文件,其中,所述数据文件包括所述目标数据文件。12.根据权利要求11所述的装置,其特征在于,所述装置还包括:新建单元,用于在查找与所述主键匹配的目标索引之后,在未查找到所述目标索引的 情况下,新建目标数据文件;第二更新单元,用于利用所述增量数据更新所述目标数据文件,得到增量数据文件。13.根据权利要求11所述的装置,其特征在于,所述装置包括:第二获取单元,用于在得到增量数据文件之后,获取所述查询数据库的存储单元的预 设文件数据容量,其中,所述存储单元用于存储所述增量数据文件;调整单元,用于根据所述预设文件数据容量和所述增量数据文件的文件数据容量的对 比结果,对所述增量数据文件进行调整,得到调整后的增量数据文件。14.根据权利要求13所述的装置,其特征在于,所述调整单元包括:裂变模块,用于若所述增量数据文件的文件数据容量大于所述存储单元的预设文件数 据容量,则根据所述增量数据文件的索引将所述增量数据文件中存储的各个记录项进行排 序,根据所述排序的结果将所述增量数据文件拆分成一个或多个所述预设文件数据容量的 数据文件和一个拆分文件,其中,所述拆分文件的数据容量小于等于所述预设文件数据容 量,所述数据文件和所述拆分文件中包括多个所述记录项,每个所述索引与各个所述记录 项——对应。15.根据权利要求13所述的装置,其特征在于,所述调整单元包括:聚变模块,用于若所述增量数据文件的文件数据容量小于所述存储单元的预设文件数 据容量,则根据所述增量数据文件的索引将所述增量数据文件中存储的各个记录项进行排 序,根据所述排序的结果将多个所述增量数据文件聚变成一个或多个所述预设文件数据容 量的数据文件和一个聚变子文件,其中,所述聚变子文件的数据容量小于等于所述预设文 件数据容量,所述数据文件和所述聚变子文件包括多个所述记录项,每个所述索引与所述 各个记录项--对应。16.根据权利要求11所述的装置,其特征在于,所述查找单元包括:判断模块,用于判断所述各个数据文件的索引的范围是否包括所述增量数据文件的主 键;第一确定模块,用于若存在数据文件的所述索引的范围包括所述主键,则将所述索引 确定为所述目标索引。17.根据权利要求11或12所述的装置,其特征在于,所述第一更新单元或者所述第二更 新单元包括:第二确定模块,用于根据所述目标数据文件的文件名确定与所述目标数据文件对应的 临时文件;保存模块,用于将所述增量数据保存到所述目标数据文件对应的临时文件中;合并模块,用于将所述临时文件与所述目标数据文件合并。18.根据权利要求17所述的装置,其特征在于,所述增量数据为多个,所述装置还包括:并行单元,用于在将所述增量数据保存到所述目标数据文件对应的临时文件中的同时,并行将所述临时文件与所述目标数据文件合并。19.根据权利要求18所述的装置,其特征在于,所述装置包括:第三获取单元,用于在从所述各个数据文件的索引中,查找与所述主键 匹配的目标索引之前,获取分区字段,将所述数据文件按照所述分区字段进行分区,得到多 个分区数据文件;所述查找单元包括:查找模块,用于在所述分区数据文件的索引中查找与所述主键对 应的所述索引。20.根据权利要求11所述的装置,其特征在于,所述增量数据为用于对所述关系型数据 库进行插入、修改或删除操作的数据,所述查询数据库为Impala数据库。
【文档编号】G06F17/30GK105956123SQ201610297050
【公开日】2016年9月21日
【申请日】2016年5月3日
【发明人】李银苗
【申请人】无锡雅座在线科技发展有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1