CN113282593B - 层次查询方法及装置 - Google Patents
层次查询方法及装置 Download PDFInfo
- Publication number
- CN113282593B CN113282593B CN202110834690.0A CN202110834690A CN113282593B CN 113282593 B CN113282593 B CN 113282593B CN 202110834690 A CN202110834690 A CN 202110834690A CN 113282593 B CN113282593 B CN 113282593B
- Authority
- CN
- China
- Prior art keywords
- data
- query
- condition
- field
- thread
- 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 59
- 238000004590 computer program Methods 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 3
- 230000008520 organization Effects 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- 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/242—Query formulation
- G06F16/2433—Query languages
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or classification
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书实施例中提供了一种层次查询方法及装置,用于处理请求查询目标数据库表的层次查询请求,层次查询请求包括起始查询条件和连接条件。方法之一包括:在第1个查询轮次中,根据起始查询条件从目标数据库表中查询第一数据,并将第一数据作为树形结构的根节点;根据连接条件,将目标数据库表中的多条业务数据划分为与N个工作线程相对应的N个数据分组,其中N是大于1的整数;在大于1的第i个查询轮次中,选择当前树形结构中的叶子节点作为父节点;根据连接条件,从N个工作线程中确定与父节点相对应的目标工作线程,使目标工作线程根据父节点和连接条件,从其对应的数据分组中查询第二数据;将第二数据作为父节点的子节点。
Description
技术领域
本说明书一个或多个实施例涉及计算机领域,尤其涉及层次查询方法及装置。
背景技术
数据库表中的多条业务数据可能具有层次关系,可以通过对该数据库表发起相应的层次查询请求,获得由该数据库表中的各条数据作为节点而组成的树形结构。层次查询请求中可以定义从数据库表中查询数据的起始查询条件,该起始查询条件用于描述作为待获取的树形结构的根节点的数据应当满足的条件;层次查询请求中还可以定义连接条件,该连接条件用于描述待获取的树形结构中作为父节点的数据和作为子节点的数据应当满足的关系。
通常的,需要消耗相对较长的时间才能完成对层次查询请求的处理,效率较低。
发明内容
本说明书一个或多个实施例中提供了一种层次查询方法及装置,可更加高效的完成对层次查询请求的处理。
第一方面,提供了一种层次查询方法,所述方法用于处理请求查询目标数据库表的层次查询请求,所述层次查询请求包括起始查询条件和连接条件。所述方法包括:在第1个查询轮次中,根据所述起始查询条件从所述目标数据库表中查询第一数据,并将所述第一数据作为树形结构的根节点;根据所述连接条件,将所述目标数据库表中的多条业务数据划分为与N个工作线程相对应的N个数据分组,其中N是大于1的整数;在大于1的第i个查询轮次中,选择当前树形结构中的叶子节点作为父节点;根据所述连接条件,从所述N个工作线程中确定与所述父节点相对应的目标工作线程,使所述目标工作线程根据所述父节点和所述连接条件,从其对应的数据分组中查询第二数据;将所述第二数据作为所述父节点的子节点。
在一种可能的实施方式中,所述根据所述连接条件,将所述目标数据库表中的多条业务数据划分为与N个工作线程相对应的N个数据分组,包括:确定所述连接条件是否为等值条件,所述等值条件用于指示子节点中第一字段的字段值相同于父节点中第二字段的字段值;当所述连接条件为等值条件时,根据所述多条业务数据中第一字段下的字段值,将所述多条业务数据划分为与所述N个工作线程相对应的N个数据分组。所述根据所述连接条件,从所述N个工作线程中确定与所述父节点相对应的目标工作线程,包括:当所述连接条件为等值条件时,根据所述父节点中第二字段下的字段值,从所述N个工作线程中确定与所述父节点相对应的目标工作线程。
在一种可能的实施方式中,所述根据所述多条业务数据中第一字段下的字段值,将所述多条业务数据划分为与所述N个工作线程相对应的N个数据分组,具体包括:确定所述多条业务数据中第一字段的字段值的散列值,利用N对各个所述散列值进行第一取模运算,根据第一取模运算的结果将所述多条业务数据划分为与所述N个工作线程相对应的N个数据分组。所述根据所述父节点中第二字段下的字段值,从所述N个工作线程中确定与所述父节点相对应的目标工作线程,具体包括:确定所述父节点中第二字段的字段值的散列值,利用N对该散列值进行第二取模运算,根据第二取模运算的结果从所述N个工作线程中确定与所述父节点相对应的目标工作线程。
在一种可能的实施方式中,所述根据所述连接条件,将所述目标数据库表中的多条业务数据划分为与N个工作线程相对应的N个数据分组,包括:确定所述连接条件是否为等值条件,所述等值条件用于指示子节点中第一字段的字段值相同于父节点中第二字段的字段值;当所述连接条件不是等值条件时,根据所述N个工作线程的总量N将所述多条业务数据划分为与所述N个工作线程相对应的N个分组。所述根据所述连接条件,从所述N个工作线程中确定与所述父节点相对应的目标工作线程,包括:当所述连接条件不是等值条件时,将所述N个工作线程确定为与所述父节点相对应的目标工作线程。
在一种可能的实施方式中,还包括:确定所述根节点和所述父节点对应在当前树形结构中的路径。所述将所述第二数据作为所述父节点的子节点,具体包括:在所述路径中不包括所述第二数据的情况下,在当前树形结构中将所述第二数据作为所述父节点的子节点。
第二方面,提供了另一种层次查询方法,所述方法用于处理请求查询目标数据库表的层次查询请求,所述层次查询请求包括起始查询条件和连接条件。所述方法包括:在第1个查询轮次中,根据所述起始查询条件从所述目标数据库表中查询第三数据,并将所述第三数据作为树形结构的根节点;根据所述连接条件,将所述目标数据库表中的多条业务数据划分为与N个工作线程相对应的N个数据分组,其中N是大于1的整数;在大于1的第i个查询轮次中,通过所述N个工作线程中的各个当前工作线程,获取与所述当前工作线程相对应的若干第四数据,所述第四数据属于在第i-1个查询轮次中查询到的第三数据;所述当前工作线程根据所述连接条件,从所述当前工作线程对应的数据分组中查询将作为所述第四数据的子节点的第三数据。
在一种可能的实施方式中,还包括:所述当前工作线程从所述N个工作线程中,确定将作为子节点的第三数据所对应的目标工作线程,并向所述目标工作线程提供将作为子节点的第三数据,其中在第i+1个查询轮次中,将作为子节点的第三数据属于与所述目标工作线程相对应的第四数据。
在一种可能的实施方式中,所述根据所述连接条件,将所述目标数据库表中的多条业务数据划分为与N个工作线程相对应的N个数据分组,包括:确定所述连接条件是否为等值条件,所述等值条件用于指示子节点中第一字段的字段值相同于父节点中第二字段的字段值;当所述连接条件为等值条件时,根据所述多条业务数据中第一字段下的字段值,将所述多条业务数据划分为与所述N个工作线程相对应的N个数据分组。所述当前工作线程从所述N个工作线程中,确定将作为子节点的第三数据所对应的目标工作线程,包括:所述当前工作线程根据将作为子节点的第三数据中第二字段的字段值,从所述N个工作线程中确定将作为子节点的第三数据所对应的目标工作线程。
在一种可能的实施方式中,所述根据所述多条业务数据中第一字段下的字段值,将所述多条业务数据划分为与所述N个工作线程相对应的N个数据分组,具体包括:确定所述多条业务数据中第一字段的字段值的散列值,利用N对各个所述散列值进行第一取模运算,根据第一取模运算的结果将所述多条业务数据划分为与所述N个工作线程相对应的N个数据分组。所述当前工作线程根据将作为子节点的第三数据中第二字段的字段值,从所述N个工作线程中确定将作为子节点的第三数据所对应的目标工作线程,具体包括:所述当前工作线程确定将作为子节点的第三数据中第二字段的字段值的散列值,利用N对该散列值进行第二取模运算,根据第二取模运算的结果从所述N个工作线程中确定将作为子节点的第三数据所对应的目标工作线程。
在一种可能的实施方式中,所述根据所述连接条件,将所述目标数据库表中的多条业务数据划分为与N个工作线程相对应的N个数据分组,包括:确定所述连接条件是否为等值条件,所述等值条件用于指示子节点中第一字段的字段值相同于父节点中第二字段的字段值;当所述连接条件不是等值条件时,根据所述N个工作线程的总量N将所述多条业务数据划分为与所述N个工作线程相对应的N个分组。所述确定将作为子节点的第三数据所对应的目标工作线程,包括:将所述N个工作线程确定为将作为子节点的第三数据所对应的目标工作线程。
在一种可能的实施方式中,还包括:所述当前工作线程获取所述根节点和所述第四数据对应在所述树形结构中的路径。所述当前工作线程根据所述连接条件,从所述当前工作线程对应的数据分组中查询将作为所述第四数据的子节点的第三数据,包括:所述当前工作线程根据所述连接条件,从所述当前工作线程对应的数据分组中查询候选数据;在所述路径中不包括所述候选数据的情况下,将所述候选数据确定为将作为所述第四数据的子节点的第三数据。
在一种可能的实施方式中,还包括:所述当前工作线程向协调线程发送表征其完成第i个查询轮次的第i-1个结束信息。所述协调线程在确定其接收到来自所述N个工作线程的第i-1个结束信息时,向所述N个工作线程分别发送指示其进行第i+1个查询轮次的启动信息。
在一种可能的实施方式中,还包括:在当前树形结构中将将作为子节点的第三数据作为所述第四数据的子节点。
第三方面,提供了一种层次查询装置,所述装置用于处理请求查询目标数据库表的层次查询请求,所述层次查询请求包括起始查询条件和连接条件。所述装置包括:第一查询单元,配置为在第1个查询轮次中,根据所述起始查询条件从所述目标数据库表中查询第一数据,并将所述第一数据作为树形结构的根节点;分组管理单元,配置为根据所述连接条件,将所述目标数据库表中的多条业务数据划分为与N个工作线程相对应的N个数据分组,其中N是大于1的整数;第二查询单元,配置为在大于1的第i个查询轮次中,选择当前树形结构中的叶子节点作为父节点;根据所述父节点和所述连接条件,从所述N个工作线程中确定与所述父节点相对应的目标工作线程,使所述目标工作线程根据所述连接条件,从其对应的数据分组中查询第二数据;将所述第二数据作为所述父节点的子节点。
第四方面,提供了另一种层次查询装置,所述装置用于处理请求查询目标数据库表的层次查询请求,所述层次查询请求包括起始查询条件和连接条件。所述装置包括:第三查询单元,配置为在第1个查询轮次中,根据所述起始查询条件从所述目标数据库表中查询第三数据,并将所述第三数据作为树形结构的根节点;分组管理单元,配置为根据所述连接条件,将所述目标数据库表中的多条业务数据划分为与N个工作线程相对应的N个数据分组,其中N是大于1的整数;第四查询单元,配置为在大于1的第i个查询轮次中,通过所述N个工作线程中的各个当前工作线程,获取与所述当前工作线程相对应的若干第四数据,所述第四数据属于在第i-1个查询轮次中查询到的第三数据;所述当前工作线程根据所述第四数据和所述连接条件,从所述当前工作线程对应的数据分组中查询将作为所述第四数据的子节点的第三数据。
第五方面,提供了一种计算机可读存储介质,其上存储有计算机程序/指令,当所述计算机程序/指令在计算设备中执行时,计算设备执行如第一方面或第二方面中任一项所述的方法。
第六方面,提供了一种计算设备,包括存储器和处理器,所述存储器中存储有计算机程序/指令,所述处理器执行所述可计算机程序/指令,实现如第一方面或第二方面中任一项所述的方法。
通过本说明书一个或多个实施例中提供的方法及装置,在单个查询轮次中可以通过单个工作线程查询其对应的数据分组中的少量业务数据,或者通过N个工作线程并行查询其各自对应的数据分组中的少量业务数据,快速查询到作为树形结构中某个已确定的节点的子节点的全部业务数据。或者,在单个查询轮次中可以通过N个工作线程中的一个或多个工作线程,各自查询其对应的数据分组中的少量业务数据,实现快速查询到位于树形结构中的相同的层的全部叶子节点各自的子节点。如此,可以降低处理层次查询请求的时间,提高层次查询请求的处理效率。
附图说明
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本说明书实施例中示例性提供的树形结构的示意图;
图2为本说明书实施例中提供的一种层次查询方法的流程图;
图3为本说明书实施例中对业务数据进行分组的方法的示意图;
图4为本说明书实施例中提供的另一种层次查询方法的示意图;
图5为本说明书实施例中工作线程获取待查询子节点的业务数据的示意图;
图6为本说明书实施例中提供的一种层次查询装置的结构示意图;
图7为本说明书实施例中提供的另一种层次查询装置的结构示意图。
具体实施方式
下面结合附图,对本说明书所提供的各个非限制性实施例进行详细描述。
层次查询(hierarchical query)请求与层次查询语句相对应,例如层次查询请求中可以包括层次查询语句或者可以被解析为层次查询语句。层次查询语句中可以通过例如start with子句定义起始查询条件,通过例如connect by子句定义连接条件。处理请求查询目标数据库表的层次查询请求,实质上包括首先基于起始查询条件,从目标数据库表中确定出作为树形结构的根节点的业务数据,然后基于连接条件在目标数据库表中查询其它业务数据,最终获得由业务数据作为节点而组成的树形结构。
举例来说,对于如下表1所示的目标数据库表t,例如为公司员工信息表。目标数据库表t中的单行业务数据表征一条员工信息;id字段下的字段值是企业/组织为员工分配的身份标识,该身份标识可以是数值或者字符串;mgr_id字段下的字段值是企业/组织为员工分配的主管领导的身份标识;name字段下的字段值是员工姓名。
id | mgr_id | name |
0 | -1 | A |
1 | 0 | B |
2 | 0 | C |
3 | 0 | D |
4 | 1 | E |
5 | 1 | F |
6 | 1 | G |
7 | 2 | H |
8 | 2 | I |
表1
接收到对应层次查询语句select*from t start with id=0connect by priorid=mgr_id的层次查询请求时,可能获得如图1所示的树形结构。其中图1中利用单个业务数据中name字段的字段值,表征该业务数据对应在树形结构中的节点的位置。
在一种可能的实施方式中,可以采用单线程串行处理的方式处理层次查询请求。处理层次查询请求的过程中,对于已确定的树形结构中的每个节点,需要对目标数据库表中的全部业务数据均进行查询,才能查询到可能作为该节点的子节点的全部业务数据;而且,需要在完成查询其中一个节点的子节点后,才能继续查询另一个节点的子节点。如此,处理层次查询请求的时间消耗相对较多,效率较低。
为了实现降低处理层次查询请求的时间,提高层次查询请求的处理效率,本说明书实施例中提供了一种层次查询方法。其中该方法用于处理请求查询目标数据库表的层次查询请求,该层次查询请求包括起始查询条件和连接条件。如图2所示,本说明书实施例中提供的一种层次查询方法至少可以包括:步骤201,在第1个查询轮次中,根据所述起始查询条件从所述数据库表中查询第一数据,并将所述第一数据作为树形结构的根节点;步骤203,将所述目标数据库表中的多条业务数据划分为与N个工作线程相对应的N个数据分组,其中N是大于1的整数;步骤205,在大于1的第i个查询轮次中,选择当前树形结构中的叶子节点作为父节点;根据所述连接条件,从所述N个工作线程中确定与所述父节点相对应的目标工作线程,使所述目标工作线程根据所述父节点和所述连接条件,从其对应的数据分组中查询第二数据;将所述第二数据作为所述父节点的子节点。
如图2所示的方法中,除明确表明需要由目标工作线程执行的处理外,其它处理均可以由N个工作线程以外的一个或多个其它线程执行,其中下文中将主要以主线程执行其它处理为例,详细描述图2所示方法中的各个步骤进行详细描述。
首先,在步骤201,在第1个查询轮次中,根据所述起始查询条件从所述目标数据库表中查询第一数据,并将所述第一数据作为树形结构的根节点。
层次查询请求中的起始查询条件用于描述作为根节点的业务数据应当满足的条件。例如,对于上述表1示例的目标数据库表t,利用单个业务数据中name字段下的字段值表征该业务数据。如果层次查询请求中通过start with子句限定起始查询条件是“id=0”,即通过start with子句限定作为根节点的业务数据中id字段的字段值为0,那么步骤201中具体可以通过主线程从目标数据库表t中,查询到id字段的字段值为0的第一数据是业务数据A,然后将业务数据A作为期望获取的树形结构的根节点。
接着,在步骤203,根据所述连接条件,将所述目标数据库表中的多条业务数据划分为与N个工作线程相对应的N个数据分组,其中N是大于1的整数。
工作线程的总量N可以结合实际业务需求进行配置,其中为了方便清楚且准确的描述本说明书实施例中提供的技术方案,下文中将主要以N的取值是5为例进行示例性描述。
连接条件通常可以划分为等值条件和非等值条件两种类型。对于属于等值条件的连接条件,其用于指示子节点中第一字段的字段值相同于父节点中第二字段的字段值,其中第一字段和第二字段也可以表述父节点和子节点的连接键;例如,层次查询请求中可以通过connect by子句定义连接条件是属于等值条件的“prior id=mgr_id”,其指示了父节点中id字段(即第二字段)的字段值相同于子节点中mgr_id字段(即第一字段)的字段值。与等值条件相对应的是,不属于等值条件的其它连接条件则属于非等值条件;例如,层次查询请求中可以通过connect by子句定义连接条件是属于非等值条件的“prior id<mgr_id”,其指示了父节点中id字段的字段值小于子节点中mgr_id字段的字段值。
步骤203中可以基于连接条件的类型的不同,采用不同的方式将目标数据库表中的多条业务数据划分为与N个工作线程相对应的N个数据分组。具体地,请参考图3,步骤203中具体可以包括如下步骤2031至步骤2035。
步骤2031,确定所述连接条件是否为等值条件。
如果连接条件是等值条件,则执行步骤2033,否则执行步骤2035。
步骤2033,根据所述多条业务数据中第一字段的字段值,将所述多条业务数据划分为与所述N个工作线程相对应的N个数据分组。
主线程可以首先确定业务数据中第一字段下的字段值的散列值,然后利用N个工作线程的总量N对散列值进行第一取模运算,接着根据第一取模运算的结果将多条业务数据划分为与N个工作线程相对应的N个数据分组。示例性的,对于单个业务数据而言,主线程可以首先确定该业务数据中第一字段下的字段值的散列值,然后利用N个工作线程的总量N对该散列值进行取模运算以获得数值k1,接着将该业务数据划分到N个工作线程中的第k1+1个工作线程所对应的数据分组。其中,确定业务数据中第一字段下的字段值的散列值时,具体使用的预定算法通常需要满足特定条件,例如满足通过该预定算法处理第一字段的字段值(数值或者字符串)以得到的散列值为整数。由此不难理解,当业务数据中第一字段的字段值是整数时,单个业务数据中第一字段的字段值的散列值可以是该字段值自身;或者,可以无需确定业务数据中第一字段的字段值的散列值,而是直接利用N个工作线程的总量N对第一字段的字段值进行取模运算以获得数值k1,并将该业务数据划分到N个工作线程中的第k1+1个工作线程所对应的数据分组。
下面将具体以业务数据中对应在第一字段下的字段值是整数,通过预定算法f(x)获得该字段值的散列值是字段值自身为例,示例性描述本说明书实施例中提供的技术方案。
N个工作线程包括依次排列的worker1-worker5共5个工作线程。对于通过前述表1示例的目标数据库表t,当层次查询请求中的起始查询条件是“id=0”,并且连接条件是“prior id=mgr_id”时,对业务数据B-业务数据I的分组情况如下表2所示。
工作线程 | 数据分组 |
worker1 | B、C、D |
worker2 | E、F、G |
worker3 | H、I |
worker4 | Null |
worker5 | A |
表2
请参考前述的表1和表2,通过预定算法F(x)确定业务数据B、C、D中在mgr_id字段下的字段值0的散列值是0,通过N个工作线程的总量5对散列值0取模而获得的数值k1是0,可以将业务数据B、C、D划分到与第1个工作线程worker1相对应的数据分组。类似的,可以将业务数据A划分到与第5个工作线程worker5对应的数据分组,将业务数据E、F、G划分到与第2个工作线程worker2相对应的数据分组,将业务数据H、I划分到与第3个工作线程worker3相对应的数据分组。对于worker4,业务数据A-I并未被划分到与其对应的数据分组中,由此在表2中将其对应的数据分组中的业务数据记为Null。
步骤2035,根据所述N个工作线程的总量N将所述多条业务数据划分为与所述N个工作线程相对应的N个数据分组。
对于目标数据库表中包括的M个业务数据,可以基于工作线程的总量N,尽可能的M个业务数据平均划分到N个工作线程对应的N个数据分组中。例如,N能整除M,单个分组中业务数据的数量可以为M/N;N不能整除M,单个分组中业务数据的数量可以为对M/N进行向上取整或向下取整。
回到图2,在步骤205,在大于1的第i个查询轮次中,选择当前树形结构中的叶子节点作为父节点;根据所述连接条件,从所述N个工作线程中确定与所述父节点相对应的目标工作线程,使所述目标工作线程根据所述父节点和所述连接条件,从其对应的数据分组中查询第二数据;将所述第二数据作为所述父节点的子节点。
在第2个查询轮次中,由于当前树形结构中仅包含根节点,因此该根节点同时也是当前树形结构的叶子节点。在大于2的查询轮次中,由主线程从当前树形结构中选择的叶子节点,可以是当前树形结构中的未被选择过的任意叶子节点。
对于如何根据连接条件,从N个工作线程中确定与父节点相对应的目标工作线程,同样依赖于连接条件的类型。而且需要特别说明的是,当连接条件的类型是等值条件时,从N个工作线程中确定与父节点相对应的目标工作线程的方式,需要与前述将目标数据库表中的多条数据划分为与N个工作线程相对应的数据分组类似,确保目标工作线程所对应的数据分组中,完整的包含了可能作为父节点的子节点的全部业务数据。
在一个较为具体的示例中,当连接条件是等值条件时,与前述将目标数据库表中的多条数据划分为与N个工作线程相对应的数据分组类似,可以根据父节点中第二字段下的字段值,从N个工作线程中确定与父节点相对应的目标工作线程。在一个更为具体的示例中,可以首先确定父节点中第二字段的字段值的散列值,利用N对该散列值进行第二取模运算,根据第二取模运算的结果从N个工作线程中确定与父节点相对应的目标工作线程。
下面继续以被处理的层次查询请求对应层次查询语句select*from t startwith id=0connect by prior id=mgr_id为例。其中将目标数据库表t中的多条业务数据划分为与N个数据分组的情况请继续参考前述表2。
在第2个查询轮次中,当前树形结构中的根节点A(即业务数据A)被作为父节点,业务数据A中id字段的字段值0,通过预定算法F(x)确定业务数据A中id字段的字段值0的散列值是0,通过N个工作线程的总量5对散列值0取模而获得的数值k1是0,主线程可以将第1个工作线程worker1确定为业务数据A对应的目标工作线程,并将业务数据A传递给worker1。接着,worker1可以基于连接条件“prior id=mgr_id”,从其对应的数据分组中查询可能作为业务数据A的子节点的业务数据B、C、D,然后将业务数据B、C、D返回到主线程。之后,主线程可以在当前树形结构中,将来自worker1的业务数据B、C、D作为业务数据A的子节点,完成对当前树形结构的更新。
在第3个查询轮次中,当前树形结构中的叶子节点包括业务数据B、C、D,主线程可以从业务数据B、C、D中随机选择业务数据作为父节点,例如选择业务数据B作为父节点。通过与第2个查询轮次相似的过程,主线程可以确定业务数据B对应的目标工作线程是worker2,worker2可以从其对应的数据分组中查询到可能作为业务数据B的子节点的业务数据E、F、G,进而由主线程在当前树形结构中将worker2查询的业务数据E、F、G作为业务数据B的子节点,完成对当前树形结构的更新。
对于大于3的其它查询轮次,当前树形结构中可能存在位于多个不同的层的叶子节点。请结合图1,通过第3个查询轮次完成将业务数据E、F、G作为业务数据B的叶子节点后,在第4个查询轮次中,当前树形结构中的叶子节点可以包括位于第2层的业务数据C和业务数据D,还包括位于第3层的业务数据E、F、G。对于大于3的其它查询轮次,可以按照深度优先搜索的规则从树形结构的最低层中选择一个叶子节点作为父节点,或者从各个层中随机选择一个叶子节点作为父节点。
当连接条件是等值条件时,目标工作线程具体可以采用merge join、nested loopjoin和hash join等多种方式中的任意一种,实现根据父节点和连接条件从其对应的数据分组中查询第二数据。通常hash join是最优的方式,单个工作线程可以在第一次从其对应的数据分组中查询第二数据时,针对其对应的数据分组中的业务数据构建哈希表,之后每次从其对应的数据分组中查询第二数据时,仅需要将相应父节点的哈希值与哈希表中的哈希值进行匹配,即可获取到可能作为相应父节点的子节点的第二数据。
在一个较为具体的示例中,当连接条件是非等值条件时,由于多条业务数据可能被随机的划分到N个工作线程对应的N个数据分组中,因此可以由主线程将N个工作线程全部确定为父节点对应的目标工作线程,使得N个工作线程从其各自对应的数据分组中查询可能作为父节点的子节点的全部第二数据,进而由主线程在当前树形结构中,将N个工作线程共同查询到的将作为父节点的子节点的全部第二数据,均作为父节点的子节点。
在一些实施例中,在单个查询轮次中,还可以确定父节点和根节点对应在树形结构中的路径。当目标工作线程查询到可能作为父节点的子节点的第二数据后,由主线程确定该路径中是否已经包含第二数据,在路径中不包含第二数据的情况下才执行将目标工作线程查询的第二数据作为父节点的子节点。如此,避免更新的树形结构中出现环状结构。
通过如图2所示实施例中提供的层次查询方法,处理层次查询请求时,在单个查询轮次中可以通过单个工作线程查询其对应的数据分组中的少量业务数据,或者通过N个工作线程并行查询其各自对应的数据分组中的少量业务数据,快速查询到作为树形结构中某个已确定的节点的子节点的全部业务数据,从而降低处理层次查询请求的时间,提高层次查询请求的处理效率。
为了实现降低处理层次查询请求的时间,提高层次查询请求的处理效率,本说明书实施例中提供了另一种层次查询方法。其中该方法用于处理请求查询目标数据库表的层次查询请求,该层次查询请求包括起始查询条件和连接条件。如图4所示,本说明书实施例中提供的另一种层次查询方法至少可以包括:步骤401,在第1个查询轮次中,根据所述起始查询条件从所述目标数据库表中查询第三数据,并将所述第三数据作为树形结构的根节点;步骤403,根据所述连接条件,将所述目标数据库表中的多条业务数据划分为与N个工作线程相对应的N个数据分组,其中N是大于1的整数;步骤405,在大于1的第i个查询轮次中,通过所述N个工作线程中的各个当前工作线程,获取与所述当前工作线程相对应的若干第四数据,所述第四数据属于在第i-1个查询轮次中查询到的第三数据;所述当前工作线程根据所述连接条件,从所述当前工作线程对应的数据分组中查询将作为所述第四数据的子节点的第三数据。
如图4所示的方法中,除明确表明需要由N个工作线程中的一个或多个执行的处理外,其它处理均可以由N个工作线程以外的一个或多个其它线程执行,其中下文中将主要以主线程执行其它处理为例,详细描述图4所示方法中的各个步骤进行详细描述。
步骤401和步骤403中执行的处理,相同于如图2所示实施例中步骤201和步骤203中执行的处理,因此步骤401和步骤403执行的处理请参见前述步骤201和步骤203的相关描述即可。下面重点描述不同于如图2所示实施例的步骤405。
在步骤405中,在大于1的第i个查询轮次中,通过所述N个工作线程中的各个当前工作线程,获取与所述当前工作线程相对应的若干第四数据,所述第四数据属于在第i-1个查询轮次中查询到的第三数据;所述当前工作线程根据所述连接条件,从所述当前工作线程对应的数据分组中查询将作为所述第四数据的子节点的第三数据。
在大于1的单个查询轮次中,可以通过N个工作线程中的各个工作线程相协作,查询到当前树形结构中位于同一层的全部叶子节点各自的子节点。其中查询轮次不同,N个工作线程各自获取与其对应的若干第四数据的方式有所不同。
在第2个查询轮次中,可以由主线程从N个工作线程中,确定与作为根节点的第三数据相对应的目标工作线程,并将作为根节点的第三数据传递给目标工作线程。换而言之,在第2个查询轮次中,N个工作线程中的各个当前工作线程可能从主线程接收到与其对应的第四数据,该第四数据是第1个查询轮次中查询的并且被作为根节点的第三数据。
在一个较为具体的示例中,当连接条件是等值条件时,与前述将目标数据库表中的多条数据划分为与N个工作线程相对应的数据分组类似,主线程可以根据作为根节点的第三数据中第二字段的字段值,从N个工作线程中确定与作为根节点的第三数据相对应的目标工作线程。在一个更为具体的示例中,主线程可以首先确定作为根节点的第三数据中第二字段的字段值的散列值,利用N对该散列值进行取模运算,根据取模运算的结果从N个工作线程中确定与作为根节点的第三数据相对应的目标工作线程。
继续以被处理的层次查询请求对应层次查询语句select*from t start with id=0connect by prior id=mgr_id为例。其中将目标数据库表t中的多条业务数据划分为与N个数据分组的情况请继续参考前述表2。在第2个查询轮次中,作为根节点的业务数据A中id字段(即第二字段)的字段值0,通过预定算法F(x)确定业务数据A中id字段的字段值0的散列值是0,通过N个工作线程的总量5对散列值0取模而获得的数值k1是0,主线程可以将第1个工作线程worker1确定为业务数据A对应的目标工作线程,并将业务数据A传递给worker1。如此,在第2个查询轮次中,N个工作线程中的worker1获取的第四数据可以包括来自主线程的业务数据A,而N个工作线程中除worker1以外的worker2、worker3、worker4、worker5则无法获取到与其相对应的第四数据。于是,在第2个查询轮次中,worker1从其对应的数据分组中,查询到将作为业务数据A的子节点的第三数据具体包括业务数据B、业务数据C和业务数据D。
在一个较为具体的示例中,当连接条件是非等值条件时,多条业务数据可能被随机的划分到N个工作线程对应的N个数据分组中,因此可以由主线程将N个工作线程全部确定为作为根节点的第三数据所对应的目标工作线程。换而言之,在2个查询轮次中,N个工作线程中的每个工作线程各自获取的并且与其对应的第四数据,均是来自于主线程的并且已经被作为根节点的第三数据。
在大于2的查询轮次中,单个工作线程可以从N个工作线程中的其它工作线程接收到与其相对应的若干第四数据。具体地,在大于1的第i个查询轮次中,单个工作线程在查询到将作为第四数据的子节点的第三数据后,还可以确定该第三数据对应的目标工作线程,然后将该第三数据传递给目标工作线程;其中该第三数据将会属于目标工作线程在第i+1个查询轮次中获取的第四数据。其中,单个工作线程确定将作为第四数据的子节点的第三数据所对应的目标工作线程的方式,相同或者相似于前述由主线程从N个工作线程中确定与作为根节点的第三数据相对应的目标工作线程的方式。
举例来说,请参考图5,在第2个查询轮次中,对于来自主线程的业务数据A,worker1确定出将作为业务数据A的子节点的第三数据包括业务数据B、业务数据C和业务数据D。接着,worker1确定出业务数据B对应的目标工作线程是worker2、业务数据C对应的目标工作线程是worker3、业务数据D对应的目标工作线程是worker4;于是worker1可以将业务数据B发送至worker2,将业务数据C发送至worker3,将业务数据D发送至worker4。与之相应的,在第3个查询轮次中,worker2获取的第四数据包括来自worker1的业务数据B,从其对应的数据分组中查询到将作为业务数据B的子节点的第三数据包括业务数据E、业务数据F和业务数据G;worker3获取的第四数据包括来自worker1的业务数据C,从其对应的数据分组中查询到将作为业务数据C的子节点的第三数据包括业务数据H和业务数据I;worker4获取的第四数据包括来自worker1的业务数据D,从其对应的数据分组中将无法查询到将作为业务数据D的子节点的第三数据。
在一种可能的实施方式中,在大于1的第i个查询轮次中,单个工作线程还可以获取根节点和其对应的第四数据对应在当前树形结构中的路径,该路径例如来自向该工作线程发送第四数据的其它工作线程。与之相应的,该工作线程具体可以根据连接条件,从该工作线程对应的数据分组中查询可能作为该第四数据的子节点的候选数据,在该路径中不包括该候选数据的情况下,说明根节点和该候选数据对应在将形成的树形结构中的路径不会构成环状结构,此时才可将该候选数据确定为将作为第四数据的子节点的第三数据。
在一种可能的实施方式中,在大于1的第i个查询轮次中,主线程还可以将各个工作线程查询到的第三数据,在当前树形结构中作为相应第四数据的子节点,从而完成对当前树形结构的更新。例如,在第2个查询轮次中,worker2可以向主线程返回将作为业务数据A的子节点的业务数据B、C、D,主线程可以在当前树形结构中将业务数据B、C、D作为业务数据A的子节点;在第三个查询轮次中,worker3可以向主线程返回将作为业务数据B的子节点的业务数据E、F、G,worker4可以向主线程给返回将作为业务数据C的子节点的业务数据H、I;主线程可以在当前树形结构中将业务数据E、F、G作为业务书B的子节点,将业务数据H、I作为业务数据C的子节点。
在一种可能的实施方式中,单个工作线程在大于1的第i个查询轮次中,完成从其对应的数据分组中查询到将作为第四数据的子节点的第三数据的情况下,或者无法从其对应的数据分组中查询到将作为第四数据的子节点的第三数据的情况下,该工作线程还可以向协调线程发送表征其完成第i个查询轮次的第i-1个结束信息。与之相应的,协调线程可以在确定其接收到来自N个工作线程的第i-1个结束信息时,向N个工作线程分别发送指示其进行第i+1个查询轮次的启动信息。其中需要说明的是,协调线程例如可以为主线程;当工作线程在第i+1个查询轮次中未获取到与其对应的第四数据时,其仍然可能接收到来自协调线程的启动信息,此时该工作线程可以向协调线程直接返回表征其已经完成第i+1个查询轮次的第i个结束信息。其中,单个工作线程向主线程发送的第i-1个结束信息,可以和该工作线程在i个查询轮次中向主线程返回的将作为第四数据的子节点的第三数据,一并发送到主线程或者分别发送到主线程。
通过如图4所示实施例中提供的层次查询方法,处理层次查询请求时,在单个查询轮次中可以通过N个工作线程中的一个或多个工作线程,各自查询其对应的数据分组中的少量业务数据,实现快速查询到位于树形结构中的相同的层的全部叶子节点各自的子节点,从而降低处理层次查询请求的时间,提高层次查询请求的处理效率。
与前述方法实施例基于相同的构思,本说明书实施例中提供了一种层次查询装置,用于处理请求查询目标数据库表的层次查询请求,层次查询请求包括起始查询条件和连接条件。如图6所示,该装置包括:第一查询单元601,配置为在第1个查询轮次中,根据所述起始查询条件从所述目标数据库表中查询第一数据,并将所述第一数据作为树形结构的根节点;分组管理单元603,配置为根据所述连接条件,将所述目标数据库表中的多条业务数据划分为与N个工作线程相对应的N个数据分组,其中N是大于1的整数;第二查询单元605,配置为在大于1的第i个查询轮次中,选择当前树形结构中的叶子节点作为父节点;根据所述父节点和所述连接条件,从所述N个工作线程中确定与所述父节点相对应的目标工作线程,使所述目标工作线程根据所述连接条件,从其对应的数据分组中查询第二数据;将所述第二数据作为所述父节点的子节点。
与前述方法实施例基于相同的构思,本说明书实施例中提供了另一种层次查询装置,用于处理请求查询目标数据库表的层次查询请求,层次查询请求包括起始查询条件和连接条件。如图7所示,该装置包括:第三查询单元701,配置为在第1个查询轮次中,根据所述起始查询条件从所述目标数据库表中查询第三数据,并将所述第三数据作为树形结构的根节点;分组管理单元703,配置为根据所述连接条件,将所述目标数据库表中的多条业务数据划分为与N个工作线程相对应的N个数据分组,其中N是大于1的整数;第四查询单元705,配置为在大于1的第i个查询轮次中,通过所述N个工作线程中的各个当前工作线程,获取与所述当前工作线程相对应的若干第四数据,所述第四数据属于在第i-1个查询轮次中查询到的第三数据;所述当前工作线程根据所述第四数据和所述连接条件,从所述当前工作线程对应的数据分组中查询将作为所述第四数据的子节点的第三数据。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本说明书所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能所对应的计算机程序存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令/代码进行传输,以便这些功能所对应的计算机程序被计算机执行时,通过计算机实现本说明书任意一个实施例中所述的层次查询方法。
本说明书实施例中还提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序/指令在计算设备中执行时,计算设备执行本说明书任意一个实施例中提供的层次查询方法。
本说明书实施例中还提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现本说明书任意一个实施例中提供的层次查询方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例中相同、相似的部分互相参见即可,每个实施例中重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
Claims (12)
1.一种层次查询方法,所述方法用于处理请求查询目标数据库表的层次查询请求,所述层次查询请求包括起始查询条件和连接条件,所述连接条件包括等值条件或非等值条件,所述目标数据库表中包括多条业务数据,所述方法包括:
在第1个查询轮次中,根据所述起始查询条件从所述目标数据库表中查询第一数据,并将所述第一数据作为树形结构的根节点;
确定所述连接条件是否为等值条件,所述等值条件用于指示子节点中第一字段的字段值相同于父节点中第二字段的字段值;当所述连接条件为等值条件时,根据所述多条业务数据中第一字段下的字段值,将所述多条业务数据划分为与N个工作线程相对应的N个数据分组,其中N是大于1的整数;
在大于1的第i个查询轮次中,选择当前树形结构中的叶子节点作为父节点;当所述连接条件为等值条件时,根据所述父节点中第二字段下的字段值,从所述N个工作线程中确定与所述父节点相对应的目标工作线程,使所述目标工作线程根据所述父节点和所述连接条件,从其对应的数据分组中查询第二数据;将所述第二数据作为所述父节点的子节点。
2.根据权利要求1所述的方法,其中,
所述根据所述多条业务数据中第一字段下的字段值,将所述多条业务数据划分为与N个工作线程相对应的N个数据分组,具体包括:确定所述多条业务数据中第一字段的字段值的散列值,利用N对各个所述散列值进行第一取模运算,根据第一取模运算的结果将所述多条业务数据划分为与所述N个工作线程相对应的N个数据分组;
所述根据所述父节点中第二字段下的字段值,从所述N个工作线程中确定与所述父节点相对应的目标工作线程,具体包括:确定所述父节点中第二字段的字段值的散列值,利用N对该散列值进行第二取模运算,根据第二取模运算的结果从所述N个工作线程中确定与所述父节点相对应的目标工作线程。
3.根据权利要求1或2中任一项所述的方法,其中,还包括:确定所述根节点和所述父节点对应在当前树形结构中的路径;
所述将所述第二数据作为所述父节点的子节点,具体包括:在所述路径中不包括所述第二数据的情况下,在当前树形结构中将所述第二数据作为所述父节点的子节点。
4.一种层次查询方法,所述方法用于处理请求查询目标数据库表的层次查询请求,所述层次查询请求包括起始查询条件和连接条件,所述连接条件包括等值条件或非等值条件,所述目标数据库表中包括多条业务数据,所述方法包括:
在第1个查询轮次中,根据所述起始查询条件从所述目标数据库表中查询第三数据,并将所述第三数据作为树形结构的根节点;
确定所述连接条件是否为等值条件,所述等值条件用于指示子节点中第一字段的字段值相同于父节点中第二字段的字段值;当所述连接条件为等值条件时,根据所述多条业务数据中第一字段下的字段值,将所述多条业务数据划分为与N个工作线程相对应的N个数据分组,其中N是大于1的整数;
在大于1的第i个查询轮次中,通过所述N个工作线程中的各个当前工作线程,获取与所述当前工作线程相对应的若干第四数据,所述第四数据属于在第i-1个查询轮次中查询到的第三数据;所述当前工作线程根据所述连接条件,从所述当前工作线程对应的数据分组中查询将要作为所述第四数据的子节点的第三数据;
所述当前工作线程根据将要作为子节点的第三数据中第二字段的字段值,从所述N个工作线程中确定将要作为子节点的第三数据所对应的目标工作线程,并向所述目标工作线程提供将要作为子节点的第三数据,其中在第i+1个查询轮次中,将要作为子节点的第三数据属于与所述目标工作线程相对应的第四数据。
5.根据权利要求4所述的方法,其中,
所述根据所述多条业务数据中第一字段下的字段值,将所述多条业务数据划分为与N个工作线程相对应的N个数据分组,具体包括:确定所述多条业务数据中第一字段的字段值的散列值,利用N对各个所述散列值进行第一取模运算,根据第一取模运算的结果将所述多条业务数据划分为与所述N个工作线程相对应的N个数据分组;
所述当前工作线程根据将要作为子节点的第三数据中第二字段的字段值,从所述N个工作线程中确定将要作为子节点的第三数据所对应的目标工作线程,具体包括:所述当前工作线程确定将要作为子节点的第三数据中第二字段的字段值的散列值,利用N对该散列值进行第二取模运算,根据第二取模运算的结果从所述N个工作线程中确定将要作为子节点的第三数据所对应的目标工作线程。
6.根据权利要求4或5中任一项所述的方法,其中,还包括:所述当前工作线程获取所述根节点和所述第四数据对应在所述树形结构中的路径;
所述当前工作线程根据所述连接条件,从所述当前工作线程对应的数据分组中查询将要作为所述第四数据的子节点的第三数据,包括:所述当前工作线程根据所述连接条件,从所述当前工作线程对应的数据分组中查询候选数据;在所述路径中不包括所述候选数据的情况下,将所述候选数据确定为将要作为所述第四数据的子节点的第三数据。
7.根据权利要求4或5中任一项所述的方法,还包括:
所述当前工作线程向协调线程发送表征其完成第i个查询轮次的第i-1个结束信息;
所述协调线程在确定其接收到来自所述N个工作线程的第i-1个结束信息时,向所述N个工作线程分别发送指示其进行第i+1个查询轮次的启动信息。
8.根据权利要求4或5中任一项所述的方法,还包括:在当前树形结构中把将要作为子节点的第三数据作为所述第四数据的子节点。
9.一种层次查询装置,所述装置用于处理请求查询目标数据库表的层次查询请求,所述层次查询请求包括起始查询条件和连接条件,所述连接条件包括等值条件或非等值条件,所述目标数据库表中包括多条业务数据,所述装置包括:
第一查询单元,配置为在第1个查询轮次中,根据所述起始查询条件从所述目标数据库表中查询第一数据,并将所述第一数据作为树形结构的根节点;
分组管理单元,配置为确定所述连接条件是否为等值条件,所述等值条件用于指示子节点中第一字段的字段值相同于父节点中第二字段的字段值;当所述连接条件为等值条件时,根据所述多条业务数据中第一字段下的字段值,将所述多条业务数据划分为与N个工作线程相对应的N个数据分组,其中N是大于1的整数;
第二查询单元,配置为在大于1的第i个查询轮次中,选择当前树形结构中的叶子节点作为父节点;当所述连接条件为等值条件时,根据所述父节点中第二字段下的字段值,从所述N个工作线程中确定与所述父节点相对应的目标工作线程,使所述目标工作线程根据所述父节点和所述连接条件,从其对应的数据分组中查询第二数据;将所述第二数据作为所述父节点的子节点。
10.一种层次查询装置,所述装置用于处理请求查询目标数据库表的层次查询请求,所述层次查询请求包括起始查询条件和连接条件,所述连接条件包括等值条件或非等值条件,所述目标数据库表中包括多条业务数据,所述装置包括:
第三查询单元,配置为在第1个查询轮次中,根据所述起始查询条件从所述目标数据库表中查询第三数据,并将所述第三数据作为树形结构的根节点;
分组管理单元,配置为确定所述连接条件是否为等值条件,所述等值条件用于指示子节点中第一字段的字段值相同于父节点中第二字段的字段值;当所述连接条件为等值条件时,根据所述多条业务数据中第一字段下的字段值,将所述多条业务数据划分为与N个工作线程相对应的N个数据分组,其中N是大于1的整数;
第四查询单元,配置为在大于1的第i个查询轮次中,通过所述N个工作线程中的各个当前工作线程,获取与所述当前工作线程相对应的若干第四数据,所述第四数据属于在第i-1个查询轮次中查询到的第三数据;所述当前工作线程根据所述第四数据和所述连接条件,从所述当前工作线程对应的数据分组中查询将要作为所述第四数据的子节点的第三数据;所述当前工作线程根据将要作为子节点的第三数据中第二字段的字段值,从所述N个工作线程中确定将要作为子节点的第三数据所对应的目标工作线程,并向所述目标工作线程提供将要作为子节点的第三数据,其中在第i+1个查询轮次中,将要作为子节点的第三数据属于与所述目标工作线程相对应的第四数据。
11.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算设备中执行时,计算设备执行权利要求1-8中任一项所述的方法。
12.一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-8中任一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110834690.0A CN113282593B (zh) | 2021-07-23 | 2021-07-23 | 层次查询方法及装置 |
PCT/CN2022/104423 WO2023000994A1 (zh) | 2021-07-23 | 2022-07-07 | 层次查询方法及装置 |
US18/569,835 US20240281441A1 (en) | 2021-07-23 | 2022-07-07 | Hierarchical query methods and apparatuses |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110834690.0A CN113282593B (zh) | 2021-07-23 | 2021-07-23 | 层次查询方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113282593A CN113282593A (zh) | 2021-08-20 |
CN113282593B true CN113282593B (zh) | 2022-05-27 |
Family
ID=77287081
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110834690.0A Active CN113282593B (zh) | 2021-07-23 | 2021-07-23 | 层次查询方法及装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240281441A1 (zh) |
CN (1) | CN113282593B (zh) |
WO (1) | WO2023000994A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113282593B (zh) * | 2021-07-23 | 2022-05-27 | 蚂蚁金服(杭州)网络技术有限公司 | 层次查询方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107766472A (zh) * | 2017-10-09 | 2018-03-06 | 中国人民解放军国防科技大学 | 基于多核处理器的轮廓层次查询并行处理方法 |
CN108334570A (zh) * | 2018-01-19 | 2018-07-27 | 上海达梦数据库有限公司 | 层次查询的方法、装置、服务器及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8661023B1 (en) * | 2012-08-01 | 2014-02-25 | Google Inc. | Optimizing search query logic to speed retrieval |
US10678792B2 (en) * | 2015-10-23 | 2020-06-09 | Oracle International Corporation | Parallel execution of queries with a recursive clause |
CN108334571A (zh) * | 2018-01-19 | 2018-07-27 | 上海达梦数据库有限公司 | 层次查询的方法、装置、服务器及存储介质 |
CN111352950B (zh) * | 2020-03-04 | 2023-05-16 | 上海达梦数据库有限公司 | 数据库表等值连接的优化方法、装置、服务器及存储介质 |
CN113282593B (zh) * | 2021-07-23 | 2022-05-27 | 蚂蚁金服(杭州)网络技术有限公司 | 层次查询方法及装置 |
-
2021
- 2021-07-23 CN CN202110834690.0A patent/CN113282593B/zh active Active
-
2022
- 2022-07-07 WO PCT/CN2022/104423 patent/WO2023000994A1/zh active Application Filing
- 2022-07-07 US US18/569,835 patent/US20240281441A1/en active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107766472A (zh) * | 2017-10-09 | 2018-03-06 | 中国人民解放军国防科技大学 | 基于多核处理器的轮廓层次查询并行处理方法 |
CN108334570A (zh) * | 2018-01-19 | 2018-07-27 | 上海达梦数据库有限公司 | 层次查询的方法、装置、服务器及存储介质 |
Non-Patent Citations (1)
Title |
---|
基于nosql的PDM图文档分布式存储与并行查询;徐四鹏;《中国优秀硕士学位论文全文数据库 信息科技辑》;20150615(第6期);第27-44页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113282593A (zh) | 2021-08-20 |
US20240281441A1 (en) | 2024-08-22 |
WO2023000994A1 (zh) | 2023-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112559554B (zh) | 一种查询语句优化方法及装置 | |
CN111008521B (zh) | 生成宽表的方法、装置及计算机存储介质 | |
WO2011032077A2 (en) | System and method for data management in large data networks | |
Wang et al. | BENU: Distributed subgraph enumeration with backtracking-based framework | |
CN107102995B (zh) | 一种sql执行计划的确定方法及装置 | |
US10831737B2 (en) | Method and device for partitioning association table in distributed database | |
US8812492B2 (en) | Automatic and dynamic design of cache groups | |
WO2016070751A1 (zh) | 一种分布式缓存范围查询方法、装置及系统 | |
CN107251013A (zh) | 数据查询的方法、装置和数据库系统 | |
WO2020103345A1 (zh) | 会话流程处理方法、装置及计算机可读存储介质 | |
CN104756101A (zh) | 执行具有多个集合操作符的查询 | |
US8892566B2 (en) | Creating indexes for databases | |
WO2019228002A1 (zh) | 数据库访问方法及装置 | |
CN105653716A (zh) | 一种基于分类-属性-值的数据库构造方法和构造系统 | |
CN113282593B (zh) | 层次查询方法及装置 | |
CN112860692A (zh) | 一种数据库表结构转换方法、装置及其电子设备 | |
US9792337B2 (en) | In-database connectivity components analysis of data | |
CN105550332A (zh) | 一种基于双层索引结构的起源图查询方法 | |
CN104298598A (zh) | 分布式环境下rdfs本体的调试方法 | |
CN111241127A (zh) | 基于谓语组合的sparql查询优化方法、系统、存储介质及设备 | |
CN111814458A (zh) | 规则引擎系统优化方法、装置、计算机设备及存储介质 | |
CN111400301A (zh) | 一种数据查询方法、装置及设备 | |
US20200327128A1 (en) | Query execution apparatus, method, and system for processing data, query containing a composite primitive | |
CN107203550B (zh) | 一种数据处理方法和数据库服务器 | |
CN103748578A (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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220525 Address after: 100102 Room 201, 23 / F, 101, floor 4-33, building 13, District 4, Wangjing Dongyuan, 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. |
|
TR01 | Transfer of patent right |