CN117076465B - 一种数据关联查询方法及相关设备 - Google Patents
一种数据关联查询方法及相关设备 Download PDFInfo
- Publication number
- CN117076465B CN117076465B CN202311344151.4A CN202311344151A CN117076465B CN 117076465 B CN117076465 B CN 117076465B CN 202311344151 A CN202311344151 A CN 202311344151A CN 117076465 B CN117076465 B CN 117076465B
- Authority
- CN
- China
- Prior art keywords
- data
- data table
- hot spot
- computing nodes
- key
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 62
- 238000013500 data storage Methods 0.000 claims description 39
- 238000004590 computer program Methods 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 10
- 238000004458 analytical method Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000013475 authorization Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000003116 impacting effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书提供了一种数据关联查询方法及相关设备。数据关联查询***中包括分布式地存储了第一数据表的多个第一计算节点,以及分布式地存储了第二数据表的多个第二计算节点。该方法应用于多个第一计算节点中的任一第一计算节点,包括:确定与针对第一数据表和第二数据表的数据关联查询相关的关联键,从第一数据表中与关联键对应的关联键值中确定出至少一个热点键值;将至少一个热点键值发送至多个第二计算节点,以使多个第二计算节点基于至少一个热点键值从第二数据表中拆分出热点数据表;热点数据表包含了第二数据表中与热点键值对应的热点数据记录;在本地存储第二计算节点发送的热点数据表;基于存储的第一数据表和热点数据表进行数据关联查询。
Description
技术领域
本说明书一个或多个实施例涉及数据查询技术领域,尤其涉及一种数据关联查询方法及相关设备。
背景技术
在进行数据关联查询时,往往需要根据查询语句中的关联键,将关联查询涉及到的主表和被关联表中的数据重分发(shuffle)到参与数据关联查询处理的多个计算节点上,使得每个计算节点上存有与相同关联键值对应的数据,然后再进行数据关联查询处理。
如上所述,数据重分发需要将海量的数据通过网络传输到对应的计算节点进行数据关联查询处理,从而带来极大的数据传输成本。除此之外,数据重分发还可能存在数据倾斜的潜在风险,当关联键的某个关联键值对应的数据记录的数量远远多于其他关联键值时,便会导致某个计算节点需要处理的数据量远远多于其他计算节点,进而严重影响数据关联查询的整体效率。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种数据关联查询方法及相关设备。
第一方面,本说明书提供了一种数据关联查询方法,数据关联查询***中包括多个第一计算节点和多个第二计算节点,所述多个第一计算节点分布式地存储了第一数据表,所述多个第二计算节点分布式地存储了第二数据表;所述方法应用于所述多个第一计算节点中的任一第一计算节点,所述方法包括:
响应于针对所述第一数据表和所述第二数据表的数据关联查询,确定与所述数据关联查询相关的关联键,并从所述第一数据表中与所述关联键对应的关联键值中确定出至少一个热点键值;
将所述至少一个热点键值发送至所述多个第二计算节点,以使所述多个第二计算节点基于所述至少一个热点键值,从分布式存储的所述第二数据表中拆分出热点数据表;其中,所述热点数据表包含了所述第二数据表中与所述热点键值对应的热点数据记录;
接收所述多个第二计算节点发送的所述热点数据表,并在本地存储所述热点数据表;
基于存储的所述第一数据表和所述热点数据表进行数据关联查询。
第二方面,本说明书提供了一种数据关联查询方法,数据关联查询***中包括多个第一计算节点和多个第二计算节点,所述多个第一计算节点分布式地存储了第一数据表,所述多个第二计算节点分布式地存储了第二数据表;所述方法应用于所述多个第二计算节点中的任一第二计算节点,所述方法包括:
接收所述多个第一计算节点中的任一第一计算节点发送的至少一个热点键值;所述至少一个热点键值为任一第一计算节点响应于针对所述第一数据表和所述第二数据表的数据关联查询,确定与所述数据关联查询相关的关联键,并从所述第一数据表中与所述关联键对应的关联键值中确定出的热点键值;
基于所述至少一个热点键值,从分布式存储的所述第二数据表中拆分出热点数据表,并发送所述热点数据表至任一第一计算节点,以使任一第一计算节点在本地存储接收到的所述热点数据表,并基于存储的所述第一数据表和所述热点数据表进行数据关联查询;其中,所述热点数据表包含了所述第二数据表中与所述热点键值对应的热点数据记录。
第三方面,本说明书提供了一种数据关联查询装置,数据关联查询***中包括多个第一计算节点和多个第二计算节点,所述多个第一计算节点分布式地存储了第一数据表,所述多个第二计算节点分布式地存储了第二数据表;所述装置应用于所述多个第一计算节点中的任一第一计算节点,所述装置包括:
热点键值确定单元,用于响应于针对所述第一数据表和所述第二数据表的数据关联查询,确定与所述数据关联查询相关的关联键,并从所述第一数据表中与所述关联键对应的关联键值中确定出至少一个热点键值;
热点键值发送单元,用于将所述至少一个热点键值发送至所述多个第二计算节点,以使所述多个第二计算节点基于所述至少一个热点键值,从分布式存储的所述第二数据表中拆分出热点数据表;其中,所述热点数据表包含了所述第二数据表中与所述热点键值对应的热点数据记录;
数据表存储单元,用于接收所述多个第二计算节点发送的所述热点数据表,并在本地存储所述热点数据表;
第一查询单元,用于基于存储的所述第一数据表和所述热点数据表进行数据关联查询。
第四方面,本说明书提供了一种数据关联查询装置,数据关联查询***中包括多个第一计算节点和多个第二计算节点,所述多个第一计算节点分布式地存储了第一数据表,所述多个第二计算节点分布式地存储了第二数据表;所述装置应用于所述多个第二计算节点中的任一第二计算节点,所述装置包括:
热点键值接收单元,用于接收多个第一计算节点中的任一第一计算节点发送的至少一个热点键值;所述至少一个热点键值为任一第一计算节点响应于针对所述第一数据表和所述第二数据表的数据关联查询,确定与所述数据关联查询相关的关联键,并从所述第一数据表中与所述关联键对应的关联键值中确定出的热点键值;
数据表拆分单元,用于基于所述至少一个热点键值,从分布式存储的所述第二数据表中拆分出热点数据表,并发送所述热点数据表至任一第一计算节点,以使任一第一计算节点在本地存储接收到的所述热点数据表,并基于存储的所述第一数据表和所述热点数据表进行数据关联查询;其中,所述热点数据表包含了所述第二数据表中与所述热点键值对应的热点数据记录。
第五方面,本说明书提供了一种数据关联查询***,包括多个第一计算节点和多个第二计算节点,所述多个第一计算节点分布式地存储了第一数据表,所述多个第二计算节点分布式地存储了第二数据表;其中,
所述多个第一计算节点中的任一第一计算节点,用于响应于针对所述第一数据表和所述第二数据表的数据关联查询,确定与所述数据关联查询相关的关联键,并从所述第一数据表中与所述关联键对应的关联键值中确定出至少一个热点键值,以及进一步将所述至少一个热点键值发送至所述多个第二计算节点;
所述多个第二计算节点中的任一第二计算节点,用于接收所述至少一个热点键值,并基于所述至少一个热点键值,从分布式存储的所述第二数据表中拆分出热点数据表,以及进一步将所述热点数据表发送至所述多个第一计算节;其中,所述热点数据表包含了所述第二数据表中与所述热点键值对应的热点数据记录;
所述第一计算节点,还用于在本地存储接收到的所述热点数据表,并基于存储的所述第一数据表和所述热点数据表进行数据关联查询。
相应地,本说明书还提供了一种计算机设备,包括:存储器和处理器;所述存储器上存储有可由所述处理器运行的计算机程序;所述处理器运行所述计算机程序时,执行上述第一方面或者第二方面所述的数据关联查询方法。
相应地,本说明书还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行如上述第一方面或者第二方面所述的数据关联查询方法。
综上所述,数据关联查询***中可以包括分布式存储了第一数据表的多个第一计算节点,以及分布式存储了第二数据表的多个第二计算节点。该多个第一计算节点中的任一第一计算节点可以响应于针对第一数据表和第二数据表的数据关联查询,确定与数据关联查询相关的关联键,并从第一数据表中与关联键对应的关联键值中确定出至少一个热点键值,然后将确定出的至少一个热点键值发送给多个第二计算节点。多个第二计算节点可以基于该至少一个热点键值,从分布式存储的第二数据表中拆分出包含了与热点键值对应的热点数据记录的热点数据表,并将该热点数据表发送至第一数据表所在的多个计算节点上进行存储,从而实现在第一计算节点本地基于存储的第一数据表和热点数据表进行数据关联查询,无需进行数据重分发,也就避免了数据重分发带来的数据传输成本和数据倾斜问题。只有涉及到极小概率的非热点数据记录时才需要进行远程查询,极大程度上提升了数据关联查询效率。
附图说明
图1是一示例性实施例提供的一种数据关联查询***的***架构示意图;
图2是一示例性实施例提供的一种数据关联查询方法的流程示意图;
图3是一示例性实施例提供的一种数据关联查询方法的整体步骤示意图;
图4是一示例性实施例提供的一种数据关联查询装置的结构示意图;
图5是一示例性实施例提供的另一种数据关联查询装置的结构示意图;
图6是一示例性实施例提供的一种计算机设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
需要说明的是,本申请中所述的“多个”是指两个或者两个以上。
此外,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
如上所述,数据关联查询中的数据重分发通常会带来高昂的数据传输成本,以及数据倾斜的潜在风险,从而严重影响数据关联查询性能。并且,随着企业数据量的快速增加和企业各类数据需求的日益旺盛,各类数据的关联处理频繁发生,因此大量数据需要根据关联键进行不断的重分发,这对企业的数据处理带来不小的处理成本。
为了避免数据重分发,常规技术中会将被关联表广播至分布式存储了主表的多个计算节点上,每个计算节点在本地存储接收到的被关联表。如此,每个计算节点便可以基于本地存储的被关联表以及主表在本地进行数据关联查询,不再需要进行数据重分发,从而有效避免了数据重分发带来的数据传输成本和数据倾斜问题。
但是,该方案必须要求被关联表的数据量非常小,使其能够成功被存储在每个计算节点的内存中,使用场景非常受限,无法解决用户的实际需求。
基于此,本说明书提供了一种技术方案,可以从关联的数据表中拆分出包含与关联键对应的热点数据记录的热点数据表,并将热点数据表发送至另一关联的数据表所在的多个计算节点进行存储,从而实现在计算节点本地进行数据关联查询,有效提升了数据关联查询效率。
在实现时,数据关联查询***中可以包括多个第一计算节点和多个第二计算节点,该多个第一计算节点分布式地存储了第一数据表,该多个第二计算节点分布式地存储了第二数据表。多个第一计算节点中的任一第一计算节点可以响应于针对第一数据表和第二数据表的数据关联查询,确定与数据关联查询相关的关联键,并从第一数据表中与关联键对应的关联键值中确定出至少一个热点键值。然后,第一计算节点可以将确定出的至少一个热点键值发送至多个第二计算节点。多个第二计算节点可以基于该至少一个热点键值,从分布式存储的第二数据表中拆分出热点数据表,并将该热点数据表发送至任一第一计算节点。其中,热点数据表包含了第二数据表中与热点键值对应的热点数据记录。进一步地,第一计算节点可以在本地存储接收到的该热点数据表,并基于存储的第一数据表和热点数据表进行数据关联查询。
在以上技术方案中,本申请可以基于第一数据表中与关联键对应的热点键值,从多个第二计算节点分布式存储的第二数据表中拆分出包含了与热点键值对应的热点数据记录的热点数据表,并将该热点数据表发送第一数据表所在的多个计算节点上进行存储,从而实现在第一计算节点本地基于存储的第一数据表和热点数据表进行数据关联查询,无需进行数据重分发,进而避免了数据重分发带来的数据传输成本和数据倾斜问题。本申请只有涉及到极小概率的非热点数据记录时才需要进行远程查询,极大程度上提升了数据关联查询效率。
请参阅图1,图1是一示例性实施例提供的一种数据关联查询***的***架构示意图。本说明书提供的一个或多个实施例可以在图1所示的***架构或者类似的***架构中具体实施。如图1所示,数据关联查询***10中可以包括多个第一计算节点和多个第二计算节点,具体包括第一计算节点100a、第一计算节点100b、第二计算节点200a和第二计算节点200b等。在一些可能的实施方式中,第一计算节点100a、第一计算节点100b、第二计算节点200a和第二计算节点200b之间可以通过有线或者无线网络等方式建立通信连接,本说明书对此不做具体限定。
在一示出的实施方式中,第一计算节点100a和第一计算节点100b分布式地存储了第一数据表,即第一计算节点100a和第一计算节点100b分别存储了第一数据表中包含的部分数据(或者说第一数据表的一个分片)。
在一示出的实施方式中,第二计算节点200a和第二计算节点200b分布式地存储了第二数据表,即第二计算节点200a和第二计算节点200b分别存储了第二数据表中包含的部分数据(或者说第二数据表的一个分片)。
需要说明的是,本申请对第一数据表和第二数据表的存储位置不作特别限定。在一示出的实施方式中,第一数据表可以分布式存储在第一计算节点100a和第一计算节点100b的外部存储设备(例如磁盘、固态硬盘等)中,第二数据表也可以分布式存储在第二计算节点200a和第二计算节点200b的外部存储设备(例如磁盘、固态硬盘)中,等等,本说明书对此不做具体限定。
在一示出的实施方式中,第一数据表和第二数据表可以为关系型数据表。应理解,关系型数据表由多个数据列和多行数据记录构成。示例性的,第一数据表可以是电商交易订单表,可以包含交易号、支付时间、商家ID、买家ID、交易商品等多个数据列(或者称之为字段列),每一行数据记录可以用于表示一次商品交易记录。示例性的,第二数据表可以是商家信息表,可以包含商家ID、注册时间、好评率、粉丝数等多个数据列,每一行数据记录可以用于表示一个商家的信息。
在一示出的实施方式中,第一计算节点100a和第一计算节点100b可以响应于针对上述第一数据表和第二数据表的数据关联查询,确定与本次数据关联查询相关的关联键。其中,第一数据表可以是数据关联查询中的主表,第二数据表可以是被关联表,或者,第一数据表可以是被关联表,第二数据表可以是主表,本说明书对此不做具体限定。
应理解,关联键是数据表中用于数据关联的外键,是用于与其他数据表进行数据关联的数据列字段。比如在电商交易订单表的基础上,可以通过关联键“商家ID”来关联商家信息表,以获取商家的一些基础信息;或者可以通过关联键“买家ID”来关联买家信息表,以获取买家的一些基础信息,等等,此处不再进行详述。
进一步地,第一计算节点100a和第一计算节点100b可以从第一数据表中与该关联键对应的关联键值中确定出至少一个热点键值。
具体地,第一计算节点100a和第一计算节点100b可以先读取第一数据表中与该关联键对应的目标数据列,目标数据列中可以包括与该关联键对应的多个关联键值。示例性的,以关联键是商家ID为例,该目标数据列中可以包括“id001”、“id002”、“id003”、“id004”等多个关联键值。然后,第一计算节点100a和第一计算节点100b可以从目标数据列包含的多个关联键值中确定出至少一个热点键值。其中,热点键值可以是多个关联键值中重复出现次数最多的若干个关联键值,或者重复出现次数超过阈值的若干个关联键值,等等,具体请参考下述图2对应实施例的描述,此处不再展开详述。
如上所述,第一计算节点100a和第一计算节点100b上仅存储了第一数据表中的部分数据,因此第一计算节点100a和第一计算节点100b基于自己存储的数据分别确定出的至少一个热点键值可以相同或不同。示例性的,第一数据表总共包含一亿行数据记录,第一计算节点100a和第二计算节点100b上分别存储了其中的5000万行数据记录,即第一计算节点100a和第一计算节点100b分别读取到的目标数据列中均包含了5000万个关联键值。示例性的,第一计算节点100a从读取到的5000万个关联键值中确定出的热点键值可以为“id001”和“id002”,第一计算节点100b从读取到的5000万个关联键值中确定出的热点键值可以同样为“id001”和“id002”;或者,第一计算节点100a从读取到的5000万个关联键值中确定出的热点键值可以为“id001”和“id002”,第一计算节点100b从读取到的5000万个关联键值中确定出的热点键值可以为“id001”和“id003”,等等,本说明书对此不做具体限定。
进一步地,第一计算节点100a和第一计算节点100b可以将自己确定出的至少一个热点键值发送给第二计算节点200a和第二计算节点200b。示例性的,第一计算节点100a可以将确定出的热点键值“id001”和“id002”发送至第二计算节点200a和第二计算节点200b,第一计算节点100b可以将确定出的热点键值“id001”和“id003”发送至第二计算节点200a和第二计算节点200b。如此,在多个第一计算节点各自确定出的至少一个热点键值存在重复的情况下,每个第二计算节点可以将重复的热点键值合并,最终第二计算节点200a和第二计算节点200b可以确定本次数据联合查询的关联键的热点键值为“id001”、“id002”和“id003”。
在一示出的实施方式中,第二计算节点还可以在接收到的多个热点键值中进一步筛选出至少一个热点键值。示例性的,仍以第一计算节点100a和第一计算节点100b确定出的热点键值包括“id001”、“id002”和“id003”为例,第二计算节点可以在“id001”、“id002”和“id003”这三个热点键值中进一步将重复出现次数最多的“id001”、“id002”作为最终的热点键值,等等,本说明书对此不做具体限定。
进一步地,第二计算节点200a和第二计算节点200b可以基于至少一个热点键值,从分布式存储的第二数据表中拆分出热点数据表和非热点数据表。其中,热点数据表包含了第二数据表中与热点键值对应的热点数据记录,相应的,非热点数据表包含了第二数据表中与非热点键值(即除热点键值之外的其他关联键值)对应的非热点数据记录(即除热点数据记录之外的其他数据记录)。
示例性的,第二数据表总共包含8000万行数据记录,第二计算节点200a和第二计算节点200b上分别存储了其中的4000万行数据记录。以至少一个热点键值为“id001”和“id002”为例,第二计算节点200a存储的4000万行数据记录中可以包含500行与“id001”对应的数据记录,以及100行与“id002”对应的数据记录;第二计算节点200b存储的4000万行数据记录中可以包含300行与“id001”对应的数据记录,以及50行与“id002”对应的数据记录。如此,第二计算节点200a和第二计算节点200b可以分别从第二数据表中筛选出600行热点数据记录和350行热点数据记录,相应的,第二数据表中剩余的数据记录均为非热点数据记录。
在一示出的实施方式中,多个第二计算节点中的任一第二计算节点可以接收其他第二计算节点从第二数据表中筛选出的热点数据记录,并将所有热点数据记录组合成热点数据表。示例性的,第二计算节点200a可以整合第二计算节点200a和第二计算节点200b分别从第二数据表中筛选的600行热点数据记录和350行热点数据记录,组成热点数据表,并将该热点数据表发送至第一计算节点100a和第一计算节点100b。
在一示出的实施方式中,多个第二计算节点也可以将各自筛选出的热点数据记录先发送至每个第一计算节点,后续第一计算节点可以在本地将接收到的所有热点数据记录组合成热点数据表,等等,本说明书对此不做具体限定。
进一步地,第一计算节点100a和第一计算节点100b可以在本地存储上述热点数据表。示例性的,由于热点数据记录一般只有几百或者几千条,数据量不大,因此第一计算节点100a和第一计算节点100b可以直接将热点数据表存储在内存中。
在一示出的实施方式中,与热点数据表相类似的,第二数据表中的多条非热点数据记录可以组合成非热点数据表。在一示出的实施方式中,多个第二计算节点可以分布式存储该非热点数据表。在一示出的实施方式中,多个第二计算节点也可以将多条非热点数据记录发送至对应的非热点数据存储节点(图中未示出),由多个非热点数据存储节点分布式存储上述非热点数据表,等等,本说明书对此不做具体限定,具体可参考下述实施例的描述,此处不再展开详述。
进一步地,第一计算节点100a和第一计算节点100b在本地存储了热点数据表之后,便可以基于存储的第一数据表和热点数据表进行数据关联查询。
具体地,第一计算节点100a和第一计算节点100b可以从第一数据表中读取目标数据记录,并确定读取到的目标数据记录中与该关联键对应的目标键值是否为上述热点键值。其中,第一计算节点100a和第一计算节点100b可以逐行读取第一数据表中的数据记录,该目标数据记录可以是其中的任意一行数据记录。
在一示出的实施方式中,如果读取到的目标数据记录中与关联键对应的目标键值是热点键值(例如为上述“id001”),则可以直接在存储的热点数据表中查询对应的热点数据记录。
在一示出的实施方式中,如果读取到的目标数据记录中与关联键对应的目标键值不是热点键值,例如为“id004”,则可以远程查询多个第二计算节点或者多个非热点数据存储节点中存储的非热点数据表中与该目标键值对应的非热点数据记录。
如此,本申请避免了数据重分发,可以实现在计算节点本地进行数据关联查询,只有涉及到极小概率的非热点数据记录时才需要进行远程查询,极大程度上提升了数据关联查询效率。
需要说明的是,本申请中的第一数据表和第二数据表可以为任何规模的数据表,本说明书对此不做具体限定。示例性的,第一数据表可以是大表,其大小在TB及以上,可以包含上亿条甚至十几亿条数据记录,一般情况下大表多是明细事实表。示例性的,第一数据表也可以是中表,其大小在GB至TB区间,可以包含上亿条数据记录,一般情况下中表多是维表。示例性的,第一数据表还可以是小表,可以直接缓存在内存中,一般仅包含几十行至几十万行的数据记录。第二数据表同理,此处不再进行赘述。
在一示出的实施方式中,上述第一计算节点100a、第一计算节点100b、第二计算节点200a、第二计算节点100b可以是具备上述功能的智能手机、平板电脑、笔记本电脑、台式电脑、服务器,或者由多个服务器构成的服务器集群,等等,本说明书对此不做具体限定。
应理解,图1所示的***架构仅做示例性说明,在一些可能的实施方式中,数据关联查询***中还可以包括比图1所示更多或者更少的设备,例如还可以包括更多的第一计算节点和第二计算节点,又例如还可以包括用于分布式存储非热点数据表的多个非热点数据存储节点,等等,本说明书对此不做具体限定。
请参阅图2,图2是一示例性实施例提供的一种数据关联查询方法的流程示意图。该方法可以应用于图1所示的数据关联查询***中,具体可以应用于数据关联查询***中的任一第一计算节点(例如第一计算节点100a),该数据关联查询***中包括多个第一计算节点和多个第二计算节点,多个第一计算节点分布式地存储了第一数据表,多个第二计算节点分布式地存储了第二数据表。如图2所示,该方法具体可以包括如下步骤S201-步骤S204。
步骤S201,响应于针对第一数据表和第二数据表的数据关联查询,确定与所述数据关联查询相关的关联键,并从所述第一数据表中与所述关联键对应的关联键值中确定出至少一个热点键值。
在一示出的实施方式中,多个第一计算节点中的任一第一计算节点可以响应于针对上述第一数据表和第二数据表的数据关联查询,确定与本次数据关联查询相关的关联键。
具体地,第一计算节点可以先接收针对上述第一数据表和第二数据表的数据关联查询语句,响应于接收到的该数据关联查询语句,对该语句进行解析,并根据解析结果确定出与本次数据关联查询相关的关联键。示例性的,该数据关联查询语句可以是join语句,该关联键可以是join语句中的join key。示例性的,该数据关联查询语句可以是agg语句,该关联键可以是agg语句中的agg key,等等,本说明书对此不做具体限定。
在一示出的实施方式中,该数据关联查询语句可以是任一第一计算节点发送的,也可以是与任一第一计算节点对接的其他节点发送的,本说明书对此不做具体限定。
在一示出的实施方式中,该第一数据表可以为关系型数据表。相应的,第一计算节点可以先从第一数据表的多个数据列中读取出与关联键对应的目标数据列,该目标数据列中包括与关联键对应的多个关联键值。进一步地,第一计算节点可以从目标数据列包含的多个关联键值中确定出至少一个热点键值。示例性的,以关联键是商家ID为例,该目标数据列中可以包括“id001”、“id002”、“id003”、“id004”等多个关联键值。示例性的,以关联键是商品名称为例,该目标数据列中可以包括“电视机”、“洗衣机”、“电冰箱”等多个关联键值。
需要说明的是,本申请对从第一数据表中读取目标数据列的具体方式不做特别限定。
在一示出的实施方式中,如果第一数据表是普通的文件数据或者行存数据,则需要进行全表读取,然后再提取出与关联键对应的目标数据列。在一示出的实施方式中,如果第一数据表是列存文件类型,则可以只读取需要的与关联键对应的目标数据列,等等,本说明书对此不做具体限定。
需要说明的是,本申请对从多个关联键值中确定出热点键值的具体规则不作特别限定。
在一示出的实施方式中,可以将目标数据列包含的多个关联键值中重复次数大于预设阈值的关联键值确定为热点键值。示例性的,该预设阈值可以是500、1000、2000或者100000,等等,本说明书对此不做具体限定,可以根据实际情况和需求进行设置。
在一示出的实施方式中,也可以将目标数据列包含的多个关联键值中重复次数最多的预设数量个的关联键值确定为热点键值。示例性的,可以先按照重复次数由多到少的顺序,将多个关联键值进行排列,并将排名靠前的预设数量个的关联键值确定为热点键值,等等,本说明书对此不做具体限定。示例性的,该预设数量可以是10、30、50或者200,等等,本说明书对此不做具体限定,可以根据实际情况和需求进行设置。
此外,在一些可能的实施方式中,第一数据表作为关系型数据表,其列与行可以倒置,即每一列可以用来表示一条数据记录,而每一行可以用来表示例如商家ID、买家ID、交易商品等字段,本说明书对此不做具体限定。如此,在一些可能的实施方式中,上述目标数据列也可以是目标数据行,该目标数据行中可以包括与关联键对应的多个关联键值。
步骤S202,将至少一个热点键值发送至多个第二计算节点,以使所述多个第二计算节点基于所述至少一个热点键值,从分布式存储的第二数据表中拆分出热点数据表。
在一示出的实施方式中,任一第一计算节点可以将确定出的至少一个热点键值发送至多个第二计算节点。相应的,多个第二计算节点中的任一第二计算节点可以接收多个第一计算节点各自发送的至少一个热点键值。
进一步地,多个第二计算节点可以基于该至少一个热点键值从其分布式存储的第二数据表中拆分出热点数据表,相应的,还可以从第二数据表中拆分出非热点数据表。其中,热点数据表包含了第二数据表中与热点键值对应的热点数据记录,相应的,非热点数据表包含了第二数据表中与非热点键值对应的非热点数据记录,具体可参考上述图1对应实施例的描述,此处不再进行赘述。
进一步地,第二计算节点可以将拆分出的热点数据表发送至多个第一计算节点,或者说向多个第一计算节点广播该热点数据表。
步骤S203,接收多个第二计算节点发送的热点数据表,并在本地存储所述热点数据表。
在一示出的实施方式中,任一第一计算节点可以接收第二计算节点发送的上述热点数据表,并在本地存储该热点数据表。
需要说明的是,本申请对热点数据表的存储方式不作特别限定。
在一示出的实施方式中,考虑到热点数据表的数据量较小,第一计算节点可以将热点数据表直接存储在内存中。
在一示出的实施方式中,任一第一计算节点可以以哈希表(hash table)的形式存储上述热点数据表。示例性的,第一计算节点可以在内存中构建热点hash表。具体地,第一计算节点在接收到热点数据表后,可以计算热点数据表中的任一行热点数据记录中的热点键值的hash值,基于该计算出的hash值确定该热点数据记录在热点hash表中的存储位置,并将该热点数据记录存储至热点hash表中的存储位置上。
步骤S204,基于存储的第一数据表和所述热点数据表进行数据关联查询。
进一步地,在一示出的实施方式中,当每个第一计算节点在本地存储了热点数据表后,多个第一计算节点便可以基于存储的第一数据表和热点数据表进行数据关联查询。
具体地,任一第一计算节点可以执行上述数据关联查询语句,从第一数据表中读取目标数据记录,并确定读取到的目标数据记录中与该关联键对应的目标键值是否为上述热点键值。其中,第一计算节点可以逐行读取第一数据表中的数据记录,该目标数据记录可以是其中的任意一行数据记录。
在一示出的实施方式中,如果读取到的目标数据记录中与关联键对应的目标键值是热点键值,则可以直接在存储的热点数据表中查询对应的热点数据记录。
示例性的,第一计算节点可以先计算该目标键值的hash值(计算方法与构建热点hash表时采用的计算方法相同),然后在其存储的热点hash表中与该hash值对应的存储位置上查询与该目标键值对应的热点数据记录。
在一示出的实施方式中,如果读取到的目标数据记录中与关联键对应的目标键值不是热点键值,则可以远程查询非热点数据表中与该目标键值对应的非热点数据记录。
进一步地,请参阅图3,图3是一示例性实施例提供的一种数据关联查询方法的整体步骤示意图。
如图3中的步骤S31所示,分布式存储了第一数据表的多个第一计算节点,可以在第一数据表中提取出与本次数据关联查询相关的关联键对应的热点键值。步骤31具体可参考上述图2对应实施例的步骤S201中的描述,此处不再进行赘述。
如图3中的步骤S32所示,第一计算节点可以将确定出的热点键值发送至多个第二计算节点。步骤32具体可参考上述图2对应实施例的步骤S202中的描述,此处不再进行赘述。
如图3中的步骤S33所示,多个第二计算节点可以接收第一计算节点发送的热点键值,并根据热点键值对分布式存储的第二数据表进行拆分。具体地,如图3所示,可以将第二数据表拆分成热点数据表和非热点数据表。步骤33具体可参考上述图2对应实施例的步骤S202中的描述,此处不再进行赘述。
如图3中的步骤S34所示,第二计算节点可以将拆分出的热点数据表发送至多个第一计算节点,以使多个第一计算节点在本地存储接收到的热点数据表。步骤34具体可参考上述图2对应实施例的步骤S203中的描述,此处不再进行赘述。
如图3中的步骤S35所示,第二计算节点可以将非热点数据表中的非热点数据记录发送至对应的非热点数据存储节点,以由多个非热点数据存储节点分布式地存储该非热点数据表,即每个非热点数据存储节点负责存储非热点数据表中的部分非热点数据记录。
需要说明的是,本申请对非热点数据表的存储方式不作特别限定。
在一示出的实施方式中,每个非热点数据存储节点可以在内存中构建非热点hash表。相应的,非热点数据存储节点可以计算接收到的每条非热点数据记录中的非热点键值的hash值,并基于计算得到的hash值,将该非热点数据记录存储在非热点hash表中与该hash值对应的存储位置上。当每个非热点数据存储节点都完成本地内存中的Hash Table构建以及非热点数据存储后,所有的非热点数据存储节点就可以组合成分布式哈希表服务(Hash table services),以对外提供统一的数据查询服务。
如上所述,每个非热点数据存储节点中只存储了非热点数据表中的部分非热点数据记录,第二计算节点在确定由多少非热点数据存储节点来分布式存储非热点数据表,以及具体由哪个非热点数据存储节点来存储哪条非热点数据记录时,具体可以包括:基于预设的并发数生成对应的hash计算函数;根据该hash计算函数计算每条非热点数据记录中的关联键值的hash值,并基于该hash值,确定对应的非热点数据存储节点,以及进一步将该非热点数据记录发送至对应的非热点数据存储节点进行存储。如此,每个非热点数据存储节点可以对应一个非热点键值的hash值取值范围,相应的,每个非热点数据存储节点中可以存储在其hash值取值范围内的至少一个非热点键值对应的非热点数据记录。
在一示出的实施方式中,第二计算节点可以将确定出的多个非热点数据存储节点与多个非热点键值的对应关系发送至多个第一计算节点。相应的,每个第一计算节点中还存储了多个非热点数据存储节点与多个非热点键值的对应关系,具体可以是多个非热点数据存储节点与多个非热点键值的hash值的对应关系。
此外,需要说明的是,上述预设定的并发数,即非热点数据存储节点的数量,可以是手动配置或根据非热点数据表的数据量自动生成的,该并发数需要确保每个非热点数据存储节点都能将其负责的非热点数据记录成功存储到内存中。
在一些可能的实施方式中,多个非热点数据存储节点中的部分非热点数据存储节点也可以是第二计算节点,本说明书对此不做具体限定。
如图3中的步骤S36所示,第一计算节点可以基于本地存储的第一数据表和热点数据表进行数据关联查询。步骤36具体可参考上述图2对应实施例的步骤S204中的描述,此处不再进行赘述。
在一示出的实施方式中,如图3所示,如果第一计算节点(例如第一计算节点1)在本地存储的热点数据表中查询不到相应的数据记录,例如在其存储的第一数据表(分片1)中读取到的目标数据记录中与关联键对应的目标键值不是热点键值,则可以基于上述存储的多个非热点数据存储节点与多个非热点键值的对应关系,在多个非热点数据存储节点中查找与该目标键值对应的目标计算节点。具体地,可以基于上述步骤S35中的hash计算函数计算该目标键值的hash值,并基于该hash值在多个非热点数据存储节点中查找对应的目标计算节点。
进一步地,第一计算节点可以将查询路由到存储了与该目标键值对应的非热点数据的目标计算节点上。在一示出的实施方式中,第一计算节点可以向该目标计算节点发送该目标键值,相应的,目标计算节点接收该目标键值,并在其存储的非热点数据表中查询与该目标键值对应的非热点数据记录。
在一示出的实施方式中,第一计算节点可以向目标计算节点发送查询请求,该查询请求中可以包含上述目标键值,相应的,目标计算节点可以响应于该查询请求在其存储的非热点数据表中查询与该目标键值对应的非热点数据记录。
在一示出的实施方式中,目标计算节点在查询与该目标键值对应的非热点数据记录时,具体可以包括:计算该目标键值的hash值(计算方法与构建非热点hash表时采用的计算方法相同),然后在其存储的非热点hash表中与该hash值对应的存储位置上查询与该目标键值对应的非热点数据记录。
进一步地,目标计算节点可以将查询到的与目标键值对应的非热点数据记录发送至第一计算节点。相应的,第一计算节点可以接收目标计算节点发送的与所述目标键值对应的非热点数据记录,至此,完成了对目标数据记录的关联查询。
在一示出的实施方式中,当第一计算节点完成对目标数据记录的关联查询后,可以判断第一数据表中的数据记录是否被全部读取完成。若第一数据表中的数据记录已被全部读取完成,则表明本次数据关联查询结束,可以输出查询结果。若第一数据表中的数据记录还未被全部读取完成,则第一计算节点可以继续读取目标数据记录的下一行数据记录,以继续执行数据关联查询,直至第一数据表中的数据记录全部读取完成。
综上,本申请的数据关联查询***中可以包括分布式存储了第一数据表的多个第一计算节点,以及分布式存储了第二数据表的多个第二计算节点。该多个第一计算节点中的任一第一计算节点可以响应于针对第一数据表和第二数据表的数据关联查询,确定与数据关联查询相关的关联键,并从第一数据表中与关联键对应的关联键值中确定出至少一个热点键值,然后将确定出的至少一个热点键值发送给多个第二计算节点。多个第二计算节点可以基于该至少一个热点键值,从分布式存储的第二数据表中拆分出包含了与热点键值对应的热点数据记录的热点数据表,并将该热点数据表发送至第一数据表所在的多个计算节点上进行存储,从而实现在第一计算节点本地基于存储的第一数据表和热点数据表进行数据关联查询,无需进行数据重分发,也就避免了数据重分发带来的数据传输成本和数据倾斜问题。只有涉及到极小概率的非热点数据记录时才需要进行远程查询,极大程度上提升了数据关联查询效率。
与上述方法流程实现对应,本说明书的实施例还提供了一种数据关联查询装置。请参阅图4,图4是一示例性实施例提供的一种数据关联查询装置的结构示意图,该装置40可以应用于图1所示数据关联查询***中的任一第一计算节点,该数据关联查询***中包括多个第一计算节点和多个第二计算节点,多个第一计算节点分布式地存储了第一数据表,多个第二计算节点分布式地存储了第二数据表。如图4所示,该装置40包括:
热点键值确定单元401,用于响应于针对所述第一数据表和所述第二数据表的数据关联查询,确定与所述数据关联查询相关的关联键,并从所述第一数据表中与所述关联键对应的关联键值中确定出至少一个热点键值;
热点键值发送单元402,用于将所述至少一个热点键值发送至所述多个第二计算节点,以使所述多个第二计算节点基于所述至少一个热点键值,从分布式存储的所述第二数据表中拆分出热点数据表;其中,所述热点数据表包含了所述第二数据表中与所述热点键值对应的热点数据记录;
数据表存储单元403,用于接收所述多个第二计算节点发送的所述热点数据表,并在本地存储所述热点数据表;
第一查询单元404,用于基于存储的所述第一数据表和所述热点数据表进行数据关联查询。
在一示出的实施方式中,所述第一数据表为关系型数据表;热点键值确定单元401,具体用于:
从所述第一数据表中与所述关联键对应的目标数据列包含的多个关联键值中确定出至少一个热点键值。
在一示出的实施方式中,热点键值确定单元401,具体用于:
将所述目标数据列包含的多个关联键值中重复次数大于预设阈值的关联键值确定为热点键值;或者,
将所述目标数据列包含的多个关联键值中重复次数最多的预设数量个的关联键值确定为热点键值。
在一示出的实施方式中,所述第一计算节点在内存中构建了热点hash表;数据表存储单元403,具体用于:
计算所述热点数据表中的任一热点数据记录中的热点键值的hash值;
基于所述hash值确定该热点数据记录在所述热点hash表中的存储位置,并将该热点数据记录存储至所述热点hash表中的所述存储位置上。
在一示出的实施方式中,所述数据关联查询***中还包括多个非热点数据存储节点,所述多个非热点数据存储节点分布式地存储了所述多个第二计算节点发送的非热点数据表;其中,所述非热点数据表为由所述多个第二计算节点基于所述至少一个热点键值,从分布式存储的所述第二数据表中拆分出的非热点数据表;所述非热点数据表包含了所述第二数据表中与非热点键值对应的非热点数据记录。
在一示出的实施方式中,所述多个非热点数据存储节点在内存中构建了非热点hash表;所述非热点数据表中的任一非热点数据记录存储在所述非热点hash表中与该非热点数据记录中的非热点键值的hash值对应的存储位置上。
在一示出的实施方式中,热点键值确定单元401,具体用于:
响应于针对所述第一数据表和所述第二数据表的数据关联查询语句,对所述数据关联查询语句进行解析,并根据解析结果确定与所述数据关联查询相关的关联键。
在一示出的实施方式中,第一查询单元404,具体用于:
执行所述数据关联查询语句,从所述第一数据表中读取目标数据记录,并确定读取到的所述目标数据记录中与所述关联键对应的目标键值是否为所述热点键值;
如果是,计算所述目标键值的hash值,并在其存储的所述热点hash表中与所述hash值对应的存储位置上查询与所述目标键值对应的热点数据记录。
在一示出的实施方式中,所述第一计算节点中存储了所述多个第二计算节点发送的所述多个非热点数据存储节点与所述多个非热点键值的对应关系;所述装置40还包括,第二查询单元405,用于:
如果读取到的所述目标数据记录中与所述关联键对应的目标键值不是所述热点键值,基于存储的所述对应关系,在所述多个非热点数据存储节点中查找与所述目标键值对应的目标计算节点;
向所述目标计算节点发送所述目标键值,以使所述目标计算节点计算所述目标键值的hash值,并在其存储的所述非热点hash表中与所述hash值对应的存储位置上查询与所述目标键值对应的非热点数据记录;
接收所述目标计算节点发送的与所述目标键值对应的非热点数据记录。
相应的,本说明书的实施例还提供了一种数据关联查询装置。请参阅图5,图5是一示例性实施例提供的一种数据关联查询装置的结构示意图,该装置50可以应用于图1所示数据关联查询***中的任一第二计算节点,该数据关联查询***中包括多个第一计算节点和多个第二计算节点,多个第一计算节点分布式地存储了第一数据表,多个第二计算节点分布式地存储了第二数据表。如图5所示,该装置50包括:
热点键值接收单元501,用于接收多个第一计算节点中的任一第一计算节点发送的至少一个热点键值;所述至少一个热点键值为任一第一计算节点响应于针对所述第一数据表和所述第二数据表的数据关联查询,确定与所述数据关联查询相关的关联键,并从所述第一数据表中与所述关联键对应的关联键值中确定出的热点键值;
数据表拆分单元502,用于基于所述至少一个热点键值,从分布式存储的所述第二数据表中拆分出热点数据表,并发送所述热点数据表至任一第一计算节点,以使任一第一计算节点在本地存储接收到的所述热点数据表,并基于存储的所述第一数据表和所述热点数据表进行数据关联查询;其中,所述热点数据表包含了所述第二数据表中与所述热点键值对应的热点数据记录。
上述装置40和装置50中各个单元的功能和作用的实现过程具体详见上述图1-图3对应实施例的描述,在此不再进行赘述。应理解,上述装置40和装置50可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为逻辑意义上的装置,是通过所在设备的处理器(CPU)将对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,除了CPU以及存储器之外,上述装置所在的设备通常还包括用于进行无线信号收发的芯片等其他硬件,和/或用于实现网络通信功能的板卡等其他硬件。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部单元或模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述实施例阐明的装置、单元、模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备、车载计算机或者这些设备中的任意几种设备的组合。
与上述方法实施例相对应,本说明书的实施例还提供了一种计算机设备。请参阅图6,图6是一示例性实施例提供的一种计算机设备的结构示意图。图6所示的计算机设备可以为上述图1所示数据关联查询***中的任一第一计算节点或者第二计算节点,该数据关联查询***中包括多个第一计算节点和多个第二计算节点,该多个第一计算节点分布式地存储了第一数据表,该多个第二计算节点分布式地存储了第二数据表。如图6所示,该计算机设备包括处理器1001和存储器1002,进一步还可以包括输入设备1004(例如键盘等)和输出设备1005(例如显示器等)。处理器1001、存储器1002、输入设备1004和输出设备1005之间可以通过总线或其他方式连接。如图6所示,存储器1002包括计算机可读存储介质1003,该计算机可读存储介质1003存储有能够由处理器1001运行的计算机程序。处理器1001可以是CPU,微处理器,或用于控制以上方法实施例执行的集成电路。处理器1001在运行存储的计算机程序时,可以执行本说明书实施例中数据关联查询方法的各个步骤,包括:响应于针对所述第一数据表和所述第二数据表的数据关联查询,确定与所述数据关联查询相关的关联键,并从所述第一数据表中与所述关联键对应的关联键值中确定出至少一个热点键值;将所述至少一个热点键值发送至所述多个第二计算节点,以使所述多个第二计算节点基于所述至少一个热点键值,从分布式存储的所述第二数据表中拆分出热点数据表;其中,所述热点数据表包含了所述第二数据表中与所述热点键值对应的热点数据记录;接收所述多个第二计算节点发送的所述热点数据表,并在本地存储所述热点数据表;基于存储的所述第一数据表和所述热点数据表进行数据关联查询,等等。
对上述数据关联查询方法的各个步骤的详细描述请参见之前的内容,此处不再进行赘述。
与上述方法实施例相对应,本说明书的实施例还提供了一种计算机可读存储介质,该存储介质上存储有计算机程序,这些计算机程序在被处理器运行时,执行本说明书实施例中数据关联查询方法的各个步骤。具体请参见上述图1-图3对应实施例的描述,此处不再进行赘述。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。
在一个典型的配置中,终端设备包括一个或多个CPU、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。
计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、***或计算机程序产品。因此,本说明书的实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书的实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
Claims (14)
1.一种数据关联查询方法,其特征在于,数据关联查询***中包括多个第一计算节点和多个第二计算节点,所述多个第一计算节点分布式地存储了第一数据表,所述多个第二计算节点分布式地存储了第二数据表;所述方法应用于所述多个第一计算节点中的任一第一计算节点,所述方法包括:
响应于针对所述第一数据表和所述第二数据表的数据关联查询,确定与所述数据关联查询相关的关联键;
从所述第一数据表中读取与所述关联键对应的目标数据列中包含的多个关联键值,并基于所述多个关联键值各自的重复次数,从所述多个关联键值中确定出至少一个热点键值;其中,所述第一数据表为关系型数据表;
将所述至少一个热点键值发送至所述多个第二计算节点,以使所述多个第二计算节点基于所述至少一个热点键值,从分布式存储的所述第二数据表中拆分出热点数据表;其中,所述热点数据表包含了所述第二数据表中与所述热点键值对应的热点数据记录;
接收所述多个第二计算节点发送的所述热点数据表,并在本地存储所述热点数据表;
基于存储的所述第一数据表和所述热点数据表进行数据关联查询。
2.根据权利要求1所述的方法,其特征在于,基于所述多个关联键值各自的重复次数,从所述多个关联键值中确定出至少一个热点键值,包括:
将所述多个关联键值中重复次数大于预设阈值的关联键值确定为热点键值;或者,
将所述多个关联键值中重复次数最多的预设数量个的关联键值确定为热点键值。
3.根据权利要求1所述的方法,其特征在于,所述第一计算节点在内存中构建了热点hash表;在本地存储所述热点数据表,包括:
计算所述热点数据表中的任一热点数据记录中的热点键值的hash值;
基于所述hash值确定该热点数据记录在所述热点hash表中的存储位置,并将该热点数据记录存储至所述热点hash表中的所述存储位置上。
4.根据权利要求3所述的方法,其特征在于,所述数据关联查询***中还包括多个非热点数据存储节点,所述多个非热点数据存储节点分布式地存储了所述多个第二计算节点发送的非热点数据表;其中,所述非热点数据表为由所述多个第二计算节点基于所述至少一个热点键值,从分布式存储的所述第二数据表中拆分出的非热点数据表;所述非热点数据表包含了所述第二数据表中与非热点键值对应的非热点数据记录。
5.根据权利要求4所述的方法,其特征在于,所述多个非热点数据存储节点在内存中构建了非热点hash表;所述非热点数据表中的任一非热点数据记录存储在所述非热点hash表中与该非热点数据记录中的非热点键值的hash值对应的存储位置上。
6.根据权利要求5所述的方法,其特征在于,所述基于存储的所述第一数据表和所述热点数据表进行数据关联查询,包括:
从所述第一数据表中读取目标数据记录,并确定读取到的所述目标数据记录中与所述关联键对应的目标键值是否为所述热点键值;
如果是,计算所述目标键值的hash值,并在其存储的所述热点hash表中与所述hash值对应的存储位置上查询与所述目标键值对应的热点数据记录。
7.根据权利要求6所述的方法,其特征在于,所述第一计算节点中存储了所述多个第二计算节点发送的所述多个非热点数据存储节点与所述多个非热点键值的对应关系;所述方法还包括:
如果读取到的所述目标数据记录中与所述关联键对应的目标键值不是所述热点键值,基于存储的所述对应关系,在所述多个非热点数据存储节点中查找与所述目标键值对应的目标计算节点;
向所述目标计算节点发送所述目标键值,以使所述目标计算节点计算所述目标键值的hash值,并在其存储的所述非热点hash表中与所述hash值对应的存储位置上查询与所述目标键值对应的非热点数据记录;
接收所述目标计算节点发送的与所述目标键值对应的非热点数据记录。
8.根据权利要求1-7任意一项所述的方法,其特征在于,所述响应于针对所述第一数据表和所述第二数据表的数据关联查询,确定与所述数据关联查询相关的关联键,包括:
响应于针对所述第一数据表和所述第二数据表的数据关联查询语句,对所述数据关联查询语句进行解析,并根据解析结果确定与所述数据关联查询相关的关联键。
9.一种数据关联查询方法,其特征在于,数据关联查询***中包括多个第一计算节点和多个第二计算节点,所述多个第一计算节点分布式地存储了第一数据表,所述多个第二计算节点分布式地存储了第二数据表;所述方法应用于所述多个第二计算节点中的任一第二计算节点,所述方法包括:
接收所述多个第一计算节点中的任一第一计算节点发送的至少一个热点键值;所述至少一个热点键值为任一第一计算节点响应于针对所述第一数据表和所述第二数据表的数据关联查询,确定与所述数据关联查询相关的关联键,并基于从所述第一数据表中读取到的与所述关联键对应的目标数据列中包含的多个关联键值各自的重复次数,从所述多个关联键值中确定出的热点键值;其中,所述第一数据表为关系型数据表;
基于所述至少一个热点键值,从分布式存储的所述第二数据表中拆分出热点数据表,并发送所述热点数据表至任一第一计算节点,以使任一第一计算节点在本地存储接收到的所述热点数据表,并基于存储的所述第一数据表和所述热点数据表进行数据关联查询;其中,所述热点数据表包含了所述第二数据表中与所述热点键值对应的热点数据记录。
10.一种数据关联查询***,其特征在于,包括多个第一计算节点和多个第二计算节点,所述多个第一计算节点分布式地存储了第一数据表,所述多个第二计算节点分布式地存储了第二数据表;其中,
所述多个第一计算节点中的任一第一计算节点,用于响应于针对所述第一数据表和所述第二数据表的数据关联查询,确定与所述数据关联查询相关的关联键;
所述第一计算节点,还用于从所述第一数据表中读取与所述关联键对应的目标数据列中包含的多个关联键值,并基于所述多个关联键值各自的重复次数,从所述多个关联键值中确定出至少一个热点键值,以及进一步将所述至少一个热点键值发送至所述多个第二计算节点;其中,所述第一数据表为关系型数据表;
所述多个第二计算节点中的任一第二计算节点,用于接收所述至少一个热点键值,并基于所述至少一个热点键值,从分布式存储的所述第二数据表中拆分出热点数据表,以及进一步将所述热点数据表发送至所述多个第一计算节;其中,所述热点数据表包含了所述第二数据表中与所述热点键值对应的热点数据记录;
所述第一计算节点,还用于在本地存储接收到的所述热点数据表,并基于存储的所述第一数据表和所述热点数据表进行数据关联查询。
11.一种数据关联查询装置,其特征在于,数据关联查询***中包括多个第一计算节点和多个第二计算节点,所述多个第一计算节点分布式地存储了第一数据表,所述多个第二计算节点分布式地存储了第二数据表;所述装置应用于所述多个第一计算节点中的任一第一计算节点,所述装置包括:
关联键确定单元,用于响应于针对所述第一数据表和所述第二数据表的数据关联查询,确定与所述数据关联查询相关的关联键;
热点键值确定单元,用于从所述第一数据表中读取与所述关联键对应的目标数据列中包含的多个关联键值,并基于所述多个关联键值各自的重复次数,从所述多个关联键值中确定出至少一个热点键值;其中,所述第一数据表为关系型数据表;
热点键值发送单元,用于将所述至少一个热点键值发送至所述多个第二计算节点,以使所述多个第二计算节点基于所述至少一个热点键值,从分布式存储的所述第二数据表中拆分出热点数据表;其中,所述热点数据表包含了所述第二数据表中与所述热点键值对应的热点数据记录;
数据表存储单元,用于接收所述多个第二计算节点发送的所述热点数据表,并在本地存储所述热点数据表;
查询单元,用于基于存储的所述第一数据表和所述热点数据表进行数据关联查询。
12.一种数据关联查询装置,其特征在于,数据关联查询***中包括多个第一计算节点和多个第二计算节点,所述多个第一计算节点分布式地存储了第一数据表,所述多个第二计算节点分布式地存储了第二数据表;所述装置应用于所述多个第二计算节点中的任一第二计算节点,所述装置包括:
热点键值接收单元,用于接收多个第一计算节点中的任一第一计算节点发送的至少一个热点键值;所述至少一个热点键值为任一第一计算节点响应于针对所述第一数据表和所述第二数据表的数据关联查询,确定与所述数据关联查询相关的关联键,并基于从所述第一数据表中读取到的与所述关联键对应的目标数据列中包含的多个关联键值各自的重复次数,从所述多个关联键值中确定出的热点键值;其中,所述第一数据表为关系型数据表;
数据表拆分单元,用于基于所述至少一个热点键值,从分布式存储的所述第二数据表中拆分出热点数据表,并发送所述热点数据表至任一第一计算节点,以使任一第一计算节点在本地存储接收到的所述热点数据表,并基于存储的所述第一数据表和所述热点数据表进行数据关联查询;其中,所述热点数据表包含了所述第二数据表中与所述热点键值对应的热点数据记录。
13.一种计算机设备,其特征在于,包括:存储器和处理器;所述存储器上存储有可由所述处理器运行的计算机程序;所述处理器运行所述计算机程序时,执行如权利要求1至8任意一项所述的方法,或者执行如权利要求9所述的方法。
14.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8任意一项所述的方法,或者执行如权利要求9所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311344151.4A CN117076465B (zh) | 2023-10-16 | 2023-10-16 | 一种数据关联查询方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311344151.4A CN117076465B (zh) | 2023-10-16 | 2023-10-16 | 一种数据关联查询方法及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117076465A CN117076465A (zh) | 2023-11-17 |
CN117076465B true CN117076465B (zh) | 2024-04-05 |
Family
ID=88708404
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311344151.4A Active CN117076465B (zh) | 2023-10-16 | 2023-10-16 | 一种数据关联查询方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117076465B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105466412A (zh) * | 2014-10-03 | 2016-04-06 | 财团法人资讯工业策进会 | 移动导航***与方法、用于导航的移动装置 |
US9667720B1 (en) * | 2014-03-31 | 2017-05-30 | EMC IP Holding Company LLC | Shard reorganization based on dimensional description in sharded storage systems |
CN109885574A (zh) * | 2019-02-22 | 2019-06-14 | 广州荔支网络技术有限公司 | 一种数据查询方法及装置 |
CN110019231A (zh) * | 2017-12-26 | 2019-07-16 | ***通信集团山东有限公司 | 一种并行数据库动态关联的方法及节点 |
CN110168516A (zh) * | 2016-12-09 | 2019-08-23 | 华为技术有限公司 | 用于大规模并行处理的基于代价的动态计算节点分组优化 |
CN111291112A (zh) * | 2018-12-07 | 2020-06-16 | 阿里巴巴集团控股有限公司 | 分布式数据库的读写控制方法和装置以及电子设备 |
CN111386521A (zh) * | 2017-11-30 | 2020-07-07 | 华为技术有限公司 | 在数据库集群中重分布表数据 |
CN111506613A (zh) * | 2020-04-22 | 2020-08-07 | 支付宝(杭州)信息技术有限公司 | 一种数据记录的关联关系的查询方法、***、装置及设备 |
US11250012B1 (en) * | 2020-10-12 | 2022-02-15 | Shanghai Icekredit, Inc. | Data query method and system |
CN116069810A (zh) * | 2023-01-06 | 2023-05-05 | 中国建设银行股份有限公司 | 数据查询方法、装置及终端设备 |
CN116881287A (zh) * | 2023-08-01 | 2023-10-13 | 支付宝(杭州)信息技术有限公司 | 一种数据查询方法及相关设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8805844B2 (en) * | 2008-08-04 | 2014-08-12 | Liveperson, Inc. | Expert search |
US20130332608A1 (en) * | 2012-06-06 | 2013-12-12 | Hitachi, Ltd. | Load balancing for distributed key-value store |
CN111309805B (zh) * | 2019-12-13 | 2023-10-20 | 华为技术有限公司 | 数据库的数据读写方法及装置 |
-
2023
- 2023-10-16 CN CN202311344151.4A patent/CN117076465B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9667720B1 (en) * | 2014-03-31 | 2017-05-30 | EMC IP Holding Company LLC | Shard reorganization based on dimensional description in sharded storage systems |
CN105466412A (zh) * | 2014-10-03 | 2016-04-06 | 财团法人资讯工业策进会 | 移动导航***与方法、用于导航的移动装置 |
CN110168516A (zh) * | 2016-12-09 | 2019-08-23 | 华为技术有限公司 | 用于大规模并行处理的基于代价的动态计算节点分组优化 |
CN111386521A (zh) * | 2017-11-30 | 2020-07-07 | 华为技术有限公司 | 在数据库集群中重分布表数据 |
CN110019231A (zh) * | 2017-12-26 | 2019-07-16 | ***通信集团山东有限公司 | 一种并行数据库动态关联的方法及节点 |
CN111291112A (zh) * | 2018-12-07 | 2020-06-16 | 阿里巴巴集团控股有限公司 | 分布式数据库的读写控制方法和装置以及电子设备 |
CN109885574A (zh) * | 2019-02-22 | 2019-06-14 | 广州荔支网络技术有限公司 | 一种数据查询方法及装置 |
CN111506613A (zh) * | 2020-04-22 | 2020-08-07 | 支付宝(杭州)信息技术有限公司 | 一种数据记录的关联关系的查询方法、***、装置及设备 |
US11250012B1 (en) * | 2020-10-12 | 2022-02-15 | Shanghai Icekredit, Inc. | Data query method and system |
CN116069810A (zh) * | 2023-01-06 | 2023-05-05 | 中国建设银行股份有限公司 | 数据查询方法、装置及终端设备 |
CN116881287A (zh) * | 2023-08-01 | 2023-10-13 | 支付宝(杭州)信息技术有限公司 | 一种数据查询方法及相关设备 |
Non-Patent Citations (1)
Title |
---|
一种基于元数据静动态数据联合查询方法的研究与实现;曾艳梅;成长生;陆忠良;苏厚勤;;计算机应用与软件(第01期);65-69、83 * |
Also Published As
Publication number | Publication date |
---|---|
CN117076465A (zh) | 2023-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103748579B (zh) | 在映射化简框架中处理数据 | |
KR100898454B1 (ko) | 통합 검색 서비스 시스템 및 방법 | |
JP5922667B2 (ja) | 製品情報の伝送 | |
US10949118B2 (en) | Data storage method, apparatus, and device for multi-layer blockchain-type ledger | |
WO2020023733A1 (en) | Blockchain-based cross-chain data access method and apparatus | |
EP3767483A1 (en) | Method, device, system, and server for image retrieval, and storage medium | |
CN103150362B (zh) | 一种视频搜索方法及*** | |
CN106415534B (zh) | 一种分布式数据库中关联表分区的方法和设备 | |
CN110019551B (zh) | 一种数据仓库构建方法及装置 | |
US20240126817A1 (en) | Graph data query | |
US11429636B2 (en) | Smart elastic scaling based on application scenarios | |
CN109801693B (zh) | 病案分组方法及装置、终端和计算机可读存储介质 | |
US10394838B2 (en) | App store searching | |
CN114925101A (zh) | 数据处理方法、装置、存储介质及电子设备 | |
US20240211456A1 (en) | Index data structures and graphical user interface | |
CN115168362A (zh) | 数据处理方法、装置、可读介质及电子设备 | |
US8407255B1 (en) | Method and apparatus for exploiting master-detail data relationships to enhance searching operations | |
CN117076465B (zh) | 一种数据关联查询方法及相关设备 | |
CN111897837B (zh) | 数据查询方法、装置、设备和介质 | |
US20090112846A1 (en) | System and/or method for processing events | |
CN111506613A (zh) | 一种数据记录的关联关系的查询方法、***、装置及设备 | |
US20230153286A1 (en) | Method and system for hybrid query based on cloud analysis scene, and storage medium | |
CN114564501A (zh) | 一种数据库数据存储、查询方法、装置、设备及介质 | |
US10282482B2 (en) | Data provision device, data provision method, and data provision program | |
CN109992695B (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 |