KR102508177B1 - Credentialless external stage for database integration - Google Patents

Credentialless external stage for database integration Download PDF

Info

Publication number
KR102508177B1
KR102508177B1 KR1020217031176A KR20217031176A KR102508177B1 KR 102508177 B1 KR102508177 B1 KR 102508177B1 KR 1020217031176 A KR1020217031176 A KR 1020217031176A KR 20217031176 A KR20217031176 A KR 20217031176A KR 102508177 B1 KR102508177 B1 KR 102508177B1
Authority
KR
South Korea
Prior art keywords
storage
data
identity
cloud
storage location
Prior art date
Application number
KR1020217031176A
Other languages
Korean (ko)
Other versions
KR20210134937A (en
Inventor
폴리타 폴루스
피터 포비닉
사우린 샤흐
스리니디 카르티크 비스타발리 스리니바사
Original Assignee
스노우플레이크 인코포레이티드
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 스노우플레이크 인코포레이티드 filed Critical 스노우플레이크 인코포레이티드
Publication of KR20210134937A publication Critical patent/KR20210134937A/en
Application granted granted Critical
Publication of KR102508177B1 publication Critical patent/KR102508177B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/254Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/068Network architectures or network communication protocols for network security for supporting key management in a packet data network using time-dependent keys, e.g. periodically changing keys
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/083Network architectures or network communication protocols for network security for authentication of entities using passwords
    • H04L63/0846Network architectures or network communication protocols for network security for authentication of entities using passwords using time-dependent-passwords, e.g. periodically changing passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0884Network architectures or network communication protocols for network security for authentication of entities by delegation of authentication, e.g. a proxy authenticates an entity to be authenticated on behalf of this entity vis-à-vis an authentication entity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/102Entity profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/105Multiple levels of security
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/107Network architectures or network communication protocols for network security for controlling access to devices or network resources wherein the security policies are location-dependent, e.g. entities privileges depend on current location or allowing specific operations only from locally connected terminals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/126Applying verification of the received information the source of the received data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2463/00Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
    • H04L2463/081Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00 applying self-generating credentials, e.g. instead of receiving credentials from an authority or from another peer, the credentials are generated at the entity itself
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/306User profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching

Abstract

데이터 웨어하우스 시스템의 데이터베이스 내에 스토리지 통합 객체가 생성된다. 스토리지 통합 객체는 클라우드 스토리지 제공자 시스템의 저장 플랫폼 내의 저장 위치 및 네트워크 기반 데이터 웨어하우스 시스템에 의해 유지되는 클라우드 신원 객체를 식별한다. 클라우드 신원 객체는, 클라우드 스토리지 제공자의 저장 플랫폼에서, 저장 위치에 접근하는 허가가 부여된 프록시 신원 객체와 연관된다. 스토리지 통합 객체에 기초하여 외부 스테이지 객체가 생성된다. 외부 스테이지 객체는 저장 위치를 식별하고 스토리지 통합 객체와의 연관을 포함한다. 저장 위치에서 데이터를 로드 또는 언로드하라는 명령이 수신된다. 명령에 응답하여, 프록시 신원 객체를 통하여, 외부 스테이지 객체를 사용하여 저장 위치에서 데이터가 로드 또는 언로드된다.A storage integration object is created within the database of the data warehouse system. The storage integration object identifies the storage location within the storage platform of the cloud storage provider system and the cloud identity object maintained by the network-based data warehouse system. A cloud identity object is associated with a proxy identity object that has been granted permission to access a storage location in the cloud storage provider's storage platform. An external stage object is created based on the storage integration object. The external stage object identifies the storage location and includes an association with the storage integration object. A command is received to load or unload data from a storage location. In response to the command, data is loaded or unloaded from the storage location, via the proxy identity object, using the external stage object.

Figure 112021124911319-pct00002
Figure 112021124911319-pct00002

Description

데이터베이스 통합을 위한 자격증명이 없는 외부 스테이지Credentialless external stage for database integration

우선권 출원에 대한 상호 참조Cross reference to priority application

이 출원은, 2019년 11월 14일에 미국 특허출원 제16/683,641호로 출원되고 2020년 6월 14일에 미국 특허 제10,715,524 호로 발행된 출원에 대한 우선권을 주장하며, 그 내용은 전체로서 본원에 참조로 포함된다. This application claims priority to the application filed as U.S. Patent Application Serial No. 16/683,641 on November 14, 2019 and issued as U.S. Patent No. 10,715,524 on June 14, 2020, the contents of which are hereby incorporated in their entirety. included by reference.

기술분야technology field

개시의 실시예는 일반적으로 네트워크 기반 데이터 웨어하우스에 관한 것이며, 더 구체적으로, 데이터 웨어하우스 스토리지 통합을 위한 자격증명이 없는(credential-less) 외부 스테이지에 관한 것이다.Embodiments of the disclosure relate generally to network-based data warehouses, and more specifically to credential-less external stages for data warehouse storage integration.

클라우드 데이터 웨어하우스(또한 "네트워크 기반 데이터 웨어하우스" 또는 간단히 "데이터 웨어하우스"로도 지칭됨)는 하나 이상의 이종의 소스로부터 통합된 데이터의 중앙 저장소를 포함하는 데이터 분석 및 보고에 사용되는 네트워크 기반 시스템이다. 클라우드 데이터 웨어하우스는 기업용 분석 보고서를 생성하는 데 사용할 수 있는 현재 및 과거 데이터를 저장할 수 있다. 이를 위하여, 데이터 웨어하우스는 일반적으로 비즈니스 인텔리전스 도구, 데이터를 추출, 변환 및 저장소로 로드하는 도구, 메타데이터를 관리 및 검색하는 도구를 제공한다. A cloud data warehouse (also referred to as a "network-based data warehouse" or simply "data warehouse") is a network-based system used for data analysis and reporting that contains a central repository of consolidated data from one or more disparate sources. am. Cloud data warehouses can store current and historical data that can be used to generate analytics reports for businesses. To this end, data warehouses typically provide business intelligence tools, tools to extract, transform, and load data into storage, and tools to manage and retrieve metadata.

외부 스테이지는 클라우드 데이터 웨어하우스 시스템과 고객이 관리하는 저장 위치 간의 통합(본원에서 "스토리지 통합"으로 지칭됨)을 용이하게 하는 클라우드 데이터 웨어하우스 내의 구성요소이다. 일반적으로, 외부 스테이지는 고객이 관리하는 저장 위치로 데이터를 로드하거나 이로부터 데이터를 언로드하는 데 사용된다. 기존의 구현에서, 외부 스테이지에는 이러한 저장 위치에서 데이터를 읽고 데이터를 쓰기 위하여 비밀 보안 자격증명이 제공되어야 한다. 그러나, 비밀 보안 자격증명을 교환하면 비밀 보안 자격증명이 노출되어 데이터에 대한 무단 접근으로 이어질 수 있는 취약성이 발생한다. 또한, 기존 구현에서 클라우드 데이터 웨어하우스 계정 관리자는 조직 구성원이 외부 스테이지를 생성하는 것을 금지하는 능력이 제한되어 있으며, 외부 스테이지는 잠재적으로 기밀 데이터를 개인 위치로 유출하는 데 사용될 수 있다. 또한, 스토리지 소유자는 저장 위치에 대한 접근 허가를 세부적으로 제어할 수 없다. 기존의 외부 스테이지는 또한 단일 파일 경로에서 사용하도록 제한되며 외부 스테이지를 생성하는 데 사용된 자격증명이 다른 파일 경로에 적용될 수 있는 경우에조차 다른 파일 경로에서 사용할 수 없다.An external stage is a component within a cloud data warehouse that facilitates integration between a cloud data warehouse system and a customer-managed storage location (referred to herein as “storage integration”). Typically, external stages are used to load data into and unload data from customer-managed storage locations. In existing implementations, external stages must be provided with secret security credentials to read and write data to these storage locations. However, exchanging secret security credentials creates vulnerabilities that can lead to unauthorized access to data by exposing secret security credentials. Additionally, in existing implementations, cloud data warehouse account managers have limited ability to prevent organizational members from creating external stages, which could potentially be used to exfiltrate confidential data to private locations. Also, the storage owner cannot fine-grain control over permission to access the storage location. Existing external stages are also restricted to use on a single file path and cannot be used on different file paths, even if the credentials used to create the external stage can be applied to other file paths.

본 개시는 아래에 주어진 상세한 설명 및 개시의 다양한 실시예의 첨부된 도면으로부터 더 완전하게 이해될 것이다.
도 1은 본 개시의 일부 실시예에 따른, 클라우드 스토리지 제공자 시스템과 통신하는 네트워크 기반 데이터 웨어하우스 시스템을 포함하는 예시적인 컴퓨팅 환경을 도시한다.
도 2는 본 개시의 일부 실시예에 따른, 클라우드 스토리지 제공자 시스템 내의 저장 위치에서 네트워크 기반 데이터 웨어하우스 시스템으로 데이터를 로드 또는 언로드하기 위해 컴퓨팅 환경 내의 자격증명이 없는 외부 스테이지 객체의 사용을 예시하는 데이터 흐름도이다.
도 3은 본 개시의 일부 실시예에 따른, 저장 위치와 연결된 보안 자격증명을 교환하지 않고 클라우드 스토리지 제공자 시스템 내의 저장 위치에서 네트워크 기반 데이터 웨어하우스 시스템으로 데이터를 로드하거나 언로드하는 컴퓨팅 환경의 구성요소 사이의 상호작용을 나타내는 상호작용 도면이다.
도 4 및 도 5는 본 개시의 일부 실시예에 따른, 자격증명이 없는 외부 스테이지 객체를 사용하여 외부 저장 플랫폼으로부터 데이터를 로드 또는 언로드하는 방법을 수행하는 네트워크 기반 데이터 웨어하우스의 동작을 예시하는 흐름도이다.
도 6은 본 개시의 일부 실시예에 따른, 컴퓨팅 서비스 관리자의 구성요소를 예시하는 블록도이다.
도 7은 본 개시의 일부 실시예에 따른, 실행 플랫폼의 구성요소를 예시하는 블록도이다.
도 8은 본 개시의 일부 실시예에 따른, 기계가 본원에서 논의된 방법론 중 임의의 하나 이상의 방법을 수행하도록 하기 위해 명령 세트가 실행될 수 있는 컴퓨터 시스템 형태의 기계의 도식적 표현을 예시한다.
The present disclosure will be more fully understood from the detailed description given below and accompanying drawings of various embodiments of the disclosure.
1 illustrates an example computing environment that includes a network-based data warehouse system in communication with a cloud storage provider system, in accordance with some embodiments of the present disclosure.
2 is a data flow diagram illustrating the use of a credential-free external stage object within a computing environment to load or unload data from a storage location within a cloud storage provider system to a network-based data warehouse system, in accordance with some embodiments of the present disclosure; am.
3 illustrates a diagram between components of a computing environment loading or unloading data from a storage location within a cloud storage provider system to a network-based data warehouse system without exchanging security credentials associated with the storage location, according to some embodiments of the present disclosure. It is an interaction diagram showing the interaction of
4 and 5 are flow diagrams illustrating operation of a network-based data warehouse performing a method of loading or unloading data from an external storage platform using an external stage object without credentials, according to some embodiments of the present disclosure. .
6 is a block diagram illustrating components of a computing service manager, in accordance with some embodiments of the present disclosure.
7 is a block diagram illustrating components of an execution platform, in accordance with some embodiments of the present disclosure.
8 illustrates a diagrammatic representation of a machine in the form of a computer system from which sets of instructions may be executed to cause the machine to perform any one or more of the methodologies discussed herein, in accordance with some embodiments of the present disclosure.

이제 발명의 청구 대상(subject matter)을 실행하기 위한 특정 예시적인 실시예를 상세히 참조할 것이다. 이러한 특정 실시예의 예는 첨부된 도면에 예시되어 있고, 청구 대상의 완전한 이해를 제공하기 위해 구체적인 세부사항이 다음 설명에 제시되어 있다. 이러한 예시는 청구항의 범위를 예시된 실시예로 제한하도록 의도되지 않음을 이해할 것이다. 반대로, 이들은 개시의 범위 내에 포함될 수 있는 그러한 대안, 수정 및 균등물을 포함하도록 의도된다.Reference will now be made in detail to specific exemplary embodiments for carrying out the subject matter of the invention. Examples of these specific embodiments are illustrated in the accompanying drawings, and specific details are set forth in the following description in order to provide a thorough understanding of the claimed subject matter. It will be understood that these examples are not intended to limit the scope of the claims to the illustrated embodiments. On the contrary, they are intended to cover such alternatives, modifications and equivalents as may be included within the scope of the disclosure.

위에서 지적한 바와 같이, 외부 스테이지는 네트워크 기반 데이터 웨어하우스에서 고객이 관리하는 저장 위치로부터 데이터를 로드 및 언로드하는 데 사용되며, 기존의 외부 스테이지에는 이러한 저장 위치에 접근할 수 있도록 비밀 보안 자격증명이 제공되어야 하고, 이는 데이터에 대한 보안 취약점을 생성할 수 있다. 본 개시의 양상은 외부 클라우드 스토리지 공급자 시스템의 저장 위치에서 데이터의 로드 및 언로드를 용이하게 하기 위하여 사용자가 네트워크 기반 데이터 웨어하우스와 비밀 보안 자격증명을 공유할 것을 요구하지 않는 자격증명이 없는(credential-less) 외부 스테이지 객체를 생성함으로써 이전 데이터 웨어하우스 기능의 상기 및 기타 결함을 해결한다. 본원에 설명된 자격증명이 없는 외부 스테이지 객체는 또한 클라이언트 계정 관리자가 접근 허가를 세부적으로 제어하여 데이터 유출을 방지할 수 있게 한다.As pointed out above, external stages are used in network-based data warehouses to load and unload data from customer-managed storage locations, and traditional external stages must be provided with secret security credentials to access these storage locations. , which can create security vulnerabilities for data. Aspects of the present disclosure are credential-less systems that do not require users to share secret, secure credentials with a network-based data warehouse to facilitate loading and unloading of data from a storage location in an external cloud storage provider system. ) solves the above and other deficiencies of previous data warehouse functions by creating an external stage object. The credentialless external stage object described herein also allows client account administrators to fine-tune access permissions to prevent data exfiltration.

일부 실시예에 따르면, 네트워크 기반 데이터 웨어하우스는 네트워크 기반 데이터 웨어하우스에 데이터 로드 및 언로드에 대한 접근 허가가 제공되는 외부 클라우드 스토리지 제공자 시스템(예를 들어, 아마존 웹 서비스(Amazon Web Services®; AWS)), 마이크로소프트 애저 블롭 스토리지(Microsoft Azure Blob Storage®) 또는 구글 클라우드 스토리지(Google Cloud Storage))의 저장 플랫폼에서 저장 위치의 식별자(예를 들어, 통합 자원 식별자(URL))를 포함하는 통합 객체를 생성한다. 통합 객체는 외부 클라우드 스토리지 제공자 시스템에 의해 유지되는 프록시 신원 객체(proxy identity object)의 식별자를 더 포함한다. 일단 생성되면, 네트워크 기반 데이터 웨어하우스는 통합 객체를 클라우드 신원 객체와 연관시키고 이를 클라우드 스토리지 공급자 시스템이 프록시 신원 객체와 연관시킨다. 프록시 신원 객체는 저장 위치에 대한 접근이 허가되고 클라우드 신원 객체가 저장 위치에서 데이터를 로드 및 언로드하는 것으로 가정할 수 있는 프록시 신원을 정의한다.According to some embodiments, the network-based data warehouse is an external cloud storage provider system (e.g., Amazon Web Services® (AWS)) that provides access to load and unload data to the network-based data warehouse. ), the storage platform of Microsoft Azure Blob Storage® or Google Cloud Storage), the integration object containing the identifier of the storage location (e.g., the Uniform Resource Identifier (URL)). generate The integration object further includes an identifier of a proxy identity object maintained by the external cloud storage provider system. Once created, the network-based data warehouse associates the integration object with a cloud identity object and the cloud storage provider system associates it with a proxy identity object. A proxy identity object defines a proxy identity that can be assumed to be granted access to the storage location and to allow the cloud identity object to load and unload data from the storage location.

데이터 웨어하우스는 스토리지 통합을 생성하는 명령에 기초하여 통합 객체를 생성한다. 명령은, 예를 들어, 클라이언트 계정 데이터 웨어하우스의 관리 사용자가 제공할 수 있다. 통합 객체와 연관된 클라우드 신원 객체는 사용자가 속한 클라이언트 계정에 대응한다. 스토리지 통합 정의는 저장 위치의 식별자, 프록시 신원 객체의 식별자 및 클라우드 스토리지 공급자 시스템의 식별자를 포함한다. 스토리지 통합 정의는, 경우에 따라, 접근이 허용되거나 거부되는 하나 이상의 저장 위치를 추가로 지정할 수 있다. 스토리지 정의 객체는 저장 위치 내의 접근이 거부되는 특정 세그먼트를 지정할 수 있다. 예를 들어, 저장 위치는 버킷 또는 폴더와 같은 저장 플랫폼 내의 저장 자원에 대응하는 파일 경로로 식별될 수 있으며, 명령은 파일 경로 내의 접근이 거부되는 하위 폴더를 지정할 수 있다. 다른 예에서, 명령은 접근이 허용되는 하나 이상의 파일 경로를 지정할 수 있으며, 이 예에서는 다른 모든 파일 경로에 대한 접근은 기본적으로 거부된다.The data warehouse creates integration objects based on commands that create storage integrations. The instructions may be provided by, for example, an administrative user of the client account data warehouse. The cloud identity object associated with the integration object corresponds to the client account to which the user belongs. The storage integration definition includes the identifier of the storage location, the identifier of the proxy identity object and the identifier of the cloud storage provider system. The storage integration definition may further specify one or more storage locations to which access is allowed or denied, as the case may be. A storage definition object can specify specific segments within a storage location to be denied access. For example, a storage location may be identified as a file path corresponding to a storage resource within a storage platform, such as a bucket or folder, and the command may specify subfolders within the file path to which access is denied. In another example, a command can specify one or more file paths to which access is allowed, in which case access to all other file paths is denied by default.

데이터 웨어하우스는 스토리지 통합 객체를 기반으로 외부 스테이지 객체를 생성하여 저장 위치에서 데이터를 로드하거나 언로드한다. 외부 스테이지 객체는 저장 위치의 식별자와 스토리지 통합 객체의 식별자를 포함한다. 데이터 웨어하우스는, 예를 들어, 데이터 웨어하우스는 스토리지 통합 정의를 제공한 사용자가 제공한 외부 스테이지 객체를 생성하라는 명령에 기초하여 외부 스테이지 객체를 생성한다. Data warehouses create external stage objects based on storage integration objects to load or unload data from storage locations. The external stage object includes the identifier of the storage location and the identifier of the storage integration object. The data warehouse creates an external stage object based on, for example, a command to create an external stage object provided by a user who provided a storage integration definition.

네트워크 기반 데이터 웨어하우스는 저장 위치에서 데이터를 로드 또는 언로드하라는 명령을 수신할 수 있다. 명령은 외부 스테이지 객체의 식별자를 포함한다. 명령에 응답하여, 데이터 웨어하우스는 외부 스테이지 객체를 활용하여 외부 클라우드 스토리지 공급자의 저장 플랫폼에 있는 저장 위치에서 데이터를 로드하거나 언로드한다. 이 과정에서, 네트워크 기반 데이터 웨어하우스는 클라우드 신원 객체와 연결된 보안 자격증명을 사용하여 자격증명에 접근하여 클라우드 신원 객체가 프록시 신원을 가정하여 데이터를 로드하거나 언로드할 수 있도록 한다. 이러한 방식으로, 외부 스테이지 객체는 네트워크 기반 데이터 웨어하우스 시스템과 함께 저장 위치와 관련된 보안 자격증명을 교환하거나 저장 위치와 관련된 보안 자격증명을 저장하지 않고도 저장 위치에서 데이터를 로드 또는 언로드할 수 있게 한다. A network-based data warehouse may receive commands to load or unload data from a storage location. The command contains the identifier of the external stage object. In response to commands, the data warehouse utilizes external stage objects to load or unload data from storage locations on the external cloud storage provider's storage platform. During this process, the network-based data warehouse accesses the credentials using the security credentials associated with the cloud identity object, allowing the cloud identity object to load or unload data assuming a proxy identity. In this way, an external stage object may exchange security credentials associated with a storage location with a network-based data warehouse system or load or unload data from a storage location without storing security credentials associated with the storage location.

본원에 설명된 바와 같이, 자격증명이 없는 외부 스테이지 객체는 저장 위치에 허가를 부여하는 프로세스를 데이터를 로드 및 언로드하기 위한 저장 위치의 사용으로부터 분리한다. 자격증명이 없는 외부 스테이지 객체는 또한 조직에서 데이터 웨어하우스에 보안 자격증명을 제공하는 대신 네트워크 기반 데이터 웨어하우스에 데이터 위치를 사용할 수 있는 허가를 부여할 수 있게 한다. 조직은 접근을 위해 저장 위치를 생성하고 사용할 수 있는 역할을 사전에 설정된 스테이지를 생성하고 사용할 수 있는 사람과 별도로 지정할 수 있다. 예를 들어, 조직은 계정 관리자가 저장 위치에 대한 연결을 생성하도록 허용할 수 있으며 계정 관리자만이 스토리지 통합을 생성할 수 있기 때문에, 추가 스토리지 통합을 생성하여 데이터를 내보낼 수 없으므로 기밀 데이터가 알 수 없는 위치로 유출되는 것을 방지할 수 있다. 일단 생성되면, 관리자가 아닌 사용자는 고정된 저장 위치로부터 그들이 생성한 외부 스테이지 객체로 읽고 쓸 수 있는 허가를 부여받을 수 있다. 낮은 권한의 사용자는 기존 스테이지만 사용 가능할 수 있다.As described herein, an external stage object without credentials separates the process of granting permissions to a storage location from the use of the storage location to load and unload data. Credentialless external stage objects also allow organizations to grant network-based data warehouses permission to use data locations instead of providing security credentials to the data warehouse. Organizations can specify roles that can create and use storage locations for access, separate from who can create and use predefined stages. For example, an organization can allow account administrators to create connections to storage locations, and since only account administrators can create storage integrations, they cannot create additional storage integrations to export data, so confidential data is unknown. It can prevent leakage to the missing location. Once created, non-administrator users can be granted read and write permissions from a fixed storage location to external stage objects they create. Users with low privileges can only use existing stages.

스토리지 통합을 생성할 수 있는 허가가 있는 사용자는 해당 통합을 사용하여 접근할 수 있는 기본 위치 아래의 경로를 제어할 수 있다. 계정 관리자에게 스토리지 통합을 생성하고 사용할 수 있는 사용자를 지정할 수 있는 기능을 제공하면 조직에서 내부 데이터가 흐르는 위치를 제어하거나 데이터 반출을 완전히 봉쇄할 수 있다. Users with permission to create storage aggregations can control the paths under the default location that can be accessed using that aggregation. Giving account administrators the ability to create storage integrations and designate who can use them allows organizations to control where internal data flows or completely contain data exfiltration.

자격증명이 없는 외부 스테이지 객체는 또한 스토리지에 대한 접근 허가가 클라우드 스토리지 제공자에 의해 관리될 수 있도록 함으로써 데이터 웨어하우스를 이용하는 조직이 네트워크 기반 데이터 웨어하우스에 의한 데이터 접근을 관리하기 위하여 스토리지 제공자를 활용할 수 있도록 하는 이점을 제공한다. 계정 관리자가 저장 위치에 대한 데이터 웨어하우스의 접근을 취소하기로 결정하면, 스토리지 제공자가 제공하는 접근 제어를 사용하여 즉시 취소할 수 있다. Credentialless external stage objects also allow access permissions to storage to be managed by cloud storage providers, allowing organizations using data warehouses to leverage storage providers to manage data access by network-based data warehouses. provides the advantage of If the account administrator decides to revoke the data warehouse's access to the storage location, it can do so immediately using the access controls provided by the storage provider.

도 1은 본 개시의 일부 실시예에 따른, 클라우드 스토리지 제공자 시스템(104)과 통신하는 네트워크 기반 데이터 웨어하우스 시스템(102)을 포함하는 예시적인 컴퓨팅 환경(100)을 도시한다. 발명의 청구 대상을 불필요한 세부 사항으로 모호하게 하는 것을 방지하기 위하여, 발명의 청구 대상의 이해를 전달하는 것과 관련이 없는 다양한 기능적 구성요소는 도 1에서 생략되었다. 그러나, 당업자는 본원에서 구체적으로 설명되지 않은 추가 기능을 용이하게 하기 위해 다양한 추가 기능 구성요소가 컴퓨팅 환경(100)의 일부로 포함될 수 있음을 쉽게 인식할 것이다.1 illustrates an example computing environment 100 that includes a network-based data warehouse system 102 in communication with a cloud storage provider system 104, according to some embodiments of the present disclosure. In order to avoid obscuring the inventive subject matter with unnecessary detail, various functional components not relevant to conveying an understanding of the inventive subject matter have been omitted from FIG. 1 . However, those skilled in the art will readily appreciate that various additional functional components may be included as part of the computing environment 100 to facilitate additional functionality not specifically described herein.

도시된 바와 같이, 컴퓨팅 환경(100)은 네트워크 기반 데이터 웨어하우스 시스템(102) 및 클라우드 스토리지 제공자 시스템(104)(예를 들어, AWS®, Microsoft Azure Blob Storage®, 또는 Google Cloud Storage)을 포함한다. 네트워크 기반 데이터 웨어하우스 시스템(102)은 클라우드 스토리지 제공자 시스템(104) 내의 하나 이상의 저장 위치를 포함하는 하나 이상의 이종 소스로부터 통합된 데이터의 보고 및 분석에 사용되는 네트워크 기반 시스템이다. 클라우드 스토리지 제공자 시스템(104)은 복수의 컴퓨팅 기계를 포함하며 네트워크 기반 데이터 웨어하우스 시스템(102)에 데이터 저장 및 컴퓨팅 능력과 같은 주문형 컴퓨터 시스템 자원을 제공한다.As shown, computing environment 100 includes a network-based data warehouse system 102 and a cloud storage provider system 104 (eg, AWS®, Microsoft Azure Blob Storage®, or Google Cloud Storage). . The network-based data warehouse system 102 is a network-based system used for reporting and analysis of consolidated data from one or more disparate sources including one or more storage locations within the cloud storage provider system 104 . The cloud storage provider system 104 includes a plurality of computing machines and provides on-demand computer system resources such as data storage and computing power to the network-based data warehouse system 102 .

네트워크 기반 데이터 웨어하우스 시스템(102)은 접근 관리 시스템(110), 컴퓨팅 서비스 관리자(112), 실행 플랫폼(114) 및 데이터베이스(116)를 포함한다. 네트워크 기반 데이터 웨어하우스 시스템(102)은 다수의 클라이언트 계정에 데이터 보고 및 분석 서비스를 호스팅하고 제공한다. 접근 관리 시스템(110)은 클라이언트 계정의 관리 사용자가 네트워크 기반 데이터 웨어하우스 시스템(102)에 의해 제공되는 자원 및 서비스에 대한 접근을 관리할 수 있게 한다. 관리 사용자는 신원(예를 들어, 사용자, 역할 및 그룹)를 생성 및 관리하고 자원 및 서비스에 대한 신원 접근을 허용하거나 거부한다.The network-based data warehouse system 102 includes an access management system 110 , a computing service manager 112 , an execution platform 114 , and a database 116 . The network-based data warehouse system 102 hosts and provides data reporting and analysis services to multiple client accounts. The access management system 110 allows administrative users of client accounts to manage access to resources and services provided by the network-based data warehouse system 102 . Administrative users create and manage identities (eg users, roles and groups) and grant or deny identities access to resources and services.

컴퓨팅 서비스 관리자(112)는 네트워크 기반 데이터 웨어하우스 시스템(102)의 동작을 조정하고 관리한다. 컴퓨팅 서비스 관리자(112)는 질의(query) 최적화 및 컴파일을 수행할 뿐만 아니라 컴퓨팅 자원을 제공하는 컴퓨팅 서비스의 클러스터(또한, "가상 웨어하우스"로 지칭됨)를 관리한다. 컴퓨팅 서비스 관리자(112)는 데이터 저장 및 검색 요청을 제공하는 최종 사용자, 본원에 설명된 시스템 및 방법을 관리하는 시스템 관리자 및 컴퓨팅 서비스 관리자(112)와 상호작용하는 다른 구성요소/디바이스와 같은 임의의 수의 클라이언트 계정을 지원할 수 있다. Computing service manager 112 coordinates and manages the operation of network-based data warehouse system 102 . Computing services manager 112 manages clusters of computing services (also referred to as “virtual warehouses”) that perform query optimization and compilation as well as provide computing resources. Computing service manager 112 may be used by end users to provide data storage and retrieval requests, system managers that manage the systems and methods described herein, and any other components/devices that interact with computing service manager 112. A number of client accounts can be supported.

컴퓨팅 서비스 관리자(112)는 또한 데이터베이스(116)에 연결되며, 이는 컴퓨팅 환경(100)에 저장된 데이터와 연관된다. 데이터베이스(116)는 네트워크 기반 데이터 웨어하우스 시스템(102) 및 그 사용자와 연관된 다양한 기능 및 양상에 관한 데이터를 저장한다. 예를 들어, 데이터베이스(116)는 하나 이상의 자격증명이 없는 외부 스테이지 객체(108)를 저장한다. 일반적으로, 외부 스테이지 객체(108)는 데이터 파일이 저장되는 저장 위치(예를 들어, URL)를 지정하여 파일의 데이터가 데이터 웨어하우스(102)에 의해 내부적으로 저장된 테이블에 로드되거나 테이블의 데이터가 데이터 웨어하우스(102)에 의해 내부적으로 저장된 데이터 파일로 언로드될 수 있도록 한다. 하나 이상의 자격증명이 없는 외부 스테이지 객체(108)는 네트워크 기반 데이터 웨어하우스 시스템(102)이 저장 위치와 연관된 보안 자격증명을 저장, 사용 또는 다른 방식으로 접근하지 않고 클라우드 스토리지 제공자 시스템(104) 내의 저장 위치에 접근할 수 있게 한다. Computing service manager 112 is also coupled to database 116 , which is associated with data stored in computing environment 100 . Database 116 stores data relating to various functions and aspects associated with network-based data warehouse system 102 and its users. For example, database 116 stores external stage objects 108 without one or more credentials. Typically, the external stage object 108 specifies a storage location (e.g., a URL) where the data files are stored so that the data in the file is loaded into a table stored internally by the data warehouse 102 or the data in the table is The data warehouse 102 allows it to be unloaded as an internally stored data file. An external stage object 108 without one or more credentials allows the network-based data warehouse system 102 to access a storage location within the cloud storage provider system 104 without storing, using, or otherwise accessing the security credentials associated with the storage location. give access to

일부 실시예에서, 데이터베이스(116)는 로컬 캐시로부터 이용 가능한 데이터뿐만 아니라 원격 데이터 저장 시스템에 저장된 데이터의 요약을 포함한다. 추가적으로, 데이터베이스(116)는 원격 데이터 저장 시스템(예를 들어, 클라우드 스토리지 제공자 시스템(104)) 및 로컬 캐시에서 데이터가 조직화되는 방법에 관한 정보를 포함할 수 있다. 데이터베이스(116)는 시스템 및 서비스가 저장 디바이스로부터 실제 데이터를 로드하거나 접근하지 않고 데이터의 조각이 접근되어야 하는지 여부를 결정할 수 있게 한다.In some embodiments, database 116 includes summaries of data stored in remote data storage systems as well as data available from local caches. Additionally, database 116 may include information about how data is organized in remote data storage systems (eg, cloud storage provider system 104 ) and local caches. Database 116 enables systems and services to determine whether a piece of data should be accessed without loading or accessing the actual data from the storage device.

컴퓨팅 서비스 관리자(112)는 실행 플랫폼(114)에 추가로 연결되며, 이는 다양한 데이터 저장 및 데이터 검색 태스크를 실행하는 다중 컴퓨팅 자원을 제공한다. 실행 플랫폼(114)은 클라우드 스토리지 제공자 시스템(104)의 저장 플랫폼(122)에 연결된다. 저장 플랫폼(122)은 다수의 데이터 저장 디바이스(124-1 내지 124-N)를 포함한다. 일부 실시예에서, 데이터 저장 디바이스(124-1 내지 124-N)는 하나 이상의 지리적 위치에 위치한 클라우드 기반 저장 디바이스이다. 예를 들어, 데이터 저장 디바이스(124-1 내지 124-N)는 공공 클라우드 인프라 또는 사설 클라우드 인프라의 일부일 수 있다. 데이터 저장 디바이스(124-1 내지 124-N)는 하드 디스크 드라이브(HDD), 솔리드 스테이트 드라이브(SSD), 저장 클러스터, 아마존 S3TM 저장 시스템 또는 임의의 다른 데이터 저장 기술일 수 있다. 추가적으로, 클라우드 스토리지 제공자 시스템(104)은 분산 파일 시스템(예컨대 HDFS(Hadoop Distributed File Systems)), 객체 저장 시스템 등을 포함할 수 있다.Computing service manager 112 is further coupled to execution platform 114, which provides multiple computing resources to execute various data storage and data retrieval tasks. The execution platform 114 is coupled to the storage platform 122 of the cloud storage provider system 104 . Storage platform 122 includes a number of data storage devices 124-1 through 124-N. In some embodiments, data storage devices 124-1 through 124-N are cloud-based storage devices located in one or more geographic locations. For example, data storage devices 124-1 through 124-N may be part of a public cloud infrastructure or a private cloud infrastructure. Data storage devices 124-1 through 124-N may be hard disk drives (HDDs), solid state drives (SSDs), storage clusters, Amazon S3(TM) storage systems, or any other data storage technology. Additionally, the cloud storage provider system 104 may include a distributed file system (eg, Hadoop Distributed File Systems (HDFS)), an object storage system, and the like.

실행 플랫폼(114)은 복수의 컴퓨팅 노드를 포함한다. 컴퓨팅 노드 상의 프로세스 세트는 컴퓨팅 서비스 관리자(112)에 의해 컴파일된 질의 계획을 실행한다. 프로세스 세트는: 질의 계획을 실행하는 제1 프로세스; 최소 최근 사용(least recently used; LRU) 정책을 사용하여 마이크로 파티션 파일을 모니터링 및 삭제하고 메모리 부족(out of memory; OOM) 오류 완화 프로세스를 구현하는 제2 프로세스; 프로세스 로그 및 상태로부터 건강 정보를 추출하여 컴퓨팅 서비스 관리자(112)로 다시 전송하는 제3 프로세스; 시스템 부팅 후에 컴퓨팅 서비스 관리자(112)와 통신을 설정하기 위한 제4 프로세스; 및 컴퓨팅 서비스 관리자(112)에 의해 제공되는 주어진 작업에 대한 컴퓨팅 클러스터와의 모든 통신을 처리하고 컴퓨팅 서비스 관리자(112) 및 실행 플랫폼(114)의 다른 컴퓨팅 노드에 정보를 다시 전달하는 제5 프로세스를 포함한다.Execution platform 114 includes a plurality of computing nodes. A set of processes on the computing node executes the query plan compiled by the computing service manager 112 . The set of processes include: a first process that executes the query plan; a second process for monitoring and deleting micro-partition files using a least recently used (LRU) policy and implementing an out of memory (OOM) error mitigation process; a third process for extracting health information from the process log and status and sending it back to the computing service manager 112; a fourth process for establishing communication with the computing service manager 112 after system boot; and a fifth process that handles all communication with the computing cluster for a given task provided by the computing services manager 112 and passes information back to the computing services manager 112 and other computing nodes in the execution platform 114. include

저장 플랫폼(122)에 추가하여, 클라우드 스토리지 제공자 시스템(104)은 또한 인증 및 신원 관리 시스템(118)을 포함한다. 인증 및 신원 관리 시스템(118)은 사용자가 신원(예를 들어, 사용자, 역할 및 그룹)을 생성 및 관리하고 클라우드 서비스 및 자원에 대한 신원 접근을 허용하거나 거부할 수 있는 허가를 사용하게 한다. 네트워크 기반 데이터 웨어하우스 시스템(102)의 접근 관리 시스템(110)과 클라우드 스토리지 제공자 시스템(104)의 인증 및 신원 관리 시스템(118)은 통신하고 정보를 공유하여 네트워크 기반 데이터 웨어하우스 시스템(102) 및 클라우드 스토리지 제공자 시스템(104) 양쪽의 사용자가 공유하는 자원 및 서비스에 대한 접근 및 관리를 가능하게 할 수 있다.In addition to the storage platform 122 , the cloud storage provider system 104 also includes an authentication and identity management system 118 . The authentication and identity management system 118 allows users to create and manage identities (eg, users, roles, and groups) and use permissions to allow or deny identities access to cloud services and resources. The access management system 110 of the network-based data warehouse system 102 and the authentication and identity management system 118 of the cloud storage provider system 104 communicate and share information so that the network-based data warehouse system 102 and It may enable users on both sides of the cloud storage provider system 104 to access and manage shared resources and services.

일부 실시예에서, 컴퓨팅 환경(100)의 요소들 간의 통신 링크는 하나 이상의 데이터 통신 네트워크를 통해 구현된다. 이러한 데이터 통신 네트워크는 임의의 통신 프로토콜 및 임의 유형의 통신 매체를 사용할 수 있다. 일부 실시예에서, 데이터 통신 네트워크는 서로 연결된 둘 이상의 데이터 통신 네트워크(또는 서브네트워크)의 조합이다. 대안적인 실시예에서, 이들 통신 링크는 임의 유형의 통신 매체 및 임의의 통신 프로토콜을 사용하여 구현된다. In some embodiments, communication links between elements of computing environment 100 are implemented through one or more data communication networks. Such data communication networks may use any communication protocol and any type of communication medium. In some embodiments, a data communication network is a combination of two or more data communication networks (or subnetworks) coupled together. In alternative embodiments, these communication links are implemented using any type of communication medium and any communication protocol.

도 1에 도시된 바와 같이, 데이터 저장 디바이스(124-1 내지 124-N)는 실행 플랫폼(114)과 연관된 컴퓨팅 자원으로부터 분리된다. 이 아키텍처는 사용자와 시스템의 변화하는 요구뿐만 아니라 변화하는 데이터 저장/검색 요구에 기초하여 네트워크 기반 데이터 웨어하우스 시스템(102)에 대한 동적 변경을 지원한다. 동적 변경의 지원은 네트워크 기반 데이터 웨어하우스 시스템(102)이 네트워크 기반 데이터 웨어하우스 시스템(102) 내의 시스템 및 구성요소에 대한 변화하는 요구에 응답하여 빠르게 확장할 수 있도록 한다. 데이터 저장 디바이스로부터 컴퓨팅 자원을 분리하면 상응하는 많은 양의 컴퓨팅 자원을 필요로 하지 않고 많은 양의 데이터의 저장을 지원한다. 유사하게, 이러한 컴퓨팅 자원의 분리는 사용 가능한 데이터 저장 자원의 상응하는 증가를 요구하지 않고 특정 시간에 활용되는 컴퓨팅 자원의 상당한 증가를 지원한다.As shown in FIG. 1 , data storage devices 124 - 1 through 124 -N are separate from the computing resources associated with execution platform 114 . This architecture supports dynamic changes to the network-based data warehouse system 102 based on changing data storage/retrieval needs as well as changing needs of users and systems. Support for dynamic change allows the network-based data warehouse system 102 to scale rapidly in response to changing demands on the systems and components within the network-based data warehouse system 102 . Separating the computing resources from the data storage device supports storage of large amounts of data without requiring a correspondingly large amount of computing resources. Similarly, this separation of computing resources supports a significant increase in the computing resources utilized at any given time without requiring a corresponding increase in available data storage resources.

컴퓨팅 서비스 관리자(112), 데이터베이스(116), 실행 플랫폼(114), 저장 플랫폼(122) 및 인증 및 신원 관리 시스템(118)은 도 1에서 개별 구성 요소로 도시되어 있다. 그러나, 컴퓨팅 서비스 관리자(112), 데이터베이스(116), 실행 플랫폼(114), 저장 플랫폼(122) 및 인증 및 신원 관리 시스템(118) 각각은 분산 시스템(예를 들어, 다수의 지리적 위치에서 다수의 시스템/플랫폼에 걸쳐 분산됨)으로 구현될 수 있다. 또한, 컴퓨팅 서비스 관리자(112), 데이터베이스(116), 실행 플랫폼(114), 저장 플랫폼(122) 인증 및 신원 관리 시스템(118) 각각은 수신된 요청에 대한 변경 및 네트워크 기반 데이터 웨어하우스 시스템(102)의 변화하는 요구에 따라 (서로 독립적으로) 확장 또는 축소될 수 있다. 따라서, 설명된 실시예에서, 네트워크 기반 데이터 웨어하우스 시스템(102)은 동적이며 현재 데이터 처리 요구를 충족시키기 위해 정기적인 변경을 지원한다.Computing services manager 112, database 116, execution platform 114, storage platform 122, and authentication and identity management system 118 are shown as separate components in FIG. However, computing service manager 112, database 116, execution platform 114, storage platform 122, and authentication and identity management system 118 each are distributed systems (e.g., multiple distributed across systems/platforms). In addition, the computing service manager 112, database 116, execution platform 114, storage platform 122, authentication and identity management system 118, respectively, change and network-based data warehouse system 102 for received requests. ) can be expanded or contracted (independently of each other) according to the changing needs of Thus, in the described embodiment, the network-based data warehouse system 102 is dynamic and supports regular changes to meet current data processing needs.

통상적인 동작 동안, 네트워크 기반 데이터 웨어하우스 시스템(102)은 컴퓨팅 서비스 관리자(112)에 의해 결정된 다수의 작업을 처리한다. 이러한 작업은 작업을 실행할 시기 및 방법을 결정하기 위해 컴퓨팅 서비스 관리자(112)에 의해 스케줄링되고 관리된다. 예를 들어, 컴퓨팅 서비스 관리자(112)는 작업을 다수의 개별 태스크로 분할할 수 있고, 다수의 개별 태스크 각각을 실행하기 위해 필요한 데이터를 결정할 수 있다. 컴퓨팅 서비스 관리자(112)는 태스크를 처리하기 위해 실행 플랫폼(114)의 하나 이상의 노드에 복수의 개별 태스크 각각을 할당할 수 있다. 컴퓨팅 서비스 관리자(112)는 작업을 처리하는 데 필요한 데이터를 결정할 수 있고 추가로 실행 플랫폼(114) 내의 어떤 노드가 작업을 처리하는 데 가장 적합한지를 결정할 수 있다. 일부 노드는 태스크를 처리하는 데 필요한 데이터를 이미 캐싱했을 수 있으므로, 태스크를 처리하기에 좋은 후보이다. 데이터베이스(116)에 저장된 메타데이터는 태스크를 처리하는 데 필요한 데이터의 적어도 일부를 이미 캐싱한 실행 플랫폼(114) 내의 노드를 결정하는 데 있어 컴퓨팅 서비스 관리자(112)를 보조한다. 실행 플랫폼(114)의 하나 이상의 노드는 노드에 의해 캐싱된 데이터 및 필요한 경우 클라우드 스토리지 제공자 시스템(104)에서 검색된 데이터를 사용하여 태스크를 처리한다. 검색 속도가 일반적으로 클라우드 스토리지 제공자 시스템(104)에서 데이터를 검색하는 것보다 훨씬 빠르기 때문에 실행 플랫폼(114) 내의 캐시에서 가능한 한 많은 데이터를 검색하는 것이 바람직하다. During normal operation, network-based data warehouse system 102 processes a number of tasks determined by computing services manager 112 . These jobs are scheduled and managed by computing services manager 112 to determine when and how to execute the jobs. For example, computing services manager 112 may divide the work into a number of discrete tasks, and may determine the data required to execute each of the number of discrete tasks. Computing services manager 112 may assign each of a plurality of individual tasks to one or more nodes of execution platform 114 to process the task. Computing service manager 112 may determine the data needed to process the job and may further determine which node within execution platform 114 is best suited to process the job. Some nodes may already have cached the data needed to process the task, so they are good candidates for processing the task. The metadata stored in database 116 assists computing service manager 112 in determining which nodes within execution platform 114 have already cached at least some of the data needed to process a task. One or more nodes of the execution platform 114 process tasks using data cached by the nodes and, if necessary, data retrieved from the cloud storage provider system 104 . It is desirable to retrieve as much data as possible from the cache within the execution platform 114 because the speed of retrieval is generally much faster than retrieving data from the cloud storage provider system 104 .

도 1에 도시된 바와 같이, 컴퓨팅 환경(100)은 실행 플랫폼(114)을 저장 플랫폼(122)으로부터 분리한다. 이러한 배열에서, 실행 플랫폼(114)의 처리 자원 및 캐시 자원은 클라우드 스토리지의 데이터 저장 디바이스(124-1 내지 124-N)와 독립적으로 작동한다. 따라서, 컴퓨팅 자원 및 캐시 자원은 특정 데이터 저장 디바이스(124-1 내지 124-N)에 제한되지 않는다. 대신, 모든 컴퓨팅 자원 및 모든 캐시 자원은 클라우드 스토리지 제공자 시스템(104)의 임의의 데이터 스토리지 자원으로부터 데이터를 검색하고 여기에 데이터를 저장할 수 있다.As shown in FIG. 1 , computing environment 100 separates execution platform 114 from storage platform 122 . In this arrangement, the processing and cache resources of the execution platform 114 operate independently of the data storage devices 124-1 through 124-N of the cloud storage. Thus, computing resources and cache resources are not limited to specific data storage devices 124-1 through 124-N. Instead, all computing resources and all cache resources can retrieve data from and store data to any data storage resource in the cloud storage provider system 104 .

도 2는 본 개시의 일부 실시예에 따른, 컴퓨팅 환경(100) 내에서 외부 스테이지 객체(200)의 사용을 예시하는 데이터 흐름도이다. 외부 스테이지 객체(200)는 도 1에 예시된 자격증명이 없는 외부 스테이지 객체(들)(108)의 예이다. 외부 스테이지 객체(200)는 컴퓨팅 서비스 관리자(112)에 의해 생성되고 데이터베이스(116)에 저장된다. 외부 스테이지 객체(200)는 클라이언트 계정(204) 내에서 컴퓨팅 서비스 관리자(112)에 의해 생성된다. 컴퓨팅 서비스 관리자(112)는 네트워크 기반 데이터 웨어하우스 시스템(102)과 통신하여 컴퓨팅 디바이스로부터 수신된 입력에 기초하여 외부 스테이지 객체(200)를 생성한다. 예를 들어, 클라이언트 계정(204)의 사용자(205)는 명령 줄 또는 네트워크 기반 데이터 웨어하우스 시스템(102)에 의해 컴퓨팅 디바이스(206)로 제공되는 다른 사용자 인터페이스를 활용하여 외부 스테이지 객체(200)를 생성하기 위한 명령을 제공할 수 있다. 2 is a data flow diagram illustrating the use of an external stage object 200 within a computing environment 100, in accordance with some embodiments of the present disclosure. External stage object 200 is an example of the credential-free external stage object(s) 108 illustrated in FIG. 1 . External stage object 200 is created by computing service manager 112 and stored in database 116 . The external stage object 200 is created by the computing service manager 112 within the client account 204 . Computing service manager 112 communicates with network-based data warehouse system 102 to create external stage objects 200 based on input received from computing devices. For example, user 205 of client account 204 may utilize a command line or other user interface provided by network-based data warehouse system 102 to computing device 206 to create external stage object 200. You can provide commands to create them.

외부 스테이지 객체(200)는 저장 플랫폼(122) 내의 저장 위치에서 네트워크 기반 데이터 웨어하우스 시스템(102)으로 데이터를 로드하거나 언로드하는 데 사용되는 구성요소이다. 이 특정 예에서, 외부 스테이지 객체(200)는 데이터가 로드 또는 언로드될 수 있는 위치로서 저장 플랫폼(122) 내의 저장 자원(208)에 대응하는 저장 위치를 지정한다. 저장 자원(208)은 저장 플랫폼(122)의 저장 디바이스(124-1 내지 124-N) 중 하나 이상에 상주한다. 외부 스테이지 객체(200)는 스토리지 통합 객체(202)에 대한 참조(예를 들어, 포인터)를 더 포함한다. External stage object 200 is a component used to load or unload data from storage locations within storage platform 122 to network-based data warehouse system 102 . In this particular example, external stage object 200 designates a storage location corresponding to storage resource 208 within storage platform 122 as a location from which data may be loaded or unloaded. Storage resource 208 resides on one or more of storage devices 124 - 1 through 124 -N of storage platform 122 . The external stage object 200 further includes a reference (eg, pointer) to the storage integration object 202 .

스토리지 통합 객체(202)는 컴퓨팅 서비스 관리자(112)에 의해 클라이언트 계정(204) 내에 생성되고 데이터베이스(116) 내에 저장된다. 컴퓨팅 서비스 관리자(112)는 네트워크 기반 데이터 웨어하우스 시스템(102)와 통신하여 클라이언트 계정(204)의 사용자(205)의 컴퓨팅 디바이스(206)로부터 수신된 입력에 기초하여 외부 스테이지 객체(200)를 생성한다. 예를 들어, 사용자(205)는 명령 줄 또는 네트워크 기반 데이터 웨어하우스 시스템(102)에 의해 컴퓨팅 디바이스(206)로 제공되는 다른 사용자 인터페이스를 활용하여 스토리지 통합 객체(202)를 생성하기 위한 명령을 제공할 수 있다. The storage integration object 202 is created in the client account 204 by the computing service manager 112 and stored in the database 116 . Computing service manager 112 communicates with network-based data warehouse system 102 to create external stage object 200 based on input received from computing device 206 of user 205 of client account 204. do. For example, user 205 may utilize a command line or other user interface provided to computing device 206 by network-based data warehouse system 102 to provide commands to create storage integration object 202. can do.

외부 스테이지 객체(200)를 생성하기 위한 명령을 제공하는 사용자는 스토리지 통합 객체(202)를 생성하기 위한 명령어를 제공하는 사용자와 다른 사용자일 수 있음을 이해해야 한다. 예를 들어, 관리자 권한을 갖는 제1 사용자-관리 사용자-는 스토리지 통합 객체(202)를 생성하기 위한 명령을 제공할 수 있고, 명령의 일부로서, 외부 스테이지 객체를 생성하기 위해 스토리지 통합 객체(202)를 사용하는 허가를 제2 사용자에게 부여할 수 있다. 이 예에서, 제2 사용자는 외부 스테이지 객체(200)를 생성하는 명령을 제공할 수 있다. It should be understood that the user providing the command for creating the external stage object 200 may be a different user than the user providing the command for creating the storage integration object 202 . For example, a first user—an administrative user—having administrator privileges can provide a command to create a storage integration object 202, and as part of the command, a storage integration object 202 to create an external stage object. ) may be granted to the second user. In this example, the second user may provide a command to create an external stage object 200 .

스토리지 통합 객체(202)는 네트워크 기반 데이터 웨어하우스 시스템(102)과 저장 플랫폼(122)의 외부 관리 저장 위치 사이의 스토리지 통합을 정의한다. 더 구체적으로, 스토리지 통합 객체(202)는 네트워크 기반 데이터 웨어하우스 시스템(102)과 고객이 관리하는 저장 자원(208)(예를 들어, 폴더, 데이터 버킷, 또는 다른 저장 자원) 사이의 스토리지 통합 속성을 기술한다. 스토리지 통합 객체(202)는 저장 자원(208)에 대응하는 저장 위치의 식별자(예를 들어, URL) 및 클라우드 스토리지 제공자 시스템(104)의 식별자를 포함한다. 일부 실시예에서, 스토리지 통합 객체(202)는 데이터에 대한 접근이 거부되는 하나 이상의 저장 위치를 추가로 지정할 수 있다. 예를 들어, 외부 스테이지 객체(200)는 파일 경로를 사용하여 접근이 허용될 기본 저장 위치를 식별할 수 있고 스토리지 통합 객체(202)는 파일 경로의 하위 경로를 사용하여 접근이 허용되거나 거부될 기본 저장 위치의 일부를 추가로 식별할 수 있다.The storage integration object 202 defines storage integration between the network-based data warehouse system 102 and an externally managed storage location on the storage platform 122 . More specifically, the storage integration object 202 provides storage integration attributes between the network-based data warehouse system 102 and customer-managed storage resources 208 (e.g., folders, data buckets, or other storage resources). describe The storage integration object 202 includes an identifier (eg, URL) of a storage location corresponding to the storage resource 208 and an identifier of the cloud storage provider system 104 . In some embodiments, storage integration object 202 may further specify one or more storage locations to which access to data is denied. For example, the external stage object 200 may use the file path to identify the default storage location to which access is to be granted, and the storage integration object 202 may use a sub-path of the file path to identify the default storage location to which access is to be granted or denied. Some of the storage locations may be further identified.

일단 생성되면, 컴퓨팅 서비스 관리자(112)는 스토리지 통합 객체(202)를 네트워크 기반 데이터 웨어하우스 시스템(102) 및 클라이언트 계정(204)과 연관된 인증 및 신원 관리 시스템(118)에 의해 유지되는 서비스 계정(212) 내의 클라우드 신원 객체(210)와 연관시킨다. 클라우드 신원 객체(210)는 클라이언트 계정(204)과 연관된 클라우드 스토리지 제공자 시스템(104) 내의 신원이다. 클라우드 신원 객체(210)는 클라이언트 계정(204)이 생성될 때 생성될 수 있다. 고유 식별자(예를 들어, 아마존 자원 이름(Amazon® Resource Name; ARN))가 생성 시에 클라우드 신원 객체(210)와 연관된다. 스토리지 제공자 관리자는 인증 및 신원 관리 시스템(118)을 활용하여 클라우드 신원 객체(210)에 클라우드 신원 객체(210)의 식별자를 사용하여 스토리지에 접근하는 허가를 부여할 수 있다. Once created, the computing service manager 112 associates the storage integration object 202 with a service account maintained by the network-based data warehouse system 102 and the authentication and identity management system 118 associated with the client account 204 ( 212) with the cloud identity object 210. The cloud identity object 210 is an identity within the cloud storage provider system 104 associated with the client account 204 . The cloud identity object 210 may be created when the client account 204 is created. A unique identifier (eg, Amazon® Resource Name (ARN)) is associated with the cloud identity object 210 upon creation. A storage provider administrator may utilize the authentication and identity management system 118 to grant the cloud identity object 210 permission to access storage using the identifier of the cloud identity object 210 .

컴퓨팅 서비스 관리자(112)는 클라우드 스토리지 제공자 신원 식별자를 데이터베이스(116)에 암호화된 형식으로 저장할 수 있다. 컴퓨팅 서비스 관리자(112)는 각 클라우드 스토리지 제공자 신원과 연관된 보안 자격증명을 데이터베이스(116)에 암호화된 형식으로 더 저장할 수 있다. Computing service manager 112 may store the cloud storage provider identity identifier in database 116 in encrypted form. Computing service manager 112 may further store in encrypted form in database 116 the security credentials associated with each cloud storage provider identity.

클라우드 스토리지 제공자 시스템(104)은 클라우드 스토리지 제공자 시스템(104)의 클라이언트 계정(216) 내에 프록시 신원 객체(214)를 생성한다. 클라이언트 계정(216)은 클라우드 스토리지 제공자 시스템(104) 내의 클라이언트 계정(204)에 대응하는 클라이언트의 계정이다. 클라우드 스토리지 제공자 시스템(104)은 클라이언트 계정(216)의 관리 사용자에 의해 지정된 입력에 기초하여 프록시 신원 객체(214)를 생성한다. 일부 예에서, 클라이언트 계정(216)의 관리 사용자는 사용자(205)이다.The cloud storage provider system 104 creates a proxy identity object 214 within the client account 216 of the cloud storage provider system 104 . Client account 216 is an account of a client that corresponds to client account 204 in cloud storage provider system 104 . The cloud storage provider system 104 creates the proxy identity object 214 based on input specified by the administrative user of the client account 216 . In some examples, the administrative user of client account 216 is user 205 .

프록시 신원 객체(214)는 클라우드 스토리지 제공자 시스템(104) 내에서 서비스 요청을 하기 위한 연관된 신뢰 정책을 갖는 프록시 신원을 정의한다. 더 구체적으로, 프록시 신원 객체(214)는 클라우드 신원 객체(210)가 프록시 신원을 가정하여 저장 자원(208)로부터 데이터를 읽고 데이터를 쓰도록 허용하는 허가 세트를 포함한다. 프록시 신원 객체(214)는 사용자와 같은 한 사람과 고유하게 연관되기보다는 여러 사용자에 의해 가정될 수 있는 프록시 신원을 정의한다. A proxy identity object 214 defines a proxy identity with an associated trust policy for making service requests within the cloud storage provider system 104 . More specifically, proxy identity object 214 includes a permission set that allows cloud identity object 210 to read data from and write data to storage resource 208 assuming a proxy identity. Proxy identity object 214 defines a proxy identity that can be assumed by multiple users rather than uniquely associated with one person, such as a user.

일부 경우에서, 프록시 신원 객체(214)에 의해 정의된 프록시 신원은 장기 보안 자격증명을 갖지 않으며, 이러한 경우 프록시 신원을 가정하는 다른 신원은 인증 및 신원 관리 시스템(118)에 의해 제공되는 임시 보안 자격증명을 사용하여 프록시 신원에 접근한다. 이러한 실시예에 따르면, 임시 보안 자격증명은 만료 시간 후에 만료될 수 있다.In some cases, proxy identities defined by proxy identity object 214 do not have long-term security credentials, in which case other identities that assume proxy identities are temporary security credentials provided by authentication and identity management system 118. Use the name to access the proxy identity. According to this embodiment, temporary security credentials may expire after an expiration time.

클라우드 스토리지 제공자 시스템(104)은 고유 식별자(예를 들어, 아마존 자원 이름(ARN))를 프록시 신원 객체(214)에 할당한다. 프록시 신원 객체(214)의 고유 식별자는 스토리지에 대한 접근을 허가하기 위해 스토리지 관리자에 의해 사용된다. The cloud storage provider system 104 assigns a unique identifier (eg, Amazon Resource Name (ARN)) to the proxy identity object 214 . The unique identifier of the proxy identity object 214 is used by the storage manager to authorize access to storage.

저장 자원(208)에 대응하는 저장 위치로부터 내부적으로 관리되는 저장 자원(예를 들어, 테이블)로 데이터를 로드하거나 내부적으로 관리되는 저장 자원으로부터 저장 자원(208)에 대응하는 저장 위치로 데이터를 언로드하라는 명령을 수신하는 것에 응답하여, 네트워크 기반 데이터 웨어하우스 시스템(102)은 외부 스테이지 객체(200)를 사용하여 데이터를 로드 또는 언로드한다. 특히, 컴퓨팅 서비스 관리자(112)는 외부 스테이지 객체(200)를 사용하여 스토리지 통합 객체(202)를 식별 및 접근하고 스토리지 통합 객체(202)를 사용하여 클라우드 신원 객체(210)와 연관된 보안 자격증명에 접근한다. 컴퓨팅 서비스 관리자(112)는 클라우드 신원 객체(210)와 연관된 보안 자격증명을 사용하여 인증 및 신원 관리 시스템(118)으로부터 보안 자격증명에 접근하여 클라우드 신원 객체(210)가 프록시 신원 객체(214)에 의해 정의된 프록시 신원을 가정하여 내부 저장 자원과 저장 자원(208) 사이에서 데이터를 로드 또는 언로드하도록 허용한다.Loading data from a storage location corresponding to storage resource 208 into an internally managed storage resource (eg, table) or unloading data from an internally managed storage resource to a storage location corresponding to storage resource 208 In response to receiving the command to do so, the network-based data warehouse system 102 uses the external stage object 200 to load or unload data. In particular, the compute service manager 112 uses the external stage object 200 to identify and access the storage integration object 202 and uses the storage integration object 202 to access security credentials associated with the cloud identity object 210. approach Computing service manager 112 uses the security credentials associated with cloud identity object 210 to access security credentials from authentication and identity management system 118 so that cloud identity object 210 is associated with proxy identity object 214. allow loading or unloading data between the internal storage resource and the storage resource 208 assuming a proxy identity defined by

도 3은 본 개시의 일부 실시예에 따라, 클라우드 스토리지 제공자 시스템(104) 내의 저장 자원(208)에서 네트워크 기반 데이터 웨어하우스 시스템(102)으로 데이터를 로드 또는 언로드하기 위해 외부 스테이지 객체(200)를 사용하는 방법(300)에서 네트워크 기반 데이터 웨어하우스 시스템(102)과 클라우드 스토리지 제공자 시스템(104) 사이의 상호작용을 예시하는 상호작용 도면이다. 설명의 용이함을 위해, 방법(300)은 도 1 및 도 2에 도시되고 위에서 설명한 구성요소를 참조하여 아래에서 설명된다. 3 illustrates an external stage object 200 for loading or unloading data from a storage resource 208 in a cloud storage provider system 104 to a network-based data warehouse system 102, in accordance with some embodiments of the present disclosure. An interaction diagram illustrating the interaction between a network-based data warehouse system 102 and a cloud storage provider system 104 in a method 300 of use. For ease of explanation, method 300 is described below with reference to components shown in FIGS. 1 and 2 and described above.

동작 302에서, 클라우드 스토리지 제공자 시스템(104)은 클라이언트 계정(216) 내에 프록시 신원 객체(214)를 생성한다. 클라우드 스토리지 제공자 시스템(104)은 클라이언트 계정(216)의 관리 사용자에 의해 지정된 입력에 기초하여 프록시 신원 객체(214)를 생성한다. 위에서 언급한 바와 같이, 프록시 신원 객체(214)는 클라우드 신원 객체(210)가 프록시 신원을 가정하여 저장 자원(208)으로부터 데이터를 읽고 데이터를 쓸 수 있게 하는 허가 세트를 포함한다. At operation 302 , cloud storage provider system 104 creates proxy identity object 214 in client account 216 . The cloud storage provider system 104 creates the proxy identity object 214 based on input specified by the administrative user of the client account 216 . As noted above, the proxy identity object 214 includes a set of permissions that allow the cloud identity object 210 to read data from and write data to the storage resource 208 assuming a proxy identity.

동작 304에서, 네트워크 기반 데이터 웨어하우스 시스템(102)의 컴퓨팅 서비스 관리자(112)는 데이터베이스(116)에 스토리지 통합 객체(202)를 생성한다. 컴퓨팅 서비스 관리자(112)는 클라이언트 계정(204)의 제1 사용자(예를 들어, 사용자(205))에 의해 제공되는 명령에 기초하여 스토리지 통합 객체(202)를 생성한다. 제1 사용자는 클라이언트 계정(204)의 관리 사용자일 수 있다. 위에서 언급한 바와 같이, 스토리지 통합 객체(202)는: 통합 이름; 저장 자원(208)에 대응하는 URL과 같은 외부에서 관리되는 저장 위치의 식별자; 클라우드 스토리지 제공자 시스템(104)의 식별자; 및 프록시 신원 객체(214)의 식별자를 포함한다. 일부 실시예에서, 스토리지 통합 객체(200)는 데이터에 대한 접근이 거부되는 하나 이상의 저장 위치를 더 지정할 수 있다. 데이터에 대한 접근이 거부되는 하나 이상의 저장 위치는 네트워크 기반 데이터 웨어하우스 시스템(102)에 대한 접근이 제공되는 저장 위치의 부분에 대응할 수 있다. 예를 들어, 외부 스테이지 객체(200)는 파일 경로를 이용하여 접근이 허용되는 기본 저장 위치를 식별할 수 있고, 스토리지 통합 객체(200)는 파일 경로의 하위 경로를 이용하여 기본 저장 위치에서 접근이 거부될 부분을 식별할 수 있다.At operation 304 , the computing service manager 112 of the network-based data warehouse system 102 creates the storage integration object 202 in the database 116 . Computing service manager 112 creates storage integration object 202 based on a command provided by a first user (eg, user 205 ) of client account 204 . The first user may be an administrative user of the client account 204 . As mentioned above, the storage integration object 202 includes: an integration name; an identifier of an externally managed storage location, such as a URL corresponding to the storage resource 208; identifier of the cloud storage provider system 104; and an identifier of the proxy identity object 214. In some embodiments, the storage integration object 200 may further designate one or more storage locations to which access to data is denied. One or more storage locations to which access to data is denied may correspond to portions of storage locations to which access to the network-based data warehouse system 102 is provided. For example, the external stage object 200 may identify a basic storage location to which access is allowed using a file path, and the storage integration object 200 may use a sub-path of the file path to identify a basic storage location. You can identify the parts to be rejected.

동작 306에서, 컴퓨팅 서비스 관리자(112)는 스토리지 통합 객체(202)를 클라우드 신원 객체(210)와 연관시킨다. 컴퓨팅 서비스 관리자(112)는 클라이언트 계정(204)과 클라우드 신원 객체(210) 사이의 연관에 기초하여 스토리지 통합 객체(202)를 클라우드 신원 객체(210)와 연관시킨다. At operation 306 , computing service manager 112 associates storage integration object 202 with cloud identity object 210 . The computing service manager 112 associates the storage integration object 202 with the cloud identity object 210 based on the association between the client account 204 and the cloud identity object 210 .

동작 308에서, 접근 관리 시스템(110)은 스토리지 통합 객체(202)에 대한 사용 허가를 설정한다. 통합 객체에 대한 사용 허가의 설정은 제2 사용자에게 스토리지 통합 객체를 사용하기 위한 허가를 부여하는 것을 포함할 수 있다. 일부 실시예에서, 접근 관리 시스템(110)은 다수의 사용자에 대응하는 신원에 사용 허가를 부여함으로써 신원과 연관된 각 사용자에게 사용 허가를 제공할 수 있다. At operation 308 , the access management system 110 sets permissions for the storage integration object 202 . Setting permission to use the integration object may include granting permission to use the storage integration object to a second user. In some embodiments, access management system 110 may provide permissions for each user associated with an identity by granting permissions to identities corresponding to multiple users.

동작 310에서, 컴퓨팅 서비스 관리자(112)는 외부 스테이지 객체(200)를 생성한다. 컴퓨팅 서비스 관리자(112)는 저장 위치에서 데이터를 로드 또는 언로드하기 위한 외부 스테이지 생성 명령에 기초하여 외부 스테이지 객체(200)를 생성한다. 저장 위치는 스토리지 통합 객체(202)에 지정된 저장 위치와 동일할 수 있거나 스토리지 통합 객체(202)에 지정된 저장 위치의 일부를 포함할 수 있다. 외부 스테이지 객체(200)는 저장 위치에 대응하는 식별자(예를 들어, 저장 위치에 대응하는 URL) 및 스토리지 통합 객체(202)에 대한 참조(예를 들어, 포인터)를 포함한다.At operation 310 , computing service manager 112 creates external stage object 200 . The computing service manager 112 creates an external stage object 200 based on an external stage creation command for loading or unloading data from a storage location. The storage location may be the same as the storage location specified in the storage integration object 202 or may include a portion of the storage location specified in the storage integration object 202 . The external stage object 200 includes an identifier corresponding to the storage location (eg, a URL corresponding to the storage location) and a reference to the storage integration object 202 (eg, a pointer).

동작 312에서, 접근 관리 시스템(110)은 외부 스테이지 객체(200)에 대한 사용 허가를 설정한다. 접근 관리 시스템(110)은 제2 사용자로부터 수신된 입력에 기초하여 사용 허가를 설정할 수 있다. 통합 객체에 대한 사용 허가 설정은 제3 신원에 대한 사용 허가 부여를 포함할 수 있다. 제3 신원은 단일 사용자에 대응하거나 여러 사용자와 연관될 수 있다. 제3 신원에 사용 허가가 부여되면, 제3 신원과 연관된 한 명 이상의 사용자가 외부 스테이지 개체를 사용하여 데이터를 로드하거나 언로드하도록 허용된다.At operation 312 , the access management system 110 sets permissions for the external stage object 200 . The access management system 110 may set usage permission based on input received from the second user. Setting use permission for the integrated object may include granting use permission for a third identity. The third identity may correspond to a single user or may be associated with multiple users. When permission is granted to the third identity, one or more users associated with the third identity are permitted to load or unload data using the external stage object.

동작 314에서, 클라우드 스토리지 제공자 관리자는 프록시 신원 객체에 대하여 클라우드 스토리지 제공자 시스템(104)에 대한 사용 허가를 설정한다. 프록시 신원 객체에 대하여 사용 허가를 설정할 때, 클라우드 스토리지 제공자 시스템(104)은 클라우드 신원 객체에 프록시 신원 객체를 사용하여 저장 위치에서 데이터를 로드 및 언로드하는 허가를 부여한다.At operation 314, the cloud storage provider administrator sets permissions on the cloud storage provider system 104 for the proxy identity object. When setting permissions for a proxy identity object, the cloud storage provider system 104 grants the cloud identity object permission to load and unload data from a storage location using the proxy identity object.

동작 316에서, 컴퓨팅 서비스 관리자(112)는 저장 위치로부터 내부적으로 관리되는 저장 자원(예를 들어, 테이블)으로 데이터를 로드하거나 내부적으로 관리되는 저장 자원으로부터 저장 위치로 데이터를 언로드하라는 명령을 수신한다. 명령은 외부 스테이지 객체(200)의 식별자(예를 들어, 통합 이름)를 포함한다. 명령은 제3 신원과 연관된 제3 사용자의 컴퓨팅 디바이스로부터 수신될 수 있다. 명령에 응답하여, 컴퓨팅 서비스 관리자(112)는, 동작 318에서, 명령을 실행하기 위해 외부 스테이지 객체(200)를 사용한다. 명령을 실행함에 있어서, 네트워크 기반 데이터 웨어하우스 시스템(102)은 프록시 신원 객체(214)와 연관된 보안 자격증명을 사용하여 프록시 신원 객체(214)를 인증하여 프록시 신원 객체(214)에 의해 정의되는 프록시 신원을 가정한다. 네트워크 기반 데이터 웨어하우스 시스템(102)은, 동작 322에서, 프록시 신원 객체(214)를 가정하여 저장 위치에서 내부적으로 관리되는 저장 자원(예를 들어, 테이블)으로 데이터를 로드하거나 내부적으로 관리되는 저장 자원에서 저장 위치로 데이터를 언로드한다. At operation 316, computing services manager 112 receives an instruction to load data from a storage location into an internally managed storage resource (eg, a table) or unload data from an internally managed storage resource to a storage location. . The command includes the identifier of the external stage object 200 (eg, the integration name). The command may be received from a third user's computing device associated with the third identity. In response to the command, the computing services manager 112, at operation 318, uses the external stage object 200 to execute the command. In executing the instruction, the network-based data warehouse system 102 authenticates the proxy identity object 214 using the security credentials associated with the proxy identity object 214 to obtain a proxy defined by the proxy identity object 214. Assume identity. The network-based data warehouse system 102, at operation 322, assumes the proxy identity object 214 to load data from a storage location into an internally managed storage resource (e.g., a table) or load data from an internally managed storage resource (e.g., table). Unload data from a resource to a storage location.

도 4 및 도 5는 본 개시의 일부 실시예에 따른, 외부 스테이지 객체(200)를 사용하여 저장 플랫폼(122)으로부터 데이터를 로드 또는 언로드하기 위한 방법(400)을 수행할 때 네트워크 기반 데이터 웨어하우스 시스템(102)의 동작을 예시하는 흐름도이다. 방법(400)은 방법(400)의 동작이 네트워크 기반 데이터 웨어하우스 시스템(102)의 구성요소에 의해 수행될 수 있도록 하나 이상의 하드웨어 구성요소(예를 들어, 하나 이상의 프로세서)에 의한 실행을 위한 컴퓨터 판독가능 명령으로 구현될 수 있다. 따라서, 방법(400)은 이를 참조하여 예로서 아래에 설명된다. 그러나, 방법(400)은 다양한 다른 하드웨어 구성에 배치될 수 있고 네트워크 기반 데이터 웨어하우스 시스템(102) 내의 배치로 제한되도록 의도되지 않는다는 것을 이해해야 한다.4 and 5 illustrate a network-based data warehouse when performing a method 400 for loading or unloading data from a storage platform 122 using an external stage object 200, according to some embodiments of the present disclosure. A flow diagram illustrating the operation of system 102 is provided. Method 400 is a computer for execution by one or more hardware components (eg, one or more processors) such that the operations of method 400 can be performed by components of network-based data warehouse system 102. It can be implemented as readable instructions. Accordingly, the method 400 is described below by way of example with reference thereto. However, it should be understood that the method 400 may be deployed in a variety of other hardware configurations and is not intended to be limited to deployment within the network-based data warehouse system 102 .

동작 405에서, 컴퓨팅 서비스 관리자(112)는 스토리지 통합 객체를 생성하기 위한 명령("스토리지 통합 생성 명령"으로도 지칭됨)을 수신한다. 스토리지 통합 생성 명령은 데이터 웨어하우스(102)와 통신하는 컴퓨팅 디바이스로부터 수신되고 제1 사용자에 의해 명령 줄 또는 네트워크 기반 데이터 웨어하우스 시스템(102)에 의해 컴퓨팅 디바이스에 제공되는 UI를 통해 지정된다. 제1 사용자는 네트워크 기반 데이터 웨어하우스 시스템(102)의 클라이언트 계정에 속하는 관리 사용자이다. 일반적으로, 명령은 스토리지 통합의 일부로서 허용되거나 차단되는 저장 위치를 지정한다. 예를 들어, 명령은 네트워크 기반 데이터 웨어하우스가 데이터를 로드 및 언로드하기 위하여 접근이 허용되는 클라우드 스토리지 제공자 시스템(104)의 스토리지 플랫폼(122) 내의 제1 저장 위치에 대응하는 식별자(예를 들어, URL)를 포함할 수 있다. 제1 저장 위치는 데이터 폴더 또는 데이터 버킷과 같은 데이터 저장 자원에 대응한다. 스토리지 통합 생성 명령은 클라우드 스토리지 제공자 시스템(104), 통합 이름 및 클라우드 스토리지 제공자 시스템(104)에 의해 유지되는 프록시 신원 객체의 식별자를 추가로 지정한다. 프록시 신원 객체는 제1 저장 위치에 접근하는 허가와 연관된 프록시 신원을 정의한다. 프록시 신원 객체는 클라우드 신원이 프록시 신원을 가정하여 제1 저장 위치에서 데이터를 로드 및 언로드하도록 허용하는 허가를 더 포함한다. At operation 405 , computing service manager 112 receives a command to create a storage integration object (also referred to as a “storage integration creation command”). The command to create the storage integration is received from a computing device communicating with the data warehouse 102 and specified by a first user via a command line or UI provided to the computing device by the network-based data warehouse system 102 . The first user is an administrative user belonging to a client account of the network-based data warehouse system 102. Typically, commands specify which storage locations are allowed or blocked as part of storage consolidation. For example, the instructions may include an identifier corresponding to a first storage location within the storage platform 122 of the cloud storage provider system 104 to which the network-based data warehouse is permitted access to load and unload data (eg, URL) may be included. The first storage location corresponds to a data storage resource such as a data folder or data bucket. The create storage integration command further specifies the identifier of the cloud storage provider system 104 , the integration name and proxy identity object maintained by the cloud storage provider system 104 . A proxy identity object defines a proxy identity associated with permission to access the first storage location. The proxy identity object further includes permissions allowing the cloud identity to load and unload data from the first storage location assuming the proxy identity.

일부 경우에서, 제1 저장 위치는 기본 저장 위치일 수 있고 스토리지 통합 생성 명령은 네트워크 기반 데이터 웨어하우스 시스템(102)에 의한 접근이 거부되는 하나 이상의 차단된 저장 위치를 추가로 지정할 수 있다. 차단된 위치는 제1 저장 위치의 하나 이상의 부분에 대응할 수 있다. 예를 들어, 제1 저장 위치는 저장 버킷(예를 들어, S3 저장 버킷)에 대응할 수 있고 스토리지 통합 생성 명령은 저장 버킷 내의 접근이 거부되는 하나 이상의 폴더를 지정할 수 있다. In some cases, the first storage location may be a default storage location and the create storage integration command may further specify one or more blocked storage locations that are denied access by the network-based data warehouse system 102 . The blocked location may correspond to one or more portions of the first storage location. For example, the first storage location may correspond to a storage bucket (eg, an S3 storage bucket) and the create storage integration command may specify one or more folders within the storage bucket that are denied access.

동작 410에서, 컴퓨팅 서비스 관리자(112)는 스토리지 통합 생성 명령에 기초하여 데이터베이스(116)에 스토리지 통합 객체를 생성한다. 스토리지 통합 객체는 제1 저장 위치(예를 들어, URL), 클라우드 스토리지 제공자 시스템(104) 및 프록시 신원 객체를 지정한다. 더 구체적으로, 스토리지 통합 객체는 제1 저장 위치에 대응하는 제1 식별자(예를 들어, URL), 클라우드 스토리지 제공자 시스템(104)의 식별자 및 프록시 신원 객체의 식별자(예를 들어, ARN)를 포함한다. 일단 생성되면, 네트워크 기반 데이터 웨어하우스 시스템(102)은, 동작 415에서, 통합 객체를 프록시 신원 객체와 연관된 클라우드 신원 객체와 연관시킨다. 클라우드 신원 객체는 클라우드 스토리지 제공자 시스템(104)에 의해 제공되는 클라우드 서비스에 접근하는 데 사용되는 클라우드 신원을 정의한다. 클라우드 신원 객체는 제1 사용자가 속하는 클라이언트 계정과 클라우드 신원 객체의 연관에 기초하여 스토리지 통합 객체와 연관된다.At operation 410 , computing services manager 112 creates a storage integration object in database 116 based on the storage integration creation command. The storage integration object specifies the primary storage location (eg URL), the cloud storage provider system 104 and the proxy identity object. More specifically, the storage integration object includes a first identifier (eg, URL) corresponding to the first storage location, an identifier of the cloud storage provider system 104 and an identifier of the proxy identity object (eg, ARN). do. Once created, the network-based data warehouse system 102, in operation 415, associates the integration object with the cloud identity object associated with the proxy identity object. A cloud identity object defines a cloud identity used to access cloud services provided by the cloud storage provider system 104 . The cloud identity object is associated with the storage integration object based on the association of the cloud identity object with a client account to which the first user belongs.

동작 420에서, 접근 관리 시스템(110)은 스토리지 통합 객체에 대한 사용 허가를 설정한다. 접근 관리 시스템(110)은 제1 사용자로부터 수신된 입력에 기초하여 사용 허가를 설정할 수 있다. 통합 객체에 대한 사용 허가의 설정은 제2 신원에게 하나 이상의 외부 스테이지 객체를 생성하기 위해 스토리지 통합 객체를 사용하기 위한 허가를 부여하는 것을 포함할 수 있다. 일부 실시예에서, 제2 신원은 적어도 제2 사용자에 대응한다. 일부 실시예에서, 접근 관리 시스템(110)은 다수의 사용자에 대응하는 신원에 사용 허가를 부여함으로써 신원과 연관된 각 사용자에게 사용 허가를 제공할 수 있다.In operation 420, the access management system 110 sets permissions for the storage integration object. The access management system 110 may set usage permission based on input received from the first user. Setting usage permission for the integration object may include granting the second identity permission to use the storage integration object to create one or more external stage objects. In some embodiments, the second identity corresponds to at least a second user. In some embodiments, access management system 110 may provide permissions for each user associated with an identity by granting permissions to identities corresponding to multiple users.

동작 425에서, 컴퓨팅 서비스 관리자(112)는 외부 스테이지 객체를 생성하기 위한 명령("외부 스테이지 생성 명령"으로도 지칭됨)을 수신한다. 외부 스테이지 생성 명령은 데이터 웨어하우스(102)와 통신하는 컴퓨팅 디바이스로부터 수신되고 명령 줄 또는 네트워크 기반 데이터 웨어하우스 시스템(102)에 의해 컴퓨팅 디바이스에 제공되는 UI를 통해 제2 사용자에 의해 지정된다. 외부 스테이지 생성 명령은 제2 저장 위치의 식별자(예를 들어, URL) 및 스토리지 통합 객체의 식별자(예를 들어, 스토리지 통합 객체의 이름)를 포함한다. 일부 경우에서, 제2 저장 위치는 제1 저장 위치와 동일할 수 있는 한편, 다른 경우에서, 제2 저장 위치는 제1 저장 위치 내의 위치에 대응할 수 있다. 즉, 제2 저장 위치는 제1 저장 위치의 부분에 대응할 수 있다.At operation 425, computing service manager 112 receives a command to create an external stage object (also referred to as a “create external stage command”). The external stage creation command is received from a computing device communicating with the data warehouse 102 and specified by a second user via a command line or UI provided to the computing device by the network-based data warehouse system 102 . The external stage creation command includes an identifier of the second storage location (eg URL) and an identifier of the storage integration object (eg name of the storage integration object). In some cases, the second storage location may be the same as the first storage location, while in other cases, the second storage location may correspond to a location within the first storage location. That is, the second storage location may correspond to a portion of the first storage location.

동작 430에서, 컴퓨팅 서비스 관리자(112)는 제2 저장 위치에서 데이터를 로드 또는 언로드하기 위한 외부 스테이지 생성 명령에 기초하여 외부 스테이지 객체를 생성한다. 외부 스테이지 객체는 제2 저장 위치를 식별하고 스토리지 통합 객체와의 연관을 포함한다. 더 구체적으로, 외부 스테이지 객체는 제2 저장 위치의 식별자(예를 들어, 제2 저장 위치에 대응하는 URL) 및 스토리지 통합 객체에 대한 참조(예를 들어, 포인터)를 포함한다. At operation 430, the computing service manager 112 creates an external stage object based on the external stage creation command to load or unload data from the second storage location. The external stage object identifies the secondary storage location and includes an association with the storage integration object. More specifically, the external stage object includes an identifier of the second storage location (eg, a URL corresponding to the second storage location) and a reference to the storage integration object (eg, a pointer).

동작 435에서, 접근 관리 시스템(110)은 외부 스테이지 객체에 대한 사용 허가를 설정한다. 접근 관리 시스템(110)은 제2 사용자에 의해 제공된 입력에 기초하여 사용 허가를 설정할 수 있다. 통합 객체에 대한 사용 허가의 설정은 적어도 제3 사용자와 연관된 제3 신원에 사용 허가를 부여하는 것을 포함할 수 있다. 제3 신원에 사용 권한이 부여되면, 적어도 제3 사용자가 외부 스테이지 개체를 사용할 수 있다. At operation 435, the access management system 110 sets permissions for the external stage object. The access management system 110 may set permissions based on input provided by the second user. Setting permission for use of the integration object may include granting permission for use to a third identity associated with at least a third user. If permission is granted to the third identity, at least the third user may use the external stage object.

동작 440에서, 컴퓨팅 서비스 관리자(112)는 내부 데이터 자원(예를 들어, 테이블)으로부터 제3 저장 위치로 언로드하거나 제3 저장 위치로부터 내부 데이터 자원으로 데이터를 로드하라는 명령을 수신한다. 명령은 외부 스테이지 객체의 식별자(예를 들어, 외부 스테이지 객체에 지정된 이름)를 포함한다. 명령은 제3 사용자의 컴퓨팅 디바이스로부터 수신될 수 있다. 명령에 응답하여, 컴퓨팅 서비스 관리자(112)는, 동작 445에서, 외부 스테이지 객체(200)를 사용하여 외부 클라우드 스토리지 제공자의 저장 플랫폼(122)의 제3 저장 위치에서 데이터를 로드 또는 언로드한다. 제1 예에서, 컴퓨팅 서비스 관리자(112)는 저장 위치로부터 네트워크 기반 데이터 웨어하우스 시스템(102) 내부에 있는 저장 위치에 유지되는 테이블로 데이터를 복사한다. 제2 예에서, 컴퓨팅 서비스 관리자(112)는 내부 저장 위치에 유지되는 테이블로부터 명령에 지정된 저장 위치로 데이터를 복사한다. 제3 저장 위치는 제2 저장 위치에 대응한다. 예를 들어, 제3 저장 위치는 제2 저장 위치와 동일할 수 있거나 제2 저장 위치 내의 위치에 대응할 수 있다. At operation 440, computing services manager 112 receives a command to unload from an internal data resource (eg, table) to a third storage location or to load data from a third storage location to an internal data resource. The command contains the identifier of the outer stage object (eg, the name assigned to the outer stage object). The command may be received from the third user's computing device. In response to the command, the computing service manager 112, in operation 445, uses the external stage object 200 to load or unload data from the third storage location of the external cloud storage provider's storage platform 122. In the first example, computing service manager 112 copies data from a storage location to a table maintained at a storage location within network-based data warehouse system 102 . In a second example, computing services manager 112 copies data from a table maintained in an internal storage location to a storage location specified in an instruction. The third storage location corresponds to the second storage location. For example, the third storage location may be the same as the second storage location or may correspond to a location within the second storage location.

도 5에 도시된 바와 같이, 방법(400)은, 일부 실시예에서, 동작 505, 510, 515, 520 및 525를 더 포함할 수 있다. 이러한 실시예에 따르면, 동작 505 및 510은 컴퓨팅 서비스 관리자(112)가 저장 위치에서 데이터를 로드 또는 언로드하는 명령을 수신하는 동작 440 이후에 수행된다. As shown in FIG. 5 , method 400 may further include operations 505 , 510 , 515 , 520 and 525 in some embodiments. According to this embodiment, operations 505 and 510 are performed after operation 440 in which the computing service manager 112 receives a command to load or unload data from a storage location.

동작 505에서, 컴퓨팅 서비스 관리자(112)는 외부 스테이지 객체와의 연관에 기초하여 스토리지 통합 객체를 식별한다. 예를 들어, 위에서 언급한 바와 같이, 데이터를 로드하거나 언로드하는 명령에서 참조되는 외부 스테이지 객체는 통합 객체에 대한 참조(예를 들어, 포인터)를 포함한다. At operation 505, the computing services manager 112 identifies the storage integration object based on its association with the external stage object. For example, as noted above, external stage objects referenced in instructions that load or unload data contain references (eg, pointers) to integration objects.

동작 510에서, 컴퓨팅 서비스 관리자(112)는 접근 관리 시스템(110)과 함께 작동하여 제3 사용자와 연관된 사용자 허가를 검증한다. 제3 사용자와 연관된 사용자 권한을 검증함에 있어서, 컴퓨팅 서비스 관리자(112)는 제3 사용자가 외부 스테이지 객체 및 스토리지 통합 객체를 사용할 허가를 갖는지 확인한다.At operation 510, computing services manager 112 works with access management system 110 to verify user permissions associated with the third user. In verifying the user rights associated with the third user, computing service manager 112 verifies that the third user has permission to use the external stage object and the storage integration object.

이러한 실시예에 따르면, 동작 515, 520 및 525는 컴퓨팅 서비스 관리자(112)가 저장 위치에서 데이터를 로드 또는 언로드하는 연산 445의 일부로서(예를 들어, 서브루틴 또는 서브-동작으로서) 수행될 수 있다. According to such an embodiment, operations 515, 520, and 525 may be performed as part of operation 445 (e.g., as a subroutine or sub-action) in which computing service manager 112 loads or unloads data from a storage location. there is.

동작 515에서, 컴퓨팅 서비스 관리자(112)는 제3 저장 위치가 스토리지 통합 객체에 의해 허용되는지 검증한다. 즉, 컴퓨팅 서비스 관리자(112)는 제3 저장 위치가 제1 저장 위치 내에 있는지 검증하기 위해 스토리지 통합 객체에서 식별된 제1 저장 위치에 대해 제3 저장 위치를 확인한다. 서비스 관리자(112)는 제3 저장 위치가 스토리지 통합 객체에 의해 허용되는지 여부를 결정하기 위해 스토리지 통합 객체에 의해 지정된 임의의 차단된 저장 위치에 대해 제3 저장 위치를 더 확인할 수 있다.At operation 515, the computing service manager 112 verifies that the third storage location is allowed by the storage integration object. That is, the computing service manager 112 checks the third storage location against the first storage location identified in the storage integration object to verify whether the third storage location is within the first storage location. Service manager 112 may further check the third storage location against any blocked storage locations specified by the storage integration object to determine whether the third storage location is allowed by the storage integration object.

동작 520에서, 컴퓨팅 서비스 관리자(112)는 프록시 신원 객체에 의해 정의된 프록시 신원을 가정하기 위해 클라우드 스토리지 제공자 시스템(104)과 인증하는 데 사용될 보안 자격증명에 접근한다. 일부 실시예에서, 보안 자격증명은 일시적이고 시간 제한(예를 들어, 1시간)에 도달한 후 만료될 수 있으며 특히 제1 저장 위치에서 데이터를 로드 또는 언로드하는 데 사용하기 위한 범위가 제한될 수 있다. At operation 520, the computing service manager 112 accesses the security credentials that will be used to authenticate with the cloud storage provider system 104 to assume the proxy identity defined by the proxy identity object. In some embodiments, security credentials are temporary and may expire after reaching a time limit (eg, 1 hour) and may be limited in scope, particularly for use in loading or unloading data from the first storage location. .

일부 실시예에 따르면, 컴퓨팅 서비스 관리자(112)는 보안 자격증명에 대한 요청을 클라우드 스토리지 제공자 시스템(104)의 인증 및 신원 관리 시스템(118)에 전송함으로써 보안 자격증명을 획득할 수 있다. 요청은 클라우드 신원 객체에 대응하는 제1 식별자, 프록시 신원 객체에 대응하는 제2 식별자 및 클라우드 신원 객체와 연관된 보안 자격증명을 포함하거나 나타낼 수 있다. 클라우드 신원 객체와 연관된 보안 자격증명은 데이터베이스(116)에 암호화된 형식으로 저장될 수 있다. 클라우드 스토리지 제공자 시스템(104)의 인증 및 신원 관리 시스템(118)은 요청에 응답하여 보안 자격증명을 제공한다.According to some embodiments, computing service manager 112 may obtain security credentials by sending a request for security credentials to authentication and identity management system 118 of cloud storage provider system 104 . The request may include or indicate a first identifier corresponding to the cloud identity object, a second identifier corresponding to the proxy identity object, and security credentials associated with the cloud identity object. The security credentials associated with the cloud identity object may be stored in encrypted form in database 116 . The authentication and identity management system 118 of the cloud storage provider system 104 provides security credentials in response to the request.

동작 525에서, 컴퓨팅 서비스 관리자(112)는 인증 및 신원 관리 시스템(118)으로부터 획득된 자격증명을 사용하여 클라우드 신원이 프록시 신원 객체에 의해 정의된 프록시 신원을 가정하도록 한다. 즉, 클라우드 신원은 프록시 신원을 통해 저장 위치와 (예를 들어, 데이터를 로드하거나 언로드함으로써) 상호작용하고 프록시 신원을 사용하여 컴퓨팅 서비스 관리자(112)와 데이터를 교환할 수 있다. At operation 525 , computing services manager 112 uses the credentials obtained from authentication and identity management system 118 to cause the cloud identity to assume the proxy identity defined by the proxy identity object. That is, the cloud identity may interact with the storage location via the proxy identity (eg, by loading or unloading data) and exchange data with the computing service manager 112 using the proxy identity.

도 6은 본 개시의 일부 실시예들에 따른, 컴퓨팅 서비스 관리자(112)의 구성요소를 도시하는 블록도이다. 도 6에 도시된 바와 같이, 요청 처리 서비스(602)는 수신된 데이터 저장 요청 및 데이터 검색 요청(예를 들어, 데이터베이스 데이터에 대해 수행될 작업)을 관리한다. 예를 들어, 요청 처리 서비스(602)는 수신된 질의(예를 들어, 데이터 저장 요청 또는 데이터 검색 요청)를 처리하는 데 필요한 데이터를 결정할 수 있다. 데이터는 실행 플랫폼(114) 내의 캐시 또는 클라우드 스토리지 제공자 시스템(104)의 데이터 저장 디바이스에 저장될 수 있다.6 is a block diagram illustrating components of computing services manager 112, in accordance with some embodiments of the present disclosure. As shown in FIG. 6 , request processing service 602 manages received data storage requests and data retrieval requests (eg, operations to be performed on database data). For example, request processing service 602 may determine data necessary to process a received query (eg, a data storage request or data retrieval request). Data may be stored in a cache within the execution platform 114 or a data storage device in the cloud storage provider system 104 .

관리 콘솔 서비스(604)는 관리자 및 다른 시스템 관리자에 의한 다양한 시스템 및 프로세스에 대한 접근을 지원한다. 추가적으로, 관리 콘솔 서비스(604)는 시스템 상의 워크로드를 모니터링하고 작업을 실행하기 위한 요청을 수신할 수 있다.Management console service 604 supports access to various systems and processes by administrators and other system administrators. Additionally, management console service 604 can monitor workloads on the system and receive requests to run jobs.

컴퓨팅 서비스 관리자(112)는 또한 작업 컴파일러(606), 작업 최적화기(608) 및 작업 실행기(610)를 포함한다. 작업 컴파일러(606)는 작업을 다수의 개별 태스크로 파싱하고 다수의 개별 태스크 각각에 대한 실행 코드를 생성한다. 작업 최적화기(608)는 처리되어야 할 데이터에 기초하여 다수의 개별 태스크를 실행하기 위한 최상의 방법을 결정한다. 작업 최적화기(608)는 또한 작업 실행의 속도 및 효율성을 개선하기 위해 다양한 데이터 프루닝(pruning) 동작 및 기타 데이터 최적화 기술을 처리한다. 작업 실행기(610)는 대기열로부터 수신되거나 컴퓨팅 서비스 관리자(112)에 의해 결정된 작업에 대한 실행 코드를 실행한다.Computing services manager 112 also includes a task compiler 606 , task optimizer 608 and task executor 610 . Job compiler 606 parses the job into a number of discrete tasks and generates executable code for each of the number of discrete tasks. Job optimizer 608 determines the best way to execute a number of individual tasks based on the data to be processed. Job optimizer 608 also handles various data pruning operations and other data optimization techniques to improve the speed and efficiency of job execution. Task executor 610 executes executable code for tasks received from a queue or determined by computing services manager 112 .

작업 스케줄러 및 코디네이터(612)는 컴파일, 최적화 및 실행 플랫폼(114)으로의 발송을 위해 수신된 작업을 적절한 서비스 또는 시스템으로 보낸다. 예를 들어, 작업은 우선 순위가 지정되고 그 우선 순위가 지정된 순서로 처리될 수 있다. 일 실시예에서, 작업 스케줄러 및 코디네이터(612)는 데이터베이스의 다른 시스템에 의해 스케줄링될 수 있지만 실행 플랫폼(114)에서 동일한 처리 자원을 활용할 수 있는 사용자 질의와 같은 다른 "외부" 작업과 함께 컴퓨팅 서비스 관리자(112)에 의해 스케줄링되는 내부 작업에 대한 우선 순위를 결정한다. 일부 실시예에서, 작업 스케줄러 및 코디네이터(612)는 특정 태스크를 처리하기 위해 실행 플랫폼(114)에서 특정 노드를 식별하거나 할당한다. 가상 웨어하우스 관리자(614)는 실행 플랫폼(114)에서 구현된 다수의 가상 웨어하우스의 동작을 관리한다. 아래에서 논의되는 바와 같이, 각 가상 웨어하우스는 각각 캐시 및 프로세서를 포함하는 다수의 실행 노드를 포함한다. Job scheduler and coordinator 612 directs received jobs to appropriate services or systems for compilation, optimization, and dispatch to execution platform 114 . For example, tasks may be prioritized and processed in that prioritized order. In one embodiment, task scheduler and coordinator 612 is a computing service manager along with other “external” tasks such as user queries that may be scheduled by other systems in the database but may utilize the same processing resources on execution platform 114. (112) determines the priority for internal tasks scheduled. In some embodiments, task scheduler and coordinator 612 identifies or assigns specific nodes on execution platform 114 to handle specific tasks. The virtual warehouse manager 614 manages the operation of multiple virtual warehouses implemented in the execution platform 114 . As discussed below, each virtual warehouse includes a number of execution nodes each including a cache and a processor.

또한, 컴퓨팅 서비스 관리자(112)는 원격 데이터 저장 디바이스 및 로컬 캐시(예를 들어, 실행 플랫폼(114)의 캐시)에 저장된 데이터와 관련된 정보를 관리하는 구성 및 메타데이터 관리자(616)를 포함한다. 구성 및 메타데이터 관리자(616)는 메타데이터를 사용하여 특정 태스크 또는 작업을 처리하기 위해 데이터를 검색하기 위해 접근해야 하는 데이터 마이크로 파티션을 결정한다. 모니터 및 워크로드 분석기(618)는 컴퓨팅 서비스 관리자(112)에 의해 수행되는 프로세스를 감독하고 실행 플랫폼(114)의 가상 웨어하우스 및 실행 노드에 걸친 태스크(예를 들어, 워크로드)의 분배를 관리한다. 모니터 및 워크로드 분석기(618)는 또한 데이터 웨어하우스(102) 전반에 걸쳐 워크로드의 변화에 기초하여, 필요에 따라, 태스크를 재분배하며, 실행 플랫폼(114)에 의해 또한 처리될 수 있는 사용자(예를 들어, "외부") 질의 워크로드에 기초하여 태스크를 추가로 재분배할 수 있다. 구성 및 메타데이터 관리자(616) 및 모니터 및 워크로드 분석기(618)는 데이터 저장 디바이스(620)에 연결된다. 도 6의 데이터 저장 디바이스(620)는 데이터 웨어하우스(102) 내의 임의의 데이터 저장 디바이스를 나타낸다. 예를 들어, 데이터 저장 디바이스(620)는 실행 플랫폼(114)의 캐시, 클라우드 스토리지 제공자 시스템(104)의 저장 디바이스 또는 임의의 다른 저장 디바이스를 나타낼 수 있다.Computing services manager 112 also includes a configuration and metadata manager 616 that manages information related to data stored on remote data storage devices and local caches (eg, caches of execution platform 114 ). The configuration and metadata manager 616 uses metadata to determine which data micro-partitions must be accessed to retrieve data to process a particular task or job. The monitor and workload analyzer 618 oversees the processes performed by the computing services manager 112 and manages the distribution of tasks (e.g., workloads) across the virtual warehouse and execution nodes of the execution platform 114. do. The monitor and workload analyzer 618 also redistributes tasks, as needed, based on changes in workload across the data warehouse 102, and users (which may also be processed by the execution platform 114). For example, tasks may be further redistributed based on the “external”) query workload. Configuration and metadata manager 616 and monitor and workload analyzer 618 are coupled to data storage device 620 . Data storage device 620 of FIG. 6 represents any data storage device within data warehouse 102 . For example, data storage device 620 may represent a cache of execution platform 114 , a storage device of cloud storage provider system 104 , or any other storage device.

도 7은 본 개시의 일부 실시예에 따른, 실행 플랫폼(114)의 구성요소를 도시하는 블록도이다. 도 7에 도시된 바와 같이, 실행 플랫폼(114)은 가상 웨어하우스 1, 가상 웨어하우스 2, 및 가상 웨어하우스 N을 포함하는 여러 가상 웨어하우스를 포함한다. 각 가상 웨어하우스는 각각 데이터 캐시와 프로세서를 포함하는 여러 실행 노드를 포함한다. 가상 웨어하우스는 여러 실행 노드를 사용하여 여러 작업을 병렬로 실행할 수 있다. 본원에서 논의되는 바와 같이, 실행 플랫폼(114)은 시스템 및 사용자의 현재 처리 요구에 기초하여 실시간으로 새로운 가상 웨어하우스를 추가하고 기존 가상 웨어하우스를 삭제할 수 있다. 이러한 유연성으로 인해 실행 플랫폼(114)은 더 이상 필요하지 않을 때 컴퓨팅 자원에 대한 비용을 계속 지불하지 않고도 필요할 때 대량의 컴퓨팅 자원을 신속하게 배치할 수 있다. 모든 가상 웨어하우스는 모든 데이터 저장 디바이스(예를 들어, 클라우드 스토리지 제공자 시스템(104) 내의 모든 저장 디바이스)의 데이터에 접근할 수 있다. 7 is a block diagram illustrating components of an execution platform 114, in accordance with some embodiments of the present disclosure. As shown in FIG. 7 , execution platform 114 includes several virtual warehouses, including Virtual Warehouse 1, Virtual Warehouse 2, and Virtual Warehouse N. Each virtual warehouse contains several execution nodes, each containing a data cache and a processor. A virtual warehouse can run multiple jobs in parallel using multiple execution nodes. As discussed herein, execution platform 114 may add new virtual warehouses and delete existing virtual warehouses in real time based on the current processing needs of the system and users. This flexibility allows execution platform 114 to quickly deploy large amounts of computing resources when needed without continuing to pay for computing resources when they are no longer needed. All virtual warehouses can access data on all data storage devices (eg, all storage devices in the cloud storage provider system 104 ).

도 7에 도시된 각 가상 웨어하우스는 3개의 실행 노드를 포함하지만, 특정 가상 웨어하우스가 임의의 수의 실행 노드를 포함할 수 있다. 또한, 가상 웨어하우스의 실행 노드의 수는 동적이므로, 추가 수요가 있을 때 새로운 실행 노드가 생성되고, 더 이상 필요하지 않으면 기존 실행 노드가 삭제된다.Each virtual warehouse shown in Figure 7 includes three execution nodes, but a particular virtual warehouse may include any number of execution nodes. Also, the number of running nodes in a virtual warehouse is dynamic, so new running nodes are created when there is additional demand, and old running nodes are deleted when they are no longer needed.

각 가상 웨어하우스는 도 1에 도시된 임의의 데이터 저장 디바이스(124-1 내지 124-N)에 접근할 수 있다. 따라서, 가상 웨어하우스는 반드시 특정 데이터 저장 디바이스(124-1 내지 124-N)에 할당될 필요는 없으며, 대신 클라우드 스토리지 제공자 시스템(104) 내의 데이터 저장 디바이스(124-1 내지 124-N) 중 임의의 데이터에 접근할 수 있다. 유사하게, 도 7에 도시된 각 실행 노드는 데이터 저장 디바이스(124-1 내지 124-N) 중 임의의 것으로부터 데이터에 접근할 수 있다. 일부 실시예에서, 특정 가상 웨어하우스 또는 특정 실행 노드는 특정 데이터 저장 디바이스에 일시적으로 할당될 수 있지만, 가상 웨어하우스 또는 실행 노드는 나중에 임의의 다른 데이터 저장 디바이스의 데이터에 접근할 수 있다. Each virtual warehouse can access any of the data storage devices 124-1 through 124-N shown in FIG. Thus, the virtual warehouse is not necessarily assigned to a specific data storage device 124-1 through 124-N, but instead any of the data storage devices 124-1 through 124-N within the cloud storage provider system 104. of data can be accessed. Similarly, each execution node shown in FIG. 7 can access data from any of the data storage devices 124-1 through 124-N. In some embodiments, a particular virtual warehouse or particular execution node may be temporarily assigned to a particular data storage device, but the virtual warehouse or execution node may later access data on any other data storage device.

도 7의 예에서, 가상 웨어하우스 1은 3개의 실행 노드(702-1, 702-2 및 702-N)를 포함한다. 실행 노드(702-1)는 캐시(704-1) 및 프로세서(706-1)를 포함한다. 실행 노드(702-2)는 캐시(704-2) 및 프로세서(706-2)를 포함한다. 실행 노드(702-N)는 캐시(704-N) 및 프로세서(706-N)를 포함한다. 각 실행 노드(702-1, 702-2 및 702-N)는 하나 이상의 데이터 저장 및/또는 데이터 검색 작업을 처리하는 것과 연관된다. 예를 들어, 가상 웨어하우스는 클러스터링 서비스, 구체화된 뷰 새로고침 서비스, 파일 압축 서비스, 저장 절차 서비스 또는 파일 업그레이드 서비스와 같은 내부 서비스와 연관된 데이터 저장 및 데이터 검색 작업을 처리할 수 있다. 다른 구현에서, 특정 가상 웨어하우스는 특정 데이터 저장 시스템 또는 데이터의 특정 카테고리와 연관된 데이터 저장 및 데이터 검색 작업을 처리할 수 있다.In the example of Figure 7, virtual warehouse 1 includes three execution nodes 702-1, 702-2 and 702-N. Execution node 702-1 includes a cache 704-1 and a processor 706-1. Execution node 702-2 includes a cache 704-2 and a processor 706-2. Execution node 702-N includes a cache 704-N and a processor 706-N. Each execution node 702-1, 702-2 and 702-N is associated with handling one or more data storage and/or data retrieval tasks. For example, a virtual warehouse may handle data storage and data retrieval tasks associated with internal services such as clustering services, materialized view refresh services, file compression services, stored procedure services, or file upgrade services. In another implementation, a particular virtual warehouse may handle data storage and data retrieval jobs associated with a particular data storage system or particular category of data.

위에서 논의된 가상 웨어하우스 1과 유사하게, 가상 웨어하우스 2는 3개의 실행 노드(712-1, 712-2 및 712-N)를 포함한다. 실행 노드(712-1)는 캐시(714-1) 및 프로세서(716-1)를 포함한다. 실행 노드(712-2)는 캐시(714-2) 및 프로세서(716-2)를 포함한다. 실행 노드(712-N)는 캐시(714-N) 및 프로세서(716-N)를 포함한다. 또한, 가상 웨어하우스 3은 3개의 실행 노드(722-1, 722-2 및 722-N)를 포함한다. 실행 노드(722-1)는 캐시(724-1) 및 프로세서(726-1)를 포함한다. 실행 노드(722-2)는 캐시(724-2) 및 프로세서(726-2)를 포함한다. 실행 노드(722-N)는 캐시(724-N) 및 프로세서(726-N)를 포함한다.Similar to virtual warehouse 1 discussed above, virtual warehouse 2 includes three execution nodes 712-1, 712-2 and 712-N. Execution node 712-1 includes a cache 714-1 and a processor 716-1. Execution node 712-2 includes a cache 714-2 and a processor 716-2. Execution node 712-N includes a cache 714-N and a processor 716-N. In addition, virtual warehouse 3 includes three execution nodes 722-1, 722-2 and 722-N. Execution node 722-1 includes a cache 724-1 and a processor 726-1. Execution node 722-2 includes a cache 724-2 and a processor 726-2. Execution node 722-N includes a cache 724-N and a processor 726-N.

일부 실시예에서, 도 7에 도시된 실행 노드는 실행 노드가 캐싱하는 데이터와 관련하여 상태가 없다(stateless). 예를 들어, 이러한 실행 노드는 실행 노드 또는 특정 실행 노드에 의해 캐싱되는 데이터에 대한 상태 정보를 저장하거나 달리 유지하지 않는다. 따라서, 실행 노드에 장애가 발생하는 경우, 장애가 발생한 노드를 다른 노드로 투명하게 교체할 수 있다. 장애가 발생한 실행 노드와 연관된 상태 정보가 없기 때문에, 새로운(교체) 실행 노드는 특정 상태를 다시 작성하는 것에 대한 염려 없이 쉽게 장애가 발생한 노드를 교체할 수 있다.In some embodiments, the execution node shown in FIG. 7 is stateless with respect to the data that the execution node caches. For example, these execution nodes do not store or otherwise maintain state information about data cached by the execution node or by a particular execution node. Therefore, when a failure occurs in a running node, the failed node can be transparently replaced with another node. Since there is no state information associated with the failed execution node, a new (replacement) execution node can easily replace the failed node without concern for rewriting any particular state.

비록 도 7에 도시된 각 실행 노드가 하나의 데이터 캐시와 하나의 프로세서를 포함하지만, 대안적인 실시예는 임의의 수의 프로세서 및 임의의 수의 캐시를 포함하는 실행 노드를 포함할 수 있다. 또한, 캐시는 실행 노드마다 크기가 다를 수 있다. 도 7에 도시된 캐시는, 로컬 실행 노드에, 클라우드 스토리지 제공자 시스템(104)의 하나 이상의 데이터 저장 디바이스로부터 검색된 데이터를 저장한다. 따라서, 캐시는 원격 스토리지 시스템에서 지속적으로 데이터를 검색하는 플랫폼에서 발생하는 병목 문제를 줄이거나 제거한다. 원격 저장 디바이스로부터 데이터에 반복적으로 접근하는 대신, 본원에 설명된 시스템 및 방법은 실행 노드의 캐시로부터 데이터에 접근하여 훨씬 더 빠르며 위에서 논의된 병목 문제를 방지한다. 일부 실시예에서, 캐시는 캐싱된 데이터에 대한 빠른 접근을 제공하는 고속 메모리 디바이스를 사용하여 구현된다. 각 캐시는 클라우드 스토리지 제공자 시스템(104)에 있는 임의의 저장 디바이스로부터의 데이터를 저장할 수 있다.Although each execution node shown in FIG. 7 includes one data cache and one processor, alternative embodiments may include any number of processors and any number of execution nodes that include any number of caches. Also, the size of the cache may be different for each execution node. The cache shown in FIG. 7 stores, on the local execution node, data retrieved from one or more data storage devices of the cloud storage provider system 104 . Thus, caches reduce or eliminate bottlenecks in platforms that continuously retrieve data from remote storage systems. Instead of repeatedly accessing data from a remote storage device, the systems and methods described herein access data from the cache of the executing node, which is much faster and avoids the bottleneck problem discussed above. In some embodiments, the cache is implemented using high-speed memory devices that provide fast access to cached data. Each cache may store data from any storage device in the cloud storage provider system 104 .

또한, 캐시 자원 및 컴퓨팅 자원은 상이한 실행 노드 사이에서 다를 수 있다. 예를 들어, 하나의 실행 노드는 상당한 컴퓨팅 자원과 최소한의 캐시 자원을 포함할 수 있어, 실행 노드가 상당한 컴퓨팅 자원이 필요한 작업에 유용하다. 다른 실행 노드는 상당한 캐시 자원과 최소한의 컴퓨팅 자원이 포함될 수 있으며, 이 실행 노드는 대용량 데이터 캐싱이 필요한 작업에 유용하다. 또 다른 실행 노드는 대용량 데이터의 빠른 스캔이 필요한 작업에 유용한 더 빠른 입출력 작업을 제공하는 캐시 자원이 포함될 수 있다. 일부 실시예에서, 특정 실행 노드와 연관된 캐시 자원 및 컴퓨팅 자원은 실행 노드에 의해 수행될 예상 작업에 기초하여 실행 노드가 생성될 때 결정된다.Also, cache resources and computing resources may differ between different execution nodes. For example, one execution node may include significant computing resources and minimal cache resources, so that the execution node is useful for tasks requiring considerable computing resources. Other execution nodes can include significant cache resources and minimal computing resources, and these execution nodes are useful for tasks that require large amounts of data caching. Another execution node may contain cache resources that provide faster I/O operations useful for tasks that require fast scanning of large amounts of data. In some embodiments, cache resources and computing resources associated with a particular execution node are determined when the execution node is created based on expected work to be performed by the execution node.

또한, 특정 실행 노드와 연관된 캐시 자원 및 컴퓨팅 자원은 실행 노드에 의해 수행되는 작업 변경에 기초하여 시간이 지남에 따라 변경될 수 있다. 예를 들어, 실행 노드에 의해 수행되는 작업이 더 프로세서 집약적으로 되면 실행 노드에 더 많은 처리 자원이 할당될 수 있다. 유사하게, 실행 노드에 의해 수행되는 작업에 더 큰 캐시 용량이 필요한 경우 실행 노드에 더 많은 캐시 자원이 할당될 수 있다.In addition, cache resources and computing resources associated with a particular execution node may change over time based on changing tasks performed by the execution node. For example, as the work performed by an execution node becomes more processor intensive, more processing resources may be allocated to the execution node. Similarly, more cache resources may be allocated to an execution node if the work being performed by the execution node requires greater cache capacity.

가상 웨어하우스 1, 2 및 N이 동일한 실행 플랫폼(114)과 연관되어 있지만, 가상 웨어하우스는 여러 지리적 위치에서 여러 컴퓨팅 시스템을 사용하여 구현될 수 있다. 예를 들어, 가상 웨어하우스 1은 제1 지리적 위치의 컴퓨팅 시스템에 의해 구현될 수 있는 한편, 가상 웨어하우스 2 및 N은 제2 지리적 위치의 다른 컴퓨팅 시스템에 의해 구현된다. 일부 실시예에서, 이들 상이한 컴퓨팅 시스템은 하나 이상의 상이한 엔티티에 의해 유지되는 클라우드 기반 컴퓨팅 시스템이다. Although virtual warehouses 1, 2 and N are associated with the same execution platform 114, virtual warehouses can be implemented using multiple computing systems in multiple geographic locations. For example, virtual warehouse 1 may be implemented by a computing system in a first geographic location, while virtual warehouses 2 and N are implemented by other computing systems in a second geographic location. In some embodiments, these different computing systems are cloud-based computing systems maintained by one or more different entities.

또한, 각각의 가상 웨어하우스는 다수의 실행 노드를 갖는 것으로 도 7에 도시되어 있다. 각 가상 웨어하우스와 연관된 여러 실행 노드는 여러 지리적 위치에서 여러 컴퓨팅 시스템을 사용하여 구현될 수 있다. 예를 들어, 가상 웨어하우스 1의 인스턴스는 지리적 위치의 하나의 컴퓨팅 플랫폼에서 실행 노드(702-1 및 702-2)를 구현하고 다른 지리적 위치의 상이한 컴퓨팅 플랫폼에서 실행 노드(702-N)를 구현한다. 실행 노드를 구현하기 위해 특정 컴퓨팅 시스템을 선택하는 것은 특정 실행 노드에 필요한 자원 수준(예를 들어, 처리 자원 요구 사항 및 캐시 요구 사항), 특정 컴퓨팅 시스템에서 사용 가능한 자원, 지리적 위치 내 또는 지리적 위치 사이의 네트워크의 통신 기능 및 가상 웨어하우스 내에서 이미 다른 실행 노드를 구현하고 있는 컴퓨팅 시스템과 같은 다양한 요인에 따라 달라질 수 있다. Additionally, each virtual warehouse is shown in FIG. 7 as having multiple execution nodes. The multiple execution nodes associated with each virtual warehouse may be implemented using multiple computing systems in multiple geographic locations. For example, an instance of Virtual Warehouse 1 implements execution nodes 702-1 and 702-2 on one computing platform in a geographic location, and implements execution nodes 702-N on a different computing platform in another geographic location. do. The selection of a particular computing system to implement an Execution Node depends on the level of resources required for that particular Execution Node (e.g., processing resource requirements and cache requirements), the resources available on the particular computing system, and within or between geographic locations. may depend on a variety of factors, such as the communication capabilities of the network and the computing systems already implementing other execution nodes within the virtual warehouse.

실행 플랫폼(114)은 또한 내고장성(fault tolerant)을 갖는다. 예를 들어, 하나의 가상 웨어하우스에 장애가 발생하면, 해당 가상 웨어하우스는 상이한 지리적 위치에 있는 상이한 가상 웨어하우스로 신속하게 교체된다.The execution platform 114 is also fault tolerant. For example, if one virtual warehouse fails, that virtual warehouse is quickly replaced by a different virtual warehouse in a different geographic location.

특정 실행 플랫폼(114)은 임의의 수의 가상 웨어하우스를 포함할 수 있다. 또한, 특정 실행 플랫폼 내의 가상 웨어하우스 수는 동적이므로, 추가 처리 및/또는 캐시 자원이 필요할 때 새로운 가상 웨어하우스가 생성된다. 마찬가지로, 가상 웨어하우스와 연관된 자원이 더 이상 필요하지 않은 경우 기존 가상 웨어하우스가 삭제될 수 있다. A particular execution platform 114 may include any number of virtual warehouses. Additionally, the number of virtual warehouses within a particular execution platform is dynamic, so new virtual warehouses are created when additional processing and/or cache resources are needed. Similarly, an existing virtual warehouse may be deleted when the resources associated with the virtual warehouse are no longer needed.

일부 실시예에서, 가상 웨어하우스는 클라우드 스토리지 제공자 시스템(104)의 동일한 데이터에 대해 동작할 수 있지만, 각 가상 웨어하우스는 독립적인 처리 및 캐시 자원을 갖는 자체 실행 노드를 갖는다. 이 구성을 사용하면 상이한 가상 웨어하우스에 대한 요청을 요청 간에 간섭 없이 독립적으로 처리할 수 있다. 가상 웨어하우스를 동적으로 추가 및 제거하는 기능과 결합된 이 독립적인 처리는 기존 사용자가 관찰하는 성능에 영향을 주지 않고 새로운 사용자를 위한 새로운 처리 용량 추가를 지원한다.In some embodiments, the virtual warehouses may operate on the same data in the cloud storage provider system 104, but each virtual warehouse has its own execution node with independent processing and cache resources. This configuration allows requests for different virtual warehouses to be processed independently without interference between requests. Combined with the ability to dynamically add and remove virtual warehouses, this independent processing supports adding new processing capacity for new users without impacting the performance observed by existing users.

도 8은 예시적인 실시예에 따른, 기계(800)가 본원에서 논의된 방법론들 중 임의의 하나 이상을 수행하게 하기 위하여 명령 세트가 실행될 수 있는 컴퓨터 시스템 형태의 기계(800)의 도식적 표현을 예시한다. 구체적으로, 도 8은 컴퓨터 시스템의 예시적인 형태인 기계(800)의 도식적 표현이며, 그 안에서는 기계(800)가 본원에서 논의된 방법론들 중 임의의 하나 이상을 수행하도록 하기 위한 명령(816)(예를 들어, 소프트웨어, 프로그램, 애플리케이션, 애플릿(applet), 앱(app), 또는 다른 실행 가능한 코드)이 실행될 수 있다. 예를 들어, 명령(816)은 기계(800)가 임의의 하나 이상의 방법(300 또는 400) 중 임의의 하나 이상의 동작을 실행하게 할 수 있다. 다른 예로서, 명령(816)은 기계(800)가 도 3 내지 도 5 중 어느 하나 이상에서 예시된 데이터 흐름의 부분을 구현하게 할 수 있다. 이러한 방식으로, 명령(816)은 프로그래밍되지 않은 일반적인 기계를 본원에 설명된 방식으로 설명되고 예시된 기능 중 어느 하나를 수행하도록 특별히 구성된 특정 기계(800)(예를 들어, 접근 관리 시스템(110), 컴퓨팅 서비스 관리자(112), 실행 플랫폼(114), 인증 및 신원 관리 시스템(118) 및 컴퓨팅 디바이스(206))로 변환한다. 8 illustrates a schematic representation of a machine 800 in the form of a computer system on which a set of instructions may be executed to cause the machine 800 to perform any one or more of the methodologies discussed herein, according to an example embodiment. do. Specifically, FIG. 8 is a diagrammatic representation of a machine 800, which is an exemplary form of a computer system, within which instructions 816 ( eg, software, program, application, applet, app, or other executable code) may be executed. For example, instructions 816 may cause machine 800 to execute any one or more operations of any one or more methods 300 or 400 . As another example, instruction 816 can cause machine 800 to implement a portion of the data flow illustrated in any one or more of FIGS. 3-5 . In this manner, instructions 816 direct a general unprogrammed machine to a specific machine 800 (e.g., access management system 110) that is specifically configured to perform any of the functions described and illustrated in the manner described herein. , computing services manager 112, execution platform 114, authentication and identity management system 118, and computing device 206).

대안적인 실시예에서, 기계(800)는 독립형 디바이스로서 동작하거나 다른 기계에 연결(예를 들어, 네트워크로 연결)될 수 있다. 네트워크 배치에서, 기계(800)는 서버-클라이언트 네트워크 환경에서 서버 기계 또는 클라이언트 기계의 자격으로, 또는 피어 투 피어(또는 분산) 네트워크 환경에서 피어 기계로서 작동할 수 있다. 기계(800)는 서버 컴퓨터, 클라이언트 컴퓨터, 개인용 컴퓨터(PC), 태블릿 컴퓨터, 랩톱 컴퓨터, 넷북, 스마트폰, 모바일 디바이스, 네트워크 라우터, 네트워크 스위치, 네트워크 브리지, 또는 기계(800)에 의해 취해질 동작을 지정하는 명령(816)을 순차적으로 또는 다른 방식으로 실행할 수 있는 임의의 기계를 포함할 수 있지만, 이에 제한되지 않는다. 또한, 단일 기계(800)만이 예시되어 있지만, "기계"라는 용어는 또한 본원에서 논의된 방법론 중 임의의 하나 이상을 수행하기 위해 명령(816)을 개별적으로 또는 공동으로 실행하는 기계(800)의 집합을 포함하는 것으로 간주된다.In alternative embodiments, machine 800 may operate as a standalone device or may be connected (eg, networked) to other machines. In a network deployment, machine 800 may operate in the capacity of a server machine or a client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine 800 may be a server computer, client computer, personal computer (PC), tablet computer, laptop computer, netbook, smart phone, mobile device, network router, network switch, network bridge, or an action to be taken by the machine 800. any machine capable of sequentially or otherwise executing the instructions 816 you specify, but is not limited thereto. Further, while only a single machine 800 is illustrated, the term "machine" also refers to a machine 800 that individually or jointly executes instructions 816 to perform any one or more of the methodologies discussed herein. It is considered to contain a set.

기계(800)는 버스(802)를 통해 서로 통신하도록 구성된 프로세서(810), 메모리(830) 및 입력/출력(I/O) 구성요소(850)를 포함한다. 예시적인 실시예에서, 프로세서(810)(예를 들어, 중앙 처리 장치(CPU), 축소 명령어 집합 컴퓨팅(Reduced Instruction Set Computing; RISC) 프로세서, 복잡 명령어 집합 컴퓨팅(Complex Instruction Set Computing; CISC) 프로세서, 그래픽 처리 장치(Graphics Processing Unit; GPU), 디지털 신호 처리 장치(Digital Signal Processor; DSP), 주문형 집적 회로(Application-Specific Integrated Circuit; ASIC), 무선 주파수 집적 회로(radio-frequency integrated circuit; RFIC), 다른 프로세서 또는 이들의 임의의 적절한 조합)는 예를 들어 명령(816)을 실행할 수 있는 프로세서(812) 및 프로세서(814)를 포함할 수 있다. 용어 "프로세서"는 명령(816)을 동시에 실행할 수 있는 두 개 이상의 독립 프로세서(때로는 "코어"로 지칭됨)를 포함할 수 있는 다중 코어 프로세서(810)를 포함하도록 의도된다. 도 8은 다중 프로세서(810)를 도시하지만, 기계(800)는 단일 코어를 갖는 단일 프로세서, 다중 코어를 갖는 단일 프로세서(예를 들어, 다중 코어 프로세서), 단일 코어를 갖는 다중 프로세서, 다중 코어를 갖는 다중 프로세서 또는 이들의 조합을 포함할 수 있다. Machine 800 includes a processor 810, memory 830, and input/output (I/O) components 850 configured to communicate with each other over a bus 802. In an exemplary embodiment, a processor 810 (e.g., a central processing unit (CPU), a Reduced Instruction Set Computing (RISC) processor, a Complex Instruction Set Computing (CISC) processor, Graphics Processing Unit (GPU), Digital Signal Processor (DSP), Application-Specific Integrated Circuit (ASIC), Radio-frequency Integrated Circuit (RFIC), Other processors or any suitable combination thereof may include, for example, processor 812 and processor 814 capable of executing instructions 816 . The term "processor" is intended to include multi-core processor 810, which may include two or more independent processors (sometimes referred to as "cores") capable of executing instructions 816 concurrently. 8 depicts multiple processors 810, machine 800 may include a single processor with a single core, a single processor with multiple cores (eg, a multi-core processor), multiple processors with a single core, multiple cores. It may include multiple processors having or a combination thereof.

메모리(830)는 주 메모리(832), 정적 메모리(834) 및 저장 유닛(836)을 포함할 수 있고, 모두 버스(802)를 통해 프로세서(810)에 접근 가능하다. 주 메모리(832), 정적 메모리(834) 및 저장 유닛(836)은 본원에 설명된 방법론 또는 기능 중 임의의 하나 이상을 구현하는 명령(816)을 저장한다. 명령(816)은 또한, 기계(800)에 의해 실행되는 동안, 완전히 또는 부분적으로 주 메모리(832) 내에, 정적 메모리(834) 내에, 저장 유닛(836) 내에, 프로세서(810) 중 적어도 하나 내에(예를 들어, 프로세서의 캐시 메모리 내에) 또는 이들의 임의의 적절한 조합 내에 상주할 수 있다.Memory 830 may include main memory 832 , static memory 834 and storage unit 836 , all accessible to processor 810 via bus 802 . Main memory 832 , static memory 834 , and storage unit 836 store instructions 816 implementing any one or more of the methodologies or functions described herein. Instructions 816 may also, while being executed by machine 800, wholly or partially reside within main memory 832, within static memory 834, within storage unit 836, within at least one of processor 810. (eg, within the cache memory of a processor) or any suitable combination thereof.

I/O 구성요소(850)는 입력을 수신하고, 출력을 제공하고, 출력을 생성하고, 정보를 전송하고, 정보를 교환하고, 측정을 캡처하는 등을 위한 구성요소를 포함한다. 특정 기계(800)에 포함된 특정 I/O 구성요소(850)는 기계의 유형에 의존할 것이다. 예를 들어, 이동 전화와 같은 휴대용 기계는 터치 입력 디바이스 또는 기타 그러한 입력 메커니즘을 포함할 가능성이 높은 반면, 헤드리스(headless) 서버 기계는 그러한 터치 입력 디바이스를 포함하지 않을 가능성이 높다. I/O 구성요소(850)는 도 8에 도시되지 않은 많은 다른 구성요소를 포함할 수 있음을 이해할 것이다. I/O 구성요소(850)는 단지 다음 논의를 단순화하기 위해 기능에 따라 그룹화되며 그룹화는 결코 제한을 위한 것이 아니다. 다양한 예시적인 실시예에서, I/O 구성요소(850)는 출력 구성요소(852) 및 입력 구성요소(854)를 포함할 수 있다. 출력 구성요소(852)는 시각적 구성요소(예를 들어, 플라즈마 디스플레이 패널(PDF), 발광 다이오드(LED) 디스플레이, 액정 디스플레이(LCD), 프로젝터 또는 음극선관(CRT)과 같은 디스플레이), 음향 구성요소(예를 들어, 스피커), 기타 신호 발생기 등을 포함할 수 있다. 입력 구성요소(854)는 영숫자 입력 구성요소(예를 들어, 키보드, 영숫자 입력을 수신하도록 구성된 터치 스크린, 사진-광학 키보드(photo-optical keyboard) 또는 다른 영숫자 입력 구성요소), 포인트 기반 입력 구성요소(예를 들어, 마우스, 터치패드, 트랙볼, 조이스틱, 모션 센서 또는 기타 포인팅 도구), 촉각 입력 구성 요소(예를 들어, 물리적 버튼, 터치 또는 터치 제스처의 위치 및/또는 힘을 제공하는 터치 스크린, 또는 기타 촉각 입력 구성 요소), 오디오 입력 구성요소(예를 들어, 마이크) 등을 포함할 수 있다. I/O components 850 include components for receiving input, providing output, generating output, transferring information, exchanging information, capturing measurements, and the like. The particular I/O components 850 included in a particular machine 800 will depend on the type of machine. For example, portable machines such as mobile phones are likely to include touch input devices or other such input mechanisms, whereas headless server machines are likely not to include such touch input devices. It will be appreciated that I/O component 850 may include many other components not shown in FIG. 8 . I/O components 850 are grouped according to function only to simplify the following discussion and the grouping is by no means limiting. In various exemplary embodiments, I/O component 850 may include output component 852 and input component 854 . The output component 852 may include a visual component (eg, a display such as a plasma display panel (PDF), light emitting diode (LED) display, liquid crystal display (LCD), projector, or cathode ray tube (CRT)), an acoustic component (eg, a speaker), other signal generators, and the like. Input element 854 may include an alphanumeric input element (eg, a keyboard, a touch screen configured to receive alphanumeric input, a photo-optical keyboard, or other alphanumeric input element), a point-based input element (e.g., mouse, touchpad, trackball, joystick, motion sensor, or other pointing tool), tactile input components (e.g., physical buttons, touch screens that provide touch or position and/or force of touch gestures; or other tactile input components), audio input components (eg, a microphone), and the like.

통신은 다양한 기술을 사용하여 구현될 수 있다. I/O 구성요소(850)는 연결(882) 및 연결(872)을 통해 기계(800)를 네트워크(880) 또는 디바이스(870)에 각각 연결하도록 동작 가능한 통신 구성요소(864)를 포함할 수 있다. 예를 들어, 통신 구성요소(864)는 네트워크 인터페이스 구성요소 또는 네트워크(880)와 인터페이스하기 위한 다른 적절한 디바이스를 포함할 수 있다. 추가 예에서, 통신 구성요소(864)는 다른 양식을 통해 통신을 제공하기 위하여 유선 통신 구성요소, 무선 통신 구성요소, 셀룰러 통신 구성요소 및 기타 통신 구성요소를 포함할 수 있다. 디바이스(870)는 다른 기계 또는 다양한 주변기기(예를 들어, USB(Universal Serial Bus)를 통해 연결된 주변기기) 중 임의의 것일 수 있다. 예를 들어, 위에서 언급한 바와 같이, 기계(800)는 접근 관리 시스템(110), 컴퓨팅 서비스 관리자(112), 실행 플랫폼(114), 인증 및 신원 관리 시스템(118) 중 어느 하나에 대응할 수 있고 디바이스(870)는 컴퓨팅 디바이스(206) 또는 네트워크 기반 데이터 웨어하우스 시스템(102) 또는 클라우드 스토리지 제공자 시스템(104)과 통신하는 것으로 본원에서 설명된 임의의 다른 컴퓨팅 디바이스를 포함할 수 있다.Communication may be implemented using a variety of technologies. I/O component 850 may include a communication component 864 operable to connect machine 800 to network 880 or device 870 via connection 882 and connection 872, respectively. there is. For example, communication component 864 may include a network interface component or other suitable device for interfacing with network 880 . In further examples, communications component 864 may include wired communications components, wireless communications components, cellular communications components, and other communications components to provide communications over other modalities. Device 870 may be another machine or any of a variety of peripherals (eg, peripherals connected via Universal Serial Bus (USB)). For example, as noted above, machine 800 may correspond to any one of access management system 110, computing services manager 112, execution platform 114, authentication and identity management system 118, and Device 870 may include computing device 206 or any other computing device described herein as communicating with network-based data warehouse system 102 or cloud storage provider system 104 .

실행 가능한 명령 및 기계 저장 매체executable instructions and machine storage media

다양한 메모리(예를 들어, 830, 832, 834 및/또는 프로세서(들)(810)의 메모리 및/또는 저장 유닛(836))는 본원에 설명된 방법론 또는 기능 중 임의의 하나 이상에 의해 구현되거나 활용되는 명령(816) 및 데이터 구조(예를 들어, 소프트웨어)의 하나 이상의 세트를 저장할 수 있다. 이러한 명령(816)은, 프로세서(들)(810)에 의해 실행될 때, 개시된 실시예를 구현하기 위하여 다양한 동작을 일으킨다.The various memories (e.g., 830, 832, 834 and/or memory and/or storage unit 836 of processor(s) 810) are implemented by any one or more of the methodologies or functions described herein, or It may store one or more sets of instructions 816 and data structures (eg, software) that are utilized. These instructions 816, when executed by processor(s) 810, result in various actions to implement the disclosed embodiments.

본원에서 사용되는 바에 따르면, 용어 "기계-저장 매체", "디바이스-저장 매체" 및 "컴퓨터-저장 매체"는 동일한 것을 의미하며 본 개시에서 상호 교환적으로 사용될 수 있다. 이 용어는 실행 가능한 명령 및/또는 데이터를 저장하는 단일 또는 다중 저장 디바이스 및/또는 매체(예를 들어, 중앙 집중식 또는 분산형 데이터베이스 및/또는 연관된 캐시 및 서버)를 지칭한다. 따라서 용어는 프로세서 내부 또는 외부 메모리를 포함하여, 솔리드 스테이트 메모리, 광학 및 자기 매체를 포함하지만 이에 제한되지 않는 것으로 간주된다. 기계-저장 매체, 컴퓨터-저장 매체 및/또는 디바이스-저장 매체의 구체적인 예는 반도체 메모리 디바이스, 예를 들어 소거 가능 프로그램 가능 읽기 전용 메모리(EPROM), 전기적 소거 가능 프로그램 가능 읽기 전용 메모리(EEPROM), 필드 프로그램 가능 게이트 어레이(FPGA) 및 플래시 메모리 디바이스를 포함하는 비휘발성 메모리; 내부 하드 디스크 및 이동식 디스크와 같은 자기 디스크; 광자기 디스크; 및 CD-ROM 및 DVD-ROM 디스크를 포함한다. 용어 "기계-저장 매체", "컴퓨터-저장 매체" 및 "디바이스-저장 매체"는 반송파, 변조된 데이터 신호 및 기타 그러한 매체를 구체적으로 제외하며, 그 중 적어도 일부는 아래에서 논의되는 "신호 매체"라는 용어에 포함된다. As used herein, the terms “machine-storage medium,” “device-storage medium,” and “computer-storage medium” mean the same thing and may be used interchangeably in this disclosure. The term refers to single or multiple storage devices and/or media (eg, centralized or distributed databases and/or associated caches and servers) that store executable instructions and/or data. The term is thus considered to include, but not be limited to, solid state memory, optical and magnetic media, including memory internal to or external to the processor. Specific examples of machine-storage media, computer-storage media, and/or device-storage media include semiconductor memory devices such as erasable programmable read only memory (EPROM), electrically erasable programmable read only memory (EEPROM), non-volatile memory including field programmable gate arrays (FPGAs) and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto-optical disk; and CD-ROM and DVD-ROM disks. The terms “machine-storage medium,” “computer-storage medium,” and “device-storage medium” specifically exclude carrier waves, modulated data signals, and other such media, at least some of which are discussed below as “signal media.” " is included in the term

전송 매체transmission medium

다양한 예시적인 실시예에서, 네트워크(880)의 하나 이상의 부분은 애드혹(ad hoc) 네트워크, 인트라넷, 엑스트라넷, 가상 사설망(VPN), 근거리 통신망(LAN), 무선 LAN(WLAN), 광역 통신망(WAN) 무선 WAN (WWAN), 도시권 통신망(MAN), 인터넷, 인터넷의 일부, 공중 교환 전화망(PSTN)의 일부, 일반 구형 전화 서비스(POTS) 통신망, 셀룰러 전화 통신망, 무선 통신망, Wi-Fi® 통신망, 다른 유형의 통신망 또는 둘 이상의 이러한 네트워크의 조합일 수 있다. 예를 들어, 네트워크(880) 또는 네트워크(880)의 일부는 무선 또는 셀룰러 네트워크를 포함할 수 있고, 활용되는 연결(882)은 코드 분할 다중 접속(Code Division Multiple Access; CDMA) 연결, 이동통신 글로벌 시스템(Global System for Mobile Communications; GSM) 연결 또는 다른 유형의 셀룰러 또는 무선 연결일 수 있다. 이 예에서, 연결은 단일 반송파 무선 전송 기술(Single Carrier Radio Transmission Technology; lxRTT), 진화 데이터 최적화(Evolution-Data Optimized; EVDO) 기술, 일반 패킷 무선 서비스(General Packet Radio Service; GPRS) 기술, GSM 진화를 위한 향상된 데이터 속도(Enhanced Data rates for GSM Evolution; EDGE) 기술, 3G를 포함한 3세대 파트너십 프로젝트(third Generation Partnership Project; 3GPP), 4세대 무선(4G) 네트워크, 범용 이동통신 시스템(Universal Mobile Telecommunications System; UMTS), 고속 패킷 접근(High-Speed Packet Access; HSPA), 마이크로파 접근을 위한 전세계적 상호운영성(Worldwide Interoperability for Microwave Access; WiMAX), 장기 진화(Long Term Evolution; LTE) 표준, 다양한 표준 설정 기관에서 정의한 기타, 다른 장거리 프로토콜 또는 다른 데이터 전송 기술과 같은 다양한 유형의 데이터 전송 기술 중 임의의 것을 구현할 수 있다.In various exemplary embodiments, one or more portions of network 880 may be an ad hoc network, an intranet, an extranet, a virtual private network (VPN), a local area network (LAN), a wireless LAN (WLAN), a wide area network (WAN) ) Wireless WAN (WWAN), Metropolitan Area Network (MAN), Internet, part of the Internet, part of the Public Switched Telephone Network (PSTN), Common Old Telephone Service (POTS) network, cellular telephone network, wireless network, Wi-Fi® network, It may be a different type of communication network or a combination of two or more such networks. For example, network 880 or a portion of network 880 may include a wireless or cellular network, and the connection 882 utilized may be a Code Division Multiple Access (CDMA) connection, a telecommunications global It may be a Global System for Mobile Communications (GSM) connection or another type of cellular or wireless connection. In this example, the connections are Single Carrier Radio Transmission Technology (lxRTT), Evolution-Data Optimized (EVDO) technology, General Packet Radio Service (GPRS) technology, GSM evolution Enhanced Data rates for GSM Evolution (EDGE) technology, third Generation Partnership Project (3GPP) including 3G, fourth generation wireless (4G) networks, Universal Mobile Telecommunications System UMTS), High-Speed Packet Access (HSPA), Worldwide Interoperability for Microwave Access (WiMAX), Long Term Evolution (LTE) standards, and various standard settings It may implement any of various types of data transmission technologies, such as other agency-defined, other long-range protocols, or other data transmission technologies.

명령(816)은 네트워크 인터페이스 디바이스(예를 들어, 통신 구성요소(864) 내에 포함된 네트워크 인터페이스 구성요소)를 통해 전송 매체를 사용하고 다수의 잘 알려진 전송 프로토콜 중 임의의 하나(예를 들어, 하이퍼텍스트 전송 프로토콜(HTTP))를 활용하여 네트워크(880)를 통해 송신 또는 수신될 수 있다. 유사하게, 명령(816)은 디바이스(870)에 대한 연결(872)(예를 들어, 피어 투 피어 연결)을 통해 전송 매체를 사용하여 송신 또는 수신될 수 있다. 용어 "전송 매체" 및 "신호 매체"는 동일한 것을 의미하며 본 개시에서 상호 교환적으로 사용될 수 있다. 용어 "전송 매체" 및 "신호 매체"는 기계(800)에 의한 실행을 위한 명령(816)을 저장, 인코딩 또는 전달할 수 있는 임의의 무형 매체를 포함하는 것으로 간주되어야 하며, 디지털 또는 아날로그 통신 신호 또는 그러한 소프트웨어의 통신을 용이하게 하는 기타 무형 매체를 포함한다. 따라서 용어 "전송 매체" 및 "신호 매체"는 변조된 데이터 신호, 반송파 등의 모든 형태를 포함하는 것으로 간주되어야 한다. 용어 "변조된 데이터 신호"는 신호 내의 정보를 인코딩하는 방식으로 설정되거나 변경된 특성 중 하나 이상을 갖는 신호를 의미한다. Instructions 816 use a transmission medium over a network interface device (e.g., a network interface component included within communication component 864) and use any one of a number of well-known transport protocols (e.g., hyperlinks). may be transmitted or received over the network 880 utilizing the Text Transfer Protocol (HTTP). Similarly, commands 816 can be transmitted or received using a transmission medium over connection 872 to device 870 (eg, a peer-to-peer connection). The terms “transmission medium” and “signal medium” mean the same thing and may be used interchangeably in this disclosure. The terms “transmission medium” and “signal medium” should be considered to include any intangible medium capable of storing, encoding or conveying instructions 816 for execution by machine 800, and include digital or analog communication signals or and other intangible media that facilitate communication of such software. Accordingly, the terms "transmission medium" and "signal medium" should be taken to include all forms of modulated data signals, carrier waves, and the like. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a way as to encode information in the signal.

컴퓨터 판독 가능 매체computer readable media

"기계 판독 가능 매체", "컴퓨터 판독 가능 매체" 및 "디바이스 판독 가능 매체"라는 용어는 동일한 것을 의미하며 이 개시에서 상호 교환 가능하게 사용될 수 있다. 용어는 기계 저장 매체와 전송 매체를 모두 포함하도록 정의된다. 따라서 용어는 저장 디바이스/매체 및 반송파/변조된 데이터 신호를 모두 포함한다. The terms “machine-readable medium,” “computer-readable medium,” and “device-readable medium” mean the same thing and may be used interchangeably in this disclosure. The term is defined to include both machine storage media and transmission media. The term thus includes both storage devices/media and carrier waves/modulated data signals.

본원에 설명된 예시적인 방법의 다양한 동작은 관련 동작을 수행하도록 (예를 들어, 소프트웨어에 의해) 일시적으로 구성되거나 영구적으로 구성된 하나 이상의 프로세서에 의해 적어도 부분적으로 수행될 수 있다. 유사하게, 본원에 설명된 방법은 적어도 부분적으로 프로세서로 구현될 수 있다. 예를 들어, 방법(300, 400)의 동작 중 적어도 일부는 하나 이상의 프로세서에 의해 수행될 수 있다. 특정 동작의 실행은 단일 시스템 내에 상주하는 것뿐만 아니라 여러 시스템에 걸쳐 또한 배치되는 하나 이상의 프로세서에 분산될 수 있다. 일부 예시적인 실시예에서, 프로세서 또는 프로세서들은 단일 위치(예를 들어, 가정 환경, 사무실 환경, 또는 서버 팜 내)에 위치할 수 있는 반면, 다른 실시예에서 프로세서는 다수의 위치에 걸쳐 분산될 수 있다. Various operations of example methods described herein may be performed at least in part by one or more processors that are either temporarily configured (eg, by software) or permanently configured to perform the associated operations. Similarly, the methods described herein may be at least partially processor implemented. For example, at least some of the operations of methods 300 and 400 may be performed by one or more processors. Execution of certain operations may be distributed across one or more processors, not only residing within a single system, but also distributed across multiple systems. In some demonstrative embodiments, a processor or processors may be located in a single location (eg, within a home environment, office environment, or server farm), while in other embodiments a processor may be distributed across multiple locations. there is.

본 개시의 실시예가 특정 예시적인 실시예를 참조하여 설명되었지만, 본 발명의 청구 대상의 더 넓은 범위를 벗어나지 않고 이러한 실시예에 다양한 수정 및 변경이 이루어질 수 있음이 명백할 것이다. 따라서, 명세서 및 도면은 제한적인 의미가 아니라 예시적인 것으로 간주되어야 한다. 본원의 일부를 형성하는 첨부 도면은 제한이 아닌 예시로서 청구 대상이 실시될 수 있는 특정 실시예를 도시한다. 예시된 실시예는 당업자가 본원에 개시된 교시를 실시할 수 있도록 충분히 상세하게 설명된다. 본 개시의 범위를 벗어나지 않고 구조적 및 논리적 대체 및 변경이 이루어질 수 있도록 다른 실시예가 사용되고 그로부터 파생될 수 있다. 따라서, 이 상세한 설명은 제한적인 의미로 받아들여져서는 안 되며, 다양한 실시예의 범위는 청구범위에 부여되는 등가물의 전체 범위와 함께 첨부된 청구범위에 의해서만 정의된다 Although embodiments of the present disclosure have been described with reference to specific exemplary embodiments, it will be apparent that various modifications and changes may be made to these embodiments without departing from the broader scope of the claimed subject matter. Accordingly, the specification and drawings are to be regarded in an illustrative rather than restrictive sense. BRIEF DESCRIPTION OF THE DRAWINGS The accompanying drawings, which form a part of this application, show by way of example and not limitation, specific embodiments in which the claimed subject matter may be practiced. The illustrated embodiments are described in sufficient detail to enable any person skilled in the art to practice the teachings disclosed herein. Other embodiments may be used and derived therefrom so that structural and logical substitutions and changes may be made without departing from the scope of the present disclosure. Accordingly, this detailed description is not to be taken in a limiting sense, and the scope of the various embodiments is defined only by the appended claims, along with the full range of equivalents given thereto.

발명의 청구 대상의 이러한 실시예는 실제로 하나 이상이 개시되었지만 이 출원의 범위를 임의의 단일 발명 또는 발명 개념으로 자발적으로 제한하려는 의도 없이 단지 편의를 위해 "발명"이라는 용어로 개별적으로 및/또는 집합적으로 본원에서 지칭될 수 있다. 따라서, 특정 실시예가 본원에서 예시되고 설명되었지만, 동일한 목적을 달성하기 위해 계산된 임의의 배열이 도시된 특정 실시예를 대체할 수 있음을 이해해야 한다. 이 개시는 다양한 실시예의 임의의 모든 적응 또는 변형을 포함하도록 의도된다. 상기 실시예의 조합 및 여기에 구체적으로 설명되지 않은 다른 실시예는 위의 설명을 검토할 때 당업자에게 명백할 것이다.Although more than one of these embodiments of claimed subject matter are in fact disclosed, they are individually and/or collectively referred to as "the invention" for convenience only and without the intention of voluntarily limiting the scope of this application to any single invention or inventive concept. may be referred to herein as generically. Thus, while specific embodiments have been illustrated and described herein, it should be understood that any arrangement calculated to achieve the same purpose may be substituted for the specific embodiment shown. This disclosure is intended to cover any and all adaptations or variations of various embodiments. Combinations of the above embodiments and other embodiments not specifically described herein will become apparent to those skilled in the art upon reviewing the above description.

이 문서에서, "일" 또는 "하나"("a" 또는 "an")이라는 용어는 특허 문서에서 일반적으로 사용되어, "적어도 하나" 또는 "하나 이상의"의 임의의 다른 경우 또는 사용과 독립적으로, 하나 또는 둘 이상을 포함하도록 사용된다. 이 문서에서 용어 "또는"은 비독점적인 것을 지칭하기 위하여 사용되어, 달리 지시되지 않는 한 "A 또는 B"가 "A이지만 B는 아님", "B이지만 A가 아님" 및 "A 및 B"를 포함한다. 첨부된 청구범위에서, "포함하는(including)" 및 "여기에서(in which)"라는 용어는 각각 "포함하는(comprising)" 및 "여기에서(wherein)"라는 용어의 일반 영어 등가물로 사용된다. 또한, 다음의 청구범위에서 "포함하는(including)" 및 "포함하는(comprising)"이라는 용어는 개방적이다. 즉, 청구항에서 이러한 용어 뒤에 나열된 요소 외의 요소를 포함하는 시스템, 디바이스, 물품 또는 프로세스는 여전히 해당 청구항의 범위에 속하는 것으로 간주된다. In this document, the terms "a" or "an" are used generically in patent documents, independently of any other occurrence or use of "at least one" or "one or more". , used to include one or more than one. In this document, the term "or" is used to refer to a non-exclusive, so that "A or B" is "A but not B", "B but not A", and "A and B", unless otherwise indicated. includes In the appended claims, the terms "including" and "in which" are used as the plain English equivalents of the terms "comprising" and "wherein" respectively. . Also, in the following claims the terms "including" and "comprising" are open-ended. That is, systems, devices, articles, or processes that include elements other than those listed after such terms in a claim are still deemed to fall within the scope of that claim.

예시example

예시 1은: 적어도 하나의 하드웨어 프로세서; 및 적어도 하나의 하드웨어 프로세서가: 데이터베이스에서, 클라우드 스토리지 제공자 시스템의 저장 플랫폼 내의 저장 위치 및 클라우드 신원 객체를 식별하는 스토리지 통합 객체를 생성하는 것- 클라우드 신원 객체는, 클라우드 스토리지 제공자의 저장 플랫폼에서, 저장 위치에 접근하는 허가가 부여된 프록시 신원 객체와 연관됨; 데이터베이스에서, 스토리지 통합 객체에 기초하여 외부 스테이지 객체를 생성하는 것- 외부 스테이지 객체는 저장 위치를 식별하고 스토리지 통합 객체와의 연관을 포함함; 컴퓨팅 디바이스로부터, 저장 위치에서 데이터를 로드 또는 언로드하라는 명령을 수신하는 것; 및 명령에 응답하여, 프록시 신원 객체를 통하여, 외부 스테이지 객체를 사용하여 저장 위치에서 데이터를 로드 또는 언로드하는 것을 포함하는 동작을 수행하게 하는 명령을 저장하는 메모리를 포함하는 네트워크 기반 데이터 웨어하우스 시스템이다.Example 1 includes: at least one hardware processor; and at least one hardware processor: creating a storage integration object in the database that identifies a storage location in the storage platform of the cloud storage provider system and a cloud identity object, the cloud identity object being stored in the storage platform of the cloud storage provider system. associated with a proxy identity object granted permission to access the location; In the database, creating an external stage object based on the storage integration object, the external stage object identifying the storage location and including an association with the storage integration object; receiving a command from the computing device to load or unload data from a storage location; and a memory storing instructions that cause, in response to instructions, to perform operations including, via proxy identity objects, loading or unloading data from storage locations using external stage objects. .

예시 2에서 예시 1의 청구 대상은: 통합 객체와 연관된 사용 허가를 설정하는 것; 및 외부 스테이지 객체와 연관된 사용 허가를 설정하는 것을 선택적으로 더 포함한다. In Example 2, the subject matter of Example 1 is: setting permissions associated with an integration object; and optionally further comprising setting permission associated with the external stage object.

예시 3에서, 예시 1 및 2 중 어느 하나의 청구 대상은: 제1 사용자에게 스토리지 통합 객체를 사용하는 허가를 부여하는 것; 및 제2 사용자에게 외부 스테이지 객체를 사용하는 허가를 부여하는 것을 선택적으로 더 포함한다.In Example 3, the subject matter of any of Examples 1 and 2 is: granting a first user permission to use a storage integration object; and optionally further comprising granting permission to use the external stage object to the second user.

예시 4에서, 예시 1 내지 3 중 어느 하나의 청구 대상은 스토리지 통합 객체를 생성하라는 명령을 수신하는 것- 명령은 저장 위치 및 클라우드 스토리지 제공자 시스템을 식별함-을 선택적으로 더 포함하고, 스토리지 통합 객체의 생성은 스토리지 통합 객체를 생성하라는 명령에 기초한다.In Example 4, the subject matter of any of Examples 1-3 optionally further includes: receiving a command to create a storage integration object, wherein the command identifies a storage location and a cloud storage provider system; The creation of is based on the command to create a storage integration object.

예시 5에서, 예시 1 내지 4 중 어느 하나의 청구 대상은 외부 스테이지 객체를 생성하라는 명령을 수신하는 것- 명령은 저장 위치에 대응하는 식별자 및 통합 객체에 대응하는 식별자를 포함함-을 선택적으로 더 포함한다.In Example 5, the subject matter of any of Examples 1-4 optionally further comprises receiving a command to create an external stage object, the command including an identifier corresponding to the storage location and an identifier corresponding to the integration object. include

예시 6은 예시 1 내지 5 중 어느 하나의 청구 대상을 포함하고, 저장 위치에서 데이터의 로드 또는 언로드는: 클라우드 신원 객체와 연관된 제2 보안 자격증명을 사용하여 프록시 신원 객체에 접근하기 위한 제1 보안 자격증명에 접근하는 것; 및 보안 자격증명들을 사용하여 프록시 신원 객체에 접근하는 것을 선택적으로 포함한다.Example 6 includes the subject matter of any of Examples 1-5, wherein the loading or unloading of data from the storage location comprises: a first security to access the proxy identity object using a second security credential associated with the cloud identity object; access to credentials; and optionally accessing the proxy identity object using security credentials.

예시 7에서, 예시 1 내지 6 중 어느 하나의 청구 대상은, 클라우드 스토리지 제공자 시스템의 접근 관리 시스템으로, 제1 보안 자격증명 요청을 전송하는 것- 요청은 클라우드 신원 객체와 연관된 제2 보안 자격증명을 포함함-을 선택적으로 더 포함한다. In Example 7, the subject matter of any of Examples 1-6 sends, to an access management system of a cloud storage provider system, a first security credential request—the request is to send a second security credential associated with a cloud identity object. Including - Optionally further includes.

예시 8에서, 예시 1 내지 7 중 어느 하나의 청구 대상은 스토리지 통합 객체 내에 포함된 정보에 기초하여 저장 위치가 스토리지 통합 객체에게 허용됨을 검증하는 것을 선택적으로 더 포함한다.In Example 8, the subject matter of any of Examples 1-7 optionally further includes verifying that the storage location is allowed to the storage integration object based on information included in the storage integration object.

예시 9에서, 예시 1 내지 8 중 어느 하나의 청구 대상은 명령과 연관된 사용자의 사용자 허가를 검증하는 것을 선택적으로 더 포함한다.In Example 9, the subject matter of any of Examples 1-8 optionally further includes verifying user authorization of a user associated with the command.

예시 10에서, 예시 1 내지 9 중 어느 하나의 청구 대상은: 사용자가 스토리지 통합 객체를 사용하는 허가를 갖는지 검증하는 것; 및 사용자가 외부 스테이지 객체를 사용하는 허가를 갖는지 검증하는 것을 선택적으로 더 포함한다.In Example 10, the subject matter of any of Examples 1-9 is to: verify that a user has permission to use a storage integration object; and optionally verifying that the user has permission to use the external stage object.

예시 11은 예시 1 내지 10 중 어느 하나의 청구 대상을 포함하고, 스토리지 통합 객체는 저장 위치에 대응하는 제1 식별자를 선택적으로 포함하고, 외부 스테이지 객체는 저장 위치의 부분에 대응하는 제2 식별자를 선택적으로 포함한다. Example 11 includes the subject matter of any of Examples 1-10, wherein the storage integration object optionally includes a first identifier corresponding to a storage location, and the external stage object includes a second identifier corresponding to a portion of the storage location. optionally include

예시 12는: 기계의 적어도 하나의 하드웨어 프로세서에 의하여, 네트워크 기반 데이터 웨어하우스 시스템의 데이터베이스에서 스토리지 통합 객체를 생성하는 것- 스토리지 통합 객체는 클라우드 스토리지 제공자 시스템의 저장 플랫폼 내의 저장 위치 및 클라우드 신원 객체를 식별하고, 클라우드 신원 객체는, 클라우드 스토리지 제공자의 저장 플랫폼에서, 저장 위치에 접근하는 허가가 부여된 프록시 신원 객체와 연관됨; 데이터베이스에서, 스토리지 통합 객체에 기초하여 외부 스테이지 객체를 생성하는 것- 외부 스테이지 객체는 저장 위치를 식별하고 스토리지 통합 객체와의 연관을 포함함; 컴퓨팅 디바이스로부터, 저장 위치에서 데이터를 로드 또는 언로드하라는 명령을 수신하는 것; 및 명령에 응답하여, 프록시 신원 객체를 통하여, 외부 스테이지 객체를 사용하여 저장 위치에서 데이터를 로드 또는 언로드하는 것을 포함하는 방법이다. Example 12: Creating, by at least one hardware processor of the machine, a storage integration object in a database of a network-based data warehouse system - the storage integration object is a storage location in a storage platform of a cloud storage provider system and a cloud identity object. identify, and the cloud identity object is associated with a proxy identity object that has been granted permission to access the storage location, in the storage platform of the cloud storage provider; In the database, creating an external stage object based on the storage integration object, the external stage object identifying the storage location and including an association with the storage integration object; receiving a command from the computing device to load or unload data from a storage location; and, in response to the command, loading or unloading data from the storage location, via the proxy identity object, using the external Stage object.

예시 13에서, 예시 12의 청구 대상은: 통합 객체와 연관된 사용 허가를 설정하는 것; 및 외부 스테이지 객체와 연관된 사용 허가를 설정하는 것을 선택적으로 더 포함한다.In Example 13, the subject matter of Example 12 is to: set permissions associated with an Integration Object; and optionally further comprising setting permission associated with the external stage object.

예시 14에서, 예시 12 및 13 중 어느 하나의 청구 대상은: 제1 사용자에게 스토리지 통합 객체를 사용하는 허가를 부여하는 것; 및 제2 사용자에게 외부 스테이지 객체를 사용하는 허가를 부여하는 것을 선택적으로 더 포함한다.In Example 14, the subject matter of any of Examples 12 and 13 is to: grant a first user permission to use a storage integration object; and optionally further comprising granting permission to use the external stage object to the second user.

예시 15에서, 예시 12 내지 14 중 어느 하나의 청구 대상은 스토리지 통합 객체를 생성하라는 명령을 수신하는 것- 명령은 저장 위치 및 클라우드 스토리지 제공자 시스템을 식별함-을 선택적으로 더 포함하고, 스토리지 통합 객체의 생성은 스토리지 통합 객체를 생성하라는 명령에 기초한다.In Example 15, the subject matter of any of Examples 12-14 optionally further includes receiving an instruction to create a storage integration object, wherein the instruction identifies a storage location and a cloud storage provider system, and optionally further comprising: a storage integration object The creation of is based on the command to create a storage integration object.

예시 16에서, 예시 12 내지 15 중 어느 하나의 청구 대상은 외부 스테이지 객체를 생성하라는 명령을 수신하는 것- 명령은 저장 위치에 대응하는 식별자 및 통합 객체에 대응하는 식별자를 포함함-을 선택적으로 더 포함한다.In Example 16, the subject matter of any of Examples 12-15 optionally further receives a command to create an external stage object, the command including an identifier corresponding to the storage location and an identifier corresponding to the integration object. include

예시 17은 예시 12 내지 16 중 어느 하나의 청구 대상을 포함하고, 저장 위치에서 데이터의 로드 또는 언로드는 프록시 신원 객체와 연관된 보안 자격증명을 사용하여 프록시 신원 객체에 접근하는 것을 선택적으로 포함한다.Example 17 includes the subject matter of any of Examples 12-16, wherein the loading or unloading of data from the storage location optionally includes accessing the proxy identity object using security credentials associated with the proxy identity object.

예시 18에서, 예시 12 내지 17 중 어느 하나의 청구 대상은 명령과 연관된 사용자의 사용자 허가를 검증하는 것을 선택적으로 더 포함한다.In Example 18, the subject matter of any of Examples 12-17 optionally further includes verifying user permission of a user associated with the command.

예시 19에서, 예시 12 내지 18 중 어느 하나의 청구 대상은: 사용자가 스토리지 통합 객체를 사용하는 허가를 갖는지 검증하는 것; 또는 사용자가 외부 스테이지 객체를 사용하는 허가를 갖는지 검증하는 것을 선택적으로 더 포함한다.In Example 19, the subject matter of any of Examples 12-18 is to: verify that a user has permission to use a storage integration object; or optionally further comprising verifying that the user has permission to use the external stage object.

예시 20은 처리 디바이스에 의해 실행될 때, 처리 디바이스가: 네트워크 기반 데이터 웨어하우스 시스템의 데이터베이스에서 스토리지 통합 객체를 생성하는 것- 스토리지 통합 객체는 클라우드 스토리지 제공자 시스템의 저장 플랫폼 내의 저장 위치 및 클라우드 신원 객체를 식별하고, 클라우드 신원 객체는, 클라우드 스토리지 제공자의 저장 플랫폼에서, 저장 위치에 접근하는 허가가 부여된 프록시 신원 객체와 연관됨; 데이터베이스에서, 스토리지 통합 객체에 기초하여 외부 스테이지 객체를 생성하는 것- 외부 스테이지 객체는 저장 위치를 식별하고 스토리지 통합 객체와의 연관을 포함함; 컴퓨팅 디바이스로부터, 저장 위치에서 데이터를 로드 또는 언로드하라는 명령을 수신하는 것; 및 명령에 응답하여, 프록시 신원 객체를 통하여, 외부 스테이지 객체를 사용하여 저장 위치에서 데이터를 로드 또는 언로드하는 것을 포함하는 동작을 수행하도록 구성하는 명령을 포함하는 컴퓨터 저장 매체이다.Example 20, when executed by a processing device, causes the processing device to: create a storage integration object in a database of a network-based data warehouse system - the storage integration object identifies a cloud identity object and a storage location within a storage platform of a cloud storage provider system. identify, and the cloud identity object is associated with a proxy identity object that has been granted permission to access the storage location, in the storage platform of the cloud storage provider; In the database, creating an external stage object based on the storage integration object, the external stage object identifying the storage location and including an association with the storage integration object; receiving a command from the computing device to load or unload data from a storage location; and, in response to the command, instructions configured to perform an operation including loading or unloading data from a storage location using an external stage object, via the proxy identity object.

예시 21에서, 예시 20의 청구 대상은: 통합 객체와 연관된 사용 허가를 설정하는 것; 및 외부 스테이지 객체와 연관된 사용 허가를 설정하는 것을 선택적으로 더 포함한다.In Example 21, the subject matter of Example 20 is to: set permissions associated with an Integration Object; and optionally further comprising setting permission associated with the external stage object.

예시 22에서, 예시 20 및 21 중 어느 하나 이상의 청구 대상은 스토리지 통합 객체를 생성하라는 명령을 수신하는 것- 명령은 저장 위치 및 클라우드 스토리지 제공자 시스템을 식별함-을 선택적으로 더 포함하고, 스토리지 통합 객체의 생성은 스토리지 통합 객체를 생성하라는 명령에 기초한다.In Example 22, the subject matter of any one or more of Examples 20 and 21 optionally further comprises receiving a command to create a storage integration object, wherein the command identifies a storage location and a cloud storage provider system, and optionally further comprising: a storage integration object The creation of is based on the command to create a storage integration object.

예시 23에서, 예시 20 내지 22 중 어느 하나 이상의 청구 대상은 외부 스테이지 객체를 생성하라는 명령을 수신하는 것- 명령은 저장 위치에 대응하는 식별자 및 스토리지 통합 객체에 대응하는 식별자를 포함함-을 선택적으로 더 포함한다.In Example 23, the subject matter of any one or more of Examples 20-22 optionally receives a command to create an external stage object, wherein the command includes an identifier corresponding to a storage location and an identifier corresponding to a storage integration object. contains more

예시 24는 예시 20 내지 23 중 어느 하나의 청구 대상을 포함하고, 저장 위치에서 데이터의 로드 또는 언로드는 클라우드 신원 객체와 연관된 제2 보안 자격증명을 사용하여 프록시 신원 객체에 접근하기 위한 제1 보안 자격증명에 접근하는 것; 및 보안 자격증명들을 사용하여 프록시 신원 객체에 접근하는 것을 선택적으로 포함한다.Example 24 includes the subject matter of any of Examples 20-23, wherein the loading or unloading of data from the storage location uses a second security credential associated with the cloud identity object to access the proxy identity object with a first security credential. access to people; and optionally accessing the proxy identity object using security credentials.

예시 25에서, 예시 20 내지 24 중 어느 하나의 청구 대상은 스토리지 통합 객체 내에 포함된 정보에 기초하여 저장 위치가 스토리지 통합 객체에게 허용됨을 검증하는 것을 선택적으로 더 포함한다.In Example 25, the subject matter of any of Examples 20-24 optionally further includes verifying that the storage location is allowed to the storage integration object based on information included within the storage integration object.

Claims (25)

적어도 하나의 하드웨어 프로세서; 및
상기 적어도 하나의 하드웨어 프로세서가:
데이터베이스에서, 클라우드 신원 객체(cloud identity object), 프록시 신원 객체(proxy identity object) 및 클라우드 스토리지 제공자 시스템의 저장 플랫폼 내의 저장 위치를 식별하는 스토리지 통합 객체(storage integration object)를 생성하는 것 - 상기 클라우드 신원 객체는, 상기 클라우드 스토리지 제공자의 상기 저장 플랫폼에서, 상기 프록시 신원 객체와 연관되고, 상기 프록시 신원 객체는 상기 저장 위치에 접근하는 허가가 부여된 프록시 신원에 대응하고, 상기 프록시 신원 객체는 상기 클라우드 신원이 상기 프록시 신원을 가정하여 저장 위치에서 데이터를 로드(load) 또는 언로드(unload)할 수 있도록 하는 허가 세트를 포함함 - ;
상기 데이터베이스에서, 상기 스토리지 통합 객체에 기초하여 외부 스테이지 객체(external stage object)를 생성하는 것 - 상기 외부 스테이지 객체는 상기 저장 위치를 식별하고 상기 스토리지 통합 객체와의 연관을 포함하고, 상기 외부 스테이지 객체는 상기 프록시 신원을 가정하는 상기 클라우드 신원에 기초하여 상기 저장 위치에서 데이터를 로드 또는 언로드하도록 작동 가능함 -;
컴퓨팅 디바이스로부터, 상기 저장 위치에서 데이터를 로드(load) 또는 언로드(unload)하라는 명령을 수신하는 것; 및
상기 명령에 응답하여, 상기 프록시 신원 객체를 통하여, 상기 외부 스테이지 객체를 사용하여 상기 저장 위치에서 상기 데이터를 로드 또는 언로드하는 것
을 포함하는 동작을 수행하게 하는 명령어를 저장하는 메모리를 포함하는 네트워크 기반 데이터 웨어하우스 시스템.
at least one hardware processor; and
The at least one hardware processor is:
In the database, creating a cloud identity object, a proxy identity object, and a storage integration object that identifies a storage location within a storage platform of a cloud storage provider system - the cloud identity An object, in the storage platform of the cloud storage provider, is associated with the proxy identity object, the proxy identity object corresponding to a proxy identity granted permission to access the storage location, the proxy identity object being the cloud identity object. contains a set of permissions allowing loading or unloading of data from a storage location assuming this proxy identity;
In the database, creating an external stage object based on the storage integration object, the external stage object identifying the storage location and including an association with the storage integration object, the external stage object is operable to load or unload data from the storage location based on the cloud identity assuming the proxy identity;
receiving a command from a computing device to load or unload data from the storage location; and
In response to the command, loading or unloading the data from the storage location, via the proxy identity object, using the external stage object.
A network-based data warehouse system comprising a memory for storing instructions for performing operations including.
제1항에 있어서, 상기 동작은:
상기 스토리지 통합 객체와 연관된 사용 허가를 설정하는 것; 및
상기 외부 스테이지 객체와 연관된 사용 허가를 설정하는 것을 더 포함하는 네트워크 기반 데이터 웨어하우스 시스템.
The method of claim 1 , wherein the operation:
setting permissions associated with the storage integration object; and
The network-based data warehouse system further comprising setting permissions associated with the external stage object.
제2항에 있어서:
상기 스토리지 통합 객체와 연관된 상기 사용 허가의 상기 설정은 제1 사용자에게 상기 스토리지 통합 객체를 사용하는 허가를 부여하는 것을 포함하고;
상기 외부 스테이지 객체와 연관된 상기 사용 허가의 상기 설정은 제2 사용자에게 상기 외부 스테이지 객체를 사용하는 허가를 부여하는 것을 포함하는 네트워크 기반 데이터 웨어하우스 시스템.
According to claim 2:
the setting of the usage permission associated with the storage integration object includes granting permission to use the storage integration object to a first user;
and the setting of the usage permission associated with the external stage object includes granting permission to use the external stage object to a second user.
제1항에 있어서, 상기 동작은:
상기 스토리지 통합 객체를 생성하라는 명령을 수신하는 것 - 상기 명령은 상기 저장 위치 및 상기 클라우드 스토리지 제공자 시스템을 식별함 - 을 더 포함하고, 상기 스토리지 통합 객체의 상기 생성은 상기 스토리지 통합 객체를 생성하라는 상기 명령에 기초하는 네트워크 기반 데이터 웨어하우스 시스템.
The method of claim 1 , wherein the operation:
further comprising receiving a command to create the storage integration object, wherein the command identifies the storage location and the cloud storage provider system, wherein the creation of the storage integration object comprises the command to create the storage integration object. A command-based, network-based data warehouse system.
제1항에 있어서, 상기 동작은:
상기 외부 스테이지 객체를 생성하라는 명령을 수신하는 것 - 상기 명령은 상기 저장 위치에 대응하는 식별자(identifier) 및 상기 스토리지 통합 객체에 대응하는 식별자를 포함함 - 을 더 포함하는 네트워크 기반 데이터 웨어하우스 시스템.
The method of claim 1 , wherein the operation:
receiving a command to create the external stage object, the command including an identifier corresponding to the storage location and an identifier corresponding to the storage integration object.
제1항에 있어서, 상기 저장 위치에서 상기 데이터의 상기 로드 또는 언로드는:
상기 클라우드 신원 객체와 연관된 제2 보안 자격증명(credential)을 사용하여 상기 프록시 신원 객체에 접근하기 위한 제1 보안 자격증명에 접근하는 것; 및
상기 보안 자격증명들을 사용하여 상기 프록시 신원 객체에 접근하는 것을 포함하는 네트워크 기반 데이터 웨어하우스 시스템.
2. The method of claim 1, wherein the loading or unloading of the data from the storage location:
accessing a first security credential for accessing the proxy identity object using a second security credential associated with the cloud identity object; and
and accessing the proxy identity object using the security credentials.
제6항에 있어서, 상기 보안 자격증명들의 상기 접근은:
상기 클라우드 스토리지 제공자 시스템의 접근 관리 시스템으로, 상기 제1 보안 자격증명에 대한 요청을 전송하는 것 - 상기 요청은 상기 클라우드 신원 객체와 연관된 상기 제2 보안 자격증명을 포함함 - 을 포함하는 네트워크 기반 데이터 웨어하우스 시스템.
7. The method of claim 6, wherein the access of the security credentials:
network-based data comprising sending a request for the first security credential to an access management system of the cloud storage provider system, the request including the second security credential associated with the cloud identity object. warehouse system.
제1항에 있어서, 상기 동작은 상기 스토리지 통합 객체 내에 포함된 정보에 기초하여 상기 저장 위치가 상기 스토리지 통합 객체에게 허용됨을 검증하는 것을 더 포함하는 네트워크 기반 데이터 웨어하우스 시스템.The network-based data warehouse system of claim 1 , wherein the operation further comprises verifying that the storage location is permitted to the storage integration object based on information included in the storage integration object. 제1항에 있어서, 상기 동작은 상기 명령과 연관된 사용자의 사용자 허가를 검증하는 것을 더 포함하는 네트워크 기반 데이터 웨어하우스 시스템.2. The network-based data warehouse system of claim 1, wherein the operations further include verifying user permissions of a user associated with the command. 제9항에 있어서, 상기 사용자 허가의 상기 검증은:
상기 사용자가 상기 스토리지 통합 객체를 사용하는 허가를 갖는지 검증하는 것; 또는
상기 사용자가 상기 외부 스테이지 객체를 사용하는 허가를 갖는지 검증하는 것 중 하나 이상을 포함하는 네트워크 기반 데이터 웨어하우스 시스템.
10. The method of claim 9, wherein the verification of the user permission:
verifying that the user has permission to use the storage integration object; or
and verifying that the user has permission to use the external stage object.
제1항에 있어서:
상기 스토리지 통합 객체는 상기 저장 위치에 대응하는 제1 식별자를 포함하고;
상기 외부 스테이지 객체는 상기 저장 위치의 부분에 대응하는 제2 식별자를 포함하는 네트워크 기반 데이터 웨어하우스 시스템.
According to claim 1:
the storage integration object includes a first identifier corresponding to the storage location;
and the external stage object includes a second identifier corresponding to a portion of the storage location.
기계의 적어도 하나의 하드웨어 프로세서에 의하여, 네트워크 기반 데이터 웨어하우스 시스템의 데이터베이스에서 스토리지 통합 객체를 생성하는 것 - 상기 스토리지 통합 객체는 클라우드 신원 객체, 프록시 신원 객체 및 클라우드 스토리지 제공자 시스템의 저장 플랫폼 내의 저장 위치를 식별하고, 상기 클라우드 신원 객체는, 상기 클라우드 스토리지 제공자의 상기 저장 플랫폼에서, 상기 프록시 신원 객체와 연관되고, 상기 프록시 신원 객체는 상기 저장 위치에 접근하는 허가가 부여된 프록시 신원에 대응하고, 상기 프록시 신원 객체는 상기 클라우드 신원이 상기 프록시 신원을 가정하여 저장 위치에서 데이터를 로드 또는 언로드할 수 있도록 하는 허가 세트를 포함함 -;
상기 데이터베이스에서, 상기 스토리지 통합 객체에 기초하여 외부 스테이지 객체를 생성하는 것 - 상기 외부 스테이지 객체는 상기 저장 위치를 식별하고 상기 스토리지 통합 객체와의 연관을 포함하고, 상기 외부 스테이지 객체는 상기 프록시 신원을 가정하는 상기 클라우드 신원에 기초하여 상기 저장 위치에서 데이터를 로드 또는 언로드하도록 작동 가능함 -;
컴퓨팅 디바이스로부터, 상기 저장 위치에서 데이터를 로드 또는 언로드하라는 명령을 수신하는 것; 및
상기 명령에 응답하여, 상기 프록시 신원 객체를 통하여, 상기 외부 스테이지 객체를 사용하여 상기 저장 위치에서 상기 데이터를 로드 또는 언로드하는 것을 포함하는 방법.
creating, by at least one hardware processor of the machine, a storage integration object in a database of a network-based data warehouse system, the storage integration object comprising: a cloud identity object, a proxy identity object, and a storage location within a storage platform of the cloud storage provider system; identify a cloud identity object, in the storage platform of the cloud storage provider, is associated with the proxy identity object, the proxy identity object corresponding to a proxy identity granted permission to access the storage location; a proxy identity object contains a set of permissions allowing the cloud identity to load or unload data from a storage location assuming the proxy identity;
In the database, creating an external stage object based on the storage integration object, the external stage object identifying the storage location and including an association with the storage integration object, the external stage object identifying the proxy identity. operable to load or unload data from the storage location based on the assumed cloud identity;
receiving a command from the computing device to load or unload data from the storage location; and
in response to the command, via the proxy identity object, loading or unloading the data from the storage location using the external Stage object.
제12항에 있어서:
상기 스토리지 통합 객체와 연관된 사용 허가를 설정하는 것; 및
상기 외부 스테이지 객체와 연관된 사용 허가를 설정하는 것을 더 포함하는 방법.
According to claim 12:
setting permissions associated with the storage integration object; and
The method further comprising setting a permission associated with the external stage object.
제13항에 있어서:
상기 스토리지 통합 객체와 연관된 상기 사용 허가의 상기 설정은 제1 사용자에게 상기 스토리지 통합 객체를 사용하는 허가를 부여하는 것을 포함하고;
상기 외부 스테이지 객체와 연관된 상기 사용 허가의 상기 설정은 제2 사용자에게 상기 외부 스테이지 객체를 사용하는 허가를 부여하는 것을 포함하는 방법.
According to claim 13:
the setting of the usage permission associated with the storage integration object includes granting permission to use the storage integration object to a first user;
wherein the setting of the usage permission associated with the external Stage object comprises granting permission to use the external Stage object to a second user.
제12항에 있어서:
상기 스토리지 통합 객체를 생성하라는 명령을 수신하는 것 - 상기 명령은 상기 저장 위치 및 상기 클라우드 스토리지 제공자 시스템을 식별함 - 을 더 포함하고, 상기 스토리지 통합 객체의 상기 생성은 상기 스토리지 통합 객체를 생성하라는 상기 명령에 기초하는 방법.
According to claim 12:
further comprising receiving a command to create the storage integration object, wherein the command identifies the storage location and the cloud storage provider system, wherein the creation of the storage integration object comprises the command to create the storage integration object. Command-based method.
제12항에 있어서:
상기 외부 스테이지 객체를 생성하라는 명령을 수신하는 것 - 상기 명령은 상기 저장 위치에 대응하는 식별자 및 상기 스토리지 통합 객체에 대응하는 식별자를 포함함 - 을 더 포함하는 방법.
According to claim 12:
receiving a command to create the external stage object, the command including an identifier corresponding to the storage location and an identifier corresponding to the storage integration object.
제12항에 있어서, 상기 저장 위치에서 상기 데이터의 상기 로드 또는 언로드는:
상기 프록시 신원 객체와 연관된 보안 자격증명을 사용하여 상기 프록시 신원 객체에 접근하는 것을 포함하는 방법.
13. The method of claim 12, wherein the loading or unloading of the data from the storage location:
and accessing the proxy identity object using security credentials associated with the proxy identity object.
제12항에 있어서, 상기 명령과 연관된 사용자의 사용자 허가를 검증하는 것을 더 포함하는 방법.13. The method of claim 12, further comprising verifying user permissions of a user associated with the command. 제18항에 있어서, 상기 사용자 허가의 상기 검증은:
상기 사용자가 상기 스토리지 통합 객체를 사용하는 허가를 갖는지 검증하는 것; 또는
상기 사용자가 상기 외부 스테이지 객체를 사용하는 허가를 갖는지 검증하는 것 중 하나 이상을 포함하는 방법.
19. The method of claim 18, wherein the verification of the user permission:
verifying that the user has permission to use the storage integration object; or
and verifying that the user has permission to use the external stage object.
기계의 적어도 하나의 하드웨어 프로세서에 의해 실행될 때, 상기 기계가:
기계의 적어도 하나의 하드웨어 프로세서에 의하여, 네트워크 기반 데이터 웨어하우스 시스템의 데이터베이스에서 스토리지 통합 객체를 생성하는 것 - 상기 스토리지 통합 객체는 클라우드 신원 객체, 프록시 신원 객체 및 클라우드 스토리지 제공자 시스템의 저장 플랫폼 내의 저장 위치를 식별하고, 상기 클라우드 신원 객체는, 상기 클라우드 스토리지 제공자의 상기 저장 플랫폼에서, 상기 프록시 신원 객체와 연관되고, 상기 프록시 신원 객체는 상기 저장 위치에 접근하는 허가가 부여된 프록시 신원에 대응하고, 상기 프록시 신원 객체는 상기 클라우드 신원이 상기 프록시 신원을 가정하여 상기 저장 위치에서 데이터를 로드 또는 언로드할 수 있도록 하는 허가 세트를 포함함 -;
상기 데이터베이스에서, 상기 스토리지 통합 객체에 기초하여 외부 스테이지 객체를 생성하는 것 - 상기 외부 스테이지 객체는 상기 저장 위치를 식별하고 상기 스토리지 통합 객체와의 연관을 포함하고, 상기 외부 스테이지 객체는 상기 프록시 신원을 가정하는 상기 클라우드 신원에 기초하여 상기 저장 위치에서 데이터를 로드 또는 언로드하도록 작동 가능함 -;
컴퓨팅 디바이스로부터, 상기 저장 위치에서 데이터를 로드 또는 언로드하라는 명령을 수신하는 것; 및
상기 명령에 응답하여, 상기 프록시 신원 객체를 통하여, 상기 외부 스테이지 객체를 사용하여 상기 저장 위치에서 상기 데이터를 로드 또는 언로드하는 것
을 포함하는 동작을 수행하도록 구성하는 명령어를 포함하는 컴퓨터 저장 매체.
When executed by at least one hardware processor of a machine, the machine:
creating, by at least one hardware processor of the machine, a storage integration object in a database of a network-based data warehouse system, the storage integration object comprising: a cloud identity object, a proxy identity object, and a storage location within a storage platform of the cloud storage provider system; identify a cloud identity object, in the storage platform of the cloud storage provider, is associated with the proxy identity object, the proxy identity object corresponding to a proxy identity granted permission to access the storage location; a proxy identity object contains a permission set allowing the cloud identity to load or unload data from the storage location assuming the proxy identity;
In the database, creating an external stage object based on the storage integration object, the external stage object identifying the storage location and including an association with the storage integration object, the external stage object identifying the proxy identity. operable to load or unload data from the storage location based on the assumed cloud identity;
receiving a command from the computing device to load or unload data from the storage location; and
In response to the command, loading or unloading the data from the storage location, via the proxy identity object, using the external stage object.
A computer storage medium comprising instructions configured to perform an operation comprising:
제20항에 있어서, 상기 명령어는 상기 기계가:
상기 스토리지 통합 객체와 연관된 사용 허가를 설정하는 것; 및
상기 외부 스테이지 객체와 연관된 사용 허가를 설정하는 것을 포함하는 추가 동작을 수행하도록 구성하는 컴퓨터 저장 매체.
21. The method of claim 20, wherein the instructions cause the machine to:
setting permissions associated with the storage integration object; and
A computer storage medium configured to perform additional operations including setting permissions associated with the external stage object.
제20항에 있어서, 상기 명령어는 상기 기계가:
상기 스토리지 통합 객체를 생성하라는 명령을 수신하는 것 - 상기 명령은 상기 저장 위치 및 상기 클라우드 스토리지 제공자 시스템을 식별함 - 을 포함하는 추가 동작을 수행하도록 구성하고, 상기 스토리지 통합 객체의 상기 생성은 상기 스토리지 통합 객체를 생성하라는 상기 명령에 기초하는 컴퓨터 저장 매체.
21. The method of claim 20, wherein the instructions cause the machine to:
receive a command to create the storage integration object, wherein the command identifies the storage location and the cloud storage provider system; A computer storage medium based on the instructions to create an integration object.
제20항에 있어서, 상기 명령어는 상기 기계가:
상기 외부 스테이지 객체를 생성하라는 명령을 수신하는 것 - 상기 명령은 상기 저장 위치에 대응하는 식별자 및 상기 스토리지 통합 객체에 대응하는 식별자를 포함함 - 을 포함하는 추가 동작을 수행하도록 구성하는 컴퓨터 저장 매체.
21. The method of claim 20, wherein the instructions cause the machine to:
receiving a command to create the external stage object, the command including an identifier corresponding to the storage location and an identifier corresponding to the storage integration object.
제20항에 있어서, 상기 명령어는 상기 기계가:
상기 클라우드 신원 객체와 연관된 제2 보안 자격증명을 사용하여 상기 프록시 신원 객체에 접근하기 위한 제1 보안 자격증명에 접근하는 것; 및
상기 보안 자격증명들을 사용하여 상기 프록시 신원 객체에 접근하는 것을 포함하는 추가 동작을 수행하도록 구성하는 컴퓨터 저장 매체.
21. The method of claim 20, wherein the instructions cause the machine to:
accessing a first security credential for accessing the proxy identity object using a second security credential associated with the cloud identity object; and
A computer storage medium configured to perform an additional operation comprising accessing the proxy identity object using the security credentials.
제20항에 있어서, 상기 명령은 상기 기계가:
상기 스토리지 통합 객체 내에 포함된 정보에 기초하여 상기 저장 위치가 상기 스토리지 통합 객체에게 허용됨을 검증하는 것을 포함하는 추가 동작을 수행하도록 구성하는 컴퓨터 저장 매체.
21. The method of claim 20, wherein the instructions cause the machine to:
and performing an additional operation comprising verifying that the storage location is allowed to the storage integration object based on information included in the storage integration object.
KR1020217031176A 2019-11-14 2020-07-30 Credentialless external stage for database integration KR102508177B1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/683,641 2019-11-14
US16/683,641 US10715524B1 (en) 2019-11-14 2019-11-14 External credential-less stages for data warehouse integrations
PCT/US2020/044195 WO2021096572A1 (en) 2019-11-14 2020-07-30 External credential-less stages for database integrations

Publications (2)

Publication Number Publication Date
KR20210134937A KR20210134937A (en) 2021-11-11
KR102508177B1 true KR102508177B1 (en) 2023-03-13

Family

ID=71519688

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217031176A KR102508177B1 (en) 2019-11-14 2020-07-30 Credentialless external stage for database integration

Country Status (6)

Country Link
US (6) US10715524B1 (en)
EP (1) EP3942773A4 (en)
KR (1) KR102508177B1 (en)
CN (2) CN116303718A (en)
DE (1) DE202020005693U1 (en)
WO (1) WO2021096572A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11876802B2 (en) 2019-11-14 2024-01-16 Snowflake Inc. Loading and unloading data at an external storage location

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10108688B2 (en) 2015-12-22 2018-10-23 Dropbox, Inc. Managing content across discrete systems
US10754827B2 (en) 2018-11-06 2020-08-25 Dropbox, Inc. Technologies for integrating cloud content items across platforms
US10628244B1 (en) 2019-10-29 2020-04-21 Snowflake Inc. Calling external functions from a data warehouse
US11824837B2 (en) * 2020-07-15 2023-11-21 Sap Se End user creation of trusted integration pathways between different enterprise systems
US11138192B1 (en) 2021-04-30 2021-10-05 Snowflake Inc. Invoking external table functions from a database system
US20230169085A1 (en) * 2021-11-30 2023-06-01 Intuit Inc. Multitenancy in extract, transform, load (etl) pipeline orchestration tools
US11843544B2 (en) 2022-04-01 2023-12-12 The Toronto-Dominion Bank System and method for controlling access to project data and to computing resources therefor
US11748338B1 (en) * 2022-06-10 2023-09-05 Snowflake Inc. Auto refresh of directory tables for stages

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050108206A1 (en) * 2003-11-14 2005-05-19 Microsoft Corporation System and method for object-oriented interaction with heterogeneous data stores
US20100333116A1 (en) * 2009-06-30 2010-12-30 Anand Prahlad Cloud gateway system for managing data storage to cloud storage sites
US8176283B1 (en) 2011-09-26 2012-05-08 Google Inc. Permissions of objects in hosted storage
US20140143543A1 (en) 2012-11-20 2014-05-22 Google Inc. Delegate authorization in cloud-based storage system

Family Cites Families (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7092942B2 (en) * 2002-05-31 2006-08-15 Bea Systems, Inc. Managing secure resources in web resources that are accessed by multiple portals
US8028329B2 (en) * 2005-06-13 2011-09-27 Iamsecureonline, Inc. Proxy authentication network
JP5441303B2 (en) 2006-01-20 2014-03-12 キヤノン株式会社 Information processing apparatus and information processing method
WO2008082441A1 (en) * 2006-12-29 2008-07-10 Prodea Systems, Inc. Display inserts, overlays, and graphical user interfaces for multimedia systems
US8385971B2 (en) * 2008-08-19 2013-02-26 Digimarc Corporation Methods and systems for content processing
US8296828B2 (en) * 2008-12-16 2012-10-23 Microsoft Corporation Transforming claim based identities to credential based identities
US9614924B2 (en) * 2008-12-22 2017-04-04 Ctera Networks Ltd. Storage device and method thereof for integrating network attached storage with cloud storage services
US9473419B2 (en) * 2008-12-22 2016-10-18 Ctera Networks, Ltd. Multi-tenant cloud storage system
US8713038B2 (en) 2009-04-02 2014-04-29 Pivotal Software, Inc. Integrating map-reduce into a distributed relational database
US8805953B2 (en) * 2009-04-03 2014-08-12 Microsoft Corporation Differential file and system restores from peers and the cloud
AU2010328326B2 (en) 2009-12-07 2016-12-01 Robert Buffone System and method for website performance optimization and internet traffic processing
US8799413B2 (en) * 2010-05-03 2014-08-05 Panzura, Inc. Distributing data for a distributed filesystem across multiple cloud storage systems
US8234372B2 (en) * 2010-05-05 2012-07-31 Go Daddy Operating Company, LLC Writing a file to a cloud storage solution
WO2011159842A2 (en) * 2010-06-15 2011-12-22 Nimbula, Inc. Virtual computing infrastructure
US9560036B2 (en) * 2010-07-08 2017-01-31 International Business Machines Corporation Cross-protocol federated single sign-on (F-SSO) for cloud enablement
CN103380423B (en) * 2010-07-09 2016-01-27 道富公司 For the system and method for private cloud computing
US20120136960A1 (en) * 2010-11-29 2012-05-31 Beijing Z & W Technology Consulting Co., Ltd Cloud Storage Data Access Method, Apparatus and System
US8656454B2 (en) * 2010-12-01 2014-02-18 Microsoft Corporation Data store including a file location attribute
US8538954B2 (en) 2011-01-25 2013-09-17 Hewlett-Packard Development Company, L.P. Aggregate function partitions for distributed processing
US8606878B2 (en) * 2011-02-28 2013-12-10 Red Hat, Inc. Systems and methods for de-populating cloud data store
US9483627B1 (en) * 2011-05-03 2016-11-01 Symantec Corporation Abstracting credentials for mobile client authentication
US20130036272A1 (en) * 2011-08-02 2013-02-07 Microsoft Corporation Storage engine node for cloud-based storage
US8533231B2 (en) * 2011-08-12 2013-09-10 Nexenta Systems, Inc. Cloud storage system with distributed metadata
US20140013409A1 (en) * 2012-07-06 2014-01-09 Milind I. Halageri Single sign on for cloud
US10007698B2 (en) 2011-11-28 2018-06-26 Sybase, Inc. Table parameterized functions in database
US9483491B2 (en) * 2011-11-29 2016-11-01 Egnyte, Inc. Flexible permission management framework for cloud attached file systems
US9239911B2 (en) * 2012-04-26 2016-01-19 Red Hat, Inc. Replacement of security credentials for secure proxying
US8713633B2 (en) * 2012-07-13 2014-04-29 Sophos Limited Security access protection for user data stored in a cloud computing facility
US9253054B2 (en) * 2012-08-09 2016-02-02 Rockwell Automation Technologies, Inc. Remote industrial monitoring and analytics using a cloud infrastructure
US20140108558A1 (en) * 2012-10-12 2014-04-17 Citrix Systems, Inc. Application Management Framework for Secure Data Sharing in an Orchestration Framework for Connected Devices
US20140115182A1 (en) * 2012-10-24 2014-04-24 Brocade Communications Systems, Inc. Fibre Channel Storage Area Network to Cloud Storage Gateway
US9137222B2 (en) * 2012-10-31 2015-09-15 Vmware, Inc. Crypto proxy for cloud storage services
US20140142984A1 (en) * 2012-11-21 2014-05-22 Datcard Systems, Inc. Cloud based viewing, transfer and storage of medical data
US8893230B2 (en) * 2013-02-22 2014-11-18 Duo Security, Inc. System and method for proxying federated authentication protocols
US9342557B2 (en) 2013-03-13 2016-05-17 Cloudera, Inc. Low latency query engine for Apache Hadoop
US10122714B2 (en) * 2013-08-01 2018-11-06 Bitglass, Inc. Secure user credential access system
US9426219B1 (en) * 2013-12-06 2016-08-23 Amazon Technologies, Inc. Efficient multi-part upload for a data warehouse
CN104754001A (en) * 2013-12-30 2015-07-01 方正宽带网络服务股份有限公司 Cloud storage system and data storage method
US11386085B2 (en) 2014-01-27 2022-07-12 Microstrategy Incorporated Deriving metrics from queries
US9614796B2 (en) * 2014-03-13 2017-04-04 Sap Se Replacing email file attachment with download link
US9584492B2 (en) * 2014-06-23 2017-02-28 Vmware, Inc. Cryptographic proxy service
JPWO2016016944A1 (en) 2014-07-29 2017-04-27 株式会社日立製作所 Database management system and database management method
US10313311B2 (en) * 2014-08-22 2019-06-04 Nec Corporation Method for storing of data within a cloud storage and a cloud storage system
US10963459B2 (en) 2014-08-29 2021-03-30 Sap Se Generic utilization of on-premise query frameworks by new on-demand applications
US10180973B2 (en) 2014-09-26 2019-01-15 Oracle International Corporation System and method for efficient connection management in a massively parallel or distributed database environment
US9588977B1 (en) * 2014-09-30 2017-03-07 EMC IP Holding Company LLC Data and metadata structures for use in tiering data to cloud storage
CN107534557B (en) * 2015-01-26 2021-07-09 移动熨斗公司 Identity agent providing access control and single sign-on
US9934202B1 (en) 2015-03-30 2018-04-03 EMC IP Holding Company LLC Managing paginated data
US10171295B2 (en) 2016-04-07 2019-01-01 Red Hat, Inc. Distributed remote execution
WO2019028269A2 (en) * 2017-08-02 2019-02-07 Strong Force Iot Portfolio 2016, Llc Methods and systems for detection in an industrial internet of things data collection environment with large data sets
US10341410B2 (en) * 2016-05-11 2019-07-02 Oracle International Corporation Security tokens for a multi-tenant identity and data security management cloud service
US11157498B1 (en) 2016-09-26 2021-10-26 Splunk Inc. Query generation using a dataset association record of a metadata catalog
US11093564B1 (en) 2016-09-26 2021-08-17 Splunk Inc. Identifying configuration parameters for a query using a metadata catalog
US10642879B2 (en) * 2017-01-06 2020-05-05 Oracle International Corporation Guaranteed file system hierarchy data integrity in cloud object stores
KR102441299B1 (en) 2017-11-27 2022-09-08 스노우플레이크 인코포레이티드 Batch data collection into database system
US10802747B2 (en) 2017-11-30 2020-10-13 Veritas Technologies Llc Performing backup operations using replicas
US11157497B1 (en) 2018-04-30 2021-10-26 Splunk Inc. Dynamically assigning a search head and search nodes for a query
US11269886B2 (en) 2019-03-05 2022-03-08 Sap Se Approximate analytics with query-time sampling for exploratory data analysis
US10628244B1 (en) 2019-10-29 2020-04-21 Snowflake Inc. Calling external functions from a data warehouse
US10715524B1 (en) 2019-11-14 2020-07-14 Snowflake Inc. External credential-less stages for data warehouse integrations
US10867063B1 (en) 2019-11-27 2020-12-15 Snowflake Inc. Dynamic shared data object masking
US11138192B1 (en) 2021-04-30 2021-10-05 Snowflake Inc. Invoking external table functions from a database system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050108206A1 (en) * 2003-11-14 2005-05-19 Microsoft Corporation System and method for object-oriented interaction with heterogeneous data stores
US20100333116A1 (en) * 2009-06-30 2010-12-30 Anand Prahlad Cloud gateway system for managing data storage to cloud storage sites
US8176283B1 (en) 2011-09-26 2012-05-08 Google Inc. Permissions of objects in hosted storage
US20140143543A1 (en) 2012-11-20 2014-05-22 Google Inc. Delegate authorization in cloud-based storage system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11876802B2 (en) 2019-11-14 2024-01-16 Snowflake Inc. Loading and unloading data at an external storage location

Also Published As

Publication number Publication date
US11271936B2 (en) 2022-03-08
DE202020005693U1 (en) 2022-02-01
US11165775B2 (en) 2021-11-02
US10999279B1 (en) 2021-05-04
US11876802B2 (en) 2024-01-16
US10715524B1 (en) 2020-07-14
US20220021673A1 (en) 2022-01-20
US20210152553A1 (en) 2021-05-20
US20210211425A1 (en) 2021-07-08
CN113228593A (en) 2021-08-06
WO2021096572A1 (en) 2021-05-20
KR20210134937A (en) 2021-11-11
US20230070935A1 (en) 2023-03-09
EP3942773A1 (en) 2022-01-26
US11522860B2 (en) 2022-12-06
CN116303718A (en) 2023-06-23
CN113228593B (en) 2023-04-04
US20220150252A1 (en) 2022-05-12
EP3942773A4 (en) 2022-12-28

Similar Documents

Publication Publication Date Title
KR102508177B1 (en) Credentialless external stage for database integration
KR102444106B1 (en) Calling external functions from the data warehouse
US10997286B1 (en) Secure code execution in a database system
US11816239B2 (en) Privilege based access checks for query results
US20230169202A1 (en) Cloud data sharing for applications
US20230141984A1 (en) Remote execution using a global identity
US20230353568A1 (en) Facilitating access to remotely stored credentials for accessing external resources
US11948025B2 (en) Stored procedures executing within a sandbox process
US11909743B1 (en) Organization-level account on data platform

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant