CN113508373A - 分布式的基于元数据的集群计算 - Google Patents
分布式的基于元数据的集群计算 Download PDFInfo
- Publication number
- CN113508373A CN113508373A CN202080007623.5A CN202080007623A CN113508373A CN 113508373 A CN113508373 A CN 113508373A CN 202080007623 A CN202080007623 A CN 202080007623A CN 113508373 A CN113508373 A CN 113508373A
- Authority
- CN
- China
- Prior art keywords
- database
- serialized
- data
- result file
- query
- 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.)
- Granted
Links
- 238000012545 processing Methods 0.000 claims abstract description 61
- 238000000034 method Methods 0.000 claims description 68
- 230000015654 memory Effects 0.000 claims description 19
- 238000013500 data storage Methods 0.000 description 41
- 230000008569 process Effects 0.000 description 28
- 238000004891 communication Methods 0.000 description 24
- 238000007726 management method Methods 0.000 description 17
- 230000006870 function Effects 0.000 description 16
- 230000005540 biological transmission Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 8
- 230000008878 coupling Effects 0.000 description 7
- 238000010168 coupling process Methods 0.000 description 7
- 238000005859 coupling reaction Methods 0.000 description 7
- 238000012546 transfer Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 238000005457 optimization Methods 0.000 description 5
- 230000004044 response Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000003116 impacting effect Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 208000022417 sinus histiocytosis with massive lymphadenopathy Diseases 0.000 description 2
- 238000012800 visualization Methods 0.000 description 2
- 241001124156 Mecoptera Species 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000010205 computational analysis Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013079 data visualisation Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 229910000078 germane Inorganic materials 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000012958 reprocessing Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24561—Intermediate data storage techniques for performance improvement
-
- 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/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- 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/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0281—Proxies
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
共享数据库平台可以通过连接器通过网络与集群计算平台对接。通过网络传输的数据可以包括元数据结果包,该元数据结果包可以被分发到集群计算平台的工作器节点,该工作器节点接收元数据对象并访问结果数据,以便在诸如可扩展存储平台的中间平台上进一步处理。
Description
相关申请的交叉引用
本申请要求2019年12月18日提交的美国专利申请序列号16/719,218的优先权;其内容在此全部引入。
技术领域
本公开总体上涉及管理数据库的专用机器和对这种变体的改进,以及与使用数据库数据执行分布式计算的其他专用机器相比,这种专用机器得到改进的技术。
背景
分布式处理可用于创建分析计算源来分析数据。这些分布式计算***中的一些包括节点集群,该集群包括主节点和多个工作器节点(worker node),这些工作器节点根据主节点的指令协同工作以完成数据处理任务。虽然这些分布式***支持强大的计算能力,但诸如瓶颈之类的低效率仍然会出现。
附图简述
各种附图仅示出了本公开的示例性实施例,不应被视为限制其范围。
图1示出了根据本公开的一些实施例的示例计算环境,其中基于网络的数据仓库***可以使用元数据连接器来实现集群计算。
图2是示出根据本公开一些实施例的计算服务管理器的组件的框图。
图3是示出根据本公开一些实施例的执行平台的组件的框图。
图4示出了根据本公开的一些实施例的使用元数据连接器的集群计算的示例数据架构。
图5和图6示出了根据本公开的一些实施例的使用元数据连接器实现集群计算的示例流程图。
图7示出了根据本公开的一些实施例的使用元数据连接器实现集群计算的示例网络泳道(network lane)图。
图8示出根据本公开一些实施例的以计算机***形式的机器的示意图表示,用于使机器执行本文所讨论方法中的任何一个或更多个的指令集合可以在该计算机***内执行。
详细描述
以下描述包括体现本公开的说明性实施例的***、方法、技术、指令序列和计算机程序产品。在以下描述中,出于解释的目的,阐述了许多具体细节,以便提供对本发明主题的各种实施例的理解。然而,对于本领域技术人员来说,很明显,本发明主题的实施例可以在没有这些具体细节的情况下实施。通常,众所周知的指令实例、协议、结构和技术不一定详细示出。
如上所述,分布式计算***中可能会出现低效率的情况。一种低效率包括主节点在访问和分发数据用于计算方面的瓶颈。例如,如果集群计算***的数据源生成非常大的结果数据集以供处理(例如,查询结果数据),则当主节点试图访问该非常大的结果集并将其分发到工作器节点以供处理时,主节点会承受很大的负载。
为此,可以实现元数据连接器***,以将共享数据库***与集群计算***连接,在集群计算***中,直接对共享数据库处理***执行查询,集群的节点直接访问云存储上的查询结果数据,而不必连接到共享数据库***。在一些示例实施例中,来自集群计算***(例如,Apache)的查询使用共享多租户数据库处理***(例如,)作为数据源,其中两者之间的连接使用为数据库访问(例如,Java数据库连接)配置的应用编程接口(API)连接器来实现。在一些示例实施例中,集群计算***通过API连接器向共享数据库***发出查询,该共享数据库***生成查询结果数据,该查询结果数据作为文件被写入中间区(staging area)。例如,共享数据库***可以使用COPY UNLOAD SQL语句将查询结果数据存储到外部级(external stage),如Amazon S3桶,其中COPY从数据库***复制查询结果数据,UNLOAD将数据作为文件传输到中间区。根据一些示例实施例,主节点然后访问中间区(例如,访问S3桶),以确定结果文件中有什么,用于将文件分发到工作器节点以供进一步处理。
如果写入中间区的结果文件非常大(例如,太字节大小),则主节点访问结果文件和/或将其传输到工作器节点的操作会导致显著的延迟。为了减轻集群计算***的主节点的过载,API连接器(例如JDBC)直接针对共享数据库***执行查询,而不使用COPY UNLOAD语句(例如针对共享数据库***的SELECT语句),并将结果文件存储在中间平台(stagingplatform)中。然后,共享数据库***将一些结果文件数据发送到API连接器,以生成对象元数据集,该对象元数据集包括描述中间区中剩余大量的结果文件的多个集群串行对象。例如,如果结果文件作为组块(chunk)被写入S3,则共享数据库***向API连接器发送结果文件的第一组块(例如,当第一组块的大小通常较小时),以及其他组块的元数据(例如,包括S3上的结果组块文件URL、组块大小、访问S3的结果文件的凭证数据的元数据)。API连接器然后向集群计算***的主节点发送集群存储对象的列表,然后该主节点可以将集群存储对象的列表分发给工作器节点。
工作器节点接收集群存储对象,并对API连接器执行函数调用,以直接从中间区(通过API连接器)检索结果文件数据。以这种方式,API连接器不读取实际结果文件数据(API连接器仅将其作为包装的元数据或对象的信封/列表来处理),并且主节点不需要访问和分发实际结果文件数据,而是仅分发描述结果文件的存储对象元数据,其中存储对象元数据用作信封,并且对象被序列化,从而可以被分发到工作器节点,并且由任何工作器节点同时执行和处理,如下面进一步详细讨论的。这样,即使共享数据库生成的查询结果数据集很大,元数据也很小,被序列化为对象,从而显著提高了工作负载分发和应用响应能力。
连接器方法的一个好处是,除了显著减轻主节点上的负载,从而避免显著的瓶颈之外,还包括将通过网络传输的结果文件的网络流量减少一半或更多。在其他方法中,主节点接收结果数据,然后将结果数据传输到工作器节点。在元数据连接器方法中,数据仅从共享数据库***传输到中间区,主节点和API连接器仅传输可分发的元数据,该元数据明显小于结果文件的大小。此外,元数据连接器方法通过增加中间区中的节点数量,使要处理的数据量能够随着负载的增加而大幅扩展。例如,在中间平台是诸如Amazon S3的弹性可扩缩***的情况下,中间平台中的节点数量可以增加以更好地服务来自工作器节点的请求(例如,随着工作器节点的数量增加和/或结果文件大小增加,相应地增加中间平台节点的数量以响应工作器节点),这避免了通过主节点的数据瓶颈,并避免了中间区中静态数量的节点过载。
图1示出了根据本公开的一些实施例的示例共享数据处理平台100,其中基于网络的数据仓库***102用作通过数据库连接器接口(例如API连接器145)连接的集群计算平台150的数据源。为了避免用不必要的细节模糊本发明主题,图中省略了与传达对本发明主题的理解不密切相关的各种功能组件。然而,本领域技术人员将容易认识到,各种附加功能组件可以被包括作为共享数据处理平台100的一部分,以促进本文没有具体描述的附加功能。
如图所示,共享数据处理平台100包括基于网络的数据仓库***102、云计算存储平台104(例如,存储平台、诸如S3的服务、Microsoft Azure或Google Cloud)和用户设备106。基于网络的数据仓库***102是基于网络的***,用于以多租户集成的方式存储和访问数据(例如,内部存储数据、访问外部远程数据),以及报告和分析来自一个或更多个不同源(例如,云计算存储平台104)的集成数据,其中可以由集群计算平台150执行额外的分析计算。云计算存储平台104包括多个计算机器,并向基于网络的数据仓库***102按需提供计算机***资源,如数据存储和计算能力。
用户设备106(例如,诸如膝上型计算机的用户设备)包括一个或更多个计算机器(例如,诸如膝上型计算机的客户端设备),其执行软件组件108(例如,浏览器访问的云服务、诸如用于移动操作***的移动应用的本地应用)以向基于网络的数据仓库***102的用户提供附加功能。
软件组件108包括一组机器可读指令(例如,代码),当由用户设备106执行时,使得用户设备106提供某些功能。软件组件108可以对输入数据进行操作,并基于处理、分析或以其他方式转换输入数据来生成结果数据。作为示例,软件组件108可以是浏览器,其访问集群计算平台150上的云运行客户应用,用于由主节点152和工作器节点154-160进行计算,如下面进一步详细讨论的。
基于网络的数据仓库***102包括访问管理***110、计算服务管理器112、执行平台114和数据库116。访问管理***110使得管理用户能够管理对基于网络的数据仓库***102所提供的资源和服务的访问。管理用户可以创建和管理用户、角色和组,并使用许可来允许或拒绝对资源和服务的访问。访问管理***110可以存储共享数据,该共享数据在基于网络的数据仓库***102的不同用户之间安全地管理对云计算存储平台104的存储资源的共享访问,如下面进一步详细讨论的。
计算服务管理器112协调和管理基于网络的数据仓库***102的操作。计算服务管理器112还执行查询优化和编译,以及管理在执行平台114中提供计算资源的计算服务集群(例如,虚拟仓库、虚拟机、EC2集群)。计算服务管理器112可以支持任意数量的客户端账户,如提供数据存储和检索请求的终端用户、管理本文描述的***和方法的***管理员以及与计算服务管理器112交互的其他组件/设备。
计算服务管理器112还耦合到数据库116,数据库116与由共享数据处理平台100管理的全部数据相关联。数据库116存储数据,该数据涉及与基于网络的数据仓库***102及其用户相关联的各种功能和方面。例如,运行在集群计算平台150上的客户应用可以对其执行查询的数据可以作为内部数据存储在数据库116中,或者作为外部数据存储在存储平台122中。
在一些实施例中,数据库116包括存储在远程数据存储***中的数据以及可从一个或更多个本地高速缓存获得的数据的概要。另外,数据库116可以包括有关在远程数据存储***和本地高速缓存中如何组织数据的信息。数据库116允许***和服务确定是否需要访问数据段,而无需从存储设备加载或访问实际数据。计算服务管理器112进一步耦合到执行平台114,执行平台1416提供执行各种数据存储和数据检索任务的多个计算资源(例如,虚拟仓库),如下面更详细地讨论的。
执行平台114耦合到作为云计算存储平台104的一部分的多个数据存储设备124-1至124-n。尽管图1中示出了两个数据存储设备124-1和124-n,但是执行平台114能够与作为弹性存储***的一部分的任意数量的数据存储设备通信。在一些实施例中,数据存储设备124-1至124-n是位于一个或更多个地理位置的基于云的存储设备。例如,数据存储设备124-1至124-n可以是公共云基础设施或私有云基础设施的一部分。数据存储设备124-1至124-n可以是硬盘驱动器(HDD)、固态驱动器(SSD)、存储集群、Amazon S3存储***或任何其他数据存储技术。另外,云计算存储平台104可以包括分布式文件***(例如Hadoop分布式文件***(HDFS))、对象存储***等。
执行平台114包括多个计算节点(例如,虚拟仓库)。计算节点上的进程集合执行由计算服务管理器112编译的查询计划。进程集合可以包括:执行查询计划的第一进程;使用最近最少使用(least recently used,LRU)策略来监视和删除微分区文件,并实现内存不足(OOM)错误缓解进程的第二进程;从进程日志和状态信息提取健康信息以发送回计算服务管理器112的第三进程;在***引导(boot)之后建立与计算服务管理器112的通信的第四进程;以及第五进程,该第五进程处理与由计算服务管理器112提供的给定作业的计算集群的所有通信,并将信息传送回计算服务管理器112和执行平台114的其他计算节点。
云计算存储平台104还包括访问管理***118和云接口120(例如,用于云计算存储平台104的API网关)。如同访问管理***110一样,访问管理***118允许用户创建和管理用户、角色和组,并使用许可来允许或拒绝对云服务和资源的访问。基于网络的数据仓库***102的访问管理***110和云计算存储平台104的访问管理***118可以通信和共享信息,以便能够访问和管理由基于网络的数据仓库***102和云计算存储平台104的用户共享的资源和服务。云接口120处理涉及接受和处理并发API调用的任务,包括流量管理、授权和访问控制、监控和API版本管理。云接口120提供用于创建、发布、维护、保护和监控API(例如,REST API)的HTTP代理服务。
在一些实施例中,共享数据处理平台100的元件之间的通信链路经由一个或更多个数据通信网络来实现。这些数据通信网络可以利用任何通信协议和任何类型的通信介质。在一些实施例中,数据通信网络是彼此耦合的两个或更多个数据通信网络(或子网络)的组合。在替代实施例中,使用任何类型的通信介质和任何通信协议来实现这些通信链路。
如图1所示,数据存储设备124-1至124-N从与执行平台114相关联的计算资源解耦。也就是说,可以在执行平台114中创建和终止新的虚拟仓库,并且可以以独立的方式在云计算存储平台104上创建和终止额外的数据存储设备(例如,云计算存储平台104是外部网络平台,例如Amazon AWS,其被单独管理但链接到基于网络的数据仓库***102)。该架构支持基于变化的数据存储/检索需求以及访问共享数据处理平台100的用户和***的变化需求对基于网络的数据仓库***102的动态变化。对动态变化的支持允许基于网络的数据仓库***102响应于对基于网络的数据仓库***102内的***和组件的不断变化的需求而快速变化规模(scale)。计算资源与数据存储设备的分离支持大量数据的存储,而无需相应的大量计算资源。类似地,资源的这种分离支持在特定时间使用的计算资源的显著增加,而无需相应增加可用数据存储资源。此外,资源的解耦使不同的账户能够处理创建额外的计算资源,以处理由其他用户共享的数据,而不会影响其他用户的***。例如,数据提供者可以具有三个计算资源,并且与数据消费者共享数据,并且数据消费者可以生成新的计算资源来对共享数据执行查询,其中新的计算资源由数据消费者管理,并且不影响数据提供者的计算资源或者与数据提供者的计算资源交互。
集群计算平台150是能够扩展基于网络的数据仓库***102的计算分析的集群计算环境。例如,尽管基于网络的数据仓库***102可以被配置为与云计算存储平台104一起工作,以实现可扩展的解耦数据仓库,但是集群计算平台150可以是大数据或非SQL平台(例如,Apache Spark、Hadoop、Cassandra),其实现主节点152和多个工作器节点154来执行分布式计算任务(例如,数据分析)。在一些示例实施例中,基于网络的数据仓库***102和云计算存储平台104作为单个实体运行,并且集群计算平台150对于单个实体的解耦和功能是不可知的。例如,基于网络的数据仓库***102和云计算存储平台104可以被实现为ApacheSpark集群(例如,集群计算平台150的示例实施例)的Snowflake数据源,其中这两个平台通过API连接器145(例如JDBC)连接。尽管API连接器145被示出在基于网络的数据仓库***102和集群计算平台150之间,但是应当理解,API连接器145可以集成在基于网络的数据仓库***102内,如下面参考图2进一步详细讨论的。
此外,计算服务管理器112、数据库116、执行平台114、云计算存储平台104、集群计算平台150和用户设备106在图1中被示为单独的组件。然而,计算服务管理器112、数据库116、执行平台114、云计算存储平台104和集群计算平台150中的每一个可以被实现为由API连接并访问信息(例如,令牌、登录数据)的分布式***(例如,分布在多个地理位置的多个***/平台上)。此外,计算服务管理器112、数据库116、执行平台114和云计算存储平台104中的每一个都可以根据接收到的请求的变化和共享数据处理平台100的需求的变化而扩大或缩小(彼此独立)。因此,在所描述的实施例中,基于网络的数据仓库***102是动态的,并且支持频繁变化以满足当前的数据处理需求。
在典型操作期间,基于网络的数据仓库***102处理由计算服务管理器112确定的多个作业(例如,来自集群计算平台150的查询)。这些作业由计算服务管理器112调度和管理,以确定何时以及如何执行该作业。例如,计算服务管理器112可以将作业划分为多个离散任务,并且可以确定需要什么数据来执行多个离散任务中的每个离散任务。计算服务管理器112可以将多个离散任务中的每个离散任务分配给执行平台114的一个或更多个节点以处理任务。计算服务管理器112可以确定需要哪些数据来处理任务,并且进一步确定执行平台114内的哪些节点最适合于处理该任务。一些节点可能已经缓存了处理任务所需的数据(由于节点最近已经从云计算存储平台104下载了用于先前作业的数据),因此可能是处理任务的良好候选。存储在数据库116中的元数据帮助计算服务管理器112确定执行平台114中的哪些节点已经缓存了处理该任务所需的至少一部分数据。执行平台114中的一个或更多个节点使用由节点高速缓存的数据以及必要时从云计算存储平台104检索到的数据来处理任务。期望从执行平台114内的高速缓存中检索尽可能多的数据,因为检索速度通常比从云计算存储平台104中检索数据快得多。
如图1所示,共享数据处理平台100将执行平台114与云计算存储平台104分开。在这种布置中,执行平台114中的处理资源和高速缓存资源独立于云计算存储平台104中的数据存储设备124-1到124-n进行操作。因此,计算资源和高速缓存资源不限于具体的数据存储设备124-1至124-n。相反,所有计算资源和所有高速缓存资源可以从云计算存储平台104中的任何数据存储资源检索数据,并将数据存储到其中。
图2是示出根据本公开一些实施例的计算服务管理器112的组件的框图。如图2所示,请求处理服务202管理接收到的数据存储请求和数据检索请求(例如,将对数据库数据执行的作业)。例如,请求处理服务202可以确定处理接收到的查询(例如,数据存储请求或数据检索请求)所需的数据。数据可以存储在执行平台114内的高速缓存中,或者存储在云计算存储平台104中的数据存储设备中。管理控制台服务204支持管理员和其他***管理员对各种***和进程的访问。另外,管理控制台服务204可以接收执行作业并监视***上的工作负荷的请求。
结果对象管理器207被配置成生成用于存储在中间平台上的序列化结果文件,并生成对象元数据集,该对象元数据集是描述存储在中间平台中的结果文件的元数据列表。结果对象管理器207包括作为关系数据库连接接口的API连接器145,用于促进基于网络的数据仓库***102和集群计算平台150之间的数据传输(例如,接收查询和传输结果数据)。例如,运行在集群计算平台150上的客户应用可以向基于网络的数据仓库***102发出查询,该查询被导向API连接器145,用于解析并作为作业请求转发给请求处理服务。尽管API连接器145被示为在集群计算平台150和基于网络的数据仓库***102之间,但是在一些示例实施例中,API连接器145被安装在基于网络的数据仓库***102中,以向集群计算平台150发送和接收数据,集群计算平台150可以是由不同公司管理的外部运行的集群计算平台150(例如,集群计算平台150可以是由Databricks平台或其他Spark平台托管的ApacheSpark集群)。
计算服务管理器112还包括作业编译器206、作业优化器208和作业执行器210。作业编译器206将作业解析为多个离散任务,并为多个离散任务中的每个离散任务生成执行代码。作业优化器208基于需要处理的数据来确定执行多个离散任务的最佳方法。作业优化器208还处理各种数据修剪操作和其他数据优化技术,以提高执行作业的速度和效率。作业执行器210执行从队列接收的或由计算服务管理器112确定的作业的执行代码。
作业调度器和协调器212将接收到的作业发送到适当的服务或***,以进行编译、优化并分派到执行平台114。例如,可以按该优先顺序对作业进行优先考虑和处理。在实施例中,作业调度器和协调器212确定由计算服务管理器112与其他“外部”作业(诸如可以由数据库中的其他***调度但可以利用执行平台114中的相同处理资源的用户查询)调度的内部作业的优先级。在一些实施例中,作业调度器和协调器212识别或分配执行平台114中的特定节点以处理特定任务。虚拟仓库管理器214管理在执行平台114中实现的多个虚拟仓库的操作。如下所述,每个虚拟仓库包括多个执行节点,每个执行节点包括高速缓存和处理器(例如,虚拟机、操作***级容器执行环境)。
另外,计算服务管理器112包括配置和元数据管理器216,其管理与存储在远程数据存储设备和本地高速缓存(即,执行平台114中的高速缓存)中的数据有关的信息。配置和元数据管理器216使用元数据来确定需要访问哪些数据微分区来检索用于处理特定任务或作业的数据。监视器和工作负载分析器218监管由计算服务管理器112执行的进程,并管理任务(例如,工作负载)在执行平台114中的执行节点和虚拟仓库之间的分配。监视器和工作负载分析器218还根据需要,基于整个基于网络的数据仓库***102中不断变化的工作负载来重新分配任务,并且还可以基于也可以由执行平台114处理的用户(例如,“外部”)查询工作负载来重新分配任务。配置和元数据管理器216以及监视器和工作负荷分析器218耦合到数据存储设备220。图2中的数据存储设备220表示基于网络的数据仓库***102中的任何数据存储设备。例如,数据存储设备220可以表示执行平台114中的高速缓存、云计算存储平台104中的存储设备或任何其他存储设备。
图3是示出根据本公开一些实施例的执行平台114的组件的框图。如图3所示,执行平台114包括多个虚拟仓库,它们是计算实例(例如虚拟机)的弹性集群。在所示的示例中,虚拟仓库包括虚拟仓库1、虚拟仓库2和虚拟仓库n。每个虚拟仓库(例如,EC2集群)包括多个执行节点(例如,虚拟机),每个执行节点包括数据高速缓存和处理器。虚拟仓库可以通过使用多个执行节点并行执行多个任务。如本文中所讨论的,执行平台114可以基于***和用户的当前处理需求实时地添加新的虚拟仓库并丢弃现有的虚拟仓库。这种灵活性允许执行平台114在需要时快速部署大量计算资源,而不必在不再需要它们时继续为那些计算资源付费。所有虚拟仓库都可以访问任何数据存储设备(例如,云计算存储平台104中的任何存储设备)中的数据。
尽管图3中所示的每个虚拟仓库包括三个执行节点,但是特定的虚拟仓库可以包括任意数量的执行节点。此外,虚拟仓库中执行节点的数量是动态的,使得在存在额外需求时创建新的执行节点,并在不再需要现有执行节点时将其删除(例如,在查询或作业完成时)。
每个虚拟仓库能够访问图1中所示的数据存储设备124-1至124-n中的任何一个。因此,虚拟仓库没有必要被分配给特定的数据存储设备124-1至124-n,而是可以从云计算存储平台104内的数据存储设备124-1至124-n中的任何一个访问数据。类似地,图3所示的每个执行节点可以访问来自数据存储设备124-1至124-n中的任何一个的数据。例如,第一用户(例如,提供者账户用户)的存储设备124-1可以与另一用户(例如,消费者账户用户)的虚拟仓库中的工作器节点共享,使得另一用户可以创建数据库(例如,只读数据库)并直接使用存储设备124-1中的数据,无需复制数据(例如,将其复制到由消费者帐户用户管理的新磁盘上)。在一些实施例中,可以将特定的虚拟仓库或特定的执行节点临时分配给特定的数据存储设备,但是该虚拟仓库或执行节点可以稍后从任何其他数据存储设备访问数据。
在图3的示例中,虚拟仓库1包括三个执行节点302-1、302-2和302-n。执行节点302-1包括高速缓存304-1和处理器306-1。执行节点302-2包括高速缓存304-2和处理器306-2。执行节点302-n包括高速缓存304-n和处理器306-n。每个执行节点302-1、302-2和302-n与处理一个或更多个数据存储和/或数据检索任务相关联。例如,虚拟仓库可以处理与内部服务(诸如,聚类服务、实例化视图刷新服务、文件压缩服务、存储程序服务或文件升级服务)相关联的数据存储和数据检索任务。在其他实施方式中,特定虚拟仓库可以处理与特定数据存储***或特定类别的数据相关联的数据存储和数据检索任务。
类似于上面讨论的虚拟仓库1,虚拟仓库2包括三个执行节点312-1、312-2和312-n。执行节点312-1包括高速缓存314-1和处理器316-1。执行节点312-2包括高速缓存314-2和处理器316-2。执行节点312-n包括高速缓存314-n和处理器316-n。另外,虚拟仓库3包括三个执行节点322-1、322-2和322-n。执行节点322-1包括高速缓存324-1和处理器326-1。执行节点322-2包括高速缓存324-2和处理器326-2。执行节点322-n包括高速缓存324-n和处理器326-n。
在一些实施例中,相对于执行节点正在高速缓存的数据,图3所示的执行节点是无状态的。例如,这些执行节点不存储或以其他方式维护有关执行节点的状态信息或由特定执行节点高速缓存的数据。因此,在执行节点发生故障的情况下,可以用另一个节点透明地替换发生故障的节点。由于没有与发生故障的执行节点相关联的状态信息,因此新的(替换)执行节点可以轻松替换发生故障的节点,而无需考虑重新创建特定状态。
尽管图3中所示的执行节点包括一个数据高速缓存和一个处理器,但是替代实施例可以包括包含任意数量的处理器和任意数量的高速缓存的执行节点。另外,高速缓存的大小在不同执行节点之间可能有所不同。图3所示的高速缓存在本地执行节点(例如,本地磁盘)中存储从云计算存储平台104中的一个或更多个数据存储设备检索的数据(例如,给定节点最近访问的S3对象)。在一些示例实施例中,当查询仅下载该查询所需的列时,高速缓存存储文件头和文件的各个列。
为了提高高速缓存命中并避免重叠存储在节点高速缓存中的冗余数据,作业优化器208使用一致的散列方案将输入文件集合分配给节点,以散列所访问的数据(例如,数据库116或存储平台122中的数据)的表文件名。根据一些示例实施例,访问同一表文件的后续或并发查询因此将在同一节点上执行。
如所讨论的,节点和虚拟仓库可以响应于环境条件(例如,灾难场景)、硬件/软件问题(例如,故障)或管理变化(例如,从大集群改变到小集群以降低成本)而动态改变。在一些示例实施例中,当节点集改变时,没有立即重新混洗数据。相反,实施最近最少使用的替换策略来最终替换多个作业中丢失的缓存内容。因此,高速缓存减小或消除了在从远程存储***中不断检索数据的平台中出现的瓶颈问题。本文描述的***和方法不是从远程存储设备重复访问数据,而是从执行节点中的高速缓存访问数据,这明显更快并且避免了上面讨论的瓶颈问题。在一些实施例中,使用提供对高速缓存的数据的快速访问的高速存储器设备来实现高速缓存。每个高速缓存可以存储来自云计算存储平台104中的任何存储设备的数据。
此外,高速缓存资源和计算资源可以在不同的执行节点之间变化。例如,一个执行节点可包含大量的计算资源和最少的高速缓存资源,从而使该执行节点可用于需要大量计算资源的任务。另一个执行节点可包含大量的高速缓存资源和最少的计算资源,从而使该执行节点可用于需要高速缓存大量数据的任务。又一个执行节点可包含提供更快的输入-输出操作的高速缓存资源,这对于需要快速扫描大量数据的任务很有用。在一些实施例中,执行平台114实现偏斜处理,以在与特定执行相关联的高速缓存资源和计算资源之间分配工作,其中分配可以进一步基于由执行节点执行的预期任务。例如,如果执行节点执行的任务变得更加处理器密集,则可以为执行节点分配更多的处理资源。类似地,如果执行节点执行的任务需要更大的高速缓存容量,则可以为执行节点分配更多的高速缓存资源。此外,由于各种问题(例如,虚拟化问题、网络开销),一些节点的执行速度可能比其他节点慢得多。在一些示例实施例中,使用文件窃取方案在扫描级别解决不平衡。特别是,每当节点进程完成扫描其输入文件集合时,它都会向其他节点请求额外的文件。如果其他节点中的一个接收到这样的请求,则该节点分析其自己的集合(例如,当接收到该请求时,在输入文件集合中还剩多少文件),然后在当前作业(例如,查询)的持续时间内转移一个或更多个剩余文件的所有权。请求节点(例如,文件窃取节点)然后接收数据(例如,头部数据)并从云计算存储平台104(例如,从数据存储设备124-1)下载文件,并且不从传输节点下载文件。这样,滞后节点可以通过文件窃取来传输文件,而不会加重滞后节点的负载。
尽管虚拟仓库1、2和n与同一执行平台114相关联,但是可以使用在多个地理位置处的多个计算***来实现虚拟仓库。例如,虚拟仓库1可以由第一地理位置处的计算***来实现,而虚拟仓库2和n由第二地理位置处的另一计算***来实现。在一些实施例中,这些不同的计算***是由一个或更多个不同的实体维护的基于云的计算***。
另外,每个虚拟仓库在图3中被示为具有多个执行节点。可以使用位于多个地理位置处的多个计算***来实现与每个虚拟仓库相关联的多个执行节点。例如,虚拟仓库1的实例在一个地理位置处的一个计算平台上实现执行节点302-1和302-2,并且在另一个地理位置处的不同计算平台上实现执行节点302-n。选择特定的计算***以实施执行节点可以取决于各种因素,诸如特定的执行节点所需的资源水平(例如,处理资源要求和高速缓存要求)、特定计算***处可用的资源、地理位置内或地理位置之间的网络的通信能力以及哪些计算***已在虚拟仓库中实现其他执行节点。
执行平台114也是容错的。例如,如果一个虚拟仓库发生故障,那么该虚拟仓库将很快被位于不同地理位置处的不同虚拟仓库替换。
特定执行平台114可以包括任意数量的虚拟仓库。另外,特定执行平台中虚拟仓库的数量是动态的,使得在需要附加的处理和/或高速缓存资源时创建新的虚拟仓库。类似地,当不再需要与虚拟仓库关联的资源时,可以删除现有的虚拟仓库。
在一些实施例中,虚拟仓库可以在云计算存储平台104中对相同数据进行操作,但是每个虚拟仓库具有其自己的具有独立处理和高速缓存资源的执行节点。此配置允许对不同虚拟仓库上的请求进行独立处理,并且请求之间不会相互干扰。这种独立的处理与动态添加和移除虚拟仓库的能力相结合,支持为新用户添加新的处理能力,而不会影响现有用户观察到的性能。
图4示出了根据一些示例实施例的用于分布式集群计算的示例元数据连接器架构400。在图4所示的示例中,集群计算平台150包括用户代码420(例如,最终用户代码、查询、Spark应用等),其使用主节点425(例如,驱动节点)和多个工作器节点430以集群方式处理数据。集群计算平台150被配置成经由API连接器145(例如,JDBC连接器)将基于网络的数据仓库***102用作关系数据源。在该示例中,用户代码420包括针对API连接器145的格式的查询(例如,“ExecuteQuery”),其然后针对基于网络的数据仓库***102以针对基于网络的数据仓库***102的查询格式执行查询(例如,“execute”)。基于网络的数据仓库***102以如上参考图1-3所述的解耦的可扩展方法实现一个或更多个虚拟仓库和存储设备,以生成用于生成结果文件410的查询数据407(例如,查询结果)。
在一些示例实施例中,结果文件410是使用序列化接口的序列化对象(例如,Java序列化,结果文件1、2、3,...,n,JSON中的序列化文件,其可以在工作器上解压)。例如,基于网络的数据仓库***102在构建对象时实现Java序列化接口(例如,import.java.io.serializable使用writeObject()方法使用ObjectOutputStream类进行序列化)。对象的序列化将对象状态存储为字节序列,并将重建为字节的过程存储为可在以后处理的可处理对象(例如,在给定的工作器节点上重建和处理)。在一些示例实施例中,查询数据407作为JSON数据被返回,然后被用于创建序列化对象,其中模式和变量值在序列化接口中被持久化,以允许结果文件被压缩为序列化对象以存储在S3上,然后通过工作器节点请求被分发到工作器节点,然后针对每个工作器节点被解压缩(例如,解序列化、恢复)。在一些示例实施例中,为其存储状态的序列化变量包括:来自被查询的表的列名、哪些数据被序列化或持久化的索引可以基于被查询的数据(例如,集群计算平台150正在查询的基于网络的数据仓库***102中的数据、模式、表量、数据类型等)而改变。序列化并存储到中间平台405的对象的大小可以根据实现方式而变化(例如,设置大文件大小以减少结果文件的数量,或者设置小文件大小以增加文件数量,但是依赖于额外的工作器节点来提高分布式性能)。虽然在这里的例子中讨论了JSON,但是应该理解,可以以Arrow格式和附加的二进制格式来构造和序列化对象。
基于网络的数据仓库***102然后将结果文件410存储到中间平台405。中间平台405可以是云存储数据库(例如,S3),其是弹性的,并且可以缩放以处理来自集群计算平台150的大量结果文件和连接(例如,工作器节点请求)。
如所讨论的,如果主节点425访问中间平台405中的结果文件410(例如,检索它并确定将数据分发给工作器的计划),随着结果文件的大小增加,可能会出现瓶颈。为了避免瓶颈并实现可扩缩性,Snowflake平台构建描述平台405中的数据的对象元数据集(例如,包装器、信封),并将对象元数据集传输到API连接器145以发送到集群计算平台150。例如,根据一些示例实施例,基于网络的数据仓库***102在对象元数据集中包括:第一组块(实际结果文件对象)、文件URL、行数、压缩/未压缩大小、以及仍然在中间平台405中的结果文件410的其他组块的凭证数据。
API连接器145接收对象元数据集,不读取或需要修改它,并将其发送到集群计算平台150,例如,发送到主节点425。这样,即使结果文件的数量非常大,描述结果文件的对象元数据集仍然很小,易于处理和发送。继续,主节点425然后使用集群计算平台150固有的分发和优化将对象元数据集中的各个对象分发到工作器节点。例如,如果集群计算平台150是Apache Spark,则主节点425将对象作为RDD分发到工作器节点430,其中RDD的分发和排序由Apache Spark内部的本机优化来处理。应当理解,虽然这里使用Apache Spark作为示例,但是集群计算平台150可以是其他集群模式平台,例如Cassandra或Hadoop。在这些示例实现中,集群***仍然可以容易地接收和分发用于计算的对象。例如,集群计算平台150可以是Hadoop,并且可以有效地将可序列化存储对象分发到节点,然后节点可以快速访问中间平台405上的数据,对其进行解压缩,并且以类似的方式对每个Hadoop应用执行进一步的动作(例如,MapReduce操作)。
继续,工作器节点430接收对象,然后使用连接器函数调用415从中间平台405检索分配给各个工作器的结果文件。例如,如图所示,工作器2调用连接器JDBC_2的函数“getResultSet()”,以在中间平台405上获得包括结果文件2的标准JDBC结果集对象,在中间平台405上,返回的数据被解压缩(例如,JSON解序列化器)。根据一些示例实施例,getResultSet()函数被映射到API连接器145中的JDBC本地的标准getResult()调用(例如,连接器代码被扩展或修改以存储映射)。类似地,工作器3调用连接器JDBC_3的函数“getResultSet()”来获得包含中间平台405上的结果文件3的标准JDBC结果集对象,并且附加工作器节点同样可以访问附加结果文件的结果集数据(例如,工作器节点n使用JDBC_n来接收结果集n)。在所示示例中,第一工作器节点不访问第一组块(例如,结果文件1),因为该文件被包括在对象元数据集中(例如,在结果文件1或结果集的第一组块通常很小的情况下,它被包括在经由API连接器145发送的元数据对象中)。此外,根据一些示例实施例,连接器函数调用415是对API连接器145的调用,而在其他示例实施例中,JDBC_1、JDBC_2、JDBC_3、JDBC_n等中的每一个是为每个工作器节点安装的单独API连接器的独立实例。继续,一旦工作器节点430经由HTTP URL下载它们各自分配的结果数据部分并对其解压缩,每个工作器节点然后可以执行分析并按用户代码420进一步执行(例如,进一步处理、查询、过滤、生成可视化以及终端用户指示的其他动作)。
在一些示例实施例中,结果文件410在预配置的时间段内作为对象存储在中间平台405中,以使得工作器节点能够在稍后时间快速重新处理所查询的数据。例如,给定查询的结果文件410在中间平台405上存储36小时(例如,一个会话),以使工作器能够快速地重新处理和解序列化所查询的数据,而无需创建新的结果文件和定义新的序列化。此外,根据一些示例实施例,工作器使用的凭证(例如,从信封接收的)到期以增加安全性(例如,工作器2在中间平台405上访问结果文件2的凭证在6小时内到期)。
图5是根据一些示例实施例的用于为集群计算处理生成结果文件和对象元数据集项目的方法500的流程图。在操作505,计算集群连接到计算集群可以对其执行查询的数据源。例如,在操作505,集群计算平台150的主节点经由API连接器(例如API连接器145)连接到基于网络的数据仓库***102。
在操作510,基于网络的数据仓库***102从集群接收查询。例如,在操作510,集群计算平台150上的客户应用执行查询,该查询通过API连接器145传输到基于网络的数据仓库***102,用于对照由基于网络的数据仓库***102管理的数据库进行处理。在操作515,基于网络的数据仓库***102执行查询。例如,基于网络的数据仓库***102使用上面参考图1-3讨论的虚拟仓库对由共享数据处理平台100管理的数据执行查询。
在操作520,基于网络的数据仓库***102从查询数据生成结果文件。如所讨论的,结果文件通过API连接器145(例如,java.io.serializable)是可序列化的,并且可以被传送到不同的***用于远程处理,例如集群计算平台工作器节点。在操作525,基于网络的数据仓库***102存储生成的结果文件。例如,在操作525,基于网络的数据仓库***102将结果文件存储在基于云的中间平台中,例如Amazon S3或Microsoft Azure。
在操作530,基于网络的数据仓库***102生成描述存储在中间平台上的序列化数据的对象元数据集。如上所述,对象元数据集可以包括第一结果文件或组块数据,以及描述存储在中间平台中的结果文件的元数据,包括中间平台上的每个结果文件的结果文件大小、文件格式、凭证或访问信息、文件路径(例如,网络地址,URL)。
在操作535,基于网络的仓库***传输对象元数据集。例如,在操作535,基于网络的数据仓库***102经由API连接器145将对象元数据集传输到集群计算平台150,用于分发到工作器节点并进一步处理。
图6示出了根据一些示例实施例的用于处理从API连接器接收的结果文件的方法600的流程图。在操作605,集群计算平台150接收对象元数据集。例如,在操作605,集群计算平台150的主节点从API连接器145接收对象元数据集。在操作610,集群计算平台150分发对象元数据集项目。例如,在操作610,集群计算平台150的主节点在其工作器节点之间分发对象元数据集,例如,每个工作器节点一个元数据项,其中每个元数据对象使得接收方工作器节点能够在中间平台上检索结果文件之一用于处理。
在操作615,集群计算平台150从中间平台检索结果文件。例如,在操作615,集群计算平台150的工作器节点执行对API连接器145的函数调用(例如,GetResult())以直接访问并从中间平台下载结果文件。API连接器145接收来自给定工作器节点的函数调用,并返回结果数据,例如JDBC中的结果集,其包含中间平台中的分配给给定节点的结果文件。
在操作620,集群计算平台150解析检索到的结果文件。例如,在操作620,每个工作器从中间平台下载存储对象结果文件,对其进行解压缩(例如,使用JSON序列化器对其进行解序列化),并以未压缩的形式存储结果数据以供处理。
在操作625,集群计算平台150对检索到的结果文件执行应用操作。例如,在操作625,集群计算平台150中的每个工作器节点使用集群计算平台150的本地功能或指令(例如,Apache spark标准函数、spark机器学习库)来执行附加的分析操作(例如,数据科学操作、可视化生成操作、内部查询和数据排列操作)。
在操作630,集群计算平台150在用户界面上显示处理后的结果数据。例如,在操作630,集群计算平台150上的客户应用在诸如用户设备106的用户设备的用户界面上显示数据可视化或查询结果。在操作635,数据是重新查询的结果数据。例如,如上所述,中间平台可以将结果文件对象保留有限的时间(例如,36小时),在此期间,不需要对给定数据集的对象和序列化过程进行再处理。相反,数据保留在中间平台上,并且集群计算平台150可以使用分布式序列化方法来查询数据。根据一些示例实施例,在保留期到期之后,序列化的结果对象被删除或以其他方式从中间平台移除。
图7示出了根据一些示例实施例的使用元数据连接器实现集群计算的网络泳道图700。在网络泳道图700中,每个列或泳道对应于由它们各自泳道的不同实体执行的动作。例如,在第一列中,操作715、720和730由基于网络的数据仓库***102执行。类似地,根据一些示例环境,API连接器145执行操作710、735和755;集群计算平台150执行操作705、740、745、750和765;并且中间平台405执行操作725和760。应当理解,尽管在图7的示例中实体被讨论和显示为单独的实体,但是如本领域普通技术人员所理解的,实体可以被组合或集成。例如,API连接器145可以被安装为基于网络的数据仓库***102的组件。
在操作705,集群计算平台150生成查询。例如,Spark用户创建或开发ApacheSpark作业(例如,客户应用),其中该作业由集群计算平台150管理,例如,主节点接收该作业并生成对数据的查询,其中该数据由基于网络的数据仓库***102管理。在操作710,API连接器145转换查询,以便针对基于网络的数据仓库***102执行。在操作715,基于网络的数据仓库***102针对一个或更多个关系数据储存器执行接收到的查询,以生成查询结果数据。在操作720,基于网络的数据仓库***102将结果文件发送到中间平台405,然后中间平台405在操作725存储结果文件。根据一些示例实施例,基于网络的数据仓库***102经由连接器API(Java可序列化接口)将结果数据结果序列化为可序列化对象。在操作730,基于网络的数据仓库***102生成描述存储在中间平台405中的文件(例如,地址、格式、位置、大小)的元数据(例如,对象元数据集)以及集群计算平台150可以实现以访问存储的结果数据的访问数据(例如,网络凭证)。在操作735,API连接器145接收对象元数据集。在操作745,集群计算平台150的主节点向每个工作器节点分发元数据对象。在操作750,每个工作器节点从列表接收对象元数据项,并执行对API连接器145的函数调用。在操作755,API连接器145用作工作器节点的工具(utility),并执行调用(例如,GetResult()以返回给定节点的结果集)来访问中间平台405上的结果文件。然后,在操作760,中间平台405将结果发送给工作器节点。在操作765,集群计算平台150的工作器节点处理下载的结果文件。例如,每个工作器节点下载序列化形式的结果文件并对其进行解压缩,并根据客户应用对数据执行进一步的处理(例如,分析处理、机器学习方法等)。
根据示例实施例,图8以计算机***的形式示出了机器800的示意图表示,用于使机器800执行本文所讨论方法中的任何一个或更多个的指令集合可以在该计算机***内执行。具体地,图8以计算机***的示例形式示出了机器800的示意图表示,用于使机器800执行本文所讨论方法中的任何一个或更多个的指令816(例如,软件、程序、应用、小程序、小应用(app)或其他可执行代码)在该计算机***内执行。例如,指令816可以使机器800执行方法500、600和700中的任何一个或更多个的任何一个或更多个操作。以这种方式,指令816将通用的、未编程的机器转换成特定的机器800(例如,用户设备106、访问管理***110、计算服务管理器112、执行平台114、访问管理***118、云接口120),该特定的机器800被特别配置成以这里描述的方式执行所描述和示出的功能中的任何一个。
在替代实施例中,机器800作为独立的设备操作或者可以耦合(例如,联网)到其它机器。在联网部署中,机器800可以在服务器-客户端网络环境中作为服务器机器或客户端机器来操作,或者作为对等(或分布式)网络环境中的对等机器来操作。机器800可以包括但不限于服务器计算机、客户端计算机、个人计算机(PC)、平板计算机、膝上型计算机、上网本(netbook)、智能电话、移动设备、网络路由器、网络交换机、网络桥接器或能够顺序地或以其它方式执行指令816的任何机器,指令816指定由机器800采取的动作(action)。此外,虽然仅示出了单个机器800,但术语“机器”还应被理解为包括单独或联合地执行指令816以实施本文所讨论方法中的任何一个或更多个的机器800的集合。
机器800包括处理器810、存储器830和输入/输出(I/O)组件850,它们被配置成例如经由总线802彼此通信。在示例实施例中,处理器810(例如,中央处理单元(CPU)、精简指令集计算(RISC)处理器、复杂指令集计算(CISC)处理器、图形处理单元(GPU)、数字信号处理器(DSP)、专用集成电路(ASIC)、射频集成电路(RFIC)、另一处理器或其任何合适的组合)可以包括例如可以执行指令816的处理器812和处理器814。术语“处理器”旨在包括多核处理器810,多核处理器810可以包括可以同时执行指令816的两个或更多个独立处理器(有时称为“核”)。尽管图8示出了多个处理器810,但是机器800可以包括具有单核的单个处理器、具有多核的单个处理器(例如,多核处理器)、具有单核的多个处理器、具有多核的多个处理器或者它们的任意组合。
存储器830可以包括主存储器832、静态存储器834和存储单元836,它们都可以由处理器810例如经由总线802访问。主存储器832、静态存储器834和存储单元836存储指令816,指令816体现本文描述的方法或功能中任何一种或更多种。在由机器800执行期间,指令816也可以全部或部分地驻留在主存储器832内、静态存储器834内、存储单元836内、至少一个处理器810内(例如,在处理器的高速缓冲存储器内)或其任何合适的组合内。
I/O组件850包括用于接收输入、提供输出、产生输出、传输信息、交换信息、捕获测量值等的组件。包含在特定机器800中的具体的I/O组件850将取决于机器的类型。例如,诸如移动电话的便携式机器将可能包括触摸输入设备或其他这样的输入机制,而无头服务器机器可能不包括这样的触摸输入设备。将认识到的是,I/O组件850可以包括图8中未示出的许多其他组件。I/O组件850根据功能进行分组仅仅是为了简化下面的讨论,并且该分组决不是限制性的。在各种示例实施例中,I/O组件850可以包括输出组件852和输入组件854。输出组件852可以包括视觉组件(例如,诸如等离子体显示面板(PDP)、发光二极管(LED)显示器、液晶显示器(LCD)、投影仪或阴极射线管(CRT)的显示器)、声学组件(例如,扬声器)、其他信号发生器等。输入组件854可以包括字母数字输入组件(例如,键盘、被配置成接收字母数字输入的触摸屏、光电键盘或其他字母数字输入组件)、基于点的输入组件(例如,鼠标、触控板、轨迹球、操纵杆、运动传感器或另一指向仪器)、触觉输入组件(例如,物理按钮、提供触摸或触摸手势的位置和/或力的触摸屏或其他触觉输入组件)、音频输入组件(例如,麦克风)等。
通信可以使用多种技术来实现。I/O组件850可以包括通信组件864,通信组件864可操作来分别经由耦合882和耦合872将机器800耦合到网络880或设备870。例如,通信组件864可以包括网络接口组件或与网络880接口的另一合适的设备。在进一步的示例中,通信组件864可以包括有线通信组件、无线通信组件、蜂窝通信组件和经由其他模态提供通信的其他通信组件。设备870可以是另一台机器或多种***设备中的任一种(例如,经由通用串行总线(USB)耦合的***设备)。例如,如上所述,机器800可以对应于用户设备106、访问管理***110、计算服务管理器112、执行平台114、访问管理***118、云接口120中的任何一个。
各种存储器(例如,830、832、834和/或处理器810和/或存储单元836的存储器)可以存储指令816和数据结构(例如,软件)的一个或更多个集合,这些指令816和数据结构体现本文所描述方法或功能中的任何一种或更多种或被本文所描述方法或功能中的任何一种或更多种所利用。当由处理器810执行时,这些指令816促使各种操作来实现所公开的实施例。
如本文所使用的,术语“机器存储介质”、“设备存储介质”和“计算机存储介质”意思相同,并且可以在本公开中互换使用。这些术语指的是存储可执行指令和/或数据的单个或更多个存储设备和/或介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。相应地,这些术语应当被认为包括但不限于包括处理器内部或外部的存储器的固态存储器以及光和磁介质。机器存储介质、计算机存储介质和/或设备存储介质的具体示例包括非易失性存储器,非易失性存储器包括例如半导体存储器设备,诸如可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、现场可编程门阵列(FPGA)和闪存设备;磁盘,如内部硬盘和可移除磁盘;磁光盘;以及CD-ROM和DVD-ROM光盘。术语“机器存储介质”、“计算机存储介质”和“设备存储介质”具体排除了载波、调制数据信号和其他这样的介质(其中的至少一些包含在下面讨论的术语“信号介质”中)。
在各种示例实施例中,网络880的一个或更多个部分可以是自组织网络(ad hocnetwork)、内联网、外联网、虚拟专用网络(VPN)、局域网(LAN)、无线LAN(WLAN)、广域网(WAN)、无线WAN(WWAN)、城域网(MAN)、互联网、互联网的一部分、公共交换电话网络(PSTN)的一部分、普通老式电话服务(POTS)网络、蜂窝电话网络、无线网络、网络、另一种类型的网络、或两种或更多种这样的网络的组合。例如,网络880或网络880的一部分可以包括无线或蜂窝网络,并且耦合882可以是码分多址(CDMA)连接、全球移动通信***(GSM)连接或另一种类型的蜂窝或无线耦合。在该示例中,耦合882可以实现多种类型的数据传输技术中的任何一种,如单载波无线电传输技术(1xRTT)、演进数据优化(EVDO)技术、通用分组无线电服务(GPRS)技术、增强型数据速率GSM演进(EDGE)技术、包括3G、***无线(4G)网络、通用移动电信***(UMTS)、高速分组接入(HSPA)、微波接入全球互操作性(WiMAX)、长期演进(LTE)标准的第三代合作伙伴计划(3GPP)、由各种标准设置组织定义的其他技术、其他长程协议、或其他数据传输技术。
指令816可以使用传输介质经由网络接口设备(例如,包括在通信组件864中的网络接口组件)并利用多种众所周知的传输协议(例如,超文本传输协议(HTTP))中的任何一种在网络880上传输或接收。类似地,指令816可以使用传输介质经由耦合872(例如,对等耦合)传输或接收到设备870。术语“传输介质”和“信号介质”意思相同,在本公开中可以互换使用。术语“传输介质”和“信号介质”应被理解为包括能够存储、编码或携带由机器800执行的指令816的任何无形介质,并且包括数字或模拟通信信号或便于这种软件的通信的其他无形介质。因此,术语“传输介质”和“信号介质”应被理解为包括任何形式的调制数据信号、载波等。术语“调制数据信号”意指这样的信号:其具有以对信号中的信息进行编码的这样的方式设置或更改的其特性中的一个或更多个特性。
术语“机器可读介质”、“计算机可读介质”和“设备可读介质”意思相同,并且在本公开中可以互换使用。这些术语被定义为包括机器存储介质和传输介质。因此,这些术语包括存储设备/介质和载波/调制数据信号。
本文所述的示例方法的各种操作可以至少部分地由(例如,通过软件)临时配置或永久地配置为执行相关操作的一个或更多个处理器来执行。类似地,本文描述的方法可以至少部分地是处理器实现的。例如,方法500、600和700的至少一些操作可以由一个或更多个处理器执行。某些操作的执行可以分布在一个或更多个处理器中,不仅驻留在单个机器内,而且部署在多个机器上。在一些示例实施例中,一个或更多个处理器可以位于单个位置(例如,在家庭环境、办公室环境或服务器场内)中,而在其他实施例中,处理器可以分布在多个位置上。
尽管参考具体的示例实施例描述了本公开的实施例,但显然地,在不背离本发明主题的更广泛范围的情况下,可以对这些实施例做出各种修改和变化。相应地,说明书和附图被认为是说明性的而不是限制性的。形成其一部分的附图通过说明方式并且不以限制方式显示了其中可以实施主题的具体实施例。所示出的实施例以充分细节描述,以便使本领域那些技术人员能够实施本文披露的教导。可以使用其他实施例和从其中衍生的实施例,使得可以作出结构性或逻辑性替换和变化而不偏离本公开的范围。因此不以限制性意义理解这一详细说明,并且各种实施例的范围仅由所附权利要求连同授权的此类权利要求的完整范围的等同物限定。
发明主题的此类实施例可以在本文中单独地和/或共同地由术语“发明”提到,该术语仅出于便利目的并且不意在自愿将本申请的范围限于任何单一发明或发明构思,如果实际上披露的多于一种的话。因此,虽然已经在此说明和描述了特定实施例,但是应当理解,可以用经计算以实现相同目的的任何布置替换用于所示的具体实施例。本公开旨在覆盖各种实施例的任何和所有修改或变型。在阅读以上描述后,本领域的技术人员将明白以上实施例的组合以及本文未具体描述的其他实施例。
在本文档中,术语“一个(a)”或“一个(an)”,如专利文档中常见的那样,用于包括一个或多于一个,与“至少一个”或“一个或更多个”的任何其他实例或用法无关。在本文档中,术语“或”用于指非排他性的或,因此“A或B”包括“A但不包括B”、“B但不包括A”和“A和B”,除非另有说明。在所附权利要求中,术语“包括(including)”和“其中(in which)”被用作相应术语“包含(comprising)”和“其中(wherein)”的纯英语等效词。此外,在所附权利要求中,术语“包括”和“包含”是开放式的;也就是说,包括除了权利要求中这样的术语之后列出的那些元素之外的元素的***、设备、物品或过程仍然被认为落入该权利要求的范围内。
示例
示例1是一种方法,包括:通过数据库连接器接口,使用机器的一个或更多个处理器,接收针对分布式数据库的查询,该查询从包括主节点和多个工作器节点的外部计算集群接收,分布式数据库为该查询生成序列化结果文件,并将序列化结果文件存储在中间数据库中;由数据库连接器接口将对象元数据集传输到外部计算集群的主节点,对象元数据集包括多个对象元数据集项目,多个对象元数据集项目中的每一个描述中间数据库中的序列化结果文件之一的访问数据;由数据库连接器接口从多个工作器节点接收对存储在中间数据库中的序列化结果文件的请求,请求中的每一个使用多个对象元数据集项目之一生成;以及通过数据库连接器接口将序列化结果文件从中间数据库传输到外部计算集群的多个工作器节点,多个工作器节点接收序列化结果文件并对序列化结果文件执行进一步处理。
在示例2中,示例1的主题还可选地包括,其中多个对象元数据集项目中的每一个包括中间数据库中的序列化结果文件之一的网络地址数据。
在示例3中,示例1或2中任一个的主题还可选地包括,其中多个对象元数据集项目中的每一个包括访问中间数据库中的序列化结果文件的凭证数据。
在示例4中,示例1至3中任一个的主题还可选地包括,其中多个工作器节点从主节点接收多个元数据集项目,并且多个工作器节点使用接收的多个元数据集项目中的网络地址数据生成对序列化结果文件的请求。
在示例5中,示例1至4中任一个的主题还可选地包括由分布式数据库使用从外部计算集群接收的查询来生成查询结果。
在示例6中,示例1至5中任一个的主题还可选地包括使用查询结果生成序列化结果文件,使用数据库连接器接口的序列化接口生成序列化结果文件,其中使用序列化接口生成的序列化结果文件可在网络上分发以进行远程处理。
在示例7中,示例1至6中任一个的主题还可选地包括,其中序列化结果文件使用序列化接口存储查询结果的状态数据。
在示例8中,示例1至7中任一个的主题还可选地包括,其中状态数据包括为查询生成的查询结果的模式。
在示例9中,示例1至8中任一个的主题还可选地包括,其中由多个工作器节点执行的进一步处理包括解压缩序列化结果文件。
在示例10中,示例1至9中任一个的主题还可选地包括,其中通过解序列化用于恢复状态数据的序列化结果文件来解压缩序列化结果文件。
在示例11中,示例1至10中任一个的主题还可选地包括,其中由多个工作器节点执行的进一步处理包括从由外部计算集群托管的集群计算应用生成的指令。
在示例12中,示例1至11中任一个的主题还可选地包括,其中分布式数据库是关系数据库,并且数据库连接器接口是关系数据库应用编程接口(API)连接器。
示例13是一种***,包括:机器的一个或更多个处理器;以及存储指令的存储器,所述指令在被一个或更多个处理器执行时,使得机器执行实现示例方法1至12中的任何一个的操作。
示例14是包含指令的机器可读存储设备,当由机器执行时,该指令使得机器执行实现方法1至12之一的操作。
Claims (30)
1.一种方法,包括:
由数据库连接器接口使用机器的一个或更多个处理器接收针对分布式数据库的查询,所述查询接收自包括主节点和多个工作器节点的外部计算集群,所述分布式数据库为所述查询生成序列化结果文件,并将所述序列化结果文件存储在中间数据库中;
由所述数据库连接器接口将对象元数据集传输到所述外部计算集群的所述主节点,所述对象元数据集包括多个对象元数据集项目,所述多个对象元数据集项目中的每一个描述所述中间数据库中的所述序列化结果文件之一的访问数据;
由所述数据库连接器接口从所述多个工作器节点接收对存储在所述中间数据库中的序列化结果文件的请求,所述请求中的每一个是使用所述多个对象元数据集项目之一生成的;和
通过所述数据库连接器接口将所述序列化结果文件从所述中间数据库传输到所述外部计算集群的所述多个工作器节点。
2.根据权利要求1所述的方法,其中所述多个工作器节点对所接收的所述序列化结果文件执行进一步的处理。
3.根据权利要求1所述的方法,其中所述多个对象元数据集项目中的每一个包括所述中间数据库中的序列化结果文件之一的网络地址数据。
4.根据权利要求1所述的方法,其中,所述多个对象元数据集项目中的每一个包括用于访问所述中间数据库中的序列化结果文件的凭证数据。
5.根据权利要求2所述的方法,其中所述多个工作器节点从所述主节点接收所述多个元数据集项目,并且所述多个工作器节点使用所接收的多个元数据集项目中的网络地址数据来生成对所述序列化结果文件的请求。
6.根据权利要求2所述的方法,其中所述数据库连接器接口集成在所述分布式数据库中,并且其中所述方法还包括:
由所述分布式数据库使用从所述外部计算集群接收的查询生成查询结果。
7.根据权利要求5所述的方法,还包括:
使用所述查询结果生成所述序列化结果文件,所述序列化结果文件是使用所述数据库连接器接口的序列化接口生成的,其中使用所述序列化接口生成的所述序列化结果文件能在网络上分发用于远程处理。
8.根据权利要求6所述的方法,其中所述序列化结果文件使用所述序列化接口存储所述查询结果的状态数据。
9.根据权利要求7所述的方法,其中所述状态数据包括为所述查询生成的查询结果的模式。
10.根据权利要求8所述的方法,其中由所述多个工作器节点执行的进一步的处理包括解压缩所述序列化结果文件。
11.根据权利要求9所述的方法,其中通过解序列化用于恢复所述状态数据的所述序列化结果文件来解压缩所述序列化结果文件。
12.根据权利要求2所述的方法,其中由所述多个工作器节点执行的进一步的处理包括从由所述外部计算集群托管的集群计算应用生成的应用操作。
13.一种***,包括:
机器的一个或更多个处理器;和
存储器,其存储指令,当由所述一个或更多个处理器执行时,所述指令使得所述机器执行操作,所述操作包括:
由数据库连接器接口接收针对分布式数据库的查询,所述查询接收自包括主节点和多个工作器节点的外部计算集群,所述分布式数据库为所述查询生成序列化结果文件,并将所述序列化结果文件存储在中间数据库中;
由所述数据库连接器接口将对象元数据集传输到所述外部计算集群的所述主节点,所述对象元数据集包括多个对象元数据集项目,所述多个对象元数据集项目中的每一个描述所述中间数据库中的所述序列化结果文件之一的访问数据;
由所述数据库连接器接口从所述多个工作器节点接收对存储在所述中间数据库中的序列化结果文件的请求,所述请求中的每一个是使用所述多个对象元数据集项目之一生成的;和
通过所述数据库连接器接口将所述序列化结果文件从所述中间数据库传输到所述外部计算集群的所述多个工作器节点。
14.根据权利要求13所述的***,其中所述多个工作器节点对所接收的所述序列化结果文件执行进一步的处理。
15.根据权利要求13所述的***,其中所述多个对象元数据集项目中的每一个包括所述中间数据库中的序列化结果文件之一的网络地址数据。
16.根据权利要求13所述的***,其中,所述多个对象元数据集项目中的每一个包括用于访问所述中间数据库中的序列化结果文件的凭证数据。
17.根据权利要求14所述的***,其中所述多个工作器节点从所述主节点接收所述多个元数据集项目,并且所述多个工作器节点使用所接收的多个元数据集项目中的网络地址数据来生成对所述序列化结果文件的请求。
18.根据权利要求14所述的***,所述操作还包括:
由所述分布式数据库使用从所述外部计算集群接收的查询生成查询结果。
19.根据权利要求17所述的***,还包括:
使用所述查询结果生成所述序列化结果文件,所述序列化结果文件是使用所述数据库连接器接口的序列化接口生成的,其中使用所述序列化接口生成的所述序列化结果文件能在网络上分发用于远程处理。
20.根据权利要求19所述的***,其中所述序列化结果文件使用所述序列化接口存储所述查询结果的状态数据。
21.根据权利要求18所述的***,其中所述状态数据包括为所述查询生成的查询结果的模式。
22.根据权利要求21所述的***,其中由所述多个工作器节点执行的进一步的处理包括解压缩所述序列化结果文件。
23.根据权利要求22所述的***,其中通过解序列化用于恢复所述状态数据的所述序列化结果文件来解压缩所述序列化结果文件。
24.根据权利要求14所述的***,其中由所述多个工作器节点执行的进一步的处理包括从由所述外部计算集群托管的集群计算应用生成的指令。
25.一种包含指令的机器可读存储设备,所述指令在被机器执行时使所述机器执行操作,所述操作包括:
由数据库连接器接口接收针对分布式数据库的查询,所述查询接收自包括主节点和多个工作器节点的外部计算集群,所述分布式数据库为所述查询生成序列化结果文件,并将所述序列化结果文件存储在中间数据库中;
由所述数据库连接器接口将对象元数据集传输到所述外部计算集群的所述主节点,所述对象元数据集包括多个对象元数据集项目,所述多个对象元数据集项目中的每一个描述所述中间数据库中的所述序列化结果文件之一的访问数据;
由所述数据库连接器接口从所述多个工作器节点接收对存储在所述中间数据库中的序列化结果文件的请求,所述请求中的每一个是使用所述多个对象元数据集项目之一生成的;和
通过所述数据库连接器接口将所述序列化结果文件从所述中间数据库传输到所述外部计算集群的所述多个工作器节点。
26.根据权利要求21所述的机器可读存储设备,其中所述多个对象元数据集项目中的每一个包括所述中间数据库中的序列化结果文件之一的网络地址数据。
27.根据权利要求21所述的机器可读存储设备,其中,所述多个对象元数据集项目中的每一个包括用于访问所述中间数据库中的序列化结果文件的凭证数据。
28.根据权利要求22所述的机器可读存储设备,其中所述多个工作器节点从所述主节点接收所述多个元数据集项目,并且所述多个工作器节点使用所接收的多个元数据集项目中的网络地址数据来生成对所述序列化结果文件的请求。
29.根据权利要求21所述的机器可读存储设备,所述操作还包括:
由共享分布式数据库使用从所述外部计算集群接收的查询生成查询结果;以及
使用所述查询结果生成所述序列化结果文件,所述序列化结果文件是使用所述数据库连接器接口的序列化接口生成的,其中使用所述序列化接口生成的所述序列化结果文件能在网络上分发用于远程处理。
30.根据权利要求21所述的机器可读存储设备,其中,所述多个工作器节点对所接收的所述序列化结果文件执行进一步的处理,所述进一步的处理包括从由所述外部计算集群托管的集群计算应用生成的指令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/719,218 US10719517B1 (en) | 2019-12-18 | 2019-12-18 | Distributed metadata-based cluster computing |
US16/719,218 | 2019-12-18 | ||
PCT/US2020/063794 WO2021126599A1 (en) | 2019-12-18 | 2020-12-08 | Distributed metadata-based cluster computing |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113508373A true CN113508373A (zh) | 2021-10-15 |
CN113508373B CN113508373B (zh) | 2024-06-11 |
Family
ID=71611973
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080007623.5A Active CN113508373B (zh) | 2019-12-18 | 2020-12-08 | 分布式的基于元数据的集群计算 |
Country Status (6)
Country | Link |
---|---|
US (3) | US10719517B1 (zh) |
EP (1) | EP3938926A4 (zh) |
KR (2) | KR102377084B1 (zh) |
CN (1) | CN113508373B (zh) |
DE (1) | DE202020005703U1 (zh) |
WO (1) | WO2021126599A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11250005B2 (en) | 2019-12-18 | 2022-02-15 | Snowflake Inc. | Distributed metadata-based cluster computing |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11790008B2 (en) * | 2019-09-12 | 2023-10-17 | Business Objects Software Ltd. | Persisted queries and batch streaming |
US11057491B1 (en) | 2020-07-17 | 2021-07-06 | Snowflake Inc. | Remote execution using a global identity |
US11258846B1 (en) * | 2021-05-26 | 2022-02-22 | Capital One Services, Llc | Real-time serverless streaming in a multi-cloud environment |
US11916998B2 (en) | 2021-11-12 | 2024-02-27 | Electronics And Telecommunications Research Institute | Multi-cloud edge system |
CN116521744B (zh) * | 2023-06-30 | 2023-09-12 | 杭州拓数派科技发展有限公司 | 全双工元数据传输方法、装置、***和计算机设备 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1840766A2 (en) * | 2006-03-28 | 2007-10-03 | Sun Microsystems, Inc. | Systems and methods for a distributed in-memory database and distributed cache |
US20140280202A1 (en) * | 2013-03-14 | 2014-09-18 | Pivotal Software, Inc. | In-database connectivity components analysis of data |
CN104391913A (zh) * | 2014-11-18 | 2015-03-04 | 北京锐安科技有限公司 | 一种数据库管理方法及装置 |
US20150234884A1 (en) * | 2012-11-08 | 2015-08-20 | Sparkledb As | System and Method Involving Resource Description Framework Distributed Database Management System and/or Related Aspects |
CN105468720A (zh) * | 2015-11-20 | 2016-04-06 | 北京锐安科技有限公司 | 集成分布式数据处理***的方法、相应***及其数据处理方法 |
CN106570145A (zh) * | 2016-10-28 | 2017-04-19 | 中国科学院软件研究所 | 一种基于分层映射的分布式数据库结果缓存方法 |
CN107077472A (zh) * | 2014-02-28 | 2017-08-18 | 泰科消防及安全有限公司 | 分布式处理*** |
US20180113912A1 (en) * | 2016-10-24 | 2018-04-26 | Samsung Sds Co., Ltd. | Method and system for storing query result in distributed server |
CN108228654A (zh) * | 2016-12-21 | 2018-06-29 | 青岛祥智电子技术有限公司 | 一种大数据分布式存储方法和*** |
CN109075994A (zh) * | 2016-04-28 | 2018-12-21 | 斯诺弗雷克计算公司 | 多集群仓库 |
CN109690524A (zh) * | 2016-09-15 | 2019-04-26 | 甲骨文国际公司 | 分布式事件处理***中的数据序列化 |
US10318491B1 (en) * | 2015-03-31 | 2019-06-11 | EMC IP Holding Company LLC | Object metadata query with distributed processing systems |
US10437797B1 (en) * | 2014-12-12 | 2019-10-08 | Amazon Technologies, Inc. | In-memory distributed database with a remote data store |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7007024B2 (en) * | 2002-03-29 | 2006-02-28 | Panasas, Inc. | Hashing objects into multiple directories for better concurrency and manageability |
US7873684B2 (en) * | 2003-08-14 | 2011-01-18 | Oracle International Corporation | Automatic and dynamic provisioning of databases |
JP2007511820A (ja) * | 2003-10-27 | 2007-05-10 | アーカイヴァス インコーポレイテッド | 独立ノード冗長アレイに対するポリシーに基づく管理 |
US20050289175A1 (en) * | 2004-06-23 | 2005-12-29 | Oracle International Corporation | Providing XML node identity based operations in a value based SQL system |
US7657581B2 (en) * | 2004-07-29 | 2010-02-02 | Archivas, Inc. | Metadata management for fixed content distributed data storage |
US7680854B2 (en) * | 2005-03-11 | 2010-03-16 | Yahoo! Inc. | System and method for improved job seeking |
WO2008017044A1 (en) * | 2006-08-02 | 2008-02-07 | Watt Systems Technologies, Inc. | Object oriented system and method of graphically displaying and analyzing complex systems |
US7917469B2 (en) * | 2006-11-08 | 2011-03-29 | Hitachi Data Systems Corporation | Fast primary cluster recovery |
US20090012965A1 (en) * | 2007-07-01 | 2009-01-08 | Decisionmark Corp. | Network Content Objection Handling System and Method |
US20090112796A1 (en) * | 2007-10-24 | 2009-04-30 | Marvin Elder | Natural language conceptual joins |
US8484259B1 (en) * | 2009-12-08 | 2013-07-09 | Netapp, Inc. | Metadata subsystem for a distributed object store in a network storage system |
GB2500537A (en) * | 2010-12-03 | 2013-09-25 | Titus Inc | Method and system of hierarchical metadata management and application |
US9396242B2 (en) * | 2011-04-11 | 2016-07-19 | Salesforce.Com, Inc. | Multi-master data replication in a distributed multi-tenant system |
US20130067024A1 (en) * | 2011-09-12 | 2013-03-14 | Microsoft Corporation | Distributing multi-source push notifications to multiple targets |
US9753999B2 (en) * | 2012-01-06 | 2017-09-05 | Citus Data Bilgi Islemieri Ticaret A.S. | Distributed database with mappings between append-only files and repartitioned files |
US8815752B2 (en) | 2012-11-28 | 2014-08-26 | Micron Technology, Inc. | Methods of forming features in semiconductor device structures |
US9588822B1 (en) * | 2012-12-18 | 2017-03-07 | Amazon Technologies, Inc. | Scheduler for data pipeline |
US20140304513A1 (en) * | 2013-04-01 | 2014-10-09 | Nexenta Systems, Inc. | Storage drive processing multiple commands from multiple servers |
US10303702B2 (en) * | 2014-02-07 | 2019-05-28 | Ignite Scalarc Solutions, Inc. | System and method for analysis and management of data distribution in a distributed database environment |
US10545915B2 (en) * | 2015-02-02 | 2020-01-28 | Quantum Corporation | Recursive multi-threaded file system scanner for serializing file system metadata exoskeleton |
US10572510B2 (en) * | 2015-12-21 | 2020-02-25 | Sap Se | Distributed database transaction protocol |
US9753744B1 (en) * | 2016-05-27 | 2017-09-05 | Intuit Inc. | Defining application programming interfaces (APIS) using object schemas |
US11604795B2 (en) * | 2016-09-26 | 2023-03-14 | Splunk Inc. | Distributing partial results from an external data system between worker nodes |
US10956415B2 (en) * | 2016-09-26 | 2021-03-23 | Splunk Inc. | Generating a subquery for an external data system using a configuration file |
US11243963B2 (en) * | 2016-09-26 | 2022-02-08 | Splunk Inc. | Distributing partial results to worker nodes from an external data system |
US10237346B2 (en) * | 2017-02-08 | 2019-03-19 | Vmware, Inc. | Maintaining partition-tolerant distributed metadata |
US10552269B2 (en) * | 2017-08-31 | 2020-02-04 | International Business Machines Corporation | Backup optimization in hybrid storage environment |
US10719484B2 (en) * | 2017-09-07 | 2020-07-21 | Cohesity, Inc. | Remotely mounted file system with stubs |
US9967238B1 (en) * | 2017-11-09 | 2018-05-08 | Broadridge Financial Solutions, Inc. | Database-centered computer network systems and computer-implemented methods for cryptographically-secured distributed data management |
US10936585B1 (en) * | 2018-10-31 | 2021-03-02 | Splunk Inc. | Unified data processing across streaming and indexed data sets |
US10719517B1 (en) | 2019-12-18 | 2020-07-21 | Snowflake Inc. | Distributed metadata-based cluster computing |
-
2019
- 2019-12-18 US US16/719,218 patent/US10719517B1/en active Active
-
2020
- 2020-06-18 US US16/905,729 patent/US11250005B2/en active Active
- 2020-12-08 CN CN202080007623.5A patent/CN113508373B/zh active Active
- 2020-12-08 KR KR1020217031012A patent/KR102377084B1/ko active IP Right Grant
- 2020-12-08 WO PCT/US2020/063794 patent/WO2021126599A1/en unknown
- 2020-12-08 DE DE202020005703.7U patent/DE202020005703U1/de active Active
- 2020-12-08 EP EP20903528.6A patent/EP3938926A4/en active Pending
- 2020-12-08 KR KR1020227008863A patent/KR20220039836A/ko active Application Filing
-
2022
- 2022-01-04 US US17/646,905 patent/US11494386B2/en active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1840766A2 (en) * | 2006-03-28 | 2007-10-03 | Sun Microsystems, Inc. | Systems and methods for a distributed in-memory database and distributed cache |
US20150234884A1 (en) * | 2012-11-08 | 2015-08-20 | Sparkledb As | System and Method Involving Resource Description Framework Distributed Database Management System and/or Related Aspects |
US20140280202A1 (en) * | 2013-03-14 | 2014-09-18 | Pivotal Software, Inc. | In-database connectivity components analysis of data |
CN107077472A (zh) * | 2014-02-28 | 2017-08-18 | 泰科消防及安全有限公司 | 分布式处理*** |
CN104391913A (zh) * | 2014-11-18 | 2015-03-04 | 北京锐安科技有限公司 | 一种数据库管理方法及装置 |
US10437797B1 (en) * | 2014-12-12 | 2019-10-08 | Amazon Technologies, Inc. | In-memory distributed database with a remote data store |
US10318491B1 (en) * | 2015-03-31 | 2019-06-11 | EMC IP Holding Company LLC | Object metadata query with distributed processing systems |
CN105468720A (zh) * | 2015-11-20 | 2016-04-06 | 北京锐安科技有限公司 | 集成分布式数据处理***的方法、相应***及其数据处理方法 |
CN109075994A (zh) * | 2016-04-28 | 2018-12-21 | 斯诺弗雷克计算公司 | 多集群仓库 |
CN109690524A (zh) * | 2016-09-15 | 2019-04-26 | 甲骨文国际公司 | 分布式事件处理***中的数据序列化 |
US20180113912A1 (en) * | 2016-10-24 | 2018-04-26 | Samsung Sds Co., Ltd. | Method and system for storing query result in distributed server |
CN106570145A (zh) * | 2016-10-28 | 2017-04-19 | 中国科学院软件研究所 | 一种基于分层映射的分布式数据库结果缓存方法 |
CN108228654A (zh) * | 2016-12-21 | 2018-06-29 | 青岛祥智电子技术有限公司 | 一种大数据分布式存储方法和*** |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11250005B2 (en) | 2019-12-18 | 2022-02-15 | Snowflake Inc. | Distributed metadata-based cluster computing |
US11494386B2 (en) | 2019-12-18 | 2022-11-08 | Snowflake Inc. | Distributed metadata-based cluster computing |
Also Published As
Publication number | Publication date |
---|---|
EP3938926A1 (en) | 2022-01-19 |
US10719517B1 (en) | 2020-07-21 |
KR102377084B1 (ko) | 2022-03-22 |
WO2021126599A1 (en) | 2021-06-24 |
US20210191945A1 (en) | 2021-06-24 |
EP3938926A4 (en) | 2022-11-30 |
US11250005B2 (en) | 2022-02-15 |
US20220129467A1 (en) | 2022-04-28 |
US11494386B2 (en) | 2022-11-08 |
CN113508373B (zh) | 2024-06-11 |
KR20220039836A (ko) | 2022-03-29 |
DE202020005703U1 (de) | 2022-02-09 |
KR20210141531A (ko) | 2021-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113508373B (zh) | 分布式的基于元数据的集群计算 | |
US11960505B2 (en) | Export data from tables into partitioned folders on an external data lake | |
US11681583B2 (en) | Cluster diagnostics data for distributed job execution | |
CN113632073B (zh) | 数据源上的可扩展流 | |
US11461080B1 (en) | Inline compilation of user defined functions | |
US20230401229A1 (en) | Replication of unstructured staged data between database deployments | |
CN116158058A (zh) | 使用全局身份的远程执行 | |
US20230237043A1 (en) | Accelerating change data capture determination using row bitsets | |
US11593310B2 (en) | Providing writable streams for external data sources | |
EP4222611A1 (en) | Autoscaling external function requests | |
US11403259B1 (en) | Catalog query framework on distributed key value store | |
US11748327B2 (en) | Streams using persistent tables | |
US12045221B1 (en) | Compact representation of table columns via templatization |
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 | ||
CB02 | Change of applicant information |
Country or region after: U.S.A. Address after: Montana Applicant after: Snowflake Co. Address before: Montana Applicant before: SNOWFLAKE COMPUTING Inc. Country or region before: U.S.A. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |