CN110807030B - 一种数据连接的方法、装置及电子设备 - Google Patents

一种数据连接的方法、装置及电子设备 Download PDF

Info

Publication number
CN110807030B
CN110807030B CN201910923118.4A CN201910923118A CN110807030B CN 110807030 B CN110807030 B CN 110807030B CN 201910923118 A CN201910923118 A CN 201910923118A CN 110807030 B CN110807030 B CN 110807030B
Authority
CN
China
Prior art keywords
data
algorithm
connection algorithm
connection
execution
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
CN201910923118.4A
Other languages
English (en)
Other versions
CN110807030A (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.)
Beijing Oceanbase Technology Co Ltd
Original Assignee
ANT Financial Hang Zhou Network Technology 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 ANT Financial Hang Zhou Network Technology Co Ltd filed Critical ANT Financial Hang Zhou Network Technology Co Ltd
Priority to CN201910923118.4A priority Critical patent/CN110807030B/zh
Publication of CN110807030A publication Critical patent/CN110807030A/zh
Priority to PCT/CN2020/094583 priority patent/WO2021057088A1/zh
Application granted granted Critical
Publication of CN110807030B publication Critical patent/CN110807030B/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/22Indexing; Data structures therefor; Storage structures
    • 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/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24558Binary matching operations
    • G06F16/2456Join operations

Landscapes

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

Abstract

本说明书公开了一种数据连接的方法、装置及电子设备,该方法包括:通过第一连接算法对第一数据集和第二数据集执行数据连接操作,以连接所述第一数据集与所述第二数据集中键值相等的数据;在第一连接算法执行过程中,获取第一连接算法执行过程中表征算法执行效率的执行参数;根据执行参数将第一连接算法切换为第二连接算法,通过第二连接算法继续执行数据连接操作。上述技术方案,在数据连接过程中依据算法执行状态实现了连接算法的自动切换。

Description

一种数据连接的方法、装置及电子设备
技术领域
本说明书涉及软件技术领域,特别涉及一种数据连接的方法、装置及电子设备。
背景技术
连接(Join)是将两个数据关联在一起,例如对于数据A和B连接之后可以形成数据A-B,用于进行数据查询、文件关联等,是数据库的基本关系代数运算之一,在数据库实现中有着广泛的应用场景。连接算法的实现直接影响着连接算子(Join Operator)的实现效率,且对整个数据库的性能有着至关重要的影响。常见的连接算法(Join Algorithm)包括嵌套连接(Nested-Loop Join)合并连接(Merge Join)、哈希连接(Hash Join)等。相对于合并连接,还出现了一种之字形合并连接(Zigzag Merge Join)。
合并连接:针对两个数据集,通常将其中一个数据集中的数据称为左侧输入,另一个数据集中的数据集称为右侧输入,在左右两侧的输入按照连接键有序的情况下,通过依次访问左右两侧输入的记录完成所需要的数据连接操作,由于要求严苛大部分场景下执行效率较低。之字形合并连接:一种合并连接的实现变种,之字形合并连接利用左右侧输入的索引结构,通过左右两侧的输入键值交替定位另一侧的数据,达到避免访问左右两侧无效数据的效果,但是,由于之字形合并连接在访问下一行的时候采用了查找操作,在大部分数据有效的时候,查找的代价比顺序访问的代价反而更高,导致之字形合并连接的效率大大降低。即无论使用合并连接还是使用之字形合并连接,都存在执行效率低下的问题,亟需一种提高数据连接执行效率的方法。
发明内容
本说明书实施例提供一种数据连接的方法、装置及电子设备,用于解决现有技术中数据连接执行效率较低的技术问题。
第一方面,本说明书实施例提供一种数据连接的方法,所述方法包括:
通过第一连接算法对第一数据集和第二数据集执行数据连接操作,以连接所述第一数据集与所述第二数据集中键值相等的数据;
在所述第一连接算法的执行过程中,获取所述第一连接算法的执行参数,所述执行参数用于表征算法执行过程的执行效率;
根据所述执行参数将所述第一连接算法切换为第二连接算法,通过所述第二连接算法继续执行所述数据连接操作,其中,所述第二连接算法与所述第一连接算法不同。
可选的,所述获取所述第一连接算法的执行参数,包括:
当所述第一连接算法为合并连接算法时,获取所述合并连接算法连续访问一个数据集中数据行的行数作为所述执行参数;或者,
当所述第一连接算法为之字形合并连接算法时,获取所述之字形合并连接算法跳过的数据行的行数作为执行参数。
可选的,所述获取所述第一连接算法的执行参数,包括:
当所述第一连接算法为合并连接算法时,每出现一次连续读取一个数据集中的数据行则对所述执行参数的值加上预设步长,反之,对所述执行参数的值减去所述预设步长;
当所述第一连接算法为之字形合并连接算法时,每出现一次查找到的数据行与在前读取的数据行的下一行相同时对所述执行参数的值加上所述预设步长,反之,对所述执行参数的值减去所述预设步长。
可选的,所述当所述第一连接算法为合并连接算法时,每出现一次连续读取一个数据集中的数据行则对所述执行参数的值加上预设步长,包括:
当所述第一连接算法为合并连接算法时,判断读取的当前第一数据行与当前第二数据行的键值大小,所述第一数据行属于第一数据集,所述第二数据行属于所述第二数据集;
若当前第一数据行的键值小于或等于当前第二数据行的键值,获取上次判断的第一数据行的键值与第二数据行的键值大小的判断结果,若上次判断的第一数据行的键值小于或等于第二数据行的键值,对所述执行参数加上所述预设步长;
若当前第一数据行的键值大于当前第二数据行的键值,获取上次判断的第一数据行的键值与第二数据行的键值大小的判断结果,若上次判断的第一数据行的键值大于第二数据行的键值,对所述执行参数加上所述预设步长。
可选的,所述第一连接算法为合并连接算法或之字形合并连接算法,所述第二连接算法为之字形合并连接算法或合并连接算法。
第二方面、本实施例提供一种数据连接的装置,所述装置包括:
连接单元,用于通过第一连接算法对第一数据集和第二数据集执行数据连接操作,以连接所述第一数据集与所述第二数据集中键值相等的数据;
检测单元,用于在所述第一连接算法的执行过程中,获取所述第一连接算法的执行参数,所述执行参数用于表征算法执行过程的执行效率;
切换单元,用于根据所述执行参数将所述第一连接算法切换为第二连接算法,通过所述第二连接算法继续执行所述数据连接操作,其中,所述第二连接算法与所述第一连接算法不同。
可选的,所述检测单元用于:当所述第一连接算法为合并连接算法时,获取所述合并连接算法连续访问一个数据集中数据行的行数作为所述执行参数;或者,当所述第一连接算法为之字形合并连接算法时,获取所述之字形合并连接算法跳过的数据行的行数作为执行参数。
可选的,所述检测单元用于:当所述第一连接算法为合并连接算法时,每出现一次连续读取一个数据集中的数据行则对所述执行参数的值加上预设步长,反之,对所述执行参数的值减去所述预设步长;当所述第一连接算法为之字形合并连接算法时,每出现一次查找到的数据行与在前读取的数据行的下一行相同时对所述执行参数的值加上所述预设步长,反之,对所述执行参数的值减去所述预设步长。
可选的,所述检测单元还用于:当所述第一连接算法为合并连接算法时,判断读取的当前第一数据行与当前第二数据行的键值大小,所述第一数据行属于第一数据集,所述第二数据行属于所述第二数据集;若当前第一数据行的键值小于或等于当前第二数据行的键值,获取上次判断的第一数据行的键值与第二数据行的键值大小的判断结果,若上次判断的第一数据行的键值小于或等于第二数据行的键值,对所述执行参数加上所述预设步长;若当前第一数据行的键值大于当前第二数据行的键值,获取上次判断的第一数据行的键值与第二数据行的键值大小的判断结果,若上次判断的第一数据行的键值大于第二数据行的键值,对所述执行参数加上所述预设步长。
可选的,所述第一连接算法为合并连接算法或之字形合并连接算法,所述第二连接算法为之字形合并连接算法或合并连接算法。
第三方面、一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现以下步骤:
通过第一连接算法对第一数据集和第二数据集执行数据连接操作,以连接所述第一数据集与所述第二数据集中键值相等的数据;
在所述第一连接算法的执行过程中,获取所述第一连接算法的执行参数,所述执行参数用于表征算法执行过程的执行效率;
根据所述执行参数将所述第一连接算法切换为第二连接算法,通过所述第二连接算法继续执行所述数据连接操作,其中,所述第二连接算法与所述第一连接算法不同。
第四方面、一种电子设备,包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:
通过第一连接算法对第一数据集和第二数据集执行数据连接操作,以连接所述第一数据集与所述第二数据集中键值相等的数据;
在所述第一连接算法的执行过程中,获取所述第一连接算法的执行参数,所述执行参数用于表征算法执行过程的执行效率;
根据所述执行参数将所述第一连接算法切换为第二连接算法,通过所述第二连接算法继续执行所述数据连接操作,其中,所述第二连接算法与所述第一连接算法不同。
本说明书实施例中的上述一个或多个技术方案,至少具有如下技术效果:
本说明书实施例提供一种数据连接的方法,包括:通过第一连接算法对第一数据集和第二数据集执行数据连接操作,以连接第一数据集与第二数据集中键值相等的数据;在第一连接算法执行过程中,获取所述第一连接算法的执行参数,该执行参数用于表征算法执行过程的执行效率;根据获取到的执行参数选择将第一连接算法切换为第二连接算法。上述方法针对数据连接,并不指定使用某一种连接算法,而是根据当前连接算法的执行效率进行自适应切换,从而实现了算法对不同数据的自适应调整,在包含不同数据分布的场景中都能达到较高的执行效率,克服了单一连接算法针对复杂数据存在比较低效的问题,提高了数据连接的执行效率。
附图说明
为了更清楚地说明本说明书实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本说明书的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书实施例提供的一种数据连接方法的流程示意图;
图2a为本说明书实施例提供的之字形合并连接算法与合并连接算法自适应切换的部分流程图;
图2b为本说明书实施例提供的之字形合并连接算法与合并连接算法自适应切换的部分流程图;
图3为本说明书实施例提供的仅适用之字形合并连接算法低效执行的示意图;
图4为本说明书实施例提供的之字形合并连接算法与合并连接算法自适应切换时的执行示意图;
图5为本说明书实施例提供的一种数据连接装置的示意图
图6为本说明书实施例提供的一种电子设备的示意图。
具体实施方式
为使本说明书实施例的目的、技术方案和优点更加清楚,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本说明书保护的范围。
在本说明书实施例提供一种数据连接的方法,通过获取表征连接算法执行效率的执行参数,并基于该执行参数切换连接算法,实现算法对不同数据的自适应调整,进而提高数据连接的执行效率。
下面结合附图对本说明书实施例技术方案的主要实现原理、具体实施方式及其对应能够达到的有益效果进行详细的阐述。
实施例
本实施例提供一种数据连接的方法,应用于数据处理***,如数据库、数据表等需要进行数据连接的***,采用合并连接算法和之字形合并连接算法对待连接的第一数据集和第二数据集进行自适应数据连接。请参考图1,该数据连接方法包括:
步骤10、通过第一连接算法对第一数据集和第二数据集执行数据连接操作,以连接所述第一数据集与所述第二数据集中键值相等的数据;
步骤11、在所述第一连接算法的执行过程中,获取所述第一连接算法的执行参数,所述执行参数用于表征算法执行过程的执行效率;
步骤12、根据所述执行参数将所述第一连接算法切换为第二连接算法,通过所述第二连接算法继续执行所述数据连接操作,其中,所述第二连接算法与所述第一连接算法不同。
其中,在进行数据连接初始化时,步骤10可以随机选择合并连接算法和之字形合并连接算法中的任一算法,作为数据连接的第一连接算法。或者,步骤10也可以根据各数据库使用记录,将第一连接算法设置为各数据处理***的常用算法,如将之字形合并连接算法设置为第一连接算法,将之字形合并连接算法作为第二连接算法,通过合并连接算法作为之字形合并连接算法的补充,执行数据连接操作以实现数据连接。
执行数据连接操作时,需要将第一数据集和第二数据集分别输入内存中,习惯性将第一数据集中的数据称为左侧输入,将第二数据集中的数据称为右侧输入,左侧输入和右侧输入分别包含多行数据,每行数据都对应有各自的连接键。在步骤10之前,可以分别对左侧输入和右侧输入按照连接键的键值即取值进行排序,例如,可以按照键值升序排列,使得左右两侧输入针对连接键有序。在左右两侧输入针对连接键有序的情况下,不仅能够保证合并连接算法的快速执行,还能有效提高之字形合并连接算法的键值查找效率。
在左右两侧输入针对连接键有序的情况下,合并连接算法的执行过程如下:
第一步:获取左侧输入和右侧输入的一行数据,判断其连接键的键值是否相等,如果相等,则进入到第三步;如果不等,则进入第二步;如果左右任意一侧输入耗尽,则进入到第四步;
第二步:如果左侧键值小于右侧键值,则读取左侧的下一行数据;反之,则读取右侧下一行数据,然后回到第三步;
第三步:将读取的左右侧输入行中的数据分别缓存到两个临时缓存区中,并输出这两行数据的连接结果;接着,读取右侧的下一行,如果右侧下一行与之前的右侧行键值相等,则继续缓存该行到缓存区,并输出右侧下一行与当前左侧行的连接结果,继续读取右侧下一行,循环执行直至右侧行键值与上一行不同;然后,开始读取左侧下一行,如果与左侧之前行的键值相同,则对缓冲区中的缓存的右侧所有行依次扫描,并进行连接操作,如此循环执行直至左侧行键值与上一行不同,则停止计算,回到第三步;
第四步:合并连接算法结束,丢弃掉未完结一侧的剩余数据。
关于之字形合并连接算法的执行过程,与合并连接算法的逻辑基本一致,区别在于第二步中,如果左侧键值小于右侧键值,则根据右侧键值对左侧输入数据进行查找操作,查找获得第一个大于或等于右侧键值的左侧输入作为左侧输入的下一行;反之同理。
在步骤10的执行过程中,进一步执行步骤11获取当前算法即第一连接算法执行过程的执行参数。其中,表征连接算法执行效率的参数包含连接效率、连接输出时长、算法计算量等。步骤11可以选择上述任一参数或任意参数进行组合作为执行参数。将两个或两个参数进行组合时,可以对各个参数进行加权相加的和值作为执行参数。对于获取到的执行参数继续执行步骤12。
执行步骤12时,可以判断获取到的执行参数是否大于设定阈值。大于设定阈值表明算法执行效率偏低,需要进行算法切换,反之,则不需要进行算法切换。该设定阈值可以根据不同的算法和不同的效率需求进行设定,满足条件1和条件2即可,本实施例不限制设定阈值的具体取值。条件1,在基础合并算法时,若出现连续访问一个数据集中的数据行的行越少越倾向于切换使用之字形合并连接算法,反之越不倾向于使用之字形合并连接算法。条件2,在之字形基础合并算法时,若出现查找获得的行跳过的行越少越倾向于切换使用合并连接算法,反之越不倾向于使用合并连接算法。
若执行参数大于设定阈值,对当前连接算法进行切换:将第一连接算法切换为第二连接算法,若当前使用的是合并连接算法,则将其切换为之字形合并连接算法,反之,若当前使用的是之字形合并连接算法,则将其切换为合并连接算法,并通过切换后的之字形合并连接算法或合并连接算法继续执行数据连接操作进行数据连接。
在执行整个数据连接操作的过程中,循环执行步骤10~步骤12,使得整个数据处理过程根据算法的实际执行情况实时进行切换,使用针对当前数据更高效的连接算法,克服了使用某一种算法存在某些场景执行效率较低的技术问题。
针对合并连接算法,步骤11可以采用获取算法收益的方法来获取执行参数:获取合并连接算法连续访问一个数据集中的数据行的行数作为合并连接算法的执行参数。合并连接算法连续访问一个数据集中的数据行的行数越多,其算法收益越小,其执行效率越低,越倾向于转换为之字形合并连接算法,将其连续访问一个数据集中的数据行的行数作为执行参数,用于表征执行效率简单有效。具体的,对于合并连接算法,可以先对左右两侧输入的每一行进行顺序编号,将连续访问的当前行编号减去连续访问的首行编号即为连续访问的行数。
针对之字形合并连接算法,步骤11同样可以采用获取算法收益的放法来获取执行参数:获取之字形合并连接算法跳过的数据行作为执行参数。之字形合并连接算法通过查找获取下一行输入,当检测到执行之字形合并连接算法可以跳过的行数越少,算法收益越小,执行效率越低,越倾向于转换为合并连接算法,将其跳过的数据行的行数作为执行参数来表征执行效率,同样简单有效。具体的,也可以先对左右两侧输入的每一行进行顺序编号,记录之字形合并连接算法当前访问的行的下一行编号A,以及之字形合并连接算法查找获得的下一行编号B,编号B减去编号A即为之字形合并连接算法跳过的行数。
基于获取算法收益作为执行参数的同一构思,本实施还可以采用下述方法来执行步骤11:在使用合并连接算法连接输出时,每出现一次连续读取一个数据集中的数据行则对执行参数的值加上预设步长,反之,对执行参数的值减去预设步长;在使用之字形合并连接算法连接输出时,每出现一次查找到的数据行与在前读取的数据行的下一行相同时对执行参数的值加上预设步长,反之,对执行参数的值减去预设步长。其中,执行参数的初始值可以设置为零。通过采用累积加减步长的方法来获取执行参数,无需对待连接的左右输入行进行编号,有效节约存储空间和计算量,进一步提高了执行效率。
其中,在使用合并连接算法连接输出时,判断读取的当前第一数据行与当前第二数据行的键值大小,所述第一数据行即左侧输入的数据行属于第一数据集,所述第二数据行即右侧输入的数据行属于所述第二数据集;若当前第一数据行的键值小于或等于当前第二数据行的键值,获取上次判断的第一数据行的键值与第二数据行的键值大小的判断结果,若上次判断的第一数据行的键值小于或等于第二数据行的键值,对所述执行参数加上所述预设步长;若当前第一数据行的键值大于当前第二数据行的键值,获取上次判断的第一数据行的键值与第二数据行的键值大小的判断结果,若上次判断的第一数据行的键值大于第二数据行的键值,对所述执行参数加上所述预设步长。
请参考图2a和图2b,为本实施例中的一个完整的执行流程:
①.设置l_key和r_key为连接键值的理论下界。l_key对应左侧输入的行键值,r_key对应右侧输入的行键值,通常情况下连接键值的理论下界值是可以为当前数值类型的理论下界,例如针对64位有符号型整型数据,其理论下界为-9,223,372,036,854,775,808,其他不同的数据类型基于各数据库的实现,可能有不同的理论下界值。
②.通过lookup函数查找大于或者等于l_key的第一行数据,并使l_row指向该行,即找到初始第一数据行。
③.通过lookup函数查找大于或者等于r_key的第一行数据,并使r_row指向该行,即找到初始第二数据行。
④.判断l_row指向的行的键值是否小于或等于r_row指向的行的键值,若是转入步骤⑤,若否,转入步骤
Figure BDA0002218199170000101
⑤.判断l_row指向的new_row行的键值是否等于r_row指向的new_row行的键值,若是转入步骤⑩,若否,进步步骤⑥。其中,l_row或r_row指向的行又称为当前输入行或new_row行。
⑥.判断begin_left是否为非空,若是转入步骤⑦,若否,转入步骤⑨。其中,begin_left为用于存储在前读取行的指针。
⑦.将begin_left赋值给l_row。
⑧.令begin_left为空。
⑨.令direction=0;使输入input指向左表;将l_key赋值给old_key;将r_key赋值给new_key;将l_row指向new_row,随后转入步骤
Figure BDA0002218199170000111
其中,direction=0表示上一次左右侧行键值比较结果是左表行小于或等于右表行,direction=1表示上一次左右侧行键值比较结果是左表行大于右表行。
⑩.输出l_row与r_row指向的行的连接结果。
Figure BDA0002218199170000112
判断断begin_left是否为空,若是,转入步骤
Figure BDA0002218199170000113
若否,转入步骤
Figure BDA0002218199170000114
Figure BDA0002218199170000115
令begin_left=l_row。
Figure BDA0002218199170000116
判断current_mode是否等于1,若是,转入步骤
Figure BDA0002218199170000117
若否,转入步骤⑨。其中,current_mode=1表示当前使用的是合并连接算法,current_mode=0表示当前使用的是之字形合并连接算法。
Figure BDA0002218199170000118
判断direction是否等于0,若是,进步步骤
Figure BDA0002218199170000119
若否,转入步骤
Figure BDA00022181991700001110
Figure BDA00022181991700001111
use_basic减1,并转入步骤⑨。其中,use_basic为执行参数。
Figure BDA00022181991700001112
use_basic加1,并转入步骤⑨。
Figure BDA00022181991700001113
判断current_mode是否等于1,若是,继续步骤
Figure BDA00022181991700001114
若否,转入步骤
Figure BDA00022181991700001115
Figure BDA00022181991700001116
判断direction是否等于1,若是,继续步骤
Figure BDA00022181991700001117
若否,转入步骤
Figure BDA00022181991700001118
Figure BDA00022181991700001119
use_basic加1,并转入步骤
Figure BDA00022181991700001120
Figure BDA00022181991700001121
use_basic减1,并转入步骤
Figure BDA00022181991700001122
Figure BDA00022181991700001123
令direction=1;使输入input指向右表;将r_key赋值给old_key;将l_key赋值给new_key;将r_row指向new_row,随后继续步骤
Figure BDA0002218199170000121
Figure BDA0002218199170000122
令current_mode=(use_basic>threshold),即若use_basic大于阈值threshold则令current_mode=1,使当前使用的合并连接算法使用合并连接算法,反之,令current_mode=0,使当前使用的合并连接算法使用之字形合并连接算法,即在执行参数大于阈值时进行算法切换。
Figure BDA0002218199170000123
判断current_mode是否等于0,若是,转入步骤
Figure BDA0002218199170000124
若否,转入步骤
Figure BDA0002218199170000125
Figure BDA0002218199170000126
使用next函数读取当前输入input的old_key下一行,并使next_row指向该行。
Figure BDA0002218199170000127
使用lookup函数通过new_key查找第一个大于或等于new_key的一行,并使new_key指向该行。
Figure BDA0002218199170000128
判断next_row与new_row是否指向同一行,若是,转入步骤
Figure BDA0002218199170000129
若否,转入步骤
Figure BDA00022181991700001210
Figure BDA00022181991700001211
use_basic加1,并转入步骤
Figure BDA00022181991700001212
Figure BDA00022181991700001213
use_basic减1,并转入步骤
Figure BDA00022181991700001214
Figure BDA00022181991700001215
令current_mode=1。此处,也可以直接跳过进入下一步
Figure BDA00022181991700001216
Figure BDA00022181991700001217
使用next函数读取当前input的old_key下一行,并使new_row指向该行。
Figure BDA00022181991700001218
判断direction是否等于0,若是,转入步骤
Figure BDA00022181991700001219
若否,转入步骤
Figure BDA00022181991700001220
Figure BDA00022181991700001221
使l_row指向new_row指向的行,并转入步骤
Figure BDA00022181991700001222
Figure BDA00022181991700001223
使r_row指向new_row指向的行,并转入步骤
Figure BDA00022181991700001224
Figure BDA00022181991700001225
判断new_row是否为空,若是,结束,若否,转入步骤④。
在图2中展示了本实施例提供的数据连接方法的逻辑。第①-③步为初始化工作部分,初始算法逻辑为之字形合并连接算法;整体算法包含了合并连接算法和之字形合并连接算法两部分,合并连接算法主体为第
Figure BDA00022181991700001226
步,之字形合并连接算法的主体为第
Figure BDA0002218199170000131
步。第
Figure BDA0002218199170000132
步,当算法为之字形合并连接时,如果发现通过查找得到的下一行与直接顺序访问的下一行为同一行,说明之字形合并连接没有收益,通过use_basic加1,表示倾向使用合并连接算法,反之,如果发现通过查找得到的下一行与直接顺序访问的下一行为同一行,说明之字形合并连接有收益,通过use_basic或减1,表示不倾向使用合并连接算法;第
Figure BDA0002218199170000133
步,当处于合并连接算法时,如果从某一侧获取的行键值连续小于另一侧行键值,则通过use_basic加1,表示不倾向使用之字形连接算法,反之,如果从某一侧获取的行键值连续小于另一侧行键值,则通过use_basic减1,表示倾向使用之字形连接算法。第
Figure BDA0002218199170000134
步:判断当前use_basic值是否超过某一预设阈值,如果超过表示需要使用合并连接算法(current_mode=1)。
请参考图3,为一个仅使用之字形合并连接算法进行连接处理出现效率低下的场景,第一数据集中的数据如左表所示,第二数据集中的数据如右表所示,当通过之字形合并连接算法对左右两表中的数据进行连接时,可以跳过的数据较少,按照键值查找的执行开销大于顺序扫描的执行开销,因此之字形合并连接算法的执行开销反而大于合并连接算法的执行开销。针对同样场景,图4展示了本实施例的执行过程,对整个之字形合并连接的执行过程进行监测,当探测到执行之字形合并连接算法可以跳过的行数不足(收益过小)时,将算法切换到合并连接算法;当处于合并连接算法状态时,如果出现某侧数据连续访问不足时,切换回之字形合并连接算法,合并连接算法和之字形合并连接算法的切换以算法执行过程中的执行参数为依据,自动进行切换。
上述实施例提高的方案,结合了合并连接算法和之字形合并连接算法两部分逻辑,在每部分逻辑执行时,通过不同的执行反馈逻辑(基础合并算法使用第
Figure BDA0002218199170000135
步,之字形合并连接算法使用第
Figure BDA0002218199170000136
步),实时的调整两种算法的切换,在无需人工干预和硬编码的前提下,实现了算法对不同数据的自适应调整,克服了合并连接算法以及之字形合并连接算法各自处理容易出现比较低效的问题,使得整体算法在不同数据分布的场景中都能达到较好的执行效果,增强了合并连接算法的鲁棒性。
请参考图5,本实施例基于图1提供的一种数据连接方法,对应提供一种数据处理装置,该装置包括:
连接单元51,用于通过第一连接算法对第一数据集和第二数据集执行数据连接操作,以连接所述第一数据集与所述第二数据集中键值相等的数据;
检测单元52,用于在所述第一连接算法的执行过程中,获取所述第一连接算法的执行参数,所述执行参数用于表征算法执行过程的执行效率;
切换单元53,用于根据所述执行参数将所述第一连接算法切换为第二连接算法,通过所述第二连接算法继续执行所述数据连接操作,其中,所述第二连接算法与所述第一连接算法不同。
其中,所述检测单元52在检测获得执行参数时,可以当所述第一连接算法为合并连接算法时,获取所述合并连接算法连续访问一个数据集中数据行的行数作为所述执行参数;或者,当所述第一连接算法为之字形合并连接算法时,获取所述之字形合并连接算法跳过的数据行的行数作为执行参数。
所述检测单元52在检测获得执行参数时,也可以当所述第一连接算法为合并连接算法时,每出现一次连续读取一个数据集中的数据行则对所述执行参数的值加上预设步长,反之,对所述执行参数的值减去所述预设步长;当所述第一连接算法为之字形合并连接算法时,每出现一次查找到的数据行与在前读取的数据行的下一行相同时对所述执行参数的值加上所述预设步长,反之,对所述执行参数的值减去所述预设步长。具体的,当所述第一连接算法为合并连接算法时,判断读取的当前第一数据行与当前第二数据行的键值大小,所述第一数据行属于第一数据集,所述第二数据行属于所述第二数据集;若当前第一数据行的键值小于或等于当前第二数据行的键值,获取上次判断的第一数据行的键值与第二数据行的键值大小的判断结果,若上次判断的第一数据行的键值小于或等于第二数据行的键值,对所述执行参数加上所述预设步长;若当前第一数据行的键值大于当前第二数据行的键值,获取上次判断的第一数据行的键值与第二数据行的键值大小的判断结果,若上次判断的第一数据行的键值大于第二数据行的键值,对所述执行参数加上所述预设步长。
作为一种可选的实施方式,第一连接算法可以为合并连接算法或之字形合并连接算法,第二连接算法可以为之字形合并连接算法或合并连接算法。
关于上述实施例中的装置,其中各个单元执行操作的具体方式已经在有关方法的实施例中进行了详细描述,此处不再详细阐述。
请参考图6,是根据一示例性实施例示出的一种用于实现数据查询方法的电子设备700的框图。例如,电子设备700可以是计算机,数据库控制台,平板设备,个人数字助理等。
参照图6,电子设备700可以包括以下一个或多个组件:处理组件702,存储器704,电源组件706,多媒体组件708,输入/输出(I/O)的接口710,以及通信组件712。
处理组件702通常控制电子设备700的整体操作,诸如与显示,数据通信,及记录操作相关联的操作。处理元件702可以包括一个或多个处理器720来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件702可以包括一个或多个模块,便于处理组件702和其他组件之间的交互。
存储器704被配置为存储各种类型的数据以支持在设备700的操作。这些数据的示例包括用于在电子设备700上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器704可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件706为电子设备700的各种组件提供电力。电源组件706可以包括电源管理***,一个或多个电源,及其他与为电子设备700生成、管理和分配电力相关联的组件。
I/O接口710为处理组件702和***接口模块之间提供接口,上述***接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
通信组件712被配置为便于电子设备700和其他设备之间有线或无线方式的通信。电子设备700可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信部件712经由广播信道接收来自外部广播管理***的广播信号或广播相关信息。在一个示例性实施例中,所述通信部件712还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,电子设备700可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器704,上述指令可由电子设备700的处理器720执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
一种非临时性计算机可读存储介质,当所述存储介质中的指令由移动终端的处理器执行时,使得电子设备能够执行一种数据查询方法,所述方法包括:
通过第一连接算法对第一数据集和第二数据集执行数据连接操作,以连接所述第一数据集与所述第二数据集中键值相等的数据;在所述第一连接算法的执行过程中,获取所述第一连接算法的执行参数,所述执行参数用于表征算法执行过程的执行效率;根据所述执行参数将所述第一连接算法切换为第二连接算法,通过所述第二连接算法继续执行所述数据连接操作,其中,所述第二连接算法与所述第一连接算法不同。
应当理解的是,本实施例并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本实施例的范围仅由所附的权利要求来限制
以上所述仅为本实施例的较佳实施例,并不用以限制本实施例,凡在本实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本实施例的保护范围之内。

Claims (10)

1.一种数据连接的方法,所述方法包括:
通过第一连接算法对第一数据集和第二数据集执行数据连接操作,以连接所述第一数据集和所述第二数据集中键值相等的数据;
在所述第一连接算法的执行过程中,获取所述第一连接算法的执行参数,所述执行参数用于表征算法执行过程的执行效率;
根据所述执行参数将所述第一连接算法切换为第二连接算法,通过所述第二连接算法继续执行所述数据连接操作,其中,所述第二连接算法与所述第一连接算法不同;
其中,所述获取所述第一连接算法的执行参数,包括:
当所述第一连接算法为合并连接算法时,获取所述合并连接算法连续访问一个数据集中数据行的行数作为所述执行参数;或者,
当所述第一连接算法为之字形合并连接算法时,获取所述之字形合并连接算法跳过的数据行的行数作为执行参数。
2.如权利要求1所述的方法,所述获取所述第一连接算法的执行参数,包括:
当所述第一连接算法为合并连接算法时,每出现一次连续读取一个数据集中的数据行则对所述执行参数的值加上预设步长,反之,对所述执行参数的值减去所述预设步长;
当所述第一连接算法为之字形合并连接算法时,每出现一次查找到的数据行与在前读取的数据行的下一行相同时对所述执行参数的值加上所述预设步长,反之,对所述执行参数的值减去所述预设步长。
3.如权利要求2所述的方法,所述当所述第一连接算法为合并连接算法时,每出现一次连续读取一个数据集中的数据行则对所述执行参数的值加上预设步长,包括:
当所述第一连接算法为合并连接算法时,判断读取的当前第一数据行与当前第二数据行的键值大小,所述第一数据行属于第一数据集,所述第二数据行属于所述第二数据集;
若当前第一数据行的键值小于或等于当前第二数据行的键值,获取上次判断的第一数据行的键值与第二数据行的键值大小的判断结果,若上次判断的第一数据行的键值小于或等于第二数据行的键值,对所述执行参数加上所述预设步长;
若当前第一数据行的键值大于当前第二数据行的键值,获取上次判断的第一数据行的键值与第二数据行的键值大小的判断结果,若上次判断的第一数据行的键值大于第二数据行的键值,对所述执行参数加上所述预设步长。
4.如权利要求1~3任一所述的方法,所述第一连接算法为合并连接算法或之字形合并连接算法,所述第二连接算法为之字形合并连接算法或合并连接算法。
5.一种数据连接的装置,所述装置包括:
连接单元,用于通过第一连接算法对第一数据集和第二数据集执行数据连接操作,以连接所述第一数据集与所述第二数据集中键值相等的数据;
检测单元,用于在所述第一连接算法的执行过程中,获取所述第一连接算法的执行参数,所述执行参数用于表征算法执行过程的执行效率;
切换单元,用于根据所述执行参数将所述第一连接算法切换为第二连接算法,通过所述第二连接算法继续执行所述数据连接操作,其中,所述第二连接算法与所述第一连接算法不同;
其中,所述检测单元用于:
当所述第一连接算法为合并连接算法时,获取所述合并连接算法连续访问一个数据集中数据行的行数作为所述执行参数;或者,
当所述第一连接算法为之字形合并连接算法时,获取所述之字形合并连接算法跳过的数据行的行数作为执行参数。
6.如权利要求5所述的装置,所述检测单元用于:
当所述第一连接算法为合并连接算法时,每出现一次连续读取一个数据集中的数据行则对所述执行参数的值加上预设步长,反之,对所述执行参数的值减去所述预设步长;
当所述第一连接算法为之字形合并连接算法时,每出现一次查找到的数据行与在前读取的数据行的下一行相同时对所述执行参数的值加上所述预设步长,反之,对所述执行参数的值减去所述预设步长。
7.如权利要求6所述的装置,所述检测单元还用于:
当所述第一连接算法为合并连接算法时,判断读取的当前第一数据行与当前第二数据行的键值大小,所述第一数据行属于第一数据集,所述第二数据行属于所述第二数据集;
若当前第一数据行的键值小于或等于当前第二数据行的键值,获取上次判断的第一数据行的键值与第二数据行的键值大小的判断结果,若上次判断的第一数据行的键值小于或等于第二数据行的键值,对所述执行参数加上所述预设步长;
若当前第一数据行的键值大于当前第二数据行的键值,获取上次判断的第一数据行的键值与第二数据行的键值大小的判断结果,若上次判断的第一数据行的键值大于第二数据行的键值,对所述执行参数加上所述预设步长。
8.如权利要求5~7任一所述的装置,所述装置还包括:
所述第一连接算法为合并连接算法或之字形合并连接算法,所述第二连接算法为之字形合并连接算法或合并连接算法。
9.一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现以下步骤:
通过第一连接算法对第一数据集和第二数据集执行数据连接操作,以连接所述第一数据集与所述第二数据集中键值相等的数据;
在所述第一连接算法的执行过程中,获取所述第一连接算法的执行参数,所述执行参数用于表征算法执行过程的执行效率;
根据所述执行参数将所述第一连接算法切换为第二连接算法,通过所述第二连接算法继续执行所述数据连接操作,其中,所述第二连接算法与所述第一连接算法不同;
其中,所述获取所述第一连接算法的执行参数,包括:
当所述第一连接算法为合并连接算法时,获取所述合并连接算法连续访问一个数据集中数据行的行数作为所述执行参数;或者,
当所述第一连接算法为之字形合并连接算法时,获取所述之字形合并连接算法跳过的数据行的行数作为执行参数。
10.一种电子设备,包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:
通过第一连接算法对第一数据集和第二数据集执行数据连接操作,以连接所述第一数据集与所述第二数据集中键值相等的数据;
在所述第一连接算法的执行过程中,获取所述第一连接算法的执行参数,所述执行参数用于表征算法执行过程的执行效率;
根据所述执行参数将所述第一连接算法切换为第二连接算法,通过所述第二连接算法继续执行所述数据连接操作,其中,所述第二连接算法与所述第一连接算法不同;
其中,所述获取所述第一连接算法的执行参数,包括:
当所述第一连接算法为合并连接算法时,获取所述合并连接算法连续访问一个数据集中数据行的行数作为所述执行参数;或者,
当所述第一连接算法为之字形合并连接算法时,获取所述之字形合并连接算法跳过的数据行的行数作为执行参数。
CN201910923118.4A 2019-09-27 2019-09-27 一种数据连接的方法、装置及电子设备 Active CN110807030B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201910923118.4A CN110807030B (zh) 2019-09-27 2019-09-27 一种数据连接的方法、装置及电子设备
PCT/CN2020/094583 WO2021057088A1 (zh) 2019-09-27 2020-06-05 一种数据连接的方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910923118.4A CN110807030B (zh) 2019-09-27 2019-09-27 一种数据连接的方法、装置及电子设备

Publications (2)

Publication Number Publication Date
CN110807030A CN110807030A (zh) 2020-02-18
CN110807030B true CN110807030B (zh) 2021-03-16

Family

ID=69487837

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910923118.4A Active CN110807030B (zh) 2019-09-27 2019-09-27 一种数据连接的方法、装置及电子设备

Country Status (2)

Country Link
CN (1) CN110807030B (zh)
WO (1) WO2021057088A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110807030B (zh) * 2019-09-27 2021-03-16 蚂蚁金服(杭州)网络技术有限公司 一种数据连接的方法、装置及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101295315A (zh) * 2007-04-27 2008-10-29 软件股份公司 用于执行xml数据库查询的方法和数据库***
CN108182192A (zh) * 2016-12-08 2018-06-19 南京航空航天大学 一种基于分布式数据库的半连接查询计划选择算法
CN108536692A (zh) * 2017-03-01 2018-09-14 华为技术有限公司 一种执行计划的生成方法、装置及数据库服务器

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8214353B2 (en) * 2005-02-18 2012-07-03 International Business Machines Corporation Support for schema evolution in a multi-node peer-to-peer replication environment
CN102609487B (zh) * 2012-01-20 2014-04-02 东华大学 一种面向列存储的桶内索引哈希连接方法
CN102799667B (zh) * 2012-07-13 2015-04-29 北京工商大学 一种基于非对称距离下的层次聚类方法
CN110807030B (zh) * 2019-09-27 2021-03-16 蚂蚁金服(杭州)网络技术有限公司 一种数据连接的方法、装置及电子设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101295315A (zh) * 2007-04-27 2008-10-29 软件股份公司 用于执行xml数据库查询的方法和数据库***
CN108182192A (zh) * 2016-12-08 2018-06-19 南京航空航天大学 一种基于分布式数据库的半连接查询计划选择算法
CN108536692A (zh) * 2017-03-01 2018-09-14 华为技术有限公司 一种执行计划的生成方法、装置及数据库服务器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Adaptive Query Processing in SQL Server 2017;Robert Sheldon;《https://www.red-gate.com/simple-talk/sql/database-administration/adaptive-query-processing-in-sql-server-2017/》;20181001;第7-16页 *

Also Published As

Publication number Publication date
WO2021057088A1 (zh) 2021-04-01
CN110807030A (zh) 2020-02-18

Similar Documents

Publication Publication Date Title
US9207861B2 (en) Method and mobile terminal for processing touch input in two different states
CN107247722B (zh) 一种文件扫描方法、装置及智能终端
CN106610790A (zh) 一种重复数据删除方法及装置
EP3506093A1 (en) Application process management method and terminal device
CN103547329A (zh) 集群***中数据处理方法及装置
MX2014009067A (es) Metodo, dispositivo, television y sistema para reconocer logotipo de estacion de television.
CN109669759A (zh) Java虚拟机的垃圾回收方法、装置、设备和存储介质
CN110807030B (zh) 一种数据连接的方法、装置及电子设备
CN109460406B (zh) 一种数据处理方法及装置
CN108364338B (zh) 一种图像数据的处理方法、装置及电子设备
US11481318B2 (en) Method and apparatus, and storage system for translating I/O requests before sending
CN108920105B (zh) 基于社区结构的图数据分布式存储方法及装置
CN104252457A (zh) 一种用于对数据集合进行管理的方法与设备
CN101236525A (zh) 文件存储、读取、删除及复制方法及其相关***
CN110928900B (zh) 多表数据的查询方法、装置、终端以及计算机存储介质
CN105205066A (zh) 一种图片查找方法和装置
CN106815283A (zh) 数据处理方法、装置及电子设备
US9361402B2 (en) Tiered index management
US20150293679A1 (en) Method and Device for Controlling Switching of Virtual Navigation Bar
CN114428589B (zh) 一种数据处理方法、装置、电子设备及存储介质
CN113360035B (zh) 图标整理方法、装置和电子设备
CN111708288B (zh) 数据处理的方法、装置、电子设备及存储介质
CN113485642A (zh) 数据缓存方法及装置
WO2016119288A1 (zh) 数据获取方法、数据获取装置和终端
CN109101143B (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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20210209

Address after: 801-10, Section B, 8th floor, 556 Xixi Road, Xihu District, Hangzhou City, Zhejiang Province 310000

Applicant after: Ant financial (Hangzhou) Network Technology Co.,Ltd.

Address before: 310000 801-11 section B, 8th floor, 556 Xixi Road, Xihu District, Hangzhou City, Zhejiang Province

Applicant before: Alipay (Hangzhou) Information Technology Co.,Ltd.

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210913

Address after: 100000 unit 02, floor 901, unit 1, building 1, No. 1, Middle East Third Ring Road, Chaoyang District, Beijing

Patentee after: Beijing Aoxing Beisi Technology Co., Ltd

Address before: 801-10, Section B, 8th floor, 556 Xixi Road, Xihu District, Hangzhou City, Zhejiang Province 310000

Patentee before: Ant financial (Hangzhou) Network Technology Co.,Ltd.