KR102377084B1 - 분산 메타 데이터 기반 클러스터 컴퓨팅 - Google Patents

분산 메타 데이터 기반 클러스터 컴퓨팅 Download PDF

Info

Publication number
KR102377084B1
KR102377084B1 KR1020217031012A KR20217031012A KR102377084B1 KR 102377084 B1 KR102377084 B1 KR 102377084B1 KR 1020217031012 A KR1020217031012 A KR 1020217031012A KR 20217031012 A KR20217031012 A KR 20217031012A KR 102377084 B1 KR102377084 B1 KR 102377084B1
Authority
KR
South Korea
Prior art keywords
database
data
query
object metadata
serialized
Prior art date
Application number
KR1020217031012A
Other languages
English (en)
Other versions
KR20210141531A (ko
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 스노우플레이크 인코포레이티드
Priority to KR1020227008863A priority Critical patent/KR20220039836A/ko
Publication of KR20210141531A publication Critical patent/KR20210141531A/ko
Application granted granted Critical
Publication of KR102377084B1 publication Critical patent/KR102377084B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24561Intermediate data storage techniques for performance improvement
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • 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/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/252Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0281Proxies

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

공유 데이터베이스 플랫폼은 커넥터에 의해 네트워크를 통해 클러스터 컴퓨팅 플랫폼과 인터페이스할 수 있다. 네트워크를 통해 전송된 데이터는, 클러스터 컴퓨팅 플랫폼의 작업자 노드에 배포될 수 있는 메타 데이터 결과 패키지를 포함할 수 있으며, 클러스터 컴퓨팅 플랫폼은 메타데이터 객체를 수신하고, 확장 가능한 스토리지 플랫폼과 같은 스테이징 플랫폼에서의 추가 처리를 위해 결과 데이터에 액세스한다.

Description

분산 메타 데이터 기반 클러스터 컴퓨팅
관련 출원에 관한 상호 참조
본 출원은 2019년 12월 18일에 출원된 미국 특허 출원 일련 번호 16/719,218에 대한 우선권의 이익을 주장하며, 그 내용은 그 전체가 여기에 인용된다.
본 발명은 일반적으로 데이터베이스를 관리하는 전용 기계 및 그러한 변종에 대한 개선에 관한 것이고, 그러한 전용 기계가 데이터베이스 데이터를 이용하여 분산 컴퓨팅을 수행하기 위한 다른 전용 기계에 비해 개선되도록 하는 기술에 관한 것이다.
분산 처리는, 데이터를 분석하기 위한 분석 컴퓨팅 소스를 생성하는 데에 사용될 수 있다. 그러한 분산 컴퓨팅 시스템 중 일부는, 마스터 노드와, 데이터 처리 태스크를 완료하기 위해 마스터 노드의 명령에 따라 기능하는 다수의 작업자 노드를 구비하는 노드 클러스터를 포함한다. 이러한 분산 시스템에 의해서 강력한 컴퓨팅이 가능하게 되지만, 병목 현상과 같은 비효율성이 여전히 발생할 수 있다.
첨부 도면은 본 발명의 예시적인 실시 형태들을 단지 예시하는 것으로, 본 발명의 범위를 한정하는 것은 아니다.
도 l은, 본 발명의 몇몇 실시 형태에 따른, 네트워크 기반 데이터 웨어하우스 시스템이 메타 데이터 커넥터를 이용하여 클러스터 컴퓨팅을 구현할 수 있는 예시적인 컴퓨팅 환경을 도시한다.
도 2는, 본 발명의 몇몇 실시 형태에 따른, 컴퓨팅 서비스 관리자의 구성 요소를 예시하는 블록도이다.
도 3은, 본 발명의 몇몇 실시 형태에 따른, 실행 플랫폼의 구성 요소를 예시하는 블록도이다.
도 4는, 본 발명의 몇몇 실시 형태에 따른, 메타 데이터 커넥터를 사용하는 클러스터 컴퓨팅을 위한 예시적인 데이터 아키텍처를 도시한다.
도 5 및 도 6은, 본 발명의 몇몇 실시 형태에 따른, 메타 데이터 커넥터를 이용하여 클러스터 컴퓨팅을 구현하기 위한 예시적인 흐름도를 도시한다.
도 7은, 본 발명의 몇몇 실시 형태에 따른, 메타 데이터 커넥터를 이용하여 클러스터 컴퓨팅을 구현하기 위한 예시적인 네트워크 레인 다이어그램을 도시한다.
도 8은, 본 발명의 몇몇 실시 형태에 따른, 머신이 본 명세서에서 개시된 임의의 하나 이상의 방법론을 수행하도록 명령어 세트가 실행될 수 있는 컴퓨터 시스템의 형태로 상기 머신을 도식적으로 표현한 도면이다.
후속하는 설명은, 본 발명의 예시적인 실시 형태를 구현하는 시스템, 방법, 기술, 명령 시퀀스, 및 컴퓨팅 머신 프로그램 제품에 관한다. 하기 설명에 있어서, 설명의 목적상, 본 발명의 다양한 실시 형태의 이해를 제공하기 위해 다수의 구체적인 상세가 기술된다. 그러나, 당업자라면, 본 발명의 실시 형태를 그러한 구체적인 상세 사항없이 실시될 수 있음은 자명하다. 일반적으로, 공지의 명령어 인스턴스, 프로토콜, 구조 및 기술이 반드시 상세하게 도시되어 있는 것은 아니다.
개시된 바와 같이, 분산 컴퓨팅 시스템에서 비효율성이 발생할 수 있다. 일종의 비효율성으로는, 계산을 위해 데이터에 액세스하거나 데이터를 배포할 때 마스터 노드 병목 현상이 있다. 예를 들면, 클러스터 컴퓨팅 시스템의 데이터 소스가 처리를 위해 상당량의 결과 데이터(예를 들면, 쿼리 결과 데이터) 세트를 생성하면, 마스터 노드가 상당량의 결과 세트에 액세스하여 처리를 위해 작업자 노드에 결과 데이터를 배포하려고 할 때, 마스터 노드에 과부하가 걸릴 수 있다.
이 때문에, 메타 데이터 커넥터 시스템이, 공유 데이터베이스 시스템을, 해당 공유 데이터베이스 처리 시스템에 대해 쿼리를 직접 실행하고, 클러스터의 노드가 공유 데이터베이스 시스템에 접속하지 않고 클라우드 스토리지의 쿼리 결과 데이터에 직접 액세스하는 클러스터 컴퓨팅 시스템과 연결하도록 구현될 수 있다. 몇몇 예시적인 실시 형태에 있어서, 클러스터 컴퓨팅 시스템(예를 들면, Apache Spark®)으로부터의 쿼리는, 공유 멀티테넌트(multitenant) 데이터베이스 처리 시스템(예를 들면, Snowflake®)을 데이터 소스로서 이용한다. 여기서, 이 들 두개의 시스템 사이의 접속은 데이터베이스 액세스용으로 구성된 애플리케이션 프로그래밍 인터페이스(API) 커넥터를 이용하여 구현된다(예를 들면, Java Database Connectivity(JDBC®)). 몇몇 예시적인 실시 형태에 있어서, 클러스터 컴퓨팅 시스템은 API 커넥터를 통해, 스테이징 영역에 기록되는 쿼리 결과 데이터를 파일로서 생성하는 공유 데이터베이스 시스템에 쿼리를 발행한다. 예를 들면, 공유 데이터베이스 시스템은 쿼리 결과 데이터를 COPY UNLOAD SQL 명령문을 이용하여 Amazon S3 버킷과 같은 외부 스테이지에 저장할 수 있다. 여기서, COPY는 공유 데이터베이스 시스템으로부터 쿼리 결과 데이터를 복사하고, UNLOAD는 그 쿼리 결과 데이터를 스테이징 영역에 파일로서 전송한다. 몇몇 예시적인 실시 형태에 따르면, 그후, 마스터 노드는 스테이징 영역에 액세스(예를 들면, S3 버킷에 액세스)하여, 추가 처리를 위해 작업자 노드에의 파일의 배포를 위한 결과 파일에 무엇이 있는지를 판단한다.
스테이징 영역에 기록된 결과 파일이 매우 큰 경우(예를 들면, 테라바이트 크기), 결과 파일에 액세스하고/하거나 결과 파일을 작업자 노드로 전송하는 마스터 노드의 작업으로 인해 상당한 지연이 발생할 수 있다. 클러스터 컴퓨팅 시스템의 마스터 노드에 과부하가 걸리는 것을 완화하기 위해, API 커넥터(예를 들면, JDBC)는 COPY UNLOAD 명령문(예를 들면, 공유 데이터베이스 시스템에 대한 SELECT 명령문)을 사용하지 않고 공유 데이터베이스 시스템에 대해 직접 쿼리를 실행하고, 결과 파일을 스테이징 플랫폼에 저장한다. 다음에, 공유 데이터베이스 시스템은 결과 파일 데이터의 일부를 API 커넥터에 전송하여, 스테이징 영역에서의 결과 파일의 나머지 벌크를 기술하는 복수의 클러스터 직렬 객체를 포함하는 객체 메타 데이터 세트를 생성한다. 예를 들면, 결과 파일이 청크로서 S3에 기록되면, 공유 데이터베이스 시스템은 결과 파일의 제1 청크(예를 들면, 제1 청크의 크기가 일반적으로 작은 경우) 및 다른 청크의 메타 데이터(예를 들면, S3에서의 결과 청크 파일 URL을 포함하는 메타 데이터, 청크 크기, S3에서의 결과 파일에 액세스하기 위한 크리덴셜 데이터)를 API 커넥터에 전송한다. 다음에, API 커넥터는 클러스터 스토리지 개체의 리스트를 클러스터 컴퓨팅 시스템의 마스터 노드로 전송함으로써, 마스터 노드는 클러스터 스토리지 개체의 리스트를 작업자 노드에 배포할 수 있다.
작업자 노드는 클러스터 스토리지 객체를 수신하고, API 커넥터가 스테이징 영역으로부터(API 커넥터를 통해) 결과 파일 데이터를 직접 검색하도록 함수 콜을 수행한다. 이러한 방식으로, API 커넥터는 실제 결과 파일 데이터를 판독하지 않아도 되고(API 커넥터는 실제 결과 파일 데이터를 래핑된 메타 데이터 또는 객체의 엔벨로프/리스트로만 처리하고), 마스터 노드는 실제 결과 파일에 액세스하여 배포할 필요도 없고, 결과 파일을 기술하는 스토리지 객체 메타 데이터만 배포하여도 된다. 여기서, 다음에 더욱 상세히 설명하는 바와 같이, 스토리지 객체 메타 데이터는 엔벨로프로서 기능하고, 객체는 직렬화됨으로써 작업자 노드에 배포될 수 있고, 작업자 노드 중 하나에 의해 동시에 실행되거나 처리될 수 있다. 이러한 방식으로, 공유 데이터베이스에 의해 생성된 쿼리 결과 데이터 세트가 큰 경우에도, 메타 데이터는 작고 객체로서 직렬화되므로, 워크로드 분산 및 애플리케이션 응답성이 크게 향상된다.
커넥터 접근 방식의 하나의 이점으로는, 마스터 노드에의 부하를 크게 줄임으로써 심각한 병목 현상을 방지하는 것 외에도, 네트워크를 통해 전송되는 결과 파일의 네트워크 트래픽을 절반 이상으로 줄이는 것도 있다. 다른 접근 방식에서는, 마스터 노드는 결과 데이터를 수신한 후, 결과 데이터를 작업자 노드에 전송한다. 메타 데이터 커넥터 접근 방식에서는, 데이터는 공유 데이터베이스 시스템으로부터 스테이징 영역으로만 전송되고, 마스터 노드와 API 커넥터는 결과 파일의 크기보다 훨씬 작은 배포 가능한 메타 데이터만 전송한다. 또한, 메타 데이터 커넥터 접근 방식을 통해서, 스테이징 영역에서의 노드 수를 증가시켜, 증가된 로드에 대응하여 처리될 데이터 양이 상당히 확장될 수 있다. 예를 들면, 스테이징 플랫폼이 Amazon S3와 같은 탄력적으로 확장 가능한 시스템인 경우, 스테이징 플랫폼에서의 노드 수는 작업자 노드로부터의 요청을 보다 양호하게 처리하기 위해 증가될 수 있다(예를 들면, 작업자 노드 수가 증가하고/하거나 결과 파일 크기가 증가함에 따라, 작업자 노드에 응답하기 위해 스테이징 플랫폼에서의 노드의 수가 증가된다). 이에 의해, 마스터 노드를 통한 데이터의 병목 현상을 방지하고, 스테이징 영역에서의 정적 양의 노드에 과부하가 걸리는 것을 방지한다.
도 1은, 본 발명의 몇몇 실시 형태에 따른, 일부에 따라 네트워크 기반 데이터 웨어하우스 시스템(102)이 API 커넥터(145)와 같은 데이터베이스 커넥터 인터페이스를 통해 연결된 클러스터 컴퓨팅 플랫폼(150)을 위한 데이터 소스로서 기능하는 공유 데이터 처리 플랫폼(100)의 일예를 도시한다. 불필요한 상세로 본 발명의 이해를 모호하게 하는 것을 피하기 위해, 본 발명의 이해에 관련이 없는 다양한 기능적 구성 요소에 대해서는 도면에서 생략되었다. 그러나, 당업자라면, 본 명세서에서 구체적으로 설명되지 않은 추가 기능을 용이하게 하기 위해 다양한 추가 기능 구성 요소가 공유 데이터 처리 플랫폼(100)의 일부로서 포함될 수 있음을 용이하게 인식할 것이다.
도시된 바와 같이, 공유 데이터 처리 플랫폼(100)은 네트워크 기반 데이터 웨어하우스 시스템(102), 클라우드 컴퓨팅 스토리지 플랫폼(104)(예를 들면, 스토리지 플랫폼, S3와 같은 AWS® 서비스, Microsoft Azure® 또는 Google Cloud Services®), 및 사용자 장치(106)를 포함한다. 네트워크 기반 데이터 웨어하우스 시스템(102)은, 멀티테넌트 통합 방식으로 데이터를 저장 및 액세스(예를 들면, 데이터는 내부적으로 저장하고, 외부 원격지의 데이터에 액세스)하고, 하나 이상의 이종 소스(예를 들면, 클라우드 컴퓨팅 스토리지 플랫폼(104))로부터 통합된 데이터를 리포팅하고 분석하기 위해 사용된 네트워크 기반 시스템이다. 여기서, 추가 분석 컴퓨팅은 클러스터 컴퓨팅 플랫폼(150)에 의해 수행될 수 있다. 클라우드 컴퓨팅 스토리지 플랫폼(104)은 복수의 컴퓨팅 머신을 포함하고, 데이터 저장 및 계산 능력과 같은 온-디맨드 컴퓨터 시스템 리소스를 네트워크 기반 데이터 웨어하우스 시스템(102)에 제공한다.
사용자 장치(106)(예를 들면, 랩톱 컴퓨터와 같은 사용자 장치)는, 소프트웨어 구성 요소(108)(예를 들면, 브라우저 액세스 클라우드 서비스, 모바일 운영 체제용 모바일 앱과 같은 네이티브 앱)를 실행하는 하나 이상의 컴퓨팅 머신(예를 들면, 랩톱 컴퓨터와 같은 클라이언트 장치)을 포함하여, 네트워크 기반 데이터 웨어하우스 시스템(102)의 사용자에게 추가 기능을 제공한다.
소프트웨어 구성 요소(108)는, 사용자 장치(106)에 의해 실행될 때, 사용자 장치(106)가 특정한 기능을 제공하도록 하는 기계 판독 가능 명령어(예를 들면, 코드)의 세트를 포함한다. 소프트웨어 구성 요소(108)는 입력 데이터에 대해 동작할 수 있고, 입력 데이터를 처리, 분석하거나, 또는 변환하거나 하여 결과 데이터를 생성할 수 있다. 일 예로서, 소프트웨어 구성 요소(108)는, 다음에 상세히 설명하는 바와 같이, 마스터 노드(152) 및 작업자 노드(154 내지 160)에 의한 계산을 위해 클러스터 컴퓨팅 플랫폼(150) 상의 클라우드 런 고객 애플리케이션에 액세스하는 브라우저일 수 있다.
네트워크 기반 데이터 웨어하우스 시스템(102)은 액세스 관리 시스템(110), 컴퓨팅 서비스 관리자(112), 실행 플랫폼(114) 및 데이터베이스(116)를 포함한다. 액세스 관리 시스템(110)에 의해, 관리 사용자는 네트워크 기반 데이터 웨어하우스 시스템(102)에 의해 제공되는 리소스 및 서비스에 대한 액세스를 관리할 수 있게 된다. 관리 사용자는 사용자, 역할 및 그룹을 생성하고 관리할 수 있고, 권한을 이용하여 리소스 및 서비스에 대한 액세스를 허용하거나 거부할 수 있다. 액세스 관리 시스템(110)은 네트워크 기반 데이터 웨어하우스 시스템(102)의 서로 다른 사용자들 사이에서 클라우드 컴퓨팅 스토리지 플랫폼(104)의 스토리지 리소스에 대한 공유 액세스를 안전하게 관리하는 공유 데이터를 저장할 수 있다. 이에 대해서는 다음에 상세히 설명한다.
컴퓨팅 서비스 관리자(112)는 네트워크 기반 데이터 웨어하우스 시스템(102)의 동작을 조정하고 관리한다. 또한, 컴퓨팅 서비스 관리자(112)는 쿼리 최적화 및 컴파일링을 수행할 뿐만 아니라 실행 플랫폼(114)에서 컴퓨팅 리소스(예를 들면, 가상 웨어하우스, 가상 머신, EC2 클러스터)를 제공하는 컴퓨팅 서비스의 클러스터를 관리한다. 컴퓨팅 서비스 관리자(112)는 데이터 저장 및 검색 요청을 제공하는 최종 사용자, 본 명세서에서 설명된 시스템 및 방법을 관리하는 시스템 관리자, 및 컴퓨팅 서비스 관리자(112)와 상호 작용하는 다른 구성 요소/장치와 같은 임의의 수의 클라이언트 계정을 지원할 수 있다.
또한, 컴퓨팅 서비스 관리자(112)는 공유 데이터 처리 플랫폼(100)에 의해 관리되는 전체 데이터와 연관된 데이터베이스(116)에 연결된다. 데이터베이스(116)는 네트워크 기반 데이터 웨어하우스 시스템(102) 및 그 사용자와 관련된 다양한 기능 및 측면에 관한 데이터를 저장한다. 예를 들면, 클러스터 컴퓨팅 플랫폼(150) 상에서 실행되는 고객 애플리케이션에 의해 실행될 수 있는 쿼리에 대한 데이터는 내부 데이터로서 데이터베이스(116)에 저장되거나, 외부 데이터로서 스토리지 플랫폼(122)에 저장될 수 있다.
몇몇 실시 형태에 있어서, 데이터베이스(116)는 원격 데이터 스토리지 시스템에 저장된 데이터의 개요 및 하나 이상의 로컬 캐시로부터 입수 가능한 데이터를 포함한다. 또한, 데이터베이스(116)는 원격 데이터 스토리지 시스템 및 로컬 캐시에서 데이터가 어떻게 구성되는지에 관한 정보를 포함할 수 있다. 데이터베이스(116)를 통해, 시스템 및 서비스가 저장 장치로부터 실제 데이터를 로드하거나 액세스하지 않고 데이터의 조각이 엑세스될 필요가 있는지 여부를 결정할 수 있다. 또한, 컴퓨팅 서비스 관리자(112)는, 다음에 상세히 설명하는 바와 같이, 다양한 데이터 스토리지 및 데이터 검색 작업을 실행하는 다수의 컴퓨팅 리소스(예를 들면, 가상 웨어하우스)를 제공하는 실행 플랫폼(114)에 연결된다.
실행 플랫폼(114)은 클라우드 컴퓨팅 스토리지 플랫폼(104)의 일부인 다수의 데이터 저장 장치(124-1 내지 124-n)에 연결된다. 도 1에는 두 개의 데이터 저장 장치(124-1, 124-n)가 도시되어 있지만, 실행 플랫폼(114)은 탄력적 스토리지 시스템의 일부로서 임의의 수의 데이터 저장 장치와 통신할 수 있다. 몇몇 실시 형태에 있어서, 데이터 저장 장치(124-1 내지 124-n)는 하나 이상의 지리적 위치에 위치한 클라우드 기반 저장 장치이다. 예를 들면, 데이터 저장 장치(124-1 내지 124-n)는 퍼블릭 클라우드 인프라 또는 프라이빗 클라우드 인프라의 일부일 수 있다. 데이터 저장 장치(124-1 내지 124-n)는 하드 디스크 드라이브(HDD), 솔리드 스테이트 드라이브(SSD), 스토리지 클러스터, Amazon S3 스토리지 시스템 또는 임의의 다른 데이터 저장 기술일 수 있다. 또한, 클라우드 컴퓨팅 스토리지 플랫폼(104)은 분산 파일 시스템(HDFS(Hadoop Distributed Fi1e Systems)와 같은), 오브젝트 스토리지 시스템 등 일 수 있다.
실행 플랫폼(114)은 복수의 컴퓨팅 노드(예를 들면, 가상 웨어하우스)를 포함한다. 컴퓨팅 노드 상의 프로세스 세트는 컴퓨팅 서비스 관리자(112)에 의해 컴파일된 쿼리 계획을 실행한다. 프로세스 세트는, 쿼리 계획을 실행하는 제1 프로세스와, 최장시간 미사용(Least recently used(LRU)) 정책을 이용하여 마이크로-파티션 파일을 모니터링 및 삭제하고 메모리 부족(OOM) 오류 완화 프로세스를 구현하는 제2 프로세스와, 컴퓨팅 서비스 관리자(112)로 다시 전송하기 위해 프로세스 로그 및 상태 정보로부터 건강 정보를 추출하는 제3 프로세스와, 시스템 부팅 후에 컴퓨팅 서비스 관리자(112)와 통신을 구축하기 위한 제4 프로세스와, 컴퓨팅 서비스 관리자(112)에 의해 제공되는 주어진 작업에 대한 컴퓨팅 클러스터와의 모든 통신을 처리하고, 컴퓨팅 서비스 관리자(112) 및 실행 플랫폼(114)의 다른 컴퓨팅 노드에 정보를 다시 전달하는 제5 프로세스를 포함한다.
또한, 클라우드 컴퓨팅 스토리지 플랫폼(104)은 액세스 관리 시스템(118) 및 클라우드 인터페이스(120)(예를 들면, 클라우드 컴퓨팅 스토리지 플랫폼(104)용 API 게이트웨이)를 포함한다. 액세스 관리 시스템(110)과 마찬가지로, 액세스 관리 시스템(118)은 사용자가 사용자, 역할 및 그룹을 생성하고 관리할 수 있게 하고, 권한을 이용하여 클라우드 서비스 및 리소스에 대한 액세스를 허용하거나 거부할 수 있게 한다. 네트워크 기반 데이터 웨어하우스 시스템(102)의 액세스 관리 시스템(110)과 클라우드 컴퓨팅 스토리지 플랫폼(104)의 액세스 관리 시스템(118)은, 이들 네트워크 기반 데이터 웨어하우스 시스템(102) 및 클라우드 컴퓨팅 스토리지 플랫폼(104)의 사용자가 공유하는 리소스 및 서비스의 액세스 및 관리를 가능하게 하도록 정보를 통신하고 공유할 수 있다. 클라우드 인터페이스(120)는 트래픽 관리, 승인 및 액세스 제어, 모니터링 및 API 버전 관리를 포함하는 동시 API 호출을 수락하고 처리하는 것과 관련된 작업을 처리한다. 클라우드 인터페이스(120)는 API(예를 들면, REST API)의 생성, 공개, 유지, 보안, 모니터링을 위한 HTTP 프록시 서비스를 제공한다.
몇몇 실시 형태에 있어서, 공유 데이터 처리 플랫폼(100)의 요소 사이의 통신 링크는 하나 이상의 데이터 통신 네트워크를 통해 구현된다. 이들 데이터 통신 네트워크는 임의의 통신 프로토콜 및 임의의 유형의 통신 매체를 사용할 수 있다. 몇몇 실시 형태에 있어서, 데이터 통신 네트워크는 서로 연결된 둘 이상의 데이터 통신 네트워크(또는 서브네트워크)의 조합이다. 대안적인 실시 형태에서, 이들 통신 링크는 임의의 유형의 통신 매체 및 임의의 통신 프로토콜을 이용하여 구현된다.
도 1에 도시된 바와 같이, 데이터 저장 장치(124-1 내지 124-N)는 실행 플랫폼(114)과 연관된 컴퓨팅 리소스로부터 분리된다. 즉, 새로운 가상 웨어하우스가 실행 플랫폼(114)에서 생성되거나 종료될 수 있고, 추가적인 데이터 저장 장치가 클라우드 컴퓨팅 스토리지 플랫폼(104)에서 독립적인 방식으로 생성되거나 종료될 수 있다(예를 들면, 클라우드 컴퓨팅 스토리지 플랫폼(104)은 Amazon AWS와 같이 별도로 관리되지만 네트워크 기반 데이터 웨어하우스 시스템(102)에 연결된 외부 네트워크 플랫폼이다). 이러한 아키텍처는, 변화하는 데이터 저장/검색의 니즈 뿐만 아니라 공유 데이터 처리 플랫폼(100)에 액세스하는 사용자 및 시스템의 변화하는 니즈에 기초하여 네트워크 기반 데이터 웨어하우스 시스템(102)에 대한 동적 변화를 지원한다. 동적 변화의 지원을 통해서, 네트워크 기반 데이터 웨어하우스 시스템(102)은 네트워크 기반 데이터 웨어하우스 시스템(102) 내의 시스템 및 구성 요소에 대한 변화 요구에 응답하여 빠르게 확장할 수 있다. 데이터 저장 장치로부터 컴퓨팅 리소스를 분리함으로써, 다량의 해당 컴퓨팅 리소스를 필요로 하지 않고 다량의 데이터를 저장할 수 있다. 마찬가지로, 리소스의 분리에 의해, 사용 가능한 데이터 저장 리소스의 상응하는 증가를 요구하지 않고도 특정 시간에 활용되는 컴퓨팅 리소스가 상당히 증가된다. 또한, 리소스의 분리에 의해, 서로 다른 계정에서, 다른 사용자의 시스템에 영향을 주지 않고 다른 사용자가 공유하는 데이터를 처리하기 위해 추가적인 컴퓨팅 리소스의 생성을 처리할 수 있다. 예를 들면, 데이터 공급자는 3개의 컴퓨팅 리소스를 가지며 데이터 소비자와 데이터를 공유할 수 있고, 데이터 소비자는 공유 데이터에 대해 쿼리를 실행하기 위해 새로운 컴퓨팅 리소스를 생성할 수 있다. 여기서, 새로운 컴퓨팅 리소스는 데이터 소비자에 의해 관리되고, 데이터 공급자의 컴퓨팅 리소스에 영향을 미치거나 상호 작용하지 않을 수 있다.
클러스터 컴퓨팅 플랫폼(150)은, 네트워크 기반 데이터 웨어하우스 시스템(102)의 컴퓨팅 분석을 확장할 수 있는 클러스터 컴퓨팅 환경이다. 예를 들면, 네트워크 기반 데이터 웨어하우스 시스템(102)은 확장 가능한 분리된 데이터 웨어하우스를 가능하게 하기 위해 클라우드 컴퓨팅 스토리지 플랫폼(104)과 함께 기능하도록 구성될 수 있는 반면, 클러스터 컴퓨팅 플랫폼(150)은 분산 컴퓨팅 작업(예를 들면, 데이터 분석)을 수행하기 위해 마스터 노드(152) 및 복수의 작업자 노드(154)를 구현하는 빅 데이터 또는 no-SQL 플랫폼(예를 들면, Apache Spark, Hadoop, Cassandra)일 수 있다. 몇몇 예시적인 실시 형태에 있어서, 네트워크 기반 데이터 웨어하우스 시스템(102) 및 클라우드 컴퓨팅 스토리지 플랫폼(104)은 단일 엔티티로서 기능하고, 클러스터 컴퓨팅 플랫폼(150)은 단일 엔티티의 분리 및 기능에 전혀 관계가 없다. 예를 들면, 네트워크 기반 데이터 웨어하우스 시스템(102) 및 클라우드 컴퓨팅 스토리지 플랫폼(104)은 Apache Spark 클러스터(예를 들면, 클러스터 컴퓨팅 플랫폼(150)의 예시적인 실시 형태)에 대한 Snowflake 데이터 소스로서 구현될 수 있다. 이 경우, 두개의 플랫폼은 JDBC와 같은 API 커넥터(145)를 통해 연결된다. API 커넥터(145)가 네트워크 기반 데이터 웨어하우스 시스템(102)과 클러스터 컴퓨팅 플랫폼(150) 사이에 제공되는 것으로 도시되어 있지만, API 커넥터(145)는 네트워크 기반 데이터 웨어하우스 시스템(102) 내에 통합될 수도 있다. 이에 대해서는, 다음에 도 2를 참조하여 상세히 설명한다.
또한, 컴퓨팅 서비스 관리자(112), 데이터베이스(116), 실행 플랫폼(114), 클라우드 컴퓨팅 스토리지 플랫폼(104), 클러스터 컴퓨팅 플랫폼(150) 및 사용자 장치(106)가 개별 구성 요소로서 도 1에 도시되어 있다. 그러나, 컴퓨팅 서비스 관리자(112), 데이터베이스(116), 실행 플랫폼(114), 클라우드 컴퓨팅 스토리지 플랫폼(104) 및 클러스터 컴퓨팅 플랫폼(150)의 각각은, API 및 액세스 정보(예를 들면, 토큰, 로그인 데이터)에 의해 연결된 분산 시스템(예를 들면, 다수의 지리적 위치에서의 다수의 시스템/플랫폼에 걸쳐 분산됨)으로서 구현될 수 있다. 또한, 컴퓨팅 서비스 관리자(112), 데이터베이스(116), 실행 플랫폼(114), 및 클라우드 컴퓨팅 스토리지 플랫폼(104)의 각각은, 수신된 요청의 변경 및 공유 데이터 처리 플랫폼(100)의 변화하는 니즈에 따라(서로 독립적으로) 확장 또는 축소될 수 있다. 따라서, 설명된 실시 형태에 있어서, 네트워크 기반 데이터 웨어하우스 시스템(102)은 동적이며 현재 데이터 처리 니즈를 충족시키기 위해 정기적인 변경을 지원한다.
통상의 동작 중에, 네트워크 기반 데이터 웨어하우스 시스템(102)은 컴퓨팅 서비스 관리자(112)에 의해 결정된 다수의 작업(예를 들면, 클러스터 컴퓨팅 플랫폼(150)으로부터의 쿼리)을 처리한다. 이러한 작업은, 언제 어떻게 작업을 실행할지를 결정하기 위해 컴퓨팅 서비스 관리자(112)에 의해 스케줄링되고 관리된다. 예를 들면, 컴퓨팅 서비스 관리자(112)는 작업을 다수의 개별 태스크로 분할할 수 있고, 다수의 개별 태스크의 각각을 실행하기 위해 어떤 데이터가 필요한지를 결정할 수 있다. 컴퓨팅 서비스 관리자(112)는, 태스크를 처리하기 위해 실행 플랫폼(114)의 하나 이상의 노드에 복수의 개별 태스크의 각각을 할당할 수 있다. 컴퓨팅 서비스 관리자(112)는, 태스크를 처리하는 데에 어떤 데이터가 필요한지 결정할 수 있고, 실행 플랫폼(114) 내의 어떤 노드가 작업을 처리하는 데에 가장 적합한지를 더 결정할 수 있다. 일부 노드는 태스크를 처리하는 데에 필요한 데이터를 이미 캐시하였을 수도 있고(노드가 최근에 이전 작업을 위해 클라우드 컴퓨팅 스토리지 플랫폼(104)으로부터 데이터를 다운로드하였기 때문에), 따라서 태스크를 처리하기에 좋은 후보로 될 수 있다. 데이터베이스(116)에 저장된 메타 데이터는, 실행 플랫폼(114)에서의 어느 노드가 태스크를 처리하기 위하여 필요한 데이터의 적어도 일부를 이미 캐시하였는지를 결정하는 데에 컴퓨팅 서비스 관리자(112)를 지원한다. 실행 플랫폼(114)의 하나 이상의 노드는 노드에 의해 캐시된 데이터, 및 필요한 경우 클라우드 컴퓨팅 스토리지 플랫폼(104)에서 검색된 데이터를 이용하여 태스크를 처리한다. 일반적으로 검색 속도는 클라우드 컴퓨팅 스토리지 플랫폼(104)으로부터 데이터를 검색하는 속도보다 훨씬 빠르기 때문에, 실행 플랫폼(114) 내의 캐시로부터 가능한 한 많은 데이터를 검색하는 것이 바람직하다.
도 1에 도시된 바와 같이, 공유 데이터 처리 플랫폼(100)은 실행 플랫폼(114)을 클라우드 컴퓨팅 스토리지 플랫폼(104)으로부터 분리한다. 이러한 배치에 있어서, 실행 플랫폼(114)에서의 처리 리소스 및 캐시 리소스는 클라우드 컴퓨팅 스토리지 플랫폼(104)의 데이터 저장 장치(124-1 내지 124-n)와 독립적으로 작동한다. 따라서, 컴퓨팅 리소스 및 캐시 리소스는 특정한 데이터 저장 장치(124-1 내지 124-n)에 제한되지 않는다. 대신에, 모든 컴퓨팅 리소스 및 모든 캐시 리소스는 클라우드 컴퓨팅 스토리지 플랫폼(104)의 데이터 저장 리소스 중 임의의 리소스로부터 데이터를 검색하고 데이터를 저장할 수 있다.
도 2는, 본 발명의 몇몇 실시 형태에 따른, 컴퓨팅 서비스 관리자(112)의 구성 요소를 예시하는 블록도이다. 도 2에 도시된 바와 같이, 요청 처리 서비스(202)는 수신된 데이터 저장 요청 및 데이터 검색 요청(예를 들면, 데이터베이스 데이터에 대해 수행될 작업)을 관리한다. 예를 들면, 요청 처리 서비스(202)는 수신된 쿼리(예를 들면, 데이터 저장 요청 또는 데이터 검색 요청)를 처리하는 데에 필요한 데이터를 결정할 수 있다. 이 데이터는 실행 플랫폼(114) 내의 캐시에 저장되거나 클라우드 컴퓨팅 스토리지 플랫폼(104)의 데이터 저장 장치에 저장될 수 있다. 관리 콘솔 서비스(204)는 관리자 및 다른 시스템 관리자에 의한 다양한 시스템 및 프로세스에 대한 액세스를 지원한다. 또한, 관리 콘솔 서비스(204)는 작업을 실행하고 시스템 상의 워크로드를 모니터링하기 위한 요청을 수신할 수 있다.
결과 객체 관리자(207)는 스테이징 플랫폼에의 저장을 위해 직렬화된 결과 파일을 생성하고, 스테이징 플랫폼에 저장된 결과 파일을 기술하는 메타 데이터 리스트인 객체 메타 데이터 세트를 생성하도록 구성된다. 결과 객체 관리자(207)는, 네트워크 기반 데이터 웨어하우스 시스템(102)과 클러스터 컴퓨팅 플랫폼(150) 사이의 데이터의 전송(예를 들면, 쿼리의 수신 및 결과 데이터의 전송)을 용이하게 하기 위한 관계형 데이터베이스 연결 인터페이스로서 API 커넥터(145)를 포함한다. 예를 들면, 클러스터 컴퓨팅 플랫폼(150)에서 실행되는 고객 애플리케이션은 네트워크 기반 데이터 웨어하우스 시스템(102)에 쿼리를 발행할 수 있으며, 쿼리는 요청 처리 서비스에 대한 작업 요청으로서 파싱(parsing)하고 전달하기 위해 API 커넥터(145)에 보내진다. API 커넥터(145)가 클러스터 컴퓨팅 플랫폼(150)과 네트위크 기반 데이터 웨어하우스 시스템(102) 사이에 제공되는 것으로 도시되어 있지만, 몇몇 예시적인 실시 형태에 있어서는, API 커넥터(145)는 네트워크 기반 데이터 웨어하우스 시스템(102)에 설치되고, 다른 희사에 의해 관리되는 외부 실행(externally run) 클러스터 컴퓨팅 플랫폼(150)일 수 있는, 클러스터 컴퓨팅 플랫폼(150)에 대하여 데이터를 송수신한다(예를 들면, 클러스터 컴퓨팅 플랫폼(150)은 Databricks 플랫폼 또는 다른 Spark 플랫폼에 의해 호스팅되는 Apache Spark 클러스터일 수 있음).
또한, 컴퓨팅 서비스 관리자(112)는 작업 컴파일러(206), 작업 옵티마이저(208) 및 작업 실행기(210)를 포함한다. 작업 컴파일러(206)는 작업을 다수의 개별 태스크로 파싱(parse)하고, 다수의 개별 태스크의 각각에 대한 실행 코드를 생성한다. 작업 옵티마이저(208)는 처리될 필요가 있는 데이터에 기초하여 다수의 개별 태스크를 실행하기 위한 최상의 방법을 결정한다. 작업 옵티마이저(208)는 또한 작업 실행의 속도 및 효율성을 개선하기 위해 다양한 데이터 프루닝(pruning) 동작 및 기타 데이터 최적화 기술을 처리한다. 작업 실행기(210)는 큐로부터 수신되거나 컴퓨팅 서비스 관리자(112)에 의해 결정된 작업에 대한 실행 코드를 실행한다.
작업 스케줄러 및 조정자(212)는 수신된 작업을 컴파일 및 최적화를 위한 적절한 서비스 또는 시스템에 전송하고 실행 플랫폼(114)에 배정한다. 예를 들면, 작업은 우선 순위가 지정되고, 지정된 우선 순서대로 처리될 수 있다. 일 실시 형태에 있어서, 작업 스케줄러 및 조정자(212)는, 데이터베이스에서 다른 시스템에 의해 스케줄링될 수 있지만 실행 플랫폼(114)에서 동일한 처리 리소스를 활용할 수 있는 사용자 쿼리와 같은 다른 "외부" 작업과 함께 컴퓨팅 서비스 관리자(112)에 의해 스케줄링되는 내부 작업에 대한 우선순위를 결정한다. 몇몇 실시 형태에 있어서, 작업 스케줄러 및 조정자(212)는 실행 플랫폼(114)에서 특정 노드를 식별하거나 할당하여 특정 태스크를 처리한다. 가상 웨어하우스 관리자(214)는 실행 플랫폼(114)에서 구현된 다수의 가상 웨어하우스의 운영을 관리한다. 후술하는 바와 같이, 각 가상 웨어하우스는, 각각이 캐시 및 프로세서(예를 들면, 가상 머신, 운영 체제 수준 컨테이너 실행 환경)를 구비하는 다수의 실행 노드를 포함한다.
또한, 컴퓨팅 서비스 관리자(112)는 원격 데이터 저장 장치 및 로컬 캐시(즉, 실행 플랫폼(114)의 캐시)에 저장된 데이터와 관련된 정보를 관리하는 컨피그레이션 및 메타 데이터 관리자(216)를 포함한다. 컨피그레이션 및 메타 데이터 관리자(216)는 메타 데이터를 이용하여 특정 태스크 또는 작업을 처리하기 위한 데이터를 검색하기 위해 액세스되어야 하는 데이터 마이크로-파티션을 결정한다. 모니터 및 워크로드 분석기(218)는 컴퓨팅 서비스 관리자(112)에 의해 수행되는 프로세스를 감독하고, 가상 웨어하우스 및 실행 플랫폼(114)의 실행 노드에 걸친 태스크(예를 들면, 워크로드)의 분배를 관리한다. 모니터 및 워크로드 분석기(218)는 또한 네트워크 기반 데이터 웨어하우스 시스템(102)의 전반에 걸쳐 워크로드의 변화에 기초하여 필요에 따라 태스크를 재분배하고, 실행 플랫폼(114)에 의해 처리될 수도 있는 사용자(예를 들면, "외부") 쿼리 워크로드에 기초하여 태스크를 더 재분배할 수 있다. 컨피그레이션 및 메타 데이터 관리자(216)와 모니터 및 워크로드 분석기(218)는 데이터 저장 장치(220)에 연결된다. 도 2에서의 데이터 저장 장치(220)는 네트워크 기반 데이터 웨어하우스 시스템(102) 내의 임의의 데이터 저장 장치를 나타낸다. 예를 들면, 데이터 저장 장치(220)는 실행 플랫폼(114)의 캐시, 클라우드 컴퓨팅 스토리지 플랫폼(104)의 저장 장치, 또는 임의의 다른 저장 장치를 나타낼 수 있다.
도 3은, 본 발명의 몇몇 실시 형태에 따른 실행 플랫폼(114)의 구성 요소를 예시하는 블록도이다. 도 3에 도시된 바와 같이, 실행 플랫폼(114)은 가상 머신과 같은 컴퓨팅 인스턴스의 탄력적 클러스터인 다수의 가상 웨어하우스를 포함한다. 예시된 예에서, 가상 웨어하우스는 가상 웨어하우스(1), 가상 웨어하우스(2) 및 가상 웨어하우스(n)을 포함한다. 각 가상 웨어하우스(예를 들면, EC2 클러스터)는, 각각이 데이터 캐시와 프로세서를 구비하는 다수의 실행 노드(예를 들면, 가상 머신)를 포함한다. 가상 웨어하우스는 다수의 실행 노드를 이용하여 다수의 작업을 병렬로 실행할 수 있다. 본 명세서에서 설명한 바와 같이, 실행 플랫폼(114)은 시스템 및 사용자의 현재 처리 니즈에 기초하여 실시간으로 새로운 가상 웨어하우스를 추가하고 기존의 가상 웨어하우스를 삭제할 수 있다. 이러한 유연성을 통해, 실행 플랫폼(114)은, 대량의 컴퓨팅 리소스가 더 이상 필요하지 않을 때 해당 컴퓨팅 리소스에 대한 비용을 계속하여 지불하지 않고도, 필요에 따라 대량의 컴퓨팅 리소스를 신속하게 전개할 수 있다. 모든 가상 웨어하우스는 임의의 데이터 저장 장치(예를 들면, 클라우드 컴퓨팅 스토리지 플랫폼(104)의 임의의 저장 장치)로부터 데이터에 액세스할 수 있다.
도 3에 도시된 각 가상 웨어하우스는 3개의 실행 노드를 포함하지만, 특정한 가상 웨어하우스는 임의의 수의 실행 노드를 포함할 수 있다. 또한, 가상 웨어하우스에서의 실행 노드의 개수는 동적이며, 추가 수요가 있을 때, 새 실행 노드가 생성되고, 더 이상 필요하지 않을 때(예를 들면, 쿼리 또는 작업의 완료 시) 기존의 실행 노드는 삭제된다.
각 가상 웨어하우스는, 도 1에 도시된 데이터 저장 장치(124-1 내지 124-n) 중 어느 하나에 액세스할 수 있다. 따라서, 가상 웨어하우스는 반드시 특정 데이터 저장 장치(124-1 내지 124-n)에 할당될 필요는 없으며, 대신에, 클라우드 컴퓨팅 스토리지 플랫폼(104) 내의 데이터 저장 장치(124-1 내지 124-n) 중 임의의 데이터 저장 장치의 데이터에 액세스할 수 있다. 마찬가지로, 도 3에 도시된 실행 노드의 각각은, 데이터 저장 장치(124-1 내지 124-n) 중 임의의 데이터 저장 장치의 데이터에 액세스할 수 있다. 예를 들면, 제1 사용자(예를 들면, 제공자 계정 사용자)의 저장 장치(124-1)는 다른 사용자(예를 들면, 소비자 계정 사용자)의 가상 웨어하우스에서의 작업자 노드와 공유될 수 있어, 다른 사용자는 데이터베이스(예를 들면, 읽기 전용 데이터베이스)를 생성할 수 있고, 데이터를 복사할 필요 없이(예를 들면, 소비자 계정 사용자에 의해 관리되는 새로운 디스크에 복사할 필요 없이) 저장 장치(124-1)에서의 데이터를 직접 사용할 수 있다. 몇몇 실시 형태에 있어서, 특정한 가상 웨어하우스 또는 특정한 실행 노드는 특정한 데이터 저장 장치에 일시적으로 할당될 수 있지만, 가상 웨어하우스 또는 실행 노드는 나중에 임의의 다른 데이터 저장 장치의 데이터에 액세스할 수 있다.
도 3에 도시된 예에 있어서, 가상 웨어하우스(1)는 3개의 실행 노드(302-1, 302-2, 302-n)를 포함한다. 실행 노드(302-1)는 캐시(304-1) 및 프로세서(306-1)를 포함한다. 실행 노드(302-2)는 캐시(304-2) 및 프로세서(306-2)를 포함한다. 실행 노드(302-n)는 캐시(304-n) 및 프로세서(306-n)를 포함한다. 실행 노드(302-1, 302-2, 302-n)의 각각은 하나 이상의 데이터 저장 및/또는 데이터 검색 태스크를 처리하는 것과 연관된다. 예를 들면, 가상 웨어하우스는 클러스터링 서비스, 구체화된 뷰 리프레시 서비스, 파일 압축 서비스, 저장 절차 서비스 또는 파일 업그레이드 서비스와 같은 내부 서비스와 관련된 데이터 저장 및 데이터 검색 태스크를 처리할 수 있다. 다른 구현예에 있어서, 특정한 가상 웨어하우스는 특정한 데이터 스토리지 시스템 또는 데이터의 특정 카테고리와 관련된 데이터 저장 및 데이터 검색 태스크를 처리할 수 있다.
상기한 가상 웨어하우스(1)과 마찬가지로, 가상 웨어하우스(2)는 3개의 실행 노드(312-1, 312-2, 312-n)를 포함한다. 실행 노드(312-1)는 캐시(314-1) 및 프로세서(316-1)를 포함한다. 실행 노드(312-2)는 캐시(314-2) 및 프로세서(316-2)를 포함한다. 실행 노드(312-n)는 캐시(314-n) 및 프로세서(316-n)를 포함한다. 또한, 가상 웨어하우스(3)는 3개의 실행 노드(322-1, 322-2, 322-n)를 포함한다. 실행 노드(322-1)는 캐시(324-1) 및 프로세서(326-1)를 포함하고, 실행 노드(322-2)는 캐시(324-2) 및 프로세서(326-2)를 포함한다. 실행 노드(322-n)는 캐시(324-n) 및 프로세서(326-n)를 포함한다.
몇몇 실시 형태에 있어서, 도 3에 도시된 실행 노드는 실행 노드가 캐싱하는 데이터에 대하여 무상태(stateless)이다. 예를 들면, 이러한 실행 노드는 실행 노드에 대한 상태 정보 또는 특정 실행 노드에 의해 캐시되는 데이터를 저장하거나 유지하지 않는다. 따라서 실행 노드에 장애가 발생하는 경우, 해당 장애가 발생한 노드는 다른 노드로 간단히 교체될 수 있다. 장애 발생한 실행 노드에 관련된 상태 정보가 없기 때문에, 장애가 발생한 노드는 특정 상태를 재생할 우려없이 새로운(교체) 실행 노드로 쉽게 교체될 수 있다.
도 3에 도시된 실행 노드의 각각이 하나의 데이터 캐시 및 하나의 프로세서를 포함하지만, 대안적인 실시 형태에서는, 실행 노드의 각각은 임의의 수의 프로세서 및 임의의 수의 캐시를 포함할 수 있다. 또한, 캐시의 크기는 서로 다른 실행 노드에서 변경될 수 있다. 도 3에 도시된 캐시는, 클라우드 컴퓨팅 스토리지 플랫폼(104)의 하나 이상의 데이터 저장 장치로부터 검색된 데이터(예를 들면, 주어진 노드에 의해 최근에 액세스된 S3 객체)를 로컬 실행 노드(예를 들면, 로컬 디스크)에 저장한다. 몇몇 예시적인 실시 형태에 있어서, 캐시는, 쿼리가 해당 쿼리에 필요한 열(column)만 다운로드할 때, 파일 헤더 및 파일의 개별 열을 저장한다.
캐시 히트를 개선하고 노드 캐시에 저장된 중복된 데이터의 오버랩을 피하기 위해, 작업 옵티마이저(208)는 일관된 해싱 방식을 이용하여 입력 파일 세트를 노드에 할당하여, 액세스된 데이터(예를 들면, 데이터베이스(116) 또는 스토리지 플랫폼(122)의 데이터)의 테이블 파일 이름을 해시한다. 따라서, 몇몇 예시적인 실시 형태에 따르면, 동일한 테이블 파일에 액세스하는 후속 또는 동시 쿼리는 동일한 노드에서 수행될 것이다.
전술한 바와 같이, 노드 및 가상 웨어하우스는 환경 조건(예를 들면, 재해 시나리오), 하드웨어/소프트웨어 문제(예를 들면, 오작동) 또는 관리적 변경(예를 들면, 비용 저감을 위해 대형 클러스터로부터 보다 작은 클러스터로의 변경)에 따라 동적으로 변경될 수 있다. 몇몇 예시적인 실시 형태에 있어서, 노드의 세트가 변경될 때, 어떠한 데이터도 즉시 개편되지 않는다. 대신에, 여러 작업에 걸쳐 손실된 캐시 내용을 최종적으로 교체하기 위해, 최장시간 미사용 정책이 구현된다. 따라서, 캐시는 원격 스토리지 시스템으로부터 지속적으로 데이터를 검색하는 플랫폼에서 발생하는 병목 문제를 줄이거나 제거한다. 원격 저장 장치의 데이터에 반복적으로 액세스하는 대신에, 본 명세서에 개시된 시스템 및 방법은 실행 노드에서의 캐시의 데이터에 액세스함으로써, 상당히 빠르고, 상기의 병목 문제를 방지한다. 몇몇 실시 형태에 있어서, 캐시는, 캐시된 데이터에 대한 빠른 액세스를 제공하는 고속 메모리 장치를 이용하여 구현된다. 각 캐시는, 클라우드 컴퓨팅 스토리지 플랫폼(104)에서의 임의의 저장 장치의 데이터를 저장할 수 있다.
또한, 캐시 리소스 및 컴퓨팅 리소스는 서로 다른 실행 노드 별로 변경될 수 있다. 예를 들면, 하나의 실행 노드는 상당한 컴퓨팅 리소스와 최소한의 캐시 리소스를 포함할 수 있으며, 이 실행 노드는 상당한 컴퓨팅 리소스가 필요한 태스크에 유용하다. 다른 실행 노드는 상당한 캐시 리소스와 최소한의 컴퓨팅 리소스를 포함할 수 있으며, 이 실행 노드는 대용량의 데이터의 캐싱이 필요한 태스크에 유용하다. 또 다른 실행 노드는 보다 빠른 입출력 동작을 제공하는 캐시 리소스를 포함할 수 있으며, 이 실행 노드는 대용량의 데이터의 신속한 스캔이 필요한 태스크에 유용하다. 몇몇 실시 형태에 있어서, 실행 플랫폼(114)은 특정 실행과 연관된 캐시 리소스 및 컴퓨팅 리소스 사이에 작업을 분배하기 위해 비대칭 처리(skew handling)를 실현한다. 여기서, 분배는 실행 노드에 의해 수행될 예상 태스크에 더 기초할 수 있다. 예를 들면, 실행 노드에 의해 수행되는 태스크가 보다 프로세서-집약적으로 된 경우, 실행 노드에 보다 많은 처리 리소스가 할당될 수 있다. 마찬가지로, 실행 노드에 의해 수행되는 태스크에 보다 큰 캐시 용량이 필요한 경우, 실행 노드에 보다 많은 캐시 리소스가 할당될 수 있다. 또한, 일부 노드는 다양한 문제(예를 들면, 가상화 문제, 네트워크 오버헤드)로 인해 다른 노드보다 훨씬 느리게 실행될 수 있다. 몇몇 예시적인 실시 형태에 있어서, 불균형 문제는 파일 도용 방식을 이용하여 스캔 레벨에서 처리된다. 특히, 노드 프로세스가 입력 파일 세트의 스캔을 완료할 때마다, 다른 노드로부터 추가 파일을 요청한다. 다른 노드 중 하나가 이러한 요청을 수신하는 경우, 해당 노드는 그 자체의 세트(예를 들면, 요청이 수신될 때 입력 파일 세트에 남아 있는 파일 수)를 분석한 다음, 현재 작업(예를 들면, 쿼리) 기간 동안에 나머지 파일 중 하나 이상의 소유권을 전송한다. 그 다음, 요청 노드(예를 들면, 파일 도용 노드)는 데이터(예를 들면, 헤더 데이터)를 수신하고, 클라우드 컴퓨팅 스토리지 플랫폼(104)으로부터(예를 들면, 데이터 저장 장치(124-1)로부터) 파일을 다운로드하지만, 전송 노드로부터는 파일을 다운로드하지 않는다. 이러한 방식으로, 지연 노드는 지연 노드에의 부하를 악화시키지 않는 방식으로 파일 도용을 통해 파일을 전송할 수 있다.
가상 웨어하우스(1, 2 및 n)가 동일한 실행 플랫폼(114)과 연관되어 있지만, 가상 웨어하우스는 다수의 지리적 위치에서 다수의 컴퓨팅 시스템을 이용하여 구현될 수 있다. 예를 들면, 가상 웨어하우스(1)는 제1 지리적 위치에서 컴퓨팅 시스템에 의해 구현될 수 있는 반면, 가상 웨어하우스(2 및 n)는 제2 지리적 위치에서 다른 컴퓨팅 시스템에 의해 구현될 수 있다. 몇몇 실시 형태에 있어서, 이들 서로 다른 컴퓨팅 시스템은 하나 이상의 서로 다른 엔티티에 의해 유지되는 클라우드 기반 컴퓨팅 시스템이다.
또한, 각 가상 웨어하우스는 다수의 실행 노드를 갖는 것으로 도 3에 도시되어 있다. 각 가상 웨어하우스와 관련된 다수의 실행 노드는 다수의 지리적 위치에서 다수의 컴퓨팅 시스템을 이용하여 구현될 수 있다. 예를 들면, 가상 웨어하우스(1)의 인스턴스는 지리적 위치에서 하나의 컴퓨팅 플랫폼에서의 실행 노드(302-1, 302-2)를 구현하고, 다른 지리적 위치에서 다른 컴퓨팅 플랫폼에서의 실행 노드(302-n)를 구현한다. 실행 노드를 구현하기 위해 특정 컴퓨팅 시스템을 선택하는 것은, 특정 실행 노드에 필요한 리소스의 수준(예를 들면, 처리 리소스 요구 사항 및 캐시 요구 사항), 특정 컴퓨팅 시스템에서 사용 가능한 리소스, 지리적 위치 내에서 또는 지리적 위치 사이에서의 네트워크의 통신 능력, 및 가상 웨어하우스에서 어떤 컴퓨팅 시스템이 이미 다른 실행 노드를 구현한지와 같은 다양한 요인에 따라 달라질 수 있다.
실행 플랫폼(114)은 또한 내고장성(fault tolerant)을 갖는다. 예를 들면, 하나의 가상 웨어하우스가 실패하면, 해당 가상 웨어하우스는 다른 지리적 있는 위치에 있는 다른 가상 웨어하우스로 신속하게 교체된다.
특정 실행 플랫폼(114)은 임의의 수의 가상 웨어하우스를 포함할 수 있다. 또한, 특정 실행 플랫폼에서의 가상 웨어하우스의 개수는 동적이므로, 추가 처리 및/또는 캐싱 리소스가 필요할 때, 새로운 가상 웨어하우스가 생성된다. 마찬가지로, 가상 웨어하우스와 관련된 리소스가 더 이상 필요하지 않을 때, 기존 가상 웨어하우스는 삭제될 수 있다.
몇몇 실시 형태에 있어서, 가상 웨어하우스는 클라우드 컴퓨팅 스토리지 플랫폼(104)에서의 동일한 데이터에 대해 작동할 수 있지만, 각 가상 웨어하우스는 독립적인 처리 및 캐싱 리소스를 갖는, 그 자체의 실행 노드를 갖는다. 이러한 구성에 따르면, 서로 다른 가상 웨어하우스에 대한 요청은 요청 간에 간섭없이 독립적으로 처리될 수 있다. 가상 웨어하우스를 동적으로 추가하거나 제거하는 능력과 조합된, 이러한 독립적인 처리는, 기존 사용자가 관찰한 성능에 영향을 주지않고 신규 사용자를 위한 새로운 처리 용량의 추가를 지원한다.
도 4는, 몇몇 예시적인 실시 형태에 따른, 분산 클러스터 컴퓨팅을 위한 예시적인 메타 데이터 커넥터 아키텍처(400)를 도시한다. 도 4에 도시된 예에 있어서, 클러스터 컴퓨팅 플랫폼(150)은, 마스터 노드(425)(예를 들면, 드라이버 노드)를 사용하는 클러스터 접근 방식으로 데이터를 처리하는 사용자 코드(420)(예를 들면, 최종 사용자, 쿼리, Spark 애플리케이션 등)와, 복수의 작업자 노드(430)를 포함한다. 클러스터 컴퓨팅 플랫폼(150)은, API 커넥터(145)(예를 들면, JDBC 커넥터)를 통해 관계형 데이터 소스로서 네트워크 기반 데이터 웨어하우스 시스템(102)을 사용하도록 구성된다. 본 예에서, 사용자 코드(420)는 API 커넥터(145)용 포멧의 쿼리(예를 들면, "ExecuteQuery")를 포함하고, API 커넥터(145)는 그 다음 네트워크 기반 데이터 웨어하우스 시스템(102)용의 쿼리 포멧(예를 들면, "execute")으로 네트워크 기반 데이터 웨어하우스 시스템(102)에 대해 쿼리를 실행한다. 네트워크 기반 데이터 웨어하우스 시스템(102)은 도 1 내지 도 3을 참조하여 위에서 설명한 바와 같이, 분리된 확장 가능한 접근 방식으로 하나 이상의 가상 웨어하우스 및 저장 장치를 구현하여, 결과 파일(410)을 생성하는 데에 사용되는 쿼리 데이터(407)(예를 들면, 쿼리 결과)를 생성한다.
몇몇 예시적인 실시 형태에 있어서, 결과 파일(410)은 직렬화 인터페이스(예를 들면, Java 직렬화, 결과 파일(1, 2, 3, …, n), 작업자 측에서 압축 해제될 수 있는 JSON의 직렬화 파일)를 이용하여 직렬화된 객체이다. 예를 들면, 네트워크 기반 데이터 웨어하우스 시스템(102)은 객체(예를 들면, writeObject() 메서드를 이용하여 ObjectOutputStream 클래스를 이용하여 직렬화하기 위한 import.java.io.serializable)를 구성할 때 Java 직렬화 인터페이스를 구현한다. 객체의 직렬화는 객체 상태를 일련의 바이트에 저장하고, 나중에 처리될 수 있는 처리 가능한 객체를 복원하는 프로세스를 바이트에 저장한다(예를 들면, 주어진 작업자 노드에서 복원하거나 처리하는 프로세스). 몇몇 예시적인 실시 형태에 있어서, 쿼리 데이터(407)는 JSON 데이터로 리턴되며, 그 후에 직렬화 객체를 생성하는 데에 사용된다. 여기서, 스키마 및 변수 값은 직렬화 인터페이스에서 지속됨으로써, 결과 파일은 S3에의 저장을 위한 직렬화 객체로서 압축될 수 있고, 그 후에 작업자 노드의 요청에 의해 작업자 노드에 배포되고, 이어서 각 작업자 노드마다 압축 해제(예를 들면, 역직렬화, 복원)된다. 몇몇 예시적인 실시 형태에 있어서, 상태가 저장되는 직렬화 변수는, 쿼리되는 테이블의 열 이름과, 직렬화되거나 지속되는 데이터가 쿼리되고 있는 데이터(예를 들면, 클러스터 컴퓨팅 플랫폼(150)에 의해 쿼리되고 있는 네트워크 기반 데이터 웨어하우스 시스템(102)에서의 데이터, 스키마, 테이블 양, 데이터 유형 등)에 기초하여 변경될 수 있는 인덱스를 포함한다. 스테이징 플랫폼(405)에 직렬화되어 저장된 객체의 크기는 구현예(예를 들면, 결과 파일의 양을 줄이기 위해 파일 크기를 크게 설정하거나, 파일 양을 증가시키는 한편 분산 성능을 높이기 위해 추가 작업자 노드에 의존하도록 파일 크기를 작게 설정한다)에 따라 다를 수 있다. 본 예에서 JSON에 대해 설명하지만, 객체는 Arrow 포맷 및 부가적인 이진 포맷으로 구성되고 직렬화될 수 있다.
그 후, 네트워크 기반 데이터 웨어하우스 시스템(102)은 결과 파일(410)을 스테이징 플랫폼(405)에 저장한다. 스테이징 플랫폼(405)은, 탄력적인 클라우드 스토리지 데이터베이스(예를 들면, S3)일 수 있고, 대량의 결과 파일과 클러스터 컴퓨팅 플랫폼(150)으로부터의 연결(예를 들면, 작업자 노드 요청)을 처리하기 위해 확장 가능할 수 있다.
전술한 바와 같이, 마스터 노드(425)가 스테이징 플랫폼(405)의 결과 파일(410)에 액세스하는 경우(예를 들면, 결과 파일을 검색하고 작업자에게 데이터를 배포하기 위한 계획을 결정하기 위해), 결과 파일의 크기가 증가함에 따라 병목 현상이 발생할 수 있다. 이러한 병목 현상을 방지하고 확장성을 보장하기 위해, Snowflake 플랫폼은, 플랫폼(405)의 데이터를 기술하는 객체 메타 데이터 세트(예를 들면, 래퍼, 엔벨로프)를 구성하고, 이 객체 메타 데이터를 클러스터 컴퓨팅 플랫폼(150)에 발송하도록 API 커넥터(145)에 전송한다. 예를 들면, 몇몇 예시적인 실시 형태에 따르면, 네트워크 기반 데이터 웨어하우스 시스템(102)은 제1 청크(실제 결과 파일 객체), 파일 URL, 행 카운트, 압축/비압축 크기 및 스테이징 플랫폼(405)에 여전히 존재하는 결과 파일(410)의 다른 청크에 대한 크리덴셜 데이터로 이루어지는 객체 메타 데이터 세트를 갖는다.
API 커넥터(145)는 객체 메타 데이터 세트를 수신하고, 그 수신한 객체 메타 데이터 세트를 판독하거나 수정할 필요없이, 그것을 클러스터 컴퓨팅 플랫폼(150), 예를 들면 마스터 노드(425)에 전송한다. 이러한 방식으로, 결과 파일의 양이 매우 많을지라도, 결과 파일을 기술하는 객체 메타 데이터 세트는 여전히 작아 처리하거나 전송하기 쉽다. 계속해서, 마스터 노드(425)는 클러스터 컴퓨팅 플랫폼(150) 고유의 배포 및 최적화를 이용하여 객체 메타 데이터 세트의 개별 객체를 작업자 노드에 배포한다. 예를 들면, 클러스터 컴퓨팅 플랫폼(150)이 Apache Spark인 경우, 마스터 노드(425)는 RDD로서 작업자 노드(430)에 객체를 배포한다. 여기서, RDD의 배포 및 순서 지정은 Apache Spark 내의 고유 최적화(native optimization)에 의해 처리된다. 본 발명에서는 Apache Spark가 일예로서 사용되지만, 클러스터 컴퓨팅 플랫폼(150)은 Cassandra 또는 Hadoop과 같은 다른 클러스터 모드 플랫폼이어도 된다. 이러한 예시적인 구현예에 있어서, 클러스터 시스템은 계산을 위해 객체를 용이하게 수신하고 배포할 수 있다. 예를 들면, 클러스터 컴퓨팅 플랫폼(150)은 Hadoop일 수 있고, 직렬화 가능한 저장 객체를 노드에 효율적으로 배포할 수 있으며, 스테이징 플랫폼(405)의 데이터에 신속하게 액세스하고 데이터를 압축 해제하여, 유사한 방식으로 Hadoop 애플리케이션에 대하여 액션(예를 들면, MapReduce 동작)을 추가로 수행할 수 있다.
계속해서, 작업자 노드(430)는 객체를 수신한 후, 커넥터 함수 호출(415)을 이용하여 스테이징 플랫폼(405)으로부터 각 작업자에게 할당된 결과 파일을 검색한다. 예를 들면, 예시된 바와 같이 작업자 2는 커넥터 JDBC_2에 함수 "getResultSet()"를 호출하여, 스테이징 플랫폼(405)상의 결과 파일 2를 포함하는 표준 JDBC ResultSet 객체를 얻는다. 여기서, 리턴된 데이터는 압축 해제된다(예를 들면, JSON 비직렬화기). 함수 getResultSet()는 몇몇 예시적인 실시 형태에 따라 API 커넥터(145)에서 JDBC 고유의 표준 getResult() 호출에 매핑된다(예를 들면, 커넥터 코드는 상기 매핑을 저장하도록 확장되거나 수정된다). 마찬가지로, 작업자 3은 커넥터 JDBC_3에 대해 함수 "getResultSet()"를 호출하여, 스테이징 플랫폼(405) 상의 결과 파일 3을 포함하는 표준 JDBC ResultSet 객체를 얻으며, 추가 작업자 노드는 마찬가지로 추가 결과 파일의 결과 세트 데이터에 액세스할 수 있다(예를 들면, 작업자 노드(n)는 JDBC_n을 이용하여 ResultSet n을 수신한다). 예시된 예에 있어서, 제1 작업자 노드는, 해당 파일이 객체 메타 데이터 세트에 포함되어 있기 때문에, 제1 청크(예를 들면, 결과 파일 1)에 액세스하지 않는다(예를 들면, 결과 파일 1 또는 Result Set의 제1 청크가 일반적으로 작은 경우, 이들은 API 커넥터(145)를 통해 전송된 메타 데이터 객체에 포함된다). 또한, 몇몇 예시적인 실시 형태에 따르면, 커넥터 함수 호출(415)은 API 커넥터(145)에의 호출인 반면, 다른 예시적인 실시 형태에서는, JDBC_l, JDBC_2, JDBC_3, JDBC_n 등의 각각은 각 작업자 노드마다 설치된 개별 API 커넥터의 분리된 인스턴스이다. 계속해서, 작업자 노드(430)가 HTTP URL을 통해 결과 데이터의 할당된 해당 부분을 다운로드하여 이들을 압축 해제하면, 각 작업자 노드는 사용자 코드(420)마다 분석을 추가로 수행할 수 있다(예를 들면, 추가 처리, 쿼리, 필터링 생성 시각화 및 최종 사용자가 지시한 기타 액션).
몇몇 예시적인 실시 형태에 있어서, 결과 파일(410)은 사전 구성된 기간 동안 스테이징 플랫폼(405)에 객체로서 저장됨으로써, 나중에 작업자 노드에 의해 쿼리된 데이터의 신속한 재처리가 가능하다. 예를 들면, 주어진 쿼리에 대한 결과 파일(410)은 36시간(예를 들면, 세션) 동안 스테이징 플랫폼(405)에 저장됨으로써, 작업자는 새로운 결과 파일을 생성하거나 새로운 직렬화를 정의하지 않고도 쿼리된 데이터를 신속하게 재처리하고 역직렬화할 수 있다. 또한, 몇몇 예시적인 실시 형태에 따르면, 작업자에 의해 사용되는(예를 들면, 엔벨로프로부터 수신된) 크리덴셜은 보안성의 향상을 위해 만료된다(예를 들면, 스테이징 플랫폼(405) 상의 결과 파일 2에 액세스하기 위한 작업자 2의 크리덴셜은 6시간 이내에 만료된다).
도 5는, 몇몇 예시적인 실시 형태에 따른, 클러스터 컴퓨팅 처리를 위한 결과 파일 및 객체 메타 데이터 세트 항목을 생성하기 위한 방법(500)의 흐름도이다. 동작(505)에서, 컴퓨팅 클러스터는 컴퓨팅 클러스터가 쿼리를 실행할 수 있는 데이터 소스에 연결된다. 예를 들면, 동작(505)에서, 클러스터 컴퓨팅 플랫폼(150)의 마스터 노드는 API 커넥터(145)와 같은 API 커넥터를 통해 네트워크 기반 데이터 웨어하우스 시스템(102)에 연결된다.
동작(510)에서, 네트워크 기반 데이터 웨어하우스 시스템(102)은 클러스터로부터 쿼리를 수신한다. 예를 들면, 동작(510)에서, 클러스터 컴퓨팅 플랫폼(150) 상의 고객 애플리케이션은 네트워크 기반 데이터 웨어하우스 시스템(102)에 의해 관리되는 데이터베이스에 대한 처리를 위해 API 커넥터(145)를 통해 네트워크 기반 데이터 웨어하우스 시스템(102)에 전송된 쿼리를 실행한다. 동작(515)에서, 네트워크 기반 데이터 웨어하우스 시스템(102)은 쿼리를 실행한다. 예를 들면, 네트워크 기반 데이터 웨어하우스 시스템(102)은 도 1 내지 도 3을 참조하여 앞서 설명한 가상 웨어하우스를 이용하여 공유 데이터 처리 플랫폼(100)에 의해 관리되는 데이터에 대한 쿼리를 실행한다.
동작(520)에서, 네트워크 기반 데이터 웨어하우스 시스템(102)은 쿼리 데이터로부터 결과 파일을 생성한다. 전술한 바와 같이, 결과 파일은 API 커넥터(145)(예를 들면, java.io.serializable)를 통해 직렬화될 수 있고, 클러스터 컴퓨팅 플랫폼의 작업자 노드와 같은 원격 처리용의 다른 시스템에 전송될 수 있다. 동작(525)에서, 네트워크 기반 데이터 웨어하우스 시스템(102)은 생성된 결과 파일을 저장한다. 예를 들면, 동작(525)에서, 네트워크 기반 데이터 웨어하우스 시스템(102)은 결과 파일을 Amazon S3 또는 Microsoft Azure와 같은 클라우드 기반 스테이징 플랫폼에 저장한다.
동작(530)에서, 네트워크 기반 데이터 웨어하우스 시스템(102)은 스테이징 플랫폼에 저장된 직렬화 데이터를 기술하는 객체 메타 데이터 세트를 생성한다. 전술한 바와 같이, 객체 메타 데이터 세트는, 스테이징 플랫폼 상의 각 결과 파일에 대하여, 제1 결과 파일 또는 청크 데이터와, 결과 파일의 크기, 파일의 포맷, 크리덴셜 또는 액세스 정보, 파일 경로(예를 들면, 네트워크 주소, URL)를 포함하는 스테이징 플랫폼에 저장된 결과 파일을 기술하는 메타 데이터를 포함할 수 있다.
동작(535)에서, 네트워크 기반 웨어하우스 시스템은 객체 메타 데이터 세트를 전송한다. 예를 들면, 동작(535)에서, 네트워크 기반 데이터 웨어하우스 시스템(102)은 작업자 노드에의 배포 및 추가 처리를 위해 API 커넥터(145)를 통해 클러스터 컴퓨팅 플랫폼(150)에 객체 메타 데이터 세트를 전송한다.
도 6은, 몇몇 예시적인 실시 형태에 따른, API 커넥터로부터 수신된 결과 파일을 처리하기 위한 방법(600)의 흐름도를 도시한다. 동작(605)에서, 클러스터 컴퓨팅 플랫폼(150)은 객체 메타 데이터 세트를 수신한다. 예를 들면, 동작(605)에서, 클러스터 컴퓨팅 플랫폼(150)의 마스터 노드는 API 커넥터(145)로부터 객체 메타 데이터 세트를 수신한다. 동작(610)에서, 클러스터 컴퓨팅 플랫폼(150)은 객체 메타 데이터 세트의 항목을 배포한다. 예를 들면, 동작(610)에서, 클러스터 컴퓨팅 플랫폼(150)의 마스터 노드는 해당 작업자 노드들에 대하여 객체 메타 데이터 세트, 예를 들면, 작업자 노드당 하나의 메타 데이터 항목을 배포한다. 여기서, 메타 데이터 객체의 각각에 의해, 수신자 작업자 노드는 스테이징 플랫폼 상의 결과 파일 중의 하나를 처리를 위해 검색할 수 있다.
동작(615)에서, 클러스터 컴퓨팅 플랫폼(150)은 스테이징 플랫폼으로부터 결과 파일을 검색한다. 예를 들면, 동작(615)에서, 클러스터 컴퓨팅 플랫폼(150)의 작업자 노드는 API 커넥터(145) 에 대하여 함수 호출(예를 들면, GetResult())를 수행하여, 스테이징 플랫폼으로부터 결과 파일에 직접 액세스하여 다운로드한다. API 커넥터(145)는 주어진 작업자 노드로부터 함수 호출을 수신하고, 해당 주어진 노드에 할당된 스테이징 플랫폼의 결과 파일을 포함하는 JDBC의 ResultSet과 같은 결과 데이터를 리턴한다.
동작(620)에서, 클러스터 컴퓨팅 플랫폼(150)은 검색된 결과 파일을 파싱한다. 예를 들면, 동작(620)에서, 각 작업자는 스테이징 플랫폼으로부터 스토리지 객체 결과 파일을 다운로드하여 이를 압축 해제하고(예를 들면, JSON 직렬화기를 이용하여 스토리지 객체 결과 파일을 역직렬화하고), 처리를 위해 결과 데이터를 압축되지 않은 형식으로 저장한다.
동작(625)에서, 클러스터 컴퓨팅 플랫폼(150)은 검색된 결과 파일에 대하여 애플리케이션 동작을 수행한다. 예를 들면, 동작(625)에서, 클러스터 컴퓨팅 플랫폼(150)에서의 각 작업자 노드는 클러스터 컴퓨팅의 고유 기능성 또는 명령어(예를 들면, Apache spark 표준 기능, Spark 기계 학습 라이브러리)를 이용하여 추가 분석 동작(예를 들면, 데이터 사이언스 동작, 시각화 생성 동작, 내부 쿼리 및 데이터 배열 동작)을 수행한다.
동작(630)에서, 클러스터 컴퓨팅 플랫폼(150)은 처리된 결과 데이터를 유저 인터페이스에 표시한다. 예를 들면, 동작(630)에서, 클러스터 컴퓨팅 플랫폼(156) 상의 고객 애플리케이션은 사용자 장치(106)와 같은 사용자 장치의 유저 인터페이스 상에 데이터 시각화 또는 쿼리 결과를 표시한다. 동작(635)에서, 데이터는 다시 쿼리된 결과 데이터이다. 예를 들면, 전술한 바와 같이, 스테이징 플랫폼은 제한된 시간(예를 들면, 36시간) 동안 결과 파일 객체를 유지할 수 있고, 그 동안에 주어진 데이터 세트에 대한 객체 및 직렬화 프로세스는 다시 처리될 필요가 없다. 오히려, 데이터는 스테이징 플랫폼에 남아 있고, 클러스터 컴퓨팅 플랫폼(150)은 분산 직렬화 접근 방식을 이용하여 데이터를 쿼리할 수 있다. 몇몇 예시적인 실시 형태에 따르면, 보유 기간이 만료된 후, 직렬화 결과 객체가 삭제되거나 스테이징 플랫폼으로부터 제거된다.
도 7은, 몇몇 예시적인 실시 형태에 따른, 메타 데이터 커넥터를 이용하여 클러스터 컴퓨팅을 구현하기 위한 네트워크 레인 다이어그램(700)을 도시한다. 네트워크 레인 다이어그램(700)에 있어서, 열 또는 레인의 각각은 해당 레인의 서로 다른 엔티티에 의해 수행되는 액션에 대응한다. 예를 들면, 제1 열에서, 동박(715, 720 및 730)이 네트워크 기반 데이터 웨어하우스 시스템(102)에 의해 수행된다. 마찬가지로, API 커넥터(145)는 동작(710, 735 및 755)를 수행하고, 클러스터 컴퓨팅 플랫폼(150)은 동작(705,740, 745, 750 및 765)를 수행하고, 스테이징 플랫폼(405)은 몇몇 예시적인 환경에 따라 동작(725 및 760)을 수행한다. 도 7의 예에서 엔티티가 설명되고 별도의 엔티티들로서 도시되지만, 당업자라면, 엔티티들은 조합되거나 통합될 수 있음을 알 수 있다. 예를 들면, API 커넥터(145)는 네트워크 기반 데이터 웨어하우스 시스템(102)의 구성 요소로서 설치될 수 있다.
동작(705)에서, 클러스터 컴퓨팅 플랫폼(150)은 쿼리를 생성한다. 예를 들면, Spark 사용자는 작업이 클러스터 컴퓨팅 플랫폼(150)에 의해 관리되는 Apache Spark 작업(예를 들면, 고객 애플리케이션)을 생성하거나 개발한다. 예를 들면 마스터 노드는 작업을 수신하고 데이터에 대한 쿼리를 생성한다. 여기서, 데이터는 네트워크 기반 데이터 웨어하우스 시스템(102)에 의해 관리된다. 동작(710)에서, API 커넥터(145)는 네트워크 기반 데이터 웨어하우스 시스템(102)에 대한 실행 쿼리를 변환한다. 동작(715)에서, 네트워크 기반 데이터 웨어하우스 시스템(102)은 하나 이상의 관계형 데이터 저장소에 대해 수신된 쿼리를 실행하여 쿼리 결과 데이터를 생성한다. 동작(720)에서, 네트워크 기반 데이터 웨어하우스 시스템(102)은 결과 파일을 스테이징 플랫폼(405)에 전송하고, 그 후, 동작(725)에서 스테이징 플랫폼은 결과 파일을 저장한다. 몇몇 예시적인 실시 형태에 따르면, 네트워크 기반 데이터 웨어하우스 시스템(102)은 커넥터 API(Java 직렬화 가능한 인터페이스)를 통해 직렬화 가능한 객체로서 결과 데이터를 직렬화한다. 동작(730)에서, 네트워크 기반 데이터 웨어하우스 시스템(102)은 스테이징 플랫폼(405)에 저장된 파일을 기술(예를 들면, 주소, 포멧, 위치, 크기)하는 메타 데이터(예를 들면, 객체 메타 데이터 세트) 및 클러스터 컴퓨팅 플랫폼(150)이 저장된 결과 데이터에의 액세스를 구현할 수 있는 액세스 데이터(예를 들면, 네트워크 크리덴셜)를 생성한다. 동작(735)에서, API 커넥터(145)는 객체 메타 데이터 세트를 수신한다. 동작(745)에서, 클러스터 컴퓨팅 플랫폼(150)의 마스터 노드는 메타 데이터 객체를 작업자 노드의 각각에 배포한다. 동작(750)에서, 각 작업자 노드는 리스트로부터 객체 메타 데이터 항목을 수신하고, API 커넥터(145)에 대한 함수 호출을 수행한다. 동작(755)에서, API 커넥터(145)는 작업자 노드용 유틸리티로서 기능하고, 호출(예를 들면, 주어진 노드에 대해 ResultSet을 리턴하기 위한 GetResult())을 실행하여 스테이징 플랫폼(405) 상의 결과 파일에 액세스한다. 그 다음, 스테이징 플랫폼(405)은 동작(760)에서 결과를 작업자 노드에 전송한다. 동작(765)에서, 클러스터 컴퓨팅 플랫폼(150)의 작업자 노드는 다운로드된 결과 파일을 처리한다. 예를 들면, 각 작업자 노드는 직렬화 형태로 결과 파일을 다운로드하고, 이를 압축 해제하여 고객 애플리케이션(예를 들면, 분석 처리, 기계 학습 매소드 등)에 따라 데이터에 대한 추가 처리를 수행한다.
도 8은, 예시적인 실시 형태에 따른, 머신(800)이 본 명세서에서 개시된 방법론들 중 어느 하나 이상을 수행하도록 명령어 세트가 실행될 수 있는 컴퓨터 시스템 형태의 머신(800)을 도식적으로 표현한 도면이다. 구체적으로, 도 8은, 머신(800)이 본 명세서에 개시된 방법론 중 어느 하나 이상을 수행하도록 명령어(816)(예를 들면, 소프트웨어, 프로그램, 애플리케이션, 애플릿, 앱, 또는 다른 실행 가능한 코드)가 실행될 수 있는 예시적인 형태의 컴퓨터 시스템의 머신(800)을 도식적으로 표현한 도면이다. 예를 들면, 명령어(816)에 의해, 머신(800)은 방법(500, 600, 700) 중 어느 하나 이상의 방법의 어느 하나 이상의 동작을 실행할 수 있다. 이러한 방식으로, 명령어(816)는 프로그래밍되지 않은 일반적인 머신을 특정 머신(800)(예를 들면, 사용자 장치(106), 액세스 관리 시스템(110), 컴퓨팅 서비스 관리자(112), 실행 플랫폼(114), 액세스 관리 시스템(118), 클라우드 인터페이스(120))으로 변환한다. 이 특정 머신(800)은 본 명세서에서 개시된 방식으로 설명되고 도시된 기능 중 어느 하나를 수행하도록 특별히 구성된다.
대안적인 실시 형태에 있어서, 머신(800)은 독립형 장치로서 동작하거나 다른 머신에 연결될 수 있다(예를 들면, 네트워크로 연결될 수 있다). 네트워크화된 배치에 있어서, 머신(800)은 서버-클라이언트 네트워크 환경에서 서버 머신 또는 클라이언트 머신으로서, 또는 피어-투-피어(또는 분산) 네트워크 환경에서 피어 머신으로서 작동할 수 있다. 머신(800)은 서버 컴퓨터, 클라이언트 컴퓨터, 퍼스널 컴퓨터(PC), 태블릿 컴퓨터, 랩톱 컴퓨터, 넷북, 스마트폰, 모바일 장치, 네트워크 라우터, 네트워크 스위치, 네트워크 브리지, 또는 머신(800)에 의해 취해질 동작을 지정하는 명령어(816)를 순차적으로 또는 다른 방식으로 실행할 수 있는 임의의 머신을 포함할 수 있지만, 이에 한정되지는 않는다. 또한, 단일 머신(800)만이 예시되어 있지만, "머신"이라는 용어는 본 명세서에 개시된 방법론들 중 어느 하나 이상을 수행하도록 명령어(816)를 개별적으로 또는 공동으로 실행하는 머신(800)의 집합을 포함하는 것으로 간주되어야 한다.
머신(800)은, 버스(802)를 통해 서로 통신하도록 구성된 프로세서(810), 메모리(830) 및 입/출력(I/0) 구성 요소(850)를 포함한다. 예시적인 실시 형태에 있어서, 프로세서(810)(예를 들면, CPU(central processing unit), RISC(reduced instruction set computing) 프로세서, CISC(complex instruction set computing) 프로세서, GPU(graphics processing unit), DSP(digital signal processor), ASIC(application-specific integrated circuit), RFIC(radio-frequency integrated circuit), 다른 프로세서, 또는 이들의 임의의 적절한 조합)는, 예를 들면, 명령어(816)를 실행할 수 있는 프로세서(812) 및 프로세서(814)를 포함할 수 있다. "프로세서"라는 용어는 명령어(816)를 동시에 실행할 수 있는 2개 이상의 독립 프로세서("코어"로 지칭되는 경우도 있음)를 포함할 수 있는 멀티코어 프로세서(810)인 것으로 간주된다. 도 8은 다수의 프로세서(810)를 도시하지만, 머신(800)은 단일 코어를 갖는 단일 프로세서, 다수의 코어를 갖는 단일 프로세서(예를 들면, 멀티코어 프로세서), 단일 코어를 갖는 다수의 프로세서, 다수의 코어를 갖는 다수의 프로세서, 또는 그들의 임의의 조합을 포함할 수 있다.
메모리(830)는 메인 메모리(832), 정적 메모리(834), 및 저장 유닛(836)을 포함할 수 있고, 이들은 버스(802)를 통해 프로세서(810)에 액세스 가능하다. 메인 메모리(832), 정적 메모리(834), 및 저장 유닛(836)은 본 명세서에서 설명된 방법론 또는 기능 중 어느 하나 이상을 구현하는 명령어(816)를 저장한다. 또한, 명령어(816)는, 머신(800)에 의해 실행될 때, 메인 메모리(832) 내에, 정적 메모리(834) 내에, 저장 유닛(836) 내에, 프로세서(810) 중 적어도 하나 내에(예를 들어, 프로세서의 캐시 메모리 내에), 또는 임의의 적절한 조합 내에 완전히 또는 부분적으로 존재할 수 있다.
I/0 구성 요소(850)는 입력을 수신하고, 출력을 제공하며, 출력을 생성하고, 정보를 전송하며, 정보를 교환하고, 측정값을 획득하는 등의 구성 요소들을 포함한다. 특정 머신(800)에 포함된 특정 I/0 구성 요소(850)는 머신의 유형에 따라 정해질 수 있다. 예를 들면, 모바일 폰과 같은 휴대용 머신은 터치 입력 장치 또는 기타 입력 메커니즘을 포함할 수 있는 반면, 헤드리스 서버 머신은 그러한 터치 입력 장치를 포함하지 않을 수도 있다. I/0 구성 요소(850)는 도 8에 도시되지 않은 다수의 다른 구성 요소를 포함할 수 있음을 이해할 것이다. I/0 구성 요소(850)는 후속하는 설명을 단순화하기 위하여 기능에 따라 그룹화된 것으로, 특별히 한정되지 않는다. 다양한 예시적인 실시 형태에 있어서, I/0 구성 요소(850)는 출력 구성 요소(852) 및 입력 구성 요소(854)를 포함할 수 있다. 출력 구성 요소(852)는 시각적 구성 요소(예를 들면, 플라즈마 디스플레이 패널(PDF), 발광 다이오드(LED) 디스플레이, 액정 디스플레이(LCD), 프로젝터 또는 음극선관(CRT)와 같은 디스플레이), 음향 구성 요소(예를 들면, 스피커), 기타 신호 발생기 등을 포함할 수 있다. 입력 구성 요소(854)는 영숫자 입력 구성 요소(예를 들면, 키보드, 영숫자 입력을 수신하도록 구성된 터치 스크린, 사진-광학 키보드, 또는 다른 영숫자 입력 구성 요소), 포인트 기반 입력 구성 요소(예를 들면, 마우스, 터치패드, 트랙볼, 조이스틱, 모션 센서 또는 기타 포인팅 도구),촉각 입력 구성 요소(예를 들면, 물리적 버튼, 터치 또는 터치 제스처의 위치 및/또는 힘을 제공하는 터치 스크린, 또는 기타 촉각 입력 구성 요소), 오디오 입력 구성 요소(예를 들면, 마이크) 등을 포함할 수 있다.
통신은 다양한 기술을 이용하여 구현될 수 있다. I/0 구성 요소(850)는 머신(800)을 각각 커플링(882) 및 커플링(872)을 통해 네트워크(880) 또는 장치(870)에 각각 연결하도록 동작 가능한 통신 구성 요소(864)를 포함할 수 있다. 예를 들면, 통신 구성 요소(864)는 네트워크(880)와 인터페이스하기 위한 네트워크 인터페이스 구성 요소 또는 다른 적절한 장치를 포함할 수 있다. 다른 예에 있어서, 통신 구성 요소(864)는 유선 통신 구성 요소, 무선 통신 구성 요소, 셀룰러 통신 구성 요소, 및 다른 양식을 통한 통신을 제공하기 위한 다른 통신 구성 요소를 포함할 수 있다. 장치(870)는 다른 머신 또는 다양한 주변 장치(예를 들면, USB(Universal Serial Bus)를 통해 연결된 주변 장치) 중 임의의 것일 수 있다. 예를 들면, 전술한 바와 같이, 머신(800)은 사용자 장치(106), 액세스 관리 시스템(110), 컴퓨팅 서비스 관리자(112), 실행 플랫폼(114), 액세스 관리 시스템(118), 클라우드 인터페이스(120) 중 어느 하나에 대응할 수 있다.
다양한 메모리(예를 들면, 830, 832, 834, 및/또는 프로세서(들)(810)의 메모리 및/또는 저장 유닛(836))는, 본 명세서에서 설명된 방법론 또는 기능 중 하나 이상에 의해 구체화되거나 활용되는, 하나 이상의 세트의 명령어(816) 및 데이터 구조(예를 들면, 소프트웨어)를 저장할 수 있다. 이러한 명령어(816)는, 프로세서(810)에 의해 실행될 때, 개시된 실시 형태를 구현하기 위하여 다양한 동작을 실행시킨다.
본 명세서에서의 "기계 저장 매체", "디바이스 저장 매체" 및 "컴퓨터 저장 매체 "라는 용어는 동일한 것을 의미하며, 본 발명에서는 동일한 의미로서 사용될 수 있다. 이들 용어는 실행 가능한 명령어 및/또는 데이터를 저장하는 단일 또는 다수의 저장 장치 및/또는 미디어(예를 들면, 중앙 집중식 또는 분산형 데이터베이스, 및/또는 관련 캐시 및 서버)를 의미한다. 따라서, 이들 용어는 프로세서의 내부 또는 외부 메모리를 비롯하여 솔리드-스테이트 메모리 및 광자기 매체를 포함하는 것으로 간주되지만, 이에 한정되지 않는다. 머신-저장 매체, 컴퓨터-저장 매체, 및/또는 장치-저장 매체의 구체적인 예로는, 반도체 메모리 장치, 예를 들면, 소거 가능한 프로그래머블 판독 전용 메모리(EPROM), 전기적으로 소거 가능한 프로그래머블 판독 전용 메모리(EEPROM), 필드 프로그래머블 게이트 어레이(FPGA) 및 플래시 메모리 장치와 같은 비휘발성 메모리와; 내부 하드 디스크 및 이동식 디스크와 같은 자기 디스크와; 광자기 디스크와; CD-ROM 및 DVD-ROM 디스크가 있다. "기계 저장 매체", "컴퓨터 저장 매체" 및 "장치 저장 매체"라는 용어는 반송파, 변조된 데이터 신호 및 기타 그러한 매체를 구체적으로 제외하며, 그 중 적어도 일부는 후술하는 "신호 매체"라는 용어에 포함된다.
다양한 예시적인 실시 형태에 있어서, 네트워크(880)의 하나 이상의 부분은 에드혹 네트워크, 인트라넷, 엑스트라넷, 가상 사설 통신망(VPN), 근거리 통신망(LAN), 무선 랜(WLAN), 광역 통신망(WAN), 무선 광역 통신망(WWAN), 도시권 통신망(MAN), 인터넷, 인터넷의 일부, 공중 교환 전화망(PSTN)의 일부, 기존 전화 서비스(POTS) 네트워크, 셀룰러 전화 네트워크, 무선 네트워크, Wi-Fi® 네트워크, 다른 유형의 네트워크, 또는 2개 이상의 네트워크의 조합일 수 있다. 예를 들면, 네트워크(880) 또는 네트워크(880)의 일부는 무선 또는 셀룰러 네트워크를 포함할 수 있고, 커플링(882)은 코드 분할 다중 접속(CDMA), GSM(Global System for Mobile Communications) 접속, 또는 다른 유형의 셀룰러 또는 무선 커플링일 수 있다. 본 예에서, 커플링(882)은 lxRTT(Single Carrier Radio Transmission Technology), EVDO(Evolution-Data Optimized) 기술, GPRS(General Packet Radio Service) 기술, EDGE(Enhanced Data rates for GSM Evolution) 기술, 3G를 포함한 3GPP(third Generation Partnership Project), 4G(fourth generation wireless) 네트워크, UMTS(Universal Mobile Telecommunications System), HSPA(High-Speed Packet Access), WiMAX(Worldwide Interoperability for Microwave Access), LTE(Long Term Evolution) 표준, 다양한 표준 설정 기관에서 정의한 기타 통신 기술, 기타 장거리 프로토콜 또는 기타 데이터 전송 기술과 같은 다양한 유형의 데이터 전송 기술 중의 어느 하나에 의해 구현될 수 있다.
명령어(816)는, 네트워크 인터페이스 장치(예를 들면, 통신 구성 요소(864)에 포함된 네트워크 인터페이스 구성 요소)를 통해 전송 매체를 사용하고 다수의 공지된 전송 프로토콜(예를 들면, 하이퍼텍스트 전송 프로토콜(HTTP)) 중의 어느 하나를 활용하여 네트워크(880)를 통해 전송되거나 수신될 수 있다. 마찬가지로, 명령어(816)는 커플링(872)(예를 들면, 피어-투-피어 커플링)을 통해 전송 매체를 이용하여 디바이스(870)에 전송되거나 디바이스(870)로부터 수신될 수 있다. "전송 매체" 및 "신호 매체"라는 용어는 동일한 것을 의미하며 본 명세서에서는 동일한 의미로서 사용될 수 있다. "전송 매체" 및 "신호 매체"라는 용어는 머신(800)에 의한 실행을 위하여 명령어(816)를 저장, 인코딩 또는 전달할 수 있는 임의의 무형 매체를 포함하는 것으로 간주되어야 하며, 그러한 소프트웨어의 통신을 용이하게 하기 위하여 디지털 또는 아날로그 통신 신호 또는 기타 무형 매체를 포함하는 것으로 간주되어야 한다. 따라서, "전송 매체" 및 "신호 매체"라는 용어는 변조된 데이터 신호, 반송파 등의 모든 형태를 포함하는 것으로 간주되어야 한다. "변조된 데이터 신호"라는 용어는 신호의 정보를 인코딩하는 방식으로 설정되거나 변경된 특성 중 하나 이상을 갖는 신호를 의미한다.
"기계 판독 가능 매체", "컴퓨터 판독 가능 매체" 및 "장치 판독 가능 매체"라는 용어는 동일한 것을 의미하며 본 발명에서는 동일한 의미로서 사용될 수 있다. 이들 용어는 기계 저장 매체와 전송 매체를 모두 포함하는 것으로 정의된다. 따라서, 이들 용어는 저장 장치/매체 및 반송파/변조된 데이터 신호를 모두 포함한다.
본 명세서에서 설명된 예시적인 방법의 다양한 동작은, 관련 동작을 수행하도록 일시적으로(예를 들면, 소프트웨어에 의해) 구성되거나 영구적으로 구성된 하나 이상의 프로세서에 의해 적어도 부분적으로 수행될 수 있다. 마찬가지로, 본 명세서에서 설명된 방법은 적어도 부분적으로 프로세서에 의해 구현될 수 있다. 예를 들면, 방법(500, 600, 700)의 동작 중 적어도 일부는 하나 이상의 프로세서에 의해 수행될 수 있다. 특정 동작의 수행은, 단일 시스템 내에 상주할 뿐만 아니라 여러 시스템에 걸쳐 배치되는 하나 이상의 프로세서에 분산될 수 있다. 몇몇 예시적인 실시 형태에 있어서, 프로세서 또는 프로세서들은 단일 위치(예를 들면, 가정 환경, 사무실 환경, 또는 서버 팜 내)에 위치될 수 있고, 다른 실시 형태에서는, 이들 프로세서는 다수의 위치에 걸쳐 분산될 수 있다.
본 발명의 실시 형태가 특정한 예시적인 실시 형태를 참조하여 설명되었지만, 본 발명의 요지의 보다 넓은 범위를 벗어나지 않는 한, 이들 실시 형태에 다양한 수정 및 변경이 이루어질 수 있음은 자명하다. 따라서, 본 명세서 및 도면은 제한적인 의미가 아니라 예시적인 것으로 간주되어야 한다. 본 명세서의 일부를 구성하는 첨부 도면은 제한적이지 않은 예시이며, 본 발명이 실시될 수 있는 특정 실시 형태를 도시한 것이다. 예시된 실시 형태는, 당업자가 본 명세서에 개시된 교시를 실시하기에 충분하도록 상세하게 설명된다. 본 발명의 범위를 벗어나지 않고 구조적 및 논리적 대체 및 변경이 이루어질 수 있도록, 다른 실시 형태가 사용되어도 되고 그로부터 더 변경되어도 된다. 따라서, 본 상세한 설명은 제한적인 의미로 받아들여서는 안 되며, 다양한 실시 형태의 범위는 청구범위가 부여되는 등가물의 전체 범위와 함께 첨부된 청구 범위에 의해서만 정의된다.
본 발명의 실시 형태는, 본 출원의 범위를 임의의 단일 발명, 또는 두개 이상의 발명이 실제로 공개된 경우는 발명 개념에 자발적으로 제한하려는 의도 없이 단지 편의를 위해 "발명"이라는 용어로 개별적으로 및/또는 통합적으로 언급될 수 있다. 따라서, 본 명세서에서 특정 실시 형태가 예시되고 설명되었지만, 동일한 목적을 달성하기 위해 계산된 임의의 배열이 도시된 특정 실시 형태를 대체할 수 있음을 이해해야 한다. 본 발명은 다양한 실시 형태의 임의의 및 모든 적응 또는 변형을 포함하도록 의도된다. 상기 실시 형태들의 조합 및 본 명세서에서 구체적으로 설명되지 않은 다른 실시 형태는, 상기 설명을 검토할 때 당업자에게 자명하다.
본 명세서에 있어서, "a" 또는 "an"이라는 용어는, 특허 문헌에서 흔히 볼 수 있듯이, "적어도 하나" 또는 "하나 이상"의 다른 모든 경우 또는 사용법과 관계없이 하나 또는 둘 이상을 포함하는 것으로 사용된다. 본 명세서에 있어서, "또는"이라는 용어는, 달리 명시하지 않는 한, "A 또는 B"가 "A이지만 B는 아니다", "B이지만 A는 아니다" 및 "A와 B이다"를 포함하는 등 배타적이지 않는 것을 가리키는 데에 사용된다. 또한, 첨부된 청구 범위에 있어서, "구비하는(including)" 및 "여기서(in which)"라는 용어는, 해당 용어 "포함하는(comprising)" 및 "여기서(wherein)"의 일반 영어 등가물로서 사용된다. 않는 또한, 첨부된 청구 범위에 있어서, "구비하는(including)" 및 "포함하는(comprising)"이라는 용어는 개방형(open-ended) 용어로서 사용된다. 즉, 청구 범위에서의 그러한 용어 뒤에 기재된 구성 요소 이외의 요소를 포함하는 시스템, 장치, 물품 또는 프로세스는 여전히 해당 청구 범위에 속하는 것으로 간주된다.
실시예
실시예 1은, 데이터베이스 커넥터 인터페이스에 의해, 머신의 하나 이상의 프로세서를 이용하여, 분산 데이터베이스에 대한 쿼리를 수신하는 단계-상기 쿼리는 마스터 노드 및 복수의 작업자 노드를 포함하는 외부 컴퓨팅 클러스터로부터 수신되며, 상기 분산 데이터베이스는 상기 쿼리에 대한 직렬화된 결과 파일을 생성하고 상기 직렬화된 결과 파일을 스테이징 데이터베이스에 저장함-와; 상기 데이터베이스 커넥터 인터페이스에 의해, 상기 외부 컴퓨팅 클러스터의 상기 마스터 노드에 객체 메타 데이터 세트를 전송하는 단계-상기 객체 메타 데이터 세트는 복수의 객체 메타 데이터 세트 항목을 포함하고, 상기 복수의 객체 메타 데이터 세트 항목의 각각은 상기 스테이징 데이터베이스에서의 상기 직렬화된 결과 파일 중의 하나의 결과 파일의 액세스 데이터를 기술함-와; 상기 데이터베이스 커넥터 인터페이스에 의해, 상기 복수의 작업자 노드로부터, 상기 스테이징 데이터베이스에 저장된 상기 직렬화된 결과 파일에 대한 요청을 수신하는 단계-상기 요청의 각각은 상기 복수의 객체 메타 데이터 세트 항목 중 하나를 이용하여 생성됨-와; 상기 데이터베이스 커넥터 인터페이스에 의해, 상기 직렬화된 결과 파일을 상기 스테이징 데이터베이스로부터 상기 외부 컴퓨팅 클러스터의 상기 복수의 작업자 노드에 전송하는 단계를 포함하는 방법이다. 상기 복수의 작업자 노드는 상기 직렬화된 결과 파일을 수신하고, 상기 직렬화된 결과 파일에 대하여 추가 처리를 수행한다.
실시예 2에 있어서, 실시예 1의 방법은, 상기 복수의 객체 메타 데이터 세트 항목의 각각이, 상기 스테이징 데이터베이스에서의 상기 직렬화된 결과 파일 중 하나의 결과 파일의 네트워크 어드레스 데이터를 포함하는 것을 선택적으로 더 포함한다.
실시예 3에 있어서, 실시예 1 또는 실시예 2의 방법은, 상기 복수의 객체 메타 데이터 세트 항목의 각각이, 상기 스테이징 데이터베이스에서의 상기 직렬화된 결과 파일에 액세스하기 위한 크리덴셜 데이터를 포함하는 것을 선택적으로 더 포함한다.
실시예 4에 있어서, 실시예 1 내지 실시예 3 중 어느 하나의 방법은, 상기 복수의 작업자 노드가, 상기 마스터 노드로부터 상기 복수의 메타 데이터 세트 항목을 수신하고, 상기 복수의 작업자 노드가, 상기 수신된 복수의 메타 데이터 세트 항목에서의 상기 네트워크 어드레스 데이터를 이용하여 상기 직렬화된 결과 파일에 대한 상기 요청을 생성하는 것을 선택적으로 더 포함한다.
실시예 5에 있어서, 실시예 1 내지 실시예 4 중 어느 하나의 방법은, 상기 분산 데이터베이스에 의해, 상기 외부 컴퓨팅 클러스터로부터 수신한 상기 쿼리를 이용하여 쿼리 결과를 생성하는 단계를 더 포함한다.
실시예 6에 있어서, 실시예 1 내지 실시예 5 중 어느 하나의 방법은, 상기 쿼리 결과를 이용하여 상기 직렬화된 결과 파일을 생성하는 단계를 더 포함하고, 상기 직렬화된 결과 파일은, 상기 데이터베이스 커넥터 인터페이스의 직렬화 인터페이스를 이용하여 생성되고, 상기 직렬화 인터페이스를 이용하여 생성된 상기 직렬화된 결과 파일은 원격 처리를 위해 네트워크를 통해 배포 가능하다.
실시예 7에 있어서, 실시예 1 내지 실시예 6 중 어느 하나의 방법은, 상기 직렬화된 결과 파일이 상기 직렬화 인터페이스를 이용하여 상기 쿼리 결과의 상태 데이터를 저장하는 것을 선택적으로 더 포함한다.
실시예 8에 있어서, 실시예 1 내지 실시예 7 중 어느 하나의 방법은, 상기 상태 데이터가 상기 쿼리에 대해 생성된 상기 쿼리 결과의 스키마를 포함하는 것을 선택적으로 더 포함한다.
실시예 9에 있어서, 실시예 1 내지 실시예 8 중 어느 하나의 방법은, 상기 복수의 작업자 노드에 의해 수행되는 상기 추가 처리가 상기 직렬화된 결과 파일을 압축 해제하는 단계를 포함하는 것을 선택적으로 더 포함한다.
실시예 10에 있어서, 실시예 1 내지 실시예 9 중 어느 하나의 방법은, 상기 직렬화된 결과 파일이 상기 상태 데이터를 복원하기 위해 사용된 상기 직렬화된 결과 파일을 역직렬화하여 압축 해제되는 것을 선택적으로 더 포함한다.
실시예 11에 있어서, 실시예 1 내지 실시예 10 중 어느 하나의 방법은, 상기 복수의 작업자 노드에 의해 수행되는 상기 추가 처리가 상기 외부 컴퓨팅 클러스터에 의해 호스팅되는 클러스터 컴퓨팅 애플리케이션으로부터 생성된 명령어를 포함하는 것을 선택적으로 더 포함한다.
실시예 12에 있어서, 실시예 1 내지 실시예 11 중 어느 하나의 방법은, 상기 분산 데이터베이스가 관계형 데이터베이스이고, 상기 데이터베이스 커넥터 인터페이스가 관계형 데이터베이스 API(Application Programming Interface) 커넥터인 것을 선택적으로 더 포함한다.
실시예 13은, 머신의 하나 이상의 프로세서와, 상기 하나 이상의 프로세서에 의해 실행될 때, 상기 머신이 실시예 1 내지 실시예 12의 방법 중의 어느 하나를 구현하는 동작을 수행하도록 하는 명령어를 저장하는 메모리를 포함하는 시스템이다.
실시예 14는, 머신에 의해 실행될 때, 상기 머신이 실시예 1 내지 실시예 12의 방법 중의 어느 하나를 구현하는 동작을 수행하도록 하는 명령어를 구현하는 기계 판독 가능한 저장 장치이다.

Claims (30)

  1. 방법으로서,
    데이터베이스 커넥터 인터페이스에 의해, 머신의 하나 이상의 프로세서를 이용하여, 분산 데이터베이스에 대한 쿼리를 수신하는 단계 - 상기 쿼리는 마스터 노드 및 복수의 작업자 노드를 포함하는 외부 컴퓨팅 클러스터로부터 수신되며, 상기 분산 데이터베이스는 상기 쿼리에 대한 직렬화된 결과 파일을 생성하고 상기 직렬화된 결과 파일을 스테이징(staging) 데이터베이스에 저장함 - ;
    상기 데이터베이스 커넥터 인터페이스에 의해, 상기 외부 컴퓨팅 클러스터의 상기 마스터 노드에 객체 메타 데이터 세트를 전송하는 단계 - 상기 객체 메타 데이터 세트는 복수의 객체 메타 데이터 세트 항목을 포함하고, 상기 복수의 객체 메타 데이터 세트 항목의 각각은 상기 스테이징 데이터베이스에서의 상기 직렬화된 결과 파일 중의 하나의 액세스 데이터를 기술함 - ;
    상기 데이터베이스 커넥터 인터페이스에 의해, 상기 복수의 작업자 노드로부터, 상기 스테이징 데이터베이스에 저장된 상기 직렬화된 결과 파일에 대한 요청을 수신하는 단계 - 상기 요청의 각각은 상기 복수의 객체 메타 데이터 세트 항목 중 하나를 이용하여 생성됨 - ; 및
    상기 데이터베이스 커넥터 인터페이스에 의해, 상기 직렬화된 결과 파일을 상기 스테이징 데이터베이스로부터 상기 외부 컴퓨팅 클러스터의 상기 복수의 작업자 노드에 전송하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 복수의 작업자 노드는, 수신된 상기 직렬화된 결과 파일에 대하여 추가 처리를 수행하는 방법.
  3. 제1항에 있어서,
    상기 복수의 객체 메타 데이터 세트 항목의 각각은, 상기 스테이징 데이터베이스에서의 상기 직렬화된 결과 파일 중 하나의 네트워크 어드레스 데이터를 포함하는 방법.
  4. 제1항에 있어서,
    상기 복수의 객체 메타 데이터 세트 항목의 각각은, 상기 스테이징 데이터베이스에서의 상기 직렬화된 결과 파일에 액세스하기 위한 크리덴셜(credential) 데이터를 포함하는 방법.
  5. 제3항에 있어서,
    상기 복수의 작업자 노드는, 상기 마스터 노드로부터 상기 복수의 객체 메타 데이터 세트 항목을 수신하고, 상기 복수의 작업자 노드는, 상기 수신된 복수의 객체 메타 데이터 세트 항목에서의 상기 네트워크 어드레스 데이터를 이용하여 상기 직렬화된 결과 파일에 대한 상기 요청을 생성하는 방법.
  6. 제2항에 있어서,
    상기 데이터베이스 커넥터 인터페이스는, 상기 분산 데이터베이스에 통합되고,
    상기 방법은, 상기 분산 데이터베이스에 의해, 상기 외부 컴퓨팅 클러스터로부터 수신한 상기 쿼리를 이용하여 쿼리 결과를 생성하는 단계를 더 포함하는 방법.
  7. 제6항에 있어서,
    상기 방법은,
    상기 쿼리 결과를 이용하여 상기 직렬화된 결과 파일을 생성하는 단계를 더 포함하고,
    상기 직렬화된 결과 파일은, 상기 데이터베이스 커넥터 인터페이스의 직렬화 인터페이스를 이용하여 생성되고, 상기 직렬화 인터페이스를 이용하여 생성된 상기 직렬화된 결과 파일은 원격 처리를 위해 네트워크를 통해 배포 가능한 방법.
  8. 제7항에 있어서,
    상기 직렬화된 결과 파일은, 상기 직렬화 인터페이스를 이용하여 상기 쿼리 결과의 상태 데이터가 저장되는 방법.
  9. 제8항에 있어서,
    상기 상태 데이터는, 상기 쿼리에 대해 생성된 상기 쿼리 결과의 스키마(schema)를 포함하는 방법.
  10. 제8항에 있어서,
    상기 복수의 작업자 노드에 의해 수행되는 상기 추가 처리는, 상기 직렬화된 결과 파일을 압축 해제하는 단계를 포함하는 방법.
  11. 제9항에 있어서,
    상기 직렬화된 결과 파일은, 상기 상태 데이터를 복원하기 위해 사용된 상기 직렬화된 결과 파일을 역직렬화하여 압축 해제되는 방법.
  12. 제2항에 있어서,
    상기 복수의 작업자 노드에 의해 수행되는 상기 추가 처리는, 상기 외부 컴퓨팅 클러스터에 의해 호스팅되는 클러스터 컴퓨팅 애플리케이션으로부터 생성된 애플리케이션 동작을 포함하는 방법.
  13. 시스템으로서,
    머신의 하나 이상의 프로세서와,
    상기 하나 이상의 프로세서에 의해 실행될 때, 상기 머신이 동작을 수행하도록 하는 명령어를 저장하는 메모리를 포함하고,
    상기 동작은,
    데이터베이스 커넥터 인터페이스에 의해, 분산 데이터베이스에 대한 쿼리를 수신하는 것 - 상기 쿼리는 마스터 노드 및 복수의 작업자 노드를 포함하는 외부 컴퓨팅 클러스터로부터 수신되며, 상기 분산 데이터베이스는 상기 쿼리에 대한 직렬화된 결과 파일을 생성하고 상기 직렬화된 결과 파일을 스테이징 데이터베이스에 저장함 - ;
    상기 데이터베이스 커넥터 인터페이스에 의해, 상기 외부 컴퓨팅 클러스터의 상기 마스터 노드에 객체 메타 데이터 세트를 전송하는 것 - 상기 객체 메타 데이터 세트는 복수의 객체 메타 데이터 세트 항목을 포함하고, 상기 복수의 객체 메타 데이터 세트 항목의 각각은 상기 스테이징 데이터베이스에서의 상기 직렬화된 결과 파일 중의 하나의 액세스 데이터를 기술함 - ;
    상기 데이터베이스 커넥터 인터페이스에 의해, 상기 복수의 작업자 노드로부터, 상기 스테이징 데이터베이스에 저장된 상기 직렬화된 결과 파일에 대한 요청을 수신하는 것 - 상기 요청의 각각은 상기 복수의 객체 메타 데이터 세트 항목 중 하나를 이용하여 생성됨 - ; 및
    상기 데이터베이스 커넥터 인터페이스에 의해, 상기 직렬화된 결과 파일을 상기 스테이징 데이터베이스로부터 상기 외부 컴퓨팅 클러스터의 상기 복수의 작업자 노드에 전송하는 것
    을 포함하는 시스템.
  14. 제13항에 있어서,
    상기 복수의 작업자 노드는, 수신된 상기 직렬화된 결과 파일에 대해 추가 처리를 수행하는 시스템.
  15. 제13항에 있어서,
    상기 복수의 객체 메타 데이터 세트 항목의 각각은, 상기 스테이징 데이터베이스에서의 상기 직렬화된 결과 파일 중 하나의 네트워크 어드레스 데이터를 포함하는 시스템.
  16. 제13항에 있어서,
    상기 복수의 객체 메타 데이터 세트 항목의 각각은, 상기 스테이징 데이터베이스에서의 상기 직렬화된 결과 파일에 액세스하기 위한 크리덴셜 데이터를 포함하는 시스템.
  17. 제15항에 있어서,
    상기 복수의 작업자 노드는, 상기 마스터 노드로부터 상기 복수의 객체 메타 데이터 세트 항목을 수신하고, 상기 복수의 작업자 노드는, 상기 수신된 복수의 객체 메타 데이터 세트 항목에서의 상기 네트워크 어드레스 데이터를 이용하여 상기 직렬화된 결과 파일에 대한 요청을 생성하는 시스템.
  18. 제14항에 있어서,
    상기 동작은, 상기 분산 데이터베이스에 의해, 상기 외부 컴퓨팅 클러스터로부터 수신한 상기 쿼리를 이용하여 쿼리 결과를 생성하는 것을 더 포함하는 시스템.
  19. 제18항에 있어서,
    상기 쿼리 결과를 이용하여 상기 직렬화된 결과 파일을 생성하는 것을 더 포함하고,
    상기 직렬화된 결과 파일은, 상기 데이터베이스 커넥터 인터페이스의 직렬화 인터페이스를 이용하여 생성되고, 상기 직렬화 인터페이스를 이용하여 생성된 상기 직렬화된 결과 파일은 원격 처리를 위해 네트워크를 통해 배포 가능한 시스템.
  20. 제19항에 있어서,
    상기 직렬화된 결과 파일은, 상기 직렬화 인터페이스를 이용하여 상기 쿼리 결과의 상태 데이터가 저장되는 시스템.
  21. 제20항에 있어서,
    상기 상태 데이터는, 상기 쿼리에 대해 생성된 상기 쿼리 결과의 스키마를 포함하는 시스템.
  22. 제21항에 있어서,
    상기 복수의 작업자 노드에 의해 수행되는 상기 추가 처리는, 상기 직렬화된 결과 파일을 압축 해제하는 것을 포함하는 시스템.
  23. 제22항에 있어서,
    상기 직렬화된 결과 파일은, 상기 상태 데이터를 복원하는데 사용되는 상기 직렬화된 결과 파일을 역직렬화함으로써 압축 해제되는 시스템.
  24. 제14항에 있어서,
    상기 복수의 작업자 노드에 의해 수행되는 상기 추가 처리는, 상기 외부 컴퓨팅 클러스터에 의해 호스팅되는 클러스터 컴퓨팅 애플리케이션으로부터 생성된 명령어를 포함하는 시스템.
  25. 기계가 의해 실행될 때, 상기 기계가 동작을 수행하도록 하는 명령어를 구현하는 기계 판독 가능한 저장 장치로서,
    상기 동작은,
    데이터베이스 커넥터 인터페이스에 의해, 분산 데이터베이스에 대한 쿼리를 수신하는 것 - 상기 쿼리는 마스터 노드 및 복수의 작업자 노드를 포함하는 외부 컴퓨팅 클러스터로부터 수신되며, 상기 분산 데이터베이스는 상기 쿼리에 대한 직렬화된 결과 파일을 생성하고 상기 직렬화된 결과 파일을 스테이징 데이터베이스에 저장함 - ;
    상기 데이터베이스 커넥터 인터페이스에 의해, 상기 외부 컴퓨팅 클러스터의 상기 마스터 노드에 객체 메타 데이터 세트를 전송하는 것 - 상기 객체 메타 데이터 세트는 복수의 객체 메타 데이터 세트 항목을 포함하고, 상기 복수의 객체 메타 데이터 세트 항목의 각각은 상기 스테이징 데이터베이스에서의 상기 직렬화된 결과 파일 중의 하나의 액세스 데이터를 기술함 - ;
    상기 데이터베이스 커넥터 인터페이스에 의해, 상기 복수의 작업자 노드로부터, 상기 스테이징 데이터베이스에 저장된 상기 직렬화된 결과 파일에 대한 요청을 수신하는 것 - 상기 요청의 각각은 상기 복수의 객체 메타 데이터 세트 항목 중 하나를 이용하여 생성됨 - ; 및
    상기 데이터베이스 커넥터 인터페이스에 의해, 상기 직렬화된 결과 파일을 상기 스테이징 데이터베이스로부터 상기 외부 컴퓨팅 클러스터의 상기 복수의 작업자 노드에 전송하는 것을 포함하는 기계 판독 가능한 저장 장치.
  26. 제25항에 있어서,
    상기 복수의 객체 메타 데이터 세트 항목의 각각은, 상기 스테이징 데이터베이스에서의 상기 직렬화된 결과 파일 중 하나의 네트워크 어드레스 데이터를 포함하는 기계 판독 가능한 저장 장치.
  27. 제25항에 있어서,
    상기 복수의 객체 메타 데이터 세트 항목의 각각은, 상기 스테이징 데이터베이스에서의 상기 직렬화된 결과 파일에 액세스하기 위한 크리덴셜 데이터를 포함하는 기계 판독 가능한 저장 장치.
  28. 제26항에 있어서,
    상기 복수의 작업자 노드는, 상기 마스터 노드로부터 상기 복수의 객체 메타 데이터 세트 항목을 수신하고, 상기 복수의 작업자 노드는, 상기 수신된 복수의 객체 메타 데이터 세트 항목에서의 상기 네트워크 어드레스 데이터를 이용하여 상기 직렬화된 결과 파일에 대한 요청을 생성하는 기계 판독 가능한 저장 장치.
  29. 제25항에 있어서,
    상기 동작은,
    상기 분산 데이터베이스에 의해, 상기 외부 컴퓨팅 클러스터로부터 수신한 상기 쿼리를 이용하여 쿼리 결과를 생성하는 것; 및
    상기 쿼리 결과를 이용하여 상기 직렬화된 결과 파일을 생성하는 것을 더 포함하고,
    상기 직렬화된 결과 파일은, 상기 데이터베이스 커넥터 인터페이스의 직렬화 인터페이스를 이용하여 생성되고, 상기 직렬화 인터페이스를 이용하여 생성된 상기 직렬화된 결과 파일은, 원격 처리를 위해 네트워크를 통해 배포 가능한 기계 판독 가능한 저장 장치.
  30. 제25항에 있어서,
    상기 복수의 작업자 노드는, 수신된 상기 직렬화된 결과 파일에 대해 추가 처리를 수행하고,
    상기 추가 처리는, 상기 외부 컴퓨팅 클러스터에 의해 호스팅되는 클러스터 컴퓨팅 애플리케이션으로부터 생성된 명령어를 포함하는 기계 판독 가능한 저장 장치.
KR1020217031012A 2019-12-18 2020-12-08 분산 메타 데이터 기반 클러스터 컴퓨팅 KR102377084B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020227008863A KR20220039836A (ko) 2019-12-18 2020-12-08 분산 메타 데이터 기반 클러스터 컴퓨팅

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/719,218 US10719517B1 (en) 2019-12-18 2019-12-18 Distributed metadata-based cluster computing
US16/719,218 2019-12-18
PCT/US2020/063794 WO2021126599A1 (en) 2019-12-18 2020-12-08 Distributed metadata-based cluster computing

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020227008863A Division KR20220039836A (ko) 2019-12-18 2020-12-08 분산 메타 데이터 기반 클러스터 컴퓨팅

Publications (2)

Publication Number Publication Date
KR20210141531A KR20210141531A (ko) 2021-11-23
KR102377084B1 true KR102377084B1 (ko) 2022-03-22

Family

ID=71611973

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020217031012A KR102377084B1 (ko) 2019-12-18 2020-12-08 분산 메타 데이터 기반 클러스터 컴퓨팅
KR1020227008863A KR20220039836A (ko) 2019-12-18 2020-12-08 분산 메타 데이터 기반 클러스터 컴퓨팅

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020227008863A KR20220039836A (ko) 2019-12-18 2020-12-08 분산 메타 데이터 기반 클러스터 컴퓨팅

Country Status (6)

Country Link
US (3) US10719517B1 (ko)
EP (1) EP3938926A4 (ko)
KR (2) KR102377084B1 (ko)
CN (1) CN113508373A (ko)
DE (1) DE202020005703U1 (ko)
WO (1) WO2021126599A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11790008B2 (en) * 2019-09-12 2023-10-17 Business Objects Software Ltd. Persisted queries and batch streaming
US20210089553A1 (en) * 2019-09-19 2021-03-25 Okera, Inc. Data retrieval using distributed workers in a large-scale data access system
US10719517B1 (en) 2019-12-18 2020-07-21 Snowflake Inc. Distributed metadata-based cluster computing
US11057491B1 (en) 2020-07-17 2021-07-06 Snowflake Inc. Remote execution using a global identity
US11258846B1 (en) * 2021-05-26 2022-02-22 Capital One Services, Llc Real-time serverless streaming in a multi-cloud environment
US11916998B2 (en) 2021-11-12 2024-02-27 Electronics And Telecommunications Research Institute Multi-cloud edge system
CN116521744B (zh) * 2023-06-30 2023-09-12 杭州拓数派科技发展有限公司 全双工元数据传输方法、装置、系统和计算机设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150234884A1 (en) 2012-11-08 2015-08-20 Sparkledb As System and Method Involving Resource Description Framework Distributed Database Management System and/or Related Aspects

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7007024B2 (en) * 2002-03-29 2006-02-28 Panasas, Inc. Hashing objects into multiple directories for better concurrency and manageability
US7873684B2 (en) * 2003-08-14 2011-01-18 Oracle International Corporation Automatic and dynamic provisioning of databases
WO2005043323A2 (en) * 2003-10-27 2005-05-12 Archivas, Inc. Policy-based management of a redundant array of independent nodes
US20050289175A1 (en) * 2004-06-23 2005-12-29 Oracle International Corporation Providing XML node identity based operations in a value based SQL system
US7657581B2 (en) * 2004-07-29 2010-02-02 Archivas, Inc. Metadata management for fixed content distributed data storage
US7680855B2 (en) * 2005-03-11 2010-03-16 Yahoo! Inc. System and method for managing listings
US20070239661A1 (en) * 2006-03-28 2007-10-11 Sun Microsystems, Inc. Systems and methods for a distributed in-memory database and distributed cache
WO2008017044A1 (en) * 2006-08-02 2008-02-07 Watt Systems Technologies, Inc. Object oriented system and method of graphically displaying and analyzing complex systems
US7917469B2 (en) * 2006-11-08 2011-03-29 Hitachi Data Systems Corporation Fast primary cluster recovery
US20090012965A1 (en) * 2007-07-01 2009-01-08 Decisionmark Corp. Network Content Objection Handling System and Method
US20090112796A1 (en) * 2007-10-24 2009-04-30 Marvin Elder Natural language conceptual joins
US8484259B1 (en) * 2009-12-08 2013-07-09 Netapp, Inc. Metadata subsystem for a distributed object store in a network storage system
US9245058B2 (en) * 2010-12-03 2016-01-26 Titus Inc. Method and system of hierarchical metadata management and application
US9396242B2 (en) * 2011-04-11 2016-07-19 Salesforce.Com, Inc. Multi-master data replication in a distributed multi-tenant system
US20130067024A1 (en) * 2011-09-12 2013-03-14 Microsoft Corporation Distributing multi-source push notifications to multiple targets
US9753999B2 (en) * 2012-01-06 2017-09-05 Citus Data Bilgi Islemieri Ticaret A.S. Distributed database with mappings between append-only files and repartitioned files
US8815752B2 (en) 2012-11-28 2014-08-26 Micron Technology, Inc. Methods of forming features in semiconductor device structures
US9588822B1 (en) * 2012-12-18 2017-03-07 Amazon Technologies, Inc. Scheduler for data pipeline
US9116970B2 (en) * 2013-03-14 2015-08-25 Pivotal Software, Inc. In-database connectivity components analysis of data
US20140304525A1 (en) * 2013-04-01 2014-10-09 Nexenta Systems, Inc. Key/value storage device and method
US10303702B2 (en) * 2014-02-07 2019-05-28 Ignite Scalarc Solutions, Inc. System and method for analysis and management of data distribution in a distributed database environment
US9792129B2 (en) * 2014-02-28 2017-10-17 Tyco Fire & Security Gmbh Network range extender with multi-RF radio support for plurality of network interfaces
CN104391913B (zh) * 2014-11-18 2018-02-16 北京锐安科技有限公司 一种数据库管理方法及装置
US10437797B1 (en) * 2014-12-12 2019-10-08 Amazon Technologies, Inc. In-memory distributed database with a remote data store
US10545915B2 (en) * 2015-02-02 2020-01-28 Quantum Corporation Recursive multi-threaded file system scanner for serializing file system metadata exoskeleton
US10318491B1 (en) * 2015-03-31 2019-06-11 EMC IP Holding Company LLC Object metadata query with distributed processing systems
CN105468720A (zh) * 2015-11-20 2016-04-06 北京锐安科技有限公司 集成分布式数据处理系统的方法、相应系统及其数据处理方法
US10572510B2 (en) * 2015-12-21 2020-02-25 Sap Se Distributed database transaction protocol
EP3449363A4 (en) * 2016-04-28 2019-10-02 Snowflake Inc. MULTIPLE CLUSTER WAREHOUSE
US9753744B1 (en) * 2016-05-27 2017-09-05 Intuit Inc. Defining application programming interfaces (APIS) using object schemas
US10628424B2 (en) * 2016-09-15 2020-04-21 Oracle International Corporation Graph generation for a distributed event processing system
US11604795B2 (en) * 2016-09-26 2023-03-14 Splunk Inc. Distributing partial results from an external data system between worker nodes
US10956415B2 (en) * 2016-09-26 2021-03-23 Splunk Inc. Generating a subquery for an external data system using a configuration file
US11243963B2 (en) * 2016-09-26 2022-02-08 Splunk Inc. Distributing partial results to worker nodes from an external data system
KR20180044696A (ko) * 2016-10-24 2018-05-03 삼성에스디에스 주식회사 쿼리 결과 분산 저장 방법 및 그 시스템
CN106570145B (zh) * 2016-10-28 2020-07-10 中国科学院软件研究所 一种基于分层映射的分布式数据库结果缓存方法
CN108228654A (zh) * 2016-12-21 2018-06-29 青岛祥智电子技术有限公司 一种大数据分布式存储方法和系统
US10237346B2 (en) * 2017-02-08 2019-03-19 Vmware, Inc. Maintaining partition-tolerant distributed metadata
US10552269B2 (en) * 2017-08-31 2020-02-04 International Business Machines Corporation Backup optimization in hybrid storage environment
US10719484B2 (en) * 2017-09-07 2020-07-21 Cohesity, Inc. Remotely mounted file system with stubs
US9967238B1 (en) * 2017-11-09 2018-05-08 Broadridge Financial Solutions, Inc. Database-centered computer network systems and computer-implemented methods for cryptographically-secured distributed data management
US10936585B1 (en) * 2018-10-31 2021-03-02 Splunk Inc. Unified data processing across streaming and indexed data sets
US10719517B1 (en) 2019-12-18 2020-07-21 Snowflake Inc. Distributed metadata-based cluster computing

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150234884A1 (en) 2012-11-08 2015-08-20 Sparkledb As System and Method Involving Resource Description Framework Distributed Database Management System and/or Related Aspects

Also Published As

Publication number Publication date
US11494386B2 (en) 2022-11-08
CN113508373A (zh) 2021-10-15
US11250005B2 (en) 2022-02-15
DE202020005703U1 (de) 2022-02-09
EP3938926A4 (en) 2022-11-30
KR20220039836A (ko) 2022-03-29
US20210191945A1 (en) 2021-06-24
EP3938926A1 (en) 2022-01-19
US20220129467A1 (en) 2022-04-28
US10719517B1 (en) 2020-07-21
KR20210141531A (ko) 2021-11-23
WO2021126599A1 (en) 2021-06-24

Similar Documents

Publication Publication Date Title
KR102377084B1 (ko) 분산 메타 데이터 기반 클러스터 컴퓨팅
US11960505B2 (en) Export data from tables into partitioned folders on an external data lake
US11249850B1 (en) Cluster diagnostics data for distributed job execution
US11461335B1 (en) Optimized processing of data in different formats
EP4254187A1 (en) Cross-organization & cross-cloud automated data pipelines
US20230267130A1 (en) Analytical query processing with decoupled compute instances
US20230401229A1 (en) Replication of unstructured staged data between database deployments
US11216421B2 (en) Extensible streams for operations on external systems
US11593310B2 (en) Providing writable streams for external data sources
US11593345B1 (en) Accelerating change data capture determination using row bitsets
US11748327B2 (en) Streams using persistent tables
US11403259B1 (en) Catalog query framework on distributed key value store
US11734301B1 (en) Selective table replication to enable stream replication

Legal Events

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