CN110597618B - 一种数据交换系统的任务拆分方法及装置 - Google Patents

一种数据交换系统的任务拆分方法及装置 Download PDF

Info

Publication number
CN110597618B
CN110597618B CN201910686475.3A CN201910686475A CN110597618B CN 110597618 B CN110597618 B CN 110597618B CN 201910686475 A CN201910686475 A CN 201910686475A CN 110597618 B CN110597618 B CN 110597618B
Authority
CN
China
Prior art keywords
splitting
data
exchanged
task
current task
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910686475.3A
Other languages
English (en)
Other versions
CN110597618A (zh
Inventor
徐伟
孙迁
郭文凭
刘啊龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SuningCom Co ltd
Original Assignee
Suning Cloud Computing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Suning Cloud Computing Co Ltd filed Critical Suning Cloud Computing Co Ltd
Priority to CN201910686475.3A priority Critical patent/CN110597618B/zh
Publication of CN110597618A publication Critical patent/CN110597618A/zh
Application granted granted Critical
Publication of CN110597618B publication Critical patent/CN110597618B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种数据交换系统的任务拆分方法及装置,该方法包括:判断当前任务的数据表中待交换数据的数据源的类型,若数据源是关系数据库,则根据待交换数据的类型选择相应的查询语句;解析查询语句,根据解析结果判定查询语句的复杂度;若复杂度满足预设条件,则查询待交换数据的数据量;根据待交换数据的数据量,从预设的拆分策略中选取对应的拆分策略,预设的拆分策略包括分页拆分策略、主键字段拆分策略和不拆分策略;根据选取的拆分策略对所述当前任务进行拆分。本发明通过根据待交换数据对应的查询语句的复杂度以及待交换数据的数据量从预设的拆分策略中选取对应的拆分策略,实现动态的对当前任务进行拆分,获取最优拆分效果。

Description

一种数据交换系统的任务拆分方法及装置
技术领域
本发明涉及数据交换技术领域,特别涉及一种数据交换系统的任务拆分方法及装置。
背景技术
在大数据背景下,对数据交换的效率要求越来越高,需要任务可以分布式并发执行。在并发执行时,合理的任务分拆策略显得尤为重要。目前通用异构数据交换技术市场上主要有datax、flinkx、datastage等,上述数据交换技术虽然支持异构数据源传输,但是也存在其局限性,如上述方法均为静态数据策略,不会根据数据量大小动态的设置数据分配策略等。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种数据交换系统的任务拆分方法及装置,以克服现有技术中不会根据数据量大小动态的设置数据分配策略等问题。
为解决上述一个或多个技术问题,本发明采用的技术方案是:
一方面,提供了一种数据交换系统的任务拆分方法,该方法包括如下步骤:
判断当前任务的数据表中待交换数据的数据源的类型,若所述数据源是关系数据库,则根据所述待交换数据的类型选择相应的查询语句;
解析所述查询语句,根据解析结果判定所述查询语句的复杂度;
若所述复杂度满足预设条件,则查询所述待交换数据的数据量;
根据所述待交换数据的数据量,从预设的拆分策略中选取对应的拆分策略,所述预设的拆分策略包括分页拆分策略、主键字段拆分策略和不拆分策略;
根据选取的所述拆分策略对所述当前任务进行拆分。
进一步的,所述解析所述查询语句的,根据解析结果判定所述查询语句的复杂度包括:
解析所述查询语句,至少获取所述查询语句中的表关联次数以及分析函数个数,根据所述表关联次数和/或所述分析函数个数判定所述查询语句的复杂度。
进一步的,所述根据所述待交换数据的数据量,从预设的拆分策略中选取对应的拆分策略包括:
获取数据量阈值(n,m],其中n和m为正整数,且n<m,将所述待交换数据的数据量与所述数据量阈值进行比较,若所述数据表的数据量在所述数据量阈值范围内,则选取分页拆分策略,若所述数据表的数据量>m,则选取主键字段拆分策略,若所述数据表的数据量≤n,则选取不拆分策略。
进一步的,若拆分策略为分页拆分策略,则所述根据选取的所述拆分策略对所述当前任务进行拆分包括:
根据所述待交换数据的数据量设置并发子任务的数量,将所述待交换数据按照所述并发子任务的数量进行等份拆分后分配至各并发子任务。
进一步的,若拆分策略为主键字段拆分策略,则所述根据选取的所述拆分策略对所述当前任务进行拆分包括:
查询所述当前任务的数据表的主键字段,获取所述主键字段中的最大值以及最小值;
设置并发子任务个数,根据所述并发子任务个数、所述最大值以及所述最小值计算得到步长;
根据所述步长对所述当前任务的数据表进行拆分,将拆分得到的子数据表分配至各并发子任务。
进一步的,若查询到的所述当前任务的数据表的主键字段为字符类型的主键字段,则所述根据选取的所述拆分策略对所述当前任务进行拆分包括:
将所述字符类型的主键字段转换成Ascii码数值类型,设置主键字段中各个字段的权重后根据所述权重计算得到所述Ascii码的值;
将所述Ascii码的值转换成新的字符串,若所述新的字符串的长度大于1,则获取并发子任务个数;
按照所述并发子任务个数从左向右截取所述新的字符串,对所述当前任务的数据表进行拆分,将拆分得到的子数据表分配至各并发子任务。
进一步的,所述方法还包括:
若查询到所述当前任务的数据表没有主键,则将预设的字段设置为主键字段。
进一步的,所述方法还包括:
若所述数据源是文件系统,则按照文件大小对当前任务包含的所有文件进行排序;
设置并发子任务个数,根据所述并发子任务个数对排序后的文件进行拆分,并将拆分后的文件分配至各并发子任务。
进一步的,所述方法还包括:
若所述复杂度不满足所述预设条件,则不对所述当前任务进行拆分。
另一方面,提供了一种数据交换系统的任务拆分装置,所述装置包括:
类型判断模块,用于当前任务的数据表中待交换数据的数据源的类型;
语句选取模块,用于若所述数据源是关系数据库,则根据所述待交换数据的类型选择相应的查询语句;
复杂度判定模块,用于解析所述查询语句,根据解析结果判定所述查询语句的复杂度;
数据量查询模块,用于若所述复杂度满足预设条件,则查询所述待交换数据的数据量;
策略选取模块,用于根据所述待交换数据的数据量,从预设的拆分策略中选取对应的拆分策略,所述预设的拆分策略包括分页拆分策略、主键字段拆分策略和不拆分策略;
任务拆分模块,用于根据选取的所述拆分策略对所述当前任务进行拆分。
进一步的,所述复杂度判定模块包括:
语句解析单元,用于解析所述查询语句,至少获取所述查询语句中的表关联次数以及分析函数个数;
复杂度判定单元,用于根据所述表关联次数和/或所述分析函数个数判定所述查询语句的复杂度。
进一步的,所述策略选取模块包括:
阈值获取单元,用于获取数据量阈值(n,m],其中n和m为正整数,且n<m;
数据比较单元,用于将所述待交换数据的数据量与所述数据量阈值进行比较;
策略选取单元,用于若所述数据表的数据量在所述数据量阈值范围内,则选取分页拆分策略,若所述数据表的数据量>m,则选取主键字段拆分策略,若所述数据表的数据量≤n,则选取不拆分策略。
进一步的,所述任务拆分模块包括:
数量设置单元,用于根据所述待交换数据的数据量设置并发子任务的数量;
任务拆分单元,用于将所述待交换数据按照所述并发子任务的数量进行等份拆分后分配至各并发子任务。
进一步的,所述任务拆分模块还包括:
主键查询单元,用于查询所述当前任务的数据表的主键字段,获取所述主键字段中的最大值以及最小值;
步长计算单元,用于设置并发子任务个数,根据所述并发子任务个数、所述最大值以及所述最小值计算得到步长;
所述任务拆分单元还用于根据所述步长对所述当前任务的数据表进行拆分,将拆分得到的子数据表分配至各并发子任务。
进一步的,所述任务拆分模块还包括:
第一转换单元,用于将所述字符类型的主键字段转换成Ascii码数值类型;
数值计算单元,用于设置主键字段中各个字段的权重后根据所述权重计算得到所述Ascii码的值;
第二转换单元,用于将所述Ascii码的值转换成新的字符串;
信息获取单元,用于若所述新的字符串的长度大于1,则获取并发子任务个数;
所述任务拆分单元还用于按照所述并发子任务个数从左向右截取所述新的字符串,对所述当前任务的数据表进行拆分,将拆分得到的子数据表分配至各并发子任务。
进一步的,所述任务拆分模块还包括:
主键设置单元,用于若查询到所述当前任务的数据表没有主键,则将预设的字段设置为主键字段。
进一步的,所述任务拆分模块还包括:
文件排序单元,用于若所述数据源是文件系统,则按照文件大小对当前任务包含的所有文件进行排序;
所述任务拆分单元还用于设置并发子任务个数,根据所述并发子任务个数对排序后的文件进行拆分,并将拆分后的文件分配至各并发子任务。
本发明实施例提供的技术方案带来的有益效果是:
本发明实施例提供的数据交换系统的任务拆分方法及装置,通过根据待交换数据对应的查询语句的复杂度判定是否对当前任务进行拆分,同时通过根据待交换数据的数据量从预设的拆分策略中选取对应的拆分策略,实现动态的对当前任务进行拆分,获取最优拆分效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据一示例性实施例示出的数据交换系统的任务拆分方法的流程图;
图2是根据一示例性实施例示出的根据选取的主键字段拆分策略对当前任务进行拆分的流程图;
图3是根据一示例性实施例示出的根据字符型主键字段拆分策略对当前任务进行拆分的的流程图;
图4是根据一示例性实施例示出的数据交换系统的任务拆分装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是根据一示例性实施例示出的数据交换系统的任务拆分方法的流程图,参照图1所示,该方法包括如下步骤:
S1:判断当前任务的数据表中待交换数据的数据源的类型,若所述数据源是关系数据库,则根据所述待交换数据的类型选择相应的查询语句。
具体的,本发明实施例提供的数据交换系统的任务拆分方法及装置,主要支持的数据源包括关系数据库(RDB)和分布式文件系统(HDFS),针对不同的数据源采用不同的任务拆分策略。关系数据库(Relational Database,RDB)就是基于关系模型的数据库,也叫关系型数据库。在计算机中,关系数据库是数据和数据库对象的集合。所谓数据库对象是指表、视图、存储过程、触发器等。关系数据库是由数据表和数据表之间的关系组成的。关系数据库的数据类型包括mysql、oracle等。因此,本发明实施例中,在对数据交换系统的当前任务进行拆分前,首先会判断当前任务的数据表中待交换数据的数据源的类型,然后根据不同的类型选取不同的拆分策略对当前任务进行拆分。当查询到数据源是关系数据库后,还需根据待交换数据的数据类型(如mysql、oracle等)选择相应的查询语句。这里需要说明的是,作为一种较优的实施方式,本发明实施例中,查询语句的语言采用结构化查询语言(即SQL)。
S2:解析所述查询语句,根据解析结果判定所述查询语句的复杂度。
具体的,本发明实施例中设置根据查询语句的复杂度决定是否对当前任务进行拆分,因此需要获取查询语句的复杂度。具体实施时,可以通过对查询语句进行解析判定查询语句的复杂度。其中,可以采用开源的druid的语法解析功能对查询语句进行查询。
这里需要说明的是,本发明实施例中,在解析查询语句前,会对查询语句的语法正确性进行校验,例如检查语句是否完整、语法是否正确等。若校验通过,则执行下一步骤,否则,返回对重新获取相应查询语句或者对获取到的查询语句进行修改后重新进行校验,直到校验通过。在对查询语句的正确性进行校验时,同样可以采用开源的druid。
S3:若所述复杂度满足预设条件,则查询所述待交换数据的数据量。
具体的,若是查询语句的复杂度满足预设条件,则需要对当前任务进行拆分。本发明实施例中,预设条件可以设定为查询语句的复杂度低。由于进行任务拆分时还需要考虑待交换数据的数据量(row count),因此在确认复杂度满足预设条件后,首先需要查询待交换数据的数据量。
S4:根据所述待交换数据的数据量,从预设的拆分策略中选取对应的拆分策略,所述预设的拆分策略包括分页拆分策略、主键字段拆分策略和不拆分策略。
具体的,本发明实施例中,会根据数据量大小预先设置对应的拆分策略,包括分页拆分策略、主键字段拆分策略和不拆分策略等。查询到待交换数据的数据量后,根据待交换数据的数据量,从预设的拆分策略中选取对应的拆分策略。
S5:根据选取的所述拆分策略对所述当前任务进行拆分。
具体的,拆分策略确定后,根据相应的拆分策略对当前任务进行拆分。
作为一种较优的实施方式,本发明实施例中,所述解析所述查询语句的,根据解析结果判定所述查询语句的复杂度包括:
解析所述查询语句,至少获取所述查询语句中的表关联次数以及分析函数个数,根据所述表关联次数和/或所述分析函数个数判定所述查询语句的复杂度。
具体的,查询语句的复杂度和表关联次数(relation count)、分析函数个数(analytic functions count)等因素相关。其中,在关系型数据库中,表的关联是一个非常重要的组成部分。表的关联是指数据库中的数据表与数据表之间使用相应的字段实现数据表的连接。使用这种连接,无须将相同的数据多次存储,这种连接在进行多表查询时非常重要。因此,解析查询语句时,至少获取查询语句中的表关联次数以及分析函数个数。然后根据表关联次数和/或分析函数个数判定查询语句的复杂度。本发明实施例中,设置若是表关联次数大于2次,或者分析函数个数大于1个,则判定查询语句的复杂度高,否则,判定查询语句的复杂度低。
作为一种较优的实施方式,本发明实施例中,所述根据所述待交换数据的数据量,从预设的拆分策略中选取对应的拆分策略包括:
获取数据量阈值(n,m],其中n和m为正整数,且n<m,将所述待交换数据的数据量与所述数据量阈值进行比较,若所述数据表的数据量在所述数据量阈值范围内,则选取分页拆分策略,若所述数据表的数据量>m,则选取主键字段拆分策略,若所述数据表的数据量≤n,则选取不拆分策略。
具体的,这里的数据量的阈值可以根据实际需求进行设置,这里对具体数值不做限定。但是,作为一种较优的实施方式,可以设置n=10000,m=1000000,将待交换数据的数据量与数据量阈值进行比较,若数据表的数据量在数据量阈值范围内,即数据量在区间(10000,1000000]内,则选取分页拆分策略,若数据表的数据量>m,即数据量大于1000000时,因为数据库的分页随着数据量的增加,性能会有非常明显的衰减,所以此种情况,分页拆分不再合适,此时选取主键字段拆分策略,若数据表的数据量≤n,即数据量小于10000时,数据量过小,可以不用进行拆分,因此选取不拆分策略。
作为一种较优的实施方式,本发明实施例中,若拆分策略为分页拆分策略,则所述根据选取的所述拆分策略对所述当前任务进行拆分包括:
根据所述待交换数据的数据量设置并发子任务的数量,将所述待交换数据按照所述并发子任务的数量进行等份拆分后分配至各并发子任务。
具体的,根据待交换数据的数据量设置并发子任务的数量,例如假设数据量为1000000,并发子任务的数量为10个,则将待交换数据按照1~100000,100001~200000……等份拆分为10份,然后将这10份数据分配至上述10个子任务。
图2是根据一示例性实施例示出的根据选取的主键字段拆分策略对当前任务进行拆分的流程图,参照图2所示,作为一种较优的实施方式,本发明实施例中,若拆分策略为主键字段拆分策略,则所述根据选取的所述拆分策略对所述当前任务进行拆分包括:
S101:查询所述当前任务的数据表的主键字段,获取所述主键字段中的最大值以及最小值。
具体的,查询数据表的主键字段,若是主键是联合主键,则默认选取第一个。主键的类型包括数值型、字符型等。若是查询到的主键的类型为数值型,则获取主键字段中的最大值和最小值。
S102:设置并发子任务个数,根据所述并发子任务个数、所述最大值以及所述最小值计算得到步长。
具体的,本发明实施例中,对并发子任务的数量不做限制,可以进行自定义,即用户可以根据实际需求设置并发子任务的数量。然后根据并发子任务的数量、最大值以及最小值计算步长。作为一种示例,计算步长时可以采用以下公式:步长=(最大值-最小值)/并发子任务的数量+1,其中步长需进行取整处理。例如,假设最大值max=5,最小值min=1,并发子任务的数量为3,则步长=(max-min)/并发子任务的数量+1=(5-1)/3+1=4/3+1,进行取整处理后,步长值为2。
S103:根据所述步长对所述当前任务的数据表进行拆分,将拆分得到的子数据表分配至各并发子任务。
具体的,根据步长对当前任务的数据表进行拆分,具体拆分时,按照主键值从小到大的顺序将数据表按照步长进行拆分,然后将得到的子数据表分配至各并发子任务。例如,假设最大值max=5,最小值min=1,并发子任务的数量为3,计算出步长=2,则将数据表按照步长拆分为[1,3),[3,4],(4,5]三个任务。
图3是根据一示例性实施例示出的根据字符型主键字段拆分策略对当前任务进行拆分的流程图,参照图3所示,作为一种较优的实施方式,本发明实施例中,若查询到的所述当前任务的数据表的主键字段为字符类型的主键字段,则所述根据选取的所述拆分策略对所述当前任务进行拆分包括:
S201:将所述字符类型的主键字段转换成Ascii码数值类型,设置主键字段中各个字段的权重后根据所述权重计算得到所述Ascii码的值。
具体的,作为一种示例,计算Ascii码的值可以采用以下公式:
Figure BDA0002145454550000101
其中,Ni表示Ascii码的值,i表示字符型主键字段中第i个字符。
S202:将所述Ascii码的值转换成新的字符串,若所述新的字符串的长度大于1,则获取并发子任务个数。
具体的,将上述步骤得到的Ascii码的值转换成新的字符串,若是新的字符串的长度≤1,则不需要对当前任务进行拆分,若是新的字符串的长度>1,则需要对当前任务进行拆分,此时需要先获取并发子任务个数。这里需要说明的是,本发明实施例中,对这里的并发子任务的数量同样不做限制,用户可以根据实际需求进行自定义。
S203:按照所述并发子任务个数从左向右截取所述新的字符串,对所述当前任务的数据表进行拆分,将拆分得到的子数据表分配至各并发子任务。
具体的,假设新的字符串的最大值max=g,最小值min=a,并发子任务个数为3。由于a、g的Ascii值分别为97、103,因此可以拆分为[97,99),[99,101),[101,103]三段,然后根据Ascii和字符串对应关系97->a、99->c、101->e、103->g,那么[97,99),[99,101),[101,103]表达式可以转换为表达式[a,c),[c,e),[e,g],即将数据表拆分成[a,c),[c,e),[e,g]三个区间后分配至各个子任务。
作为一种较优的实施方式,本发明实施例中,所述方法还包括:
若查询到所述当前任务的数据表没有主键,则将预设的字段设置为主键字段。
具体的,若当前任务的数据表没有主键,将预设的字段作为主键进行当前任务的拆分。本发明实施例中,对预设的字段不做限制,用户可以自行指定。
作为一种较优的实施方式,本发明实施例中,所述方法还包括:
若所述数据源是文件系统,则按照文件大小对当前任务包含的所有文件进行排序。
具体的,若是查询到数据源是文件系统(如分布式文件系统,HDFS),则上述拆分策略就不再适用。此时按照文件大小对当前任务包含的所有文件进行排序。具体排序时,可以采用从小到大的顺序进行排序。
设置并发子任务个数,根据所述并发子任务个数对排序后的文件进行拆分,并将拆分后的文件分配至各并发子任务。
具体的,这里的并发子任务个数不做限制,可以进行自定义,即用户可以根据实际需求设置并发子任务的数量。根据并发子任务个数对排序后的文件进行拆分,并将拆分后的文件分配至各并发子任务。比如有5个文件,需要分拆为3个文件,按照文件从小至大的顺序排列后为:1、4、2、5、3,则拆分为(1,4),(2,5),(3)三等份。
作为一种较优的实施方式,本发明实施例中,所述方法还包括:
若所述复杂度不满足所述预设条件,则不对所述当前任务进行拆分。
具体的,本发明实施例中,复杂度不满足所述预设条件是指复杂度高,如表关联次数大于2次,或者分析函数个数大于1个,此时则不对当前任务进行拆分。因为复杂高的查询语句即使不拆分就可能会对数据库造成比较大的压力,如果再次分拆,压力就会翻倍,所以此种场景不对当前任务进行拆分。
图4是根据一示例性实施例示出的数据交换系统的任务拆分装置的结构示意图,参照图4所示,该装置包括:
类型判断模块,用于当前任务的数据表中待交换数据的数据源的类型;
语句选取模块,用于若所述数据源是关系数据库,则根据所述待交换数据的类型选择相应的查询语句;
复杂度判定模块,用于解析所述查询语句,根据解析结果判定所述查询语句的复杂度;
数据量查询模块,用于若所述复杂度满足预设条件,则查询所述待交换数据的数据量;
策略选取模块,用于根据所述待交换数据的数据量,从预设的拆分策略中选取对应的拆分策略,所述预设的拆分策略包括分页拆分策略、主键字段拆分策略和不拆分策略;
任务拆分模块,用于根据选取的所述拆分策略对所述当前任务进行拆分。
作为一种较优的实施方式,本发明实施例中,所述复杂度判定模块包括:
语句解析单元,用于解析所述查询语句,至少获取所述查询语句中的表关联次数以及分析函数个数;
复杂度判定单元,用于根据所述表关联次数和/或所述分析函数个数判定所述查询语句的复杂度。
作为一种较优的实施方式,本发明实施例中,所述策略选取模块包括:
阈值获取单元,用于获取数据量阈值(n,m],其中n和m为正整数,且n<m;
数据比较单元,用于将所述待交换数据的数据量与所述数据量阈值进行比较;
策略选取单元,用于若所述数据表的数据量在所述数据量阈值范围内,则选取分页拆分策略,若所述数据表的数据量>m,则选取主键字段拆分策略,若所述数据表的数据量≤n,则选取不拆分策略。
作为一种较优的实施方式,本发明实施例中,所述任务拆分模块包括:
数量设置单元,用于根据所述待交换数据的数据量设置并发子任务的数量;
任务拆分单元,用于将所述待交换数据按照所述并发子任务的数量进行等份拆分后分配至各并发子任务。
作为一种较优的实施方式,本发明实施例中,所述任务拆分模块还包括:
主键查询单元,用于查询所述当前任务的数据表的主键字段,获取所述主键字段中的最大值以及最小值;
步长计算单元,用于设置并发子任务个数,根据所述并发子任务个数、所述最大值以及所述最小值计算得到步长;
所述任务拆分单元还用于根据所述步长对所述当前任务的数据表进行拆分,将拆分得到的子数据表分配至各并发子任务。
作为一种较优的实施方式,本发明实施例中,所述任务拆分模块还包括:
第一转换单元,用于将所述字符类型的主键字段转换成Ascii码数值类型;
数值计算单元,用于设置主键字段中各个字段的权重后根据所述权重计算得到所述Ascii码的值;
第二转换单元,用于将所述Ascii码的值转换成新的字符串;
信息获取单元,用于若所述新的字符串的长度大于1,则获取并发子任务个数;
所述任务拆分单元还用于按照所述并发子任务个数从左向右截取所述新的字符串,对所述当前任务的数据表进行拆分,将拆分得到的子数据表分配至各并发子任务。
作为一种较优的实施方式,本发明实施例中,所述任务拆分模块还包括:
主键设置单元,用于若查询到所述当前任务的数据表没有主键,则将预设的字段设置为主键字段。
作为一种较优的实施方式,本发明实施例中,所述任务拆分模块还包括:
文件排序单元,用于若所述数据源是文件系统,则按照文件大小对当前任务包含的所有文件进行排序;
所述任务拆分单元还用于设置并发子任务个数,根据所述并发子任务个数对排序后的文件进行拆分,并将拆分后的文件分配至各并发子任务。
综上所述,本发明实施例提供的技术方案带来的有益效果是:
本发明实施例提供的数据交换系统的任务拆分方法及装置,通过根据待交换数据对应的查询语句的复杂度判定是否对当前任务进行拆分,同时通过根据待交换数据的数据量从预设的拆分策略中选取对应的拆分策略,实现动态的对当前任务进行拆分,获取最优拆分效果。
需要说明的是:上述实施例提供的数据交换系统的任务拆分装置在触发任务拆分业务时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据交换系统的任务拆分装置与数据交换系统的任务拆分方法实施例属于同一构思,即该装置是基于该数据交换系统的任务拆分方法的,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种数据交换系统的任务拆分方法,其特征在于,所述方法包括如下步骤:
判断当前任务的数据表中待交换数据的数据源的类型,若所述数据源是关系数据库,则根据所述待交换数据的类型选择相应的查询语句;
解析所述查询语句,根据解析结果判定所述查询语句的复杂度;
若所述复杂度满足预设条件,则查询所述待交换数据的数据量;
根据所述待交换数据的数据量,从预设的拆分策略中选取对应的拆分策略,所述预设的拆分策略包括分页拆分策略、主键字段拆分策略和不拆分策略;
根据选取的所述拆分策略对所述当前任务进行拆分;
若拆分策略为主键字段拆分策略,则所述根据选取的所述拆分策略对所述当前任务进行拆分包括:查询所述当前任务的数据表的主键字段,获取所述主键字段中的最大值以及最小值,设置并发子任务个数,根据所述并发子任务个数、所述最大值以及所述最小值计算得到步长,根据所述步长对所述当前任务的数据表进行拆分,将拆分得到的子数据表分配至各并发子任务;
若查询到的所述当前任务的数据表的主键字段为字符类型的主键字段,则所述根据选取的所述拆分策略对所述当前任务进行拆分包括:将所述字符类型的主键字段转换成Ascii码数值类型,设置主键字段中各个字段的权重后根据所述权重计算得到所述Ascii码的值,将所述Ascii码的值转换成新的字符串,若所述新的字符串的长度大于1,则获取并发子任务个数,按照所述并发子任务个数从左向右截取所述新的字符串,对所述当前任务的数据表进行拆分,将拆分得到的子数据表分配至各并发子任务。
2.根据权利要求1所述的数据交换系统的任务拆分方法,其特征在于,所述解析所述查询语句的,根据解析结果判定所述查询语句的复杂度包括:
解析所述查询语句,至少获取所述查询语句中的表关联次数以及分析函数个数,根据所述表关联次数和/或所述分析函数个数判定所述查询语句的复杂度。
3.根据权利要求1或2所述的数据交换系统的任务拆分方法,其特征在于,所述根据所述待交换数据的数据量,从预设的拆分策略中选取对应的拆分策略包括:
获取数据量阈值(n,m],其中n和m为正整数,且n<m,将所述待交换数据的数据量与所述数据量阈值进行比较,若所述数据表的数据量在所述数据量阈值范围内,则选取分页拆分策略,若所述数据表的数据量>m,则选取主键字段拆分策略,若所述数据表的数据量≤n,则选取不拆分策略。
4.根据权利要求3所述的数据交换系统的任务拆分方法,其特征在于,若拆分策略为分页拆分策略,则所述根据选取的所述拆分策略对所述当前任务进行拆分包括:
根据所述待交换数据的数据量设置并发子任务的数量,将所述待交换数据按照所述并发子任务的数量进行等份拆分后分配至各并发子任务。
5.根据权利要求1所述的数据交换系统的任务拆分方法,其特征在于,所述方法还包括:
若查询到所述当前任务的数据表没有主键,则将预设的字段设置为主键字段。
6.根据权利要求1或2所述的数据交换系统的任务拆分方法,
其特征在于,所述方法还包括:
若所述数据源是文件系统,则按照文件大小对当前任务包含的所有文件进行排序;
设置并发子任务个数,根据所述并发子任务个数对排序后的文件进行拆分,并将拆分后的文件分配至各并发子任务。
7.根据权利要求1或2所述的数据交换系统的任务拆分方法,
其特征在于,所述方法还包括:
若所述复杂度不满足所述预设条件,则不对所述当前任务进行拆分。
8.一种数据交换系统的任务拆分装置,所述装置执行权利要求1至7任一所述的方法,其特征在于,所述装置包括:
类型判断模块,用于当前任务的数据表中待交换数据的数据源的类型;
语句选取模块,用于若所述数据源是关系数据库,则根据所述待交换数据的类型选择相应的查询语句;
复杂度判定模块,用于解析所述查询语句,根据解析结果判定所述查询语句的复杂度;
数据量查询模块,用于若所述复杂度满足预设条件,则查询所述待交换数据的数据量;
策略选取模块,用于根据所述待交换数据的数据量,从预设的拆分策略中选取对应的拆分策略,所述预设的拆分策略包括分页拆分策略、主键字段拆分策略和不拆分策略;
任务拆分模块,用于根据选取的所述拆分策略对所述当前任务进行拆分。
CN201910686475.3A 2019-07-26 2019-07-26 一种数据交换系统的任务拆分方法及装置 Active CN110597618B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910686475.3A CN110597618B (zh) 2019-07-26 2019-07-26 一种数据交换系统的任务拆分方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910686475.3A CN110597618B (zh) 2019-07-26 2019-07-26 一种数据交换系统的任务拆分方法及装置

Publications (2)

Publication Number Publication Date
CN110597618A CN110597618A (zh) 2019-12-20
CN110597618B true CN110597618B (zh) 2022-06-07

Family

ID=68852975

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910686475.3A Active CN110597618B (zh) 2019-07-26 2019-07-26 一种数据交换系统的任务拆分方法及装置

Country Status (1)

Country Link
CN (1) CN110597618B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111865811B (zh) * 2020-06-24 2022-06-17 浪潮(北京)电子信息产业有限公司 一种数据处理方法、装置、设备及介质
CN114328470B (zh) * 2022-03-14 2023-06-09 北京奥星贝斯科技有限公司 针对单个源表的数据迁移方法及装置
CN116795831A (zh) * 2022-12-26 2023-09-22 慧之安信息技术股份有限公司 一种时序数据条目的数量维护方法及系统
CN116109110B (zh) * 2023-04-11 2023-06-23 华能信息技术有限公司 一种业务中台的任务调度方法
CN116567007B (zh) * 2023-07-10 2023-10-13 长江信达软件技术(武汉)有限责任公司 一种基于任务切分的微服务水利数据共享交换方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102567335A (zh) * 2010-12-15 2012-07-11 上海杉达学院 基于异构数据库的业务系统
CN103412897A (zh) * 2013-07-25 2013-11-27 中国科学院软件研究所 一种基于分布式结构的并行数据处理方法
CN104050297A (zh) * 2014-07-03 2014-09-17 中国工商银行股份有限公司 一种查询事务分配方法及装置
CN104182502A (zh) * 2014-08-18 2014-12-03 浪潮(北京)电子信息产业有限公司 一种数据抽取方法及装置
CN105183901A (zh) * 2015-09-30 2015-12-23 北京京东尚科信息技术有限公司 一种数据查询引擎读取数据库表的方法及装置
CN109241191A (zh) * 2018-09-13 2019-01-18 华东交通大学 一种分布式数据源异构同步平台及同步方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102567335A (zh) * 2010-12-15 2012-07-11 上海杉达学院 基于异构数据库的业务系统
CN103412897A (zh) * 2013-07-25 2013-11-27 中国科学院软件研究所 一种基于分布式结构的并行数据处理方法
CN104050297A (zh) * 2014-07-03 2014-09-17 中国工商银行股份有限公司 一种查询事务分配方法及装置
CN104182502A (zh) * 2014-08-18 2014-12-03 浪潮(北京)电子信息产业有限公司 一种数据抽取方法及装置
CN105183901A (zh) * 2015-09-30 2015-12-23 北京京东尚科信息技术有限公司 一种数据查询引擎读取数据库表的方法及装置
CN109241191A (zh) * 2018-09-13 2019-01-18 华东交通大学 一种分布式数据源异构同步平台及同步方法

Also Published As

Publication number Publication date
CN110597618A (zh) 2019-12-20

Similar Documents

Publication Publication Date Title
CN110597618B (zh) 一种数据交换系统的任务拆分方法及装置
CN107402987B (zh) 一种全文检索的方法和分布式NewSQL数据库系统
CN110795455B (zh) 依赖关系解析方法、电子装置、计算机设备及可读存储介质
CN106897343B (zh) 执行计划的查找方法、存储方法及装置
US11893011B1 (en) Data query method and system, heterogeneous acceleration platform, and storage medium
CN108829884B (zh) 数据映射方法及装置
CN111352950B (zh) 数据库表等值连接的优化方法、装置、服务器及存储介质
EP3416065A1 (en) Query method and query device
CN109299101B (zh) 数据检索方法、装置、服务器和存储介质
CN111897891B (zh) 数据处理方法及装置
CN111198898A (zh) 大数据查询方法及大数据查询装置
CN108460052B (zh) 一种自动创建索引的方法、装置及数据库系统
CN113641487B (zh) 一种大数据平台sql任务执行引擎智能自动切换的方法
CN114661721A (zh) 数据库表的处理方法和系统
CN114328612A (zh) 查询优化器的数据处理方法、装置及电子设备
CN113867953A (zh) 一种资源分配方法、装置、存储介质和电子设备
CN110019342B (zh) 分区表访问方法、装置及设备、计算机可读存储介质
CN116401277A (zh) 数据处理方法、装置、系统、设备及介质
CN114358596A (zh) 指标计算方法及装置
CN110704437B (zh) 数据库查询语句的修改方法、装置、设备和存储介质
CN110895529B (zh) 结构化查询语言的处理方法及相关装置
CN113868138A (zh) 测试数据的获取方法、系统、设备及存储介质
CN115705330A (zh) 数据查询方法、装置、电子设备和可读存储介质
CN113342647A (zh) 一种测试数据的生成方法及装置
CN112835932A (zh) 业务表的批量处理方法及装置、非易失性存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: No.1-1 Suning Avenue, Xuzhuang Software Park, Xuanwu District, Nanjing, Jiangsu Province, 210000

Patentee after: Jiangsu Suning cloud computing Co.,Ltd.

Address before: No.1-1 Suning Avenue, Xuzhuang Software Park, Xuanwu District, Nanjing, Jiangsu Province, 210000

Patentee before: Suning Cloud Computing Co.,Ltd.

CP01 Change in the name or title of a patent holder
TR01 Transfer of patent right

Effective date of registration: 20240111

Address after: 210000, 1-5 story, Jinshan building, 8 Shanxi Road, Nanjing, Jiangsu.

Patentee after: SUNING.COM Co.,Ltd.

Address before: No.1-1 Suning Avenue, Xuzhuang Software Park, Xuanwu District, Nanjing, Jiangsu Province, 210000

Patentee before: Jiangsu Suning cloud computing Co.,Ltd.

TR01 Transfer of patent right