数据加载方法和***
技术领域
本申请涉及数据加载技术领域,进一步涉及关系型数据库的数据快速加载,具体涉及一种数据加载方法和***。
背景技术
随着社会信息化的发展,近年来全球最大数据库的容量呈指数增长趋势,如何对海量数据进行存储、及时加载和高效查询成为数据库应用研究领域的热点之一。
目前常用的数据加载方式为,根据数据的主键,分批查询得到数据,进行计算,再根据数据主键删除数据,或更新数据状态为已加载。
普通的多线程数据加载方式可能会重复加载单条(组)数据,而标记数据状态为已加载的过程耗时较长。因此上述数据加载方式用时较长,难以满足高速加载数据的需求,同时对并发读取的支持不够,难以满足大数据计算对时效的要求。
发明内容
鉴于现有技术中的上述缺陷或不足,期望提供一种避免重复加载数据且支持分布式并发加载数据的数据加载方法和***。
第一方面,本发明提供一种数据加载方法,所述方法包括:
按预设规则生成对应于待加载数据的分片信息表。其中,所述分片信息表包括所述待加载数据中每组数据的数据表主键和对应的分片索引。
在各节点的配置文件中分别配置本节点所要处理的分片索引和任务数。
各节点的任务分配单元分别读取本节点的配置文件,配置本节点中加载所述待加载数据的任务执行单元的数量。
各任务执行单元根据本节点的任务分配单元分配的分片索引加载对应的数据,删除所加载数据在所述分片信息表中的数据表主键。
第二方面,本发明还提供一种数据加载***,所述***包括若干节点,其中至少一个节点包括:
分片信息配置单元,用于按预设规则生成对应于待加载数据的分片信息表,在各所述节点的配置文件中分别配置本节点所要处理的分片索引和任务数。其中,所述分片信息表包括所述待加载数据中每组数据的数据表主键和对应的分片索引。
各所述节点分别包括:
任务分配单元,用于读取本节点的配置文件,配置本节点中加载所述待加载数据的任务执行单元的数量。
若干任务执行单元,用于根据本节点的任务分配单元分配的分片索引加载对应的数据,删除所加载数据在所述分片信息表中的数据表主键。
本发明诸多实施例提供的数据加载方法和***通过对待加载数据进行分片,生成包括分片索引和数据主键的分片信息表,通过分片索引对各节点分配加载任务,并在加载数据时删除分片信息表中对应的数据主键,实现了避免重复加载数据的同时支持分布式并发加载数据,并且无需在数据库中标记加载状态,提高了加载速度;
本发明一些实施例提供的数据加载方法和***进一步通过对待加载数据中每组数据的预定字段进行哈希运算和求余运算,得到对应的分片索引,从而生成分片信息表,实现对待加载数据的均匀分片,从而提高了加载效率;
本发明一些实施例提供的数据加载方法和***进一步通过根据***内的节点数量和每个节点的工作状态确定分片数量,实现对各节点分配适量的加载任务,从而提高了加载效率;
本发明一些实施例提供的数据加载方法和***进一步通过各节点的各任务执行单元在加载数据时执行预设的运算任务,提高了***内计算资源的利用率。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1为本发明一实施例中数据加载方法的流程图。
图2为本发明一实施例中数据加载***中一节点的结构示意图。
图3为图1所示数据加载方法中步骤S10的流程图。
图4为图3所示步骤S10的一种优选实施方式的流程图。
图5为图1所示数据加载方法中步骤S70的流程图。
图6为图5所示步骤S70的一种优选实施方式的流程图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1为本发明一实施例中数据加载方法的流程图。
如图1所示,在本实施例中,本发明提供的数据加载方法包括:
S10:按预设规则生成对应于待加载数据的分片信息表。其中,所述分片信息表包括所述待加载数据中每组数据的数据表主键和对应的分片索引。
S30:在各节点的配置文件中分别配置本节点所要处理的分片索引和任务数。
S50:各节点的任务分配单元分别读取本节点的配置文件,配置本节点中加载所述待加载数据的任务执行单元的数量。
S70:各任务执行单元根据本节点的任务分配单元分配的分片索引加载对应的数据,删除所加载数据在所述分片信息表中的数据表主键。
图2为本发明一实施例中数据加载***中一节点的结构示意图。所述***包括若干节点,图1所示的数据加载方法可以应用在所述***中。
如图2所示,所述若干节点中的至少一个节点10包括分片信息配置单元101。分片信息配置单元101用于按预设规则生成对应于待加载数据的分片信息表,在各所述节点的存储单元102所存储的配置文件中分别配置本节点所要处理的分片索引和任务数。其中,所述分片信息表包括所述待加载数据中每组数据的数据表主键和对应的分片索引。
各所述节点还包括一个任务分配单元103和若干个任务执行单元105。
任务分配单元103用于读取本节点的配置文件,配置本节点中加载所述待加载数据的任务执行单元105的数量。
任务执行单元105用于根据本节点的任务分配单元103分配的分片索引加载对应的数据,删除所加载数据在所述分片信息表中的数据表主键。
具体地,在本实施例中,所述待加载数据采用分布式的存储方式存储在各所述节点中,所述***中的所有节点均配置有分片信息配置单元101。在更多的实施例中,可以根据实际需求选择将所述待加载数据存储在一个或若干个节点中,同时可以根据实际需求选择在一个或若干个节点中配置分片信息配置单元101,只要***中有一个节点的分片信息配置单元101能按预设规则生成对应于待加载数据的分片信息表,即可实现相同的技术效果。
上述实施例通过对待加载数据进行分片,生成包括分片索引和数据主键的分片信息表,通过分片索引对各节点分配加载任务,并在加载数据时删除分片信息表中对应的数据主键,实现了避免重复加载数据的同时支持分布式并发加载数据,并且无需在数据库中标记加载状态,提高了加载速度。
此外,在加载海量数据时,由于上述方法中的步骤是持续进行的,因此上述方法的步骤可以同时进行,在步骤S10中,分片信息配置单元101持续向分片信息表写入每组数据的数据表主键和对应的分片索引的同时,步骤S70中,任务执行单元105同时在分片信息表中不断删除已加载数据的数据表主键,从而使分片信息表中的数据保持较少的体量,而不会无限增长,从而保障了在加载海量数据时,数据加载的效率不受影响。
图3为图1所示数据加载方法中步骤S10的流程图。
如图3所示,在一优选实施例中,步骤S10包括:
S103:根据分片数量生成分片索引。
S105:对所述待加载数据中每组数据的预定字段进行哈希运算和求余运算,得到对应的分片索引,在分片信息表中存储本组数据的数据表主键和对应的分片索引。
在与上述数据加载方法对应的数据加载***中,分片信息配置单元101还用于根据分片数量生成所述分片索引。所述按预设规则生成对应于待加载数据的分片信息表包括对所述待加载数据中每组数据的预定字段进行哈希运算和求余运算,得到对应的分片索引,在分片信息表中存储本组数据的数据表主键和对应的分片索引。
具体地,在本实施例中,所述每组数据为每组运单信息,所述预定字段为运单号。
在步骤S103中,例如分片数量为n,则分片索引为0、1…n-1。
在步骤S105中,对于每一组运单信息的运单号mx进行哈希运算和求余运算,对mx的哈希值取除以n的余数,其中x为该组运单信息的数据表主键,得到对应的分片索引i:
i=hash(mx)mod n;
并在所述分片信息表中存储本组数据的数据表主键和对应的分片索引(i,x)。
上述实施例进一步通过对待加载数据中每组数据的预定字段进行哈希运算和求余运算,得到对应的分片索引,从而生成分片信息表,实现对待加载数据的均匀分片,从而提高了加载效率。
图4为图3所示步骤S10的一种优选实施方式的流程图。
如图4所示,在一优选实施例中,步骤S103之前还包括:
S101:根据***内的节点数量和每个节点的工作状态确定分片数量。
相对应地,分片信息配置单元101还用于根据***内的节点数量和每个节点的工作状态确定分片数量。
上述实施例进一步通过根据***内的节点数量和每个节点的工作状态确定分片数量,实现对各节点分配适量的加载任务,从而提高了加载效率。
图5为图1所示数据加载方法中步骤S70的流程图。
如图5所示,在一优选实施例中,步骤S70包括:
S701:各任务执行单元分别获取本节点的任务分配单元分配的分片索引。
S703:各任务执行单元在所述分片信息表中读取与所获取分片索引对应的各数据表主键,根据所读取的各数据表主键加载对应的各组数据。
S705:在所述分片信息表中删除所加载各组数据对应的各数据表主键。
S707:向本节点的任务分配单元归还加载完数据的分片索引,循环上述步骤直至任务分配单元分配完配置文件中的分片索引。
相对应地,任务执行单元105用于获取本节点的任务分配单元103分配的分片索引;在所述分片信息表中读取与所获取分片索引对应的各数据表主键,根据所读取的各数据表主键加载对应的各组数据;在所述分片信息表中删除所加载各组数据对应的各数据表主键;向本节点的任务分配单元归还加载完数据的分片索引。
图6为图5所示步骤S70的一种优选实施方式的流程图。
如图6所示,在一优选实施例中,步骤S705之前还包括:
S704:根据所加载的数据执行预设的运算任务。
相对应地,任务执行单元105还用于根据所加载的数据执行预设的运算任务。
上述实施例进一步通过各节点的各任务执行单元在加载数据时执行预设的运算任务,提高了***内计算资源的利用率。
附图中的流程图和框图,图示了按照本发明各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这根据所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以通过执行规定的功能或操作的专用的基于硬件的***来实现,或者可以通过专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,分片信息配置单元101可以是设置在计算机或移动智能设备中的软件程序,也可以是单独进行分片信息配置的硬件。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定,例如,任务执行单元105还可以被描述为“用于加载数据的数据加载单元”。
作为另一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中所述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本申请的公式输入方法。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。