KR20220130255A - 데이터 웨어하우스로부터 외부 함수를 호출하는 것 - Google Patents

데이터 웨어하우스로부터 외부 함수를 호출하는 것 Download PDF

Info

Publication number
KR20220130255A
KR20220130255A KR1020227031566A KR20227031566A KR20220130255A KR 20220130255 A KR20220130255 A KR 20220130255A KR 1020227031566 A KR1020227031566 A KR 1020227031566A KR 20227031566 A KR20227031566 A KR 20227031566A KR 20220130255 A KR20220130255 A KR 20220130255A
Authority
KR
South Korea
Prior art keywords
management system
data
computing service
request
software component
Prior art date
Application number
KR1020227031566A
Other languages
English (en)
Inventor
이스트반 쎄리
아이작 쿠넨
이고르 진코브스키
Original Assignee
스노우플레이크 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 스노우플레이크 인코포레이티드 filed Critical 스노우플레이크 인코포레이티드
Publication of KR20220130255A publication Critical patent/KR20220130255A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • G06F9/548Object oriented; Remote method invocation [RMI]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • G06F16/2448Query languages for particular applications; for extensibility, e.g. user defined types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/84Mapping; Conversion
    • G06F16/86Mapping to a database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • G06F16/972Access to data in other repository systems, e.g. legacy data or dynamic Web page generation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0407Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the identity of one or more communicating identities is hidden
    • H04L63/0414Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the identity of one or more communicating identities is hidden during transmission, i.e. party's identity is protected against eavesdropping, e.g. by using temporary identifiers, but is known to the other party or parties involved in the communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/068Network architectures or network communication protocols for network security for supporting key management in a packet data network using time-dependent keys, e.g. periodically changing keys
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/083Network architectures or network communication protocols for network security for authentication of entities using passwords
    • H04L63/0846Network architectures or network communication protocols for network security for authentication of entities using passwords using time-dependent-passwords, e.g. periodically changing passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/108Network architectures or network communication protocols for network security for controlling access to devices or network resources when the policy decisions are valid for a limited amount of time
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/565Conversion or adaptation of application format or content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/549Remote execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Information Transfer Between Computers (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Telephone Function (AREA)
  • Electrochromic Elements, Electrophoresis, Or Variable Reflection Or Absorption Elements (AREA)
  • Cash Registers Or Receiving Machines (AREA)
  • Exchange Systems With Centralized Control (AREA)

Abstract

원격 소프트웨어 구성요소와 연관된 함수를 참조하는 질의가 네트워크-기반 데이터 웨어하우스 시스템에 의해 수신된다. 클라우드 컴퓨팅 서비스 플랫폼에서 역할에 대응하는 임시 보안 크리덴셜이 획득된다. 역할은 원격 소프트웨어 구성요소에 대응하는 웹 엔드포인트에 대한 호출을 전송하기 위한 권한을 갖는다. 입력 데이터를 포함하고 임시 보안 크리덴셜을 사용하여 전자적으로 서명된 요청은 클라우드 컴퓨팅 서비스 플랫폼의 웹 애플리케이션 프로그래밍 인터페이스(API) 관리 시스템에 전송된다. 웹 API 관리 시스템에 의해 수신될 때, 요청은 웹 API 관리 시스템으로 하여금 입력 데이터에 대한 웹 엔드포인트에서 원격 소프트웨어 구성요소에 의해 제공된 외부 기능을 호출하게 한다. 외부 기능을 호출하는 것의 결과를 포함하는 응답은 웹 API 관리 시스템으로부터 수신되고, 결과 데이터는 질의에 따라 처리된다.

Description

데이터 웨어하우스로부터 외부 함수를 호출하는 것{CALLING EXTERNAL FUNCTIONS FROM A DATA WAREHOUSE}
본 출원은 2019년 10월 29일에 출원된 미국특허출원 제16/666,911호에 대한 우선권의 이익을 주장하며, 이는 그 전체가 본원에 참조로 통합된다.
기술분야
본 개시의 실시예는 일반적으로 네트워크-기반 데이터 웨어하우스에 관한 것이고, 더욱 구체적으로 네트워크-기반 데이터 웨어하우스로부터 외부 함수(external functions)를 호출하는 것에 관한 것이다.
클라우드 데이터 웨어하우스(또한, "네트워크-기반 데이터 웨어하우스" 또는 간단히 "데이터 웨어하우스"로 지칭됨)는 데이터 분석 및 보고를 위해 사용되고, 하나 이상의 다른 소스(disparate sources)로부터 통합된 데이터의 중앙 저장소를 포함하는 네트워크-기반 시스템이다. 클라우드 데이터 웨어하우스는 기업용 분석 보고서를 생성하기 위해 사용될 수 있는 현재 및 과거 데이터를 저장할 수 있다. 이를 위해, 데이터 웨어하우스는 통상적으로, 비즈니스 인텔리전스 도구(business intelligence tools), 데이터를 추출하고, 변환하며, 이를 저장소로 로드하기 위한 도구, 및 메타데이터를 관리하고 검색하기 위한 도구를 제공한다.
일부 경우에서, 네트워크-기반 데이터 웨어하우스의 사용자는 데이터 웨어하우스에 의해 저장된 데이터를 분석하거나 또는 다른 방식으로 처리하기 위해 데이터 웨어하우스 시스템 외부에 있는 기능(functionality)을 사용하기를 원할 수 있다. 예를 들어, 사용자는 네트워크-기반 데이터 웨어하우스의 컨텍스트(context) 내에서 제3자(예를 들어, 제3자 지오코더(geocoder))에 의해 제공되는 기능을 이용하기를 원할 수 있다. 다른 예시로서, 사용자는 데이터 웨어하우스의 컨텍스트 내에서 기존의 비즈니스 로직(예를 들어, 복잡한 손실 계산 또는 기계 학습 알고리즘)을 인코딩하거나 또는 재사용하기를 원할 수 있다. 또 다른 예시로서, 사용자는 데이터 웨어하우스의 컨텍스트 내에서 통지 시스템과 같은 외부 기능을 통지하거나 또는 다른 방식으로 트리거(trigger)하기를 원할 수 있다. 또 다른 예시로서, 사용자는 데이터 웨어하우스의 컨텍스트 내로부터 구동되는 방식으로 클라우드 웨어하우스로부터 데이터를 내보내기를 원할 수 있다. 하지만, 종래의 클라우드 데이터 웨어하우스는 사용자에게, 이러한 기능을 제공할 수 있는 원격 소프트웨어 구성요소(예를 들어, 코드)를 호출하기 위한 능력(ability)을 제공하지 않는다.
본 개시는 본 개시의 다양한 실시예의 아래에 주어진 상세한 설명 및 첨부 도면으로부터 더욱 완전히 이해될 것이다.
도 1은 본 개시의 일부 실시예에 따른, 네트워크-기반 데이터 웨어하우스 시스템이 원격 소프트웨어 구성요소에 의해 제공되는 외부 기능을 호출하는 예시적인 컴퓨팅 환경을 예시한다.
도 2는 본 개시의 일부 실시예에 따른, 컴퓨팅 환경 내의 통합 객체의 생성을 예시하는 데이터 흐름도이다.
도 3은 본 개시의 일부 실시예에 따른, 컴퓨팅 환경 내에서 함수 객체의 생성을 예시하는 데이터 흐름도이다.
도 4는 본 개시의 일부 실시예에 따른, 컴퓨팅 환경 내의 네트워크-기반 데이터 웨어하우스에 의해 원격 소프트웨어 구성요소에 의해 제공되는 외부 기능의 호출을 예시하는 데이터 흐름도이다.
도 5는 본 개시의 일부 실시예에 따른, 통합 객체의 생성 시, 컴퓨팅 환경에서의 구성요소 사이의 상호작용을 예시하는 상호작용 도면이다.
도 6은 본 개시의 일부 실시예에 따른, 함수 객체를 생성할 시, 컴퓨팅 환경에서의 구성요소 사이의 상호작용을 예시하는 상호작용 도면이다.
도 7은 본 개시의 일부 실시예에 따른, 원격 소프트웨어 구성요소에 의해 제공되는 외부 기능을 호출할 시, 컴퓨팅 환경에서의 구성요소 사이의 상호작용을 예시하는 상호작용 도면이다.
도 8은 본 개시의 일부 실시예에 따른, 네트워크-기반 데이터 웨어하우스가 원격 소프트웨어 구성요소에 의해 제공되는 외부 기능을 호출하는 것을 가능하게 하기 위한 방법을 수행할 시, 네트워크-기반 데이터 웨어하우스 시스템의 동작을 예시하는 흐름도이다.
도 9-11은 본 개시의 일부 실시예에 따른, 원격 소프트웨어 구성요소에 의해 제공되는 외부 기능을 호출하기 위한 방법을 수행할 시, 네트워크-기반 데이터 웨어하우스의 동작을 예시하는 흐름도이다.
도 12는 본 개시의 일부 실시예에 따른, 컴퓨팅 서비스 관리자의 구성요소를 예시하는 블록도이다.
도 13은 본 개시의 일부 실시예에 따른, 실행 플랫폼의 구성요소를 예시하는 블록도이다.
도 14는 본 개시의 일부 실시예에 따른, 명령어의 세트가 머신으로 하여금 본원에서 논의된 방법론 중 임의의 하나 이상을 수행하게 하기 위해 실행될 수 있는 컴퓨터 시스템의 형태의 머신의 도식적 표현을 예시한다.
이제, 본 발명의 주제를 수행하기 위한 특정 예시적인 실시예에 대한 참조가 상세히 이루어질 것이다. 이들 특정 실시예의 예시는 첨부 도면에 도시되며, 주제의 완전한 이해를 제공하기 위한 구체적인 세부사항이 다음 설명에 제시된다. 이들 예시는 청구범위의 범주를 예시된 실시예로 제한하도록 의도되지 않는다는 것이 이해될 것이다. 반대로, 이들은 본 개시의 범주 내에 포함될 수 있는 이러한 대안, 수정 및 균등물을 커버하는 것으로 의도된다.
위에서 언급된 바와 같이, 종래의 네트워크-기반 데이터 웨어하우스는 데이터 웨어하우스 외부에 있는 기능을 제공하는 원격 소프트웨어 구성요소를 호출하기 위한 능력을 사용자에게 제공하지 않는다. 본 개시의 양상은 원격 소프트웨어 구성요소에 의해 제공되는 외부 기능을 호출하기 위한 능력을 사용자에게 제공하는 네트워크-기반 데이터 웨어하우스 시스템을 제공함으로써, 종래의 데이터 웨어하우스의 위의 및 다른 결점을 해결한다. 본원에서 설명된 네트워크-기반 데이터 웨어하우스 시스템은 함수(예를 들어, 구조화된 질의 언어(Structured Query Language, SQL) 함수), 테이블 함수, 또는 프로시저(procedure)를 데이터 웨어하우스 외부에 있고, 웹 애플리케이션 프로그래밍 인터페이스(web application programming interface, API))로서 노출된 원격 소프트웨어 코드로 바인딩(bind)하기 위한 능력을 제공한다.
네트워크-기반 데이터 웨어하우스 시스템은 외부에서 관리되는 웹 API 관리 시스템 제공된 클라우드 컴퓨팅 서비스 플랫폼(예를 들어, Amazon Web Services®(AWS), Microsoft Azure® 또는 Google Cloud Services®)에서 외부에서 구현된 웹 엔드포인트(web endpoint)(예를 들어, 하이퍼텍스트 전송 프로토콜(HyperText Transfer Protocol, HTTP) 표현 상태 변경(Representational State Transfer, REST) 엔드포인트)에 의해 지원되는(backed) 함수 및 저장된 프로시저를 작성하기(author) 위한 메커니즘을 사용자에게 제공한다. 사용자는 웹 엔드포인트를 제공하고(provisioning), 저장 플랫폼 내의 비즈니스 로직을 기초로 엔드포인트를 구성할 책임이 있다. 일부 경우에서, 웹 API 관리 시스템은 람다 함수(Lambda functions)에 대한 요청을 프록시하고, 다른 경우에서, 웹 API 관리 시스템은 요청을 변환하며, 이를 데이터 웨어하우스 시스템 외부에 있는 제3자 소프트웨어 구성요소로 전달한다. 네트워크-기반 데이터 웨어하우스 시스템은 이의 외부 소프트웨어 구성요소에 의해 제공되는 외부 함수가 사용자 정의 함수, 사용자-정의 테이블 함수 및 저장된 프로시저와 같이 질의에서 사용되는 것을 가능하게 한다.
네트워크-기반 데이터 웨어하우스 시스템은 원격 소프트웨어 구성요소에 의해 제공된 외부 기능의 호출을 가능하게 하기 위해 다양한 데이터 객체를 저장한다. 데이터 객체는 클라우드 컴퓨팅 플랫폼에 의해 제공되는 웹 API 관리 시스템을 통해 외부 기능을 호출하는 데 사용될 임시 보안 크리덴셜(credentials)을 획득하기 위해 네트워크-기반 데이터 웨어하우스에서 사용하는 정보를 저장한다. 질의의 실행 중에, 네트워크-기반 데이터 웨어하우스 시스템은 임시 보안 크리덴셜을 사용하여 클라우드 컴퓨팅 서비스 플랫폼의 인증 시스템을 통해 타겟 엔드포인트로 인증하고, 질의에서 정의된 타겟 데이터의 배치(batches)로 엔드포인트에서 기능을 호출한다. 타겟 데이터는 예를 들어, 이진 데이터, 자바스크립트 객체 표기법(JavaScript Object Notation, JSON) 인코딩된 데이터, 또는 확장 가능한 마크업 언어(extensible Markup Language, XML)와 같은 다른 텍스트 포맷을 포함한다. 타겟 데이터는 HTTP 요청/응답과 함께 인라인으로(inline) 전달되거나, 또는 클라우드 컴퓨팅 서비스 플랫폼(예를 들어, Amazon® Simple Storage Service(S3®))에 의해 제공되는 일반적으로 액세스되는 저장소에 기록될 수 있다. 네트워크-기반 데이터 웨어하우스 시스템에 저장된 사용자 데이터는 HTTP 요청 및 응답을 통해 전달하기에 적합한 포맷으로 인코딩된다.
사용자의 관점으로부터, 외부 코드는 임의의 내부적으로-정의된 함수 또는 프로시저에 유사한 데이터 웨어하우스 기능의 원활한 부분(seamless part)으로 만들어질 수 있다. 즉, 데이터 웨어하우스는 본질적으로 데이터 웨어하우스 외부에 있는 시스템(예를 들어, 지오코딩 시스템)에 액세스할 수 있다. 또한, 사용자는 코드를 작성하는 데 사용되는 언어 또는 코드가 실행되는 시스템에 관계 없이, 어느 임의의 외부 코드를 사용하는 것이 가능해진다. 더욱이, 본원에서 설명된 네트워크-기반 데이터 웨어하우스는 사용자가 외부 기능을 호출하는 것을 허용하면서, 데이터 웨어하우스 시스템 내에서 코드를 실행하고 데이터 웨어하우스의 기능에 직교하는(orthogonal) 방식으로 하는 것으로부터 발생하는 보안 염려를 회피한다(예를 들어, 외부 함수는 임의의 질의에서 사용될 수 있다). 덧붙여, 데이터 웨어하우스로부터 외부 기능을 호출하기 위한 기술은, 보안에 민감한 인증 정보를 외부화하는데, 이는 이 정보가 네트워크-기반 데이터 웨어하우스 그 자체가 아닌 클라우드 컴퓨팅 서비스 플랫폼에 의해 처리되기 때문이다.
예시에서, 네트워크-기반 데이터 웨어하우스의 사용자는 기계 학습 알고리즘을 사용하여 스코어 함수를 구축하였고, 스코어 함수에 대한 호출을 용이하게 하기 위해 점수 API를 배포하였다(deployed). 사용자는 네트워크-기반 데이터 웨어하우스 내의 함수를 외부 코드로 바인딩하고, 입력 값의 세트에 점수를 매기기 위해 함수를 참조하는 네트워크-기반 데이터 웨어하우스에 SQL 질의를 발행할 수 있다. 질의를 실행할 때, 네트워크-기반 데이터 웨어하우스는 입력 값의 세트에 액세스하고, 스코어 함수 API를 호출하며, 외부 스코어 함수로부터 수신된 결과를 통합한다.
도 1은 본 개시의 일부 실시예에 따른, 네트워크-기반 데이터 웨어하우스 시스템(102)이 원격 소프트웨어 구성요소에 의해 제공되는 외부 함수를 호출하는 예시적인 컴퓨팅 환경(100)을 도시한다. 본 발명의 주제를 불필요한 세부 사항으로 모호하게 하는 것을 회피하기 위해, 본 발명의 주제의 이해를 전달하는 것과 관련이 없는 다양한 기능적 구성요소는 도 1 및 후속하는 도 2-4로부터 생략되었다. 하지만, 통상의 기술자는 본원에서 구체적으로 설명되지 않은 추가적인 기능을 용이하게 하기 위해 다양한 추가적인 기능적인 구성요소가 컴퓨팅 환경(100)의 일부로서 포함될 수 있음을 쉽게 인식할 것이다.
도시된 바와 같이, 컴퓨팅 환경(100)은 네트워크-기반 데이터 웨어하우스 시스템(102), 클라우드 컴퓨팅 서비스 플랫폼(104)(예를 들어, AWS®, Microsoft Azure®, 또는 Google Cloud Services®), 및 원격 컴퓨팅 환경(106)을 포함한다. 데이터 웨어하우스 시스템(102)은 하나 이상의 다른 소스(예를 들어, 클라우드 컴퓨팅 서비스 플랫폼(104))로부터 통합된 데이터의 보고 및 분석을 위해 사용되는 네트워크-기반 시스템이다. 클라우드 컴퓨팅 서비스 플랫폼(104)은 복수의 컴퓨팅 머신(compute machine)을 포함하고, 네트워크-기반 데이터 웨어하우스 시스템(102)에 데이터 저장 및 컴퓨팅 전력과 같은 주문형 컴퓨터 시스템 리소스를 제공한다.
원격 컴퓨팅 환경(106)은 네트워크-기반 데이터 웨어하우스 시스템(102)의 사용자에게 추가적인 기능을 제공하기 위해 원격 소프트웨어 구성요소(108)를 실행하는 하나 이상의 컴퓨팅 머신을 포함한다. 일부 실시예에서, 원격 컴퓨팅 환경(106)은 클라우드 컴퓨팅 서비스 플랫폼(104)에 포함되거나 또는 그에 의해 제공될 수 있다.
원격 소프트웨어 구성요소(108)는 원격 컴퓨팅 환경(106)에 의해 실행될 때 원격 컴퓨팅 환경(106)이 특정 기능을 제공하게 하는 기계 판독가능 명령어(예를 들어, 코드)의 세트를 포함한다. 원격 소프트웨어 구성요소(108)는 입력 데이터에 대해 동작할 수 있고, 입력 데이터를 처리하거나, 분석하거나 또는 변환하는 것을 기초로 결과 데이터를 생성한다. 예시로서, 원격 소프트웨어 구성요소(108)는 스칼라 함수, 테이블 함수, 저장된 프로시저를 포함할 수 있다. 외부 스칼라 함수는 예를 들어, 기존의 추출, 변환, 로드(extract, transform, load, ETL) 파이프라인을 향상하거나, 또는 완전히 새로운 데이터 처리 시나리오를 가능하게 할 수 있는 외부 시스템에서 작업을 트리거하기 위한 메커니즘으로서 사용될 수 있다. 예를 들어, 외부 스칼라 함수는 이메일 또는 통지를 전송하거나, 또는 클라우드 컴퓨팅 서비스 플랫폼(104)의 구성요소에서 기계 학습 훈련 작업(job)을 시작하기 위해 사용될 수 있다. 외부 저장된 프로시저는 예를 들어, 저장된 프로시저를 호출한 동일한 세션의 컨텍스트에서 중첩된(nested) SQL 질의를 실행할 수 있다.
네트워크-기반 데이터 웨어하우스 시스템(102)은 액세스 관리 시스템(110), 컴퓨팅 서비스 관리자(112), 실행 플랫폼(114) 및 데이터베이스(116)를 포함한다. 액세스 관리 시스템(110)은 네트워크-기반 데이터 웨어하우스 시스템(102)에 대한 내부 액세스 제어 시스템이고, 관리 사용자가 네트워크-기반 데이터 웨어하우스 시스템(102)에 의해 제공되는 리소스 및 서비스에 대한 액세스를 관리하는 것을 가능하게 한다. 관리 사용자는 사용자, 역할 및 그룹을 생성하고 관리할 수 있으며, 리소스 및 서비스에 대한 액세스를 허용하거나 또는 거부하기 위한 권한(permissions)을 사용할 수 있다.
컴퓨팅 서비스 관리자(112)는 네트워크-기반 데이터 웨어하우스 시스템(102)의 동작을 조정하고 관리한다. 컴퓨팅 서비스 관리자(112)는 또한, 질의 최적화 및 컴파일을 수행할 뿐만 아니라, 컴퓨팅 리소스(또한, "가상 웨어하우스"로 지칭됨)를 제공하는 컴퓨팅 서비스의 클러스터를 관리한다. 컴퓨팅 서비스 관리자(112)는 데이터 저장 및 검색 요청을 제공하는 최종 사용자, 본원에서 설명된 시스템 및 방법을 관리하는 시스템 관리자, 및 컴퓨팅 서비스 관리자(112)와 상호작용하는 다른 구성요소/디바이스와 같은 임의의 수의 클라이언트 계정을 지원할 수 있다.
컴퓨팅 서비스 관리자(112)는 또한, 컴퓨팅 환경(100)에 저장된 데이터의 전체와 연관된 데이터베이스(116)에 결합된다. 데이터베이스(116)는 네트워크-기반 데이터 웨어하우스 시스템(102) 및 그의 사용자와 연관된 다양한 함수 및 양상에 관한 데이터를 저장한다. 예를 들어, 데이터베이스(116)는 네트워크-기반 데이터 웨어하우스 시스템(102)이 원격 소프트웨어 구성요소(108)에 의해 제공되는 외부 기능을 호출하는 것을 가능하게 하는 다양한 데이터 객체를 저장한다. 이 데이터 객체의 생성 및 사용에 관한 추가적인 세부사항은 도 2-11을 참조로 아래에서 논의된다.
일부 실시예에서, 데이터베이스(116)는 로컬 캐시로부터 이용 가능한 데이터뿐만 아니라 원격 데이터 저장 시스템에 저장된 데이터의 요약을 포함한다. 추가적으로, 데이터베이스(116)는 원격 데이터 저장 시스템 및 로컬 캐시에서 데이터가 어떻게 구성되는지에 관한 정보를 포함할 수 있다. 데이터베이스(116)는 시스템 및 서비스가 저장 디바이스로부터 실제 데이터를 로딩하거나 액세스하지 않고, 데이터의 조각이 액세스되어야 하는지 여부를 결정하는 것을 허용한다.
컴퓨팅 서비스 관리자(112)는 다양한 데이터 저장 및 데이터 검색 태스크(tasks)를 실행하는 다수의 컴퓨팅 리소스를 제공하는 실행 플랫폼(114)에 더 결합된다. 실행 플랫폼(114)은 클라우드 컴퓨팅 서비스 플랫폼(104)에 의해 제공되는 저장 플랫폼(122)에 결합된다. 저장 플랫폼(122)은 다수의 데이터 저장 디바이스(124-1 내지 124-N)를 포함한다. 일부 실시예에서, 데이터 저장 디바이스(124-1 내지 124-N)는 하나 이상의 지리적 위치에 위치된 클라우드-기반 저장 디바이스이다. 예를 들어, 데이터 저장 디바이스(124-1 내지 124-N)는 공용 클라우드 인프라구조 또는 사설 클라우드 인프라구조의 일부일 수 있다. 데이터 저장 디바이스(124-1 내지 124-N)는 하드 디스크 드라이브(hard disk drives, HDD), 솔리드 스테이트 드라이브(solid state drives, SSD), 저장 클러스터, 아마존 S3TM 저장 시스템 또는 임의의 다른 데이터 저장 기술일 수 있다. 추가적으로, 클라우드 컴퓨팅 서비스 플랫폼(104)은 (하둡 분산 파일 시스템(Hadoop Distributed File Systems, HDFS)과 같은) 분산 파일 시스템, 객체 저장 시스템 등을 포함할 수 있다.
실행 플랫폼(114)은 복수의 컴퓨팅 노드를 포함한다. 컴퓨팅 노드 상의 프로세스의 세트는 컴퓨팅 서비스 관리자(112)에 의해 컴파일된 질의 계획을 실행한다. 프로세스의 세트는: 질의 계획을 실행하기 위한 제1 프로세스; 최소 사용 빈도(least recently used, LRU) 정책을 사용하여 마이크로-파티션 파일을 모니터링 및 삭제하고 메모리 부족(out of memory, OOM) 오류 완화 프로세스를 구현하기 위한 제2 프로세스; 프로세스 로그 및 상태로부터 건강 정보를 추출하여 컴퓨팅 서비스 관리자(112)로 다시 전송하는 제3 프로세스; 시스템 부팅 이후에 컴퓨팅 서비스 관리자(112)와 통신을 확립하기 위한 제4 프로세스; 및 컴퓨팅 서비스 관리자(112)에 의해 제공되는 주어진 작업에 대한 컴퓨팅 클러스터와의 모든 통신을 처리하고, 정보를 컴퓨팅 서비스 관리자(112) 및 실행 플랫폼(114)의 다른 컴퓨팅 노드로 다시 전달하기 위한 제5 프로세스를 포함할 수 있다.
클라우드 컴퓨팅 서비스 플랫폼(104)은 또한, 액세스 관리 시스템(118) 및 웹 API 관리 시스템(120)을 포함한다. 액세스 관리 시스템(118)은 사용자가 사용자, 역할 및 그룹을 생성 및 관리하는 것을 허용하고, 클라우드 컴퓨팅 서비스 플랫폼(104)의 컨텍스트 내에서 클라우드 서비스 및 리소스에 대한 액세스를 허용하거나 거부하는 것을 허용하도록 권한을 사용하는, 클라우드 컴퓨팅 서비스 플랫폼(104)에 의해 제공되는 액세스 제어 시스템이다. 사용자는 예를 들어, 웹 API 관리 시스템(120)을 통해 원격 소프트웨어 구성요소(108)에 웹 호출을 하기 위한 권한을 갖는 클라우드 컴퓨팅 서비스 플랫폼(104)의 컨텍스트 내에서 역할을 생성할 수 있다. 네트워크-기반 데이터 웨어하우스 시스템(102)의 액세스 관리 시스템(110) 및 클라우드 컴퓨팅 서비스 플랫폼(104)의 액세스 관리 시스템(118)은 네트워크-기반 데이터 웨어하우스 시스템(102) 및 클라우드 컴퓨팅 서비스 플랫폼(104) 모두의 사용자에 의해 공유되는 리소스 및 서비스의 액세스 및 관리를 가능하게 하기 위해 통신하고, 정보를 공유할 수 있다.
웹 API 관리 시스템(120)은 트래픽 관리, 승인 및 액세스 제어, 모니터링, API 버전 관리를 포함하는 동시 API 호출을 수락하고 처리하는 것에 수반된 태스크를 처리한다. 웹 API 관리 시스템(120)은 API(예를 들어, REST API)의 생성, 퍼블리싱, 유지, 보안 및 모니터링을 위한 HTTP 프록시 서비스를 제공한다.
일부 실시예에서, 컴퓨팅 환경(100)의 요소 사이의 통신 링크는 하나 이상의 데이터 통신 네트워크를 통해 구현된다. 이 데이터 통신 네트워크는 임의의 통신 프로토콜 및 임의의 타입의 통신 매체를 이용할 수 있다. 일부 실시예에서, 데이터 통신 네트워크는 서로 결합된 두 개 이상의 데이터 통신 네트워크(또는 서브 네트워크)의 조합이다. 대안적인 실시예에서, 이 통신 링크는 임의의 타입의 통신 매체 및 임의의 통신 프로토콜을 사용하여 구현된다.
도 1에 도시된 바와 같이, 데이터 저장 디바이스(124-1 내지 124-N)는 실행 플랫폼(304)과 연관된 컴퓨팅 리소스로부터 결합 해제된다(decoupled). 이 아키텍처는 데이터 처리 플랫폼(700)에 액세스하는 사용자 및 시스템의 변하는 요구뿐만 아니라, 변하는 데이터 저장/검색 요구를 기초로 네트워크-기반 데이터 웨어하우스(102)에 대한 동적 변경을 지원한다. 동적 변경의 지원은 네트워크-기반 데이터 웨어하우스(102)가 네트워크-기반 데이터 웨어하우스(102) 내의 시스템 및 구성요소에 대한 변하는 요구에 응답하여 빠르게 확장되는 것을 허용한다. 데이터 저장 디바이스로부터 컴퓨팅 리소스의 결합 해제는 대응하는 많은 양의 컴퓨팅 리소스를 요구하지 않으면서 대량의 데이터의 저장을 지원한다. 유사하게, 리소스의 이 결합 해제는 이용 가능한 데이터 저장 리소스의 대응하는 증가를 요구하지 않으면서, 특정 시간에 이용되는 컴퓨팅 리소스의 상당한 증가를 지원한다.
컴퓨팅 서비스 관리자(112), 데이터베이스(116), 실행 플랫폼(114), 클라우드 컴퓨팅 서비스 플랫폼(104), 및 원격 컴퓨팅 환경(106)이 도 1에 개별적인 구성요소로 도시된다. 하지만, 컴퓨팅 서비스 관리자(112), 데이터베이스(116), 실행 플랫폼(114), 클라우드 컴퓨팅 서비스 플랫폼(104) 및 원격 컴퓨팅 환경의 각각은 분산 시스템(예를 들어, 다중 지리적 위치에서 다중 시스템/플랫폼에 걸쳐 분산됨)으로서 구현될 수 있다. 추가적으로, 컴퓨팅 서비스 관리자(112), 데이터베이스(116), 실행 플랫폼(114) 및 클라우드 컴퓨팅 서비스 플랫폼(104)의 각각은 수신된 요청에 대한 변경 및 데이터 처리 플랫폼(700)의 변하는 요구에 의존하여 (서로 독립적으로) 확장되거나 또는 축소될 수 있다. 따라서, 설명된 실시예에서, 네트워크-기반 데이터 웨어하우스(102)는 동적이며 현재 데이터 처리 요구를 충족하기 위해 정기적인 변경을 지원한다.
통상적인 동작 동안, 네트워크-기반 데이터 웨어하우스(102)는 컴퓨팅 서비스 관리자(112)에 의해 결정된 다수의 작업을 처리한다. 이 작업은 언제 어떻게 작업을 실행할지를 결정하기 위해 컴퓨팅 서비스 관리자(112)에 의해 스케줄링되고 관리된다. 예를 들어, 컴퓨팅 서비스 관리자(112)는 작업을 다수의 개별 태스크로 분할할 수 있고, 다수의 개별 태스크의 각각을 실행하기 위해 어떤 데이터가 필요한지를 결정할 수 있다. 컴퓨팅 서비스 관리자(112)는 태스크를 처리하기 위해 실행 플랫폼(114)의 하나 이상의 노드에 다수의 개별 태스크 각각을 할당할 수 있다. 컴퓨팅 서비스 관리자(112)는 태스크를 처리하는 데 어느 데이터가 필요한지 결정할 수 있고, 태스크를 처리하는 데 실행 플랫폼(114) 내의 어느 노드가 가장 적합한지를 더 결정할 수 있다. 일부 노드는 태스크를 처리하는 데 필요한 데이터를 이미 캐시했을 수 있고, 그러므로 태스크를 처리하기에 좋은 후보일 수 있다. 데이터베이스(116)에 저장된 메타데이터는 실행 플랫폼(114)의 어느 노드가 태스크를 처리하기 위해 필요한 데이터의 적어도 일부를 이미 캐시했는지를 결정할 때 컴퓨팅 서비스 관리자(112)를 보조한다. 실행 플랫폼(114)에서의 하나 이상의 노드는 노드에 의해 캐시된 데이터, 및 필요한 경우 클라우드 컴퓨팅 서비스 플랫폼(104)으로부터 검색된 데이터를 사용하여 태스크를 처리한다. 검색 속도가 일반적으로 클라우드 컴퓨팅 서비스 플랫폼(104)으로부터 데이터를 검색하는 것보다 훨씬 빠르기 때문에 실행 플랫폼(114) 내의 캐시로부터 가능한 많은 데이터를 검색하는 것이 바람직하다.
도 1에 도시된 바와 같이, 컴퓨팅 환경(100)은 클라우드 컴퓨팅 서비스 플랫폼(104)으로부터 실행 플랫폼(114)을 분리한다. 이 배열에서, 실행 플랫폼(114)에서의 처리 리소스 및 캐시 리소스는 클라우드 컴퓨팅 서비스 플랫폼(104)에서의 데이터 저장 리소스(124-1 내지 124-n)와 독립적으로 동작한다. 따라서, 컴퓨팅 리소스 및 캐시 리소스는 특정 데이터 저장 리소스(124-1 내지 124-n)로 제한되지 않는다. 그 대신에, 모든 컴퓨팅 리소스 및 모든 캐시 리소스는 클라우드 컴퓨팅 서비스 플랫폼(104)에서의 데이터 저장 리소스 중 임의의 것으로부터 데이터를 검색하고, 이에 데이터를 저장할 수 있다.
도 2는 본 개시의 일부 실시예에 따른 컴퓨팅 환경(100) 내에서 통합 객체(200)의 생성을 예시하는 데이터 흐름도이다. 도시된 바와 같이, 클라우드 컴퓨팅 서비스 플랫폼(104)의 관리 사용자(202)는 역할(204)을 생성하기 위해 클라우드 컴퓨팅 서비스 플랫폼(104)의 액세스 관리 시스템(118)을 사용한다. 클라우드 컴퓨팅 서비스 플랫폼(104)의 컨텍스트에서 역할은 클라우드 컴퓨팅 서비스 플랫폼(104) 내에서 서비스 요청을 하기 위한 권한의 세트를 통한 식별(identity)이다. 역할은 식별이 클라우드 컴퓨팅 서비스 플랫폼(104) 내에서 무엇을 할 수 있는지를 결정하는 권한 정책을 통한 식별이라는 점에서 사용자에 유사하지만, 역할은 사용자와 같은 단일 사람과 고유하게 연관되기 보다는, 다수의 사용자에 의해 맡을(assumed) 수 있는 식별이다. 역할은 또한, 장기 보안 크리덴셜을 갖지 않으며, 그 대신에 역할을 맡는 사용자는 만료 시간 이후에 만료되는 임시 보안 크리덴셜을 제공받는다.
클라우드 컴퓨팅 서비스 플랫폼(104)의 관리 사용자(202)는 원격 소프트웨어 구성요소(108)에 대응하는 웹 엔드포인트를 호출하기 위한 권한을 가진 역할(204)을 생성한다. 예를 들어, 관리 사용자(202)는 액세스 관리 시스템(118)이 역할(204)을 생성하게 하기 위한 적절한 입력을 제공하기 위해 클라우드 컴퓨팅 서비스 플랫폼(104)에 의해 컴퓨팅 디바이스(203)에 제공된 사용자 인터페이스를 이용할 수 있다.
클라우드 컴퓨팅 서비스 플랫폼(104)은 역할(204)에 리소스 식별자를 할당한다. 관리 사용자(202)는 역할(204)과 연관된 리소스 식별자를 획득하기 위해 컴퓨팅 디바이스(203)에 제공된 UI를 사용하여 액세스 관리 시스템(118)과 더 상호작용하고, 이 리소스 식별자를 네트워크-기반 데이터 웨어하우스 시스템(102)의 관리 사용자(206)에게 전달한다.
208에서, 컴퓨팅 서비스 관리자(112)는 역할(204)과 연관된 리소스 식별자를 포함하는 관리 사용자(206)에 의해 제공되는 입력을 기초로 데이터베이스(116)에 통합 객체(200)를 생성하고, 타겟 통합 리소스 로케이터(uniform resource locators, URL)를 기초로 웹 호출을 허용/거부하기 위한 방식을 생성한다. 예시로서, 관리 사용자(206)는 입력을 제공하고, 컴퓨팅 서비스 관리자(112)가 통합 객체(200)를 생성하게 하기 위해 네트워크-기반 데이터 웨어하우스 시스템(102)에 의해 컴퓨팅 디바이스(207)에 제공되는 UI를 이용한다.
웹 호출을 허용/거부하기 위한 방식은 웹 호출이 이루어질 수 있는 허가 가능한 URL의 화이트리스트(whitelist), 웹 호출이 허가되지 않는 허가 불가능한 URL의 블랙리스트 또는 둘 모두를 포함할 수 있다. 일반적으로, 방식은 통합을 통해 사용될 수 있는 엔드포인트를 제한하기 위해 컴퓨팅 서비스 관리자(112)에 의해 사용된다. 컴퓨팅 서비스 관리자(112)에 의해 생성된 통합 객체(200)는: 역할(204)과 연관된 리소스 식별자에 대한 참조(210), 사용자 레코드(214)와 연관된 리소스 식별자에 대한 참조(212), 및 허용된/제한된 URL을 정의하는 방식을 포함한다. 일부 실시예에서, 통합 객체(200)는 컴퓨팅 서비스 관리자(112)에 의해 생성된 외부 식별(ID) 스트링에 대한 참조를 더 포함할 수 있다. 컴퓨팅 서비스 관리자(112)에 의해 생성된 외부 ID 스트링은 역할(204)과 사용자 레코드(214) 사이의 신뢰 관계를 확립하기 위해 사용될 수 있다.
액세스 관리 시스템(110)은 사용자 레코드의 풀(pool)을 유지할 수 있고, 통합 객체(200)에 할당하고 포함할 사용자 레코드(214)를 선택할 수 있다. 216에서, 관리 사용자(206)는 사용자 레코드(214)의 리소스 식별자 및 통합 객체(200)에 포함된 외부 ID 스트링을 추출하기 위해 컴퓨팅 서비스 관리자(112)와 상호작용하고, 대역외 통신(out-of-band communication)에서 관리 사용자(202)에게 사용자 레코드(214)의 리소스 식별자 및 외부 ID 스트링을 전달한다.
관리 사용자(202)는 사용자 레코드(214)에 대응하는 사용자가 역할(204)을 맡고, 웹 API 관리 시스템(120)을 통해 원격 소프트웨어 구성요소(108)에 웹 호출을 전송하는 것을 가능하게 하기 위해, 역할(204)과 사용자 레코드(214) 사이의 신뢰 관계를 확립하도록 액세스 관리 시스템(118)과 상호 작용한다. 그 결과로서, 역할(204)은 사용자 레코드(214)에 대한 참조(216)를 포함하도록 업데이트된다.
218에서, 컴퓨팅 서비스 관리자(112)는 컴퓨팅 디바이스(207)에 제공된 UI를 통해 관리 사용자(206)에 의해 제공된 입력을 기초로 관리 사용자(206)와 연관된 하나 이상의 사용자에게 통합 객체(200)에 대한 사용 권한을 부여한다.
도 3은 본 개시의 일부 실시예에 따른 컴퓨팅 환경(100) 내의 함수 객체(300)의 생성을 예시하는 데이터 흐름도이다. 도시된 바와 같이, 302에서, 웹 API 관리 시스템(120)은 원격 소프트웨어 구성요소(108)에 대응하는 타겟 웹 엔드포인트(304)(본원에서 간단히 "타겟 엔드포인트(304)"로 지칭됨)를 포함하도록 구성된다. 타겟 엔드포인트(304)는 원격 소프트웨어 구성요소(108)에 대응하는 통합 리소스 로케이터(URL)를 포함할 수 있다. 웹 API 관리 시스템(120)은 클라우드 컴퓨팅 서비스 플랫폼(104)에 의해 컴퓨팅 디바이스(307)에 제공되는 UI를 사용하여 함수 작성자(306)에 의해 구성된다. 함수 작성자(306)는 클라우드 컴퓨팅 서비스 플랫폼(104)을 통한 계정 및 네트워크-기반 데이터 웨어하우스 시스템(102)을 통한 계정에 액세스하는 사용자이다. 타겟 엔드포인트(304)는 역할(204)에 부여된 권한이 호출되는 것을 허용하는 리소스 정책을 사용하여 클라우드 컴퓨팅 서비스 플랫폼(104)의 액세스 관리 시스템(118)에 의해 인증되도록 구성된다.
컴퓨팅 서비스 관리자(112)는 컴퓨팅 디바이스(307)로부터 함수 정의를 수신한다. 함수 정의는 네트워크-기반 데이터 웨어하우스 시스템(102)에 의해 컴퓨팅 디바이스(307)에 제공된 UI를 사용하여 함수 작성자(306)에 의해 지정될 수 있다. 함수 정의는 통합 객체(200) 및 타겟 엔드포인트(304)를 식별한다. 일부 실시예에서, 함수 정의는 웹 API 관리 시스템(120)에 전송된 요청으로 행을 배치하기(batching) 위한 최대 배치 크기를 포함할 수 있다.
(310에서) 컴퓨팅 서비스 관리자(112)는 타겟 엔드포인트(304)에 대한 URL이 허용된/제한된 URL을 정의하는 방식에 의해 허용되는지를 검사한다. 그렇지 않은 경우, 컴퓨팅 서비스 관리자(112)는 함수 정의를 거부한다. 그렇지 않으면, (312에서) 컴퓨팅 서비스 관리자(112)는 데이터베이스(116)에 함수 객체(300)를 생성한다. 함수 객체(300)는 원격 소프트웨어 구성요소(108)에 의해 제공되는 외부 기능을 호출하기 위해 질의(예를 들어, SQL 질의)에서 사용될 수 있는 함수를 정의한다. 함수 객체(300)는 통합 객체(200)에 대한 참조(308)(예를 들어, 포인터) 및 타겟 엔드포인트(304)(예를 들어, 타겟 엔드포인트(304)에 대응하는 URL)에 대한 참조(314)를 포함한다. 316에서, 컴퓨팅 서비스 관리자(112)는 컴퓨팅 디바이스(307)에 제공된 UI를 통해 함수 작성자(306)에 의해 제공된 입력에 기초하여 네트워크-기반 데이터 웨어하우스 시스템(102)의 하나 이상의 사용자에게 함수 객체(300)에 대한 사용 권한을 부여한다.
도 4는 본 개시의 일부 실시예에 따른, 컴퓨팅 환경(100) 내의 네트워크-기반 데이터 웨어하우스 시스템(102)에 의해 원격 소프트웨어 구성요소(108)에 의해 제공되는 외부 함수의 호출을 예시하는 데이터 흐름도이다. 외부 함수의 호출은 컴퓨팅 서비스 관리자(112)와 통신하는 컴퓨팅 디바이스(401)를 사용하여 컴퓨팅 서비스 관리자(112)에 질의를 발행하는 함수 호출자(400)에 의해 개시된다. 함수 호출자(400)는 네트워크-기반 데이터 웨어하우스 시스템(102)의 사용자이다. 질의는 함수 객체(300)에 의해 정의된 함수의 호출을 포함하고, 함수에 대한 입력 데이터의 세트를 나타낸다.
402에서, 컴퓨팅 서비스 관리자(112)는 함수 호출자(400)의 컴퓨팅 디바이스(401)로부터 질의를 수신한 것에 응답하여, 함수 호출자(400)가 함수를 호출하기 위한 적절한 사용 권한을 갖는지, 및 함수의 타겟 엔드포인드(예를 들어, 엔드포인트(304))가 허용 가능한/제한된 URL을 정의하는 방식(예를 들어, 화이트리스트 및/또는 블랙리스트)을 기초로 허용되는지를 검증하기 위해 통합 객체(200) 및 함수 객체(300)로부터의 정보에 액세스한다.
함수 호출자(400)가 적절한 사용 권한을 갖고 타겟 엔드포인트가 허용되는 경우, 컴퓨팅 서비스 관리자(112)는 406에서, 사용자 레코드(214)와 연관된 리소스 식별자, 역할(204)과 연관된 리소스 식별자, 및 사용자 레코드(214)와 연관된 장기 보안 크리덴셜을 획득한다. 장기 보안 크리덴셜은 인가되지 않은 액세스를 감소시키기(mitigate) 위해 암호화될 수 있고, 데이터베이스(116), 컴퓨팅 서비스 관리자(112)의 캐시 메모리 구성요소, 또는 둘 모두에 저장될 수 있다.
406에서, 컴퓨팅 서비스 관리자(112)는 역할(204)을 맡기 위한 임시 보안 크리덴셜을 획득하기 위해 액세스 관리 시스템(110)과 함께 동작한다. 임시 보안 크리덴셜은 시간 제한(예를 들어, 1시간)에 도달한 이후에 만료된다. 임시 보안 크리덴셜은 또한, 구체적으로 원격 소프트웨어 구성요소(108)에 요청을 전송하는 데 사용하기 위한 범주에서 제한된다. 임시 보안 크리덴셜은 임시 보안 크리덴셜에 대한 요청을 클라우드 컴퓨팅 서비스 플랫폼(104)의 액세스 관리 시스템(118)에 송신함으로써 획득될 수 있다. 요청은 사용자 레코드(214)에 대응하는 리소스 식별자, 역할(204)에 대응하는 리소스 식별자, 및 사용자 레코드(214)와 연관된 장기 보안 크리덴셜을 포함하거나 또는 나타낼 수 있다. 액세스 관리 시스템(118)은 요청에 응답하여 임시 보안 크리덴셜을 제공한다. 임시 보안 크리덴셜은 또한, 인가되지 않은 액세스 및 사용을 제한하기 위해 암호화된다.
408에서, 컴퓨팅 서비스 관리자(112)는 처리될 데이터 및 수행될 동작을 지정하는 실행 계획을 생성하고, 이를 실행 플랫폼(114)에 제공한다. 실행 계획은 또한, 웹 API 관리 시스템(120)으로 인증하기 위해 사용될 타겟 엔드포인트(304) 및 임시 보안 크리덴셜을 식별한다. 실행 계획에 포함된 임시 보안 크리덴셜은 또한, 안전한 통신을 보장하기 위해 암호화된다. 실행 계획을 생성할 때, 외부 함수(예를 들어, 스칼라 함수, 테이블 함수 또는 저장된 프로시저)는 타겟 엔드포인트(304) URL 및 다른 파라미터와 함께 규격 기술 언어(specification and description language, SDL) 노드로 변환될 수 있다. 실행 플랫폼(114)은 소비된 데이터를 추출하기 위해 실행 계획을 기초로 질의 계획을 생성하고, 필요에 따라 하위-열에서 샤딩되는(sharded) 열을 구축한다.
410에서, 실행 플랫폼(114)은 하나 이상의 요청(예를 들어, HTTP 요청)을 웹 API 관리 시스템(120)에 전송함으로써 질의 계획을 실행한다. 실행 플랫폼(114)은 요청을 웹 API 관리 시스템(120)에 전달할 때 전송 계층 보안(Transport Layer Security, TLS) 프로토콜을 이용할 수 있다. 각 요청은 원격 소프트웨어 구성요소(108)에 대한 웹 호출을 수행하기 위한 입력 행의 집합뿐만 아니라 다른 메타데이터를 포함할 수 있다. 데이터는 JSON, Apache Arrow 또는 XML 포맷과 같은 헤더 및 메시지 본문의 조합으로 전달할 수 있다. 각 원격 프로시저 호출의 네트워크 오버헤드를 감소시키기 위해, 행은 요청으로 배칭(batching)될 수 있다. 배칭은 사용자 지정 최대 배치 크기(예를 들어, 함수 정의에 포함됨), 웹 API 관리 시스템(120)에 의해 허용되는 최대 페이로드 크기, 또는 실행 플랫폼(114)에 의해 허용되는 최대 배치 크기(예를 들어, 바이트 또는 행)를 기초로 할 수 있다.
요청은 임시 보안 크리덴셜을 사용하여 전자적으로 서명되고 인증된다. 412에서, 웹 API 관리 시스템(120)은 각 수신된 요청을 인증하기 위해 액세스 관리 시스템(118)과 함께 동작하고, 역할(204)이 엔드포인트(304)에 대응하는 원격 소프트웨어 구성요소(108)에 웹 호출을 하기 위한 적절한 권한을 가지고 있는지를 검증한다. 그러한 경우, 웹 API 관리 시스템(120)은 414에서, 입력 데이터의 세트에 대한 외부 기능을 호출하기 위해, 원격 컴퓨팅 환경(106)에 의해 제공된 원격 소프트웨어 구성요소(108)에 대한 API를 통해, 원격 소프트웨어 구성요소(108)에 하나 이상의 웹 호출을 함으로써 요청을 처리한다. 원격 소프트웨어 구성요소(108)는 416에서, 결과 데이터를 웹 API 관리 시스템(120)에 다시 전달하고, 웹 API 관리 시스템(120)은 응답을 실행 플랫폼(114)에 다시 전달한다. 결과 데이터는 JSON, Apache Arrow 또는 XML로 인코딩된 데이터를 포함할 수 있다.
실행 플랫폼(114)은 웹 API 관리 시스템(120)으로부터 응답을 수신하고, 실행 플랫폼(114)은 결과 데이터를 추출하기 위해 응답을 파싱한다. 실행 플랫폼(114)에 의해 추출된 결과 데이터는 JSON, Apache Arrow, 또는 XML 인코딩 데이터를 포함할 수 있다. 실행 플랫폼(114)은 질의 계획에 따라 결과 데이터를 처리한다. 결과 데이터를 처리하는 것은 결과 데이터를 저장하는 것 및/또는 결과 데이터에 대해 하나 이상의 동작을 수행하는 것을 포함할 수 있다.
일부 실시예에서, 질의 계획을 실행하는 것의 일부로서, 실행 플랫폼(114)은 네트워크-기반 데이터 웨어하우스 시스템(102), 클라우드 컴퓨팅 서비스 플랫폼(104) 및 원격 컴퓨팅 환경(106)에 의해 일반적으로 액세스 가능한 제1 임시 데이터 저장소에 데이터를 기록함으로써 웹 API 관리 시스템(120)에 데이터를 전달할 수 있다. 데이터 저장소는 클라우드 컴퓨팅 서비스 플랫폼(104)(예를 들어, AWS S3®)에 의해 제공될 수 있다. 이 실시예에서, 실행 플랫폼(114)은 데이터 저장소 및 매니페스트(manifest)에 대응하는 전자적으로 서명된 URL을 포함하는 웹 API 관리 시스템(120)에 요청을 전송한다. 원격 소프트웨어 구성요소(108)는 제1 임시 데이터 저장소로부터 데이터를 판독하고, 데이터에 대한 외부 기능을 실행하고, 실행 플랫폼(114)에 의해 판독될 수 있는 결과 데이터를 제2 임시 데이터 저장소에 기록하고, 응답을 다시 웹 API 관리 시스템(120)에 전송한다.
실행 플랫폼(114)에 의해 실행되는 프로세스는 질의가 완료되거나 질의가 실패할 때 임시 데이터 저장소를 정리한다. 데이터는 각 질의에 특정한 도출된 키(derived key)를 사용하여 서버 측에서 암호화된다. 키는 TLS를 통해 HTTP 요청에서 전송될 수 있으며, 임시 데이터 저장소로부터 데이터를 판독할 때 원격 소프트웨어 구성요소(108)에 의해 사용된다.
일부 실시예에서, 웹 API 관리 시스템(120)은 들어오는 요청에 대해 시간 제한(예를 들어, 30초)을 부과하는 하드 타임아웃(hard timeout)을 적용한다. 이는 외부 테이블 함수와 같이 실행할 시간 제한보다 더 긴 것을 필요로 하는 요청에 문제가 될 수 있다. 이 시나리오를 지원하기 위해, 실행 플랫폼(114)은 일부 실시예에서, 단일 논리적 요청이 다음 상태: 1) 요청 시작; 2) 상태 폴링(poll status); 및 3) 결과 판독을 통해 상태 머신으로서 구현되는 비동기 모델을 사용할 수 있다. 이 방식으로, 요청을 시작한 이후에, 실행 플랫폼(114)은 요청의 상태에 대해 웹 API 관리 시스템(120)을 폴링하도록 진행할 수 있고, 결과 데이터가 준비될 때까지 계속 그렇게 할 수 있다. 일부 실시예에서, 실행 플랫폼(114)은 웹 API 관리 시스템(120)에 의해 부과된 하드 타임아웃을 처리하기 위해 웹후크-스타일 콜백 메커니즘(webhook-style callback mechanism)을 이용한다.
일부 경우에서, 임시 크리덴셜은 원격 소프트웨어 구성요소(108)에 대한 웹 호출 동안, 또는 웹 API 관리 시스템(120)으로부터의 응답을 기다리는 동안 만료될 수 있다. 이 경우에서, 실행 플랫폼(114)은 임시 보안 크리덴셜을 새로고침하기 위해 컴퓨팅 서비스 관리자와 함께 동작하며, 임시 보안 크리덴셜을 새로고침할 시 추가적인 요청을 웹 엔드포인트(304)에 전달할 수 있다.
도 5는 본 개시의 일부 실시예에 따른, 통합 객체(예를 들어, 통합 객체(200))를 생성하기 위한 방법(500)을 수행함에 있어서 네트워크-기반 데이터 웨어하우스 시스템(102), 클라우드 컴퓨팅 서비스 플랫폼(104), 및 원격 컴퓨팅 환경(106) 사이의 상호작용을 예시하는 상호작용 도면이다.
동작(502)에서, 클라우드 컴퓨팅 서비스 플랫폼(104)은 원격 소프트웨어 구성요소(108)에 대응하는 엔드포인트(304)를 호출하기 위한 권한을 갖는 역할(204)을 생성한다. 클라우드 컴퓨팅 서비스 플랫폼(104)은 관리 사용자(202)에 의해 동작되는 컴퓨팅 디바이스(203)로부터 수신된 입력을 기초로 역할(204)을 생성한다. 예를 들어, 관리 사용자(202)는 액세스 관리 시스템(118)이 역할(204)을 생성하게 하기 위한 적절한 입력을 제공하기 위해 클라우드 컴퓨팅 서비스 플랫폼(104)에 의해 컴퓨팅 디바이스(203)에 제공된 사용자 인터페이스를 이용할 수 있다. 클라우드 컴퓨팅 서비스 플랫폼(104)은 역할(204)이 생성되면 리소스 식별자를 역할(204)에 할당하고, 대역 외 통신에서 관리 사용자(202)는 네트워크-기반 데이터 웨어하우스 시스템(102)의 관리 사용자(206)에게 리소스 식별자를 전달한다.
동작(504)에서, 컴퓨팅 서비스 관리자(112)는 (예를 들어, 네트워크-기반 데이터 웨어하우스 시스템(102)에 의해 컴퓨팅 디바이스(207)에 제공된 UI를 통해) 관리 사용자(206)에 의해 제공된 입력을 기초로 데이터베이스(116)에 통합 객체(200)를 생성한다. 관리 사용자(206)에 의해 제공되는 입력은 역할(204)과 연관된 리소스 식별자 및 타겟 URL에 기초한 웹 호출을 허용/거부하기 위한 방식을 정의하는 데이터를 포함한다. 컴퓨팅 서비스 관리자(112)에 의해 생성된 통합 객체(200)는: 역할(204)과 연관된 리소스 식별자에 대한 참조(210), 사용자 레코드(214)와 연관된 리소스 식별자에 대한 참조(212); 및 방식을 정의하는 데이터를 포함한다. 일부 실시예에서, 통합 객체(200)는 컴퓨팅 서비스 관리자(112)에 의해 생성된 외부 ID 스트링에 대한 참조를 더 포함할 수 있다.
관리 사용자(206)는 사용자 레코드(214)의 리소스 식별자 및 일부 실시예에서 통합 객체(200)에 포함된 외부 ID 스트링을 추출하고, 사용자 레코드(214)의 리소스 식별자 및 외부 ID 스트링을 대역 외 통신으로 관리 사용자(202)에게 전달한다.
동작(506)에서, 클라우드 컴퓨팅 서비스 플랫폼(104)은 사용자 레코드(214)의 리소스 식별자 및 일부 실시예에서 외부 ID 스트링을 포함하는 관리 사용자(202)로부터의 입력에 기초하여 역할(204)과 사용자 레코드(214) 사이의 신뢰 관계를 확립한다. 클라우드 컴퓨팅 서비스 플랫폼(104)은 사용자 레코드(214)에 대응하는 사용자가 역할(204)을 맡고, 웹 API 관리 시스템(120)을 통해 원격 소프트웨어 구성요소(108)에 웹 호출을 전송하는 것을 가능하게 하도록 신뢰 관계를 확립한다. 신뢰 관계를 설정하는 것의 일부로서, 역할(204)은 일부 실시예에서, 외부 ID 스트링 및 사용자 레코드(214)에 대한 참조(216)를 포함하도록 업데이트된다.
동작(508)에서, 컴퓨팅 서비스 관리자(112)는 컴퓨팅 디바이스(207)에 제공된 UI를 통해 관리 사용자(206)에 의해 제공된 입력에 기초하여 관리 사용자(206)와 연관된 하나 이상의 사용자에게 통합 객체(200)에 대한 사용 권한을 부여한다.
도 6은 본 개시의 일부 실시예에 따른, 함수 객체(300)를 생성할 때 네트워크-기반 데이터 웨어하우스 시스템(102), 클라우드 컴퓨팅 서비스 플랫폼(104), 원격 컴퓨팅 환경(106) 사이의 상호작용을 예시하는 상호작용 도면이다. 동작(602)에서, 웹 API 관리 시스템(120)은 원격 소프트웨어 구성요소(108)에 대응하는 타겟 엔드포인트(304)를 포함하도록 함수 작성자(306)에 의해 구성된다. 함수 작성자(306)는 클라우드 컴퓨팅 서비스 플랫폼(104)에 의해 컴퓨팅 디바이스(307)에 제공되는 UI를 사용하여 웹 API 관리 시스템(120)을 구성할 수 있다.
동작(604)에서, 컴퓨팅 서비스 관리자(112)는 컴퓨팅 디바이스(307)로부터, 통합 객체(200) 및 타겟 엔드포인트(304)(예를 들어, URL)를 식별하는 함수 정의를 수신한다. 함수 정의는 네트워크-기반 데이터 웨어하우스 시스템(102)에 의해 컴퓨팅 디바이스(307)에 제공된 UI를 사용하여 함수 작성자(306)에 의해 지정될 수 있다.
동작(606)에서, 컴퓨팅 서비스 관리자(112)는 허용 가능한/제한된 URL을 정의하는 방식에 의해 타겟 엔드포인트가 허용되는지를 검증한다. 그것이 허용되지 않는 경우, 컴퓨팅 서비스 관리자(112)는 함수 정의를 거부한다. 그렇지 않으면, 컴퓨팅 서비스 관리자(112)는 동작(608)에서, 원격 소프트웨어 구성요소(108)에 의해 제공되는 외부 기능을 호출하기 위해 질의(예를 들어, SQL 질의)에서 사용될 수 있는 함수를 정의하는 함수 객체(300)를 데이터베이스(116)에 생성한다. 함수 객체(300)는 통합 객체(200)에 대한 참조(308)(예를 들어, 포인터) 및 타겟 엔드포인트(304)에 대한 참조(314)(예를 들어, 포인터)를 포함한다. 동작(610)에서, 컴퓨팅 서비스 관리자(112)는 컴퓨팅 디바이스(307)에 제공된 UI를 통해 함수 작성자(306)에 의해 제공되는 입력을 기초로 함수 작성자(306)와 연관된 하나 이상의 사용자에게 함수 객체(300)에 대한 사용 권한을 부여한다.
도 7은 본 개시의 일부 실시예에 따른, 원격 소프트웨어 구성요소(108)에 의해 제공되는 외부 기능을 호출할 때 네트워크-기반 데이터 웨어하우스 시스템(102), 클라우드 컴퓨팅 서비스 플랫폼(104), 및 원격 컴퓨팅 환경(106)의 구성요소 사이의 상호작용을 예시하는 상호작용 도면이다.
동작(702)에서, 네트워크-기반 데이터 웨어하우스 시스템(102)은 함수 호출자(400)에 의해 동작되는 컴퓨팅 디바이스(401)로부터 질의를 수신한다. 질의는 함수 객체(300)에 의해 정의된 함수의 호출을 포함하고, 함수에 대한 입력 데이터의 세트를 나타낸다. 질의를 수신하는 것에 응답하여, 네트워크-기반 데이터 웨어하우스 시스템(102)은 동작(704)에서, 함수 호출자(400)가 함수를 호출하기 위한 적절한 사용 권한을 가지고 있음을 검증한다. 동작(706)에서, 네트워크-기반 데이터 웨어하우스 시스템(102)은 질의에서 참조된 함수의 타겟 엔드포인트(예를 들어, 엔드포인트(304))가 허용 가능한/제한된 URL(예를 들어, 화이트리스트 및/또는 블랙리스트)을 정의하는 방식을 기초로 허용되는지 검증한다.
함수 호출자(400)가 적절한 사용 권한을 갖고 타겟 엔드포인트가 허용되는 경우, 컴퓨팅 서비스 관리자(112)는 동작(708)에서 역할(204)을 맡기 위한 임시 보안 크리덴셜을 획득한다. 임시 보안 크리덴셜은 임시 보안 크리덴셜에 대한 요청을 클라우드 컴퓨팅 서비스 플랫폼(104)의 액세스 관리 시스템(118)에 송신함으로써 획득될 수 있다. 요청은 사용자 레코드(214)에 대응하는 리소스 식별자, 역할(204)에 대응하는 리소스 식별자, 및 사용자 레코드(214)와 연관된 장기 보안 크리덴셜을 포함하거나 또는 이를 나타낼 수 있다.
동작(710)에서, 네트워크-기반 데이터 웨어하우스 시스템(102)은 (예를 들어, TLS 프로토콜을 사용하여) 클라우드 컴퓨팅 서비스 플랫폼(104)의 웹 API 관리 시스템(120)에 하나 이상의 요청(예를 들어, HTTP 요청)을 전송한다. 각 요청은 원격 소프트웨어 구성요소(108)에 대한 웹 호출을 수행하기 위한 다른 메타데이터뿐만 아니라 입력 행의 집합을 포함할 수 있다.
웹 API 관리 시스템(120)은 동작(712)에서 각 수신된 요청을 인증하기 위해, 클라우드 컴퓨팅 서비스 플랫폼(104)의 액세스 관리 시스템(118)과 함께 동작한다. 동작(714)에서, 클라우드 컴퓨팅 서비스 플랫폼(104)의 웹 API 관리 시스템(120)은 입력 데이터의 세트와 관련하여 외부 기능을 호출하기 위해, 원격 컴퓨팅 환경(106)에 의해 제공되는 원격 소프트웨어 구성요소(108)에 대한 API를 통해 원격 소프트웨어 구성요소(108)에 하나 이상의 웹 호출을 전송함으로써 요청을 처리한다.
동작(716)에서, 원격 컴퓨팅 환경(106)은 입력으로서 제공된 입력 데이터로 원격 소프트웨어 구성요소(108)를 실행하고, 그렇게 함으로써 원격 컴퓨팅 환경(106)은 결과 데이터(예를 들어, JSON, Apache Arrow, 또는 XML 포맷)를 생성한다. 원격 컴퓨팅 환경(106)은 동작(718)에서 결과 데이터를 웹 API 관리 시스템(120)에 다시 전달한다. 동작(720)에서, 웹 API 관리 시스템(120)은 결과 데이터(예를 들어, JSON, Apache Arrow, 또는 XML 포맷)를 포함하는 실행 플랫폼(114)에 응답을 다시 전달한다.
네트워크-기반 데이터 웨어하우스 시스템(102)은 결과 데이터(예를 들어, JSON, Apache Arrow 또는 XML 포맷)를 추출하기 위해, 동작(722)에서 응답을 파싱한다. 동작(724)에서, 실행 플랫폼(114)은 (예를 들어, 결과 데이터를 저장하거나 및/또는 결과 데이터에 대해 하나 이상의 동작을 수행함으로써) 결과 데이터를 처리한다.
도 8은 본 개시의 일부 실시예에 따른, 네트워크-기반 데이터 웨어하우스 시스템(102)이 원격 소프트웨어 구성요소(108)에 의해 제공되는 외부 기능을 호출하는 것을 가능하게 하기 위한 방법(800)을 수행할 때 네트워크-기반 데이터 웨어하우스 시스템(102)의 동작을 예시하는 흐름도이다. 방법(800)은 방법(800)의 동작이 네트워크-기반 데이터 웨어하우스 시스템(102)의 구성요소에 의해 수행될 수 있도록 하드웨어 구성요소(예를 들어, 프로세서)에 의한 실행을 위한 컴퓨터 판독가능 명령어로 구현될 수 있다. 따라서, 방법(800)은 이를 참조하여 예시로서 아래에서 설명된다. 하지만, 방법(800)은 다양한 다른 하드웨어 구성에서 전개될(deployed) 수 있고, 네트워크-기반 데이터 웨어하우스 시스템(102) 내의 전개로 제한되는 것으로 의도되지 않는다는 것이 인식될 것이다.
동작(805)에서, 컴퓨팅 서비스 관리자(112)는 네트워크-기반 데이터 웨어하우스 시스템(102)의 제1 사용자(예를 들어, 사용자(206))에 대응하는 제1 컴퓨팅 디바이스(예를 들어, 컴퓨팅 디바이스(207))로부터 수신된 제1 입력을 기초로 통합 객체(예를 들어, 통합 객체(200))를 생성한다. 제1 사용자는 예를 들어, 네트워크-기반 데이터 웨어하우스 시스템(102)에 의해 컴퓨팅 디바이스에 제공된 UI를 사용하여 입력을 제공할 수 있다. 입력은 클라우드 컴퓨팅 서비스 플랫폼(104)에서의 역할(예를 들어, 역할(204))에 대응하는 제1 리소스 식별자, 및 웹 호출이 전송될 수 있는 허용 가능한/제한된 URL(예를 들어, URL의 화이트리스트 및/또는 블랙리스트)을 정의하는 방식을 포함한다. 제1 리소스 식별자는 클라우드 컴퓨팅 서비스 플랫폼(104)의 관리 사용자(예를 들어, 역할을 생성한 관리 사용자)에 의해 제1 사용자에게 전달될 수 있다.
통합 객체를 생성하는 것의 일부로서, 컴퓨팅 서비스 관리자(112)는 통합에 할당하기 위해 네트워크-기반 데이터 웨어하우스 시스템(102)의 액세스 관리 시스템(110)에 의해 유지되는 사용자 레코드(예를 들어, 사용자 레코드(214))에 대응하는 제2 리소스 식별자를 식별한다. 일부 실시예에서, 컴퓨팅 서비스 관리자(112)는 또한, 클라우드 컴퓨팅 서비스 플랫폼(104)에서의 역할과 사용자 레코드 사이의 신뢰 관계를 확립하기 위해 사용될 수 있는 외부 ID 스트링을 생성한다. 또한, 컴퓨팅 서비스 관리자(112)는 하나 이상의 사용자(예를 들어, 네트워크-기반 데이터 웨어하우스의 관리 사용자에 의해 지정된 사용자)에게 통합에 대한 사용 권한을 또한 부여할 수 있다.
통합 객체는: 클라우드 컴퓨팅 서비스 플랫폼(104)에서의 역할에 대응하는 제1 리소스 식별자에 대한 참조, 네트워크-기반 데이터 웨어하우스 시스템(102)에 의해 유지되는 사용자 레코드에 대응하는 제2 리소스 식별자에 대한 참조, 타겟 URL을 기초로 하는 웹 호출을 허용/거부하기 위한 방식을 정의하는 데이터, 및 일부 실시예에서 외부 ID 스트링에 대한 참조를 포함한다. 네트워크-기반 데이터 웨어하우스의 관리 사용자는 클라우드 컴퓨팅 서비스 플랫폼(104)의 관리 사용자에게 제2 리소스 식별자 및 외부 ID 스트링을 전달할 수 있고, 클라우드 컴퓨팅 서비스 플랫폼의 관리 사용자는 역할과 사용자 레코드 사이의 신뢰 관계를 차례로 생성할 수 있다.
동작(810)에서, 컴퓨팅 서비스 관리자(112)는 액세스 관리 시스템(110)에 의해 유지되는 사용자 레코드에 대한 참조 및 클라우드 컴퓨팅 서비스 플랫폼(104)에 의해 유지되는 역할에 대한 참조와 함께, 통합 객체를 데이터베이스(116)에 저장한다. 예를 들어, 컴퓨팅 서비스 관리자(112)는 사용자 레코드에 대응하는 제1 포인터 및 역할에 대응하는 제2 포인터와 통합 객체를 저장할 수 있다.
동작(815)에서, 컴퓨팅 서비스 관리자(112)는 데이터 웨어하우스 시스템(102)의 제2 사용자(예를 들어, 함수 작성자(306))에 대응하는 제2 컴퓨팅 디바이스(예를 들어, 컴퓨팅 디바이스(203))로부터 수신된 제2 입력을 기초로 함수 객체(예를 들어, 함수 객체(300))를 생성한다. 함수 객체는 통합 객체에 대한 참조 및 원격 소프트웨어 구성요소(108)에 대응하는 웹 API 관리 시스템(120)에서의 타겟 엔드포인트(예를 들어, 타겟 엔드포인트(304))에 대한 참조를 포함한다. 제2 입력은 타겟 엔드포인트 및 통합 객체를 식별할 수 있다. 예를 들어, 제2 입력은 타겟 엔드포인트에 대응하는 URL 및 통합 객체에 대응하는 리소스 식별자를 포함할 수 있다. 함수 객체를 생성하기 전에, 컴퓨팅 서비스 관리자(112)는 타겟 엔드포인트를 허용 가능한/제한된 URL을 정의하는 방식에 비교함으로써 타겟 엔드포인트가 허용되는지를 검증한다.
동작(820)에서, 컴퓨팅 서비스 관리자(112)는 통합 객체에 대한 참조 및 웹 API 관리 시스템(120)에서의 타겟 엔드포인트에 대한 참조와 함께 함수 객체를 저장한다. 예를 들어, 컴퓨팅 서비스 관리자(112)는 통합 객체에 대응하는 제1 포인터 및 웹 API 관리 시스템(120)에서 타겟 엔드포인트에 대응하는 제2 포인터와 함께 함수 객체를 저장할 수 있다.
도 9-11은 본 개시의 일부 실시예에 따른, 원격 소프트웨어 구성요소(108)에 의해 제공되는 외부 기능을 호출하기 위한 방법(900)을 수행할 때 네트워크-기반 데이터 웨어하우스 시스템(102)의 동작을 예시하는 흐름도이다. 방법(900)은 방법(900)의 동작이 네트워크-기반 데이터 웨어하우스 시스템(102)의 구성요소에 의해 수행될 수 있도록 하드웨어 구성요소(예를 들어, 프로세서)에 의한 실행을 위한 컴퓨터 판독가능 명령어로 구현될 수 있다. 따라서, 방법(900)은 이를 참조하여 예시로서 아래에서 설명된다. 하지만, 방법(900)이 다양한 다른 하드웨어 구성 상에서 전개될 수 있고, 네트워크-기반 데이터 웨어하우스 시스템(102) 내의 전개로 제한되는 것으로 의도되지 않는다는 것이 인식될 것이다.
일부 실시예에서, 방법(900)은 네트워크-기반 데이터 웨어하우스 시스템(102)이 통합 객체 및 함수 객체를 생성하고 및 저장함으로써 외부 기능의 호출을 가능하게 하는 방법(800)에 후속하여 수행된다. 이 실시예와 일치하는, 방법(900)은 방법(800)의 동작(805, 810, 815, 및 820)을 포함한다.
동작(905)에서, 컴퓨팅 서비스 관리자(112)는 원격 소프트웨어 구성요소(108)와 연관된 함수에 대한 참조를 포함하는 제3 사용자(예를 들어, 함수 호출자(400))의 컴퓨팅 디바이스로부터 질의를 수신한다. 예시로서, 원격 소프트웨어 구성요소(108)는 스칼라 함수, 테이블 함수, 저장된 프로시저를 포함할 수 있다. 질의는 함수에 대한 입력 데이터의 세트를 더 나타낸다.
동작(910)에서, 컴퓨팅 서비스 관리자(112)는 질의에 포함된 함수에 대한 참조를 기초로 함수에 대응하는 함수 객체(예를 들어, 함수 객체(300))에 액세스한다. 함수 객체는 원격 소프트웨어 구성요소(108)와 연관된 통합 객체에 대한 연관(예를 들어, 포인터)과 저장되고, 컴퓨팅 서비스 관리자(112)는 통합 객체를 식별하기 위해 함수 객체에서 이 정보를 사용한다.
동작(915)에서, 컴퓨팅 서비스 관리자(112)는 함수 객체와의 연관을 기초로 데이터베이스(116)로부터 통합 객체(예를 들어, 통합 객체(200))에 액세스한다. 통합 객체는 액세스 관리 시스템(110)에 의해 유지되는 사용자 레코드에 대한 참조, 및 클라우드 컴퓨팅 서비스 플랫폼(104)의 액세스 관리 시스템(118)에 의해 유지되는 역할(예를 들어, 역할(204))에 대한 참조를 포함한다.
동작(920)에서, 컴퓨팅 서비스 관리자(112)는 클라우드 컴퓨팅 서비스 플랫폼(104)에서의 역할을 맡기 위해 웹 API 관리 시스템(120)을 통해 인증하는데 사용될 임시 보안 크리덴셜을 획득한다. 임시 보안 크리덴셜은 시간 제한(예를 들어, 1시간)에 도달한 이후에 만료되며, 구체적으로 원격 소프트웨어 구성요소(108)에 의해 제공되는 외부 기능을 호출할 때 사용하기 위한 범주로 제한된다.
동작(925)에서, 실행 플랫폼(114)은 원격 소프트웨어 구성요소(108)에 의해 제공되는 외부 기능을 호출하기 위해 클라우드 컴퓨팅 서비스 플랫폼(104)의 웹 API 관리 시스템(120)에 하나 이상의 요청(예를 들어, 하나 이상의 HTTP 요청)을 전송한다. 하나 이상의 요청은 입력 데이터 및 원격 소프트웨어 구성요소(108)에 대응하는 타겟 엔드포인트에 대한 참조를 포함하고, 임시 보안 크리덴셜을 사용하여 전자적으로 서명된다. 하나 이상의 요청은 액세스 관리 시스템(118)에 의해 인증되고, 웹 API 관리 시스템(120)이 원격 소프트웨어 구성요소(108)에 의해 제공되는 외부 기능을 호출하게 한다. 예를 들어, 요청은 웹 API 관리 시스템(120)이 (예를 들어, 원격 컴퓨팅 환경(106)에 의해 제공되는 API를 통해) 원격 소프트웨어 구성요소(108)에 하나 이상의 웹 호출을 전송하게 할 수 있다. 원격 소프트웨어 구성요소(108)는 차례로, 스칼라 함수, 테이블 함수 또는 프로시저를 실행하고, 이를 기초로 결과 데이터를 생성한다. 원격 소프트웨어 구성요소(108)는 웹 API 관리 시스템(120)에 결과 데이터를 (예를 들어, 하나 이상의 HTTP 응답으로) 다시 전달한다. 웹 API 관리 시스템(120)은 실행 플랫폼(114)에 요청에 대한 응답을 전달한다. 결과 데이터는 JSON, Apache Arrow 또는 XML로 인코딩된 데이터를 포함할 수 있다.
동작(930)에서, 실행 플랫폼(114)은 컴퓨팅 서비스 관리자(112)로부터 요청에 대한 응답을 수신하고, 동작(935)에서 실행 플랫폼(114)은 결과 데이터를 추출하기 위해 응답을 파싱한다. 실행 플랫폼(114)에 의해 추출된 결과 데이터는 JSON, Apache Arrow, 또는 XML 인코딩 데이터를 포함할 수 있다.
동작(940)에서, 실행 플랫폼(114)은 결과 데이터를 처리한다. 결과 데이터를 처리하는 것은 결과 데이터를 저장하는 것 및/또는 결과 데이터에 대해 하나 이상의 동작을 수행하는 것을 포함할 수 있다.
도 10에 도시된 바와 같이, 방법(900)은 일부 실시예에서 동작(1005, 1010, 1015, 및 1020)을 더 포함할 수 있다. 이 실시예와 일치하는, 동작(1005 및 1010)은 컴퓨팅 서비스 관리자(112)가 통합 객체에 액세스하는 동작(915)에 후속하여 수행된다. 동작(1005)에서, 컴퓨팅 서비스 관리자(112)는 제3 사용자(예를 들어, 함수 호출자(400))가 통합 객체에 의해 표시되는 사용 권한을 기초로 통합을 이용하기 위한 사용 권한을 가지고 있는지를 검증한다. 동작(1010)에서, 컴퓨팅 서비스 관리자(112)는 통합 객체에 의해 표시되는 허용 가능한/제한된 URL을 정의하는 방식과 타겟 엔드포인트의 비교를 기초로 질의에 포함된 타겟 엔드포인트가 허용되는지를 검증한다.
이 실시예와 일치하는, 동작(1015 및 1020)은 동작(920)의 일부로서(예를 들어, 하위 동작 또는 서브루틴으로서) 수행될 수 있고, 여기서 컴퓨팅 서비스 관리자(112)는 클라우드 컴퓨팅 서비스 플랫폼(104) 역할을 맡기 위해 임시 보안 크리덴셜을 획득한다.
동작(1015)에서, 컴퓨팅 서비스 관리자(112)는 데이터 클라우드 창고 시스템(102)에서의 사용자 레코드와 연관된 장기 보안 크리덴셜에 액세스한다. 장기 보안 크리덴셜은 데이터베이스 및/또는 컴퓨팅 서비스 관리자(112)의 캐시 메모리 구성요소에 암호화된 형식으로 저장될 수 있다.
동작(1020)에서, 컴퓨팅 서비스 관리자(112)는 임시 보안 크리덴셜에 대한 요청을 클라우드 컴퓨팅 서비스 플랫폼(104)의 액세스 관리 시스템(118)에 송신한다. 요청은 데이터 웨어하우스 시스템(102)의 사용자 레코드에 대응하는 제1 리소스 식별자, 클라우드 컴퓨팅 서비스 플랫폼 역할에 대응하는 제2 리소스 식별자, 및 사용자 레코드와 연관된 장기 보안 크리덴셜을 포함하거나 또는 이를 나타낼 수 있다. 클라우드 컴퓨팅 서비스 플랫폼(104)의 액세스 관리 시스템(118)은 요청에 응답하여 임시 보안 크리덴셜을 제공한다.
도 11에 도시된 바와 같이, 방법(900)은 일부 실시예에서 동작(1105 및 1110)을 포함할 수 있다. 이 실시예와 일치하는, 동작(1105 및 1110)은 실행 플랫폼(114)이 웹 API 관리 시스템(120)으로부터 응답을 수신하는 동작(930) 이전에 수행될 수 있다. 동작(1105)에서, 실행 플랫폼(114)은 임시 보안 크리덴셜의 만료를 검출한다. 예를 들어, 실행 플랫폼(114)은 만료 시간 제한에 도달하였다고 결정하는 것을 기초로, 또는 클라우드 컴퓨팅 서비스 플랫폼(104)으로부터 수신된 타임아웃 메시지를 기초로 임시 보안 크리덴셜의 만료를 검출할 수 있다. 일부 실시예에서, 실행 플랫폼(114)은 요청의 상태에 대해 웹 API 관리 시스템(120)을 폴링하고, 이에 대한 응답을 기초로 임시 크리덴셜의 만료를 검출할 수 있다.
동작(1110)에서, 컴퓨팅 서비스 관리자(112)는 실행 플랫폼(114)이 역할을 계속 맡는 것을 가능하게 하기 위해 임시 보안 크리덴셜을 새로고침한다. 예를 들어, 컴퓨팅 서비스 관리자(112)는 클라우드 컴퓨팅 서비스 플랫폼(104)의 액세스 관리 시스템(118)에 추가적인 요청을 전송함으로써 임시 보안 크리덴셜을 새로고침할 수 있다. 보안 크리덴셜을 새로고침할 시, 컴퓨팅 서비스 관리자(112)는 원격 소프트웨어 구성요소(108)에 의해 제공되는 외부 기능을 호출하기 위해 웹 API 관리 시스템(120)에 하나 이상의 추가 요청을 전송하도록 실행 플랫폼(114)을 프롬프트(prompt)할 수 있다. 일부 경우에서, 컴퓨팅 서비스 관리자(112)는 웹 API 관리 시스템(120)이 응답을 실행 플랫폼(114)에 다시 전달할 수 있음을 보장하기 위해 임시 보안 크리덴셜을 새로고침할 수 있다.
도 12는 본 개시의 일부 실시예에 따른, 컴퓨팅 서비스 관리자(112)의 구성요소를 예시하는 블록도이다. 도 12에 도시된 바와 같이, 요청 처리 서비스(1202)는 수신된 데이터 저장 요청 및 데이터 검색 요청(예를 들어, 데이터베이스 데이터에 대해 수행될 작업)을 관리한다. 예를 들어, 요청 처리 서비스(1202)는 수신된 질의(예를 들어, 데이터 저장 요청 또는 데이터 검색 요청)를 처리하기 위해 필요한 데이터를 결정할 수 있다. 데이터는 실행 플랫폼(114) 내의 캐시 또는 클라우드 컴퓨팅 서비스 플랫폼(104)의 데이터 저장 디바이스에 저장될 수 있다. 관리 콘솔 서비스(1204)는 관리자 및 다른 시스템 관리자에 의한 다양한 시스템 및 프로세스에 대한 액세스를 지원한다. 추가적으로, 관리 콘솔 서비스(1204)는 작업을 실행하고 시스템 상의 작업 부하를 모니터링하기 위한 요청을 수신할 수 있다.
컴퓨팅 서비스 관리자(112)는 또한, 작업 컴파일러(1206), 작업 최적화기(1208) 및 작업 실행기(1210)를 포함한다. 작업 컴파일러(1206)는 작업을 다수의 개별 태스크로 파싱하고, 다수의 개별 태스크의 각각에 대한 실행 코드를 생성한다. 작업 최적화기(1208)는 처리되어야 하는 데이터를 기초로 다수의 개별 태스크를 실행하기 위한 최선의 방법을 결정한다. 작업 최적화기(1208)는 또한, 작업을 실행하는 속도 및 효율성을 개선하기 위해 다양한 데이터 프루닝(data pruning) 동작 및 다른 데이터 최적화 기술을 처리한다. 작업 실행기(1210)는 큐로부터 수신되거나 컴퓨팅 서비스 관리자(112)에 의해 결정된 작업에 대한 실행 코드를 실행한다.
작업 스케줄러 및 조정기(1212)는 수신된 작업을 컴파일, 최적화 및 실행 플랫폼(114)으로의 디스패치를 위해 적절한 서비스 또는 시스템으로 전송한다. 예를 들어, 작업은 우선 순위가 지정되고 우선 순위가 지정된 순서로 처리될 수 있다. 실시예에서, 작업 스케줄러 및 조정기(1212)는 데이터베이스에서의 다른 시스템에 의해 스케줄링될 수 있지만 실행 플랫폼(114)에서 동일한 처리 리소스를 이용할 수 있는 사용자 질의와 같은 다른 "외부" 작업과 컴퓨팅 서비스 관리자(112)에 의해 스케줄링되는 내부 작업에 대한 우선순위를 결정한다. 일부 실시예에서, 작업 스케줄러 및 조정기(1212)는 특정 태스크를 처리하기 위해 실행 플랫폼(114)에서 특정 노드를 식별하거나 할당한다. 가상 웨어하우스 관리자(1214)는 실행 플랫폼(114)에서 구현된 다수의 가상 웨어하우스의 동작을 관리한다. 아래에서 논의되는 바와 같이, 각 가상 웨어하우스는 각각 캐시 및 프로세서를 포함하는 다수의 실행 노드를 포함한다.
추가적으로, 컴퓨팅 서비스 관리자(112)는 구성 및 메타데이터 관리자(1216)를 포함하며, 이는 원격 데이터 저장 디바이스 및 로컬 캐시(즉, 실행 플랫폼(114)에서의 캐시)에 저장된 데이터에 관련된 정보를 관리한다. 구성 및 메타데이터 관리자(1216)는 특정 태스크 또는 작업을 처리하기 위한 데이터를 검색하기 위해 어느 데이터 마이크로파티션이 액세스되어야 하는지를 결정하도록 메타데이터를 사용한다. 모니터 및 작업 부하 분석기(1218)는 컴퓨팅 서비스 관리자(112)에 의해 수행되는 프로세스를 감독하고, 가상 웨어하우스 및 실행 플랫폼(114)에서의 실행 노드에 걸친 태스크(예를 들어, 작업 부하)의 분배를 관리한다. 모니터 및 작업 부하 분석기(1218)는 또한, 데이터 웨어하우스(102) 전체에 걸쳐 작업 부하를 변경하는 것을 기초로, 필요에 따라 태스크를 재분배하고, 실행 플랫폼(114)에 의해 또한 처리될 수 있는 사용자(예를 들어, "외부") 질의 작업 부하를 기초로 태스크를 더 재분배할 수 있다. 구성 및 메타데이터 관리자(1216) 및 모니터 및 작업 부하 분석기(1218)는 데이터 저장 디바이스(1220)에 결합된다. 도 12에서의 데이터 저장 디바이스(1220)는 데이터 웨어하우스(102) 내의 임의의 데이터 저장 디바이스를 나타낸다. 예를 들어, 데이터 저장 디바이스(1220)는 실행 플랫폼(114)에서의 캐시, 클라우드 컴퓨팅 서비스 플랫폼(104)에서의 저장 디바이스, 또는 임의의 다른 저장 디바이스를 나타낼 수 있다.
도 13은 본 개시의 일부 실시예에 따른, 실행 플랫폼(114)의 구성요소를 예시하는 블록도이다. 도 13에 도시된 바와 같이, 실행 플랫폼(114)은 가상 웨어하우스 1, 가상 웨어하우스 2 및 가상 웨어하우스 n을 포함하는 다수의 가상 웨어하우스를 포함한다. 각 가상 웨어하우스는 각각 데이터 캐시 및 프로세서를 포함하는 다수의 실행 노드를 포함한다. 가상 웨어하우스는 다수의 실행 노드를 사용함으로써 다수의 태스크를 병렬로 실행할 수 있다. 본원에서 논의된 바와 같이, 실행 플랫폼(114)은 시스템 및 사용자의 현재 처리 요구를 기초로, 새로운 가상 웨어하우스를 추가하고 기존 가상 웨어하우스를 실시간으로 드롭(drop)할 수 있다. 이 유연성은 더 이상 필요하지 않을 때 이 컴퓨팅 리소스에 대한 비용을 계속 지불하도록 강제되지 않으면서, 필요할 때 실행 플랫폼(114)이 대량의 컴퓨팅 리소스를 빠르게 배포하는 것을 허용한다. 모든 가상 웨어하우스는 임의의 데이터 저장 디바이스(예를 들어, 클라우드 컴퓨팅 서비스 플랫폼(104)의 임의의 저장 디바이스)의 데이터에 액세스할 수 있다.
도 13에 도시된 각 가상 웨어하우스가 세 개의 실행 노드를 포함하지만, 특정한 가상 웨어하우스는 임의의 개수의 실행 노드를 포함할 수 있다. 또한, 추가적인 요구가 존재할 때 새로운 실행 노드가 생성되고 더 이상 필요하지 않을 때 기존의 실행 노드가 삭제되도록, 가상 웨어하우스에서 실행 노드의 개수는 동적이다.
각 가상 웨어하우스는 도 1에 도시된 데이터 저장 디바이스(124-1 내지 124-n) 중 임의의 것에 액세스할 수 있다. 따라서, 가상 웨어하우스는 특정 데이터 저장 디바이스(124-1 내지 124-n)에 할당될 필요는 없으며, 그 대신에 클라우드 컴퓨팅 서비스 플랫폼(104) 내의 데이터 저장 디바이스(124-1 내지 124-n) 중 임의의 것으로부터 데이터에 액세스할 수 있다. 유사하게, 도 13에 도시된 실행 노드의 각각은 데이터 저장 디바이스(124-1 내지 124-n) 중 임의의 것으로부터 데이터에 액세스할 수 있다. 일부 실시예에서, 특정 가상 웨어하우스 또는 특정 실행 노드가 특정 데이터 저장 디바이스에 일시적으로 할당될 수 있지만, 가상 웨어하우스 또는 실행 노드는 나중에 임의의 다른 데이터 저장 디바이스로부터 데이터에 액세스할 수 있다.
도 13의 예시에서, 가상 웨어하우스 1은 세 개의 실행 노드(1302-1, 1302-2 및 1302-n)를 포함한다. 실행 노드(1302-1)는 캐시(1304-1) 및 프로세서(1306-1)를 포함한다. 실행 노드(1302-2)는 캐시(1304-2) 및 프로세서(1306-2)를 포함한다. 실행 노드(1312-n)는 캐시(1314-n) 및 프로세서(1316-n)를 포함한다. 각 실행 노드(1302-1, 1302-2 및 1302-n)는 하나 이상의 데이터 저장 및/또는 데이터 검색 태스크를 처리하는 것과 연관된다. 예를 들어, 가상 웨어하우스는 클러스터링 서비스, 구체화된 뷰 새로고침 서비스, 파일 압축 서비스, 저장 프로시저 서비스(storage procedure service) 또는 파일 업그레이드 서비스와 같이, 내부 서비스와 연관된 데이터 저장 및 데이터 검색 태스크를 처리할 수 있다. 다른 구현에서, 특정 가상 웨어하우스는 특정 데이터 저장 시스템 또는 데이터의 특정 카테고리와 연관된 데이터 저장 및 데이터 검색 태스크를 처리할 수 있다.
위에서 논의된 가상 웨어하우스 1과 유사하게, 가상 웨어하우스 2는 세 개의 실행 노드(1312-1, 1312-2 및 1312-n)를 포함한다. 실행 노드(1312-1)는 캐시(1314-1) 및 프로세서(1316-1)를 포함한다. 실행 노드(1312-n)는 캐시(1314-n) 및 프로세서(1316-n)를 포함한다. 실행 노드(1312-n)는 캐시(1314-n) 및 프로세서(1316-n)를 포함한다. 추가적으로, 가상 웨어하우스 3은 세 개의 실행 노드(1322-1, 1322-2 및 1322-n)를 포함한다. 실행 노드(1322-1)는 캐시(1324-1) 및 프로세서(1326-1)를 포함한다. 실행 노드(1322-2)는 캐시(1324-2) 및 프로세서(1326-2)를 포함한다. 실행 노드(1322-n)는 캐시(1324-n) 및 프로세서(1326-n)를 포함한다.
일부 실시예에서, 도 13에 도시된 실행 노드는 실행 노드가 캐싱하는 데이터에 관련하여 상태가 없다(stateless). 예를 들어, 이 실행 노드는 실행 노드에 대한 상태 정보 또는 특정 실행 노드에 의해 캐시되는 데이터를 저장하지 않거나 다른 방식으로 유지하지 않는다. 따라서 실행 노드 장애의 경우, 장애가 발생한 노드는 다른 노드로 명료하게 교체될 수 있다. 장애가 있는 실행 노드와 연관된 상태 정보가 없기 때문에, 새로운 (교체) 실행 노드는 특정 상태를 다시 생성할 염려 없이, 장애가 있는 노드를 쉽게 교체할 수 있다.
도 13에 도시된 실행 노드 각각이 하나의 데이터 캐시 및 하나의 프로세서를 포함하지만, 대안적인 실시예는 임의의 개수의 프로세서 및 임의의 개수의 캐시를 포함하는 실행 노드를 포함할 수 있다. 추가적으로, 캐시는 상이한 실행 노드마다 크기가 다를 수 있다. 도 13에 도시된 캐시는 클라우드 컴퓨팅 서비스 플랫폼(104)에서 하나 이상의 데이터 저장 디바이스로부터 검색된 데이터를 로컬 실행 노드에 저장한다. 따라서, 캐시는 원격 저장 시스템으로부터 데이터를 지속적으로 검색하는 플랫폼에서 발생하는 병목 현상 문제를 감소시키거나 또는 제거한다. 원격 저장 디바이스로부터 데이터에 반복적으로 액세스하는 것 대신에, 본원에서 설명된 시스템 및 방법은 실행 노드에서 캐시로부터 데이터에 액세스하며, 이는 상당히 더 빠르며 위에서 논의된 병목 문제를 회피한다. 일부 실시예에서, 캐시는 캐시된 데이터에 대한 빠른 액세스를 제공하는 고속 메모리 디바이스를 사용하여 구현된다. 각 캐시는 클라우드 컴퓨팅 서비스 플랫폼(104)에서 저장 디바이스 중 임의의 것으로부터 데이터를 저장할 수 있다.
또한, 캐시 리소스 및 컴퓨팅 리소스는 상이한 실행 노드 사이에서 변할 수 있다. 예를 들어, 하나의 실행 노드는 상당한 컴퓨팅 리소스 및 최소 캐시 리소스를 포함할 수 있으며, 이는 실행 노드를 상당한 컴퓨팅 리소스를 요구하는 태스크에 대해 유용하게 한다. 다른 실행 노드는 상당한 캐시 리소스 및 최소한의 컴퓨팅 리소스를 포함할 수 있으며, 이는 실행 노드를 많은 양의 데이터의 캐싱을 필요로 하는 태스크에 대해 유용하게 한다. 또 다른 실행 노드는 더욱 빠른 입출력 동작을 제공하는 캐시 리소스를 포함할 수 있으며, 이는 대량의 데이터의 빠른 스캐닝을 필요로 하는 태스크에 대해 유용하다. 일부 실시예에서, 특정 실행 노드와 연관된 캐시 리소스 및 컴퓨팅 리소스는 실행 노드에 의해 수행될 것으로 예상되는 태스크를 기초로 실행 노드가 생성될 때 결정된다.
추가적으로, 특정한 실행 노드와 연관된 캐시 리소스 및 컴퓨팅 리소스는 실행 노드에 의해 수행되는 태스크를 변경하는 것을 기초로 시간에 따라 변할 수 있다. 예를 들어, 실행 노드에 의해 수행된 태스크가 더욱 프로세서-집약적(processor-intensive)이게 되면 실행 노드는 더욱 많은 처리 리소스를 할당 받을 수 있다. 유사하게, 실행 노드에 의해 수행된 태스크가 더욱 큰 캐시 용량을 필요로 하는 경우, 실행 노드는 더욱 많은 캐시 리소스를 할당 받을 수 있다.
가상 웨어하우스 1, 2 및 n이 동일한 실행 플랫폼(114)과 연관되더라도, 가상 웨어하우스는 다수의 지리적 위치에서 다수의 컴퓨팅 시스템을 사용하여 구현될 수 있다. 예를 들어, 가상 웨어하우스 1은 제1 지리적 위치에서 컴퓨팅 시스템에 의해 구현될 수 있는 한편, 가상 웨어하우스 2 및 n은 제2 지리적 위치에서 다른 컴퓨팅 시스템에 의해 구현된다. 일부 실시예에서, 이 상이한 컴퓨팅 시스템은 하나 이상의 상이한 엔티티에 의해 유지되는 클라우드-기반 컴퓨팅 시스템이다.
게다가, 각 가상 웨어하우스는 도 13에서 다수의 실행 노드를 갖는 것으로 도시된다. 각 가상 웨어하우스와 연관된 다수의 실행 노드는 다수의 지리적인 위치에서 다수의 컴퓨팅 시스템을 사용하여 구현될 수 있다. 예를 들어, 가상 웨어하우스 1의 인스턴스는 지리적 위치에서 하나의 컴퓨팅 플랫폼 상에서 실행 노드(1302-1 및 1302-2)를 구현하고, 다른 지리적 위치에서 상이한 컴퓨팅 플랫폼에서 실행 노드(1302-n)를 구현한다. 실행 노드를 구현하기 위해 특정 컴퓨팅 시스템을 선택하는 것은 특정 실행 노드에 필요한 리소스의 레벨(예를 들어, 처리 리소스 요건 및 캐시 요건), 특정 컴퓨팅 시스템에서 이용 가능한 리소스, 지리적 위치 내의 또는 지리적 위치 사이의 네트워크의 통신 능력, 및 어느 컴퓨팅 시스템이 가상 웨어하우스에서 다른 실행 노드를 이미 구현하였는지와 같은 다양한 인자에 의존할 수 있다.
실행 플랫폼(114)은 또한 내결함성이다. 예를 들어, 하나의 가상 웨어하우스에 장애가 발생하면, 해당 가상 웨어하우스는 상이한 지리적 위치에서 상이한 가상 웨어하우스로 신속하게 교체된다.
특정 실행 플랫폼(114)은 임의의 개수의 가상 웨어하우스를 포함할 수 있다. 추가적으로, 추가적인 처리 및/또는 캐싱 리소스가 필요할 때 새로운 가상 웨어하우스가 생성되도록, 특정 실행 플랫폼에서 가상 웨어하우스의 개수는 동적이다. 유사하게, 가상 웨어하우스와 연관된 리소스가 필요하지 않을 때, 기존의 가상 웨어하우스는 삭제될 수 있다.
일부 실시예에서, 가상 웨어하우스는 클라우드 컴퓨팅 서비스 플랫폼(104)에서 동일한 데이터에 대해 동작할 수 있지만, 각 가상 웨어하우스는 독립적인 처리 및 캐싱 리소스를 갖는 그 소유의 실행 노드를 갖는다. 이 구성은 상이한 가상 웨어하우스 상의 요청이 요청 사이에 간섭 없이, 독립적으로 처리되게 하는 것을 허용한다. 가상 웨어하우스를 동적으로 추가하거나 제거하기 위한 능력과 결합된 이 독립적인 처리는 기존의 사용자에 의해 관찰된 성능에 영향을 미치지 않으면서, 새로운 사용자를 위한 새로운 처리 용량의 추가를 지원한다.
도 14는 예시적인 실시예에 따른, 머신(machine, 1400)이 본원에서 논의된 방법론들 중 임의의 하나 이상을 수행하게 하기 위해 명령어 세트가 실행될 수 있는 컴퓨터 시스템 형태의 머신(1400)의 도식적 표현을 예시한다. 구체적으로, 도 14는 머신(1400)이 본원에서 논의된 방법론 중 임의의 하나 이상을 수행하게 하기 위한 명령어(1416)(예를 들어, 소프트웨어, 프로그램, 애플리케이션, 애플릿, 앱, 또는 다른 실행 가능한 코드)가 실행될 수 있는 컴퓨터 시스템의 예시적인 형태로 머신(1400)의 도식적인 표현을 도시한다. 예를 들어, 명령어(1416)는 머신(1400)이 방법(500, 600, 700, 800, 또는 900) 중 임의의 하나 이상의 동작을 실행하게 할 수 있다. 다른 예시로서, 명령어(1416)는 머신(1400)이 도 2-4 중 임의의 하나 이상에서 예시된 데이터 흐름의 부분을 구현하게 할 수 있다. 이러한 방식으로, 명령어(1416)는 일반적인 프로그래밍되지 않은 머신을, 본원에서 설명된 방식으로 설명되고 예시된 함수들 중 임의의 하나를 수행하도록 특히 구성되는 특정 머신(1400)(예를 들어, 원격 컴퓨팅 환경(106), 액세스 관리 시스템(110), 컴퓨팅 서비스 관리자(112), 실행 플랫폼(114), 액세스 관리 시스템(118), 웹 API 관리 시스템(120) 및 컴퓨팅 디바이스(203, 207, 307 및 401))으로 변환한다.
대안적인 실시예에서, 머신(1400)은 독립형 디바이스로서 동작하거나, 또는 다른 머신에 결합(예를 들어, 네트워크로 연결(networked))될 수 있다. 네트워크로 연결된 전개에서, 머신(1400)은 서버-클라이언트 네트워크 환경에서 서버 머신 또는 클라이언트 머신의 용량으로, 또는 피어-투-피어(또는 분산된) 네트워크 환경에서의 피어 머신으로서 동작할 수 있다. 머신(1400)은 머신(1400)에 의해 취해질 동작을 지정하는 명령어(1416)를 순차적으로 또는 다른 방식으로 실행할 수 있는 서버 컴퓨터, 클라이언트 컴퓨터, 개인용 컴퓨터(PC), 태블릿 컴퓨터, 랩톱 컴퓨터, 넷북, 스마트폰, 모바일 디바이스, 네트워크 라우터, 네트워크 스위치, 네트워크 브리지, 또는 임의의 머신을 포함할 수 있지만 이에 제한되지 않는다. 또한, 단일 머신(1400)만이 예시되어 있지만, "머신"이라는 용어는 본원에서 논의된 방법론 중 임의의 하나 이상을 수행하기 위해 명령어(1416)를 개별적으로 또는 공동으로 실행하는 머신(1400)의 집합을 포함하는 것으로 간주되어야 한다.
머신(1400)은 프로세서(1410), 메모리(1430), 및 가령, 버스(1402)를 통해 서로 통신하도록 구성된 입/출력(I/O) 구성요소(1450)를 포함한다. 예시적인 실시예에서, 프로세서(1410)(예를 들어, 중앙 처리 장치(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), 다른 프로세서, 또는 이의 임의의 적절한 조합)은 예를 들어, 명령어(1416)를 실행할 수 있는 프로세서(1412) 및 프로세서(1414)를 포함할 수 있다. "프로세서"라는 용어는 명령어(1416)를 동시에 실행할 수 있는 두 개 이상의 독립적인 프로세서(때로는 "코어"로 지칭됨)를 포함할 수 있는 다중-코어 프로세서(1410)를 포함하도록 의도된다. 도 14가 다수의 프로세서(1410)를 도시하지만, 머신(1400)은 단일 코어를 갖는 단일 프로세서, 다수의 코어를 갖는 단일 프로세서(예를 들어, 다중-코어 프로세서), 단일 코어를 갖는 다수의 프로세서, 다수의 코어를 갖는 다수의 프로세서, 또는 이의 임의의 조합을 포함할 수 있다.
메모리(1430)는 메인 메모리(1432), 정적 메모리(1434), 및 저장 유닛(1436)을 포함할 수 있고, 모두 가령, 버스(1402)를 통해 프로세서(1410)에 액세스 가능하다. 메인 메모리(1432), 정적 메모리(1434), 및 저장 유닛(1436)은 본원에서 설명된 방법론 또는 함수 중 임의의 하나 이상을 구현하는 명령어(1416)를 저장한다. 명령어(1416)는 또한, 머신(1400)에 의한 이의 실행 중에, 메인 메모리(1432) 내에, 정적 메모리(1434) 내에, 저장 유닛(1436) 내에, 프로세서(1410) 중 적어도 하나 내에(예를 들어, 프로세서의 캐시 메모리 내에), 또는 이의 임의의 조합한 조합 내에 완전히 또는 부분적으로 있을 수 있다.
I/O 구성요소(1450)는 입력을 수신하고, 출력을 제공하고, 출력을 생성하고, 정보를 송신하고, 정보를 교환하고, 측정을 캡처하는 등의 구성요소를 포함한다. 특정 머신(1400)에 포함된 특정 I/O 구성요소(1450)는 머신의 타입에 의존할 것이다. 예를 들어, 이동 전화와 같은 휴대용 머신은 터치 입력 디바이스 또는 다른 이러한 입력 메커니즘을 포함할 가능성이 높은 한편, 헤드리스 서버 머신은 이러한 터치 입력 디바이스를 포함하지 않을 가능성이 높다. I/O 구성요소(1450)는 도 14에 도시되지 않은 다수의 다른 구성요소를 포함할 수 있다는 것이 인식될 것이다. I/O 구성요소(1450)는 다음 논의를 단순화하기 위해 기능에 따라 그룹화되며, 그룹화는 이 방식으로 제한되지 않는다. 다양한 예시적인 실시예에서, I/O 구성요소(1450)는 출력 구성요소(1452) 및 입력 구성요소(1454)를 포함할 수 있다. 출력 구성요소(1452)는 시각적 구성요소(예를 들어, 플라즈마 디스플레이 패널(PDF), 발광 다이오드(LED) 디스플레이, 액정 디스플레이(LCD), 프로젝터 또는 음극선 관(cathode ray tube, CRT)과 같은 디스플레이), 및 음향 구성요소(예를 들어, 스피커), 다른 신호 생성기 등을 포함할 수 있다. 입력 구성요소(1454)는 영숫자 입력 구성요소(예를 들어, 키보드, 영숫자 입력을 수신하도록 구성된 터치 스크린, 포토-광 키보드(photo-optical keyboard), 또는 다른 영숫자 입력 구성요소), 포인트-기반 입력 구성요소(예를 들어, 마우스, 터치패드, 트랙볼, 조이스틱, 모션 센서, 또는 다른 포인팅 도구), 촉각 입력 구성요소(예를 들어, 물리적 버튼, 터치 또는 터치 제스처의 위치 및/또는 힘을 제공하는 터치 스크린, 또는 다른 촉각 입력 구성요소), 오디오 입력 구성요소(예를 들어, 마이크) 등을 포함할 수 있다.
통신은 다양한 기술을 사용하여 구현될 수 있다. I/O 구성요소(1450)는 머신(1400)을 커플링(1482) 및 커플링(1472)을 통해 네트워크(1480) 또는 디바이스(1470)에 각각 연결하도록 동작 가능한 통신 구성요소(1464)를 포함할 수 있다. 예를 들어, 통신 구성요소(1464)는 네트워크(1480)와 인터페이스하기 위한 네트워크 인터페이스 구성요소 또는 다른 적합한 디바이스를 포함할 수 있다. 추가적인 예시에서, 통신 구성요소(1464)는 유선 통신 구성요소, 무선 통신 구성요소, 셀룰러 통신 구성요소, 및 다른 양식을 통한 통신을 제공하기 위한 다른 통신 구성요소를 포함할 수 있다. 디바이스(1470)는 다른 머신 또는 임의의 다양한 주변 디바이스(예를 들어, USB(Universal Serial Bus)를 통해 결합된 주변 디바이스) 중 임의의 것일 수 있다. 예를 들어, 위에서 언급한 바와 같이, 머신(1400)은 원격 컴퓨팅 환경(106), 액세스 관리 시스템(110), 컴퓨팅 서비스 관리자(112), 실행 플랫폼(114), 액세스 관리 시스템(118), 웹 API 관리 시스템(120) 및 컴퓨팅 디바이스(203, 207, 307, 401)에 대응할 수 있고, 디바이스(1470)는 이 시스템 및 디바이스 중 임의의 다른 것을 포함할 수 있다.
실행 명령어 및 기계 저장 매체
다양한 메모리(예를 들어, 1430, 1432, 1434, 및/또는 프로세서(1410)의 메모리 및/또는 저장 유닛(1436))은 본원에서 설명된 방법론 또는 함수 중 임의의 하나 이상을 구현하거나, 또는 그에 의해 이용되는 명령어(1416) 및 데이터 구조(예를 들어, 소프트웨어)의 하나 이상의 세트를 저장할 수 있다. 이 명령어(1416)는 프로세서(들)(1410)에 의해 실행될 때, 다양한 동작이 개시된 실시예를 구현하게 한다.
본원에서 사용된, "기계-저장 매체", "디바이스 저장 매체" 및 "컴퓨터-저장 매체"라는 용어는 동일한 것을 의미하며, 본 개시에서 상호 교환적으로 사용될 수 있다. 용어는 실행 가능한 명령어 및/또는 데이터를 저장하는 단일의 또는 다수의 저장 디바이스 및/또는 매체(예를 들어, 중앙 집중된 또는 분산형 데이터베이스, 및/또는 연관된 캐시 및 서버)를 지칭한다. 따라서 용어는 프로세서 내부 또는 외부 메모리를 포함하는, 솔리드-스테이트 메모리 및 광학 및 자기 매체를 포함하지만 이에 제한되지 않는다. 기계-저장 매체, 컴퓨터-저장 매체, 및/또는 디바이스-저장 매체의 특정 예시는 예시로서, 반도체 메모리 디바이스 예를 들어, 삭제가능 프로그램 가능 읽기-전용 메모리(erasable programmable read-only memory, EPROM), 전기적 삭제가능 프로그램 가능 읽기-전용 메모리(electrically erasable programmable read-only memory, EEPROM), 필드 프로그램 가능 게이트 어레이(field-programmable gate arrays, FPGA) 및 플래시 메모리 디바이스; 내부 하드 디스크 및 이동식 디스크와 같은 자기 디스크; 광자기 디스크; 및 CD-ROM 및 DVD-ROM 디스크를 포함하는 비휘발성 메모리를 포함한다. "기계-저장 매체", "컴퓨터-저장 매체" 및 "디바이스-저장 매체"라는 용어는, 구체적으로, 반송파, 변조된 데이터 신호 및 다른 이러한 매체를 제외하며, 그 중 적어도 일부는 아래에서 논의되는 "신호 매체"라는 용어 하에 커버된다.
전송 매체
다양한 예시적인 실시예에서, 네트워크(980)의 하나 이상의 부분은 애드 혹 네트워크(ad hoc network), 인트라넷, 엑스트라넷, 가상 사설망(VPN), 근거리 통신망(LAN), 무선 LAN(WLAN), 원거리 통신망(Wide Area Network, WAN), 무선 WAN(WWAN), 대도시 영역 네트워크(Metropolitan Area Network, MAN), 인터넷, 인터넷의 부분, 공공 교환 전화 네트워크(public switched telephone network)(PSTN)의 부분, 기존 전화 서비스(plain old telephone service)(POTS) 네트워크, 셀룰러 전화 네트워크, 무선 네트워크, WI-FI® 네트워크, 또 다른 타입의 네트워크, 또는 두 개 이상의 이러한 네트워크의 조합일 수 있다. 예를 들어, 네트워크(1480) 또는 네트워크(1480)의 부분은 무선 또는 셀룰러 네트워크를 포함할 수도 있고, 결합(1482)은 코드 분할 다중 액세스(Code Division Multiple Access)(CDMA) 연결, 이동 통신을 위한 글로벌 시스템(Global System for Mobile communications)(GSM) 연결, 또는 다른 타입의 셀룰러 또는 무선 결합일 수 있다. 이 예시에서, 결합(1482)은 단일 캐리어 라디오 송신 기술(Single Carrier Radio Transmission Technology)(1xRTT), 진화-데이터 최적화(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) 표준, 다양한 표준-설정 조직에 의해 정의된 다른 것, 또는 다른 장기 프로토콜, 또는 다른 데이터 전송 프로토콜과 같은 다양한 타입의 데이터 전송 기술 중 임의의 것을 구현할 수 있다.
명령어(1416)는 네트워크 인터페이스 디바이스(예를 들어, 통신 구성요소(1464)에 포함된 네트워크 인터페이스 구성요소)를 통해 송신 매체를 사용하고 다수의 잘 알려진 전송 프로토콜(예를 들어, 하이퍼텍스트 전송 프로토콜(HTTP)) 중 임의의 하나를 이용하여 네트워크(1480)를 통해 송신되거나 전송된다. 유사하게, 명령어(1416)는 디바이스(1470)로의 결합(1472)(예를 들어, 피어-투-피어 결합)을 통해 송신 매체를 이용하여 송신되거나 수신될 수 있다. "송신 매체" 및 "신호 매체"란 용어는 동일한 것을 의미하며, 본 개시에서 상호교환적으로 사용될 수 있다. "송신 매체" 및 "신호 매체"란 용어는 머신(1400)에 의한 실행을 위한 명령어(1416)를 저장할 수 있거나, 인코딩할 수 있거나, 운반할 수 있는 임의의 비유형(intangible) 매체를 포함하도록 취해질 것이고, 이러한 소프트웨어의 통신을 용이하게 하기 위한 디지털 또는 아날로그 통신 신호 또는 다른 비유형 매체들을 포함한다. 그러므로, "송신 매체" 및 "신호 매체"란 용어는 변조된 데이터 신호, 반송파 등의 임의의 형태를 포함하는 것으로 취해질 것이다. "변조된 데이터 신호"라는 용어는 신호에서의 정보를 인코딩하는 방식으로 설정되거나 변경된 그의 특성 중 하나 이상을 갖는 신호를 의미한다.
컴퓨터-판독가능 매체
"기계-판독가능 매체", "컴퓨터 판독가능 매체" 및 "디바이스-판독가능 매체"라는 용어는 동일한 것을 의미하며, 본 개시에서 상호 교환적으로 사용될 수 있다. 용어는 기계-저장 매체 및 송신 매체를 모두 포함하도록 정의된다. 따라서, 용어는 저장 디바이스/매체 및 반송파/변조된 데이터 신호를 포함한다.
본원에서 설명된 예시적인 방법의 다양한 동작은 관련 동작을 수행하도록 (예를 들어, 소프트웨어에 의해) 일시적으로 구성되거나, 또는 영구적으로 구성된 하나 이상의 프로세서에 의해 적어도 부분적으로 수행될 수 있다. 유사하게, 본원에서 설명된 방법은 적어도 부분적으로 프로세서로 구현될 수 있다. 예를 들어, 방법(500, 600, 700, 800 및 900)의 동작 중 적어도 일부는 하나 이상의 프로세서에 의해 수행될 수 있다. 특정 동작의 성능은 단일 시스템 내에 상주할 뿐만 아니라 다수의 시스템에 걸쳐 전개되는 하나 이상의 프로세서에 분산될 수 있다. 일부 예시적인 실시예에서, 프로세서 또는 프로세서들은 단일 위치(예를 들어, 가정 환경, 사무실 환경, 또는 서버 팜 내)에 위치할 수 있는 한편, 다른 실시예에서 프로세서는 다수의 위치에 걸쳐 분산될 수 있다.
본 개시의 실시예가 특정 예시적인 실시예를 참조하여 설명되었지만, 본 발명의 주제의 더 넓은 범주를 벗어나지 않으면서 이 실시예에 대한 다양한 수정 및 변경이 이루어질 수 있음이 명백할 것이다. 따라서, 본 명세서 및 도면은 제한적인 의미가 아니라 예시적인 것으로 간주되어야 한다. 본 명세서의 일부를 형성하는 첨부 도면은 제한이 아닌 예시로서 주제가 실시될 수 있는 특정 실시예를 도시한다. 예시된 실시예는 통상의 기술자가 본원에서 개시된 교시를 실시하는 것을 가능하게 하도록 충분히 상세히 설명된다. 본 개시의 범주를 벗어나지 않으면서 구조적 및 논리적 대체 및 변경이 이루어질 수 있도록 다른 실시예가 사용되고 그로부터 도출될 수 있다. 그러므로, 이 상세한 설명은 제한적인 의미로 받아들여서는 안 되며, 다양한 실시예의 범주는 이러한 청구범위가 부여되는 등가물의 전체 범위와 함께 첨부된 청구범위에 의해서만 정의된다.
본 발명의 주제의 이러한 실시예는 본원에서 단지 편의를 위해, 및 하나보다 많은 것이 실제로 개시된 경우, 본 출원의 범주를 임의의 단일 발명 또는 독창적인 개념으로 자발적으로 제한하려는 것으로 의도하지 않으면서, "발명"이란 용어에 의해 개별적으로 및/또는 집합적으로 본원에서 지칭될 수 있다. 따라서, 특정 실시예가 여기에서 예시되고 설명되었지만, 동일한 목적을 달성하기 위해 계산된 임의의 배열이 도시된 특정 실시예를 대체할 수 있음이 인식되어야 한다. 본 개시는 다양한 실시예의 임의의 모든 적응 또는 변형을 커버하도록 의도된다. 위의 실시예의 조합, 및 본원에서 구체적으로 설명되지 않은 다른 실시예는 위의 설명을 검토할 시, 통상의 기술자에게 명백할 것이다.
이 문서에서 "하나의(a 또는 an)"라는 용어는 특허 문서에서 일반적인, "적어도 하나의" 또는 "하나 이상의"의 임의의 다른 경우 또는 사용과 독립적으로, 하나 이상을 포함하는 것으로 사용된다. 이 문서에서 "또는"이라는 용어는 달리 지시되지 않는 한, "A 또는 B"가 "A 하지만 B는 아님", "B 하지만 A는 아님" 및 "A 및 B"를 포함하도록 비배타적인 것으로 지칭하도록 사용된다. 첨부된 청구범위에서, "포함하는(including)" 및 "여기서(in which)"라는 용어는 각각의 용어 "포함하는(comprising)" 및 "여기에서(wherein)"의 일반적인-영어 등가물로서 사용된다. 또한 다음 청구범위에서 "포함하는(comprising)" 및 "포함하는(including)"이라는 용어는 오픈-엔디드(open-ended)이다; 즉, 청구범위에서 이러한 용어 뒤에 나열된 것에 부가하여 요소를 포함하는 시스템, 디바이스, 물품 또는 프로세스는 여전히 그 청구범위의 범주 내에 속하는 것으로 간주된다.
예시
예시 1은 적어도 하나의 하드웨어 프로세서를 포함하는 컴퓨팅 서비스 관리자이며, 컴퓨팅 서비스 관리자는 컴퓨팅 디바이스로부터, 원격 소프트웨어 구성요소와 연관된 함수를 참조하는 질의를 수신하는 것; 및 적어도 하나의 네트워크-액세스 가능한 저장 디바이스를 포함하는 클라우드 컴퓨팅 서비스 플랫폼으로부터, 원격 소프트웨어 구성요소에 대응하는 엔드포인트에 호출을 전송하기 위해 연관된 권한을 갖는 역할에 대응하는 임시 보안 크리덴셜을 획득하는 것 - 클라우드 컴퓨팅 서비스 플랫폼은 컴퓨팅 서비스 관리자로부터 독립적임 -을 포함하는 동작을 수행하기 위한 것이고; 컴퓨팅 서비스 관리자에 결합된 실행 플랫폼으로서, 실행 플랫폼은 복수의 컴퓨팅 노드를 포함하고, 컴퓨팅 노드 중 적어도 하나는: 클라우드 컴퓨팅 서비스 플랫폼의 웹 API 관리 시스템에, 웹 API 관리 시스템에 의해 수신될 때, 웹 API 관리 시스템으로 하여금 요청에 포함된 입력 데이터에 대해 웹 엔드포인트에서 원격 소프트웨어 구성요소에 의해 제공된 외부 기능을 호출하게 하는 요청을 전송하는 것 - 요청은 임시 보안 크리덴셜을 사용하여 전자적으로 서명됨 -; 웹 API 관리 시스템으로부터, 요청에 대한 응답을 수신하는 것 - 응답은 외부 기능을 호출하는 것의 결과를 포함하는 결과 데이터를 포함함 -; 및 질의에 따라 결과 데이터를 처리하는 것을 포함하는 동작을 수행하기 위한 것이다.
예시 2에서 예시 1의 주제는, 질의를 수신하는 것에 응답하여, 데이터베이스로부터 원격 소프트웨어 구성요소와 연관된 함수 객체에 액세스 하는 것 - 함수 객체는 웹 엔드포인트, 및 원격 소프트웨어 구성요소와 연관된 통합 객체를 식별함 -; 및 데이터베이스로부터, 통합 객체에 액세스하는 것 - 통합 객체는 클라우드 컴퓨팅 서비스 플랫폼에서 역할을 식별함 -을 선택적으로 더 포함한다.
예시 3에서, 예시 1 및 2 중 어느 하나의 주제는, 클라우드 컴퓨팅 서비스 플랫폼에서 역할에 대응하는 제1 리소스 식별자를 수신하는 것; 및 제1 리소스 식별자를 기초로 데이터베이스에 통합 객체를 생성하는 것을 선택적으로 포함한다.
예시 4에서, 예시 1 내지 3 중 어느 하나의 주제는, 통합 객체 및 타겟 엔드포인트를 식별하는 함수 정의를 수신하는 것; 및 함수 정의를 기초로 데이터베이스에 함수 객체를 생성하는 것을 선택적으로 더 포함한다.
예시 5는 예시 1 내지 4 중 어느 하나의 주제를 포함하고, 통합 객체는 제1 리소스 식별자, 및 네트워크-기반 데이터 웨어하우스 시스템에 의해 유지되는 사용자 레코드에 대응하는 제2 리소스 식별자를 선택적으로 포함하고, 사용자 레코드는 클라우드 컴퓨팅 서비스 플랫폼에서 역할과 연관되고; 임시 보안 크리덴셜을 획득하는 것은: 데이터베이스로부터, 네트워크-기반 데이터 웨어하우스 시스템에 의해 유지되는 사용자 레코드와 연관된 보안 크리덴셜에 액세스하는 것; 및 클라우드 컴퓨팅 서비스 플랫폼으로, 임시 보안 크리덴셜에 대한 요청을 송신하는 것 - 요청은 제1 및 제2 리소스 식별자, 및 네트워크-기반 데이터 웨어하우스 시스템에 의해 유지되는 사용자 레코드와 연관된 보안 크리덴셜을 포함함 -을 선택적으로 포함한다.
예시 6은 예시 1 내지 5 중 어느 하나의 주제를 포함하고, 통합 객체는 허용 가능한 통합 리소스 로케이터(URL)를 정의하는 데이터를 선택적으로 더 포함하고; 동작은 질의를 수신하는 것에 응답하여, 질의와 연관된 사용자가 통합 객체와 연관된 사용 권한을 갖는지를 검증하는 것; 및 웹 엔드포인트가 방식을 기초로 허가되는지를 검증하는 것을 포함한다.
예시 7에서, 예시 1 내지 6 중 어느 하나의 주제는, 웹 API 관리 시스템으로부터 응답을 수신하기 전에 임시 보안 크리덴셜의 만료를 검출하는 것; 및 임시 보안 크리덴셜의 만료를 검출하는 것에 응답하여, 임시 보안 크리덴셜을 새로고침하는 것을 선택적으로 더 포함한다.
예시 8은 예시 1 내지 7 중 어느 하나의 주제를 포함하고, 결과 데이터를 처리하는 것은 결과 데이터를 저장하는 것; 및 결과 데이터에 대한 하나 이상의 동작을 수행하는 것 중 하나 이상을 선택적으로 포함한다.
예시 9에서, 예시 1 내지 8 중 어느 하나의 주제는 결과 데이터를 추출하기 위한 응답을 파싱하는 것을 선택적으로 더 포함한다.
예시 10은 예시 1 내지 9 중 어느 하나의 주제를 포함하고, 요청은 하이퍼텍스트 전송 프로토콜(HTTP) 요청을 선택적으로 포함하고, 응답은 HTTP 응답을 선택적으로 포함하고; 입력 데이터는 자바스크립트 객체 표기법(JSON) 인코딩된 데이터, 아파치 애로우(Apache Arrow) 인코딩된 데이터, 또는 확장 가능한 마크업 언어(XML) 인코딩된 데이터를 선택적으로 포함하고; 및 결과 데이터는 JSON 인코딩된 데이터, Apache Arrow 인코딩된 데이터 또는 XML 인코딩된 데이터를 선택적으로 포함한다.
예시 11은 예시 1 내지 10 중 어느 하나의 주제를 포함하고, 원격 소프트웨어 구성요소에 의해 제공된 외부 기능은: 스칼라 함수, 테이블 함수 또는 프로시저 중 하나를 선택적으로 포함한다.
예시 12는 방법이며, 방법은: 하나 이상의 프로세서를 포함하는 적어도 하나의 컴퓨팅 시스템을 포함하는 네트워크-기반 데이터 웨어하우스 시스템에서, 원격 소프트웨어 구성요소와 연관된 함수를 참조하는 질의를 수신하는 단계; 클라우드 컴퓨팅 서비스 플랫폼으로부터, 원격 소프트웨어 구성요소에 대응하는 웹 엔드포인트에 호출을 전송하기 위해 연관된 권한을 갖는 역할에 대응하는 임시 보안 크리덴셜을 획득하는 단계; 네트워크-기반 데이터 웨어하우스 시스템으로부터 클라우드 컴퓨팅 서비스 플랫폼의 웹 API 관리 시스템으로, 웹 API 관리 시스템에 의해 수신될 때, 웹 API 관리 시스템으로 하여금 요청에 포함된 입력 데이터에 대해 웹 엔드포인트에서 원격 소프트웨어 구성요소에 의해 제공된 외부 기능을 호출하게 하는 요청을 전송하는 단계 - 요청은 임시 보안 크리덴셜을 사용하여 전자적으로 서명됨 -; 네트워크-기반 데이터 웨어하우스 시스템에서, 웹 API 관리 시스템으로부터 요청에 대한 응답을 수신하는 단계 - 응답은 외부 기능을 호출하는 것의 결과를 포함하는 결과 데이터를 포함함 -; 및 네트워크-기반 데이터 웨어하우스 시스템에서, 질의에 따른 결과 데이터를 처리하는 단계를 포함한다.
예시 13에서, 예시 12의 주제는: 질의를 수신하는 것에 응답하여, 데이터베이스로부터 원격 소프트웨어 구성요소와 연관된 함수 객체에 액세스 하는 단계 - 함수 객체는 웹 엔드포인트, 및 원격 소프트웨어 구성요소와 연관된 통합 객체를 식별함 -; 및 데이터베이스로부터, 클라우드 컴퓨팅 서비스 플랫폼에서 역할을 식별하는 통합 객체에 액세스하는 단계를 선택적으로 더 포함한다.
예시 14에서, 예시 12 및 14 중 어느 하나의 주제는, 클라우드 컴퓨팅 서비스 플랫폼에서 역할에 대응하는 제1 리소스 식별자를 수신하는 단계; 및 제1 리소스 식별자를 기초로 데이터베이스에 통합 객체를 생성하는 단계를 선택적으로 더 포함한다.
예시 15에서, 예시 12 내지 14 중 어느 하나의 주제는 통합 객체 및 타겟 엔드포인트를 식별하는 함수 정의를 수신하는 단계; 및 함수 정의를 기초로 데이터베이스에 함수 객체를 생성하는 단계를 선택적으로 더 포함한다.
예시 16은 예시 12 내지 15 중 어느 하나의 주제를 포함하고, 통합 객체는 제1 리소스 식별자, 및 네트워크-기반 데이터 웨어하우스 시스템에 의해 유지되는 사용자 레코드에 대응하는 제2 리소스 식별자를 선택적으로 포함하고, 사용자 레코드는 클라우드 컴퓨팅 서비스 플랫폼에서, 역할과 연관되고; 임시 보안 크리덴셜을 획득하는 단계는: 데이터베이스로부터, 네트워크-기반 데이터 웨어하우스 시스템에 의해 유지되는 사용자 레코드와 연관된 보안 크리덴셜에 액세스하는 단계; 및 클라우드 컴퓨팅 서비스 플랫폼으로, 임시 보안 크리덴셜에 대한 요청을 송신하는 단계 - 요청은 제1 및 제2 리소스 식별자, 및 네트워크-기반 데이터 웨어하우스에 의해 유지되는 사용자 레코드와 연관된 보안 크리덴셜을 포함함 -를 선택적으로 포함한다.
예시 17은 예시 12 내지 16 중 어느 하나의 주제를 포함하고, 통합 객체는 허용 가능한 통합 리소스 로케이터(URL)를 선택적으로 더 포함하고; 및 동작은: 질의를 수신하는 것에 응답하여, 질의와 연관된 사용자가 통합 객체와 연관된 사용 권한을 갖는지를 검증하는 것; 및 웹 엔드포인트가 허용 가능한 URL을 기초로 허가되는지를 검증하는 것을 선택적으로 더 포함한다.
예시 18에서, 예시 12 내지 17 중 어느 하나의 주제는 웹 API 관리 시스템으로부터 응답을 수신하기 전에 임시 보안 크리덴셜의 만료를 검출하는 단계; 및 임시 보안 크리덴셜의 만료를 검출하는 것에 응답하여, 임시 보안 크리덴셜을 새로고침하는 단계를 선택적으로 더 포함한다.
예시 19에서, 예시 12 내지 18 중 어느 하나의 주제는, 결과 데이터를 추출하기 위한 응답을 파싱하는 단계를 선택적으로 더 포함한다.
예시 20은 명령어를 포함하는 컴퓨터-저장 매체로서, 명령어는, 처리 디바이스에 의해 실행될 때 처리 디바이스가: 컴퓨팅 디바이스로부터, 원격 소프트웨어 구성요소와 연관된 함수를 참조하는 질의를 수신하는 것; 클라우드 컴퓨팅 서비스 플랫폼으로부터, 원격 소프트웨어 구성요소에 대응하는 웹 엔드포인트에 호출을 전송하기 위해 연관된 권한을 갖는 역할에 대응하는 임시 보안 크리덴셜을 획득하는 것; 클라우드 컴퓨팅 서비스 플랫폼의 웹 애플리케이션 프로그래밍 인터페이스(API) 관리 시스템에, 웹 API 관리 시스템에 의해 수신될 때, 웹 API 관리 시스템으로 하여금 요청에 포함된 입력 데이터에 대해 웹 엔드포인트에서 원격 소프트웨어 구성요소에 의해 제공된 외부 기능을 호출하게 하는 요청을 전송하는 것 - 요청은 임시 보안 크리덴셜을 사용하여 전자적으로 서명됨 -; 웹 API 관리 시스템으로부터, 요청에 대한 응답을 수신하는 것 - 응답은 외부 기능을 호출하는 것의 결과를 포함하는 결과 데이터를 포함함 -; 및 질의에 따라 결과 데이터를 처리하는 것을 포함하는 동작을 수행하도록 구성한다.

Claims (20)

  1. 시스템으로서,
    하나 이상의 하드웨어 프로세서; 및
    상기 하나 이상의 하드웨어 프로세서가 동작을 수행하게 하는 명령어를 저장하는 하나 이상의 메모리를 포함하고, 상기 동작은:
    컴퓨팅 디바이스로부터, 원격 소프트웨어 구성요소와 연관된 함수(function)를 참조하는 질의를 수신하는 것;
    클라우드 컴퓨팅 서비스 플랫폼의 웹 애플리케이션 프로그래밍 인터페이스(application programming interface, API) 관리 시스템에, 상기 원격 소프트웨어 구성요소에 대응하는 엔드포인트(endpoint)에 호출을 전송하기 위해 연관된 권한을 갖는 역할에 대응하는 임시 보안 크리덴셜을 사용하여 전자적으로 서명된 요청을 전송함으로써, 상기 원격 소프트웨어 구성요소에 의해 제공되는 외부 기능을 호출하는 것; 및
    상기 웹 API 관리 시스템으로부터 수신되는 결과 데이터를 처리하는 것을 포함하는, 시스템.
  2. 제1항에 있어서,
    상기 동작은, 상기 웹 API 관리 시스템으로부터 상기 요청에 대한 응답을 수신하는 것을 더 포함하고,
    상기 응답은 상기 결과 데이터를 포함하는, 시스템.
  3. 제2항에 있어서,
    상기 요청은 하이퍼텍스트 전송 프로토콜(hypertext transfer protocol, HTTP) 요청을 포함하고;
    상기 응답은 HTTP 응답을 포함하고;
    상기 결과 데이터는 JSON 인코딩된 데이터, 아파치 애로우 인코딩된 데이터, 또는 XML 인코딩된 데이터를 포함하는, 시스템.
  4. 제2항에 있어서, 상기 동작은:
    상기 웹 API 관리 시스템으로부터 응답을 수신하기 전에 상기 임시 보안 크리덴셜의 만료를 검출하는 것; 및
    상기 임시 보안 크리덴셜의 만료를 검출하는 것에 응답하여, 상기 임시 보안 크리덴셜을 새로고침하는 것을 더 포함하는, 시스템.
  5. 제4항에 있어서,
    상기 동작은, 상기 웹 API 관리 시스템에, 상기 임시 보안 크리덴셜을 새로고침하는 것에 기초하여 추가적인 요청을 전송하는 것을 더 포함하는, 시스템.
  6. 제4항에 있어서, 상기 임시 보안 크리덴셜의 만료를 검출하는 것은:
    상기 웹 API 관리 시스템으로부터 타임아웃 메시지를 수신하는 것; 및
    상기 임시 보안 크리덴셜과 연관된 만료 시간 제한이 도달되었다고 결정하는 것
    중 하나를 포함하는, 시스템.
  7. 제4항에 있어서,
    상기 동작은 상기 요청의 상태에 대해 상기 웹 API 관리 시스템을 폴링하는 것(polling)을 더 포함하고,
    상기 임시 보안 크리덴셜의 만료를 검출하는 것은 상기 웹 API 관리 시스템으로부터 수신되는 폴링에 대한 응답에 기초하는, 시스템.
  8. 제1항에 있어서, 상기 결과 데이터를 처리하는 것은:
    상기 결과 데이터를 저장하는 것; 또는
    상기 결과 데이터에 대한 하나 이상의 동작을 수행하는 것 중 하나 이상을 포함하는, 시스템.
  9. 제1항에 있어서,
    상기 원격 소프트웨어 구성요소에 의해 제공된 상기 외부 기능은: 스칼라 함수, 테이블 함수, 또는 프로시저(procedure) 중 하나를 포함하는, 시스템.
  10. 제1항에 있어서, 상기 동작은:
    상기 질의에 응답하여, 데이터베이스로부터 상기 원격 소프트웨어 구성요소와 연관된 함수 객체에 액세스하는 것 - 상기 함수 객체는 상기 원격 소프트웨어 구성요소에 대응하는 상기 엔드포인트 및 상기 원격 소프트웨어 구성요소와 연관된 통합 객체를 식별함 -; 및
    상기 데이터베이스로부터, 상기 통합 객체에 액세스하는 것 - 상기 통합 객체는 상기 클라우드 컴퓨팅 서비스 플랫폼에서 상기 역할을 식별하고, 상기 요청을 전송하는 것은 상기 통합 객체에 포함된 정보에 기초함 - 을 더 포함하는, 시스템.
  11. 제1항에 있어서, 상기 동작은:
    상기 시스템에 의해 유지되는 사용자 레코드와 연관된 보안 크리덴셜에 액세스하는 것; 및
    상기 클라우드 컴퓨팅 서비스 플랫폼으로부터, 상기 사용자 레코드와 연관된 상기 보안 크리덴셜을 사용하여 상기 역할에 대응하는 상기 임시 보안 크리덴셜을 획득하는 것을 더 포함하는, 시스템.
  12. 방법으로서,
    컴퓨팅 디바이스로부터, 원격 소프트웨어 구성요소와 연관된 함수를 참조하는 질의를 수신하는 단계;
    하나 이상의 하드웨어 프로세서에 의해, 클라우드 컴퓨팅 서비스 플랫폼의 웹 애플리케이션 프로그래밍 인터페이스(API) 관리 시스템에, 상기 원격 소프트웨어 구성요소에 대응하는 엔드포인트에 호출을 전송하기 위해 연관된 권한을 갖는 역할에 대응하는 임시 보안 크리덴셜을 사용하여 전자적으로 서명된 요청을 전송함으로써, 상기 원격 소프트웨어 구성요소에 의해 제공되는 외부 기능을 호출하는 단계; 및
    상기 웹 API 관리 시스템으로부터 수신되는 결과 데이터를 처리하는 단계를 포함하는, 방법.
  13. 제12항에 있어서,
    상기 웹 API 관리 시스템으로부터 상기 요청에 대한 응답을 수신하는 단계를 더 포함하고,
    상기 응답은 상기 결과 데이터를 포함하는, 방법.
  14. 제13항에 있어서,
    상기 요청은 하이퍼텍스트 전송 프로토콜(HTTP) 요청을 포함하고;
    상기 응답은 HTTP 응답을 포함하고;
    상기 결과 데이터는 JSON 인코딩된 데이터, 아파치 애로우 인코딩된 데이터, 또는 XML 인코딩된 데이터를 포함하는, 방법.
  15. 제13항에 있어서,
    상기 웹 API 관리 시스템으로부터 응답을 수신하기 전에 상기 임시 보안 크리덴셜의 만료를 검출하는 단계; 및
    상기 임시 보안 크리덴셜의 만료를 검출하는 것에 응답하여, 상기 임시 보안 크리덴셜을 새로고침하는 단계를 더 포함하는, 방법.
  16. 제15항에 있어서,
    상기 웹 API 관리 시스템에, 상기 임시 보안 크리덴셜을 새로고침하는 것에 기초하여 추가적인 요청을 전송하는 단계를 더 포함하는, 방법.
  17. 제15항에 있어서,
    상기 임시 보안 크리덴셜의 만료를 검출하는 단계는:
    상기 웹 API 관리 시스템으로부터 타임아웃 메시지를 수신하는 단계; 및
    상기 임시 보안 크리덴셜과 연관된 만료 시간 제한이 도달되었다고 결정하는 단계
    중 하나를 포함하는, 방법.
  18. 제15항에 있어서,
    상기 요청의 상태에 대해 상기 웹 API 관리 시스템을 폴링하는 단계를 더 포함하고,
    상기 임시 보안 크리덴셜의 만료를 검출하는 단계는 상기 웹 API 관리 시스템으로부터 수신되는 폴링에 대한 응답에 기초하는, 방법.
  19. 제12항에 있어서, 상기 결과 데이터를 처리하는 단계는:
    상기 결과 데이터를 저장하는 단계; 또는
    상기 결과 데이터에 대한 하나 이상의 동작을 수행하는 단계 중 하나 이상을 포함하는, 방법.
  20. 명령어를 포함하는 컴퓨터-저장 매체로서, 상기 명령어는 처리 디바이스에 의해 실행될 때 상기 처리 디바이스가:
    컴퓨팅 디바이스로부터, 원격 소프트웨어 구성요소와 연관된 함수를 참조하는 질의를 수신하는 것;
    클라우드 컴퓨팅 서비스 플랫폼의 웹 애플리케이션 프로그래밍 인터페이스(API) 관리 시스템에, 상기 원격 소프트웨어 구성요소에 대응하는 엔드포인트에 호출을 전송하기 위해 연관된 권한을 갖는 역할에 대응하는 임시 보안 크리덴셜을 사용하여 전자적으로 서명된 요청을 전송함으로써, 상기 원격 소프트웨어 구성요소에 의해 제공되는 외부 기능을 호출하는 것; 및
    상기 웹 API 관리 시스템으로부터 수신되는 결과 데이터를 처리하는 것을 포함하는 동작을 수행하게 하는, 컴퓨터-저장 매체.
KR1020227031566A 2019-10-29 2020-07-31 데이터 웨어하우스로부터 외부 함수를 호출하는 것 KR20220130255A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US16/666,911 US10628244B1 (en) 2019-10-29 2019-10-29 Calling external functions from a data warehouse
US16/666,911 2019-10-29
KR1020217030727A KR102444106B1 (ko) 2019-10-29 2020-07-31 데이터 웨어하우스로부터 외부 함수를 호출하는 것
PCT/US2020/044447 WO2021086465A1 (en) 2019-10-29 2020-07-31 Calling external functions from a data warehouse

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020217030727A Division KR102444106B1 (ko) 2019-10-29 2020-07-31 데이터 웨어하우스로부터 외부 함수를 호출하는 것

Publications (1)

Publication Number Publication Date
KR20220130255A true KR20220130255A (ko) 2022-09-26

Family

ID=70285170

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020227031566A KR20220130255A (ko) 2019-10-29 2020-07-31 데이터 웨어하우스로부터 외부 함수를 호출하는 것
KR1020217030727A KR102444106B1 (ko) 2019-10-29 2020-07-31 데이터 웨어하우스로부터 외부 함수를 호출하는 것

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020217030727A KR102444106B1 (ko) 2019-10-29 2020-07-31 데이터 웨어하우스로부터 외부 함수를 호출하는 것

Country Status (6)

Country Link
US (8) US10628244B1 (ko)
EP (1) EP3942414A4 (ko)
KR (2) KR20220130255A (ko)
CN (1) CN113490918A (ko)
DE (1) DE202020005700U1 (ko)
WO (1) WO2021086465A1 (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11444953B2 (en) * 2018-12-06 2022-09-13 Dharmesh Naik Methods, systems, apparatuses and devices for facilitating security of a resource using a plurality of credentials
US10628244B1 (en) 2019-10-29 2020-04-21 Snowflake Inc. Calling external functions from a data warehouse
EP3823236B1 (en) * 2019-11-13 2024-01-24 Palantir Technologies Inc. Systems and methods for managing custom code in a data computing platform
US10715524B1 (en) 2019-11-14 2020-07-14 Snowflake Inc. External credential-less stages for data warehouse integrations
JP2023532297A (ja) * 2020-06-29 2023-07-27 イルミナ インコーポレイテッド セキュアな発見フレームワークを介した一時的なクラウドプロバイダクレデンシャル
CN114064303A (zh) * 2020-07-31 2022-02-18 华为技术有限公司 远程服务调用方法、设备、系统、存储介质
US11429569B2 (en) * 2020-08-19 2022-08-30 Intuit Inc. Method and system for processing read queries in an application programming interface based on declarative schemas for individual services
EP4200783A1 (en) 2020-08-20 2023-06-28 Simetric, Inc. Device management systems and methods
WO2022051695A1 (en) * 2020-09-06 2022-03-10 Blackswan Technologies Inc. Securing computer source code
CN112100287B (zh) * 2020-09-15 2023-12-29 北京通付盾人工智能技术有限公司 一种基于动态规划技术的集成式云端kyc方法
US20220100758A1 (en) 2020-09-30 2022-03-31 Snowflake Inc. Autoscaling external function requests
US11381564B2 (en) 2020-10-09 2022-07-05 Sap Se Resource security integration platform
US11615095B2 (en) 2020-10-30 2023-03-28 Snowflake Inc. Automatic pruning cutoff in a database system
CN112486705A (zh) * 2020-11-30 2021-03-12 安徽中科美络信息技术有限公司 一种新能源汽车管理软件的组件调度方法及系统
CN112732811A (zh) * 2020-12-31 2021-04-30 广西中科曙光云计算有限公司 一种数据开放平台
CN116508302A (zh) * 2020-12-31 2023-07-28 华为云计算技术有限公司 用于云服务集成的动态元数据生成的系统和方法
US11138192B1 (en) 2021-04-30 2021-10-05 Snowflake Inc. Invoking external table functions from a database system
US11487870B1 (en) * 2021-04-30 2022-11-01 Snowflake Inc. Logging from user-defined functions
CN113254529A (zh) * 2021-05-12 2021-08-13 兰州兰石集团有限公司 一种基于边缘计算和HiTSDB存储的工业物联网平台
US11347485B1 (en) * 2021-06-07 2022-05-31 Snowflake Inc. Secure, scalable, table-valued functions in a cloud database
US11269913B1 (en) * 2021-06-24 2022-03-08 Snowflake Inc. Reverse extract, transform, load (ETL) tool
US11403298B1 (en) 2021-10-29 2022-08-02 Snowflake Inc. Extending database external functions with user-defined functions

Family Cites Families (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7769825B2 (en) 2002-02-22 2010-08-03 Bea Systems, Inc. System and method for web services Java API-based invocation
US7092942B2 (en) 2002-05-31 2006-08-15 Bea Systems, Inc. Managing secure resources in web resources that are accessed by multiple portals
US20050108206A1 (en) 2003-11-14 2005-05-19 Microsoft Corporation System and method for object-oriented interaction with heterogeneous data stores
US8028329B2 (en) 2005-06-13 2011-09-27 Iamsecureonline, Inc. Proxy authentication network
JP5441303B2 (ja) 2006-01-20 2014-03-12 キヤノン株式会社 情報処理装置及び情報処理方法
US8185916B2 (en) * 2007-06-28 2012-05-22 Oracle International Corporation System and method for integrating a business process management system with an enterprise service bus
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
US20100333116A1 (en) 2009-06-30 2010-12-30 Anand Prahlad Cloud gateway system for managing data storage to cloud storage sites
US20110184813A1 (en) * 2009-09-14 2011-07-28 Cbs Interactive, Inc. Targeting offers to users of a web site
CN102792292B (zh) 2009-12-07 2015-12-16 考持·维 站点性能优化和因特网业务处理的系统和方法
US8234372B2 (en) 2010-05-05 2012-07-31 Go Daddy Operating Company, LLC Writing a file to a cloud storage solution
EP2583211B1 (en) 2010-06-15 2020-04-15 Oracle International Corporation 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
US10671628B2 (en) * 2010-07-09 2020-06-02 State Street Bank And Trust Company Systems and methods for data warehousing
US8495611B2 (en) 2010-07-09 2013-07-23 State Street Corporation Systems and methods 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
US20130205028A1 (en) * 2012-02-07 2013-08-08 Rackspace Us, Inc. Elastic, Massively Parallel Processing Data Warehouse
US9483627B1 (en) 2011-05-03 2016-11-01 Symantec Corporation Abstracting credentials for mobile client authentication
US8533231B2 (en) 2011-08-12 2013-09-10 Nexenta Systems, Inc. Cloud storage system with distributed metadata
US8176283B1 (en) 2011-09-26 2012-05-08 Google Inc. Permissions of objects in hosted storage
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
US8713633B2 (en) 2012-07-13 2014-04-29 Sophos Limited Security access protection for user data stored in a cloud computing facility
US9430640B2 (en) * 2012-09-28 2016-08-30 Intel Corporation Cloud-assisted method and service for application security verification
US9189645B2 (en) 2012-10-12 2015-11-17 Citrix Systems, Inc. Sharing content across applications and devices having multiple operation modes 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
US9209973B2 (en) 2012-11-20 2015-12-08 Google Inc. Delegate authorization in cloud-based storage system
US9342557B2 (en) 2013-03-13 2016-05-17 Cloudera, Inc. Low latency query engine for Apache Hadoop
KR102243793B1 (ko) * 2013-06-18 2021-04-26 시암벨라 리미티드 코드 가상화 및 원격 프로세스 호출 생성을 위한 방법 및 장치
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 (zh) 2013-12-30 2015-07-01 方正宽带网络服务股份有限公司 云存储系统和数据存储方法
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
US9246912B2 (en) * 2014-04-01 2016-01-26 Bank Of America Corporation Password generator
US20170046353A1 (en) 2014-07-29 2017-02-16 Hitachi, Ltd. Database management system and database management method
WO2016026537A1 (en) 2014-08-22 2016-02-25 Nec Europe Ltd. A 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
US10079834B2 (en) 2015-01-26 2018-09-18 Mobile Iron, Inc. Secure access to cloud-based services
US9934202B1 (en) 2015-03-30 2018-04-03 EMC IP Holding Company LLC Managing paginated data
KR102471665B1 (ko) * 2015-08-27 2022-11-25 포그혼 시스템스 인코포레이티드 에지 인텔리전스 플랫폼 및 사물 인터넷 센서 스트림 시스템
US10375054B2 (en) * 2015-10-06 2019-08-06 Netflix, Inc. Securing user-accessed applications in a distributed computing environment
US9665628B1 (en) * 2015-12-06 2017-05-30 Xeeva, Inc. Systems and/or methods for automatically classifying and enriching data records imported from big data and/or other sources to help ensure data integrity and consistency
US10171295B2 (en) 2016-04-07 2019-01-01 Red Hat, Inc. Distributed remote execution
US9503452B1 (en) * 2016-04-07 2016-11-22 Automiti Llc System and method for identity recognition and affiliation of a user in a service transaction
US10341410B2 (en) 2016-05-11 2019-07-02 Oracle International Corporation Security tokens for a multi-tenant identity and data security management cloud service
KR101874384B1 (ko) * 2016-05-11 2018-07-04 오라클 인터내셔날 코포레이션 멀티-테넌트 아이덴티티 및 데이터 보안 관리 클라우드 서비스
US10438013B2 (en) * 2016-06-19 2019-10-08 Data.World, Inc. Platform management of integrated access of public and privately-accessible datasets utilizing federated query generation and query schema rewriting optimization
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
US10884984B2 (en) 2017-01-06 2021-01-05 Oracle International Corporation Low-latency direct cloud access with file system hierarchies and semantics
US10878031B2 (en) * 2017-05-16 2020-12-29 Walmart Apollo, Llc Web services-based data transfers for item management
CN107368523B (zh) * 2017-06-07 2020-05-12 武汉斗鱼网络科技有限公司 一种数据处理方法及系统
EP3718021A4 (en) 2017-11-27 2021-08-18 Snowflake Inc. BATCH DATA ACQUISITION IN DATABASE SYSTEMS
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
US20190347680A1 (en) * 2018-05-11 2019-11-14 Price Brain LLC Computer-implemented methods of gathering real-time product price data from a plurality of disparate sources
US10412118B1 (en) * 2019-03-04 2019-09-10 FullArmor Corporation Group policy object management of external network resources
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

Also Published As

Publication number Publication date
WO2021086465A1 (en) 2021-05-06
DE202020005700U1 (de) 2022-02-03
US10810067B1 (en) 2020-10-20
US10846157B1 (en) 2020-11-24
US20210216385A1 (en) 2021-07-15
US10628244B1 (en) 2020-04-21
US11675640B2 (en) 2023-06-13
US20210124633A1 (en) 2021-04-29
CN113490918A (zh) 2021-10-08
US11249829B2 (en) 2022-02-15
US10997005B1 (en) 2021-05-04
EP3942414A4 (en) 2022-11-23
US11132243B2 (en) 2021-09-28
US20220129335A1 (en) 2022-04-28
KR102444106B1 (ko) 2022-09-19
EP3942414A1 (en) 2022-01-26
US20210390007A1 (en) 2021-12-16
US11126484B2 (en) 2021-09-21
KR20210138615A (ko) 2021-11-19
US20210240557A1 (en) 2021-08-05

Similar Documents

Publication Publication Date Title
KR102444106B1 (ko) 데이터 웨어하우스로부터 외부 함수를 호출하는 것
US11522860B2 (en) Storage integration with an external storage location
US11138192B1 (en) Invoking external table functions from a database system
US11570259B2 (en) Remote execution using a global identity
US20220414114A1 (en) Application update configuration using an application connector
US11494411B1 (en) Replication of account object metadata in a network-based database system
US20230353568A1 (en) Facilitating access to remotely stored credentials for accessing external resources

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal