CN108885641B - 高性能查询处理和数据分析 - Google Patents
高性能查询处理和数据分析 Download PDFInfo
- Publication number
- CN108885641B CN108885641B CN201780021857.3A CN201780021857A CN108885641B CN 108885641 B CN108885641 B CN 108885641B CN 201780021857 A CN201780021857 A CN 201780021857A CN 108885641 B CN108885641 B CN 108885641B
- Authority
- CN
- China
- Prior art keywords
- data
- data set
- query
- input
- slices
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
- G06F16/24544—Join order optimisation
-
- 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/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24549—Run-time optimisation
-
- 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/2477—Temporal data queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- General Physics & Mathematics (AREA)
- Operations Research (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
高性能查询处理和数据分析可以跨架构上不同的规模而被执行,诸如单核、多核和/或多节点。高性能查询处理和数据分析可以包括查询计算、密钥化数据、数据移动和并行计算的分离,由此增强查询处理和数据分析的能力,同时允许指定数据并行计算的复杂形式,数据并行计算可以跨实时和离线来执行。如本文所述,数据移动和并行计算的去耦合可以改善查询处理和数据分析速度,可以提供多个计算环境中的搜索的优化,并且可以提供搜索执行计划的更大空间的能力。
Description
背景技术
查询处理和数据分析平台可以分析大量数据,以便从数据中获得见解。在一些情况下,这种大量数据的有效分析可能难以以成本有效的方式执行。此外,可以在单核上存储的上下文数据中采用一组技术,同时可以在跨多个节点存储的数据的上下文中采用另一组技术。另外,在在线数据分析和离线时间关系数据的上下文中可以采用又一些不同的技术。然而,为了实现跨在线和离线数据二者的不同架构的分析,必须使用多种技术。跨多种技术来分析数据可能是计算昂贵的、低效的和耗时的。
发明内容
本公开描述了用于提供实时和离线时间关系数据的高性能查询处理的系统、方法和计算机可读介质。本文描述的高性能查询处理和数据分析可以跨架构不同的规模来执行,例如单核、多核和/或多节点。高性能查询处理和数据分析可以包括数据移动和并行计算的分离,由此增强查询处理和数据分析的能力。如本文所述,数据移动和并行计算的去耦合可以改善查询处理和数据分析速度,可以提供在多个计算环境中的搜索的优化,并且可以提供搜索执行计划的更大空间的能力(例如,手动搜索、自动搜索,诸如利用查询优化器等)。例如,在多核设置中执行的查询处理和数据分析(诸如利用多个非均匀存储器访问使能的计算设备)可以包括通过在执行计算之前进行重新分布的数据分区,以便加速处理。再例如,查询处理和数据分析系统不是在多核设置中在核之间重新分布原始数据,而是可以首先更新密钥并对数据执行计算,然后在核之间重新分布经组织的数据。对于又一示例,查询处理和数据分析系统可以将数据发送到特定位置(例如,在核和/或机器中)以使能执行复杂的大规模并行计算。
提供本发明内容是为了以简化的形式介绍一些概念,这些概念将在下面的具体实施方式中进一步描述。本发明内容不旨在标识所要求保护的主题的关键或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。此外,所要求保护的主题不限于解决在本公开的任何部分中提到的任何或所有缺点的实现方式。
附图说明
参考附图来阐述具体实施方式。在附图中,附图标记最左边的(多个)数字标识首次出现该附图标记的图。在不同图中使用相同的附图标记表示相似或相同的项。
图1示出了用于查询处理和数据分析的示例环境。
图2是示出与图1中描述的变换相对应的数据集的示例变换的框图。
图3是示出数据移动和聚合操作的各种示例的框图。
图4是示出数据移动和连接操作的各种示例的框图。
图5示出了被配置为与查询处理和数据分析平台一起操作的分布式服务平台的示例架构。
图6是示出查询处理和数据分析系统的分析工作流的框图。
图7是示出查询处理和数据分析平台的示例过程流程的流程图。
图8是示出与分布式服务平台通信的查询处理和数据分析平台的示例过程流程的流程图。
图9是示出查询处理和数据分析平台的示例过程流程的流程图。
图10是示出查询处理和数据分析平台的示例过程流程的流程图。
图11示出了查询处理和数据分析平台相对于另一平台的改进性能的示例图。
图12示出了被配置为支持查询处理和数据分析平台的示例设备。
具体实施方式
概述
本文描述的技术向跨架构不同规模(例如,单核、多核、多节点等)的查询处理和数据分析提供了技术和构造。在一些配置中,计算设备可以接收查询。查询可以表示根据对数据的分析的所期望的结果。在一些示例中,查询可以包括指示如何执行查询的查询计划,例如,以瞄准针对特定情况(例如,数据集的大小、数据集的数目、在机器的核之间的带宽、机器之间的带宽、在分布式服务提供商的节点之间的带宽等)的特定执行计划。在这样的示例中,基于查询计划,计算设备可以确定可以应用该查询的设置。该设置可以是单个计算机上的单个节点,或者也可以是跨多个机器(例如基于云的架构)的多个节点。该设置还可以包括实时数据和/或离线时间关系数据。在一些配置中,可以基于经由用户界面的用户输入来确定设置。通过接收设置输入,查询处理和数据分析系统可以跨架构不同的规模而被应用,由此扩大系统的用途和/或提高系统的效率。
在各种配置中,一个或多个数据集可以在设置中被标识出。设置中的数据集可以位于相同或不同的机器上。在一些示例中,单个数据集可以位于两个或更多个机器上(例如,跨两个或更多个机器而被分片)。每个数据集可以包括以具有时间戳的数据项的序列的一个或多个数据分片。数据项上的时间戳可以是将数据项保存到数据集的时间和/或发生诸如鼠标点击的事件的时间。在一些配置中,一个或多个分片可以包括数据集的重叠部分。一个或多个数据分片可以各自与元组(例如,有效载荷)相关联。另外,在一些配置中,元组可以各自与密钥相关联。密钥可以是数据标识符,诸如有效载荷的指示和/或对特定分片的内容的描述。在这样的配置中,数据集的分片可以不受密钥的约束(例如,不管密钥而被确定)。通过不约束数据分片,查询处理和数据分析系统可以基于相应的数据时间戳来访问和/或创建数据集,由此增加特定时间段内的数据分析的效率。
在一些配置中,基于查询输入,计算设备可以使得在标识出的数据集上发生一个或多个变换。在各种配置中,变换可以包括应用查询操作(例如,单输入、多输入),数据移动(例如,创建新数据集、在数据集之间的广播连接、多播连接、重新分片等),基于密钥的变换(例如,更新密钥、重新分布)等。在这样的配置中,一个或多个变换可以作为单独的函数在每个数据集上发生。通过分离密钥化、数据移动和查询逻辑,计算设备可以通过以依赖于情境的方式在数据上执行变换和动作,以集成的方式构建复杂的分布式物理计划。分布式物理计划可以在不同规模上高效执行,也可以被重复用于将来的查询操作。例如,在具有较大数目的组的多核设置中,重新分布原始数据(例如,数据移动)可能在计算上是昂贵的。这样,查询处理和数据分析系统可以允许数据的更新密钥,以组织数据分片的有效载荷,并且允许接着的对更新密钥的数据的第一计算。基于第一计算,可以在数据集之间重新分布数据的分片,并且可以进行第二计算。因此,重新分布的延迟可以显著减少网络流量的量,因为第一计算可以减少要被重新分布的数据量。通过分离增量查询逻辑规范、一小组但丰富的数据移动操作以及密钥化,人们可以在以不同规模为目标的HLL中构建复杂的分布式物理计划,包括现代的、基于扫描的柱状数据库的物理计划、连续查询(例如,混合对称散列和广播连接)和分布式设置(例如,用于多路或θ连接的选择性数据复制和矩阵操作)。至关重要的是,物理计划通过构造、在实时部署和离线部署之间可转移。
在各种配置中,对标识出的数据集的变换可以引起新数据集的创建。查询输入可以被应用于新数据集,并且计算设备可以提供对查询的响应。在一些配置中,新数据集可以被高速缓存到存储器中,用于查找以及在类似的查询场景中再利用。通过保存数据集(例如,在主存储器和/或外部存储设备中),查询处理和数据分析系统可以节省在未来查询中的计算时间,由此提高系统的整体效率。
说明性的环境
下面描述的环境仅构成一个示例,并不旨在将权利要求限于任何一个特定的操作环境。在不背离所要求保护的主题的精神和范围的情况下,可以使用其他环境。
图1示出了用于查询处理和数据分析平台的示例环境100。在一些示例中,查询处理和数据分析平台可以包括计算设备102。将参考图10进一步详述计算设备102的示例组件。计算设备102可以被配置为经由一个或多个网络与一个或多个其他设备进行通信。
例如,一个或多个网络可以包括诸如互联网的公共网络,诸如机构和/或私人内联网的专用网络,或者私有和公共网络的特定组合。网络还可以包括任何类型的有线和/或无线网络,包括但不限于:局域网(LAN)、广域网(WAN)、个域网(PAN)、体域网(BAN)、近场通信(NFC)、卫星网络、有线网络、Wi-Fi网络、WiMax网络、移动通信网络(例如,3G、4G等)或其任何组合。一个或多个网络可以使用通信协议,包括基于分组和/或基于数据报的协议,诸如互联网协议(IP)、超文本传输协议(HTTP)、超文本传输协议安全(HTTPS)、传输控制协议(TCP)、用户数据报协议(UDP)或其他类型的协议。
在各种示例中,计算设备102可以属于各种类别或分类的设备,诸如传统服务器设备、台式计算机设备、移动设备、专用设备和/或嵌入式设备。因此,计算设备102可以包括各种各样的设备类型,并且不限于特定类型的设备。计算设备102可以表示但不限于:台式计算机、服务器计算机或刀片服务器,诸如web服务器、支持非均匀存储器访问(NUMA)的计算机、或其他计算引擎或网络附接存储单元、个人计算机、移动计算机、膝上型计算机、平板计算机、电信设备、终端、游戏控制台、工作站、包含在计算设备中的集成组件、或任何其他类型的计算设备。
计算设备102可以在104处接收查询用于处理。在一些示例中,在104处接收到的查询可以包括单输入查询。在其他示例中,在104处接收到的查询可以包括多输入查询。在一些示例中,计算设备102可以接收和处理查询逻辑规范。查询逻辑规范可以包括查询将被应用到的设置106。设置106可以包括多节点108、多核110或单核112设置。在各种示例中,设置106可以标识查询处理和数据分析平台中涉及的一个或多个其他设备(例如,存储查询处理和数据分析中涉及的数据集的一个或多个其他设备)。
与多节点108设置相关联的一个或多个其他设备可以是分布式服务平台(例如,云)的一部分。与多核110相关联的一个或多个其他设备可以与计算设备102基本相似。一个或多个设备可以被配置为与计算设备102通信。一个或多个其他设备可以属于多种类别或分类的设备,诸如传统消费者设备、台式计算机设备、移动设备、专用设备和/或嵌入式设备。
如上所述,设置106可以包括用于数据分析的多样化架构,包括在单核上、跨多核和/或在基于云的架构中跨多个节点上的操作。至少部分地基于该设置,一个或多个数据集114可以跨一个或多个设备被标识。一个或多个数据集114可以表示在基于时间的序列中的一组数据分片。每个数据分片可以与有效载荷(例如,元组、主题)相关联。在一些示例中,每个数据分片可以与密钥相关联。在这样的示例中,与数据分片相关联的密钥可以不包括对分片的约束。在各种示例中,一个或多个数据集114可以基于数据集114中一个或多个数据分片的有效载荷而被标识。
在116处,计算设备102可以使得在数据集114上进行变换。在各种示例中,计算设备102可以使得至少部分地基于经由用户界面的输入来进行变换。在这样的示例中,每个变换独立于其他变换而被单独执行。在一些示例中,每个变换可以生成新数据集114。
变换可以包括查询操作(例如,在每个分片上应用未修改的查询),重新分片操作(例如,分片内容的循环移动以实现相等的分片大小),广播操作(例如,跨所有分片复制分片内容),更新密钥操作(例如,改变与每个分片中的每一行相关联的密钥),重新分布操作(例如,跨相同机器中的分片的数据移动,从而相同的密钥驻留在每个分片中,跨不同机器中的分片的数据移动,从而相同的密钥驻留在每个分片中),以及重新命名操作(例如,在每个分片上构造新的有效载荷)。另外,变换可以包括多播操作。多播是一种强大的数据移动操作,它基于有效载荷上用户提供的λ表达式,向零个或多个结果分片发送每个输入分片中的每个元组。使用多播,人们可以选择性地将元组复制到结果分片以实现θ连接、并行多路连接、矩阵运算、时空计算等。在各种示例中,变换可以包括以上列出的操作中的各操作中的一个或多个。在一些示例中,变换可以包括上面列出的操作的子集中的一个或多个。例如,变换可以包括查询操作、更新密钥操作和重新分布操作。又例如,变换可以包括查询操作、广播操作、更新密钥操作和重新分布操作。
至少部分地基于来自变换的结果,并行计算118可以被计算以确定对查询输入的响应。例如,查询输入可以包括针对在过去24小时内访问过特定网站的人的数目的多核请求。并行计算118可以从变换116接收结果,并确定已经访问了特定网站的人的数目。
在120处,响应可以呈现于计算设备102的显示器上。另外,计算设备102可以使得在编码结果上执行一个或多个动作。一个或多个动作可以用于具体化查询结果,诸如将变换结果具体化到主存储器中(例如,将计算存储到可能呈分布式的存储器内数据集),到指定的路径(例如,将结果存储在持久数据存储设备中),到输入/输出流(例如,将I/O流的阵列作为参数,并以高效的二进制格式将每个分片输出到阵列中的对应I/O流),和/或接受特定指令以对结果进行直接操作。
图2是示出对数据集进行变换的框图200,其对应于图1中描述的变换。在各种示例中,诸如计算设备102的计算设备可以接收一个或多个查询输入。在一些示例中,一个或多个查询输入可以被输入到分布式编程抽象和框架中并由其进行处理。基于一个或多个查询输入,计算设备的分布式编程抽象和框架可以使得一个或多个查询操作202跨标识出的数据集来执行。标识出的数据集可以位于计算设备上和/或跨多个计算设备。
在各种示例中,查询操作202可以在单个查询输入上执行。在这样的示例中,查询操作202可以包括表达式(例如,λ表达式),该表达式表示要在标识出的数据集中的每个数据分片上独立执行的、未修改的查询。查询操作202可以导致不同有效载荷类型的分片。例如,第一查询操作202可以包括基于“userID”选择20%用户样本的指令。在这样的示例中,第一查询操作202可以如下表达:
var ss1=ss0.Query(q=>q.Where(e=>e.UserId%100<20),(1)
其中ss1表示在查询操作被应用于数据集ss0之后生成的新数据集,e表示用户的初始数目,q表示未修改的查询输入。
在各种示例中,查询操作202可以在多个查询输入上执行。在这样的示例中,查询操作202可以包括双输入表达式,其作为以下参数来操作,该参数表示要在来自包括等量数目的分片的两个输入数据集的分片对上执行的未修改的双输入查询(例如,连接)。查询操作202随后可以连接分片对,并产生单个经分片的数据集作为输出。例如,查询操作202可以包括双输入查询,该查询包括关于第一数据集上可用的广告数据被每个用户访问的频率的查询,关于存储在第二数据集上的数据的查询。在这样的示例中,两个数据集可以被连接在一起以对组合数据集执行进一步操作,以确定广告数据被每个用户访问的频率的查询,例如通过:
ss0.Query(ss1,(input1,input2)=>...),(2)
其中ss1表示在input1、input2等数据的分片被连接到数据集ss0之后生成的新数据集。
在一些示例中,查询操作202可以包括在变换过程中执行的多个不同的查询操作。例如,第一查询操作可以建立用户样本,诸如表达式(1)中所示。第二查询操作可以包括计数,诸如用于执行计算以确定期望的响应。
在各种示例中,可以对标识出的数据集执行重新分片操作204、广播操作206和/或多播操作208。在这样的示例中,操作可以创建具有以特定方式组织和/或复制的分片内容的新数据集。重新分片操作204可以包括跨一组结果分片的循环分配分片内容。这样,重新分片操作204可以用于跨数据集的所有分片来均匀地分布数据,以实现相等的分片大小。
另一方面,广播操作206跨数据集的所有分片复制每个分片的内容。广播操作206可以用于跨数据集的所有分片来传送参考数据集中的数据,以便计算特定值,诸如每个用户参考的特定广告的信息,其中参考数据集可以包括广告数据。作为说明性示例,广播操作206可以通过以下方式将参考数据集rr0连接到数据集ss1:
var rr1=rr0.Broadcast();(3)
var ss2=ss1.Query(rr1,(left,right)=>left.Join(right,e=>e.AdId,...))(4)
所得的数据集ss2包括ss1和rr1二者的数据,其中rr1表示参考数据集rr0的广播。换句话说,所得的数据集ss2通过将广播参考数据集连接到输入数据集ss1来包括关于广告的用户动作和广告数据。然后,所得的数据集可以用于计算每个用户参考的特定广告的信息。
多播操作208可以将数据分布到数据集中一个或多个指定的分片。在各种示例中,分布式数据可以与特定元组(例如,有效载荷、主题等)相关联。在一些示例中,可以至少部分地基于查询输入来选择分布式数据,以跨特定的数据分片进行分布。
可以对一个或多个标识出的和/或所得的数据集来执行更新密钥操作210。在一些示例中,可以对从重新分片操作204、广播操作206或多播操作所得的数据集执行更新密钥操作210。在一些示例中,可以对由一个或多个查询操作202产生的数据集执行更新密钥操作210。
更新密钥操作210修改数据集中的每个元组(例如,有效载荷、主题)以具有不同的密钥。对每个分片,更新密钥操作210独立操作,因此涉及每密钥的散列预计算。每密钥的散列预计算可以是不计算昂贵的且相对高效的,从而使更新密钥操作210是高效的操作。作为说明性示例,更新密钥操作210可以如下表达:
var ss3=ss2.ReKey(e=>e.AdId),(5)
其中ss3表示在更新密钥操作被应用于数据集ss2之后生成的新数据集,e表示初始数据集,并且e.AdId表示基于AdId对初始数据集更新密钥的期望结果。
响应于更新密钥操作210,计算设备可以通过重新分布操作212(例如,数据移动操作)来变换数据集。重新分布操作212可以跨分片来重组数据,并且可以输出具有与其输入相同的密钥和有效载荷时间的数据集。跨分片的数据重组可以是跨分片的数据重新分布,从而具有相同密钥的所有行驻留在相同的分片中。重新分布操作212可以使用基于具体化散列值的散列分区来重组数据。在各种示例中,重新分布操作212可以是跨机器的全局重组。在一些示例中,重新分布操作212可以是机器内的本地重组,诸如跨机器的多个核。
在各种示例中,重新分布操作212可以建立在更新密钥操作210上。例如,响应于表达式(5)的更新密钥操作210,重新分布操作212可以基于AdId来重组数据。重新分布操作212可以如下表达:
var ss4=ss3.ReDistribute(),(6)
其中ss4表示在重新分布操作被应用于数据集ss3之后生成的新数据集。
在一些示例中,至少部分地基于查询输入,重新分布操作212之后可以跟随查询操作202。例如,在表达式(6)的重新分布操作212之后,计算设备可以执行查询操作202以计算每AdId计数。用于计算每AdId计数的查询操作202可以如下表达:
var ss5=ss4.Query(q=>q.Count()),(7)
其中ss5表示在将计数的查询操作应用于数据集ss4之后生成的新数据集,q表示输入,并且q.Count表示被应用于输入的计数操作。
在一些示例中,查询操作202和重新分布操作212可以在局部-全局聚合中被组合。局部-全局聚合可以如下表达:
var ss6=ss3.Query(q=>q.Count()).ReDistribute().Query(q=>q.Sum(e=>e))(8)
其中ss6表示在第一查询操作、重新分布操作和第二查询操作被应用于数据集ss3之后生成的新数据集,第一查询操作是对数据集中的数据的计数,第二查询操作是对数据集中的数据的求和。
在这样的示例中,组合的查询操作202和重新分布操作212(以包括求和操作)可以显著减少网络流量,从而提高用于其他操作的网络流量速度。
在各种示例中,最终变换可以是重命名操作214。重命名操作214可以提供当前密钥(例如,来自更新密钥操作210的密钥)可以被包括在有效载荷(例如,元组、主题)中的手段。在一些示例中,重命名操作214可以是SelectWithKey操作。在这样的示例中,重命名操作214可以如下表达:
ss5.SelectWithKey((grp,pay)=>new AdCount{grp,pay}),(9)
其中grp表示密钥,pay表示分片的有效载荷,并且SelectWithKey操作基于每个AdId计数流、新AdCount来重命名数据集ss5。
图3是示出数据移动和聚合操作的各种示例的框图。在302、304、306和308处的示例操作通过示例而非限制的方式而被提供。其他操作及其组合也被设想出。在各种示例中,数据可以在不同阶段被移动和聚合,以增加效率并优化查询处理和数据分析的执行。在各种示例中,数据的移动和聚合可以取决于机器中的核之间、不同机器中的核之间和/或分布式服务平台中的节点之间的可用带宽。在一些示例中,数据的移动和聚合可以取决于与特定聚合相关联的开销。在一些示例中,数据的移动和聚合可以取决于与查询相关联的数据集的大小和/或数目。
如上所述,数据可以在局部地(例如,在机器内)和全局地(例如,跨机器)移动(例如,重新分布)。数据聚合(例如,对密钥化的数据执行计算)可以在变换操作的不同阶段执行,以优化查询处理和数据分析的执行。在一些示例中,数据聚合可以在数据已被重新分布之后发生。例如,图3在302处示出了(例如,全局地和局部地)跨所有分片的重新分布,随后是聚合。在302处示出的重新分布和聚合可以优化执行,并提高数据分析和查询处理的效率,以用于计算上昂贵的聚合。在302处的操作可以如下表达:
ss3.ReDistribute().Query(q=>q.Count()),(10)
其中ss3表示对其应用重新分布操作和查询操作的数据集,其中查询操作输入q由计数计算q.Count来修改。
在一些示例中,数据聚合可以在重新分布操作之前发生。另外,数据聚合可以在变换操作的不同阶段不止一次地发生。例如,图3在304处示出了聚合,随后是(例如,全局地和局部地)跨所有分片的重新分布,然后是第二聚合。在304处示出的重新分布和聚合可以优化执行,并提高针对小数目个组(例如,4组或更少)的数据分析和查询处理的效率。在这样的示例中,因为组的数目较小,所以聚合的计算成本可能低于跨核或跨机器来打乱原始数据。在304处的操作可以如下表达:
ss3.Query(q=>q.Count()).ReDistribute().Query(q=>q.Sum(e=>e)),(11)
其中ss3表示以下数据集,对该数据集,向输入q应用计数q.Count的查询操作,接着是全局(例如,跨多个机器)重新分布操作,接着是向输入q应用求和q.Sum的第二查询操作。
在各种示例中,可以在重新分布操作之前和之后发生多个聚合。在这样的示例中,对于中等数目的组,查询处理和数据分析可以被优化,其中密钥跨机器的核被复制的可能性很高,并且在全局数据移动之前在机器内重新聚合将优化网络带宽使用。例如,如306处所示,聚合之后是局部重新分布(例如,跨特定机器中的分片),接着是第二聚合,例如求和操作。在第二聚合之后,可以(例如,全局地和局部地)跨所有分片来重新分布数据分片,然后可以计算第三聚合,例如最终求和。在306处的操作可以如下表达:
ss3.Query(q=>q.Count()).ReDistribute(Local()).Query(q=>q.Sum(e=>e)).ReDistribute().Query(q=>q.Sum(e=>e)),(12)
其中ss3表示以下数据集,对该数据集,向输入q应用计数q.Count的查询操作,接着是本地(例如,在单个机器内)重新分布操作,接着是向输入q应用求和q.Sum的第二查询操作,接着是全局(例如,跨多个机器)重新分布操作,接着是向输入q应用另一求和q.Sum。
如308处所示,第一聚合可以在第一本地重新分布之后发生,并且在(例如,全局地和局部地)跨所有分片的第二重新分布之后再次发生。在308处的操作可以如下表达:
ss3.ReDistribute(Local()).Query(q=>q.Count()).ReDistribute().Query(q=>q.Sum(e=>e)),(13)
其中ss3表示以下数据集,对该数据集,局部重新分布操作被应用,接着是输入q应用计数q.Count的第一查询操作,接着是向输入q应用求和q.Sum的第二查询操作。
在这样的示例中,查询处理和数据分析可以被优化用于较大数目的组,其中在第一本地重新分布之前的聚合的存储器成本(例如,构建每个核的散列表)将是非常昂贵,并且这种聚合的益处可以忽略。
图4是示出数据移动和连接操作的各种示例的框图。连接操作可以是散列连接或广播连接。连接操作可以是局部(机器内)或全局(机器间)的。在402、404和406处的示例操作是通过示例而非限制被提供的。其他操作及其组合也被设想出。在各种示例中,数据可以被移动,并且数据分片可以在不同阶段被连接,以提高效率并优化查询处理和数据分析的执行。
在一些示例中,数据的移动和连接操作可以取决于机器中的核之间、不同机器中的核之间和/或分布式服务平台中的节点之间可用的带宽。在一些示例中,数据的移动和连接操作可以取决于特定连接操作中所涉及的复杂度。
如402处所示,可以在(例如,全局地和局部地)跨所有数据分片的平坦重新分布之后发生连接操作。在这样的示例中,数据分片可以被局部地更新密钥,并且跨机器全局地重新分布。然后,数据分片可以在新位置中被更新密钥,并基于更新密钥操作在局部重新分布。在局部重新分布之后,数据分片可以在连接操作中被组合。在402处的操作可以如下表达:
ss2=ReKey(e=>e.AdId).ReDistribute().ReKey(e=>e.AdId).ReDistribute.Query(d2,(l,r)=>l.Join(r,...),(14)
其中ss2表示从变换操作被应用于数据集d2所得的数据集,变换操作包括连接数据的左分片“l”和数据的右分片“r”。
如404处所示,第一机器中的一个或多个分片可以基于更新密钥操作而被平坦地广播。在平坦广播之后,一个或多个分片可以被连接到一个或多个其他数据分片。在404处的操作可如下表达:
ss2=ReKey(e=>e.AdId).ReKey(e=>e.AdId).Broadcast().Query(d2,(l,r)=>l.Join(r,...),(15)
其中ss2表示从变换操作被应用于数据集d2所得的数据集,变换操作包括所选数据分片“l”的局部广播连接被连接到数据的特定分片“r”。
如406处所示,一个或多个数据分片可以被跨机器全局广播,因此可以在每个机器上复制正确的输入。在全局广播之后,连接操作(诸如散列连接)可以在每台机器内执行。在一些示例中,在全局广播之后的散列连接可以被执行,从而连接的较大侧不跨机器移动,由此节省与大数据移动相关联的开销。此外,每个机器中的一个或多个探针散列表可以跨分片而被分区。在406处的操作可如下表达:
ss2=ReKey(e=>e.AdId).ReDistribute(Local).ReKey(e=>e.AdId).Broadcast(Global).Redistribute(Local).Query(d2,(l,r)=>l.Join(r,...),(16)
其中ss2表示从变换操作被应用于数据集d2所得的数据集,变换操作包括执行参考数据集到第一数据集的广播连接,接着是对数据集d2的局部重新分布和查询操作,变换操作包括连接数据的左分片“l”和数据的右分片“r”。
如上所述,在402、404和406处的操作仅是无数分布式连接策略的几个说明。应当理解,取决于数据集的大小、数据集的数目、在核和/或节点之间的带宽,以及可能影响查询处理和数据分析系统的效率的其他因素,其他分布式连接策略可以被使用。此外,上面列出的操作(尽管可能用诸如C#等高级语言表达)可以以高效的批量柱状方式来执行。
图5示出了被配置为与数据分析处理平台一起操作的分布式服务平台502的示例架构500。数据分析处理平台可以位于客户端504处。在各种示例中,客户端504可以是计算设备,诸如计算设备102。在这样的示例中,客户端504可以被配置为管理和查询分布式服务平台502中的数据集。在各种示例中,分布式服务平台502可以包括账单到期即付的云供应商(例如,WINDOWS AZURE、Google Compute Engine、THE RACKSPACE OPEN CLOUD、IBMSMARTCLOUD或其他IaaS提供商)。
客户端504可以经由分布式计算资源506中的一个或多个工作者来管理和查询数据集。这样,控制流通信可以通过分散和复制的资源发生,由此增加查询处理和数据分析系统中的冗余。资源可以包括但不限于:实现密钥/值存储的表508,暴露FIFO消息抽象的一个或多个队列510,实现基于主题的消息广播的发表/订阅范例的中继512,和/或标识数据集和在数据集上的变换操作所需的其他资源。
客户端504可以与分布式计算资源506中的一个或多个工作者通信以执行各种功能。这些功能可以包括但不限于:操纵集群(例如,创建、供应、按比例放大/缩小、按需解除集群等),利用数据集来工作(例如,创建数据集、搜索数据集、共享数据集、删除数据集)以及将任务排队以供工作者执行(例如,描述要对数据集执行的变换操作)。响应于来自客户端504的指令,一个或多个工作者可以管理节点间网络通信,启用查询处理,并经由资源向客户端504提供关于进度和/或错误的反馈。在各种示例中,反馈和/或错误报告可以经由与客户端504相关联的计算设备上的输入/输出接口而被传达给用户。各种功能的说明性示例在下面的表1和表2中示出。
表1
表2
在各种示例中,客户端504可以创建和供应一个或多个工作者以进行分析。在这样的示例中,一个或多个工作者可以被组织到分布式计算资源506的虚拟集群514,诸如W1516-WN 520。每个虚拟集群514可以表示机器组,该机器组可以作为单个单元来操作。在各种示例中,每个虚拟集群514可以与发表/订阅中继中的广播主题(“主题”)相关联。该主题可以是虚拟集群中的数据分片的有效载荷。在这样的示例中,在虚拟集群514中的一个或多个工作者可以被分配来自发表/订阅中继的主题。在一些示例中,每个虚拟集群W1 516-WN520可以与特定名称相关联。
如上所述,客户端504可以删除集群,例如通过“拆卸”命令。另外,客户端504可以通过创建具有期望大小的新虚拟集群WN 520,移动数据集(例如通过重新分片或重新分布操作),以及删除原始虚拟集群W2 518,以调整特定虚拟集群(诸如W2 518)的大小。在各种示例中,虚拟集群514可以用作数据移动操作的位置描述符,诸如上面关于图3和图4描述的数据移动操作。
在各种示例中,与虚拟集群514相关的数据(例如,分布式计算资源的数目,与虚拟集群相关联的分布式计算资源等)可以被存储在表508中。在至少一个示例中,数据可以被存储在元数据表中。另外,表508中的元数据表可以存储与磁盘数据集相关联的元数据(例如,指向分布式服务平台中的路径的数据集),以及与查询处理和数据分析平台相关联的存储器内数据集(例如,持久存储在分布式主存储器中的数据集)。在各种示例中,存储在表508中的元数据可以由客户端504访问,例如用于搜索操作和/或创建用于查询处理和数据分析的新数据集。在一些示例中,客户端504还可以删除数据集并回收存储器。例如,如上面表1所示,应用1创建DiskDataset,将DiskDataset作为InMemDataset(例如,存储器内数据集)加载到10个机器的虚拟集群中,然后将其删除。名为“adcounts”的结果数据集之后被取回,并由表2中所示的应用2使用。在其他示例中,虚拟集群可以包括不同数目的机器,例如5、20或23个机器。使用这种分布式资源(诸如云表)进行协调的好处是:不要求可以用作分布式系统的单个故障点的“主节点”。此外,这种分布式资源通常具有这种系统所要求的内置高可用性保证。
响应于数据集被取回并存储在群集514中,客户端504可以执行分析查询(例如,变换操作)。在一些示例中,操作可以被客户端504作为单个任务向虚拟集群发送。例如,变换操作被流水线化,并作为单个任务被发送。任务是被从客户端504发送到虚拟集群514中的一个或多个工作者的工作单元,并且可以表示节点内物理子计划。任务可以一起表示分布式物理计划。如上所述,分布式物理计划可以基于节点之间的带宽、计算的开销、集群中机器的数目、数据集的数目、等等。客户端504可以经由中继510来向一个或多个工作者发送每个任务。
在各种示例中,变换操作可以在表508中被跟踪。在至少一个示例中,变换操作可以被存储在血缘表中。在一些示例中,可以在节点故障时使用表508,以便对存储在故障节点中的数据重新进行操作。在各种示例中,表508的元数据表可以被更新,以反映恢复的数据集分片的新位置。
在各种示例中,分布式物理计划可以基于在集群514中的分布式计算资源506之间的网络连接。在这样的示例中,发送器分布式计算资源(诸如分布式计算资源506(1))可以创建TCP端点,并在表508中存储连接数据。接收器分布式计算资源(诸如分布式计算资源506(2))可以读取连接数据以实例化连接请求。一旦在分布式计算资源506之间建立连接,该连接就被高速缓存以便于后续数据移动。在一些示例中,发送器分布式计算资源506(1)可以将变换后的数据集写入该组网络连接,诸如通过ToBinaryStream命令。在各种示例中,接收器分布式计算资源506(2)可以将来自该组网络连接的数据组装到结果数据集中,诸如通过FromBinaryStream命令。
在各种示例中,数据集可以被拆分为驻留在多个存储帐户中。在这样的示例中,系统能够具有更高的读带宽。客户端504可以在数据集的不同分片中每个分片的存储中确定位置。客户端504可以将作为加载任务的信息发送到队列512,作为工作队列。一个或多个工作者可以从队列512读取加载任务,并使用多个线程加载数据。在各种示例中,数据加载进度可以被跟踪,并经由队列512被报告给客户端504,例如经由已完成的任务队列。
在一些示例中,操作可以作为两个任务被发送到虚拟集群,第一操作用于发送器,第二操作用于接收器。例如,数据移动操作(诸如重新分布操作)将流水线分成两个分离且不同的任务,并将任务发送到适当的虚拟集群514。在一些示例中,数据移动操作的发送器和接收器可以是相同的虚拟集群514,诸如W1 516。在其他示例中,数据移动操作的发送器和接收器可以是不同的虚拟集群,诸如W1 516和WN 520。
在各种示例中,客户端504可以基于适当的主题将与操作相关联的任务序列化,并发布到中继510。被订阅给该主题的一个或多个工作者(例如,被分配给与该主题相关联的虚拟集群的工作者)可以适当地接收和执行任务。一个或多个工作者可以记录任务的完成。在一些示例中,任务完成的文档可以与完成该任务的工作者的标识被一起存储在表508中的密钥/值存储中。在这样的示例中,客户端504可以参考表508以更新各种任务的进度。另外,客户端504可以确定:当表508中的密钥/值存储包含虚拟集群514中的一个或多个工作者中的每一个的标识时,查询完成。
另外,客户端504可以通过队列512(诸如经由错误队列)跟踪查询错误(例如,由于错误输入数据导致的失败任务,客户端查询中的错误等)。在一些示例中,一个或多个工作者可以经由特殊错误消息向队列512发送错误信息。在这样的示例中,客户端504可以访问特殊错误消息,并显示错误。
图6是示出查询处理和数据分析系统的分析工作流程600的框图。在各种示例中,计算设备602(诸如计算设备102)可以接收查询输入604。查询输入604可以是结构化查询语言(SQL)、时间SQL或其他数据库查询语言的形式。在一些示例中,查询输入604可以是声明性查询。
如上面关于图2所述,计算设备602可以将查询输入604(2)接收到分布式编程抽象和框架606中。在这样的示例中,查询输入604(2)可以应用于实时数据和/或离线时间关系数据。
在各种示例中,计算设备602可以将查询输入604(1)接收到查询优化器608中。在这样的示例中,查询优化器608可以生成一个或多个候选物理计划610。候选物理计划610(例如,分布式物理计划)可以是用于处理查询输入602的一系列步骤。该系列步骤可以包括但不限于查询操作,上面关于图3-图5描述的操作(例如,重新分布操作、更新密钥操作、连接操作、计数操作、求和操作、用密钥操作选择、虚拟工作者指令等)。
在一些示例中,一个或多个候选物理计划610可以基于一个或多个因素,诸如机器之间的可用带宽、核之间的可用带宽、输入数据集的大小、输入数据集的当前分布等。在一些示例中,一个或多个候选物理计划6\10可以基于作业的性质,诸如被应用于实时数据和/或离线时间关系数据的连续和/或循环作业。
在各种示例中,计算设备602可以接收修改输入612。修改输入612可以是对一个或多个候选物理计划610的选择和/或修改。在一些示例中,修改输入612可以请求经由分布式编程抽象和框架606、针对查询优化器608来对候选物理计划610进行计划验证。在这样的示例中,候选物理计划610可以在实现之前被验证和审查。
在一些示例中,查询优化器608可以接收包括专门(离线)作业的查询输入604(1)。在这样的示例中,查询优化器608可以将输入直接发送到分布式编程抽象和框架606以进行处理。分布式编程抽象和框架606可以处理变换操作并生成数据集,以便执行查询处理和数据分析系统的分析工作流。
说明性过程
图7-图10是描绘用于查询处理和数据分析的示例过程的流程图。示例过程的操作在各个框中示出,并参考这些框进行总结。这些过程被示出为框的逻辑流,每个框可以表示可以用硬件、软件或其组合实现的一个或多个操作。在软件的上下文中,操作表示存储在一个或多个计算机可读介质上的计算机可执行指令,计算机可执行指令当由一个或多个处理器执行时,使得一个或多个处理器能够执行所述操作。通常,计算机可执行指令包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、模块、组件、数据结构等。描述操作的次序不旨在被解释为限制,并且任何数目的所描述的操作可以以任何顺序执行,以任何顺序组合,被细分为多个子操作,和/或并行执行以实现所述过程。
图7是示出查询处理和数据分析平台的示例过程流程700的流程图。
在702处,计算设备(诸如计算设备102)可以接收查询。在各种示例中,查询可以经由计算设备的一个或多个输入/输出设备被输入。查询可以是问题、期望分析的陈述、查询操作、编码指令、查询主题等的形式。在各种示例中,计算设备可以经由HLL集成查询处理和数据分析系统(例如,客户端库)来处理查询。作为说明性示例,用户可以输入诸如“确定每小时在特定网站上的点击次数”的查询。
在704处,计算设备可以访问第一数据集。第一数据集可以至少部分地基于702处的查询输入而被访问。在各种示例中,数据集可以包括一个或多个数据分片。分片中的数据可以按时间戳次序存储在数据集中。在一些示例中,每个分片中的数据可以是相关数据(例如,相同或相似的主题)。在一些示例中,每个分片中的数据可以被随机存储(例如,不同的主题)。接着上面的示例,第一数据集可以包括与特定网站相关联的数据。
在各种示例中,第一数据集可以是由计算设备访问的多个数据集中的一个数据集。第一数据集和/或多个数据集可以在单核上或跨机器的多个核来存储。在一些示例中,第一数据集和/或多个数据集可以跨诸如分布式服务平台中的多个节点来存储。
在706处,计算设备可以将数据标识符(例如,密钥)分配给第一数据集的数据分片。数据标识符可以被分配给数据集中的各个数据分片。在具有多个数据集的示例中,计算设备可以将数据标识符分配给每个数据集中的每个数据分片。在一些示例中,第一数据集中的每个数据分片可以与不同的数据标识符相关联。在其他示例中,两个或更多个分片可以与相同的数据标识符相关联。数据标识符可以基于数据分片的主题而被分配。例如,具有与网站标识相关的信息的数据分片可以被分配“WebsiteId”作为数据标识符。
在708处,计算设备可以跨各个数据分片来重新分布数据。在一些示例中,数据的移动可以基于经由计算设备的一个或多个输入/输出设备的重新分布操作输入。在各种示例中,计算设备可以通过跨同一机器中的分片移动数据来重新分布数据,从而相同的密钥驻留在每个分片中。在一些示例中,计算设备可以通过跨不同机器中的分片移动数据来重新分布数据,从而相同的密钥驻留在每个分片中。数据的特定移动可以至少部分地基于机器的核之间、机器之间和/或分布式服务平台的节点之间的带宽来确定。
在710处,计算设备可以接收查询操作。在各种示例中,查询操作可以经由计算设备的一个或多个输入/输出设备而被输入。在一些示例中,查询操作可以与702处的查询输入相关。例如,在上面的示例之后,想要确定在网站上发生了多少点击的用户可以输入诸如计数操作的查询操作,以对存储在数据集中的数据上的点击数进行计数。
在712处,计算设备可以至少部分地基于查询操作来执行对数据的计算。例如,计算设备可以在712处计算每个网站的计数。在各种示例中,可以在712处的计算之前,诸如在数据的重新分布之前,一个或多个其他计算可以在数据上执行。例如,可以在重新分布之前对数据分片执行计数操作,并且接着执行712处的求和操作。
在714处,计算设备可以使计算的输出呈现在计算设备的显示器上。在各种示例中,聚合可以是702处的查询输入的基础。接着上面的示例,聚合可以是特定网站上的点击总数。
另外,计算设备102可以使得一个或多个动作在变换结果上进行。一个或多个动作可以用于具体化查询结果,诸如将变换结果具体化到主存储器中(例如,将计算存储到可能的分布式存储器内数据集),到指定路径(例如,将结果存储在持久数据存储中),到输入/输出流(例如,将I/O流的阵列作为参数,并以高效的二进制格式将每个分片输出到阵列中的对应I/O流),和/或接受特定指令以对结果进行直接操作。
图8是示出与分布式服务平台通信的查询处理和数据分析平台的示例过程流程800的流程图。
在802处,计算设备可以定义分布式服务平台中的两个或更多个机器(例如,节点)的集群。在一些示例中,计算设备可以定义两个或更多个集群。在各种示例中,可以至少部分地基于存储在集群中的一个或多个数据集为集群选择两个或更多个机器。在一些示例中,集群可以基于查询而被定义(例如,被选择并组合在一起的机器)。在各种示例中,查询可以经由计算设备的一个或多个输入/输出设备被输入。查询可以是问题、期望分析的陈述、查询操作、编码指令、查询主题等的形式。在各种示例中,计算设备可以经由云数据分析系统(例如,云库)、经由HLL集成查询处理和数据分析系统(例如,客户端库)来处理查询。
在804处,计算设备可以请求与虚拟工作者建立通信路径。在各种示例中,虚拟工作者可以是与特定集群中的一个或多个机器相关联的工作者实体。在一些示例中,虚拟工作者可以是执行由计算设备诸如经由通信路径来分配的任务的工作者实体。通信路径可以是双向通信路径,其被配置为支持发送和接收指令和数据。通信路径可以经由一个或多个网络。在各种示例中,虚拟工作者可以经由通信路径从计算设备接收指令,并且可以根据需要在集群中执行指令。
在806处,计算设备可以将标识符与虚拟工作者相关联。在各种示例中,标识符可以至少部分地基于与集群中的机器相关联的数据集中的数据。在这样的示例中,标识符可以基于与数据集中的数据分片相关联的有效载荷。
在808处,计算设备可以将变换操作发送给虚拟工作者。在各种示例中,计算设备可以使虚拟工作者执行变换操作。变换操作可以包括查询操作,重新分片操作(例如,循环移动分片内容以实现相等的分片大小),广播操作(例如,跨所有分片来复制分片内容),更新密钥操作(例如,改变与每个分片中每一行相关联的密钥),重新分布操作(例如,跨同一机器中的分片移动数据,从而相同的密钥驻留在每个分片中;跨不同机器中的分片移动数据,从而相同的密钥驻留在每个分片中),以及重命名操作(例如,在每个分片上构造新的有效载荷)。多播是一种强大的数据移动操作,它基于有效载荷上用户提供的λ表达式,向零个或多个结果分片发送每个输入分片中的每个元组。使用多播,人们可以选择性地将元组复制到结果分片以实现θ连接、并行多路连接、矩阵运算、时空计算等。在各种示例中,变换可以包括以上列出的操作中的各操作中的一个或多个。在一些示例中,变换可以包括上面列出的操作的子集中的一个或多个。例如,变换可以包括查询操作、更新密钥操作和重新分布操作。又例如,变换可以包括查询操作、广播操作、更新密钥操作和重新分布操作。
在810处,计算设备可以访问第一机器上的第一数据集。在各种示例中,计算设备可以经由虚拟工作者访问第一数据集。第一数据可以至少部分地基于查询而被访问。在各种示例中,第一数据集可以包括一个或多个数据分片。分片中的数据可以按时间戳次序存储在第一数据集中。在一些示例中,每个分片中的数据可以是相关数据(例如,相同或相似的主题)。在一些示例中,每个分片中的数据可以被随机存储(例如,不同的主题)。第一数据集可以存储在单核上,或者跨群集中的计算机的多个核而被存储。
在812处,计算设备可以访问第二机器上的第二数据集。在各种示例中,计算设备可以经由虚拟工作者访问第二数据集。在各种示例中,计算设备可以经由虚拟工作者访问第二数据集。第二数据集可以至少部分地基于查询而被访问。在各种示例中,第二数据集可以包括一个或多个数据分片。分片中的数据可以按时间戳次序存储在第二数据集中。在一些示例中,每个分片中的数据可以是相关数据(例如,相同或相似的主题)。在一些示例中,每个分片中的数据可以被随机存储(例如,不同的主题)。第二数据集可以存储在单核上,或者跨群集中的计算机的多个核而被存储。
在814处,计算设备可以生成第三数据集和第四数据集。在各种示例中,计算设备可以使得第三数据集和第四数据集由虚拟工作者生成。在一些示例中,第三数据集和第四数据集可以通过重新分布数据而生成。数据可以跨机器和/或跨机器的核来分布。
在一些示例中,数据重新分布可以至少部分地基于被分配给第一数据集和第二数据集的每个数据分片的数据标识符(例如,更新密钥操作)。在这样的示例中,计算设备可以使虚拟工作者来分配相应的数据标识符。相应数据集中的数据分片可以被分配不同的标识符。在一些示例中,在相应数据集中的两个或更多个数据分片可以具有相同的数据标识符。在各种示例中,数据标识符可以基于数据分片的主题而被分配。例如,具有与用户标识相关的信息的数据分片可以被分配“UserId”作为数据标识符。
在一些示例中,第三数据集和/或第四数据集可以作为磁盘数据集而被存储。在这样的示例中,存储的磁盘数据集可以指向分布式服务平台存储中的路径。在一些示例中,第三数据集和/或第四数据集可以存储到分布式服务平台的机器的主存储器。无论如何存储,第三数据集和第四数据集都可以被存储,以便在将来的查询处理和数据分析中可访问。
在818处,计算设备可以对第三数据集和第四数据集执行计算。在各种示例中,计算设备可以使虚拟工作者执行计算。在这样的示例中,计算设备可以通过经由通信路径向虚拟工作者发送查询操作来使虚拟工作者执行计算。例如,计算设备可以发送查询操作,以对数据集中存在的多个UserId进行计数。
在各种示例中,计算设备可以使虚拟工作者执行多于一个的计算。在这样的示例中,计算可以被连续执行,或者被其他操作在中间间隔开。例如,可以在生成第三数据集和第四数据集之前执行第一计算,并且可以对第三数据集和第四数据集执行第二计算。
图9是示出查询处理和数据分析平台的示例过程流程900的流程图。
在902处,计算设备可以访问第一数据集。第一数据集可以至少部分地基于查询(例如,问题、期望分析的陈述、查询操作、编码指令、查询主题等)而被访问。在各种示例中,数据集可以包括一个或多个数据分片。分片中的数据可以按时间戳次序存储在数据集中。在一些示例中,每个分片中的数据可以是相关数据(例如,相同或相似的主题)。在一些示例中,每个分片中的数据可以被随机存储(例如,不同的主题)。接着上面的示例,第一数据集可以包括与特定网站相关联的数据。
在各种示例中,第一数据集可以是由计算设备访问的多个数据集中的一个数据集。第一数据集和/或多个数据集可以在单核上或跨机器的多个核来存储。在一些示例中,第一数据集和/或多个数据集可以跨诸如分布式服务平台中的多个节点来存储。
在904处,计算设备可以将第一查询操作应用于第一数据集。在各种示例中,第一查询操作可以经由计算设备的一个或多个输入/输出设备而被输入。在一些示例中,查询操作可以与整体查询相关。在一些示例中,查询操作可以是对数据集中的数据的第一聚合。例如,想要确定在网站上发生了多少点击的用户可以输入诸如计数操作的查询操作,以对存储在数据集中的数据上点击数进行计数。
在906处,计算设备可以将数据标识符(例如,密钥)分配给第一数据集中的每个分片。数据标识符可以被分配给数据集中的各个数据分片。在具有多个数据集的示例中,计算设备可以将数据标识符分配给每个数据集中的每个数据分片。在一些示例中,第一数据集中的每个数据分片可以与不同的数据标识符相关联。在其他示例中,两个或更多个分片可以与相同的数据标识符相关联。数据标识符可以基于数据分片的主题而被分配。例如,具有与网站标识相关的信息的数据分片可以被分配“WebsiteId”作为数据标识符。
在908处,计算设备可以跨各个数据分片来重新分布在第一数据集中的数据。在一些示例中,数据的移动可以基于经由计算设备的一个或多个输入/输出设备的重新分布操作输入。在各种示例中,计算设备可以通过跨同一机器中的分片移动数据来重新分布数据,从而相同的密钥驻留在每个分片中。在一些示例中,计算设备可以通过跨不同机器中的分片移动数据来重新分布数据,从而相同的密钥驻留在每个分片中。数据的特定移动可以至少部分地基于机器的核之间、机器之间和/或分布式服务平台的节点之间的带宽来确定。
在910处,计算设备可以对第三数据集执行计算。在各种示例中,计算可以基于第二查询操作。在一些示例中,一个或多个其它计算可以在910处的计算之前对数据执行,诸如在908处的数据的重新分布之前,或在904处的第一查询操作处。例如,可以在重新分布之前对数据分片执行计数操作,并且可以接着进行910处的求和操作。
在912处,计算设备可以输出计算结果,以在计算设备的显示器上呈现。在各种示例中,计算可以是整体查询的基础。
另外,计算设备可以使一个或多个动作在变换结果上进行。一个或多个动作可以用于具体化查询结果,诸如将变换结果具体化到主存储器中(例如,将计算存储到可能的分布式存储器内数据集),到指定路径(例如,将结果存储在持久数据存储中),到输入/输出流(例如,将I/O流的阵列作为参数,并以高效的二进制格式将每个分片输出到阵列中的对应I/O流),和/或接受特定指令以对结果进行直接操作。
图10是示出查询处理和数据分析平台的示例过程流程1000的流程图。
在1002处,计算设备可以接收输入数据集的标识。输入数据集可以在单个机器上、在机器的单个核上、跨机器的多个核、跨多个机器、跨多个机器中的多个核和/或跨分布式服务平台的一个或多个节点来存储。输入数据集的标识可以包括与输入数据集相关联的名称、与输入数据集相关联的主题、为存储在输入数据集中的数据所指定的时间段,等等。
在各种示例中,输入数据集可以包括一个或多个数据分片。分片中的数据可以按时间戳次序存储在输入数据集中。在一些示例中,每个分片中的数据可以是相关数据(例如,相同或相似的主题)。在一些示例中,每个分片中的数据可以被随机存储(例如,不同的主题)。
在1004处,计算设备可以接收要被应用于输入数据集的变换操作。变换操作可以包括查询操作(例如,包括可转移计算逻辑的查询),更新密钥操作(例如,改变与每个分片中的每一行相关联的密钥),数据移动操作(例如,重新分布操作,诸如跨同一机器中的分片移动数据,从而相同的密钥驻留在每个分片中,跨不同机器中的分片移动数据,从而相同的密钥驻留在每个分片中)。在一些示例中,变换操作可以包括重新分片操作(例如,循环移动分片内容以实现相等的分片大小),广播操作(例如,跨所有分片复制分片内容),和/或重命名操作(例如,在每个分片上构造新的有效载荷)。
另外,变换操作可以包括多播操作。多播是一种强大的数据移动操作,它基于有效载荷上用户提供的λ表达式,向零个或多个结果分片发送每个输入分片中的每个元组。使用多播,人们可以选择性地将元组复制到结果分片以实现θ连接、并行多路连接、矩阵运算、时空计算等。在各种示例中,变换可以包括以上列出的操作中的各操作中的一个或多个。在一些示例中,变换可以包括上面列出的操作的子集中的一个或多个。例如,变换可以包括查询操作、更新密钥操作和重新分布操作。又例如,变换可以包括查询操作、广播操作、更新密钥操作和重新分布操作。
在1006处,计算设备可以访问输入数据集。在输入数据集存储在分布式计算资源中的示例中,计算设备可以指示虚拟工作者访问输入数据集。
在1008处,计算设备可以将变换操作应用于输入数据集。在各种示例中,每个变换可以作为单独的函数在每个数据集上发生。通过分离密钥化、数据移动和查询逻辑,计算设备可以通过以依赖于情境的方式在数据上执行变换和动作,以集成的方式构建复杂的分布式物理计划。分布式物理计划可以在不同规模上高效执行,也可以被重复用于将来的查询操作。例如,在具有较大数目的组的多核设置中,重新分布原始数据可能在计算上是昂贵的。这样,查询处理和数据分析系统可以允许数据的更新密钥,以组织数据分片的有效载荷,并且允许接着的对更新密钥的数据的第一计算。基于第一计算,可以在数据集之间重新分布数据的分片,并且可以进行第二计算。因此,重新分布的延迟可以显著减少网络流量的量,因为第一计算可以减少要被重新分布的数据量。通过分离增量查询逻辑规范、一小组但丰富的数据移动操作以及密钥化,人们可以在以不同规模为目标的HLL中构建复杂的分布式物理计划,包括现代的、基于扫描的柱状数据库的物理计划、连续查询(例如,混合对称散列和广播连接)和分布式设置(例如,用于多路或θ连接的选择性数据复制和矩阵操作)。至关重要的是,物理计划通过构造、在实时部署和离线部署之间可转移。
在1010处,计算设备可以生成结果数据集。在一些示例中,结果数据集可以被高速缓存到存储器,以便在类似的查询场景中进行查找和再利用。通过(例如,在主存储器和/或外部存储设备中)保存数据集,查询处理和数据分析系统可以节省未来查询中的计算时间,由此提高系统的整体效率。在一些示例中,结果数据集可以在机器上、跨多个机器和/或跨一个或多个机器的一个或多个核来存储。在各种示例中,结果数据集可以跨诸如分布式服务平台中的多个节点来存储。
图11示出了查询处理和数据分析系统相对于现有技术的改进性能的示例图1100。示例图1100是:图1-图10中描述的查询处理和数据分析平台与另一平台“SparkTM”相比的聚合性能(例如,计算源自每个sourceIP的总收益)的图示。图的x轴包括每个数据集大小的节点数目。数据集大小在10/240GB、20/480GB、30/720GB和40/960GB处被比较。图的y轴包括每秒数百万元组的吞吐量。
在说明性示例中,查询处理和数据分析平台结果被示出为线1106,其明显优于如线1108所示的其他平台SparkTM。事实上,随着每个数据集大小的节点数目增加,查询处理和数据分析平台的吞吐量急剧增加,从10/240GB处的每秒5500万个元组增加到40/960GB处的每秒1.86亿个元组,而相比之下其他平台分别是每秒2000万个元组和每秒5000万个元组。
另外,查询处理和数据分析平台在扫描性能(例如,运行扫描查询)和连接性能(例如,计算在给定时期(例如,一周)内产生最高收益的sourceIP和相关联的pageRank))方面显著地优于其他平台。
图12示出了包括被配置为支持查询处理和数据分析系统的示例设备(诸如图1中的计算设备102)的示例设备。在设备1200中,(多个)处理单元1202可以表示例如CPU型处理单元、GPU型处理单元、现场可编程门阵列(FPGA)、另一类数字信号处理器(DSP)、或者在某些情况下可以由CPU驱动的其他硬件逻辑组件。例如但不作限制,可以使用的说明性类型的硬件逻辑组件包括:专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等。在一些示例中,查询处理和数据分析系统可以在存储到计算设备1200上的代码上运行,诸如在计算机可读介质(CRM)1204中。
在一些示例中,CRM 1204可以表示CRM 110并且可以存储可由(多个)处理单元1202执行的指令,如上所述,处理单元1202可以表示并入在设备1200中的处理单元。CRM1204还可以存储可由外部处理单元(诸如,外部CPU型处理单元1206、外部GPU型处理单元1208)和/或可由外部加速器1210(诸如,FPGA型加速器1210(1)、DSP型加速器1210(2)或任何其他加速器1210(N))执行的指令。在各种示例中,至少一个CPU型处理单元、GPU型处理单元和/或加速器被并入设备1200中,而在一些示例中,CPU型处理单元、GPU型处理单元和/或加速器中的一个或多个在设备1200外部。
在所示示例中,CRM 1204还包括数据存储1212。在一些示例中,数据存储1212包括数据存储,诸如数据库、数据仓库或其他类型的结构化或非结构化数据存储。在一些示例中,数据存储1212可以包括具有一个或多个表、索引、所存储的过程等的语料库和/或关系数据库,以实现数据访问,包括例如超文本标记语言(HTML)表、资源描述框架(RDF)表、web本体语言(OWL)表和/或可扩展标记语言(XML)表中的一个或多个。数据存储1212可以存储用于存储在CRM 1204中和/或由处理单元1202执行的过程、应用、组件和/或模块的操作的数据。备选地,上述参考数据和/或指令中的一些或全部可以存储在一个或多个处理单元1202、CPU型处理单元1206、GPU型处理单元1208和/或(多个)加速器1210机载的分离的存储器1214上。
设备1200还可以包括一个或多个输入/输出(I/O)接口1216,以允许设备1200与输入/输出设备通信,诸如包括外围输入设备(例如,键盘、鼠标、笔、游戏控制器、语音输入设备、触摸输入设备、手势输入设备等)的用户输入设备和/或包括外围输出设备(例如,显示器、打印机、音频扬声器、触觉输出等)的输出设备。另外,在设备1200中,(多个)网络接口1218可以表示例如网络接口控制器(NIC)或其他类型的收发器设备,以通过网络发送和接收通信。
在各种示例中,(多个)网络接口1218可以被配置为:与存储要在查询处理和数据分析系统中使用的数据集的一个或多个其他设备通信。在一些示例中,一个或多个其他设备可以与计算设备102基本相似。在一些示例中,一个或多个其他设备可以包括具有存储器、通信和处理能力的计算设备。例如,一个或多个其他设备可以包括但不限于:服务器计算机或刀片服务器(诸如web服务器),支持非均匀存储器访问(NUMA)的计算机,或其他计算引擎或网络附接的存储单元,台式计算机,膝上型计算机,瘦客户端,终端或其他移动计算机,个人数字助理(PDA),可穿戴计算机(诸如智能手表或生物标识或医疗传感器),植入式计算设备(诸如生物标识或医疗传感器),计算机导航消费者计算设备,基于卫星的导航系统设备(包括全球定位系统(GPS)设备和其他基于卫星的导航系统设备),智能电话,移动电话,移动电话-平板计算机混合设备,或其他电信设备,平板计算机或平板混合计算机,便携式或基于控制台的游戏设备或其他娱乐设备(诸如支持网络的电视),机顶盒,媒体播放器,照相机或个人视频记录器(PVR),或包括在计算设备、电器或其他计算设备中的集成组件,其被配置为参与或执行如本文所述的查询处理和数据分析。一个或多个其他设备可以被配置为与计算设备1200通信,以在计算设备1200与一个或多个其他设备之间共享全局数据和/或计算结果。
在所示示例中,设备1200可以经由总线1220将(多个)处理单元1202可操作地连接到CRM 1204、(多个)I/O接口1216和(多个)网络接口1218。在一些示例中,总线1220可以包括以下一项或多项:系统总线、数据总线、地址总线、PCI总线、Mini-PCI总线以及各种本地、外围和/或独立总线。
在所示示例中,CRM 1204还包括操作系统1222。操作系统1222可以是MICROSOFTWINDOWS、WINDOWS、QNXTM、IBM z/OSTM、LINUX、ANDROID、iOSTM、OS XTM、NETBSDTM,或者能够管理设备1200上的计算机硬件和软件资源的任何其他操作系统。
CRM 1204还包括查询处理和数据分析框架1224。查询处理和数据分析框架1224可以包括一个或多个模块和/或API,其被示为框1226、1228、1230和1232,但这只是示例,并且个数可以更高或更低。与框1226、1228、1230和1232关联地进行描述的功能可以被组合,以由更少数目的模块和/或API执行,或者该功能可以被分裂,并由更多数目的模块和/或API执行。例如,框1226可以表示用户界面。
框1228可以表示查询模块。在各种示例中,查询模块可以诸如经由一个或多个I/O接口1216接收输入查询。查询模块可以处理输入查询,并确定查询的主题。在一些示例中,查询模块可以标识位于一个或多个联网计算设备上的一个或多个数据集。一个或多个联网计算设备可以包括计算设备1200、一个或多个其他计算设备和/或在分布式服务平台中的一个或多个节点。
框1230可以表示变换模块。在各种示例中,变换模块可以使得对一个或多个变化在一个或多个标识出的数据集上执行。变换可以包括查询操作(例如,在每个分片上应用未修改的查询)、重新分片操作(例如、循环移动分片内容以实现相等的分片大小)、广播操作(例如、跨所有分片复制分片内容)、更新密钥操作(例如、改变与每个分片中的每一行相关联的密钥)、重新分布操作(例如、跨同一机器的分片的数据移动,从而相同的密钥驻留在每个分片中,跨不同机器的分片的数据移动,从而相同的密钥驻留在每个分片中)、以及重命名操作(例如、在每个分片上构建新的有效载荷)。
在各种示例中,变换可以包括上面列出的操作中的各操作中的一个或多个。在一些示例中,变换可以包括上面列出的操作的子集中的一个或多个。例如,变换可以包括查询操作,更新密钥操作和重新分布操作。又例如,变换可以包括查询操作、广播操作、更新密钥操作和重新分布操作。
框1232可以表示动作模块。在各种示例中,动作模块可以包括用于对(多个)处理单元1202进行编程以具体化查询结果的逻辑,诸如将变换结果具体化到主存储器(例如,将计算存储到可能的分布式存储器内数据集),到指定的路径(例如,将结果存储在持久性数据存储中),到输入/输出流(例如,将I/O流的阵列作为参数,并以高效的二进制格式将每个分片输出到阵列中的对应的I/O流),和/或接受特定操作以直接对结果进行操作。
备选地,上述参考数据中的一些或全部可以存储在分离的存储器1234上,诸如CPU型处理单元1206机载的存储器1234(1),GPU型处理单元1208机载的存储器1234(2),FPGA型加速器1210(1)机载的存储器1234(3),DSP型加速器1210(2)机载的存储器1234(4),和/或另一加速器1210(N)机载的存储器1234(M)。
示例条款
A:一种系统,包括:一个或多个处理器;以及一个或多个计算机可读介质,其上存储有计算机可执行指令,计算机可执行指令响应于由一个或多个处理器执行以将设备配置为执行操作,包括:接收输入数据集的标识;接收要被应用于输入数据集的变换操作,其中变换操作包括以下一项或多项:包括可转移计算逻辑的查询;更新密钥操作,更新密钥操作被配置为将输入数据集中的一个或多个分片的分片中的元组与标识符相关联;或者数据移动操作;至少部分地基于标识来访问输入数据集,输入数据集包括一个或多个数据分片;将变换操作应用于输入数据集;以及至少部分地基于变换后的数据集来生成结果数据集。
B:根据段落A所述的系统,其中输入数据集包括以时间戳次序存储的数据。
C:根据段落B所述的系统,其中数据移动操作包括以下一项或多项:广播连接;多播连接;或者至少部分地基于标识符来重新分布输入数据集中的一个或多个数据分片的内容。
D:根据段落A-C中的任一段落所述的系统,其中一个或多个数据分片被定位在分布式存储器上。
E:根据段落A-D中的任一段落的系统,其中输入数据集包括在分布式服务平台的第一机器上存储的第一部分和在分布式服务平台的第二机器上存储的第二部分,并且其中变换操作由分布式服务平台上的虚拟工作者执行。
F:根据段落A-E中的任一段落所述的系统,其中输入数据集包括定位在机器的第一核上的第一部分以及定位在机器的第二核上的第二部分,并且变换操作至少部分地基于在机器的第一核和机器的第二核之间的带宽。
G:根据段落A-F中的任一段落所述的系统,操作还包括:接收第二输入数据集的标识;访问第二输入数据集,第二输入数据集包括一个或多个数据分片;以及将变换操作应用于第二输入数据集,其中变换操作是跨输入数据集和第二输入数据集中的一对分片而应用的双输入变换操作,并且其中结果数据集包括来自输入数据集和第二输入数据集的数据。
H:根据段落A-G中的任一段落所述的系统,操作还包括:接收查询;将查询优化器应用于查询;生成分布式物理计划;以及接收对分布式物理计划的修改。
I:一种计算机可读介质,其上具有计算机可执行指令,计算机可执行指令响应于执行将计算机配置为执行根据段落A-H中的任一段落所述的方法。
J:一种方法,包括:定义两个或更多个机器的集群,两个或更多个机器中的每个机器包括至少一个数据集;请求建立与虚拟工作者的通信路径,虚拟工作者与集群相关联;将标识符与虚拟工作者相关联;至少部分地基于标识符、经由通信路径向虚拟工作者发送操作,变换操作包括:访问第一数据集,第一数据集包括至少两个数据分片;访问第二数据集,第二数据集包括至少两个数据分片;以及通过在以下一项或多项之间重新分布数据来生成第三数据集和第四数据集:在第一数据集上的至少两个数据分片;在第二数据集上的至少两个数据分片;或者第一数据集和第二数据集。
K:根据段落J所述的方法,其中发送操作还包括以下一项或多项:发送包括可转移计算逻辑的查询;发送更新密钥操作,更新密钥操作被配置为将输入数据集中的一个或多个分片的分片中的元组与标识符相关联;或者发送数据移动操作。
L:根据段落J或K所述的方法,其中发送操作还包括:访问参考数据集,参考数据集包括至少两个数据分片,其中生成第三数据集和第四数据集还包括将参考数据集连接到第一数据集和第二数据集。
M:根据段落L所述的方法,其中将参考数据集连接到第一数据集和第二数据集包括:标识与参考数据集相关联的至少两个数据分片的参考分片;标识与第一数据集相关联的至少两个数据分片的第一分片;标识与第二数据集相关联的至少两个数据分片的第二分片;以及向第一分片和第二分片发送第一分片中的数据。
N:根据段落L所述的方法,其中将参考数据集连接到第一数据集和第二数据集包括:向与第一数据集相关联的至少两个数据分片和与第二数据集相关联的至少两个数据分片发送与参考数据集相关联的至少两个数据分片中的数据。
O:根据段落J-N中的任一段落所述的方法,其中与第一数据集相关联的至少两个数据分片以及与第二数据集相关联的至少两个数据分片包括以时间戳次序存储的数据。
P:根据段落J-O中的任一段落所述的方法,还包括:通过虚拟工作者将第三数据集和第四数据集存储在磁盘数据集中或存储器内数据集中;以及通过虚拟工作者将与第三数据集和第四数据集相关联的元数据存储在元数据表中。
Q:一种计算机可读介质,其上具有计算机可执行指令,计算机可执行指令响应于执行将计算机配置为执行根据段落J-P中的任一段落所述的方法。
R:一种设备或系统,包括处理器;以及与处理器耦合的计算机可读介质,计算机可读介质包括用于将一个或多个设备配置为执行根据段落J-P中的任一段落描述的方法的指令。
S:一种设备或系统,包括:用于处理的部件;以及用于存储的部件,其耦合到用于处理的部件,用于存储的部件存储将一个或多个设备配置为执行根据段落J-P中的任一段落描述的方法的指令。
T:一种设备,包括:一个或多个处理器;一个或多个计算机可读介质,其上具有计算机可执行指令,计算机可执行指令响应于执行来配置设备执行操作,包括:接收输入数据集的标识;接收要被应用于输入数据集的变换操作,其中变换操作包括以下一项或多项:包括可转移计算逻辑的查询;更新密钥操作,更新密钥操作被配置为将输入数据集中的一个或多个分片的分片中的元组与标识符相关联;或者数据移动操作;至少部分地基于标识来访问输入数据集,输入数据集包括一个或多个数据分片;将变换操作应用于输入数据集;以及至少部分地基于变换后的数据集来生成结果数据集。
U:根据段落T所述的设备,其中输入数据包括以时间戳次序存储的数据。
V:根据段落T或U所述的设备,其中数据移动操作包括以下一项或多项:广播连接;多播连接;或者至少部分地基于标识符来重新分布输入数据集中的一个或多个数据分片的内容。
W:根据段落T-V中的任一段落所述的设备,其中输入数据集包括定位在第一机器上的第一部分和定位在第二机器上的第二部分,并且变换操作包括在第一机器和第二机器之间重新分布数据。
X:根据段落T-W中的任一段落所述的设备,操作还包括:接收查询;将查询优化器应用于查询;生成分布式物理计划;以及接收对分布式物理计划的修改。
Y:一种系统,包括:一个或多个处理器;以及其上存储有计算机可执行指令的一个或多个计算机可读介质,计算机可执行指令响应于由一个或多个处理器执行以将设备配置为执行操作,包括:接收查询;至少部分地基于查询来访问第一数据集,第一数据集包括至少两个数据分片;将第一数据标识符分配给至少两个数据分片的第一分片,并将第二数据标识符分配给至少两个数据分片的第二分片;至少部分地基于数据标识符在至少两个数据分片之间重新分布数据,其中重新分布数据创建至少第二数据集;至少部分地基于查询接收查询操作;对第二数据集中的数据执行计算,该计算至少部分地基于查询和查询操作;以及引起计算的输出以在显示器上呈现。
Z:根据段落Y所述的系统,操作还包括:至少部分地基于查询来访问第三数据库;以及在分配数据标识符之前,将第一数据库和第三数据库连接到第四数据库。
AA:根据段落Z所述的系统,其中将第一数据库和第三数据库连接到第四数据库包括:在第一数据库上选择至少两个数据分片的特定分片;在第三数据库上选择分片;以及向第一数据库上至少两个数据分片的特定分片发送第三数据库上该分片的数据。
AB:根据段落Z所述的系统,其中将第一数据库和第三数据库连接到第四数据库包括:向第一数据库上的至少两个数据分片的每个分片发送第三数据库上的每个分片上的数据。
AC:根据段落Y-AB中的任一段落所述的系统,操作还包括:在重新分布数据之前,接收第三查询操作;以及至少部分地基于第三查询操作对第一数据集中的数据执行第二计算。
AD:根据段落Y-AC中的任一段落所述的系统,其中第一数据集包括在分布式服务平台的第一机器上存储的第一部分和在分布式服务平台的第二机器上存储的第二部分,并且其中分配数据标识符、生成第二数据集、重新分布数据、接收第二查询和计算聚合由分布式服务平台上的虚拟工作者执行。
AE:根据段落Y-AD中的任一段落所述的系统,其中第一数据集包括在机器的第一核上定位的第一部分和在机器的第二核上定位的第二部分,并且重新分布数据至少部分地基于在机器的第一核和机器的第二核之间的带宽。
AF:根据段落Y-AE中的任一段落所述的系统,其中第一数据集包括定位在第一机器上的第一部分和定位在第二机器上的第二部分,并且至少部分地基于数据标识符在至少两个数据分片之间重新分布数据包括:在第一机器和第二机器之间重新分布数据。
AG:一种计算机可读介质,其上具有计算机可执行指令,计算机可执行指令响应于执行而将计算机配置为执行根据段落Y-AF中的任一段落的方法。
AF:一种设备,包括:一个或多个处理器;一个或多个计算机可读介质,其上具有计算机可执行指令,计算机可执行指令响应于执行而将设备配置为执行操作,包括:访问第一数据集,第一数据集包括多个数据分片;将第一查询操作应用于第一数据集以生成第二数据集,第二数据集包括多个数据分片的至少一部分;将数据标识符分配给多个数据分片的该部分的各个分片;跨多个数据分片的该部分来重新分布数据;至少部分地基于查询对第三数据集执行计算;并输出计算结果用于在显示器上呈现。
AG:根据段落AF所述的设备,操作还包括:访问第四数据集,第四数据集包括多个参考数据分片;在重新分布数据之前,向多个数据分片的该部分发送多个参考数据分片。
AH:根据段落AF或AG中的任一段落所述的设备,操作还包括:访问第四数据集,第四数据集包括多个参考数据分片;在重新分布数据之前,向多个数据分片的该部分发送多个参考数据分片的特定分片。
AI:根据段落AF-AH中的任一段落所述的设备,其中第一数据集包括定位在第一机器上的第一部分和定位在第二机器上的第二部分,并且跨多个数据分片的该部分重新分布数据包括:在第一机器和第二机器之间重分布数据。
AJ:根据段落AF-AI中的任一段落所述的设备,其中第一数据集包括定位在第一机器上的第一部分和定位在第二机器上的第二部分,并且操作还包括:计算第一机器和第二机器之间的带宽;并且在跨多个分片的该部分重新分布数据之前,对第二数据集执行第二计算。
AK:一种计算机可读介质,其上具有计算机可执行指令,计算机可执行指令响应于执行而将计算机配置为执行根据段落AF-AJ中的任一段落的方法。
AL:一种方法,包括:访问第一数据集,第一数据集包括多个数据分片;将第一查询操作应用于第一数据集以生成第二数据集,第二数据集包括多个数据分片的至少一部分;将数据标识符分配给多个数据分片的该部分的各个分片;跨多个数据分片的该部分来重新分布数据;至少部分地基于查询对第三数据集执行计算;以及输出计算结果以便在显示器上呈现。
AM:根据段落AL所述的方法,还包括:访问第四数据集,第四数据集包括多个参考数据的分片;在重新分布数据之前,向多个数据分片的该部分发送多个参考数据分片。
AN:根据段落AL或AM中的任一段落所述的方法,还包括:访问第四数据集,第四数据集包括多个参考数据的分片;在重新分布数据之前,向多个数据分片的该部分发送多个参考数据分片的特定分片。
AO:根据段落AL-AN中的任一段落所述的方法,其中第一数据集包括定位在第一机器上的第一部分和定位在第二机器上的第二部分,并且跨多个数据的该部分重新分布数据包括:在第一机器和第二机器之间重新分布数据。
AP:根据段落AL-AO中的任一段落所述的方法,其中第一数据集包括定位在第一机器上的第一部分和定位在第二机器上的第二部分,并且操作还包括:计算在第一机器和第二机器之间的带宽;并且在跨多个分片的该部分重新分布数据之前,对第二数据集执行第二计算。
结论
虽然用结构特征和/或方法动作专用的语言描述了本主题,但应理解的是,所附权利要求中定义的主题不必限于所描述的具体特征或动作。而是,公开了具体特征和动作,作为实现权利要求的说明性形式。
示例过程的操作在各个框中示出,并且参考那些框进行总结。这些过程被示为框的逻辑流,其中的每个框可以表示可以用硬件、软件或其组合实现的一个或多个操作。在软件的上下文中,操作表示存储在一个或多个计算机可读介质上的计算机可执行指令,计算机可执行指令当由一个或多个处理器执行时,使得一个或多个处理器能够执行所述操作。通常,计算机可执行指令包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、模块、组件、数据结构等。描述操作的次序不旨在被解释为限制,并且任何数目的所描述的操作可以以任何次序执行,以任何次序组合,细分为多个子操作,和/或并行执行以实现所描述的过程。所描述的过程可以由与一个或多个计算设备102、504、506或900相关联的资源来执行,诸如一个或多个内部或外部CPU或GPU,和/或一件或多件硬件逻辑,诸如FPGA、DSP或上述其他类型。
上述所有方法和过程可以经由通过一个或多个通用计算机或处理器执行的软件代码模块来体现并且完全自动化。代码模块可以存储在任何类型的计算机可读存储介质或其他计算机存储设备中。方法中的一些或全部可以体现在专用计算机硬件中。
除非另有明确说明,否则诸如“能够”、“可以”、“可能”或“可”等的条件语言在上下文中被理解为通常用于表示特定示例包括,而其他示例不包括,特定特征、元件和/或步骤。因此,这样的条件语言通常不旨在暗示一个或多个示例以任何方式要求特征、元件和/或步骤,或者一个或多个示例必须包括:用于在有或没有用户输入或提示的情况下,决定是否在任何特定示例包括或执行这些特征、元件和/或步骤的逻辑。
除非另外特别说明,否则诸如短语“X、Y或Z中的至少一个”的连接语言应被理解为表示项目、项目等可以是X、Y或Z,或其组合。
本文描述和/或附图中描绘的流程图中的任何例程描述、元件或框应被理解为:潜在地表示包括用于实现特定逻辑功能或例程中的元素的一个或多个可执行指令的模块、片段或代码部分。备选示例被包括在本文描述的示例的范围内,其中元件或功能可以被删除,或者以与示出或讨论的次序不同的次序执行,包括基本上同步或相反的次序,这取决于所涉及的功能,如将本领域技术人员将理解的。
应该强调的是,可以对上述示例进行许多变化和修改,其中的元件应被理解为还具有其他可接受的示例。所有这些修改和变化旨在包括在本公开的范围内并且由所附权利要求保护。
Claims (20)
1.一种电子系统,包括:
一个或多个处理器;以及
一个或多个非暂时性计算机可读介质,其上存储有计算机可执行指令,所述计算机可执行指令响应于由所述一个或多个处理器执行以将设备配置为执行操作,包括:
接收输入数据集的标识,其中所述输入数据集包括一个或多个数据分片;
基于所述标识对所述输入数据集更新密钥;
基于所述更新密钥,将所述输入数据集重新分布到多个数据集中,使得所述一个或多个数据分片具有相同的标识符;
接收要被应用于所述输入数据集的变换操作,其中所述变换操作包括以下一项或多项:包括可转移计算逻辑的查询,或者数据移动操作;
至少部分地基于所述标识来访问所述输入数据集;
将所述变换操作应用于所述多个数据集中的一个数据集;以及
至少部分地基于变换后的数据集来生成结果数据集。
2.根据权利要求1所述的系统,其中对所述输入数据集更新密钥包括每密钥的散列预计算。
3.根据权利要求2所述的系统,其中所述数据移动操作包括以下一项或多项:
广播连接;
多播连接;或者
至少部分地基于所述标识符来重新分布减少的所述输入数据集中的所述一个或多个数据分片的内容。
4.根据权利要求1所述的系统,其中所述一个或多个数据分片被定位在分布式存储器上,并且其中由所述设备执行的操作还包括:在所述输入数据集上执行第一计算以形成减少的输入数据集,并且其中对所述输入数据集更新密钥在所述减少的输入数据集上被执行。
5.根据权利要求1所述的系统,其中所述输入数据集包括存储在分布式服务平台的第一机器上的第一部分以及存储在所述分布式服务平台的第二机器上的第二部分,以及其中所述变换操作由所述分布式服务平台上的虚拟工作者执行。
6.根据权利要求1所述的系统,其中所述输入数据集包括定位在机器的第一核上的第一部分以及定位在所述机器的第二核上的第二部分,并且所述变换操作至少部分地基于在所述机器的所述第一核和所述机器的所述第二核之间的带宽。
7.根据权利要求1所述的系统,其中所述计算机可执行指令响应于由所述一个或多个处理器执行以将所述设备配置为进一步执行包括以下的操作:
接收第二输入数据集的标识;
访问所述第二输入数据集,所述第二输入数据集包括一个或多个数据分片;以及
将所述变换操作应用于所述第二输入数据集,
其中所述变换操作是跨所述输入数据集和所述第二输入数据集中的一对分片而应用的双输入变换操作,并且其中所述结果数据集包括来自所述输入数据集和所述第二输入数据集的数据。
8.根据权利要求1所述的系统,其中所述计算机可执行指令响应于由所述一个或多个处理器执行以将所述设备配置为进一步执行包括以下的操作:
接收查询;
将查询优化器应用于所述查询;
生成分布式物理计划;以及
接收对所述分布式物理计划的修改。
9.一种用于数据处理的方法,包括:
定义两个或更多个机器的集群,所述两个或更多个机器中的每个机器包括至少一个数据集;
请求建立与虚拟工作者的通信路径,所述虚拟工作者与所述集群相关联;
将标识符与所述虚拟工作者相关联;
至少部分地基于所述标识符、经由所述通信路径向所述虚拟工作者发送操作,所述操作包括:
访问第一数据集,所述第一数据集包括至少两个数据分片;
访问第二数据集,所述第二数据集包括至少两个数据分片;
基于第一主题来对所述第一数据集更新密钥,使得所述第一数据集的所述至少两个数据分片中的每个数据分片具有标识符;
基于第二主题来对所述第二数据集更新密钥,使得所述第二数据集的所述至少两个数据分片中的每个数据分片具有标识符;以及
通过在所述第一数据集和所述第二数据集中重新分布数据来生成第三数据集和第四数据集,使得所述第三数据集中的数据分片具有相同的标识符并且所述第四数据集中的所述数据分片具有相同的标识符。
10.根据权利要求9所述的方法,其中发送所述操作还包括以下一项或多项:
发送包括可转移计算逻辑的查询;
或者
发送数据移动操作。
11.根据权利要求9所述的方法,其中发送所述操作还包括:
访问参考数据集,所述参考数据集包括至少两个数据分片,
其中生成第三数据集和第四数据集还包括将所述参考数据集连接到所述第一数据集和所述第二数据集。
12.根据权利要求11所述的方法,其中将所述参考数据集连接到所述第一数据集和所述第二数据集包括:
标识与所述参考数据集相关联的所述至少两个数据分片的参考分片;
标识与所述第一数据集相关联的所述至少两个数据分片的第一分片;
标识与所述第二数据集相关联的所述至少两个数据分片的第二分片;以及
向所述第一分片和所述第二分片发送所述第一分片中的数据。
13.根据权利要求11所述的方法,其中将所述参考数据集连接到所述第一数据集和所述第二数据集包括:向与所述第一数据集相关联的所述至少两个数据分片和与所述第二数据集相关联的所述至少两个数据分片发送与所述参考数据集相关联的所述至少两个数据分片中的数据。
14.根据权利要求9所述的方法,其中与所述第一数据集相关联的所述至少两个数据分片以及与所述第二数据集相关联的所述至少两个数据分片包括以时间戳次序存储的数据。
15.根据权利要求9所述的方法,还包括:
通过所述虚拟工作者将所述第三数据集和所述第四数据集存储在磁盘数据集中或存储器内数据集中;以及
通过所述虚拟工作者将与所述第三数据集和所述第四数据集相关联的元数据存储在元数据表中。
16.一种电子设备,包括:
一个或多个处理器;
一个或多个非暂时性计算机可读介质,其上具有计算机可执行指令,所述计算机可执行指令响应于执行来配置所述电子设备执行操作,包括:
接收输入数据集的标识,其中所述输入数据集包括一个或多个数据分片;
基于所述标识来对所述输入数据集更新密钥;
基于所述更新密钥来将所述输入数据集重新分布到多个数据集中,使得所述一个或多个数据分片具有相同的标识符;
接收要被应用于所述输入数据集的变换操作,其中所述变换操作包括以下一项或多项:包括可转移计算逻辑的查询,或者数据移动操作;
至少部分地基于所述标识来访问所述输入数据集;
将所述变换操作应用于所述多个数据集中的一个数据集;以及
至少部分地基于变换后的所述数据集来生成结果数据集。
17.根据权利要求16所述的设备,其中所述输入数据集包括元组,并且其中对所述输入数据集更新密钥包括将所述输入数据集中的每个元组修改为具有不同的密钥。
18.根据权利要求16所述的设备,其中所述数据移动操作包括以下一项或多项:
广播连接;
多播连接;或者
至少部分地基于所述标识符来重新分布所述输入数据集中的所述一个或多个数据分片的内容。
19.根据权利要求16所述的设备,其中所述输入数据集包括定位在第一机器上的第一部分以及定位在第二机器上的第二部分,并且所述变换操作包括在所述第一机器与所述第二机器之间重新分布数据。
20.根据权利要求16所述的设备,所述计算机可执行指令响应于执行来配置所述电子设备以进一步执行包括以下的操作:
接收查询;
将查询优化器应用于所述查询;
生成分布式物理计划;以及
接收对所述分布式物理计划的修改。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/085,468 | 2016-03-30 | ||
US15/085,468 US10896178B2 (en) | 2016-03-30 | 2016-03-30 | High performance query processing and data analytics |
PCT/US2017/024216 WO2017172557A1 (en) | 2016-03-30 | 2017-03-27 | High performance query processing and data analytics |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108885641A CN108885641A (zh) | 2018-11-23 |
CN108885641B true CN108885641B (zh) | 2022-03-29 |
Family
ID=58503709
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780021857.3A Active CN108885641B (zh) | 2016-03-30 | 2017-03-27 | 高性能查询处理和数据分析 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10896178B2 (zh) |
EP (1) | EP3436980A1 (zh) |
CN (1) | CN108885641B (zh) |
WO (1) | WO2017172557A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10733186B2 (en) * | 2016-09-15 | 2020-08-04 | Oracle International Corporation | N-way hash join |
CN110121704B (zh) * | 2016-12-30 | 2021-09-21 | 华为技术有限公司 | 一种用于存储过程的执行方法、设备以及系统 |
US10887235B2 (en) * | 2017-08-24 | 2021-01-05 | Google Llc | Method of executing a tuple graph program across a network |
US10642582B2 (en) | 2017-08-24 | 2020-05-05 | Google Llc | System of type inference for tuple graph programs method of executing a tuple graph program across a network |
US10769126B1 (en) * | 2017-09-22 | 2020-09-08 | Amazon Technologies, Inc. | Data entropy reduction across stream shard |
US10565133B2 (en) * | 2017-09-22 | 2020-02-18 | Intel Corporation | Techniques for reducing accelerator-memory access costs in platforms with multiple memory channels |
CN112015790A (zh) * | 2019-05-30 | 2020-12-01 | 北京沃东天骏信息技术有限公司 | 一种数据处理的方法和装置 |
CN110955685A (zh) * | 2019-11-29 | 2020-04-03 | 北京锐安科技有限公司 | 一种大数据基数估计方法、系统、服务器和存储介质 |
CN111176818B (zh) * | 2019-12-31 | 2023-08-25 | 北京金山云网络技术有限公司 | 分布式预测的方法、装置、系统、电子设备及存储介质 |
CN115803733A (zh) * | 2020-08-12 | 2023-03-14 | 阿里巴巴集团控股有限公司 | 无服务器架构中工作流应用的分片 |
US20230289466A1 (en) * | 2022-03-09 | 2023-09-14 | AVAST Software s.r.o. | User data collection privacy using probabilistic data structures |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103823807A (zh) * | 2012-11-16 | 2014-05-28 | 深圳市腾讯计算机系统有限公司 | 一种去除重复数据的方法、装置及系统 |
CN104639298A (zh) * | 2013-11-08 | 2015-05-20 | 腾讯科技(深圳)有限公司 | 一种数据传输方法、装置及系统 |
CN105260136A (zh) * | 2015-09-24 | 2016-01-20 | 北京百度网讯科技有限公司 | 数据读写方法及分布式存储系统 |
WO2016037244A1 (en) * | 2014-09-12 | 2016-03-17 | Mammothdb Eood | Method and system for distributed execution of sql queries |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6446136B1 (en) | 1998-12-31 | 2002-09-03 | Computer Associates Think, Inc. | System and method for dynamic correlation of events |
US7646872B2 (en) * | 2004-04-02 | 2010-01-12 | Research In Motion Limited | Systems and methods to securely generate shared keys |
US7996388B2 (en) | 2007-10-17 | 2011-08-09 | Oracle International Corporation | Adding new continuous queries to a data stream management system operating on existing queries |
US8315990B2 (en) | 2007-11-08 | 2012-11-20 | Microsoft Corporation | Consistency sensitive streaming operators |
US7844620B2 (en) * | 2007-11-16 | 2010-11-30 | International Business Machines Corporation | Real time data replication for query execution in a massively parallel computer |
US8095512B2 (en) * | 2007-11-19 | 2012-01-10 | International Business Machines Corporation | Managing database resources used for optimizing query execution on a parallel computer system |
US8051069B2 (en) | 2008-01-02 | 2011-11-01 | At&T Intellectual Property I, Lp | Efficient predicate prefilter for high speed data analysis |
US8195644B2 (en) | 2008-10-06 | 2012-06-05 | Teradata Us, Inc. | System, method, and computer-readable medium for optimization of multiple parallel join operations on skewed data |
US20130066924A1 (en) | 2008-12-23 | 2013-03-14 | Honeywell International Inc. | Method and apparatus for utilizing matlab functionality in java-enabled environment |
US8548986B2 (en) | 2010-03-19 | 2013-10-01 | Microsoft Corporation | Adaptive row-batch processing of database data |
US8484243B2 (en) | 2010-05-05 | 2013-07-09 | Cisco Technology, Inc. | Order-independent stream query processing |
US8762297B2 (en) | 2010-05-17 | 2014-06-24 | Microsoft Corporation | Dynamic pattern matching over ordered and disordered data streams |
US20110314019A1 (en) | 2010-06-18 | 2011-12-22 | Universidad Politecnica De Madrid | Parallel processing of continuous queries on data streams |
PT105174A (pt) | 2010-06-26 | 2012-02-08 | Paulo Jorge Pimenta Marques | Instrumento e método para processamento contínuo de dados usando processadores massivamente paralelos |
US8478743B2 (en) | 2010-12-23 | 2013-07-02 | Microsoft Corporation | Asynchronous transfer of state information between continuous query plans |
US9805108B2 (en) | 2010-12-23 | 2017-10-31 | Mongodb, Inc. | Large distributed database clustering systems and methods |
US8990416B2 (en) | 2011-05-06 | 2015-03-24 | Oracle International Corporation | Support for a new insert stream (ISTREAM) operation in complex event processing (CEP) |
US8694565B2 (en) | 2011-06-16 | 2014-04-08 | Microsoft Corporation | Language integrated query over vector spaces |
US20130031567A1 (en) | 2011-07-25 | 2013-01-31 | Microsoft Corporation | Local event processing |
US8918363B2 (en) * | 2011-11-14 | 2014-12-23 | Google Inc. | Data processing service |
US20130159969A1 (en) | 2011-12-16 | 2013-06-20 | Microsoft Corporation | Digital signal processing with language integrated monads |
US20130254771A1 (en) | 2012-03-20 | 2013-09-26 | Google Inc. | Systems and methods for continual, self-adjusting batch processing of a data stream |
US9953059B2 (en) | 2012-09-28 | 2018-04-24 | Oracle International Corporation | Generation of archiver queries for continuous queries over archived relations |
US20140156668A1 (en) * | 2012-12-04 | 2014-06-05 | Linkedin Corporation | Apparatus and method for indexing electronic content |
WO2014124686A1 (en) | 2013-02-15 | 2014-08-21 | Telefonaktiebolaget L M Ericsson (Publ) | Optimized query execution in a distributed data stream processing environment |
US9514214B2 (en) | 2013-06-12 | 2016-12-06 | Microsoft Technology Licensing, Llc | Deterministic progressive big data analytics |
US9697262B2 (en) | 2013-12-17 | 2017-07-04 | Microsoft Technology Licensing, Llc | Analytical data processing engine |
US10120902B2 (en) | 2014-02-20 | 2018-11-06 | Citus Data Bilgi Islemleri Ticaret A.S. | Apparatus and method for processing distributed relational algebra operators in a distributed database |
US9805080B2 (en) * | 2014-08-22 | 2017-10-31 | Xcalar, Inc. | Data driven relational algorithm formation for execution against big data |
US10242082B2 (en) * | 2014-12-12 | 2019-03-26 | Microsoft Technology Licensing, Llc | Context-driven multi-user communication |
US20160191508A1 (en) * | 2014-12-31 | 2016-06-30 | Nexenta Systems, Inc. | Methods and Systems for Block Sharding of Objects Stored in Distributed Storage System |
CN104484472B (zh) * | 2014-12-31 | 2018-10-16 | 天津南大通用数据技术股份有限公司 | 一种混合多种异构数据源的数据库集群及实现方法 |
-
2016
- 2016-03-30 US US15/085,468 patent/US10896178B2/en active Active
-
2017
- 2017-03-27 WO PCT/US2017/024216 patent/WO2017172557A1/en active Application Filing
- 2017-03-27 EP EP17716345.8A patent/EP3436980A1/en not_active Withdrawn
- 2017-03-27 CN CN201780021857.3A patent/CN108885641B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103823807A (zh) * | 2012-11-16 | 2014-05-28 | 深圳市腾讯计算机系统有限公司 | 一种去除重复数据的方法、装置及系统 |
CN104639298A (zh) * | 2013-11-08 | 2015-05-20 | 腾讯科技(深圳)有限公司 | 一种数据传输方法、装置及系统 |
WO2016037244A1 (en) * | 2014-09-12 | 2016-03-17 | Mammothdb Eood | Method and system for distributed execution of sql queries |
CN105260136A (zh) * | 2015-09-24 | 2016-01-20 | 北京百度网讯科技有限公司 | 数据读写方法及分布式存储系统 |
Non-Patent Citations (2)
Title |
---|
《a high-performance incremental query processor for diverse analytics》;Badrish Chandramouli等;《ACM》;20141231;第401-412页 * |
《区域分片下的分布式空间查询处理与并行调度方法》;陈迪等;《武汉大学学报(信息科学版)》;20120831;第892-896页 * |
Also Published As
Publication number | Publication date |
---|---|
EP3436980A1 (en) | 2019-02-06 |
US10896178B2 (en) | 2021-01-19 |
US20170286485A1 (en) | 2017-10-05 |
WO2017172557A1 (en) | 2017-10-05 |
CN108885641A (zh) | 2018-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108885641B (zh) | 高性能查询处理和数据分析 | |
US11057313B2 (en) | Event processing with enhanced throughput | |
US11281669B2 (en) | Parallel processing database system | |
CN111966684B (zh) | 用于分布式数据集索引的装置、方法和计算机程序产品 | |
JP7009455B2 (ja) | 分散イベント処理システムにおけるデータシリアライズ | |
US10685283B2 (en) | Demand classification based pipeline system for time-series data forecasting | |
US10560313B2 (en) | Pipeline system for time-series data forecasting | |
US11030171B2 (en) | Elastic sharding of data in a multi-tenant cloud | |
KR102361156B1 (ko) | 분산 파일 시스템에서 데이터에 대한 병렬 액세스 | |
US9886441B2 (en) | Shard aware near real time indexing | |
US20160103914A1 (en) | Offloading search processing against analytic data stores | |
WO2014117295A1 (en) | Performing an index operation in a mapreduce environment | |
US10331696B2 (en) | Indexing heterogeneous searchable data in a multi-tenant cloud | |
US10162830B2 (en) | Systems and methods for dynamic partitioning in distributed environments | |
WO2020147601A1 (zh) | 用于对图进行学习的系统 | |
US20170236132A1 (en) | Automatically modeling or simulating indications of interest | |
D'silva et al. | Real-time processing of IoT events using a Software as a Service (SaaS) architecture with graph database | |
Nasir et al. | Partial key grouping: Load-balanced partitioning of distributed streams | |
WO2015058801A1 (en) | Method for performing distributed geographic event processing and geographic event processing system | |
US10540669B2 (en) | Managing object values and resource consumption | |
US11805067B1 (en) | Dynamically generating and managing request queues for processing electronic requests via a shared processing infrastructure | |
US11757959B2 (en) | Dynamic data stream processing for Apache Kafka using GraphQL | |
Al-Qerem et al. | Transactional Services for Concurrent Mobile Agents over Edge/Cloud Computing-Assisted Social Internet of Things | |
US11442792B2 (en) | Systems and methods for dynamic partitioning in distributed environments | |
CN116484055A (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 |