KR102508177B1 - Credentialless external stage for database integration - Google Patents
Credentialless external stage for database integration Download PDFInfo
- 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
Links
- 230000010354 integration Effects 0.000 title claims abstract description 151
- 238000003860 storage Methods 0.000 claims abstract description 489
- 230000004044 response Effects 0.000 claims abstract description 13
- 238000000034 method Methods 0.000 claims description 60
- 230000015654 memory Effects 0.000 claims description 19
- 238000012795 verification Methods 0.000 claims 2
- 238000013500 data storage Methods 0.000 description 38
- 238000007726 management method Methods 0.000 description 33
- 238000004891 communication Methods 0.000 description 27
- 230000008569 process Effects 0.000 description 23
- 238000012545 processing Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 11
- 230000005540 biological transmission Effects 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 6
- 230000003993 interaction Effects 0.000 description 4
- 230000001413 cellular effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 230000005291 magnetic effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000007596 consolidation process Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000003116 impacting effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
- H04L63/068—Network 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/083—Network architectures or network communication protocols for network security for authentication of entities using passwords
- H04L63/0846—Network architectures or network communication protocols for network security for authentication of entities using passwords using time-dependent-passwords, e.g. periodically changing passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0884—Network 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/102—Entity profiles
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/105—Multiple levels of security
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/107—Network 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/126—Applying verification of the received information the source of the received data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing 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/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2463/00—Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
- H04L2463/081—Additional 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/30—Profiles
- H04L67/306—User profiles
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing 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.
Description
우선권 출원에 대한 상호 참조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
도시된 바와 같이, 컴퓨팅 환경(100)은 네트워크 기반 데이터 웨어하우스 시스템(102) 및 클라우드 스토리지 제공자 시스템(104)(예를 들어, AWS®, Microsoft Azure Blob Storage®, 또는 Google Cloud Storage)을 포함한다. 네트워크 기반 데이터 웨어하우스 시스템(102)은 클라우드 스토리지 제공자 시스템(104) 내의 하나 이상의 저장 위치를 포함하는 하나 이상의 이종 소스로부터 통합된 데이터의 보고 및 분석에 사용되는 네트워크 기반 시스템이다. 클라우드 스토리지 제공자 시스템(104)은 복수의 컴퓨팅 기계를 포함하며 네트워크 기반 데이터 웨어하우스 시스템(102)에 데이터 저장 및 컴퓨팅 능력과 같은 주문형 컴퓨터 시스템 자원을 제공한다.As shown,
네트워크 기반 데이터 웨어하우스 시스템(102)은 접근 관리 시스템(110), 컴퓨팅 서비스 관리자(112), 실행 플랫폼(114) 및 데이터베이스(116)를 포함한다. 네트워크 기반 데이터 웨어하우스 시스템(102)은 다수의 클라이언트 계정에 데이터 보고 및 분석 서비스를 호스팅하고 제공한다. 접근 관리 시스템(110)은 클라이언트 계정의 관리 사용자가 네트워크 기반 데이터 웨어하우스 시스템(102)에 의해 제공되는 자원 및 서비스에 대한 접근을 관리할 수 있게 한다. 관리 사용자는 신원(예를 들어, 사용자, 역할 및 그룹)를 생성 및 관리하고 자원 및 서비스에 대한 신원 접근을 허용하거나 거부한다.The network-based
컴퓨팅 서비스 관리자(112)는 네트워크 기반 데이터 웨어하우스 시스템(102)의 동작을 조정하고 관리한다. 컴퓨팅 서비스 관리자(112)는 질의(query) 최적화 및 컴파일을 수행할 뿐만 아니라 컴퓨팅 자원을 제공하는 컴퓨팅 서비스의 클러스터(또한, "가상 웨어하우스"로 지칭됨)를 관리한다. 컴퓨팅 서비스 관리자(112)는 데이터 저장 및 검색 요청을 제공하는 최종 사용자, 본원에 설명된 시스템 및 방법을 관리하는 시스템 관리자 및 컴퓨팅 서비스 관리자(112)와 상호작용하는 다른 구성요소/디바이스와 같은 임의의 수의 클라이언트 계정을 지원할 수 있다.
컴퓨팅 서비스 관리자(112)는 또한 데이터베이스(116)에 연결되며, 이는 컴퓨팅 환경(100)에 저장된 데이터와 연관된다. 데이터베이스(116)는 네트워크 기반 데이터 웨어하우스 시스템(102) 및 그 사용자와 연관된 다양한 기능 및 양상에 관한 데이터를 저장한다. 예를 들어, 데이터베이스(116)는 하나 이상의 자격증명이 없는 외부 스테이지 객체(108)를 저장한다. 일반적으로, 외부 스테이지 객체(108)는 데이터 파일이 저장되는 저장 위치(예를 들어, URL)를 지정하여 파일의 데이터가 데이터 웨어하우스(102)에 의해 내부적으로 저장된 테이블에 로드되거나 테이블의 데이터가 데이터 웨어하우스(102)에 의해 내부적으로 저장된 데이터 파일로 언로드될 수 있도록 한다. 하나 이상의 자격증명이 없는 외부 스테이지 객체(108)는 네트워크 기반 데이터 웨어하우스 시스템(102)이 저장 위치와 연관된 보안 자격증명을 저장, 사용 또는 다른 방식으로 접근하지 않고 클라우드 스토리지 제공자 시스템(104) 내의 저장 위치에 접근할 수 있게 한다.
일부 실시예에서, 데이터베이스(116)는 로컬 캐시로부터 이용 가능한 데이터뿐만 아니라 원격 데이터 저장 시스템에 저장된 데이터의 요약을 포함한다. 추가적으로, 데이터베이스(116)는 원격 데이터 저장 시스템(예를 들어, 클라우드 스토리지 제공자 시스템(104)) 및 로컬 캐시에서 데이터가 조직화되는 방법에 관한 정보를 포함할 수 있다. 데이터베이스(116)는 시스템 및 서비스가 저장 디바이스로부터 실제 데이터를 로드하거나 접근하지 않고 데이터의 조각이 접근되어야 하는지 여부를 결정할 수 있게 한다.In some embodiments,
컴퓨팅 서비스 관리자(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)), 객체 저장 시스템 등을 포함할 수 있다.
실행 플랫폼(114)은 복수의 컴퓨팅 노드를 포함한다. 컴퓨팅 노드 상의 프로세스 세트는 컴퓨팅 서비스 관리자(112)에 의해 컴파일된 질의 계획을 실행한다. 프로세스 세트는: 질의 계획을 실행하는 제1 프로세스; 최소 최근 사용(least recently used; LRU) 정책을 사용하여 마이크로 파티션 파일을 모니터링 및 삭제하고 메모리 부족(out of memory; OOM) 오류 완화 프로세스를 구현하는 제2 프로세스; 프로세스 로그 및 상태로부터 건강 정보를 추출하여 컴퓨팅 서비스 관리자(112)로 다시 전송하는 제3 프로세스; 시스템 부팅 후에 컴퓨팅 서비스 관리자(112)와 통신을 설정하기 위한 제4 프로세스; 및 컴퓨팅 서비스 관리자(112)에 의해 제공되는 주어진 작업에 대한 컴퓨팅 클러스터와의 모든 통신을 처리하고 컴퓨팅 서비스 관리자(112) 및 실행 플랫폼(114)의 다른 컴퓨팅 노드에 정보를 다시 전달하는 제5 프로세스를 포함한다.
저장 플랫폼(122)에 추가하여, 클라우드 스토리지 제공자 시스템(104)은 또한 인증 및 신원 관리 시스템(118)을 포함한다. 인증 및 신원 관리 시스템(118)은 사용자가 신원(예를 들어, 사용자, 역할 및 그룹)을 생성 및 관리하고 클라우드 서비스 및 자원에 대한 신원 접근을 허용하거나 거부할 수 있는 허가를 사용하게 한다. 네트워크 기반 데이터 웨어하우스 시스템(102)의 접근 관리 시스템(110)과 클라우드 스토리지 제공자 시스템(104)의 인증 및 신원 관리 시스템(118)은 통신하고 정보를 공유하여 네트워크 기반 데이터 웨어하우스 시스템(102) 및 클라우드 스토리지 제공자 시스템(104) 양쪽의 사용자가 공유하는 자원 및 서비스에 대한 접근 및 관리를 가능하게 할 수 있다.In addition to the
일부 실시예에서, 컴퓨팅 환경(100)의 요소들 간의 통신 링크는 하나 이상의 데이터 통신 네트워크를 통해 구현된다. 이러한 데이터 통신 네트워크는 임의의 통신 프로토콜 및 임의 유형의 통신 매체를 사용할 수 있다. 일부 실시예에서, 데이터 통신 네트워크는 서로 연결된 둘 이상의 데이터 통신 네트워크(또는 서브네트워크)의 조합이다. 대안적인 실시예에서, 이들 통신 링크는 임의 유형의 통신 매체 및 임의의 통신 프로토콜을 사용하여 구현된다. In some embodiments, communication links between elements of
도 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
컴퓨팅 서비스 관리자(112), 데이터베이스(116), 실행 플랫폼(114), 저장 플랫폼(122) 및 인증 및 신원 관리 시스템(118)은 도 1에서 개별 구성 요소로 도시되어 있다. 그러나, 컴퓨팅 서비스 관리자(112), 데이터베이스(116), 실행 플랫폼(114), 저장 플랫폼(122) 및 인증 및 신원 관리 시스템(118) 각각은 분산 시스템(예를 들어, 다수의 지리적 위치에서 다수의 시스템/플랫폼에 걸쳐 분산됨)으로 구현될 수 있다. 또한, 컴퓨팅 서비스 관리자(112), 데이터베이스(116), 실행 플랫폼(114), 저장 플랫폼(122) 인증 및 신원 관리 시스템(118) 각각은 수신된 요청에 대한 변경 및 네트워크 기반 데이터 웨어하우스 시스템(102)의 변화하는 요구에 따라 (서로 독립적으로) 확장 또는 축소될 수 있다. 따라서, 설명된 실시예에서, 네트워크 기반 데이터 웨어하우스 시스템(102)은 동적이며 현재 데이터 처리 요구를 충족시키기 위해 정기적인 변경을 지원한다.
통상적인 동작 동안, 네트워크 기반 데이터 웨어하우스 시스템(102)은 컴퓨팅 서비스 관리자(112)에 의해 결정된 다수의 작업을 처리한다. 이러한 작업은 작업을 실행할 시기 및 방법을 결정하기 위해 컴퓨팅 서비스 관리자(112)에 의해 스케줄링되고 관리된다. 예를 들어, 컴퓨팅 서비스 관리자(112)는 작업을 다수의 개별 태스크로 분할할 수 있고, 다수의 개별 태스크 각각을 실행하기 위해 필요한 데이터를 결정할 수 있다. 컴퓨팅 서비스 관리자(112)는 태스크를 처리하기 위해 실행 플랫폼(114)의 하나 이상의 노드에 복수의 개별 태스크 각각을 할당할 수 있다. 컴퓨팅 서비스 관리자(112)는 작업을 처리하는 데 필요한 데이터를 결정할 수 있고 추가로 실행 플랫폼(114) 내의 어떤 노드가 작업을 처리하는 데 가장 적합한지를 결정할 수 있다. 일부 노드는 태스크를 처리하는 데 필요한 데이터를 이미 캐싱했을 수 있으므로, 태스크를 처리하기에 좋은 후보이다. 데이터베이스(116)에 저장된 메타데이터는 태스크를 처리하는 데 필요한 데이터의 적어도 일부를 이미 캐싱한 실행 플랫폼(114) 내의 노드를 결정하는 데 있어 컴퓨팅 서비스 관리자(112)를 보조한다. 실행 플랫폼(114)의 하나 이상의 노드는 노드에 의해 캐싱된 데이터 및 필요한 경우 클라우드 스토리지 제공자 시스템(104)에서 검색된 데이터를 사용하여 태스크를 처리한다. 검색 속도가 일반적으로 클라우드 스토리지 제공자 시스템(104)에서 데이터를 검색하는 것보다 훨씬 빠르기 때문에 실행 플랫폼(114) 내의 캐시에서 가능한 한 많은 데이터를 검색하는 것이 바람직하다. During normal operation, network-based
도 1에 도시된 바와 같이, 컴퓨팅 환경(100)은 실행 플랫폼(114)을 저장 플랫폼(122)으로부터 분리한다. 이러한 배열에서, 실행 플랫폼(114)의 처리 자원 및 캐시 자원은 클라우드 스토리지의 데이터 저장 디바이스(124-1 내지 124-N)와 독립적으로 작동한다. 따라서, 컴퓨팅 자원 및 캐시 자원은 특정 데이터 저장 디바이스(124-1 내지 124-N)에 제한되지 않는다. 대신, 모든 컴퓨팅 자원 및 모든 캐시 자원은 클라우드 스토리지 제공자 시스템(104)의 임의의 데이터 스토리지 자원으로부터 데이터를 검색하고 여기에 데이터를 저장할 수 있다.As shown in FIG. 1 ,
도 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
외부 스테이지 객체(200)는 저장 플랫폼(122) 내의 저장 위치에서 네트워크 기반 데이터 웨어하우스 시스템(102)으로 데이터를 로드하거나 언로드하는 데 사용되는 구성요소이다. 이 특정 예에서, 외부 스테이지 객체(200)는 데이터가 로드 또는 언로드될 수 있는 위치로서 저장 플랫폼(122) 내의 저장 자원(208)에 대응하는 저장 위치를 지정한다. 저장 자원(208)은 저장 플랫폼(122)의 저장 디바이스(124-1 내지 124-N) 중 하나 이상에 상주한다. 외부 스테이지 객체(200)는 스토리지 통합 객체(202)에 대한 참조(예를 들어, 포인터)를 더 포함한다.
스토리지 통합 객체(202)는 컴퓨팅 서비스 관리자(112)에 의해 클라이언트 계정(204) 내에 생성되고 데이터베이스(116) 내에 저장된다. 컴퓨팅 서비스 관리자(112)는 네트워크 기반 데이터 웨어하우스 시스템(102)와 통신하여 클라이언트 계정(204)의 사용자(205)의 컴퓨팅 디바이스(206)로부터 수신된 입력에 기초하여 외부 스테이지 객체(200)를 생성한다. 예를 들어, 사용자(205)는 명령 줄 또는 네트워크 기반 데이터 웨어하우스 시스템(102)에 의해 컴퓨팅 디바이스(206)로 제공되는 다른 사용자 인터페이스를 활용하여 스토리지 통합 객체(202)를 생성하기 위한 명령을 제공할 수 있다. The
외부 스테이지 객체(200)를 생성하기 위한 명령을 제공하는 사용자는 스토리지 통합 객체(202)를 생성하기 위한 명령어를 제공하는 사용자와 다른 사용자일 수 있음을 이해해야 한다. 예를 들어, 관리자 권한을 갖는 제1 사용자-관리 사용자-는 스토리지 통합 객체(202)를 생성하기 위한 명령을 제공할 수 있고, 명령의 일부로서, 외부 스테이지 객체를 생성하기 위해 스토리지 통합 객체(202)를 사용하는 허가를 제2 사용자에게 부여할 수 있다. 이 예에서, 제2 사용자는 외부 스테이지 객체(200)를 생성하는 명령을 제공할 수 있다. It should be understood that the user providing the command for creating the
스토리지 통합 객체(202)는 네트워크 기반 데이터 웨어하우스 시스템(102)과 저장 플랫폼(122)의 외부 관리 저장 위치 사이의 스토리지 통합을 정의한다. 더 구체적으로, 스토리지 통합 객체(202)는 네트워크 기반 데이터 웨어하우스 시스템(102)과 고객이 관리하는 저장 자원(208)(예를 들어, 폴더, 데이터 버킷, 또는 다른 저장 자원) 사이의 스토리지 통합 속성을 기술한다. 스토리지 통합 객체(202)는 저장 자원(208)에 대응하는 저장 위치의 식별자(예를 들어, URL) 및 클라우드 스토리지 제공자 시스템(104)의 식별자를 포함한다. 일부 실시예에서, 스토리지 통합 객체(202)는 데이터에 대한 접근이 거부되는 하나 이상의 저장 위치를 추가로 지정할 수 있다. 예를 들어, 외부 스테이지 객체(200)는 파일 경로를 사용하여 접근이 허용될 기본 저장 위치를 식별할 수 있고 스토리지 통합 객체(202)는 파일 경로의 하위 경로를 사용하여 접근이 허용되거나 거부될 기본 저장 위치의 일부를 추가로 식별할 수 있다.The
일단 생성되면, 컴퓨팅 서비스 관리자(112)는 스토리지 통합 객체(202)를 네트워크 기반 데이터 웨어하우스 시스템(102) 및 클라이언트 계정(204)과 연관된 인증 및 신원 관리 시스템(118)에 의해 유지되는 서비스 계정(212) 내의 클라우드 신원 객체(210)와 연관시킨다. 클라우드 신원 객체(210)는 클라이언트 계정(204)과 연관된 클라우드 스토리지 제공자 시스템(104) 내의 신원이다. 클라우드 신원 객체(210)는 클라이언트 계정(204)이 생성될 때 생성될 수 있다. 고유 식별자(예를 들어, 아마존 자원 이름(Amazon® Resource Name; ARN))가 생성 시에 클라우드 신원 객체(210)와 연관된다. 스토리지 제공자 관리자는 인증 및 신원 관리 시스템(118)을 활용하여 클라우드 신원 객체(210)에 클라우드 신원 객체(210)의 식별자를 사용하여 스토리지에 접근하는 허가를 부여할 수 있다. Once created, the
컴퓨팅 서비스 관리자(112)는 클라우드 스토리지 제공자 신원 식별자를 데이터베이스(116)에 암호화된 형식으로 저장할 수 있다. 컴퓨팅 서비스 관리자(112)는 각 클라우드 스토리지 제공자 신원과 연관된 보안 자격증명을 데이터베이스(116)에 암호화된 형식으로 더 저장할 수 있다.
클라우드 스토리지 제공자 시스템(104)은 클라우드 스토리지 제공자 시스템(104)의 클라이언트 계정(216) 내에 프록시 신원 객체(214)를 생성한다. 클라이언트 계정(216)은 클라우드 스토리지 제공자 시스템(104) 내의 클라이언트 계정(204)에 대응하는 클라이언트의 계정이다. 클라우드 스토리지 제공자 시스템(104)은 클라이언트 계정(216)의 관리 사용자에 의해 지정된 입력에 기초하여 프록시 신원 객체(214)를 생성한다. 일부 예에서, 클라이언트 계정(216)의 관리 사용자는 사용자(205)이다.The cloud
프록시 신원 객체(214)는 클라우드 스토리지 제공자 시스템(104) 내에서 서비스 요청을 하기 위한 연관된 신뢰 정책을 갖는 프록시 신원을 정의한다. 더 구체적으로, 프록시 신원 객체(214)는 클라우드 신원 객체(210)가 프록시 신원을 가정하여 저장 자원(208)로부터 데이터를 읽고 데이터를 쓰도록 허용하는 허가 세트를 포함한다. 프록시 신원 객체(214)는 사용자와 같은 한 사람과 고유하게 연관되기보다는 여러 사용자에 의해 가정될 수 있는 프록시 신원을 정의한다. A
일부 경우에서, 프록시 신원 객체(214)에 의해 정의된 프록시 신원은 장기 보안 자격증명을 갖지 않으며, 이러한 경우 프록시 신원을 가정하는 다른 신원은 인증 및 신원 관리 시스템(118)에 의해 제공되는 임시 보안 자격증명을 사용하여 프록시 신원에 접근한다. 이러한 실시예에 따르면, 임시 보안 자격증명은 만료 시간 후에 만료될 수 있다.In some cases, proxy identities defined by
클라우드 스토리지 제공자 시스템(104)은 고유 식별자(예를 들어, 아마존 자원 이름(ARN))를 프록시 신원 객체(214)에 할당한다. 프록시 신원 객체(214)의 고유 식별자는 스토리지에 대한 접근을 허가하기 위해 스토리지 관리자에 의해 사용된다. The cloud
저장 자원(208)에 대응하는 저장 위치로부터 내부적으로 관리되는 저장 자원(예를 들어, 테이블)로 데이터를 로드하거나 내부적으로 관리되는 저장 자원으로부터 저장 자원(208)에 대응하는 저장 위치로 데이터를 언로드하라는 명령을 수신하는 것에 응답하여, 네트워크 기반 데이터 웨어하우스 시스템(102)은 외부 스테이지 객체(200)를 사용하여 데이터를 로드 또는 언로드한다. 특히, 컴퓨팅 서비스 관리자(112)는 외부 스테이지 객체(200)를 사용하여 스토리지 통합 객체(202)를 식별 및 접근하고 스토리지 통합 객체(202)를 사용하여 클라우드 신원 객체(210)와 연관된 보안 자격증명에 접근한다. 컴퓨팅 서비스 관리자(112)는 클라우드 신원 객체(210)와 연관된 보안 자격증명을 사용하여 인증 및 신원 관리 시스템(118)으로부터 보안 자격증명에 접근하여 클라우드 신원 객체(210)가 프록시 신원 객체(214)에 의해 정의된 프록시 신원을 가정하여 내부 저장 자원과 저장 자원(208) 사이에서 데이터를 로드 또는 언로드하도록 허용한다.Loading data from a storage location corresponding to
도 3은 본 개시의 일부 실시예에 따라, 클라우드 스토리지 제공자 시스템(104) 내의 저장 자원(208)에서 네트워크 기반 데이터 웨어하우스 시스템(102)으로 데이터를 로드 또는 언로드하기 위해 외부 스테이지 객체(200)를 사용하는 방법(300)에서 네트워크 기반 데이터 웨어하우스 시스템(102)과 클라우드 스토리지 제공자 시스템(104) 사이의 상호작용을 예시하는 상호작용 도면이다. 설명의 용이함을 위해, 방법(300)은 도 1 및 도 2에 도시되고 위에서 설명한 구성요소를 참조하여 아래에서 설명된다. 3 illustrates an
동작 302에서, 클라우드 스토리지 제공자 시스템(104)은 클라이언트 계정(216) 내에 프록시 신원 객체(214)를 생성한다. 클라우드 스토리지 제공자 시스템(104)은 클라이언트 계정(216)의 관리 사용자에 의해 지정된 입력에 기초하여 프록시 신원 객체(214)를 생성한다. 위에서 언급한 바와 같이, 프록시 신원 객체(214)는 클라우드 신원 객체(210)가 프록시 신원을 가정하여 저장 자원(208)으로부터 데이터를 읽고 데이터를 쓸 수 있게 하는 허가 세트를 포함한다. At
동작 304에서, 네트워크 기반 데이터 웨어하우스 시스템(102)의 컴퓨팅 서비스 관리자(112)는 데이터베이스(116)에 스토리지 통합 객체(202)를 생성한다. 컴퓨팅 서비스 관리자(112)는 클라이언트 계정(204)의 제1 사용자(예를 들어, 사용자(205))에 의해 제공되는 명령에 기초하여 스토리지 통합 객체(202)를 생성한다. 제1 사용자는 클라이언트 계정(204)의 관리 사용자일 수 있다. 위에서 언급한 바와 같이, 스토리지 통합 객체(202)는: 통합 이름; 저장 자원(208)에 대응하는 URL과 같은 외부에서 관리되는 저장 위치의 식별자; 클라우드 스토리지 제공자 시스템(104)의 식별자; 및 프록시 신원 객체(214)의 식별자를 포함한다. 일부 실시예에서, 스토리지 통합 객체(200)는 데이터에 대한 접근이 거부되는 하나 이상의 저장 위치를 더 지정할 수 있다. 데이터에 대한 접근이 거부되는 하나 이상의 저장 위치는 네트워크 기반 데이터 웨어하우스 시스템(102)에 대한 접근이 제공되는 저장 위치의 부분에 대응할 수 있다. 예를 들어, 외부 스테이지 객체(200)는 파일 경로를 이용하여 접근이 허용되는 기본 저장 위치를 식별할 수 있고, 스토리지 통합 객체(200)는 파일 경로의 하위 경로를 이용하여 기본 저장 위치에서 접근이 거부될 부분을 식별할 수 있다.At
동작 306에서, 컴퓨팅 서비스 관리자(112)는 스토리지 통합 객체(202)를 클라우드 신원 객체(210)와 연관시킨다. 컴퓨팅 서비스 관리자(112)는 클라이언트 계정(204)과 클라우드 신원 객체(210) 사이의 연관에 기초하여 스토리지 통합 객체(202)를 클라우드 신원 객체(210)와 연관시킨다. At
동작 308에서, 접근 관리 시스템(110)은 스토리지 통합 객체(202)에 대한 사용 허가를 설정한다. 통합 객체에 대한 사용 허가의 설정은 제2 사용자에게 스토리지 통합 객체를 사용하기 위한 허가를 부여하는 것을 포함할 수 있다. 일부 실시예에서, 접근 관리 시스템(110)은 다수의 사용자에 대응하는 신원에 사용 허가를 부여함으로써 신원과 연관된 각 사용자에게 사용 허가를 제공할 수 있다. At
동작 310에서, 컴퓨팅 서비스 관리자(112)는 외부 스테이지 객체(200)를 생성한다. 컴퓨팅 서비스 관리자(112)는 저장 위치에서 데이터를 로드 또는 언로드하기 위한 외부 스테이지 생성 명령에 기초하여 외부 스테이지 객체(200)를 생성한다. 저장 위치는 스토리지 통합 객체(202)에 지정된 저장 위치와 동일할 수 있거나 스토리지 통합 객체(202)에 지정된 저장 위치의 일부를 포함할 수 있다. 외부 스테이지 객체(200)는 저장 위치에 대응하는 식별자(예를 들어, 저장 위치에 대응하는 URL) 및 스토리지 통합 객체(202)에 대한 참조(예를 들어, 포인터)를 포함한다.At
동작 312에서, 접근 관리 시스템(110)은 외부 스테이지 객체(200)에 대한 사용 허가를 설정한다. 접근 관리 시스템(110)은 제2 사용자로부터 수신된 입력에 기초하여 사용 허가를 설정할 수 있다. 통합 객체에 대한 사용 허가 설정은 제3 신원에 대한 사용 허가 부여를 포함할 수 있다. 제3 신원은 단일 사용자에 대응하거나 여러 사용자와 연관될 수 있다. 제3 신원에 사용 허가가 부여되면, 제3 신원과 연관된 한 명 이상의 사용자가 외부 스테이지 개체를 사용하여 데이터를 로드하거나 언로드하도록 허용된다.At
동작 314에서, 클라우드 스토리지 제공자 관리자는 프록시 신원 객체에 대하여 클라우드 스토리지 제공자 시스템(104)에 대한 사용 허가를 설정한다. 프록시 신원 객체에 대하여 사용 허가를 설정할 때, 클라우드 스토리지 제공자 시스템(104)은 클라우드 신원 객체에 프록시 신원 객체를 사용하여 저장 위치에서 데이터를 로드 및 언로드하는 허가를 부여한다.At
동작 316에서, 컴퓨팅 서비스 관리자(112)는 저장 위치로부터 내부적으로 관리되는 저장 자원(예를 들어, 테이블)으로 데이터를 로드하거나 내부적으로 관리되는 저장 자원으로부터 저장 위치로 데이터를 언로드하라는 명령을 수신한다. 명령은 외부 스테이지 객체(200)의 식별자(예를 들어, 통합 이름)를 포함한다. 명령은 제3 신원과 연관된 제3 사용자의 컴퓨팅 디바이스로부터 수신될 수 있다. 명령에 응답하여, 컴퓨팅 서비스 관리자(112)는, 동작 318에서, 명령을 실행하기 위해 외부 스테이지 객체(200)를 사용한다. 명령을 실행함에 있어서, 네트워크 기반 데이터 웨어하우스 시스템(102)은 프록시 신원 객체(214)와 연관된 보안 자격증명을 사용하여 프록시 신원 객체(214)를 인증하여 프록시 신원 객체(214)에 의해 정의되는 프록시 신원을 가정한다. 네트워크 기반 데이터 웨어하우스 시스템(102)은, 동작 322에서, 프록시 신원 객체(214)를 가정하여 저장 위치에서 내부적으로 관리되는 저장 자원(예를 들어, 테이블)으로 데이터를 로드하거나 내부적으로 관리되는 저장 자원에서 저장 위치로 데이터를 언로드한다. At
도 4 및 도 5는 본 개시의 일부 실시예에 따른, 외부 스테이지 객체(200)를 사용하여 저장 플랫폼(122)으로부터 데이터를 로드 또는 언로드하기 위한 방법(400)을 수행할 때 네트워크 기반 데이터 웨어하우스 시스템(102)의 동작을 예시하는 흐름도이다. 방법(400)은 방법(400)의 동작이 네트워크 기반 데이터 웨어하우스 시스템(102)의 구성요소에 의해 수행될 수 있도록 하나 이상의 하드웨어 구성요소(예를 들어, 하나 이상의 프로세서)에 의한 실행을 위한 컴퓨터 판독가능 명령으로 구현될 수 있다. 따라서, 방법(400)은 이를 참조하여 예로서 아래에 설명된다. 그러나, 방법(400)은 다양한 다른 하드웨어 구성에 배치될 수 있고 네트워크 기반 데이터 웨어하우스 시스템(102) 내의 배치로 제한되도록 의도되지 않는다는 것을 이해해야 한다.4 and 5 illustrate a network-based data warehouse when performing a
동작 405에서, 컴퓨팅 서비스 관리자(112)는 스토리지 통합 객체를 생성하기 위한 명령("스토리지 통합 생성 명령"으로도 지칭됨)을 수신한다. 스토리지 통합 생성 명령은 데이터 웨어하우스(102)와 통신하는 컴퓨팅 디바이스로부터 수신되고 제1 사용자에 의해 명령 줄 또는 네트워크 기반 데이터 웨어하우스 시스템(102)에 의해 컴퓨팅 디바이스에 제공되는 UI를 통해 지정된다. 제1 사용자는 네트워크 기반 데이터 웨어하우스 시스템(102)의 클라이언트 계정에 속하는 관리 사용자이다. 일반적으로, 명령은 스토리지 통합의 일부로서 허용되거나 차단되는 저장 위치를 지정한다. 예를 들어, 명령은 네트워크 기반 데이터 웨어하우스가 데이터를 로드 및 언로드하기 위하여 접근이 허용되는 클라우드 스토리지 제공자 시스템(104)의 스토리지 플랫폼(122) 내의 제1 저장 위치에 대응하는 식별자(예를 들어, URL)를 포함할 수 있다. 제1 저장 위치는 데이터 폴더 또는 데이터 버킷과 같은 데이터 저장 자원에 대응한다. 스토리지 통합 생성 명령은 클라우드 스토리지 제공자 시스템(104), 통합 이름 및 클라우드 스토리지 제공자 시스템(104)에 의해 유지되는 프록시 신원 객체의 식별자를 추가로 지정한다. 프록시 신원 객체는 제1 저장 위치에 접근하는 허가와 연관된 프록시 신원을 정의한다. 프록시 신원 객체는 클라우드 신원이 프록시 신원을 가정하여 제1 저장 위치에서 데이터를 로드 및 언로드하도록 허용하는 허가를 더 포함한다. At
일부 경우에서, 제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
동작 410에서, 컴퓨팅 서비스 관리자(112)는 스토리지 통합 생성 명령에 기초하여 데이터베이스(116)에 스토리지 통합 객체를 생성한다. 스토리지 통합 객체는 제1 저장 위치(예를 들어, URL), 클라우드 스토리지 제공자 시스템(104) 및 프록시 신원 객체를 지정한다. 더 구체적으로, 스토리지 통합 객체는 제1 저장 위치에 대응하는 제1 식별자(예를 들어, URL), 클라우드 스토리지 제공자 시스템(104)의 식별자 및 프록시 신원 객체의 식별자(예를 들어, ARN)를 포함한다. 일단 생성되면, 네트워크 기반 데이터 웨어하우스 시스템(102)은, 동작 415에서, 통합 객체를 프록시 신원 객체와 연관된 클라우드 신원 객체와 연관시킨다. 클라우드 신원 객체는 클라우드 스토리지 제공자 시스템(104)에 의해 제공되는 클라우드 서비스에 접근하는 데 사용되는 클라우드 신원을 정의한다. 클라우드 신원 객체는 제1 사용자가 속하는 클라이언트 계정과 클라우드 신원 객체의 연관에 기초하여 스토리지 통합 객체와 연관된다.At
동작 420에서, 접근 관리 시스템(110)은 스토리지 통합 객체에 대한 사용 허가를 설정한다. 접근 관리 시스템(110)은 제1 사용자로부터 수신된 입력에 기초하여 사용 허가를 설정할 수 있다. 통합 객체에 대한 사용 허가의 설정은 제2 신원에게 하나 이상의 외부 스테이지 객체를 생성하기 위해 스토리지 통합 객체를 사용하기 위한 허가를 부여하는 것을 포함할 수 있다. 일부 실시예에서, 제2 신원은 적어도 제2 사용자에 대응한다. 일부 실시예에서, 접근 관리 시스템(110)은 다수의 사용자에 대응하는 신원에 사용 허가를 부여함으로써 신원과 연관된 각 사용자에게 사용 허가를 제공할 수 있다.In
동작 425에서, 컴퓨팅 서비스 관리자(112)는 외부 스테이지 객체를 생성하기 위한 명령("외부 스테이지 생성 명령"으로도 지칭됨)을 수신한다. 외부 스테이지 생성 명령은 데이터 웨어하우스(102)와 통신하는 컴퓨팅 디바이스로부터 수신되고 명령 줄 또는 네트워크 기반 데이터 웨어하우스 시스템(102)에 의해 컴퓨팅 디바이스에 제공되는 UI를 통해 제2 사용자에 의해 지정된다. 외부 스테이지 생성 명령은 제2 저장 위치의 식별자(예를 들어, URL) 및 스토리지 통합 객체의 식별자(예를 들어, 스토리지 통합 객체의 이름)를 포함한다. 일부 경우에서, 제2 저장 위치는 제1 저장 위치와 동일할 수 있는 한편, 다른 경우에서, 제2 저장 위치는 제1 저장 위치 내의 위치에 대응할 수 있다. 즉, 제2 저장 위치는 제1 저장 위치의 부분에 대응할 수 있다.At
동작 430에서, 컴퓨팅 서비스 관리자(112)는 제2 저장 위치에서 데이터를 로드 또는 언로드하기 위한 외부 스테이지 생성 명령에 기초하여 외부 스테이지 객체를 생성한다. 외부 스테이지 객체는 제2 저장 위치를 식별하고 스토리지 통합 객체와의 연관을 포함한다. 더 구체적으로, 외부 스테이지 객체는 제2 저장 위치의 식별자(예를 들어, 제2 저장 위치에 대응하는 URL) 및 스토리지 통합 객체에 대한 참조(예를 들어, 포인터)를 포함한다. At
동작 435에서, 접근 관리 시스템(110)은 외부 스테이지 객체에 대한 사용 허가를 설정한다. 접근 관리 시스템(110)은 제2 사용자에 의해 제공된 입력에 기초하여 사용 허가를 설정할 수 있다. 통합 객체에 대한 사용 허가의 설정은 적어도 제3 사용자와 연관된 제3 신원에 사용 허가를 부여하는 것을 포함할 수 있다. 제3 신원에 사용 권한이 부여되면, 적어도 제3 사용자가 외부 스테이지 개체를 사용할 수 있다. At
동작 440에서, 컴퓨팅 서비스 관리자(112)는 내부 데이터 자원(예를 들어, 테이블)으로부터 제3 저장 위치로 언로드하거나 제3 저장 위치로부터 내부 데이터 자원으로 데이터를 로드하라는 명령을 수신한다. 명령은 외부 스테이지 객체의 식별자(예를 들어, 외부 스테이지 객체에 지정된 이름)를 포함한다. 명령은 제3 사용자의 컴퓨팅 디바이스로부터 수신될 수 있다. 명령에 응답하여, 컴퓨팅 서비스 관리자(112)는, 동작 445에서, 외부 스테이지 객체(200)를 사용하여 외부 클라우드 스토리지 제공자의 저장 플랫폼(122)의 제3 저장 위치에서 데이터를 로드 또는 언로드한다. 제1 예에서, 컴퓨팅 서비스 관리자(112)는 저장 위치로부터 네트워크 기반 데이터 웨어하우스 시스템(102) 내부에 있는 저장 위치에 유지되는 테이블로 데이터를 복사한다. 제2 예에서, 컴퓨팅 서비스 관리자(112)는 내부 저장 위치에 유지되는 테이블로부터 명령에 지정된 저장 위치로 데이터를 복사한다. 제3 저장 위치는 제2 저장 위치에 대응한다. 예를 들어, 제3 저장 위치는 제2 저장 위치와 동일할 수 있거나 제2 저장 위치 내의 위치에 대응할 수 있다. At
도 5에 도시된 바와 같이, 방법(400)은, 일부 실시예에서, 동작 505, 510, 515, 520 및 525를 더 포함할 수 있다. 이러한 실시예에 따르면, 동작 505 및 510은 컴퓨팅 서비스 관리자(112)가 저장 위치에서 데이터를 로드 또는 언로드하는 명령을 수신하는 동작 440 이후에 수행된다. As shown in FIG. 5 ,
동작 505에서, 컴퓨팅 서비스 관리자(112)는 외부 스테이지 객체와의 연관에 기초하여 스토리지 통합 객체를 식별한다. 예를 들어, 위에서 언급한 바와 같이, 데이터를 로드하거나 언로드하는 명령에서 참조되는 외부 스테이지 객체는 통합 객체에 대한 참조(예를 들어, 포인터)를 포함한다. At
동작 510에서, 컴퓨팅 서비스 관리자(112)는 접근 관리 시스템(110)과 함께 작동하여 제3 사용자와 연관된 사용자 허가를 검증한다. 제3 사용자와 연관된 사용자 권한을 검증함에 있어서, 컴퓨팅 서비스 관리자(112)는 제3 사용자가 외부 스테이지 객체 및 스토리지 통합 객체를 사용할 허가를 갖는지 확인한다.At
이러한 실시예에 따르면, 동작 515, 520 및 525는 컴퓨팅 서비스 관리자(112)가 저장 위치에서 데이터를 로드 또는 언로드하는 연산 445의 일부로서(예를 들어, 서브루틴 또는 서브-동작으로서) 수행될 수 있다. According to such an embodiment,
동작 515에서, 컴퓨팅 서비스 관리자(112)는 제3 저장 위치가 스토리지 통합 객체에 의해 허용되는지 검증한다. 즉, 컴퓨팅 서비스 관리자(112)는 제3 저장 위치가 제1 저장 위치 내에 있는지 검증하기 위해 스토리지 통합 객체에서 식별된 제1 저장 위치에 대해 제3 저장 위치를 확인한다. 서비스 관리자(112)는 제3 저장 위치가 스토리지 통합 객체에 의해 허용되는지 여부를 결정하기 위해 스토리지 통합 객체에 의해 지정된 임의의 차단된 저장 위치에 대해 제3 저장 위치를 더 확인할 수 있다.At
동작 520에서, 컴퓨팅 서비스 관리자(112)는 프록시 신원 객체에 의해 정의된 프록시 신원을 가정하기 위해 클라우드 스토리지 제공자 시스템(104)과 인증하는 데 사용될 보안 자격증명에 접근한다. 일부 실시예에서, 보안 자격증명은 일시적이고 시간 제한(예를 들어, 1시간)에 도달한 후 만료될 수 있으며 특히 제1 저장 위치에서 데이터를 로드 또는 언로드하는 데 사용하기 위한 범위가 제한될 수 있다. At operation 520, the
일부 실시예에 따르면, 컴퓨팅 서비스 관리자(112)는 보안 자격증명에 대한 요청을 클라우드 스토리지 제공자 시스템(104)의 인증 및 신원 관리 시스템(118)에 전송함으로써 보안 자격증명을 획득할 수 있다. 요청은 클라우드 신원 객체에 대응하는 제1 식별자, 프록시 신원 객체에 대응하는 제2 식별자 및 클라우드 신원 객체와 연관된 보안 자격증명을 포함하거나 나타낼 수 있다. 클라우드 신원 객체와 연관된 보안 자격증명은 데이터베이스(116)에 암호화된 형식으로 저장될 수 있다. 클라우드 스토리지 제공자 시스템(104)의 인증 및 신원 관리 시스템(118)은 요청에 응답하여 보안 자격증명을 제공한다.According to some embodiments,
동작 525에서, 컴퓨팅 서비스 관리자(112)는 인증 및 신원 관리 시스템(118)으로부터 획득된 자격증명을 사용하여 클라우드 신원이 프록시 신원 객체에 의해 정의된 프록시 신원을 가정하도록 한다. 즉, 클라우드 신원은 프록시 신원을 통해 저장 위치와 (예를 들어, 데이터를 로드하거나 언로드함으로써) 상호작용하고 프록시 신원을 사용하여 컴퓨팅 서비스 관리자(112)와 데이터를 교환할 수 있다. At
도 6은 본 개시의 일부 실시예들에 따른, 컴퓨팅 서비스 관리자(112)의 구성요소를 도시하는 블록도이다. 도 6에 도시된 바와 같이, 요청 처리 서비스(602)는 수신된 데이터 저장 요청 및 데이터 검색 요청(예를 들어, 데이터베이스 데이터에 대해 수행될 작업)을 관리한다. 예를 들어, 요청 처리 서비스(602)는 수신된 질의(예를 들어, 데이터 저장 요청 또는 데이터 검색 요청)를 처리하는 데 필요한 데이터를 결정할 수 있다. 데이터는 실행 플랫폼(114) 내의 캐시 또는 클라우드 스토리지 제공자 시스템(104)의 데이터 저장 디바이스에 저장될 수 있다.6 is a block diagram illustrating components of
관리 콘솔 서비스(604)는 관리자 및 다른 시스템 관리자에 의한 다양한 시스템 및 프로세스에 대한 접근을 지원한다. 추가적으로, 관리 콘솔 서비스(604)는 시스템 상의 워크로드를 모니터링하고 작업을 실행하기 위한 요청을 수신할 수 있다.
컴퓨팅 서비스 관리자(112)는 또한 작업 컴파일러(606), 작업 최적화기(608) 및 작업 실행기(610)를 포함한다. 작업 컴파일러(606)는 작업을 다수의 개별 태스크로 파싱하고 다수의 개별 태스크 각각에 대한 실행 코드를 생성한다. 작업 최적화기(608)는 처리되어야 할 데이터에 기초하여 다수의 개별 태스크를 실행하기 위한 최상의 방법을 결정한다. 작업 최적화기(608)는 또한 작업 실행의 속도 및 효율성을 개선하기 위해 다양한 데이터 프루닝(pruning) 동작 및 기타 데이터 최적화 기술을 처리한다. 작업 실행기(610)는 대기열로부터 수신되거나 컴퓨팅 서비스 관리자(112)에 의해 결정된 작업에 대한 실행 코드를 실행한다.
작업 스케줄러 및 코디네이터(612)는 컴파일, 최적화 및 실행 플랫폼(114)으로의 발송을 위해 수신된 작업을 적절한 서비스 또는 시스템으로 보낸다. 예를 들어, 작업은 우선 순위가 지정되고 그 우선 순위가 지정된 순서로 처리될 수 있다. 일 실시예에서, 작업 스케줄러 및 코디네이터(612)는 데이터베이스의 다른 시스템에 의해 스케줄링될 수 있지만 실행 플랫폼(114)에서 동일한 처리 자원을 활용할 수 있는 사용자 질의와 같은 다른 "외부" 작업과 함께 컴퓨팅 서비스 관리자(112)에 의해 스케줄링되는 내부 작업에 대한 우선 순위를 결정한다. 일부 실시예에서, 작업 스케줄러 및 코디네이터(612)는 특정 태스크를 처리하기 위해 실행 플랫폼(114)에서 특정 노드를 식별하거나 할당한다. 가상 웨어하우스 관리자(614)는 실행 플랫폼(114)에서 구현된 다수의 가상 웨어하우스의 동작을 관리한다. 아래에서 논의되는 바와 같이, 각 가상 웨어하우스는 각각 캐시 및 프로세서를 포함하는 다수의 실행 노드를 포함한다. Job scheduler and
또한, 컴퓨팅 서비스 관리자(112)는 원격 데이터 저장 디바이스 및 로컬 캐시(예를 들어, 실행 플랫폼(114)의 캐시)에 저장된 데이터와 관련된 정보를 관리하는 구성 및 메타데이터 관리자(616)를 포함한다. 구성 및 메타데이터 관리자(616)는 메타데이터를 사용하여 특정 태스크 또는 작업을 처리하기 위해 데이터를 검색하기 위해 접근해야 하는 데이터 마이크로 파티션을 결정한다. 모니터 및 워크로드 분석기(618)는 컴퓨팅 서비스 관리자(112)에 의해 수행되는 프로세스를 감독하고 실행 플랫폼(114)의 가상 웨어하우스 및 실행 노드에 걸친 태스크(예를 들어, 워크로드)의 분배를 관리한다. 모니터 및 워크로드 분석기(618)는 또한 데이터 웨어하우스(102) 전반에 걸쳐 워크로드의 변화에 기초하여, 필요에 따라, 태스크를 재분배하며, 실행 플랫폼(114)에 의해 또한 처리될 수 있는 사용자(예를 들어, "외부") 질의 워크로드에 기초하여 태스크를 추가로 재분배할 수 있다. 구성 및 메타데이터 관리자(616) 및 모니터 및 워크로드 분석기(618)는 데이터 저장 디바이스(620)에 연결된다. 도 6의 데이터 저장 디바이스(620)는 데이터 웨어하우스(102) 내의 임의의 데이터 저장 디바이스를 나타낸다. 예를 들어, 데이터 저장 디바이스(620)는 실행 플랫폼(114)의 캐시, 클라우드 스토리지 제공자 시스템(104)의 저장 디바이스 또는 임의의 다른 저장 디바이스를 나타낼 수 있다.
도 7은 본 개시의 일부 실시예에 따른, 실행 플랫폼(114)의 구성요소를 도시하는 블록도이다. 도 7에 도시된 바와 같이, 실행 플랫폼(114)은 가상 웨어하우스 1, 가상 웨어하우스 2, 및 가상 웨어하우스 N을 포함하는 여러 가상 웨어하우스를 포함한다. 각 가상 웨어하우스는 각각 데이터 캐시와 프로세서를 포함하는 여러 실행 노드를 포함한다. 가상 웨어하우스는 여러 실행 노드를 사용하여 여러 작업을 병렬로 실행할 수 있다. 본원에서 논의되는 바와 같이, 실행 플랫폼(114)은 시스템 및 사용자의 현재 처리 요구에 기초하여 실시간으로 새로운 가상 웨어하우스를 추가하고 기존 가상 웨어하우스를 삭제할 수 있다. 이러한 유연성으로 인해 실행 플랫폼(114)은 더 이상 필요하지 않을 때 컴퓨팅 자원에 대한 비용을 계속 지불하지 않고도 필요할 때 대량의 컴퓨팅 자원을 신속하게 배치할 수 있다. 모든 가상 웨어하우스는 모든 데이터 저장 디바이스(예를 들어, 클라우드 스토리지 제공자 시스템(104) 내의 모든 저장 디바이스)의 데이터에 접근할 수 있다. 7 is a block diagram illustrating components of an
도 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
도 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
또한, 캐시 자원 및 컴퓨팅 자원은 상이한 실행 노드 사이에서 다를 수 있다. 예를 들어, 하나의 실행 노드는 상당한 컴퓨팅 자원과 최소한의 캐시 자원을 포함할 수 있어, 실행 노드가 상당한 컴퓨팅 자원이 필요한 작업에 유용하다. 다른 실행 노드는 상당한 캐시 자원과 최소한의 컴퓨팅 자원이 포함될 수 있으며, 이 실행 노드는 대용량 데이터 캐싱이 필요한 작업에 유용하다. 또 다른 실행 노드는 대용량 데이터의 빠른 스캔이 필요한 작업에 유용한 더 빠른 입출력 작업을 제공하는 캐시 자원이 포함될 수 있다. 일부 실시예에서, 특정 실행 노드와 연관된 캐시 자원 및 컴퓨팅 자원은 실행 노드에 의해 수행될 예상 작업에 기초하여 실행 노드가 생성될 때 결정된다.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
또한, 각각의 가상 웨어하우스는 다수의 실행 노드를 갖는 것으로 도 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
특정 실행 플랫폼(114)은 임의의 수의 가상 웨어하우스를 포함할 수 있다. 또한, 특정 실행 플랫폼 내의 가상 웨어하우스 수는 동적이므로, 추가 처리 및/또는 캐시 자원이 필요할 때 새로운 가상 웨어하우스가 생성된다. 마찬가지로, 가상 웨어하우스와 연관된 자원이 더 이상 필요하지 않은 경우 기존 가상 웨어하우스가 삭제될 수 있다. A
일부 실시예에서, 가상 웨어하우스는 클라우드 스토리지 제공자 시스템(104)의 동일한 데이터에 대해 동작할 수 있지만, 각 가상 웨어하우스는 독립적인 처리 및 캐시 자원을 갖는 자체 실행 노드를 갖는다. 이 구성을 사용하면 상이한 가상 웨어하우스에 대한 요청을 요청 간에 간섭 없이 독립적으로 처리할 수 있다. 가상 웨어하우스를 동적으로 추가 및 제거하는 기능과 결합된 이 독립적인 처리는 기존 사용자가 관찰하는 성능에 영향을 주지 않고 새로운 사용자를 위한 새로운 처리 용량 추가를 지원한다.In some embodiments, the virtual warehouses may operate on the same data in the cloud
도 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
대안적인 실시예에서, 기계(800)는 독립형 디바이스로서 동작하거나 다른 기계에 연결(예를 들어, 네트워크로 연결)될 수 있다. 네트워크 배치에서, 기계(800)는 서버-클라이언트 네트워크 환경에서 서버 기계 또는 클라이언트 기계의 자격으로, 또는 피어 투 피어(또는 분산) 네트워크 환경에서 피어 기계로서 작동할 수 있다. 기계(800)는 서버 컴퓨터, 클라이언트 컴퓨터, 개인용 컴퓨터(PC), 태블릿 컴퓨터, 랩톱 컴퓨터, 넷북, 스마트폰, 모바일 디바이스, 네트워크 라우터, 네트워크 스위치, 네트워크 브리지, 또는 기계(800)에 의해 취해질 동작을 지정하는 명령(816)을 순차적으로 또는 다른 방식으로 실행할 수 있는 임의의 기계를 포함할 수 있지만, 이에 제한되지 않는다. 또한, 단일 기계(800)만이 예시되어 있지만, "기계"라는 용어는 또한 본원에서 논의된 방법론 중 임의의 하나 이상을 수행하기 위해 명령(816)을 개별적으로 또는 공동으로 실행하는 기계(800)의 집합을 포함하는 것으로 간주된다.In alternative embodiments,
기계(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)는 단일 코어를 갖는 단일 프로세서, 다중 코어를 갖는 단일 프로세서(예를 들어, 다중 코어 프로세서), 단일 코어를 갖는 다중 프로세서, 다중 코어를 갖는 다중 프로세서 또는 이들의 조합을 포함할 수 있다.
메모리(830)는 주 메모리(832), 정적 메모리(834) 및 저장 유닛(836)을 포함할 수 있고, 모두 버스(802)를 통해 프로세서(810)에 접근 가능하다. 주 메모리(832), 정적 메모리(834) 및 저장 유닛(836)은 본원에 설명된 방법론 또는 기능 중 임의의 하나 이상을 구현하는 명령(816)을 저장한다. 명령(816)은 또한, 기계(800)에 의해 실행되는 동안, 완전히 또는 부분적으로 주 메모리(832) 내에, 정적 메모리(834) 내에, 저장 유닛(836) 내에, 프로세서(810) 중 적어도 하나 내에(예를 들어, 프로세서의 캐시 메모리 내에) 또는 이들의 임의의 적절한 조합 내에 상주할 수 있다.
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/
통신은 다양한 기술을 사용하여 구현될 수 있다. 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/
실행 가능한 명령 및 기계 저장 매체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
본원에서 사용되는 바에 따르면, 용어 "기계-저장 매체", "디바이스-저장 매체" 및 "컴퓨터-저장 매체"는 동일한 것을 의미하며 본 개시에서 상호 교환적으로 사용될 수 있다. 이 용어는 실행 가능한 명령 및/또는 데이터를 저장하는 단일 또는 다중 저장 디바이스 및/또는 매체(예를 들어, 중앙 집중식 또는 분산형 데이터베이스 및/또는 연관된 캐시 및 서버)를 지칭한다. 따라서 용어는 프로세서 내부 또는 외부 메모리를 포함하여, 솔리드 스테이트 메모리, 광학 및 자기 매체를 포함하지만 이에 제한되지 않는 것으로 간주된다. 기계-저장 매체, 컴퓨터-저장 매체 및/또는 디바이스-저장 매체의 구체적인 예는 반도체 메모리 디바이스, 예를 들어 소거 가능 프로그램 가능 읽기 전용 메모리(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
명령(816)은 네트워크 인터페이스 디바이스(예를 들어, 통신 구성요소(864) 내에 포함된 네트워크 인터페이스 구성요소)를 통해 전송 매체를 사용하고 다수의 잘 알려진 전송 프로토콜 중 임의의 하나(예를 들어, 하이퍼텍스트 전송 프로토콜(HTTP))를 활용하여 네트워크(880)를 통해 송신 또는 수신될 수 있다. 유사하게, 명령(816)은 디바이스(870)에 대한 연결(872)(예를 들어, 피어 투 피어 연결)을 통해 전송 매체를 사용하여 송신 또는 수신될 수 있다. 용어 "전송 매체" 및 "신호 매체"는 동일한 것을 의미하며 본 개시에서 상호 교환적으로 사용될 수 있다. 용어 "전송 매체" 및 "신호 매체"는 기계(800)에 의한 실행을 위한 명령(816)을 저장, 인코딩 또는 전달할 수 있는 임의의 무형 매체를 포함하는 것으로 간주되어야 하며, 디지털 또는 아날로그 통신 신호 또는 그러한 소프트웨어의 통신을 용이하게 하는 기타 무형 매체를 포함한다. 따라서 용어 "전송 매체" 및 "신호 매체"는 변조된 데이터 신호, 반송파 등의 모든 형태를 포함하는 것으로 간주되어야 한다. 용어 "변조된 데이터 신호"는 신호 내의 정보를 인코딩하는 방식으로 설정되거나 변경된 특성 중 하나 이상을 갖는 신호를 의미한다.
컴퓨터 판독 가능 매체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
본 개시의 실시예가 특정 예시적인 실시예를 참조하여 설명되었지만, 본 발명의 청구 대상의 더 넓은 범위를 벗어나지 않고 이러한 실시예에 다양한 수정 및 변경이 이루어질 수 있음이 명백할 것이다. 따라서, 명세서 및 도면은 제한적인 의미가 아니라 예시적인 것으로 간주되어야 한다. 본원의 일부를 형성하는 첨부 도면은 제한이 아닌 예시로서 청구 대상이 실시될 수 있는 특정 실시예를 도시한다. 예시된 실시예는 당업자가 본원에 개시된 교시를 실시할 수 있도록 충분히 상세하게 설명된다. 본 개시의 범위를 벗어나지 않고 구조적 및 논리적 대체 및 변경이 이루어질 수 있도록 다른 실시예가 사용되고 그로부터 파생될 수 있다. 따라서, 이 상세한 설명은 제한적인 의미로 받아들여져서는 안 되며, 다양한 실시예의 범위는 청구범위에 부여되는 등가물의 전체 범위와 함께 첨부된 청구범위에 의해서만 정의된다 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.
상기 스토리지 통합 객체와 연관된 사용 허가를 설정하는 것; 및
상기 외부 스테이지 객체와 연관된 사용 허가를 설정하는 것을 더 포함하는 네트워크 기반 데이터 웨어하우스 시스템.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.
상기 스토리지 통합 객체와 연관된 상기 사용 허가의 상기 설정은 제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.
상기 스토리지 통합 객체를 생성하라는 명령을 수신하는 것 - 상기 명령은 상기 저장 위치 및 상기 클라우드 스토리지 제공자 시스템을 식별함 - 을 더 포함하고, 상기 스토리지 통합 객체의 상기 생성은 상기 스토리지 통합 객체를 생성하라는 상기 명령에 기초하는 네트워크 기반 데이터 웨어하우스 시스템.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.
상기 외부 스테이지 객체를 생성하라는 명령을 수신하는 것 - 상기 명령은 상기 저장 위치에 대응하는 식별자(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.
상기 클라우드 신원 객체와 연관된 제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.
상기 클라우드 스토리지 제공자 시스템의 접근 관리 시스템으로, 상기 제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.
상기 사용자가 상기 스토리지 통합 객체를 사용하는 허가를 갖는지 검증하는 것; 또는
상기 사용자가 상기 외부 스테이지 객체를 사용하는 허가를 갖는지 검증하는 것 중 하나 이상을 포함하는 네트워크 기반 데이터 웨어하우스 시스템.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 식별자를 포함하고;
상기 외부 스테이지 객체는 상기 저장 위치의 부분에 대응하는 제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.
상기 스토리지 통합 객체와 연관된 사용 허가를 설정하는 것; 및
상기 외부 스테이지 객체와 연관된 사용 허가를 설정하는 것을 더 포함하는 방법.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.
상기 스토리지 통합 객체와 연관된 상기 사용 허가의 상기 설정은 제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.
상기 스토리지 통합 객체를 생성하라는 명령을 수신하는 것 - 상기 명령은 상기 저장 위치 및 상기 클라우드 스토리지 제공자 시스템을 식별함 - 을 더 포함하고, 상기 스토리지 통합 객체의 상기 생성은 상기 스토리지 통합 객체를 생성하라는 상기 명령에 기초하는 방법.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.
상기 외부 스테이지 객체를 생성하라는 명령을 수신하는 것 - 상기 명령은 상기 저장 위치에 대응하는 식별자 및 상기 스토리지 통합 객체에 대응하는 식별자를 포함함 - 을 더 포함하는 방법.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.
상기 프록시 신원 객체와 연관된 보안 자격증명을 사용하여 상기 프록시 신원 객체에 접근하는 것을 포함하는 방법.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.
상기 사용자가 상기 스토리지 통합 객체를 사용하는 허가를 갖는지 검증하는 것; 또는
상기 사용자가 상기 외부 스테이지 객체를 사용하는 허가를 갖는지 검증하는 것 중 하나 이상을 포함하는 방법.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:
상기 스토리지 통합 객체와 연관된 사용 허가를 설정하는 것; 및
상기 외부 스테이지 객체와 연관된 사용 허가를 설정하는 것을 포함하는 추가 동작을 수행하도록 구성하는 컴퓨터 저장 매체.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.
상기 스토리지 통합 객체를 생성하라는 명령을 수신하는 것 - 상기 명령은 상기 저장 위치 및 상기 클라우드 스토리지 제공자 시스템을 식별함 - 을 포함하는 추가 동작을 수행하도록 구성하고, 상기 스토리지 통합 객체의 상기 생성은 상기 스토리지 통합 객체를 생성하라는 상기 명령에 기초하는 컴퓨터 저장 매체.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.
상기 외부 스테이지 객체를 생성하라는 명령을 수신하는 것 - 상기 명령은 상기 저장 위치에 대응하는 식별자 및 상기 스토리지 통합 객체에 대응하는 식별자를 포함함 - 을 포함하는 추가 동작을 수행하도록 구성하는 컴퓨터 저장 매체.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.
상기 클라우드 신원 객체와 연관된 제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.
상기 스토리지 통합 객체 내에 포함된 정보에 기초하여 상기 저장 위치가 상기 스토리지 통합 객체에게 허용됨을 검증하는 것을 포함하는 추가 동작을 수행하도록 구성하는 컴퓨터 저장 매체.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.
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)
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)
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)
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)
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 |
-
2019
- 2019-11-14 US US16/683,641 patent/US10715524B1/en active Active
-
2020
- 2020-06-25 US US16/911,850 patent/US10999279B1/en active Active
- 2020-07-30 CN CN202310263325.8A patent/CN116303718A/en active Pending
- 2020-07-30 CN CN202080007511.XA patent/CN113228593B/en active Active
- 2020-07-30 DE DE202020005693.6U patent/DE202020005693U1/en active Active
- 2020-07-30 WO PCT/US2020/044195 patent/WO2021096572A1/en unknown
- 2020-07-30 KR KR1020217031176A patent/KR102508177B1/en active IP Right Grant
- 2020-07-30 EP EP20887419.8A patent/EP3942773A4/en active Pending
-
2021
- 2021-03-19 US US17/249,971 patent/US11165775B2/en active Active
- 2021-09-30 US US17/491,373 patent/US11271936B2/en active Active
-
2022
- 2022-01-28 US US17/587,829 patent/US11522860B2/en active Active
- 2022-11-11 US US18/054,621 patent/US11876802B2/en active Active
Patent Citations (4)
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)
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 |