CN113420033B - 分布式数据库的表数据查询方法、表数据查询装置及系统 - Google Patents
分布式数据库的表数据查询方法、表数据查询装置及系统 Download PDFInfo
- Publication number
- CN113420033B CN113420033B CN202110943325.3A CN202110943325A CN113420033B CN 113420033 B CN113420033 B CN 113420033B CN 202110943325 A CN202110943325 A CN 202110943325A CN 113420033 B CN113420033 B CN 113420033B
- Authority
- CN
- China
- Prior art keywords
- data
- driven
- instruction
- scanning
- line
- 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
Images
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
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- 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
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- 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
Abstract
本说明书的实施例提供分布式数据库的表数据查询方法、表数据查询装置及系统。响应于表数据处理节点执行第一执行子计划而读取到驱动表的行数据,表数据查询装置根据表数据处理节点的缓存装置中是否缓存有所读取的行数据而生成数据重扫指令或数据扫描指令,并将数据重扫指令或数据扫描指令发送给表数据处理节点的被驱动表扫描调度装置。被驱动表扫描调度装置根据数据重扫指令或数据扫描指令获取被驱动表数据查询结果,并将被驱动表数据查询结果返回给表数据查询装置。
Description
技术领域
本说明书实施例通常涉及数据库领域,尤其涉及用于分布式数据库的表数据查询方法、表数据查询装置、表数据处理节点以及分布式数据库系统。
背景技术
在分布式数据库的一些表数据处理场景下,例如,嵌套循环连接(Nested LoopJoin)或子查询执行(Subplan filter)的条件下推场景,需要针对驱动表中的每一行数据多次重新扫描(Rescan)被驱动表中的数据。当被驱动表分布在不同存储节点或存储设备上时,被驱动表的重新扫描过程会涉及资源释放、调度重启等操作,这些操作常常伴随消息等待、同步以及网络传输操作,从而大大降低分布式数据库的表数据处理效率。
发明内容
鉴于上述,本说明书实施例提供用于分布式数据库的表数据查询方法、表数据查询装置、表数据处理节点及分布式数据库系统。利用该表数据查询方法及装置,通过将针对驱动表的行数据的首次表数据查询结果存储在表数据处理节点并且将行数据缓存在表数据处理节点的缓存装置中,并且在确定出当前读取的行数据已经缓存在缓存装置时,直接从表数据处理节点的中间结果存储装置获取对应的表数据查询结果,无需再次执行被驱动表存储节点处的被驱动表数据查询,从而可以有效地减少被驱动表的重新扫描过程所导致的消息等待、同步以及网络传输操作,由此提升表数据处理效率。
根据本说明书实施例的一个方面,提供一种用于分布式数据库的表数据查询方法,所述方法由表数据处理节点中的表数据查询装置执行,所述表数据查询方法包括:响应于表数据处理节点执行第一执行计划读取到驱动表的行数据,确定所述表数据处理节点的缓存装置中是否缓存有所述行数据;在所述缓存装置中缓存有所述行数据时,生成数据重扫指令,所述数据重扫指令包括所述行数据的行号;将所述数据重扫指令发送给所述表数据处理节点的被驱动表扫描调度装置,以指示所述被驱动表扫描调度装置根据所述行数据的行号从中间结果存储装置中读取对应的被驱动表数据查询结果;以及从所述被驱动表扫描调度装置获取所述被驱动表数据查询结果。
可选地,在上述方面的一个示例中,所述表数据查询方法还可以包括:在所述缓存装置未缓存有所述行数据时,生成数据扫描指令,所述数据扫描指令包括所述行数据的行号;将所读取的驱动表的行数据存储在所述缓存装置中;以及将所述数据扫描指令发送给所述被驱动表扫描调度装置,以指示所述被驱动表扫描调度装置调度各个对应的被驱动表存储节点执行第二执行计划来获取被驱动表数据查询结果,所述第二执行计划是部署在各个被驱动表存储节点处的分布式执行计划,其中,各个对应的被驱动表存储节点的被驱动表数据查询结果被返回给所述被驱动表扫描调度装置,并且与所述行数据的行号相对应地存储在所述中间结果存储装置中。
可选地,在上述方面的一个示例中,在所述缓存装置未缓存有所述行数据时,生成数据扫描指令可以包括:在所述缓存装置未缓存有所述行数据时,确定与所述行数据对应的条件下推参数;以及根据与所述行数据对应的条件下推参数,生成数据扫描指令,所述数据扫描指令用于指示所述被驱动表扫描调度装置调度各个对应的被驱动表存储节点在所述条件下推参数下执行第二执行计划来获取被驱动表数据查询结果。
可选地,在上述方面的一个示例中,所述表数据查询方法还可以包括:在所述缓存装置未缓存有所述行数据时,确定与所述行数据对应的条件下推参数。所述条件下推参数与所述数据扫描指令一起被所述被驱动表扫描调度装置下发给对应的被驱动表存储节点。
可选地,在上述方面的一个示例中,在所述缓存装置未缓存有所述行数据时,确定与所述行数据对应的条件下推参数集可以包括:在所述缓存装置未缓存有所述行数据时,根据所述行数据中的连接列的行值确定所述行数据所对应的条件下推参数。
可选地,在上述方面的一个示例中,所述第一执行计划包括嵌套式执行计划。在所述缓存装置中缓存有所述行数据时,生成数据重扫指令可以包括:在所述缓存装置缓存有所述行数据且所述行数据是响应于所述表数据处理节点执行所述嵌套式执行计划的最内层执行计划而读取的行数据时,生成所述数据重扫指令。
可选地,在上述方面的一个示例中,所述第一执行计划包括嵌套式执行计划。在所述缓存装置未缓存有所述行数据时,生成数据扫描指令可以包括:在所述缓存装置未缓存有所述行数据或者所述行数据不是响应于所述表数据处理节点执行所述嵌套式执行计划的最内层执行计划而读取的行数据时,生成所述数据扫描指令。
可选地,在上述方面的一个示例中,所述嵌套式执行计划的最内层执行计划经由优化器在执行计划编译阶段标识出。
可选地,在上述方面的一个示例中,所述被驱动表扫描调度装置所调度的第二执行计划包括至少两个第二分布式执行子计划,各个第二分布式执行子计划之间通过所述中间结果存储装置传递各自的处理结果。
可选地,在上述方面的一个示例中,所述表数据处理节点包括表连接节点或者子查询节点。
根据本说明书的实施例的另一方面,提供一种用于分布式数据库的表数据查询装置,所述表数据查询装置应用于表数据处理节点,所述表数据查询装置包括:数据缓存确定单元,响应于表数据处理节点执行第一执行计划读取到驱动表的行数据,确定所述表数据处理节点的缓存装置中是否缓存有所述行数据;扫描指令生成单元,在所述缓存装置中缓存有所述行数据时,生成数据重扫指令,所述数据重扫指令包括所述行数据的行号;扫描指令发送单元,将所述数据重扫指令发送给所述表数据处理节点的被驱动表扫描调度装置,以指示所述被驱动表扫描调度装置根据所述行数据的行号从中间结果存储装置中读取对应的被驱动表数据查询结果;以及查询结果获取单元,从所述被驱动表扫描调度装置获取所述被驱动表数据查询结果。
可选地,在上述方面的一个示例中,在所述缓存装置未缓存有所述行数据时,所述扫描指令生成单元生成数据扫描指令,所述数据扫描指令包括所述行数据的行号,以及所述扫描指令发送单元将所述数据扫描指令发送给所述被驱动表扫描调度装置,所述数据扫描指令用于指示所述被驱动表扫描调度装置调度各个对应的被驱动表存储节点执行第二执行计划来获取被驱动表数据查询结果,所述第二执行计划是部署在各个被驱动表存储节点处的分布式执行计划。所述表数据查询装置还可以包括:数据存储单元,将所读取的驱动表的行数据存储在所述缓存装置中,其中,各个对应的被驱动表存储节点的被驱动表数据查询结果被返回给所述被驱动表扫描调度装置,并且与所述行数据的行号相对应地存储在所述中间结果存储装置中。
可选地,在上述方面的一个示例中,所述扫描指令生成单元可以包括:条件下推参数确定模块,在所述缓存装置未缓存有所述行数据时,确定与所述行数据对应的条件下推参数;以及数据扫描指令生成模块,根据与所述行数据对应的条件下推参数,生成数据扫描指令,所述数据扫描指令用于指示所述被驱动表扫描调度装置调度各个被驱动表存储节点在所述条件下推参数下执行第二执行计划来获取被驱动表数据查询结果。
可选地,在上述方面的一个示例中,所述表数据查询装置可以包括:条件下推参数确定单元,在所述缓存装置未缓存有所述行数据时,确定与所述行数据对应的条件下推参数,其中,所述条件下推参数与所述数据扫描指令一起被所述被驱动表扫描调度装置下发给对应的被驱动表存储节点。
可选地,在上述方面的一个示例中,所述条件下推参数根据所述行数据中的连接列的行值确定。
可选地,在上述方面的一个示例中,所述第一执行计划包括嵌套式执行计划。所述扫描指令生成单元被配置为:在所述缓存装置缓存有所述行数据且所述行数据是响应于所述表数据处理节点执行所述嵌套式执行计划的最内层执行计划而读取的行数据时,生成所述数据重扫指令,在所述缓存装置未缓存有所述行数据或者所述行数据不是响应于所述表数据处理节点执行所述嵌套式执行计划的最内层执行计划而读取的行数据时,生成所述数据扫描指令。
根据本说明书的实施例的另一方面,提供一种用于分布式数据库的表数据处理节点,包括:驱动表数据扫描装置,扫描获取驱动表的行数据;如上所述的表数据查询装置;缓存装置,缓存所述表数据处理节点执行第一执行计划而读取到驱动表的行数据;被驱动表扫描调度装置,根据所述表数据查询装置生成的数据重扫指令或数据扫描指令执行被驱动表数据查询;中间结果存储装置,与所述行数据的行号相对应地存储被驱动表存储节点返回的被驱动表数据查询结果;以及表数据处理装置,使用驱动表的行数据以及被驱动表的匹配行数据进行表数据处理。
可选地,在上述方面的一个示例中,所述被驱动表扫描调度装置所调度的第二执行计划包括至少两个第二分布式执行子计划,各个第二分布式执行子计划之间经由所述中间结果存储装置传递各自的处理结果。
根据本说明书的实施例的另一方面,提供一种分布式数据系统,包括:至少一个驱动表存储节点,存储驱动表的行数据;如上所述的表数据处理节点;以及至少两个被驱动表存储节点,被驱动表被分布式地存储在所述至少两个被驱动表存储节点的部分或全部被驱动表存储节点处。
根据本说明书的实施例的另一方面,提供一种用于分布式数据库的表数据查询装置,包括:至少一个处理器,与所述至少一个处理器耦合的存储器,以及存储在所述存储器中的计算机程序,所述至少一个处理器执行所述计算机程序来实现如上所述的表数据查询方法。
根据本说明书的实施例的另一方面,提供一种计算机可读存储介质,其存储有可执行指令,所述指令当被执行时使得处理器执行如上所述的表数据查询方法。
根据本说明书的实施例的另一方面,提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行来实现如上所述的表数据查询方法。
附图说明
通过参照下面的附图,可以实现对于本说明书内容的本质和优点的进一步理解。在附图中,类似组件或特征可以具有相同的附图标记。
图1示出了分布式数据库的示例示意图。
图2示出了分布式数据库的嵌套循环连接过程的执行计划的示例示意图。
图3示出了分布式数据库的嵌套循环连接过程的实现示例示意图。
图4示出了根据本说明书的实施例的分布式数据库系统的示例示意图。
图5示出了根据本说明书的实施例的用于分布式数据库的表数据处理方法的示例流程图。
图6示出了根据本说明书的实施例的用于分布式数据库的表数据查询方法的示例流程图。
图7示出了根据本说明书的实施例的扫描指令生成过程的示例流程图。
图8示出了根据本说明书的实施例的嵌套式执行计划的示例示意图。
图9示出了根据本说明书的实施例的扫描指令生成过程的另一示例流程图。
图10示出了分布式数据库的嵌套循环连接过程的执行计划的另一示例示意图。
图11A-图11C示出了根据本说明书的实施例的表数据查询方法的示例应用场景。
图12示出了根据本说明书的实施例的用于分布式数据库的表数据查询装置的示例方框图。
图13示出了根据本说明书的实施例的基于计算机系统实现的用于分布式数据库的表数据查询装置的示例示意图。
具体实施方式
现在将参考示例实施方式讨论本文描述的主题。应该理解,讨论这些实施方式只是为了使得本领域技术人员能够更好地理解从而实现本文描述的主题,并非是对权利要求书中所阐述的保护范围、适用性或者示例的限制。可以在不脱离本说明书内容的保护范围的情况下,对所讨论的元素的功能和排列进行改变。各个示例可以根据需要,省略、替代或者添加各种过程或组件。例如,所描述的方法可以按照与所描述的顺序不同的顺序来执行,以及各个步骤可以被添加、省略或者组合。另外,相对一些示例所描述的特征在其它例子中也可以进行组合。
如本文中使用的,术语“包括”及其变型表示开放的术语,含义是“包括但不限于”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一实施例”表示“至少一个实施例”。术语“另一个实施例”表示“至少一个其他实施例”。术语“第一”、“第二”等可以指代不同的或相同的对象。下面可以包括其他的定义,无论是明确的还是隐含的。除非上下文中明确地指明,否则一个术语的定义在整个说明书中是一致的。
图1示出了分布式数据库100的示例示意图。
如图1所示,分布式数据库100包括4个存储节点A1到A4,数据库中的部分或全部数据表分布在多个不同存储节点处。例如,在一个示例中,假设数据库包括4个数据表T1到T4,则至少一个数据表分布式地存储在4个存储节点中的多个存储节点处,例如,假设数据库包括2个数据表T1和T2,则数据表T1的部分数据存储在存储节点A1处,以及数据表T1的剩余数据存储在存储节点A2处。或者,数据表T2的部分数据存储在存储节点A3处,以及数据表T2的剩余数据存储在存储节点A2处。或者,数据表T1和T2都是分布式地存储在多个不同存储节点处。
在数据库使用时,例如,对数据库进行多表查询时,通常会需要对数据库中的数据表进行表连接,比如,利用嵌套循环连接(Nested Loops Join)来实现数据库中的数据表的表连接。术语“表连接”是指根据关联字段来将两个数据表组合成一个数据集。嵌套循环连接是在对数据表进行表连接时依靠两层嵌套循环得到连接结果集的表连接方法。在本说明书中,在对数据表A和数据表B进行表连接时,如果以数据表A为表连接操作的起点数据表,则数据表A称为驱动表,以及数据表B称为被驱动表。数据表A作为驱动表是指在进行表连接操作时,首先读取数据表A的一行数据,然后基于所读取的数据表A中的该行数据,遍历数据表B的所有行数据来进行行数据匹配,由此实现表连接。
图2示出了分布式数据库的嵌套循环连接过程的执行计划的示例示意图。
图2的上半部示出了SQL查询语句,以及图2的下半部示出了SQL查询语句所对应的执行计划。在图2的示例中,T1表是驱动表,T2表是被驱动表,并且针对T1表和T2表,根据连接列V1和V2的值进行左外连接。该SQL查询语句所对应的分布式执行计划包括6个执行计划,即,NESTED-LOOP OUTER JOIN(0号执行计划)、TABLE SCAN T1(1号执行计划)、PXCOORDINATOR(2号执行计划)、EXCHANGE OUT DISTR(3号执行计划)、PX PARTITIONITERATOR(4号执行计划)和TABLE SCAN T2(5号执行计划)。0号执行计划和2号执行计划部署在表连接节点处,1号执行计划部署在驱动表存储节点处,以及3号执行计划到5号执行计划部署在分布式被驱动表存储节点处。这里,0号执行计划和2号执行计划相当于本说明书中的第一执行计划,以及3号执行计划到5号执行计划相当于本说明书中的第二执行计划。
具体地,对于T1表中的每一行数据中的V1和V2值,在T2表中进行全表扫描来搜索出具有相等的V1和V2值的行数据进行表连接。在进行表连接时,对于T1表的每一行数据,都需要针对T2表重复上述扫描过程。在T1表和T2表都存储在同一个存储节点处时,仅仅需要简单的内存/IO操作即可完成重新扫描过程,从而使得上述执行计划具有比较好的执行性能。
然而,在T1表和T2表未存储在同一个存储节点处,并且T2表分布式地存储在多个不同的存储节点处时,在针对T2表执行上述重新扫描过程时会引入资源释放、调度重启、网络传输等分布式相关代价,从而导致上述执行计划的执行性能不佳。
图3示出了分布式数据库的嵌套循环连接过程300的实现示例示意图。在图3示出的示例中,驱动表(T1表)和被驱动表(T2表)未存储在同一个存储节点处,并且T2表分布式地存储在多个不同的存储节点处。
如图3所示,在310,NESTED-LOOP OUTER JOIN算子从T1表中获取行数据, 计算出该行数据中的连接列V1和 V2的行值。
在320,NESTED-LOOP OUTER JOIN算子向PX COORDINATOR算子(也可以称为协调节点)发出用于重新扫描T2表的重新扫描指令。
响应于接收到重新扫描指令,PX COORDINATOR算子重启执行2-5号执行计划。具体地,在330,PX COORDINATOR算子向位于各个被驱动表存储节点处的所有T2表分区的子协调节点发出执行计划启动的控制消息。PX COORDINATOR算子所发出的控制消息包含T1表的当前行数据的连接列V1和V2的参数值。
在340,各个子协调节点释放在上一次子计划启动时所占用的系统资源,并且将控制消息中包含的T1表的当前行数据的连接列V1和V2的参数值发送给各个被驱动表存储节点处的TABLE SCAN算子。
在350,各个被驱动表存储节点处的TABLE SCAN算子执行T2表扫描来扫描出匹配的行数据。在360,各个被驱动表存储节点处的EXCHANGE OUT DISTR算子向PX COORDINATOR算子返回匹配的行数据。
在370,NESTED-LOOP OUTER JOIN算子从PX COORDINATOR算子获取匹配的行数据,并且使用所获取的T1表的行数据以及T2表的匹配行数据进行表连接操作。
重复上述流程,直到针对T1表的所有行数据都完成表连接操作。
在上面的嵌套循环连接过程中,EXCHANGE OUT DISTR算子的操作(即,3号子计划)非常影响执行计划的执行性能。EXCHANGE OUT DISTR算子的操作会涉及协调节点与子协调节点之间的分布式交互以及协调节点的调度重启。分布式交互包括释放上一次子协调节点执行资源的控制消息、调度子协调节点的控制消息等,这些若干控制消息的RPC交互会带来额外开销。此外,协调节点的调度重启需要重新建立子计划调度关系,这个重新建立过程会带来调度开销。
按照上面的执行计划处理流程,Nested Loop Join算子每读取完一行驱动表数据,都会重新执行EXCHANGE OUT DISTR算子的操作,从而导致分布式交互和调度重启的开销累计越来越大,由此较大地影响执行计划的执行性能。
鉴于上述,本说明书实施例提供一种用于分布式数据库的表数据查询方案。在该表数据查询方案中,将针对驱动表的行数据的首次表数据查询结果存储在表数据处理节点的中间结果存储装置中,同时将该行数据缓存在表数据处理节点的缓存装置中。每次表数据处理节点读取到驱动表的行数据后,确定当前读取的行数据是否已经缓存在缓存装置。在当前读取的行数据已经缓存在缓存装置时,直接从表数据处理节点的中间结果存储装置获取对应的表数据查询结果,无需再次执行被驱动表存储节点处的被驱动表数据查询,从而可以有效地减少被驱动表的重新扫描过程所导致的消息等待、同步以及网络传输操作,由此提升表数据处理效率。
下面将参考附图来详细描述根据本说明书的实施例的用于分布式数据库的表数据查询方法、表数据查询装置、表数据处理节点及分布式数据库系统。
图4示出了根据本说明书的实施例的分布式数据库系统400的示例示意图。
如图4所示,分布式数据库系统400包括驱动表数据存储节点410、表数据处理节点420和至少两个被驱动表存储节点430。驱动表数据节点410存储驱动表的行数据。被驱动表的行数据分布式地存储在至少两个被驱动表存储节点430中的各个被驱动表存储节点430处。表数据处理节点420用于执行针对表数据的处理操作,例如,嵌套循环连接处理(NestedLoop Join)或者子查询处理(Subplan Filter)。相应地,表数据处理节点420也可以充当表连接节点或子查询节点。在本说明书中,术语“节点”可以与术语“设备”、“装置”互换使用。
此外,可选地,在一些实施例中,驱动表数据存储节点410可以包括两个或两个以上的驱动表数据存储节点。每个驱动表的行数据分布式地存储在多个不同的驱动表数据存储节点。同样,表数据处理节点420也可以包括两个或两个以上的表数据处理节点。
表数据处理节点420被配置为使用驱动表数据和被驱动表数据进行表数据处理。如图4所示,表数据处理节点420包括驱动表数据扫描装置421、表数据查询装置422、缓存装置423、被驱动表扫描调度装置424、中间结果存储装置425以及表数据处理装置426。
驱动表数据扫描装置421被配置为扫描获取驱动表的行数据。例如,驱动表数据扫描装置421可以通过表数据处理节点执行第一执行计划来调度执行部署在驱动表存储节点处的执行计划(例如,图2中的TABLE SCAN T1)扫描获取驱动表的行数据。
表数据查询装置422被配置为根据所获取的驱动表的行数据来确定被驱动表数据的扫描策略,即,确定针对被驱动表的扫描策略,并从被驱动表扫描调度装置获取根据所确定的扫描策略得到的被驱动表数据查询结果。所述扫描策略包括数据重扫策略(数据重扫指令)和数据扫描策略(数据扫描指令,即,正常数据扫描策略)。表数据查询装置422的具体操作过程及结构将在后面参照附图详细描述。
缓存装置423被配置为缓存表数据处理节点执行第一执行计划而读取到的驱动表的行数据。缓存装置423可以使用本领域的任何一种易失性存储器或易失性存储装置实现。易失性存储器的示例例如可以包括但不限于DRAM(Dynamic Random Access Memory)和SRAM(Static Random Access Memory)。DRAM的示例可以包括但不限于SDRAM、DDR SDRAM、DDRII SDRAM等。
被驱动表扫描调度装置424被配置为根据表数据查询装置422生成的数据重扫指令或数据扫描指令执行被驱动表数据查询。在接收到数据重扫指令时,被驱动表扫描调度装置424根据所读取的驱动表的行数据的行号来从中间结果存储装置425中获取对应的被驱动表数据查询结果。在接收数据扫描指令时,被驱动表扫描调度装置424调度各个对应的被驱动表存储节点执行第二执行计划来获取被驱动表数据查询结果。被驱动表扫描调度装置424相当于图2中的PX COORDINATOR算子以及图8中的PX。
中间结果存储装置425被配置为与所读取的驱动表的行数据的行号相对应地存储被驱动表存储节点返回的被驱动表数据查询结果。中间结果存储装置425可以使用本领域的任何一种非易失性存储器或易失性存储装置实现。非易失性存储器的示例例如可以包括但不限于ROM、FLASH、光盘、软盘、硬盘等。
在本说明书的实施例中,可以首先将驱动表数据查询的中间结果写入缓存中。如果缓存不够或超过10秒未读数据,则由后台线程负责写入非易失性存储器。由于所存储的是临时性的中间结果,断电后不能从数据库层面恢复。对于只写入缓存中的中间结果,断电后无法恢复。对于写入非易失性存储器的中间结果,即使断电,也可以从存储器中恢复。
表数据处理装置426被配置为使用所读取的驱动表的行数据以及所查询到的被驱动表的匹配行数据进行表数据处理。所述表数据处理例如可以包括表连接处理或者子表查询处理。
图5示出了根据本说明书的实施例的用于分布式数据库的表数据处理方法500的示例流程图。
如图5所示,在510,表数据处理节点执行针对驱动表的行数据扫描,从而获取驱动表的行数据。例如,表数据处理节点通过执行第一执行计划来调度执行部署在驱动表存储节点处的用于数据扫描的子执行计划获取驱动表的行数据。在一个示例中,每次行数据扫描可以获取一行数据。在另一示例中,每次行数据扫描可以获取批量行数据。每次所获取的批量行数据的行数可以预先确定。
在520,响应于读取到驱动表的行数据,表数据处理节点根据所读取的驱动表的行数据执行针对被驱动表的表数据查询,由此获取匹配的行数据。
在530,表数据处理节点使用所读取的驱动表的行数据以及所查询到的被驱动表的匹配行数据执行表数据处理。
图6示出了根据本说明书的实施例的用于分布式数据库的表数据查询方法的示例流程图。图6中的表数据查询方法由表数据查询装置执行,用于获取被驱动表的匹配行数据。
如图6所示,在610,接收表数据处理节点执行第一执行计划而读取到的驱动表的行数据。在一个示例中,所读取的行数据可以是一行数据。在另一示例中,所读取的行数据可以是批量行数据。
在620,根据所接收的驱动表的行数据,生成针对被驱动表的扫描指令。
图7示出了根据本说明书的实施例的扫描指令生成过程700的示例流程图。
如图7所示,在接收到所读取的驱动表的行数据后,在710,确定表数据处理节点的缓存装置中是否缓存有该行数据。
如果确定为缓存装置中缓存有该行数据,则在720,生成数据重扫指令,所生成的数据重扫指令包括该行数据的行号,并且用于指示被驱动表数据扫描装置根据该行数据的行号从中间结果存储装置中读取对应的被驱动表数据查询结果。
如果确定为缓存装置中未缓存有该行数据,则在730,生成数据扫描指令,所生成的数据扫描指令包括该行数据的行号。这里,数据扫描指令是正常扫描指令,用于指示被驱动表数据扫描装置调度各个对应的分布式被驱动表存储节点执行第二执行计划来实现针对被驱动表的数据扫描,由此获取被驱动表数据查询结果,即,从被驱动表读取行数据。在740,将所读取的行数据缓存在缓存装置中。
在所读取的驱动表的行数据是批量行数据的情况下,数据重扫指令也可以称为批量重扫指令,以及数据扫描指令也可以称为批量扫描指令。
在一些实施例中,表数据处理节点所执行的第一执行计划可以是嵌套式执行计划。图8示出了根据本说明书的实施例的嵌套式执行计划的示例示意图。在图8的示例中,两个Nested Loop Join(NLJ)以嵌套的方式组成分布式执行计划,其中,NLJ 1为外层NLJ,以及NLJ 2为内层NLJ。在这种情况下,如果按照条件下推的方式执行被驱动表的数据扫描,则所传递的动态参数的数量成倍地变多。例如,如果是两个NLJ嵌套,则在外层NLJ的参数数量为M以及内层NLJ的参数数量为N时,会产生M * N种参数组合。如果存在多个NLJ嵌套,则在经过多个参数数量放大后所产生的参数集合的规模非常大。为了减少所传递的动态参数规模,需要在优化器进行执行计划编译时识别出嵌套式执行计划,并且标识出最内层NLJ。在进行针对被驱动表的数据扫描时,仅仅针对最内层NLJ所读取的驱动表的行数据启动上述数据重扫过程,由此可以减少所传递的动态参数数量。
图9示出了根据本说明书的实施例的扫描指令生成过程900的另一示例流程图。
如图9所示,在接收到所读取的驱动表的行数据后,在910,确定表数据处理节点的缓存装置中是否缓存有该行数据。
如果确定为缓存装置中缓存有该行数据,则在920,确定该行数据是否是响应于表数据处理节点执行嵌套式执行计划的最内层执行计划而读取的行数据。例如,可以利用在优化器进行执行计划编译时所标识出的内层标识,确定该行数据是否是响应于表数据处理节点执行嵌套式执行计划的最内层执行计划而读取的行数据。
如果确定为该行数据是响应于表数据处理节点执行嵌套式执行计划的最内层执行计划而读取的行数据,则在930,生成数据重扫指令。
如果确定为缓存装置中未缓存有该行数据或者该行数据不是响应于表数据处理节点执行嵌套式执行计划的最内层执行计划而读取的行数据,则在940,生成数据扫描指令,用于指示被驱动表数据扫描装置调度各个对应的分布式被驱动表存储节点执行第二执行计划来读取行数据。
在950,将所读取的行数据缓存在缓存装置中。
利用图9所示的方案, 在优化器的执行计划编译阶段,将图8中最下方NLJ(NLJ 2)标识为最内层执行计划,由此在执行针对被驱动表的数据扫描时,仅仅针对NLJ 2所获取的行数据执行数据重扫,从而使得最下方PX仅仅从NLJ 2获取动态参数集合。在这种情况下,调度重启次数为M * N / Batch Size。
回到图6,在如上生成数据重扫指令或者数据扫描指令后,在630,将数据重扫指令或者数据扫描指令发送给被驱动表扫描调度装置。被驱动表扫描调度装置根据数据重扫指令或者数据扫描指令来获取被驱动表的匹配行数据。
在所接收到的扫描指令是数据重扫指令时,被驱动表扫描调度装置根据数据重扫指令中的行数据的行号从中间结果存储装置中读取对应的被驱动表数据查询结果。在所接收到的扫描指令是数据扫描指令时,被驱动表扫描调度装置调度对应的被驱动表存储节点执行第二执行计划来实现针对被驱动表的数据扫描,从而获取被驱动表数据查询结果。被驱动表存储节点的被驱动表数据查询结果返回给被驱动表数据扫描装置。此外,被驱动表存储节点所返回的被驱动表数据查询结果与所读取的驱动表的行数据的行号相对应地存储在中间结果存储装置中。
在640,表数据查询装置从被驱动表数据扫描装置获取被驱动表数据查询结果。
此外,在针对被驱动表的数据查询涉及条件下推的情况下,如果缓存装置未缓存有行数据,则还可以确定与所读取的行数据对应的条件下推参数。然后,根据与所读取的行数据对应的条件下推参数,生成数据扫描指令。换言之,发送给被驱动表扫描装置的数据扫描指令包含有条件下推参数,由此各个被驱动表存储节点可以在所接收的条件下推参数集下执行被驱动表数据扫描。在一些实施例中,所确定出的条件下推参数可以存储在表数据处理节点的参数存储装置处,由此被驱动表扫描调度装置在调度各个被驱动表存储节点执行各自的执行计划时,从参数存储装置获取该条件下推参数,并且将所获取的条件下推参数与数据扫描指令一起下发给对应的被驱动表存储节点。
此外,在所读取的行数据是批量行数据的情况下,所确定的条件下推参数为条件下推参数集。在各个被驱动表存储节点在所接收的条件下推参数集下执行被驱动表数据扫描时,驱动表的每行数据对应一组参数,并且会生成一份数据查询结果。如果批量行数据存在N行数据,则会生成N份数据查询结果。
此外,在一些分布式执行计划中,被驱动表扫描调度装置所调度的第二执行计划包括部署在至少两个被驱动表存储节点处的至少两个第二分布式执行计划。可选地,各个第二分布式执行计划之间可以通过中间结果存储装置传递各自的处理结果。
图10示出了分布式数据库的嵌套循环连接过程的执行计划的另一示例示意图。
在图10中示出的执行计划中,以EXCHANGE OUT算子作为边界进行DFO划分。在进行DFO划分后,3、4、5、6、10、11号算子成为DFO1,以及7、8和9号算子成为同一个DFO0。在划分完DFO后,PX算子依次自底向上调度DFO执行,判断每个DFO需要在哪些Server上执行,在这些Server上发出调度命令启动SQC开始执行。在上面的例子中,PX算子首先调度DFO0,然后调度DFO1。
在DFO0的执行中,存在batch组的条件下推参数,每组条件下推参数都会完成整个7、8、9号执行过程来产生一份中间结果,供下次DFO1执行使用。在每组参数完成执行计划后,需要在当前Server上切换下一组参数并重置所有内存状态重新执行本地重扫,从而在batch组参数全部执行后,会产生batch份数据查询结果,这些数据查询结果会被存储到中间结果存储装置中。在DFO1执行时, 再从中间结果中读取到batch份中间结果。读取一份中间结果后,执行整个DFO1。在读取下一份中间结果时,重置所有内存状态再重新执行整个DFO1,如此循环处理,直到所有中间结果都读取完毕,由此完成所有DFO的执行,得到最终数据查询结果。所得到的数据查询结果返回给PX算子, 以供后续使用。
图11A-图11C示出了根据本说明书的实施例的表数据查询方法的示例应用场景。
图11A示出了嵌套循环表连接处理的应用场景,在该应用场景中,仅仅包含单个嵌套循环连接节点(NLJ)。可选地,本说明书的实施例的表数据查询方法也可以适用于具有如图8所示的嵌套式NLJ结构的嵌套循环表连接处理。
图11B示出了SubPlan Filter条件下推的分布式数据重扫的应用场景。在该应用场景下,左侧依然是驱动表,右侧存在多支分布式子计划。在该应用场景下,SubPlanFilter算子在左侧获取到Batch行数据计算出动态参数(条件下推参数)后,需要依次对右侧被驱动子计划做重新扫描,每次执行流程和图11A中示出的单个NLJ场景的处理流程相同。
图11C示出了SubPlan Filter和Nested Loop Join叠加的应用场景。在该应用场景中,Nested Loop Join和SubPlan Filter均可以启用分布式数据重扫。
如图11C所示, SubPlan Filter右侧存在两支分布式子计划。对于中间侧子计划,由于存在Nested Loop Join嵌套,因此最下方的PX算子不和顶层的SubPlan Filter形成数据重扫的相关关系,只和内层Nested Loop Join形成依赖关系。而最右支的分布式子计划可以和顶层SubPlan Filter形成数据重扫关系。因此,在这个执行计划中,SubPlan Filter和Nested Loop Join均可以启用分布式数据重扫。每个分支通过Batch Rescan均将调度重启的次数降低成原有的1 / Batch Size,从而较好地提升了执行性能。
此外,根据本说明书的实施例的表数据查询方案也可以适用于SubPlan Filter和SubPlan Filter算子嵌套叠加的应用场景,该应用场景类似于Nested Loop Join的嵌套叠加,仅仅对内层SubPlan Filter启动分布式数据重扫。
图12示出了根据本说明书的实施例的用于分布式数据库的表数据查询装置1200的示例方框图。如图12所示,表数据查询装置1200包括数据缓存确定单元1210、扫描指令生成单元1220、扫描指令发送单元1230和扫描结果获取单元1240。
数据缓存确定单元1210被配置为响应于表数据处理节点执行第一执行计划而读取到驱动表的行数据,确定表数据处理节点的缓存装置中是否缓存有所读取的驱动表的行数据。
扫描指令生成单元1220被配置为在缓存装置中缓存有所读取的驱动表的行数据时,生成数据重扫指令,所述数据重扫指令包括所读取的驱动表的行数据的行号。
扫描指令发送单元1230被配置为将所生成的数据重扫指令发送给表数据处理节点的被驱动表扫描调度装置,以指示被驱动表扫描调度装置根据数据重扫指令中的行数据的行号从中间结果存储装置中读取对应的被驱动表数据查询结果。
查询结果获取单元1240被配置为从被驱动表扫描调度装置获取被驱动表数据查询结果。
此外,在缓存装置未缓存有所读取的行数据时,扫描指令生成单元1220生成数据扫描指令,所述数据扫描指令包括所读取的行数据的行号。扫描指令发送单元1230将数据扫描指令发送给被驱动表扫描调度装置,以指示被驱动表扫描调度装置调度对应的被驱动表存储节点执行第二执行计划来实现被驱动表数据扫描,由此获取被驱动表数据查询结果。在这种情况下,表数据查询装置1200还可以包括数据存储单元(未示出)。所述数据存储单元被配置为将所读取的驱动表的行数据存储在缓存装置中。此外,被驱动表存储节点的被驱动表数据查询结果被返回给被驱动表扫描调度装置,并且与所读取的驱动表的行数据的行号相对应地存储在中间结果存储装置中。
在一些实施例中,所读取的驱动表的行数据可以包括批量行数据。相应地,数据重扫指令可以称为批量重扫指令,以及数据扫描指令可以称为批量扫描指令。
在一些实施例中,扫描指令生成单元1220可以包括条件下推参数确定模块和数据扫描指令生成模块。条件下推参数确定模块被配置为在缓存装置未缓存有所读取的驱动表的行数据时,确定与该行数据对应的条件下推参数。数据扫描指令生成模块被配置为根据与该行数据对应的条件下推参数,生成数据扫描指令。所生成的数据扫描指令用于指示被驱动表扫描调度装置调度对应的被驱动表存储节点在该条件下推参数执行被驱动表数据扫描。在所读取的驱动表的行数据包括批量行数据时,每个行数据确定出一组条件下推参数,从而得到对应的条件下推参数集。
在一些实施例中,所述条件下推参数确定模块可以被配置为在缓存装置未缓存有数据时,根据行数据的连接列的行值确定该行数据所对应的条件下推参数。在所读取的驱动表的行数据包括批量行数据时,所述条件下推参数确定模块可以被配置为根据各条行数据的连接列的行值确定各条行数据所对应的条件下推参数。
在一些实施例中,表数据处理节点所执行的第一执行计划可以包括嵌套式执行计划。在缓存装置缓存有所读取的行数据且该行数据是响应于表数据处理节点执行嵌套式执行计划的最内层执行计划而读取的行数据时,扫描指令生成单元1220生成数据重扫指令。在缓存装置未缓存有所读取的行数据或者所读取的行数据不是响应于表数据处理节点执行嵌套式执行计划的最内层执行计划而读取的行数据时,扫描指令生成单元1220生成数据扫描指令。
如上参照图1到图12,对根据本说明书实施例的表数据查询方法和表数据查询装置进行了描述。上面的表数据查询装置可以采用硬件实现,也可以采用软件或者硬件和软件的组合来实现。
图13示出了根据本说明书的实施例的基于计算机系统实现的用于分布式数据库的表数据查询装置1300的示意图。如图13所示,表数据查询装置1300可以包括至少一个处理器1310、存储器(例如,非易失性存储器)1320、内存1330和通信接口1340,并且至少一个处理器1310、存储器1320、内存1330和通信接口1340经由总线1360连接在一起。至少一个处理器1310执行在存储器中存储或编码的至少一个计算机可读指令(即,上述以软件形式实现的元素)。
在一个实施例中,在存储器中存储计算机可执行指令,其当执行时使得至少一个处理器1310:响应于表数据处理节点执行第一执行计划而读取到驱动表的行数据,确定表数据处理节点的缓存装置中是否缓存有所读取的行数据;在缓存装置中缓存有所读取的行数据时,生成数据重扫指令,所述数据重扫指令包括所读取的行数据的行号;将数据重扫指令发送给表数据处理节点的被驱动表扫描调度装置,以指示被驱动表扫描调度装置根据该行数据的行号从中间结果存储装置中读取对应的被驱动表数据查询结果;以及从被驱动表扫描调度装置获取被驱动表数据查询结果。
应该理解,在存储器中存储的计算机可执行指令当执行时使得至少一个处理器1310进行本说明书的各个实施例中以上结合图1-图12描述的各种操作和功能。
根据一个实施例,提供了一种比如机器可读介质(例如,非暂时性机器可读介质)的程序产品。机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本说明书的各个实施例中以上结合图1-图12描述的各种操作和功能。具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。
在这种情况下,从可读介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此机器可读代码和存储机器可读代码的可读存储介质构成了本发明的一部分。
可读存储介质的实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD-RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上或云上下载程序代码。
根据一个实施例,提供一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序当被处理器执行时,使得处理器执行本说明书的各个实施例中以上结合图1-图12描述的各种操作和功能。
本领域技术人员应当理解,上面公开的各个实施例可以在不偏离发明实质的情况下做出各种变形和修改。因此,本发明的保护范围应当由所附的权利要求书来限定。
需要说明的是,上述各流程和各系统结构图中不是所有的步骤和单元都是必须的,可以根据实际的需要忽略某些步骤或单元。各步骤的执行顺序不是固定的,可以根据需要进行确定。上述各实施例中描述的装置结构可以是物理结构,也可以是逻辑结构,即,有些单元可能由同一物理实体实现,或者,有些单元可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
以上各实施例中,硬件单元或模块可以通过机械方式或电气方式实现。例如,一个硬件单元、模块或处理器可以包括永久性专用的电路或逻辑(如专门的处理器,FPGA或ASIC)来完成相应操作。硬件单元或处理器还可以包括可编程逻辑或电路(如通用处理器或其它可编程处理器),可以由软件进行临时的设置以完成相应操作。具体的实现方式(机械方式、或专用的永久性电路、或者临时设置的电路)可以基于成本和时间上的考虑来确定。
上面结合附图阐述的具体实施方式描述了示例性实施例,但并不表示可以实现的或者落入权利要求书的保护范围的所有实施例。在整个本说明书中使用的术语“示例性”意味着“用作示例、实例或例示”,并不意味着比其它实施例“优选”或“具有优势”。出于提供对所描述技术的理解的目的,具体实施方式包括具体细节。然而,可以在没有这些具体细节的情况下实施这些技术。在一些实例中,为了避免对所描述的实施例的概念造成难以理解,公知的结构和装置以框图形式示出。
本公开内容的上述描述被提供来使得本领域任何普通技术人员能够实现或者使用本公开内容。对于本领域普通技术人员来说,对本公开内容进行的各种修改是显而易见的,并且,也可以在不脱离本公开内容的保护范围的情况下,将本文所定义的一般性原理应用于其它变型。因此,本公开内容并不限于本文所描述的示例和设计,而是与符合本文公开的原理和新颖性特征的最广范围相一致。
Claims (18)
1.一种用于分布式数据库的表数据查询方法,所述方法由表数据处理节点中的表数据查询装置执行,所述表数据查询方法包括:
响应于表数据处理节点执行第一执行计划读取到驱动表的行数据,确定所述表数据处理节点的缓存装置中是否缓存有所述行数据;
在所述缓存装置中缓存有所述行数据时,生成数据重扫指令,所述数据重扫指令包括所述行数据的行号;
将所述数据重扫指令发送给所述表数据处理节点的被驱动表扫描调度装置,以指示所述被驱动表扫描调度装置根据所述行数据的行号从中间结果存储装置中读取对应的被驱动表数据查询结果;
在所述缓存装置未缓存有所述行数据时,生成数据扫描指令,所述数据扫描指令包括所述行数据的行号;
将所读取的驱动表的行数据存储在所述缓存装置中;
将所述数据扫描指令发送给所述被驱动表扫描调度装置,以指示所述被驱动表扫描调度装置调度各个对应的被驱动表存储节点执行第二执行计划来获取被驱动表数据查询结果,所述第二执行计划是部署在各个被驱动表存储节点处的分布式执行计划,其中,各个对应的被驱动表存储节点的被驱动表数据查询结果被返回给所述被驱动表扫描调度装置,并且与所述行数据的行号相对应地存储在所述中间结果存储装置中,以及
从所述被驱动表扫描调度装置获取所述被驱动表数据查询结果。
2.如权利要求1所述的表数据查询方法,其中,在所述缓存装置未缓存有所述行数据时,生成数据扫描指令包括:
在所述缓存装置未缓存有所述行数据时,确定与所述行数据对应的条件下推参数;以及
根据与所述行数据对应的条件下推参数,生成数据扫描指令,所述数据扫描指令用于指示所述被驱动表扫描调度装置调度各个对应的被驱动表存储节点在所述条件下推参数下执行第二执行计划来获取被驱动表数据查询结果。
3.如权利要求1所述的表数据查询方法,还包括:
在所述缓存装置未缓存有所述行数据时,确定与所述行数据对应的条件下推参数,
所述条件下推参数与所述数据扫描指令一起被所述被驱动表扫描调度装置下发给对应的被驱动表存储节点。
4.如权利要求2或3所述的表数据查询方法,其中,在所述缓存装置未缓存有所述行数据时,确定与所述行数据对应的条件下推参数包括:
在所述缓存装置未缓存有所述行数据时,根据所述行数据中的连接列的行值确定所述行数据所对应的条件下推参数。
5.如权利要求1所述的表数据查询方法,其中,所述第一执行计划包括嵌套式执行计划,在所述缓存装置中缓存有所述行数据时,生成数据重扫指令包括:
在所述缓存装置缓存有所述行数据且所述行数据是响应于所述表数据处理节点执行所述嵌套式执行计划的最内层执行计划而读取的行数据时,生成所述数据重扫指令,
在所述缓存装置缓存有所述行数据且所述行数据不是响应于所述表数据处理节点执行所述嵌套式执行计划的最内层执行计划而读取的行数据时,生成所述数据扫描指令。
6.如权利要求5所述的表数据查询方法,其中,所述嵌套式执行计划的最内层执行计划经由优化器在执行计划编译阶段标识出。
7.如权利要求1所述的表数据查询方法,其中,所述被驱动表扫描调度装置所调度的第二执行计划包括至少两个第二分布式执行子计划,各个第二分布式执行子计划之间通过所述中间结果存储装置传递各自的处理结果。
8.如权利要求1所述的表数据查询方法,其中,所述表数据处理节点包括表连接节点或者子查询节点。
9.一种用于分布式数据库的表数据查询装置,所述表数据查询装置应用于表数据处理节点,所述表数据查询装置包括:
数据缓存确定单元,响应于表数据处理节点执行第一执行计划读取到驱动表的行数据,确定所述表数据处理节点的缓存装置中是否缓存有所述行数据;
扫描指令生成单元,在所述缓存装置中缓存有所述行数据时,生成数据重扫指令,所述数据重扫指令包括所述行数据的行号;
扫描指令发送单元,将所述数据重扫指令发送给所述表数据处理节点的被驱动表扫描调度装置,以指示所述被驱动表扫描调度装置根据所述行数据的行号从中间结果存储装置中读取对应的被驱动表数据查询结果;以及
查询结果获取单元,从所述被驱动表扫描调度装置获取所述被驱动表数据查询结果,
其中,在所述缓存装置未缓存有所述行数据时,所述扫描指令生成单元生成数据扫描指令,所述数据扫描指令包括所述行数据的行号,以及所述扫描指令发送单元将所述数据扫描指令发送给所述被驱动表扫描调度装置,所述数据扫描指令用于指示所述被驱动表扫描调度装置调度各个对应的被驱动表存储节点执行第二执行计划来获取被驱动表数据查询结果,所述第二执行计划包括部署在各个被驱动表存储节点处的分布式执行计划,
所述表数据查询装置还包括:
数据存储单元,将所读取的驱动表的行数据存储在所述缓存装置中,
其中,各个对应的被驱动表存储节点的被驱动表数据查询结果被返回给所述被驱动表扫描调度装置,并且与所述行数据的行号相对应地存储在所述中间结果存储装置中。
10.如权利要求9所述的表数据查询装置,其中,所述扫描指令生成单元包括:
条件下推参数确定模块,在所述缓存装置未缓存有所述行数据时,确定与所述行数据对应的条件下推参数;以及
数据扫描指令生成模块,根据与所述行数据对应的条件下推参数,生成数据扫描指令,所述数据扫描指令用于指示所述被驱动表扫描调度装置调度各个被驱动表存储节点在所述条件下推参数下执行第二执行计划来获取被驱动表数据查询结果。
11.如权利要求9所述的表数据查询装置,还包括:
条件下推参数确定单元,在所述缓存装置未缓存有所述行数据时,确定与所述行数据对应的条件下推参数,
其中,所述条件下推参数与所述数据扫描指令一起被所述被驱动表扫描调度装置下发给对应的被驱动表存储节点。
12.如权利要求10或11所述的表数据查询装置,其中,所述行数据所对应的条件下推参数根据所述行数据中的连接列的行值确定。
13.如权利要求9所述的表数据查询装置,其中,所述第一执行计划包括嵌套式执行计划,所述扫描指令生成单元被配置为:
在所述缓存装置缓存有所述行数据且所述行数据是响应于所述表数据处理节点执行所述嵌套式执行计划的最内层执行计划而读取的行数据时,生成所述数据重扫指令,
在所述缓存装置未缓存有所述行数据或者所述行数据不是响应于所述表数据处理节点执行所述嵌套式执行计划的最内层执行计划而读取的行数据时,生成所述数据扫描指令。
14.一种用于分布式数据库的表数据处理节点,包括:
驱动表数据扫描装置,扫描获取驱动表的行数据;
如权利要求9到13中任一所述的表数据查询装置;
缓存装置,缓存所述表数据处理节点执行第一执行计划而读取到驱动表的行数据;
被驱动表扫描调度装置,根据所述表数据查询装置生成的数据重扫指令或数据扫描指令执行被驱动表数据查询;
中间结果存储装置,与所述行数据的行号相对应地存储被驱动表存储节点返回的被驱动表数据查询结果;以及
表数据处理装置,使用驱动表的行数据以及被驱动表的匹配行数据进行表数据处理。
15.如权利要求14所述的表数据处理节点,其中,所述被驱动表扫描调度装置所调度的第二执行计划包括至少两个第二分布式执行子计划,各个第二分布式执行子计划之间经由所述中间结果存储装置传递各自的处理结果。
16.一种分布式数据系统,包括:
至少一个驱动表存储节点,存储驱动表的行数据;
如权利要求14或15所述的表数据处理节点;以及
至少两个被驱动表存储节点,被驱动表被分布式地存储在所述至少两个被驱动表存储节点的部分或全部被驱动表存储节点处。
17.一种用于分布式数据库的表数据查询装置,包括:
至少一个处理器,
与所述至少一个处理器耦合的存储器,以及
存储在所述存储器中的计算机程序,所述至少一个处理器执行所述计算机程序来实现如权利要求1到8中任一所述的表数据查询方法。
18.一种计算机可读存储介质,其存储有可执行指令,所述指令当被执行时使得处理器执行如权利要求1到8中任一所述的表数据查询方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110943325.3A CN113420033B (zh) | 2021-08-17 | 2021-08-17 | 分布式数据库的表数据查询方法、表数据查询装置及系统 |
PCT/CN2022/108511 WO2023020236A1 (zh) | 2021-08-17 | 2022-07-28 | 分布式数据库的表数据查询 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110943325.3A CN113420033B (zh) | 2021-08-17 | 2021-08-17 | 分布式数据库的表数据查询方法、表数据查询装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113420033A CN113420033A (zh) | 2021-09-21 |
CN113420033B true CN113420033B (zh) | 2021-12-07 |
Family
ID=77719174
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110943325.3A Active CN113420033B (zh) | 2021-08-17 | 2021-08-17 | 分布式数据库的表数据查询方法、表数据查询装置及系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113420033B (zh) |
WO (1) | WO2023020236A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113420033B (zh) * | 2021-08-17 | 2021-12-07 | 北京奥星贝斯科技有限公司 | 分布式数据库的表数据查询方法、表数据查询装置及系统 |
CN114860739B (zh) * | 2022-07-07 | 2022-09-06 | 北京奥星贝斯科技有限公司 | 针对分布式数据库的查询方法及装置 |
CN114969111B (zh) * | 2022-08-01 | 2022-11-29 | 北京奥星贝斯科技有限公司 | 分布式数据库的逻辑子计划执行方法、装置及系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8060870B2 (en) * | 2007-09-26 | 2011-11-15 | International Business Machines Corporation | System and method for advanced polyhedral loop transformations of source code in a compiler |
US9292569B2 (en) * | 2012-10-02 | 2016-03-22 | Oracle International Corporation | Semi-join acceleration |
US10303682B2 (en) * | 2013-09-21 | 2019-05-28 | Oracle International Corporation | Automatic verification and triage of query results |
CN109947796B (zh) * | 2019-04-12 | 2021-04-30 | 北京工业大学 | 一种分布式数据库系统查询中间结果集的缓存方法 |
CN111506602B (zh) * | 2020-04-20 | 2023-05-09 | 上海达梦数据库有限公司 | 数据查询方法、装置、设备和存储介质 |
CN113420033B (zh) * | 2021-08-17 | 2021-12-07 | 北京奥星贝斯科技有限公司 | 分布式数据库的表数据查询方法、表数据查询装置及系统 |
-
2021
- 2021-08-17 CN CN202110943325.3A patent/CN113420033B/zh active Active
-
2022
- 2022-07-28 WO PCT/CN2022/108511 patent/WO2023020236A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023020236A1 (zh) | 2023-02-23 |
CN113420033A (zh) | 2021-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113420033B (zh) | 分布式数据库的表数据查询方法、表数据查询装置及系统 | |
KR102152556B1 (ko) | 서비스 프로세싱 및 합의 방법 및 디바이스 | |
US10817514B2 (en) | Splitting of a join operation to allow parallelization | |
CN110532247B (zh) | 数据迁移方法和数据迁移系统 | |
CN113934763B (zh) | 分布式数据库的sql查询方法及装置 | |
CN104881494B (zh) | 与Redis服务器进行数据同步的方法、装置和系统 | |
US8122008B2 (en) | Joining tables in multiple heterogeneous distributed databases | |
CN110471923B (zh) | 一种区块链交易记录的处理方法及装置 | |
US20160323385A1 (en) | Distributed Data Storage Method, Apparatus, and System | |
US9647927B2 (en) | Computer-implemented K-shortest path finding method | |
CN102710763B (zh) | 一种分布式缓存池化、分片及故障转移的方法及系统 | |
US8812492B2 (en) | Automatic and dynamic design of cache groups | |
US9836505B2 (en) | Star and snowflake join query performance | |
CN114880504A (zh) | 一种图数据的查询方法、装置以及设备 | |
CN110837505A (zh) | 状态数据存储方法、状态数据同步方法、设备和存储介质 | |
CN114661752A (zh) | 分布式数据库的计划调度方法、装置和系统 | |
CN107798025B (zh) | 存储过程的运行、编译方法、装置和数据库系统 | |
WO2023221813A1 (zh) | 分布式数据库的计划执行方法、装置和系统 | |
CN107122952B (zh) | 基于规则的流程调度方法及系统 | |
CN114969111B (zh) | 分布式数据库的逻辑子计划执行方法、装置及系统 | |
US10860580B2 (en) | Information processing device, method, and medium | |
CN116501761A (zh) | 查询优化方法、设备及存储介质 | |
CN110109751A (zh) | 分布式切图任务的分配方法、装置及分布式切图系统 | |
CN114115911A (zh) | 一种基于有向无环图的系统构建策略生成方法 | |
CN110765125A (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: 20211112 Address after: Unit 02, 901, floor 9, unit 1, building 1, No. 1, Middle East Third Ring Road, Chaoyang District, Beijing 100020 Applicant after: Beijing aoxingbeisi Technology Co., Ltd Address before: 310000 801-10, Section B, floor 8, No. 556, Xixi Road, Xihu District, Hangzhou City, Zhejiang Province Applicant before: Ant Jinfu (Hangzhou) Network Technology Co., Ltd |
|
GR01 | Patent grant | ||
GR01 | Patent grant |