CN111344693B - 动态和分布式计算系统中的聚合 - Google Patents
动态和分布式计算系统中的聚合 Download PDFInfo
- Publication number
- CN111344693B CN111344693B CN201880073677.4A CN201880073677A CN111344693B CN 111344693 B CN111344693 B CN 111344693B CN 201880073677 A CN201880073677 A CN 201880073677A CN 111344693 B CN111344693 B CN 111344693B
- Authority
- CN
- China
- Prior art keywords
- query
- endpoint
- node
- data source
- aggregation
- 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
- 230000002776 aggregation Effects 0.000 title claims abstract description 133
- 238000004220 aggregation Methods 0.000 title claims abstract description 133
- 238000012545 processing Methods 0.000 claims abstract description 69
- 238000000034 method Methods 0.000 claims abstract description 42
- 238000003860 storage Methods 0.000 claims description 29
- 230000004044 response Effects 0.000 claims description 25
- 239000000470 constituent Substances 0.000 claims description 11
- 230000000977 initiatory effect Effects 0.000 claims description 10
- 230000000644 propagated effect Effects 0.000 claims description 9
- 230000006870 function Effects 0.000 description 16
- 230000004931 aggregating effect Effects 0.000 description 14
- 238000007726 management method Methods 0.000 description 13
- 230000000670 limiting effect Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 9
- 238000004590 computer program Methods 0.000 description 7
- 230000009471 action Effects 0.000 description 6
- 230000009466 transformation Effects 0.000 description 6
- 238000003491 array Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 5
- 238000009826 distribution Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000000844 transformation Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000014509 gene expression Effects 0.000 description 4
- 230000008520 organization Effects 0.000 description 4
- 230000036961 partial effect Effects 0.000 description 4
- 230000002829 reductive effect Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000001364 causal effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000009172 bursting Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004043 responsiveness Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000013589 supplement Substances 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/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
- G06F16/244—Grouping and aggregation
-
- 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/23—Updating
-
- 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/2452—Query translation
-
- 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
-
- 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
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)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
计算系统中的聚合可以包括在计算系统的服务节点处接收指定聚合的第一查询,并且将第一查询转换成具有第一规范格式并且指定聚合的第二查询。该方法可以包括将第二查询转发到多个端点节点的第一子集,并且在第一子集的每个端点节点处,将第二查询转换成具有能够由连接到该端点节点的数据源执行的格式的第三查询。第三查询可以指定基于数据源的处理能力确定的将由数据源执行的聚合的级别。端点节点可以启动数据源对第三查询的执行,并且将包括来自(一个或多个)数据源的结果的聚合结果提供给服务节点。
Description
背景技术
本发明涉及在动态和分布式计算系统中执行聚合。
聚合是数据处理的重要方面。数据聚集或聚合是指其中以概要形式收集和表达信息的过程。例如,在数据库管理内,聚合可以指将多个行分组在一起以计算单个值或度量的函数。聚合的示例包括但不限于返回给定列中的最小值(MIN)、返回给定列中的数值之和(SUM)、返回给定列的平均值(AVERAGE)、返回给定列中的值的总数(COUNT)、以及返回表中的行数(COUNT(*))。
动态和分布式计算系统通常是指具有大量地理上分散和互连的设备或"节点"的计算环境。这些设备能够以高度动态的方式而无需预定拓扑来建立与一个或多个其他设备的连接。可以在分布式和动态计算系统内使用的拓扑的示例包括分层的、循环的、线性的和广义的。此外,给定的分布式和动态计算系统可以被细分成多个部分,其中每个部分使用示例拓扑之一来实现,使得计算系统在被看作整体时包括多个不同的拓扑。
在动态和分布式计算系统内,一些设备从计算系统断开连接,并且能够通过相同的网络重新连接。在其他情况下,设备从计算系统断开连接并且能够通过不同的网络重新加入。在其他情况下,设备网络连接可以是相对稳定的。这些现代计算系统内的很多设备包括数据,并且因此可以被查询或要求对数据执行一些计算。
这些计算系统的动态特性意味着可以不断地添加新设备。随着连接的设备的数量持续增加,在计算环境中发生的查询量以及在设备之间传递的数据量也持续增加,这会显著降低计算系统性能。
发明内容
本发明的一个或多个实施例针对在动态和分布式计算系统中聚合数据的计算机实现的方法。在一个方面,一种计算机实现的方法可以包括,响应于在计算系统的服务节点处接收指定聚合的第一查询,将第一查询转换成具有指定聚合的第一规范格式的第二查询。该方法可以包括将第二查询转发到计算系统的多个端点节点的第一子集。该方法可以包括在第一子集的每个端点节点处将第二查询转换成具有能够由连接到端点节点的数据源执行的格式并且指定要由数据源执行的聚合的级别的第三查询。聚合的级别可以由每个相应的端点节点基于耦合到该端点节点的数据源的处理能力来确定。每个端点节点能够启动与其耦合的数据源执行的第三查询的执行。该方法还可以包括从第一子集的每个端点节点向服务节点提供包括来自第三查询的执行的结果的聚合结果。
在此,术语"服务节点"是指最初接收查询的动态和分布式计算系统的数据处理系统。服务节点用作动态和分布式计算系统的查询入口点。此外,服务节点能够执行最终聚合,以向最初提供查询(例如,第一查询)的实体提供最终查询结果。在此,术语"端点节点"是指动态和分布式计算系统的数据处理系统,其接收规范格式的第一查询的版本。下面将更详细地描述服务节点和端点节点的其它方面。
根据本发明,计算系统能够适应于其中包括的多种不同数据源的能力。例如,除了是动态的和分布式的,耦合到端点节点的多种数据源可以是全异的或异构的。例如,端点节点能够生成可由耦合到每个相应端点的数据源执行的查询。此外,可以修改查询,使得每个数据源被分派执行基于该数据源的能力确定的级别的聚合任务。数据源能够执行第二查询中请求的全部聚合、第二查询中请求的一些聚合、或者不执行第二查询中请求的聚合。第三查询由端点节点(多个)根据数据源的能力来定制。以此方式,计算系统能够将聚合推出到数据源以减少在网络的节点之间传送的数据量。端点节点能够基于数据源的能力尽可能最大程度地将聚合推出到数据源。
在本发明的另一方面,该方法可以可选地包括在第一子集的每个端点节点处将第二查询转换成具有第二规范格式的第四查询。该方法可以包括从第一子集的每个端点节点向端点节点的第二子集的端点节点转发第四查询。规范格式之一的第一查询的版本可以被传播到计算系统的每个端点节点。
应当理解,虽然描述了端点节点的第一子集和第二子集,但是所描述的在端点节点之间发生的查询操作可以继续,例如,被进一步分布到多个端点节点的其他子集。
在本发明的另一方面中,第二多个端点节点中的每个端点节点尚未接收到规范格式之一的第一查询的版本。根据本发明,计算系统能够进一步转换查询以便分发到其它端点节点。导致第二和/或第四查询及其分发的进一步转换便于那些尚未接收到以规范形式指定的查询版本的端点节点的计算高效的处理。
在本发明的另一方面,每个端点节点可以被配置为聚合从向其提供结果的每个子端点节点接收的结果,并且将聚合的结果转发到父端点节点。
根据本发明,计算系统能够在整个计算系统的各个端点节点处聚合数据。通过在端点节点处聚合从查询数据源所确定的数据与从其他端点节点(例如,子端点节点)接收到的数据,可以显著减少需要向上传送到父端点节点的数据量。这减少了在计算系统的节点之间流动的数据流量,从而减少了带宽需求。数据流的减少还提高了计算系统的整体速度/性能。在端点节点处的聚合进一步减少了施加在计算系统的服务节点上的计算负担,并且避免了与使用中央处理节点类型的架构相关联的缺陷。
在本发明的另一方面中,该方法可以包括响应于在所述端点节点中的所选端点节点处确定耦合到所选端点节点的数据源不支持由第二查询指定的聚合,生成第三查询以指定比由第二查询指定的聚合的更低级别的聚合。该方法还可以包括在所选择的端点节点处对来自耦合到所选择的端点节点的数据源的结果执行操作,其中该操作是由第二查询指定的聚合的一部分。
根据本发明,端点节点能够确定与其耦合的数据源的数据处理能力。虽然服务节点不知道计算系统内的各种数据源,但是每个端点节点知道耦合到该端点节点的数据源的数据结构和数据处理能力。这样,端点节点能够将第二查询转换成第三查询,该第三查询与第三查询所针对的数据源的特定计算能力一致。此外,端点节点能够提供在第二查询中指定的、数据源不支持的任意功能。例如,在数据源不能执行第二查询中指定的聚合的方面的情况下,第三查询仅指定可由数据源执行的那些操作。在从数据源接收到结果时,端点节点能够执行完全执行由第二查询指定的聚合所必需的剩余操作。
在本发明的另一方面,将第二查询转换成第三查询可以包括将由第二查询指定的聚合分解成由第三查询指定的多个组成操作。
根据本发明,在生成可由耦合到端点节点的数据源执行的查询时,每个端点节点能够将聚合分解为多个组成操作。这些组成操作的子集可被包括在由数据源执行的第三查询中。聚合的未由数据源执行的其余组成操作中的任意操作可由生成第三查询的端点节点执行。这允许端点节点将由数据源支持的操作下推至数据源,并提供数据源的功能。通过提供从数据源缺失的功能,端点节点能够将传送到父端点节点的数据量保持为最小。例如,不是转发完整的结果,而是将聚合或部分聚合的结果从计算系统的子端点节点传播到父端点节点。
在本发明的另一方面,使用结构化查询语言(SQL)来指定第一规范格式。根据本发明的方案,可以以多种不同格式中的任意一种来指定由服务节点接收的第一查询。通过使用SQL来指定在端点节点之间的计算系统内传送的查询,每个端点节点能够在由服务节点执行的任何转换之后执行和/或处理分布式查询。
本发明的一个或多个实施例针对一种计算系统。例如,计算系统可以是动态和分布式计算系统。计算系统可以包括服务节点。计算系统还可以包括多个端点节点。服务节点能够发起操作,包括响应于接收到指定聚合的第一查询,将第一查询转换成具有指定聚合的第一规范格式的第二查询。服务节点还能够发起操作,包括将第二查询转发到端点节点的第一子集。第一子集的每个端点节点能够发起操作,包括将第二查询转换成具有可由连接到该端点节点的数据源执行的格式的第三查询。第三查询指定基于数据源的处理能力确定的要由数据源执行的聚合的级别。第一子集的每个端点节点还能够发起操作,包括发起由数据源执行的第三查询的执行。每个端点节点还能够发起操作,包括将包括来自数据源的结果的聚合结果提供给服务节点。
在本发明的另一方面,第一子集的每个端点节点被配置为发起操作,包括将第二查询转换成具有第二规范格式的第四查询。所选择的端点节点还可以被配置为发起操作,包括将第四查询转发到端点节点的第二子集的端点节点。规范格式之一的第一查询的版本可以被传送到计算系统的每个端点节点。
在本发明的另一方面中,第二多个端点节点中的每个端点节点尚未接收到规范格式之一的第一查询的版本。
在本发明的另一方面,每个端点节点被配置为聚合从向其提供结果的每个子端点节点接收的结果,并且将聚合的结果转发到父端点节点。
在本发明的另一方面中,所述多个端点节点中的选择的端点节点被配置为发起操作,该操作进一步包括响应于确定耦合到选择的端点节点的数据源不支持由所述第二查询指定的聚合,生成所述第三查询以指定比由第二查询指定的聚合的级别更低的聚合的级别。选择的端点节点还可以被配置为发起操作,包括对来自耦合到选择的端点节点的数据源的结果执行操作,其中该操作是由第二查询指定的聚合的一部分。
在本发明的另一方面,将第二查询转换成第三查询包括将第二查询的聚合分解成由第三查询指定的多个组成操作。
在本发明的另一方面,使用SQL指定第一规范格式。
本发明的一个或多个实施例涉及一种计算机程序产品。计算机程序产品可以包括具有程序指令的计算机可读存储介质。程序指令可由一个或多个处理器执行以使一个或多个处理器发起操作。该操作可以包括响应于在计算系统的服务节点处接收指定聚合的第一查询,将第一查询转换成具有第一规范格式并且指定聚合的第二查询。该操作可以包括将第二查询转发到计算系统的多个端点节点的第一子集。该操作可以包括在所述第一子集的每个端点节点处将所述第二查询转换成具有可由连接到端点节点的数据源执行的格式并且指定基于数据源的处理能力确定的将由数据源执行的聚合的级别的第三查询。每个端点节点可以启动与其耦合的数据源执行第三查询。该操作可以包括从第一子集的每个端点节点向服务节点提供包括来自第三查询的执行的结果的聚合结果。
在本发明的另一方面,程序指令使一个或多个处理器启动操作,该操作还包括在第一子集的每个端点节点处将第二查询转换成具有第二规范格式的第四查询。该操作可以包括从第一子集的每个端点节点向端点节点的第二子集的端点节点转发第四查询。将规范格式之一的第一查询的版本传送到计算系统的每个端点节点。
本发明的另一方面中,第二多个端点节点中的每个端点节点尚未接收到规范格式之一的第一查询的版本。
在本发明的另一方面,程序指令使一个或多个处理器发起操作,该操作还包括配置每个端点节点以聚合从向其提供结果的每个子端点节点接收的结果,并且将聚合的结果转发到父端点节点。
在本发明的另一方面,程序指令使一个或多个处理器发起操作,该操作还包括响应于在端点节点中的选择的端点节点处确定耦合到该端点节点的数据源不支持由第二查询指定的聚合,生成第三查询以指定比由第二查询指定的聚合更低级别的聚合。该操作可以包括在选择的端点节点处对来自耦合到选择的端点节点的数据源的结果执行操作,其中执行的操作是由第二查询指定的聚合的一部分。
在另一方面,将第二查询转换成第三查询可以包括将第二查询的聚合分解成由第三查询指定的多个组成操作。
本发明的一个或多个实施例针对在动态和分布式计算系统中聚合数据的计算机实现的方法。在计算系统的选定端点节点处,从计算系统的服务节点接收以第一规范格式指定的第一查询。第一查询指定聚合。该方法可以包括将第一查询转换成具有可由连接到选择的端点节点的数据源执行的格式并且指定基于数据源的处理能力确定的聚合的级别的第二查询。该方法可以包括由数据源发起第二查询的执行。该方法可以包括基于第一查询将从数据源接收的结果与从计算系统的至少一个其他端点节点接收的结果聚合。该方法可以包括将聚合的结果转发到服务节点。
在另一方面,该方法可以包括响应于在选择的端点节点处确定数据源不支持由第一查询指定的聚合,生成第二查询以指定比由第一查询指定的聚合的级别更低级别的聚合。该方法还可以包括在所选择的端点节点处对来自数据源的结果执行操作,其中执行的操作是由第一查询指定的聚合的一部分。
一个或多个实施例涉及动态和分布式计算系统的计算节点。计算节点可以包括被配置为存储程序指令的存储器。计算节点可以包括耦合到存储器的处理器。处理器响应于执行程序指令而被配置为发起操作。该操作可以包括从计算系统的服务节点接收以第一规范格式指定的第一查询,其中第一查询指定聚合。该操作可以包括将第一查询转换成具有可由连接到节点的数据源执行的格式的、并且指定基于数据源的处理能力确定的聚合的级别的第二查询。所述操作可以包括由数据源发起第二查询的执行。所述操作可以包括基于第一查询将从数据源接收的结果与从计算系统的至少一个其他节点接收的结果聚合。操作可以包括将聚合的结果转发到服务节点。
在本发明的另一方面,处理器被配置成发起操作,该操作还包括响应于确定数据源不支持由第一查询指定的聚合,生成第二查询以指定比由第一查询指定的聚合更低级别的聚合。该操作还可包括对来自数据源的结果执行操作,其中执行的操作是由第一查询指定的聚合的一部分。
提供本发明内容部分仅仅是为了介绍某些概念,而不是标识本发明的任何关键或必要特征。根据附图和以下详细描述,本发明的其他特征将显而易见。
附图简要说明
本发明的优选实施例通过附图中的例子来说明。然而,附图不应被解释为将本发明限制为仅示出的特定实现。在阅读以下详细描述并参考附图之后,多个方面和优点将变得显而易见。
图1示出了根据本发明的实施例的云计算环境。
图2示出了根据本发明实施例的抽象模型层。
图3示出了计算节点的示例。
图4示出了动态和分布式计算系统的示例。
图5示出了用于在动态和分布式计算系统中执行聚合的示例方法。
具体实施方式
虽然本公开以限定新颖特征的权利要求结束,但是相信通过结合附图考虑描述,将更好地理解本公开内描述的各种特征。出于说明的目的,提供了本文描述的过程、机器、制造及其任何变化。在本公开中描述的具体结构和功能细节不应被解释为限制性的,而仅作为权利要求的基础以及作为用于教导本领域技术人员以各种方式采用在实际上任何适当的详细结构中描述的特征的代表性基础。此外,本公开中使用的术语和短语不旨在是限制性的,而是提供对所描述的特征的可理解的描述。
本公开涉及在动态和分布式计算系统中执行聚合。计算系统能够使用多个独立数据源来以计算高效的方式执行聚合。计算系统内的数据源可以是异构的。换句话说,数据源可以被实现为多种不同类型中的任意一种。根据这里描述的发明方案,计算系统内的节点能够与其它节点协作以执行聚合,从而减少和/或消除非聚合数据在计算系统内的节点之间的传输。
在计算系统内,各种节点耦合到数据源。数据源通常具有一些数据处理能力。在一些情况下,例如,数据源包括全特征查询处理引擎。在其它情况下,数据源具有更有限的数据处理能力。例如,数据源中的某些数据源可能仅能够执行数据检索。然而,在其它情况下,节点可能根本没有任何数据处理能力。计算环境的节点能够转换查询,使得数据源执行与每个特定数据源所支持的一样多的聚合,以减少在计算系统内的节点之间传送的数据量。
在本发明的一个或多个实施例中,计算系统的节点能够执行包括分布式聚合的聚合。例如,计算系统的节点能够从(一个或多个)数据源接收聚合数据。节点能够将从数据源获得的结果与可以从计算系统内的一个或多个其他节点接收的部分聚合的结果组合。在本发明的特定实施例中,节点能够对组合结果(例如,来自连接的数据源的结果和来自其它节点的部分聚合结果)执行附加聚合。节点能够将聚合结果发送回计算系统的服务节点和/或另一节点(诸如不提供部分聚合结果的节点)。
在传统的分布式数据库中,数据通常从数据源提取并被传送到中央处理节点。然后,中央处理节点执行任意所需的处理,包括聚合。这种类型的结构具有几个缺点。从数据源向中央处理节点传送数据导致从一个节点到另一个节点的大量数据流遍历,并且消耗相当大的带宽。从不同数据源到中央处理节点的数据流也必须被协调,这增加了系统的复杂性。此外,中央处理节点必须具有足够的计算能力来处理工作负荷。这种体系结构有效地将分布式系统的处理能力(例如,所包括的各个节点和/或数据源的累积容量)降低到单个中央处理节点的处理能力,这是计算资源的低效使用。
其它传统的分布式数据库依赖于明确定义的结构,该结构使用节点之间数据的明确定义的划分。例如,可以根据预先确定的预定义列集合来分发数据。此外,每个节点通常被配置为与相同类型的数据源(例如,特定类型的关系数据库管理系统或"RDBMS",其在分布式数据库中是相同的)一起操作。这样,每个节点所使用的数据源是已知的,并且从一个节点到另一个节点是相同的。此外,传统的分布式数据库通常具有浅层级的节点,其中一个协调器直接连接到一个或多个数据节点。此外,由于设备不能以动态地建立与其他设备和/或节点的连接的自组织方式加入分布式数据库,因此这种体系结构不被认为是动态的。
参考以下附图更详细地描述本公开内描述的本发明的实施例的其它方面。为了说明的简单和清楚的目的,图中所示的元件不一定按比例绘制。例如,为了清楚起见,一些元件的尺寸可能相对于其他元件被放大。此外,在认为适当的情况下,在附图中重复参考数字以指示对应的、相似的或类似的特征。
首先应当理解,尽管本公开包括关于云计算的详细描述,但其中记载的技术方案的实现却不限于云计算环境,而是能够结合现在已知或以后开发的任何其它类型的计算环境而实现。
云计算是一种服务交付模式,用于对共享的可配置计算资源池进行方便、按需的网络访问。可配置计算资源是能够以最小的管理成本或与服务提供者进行最少的交互就能快速部署和释放的资源,例如可以是网络、网络带宽、服务器、处理、内存、存储、应用、虚拟机和服务。这种云模式可以包括至少五个特征、至少三个服务模型和至少四个部署模型。
特征如下:
按需自助式服务:云的消费者在无需与服务提供者进行人为交互的情况下能够单方面自动地按需部署诸如服务器时间和网络存储等的计算能力。
广泛的网络接入:计算能力可以通过标准机制在网络上获取,这种标准机制促进了通过不同种类的瘦客户机平台或厚客户机平台(例如移动电话、膝上型电脑、个人数字助理PDA)对云的使用。
资源池:提供者的计算资源被归入资源池并通过多租户(multi-tenant)模式服务于多重消费者,其中按需将不同的实体资源和虚拟资源动态地分配和再分配。一般情况下,消费者不能控制或甚至并不知晓所提供的资源的确切位置,但可以在较高抽象程度上指定位置(例如国家、州或数据中心),因此具有位置无关性。
迅速弹性:能够迅速、有弹性地(有时是自动地)部署计算能力,以实现快速扩展,并且能迅速释放来快速缩小。在消费者看来,用于部署的可用计算能力往往显得是无限的,并能在任意时候都能获取任意数量的计算能力。
可测量的服务:云系统通过利用适于服务类型(例如存储、处理、带宽和活跃用户帐号)的某种抽象程度的计量能力,自动地控制和优化资源效用。可以监测、控制和报告资源使用情况,为服务提供者和消费者双方提供透明度。
服务模型如下:
软件即服务(SaaS):向消费者提供的能力是使用提供者在云基础架构上运行的应用。可以通过诸如网络浏览器的瘦客户机接口(例如基于网络的电子邮件)从各种客户机设备访问应用。除了有限的特定于用户的应用配置设置外,消费者既不管理也不控制包括网络、服务器、操作系统、存储、乃至单个应用能力等的底层云基础架构。
平台即服务(PaaS):向消费者提供的能力是在云基础架构上部署消费者创建或获得的应用,这些应用利用提供者支持的程序设计语言和工具创建。消费者既不管理也不控制包括网络、服务器、操作系统或存储的底层云基础架构,但对其部署的应用具有控制权,对应用托管环境配置可能也具有控制权。
基础架构即服务(IaaS):向消费者提供的能力是消费者能够在其中部署并运行包括操作系统和应用的任意软件的处理、存储、网络和其他基础计算资源。消费者既不管理也不控制底层的云基础架构,但是对操作系统、存储和其部署的应用具有控制权,对选择的网络组件(例如主机防火墙)可能具有有限的控制权。
部署模型如下:
私有云:云基础架构单独为某个组织运行。云基础架构可以由该组织或第三方管理并且可以存在于该组织内部或外部。
共同体云:云基础架构被若干组织共享并支持有共同利害关系(例如任务使命、安全要求、政策和合规考虑)的特定共同体。共同体云可以由共同体内的多个组织或第三方管理并且可以存在于该共同体内部或外部。
公共云:云基础架构向公众或大型产业群提供并由出售云服务的组织拥有。
混合云:云基础架构由两个或更多部署模型的云(私有云、共同体云或公共云)组成,这些云依然是独特的实体,但是通过使数据和应用能够移植的标准化技术或私有技术(例如用于云之间的负载平衡的云突发流量分担技术)绑定在一起。
云计算环境是面向服务的,特点集中在无状态性、低耦合性、模块性和语意的互操作性。云计算的核心是包含互连节点网络的基础架构。
现在参考图1,描绘了说明性云计算环境50。如图所示,云计算环境50包括云消费者使用的本地计算设备(例如个人数字助理(PDA)或蜂窝电话54A、台式计算机54B、膝上型计算机54C和/或汽车计算机系统54N)可以与其通信的一个或多个云计算节点10。节点10可以彼此通信。它们可以被物理地或虚拟地分组(未示出)在一个或多个网络中,诸如如上文描述的私有云、共同体云、公共云、混合云、或其组合。这允许云计算环境50提供基础架构、平台和/或软件即服务,云消费者不需要维护本地计算设备上的资源。应当理解,图1中所示的计算设备54A-N的类型仅旨在说明,并且计算节点10和云计算环境50可以通过任意类型的网络和/或网络可寻址连接(例如,使用web浏览器)与任意类型的计算机化设备通信。
现在参考图2,示出了由云计算环境50(图1)提供的一组功能抽象层。应当预先理解,图2中所示的组件、层和功能仅旨在说明,并且本发明的实施例不限于此。如所描绘的,提供了以下层和相应的功能:
硬件和软件层60包括硬件和软件组件。硬件组件的示例包括:主机61;基于RISC(精简指令集计算机)架构的服务器62;服务器63;刀片服务器64;存储设备65;以及网络和网络组件66。在本发明的一些实施例中,软件组件包括网络应用服务器软件67和数据库软件68。
虚拟化层70提供抽象层,从该抽象层可以提供以下虚拟实体的示例:虚拟服务器71;虚拟存储72;虚拟网络73,包括虚拟专用网络;虚拟应用和操作系统74;以及虚拟客户机75。
在一个示例中,管理层80可以提供以下描述的功能。资源供应81提供用于在云计算环境内执行任务的计算资源和其它资源的动态获取。计量和定价82在云计算环境内对资源的使用进行成本跟踪,并为此提供帐单和发票。在一个示例中,该资源可以包括应用软件许可。安全功能为云消费者和任务提供身份验证,以及为数据和其他资源提供保护。用户门户83为消费者和系统管理员提供对云计算环境的访问。服务水平管理84提供云计算资源的分配和管理,以满足所需的服务水平。服务水平协议(SLA)计划和履行85为根据SLA预测的对云计算资源未来需求提供预先安排和供应。工作负载层90提供了可以利用云计算环境的功能的示例。可以从该层提供的工作负载和功能的示例包括:地图绘制和导航91;软件开发和生命周期管理92;虚拟教室的教学提供93;数据分析处理94;交易处理95;以及节点管理96。节点管理96可跨动态和分布式计算系统内的多个节点操作,以执行查询转换、查询传送、包括分布式聚合的聚合、以及如以下更详细描述的其他操作。
参考图3示出了计算节点300的一个例子。本发明的一个或多个实施例中,计算节点300是云计算节点。计算节点300仅仅是适合的云计算节点的一个示例,不应对本发明实施例的功能和使用范围带来任何限制。总之,计算节点300能够被用来实现和/或执行以上所述的任何功能。
计算节点300具有计算机系统/服务器312,其可与众多其它通用或专用计算系统环境或配置一起操作。众所周知,适于与计算机系统/服务器312一起操作的计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任意系统的分布式云计算技术环境,等等。
计算机系统/服务器312可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括执行特定的任务或者实现特定的抽象数据类型的例程、程序、目标程序、组件、逻辑、数据结构等。计算机系统/服务器312可以在通过通信网络链接的远程处理设备执行任务的分布式云计算环境中实施。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
如图3所示,计算节点300中的计算机系统/服务器312以通用计算设备的形式表现。计算机系统/服务器312的组件可以包括但不限于:一个或者多个处理器或者处理单元316,系统存储器(或“存储器”)328,连接不同系统组件(包括系统存储器328和处理单元316)的总线18。
总线318表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器312典型地包括多种计算机系统可读介质。这些介质可以是能够被计算机系统/服务器312访问的任意可获得的介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储器328可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)330和/或高速缓冲存储器332。计算机系统/服务器312可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。作为举例,存储系统334可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线318相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块342的程序/实用工具340,可以存储在存储器328中,这样的程序模块342包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块342通常执行本发明所描述的实施例中的功能和/或方法。例如,一个或多个程序模块可以包括节点管理96或其部分。程序/实用程序340可由处理单元(例如,处理器)316执行。程序//实用工具340和由计算节点300使用、生成和/或操作的任何数据项是当被计算节点300使用时赋予功能的功能数据结构。
计算机系统/服务器312也可以与一个或多个外部设备314(例如键盘、指向设备、显示器324等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器312交互的设备通信,和/或与使得该计算机系统/服务器312能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口322进行。并且,计算机系统/服务器312还可以通过网络适配器320与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器320通过总线318与计算机系统/服务器312的其它模块通信。应当明白,尽管图中未示出,其它硬件和/或软件模块可以与计算机系统/服务器312一起操作,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
虽然计算节点300用于示出云计算节点的示例,但是应当理解,使用与图3中所示的架构相同或相似的架构的计算机系统可以用于非云计算实现中以执行本文描述的各种操作。在这点上,本文描述的本发明的示例实施例不旨在限于云计算环境。
图4示出了动态和分布式计算系统400的示例。在图4的示例中,计算系统400包括多个节点402、404、406、408、410、412和414。在图4的示例中,仅示出了三个级别,并且以分层拓扑来描绘。例如,计算系统400包括包含节点402的第一层、包含节点404和406的第二层以及包含节点408、410、412和414的第三层。
应当理解,动态和分布式计算系统可以包括随着设备关机和动态地重连到节点而改变的数量的节点和/或数据源。此外,在实际的动态和分布式计算系统中可以包括多于三个级别。这样,动态和分布式计算系统可以包括比图4的示例中所示的更多的节点。此外,动态和分布式计算系统的拓扑可以与图4中所示的不同。计算系统400可以具有分层、循环、线性、或宽泛的拓扑、和/或前述拓扑的任何组合。因此,图4是为了说明而非限制的目的而提供的。
节点402-414中的每个可以被实现为执行合适的操作软件的数据处理系统。例如,可以使用与结合图3描述的架构相同或相似的架构来实现节点402-414中的每个。节点402-414中的每一个可以执行节点管理96软件或针对节点的特定功能而定制的节点管理96软件的变体。如图所示,节点402-414是互连的。本文中节点402被称为“服务节点”。本文中节点404、406、408、410、412和414被称为“端点节点”。为了讨论的目的,将查询发送到另一个节点的节点称为父节点。接收查询的节点称为子节点。
计算系统400能够实现查询处理引擎。查询处理引擎能够接受可能包含聚合的查询。通常,查询可以被分类为三种一般模式。例如,查询可以被实现为扫描或搜索数据以寻找单个关系、将数据加入到其他确定的关系、或者聚合可能来自单个关系或来自其他关系的加入的数据。如前所述,聚合的示例包括但不限于返回给定列中的最小值(MIN)、返回给定列中的数值之和(SUM)、返回给定列的平均值(AVERAGE)、返回给定列中的值的总数(COUNT)、以及返回表中的行数(COUNT(*))。
在图4的实例中,节点402-414能够以动态方式彼此建立连接。节点402-414中选择的节点能够与节点402-414中的某些节点断开连接,并重新连接到同一网络上的这些节点或其他节点。节点402-414中的其他节点能够与节点402-414中的某些节点断开连接,并能够通过不同的网络重新连接至这些节点或其他节点。节点402-414中的其他节点仍能够维持相对稳定的连接。此外,节点402-414可以在地理上分布在远距离上。
在本发明的一个或多个实施例中,计算系统400被实现为联合数据库。联合数据库是动态和分布式计算系统的一个示例。联合数据库促进了包括一组互连节点(例如,节点402-414)的“本地存储任意地方查询(store-locally-query-anywhere)”范式。每个节点能够在内部数据源和外部数据源之间进行查询,就好像数据源是一个逻辑数据库一样。在特定实施例中,端点节点404、406、408、410、412和414中的每一个可以被实现为联合关系数据库管理系统(Relational Database Management System,RDBMS)引擎。例如,端点节点404、406、408、410、412和414中的每一个能够在内部数据源和外部数据源之间进行查询,就好像数据源是一个逻辑数据库一样。
通常,在联合数据库内,每个端点节点耦合到或包括内部数据源。每个端点节点还可耦合到一个或多个外部数据源。外部数据源的示例包括一个或多个不同的RDBMS或其他数据源,诸如数据记录的平面文件。内部数据源的示例包括但不限于日志文件、网络连接和/或数据源元数据、以及传感器数据。作为说明性而非限制性的示例,与将这样的数据加载到单独的数据库(例如,外部数据源)内相反,所描述的各种内部数据可以被加载到端点节点的内部数据源(例如,嵌入式数据库)中。
联合数据库允许单个查询通过互连的RDBMS引擎访问数据库(例如,所有数据源)。该查询由联合数据库接收,并通过各个RDBMS引擎之间的连接传播。通常,联合数据库将查询传播到整个端点节点群,例如传播到每个端点节点。控制诸如查询所针对的数据库之类的数据源的RDBMS引擎(例如,端点节点404、406、408、410、412和414)能够将查询转换成与每个相应RDBMS引擎控制的数据库兼容的动作。
在本发明的一个或多个实施例中,服务节点402被配置为包括比端点节点404-414更大的处理能力。例如,服务节点402能够转换查询并检测包括在这些查询中的聚合或逻辑。在图4的实例中,端点节点404-414中的每个耦合到各自的数据源420、422、424、426、428和430。为了说明的目的,图4不区分内部和外部数据源。如所讨论的,一些数据源具有数据处理能力。例如,数据源420、422、426和428可被实现为数据库(例如,RDBMS)。其它数据源可能具有很少或没有数据处理能力。例如,数据源424和428可以被实现为记录的平面文件。在图4的示例中,端点节点404-414中的每个被示为耦合到单个数据源。在本发明的其它实施例中,节点404-414中的一个或多个或全部可以耦合到一个以上的数据源。
在图4的示例中,数据源420、422、426和428可以是异构的。例如,数据源420可以是第一类型的RDBMS(例如,如从第一开发者或提供者可获得的),而数据源422可以是不同于数据源420的第二类型的RDBMS(例如,如从第二开发者或提供者可获得的)。数据源426和428可以相同或不同。作为说明性而非限制性的示例,由数据源420、422、426和428中的每一个使用的特定语言和/或结构化查询语言(SQL)类型可以不同。此外,数据源420、422、426和428的能力可以不同。
在图4的示例中,服务节点402接收查询440。查询440(例如,第一查询)可以由经由网络连接耦合到服务节点402的另一个数据处理系统和/或在另一个数据处理系统中执行的应用发送。在本发明的一个或多个实施例中,查询440包括一个或多个聚合。图4的例子中仅示出了一个服务节点。在其它实施例中,计算机系统400可以包括多于一个服务节点。服务节点用作进入计算系统400的查询的入口点。服务节点是计算系统的第一个节点,用于接收从计算系统外部的源发送的查询。
服务节点402能够将查询440转换成查询442(例如第二查询)。查询442具有与查询440不同的格式。服务节点402能够向计算系统400内的一个或多个端点节点提供查询442。在图4的示例中,服务节点402将查询442分发到包括端点节点404和406的端点节点的第一子集。
端点节点404和406中的每一个能够将查询442转换成可由耦合到每个相应端点节点的特定数据源执行的格式。例如,端点节点404能够将查询442转换成查询444。查询444可由可以是特定RDBMS的数据源420执行。端点节点406能够将查询442转换成查询446。查询446可由数据源422执行,该数据源可以是与数据源420不同的RDBMS。如上所述,由于数据源420和422可以是不同类型的数据源,因此查询446可以不在数据源420上执行。类似地,查询444可以不在数据源422上执行。
在本发明的一个或多个实施例中,端点节点404和406中的每一个能够执行查询442到查询448的进一步转换。端点节点404和端点节点406向诸如端点节点408、410、412和414的端点节点的第二子集提供查询448。端点节点408、410、412和414中的每一个能够将查询448转换成适合于耦合到每个相应端点节点的特定数据源(在此称为端点节点的"本地数据源")的格式。
例如,端点节点408能够将查询448转换成查询450,其以可由数据源424执行的格式来指定。数据源424是端点节点408的本地数据源。在一个或多个实施例中,在数据源424和与数据源424相似或相同类型的其他数据源的情况下,端点节点408(或另一端点节点)能够生成在数据源424上执行的内部查询。在本发明的特定实施例中,端点节点408能够调用与主处理内联的扫描以从数据源424访问数据。
接着,端点节点410能够将查询448转换成查询452,其以可由数据源426执行的格式指定。数据源426是端点节点410的本地数据源。端点节点412能够将查询448转换成查询454,其以可由数据源428执行的格式指定。数据源428是端点节点412的本地数据源。端点节点414能够将查询448转换成查询456,该查询是以可由数据源430执行的格式来指定的。数据源430是端点节点414的本地数据源。
在本发明的一个或多个实施例中,端点节点404-414中的每一个在将查询转换成可由本地数据源执行的格式时,能够基于本地数据源的能力来修改查询。例如,每个端点节点可以用耦合到其的本地数据源的能力(例如,所支持的数据处理操作)的列表来编程。在本发明的一个或多个实施例中,每个端点节点分析所接收的查询以识别包括在查询中的由本地数据源支持的特定操作和不被本地数据源支持的特定操作。端点节点能够将本地数据源不支持的特定操作分解成本地数据源支持的多个组成操作。针对本地数据源的查询可以指定本地数据源所支持的一个或多个或所有组成操作。这样,端点节点能够尽可能地将包括聚合的操作"推出"到数据源。
作为说明性和非限制性示例,诸如AVERAGE的聚合包括诸如SUM和除以求和元素的COUNT的操作。在这个例子中,组成操作是SUM和COUNT。在该特定示例中,组成操作也是聚合。例如,参考端点节点404,查询442可以指定要执行的AVERAGE类型的聚合。端点节点404能够确定数据源420是否支持AVERAGE类型的聚合。如果是,尽管以可由数据源420执行的格式和/或语法来指定,端点节点404能够将AVERAGE聚合包括在查询444中。如果不是,则端点节点404能够将AVERAGE聚合分解为SUM操作和COUNT操作。端点节点404将SUM操作和COUNT操作包括在查询444内以代替AVERAGE聚合。如下面将更详细描述的,端点节点404能够通过执行从数据源420接收的SUM结果除以COUNT结果来完成来自查询442的所请求的AVERAGE类型聚合。
在本发明的一个或多个实施例中,端点节点能够将尽可能多的聚合推送到本地数据源。端点节点能够补偿本地数据源中缺失的任何处理能力。此外,端点节点能够将来自本地数据源的部分聚合结果与来自其他端点节点(例如,子端点节点)的聚合和/或部分聚合结果进行组合,以计算可以提供给计算系统中的父端点节点和/或服务节点402的新的聚合和/或部分聚合结果。
因此,端点节点408、410、412和414中的每一个能够从相应的数据源424、426、428和430和/或从子节点(未示出)接收结果。每个端点节点能够执行如以上示例中所述的本地数据源不支持的任何操作。端点节点408、410、412和414能够将从本地数据源获得的结果与从子端点节点获得的结果聚合。端点节点408、410、412和414还能够将从本地数据源和/或子端点节点获得的聚合和/或部分聚合的结果发送到转发查询的父端点节点。
例如,由于端点节点406向端点节点408发送查询448,端点节点408响应于查询450的执行从数据源424接收结果,可选地执行如查询448所指定的数据源424不支持的一个或多个操作,并将结果提供回端点节点404。如所述,端点节点408还能够从一个或多个子端点节点(未示出)接收结果,将这些结果与来自数据源424的结果聚合,并将聚合的结果提供给端点节点404。类似地,由于端点节点404向端点节点410发送查询448,因此端点节点410响应于查询452的执行而从数据源426接收结果,可选地执行如查询448所指定的数据源426不支持的一个或多个操作,并且将结果提供回到端点节点404。端点节点410还能够从一个或多个子端点节点(未示出)接收结果,将这些结果与来自数据源426的结果聚合,并将聚合的结果提供给端点节点404。响应于查询444的执行,端点节点404还从数据源420接收结果。
由于端点节点406向端点节点412发送查询448,因此端点节点412响应于查询454的执行而从数据源428接收结果,可选地执行如查询454所指定的不被数据源428支持的一个或多个操作,并且将结果提供回到端点节点406。如所述,端点节点412还能够从一个或多个子端点节点(未示出)接收结果,将这些结果与来自数据源428的结果聚合,并将聚合的结果提供给端点节点406。类似地,由于端点节点406向端点节点414发送查询448,因此端点节点414响应于查询456的执行而从数据源430接收结果,可选地执行如查询456所指定的数据源430不支持的一个或多个操作,并将结果提供回端点节点406。端点节点414还能够从一个或多个子端点节点(未示出)接收结果,将这些结果与来自数据源430的结果聚合,并将聚合的结果提供给端点节点406。响应于查询446的执行,端点节点406还从数据源422接收结果。
端点节点404能够将从包括端点节点408和410以及任何其他端点节点(未示出)的子端点节点接收到的任何结果与从数据源420接收到的结果聚合,并将所得的聚合结果提供给服务节点402。端点节点406还能够将从诸如端点节点412和414以及任何其他端点节点(未示出)的子端点节点接收到的任何结果与从数据源422接收到的结果聚合,并将结果提供给服务节点402。
在本发明的一个或多个实施例中,端点节点能够执行数据源不能执行的数据处理操作。参考前面的例子,其中查询442指定数据源420不支持的AVERAGE类型的聚合,端点节点404能够执行完成AVERAGE类型的聚合所必需的剩余操作。例如,如上所述,查询444包括由数据源420执行的SUM操作和COUNT操作。端点节点404从数据源420接收包括总和以及计数的结果。在这个例子中,端点节点404能够通过将SUM的结果除以COUNT的结果来完成AVERAGE聚合。这样,端点节点404能够通过提供数据源420不支持的数据处理能力来补充数据源420的功能,以便执行查询442中指定的聚合。
尽管没有具体讨论,但是应当理解,图4中所示的其他端点节点能够执行结合本文所述的任意端点节点描述的相同或相似的操作。例如,每个端点节点能够对所接收的查询执行转换,以生成可由耦合到其的本地数据源执行的查询。每个端点节点能够执行所接收的查询的进一步转换,该查询可以被提供给一个或多个其他端点节点。此外,每个端点节点能够从本地数据源接收结果并且从子端点节点(包括在所示的层级中更向下的子端点节点,其通过父端点节点向上传播)接收结果。端点节点能够聚合任意接收到的结果,并将结果数据发送回发送查询的端点节点,例如父端点节点。
在图4的示例中,在各个端点节点处执行的聚合减少了在计算系统400内传输的数据量。每个端点节点与其他端点节点协作,以通过在转发查询结果之前提供在端点节点中缺少的功能来在本地数据源中和/或在端点节点自身内本地地执行聚合,以减少通过网络传播的数据量。图4的例子还示出了与如前所述将服务节点402实现为中央处理节点的情况下以其他方式执行的处理相比,如何显著减少服务节点402执行的数据处理量。
为了说明而非限制的目的而提供图4。结合图4描述的计算系统可以包括更少或更多的节点。此外,节点可耦合到的数据源的类型不旨在限于图4中所示的特定实例。
图5示出了在动态和分布式计算系统中执行聚合的示例方法500。计算系统可以基本上如结合图1、2、3和4所描述的那样来实现。
在框505中,服务节点接收第一查询。例如,服务节点402接收查询440。在本发明的一个或多个实施例中,使用SQL来指定第一查询。在本发明的一个或多个其他实施例中,第一查询以除SQL之外的格式指定。例如,第一查询可以用诸如XQuery(XMLQuery)的语言来指定。在另一个示例中,可以使用过程(procedural)格式来指定第一查询。
列表1示出了可由服务节点接收的第一查询的示例实现。为了说明的目的,使用SQL指定列表1的示例:
列表1
在框510中,服务节点确定在第一查询内指定的(一个或多个)聚合。在一个示例中,服务节点可以包括编译器和解析器。服务节点能够解析第一查询以检测其中指定的聚合。例如,参考列表1,服务节点检测到包括AVERAGE类型的聚合。
在本发明的一个或多个实施例中,服务节点使用关于数据源的表结构的信息来解析第一查询。作为说明性而非限制性的例子,服务节点能够确定第一查询所针对的特定表和要被聚合的数据的特定部分(例如,列)。服务节点能够确定正在聚合的表达式,例如,形成聚合的关键字的"group by"从句列或表达式。
在本发明的一个或多个实施例中,服务节点能够区分第一查询的要在服务节点内本地执行的部分和第一查询的要被推出到计算系统的端点节点的部分。因此,服务节点能够确定必须由服务节点执行的第一查询的部分。必须由服务节点执行的查询的一部分的示例是不能被推出到计算系统的端点节点的最终聚合。
服务节点还能够确定第一查询中可以被推出到计算系统的端点节点的部分。可以被推出到端点节点的查询的部分的示例包括不需要由服务节点执行、并且可以由本地数据源或本地数据源结合管理这样的本地数据源的端点节点来执行的聚合。例如,服务节点能够基于聚合本身和计算系统的拓扑来确定可被推出到端点节点的特定聚合。作为说明性而非限制性的示例,诸如MIN、MAX和SUM的聚合分别作为MIN、MAX和SUM分发到端点节点。如果端点节点的第一子集包含一个节点,则不需要最终聚合来组合结果。通过比较,聚合AVERAGE确实需要服务节点执行AVERAGE聚合的划分部分的最终处理。
在框515中,服务节点将第一查询转换成第二查询。例如,参考图4,服务节点402将查询440转换成查询442。在本发明的一个或多个实施例中,第二查询具有第一规范格式。在本发明的特定实施例中,第二查询被以SQL指定或被转换成SQL。服务节点以可由计算系统的端点节点执行的格式生成第二查询。第二查询可以指定要被推出到端点节点的任何(一个或多个)聚合。例如,服务节点执行第一查询的转换以建立第二查询。在本发明的特定实施例中,第二查询指定要被下推到计算系统的每个端点节点的一个和/或多个特定查询。
列表2示出了由服务节点生成并发送到一个或多个端点节点(例如,端点节点的第一子集)的第二查询的示例实现,并且包括DISTRIBUTED_AGG和DATASOURCE_TABLE的区别,以指示处理将被进一步分布在接收端点节点(例如,第一子集的(一个或多个)端点节点)之外。
列表2
在框520中,服务节点将第二查询转发到属于端点节点的第一子集的一个或多个端点节点。服务节点能够通过相对少量的连接将第二查询推出到计算系统的端点节点的广泛群集中。
在框525中,端点节点的第一子集的端点节点基于耦合到第一子集的端点节点中的每一个相应端点节点的数据源将第二查询转换成第三查询。参照图4,例如,端点节点的第一子集包括端点节点404和406。端点节点404能够将查询442转换成查询444。以可由数据源420执行的格式指定查询444。端点节点406能够将查询442转换成查询446。以可由数据源422执行的格式指定查询446。
在本发明的一个或多个实施例中,第一子集的端点节点能够生成第三查询以指定基于本地数据源的处理能力确定的级别的聚合。例如,第一集合的端点节点能够将具有一个或多个聚合的第一规范格式的第二查询转换成包括由本地数据源支持(例如,可由本地数据源直接执行)的聚合的第三查询。
每个端点节点在数据结构(例如,表)和数据处理能力方面知道连接到该端点节点的不同本地数据源。这样,每个端点节点能够确定本地数据源可以执行多少其中指定的第二查询和/或(一个或多个)聚合。端点节点能够提供任意缺少的功能。例如,第一子集的端点节点能够检测第二查询中的本地数据源不支持的一个或多个聚合。在这种情况下,第一子集的端点节点能够将不支持的聚合分解成由本地数据源支持的多个组成操作。以这种方式,端点节点能够在数据源内和在端点节点自身内部发起大量或最大量的聚合,使得可能传播回到父端点节点和/或服务节点的任何结果在大小上被减小或者被减到可能的最小。
在另一示例中,端点节点能够分析第二查询以确定聚合是否正在对来自两个或更多个不同数据源的结果进行操作。如果是,则由于没有一个特定数据源将能够执行聚合,因此聚合可能不被下推到数据源级。作为说明性示例,如果查询442指定作为来自耦合到端点节点404的两个不同数据源的数据的联合的聚合,则端点节点404能够识别这种状况。端点节点404能够生成对每个数据源的查询,该查询可由每个相应的数据源本地执行以获得用于联合操作的数据。在从每个数据源接收到数据时,端点节点404能够在内部执行联合操作。
列表3示出了由端点节点生成的用于在本地数据源(例如,关系数据库)上执行的第三查询的示例实现。
列表3
在框530中,端点节点的第一子集的端点节点发起使用本地数据源的第三查询的执行。例如,第一子集的每个端点节点能够将其中生成的第三查询提交给本地数据源以供执行。
在框535中,端点节点的第一子集的端点节点可选地将第二查询转换成具有第二规范形式的第四查询。例如,端点节点404和406能够将查询442转换成查询448。查询448可以以第二规范格式来指定。查询448还可以用SQL来指定。
列表4示出了由第一子集的端点节点生成的第四查询的示例性实现,该第四查询将被提供给端点节点的第二子集的端点节点。在列表4的例子中,与列表2的第二示例查询相比,第四查询包括附加的聚合,诸如SUM(SALES_SUM)和SUM(SALES_COUNT)。服务节点能够执行与最终聚合的一部分相同的聚合。
列表4
在框540中,第一子集的端点节点向属于端点节点的第二子集的端点节点提供第四查询。例如,端点节点404和406将查询448分发到尚未接收到以规范形式(例如,是第二查询还是第四查询)指定的查询440的版本的端点节点408、410、412和414。
在本发明的一个或多个实施例中,节点的第一子集向形成节点的第二子集的计算系统的一个或多个其他端点节点提供第四查询。如所讨论的,动态和分布式计算系统能够使用各种不同的拓扑结构和不同拓扑结构的组合,其中动态和分布式计算系统的不同部分使用这些拓扑结构中的不同拓扑结构。这样,虽然图4的示例具有分层拓扑,但情况不必如此,并且仅用于说明的目的。因此,规范格式的查询在整个计算系统中的传播可能与图4所示的不同。端点节点的第一和/或第二子集可以包括对等端点节点,使得第四查询到端点节点的分发可以基于用于组织这样的端点节点的一个和/或多个拓扑而不同于所示出的分发。
在本发明的一个或多个实施例中,将规范格式的查询进一步分发到计算系统的尚未接收到规范格式的初始查询的版本的剩余端点节点的分发可以接收从父端点节点传播的第四查询。例如,不需要执行将查询进一步转换成第三规范格式。这样,无论是第一规范格式还是第二规范格式的查询都可以被传播到计算系统的端点节点。
在框545中,第一子集的端点节点接收来自相应数据源的结果和/或来自第二子集的端点节点的结果。例如,端点节点404接收来自数据源420执行查询444的结果。端点节点406接收来自数据源422对查询446的执行的结果。在另一示例中,端点节点404从端点节点408和410和/或在端点节点408和410之下和/或耦合到它们的任何子端点节点接收结果。类似地,端点节点406从端点节点412和414和/或在端点节点412和414之下和/或耦合到其的任何子端点节点接收结果。在一个或多个实施例中,每个端点节点能够从(一个或多个)本地数据源以及从端点节点向其分发规范形式的初始查询的端点节点的子集接收结果。以这种方式,结果可以从子端点节点向上传播到父端点节点,其中在端点节点处执行聚合作为传播回服务节点的结果。
在框550中,第一子集的端点节点聚合来自数据源的结果和/或来自第二子集的端点节点的结果。每个端点节点能够执行来自本地数据源的结果和/或来自如由端点节点接收的规范形式的查询所指定的其他端点节点的结果的进一步处理,包括聚合。
如所讨论的,在某些情况下,所接收的结果由本地数据源聚合或至少部分地聚合。在本地数据源不支持一个或多个聚合的其他情况下,响应于接收到结果,端点节点能够基于查询442对来自本地数据源的结果执行聚合(例如,执行由查询442指定的本地数据源没有执行的任何其他操作)。例如,如果查询442指定数据源420不支持的AVERAGE聚合类型,则端点节点404能够生成查询444,以便以可由数据源420执行的语法来指定SUM操作和COUNT操作。响应于从数据源420接收结果,端点节点404通过将SUM的结果除以COUNT的结果来完成AVERAGE聚合。
在另一个例子中,其中数据源422支持AVERAGE类型的聚合,端点节点406能够生成查询446以用可由数据源422执行的语法来指定AVERAGE类型的操作。在这种情况下,作为结果,端点节点406从数据源422接收返回的AVERAGE的结果。端点节点406不需要根据查询442指定的聚合来执行对所接收结果的任何进一步处理。在任意情况下,端点节点406能够将来自数据源420的任何结果与从端点节点408和410接收的结果聚合。
作为说明性而非限制性的示例,端点节点404能够基于查询442处理从数据源420接收的结果、从端点节点408接收的结果以及从端点节点410接收的结果。例如,查询442指定要执行的处理和聚合。端点节点406执行由查询442指定的、在将结果传递回服务节点402之前尚未执行的任何处理和聚集。应当理解,当从本地数据源和/或另一端点节点接收结果时,计算系统的每个端点节点能够如所描述的那样操作。
如所讨论的,计算系统可以包括根据一个或多个不同拓扑组织的明显更多的端点节点。在这一点上,计算系统可以包括从第二子集的端点节点接收查询的端点节点的第三子集、从第三子集的端点节点接收查询的端点节点的第四子集等等。可以使用比图4所示的更深的层次,其中如参考端点节点的第一和第二子集所一般描述的,查询和结果从端点节点的子集传播到端点节点的子集。
在框555中,第一子集的端点节点向服务节点提供聚合结果。在框560中,响应于从第一子集的端点节点接收到聚合结果,服务节点能够执行可能需要的任何最终聚合。在方框565中,服务节点能够向发出请求的系统和/或应用提供第一查询的最终结果。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及传统的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本文所用的术语仅是为了描述本发明的特定实施例,而不是为了限制。尽管如此,现在将呈现贯穿本文应用的若干定义。
术语"近似"是指几乎正确或精确、在值或量上接近但不精确。例如,术语"大约"可以意味着所叙述的特性、参数或值在准确的特性、参数或值的预定量内。
如本文所定义的,除非另外明确地陈述,术语"至少一个"、"一个或多个"和/或"是开放式表达,其在操作中是连续的和分离的。例如,表达"A、B和C中的至少一个"、"A、B或C中的至少一个"、"A、B和C中的一个或多个"、"A、B或C中的一个或多个"以及"A、B和/或C"中的每一个表示单独的A、单独的B、单独的C、A和B一起、A和C一起、B和C一起、或A、B和C一起。
如本文所定义的,术语"自动地"意味着无需用户干预。
如本文所定义,术语"包括(includes)"、"包含(including)"和/或"含有(comprising)"指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其它特征、整数、步骤、操作、元件、组件和/或其群组的存在或添加。
如本文所定义的,术语"如果(if)"是指"当(when)"或"在(upon)"或"响应于(responsive to)",这取决于上下文。因此,根据上下文,短语"如果确定"或"如果[所述条件或事件]被检测到"可以被解释为意味着"在确定时"或"响应于确定"或"在检测到[所述条件或事件]"时"或"响应于检测到[所述条件或事件]"。
如本文所定义的,术语"一个实施例"、"一个或多个实施例"、"特定实施例"或类似语言意味着结合实施例描述的特定特征、结构或特性被包括在本公开内描述的至少一个实施例中。因此,在本公开中出现的短语"在一个实施例中"、"在一个或多个实施例中"、"在特定实施例中"和类似语言可以但不必须全部指本发明的相同实施例。术语"实施例"和"安排"在本公开内可互换地使用。
如本文所定义的,术语"输出(output)"意味着在物理存储器元件(例如,设备)中存储、写入到显示器或其他外围输出设备、发送或传输到另一系统、输出(exporting)等。
如本文所定义,术语"处理器"意指被配置以执行指令的至少一个硬件电路。指令可以包含在程序代码中。硬件电路可以是集成电路。处理器的示例包括但不限于中央处理单元(CPU)、阵列处理器、向量处理器、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、专用集成电路(ASIC)、可编程逻辑电路和控制器。
如本文所定义的,术语"实时"意味着用户或系统感测到对于特定过程或要做出的确定足够即时的处理响应性水平,或者使处理器能够跟上某个外部过程的处理响应性水平。
如本文所定义的,术语"响应于(responsive to)"是指对动作或事件作出响应或反应。因此,如果"响应于"第一动作执行第二动作,则在第一动作的发生和第二动作的发生之间存在因果关系。术语"响应于"表示因果关系。
术语"基本上"意味着所述的特性、参数或值不需要精确地实现,而是指偏差或变化,包括例如公差、测量误差、测量精度限制和本领域技术人员已知的其它因素,可以以不排除该特征意图提供的效果的量出现。
本文中,术语第一、第二等可以用来描述各种元件。这些元件不应被这些术语限制,因为除非另有说明或上下文另有明确指示,这些术语仅用于将一个元件与另一个元件区分。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离本发明所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释本发明的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的本发明的各实施例。
Claims (15)
1.一种计算机实现的方法,包括:
响应于在计算系统的服务节点处接收到指定聚合的第一查询,将所述第一查询转换成具有第一规范格式并且指定所述聚合的第二查询;
将所述第二查询转发到所述计算系统的多个端点节点的第一子集;
在所述第一子集的每个端点节点处,将所述第二查询转换成第三查询,所述第三查询具有能够由连接到所述端点节点的数据源执行的格式,并且指定基于所述数据源的处理能力确定的要由所述数据源执行的聚合的级别,其中,每个端点节点发起由所述数据源执行所述第三查询;以及
从所述第一子集的每个端点节点向所述服务节点提供包括来自所述第三查询的执行的结果的聚合结果。
2.根据权利要求1所述的方法,还包括:
在所述第一子集的每个端点节点处,将所述第二查询转换成具有第二规范格式的第四查询;以及
从所述第一子集的每个端点节点向所述多个端点节点的第二子集的端点节点转发所述第四查询;
其中,所述规范格式之一的所述第一查询的版本被传播到所述计算系统的每个端点节点。
3.根据权利要求2所述的方法,其中,所述多个端点节点的第二子集中的每个端点节点尚未接收到所述规范格式之一的所述第一查询的版本。
4.根据权利要求2所述的方法,其中每个端点节点被配置为聚合从向其提供结果的每个子端点节点接收的结果,并且将所聚合的结果转发到父端点节点。
5.根据权利要求1所述的方法,还包括:
响应于在所述多个端点节点中的选择的端点节点处确定耦合到所述选择的端点节点的数据源不支持由所述第二查询指定的聚合,生成所述第三查询以指定比由所述第二查询指定的聚合的更低级别的聚合;以及
在所述选择的端点节点处,对来自耦合到所述选择的端点节点的数据源的结果执行操作,其中,所述操作是由所述第二查询指定的聚合的一部分。
6.根据权利要求1所述的方法,其中,将所述第二查询转换成所述第三查询包括:
将由所述第二查询指定的所述聚合分解成由所述第三查询指定的多个组成操作。
7.根据权利要求1所述的方法,其中,所述第一规范格式是使用结构化查询语言来指定的。
8.一种计算系统,包括:
服务节点;以及
多个端点节点;
其中,所述服务节点被配置为发起包括以下各项的操作:
响应于接收到指定聚合的第一查询,将所述第一查询转换成具有第一规范格式并且指定所述聚合的第二查询;
将所述第二查询转发到所述多个端点节点的第一子集;
其中,所述第一子集的每个端点节点被配置为发起包括以下各项的操作:
将所述第二查询转换成第三查询,所述第三查询具有能够由连接到选择的端点节点的数据源执行的格式,并且指定基于所述数据源的处理能力确定的要由所述数据源执行的聚合的级别;
发起由所述数据源执行所述第三查询;以及
将包括来自所述数据源的结果的聚合结果提供给所述服务节点。
9.根据权利要求8所述的系统,其中所述第一子集的每个端点节点被配置为发起还包括以下各项的操作:
将第二查询转换成具有第二规范格式的第四查询;以及
将所述第四查询转发到所述多个端点节点的第二子集的端点节点;
其中,所述规范格式之一的所述第一查询的版本被传播到所述计算系统的每个端点节点。
10.根据权利要求9所述的系统,其中,所述多个端点节点的第二子集中的每个端点节点尚未接收到所述规范格式之一的所述第一查询的版本。
11.根据权利要求9所述的系统,其中每个端点节点被配置为聚合从向其提供结果的每个子端点节点接收的结果,并且将所聚合的结果转发到父端点节点。
12.根据权利要求8所述的系统,其中,所述多个端点节点中的选择的端点节点被配置为发起还包括以下各项的操作:
响应于确定耦合到所述选择的端点节点的数据源不支持由第二查询指定的聚合,生成第三查询以指定比由第二查询指定的聚合更低级别的聚合;以及
对来自耦合到所述选择的端点节点的所述数据源的所述结果执行操作,其中,所述操作是由所述第二查询指定的所述聚合的一部分。
13.根据权利要求8所述的系统,其中,将所述第二查询转换成所述第三查询包括:
将由所述第二查询指定的所述聚合分解成由所述第三查询指定的多个组成操作。
14.根据权利要求8所述的系统,其中,所述第一规范格式是使用结构化查询语言来指定的。
15.一种计算机可读存储介质,所述计算机可读存储介质具有程序指令,所述程序指令能够由一个或多个处理器执行以使所述一个或多个处理器发起操作,所述操作包括:
根据权利要求1至7中任意一项所述的方法的步骤。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/827,674 US11475000B2 (en) | 2017-11-30 | 2017-11-30 | Aggregation in dynamic and distributed computing systems |
US15/827,674 | 2017-11-30 | ||
PCT/IB2018/059036 WO2019106476A1 (en) | 2017-11-30 | 2018-11-16 | Aggregation in dynamic and distributed computing systems |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111344693A CN111344693A (zh) | 2020-06-26 |
CN111344693B true CN111344693B (zh) | 2024-01-26 |
Family
ID=66633245
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880073677.4A Active CN111344693B (zh) | 2017-11-30 | 2018-11-16 | 动态和分布式计算系统中的聚合 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11475000B2 (zh) |
CN (1) | CN111344693B (zh) |
WO (1) | WO2019106476A1 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11475000B2 (en) | 2017-11-30 | 2022-10-18 | International Business Machines Corporation | Aggregation in dynamic and distributed computing systems |
US11120001B2 (en) | 2017-11-30 | 2021-09-14 | International Business Machines Corporation | Table discovery in distributed and dynamic computing systems |
US10616041B2 (en) | 2017-11-30 | 2020-04-07 | International Business Machines Corporation | Collaborative triggers in distributed and dynamic computing systems |
US11841854B2 (en) | 2018-07-24 | 2023-12-12 | MachEye, Inc. | Differentiation of search results for accurate query output |
US11282020B2 (en) | 2018-07-24 | 2022-03-22 | MachEye, Inc. | Dynamic playback of synchronized narrated analytics playlists |
US11853107B2 (en) | 2018-07-24 | 2023-12-26 | MachEye, Inc. | Dynamic phase generation and resource load reduction for a query |
US11341126B2 (en) * | 2018-07-24 | 2022-05-24 | MachEye, Inc. | Modifying a scope of a canonical query |
US11651043B2 (en) | 2018-07-24 | 2023-05-16 | MachEye, Inc. | Leveraging analytics across disparate computing devices |
US11816436B2 (en) | 2018-07-24 | 2023-11-14 | MachEye, Inc. | Automated summarization of extracted insight data |
US11100109B2 (en) * | 2019-05-03 | 2021-08-24 | Microsoft Technology Licensing, Llc | Querying data in a distributed storage system |
US10803065B1 (en) * | 2019-09-12 | 2020-10-13 | Business Objects Software Ltd | Microcubes |
CN111061566A (zh) * | 2019-12-16 | 2020-04-24 | 武汉达梦数据技术有限公司 | 一种动态数据源查询方法及装置 |
US11645284B2 (en) | 2020-03-16 | 2023-05-09 | International Business Machines Corporation | Distributed join filters in a dynamic distributed data processing service |
CN113238804B (zh) * | 2021-05-17 | 2022-06-28 | 深圳掌酷软件有限公司 | 一种基于智能终端息屏状态下指定应用唤醒系统及方法 |
US20230130019A1 (en) | 2021-10-27 | 2023-04-27 | Bank Of America Corporation | Abstraction Layer for Efficient Transliteration of Machine Interpretable Languages |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104394149A (zh) * | 2014-11-26 | 2015-03-04 | 中国航天科工集团第二研究院七〇六所 | 一种基于并行分布式架构的复杂事件处理的方法 |
CN106599043A (zh) * | 2016-11-09 | 2017-04-26 | 中国科学院计算技术研究所 | 用于多级数据库的中间件和多级数据库系统 |
CN107003868A (zh) * | 2014-11-14 | 2017-08-01 | 起元技术有限责任公司 | 处理包含联合类型操作的查询 |
Family Cites Families (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6847962B1 (en) | 1999-05-20 | 2005-01-25 | International Business Machines Corporation | Analyzing, optimizing and rewriting queries using matching and compensation between query and automatic summary tables |
US7475058B2 (en) * | 2001-12-14 | 2009-01-06 | Microsoft Corporation | Method and system for providing a distributed querying and filtering system |
US8868544B2 (en) * | 2002-04-26 | 2014-10-21 | Oracle International Corporation | Using relational structures to create and support a cube within a relational database system |
US20070094166A1 (en) | 2002-08-05 | 2007-04-26 | Edwin Addison | Knowledge-based methods for genetic network analysis and the whole cell computer system based thereon |
US7647595B2 (en) | 2003-10-29 | 2010-01-12 | Oracle International Corporation | Efficient event notification in clustered computing environments |
US8996486B2 (en) * | 2004-12-15 | 2015-03-31 | Applied Invention, Llc | Data store with lock-free stateless paging capability |
US7428220B1 (en) | 2005-02-10 | 2008-09-23 | Sun Microsystems, Inc. | Method and apparatus for data aggregation in a distributed system |
US8392400B1 (en) | 2005-12-29 | 2013-03-05 | Amazon Technologies, Inc. | Method and apparatus for stress management in a searchable data service |
US7984043B1 (en) | 2007-07-24 | 2011-07-19 | Amazon Technologies, Inc. | System and method for distributed query processing using configuration-independent query plans |
GB0718251D0 (en) | 2007-09-19 | 2007-10-31 | Ibm | An apparatus for propagating a query |
US20090125540A1 (en) | 2007-11-08 | 2009-05-14 | Richard Dean Dettinger | Method for executing federated database queries using aliased keys |
KR100894910B1 (ko) * | 2007-11-09 | 2009-04-30 | 한국전자통신연구원 | 이기종 센서 네트워크 환경에서 다중 질의 처리 장치 및방법 |
US8150889B1 (en) * | 2008-08-28 | 2012-04-03 | Amazon Technologies, Inc. | Parallel processing framework |
US8145652B2 (en) | 2008-10-09 | 2012-03-27 | International Business Machines Corporation | Automated propagation of non-conflicting queries in distributed databases |
US8458208B2 (en) | 2008-10-09 | 2013-06-04 | International Business Machines Corporation | Automated data source assurance in distributed databases |
US8285710B2 (en) | 2008-10-09 | 2012-10-09 | International Business Machines Corporation | Automated query path reporting in distributed databases |
US8458166B2 (en) | 2008-10-09 | 2013-06-04 | International Business Machines Corporation | Dynamic context definitions in distributed databases |
US9183260B2 (en) | 2008-10-09 | 2015-11-10 | International Business Machines Corporation | Node-level sub-queries in distributed databases |
US20100115100A1 (en) | 2008-10-30 | 2010-05-06 | Olga Tubman | Federated configuration data management |
US8386515B2 (en) | 2009-11-27 | 2013-02-26 | International Business Machines Corporation | Persistent querying in a federated database system |
US20120016661A1 (en) | 2010-07-19 | 2012-01-19 | Eyal Pinkas | System, method and device for intelligent textual conversation system |
US8260826B2 (en) | 2010-09-23 | 2012-09-04 | Hewlett-Packard Development Company, L.P. | Data processing system and method |
KR20120071722A (ko) | 2010-12-23 | 2012-07-03 | 한국전자통신연구원 | 응용 필드 통신 방법 및 시스템 |
US9460173B2 (en) | 2011-11-28 | 2016-10-04 | Ca, Inc. | Method and system for metadata driven processing of federated data |
GB2505881A (en) | 2012-09-12 | 2014-03-19 | Ibm | Determining common table definitions in distributed databases |
US9317554B2 (en) | 2012-09-26 | 2016-04-19 | Microsoft Technology Licensing, Llc | SQL generation for assert, update and delete relational trees |
GB2508631A (en) | 2012-12-06 | 2014-06-11 | Ibm | Propagating a query in a network by applying a delay at a node |
GB2510429A (en) | 2013-02-05 | 2014-08-06 | Ibm | Assessing response routes in a network |
US9135301B2 (en) | 2013-03-14 | 2015-09-15 | Oracle International Corporation | Pushdown of sorting and set operations (union, intersection, minus) to a large number of low-power cores in a heterogeneous system |
US10394807B2 (en) | 2013-11-27 | 2019-08-27 | Paraccel Llc | Rewrite constraints for database queries |
US11487771B2 (en) * | 2014-06-25 | 2022-11-01 | Microsoft Technology Licensing, Llc | Per-node custom code engine for distributed query processing |
US9563650B2 (en) | 2014-07-15 | 2017-02-07 | Sap Se | Migrating federated data to multi-source universe database environment |
CN104123374B (zh) * | 2014-07-28 | 2017-09-29 | 北京京东尚科信息技术有限公司 | 分布式数据库中聚合查询的方法及装置 |
US10110479B1 (en) | 2015-09-29 | 2018-10-23 | Juniper Networks, Inc. | Computing paths with ordered abstract hops |
US10885064B2 (en) * | 2015-12-14 | 2021-01-05 | Pivotal Software, Inc. | Performing global computation in distributed database systems |
US11442933B2 (en) | 2017-09-21 | 2022-09-13 | Oracle International Corporation | Function semantic based partition-wise SQL execution and partition pruning |
US10769148B1 (en) * | 2017-09-25 | 2020-09-08 | Amazon Technologies, Inc. | Relocating data sharing operations for query processing |
US10616041B2 (en) | 2017-11-30 | 2020-04-07 | International Business Machines Corporation | Collaborative triggers in distributed and dynamic computing systems |
US11120001B2 (en) | 2017-11-30 | 2021-09-14 | International Business Machines Corporation | Table discovery in distributed and dynamic computing systems |
US11475000B2 (en) | 2017-11-30 | 2022-10-18 | International Business Machines Corporation | Aggregation in dynamic and distributed computing systems |
-
2017
- 2017-11-30 US US15/827,674 patent/US11475000B2/en active Active
-
2018
- 2018-11-16 WO PCT/IB2018/059036 patent/WO2019106476A1/en active Application Filing
- 2018-11-16 CN CN201880073677.4A patent/CN111344693B/zh active Active
-
2022
- 2022-10-13 US US17/964,924 patent/US11681695B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107003868A (zh) * | 2014-11-14 | 2017-08-01 | 起元技术有限责任公司 | 处理包含联合类型操作的查询 |
CN104394149A (zh) * | 2014-11-26 | 2015-03-04 | 中国航天科工集团第二研究院七〇六所 | 一种基于并行分布式架构的复杂事件处理的方法 |
CN106599043A (zh) * | 2016-11-09 | 2017-04-26 | 中国科学院计算技术研究所 | 用于多级数据库的中间件和多级数据库系统 |
Also Published As
Publication number | Publication date |
---|---|
US20230049730A1 (en) | 2023-02-16 |
WO2019106476A1 (en) | 2019-06-06 |
US11475000B2 (en) | 2022-10-18 |
CN111344693A (zh) | 2020-06-26 |
US20190163783A1 (en) | 2019-05-30 |
US11681695B2 (en) | 2023-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111344693B (zh) | 动态和分布式计算系统中的聚合 | |
US11163739B2 (en) | Database table format conversion based on user data access patterns in a networked computing environment | |
US10025846B2 (en) | Identifying entity mappings across data assets | |
US9363195B2 (en) | Configuring cloud resources | |
JP2019534496A (ja) | マネージクエリサービス | |
US10915532B2 (en) | Supporting a join operation against multiple NoSQL databases | |
US11055352B1 (en) | Engine independent query plan optimization | |
US20140012988A1 (en) | Provisioning computer resources on a network | |
US10007682B2 (en) | Dynamically maintaining data structures driven by heterogeneous clients in a distributed data collection system | |
US10747763B2 (en) | Efficient multiple aggregation distinct processing | |
US20190370599A1 (en) | Bounded Error Matching for Large Scale Numeric Datasets | |
US11157467B2 (en) | Reducing response time for queries directed to domain-specific knowledge graph using property graph schema optimization | |
US20180337977A1 (en) | Dynamic graph adaptation for stream processing over hybrid, physically disparate analytics platforms | |
US11704327B2 (en) | Querying distributed databases | |
US11645284B2 (en) | Distributed join filters in a dynamic distributed data processing service | |
US11727022B2 (en) | Generating a global delta in distributed databases | |
US10628416B2 (en) | Enhanced database query processing | |
US11860939B2 (en) | Manipulating a table with an XML column in a database | |
WO2023241405A1 (en) | Database query processing with database clients | |
US11636111B1 (en) | Extraction of relationship graphs from relational databases | |
US20200293530A1 (en) | Data schema discovery with query optimization |
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 |