KR102037232B1 - 분산형 데이터베이스 쿼리 엔진을 위한 시스템 및 방법 - Google Patents

분산형 데이터베이스 쿼리 엔진을 위한 시스템 및 방법 Download PDF

Info

Publication number
KR102037232B1
KR102037232B1 KR1020177024191A KR20177024191A KR102037232B1 KR 102037232 B1 KR102037232 B1 KR 102037232B1 KR 1020177024191 A KR1020177024191 A KR 1020177024191A KR 20177024191 A KR20177024191 A KR 20177024191A KR 102037232 B1 KR102037232 B1 KR 102037232B1
Authority
KR
South Korea
Prior art keywords
query
node
data
partial
work
Prior art date
Application number
KR1020177024191A
Other languages
English (en)
Other versions
KR20170103021A (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 페이스북, 인크.
Publication of KR20170103021A publication Critical patent/KR20170103021A/ko
Application granted granted Critical
Publication of KR102037232B1 publication Critical patent/KR102037232B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • 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/23Updating
    • G06F16/2358Change logging, detection, and notification
    • 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/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24539Query rewriting; Transformation using cached or materialised query results
    • 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/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/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • 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/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)

Abstract

본 명세서에 낮은 지연 시간의 데이터베이스 쿼리 처리를 수행할 수 있는 시스템을 위한 기술이 개시된다. 시스템은 게이트웨이 서버와 복수의 작업 노드를 포함한다. 게이트웨이 서버는 복수의 데이터 노드를 가지는 분산형 저장 클러스터에 저장된 데이터를 포함하는 데이터베이스에 대한 데이터베이스 쿼리를 복수의 부분 쿼리로 나누고 복수의 중간 결과에 기반하여 쿼리 결과를 구성하도록 설정된다. 복수의 작업 노드의 각 작업 노드는 각 부분 쿼리와 연관되고 상기 분산형 저장 클러스터의 적어도 하나의 데이터 노드에 저장된 데이터를 스캔함으로써 복수의 부분 쿼리의 각 부분 쿼리를 처리하고 그 작업 노드의 메모리에 저장된 상기 복수의 중간 결과 중 한 중간 결과를 생성하도록 설정된다.

Description

분산형 데이터베이스 쿼리 엔진을 위한 시스템 및 방법{SYSTEM AND METHOD FOR DISTRIBUTED DATABASE QUERY ENGINES}
본 출원은 본 명세서에 전체로서 참조로 통합되는 2013년 1월 7일자로 출원된 미국특허출원 제13/735,820호의 우선권을 주장한다.
본 출원은 본 명세서에 전체로서 참조로 통합되는 2013년 12월 19일자로 출원된 유럽특허출원 제13198563.2호의 우선권을 주장한다.
본 발명은 일반적으로 데이터베이스에 관한 것이며, 특히 낮은 쿼리 지연 속도(latency) 데이터베이스 분석을 위한 분산형 데이터베이스 쿼리 엔진에 관한 것이다.
컴퓨터 및 네트워킹 기술의 발전은 거대한 양의 데이터 저장을 필요로 하는 애플리케이션을 낳았다. 예를 들어, 수천만의 사용자가 웹 페이지를 만들고 이미지와 텍스트를 소셜 미디어 웹사이트에 업로드할 수 있다. 결과적으로, 소셜 미디어 웹사이트는 거대한 양의 데이터를 매일 축적할 수 있고 따라서 데이터를 저장하고 처리하기 위해 크게 확장 가능한 시스템을 필요로 한다. 그러한 거대한 데이터 저장을 용이하게 하는 다양한 도구가 존재한다.
애플리케이션이 수천 대의 (노드로도 참조되는) 컴퓨터의 클러스터 및 수 페타바이트(petabytes)의 데이터와 상호작용하게 함으로써 큰 규모의 데이터 집중적인 분산형 애플리케이션을 지원하는 프레임워크가 존재한다. 예를 들어, 하둡(Hadoop)이라고 불리는 프레임워크는 하둡 분산형 파일 시스템(Hadoop Distributed File System; HDFS)라고 불리는 분산된, 확장 가능한, 휴대형 파일 시스템을 사용하여 거대한 양의 데이터를 하둡 클러스터 내 (슬레이브 노드라고도 하는) 데이터 노드들에 분산시킨다. 데이터 노드의 전력 공급 정지 또는 네트워크 실패(스위치 실패를 포함)의 부정적인 영향을 감소시키기 위하여, HDFS의 데이터는 전형적으로 다른 데이터 노드들에 복제된다.
오픈 소스 데이터 웨어하우스 시스템인 하이브(Hive)는 하둡 클러스터 상에서 구동하도록 개발됐다. 하이브는 HiveQL이라는, 스크립트 쿼리 언어(scripted query language; SQL)와 유사한 선언형 언어로 표현된 데이터 쿼리를 지원한다. 하이브 시스템은 HiveQL로 표현된 쿼리를 하둡 클러스터에서 실행가능한, 방향 비순환 그래프의 수학적 형태의 맵-리듀스(map-reduce) 작업으로 컴파일한다. HiveQL 언어는 기본형(primitive types), 배열 및 맵과 같은 컬렉션 및 타입의 중첩된 컴포지션(nested composition of types)을 담는 테이블을 지원하는 타입 시스템을 포함한다. 나아가, 하이브 시스템은 하이브-메타스토어(Hive-Metastore)라는 데이터 탐구와 쿼리 최적화에 유용한 체계 및 통계를 담고 있는 시스템 카탈로그를 포함한다.
하둡 클러스터와 더불어, 하이브 시스템은 소셜 네트워킹 시스템을 위한 많은 양의 데이터를 저장하고 분석할 수 있다. 예를 들어, 하이브 시스템은 사용자 간의 연결 정도를 분석하여 해당 유저가 소셜 네트워킹 시스템에서 팔로우하는 소식에 등급을 매길 수 있다. 하이브 시스템은 활동 내역을 분석하여 애플리케이션 개발자, 페이지 관리자 및 광고주의 개발 및 사업적 결정을 돕기 위해 소셜 네트워킹 시스템의 서비스가 어떻게 사용되는지 간파할 수 있다. 하이브 시스템은 복잡한 데이터 마이닝 프로그램을 구동하여 소셜 네트워킹 시스템의 사용자에게 보여지는 광고를 최적화할 수 있다. 하이브 시스템은 또한 사용 로그를 분석하여 스팸과 소셜 네트워킹 시스템의 어뷰징을 식별할 수 있다.
하이브 시스템은 하이브 쿼리를 작성하고 실행시킬 프로그래밍 기술이 없는 사람들을 위하여 복잡한 데이터 파이프라인의 작성, 디버깅 및 스케쥴링을 위한, 또한 하이브 시스템 및 MySQL과 오라클 같은 다른 관계형 데이터베이스에 저장된 데이터에 기반한 보고서를 작성하기 위한 웹 기반의 도구를 포함한다.
하지만, 하이브 시스템의 쿼리 지연 시간은 보통 높다. 하둡 클러스터의 맵-리듀스 체계와 많은 양의 데이터 때문에, 가장 간단한 쿼리조차 완료될 때까지 수초 내지 수분이 소요된다. 이것은 특히 조작자가 일련의 쿼리의 다음 쿼리를 결정하기 위하여 현재 쿼리의 결과를 필요로 할 때 상호 작용 분석에 문제가 된다. 분석가가 현재 쿼리의 결과를 기다릴 때 다음 쿼리를 결정하지 못하기 때문에 지연 시간 문제는 분석가의 생산성에 중대한 영향을 미친다.
하나의 가능한 차선책은 하이브에서 MySQL이나 오라클 같은 다른 타입의 관계형 데이터베이스 관리 시스템(relational database management system; RDBMS)으로 종합 데이터를 불러오는 데이터 파이프라인을 생성하는 것이다. 그럼 조작자는 상호 작용 분석을 수행하고 이러한 RDBMS를 사용하여 보고서를 작성한다. 하지만, 각 RDBMS는 분리된 데이터 파이프라인을 필요로 한다. 데이터 파이프라인이 종합 데이터를 하이브에서 다른 RDBMS로 전송하는데 또한 시간이 소요된다. 그러므로, 이 차선책은 여전히 번거롭고 불편하다.
본 명세서에 소개되는 기술은 시스템 카탈로그(예를 들어, 하이브 메타스토어)에 메타데이터를 저장하는 대규모 저장 클러스터(예를 들어, 하둡 클러스터)에 저장된 매우 많은 양의 데이터에 대해 낮은 지연 시간의 쿼리의 장점을 제공한다. 특히, 본 명세서에 소개되는 기술은 트리 계산 프레임워크의 제공에 기반한 분산형 쿼리 엔진을 포함한다. 분산형 쿼리 엔진은 게이트웨이 서버와 복수의 작업 노드를 포함한다. 게이트웨이 서버는 쿼리 작업을 부분 작업으로 나눈다. 엔진의 각 작업 노드는 부분 작업을 처리하여 중간 쿼리 결과를 메모리에 생성한다. 중간 쿼리 결과는 연관된 데이터의 부분을 스캔함으로써 생성된 근사 중간 결과일 수 있다. 게이트웨이 서버는 중간 쿼리 결과를 수신하고 중간 쿼리 결과에 기반하여 쿼리 작업을 위한 쿼리 결과를 구성한다.
따라서, 본 명세서에 소개되는 기술에 따라 데이터베이스를 위한 데이터베이스 쿼리를 처리하기 위한 시스템이 제공된다. 시스템은 게이트웨이 서버와 복수의 작업 노드를 포함한다. 게이트웨이 서버는 복수의 데이터 노드를 가지는 분산형 저장 클러스터에 저장된 데이터를 포함하는 데이터베이스를 위해 데이터베이스 쿼리를 복수의 부분 쿼리로 나누고 복수의 중간 결과에 기반하여 쿼리 결과를 구성하도록 설정된다. 복수의 작업 노드의 각 작업 노드는 각 부분 쿼리와 연관되고 분산형 저장 클러스터의 적어도 하나의 데이터 노드에 저장된 데이터를 스캔함으로써 복수의 부분 쿼리의 각 부분 쿼리를 처리하고 그 작업 노드의 메모리에 저장된 복수의 중간 결과 중 한 중간 결과를 생성하도록 설정된다.
본 명세서에 소개되는 기술은 하둡 클러스터와 같은 대규모 저장 클러스터에 저장된 많은 양의 데이터를 처리하는, 낮은 지연 시간 쿼리를 수행할 수 있다. 이것은 조작자가 다음 쿼리를 결정하기 위하여 현재 쿼리가 완료되기를 기다릴 필요가 없기 때문에 특히 상호 작용 분석에 이점이 있다. 이 분산형 쿼리 시스템은 또한 연관된 데이터의 부분을 스캐닝함으로써 근사 결과를 생성할 수 있다. 시스템의 조작자는 일련의 쿼리의 신속한 프로토타이핑(rapid prototyping)을 수신하여 연관된 데이터의 모든 셋에 대해 일련의 쿼리를 처리하기 전에 일련의 쿼리의 유효성을 검사할 수 있다.
본 발명에 따른 실시예들은 특히 시스템, 저장 매체 및 방법에 관한 첨부된 청구항들에 개시되며, 가령 시스템과 같은 하나의 청구항 카테고리에 언급되는 임의의 특징은 또한 가령 방법과 같은 다른 청구항 카테고리로 청구될 수 있다.
본 발명의 일실시예로, 시스템은 복수의 데이터 노드를 가지는 분산형 저장 클러스터에 저장된 데이터를 포함하는 데이터베이스를 위한 데이터베이스 쿼리로부터 복수의 부분 쿼리를 생성하고, 복수의 중간 결과에 기반하여 쿼리 결과를 구성하도록 설정된 게이트웨이 서버; 및 복수의 작업 노드로서, 상기 복수의 작업 노드의 각 작업 노드는 각 부분 쿼리와 연관되고 상기 분산형 저장 클러스터의 적어도 하나의 데이터 노드에 저장된 데이터를 스캔함으로써 상기 복수의 부분 쿼리의 각 부분 쿼리를 처리하도록 설정되고, 상기 복수의 작업 노드의 각 작업 노드는 그 작업 노드의 메모리에 저장된 상기 복수의 중간 결과 중 한 중간 결과를 생성하도록 더 설정된 복수의 작업 노드를 포함한다.
상기 복수의 작업 노드의 각 작업 노드는 상기 분산형 저장 클러스터의 상기 적어도 하나의 데이터 노드에 저장된, 상기 각 부분 쿼리와 연관된 상기 데이터의 부분을 스캔함으로써 상기 복수의 부분 쿼리의 각 부분 쿼리를 처리하고, 그 작업 노드의 상기 메모리에 저장된 근사 중간 결과를 생성하도록 더 설정될 수 있다.
상기 게이트웨이 서버는 적어도 하나의 중간 결과에 기반하여 근사 쿼리 결과를 구성하도록 더 설정될 수 있다.
상기 게이트웨이 서버는 또한 상기 복수의 중간 결과의 부분에 기반하여 근사 쿼리 결과를 구성하도록 더 설정될 수 있다.
상기 게이트웨이 서버는 스트래글링(straggling) 작업 노드를 식별하고, 상기 스트래글링 작업 노드에 할당된 부분 쿼리를 복수의 부차 부분 쿼리로 더 나누고, 상기 복수의 부차 부분 쿼리를 상기 복수의 작업 노드의 일부에 할당하도록 더 설정되고, 상기 스트래글링 작업 노드는 상기 게이트웨에 서버에 진행율을 보고하는데 실패하거나 미리 결정된 기간 후에 상기 게이트웨이 서버에 미리 결정된 값 아래의 상기 진행율을 보고한 작업 노드일 수 있다.
상기 복수의 작업 노드의 각 작업 노드는 상기 분산형 저장 클러스터 내에서 각 데이터 노드를 구동하는 서비스일 수 있다.
상기 데이터베이스의 테이블 레벨 메타데이터 및 상기 분산형 저장 클러스터의 파일 레벨 메타데이터를 캐시하도록 설정된 메타데이터 캐시를 더 포함할 수 있다.
상기 메타데이터 캐시는 상기 데이터베이스 쿼리를 위하여 이전 데이터베이스 쿼리로부터 캐시된 메타데이터를 유지하도록 설정될 수 있다.
상기 복수의 작업 노드의 각 작업 노드는 그 작업 노드에 의해 처리되는 부분 쿼리의 상태를 보고하기 위하여 하트비트 메시지(heartbeat message)를 주기적으로 상기 게이트웨이 서버에 송신할 수 있다.
상기 게이트웨이 서버는 근사 쿼리 결과를 반환하기 위하여 또는 상기 데이터베이스 쿼리의 처리를 종료하기 위하여 클라이언트 장치로부터 지시를 수신하도록 더 설정될 수 있다.
상기 게이트웨이 서버는 상기 작업 노드에 즉시 근사 중간 결과를 반환하도록 지시하고, 상기 근사 중간 결과에 기반하여 근사 쿼리 결과를 클라이언트 디바이스에 반환하도록 더 설정될 수 있다.
상기 데이터베이스 쿼리는 근사 쿼리 결과의 요청을 포함할 수 있다.
상기 쿼리 결과는 상기 데이터 노드에 저장되고 상기 쿼리 결과를 위해 스캔된, 연관된 데이터의 부분의 표시를 동반할 수 있다.
상기 데이터베이스는 하이브 데이터 웨어하우스(Hive data warehouse) 시스템이고, 상기 분산형 저장 클러스터는 하둡(Hadoop) 클러스터일 수 있다.
본 발명의 추가 실시예로, 본 발명 또는 상술한 임의의 실시예에 따른 시스템을 사용하는 방법이다.
본 발명의 추가 실시예로, 방법은 클라이언트 장치로부터 복수의 데이터 노드를 가지는 분산형 저장 클러스터에 저장된 데이터를 포함하는 데이터베이스를 위한 데이터베이스 쿼리를 수신하는 단계; 상기 데이터베이스 쿼리를 복수의 부분 쿼리로 나누는 단계; 상기 부분 쿼리의 각각을 복수의 작업 노드의 각 작업 노드로 송신하는 단계로서, 각 작업 노드는 상기 분산형 저장 클러스터의 데이터 노드에서 실행되는 서비스인 단계; 상기 작업 노드로부터 상기 부분 쿼리를 위한 복수의 중간 결과를 검색하는 단계로서, 각 중간 결과는 상기 작업 노드의 각각의 작업 노드에 의해 상기 각각의 작업 노드가 실행되는 데이터 노드에 저장된, 연관된 데이터를 스캔함으로써 처리되는 단계; 및 상기 복수의 중간 결과에 기반하여 쿼리 결과를 생성하는 단계를 포함한다.
방법은 상기 클라이언트 장치에 부분 표시자와 함께 상기 쿼리 결과를 반환하는 단계를 더 포함할 수 있고, 상기 부분 표시자는 상기 쿼리 결과를 위해 스캔된 상기 데이터 노드에 저장된, 연관된 데이터의 상기 부분을 표시한다.
방법은 상기 작업 노드에 즉시 근사 쿼리 결과를 반환하도록 지시하는 단계를 더 포함할 수 있고, 상기 검색하는 단계는 상기 작업 노드로부터 상기 부분 쿼리를 위한 복수의 근사 중간 결과를 검색하는 단계로서 각 근사 중간 결과는 상기 작업 노드의 각각의 작업 노드에 의해 상기 각각의 작업 노드가 실행되는 데이터 노드에 저장된, 연관된 데이터의 부분을 스캔함으로써 처리되는 단계를 포함한다.
방법은 각 부분 쿼리에 대해, 어떤 데이터 노드가 상기 부분 쿼리에 연관된 데이터를 저장하는지에 관한 메타데이터를 검색하는 단계를 더 포함할 수 있고, 상기 송신하는 단계는 상기 메타데이터에 기반하여 상기 부분 쿼리의 각각을 복수의 작업 노드의 각 작업 노드로 송신하는 단계를 포함한다.
본 발명의 추가 실시예로, 방법은 클라이언트 장치로부터 복수의 데이터 노드를 가지는 분산형 저장 클러스터에 저장된 데이터를 포함하는 데이터베이스를 위한 데이터베이스 쿼리를 수신하는 단계; 상기 데이터베이스 쿼리를 복수의 부분 쿼리로 나누는 단계; 상기 부분 쿼리의 각각을 복수의 작업 노드의 각 작업 노드로 송신하는 단계로서, 각 작업 노드는 상기 분산형 저장 클러스터의 데이터 노드에서 실행되는 서비스인 단계; 스트래글링 작업 노드를 식별하고, 상기 스트래글링 작업 노드에 할당된 부분 쿼리를 복수의 부차 부분 쿼리로 더 나누고, 상기 복수의 부차 부분 쿼리를 상기 복수의 작업 노드의 일부에 할당하는 단계; 상기 작업 노드로부터 상기 부분 쿼리를 위한 복수의 중간 결과를 검색하는 단계로서, 각 중간 결과는 상기 작업 노드의 각각의 작업 노드에 의해 상기 각각의 작업 노드가 실행되는 데이터 노드에 저장된, 연관된 데이터를 스캔함으로써 처리되는 단계; 및 상기 복수의 중간 결과에 기반하여 쿼리 결과를 생성하는 단계를 포함한다.
상기 식별하는 단계는 상기 작업 노드가 주기적으로 송신하는 하트비트 메시지를 모니터링함으로써 스트래글링 작업 노드를 식별하는 단계로서, 상기 스트래글링 작업 노드로부터의 하트비트 메시지가 미리 결정된 기간에 수신되지 않을 때, 또는 상기 스트래글링 작업 노드로부터의 하트비트 메시지가 수신되고 상기 하트비트 메시지가 상기 스트래글링 작업 노드에 의해 처리되는 부분 쿼리의 상태를 나타내는 수로서 역치 이하의 수를 포함할 때, 상기 스트래글링 작업 노드가 식별되는 단계를 포함할 수있다.
본 발명의 추가 실시예로, 실행되어 본 발명 또는 상술한 임의의 실시예에 따른 시스템 상에서 수행될 때 구동 가능한 소프트웨어를 포함하는 하나 이상의 컴퓨터 판독가능한 비일시적 저장 매체 역시 청구될 수 있다.
본 명세서에서 소개되는 기술의 다른 측면은 첨부된 도면 및 후술할 상세한 설명으로부터 명백할 것이다.
본 발명의 내용 중에 포함되어 있다.
본 발명의 이들 및 다른 객체, 특징 및 특성은 후술할 상세한 설명과 함께 첨부된 청구항 및 도면, 본 명세서의 모든 부분을 고려하면 해당 기술 분야의 통상의 기술자에게 보다 명백할 것이다.
도 1은 분산형 쿼리 엔진이 설치될 수 있는 하둡 클러스터의 예시를 도시한다.
도 2는 맵 리듀스 작업(MapReduce task)를 관리하는 잡 트래커(JobTracker)를 가지는 하둡 클러스터의 예시를 도시한다.
도 3은 분산형 쿼리 엔진, 하둡 분산형 파일 시스템(HDFS), 하이브 데이터 웨어하우스 및 저장 클러스터 간의 관계를 도시한다.
도 4는 분산형 쿼리 엔진의 예시의 상위 계층 블록 다이어그램을 도시한다.
도 5는 스트래글링 작업 노드를 식별하고 부분 쿼리를 더 나누기 위한 샘플 프로세스를 도시한다.
도 6은 데이터베이스 쿼리의 근사 처리의 샘플 프로세스를 도시한다.
도 7은 본 명세서에 도시된 임의의 클러스터 노드를 나타내는 컴퓨터 노드의 구조의 예시를 나타내는 상위 계층 블록 다이어그램이다.
이 설명에서 “일실시예”, “하나의 실시예” 또는 이와 같은 것에 대한 참조는 기술된 특정 특징, 기능 또는 특성이 본 발명의 적어도 하나의 실시예에 포함됨을 의미한다. 이 설명에서 이러한 문구의 존재는 모두 같은 실시예를 참조로 하거나, 반드시 상호 배타적일 것을 필요로 하는 것은 아니다.
현대의 소셜 네트워킹 시스템은 거대한 양의 데이터를 매일 축적할 수 있고 따라서 데이터를 저장고 분석하기 위한 크게 확장 가능한 시스템을 필요로 한다. 특히, 거대한 양의 데이터에 있어 효율적인 상호 작용 분석은 낮은 지연 시간과 빠른 응답의 데이터 쿼리 처리 방법을 필요로 한다. 본 발명은 인-메모리 트리 기반 연산 프레임워크와 근사 쿼리 처리의 병합에 의해 가능하게 되는 분산형 쿼리 엔진을 개시한다. 분산형 쿼리 엔진은 쿼리 작업을 다수의 부분 작업으로 나누고 추가 인-메모리 처리를 위해 분산 작업들을 작업 노드에 분산시킨다. 분산형 쿼리 엔진은 스캔된 데이터의 부분에 기반한 근사 중간 결과를 작업 노드에 요청함으로써 쿼리 처리 동안 아무 때에나 근사 결과를 생성할 수 있다. 종래의 하둡 클러스터의 맵-리듀스 체계와는 달리, 작업 노드는 부분 작업을 처리하고 전체 중간 결과를 메모리에 저장하여 처리 시간을 줄이고 전체적인 지연 시간을 향상시킨다. 근본적인 데이터 대신 오직 중간 결과만이 결과 구성을 위해 전송되고, 전송되는 데이터의 양과 전송 시간을 크게 감소시킨다.
일실시예에서, 분산형 쿼리 엔진은 하둡 분산형 파일 시스템(HDFS), 하이브 데이터 웨어하우스 및 하이브-메타스토어를 구동하는 하둡 클러스터 상에 설치될 수 있다. 분산형 쿼리 엔진은 하이브의 데이터 포맷 및 메타데이터와 호환 가능하고 HiveQL 언어의 부분집합을 지원할 수 있다. 분산형 쿼리 엔진을 사용하는 조작자는 효율적으로 하이브 데이터 웨어하우스에 의해 관리되는 데이터에서 통계 패턴을 발견할 수 있다. 분산형 쿼리 엔진은 근사 결과를 생성함으로써 빠른 분석과 일련의 쿼리의 신속한 프로토타이핑을 구성할 수 있다. 나아가, 분산형 쿼리 엔진은 연관된 모든 데이터를 스캐닝함으로써 완전한 분석을 할 수 있다.
도 1은 분산형 쿼리 엔진이 설치될 수 있는 하둡 클러스터의 예시를 도시한다.
도 1에서, 하둡 클러스터(100)는 메타데이터 노드(110A)와 복수의 데이터 노드(110B, 110C 및 110D)를 포함한다. 노드들은 인터커넥트(120)를 통해 서로와 통신할 수 있다. 인터커넥트(120)는 예를 들어 근거리 통신망(local area network; LAN), 원거리 통신망(wide area network; WAN), 도시권 통신망(metropolitan area network; MAN), 인터넷과 같은 세계적 통신망(global area network), 파이버 채널 패브릭(Fibre Channel fabric) 또는 이들 인터커넥트의 임의의 조합일 수 있다. 일부 실시예에서 인터커넥트(120)는 TCP/IP를 포함하는 네트워크 프로토콜 하에서 노드 간에 데이터를 처리하고 라우팅(routing)하기 위한 네트워크 스위치를 포함할 수 있다. 클라이언트(130A 및 130B)는 네트워크(140), 예를 들어 인터넷, LAN 또는 임의의 네트워크나 네트워크들의 조합을 거쳐 하둡 클러스터(100)와 통신할 수 있다. 각 클라이언트는 예를 들어 종래의 개인용 컴퓨터(PC), 서버급 컴퓨터, 워크스테이션, 포켓용 연산/통신 장치 등일 수 있다. 일부 실시예에서 하둡 클러스터는 코모더티급(commodity-class) 서버의 하나 이상의 랙을 사용해 구현될 수 있다.
파일 및 데이터는 하둡 분산형 파일 시스템(HDFS)의 하둡 클러스터(100)의 노드들에 걸쳐 분산 방식으로 저장된다. 클라이언트(130A 및 130B)를 포함하여, 클러스터(100)의 클라이언트에, HDFS가 종래의 계층적 파일 시스템의 기능을 제공한다. 파일 및 파일의 데이터 블록이 HDFS 내에서 생성되거나, 삭제되거나, 이동될 수 있다. 메타데이터 노드(110A) 상에서 구동되어 파일 시스템 네임스페이스의 관리와 외부 클라이언트에 의한 접근의 제어를 포함하여, HDFS 내의 메타데이터 서비스를 제공하는 네임 노드 서비스(150)가 존재한다. 네임 노드 서비스는 블록과 파일의 매핑 및 파일 시스템 속성을 포함하여 파일 시스템 인덱스를 메타데이터 노드 내의 Fs 이미지라고 불리는 파일(160)에 저장할 수 있다. 일부 실시예에서, 세컨데이터 네임 노드 서비스를 구동하는 제2 (secondary) 메타데이터 노드가 있을 수 있다. 제2 메타데이터 노드는 메타데이터 노드가 실패할 경우의 백업을 제공한다.
각 데이터 노드(110)는 HDFS의 파일의 저장을 책임진다. HDFS에 저장된 파일은 서브셋(이하 “블록”이라 한다)으로 나뉜다. 일실시예에서, 블록의 크기는 64 MB이다. 블록은 전형적으로 복수의 데이터 노드에 복제된다. 그러므로, 하둡 클러스터(100)의 HDFS는 필수적이지는 않지만, 종래의 RAID 구조를 사용하여 데이터 신뢰성을 얻을 수 있다. 파일 조작은 메타데이터 노드(110A) 상에서 구동되는 네임 노드 서비스(150)에 의해 제어된다. 일부 실시예에서, 데이터 노드(110B, 110C 및 110D)는 랙에 정리되어 모든 노드가 네트워크 스위치를 거쳐 연결된다. 랙 내의 노드 간 네트워크 속도는 다른 랙의 노드 간 네트워크 속도보다 빠를 수 있다. 하둡 클러스터는 작업을 할당할 때 그 사실을 고려할 수 있다. 데이터 노드 서비스(170)는 블록의 읽기 및 쓰기 요청에 응답하기 위하여 각 데이터 노드 상에서 구동될 수 있다. 데이터 노드 서비스(170)는 또한 메타데이터 노드로부터의 블록의 생성, 삭제 및 복제 요청에 응답한다.
일부 실시예에서, 데이터 노드(110B, 110C 및 110D)는 주기적으로 블록 보고서를 포함한 하트비트 메시지를 메타데이터 노드(110A)에 전송한다. 메타데이터 노드(110A)는 주기적 블록 보고서를 사용하여 그 블록 매핑 및 다른 파일 시스템 메타데이터를 유효화한다.
클라이언트(130A 또는 130B)가 하둡 클러스터(100)에에 파일을 쓰기 위하여 시크(seek)할 때, 클라이언트는 파일 생성 요청을 메타데이터 노드(110A)에 전송한다. 메타데이터 노드(110A)는 클라이언트에 하나 이상의 할당된 데이터 노드(들)의 신원(identity) 및 파일의 블록의 목적 위치와 함께 응답한다. 클라이언트는 할당된 데이터 노드(들)에 파일의 데이터 블록을 전송하고, 클러스터는 데이터 블록을 하나 이상의 데이터 노드에 복제할 수 있다. 모든 블록이 전송되면, 메타데이터 노드는 파일 생성을 Fs 이미지 파일을 포함하여 메타데이터에 기록한다.
하둡 클러스터는 맵 리듀스라고 불리는 프레임워크에 기반한 병렬 데이터 처리 엔진으로 동작한다. 하둡 클러스터는 잡 트래커를 포함하여 맵 리듀스 기능을 구현한다. 도 2에 도시된 바와 같이, 잡 트래커는 하둡 클러스터(200) 내에서 전용의 서버(잡 트래커 노드(210A))로 구현될 수 있다. 하둡 클러스터(200)은 스위치(226)를 거쳐 서로 연결된 두 개의 랙(242 및 244)를 포함한다. 랙(242)는 잡 트래커 노드(210A), 메타데이터 노드(210B), 데이터 노드(210C 내지 210D) 및 랙(242) 내의 노드들과 연결하기 위한 스위치(222)를 포함한다. 랙(244)는 데이터 노드(210E 내지 210H) 및 랙(244) 내의 노드들과 연결하기 위한 스위치(224)를 포함한다. 일부 실시예에서, 잡 트래커는 네임 노드 서비스와 동일한 메타데이터 노드를 공유하는 서비스로 구현될 수 있다. (네임 노드라고도 하는) 메타데이터 노드(210B)는 네임 노드 서비스를 구동하여 데이터가 유지되는 클러스터에 걸쳐 추적한다. 맵 리듀스 작업을 제어하도록 지정된 잡 트래커 노드(210A)는 클라이언트(230)로부터 맵 리듀스 작업을 개시하도록 요청을 수신한다. (맵 리듀스 애플리케이션 또는 맵 리듀스 업무(task)로도 참조되는) 맵 리듀스 작업(job)은 잡 트래커(210A)에 제출되고, 잡 트래커(210A)는 작업을 위해 HDFS 내의 입력 및 출력 파일 및/또는 디렉토리를 식별한다. 맵 리듀스 작업을 위한 입력 파일은 맵 리듀스 작업을 위한 입력 데이터를 담고 있는 복수의 입력 파일 블록을 포함할 수 있다. 잡 트래커(210A)는 입력 파일 블록의 지식(블록의 물리적 양 및 블록의 위치를 포함)을 사용하여 얼마나 많은 부차 작업이 생성될 것인지 결정한다. 맵 리듀스 애플리케이션은 입력 파일 블록이 존재하는 모든 처리 노드에 복사된다. 각 할당된 처리 노드에 있어서, 잡 트래커(210A)는 적어도 하나의 부차 작업을 생성한다. 각 할당된 처리 노드에서, 태스크 트래커(TaskTracker) 서비스는 그 노드의 부차 작업의 상태를 모니터링하고 상태와 중간 출력을 다시 잡 트래커에 보고한다. 하둡 클러스터(200)는 파일 블록의 지식에 기반하여 부차 작업을 분산시킨다. 그러므로, 처리 위치로 저장을 옮기는 대신, 하둡 클러스터는 처리 작업을 저장 위치로 옮긴다.
도 2에는 노드들(210A 내지 210H)이 단일 유닛으로 도시되어 있지만, 각 노드는 분산형 구조를 가질 수 있다. 예를 들어, 한 노드는 서로 물리적으로 분리되고 물리적 인터커넥트를 통해 서로 통신할 수 있는 여러 컴퓨터의 조합으로 디자인될 수 있다. 이러한 구조는 서로 인터커넥트를 통해 통신할 수 있는 컴퓨터를 배치하는 등의 편리한 확장성을 가능하게 한다.
일실시예에서, 분산형 쿼리 엔진은 하둡 분산형 파일 시스템(HDFS) 및 하이브 데이터 웨어하우스를 구동하는 하둡 클러스터 상에 설치된다. 도 3은 분산형 쿼리 엔진(300), 하이브 데이터 웨어하우스, HDFS 및 저장 클러스터 간의 관계를 도시한다. 분산형 쿼리 엔진(300)은 하이브 데이터 웨어하우스 및 HDFS 상에 설치되어, 결국 저장 클러스터의 구동에 의존한다. 하둡 클러스터(310)는 거대한 양의 데이터의 저장을 책임지는 복수의 노드(312)를 포함한다. 하둡 클러스터(310)는 메타데이터 노드(314)를 더 포함한다. 하둡 분산형 파일 시스템(HDFS)(320)는 하둡 클러스터(310) 상에서 구동되어 노드들(312) 간에 데이터를 분산하고 관리한다. 데이터 노드 서비스(322)는 노드(312) 상에서 구동되어 노드(312) 내의 로컬 데이터 저장을 관리한다. 데이터 및 파일은 블록으로 나뉘어 하둡 클러스터(310)의 노드들(312)에 저장된다. 네임 노드 서비스(324)는 메타데이터 노드(314) 상에서 구동되어 하둡 클러스터 내에 파일 시스템 네임스페이스의 관리 및 외부 클라이언트로부터의 접근의 제어를 포함한 메타데이터 서비스를 제공한다.
하이브 데이터 웨어하우스 시스템(330)는 하둡 클러스터(310) 및 HDFS(320) 상에 설치된다. 하이브 데이터 웨어하우스 시스템(330)은 데이터베이스 인터페이스로 작동한다. 하이브 데이터 웨어하우스 시스템(330)은 SQL과 유사한 선언형 언어인 HiveQL로 표현된 데이터 쿼리를 지원한다. 하이브 시스템을 위한 데이터베이스 쿼리를 처리하는데 하둡 클러스터의 맵 리듀스 체계에 의존하는 대신, 분산형 쿼리 엔진이 복수의 작업 노드(342)를 포함하여 병렬적 방식으로 데이터베이스 쿼리를 처리한다. 분산형 쿼리 엔진(300)은 게이트웨이(348)를 더 포함한다. 일실시예에서, 작업 노드(342)는 하둡 클러스터(310)의 노드(312) 상에서 구동되는 서비스로 구현된다. 다른 실시예에서, 작업 노드(342)는 하둡 클러스터(310)의 노드들(312)과 상호연결된 지정된 서버로 구현된다.
일부 실시예에서, 작업 노드(342)는 HiveQL로 표현된 부분 작업을 HDFS(320)의 데이터 노드 서비스(322)가 실행할 수 있는 지시로의 컴파일하는 책임을 진다.
분산형 쿼리 엔진은 클라이언트로부터 쿼리 작업을 수신하고 쿼리 작업을 다수의 부분 작업으로 나눈다. 도 4는 분산형 쿼리 엔진(400)의 예시의 고레벨 블록 다이어그램을 도시한다. 분산형 쿼리 엔진(400)의 조작자는 클라이언트(480)의 입력 인터페이스(486)을 통해 쿼리 작업을 제공할 수 있다. 일실시예에서, 입력 인터페이스(486)는 커맨드 라인 인터페이스(482)와 그래픽 인터페이스(484) 양자를 모두 포함한다. 커맨드 라인 인터페이스(482)를 사용하여, 조작자는 SQL이나 HiveQL과 같은 데이터베이스 쿼리 언어로 프로그램 지향적으로 표현된 쿼리 작업을 제공할 수 있다. 그래픽 인터페이스(484)를 사용하여, 조작자는 484의 그래픽 인터페이스 요소로 작업할 수 있는 쿼리 작업을 제공할 수 있다. 일실시예에서, 그래픽 인터페이스(484)는 입력 웹 페이지로 구현될 수 있다. 조작자는 입력 웹 페이지의 요소와 상호작용하고, 옵션을 선택하고, 데이터 입력을 넣음으로써 쿼리 작업을 제공할 수 있다. 그래픽 인터페이스(484)는 조작자의 선택과 입력을 데이터베이스 쿼리 언어로 표현된, 대응하는 프로그램으로 번역할 수 있다. 입력 인터페이스(486)은 커맨드 라인 인터페이스(482)나 그래픽 인터페이스(484)로부터 수신한 프로그램을 쿼리 작업으로서 분산형 쿼리 엔진(400)의 게이트웨이(410)로 전송한다.
게이트웨이(410)은 클라이언트(480)로부터 쿼리 작업을 수신하여 쿼리 작업을 파싱한다. 게이트웨이(410)는 쿼리 작업에 기반하여 하이브 메타스토어(440)에 조회를 전송한다. 하이브 메타스토어(440)는 쿼리 작업가 필요로 하는 데이터를 위하여 테이블 메타데이터 및 HDFS 파일 신원(identifications)을 게이트웨이(410)에 돌려준다. 그리고 게이트웨이(410)는 HDFS 파일 신원에 기반하여 대응하는 HDFS 블록의 위치를 HDFS 네임 노드(460)에서 검색한다.
일실시예에서, 게이트웨이(410)는 대응하는 HDFS 블록에 기반하여 쿼리 작업을 복수의 부분 작업으로 나눈다. 게이트웨이(410)는 각 개별 부분 쿼리를 대응하는 HDFS 블록 중 한 HDFS 블록에서 실행되도록 할당한다. 다른 실시예에서, 게이트웨이(410)는 당업자가 고려할 수 있는 다른 방식으로 쿼리 작업을 부분 작업으로 나눌 수 있다.
게이트웨이(410)는 로컬 처리를 위해 각 부분 쿼리를 작업자(412)로 전송한다. 일실시예에서, 작업자(412)는 하이브 테이블 데이터를 저장하는 하둡 클러스터로 오버레이(overlaid)될 수 있다. 각 작업(412)은 하둡 클러스터 노드(432) 상에서 서비스로서 구동된다. 특정 작업자(412)가 구동되는 노드(432)에 저장된 데이터를 처리하는 부분 쿼리를 각 작업자(412)가 책임지도록 부분 쿼리들이 생성된다. 작업자(412)는 작업자(412)와 동일한 클러스터 노드(432) 상에서 구동되는 데이터 노드 서비스(422)와 직접 접촉한다. 작업자(412)는 단일 클러스터 노드(432) 내에 데이터를 요청함으로써 부분 쿼리를 위한 낮은 지연 시간 데이터 판독을 달성할 수 있다.
클러스터 노드(432)는 원격 절차 호출(remote procedure call; RPC) 프레임워크를 사용하여 서비스의 구현을 가능하게 할 수 있다. 예를 들어, 일실시예에서, 클러스터 노드(432)는 아파치 쓰리프트(Apache Thrift)와 같은 RPC 프레임워크를 사용하여 높은 확장성과 고성능의 서버 서비스로서 작업자 서비스(412)를 선언하고 생성한다.
일실시예에서, 작업 노드(342)는 하둡 클러스터(310)의 노드(312) 상에서 구현되는 서비스로 구현된다. 다른 실시예에서, 작업 노드(342)는 하둡 클러스터(310)의 노드들(312)과 상호 연결된 전용 서버로 구현된다.
작업자(412)는 주기적으로 부분 쿼리의 처리 과정을 나타내는 상태 업데이트(“하트비트”로 참조된다)를 게이트웨이(410)로 돌려보낸다. 일실시예에서, 만약 하트비트를 돌려보내길 멈추거나 진행을 보이지 않는 할당된 작업자가 있으면, 게이트웨이(410)는 작업자가 실패했다고 결정하고 부분 쿼리를 다른 작업자에 다시 스케쥴링한다. 각 작업자(412)가 각 부분 쿼리와 연관되고 하나 이상의 클러스터 노드(432)에 저장된 데이터를 스캔하고, 부분 쿼리를 위한 중간 결과를 생성한다. 일실시예에서, 작업자(412)가 부분 쿼리 전체를 작업자(412)가 구동되는 클러스터 노드의 메모리 내에서 처리한다. 작업자(412)는 중간 결과를 그 메모리에 저장한다. 부분 쿼리의 처리의 끝에서, 작업자(412)는 중간 결과를 게이트웨이(410)에 저장한다. 일부 실시예에서, 작업자(412)는 아파치 쓰리프트 등으로 불리는 RPC를 통하여 중간 결과를 전송한다.
게이트웨이(410)는 작업자들(412)로부터 모든 중간 결과를 수신하고 쿼리 작업에 대한 답으로서 중간 결과들을 쿼리 결과로 병합한다. 그리고 게이트웨이(410)는 클라이언트(480)로 쿼리 결과를 반환한다. 일실시예에서, 클라이언트(480)는 디스플레이 요소에 쿼리 결과를 선택적으로 표시한다.
메타캐시(414)는 게이트웨이(410) 상에서 구동되어 하이브 테이블 레벨 및 HDFS 파일 레벨 메타데이터 양자를 개시하여 쿼리 지연을 감소시킨다. 일부 실시예에서, 메타캐시(414)는 게이트웨이(410)와 상호 연결된 단독 서버로 구현될 수 있다. 메타캐시(414)는 이전 쿼리로부터 캐시된 데이터를 유지할 수 있다. 예를 들어, 조작자가 상호 작용식으로 하이브 테이블의 데이터를 분석할 때, 좌작자는 다수의 연이은 쿼리를 동일한 하이브 테이블에서 실행할 수 있다. 이전 쿼리로부터 캐시된 데이터를 유지함으로써, 메타캐시(414)는 하이브 메타스토어(440) 및 HDFS 네임노드(460)로부터 메타데이터를 반복적으로 불러오는 대신 캐시된 메타데이터를 재사용할 수 있다.
전형적인 하이브 테이블의 데이터는 한번 기록되고 더 이상의 변화 없이 여러 번 판독되기 때문에 메타캐시(414)는 높은 캐시 적중률을 가지고 있다. 일실시예에서, 메타캐시(414)는 하이브 시스템의 감사 로그(audit log)의 실시간 공급을 검색하여 하이브 쿼리나 다른 조작에 의해 변화됐을 수도 있는 하이브 시스템 내의 분할을 위하여 캐시된 데이터 내의 항목을 무효화할 수 있다. 다른 실시예에서, 메타캐시(414)는 자동으로 캐시된 데이터에서 미리 결정된 기간(예를 들면, 1시간) 동안 쿼리되지 않은 항목을 제거한다. 그러면서, 메타캐시(414)는 메모리 사용의 제멋대로의 성장을 방지하고 캐시 에러를 최소화한다.
작업자(412)가 구동되는 각 클러스터 노드(432)의 작업량은 상이할 수 있다. 클러스터 노드(432)와 작업자 서비스(412) 역시 다양한 이유로 실패할 수 있다. 게이트웨이(410)가 합리적인 시간 내에 작업자(412)의 다수로부터 중간 결과를 수신할 수 있는 한편, 노드 또는 서비스의 실패 또는 지연으로 중간 결과를 전송하는데 실패하는 작업자(412)도 있다. 이러한 작업자들은 부분 쿼리의 분산 후 미리 결정된 기간 후에 미리 결정된 퍼센티지 이하의 진행율을 보고하거나, 단순히 진행 과정을 게이트웨이(410)에 응답하는데 실패한다. 이러한 작업자들은 스트래글링 작업자로 식별된다. 게이트웨이(410)가 스트래글링 작업자로 식별하면, 게이트웨이(410)는 스트래글링 작업자에 부분 쿼리의 할당을 취소하는 메시지를 전송한다. 스트래글링 작업자가 중간 결과를 전송하는데 실패한 각 완료되지 않은 부분 쿼리에 대해, 게이트웨이(410)는 부분 쿼리를 복수의 부차 부분 쿼리로 더 나누고, 부차 부분 쿼리를 작업자들(412)의 일부에 할당한다. 일실시예에서, 게이트웨이(410)는 작업자들(412)의 현재 작업량에 기반하여 부차 부분 쿼리의 할당을 결정한다. 다른 실시예에서, 게이트웨이(410)는 당업자가 고려할 수 있는 다른 방식으로 할당을 결정할 수 있다. 이 추가적인 병렬화된 처리는 미완료된 부분 쿼리의 재시도의 속도를 높이고 따라서 스트래글링 작업자로 인한 쿼리 지연 시간을 줄인다.
도 5는 스트래글링 작업 노드를 식별하고 부분 쿼리를 더 나누기 위한 샘플 과정을 도시한다. 단계 502에서, 분산형 쿼리 엔진의 게이트웨이는 클라이언트 장치로부터 복수의 데이터 노드를 가지는 분산형 저장 클러스터에 저장된 데이터를 포함하는 데이터베이스를 위한 데이터베이스 쿼리를 수신한다. 단계 504에서, 게이트웨이는 상기 데이터베이스 쿼리를 복수의 부분 쿼리로 나눈다. 그리고 단계 506에서, 게이트웨이는 상기 부분 쿼리의 각각을 복수의 작업 노드의 각 작업 노드로 송신한다. 각 작업 노드는 상기 분산형 저장 클러스터의 데이터 노드에서 실행되는 서비스일 수 있다.
단계 508에서, 게이트웨이 서버는 스트래글링 작업 노드를 식별한다. 게이트웨이는 또한 상기 스트래글링 작업 노드에 할당된 부분 쿼리를 복수의 부차 부분 쿼리로 더 나누고, 상기 복수의 부차 부분 쿼리를 상기 복수의 작업 노드의 일부에 할당한다. 일실시예에서, 게이트웨이는 상기 작업 노드가 주기적으로 송신하는 하트비트 메시지를 모니터링함으로써 스트래글링 작업 노드를 식별한다. 스트래글링 작업 노드는 상기 스트래글링 작업 노드로부터의 하트비트 메시지가 미리 결정된 기간에 수신되지 않을 때 식별된다. 다른 실시예에서, 스트래글링 작업 노드는 상기 스트래글링 작업 노드로부터의 하트비트 메시지가 수신되고 상기 하트비트 메시지가 상기 스트래글링 작업 노드에 의해 처리되는 부분 쿼리의 상태를 나타내는 수로서 역치 이하의 수를 포함할 때, 식별된다.
단계 510에서, 상기 작업 노드로부터 상기 부분 쿼리를 위한 복수의 중간 결과를 검색한다. 각 중간 결과는 상기 작업 노드의 각각의 작업 노드에 의해 상기 각각의 작업 노드가 실행되는 데이터 노드에 저장된, 연관된 데이터를 스캔함으로써 처리된다. 단계 512에서, 상기 복수의 중간 결과에 기반하여 쿼리 결과를 생성한다.
일실시예에서, 분산형 쿼리 엔진은 하이브 시스템의 데이터 포맷 및 메타데이터와 호환 가능하고 HiveQL 언어의 부분집합을 지원할 수 있다. 그리고 HiveQL은 SQL과 유사한 선언형 언어이다. HiveQL 언어는 엄격하게 SQL의 표준을 따를 필요 없고, SQL에 본래 명시되지 않은 확장을 제안한다. 예를 들면, 분산형 쿼리 엔진은 필터(filters), 합계(aggregates), top-k, 백분위수(percentiles), FROM 절 내의 서브 쿼리(sub-queries), UNION ALL 및 사용자 정의 함수를 지원할 수 있다.
일실시예에서, 분산형 쿼리 엔진은 스캔되는 입력 데이터의 양을 명시적으로 제한할 수 있는 TABLESAMPLE 절을 지원한다. 다른 실시예에서, 분산형 쿼리 엔진은 오퍼레이터가 동일한 쿼리에서 여러 번 사용되는 복잡한 표현식을 위한 변수를 선언함으로써 더 많은 판독 가능한 쿼리를 쓸 수 있도록 하는 WITH 절을 지원한다. WITH 절은 또한 오퍼레이터가 옵티마이저(optimizer)가 공통 서브 표현식을 실행 시간 동안 단 한번만 평가하도록 하는 힌트를 명시하는 방법을 제공할 수 있다.
*일부 실시예에서, 분산형 쿼리 엔진은 전체 쿼리 처리가 완료되기 전의 근사 쿼리 결과를 지원할 수 있다. 분산형 쿼리 엔진은 최초 쿼리 입력 이후 미리 결정된 시간 후, 또는 쿼리의 처리가 미리 결정된 조건을 만족했을 때(예를 들면, 일정 수의 작업자가 실패했을 때) 자동으로 근사 쿼리 결과를 공급할 수 있다. 분산형 쿼리 엔진은 또한 조작자의 지시에 응답하여 근사 쿼리 결과를 공급할 수 있다. 예를 들면, 쿼리 결과를 기다리는 조작자는 컨트롤-C(Ctrl-C)를 입력하여 분산형 쿼리 엔진이 쿼리 처리를 정지하도록 지시할 수 있다. 지시를 받으면, 분산형 쿼리 엔진은 쿼리 처리를 정지하고 근사 쿼리 결과를 반환한다. 일실시예에서, 분산형 쿼리 엔진은 근사 쿼리 결과를 위해 스캔된 데이터의 백분율을 나타내는 백분율 표시자를 더 공급한다. 일실시예에서, 분산형 쿼리 엔진은 근사 쿼리 결과를 반환하고 정확한 쿼리 결과를 위한 쿼리 처리를 계속한다(예를 들면, 100%의 백분율 표시자와 함께).
특히 데이터를 기록하거나 변경하는 대신 데이터를 탐색하는 쿼리에 있어서, 근사 쿼리 결과는 조작자의 분석에 충분할 수 있다. 노드 실패, 오류가 생긴 입력 데이터, 또는 심지어 쿼리를 죽이는(killing) 사용자와 같은 실행 시간 오류(run time error)는 모든 입력 데이터가 스캔되지 않은 상황으로 다루어질 수 있다. 실패가 발생했을 때, 분산형 쿼리 엔진은 단순히 에러 메시지를 반환하는 대신, 지금까지의 분산형 쿼리의 처리에 기반하여 즉시 근사 쿼리 결과를 반환할 수 있다. 일실시예에서, 분산형 쿼리 엔진은 근사 쿼리 결과를 백분율 표시자와 함께 반환할 수 있다.
다른 실시예에서, 조작자는 또한 그 쿼리 작업에서 정확한 쿼리 결과가 요구됨을 명시할 수 있다. 이런 경우, 쿼리 처리가 실패했을 때 실행 시간 오류가 반환될 수 있다.
분산형 쿼리 엔진은 종합과 모든 중간 결과를 메모리에 저장하는데 원-패스 알고리즘(one-pass algorithms)을 사용한다. 중간 결과와 최종 쿼리 결과의 크기는 상대적으로 작을 수 있다. 분산형 쿼리 엔진의 근사 쿼리 결과의 반환 능력은 크기를 더 줄일 수 있다. 예를 들면, 만약 쿼리가 데이터 레코드를 특정 컬럼으로 정렬하는 것(예를 들면, ORDER BY 절)이라면, 분산형 쿼리 엔진은 작업자가 연관된 데이터 레코드의 부분만을 스캔하게 함으로써 근사 답을 생성할 수 있다. 유사하게, 분산형 쿼리 엔진은 특정 항목을 세고 백분율을 계산하는 등과 같은 쿼리 타입을 위한 근사 답안 또한 생성할 수 있다.
예를 들면, 일실시예에서 분산형 쿼리 엔진의 조작자는 데이터 레코드의 특정 셋에서 국가 컬럼의 특정 값의 수를 세도록 지시하는 쿼리 작업을 입력할 수 있다. 분산형 쿼리 엔진는 쿼리를 수신하고, 쿼리를 부분 쿼리로 나누고, 작업자들에 이들 분산형 쿼리를 처리하도록 할당한다. 분산형 쿼리 엔진이 작업을 시작하고 20초가 지난 후, 작업자는 클라이언트 장치의 키보드에서 컨트롤-C를 누름으로써 작업를 종료한다. 종료 지시를 수신하고, 분산형 쿼리 엔진은 즉시 할당된 작업자들에 근사 중간 결과를 반환하도록 지시하고 이를 근사 중간 결과를 병합함으로써 근사 결과를 반환한다. 근사 결과는 조작자의 클라이언트 장치에 반환된다. 클라이언트 장치는 총 처리 시간, 사용된 작업자의 수, 스캔된 데이터 레코드의 로우(rows), 스캔된 데이터의 양, 정확한 결과를 위해 스캔되어야 할 데이터의 양, 스캔된 데이터의 백분율, 및/또는 실패한 수에 관한 정보를 더 수신할 수 있다.
다른 실시예에서, 분산형 쿼리 엔진은 미리 결정된 역치를 초과하는 실패한 수 이후에 자동으로 근사 쿼리 결과를 반환할 수 있다. 또 다른 실시예에서, 조작자는 쿼리 작업에서 정확한 결과가 요구됨을 명시할 수 있다. 분산형 처리 엔진은 모든 연관된 데이터 레코드가 할당된 작업자에 의해 스캔될 때까지 처리를 계속할 것이다. 정확한 쿼리 결과는 조작자의 사용자 장치로 반환될 수 있다. 클라이언트 장치는 총 처리 시간, 사용된 작업자의 수, 스캔된 데이터 레코드의 로우, 스캔된 데이터의 양, 스캔된 데이터의 백분율(예를 들어, 100%), 및/또는 실패한 수에 관한 정보를 더 수신할 수 있다.
도 6은 데이터베이스 쿼리의 근사 처리의 샘플 과정을 도시한다. 단계 602에서, 분산형 쿼리 엔진의 게이트웨이는 클라이언트 장치로부터 복수의 데이터 노드를 가지는 분산형 저장 클러스터에 저장된 데이터를 포함하는 데이터베이스를 위한 데이터베이스 쿼리를 수신한다. 단계 604에서, 게이트웨이는 상기 데이터베이스 쿼리를 복수의 부분 쿼리로 나눈다. 단계 606에서, 게이트웨이는 상기 부분 쿼리의 각각을 복수의 작업 노드의 각 작업 노드로 송신한다. 각 작업 노드는 상기 분산형 저장 클러스터의 데이터 노드에서 실행되는 서비스일 수 있다. 단계 608에서, 부분 쿼리를 송신한 후, 게이트웨이는 상기 작업 노드에 즉시 근사 쿼리 결과를 반환하도록 지시할 수 있다. 일실시예에서, 즉시 근사 쿼리 결과를 반환하는 것은 1초와 같이 아주 짧은 시간 내에 결과를 반환하는 것을 의미한다. 지시는 다양한 이벤트에 의해 트리거될 수 있다. 예를 들어, 게이트웨이는 클라이언트 장치로부터 데이터베이스 쿼리의 처리를 종료하도록 지시를 수신할 수 있다; 또는 게이트웨이는 미리 결정된 시간 후에 정확한 쿼리 결과가 사용 가능하지 않을 때 자동으로 근사 쿼리 결과를 반환하도록 결정할 수 있다. 그러므로, 근사 결과는 클라이언트 장치에 의해 수동으로 요청될 수 있고, 또는 사용자의 개입 없이 분산형 쿼리 엔진에 의해 자동으로 트리거될 수 있다.
단계 610에서, 근사 중간 결과를 위한 지시 후에, 게이트웨이는 상기 작업 노드로부터 상기 부분 쿼리를 위한 복수의 중간 결과를 검색한다. 각 중간 결과는 상기 작업 노드의 각각의 작업 노드에 의해 상기 각각의 작업 노드가 실행되는 데이터 노드에 저장된, 연관된 데이터를 스캔함으로써 처리된다. 근사 중간 결과를 수신하고, 단계 612에서, 게이트웨이는 상기 복수의 중간 결과에 기반하여 쿼리 결과를 생성한다. 그리고 단계 614에서, 분산형 쿼리 엔진의 게이트웨이는 근사 쿼리 결과를 반환한다. 일실시예에서, 근사 쿼리 결과는 백분율 표시자와 함께 클라이언트 장치에 반환된다. 백분율 표시자는 쿼리 결과를 위해 스캔된, 데이터 노드에 저장된 연관된 데이터의 백분율을 나타낸다.
상기 도시된 장점에 이외에, 본 명세서에 개시된 기술의 추가적인 장점은 아래와 같다.
분산형 쿼리 엔진은 하둡 클러스터와 같은 데이터 저장 클러스터에 저장된 데이터에 대한 쿼리의 지연 시간을, 하이브 시스템 단독으로 사용할 때의 쿼리 지연 시간과 비교했을 때 크게 감소시킨다. 분산형 쿼리 엔진의 조작자 또는 사용자는 작은 대기 시간으로 애드혹 쿼리(ad hoc queries)를 수행할 수 있다. 분산형 쿼리 엔진은 상이한 상황에서 활용될 수 있다. 예를 들어, 분산형 쿼리 엔진 없이, 조작자나 분석가는 하이브로부터 MySQL이나 오라클과 같은 데이터베이스로 명시적으로 데이터를 불러오고, 데이터베이스로부터 데이터를 페치(fetch)하여 웹 기반 데이터 분석 보고서를 구동할 필요가 있다. 분산형 쿼리 엔진을 사용하여, 조작자는 하이브 시스템으로부터 직접 데이터를 페치하여 웹 기반 분석 보고서를 생성할 수 있다.
일실시예에서, 조작자가 예를 들어 도 4에 도시된 그래픽 인터페이스(484)를 이용하여 쿼리 작업을 작성할 때, 분산형 쿼리 엔진은 데이터 샘플을 페치하여 조작자에게 데이터의 프리뷰를 그래픽 인터페이스(484)에 보여줄 수 있다. 다른 실시예에서, 분산형 쿼리 엔진은 인기 데이터 셋을 색인(index)하고 메모리에 고정(pin)하여 쿼리 지연 시간을 보다 향상시킬 수 있다.
본 명세서에 개시된 기술은 데이터 저장 클러스터 상에 설치될 수 있는 분산형 쿼리 엔진에 낮은 지연 시간을 제공한다. 분산형 처리 엔진은 하이브 시스템의 존재하는 데이터 및 메타데이터와 호환 가능할 수 있다. 분산형 쿼리 엔진은 데이터를 다른 데이터베이스(예를 들면, MySQL 또는 오라클)로 불러오는 파이프라인의 필요 없이 데이터 분석 보고서를 구동하는데 사용될 수 있다.
도 7은 본 명세서에 기술된 임의의 클러스터 노드를 나타내는 컴퓨터 노드의 구조의 예시를 나타내는 상위 계층 블록 다이어그램이다. 노드(700)는 하나 이상의 프로세서(710) 및 인터커넥트(730)를 통해 연결되는 메모리(720)를 포함한다. 도 7에 도시된 인터커넥트(730)는 임의의 하나 이상의 별도의 물리적 버스, 포인트 대 포인트 연결 또는 적절한 브릿지, 어댑터 또는 컨트롤러로 연결되는 이들 모두를 표현하는 추상적 개념이다. 따라서, 인터커넥트(730)는 예컨대 시스템 버스, PCI(Peripheral Component Interconnect) 버스나 PCI-익스프레스(PCI-Express) 버스, 하이퍼트랜스포트(HyperTransport) 또는 ISA(industry standard architecture) 버스, SCSI(small computer system interface) 버스, USB(universal serial bus), IIC(I2C) 버스 또는 때때로 "Firewire"라고 하는 IEEE(Institute of Electrical and Electronics Engineers) 표준 1394 버스를 포함할 수 있다.
프로세서(들)(710)는 저장 컨트롤러(700)의 중앙 처리 유닛(CPU)을 포함할 수 있고, 따라서 노드(700)의 전체 구동을 제어한다. 특정 실시예로, 프로세서(들)(710)는 메모리(720)에 저장된 소프트웨어 또는 펌웨어를 실행하여 이를 달성한다. 프로세서(들)(710)는 하나 이상의 프로그램가능한 범용 또는 특수용 마이크로프로세서, 디지털 신호 프로세서(DSPs), 프로그램가능한 컨트롤러, 주문형 집적회로(application specific integrated circuits, ASICs), 프로그램가능한 논리 장치(PLDs), 보안 플랫폼 모듈(trusted platform modules; TPMs) 등 또는 이런 장치의 조합이거나 이를 포함할 수 있다.
메모리(720)는 노드(700)의 메인 메모리이거나 포함한다. 메모리(720)는 임의의 형태의 랜덤 액세스 메모리(RAM), 읽기-전용 메모리(ROM), 플래시 메모리 등 또는 이런 장치의 조합을 나타낸다. 사용시, 메모리(720)는 프로세서(705)에 의해 실행될 때 프로세서(705)가 본 명세서에 개시된 기술에 따른 지시를 포함하는 코드(770)를 포함할 수 있다.
또한, 네트워크 어댑터(710) 및 저장 어댑터(750)는 인터커넥트(730)를 통해 프로세서(들)(710)와 연결된다. 네트워크 어댑터(740)는 네트워크를 통해 원격 장치와 통신하는 능력을 노드(700)에 제공하며, 이 어댑터는 예컨대 이더넷 어댑터 또는 광섬유 채널 어댑터일 수 있다. 네트워크 어댑터(700)는 노드(700)에 클러스터 내에서 다른 노드들과 통신하는 능력 또한 제공할 수 있다. 일부 실시예에서, 노드는 하나 이상의 네트워크 어댑터를 사용하여 클러스터 내에서 및 외부와의 통신을 별도로 다룰 수 있다. 저장 어댑터(750)는 노드(700)가 영속적인 저장(persistent storage)에 접근할 수 있도록 하고, 예컨대 광섬유 채널 어댑터 또는 SCSI 어댑터일 수 있다.
메모리(720)에 저장된 코드(770)는 소프트웨어 및/또는 펌웨어로 구현되어 프로세서(들)(710)이 상술한 행동을 수행하도록 프로그램할 수 있다. 특정 실시예에서, 그런 소프트웨어 또는 펌웨어는 노드(700)를 통해(예를 들어, 네트워크 어댑터(740)를 거쳐) 원격 시스템으로부터 다운로드함으로써 노드(700)에 처음에 제공될 수 있다.
본 명세서에 소개된 기술은 예를 들어, 소프트웨어 및/또는 펌웨어로 프로그램된 프로그램 가능한 회로(예를 들어, 하나 이상의 마이크로프로세서) 또는 완전히 특수용 하드웨어 내장 회로, 또는 이런 형태의 조합에 의해 구현될 수 있다. 특수용 하드웨어 내장 회로는 예를 들어 하나 이상의 특정 용도 지향 직접 회로(application-specific intergrated circuits; ASICs), 프로그램 가능한 논리 장치(programmable logic devices; PLDs), 필드 프로그래머블 게이트 어레이(field programmable gate arrays; FPGAs), 기타 등등의 형태일 수 있다.
본 명세서에 소개된 기술의 구현에 있어 사용을 위한 소프트웨어 또는 펌웨어는 기계-판독가능한 저장 매체(machine-readable storage medium)에 저장되고 하나 이상의 범용 또는 특수용 프로그램가능 마이크로프로세서에 의해 실행될 수 있다. 본 명세서에서 사용되는 용어 “기계-판독가능한 저장 매체”는 기계에 의해 접근 가능한 형태의 정보를 저장할 수 있는 임의의 메커니즘을 포함한다(기계는 예컨대 컴퓨터, 네트워크 장치, 휴대폰, 개인용 정보 단말기(PDA), 제작 도구, 하나 이상의 프로세서를 가지는 임의의 장치일 수 있다). 예를 들어, 기계-접근가능한 저장 매체는 판독가능/비-판독가능 매체(예를 들어 읽기-전용 메모리(ROM); 랜덤 액세스 메모리(RAM); 자기 디스크 저장 매체; 광학 저장 매체; 플래시 메모리 장치; 기타 등등), 기타 등등을 포함한다.
본 명세서에 사용되는 용어 “논리”는 예를 들어 특정 소프트웨어 및/또는 펌웨어로 프로그램된 프로그램가능한 회로, 특수용 하드웨어 내장 회로, 또는 그들의 조합을 포함할 수 있다.
상술한 예시 이외에, 발명의 다양한 다른 수정 및 변형이 발명에서 벗어남 없이 만들어질 수 있다. 따라서, 상술한 설명은 제한하는 것으로 인식되지 않고 첨부한 청구항은 발명의 진정한 정신과 전체 범위를 포함하는 것으로 해석되어야 할 것이다.

Claims (17)

  1. 게이트웨이 서버로서:
    복수의 데이터 노드를 가지는 분산형 저장 클러스터에 저장된 데이터를 포함하는 데이터베이스에 대한 데이터베이스 쿼리로부터 복수의 부분 쿼리를 생성하고, 및
    복수의 중간 결과에 기반하여 쿼리 결과를 구성하도록 설정된 게이트웨이 서버; 및
    복수의 작업 노드를 포함하고,
    복수의 작업 노드의 각 작업 노드는 각 부분 쿼리와 연관되고 분산형 저장 클러스터의 적어도 하나의 데이터 노드에 저장된 데이터를 스캔함으로써 복수의 부분 쿼리의 각 부분 쿼리를 처리하도록 설정되고, 복수의 작업 노드의 각 작업 노드는 그 작업 노드의 메모리에 저장된 복수의 중간 결과 중 한 중간 결과를 생성하도록 더 설정되고,
    게이트웨이 서버는:
    스트래글링(straggling) 작업 노드를 식별하고,
    스트래글링 작업 노드에 할당된 부분 쿼리를 복수의 부차 부분 쿼리로 더 나누고,
    복수의 부차 부분 쿼리를 복수의 작업 노드의 일부에 할당하도록 더 설정되고,
    스트래글링 작업 노드는 게이트웨이 서버에 진행율을 보고하는데 실패하거나 특정 기간 후에 게이트웨이 서버에 특정 값 미만의 진행율을 보고하는 작업 노드인 분산형 데이터베이스 쿼리 엔진을 위한 시스템.
  2. 청구항 1에 있어서,
    복수의 작업 노드의 각 작업 노드는 분산형 저장 클러스터의 적어도 하나의 데이터 노드에 저장된, 각 부분 쿼리와 연관된 데이터의 부분을 스캔함으로써 복수의 부분 쿼리의 각 부분 쿼리를 처리하고, 그 작업 노드의 메모리에 저장된 근사 중간 결과를 생성하도록 더 설정되는 분산형 데이터베이스 쿼리 엔진을 위한 시스템.
  3. 청구항 2에 있어서,
    게이트웨이 서버는 적어도 하나의 근사 중간 결과에 기반하여 근사 쿼리 결과를 구성하도록 더 설정되는 분산형 데이터베이스 쿼리 엔진을 위한 시스템.
  4. 청구항 1에 있어서,
    게이트웨이 서버는 복수의 중간 결과의 일부에 기반하여 근사 쿼리 결과를 구성하도록 더 설정되는 분산형 데이터베이스 쿼리 엔진을 위한 시스템.
  5. 삭제
  6. 청구항 1에 있어서,
    적어도 하나의 작업 노드는 쿼리의 입력 파일 블록의 양 및 위치 정보에 기반하여 각 부분 쿼리를 부차 부분 쿼리로 나누도록 더 설정되는 분산형 데이터베이스 쿼리 엔진을 위한 시스템.
  7. 청구항 1에 있어서,
    복수의 작업 노드의 각 작업 노드는 분산형 저장 클러스터 내에서 각 데이터 노드를 구동하는 서비스인 분산형 데이터베이스 쿼리 엔진을 위한 시스템.
  8. 청구항 1에 있어서,
    데이터베이스의 테이블 레벨 메타데이터 및 분산형 저장 클러스터의 파일 레벨 메타데이터를 캐시하도록 설정된 메타데이터 캐시를 더 포함하는 분산형 데이터베이스 쿼리 엔진을 위한 시스템.
  9. 청구항 8에 있어서,
    메타데이터 캐시는 데이터베이스 쿼리를 위하여 이전 데이터베이스 쿼리로부터 캐시된 메타데이터를 유지하도록 설정되는 분산형 데이터베이스 쿼리 엔진을 위한 시스템.
  10. 청구항 1에 있어서,
    복수의 작업 노드의 각 작업 노드는 그 작업 노드에 의해 처리되는 부분 쿼리의 상태를 보고하기 위하여 하트비트 메시지(heartbeat message)를 주기적으로 게이트웨이 서버에 송신하는 분산형 데이터베이스 쿼리 엔진을 위한 시스템.
  11. 청구항 1에 있어서,
    게이트웨이 서버는 근사 쿼리 결과를 반환하기 위하여 또는 데이터베이스 쿼리의 처리를 종료하기 위하여 클라이언트 장치로부터 지시를 수신하도록 더 설정되는 분산형 데이터베이스 쿼리 엔진을 위한 시스템.
  12. 청구항 1에 있어서,
    게이트웨이 서버는 작업 노드에 근사 중간 결과를 반환하도록 지시하고, 근사 중간 결과에 기반하여 근사 쿼리 결과를 클라이언트 장치에 반환하도록 더 설정되는 분산형 데이터베이스 쿼리 엔진을 위한 시스템.
  13. 청구항 1에 있어서,
    데이터베이스 쿼리는 근사 쿼리 결과의 요청을 포함하는 분산형 데이터베이스 쿼리 엔진을 위한 시스템.
  14. 청구항 1에 있어서,
    쿼리 결과는 데이터 노드에 저장되고 쿼리 결과를 위해 스캔된, 연관된 데이터의 부분의 표시를 동반하는 분산형 데이터베이스 쿼리 엔진을 위한 시스템.
  15. 클라이언트 장치로부터, 복수의 클러스터 노드를 가지는 분산형 저장 클러스터에 저장된 데이터를 포함하는 데이터베이스에 대한 데이터베이스 쿼리를 수신하는 단계;
    데이터베이스 쿼리를 복수의 부분 쿼리로 나누는 단계;
    부분 쿼리의 각각을 복수의 작업 노드의 각 작업 노드로 송신하는 단계;
    작업 노드로부터 부분 쿼리에 대한 복수의 중간 결과를 검색하는 단계; 및
    복수의 중간 결과에 기반하여 쿼리 결과를 생성하는 단계를 포함하고,
    각 작업 노드는 분산형 저장 클러스터의 클러스터 노드의 메모리에서 실행되는 서비스이고,
    각 중간 결과는 각각의 작업 노드가 실행되는 클러스터 노드에 저장되는, 연관된 데이터를 스캔함으로써 작업 노드의 각각의 작업 노드에 의해 처리되고,
    스트래글링 작업 노드를 식별하는 단계;
    스트래글링 작업 노드에 할당된 부분 쿼리를 복수의 부차 부분 쿼리로 나누는 단계; 및
    복수의 부차 부분 쿼리를 복수의 작업 노드의 일부에 할당하는 단계를 더 포함하는 분산형 데이터베이스 쿼리 엔진을 위한 방법.
  16. 삭제
  17. 청구항 15에 있어서,
    부분 쿼리는 쿼리의 입력 파일 블록의 양 및 위치 정보에 기반하여 부차 부분 쿼리로 나누어지는 분산형 데이터베이스 쿼리 엔진을 위한 방법.
KR1020177024191A 2013-01-07 2013-12-20 분산형 데이터베이스 쿼리 엔진을 위한 시스템 및 방법 KR102037232B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US13/735,820 US9081826B2 (en) 2013-01-07 2013-01-07 System and method for distributed database query engines
US13/735,820 2013-01-07
EP13198563.2 2013-12-19
EP13198563.2A EP2752779B1 (en) 2013-01-07 2013-12-19 System and method for distributed database query engines
PCT/US2013/077240 WO2014107359A1 (en) 2013-01-07 2013-12-20 System and method for distributed database query engines

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020157020768A Division KR101775433B1 (ko) 2013-01-07 2013-12-20 분산형 데이터베이스 쿼리 엔진을 위한 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20170103021A KR20170103021A (ko) 2017-09-12
KR102037232B1 true KR102037232B1 (ko) 2019-10-28

Family

ID=49886706

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020177024191A KR102037232B1 (ko) 2013-01-07 2013-12-20 분산형 데이터베이스 쿼리 엔진을 위한 시스템 및 방법
KR1020157020768A KR101775433B1 (ko) 2013-01-07 2013-12-20 분산형 데이터베이스 쿼리 엔진을 위한 시스템 및 방법

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020157020768A KR101775433B1 (ko) 2013-01-07 2013-12-20 분산형 데이터베이스 쿼리 엔진을 위한 시스템 및 방법

Country Status (11)

Country Link
US (5) US9081826B2 (ko)
EP (2) EP3096250B1 (ko)
JP (1) JP6117378B2 (ko)
KR (2) KR102037232B1 (ko)
CN (2) CN104903894B (ko)
AU (1) AU2013371448B2 (ko)
BR (1) BR112015016352A2 (ko)
CA (1) CA2896855C (ko)
IL (1) IL239717A (ko)
MX (1) MX349042B (ko)
WO (1) WO2014107359A1 (ko)

Families Citing this family (192)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9361311B2 (en) * 2005-01-12 2016-06-07 Wandisco, Inc. Distributed file system using consensus nodes
US9495381B2 (en) 2005-01-12 2016-11-15 Wandisco, Inc. Geographically-distributed file system using coordinated namespace replication over a wide area network
US9332069B2 (en) 2012-12-28 2016-05-03 Wandisco, Inc. Methods, devices and systems for initiating, forming and joining memberships in distributed computing systems
US9424272B2 (en) * 2005-01-12 2016-08-23 Wandisco, Inc. Distributed file system using consensus nodes
US9317572B2 (en) 2010-03-31 2016-04-19 Cloudera, Inc. Configuring a system to collect and aggregate datasets
US9081888B2 (en) 2010-03-31 2015-07-14 Cloudera, Inc. Collecting and aggregating log data with fault tolerance
US8874526B2 (en) 2010-03-31 2014-10-28 Cloudera, Inc. Dynamically processing an event using an extensible data model
US9082127B2 (en) 2010-03-31 2015-07-14 Cloudera, Inc. Collecting and aggregating datasets for analysis
US20120239681A1 (en) 2011-03-14 2012-09-20 Splunk Inc. Scalable interactive display of distributed data
US9128949B2 (en) 2012-01-18 2015-09-08 Cloudera, Inc. Memory allocation buffer for reduction of heap fragmentation
US9172608B2 (en) 2012-02-07 2015-10-27 Cloudera, Inc. Centralized configuration and monitoring of a distributed computing cluster
US9405692B2 (en) 2012-03-21 2016-08-02 Cloudera, Inc. Data processing performance enhancement in a distributed file system
US9338008B1 (en) 2012-04-02 2016-05-10 Cloudera, Inc. System and method for secure release of secret information over a network
US9842126B2 (en) 2012-04-20 2017-12-12 Cloudera, Inc. Automatic repair of corrupt HBases
US9607045B2 (en) 2012-07-12 2017-03-28 Microsoft Technology Licensing, Llc Progressive query computation using streaming architectures
US9264516B2 (en) 2012-12-28 2016-02-16 Wandisco, Inc. Methods, devices and systems enabling a secure and authorized induction of a node into a group of nodes in a distributed computing environment
US9081826B2 (en) 2013-01-07 2015-07-14 Facebook, Inc. System and method for distributed database query engines
US9171042B1 (en) * 2013-02-25 2015-10-27 Emc Corporation Parallel processing database tree structure
US9984083B1 (en) 2013-02-25 2018-05-29 EMC IP Holding Company LLC Pluggable storage system for parallel query engines across non-native file systems
US9342557B2 (en) * 2013-03-13 2016-05-17 Cloudera, Inc. Low latency query engine for Apache Hadoop
US9009215B2 (en) 2013-03-15 2015-04-14 Wandisco, Inc. Methods, devices and systems for dynamically managing memberships in replicated state machines within a distributed computing environment
US9292373B2 (en) * 2013-03-15 2016-03-22 International Business Machines Corporation Query rewrites for data-intensive applications in presence of run-time errors
US9448851B2 (en) * 2013-06-19 2016-09-20 International Business Machines Corporation Smarter big data processing using collaborative map reduce frameworks
US9442967B2 (en) * 2013-07-25 2016-09-13 Facebook, Inc. Systems and methods for efficient data ingestion and query processing
US9477731B2 (en) * 2013-10-01 2016-10-25 Cloudera, Inc. Background format optimization for enhanced SQL-like queries in Hadoop
US9934382B2 (en) 2013-10-28 2018-04-03 Cloudera, Inc. Virtual machine image encryption
US10491663B1 (en) * 2013-10-28 2019-11-26 Amazon Technologies, Inc. Heterogeneous computations on homogeneous input data
US9690671B2 (en) 2013-11-01 2017-06-27 Cloudera, Inc. Manifest-based snapshots in distributed computing environments
US10628417B2 (en) * 2013-12-01 2020-04-21 Paraccel Llc Physical planning of database queries using partial solutions
US8874835B1 (en) 2014-01-16 2014-10-28 Pure Storage, Inc. Data placement based on data properties in a tiered storage device system
US11921715B2 (en) 2014-01-27 2024-03-05 Microstrategy Incorporated Search integration
US10255320B1 (en) 2014-01-27 2019-04-09 Microstrategy Incorporated Search integration
US10635669B1 (en) * 2014-01-27 2020-04-28 Microstrategy Incorporated Data engine integration and data refinement
US9952894B1 (en) 2014-01-27 2018-04-24 Microstrategy Incorporated Parallel query processing
US11386085B2 (en) 2014-01-27 2022-07-12 Microstrategy Incorporated Deriving metrics from queries
US9715515B2 (en) 2014-01-31 2017-07-25 Microsoft Technology Licensing, Llc External data access with split index
US9576039B2 (en) 2014-02-19 2017-02-21 Snowflake Computing Inc. Resource provisioning systems and methods
WO2015139164A1 (zh) * 2014-03-17 2015-09-24 华为技术有限公司 一种任务调度的方法、装置及设备
AU2015241457B2 (en) * 2014-03-31 2019-10-10 Cirata, Inc. Geographically-distributed file system using coordinated namespace replication
US9667736B2 (en) * 2014-04-29 2017-05-30 International Business Machines Corporation Parallel I/O read processing for use in clustered file systems having cache storage
US20150347508A1 (en) * 2014-06-02 2015-12-03 Microsoft Corporation Partial result classification
US9836506B2 (en) * 2014-06-11 2017-12-05 International Business Machines Corporation Dynamic query optimization with pilot runs
US11487771B2 (en) * 2014-06-25 2022-11-01 Microsoft Technology Licensing, Llc Per-node custom code engine for distributed query processing
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US9766972B2 (en) * 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US11474874B2 (en) 2014-08-14 2022-10-18 Qubole, Inc. Systems and methods for auto-scaling a big data system
US10599648B2 (en) * 2014-09-26 2020-03-24 Applied Materials, Inc. Optimized storage solution for real-time queries and data modeling
JP6393193B2 (ja) * 2014-09-30 2018-09-19 Kddi株式会社 データ仮想化装置及び大規模データ処理プログラム
US10467569B2 (en) * 2014-10-03 2019-11-05 Datameer, Inc. Apparatus and method for scheduling distributed workflow tasks
US9747333B2 (en) 2014-10-08 2017-08-29 Cloudera, Inc. Querying operating system state on multiple machines declaratively
WO2016065198A1 (en) * 2014-10-22 2016-04-28 Qubole, Inc. High performance hadoop with new generation instances
US10298709B1 (en) * 2014-12-31 2019-05-21 EMC IP Holding Company LLC Performance of Hadoop distributed file system operations in a non-native operating system
JP2016159499A (ja) * 2015-02-27 2016-09-05 京セラドキュメントソリューションズ株式会社 機能提供システムおよび機能中継プログラム
US11294893B2 (en) * 2015-03-20 2022-04-05 Pure Storage, Inc. Aggregation of queries
WO2016183542A1 (en) 2015-05-14 2016-11-17 Walleye Software, LLC Computer data system position-index mapping
US11436667B2 (en) 2015-06-08 2022-09-06 Qubole, Inc. Pure-spot and dynamically rebalanced auto-scaling clusters
US20170004527A1 (en) * 2015-07-01 2017-01-05 Turn Inc. Systems, methods, and devices for scalable data processing
US20170060941A1 (en) * 2015-08-25 2017-03-02 Futurewei Technologies, Inc. Systems and Methods for Searching Heterogeneous Indexes of Metadata and Tags in File Systems
CN105302697B (zh) * 2015-11-13 2018-05-18 中国建设银行股份有限公司 一种密集数据模型数据库的运行状态监控方法及系统
CN106815254B (zh) * 2015-12-01 2020-08-14 阿里巴巴集团控股有限公司 一种数据处理方法和装置
WO2017117216A1 (en) * 2015-12-29 2017-07-06 Tao Tao Systems and methods for caching task execution
EP3420451A1 (en) * 2016-05-02 2019-01-02 NorCom Information Technology GmbH & Co. KGaA Distributed data analysis system and method
US11080207B2 (en) 2016-06-07 2021-08-03 Qubole, Inc. Caching framework for big-data engines in the cloud
US10740328B2 (en) 2016-06-24 2020-08-11 Microsoft Technology Licensing, Llc Aggregate-query database system and processing
US10331668B1 (en) * 2016-07-19 2019-06-25 Arcadia Data Inc. Apparatus and method for query processing using analytical view partitions and database partitions
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US10262002B2 (en) 2016-08-11 2019-04-16 International Business Machines Corporation Consistent execution of partial queries in hybrid DBMS
CN106354765B (zh) * 2016-08-19 2020-06-26 广东亿迅科技有限公司 一种基于分布式采集的日志分析系统及方法
US10455045B2 (en) 2016-09-06 2019-10-22 Samsung Electronics Co., Ltd. Automatic data replica manager in distributed caching and data processing systems
US10467195B2 (en) * 2016-09-06 2019-11-05 Samsung Electronics Co., Ltd. Adaptive caching replacement manager with dynamic updating granulates and partitions for shared flash-based storage system
KR101728873B1 (ko) 2016-09-07 2017-05-04 주식회사 비트나인 그래프 질의 언어 분산처리시스템 및 그 질의 언어 분산처리방법
US10606664B2 (en) 2016-09-07 2020-03-31 Qubole Inc. Heterogeneous auto-scaling big-data clusters in the cloud
US11620336B1 (en) 2016-09-26 2023-04-04 Splunk Inc. Managing and storing buckets to a remote shared storage system based on a collective bucket size
US11860940B1 (en) 2016-09-26 2024-01-02 Splunk Inc. Identifying buckets for query execution using a catalog of buckets
US11586627B2 (en) 2016-09-26 2023-02-21 Splunk Inc. Partitioning and reducing records at ingest of a worker node
US11593377B2 (en) 2016-09-26 2023-02-28 Splunk Inc. Assigning processing tasks in a data intake and query system
US11269939B1 (en) 2016-09-26 2022-03-08 Splunk Inc. Iterative message-based data processing including streaming analytics
US11604795B2 (en) 2016-09-26 2023-03-14 Splunk Inc. Distributing partial results from an external data system between worker nodes
US11232100B2 (en) * 2016-09-26 2022-01-25 Splunk Inc. Resource allocation for multiple datasets
US11003714B1 (en) 2016-09-26 2021-05-11 Splunk Inc. Search node and bucket identification using a search node catalog and a data store catalog
US11442935B2 (en) 2016-09-26 2022-09-13 Splunk Inc. Determining a record generation estimate of a processing task
US11222066B1 (en) 2016-09-26 2022-01-11 Splunk Inc. Processing data using containerized state-free indexing nodes in a containerized scalable environment
US10984044B1 (en) 2016-09-26 2021-04-20 Splunk Inc. Identifying buckets for query execution using a catalog of buckets stored in a remote shared storage system
US11321321B2 (en) 2016-09-26 2022-05-03 Splunk Inc. Record expansion and reduction based on a processing task in a data intake and query system
US11243963B2 (en) 2016-09-26 2022-02-08 Splunk Inc. Distributing partial results to worker nodes from an external data system
US10956415B2 (en) 2016-09-26 2021-03-23 Splunk Inc. Generating a subquery for an external data system using a configuration file
US10977260B2 (en) 2016-09-26 2021-04-13 Splunk Inc. Task distribution in an execution node of a distributed execution environment
US11250056B1 (en) 2016-09-26 2022-02-15 Splunk Inc. Updating a location marker of an ingestion buffer based on storing buckets in a shared storage system
US12013895B2 (en) 2016-09-26 2024-06-18 Splunk Inc. Processing data using containerized nodes in a containerized scalable environment
US11281706B2 (en) 2016-09-26 2022-03-22 Splunk Inc. Multi-layer partition allocation for query execution
US11874691B1 (en) 2016-09-26 2024-01-16 Splunk Inc. Managing efficient query execution including mapping of buckets to search nodes
US11599541B2 (en) 2016-09-26 2023-03-07 Splunk Inc. Determining records generated by a processing task of a query
US10353965B2 (en) * 2016-09-26 2019-07-16 Splunk Inc. Data fabric service system architecture
US11461334B2 (en) 2016-09-26 2022-10-04 Splunk Inc. Data conditioning for dataset destination
US11294941B1 (en) 2016-09-26 2022-04-05 Splunk Inc. Message-based data ingestion to a data intake and query system
US10726009B2 (en) 2016-09-26 2020-07-28 Splunk Inc. Query processing using query-resource usage and node utilization data
US10776355B1 (en) 2016-09-26 2020-09-15 Splunk Inc. Managing, storing, and caching query results and partial query results for combination with additional query results
US11416528B2 (en) * 2016-09-26 2022-08-16 Splunk Inc. Query acceleration data store
US11580107B2 (en) 2016-09-26 2023-02-14 Splunk Inc. Bucket data distribution for exporting data to worker nodes
US11163758B2 (en) 2016-09-26 2021-11-02 Splunk Inc. External dataset capability compensation
US11562023B1 (en) 2016-09-26 2023-01-24 Splunk Inc. Merging buckets in a data intake and query system
US11567993B1 (en) 2016-09-26 2023-01-31 Splunk Inc. Copying buckets from a remote shared storage system to memory associated with a search node for query execution
US11615104B2 (en) 2016-09-26 2023-03-28 Splunk Inc. Subquery generation based on a data ingest estimate of an external data system
US11126632B2 (en) 2016-09-26 2021-09-21 Splunk Inc. Subquery generation based on search configuration data from an external data system
US20180089324A1 (en) 2016-09-26 2018-03-29 Splunk Inc. Dynamic resource allocation for real-time search
US11550847B1 (en) 2016-09-26 2023-01-10 Splunk Inc. Hashing bucket identifiers to identify search nodes for efficient query execution
US11023463B2 (en) 2016-09-26 2021-06-01 Splunk Inc. Converting and modifying a subquery for an external data system
US11663227B2 (en) 2016-09-26 2023-05-30 Splunk Inc. Generating a subquery for a distinct data intake and query system
US10795884B2 (en) 2016-09-26 2020-10-06 Splunk Inc. Dynamic resource allocation for common storage query
US11106734B1 (en) 2016-09-26 2021-08-31 Splunk Inc. Query execution using containerized state-free search nodes in a containerized scalable environment
US11314753B2 (en) 2016-09-26 2022-04-26 Splunk Inc. Execution of a query received from a data intake and query system
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US10482096B2 (en) * 2017-02-13 2019-11-19 Microsoft Technology Licensing, Llc Distributed index searching in computing systems
KR101856454B1 (ko) 2017-03-06 2018-05-10 주식회사 티맥스데이터 분산처리를 위한 컴퓨팅 장치
US10552435B2 (en) * 2017-03-08 2020-02-04 Microsoft Technology Licensing, Llc Fast approximate results and slow precise results
US10648688B2 (en) 2017-03-09 2020-05-12 Johnson Controls Technology Company Building automation system with a verifiable relationship building language
US10846318B1 (en) 2017-04-18 2020-11-24 Microstrategy Incorporated Natural language visualizations
US10209982B2 (en) 2017-05-16 2019-02-19 Bank Of America Corporation Distributed storage framework information server platform architecture
US10733024B2 (en) 2017-05-24 2020-08-04 Qubole Inc. Task packing scheduling process for long running applications
CN109213743B (zh) * 2017-06-30 2021-10-15 北京京东尚科信息技术有限公司 一种数据查询方法和装置
US11989194B2 (en) 2017-07-31 2024-05-21 Splunk Inc. Addressing memory limits for partition tracking among worker nodes
US11921672B2 (en) 2017-07-31 2024-03-05 Splunk Inc. Query execution at a remote heterogeneous data store of a data fabric service
US10198469B1 (en) 2017-08-24 2019-02-05 Deephaven Data Labs Llc Computer data system data source refreshing using an update propagation graph having a merged join listener
JP7144424B2 (ja) * 2017-09-04 2022-09-29 株式会社エンビジョンAescジャパン 電池パック、制御装置、制御方法、及びプログラム
US10552394B2 (en) 2017-09-07 2020-02-04 International Business Machines Corporation Data storage with improved efficiency
US10896182B2 (en) 2017-09-25 2021-01-19 Splunk Inc. Multi-partitioning determination for combination operations
US11151137B2 (en) 2017-09-25 2021-10-19 Splunk Inc. Multi-partition operation in combination operations
CN107784103A (zh) * 2017-10-27 2018-03-09 北京人大金仓信息技术股份有限公司 一种访问hdfs分布式存储系统的标准接口
KR101966201B1 (ko) * 2017-11-01 2019-04-05 (주)데이터스트림즈 빅 데이터의 실시간 저장 및 검색 시스템
US10467112B2 (en) 2017-11-09 2019-11-05 Bank Of America Corporation Distributed data monitoring device
US10331484B2 (en) 2017-11-14 2019-06-25 Bank Of America Corporation Distributed data platform resource allocator
US11228489B2 (en) * 2018-01-23 2022-01-18 Qubole, Inc. System and methods for auto-tuning big data workloads on cloud platforms
WO2019171327A1 (en) 2018-03-07 2019-09-12 Open Text Sa Ulc Flexible and scalable artificial intelligence and analytics platform with flexible content storage and retrieval
US10904357B1 (en) * 2018-03-16 2021-01-26 Intuit Inc. Optimizing request dispatching between services
US11354696B1 (en) 2018-03-21 2022-06-07 84.51, Llc Systems and methods for implementing a rewards program
US11138230B2 (en) * 2018-03-26 2021-10-05 Mcafee, Llc Methods, apparatus, and systems to aggregate partitioned computer database data
KR102038527B1 (ko) * 2018-03-28 2019-11-26 주식회사 리얼타임테크 분산 클러스터 관리 시스템 및 그 방법
US10768998B2 (en) 2018-04-05 2020-09-08 International Business Machines Corporation Workload management with data access awareness in a computing cluster
US10585714B2 (en) 2018-04-05 2020-03-10 International Business Machines Corporation Workload management with data access awareness using an ordered list of hosts in a computing cluster
US10761891B2 (en) 2018-04-05 2020-09-01 International Business Machines Corporation Workload management with data access awareness by aggregating file locality information in a computing cluster
CN110309334B (zh) * 2018-04-20 2023-07-18 腾讯科技(深圳)有限公司 图数据库的查询方法、系统、计算机设备和可读存储介质
US11334543B1 (en) 2018-04-30 2022-05-17 Splunk Inc. Scalable bucket merging for a data intake and query system
CN110457971B (zh) * 2018-05-07 2022-09-16 腾讯科技(深圳)有限公司 重复识别码信息的检测方法和装置
JP7313123B2 (ja) * 2018-05-25 2023-07-24 ヤフー株式会社 演算システムおよび演算方法
CN110866062B (zh) * 2018-08-09 2023-11-24 菜鸟智能物流控股有限公司 基于分布式集群的数据同步方法以及装置
CN108959660B (zh) * 2018-08-15 2021-07-27 东北大学 一种基于hdfs分布式文件系统的存储方法及使用方法
CN109766368B (zh) * 2018-11-14 2021-08-27 国云科技股份有限公司 一种基于Hive的数据查询多类型视图产出系统及方法
CN109767274B (zh) * 2018-12-05 2023-04-25 航天信息股份有限公司 一种对海量发票数据进行关联存储的方法及系统
CN111291040B (zh) * 2018-12-10 2022-10-18 中国移动通信集团四川有限公司 一种数据处理方法、装置、设备及介质
US10902069B2 (en) * 2018-12-18 2021-01-26 Runtime Collective Limited Distributed indexing and aggregation
CN111367954A (zh) * 2018-12-26 2020-07-03 中兴通讯股份有限公司 数据查询处理方法、装置及系统、计算机可读存储介质
WO2020133391A1 (en) * 2018-12-29 2020-07-02 Alibaba Group Holding Limited Systems and methods for efficiently scanning a database using hardware acceleration
US11195050B2 (en) 2019-02-05 2021-12-07 Microstrategy Incorporated Machine learning to generate and evaluate visualizations
CN109815209A (zh) * 2019-03-20 2019-05-28 上海电力学院 一种用于医院后勤精益管理的分布式存储系统
CN110008257B (zh) * 2019-04-10 2024-04-16 深圳市腾讯计算机系统有限公司 数据处理方法、装置、系统、计算机设备和存储介质
WO2020220216A1 (en) 2019-04-29 2020-11-05 Splunk Inc. Search time estimate in data intake and query system
US11715051B1 (en) 2019-04-30 2023-08-01 Splunk Inc. Service provider instance recommendations using machine-learned classifications and reconciliation
US11100109B2 (en) * 2019-05-03 2021-08-24 Microsoft Technology Licensing, Llc Querying data in a distributed storage system
CN110175151A (zh) * 2019-05-22 2019-08-27 中国农业科学院农业信息研究所 一种农业大数据的处理方法、装置、设备和存储介质
US11144360B2 (en) 2019-05-31 2021-10-12 Qubole, Inc. System and method for scheduling and running interactive database queries with service level agreements in a multi-tenant processing system
US11704316B2 (en) 2019-05-31 2023-07-18 Qubole, Inc. Systems and methods for determining peak memory requirements in SQL processing engines with concurrent subtasks
CN110297827A (zh) * 2019-05-31 2019-10-01 国网上海市电力公司 一种集合Lucene和Hbase的电力数据检索系统
US11567957B2 (en) * 2019-09-25 2023-01-31 Salesforce.Com, Inc. Incremental addition of data to partitions in database tables
US11494380B2 (en) 2019-10-18 2022-11-08 Splunk Inc. Management of distributed computing framework components in a data fabric service system
US11429441B2 (en) 2019-11-18 2022-08-30 Bank Of America Corporation Workflow simulator
US11106509B2 (en) 2019-11-18 2021-08-31 Bank Of America Corporation Cluster tuner
CN110909048A (zh) * 2019-12-03 2020-03-24 北京明略软件系统有限公司 数据查询方法、装置、服务器、客户端及存储介质
KR102178121B1 (ko) * 2019-12-03 2020-11-12 아이씨티웨이주식회사 웹 기반의 공간 빅데이터 관리 서비스를 제공하는 방법 및 이를 수행하기 위한 명령어들이 저장된 컴퓨터 판독 가능한 저장 매체
US11614970B2 (en) 2019-12-06 2023-03-28 Microstrategy Incorporated High-throughput parallel data transmission
CN111061791B (zh) * 2019-12-12 2023-04-07 广东食品药品职业学院 一种中小型电商大数据平台
US11567965B2 (en) 2020-01-23 2023-01-31 Microstrategy Incorporated Enhanced preparation and integration of data sets
US11922222B1 (en) 2020-01-30 2024-03-05 Splunk Inc. Generating a modified component for a data intake and query system using an isolated execution environment image
CN111414349A (zh) * 2020-03-18 2020-07-14 江苏鸿程大数据技术与应用研究院有限公司 交互式统一大数据编程计算平台
US11210288B2 (en) 2020-05-12 2021-12-28 Coupang Corp. Systems and methods for reducing database query latency
CN111756732B (zh) * 2020-06-23 2022-07-12 北京明朝万达科技股份有限公司 数据扫描、管控方法及装置、电子设备、可读存储介质
CN111988165B (zh) * 2020-07-09 2023-01-24 云知声智能科技股份有限公司 一种分布式存储系统使用情况的监控方法及系统
CN113254488A (zh) * 2020-08-05 2021-08-13 深圳市汉云科技有限公司 分布式数据库的数据排序方法及系统
US11704313B1 (en) 2020-10-19 2023-07-18 Splunk Inc. Parallel branch operation using intermediary nodes
CN112307066B (zh) * 2020-11-03 2023-04-07 平安普惠企业管理有限公司 分布式数据聚合方法、系统、设备及存储介质
CN112395308A (zh) * 2020-11-05 2021-02-23 深圳市中博科创信息技术有限公司 一种基于hdfs数据库的数据查询方法
KR102265085B1 (ko) * 2020-12-04 2021-06-14 김근석 코드 분산 처리 서버, 코드 분산 처리 방법 및 기록 매체에 저장된 프로그램
CN112835895A (zh) * 2021-01-27 2021-05-25 世纪龙信息网络有限责任公司 一种数据存储系统及其存储方法
US11513876B2 (en) 2021-02-23 2022-11-29 Sap Se Resolving data location for queries in a multi-system instance landscape
US11727022B2 (en) 2021-03-19 2023-08-15 International Business Machines Corporation Generating a global delta in distributed databases
US11704327B2 (en) * 2021-03-19 2023-07-18 International Business Machines Corporation Querying distributed databases
CN113590316A (zh) * 2021-07-23 2021-11-02 中共四川省委组织部 一种基于国产cpu的数据库集群处理方法
CN113609238A (zh) * 2021-07-24 2021-11-05 全图通位置网络有限公司 基于Hadoop平台的地理实体空间数据的处理方法及存储介质
US11645231B1 (en) * 2022-04-24 2023-05-09 Morgan Stanley Services Group Inc. Data indexing for distributed query execution and aggregation
US20230376485A1 (en) * 2022-05-17 2023-11-23 Sap Se Distributed query plan generation
CN115168474B (zh) * 2022-07-26 2023-04-14 成都智元汇信息技术股份有限公司 一种基于大数据模型的物联中台系统搭建方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030074352A1 (en) * 2001-09-27 2003-04-17 Raboczi Simon D. Database query system and method
US20110082859A1 (en) 2009-10-07 2011-04-07 International Business Machines Corporation Information theory based result merging for searching hierarchical entities across heterogeneous data sources

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5987449A (en) 1996-08-23 1999-11-16 At&T Corporation Queries on distributed unstructured databases
JP2001312504A (ja) * 2000-04-25 2001-11-09 Jarg Corp 知識抽出システム及びその方法
JP2002108899A (ja) * 2000-09-27 2002-04-12 Hitachi Kokusai Electric Inc データベースアクセス方法及び多次元データベースアクセスシステム
JP2002108670A (ja) * 2000-09-29 2002-04-12 Hitachi Kokusai Electric Inc データベースアクセス方法及び多次元データベースアクセスシステム
US6922791B2 (en) * 2001-08-09 2005-07-26 Dell Products L.P. Failover system and method for cluster environment
EP1349082A1 (en) 2002-03-28 2003-10-01 LION Bioscience AG Method and apparatus for querying relational databases
US20040103087A1 (en) * 2002-11-25 2004-05-27 Rajat Mukherjee Method and apparatus for combining multiple search workers
WO2005076160A1 (en) 2004-02-06 2005-08-18 Critical Software, Sa Data warehouse distributed system and architecture to support distributed query execution
US7523118B2 (en) * 2006-05-02 2009-04-21 International Business Machines Corporation System and method for optimizing federated and ETL'd databases having multidimensionally constrained data
US7984043B1 (en) * 2007-07-24 2011-07-19 Amazon Technologies, Inc. System and method for distributed query processing using configuration-independent query plans
CN100573524C (zh) * 2007-07-31 2009-12-23 武汉大学 一种高效、透明的分布式空间数据库查询方法
US8468212B2 (en) * 2007-08-08 2013-06-18 Silicon Image, Inc. Network repository for metadata
JP4995750B2 (ja) 2008-02-06 2012-08-08 日本電信電話株式会社 Web検索装置、Web検索方法、プログラムおよび記録媒体
US8213924B2 (en) * 2008-10-06 2012-07-03 Facebook, Inc. Providing distributed online services for mobile devices
US20100115100A1 (en) * 2008-10-30 2010-05-06 Olga Tubman Federated configuration data management
US8392402B2 (en) 2008-12-03 2013-03-05 International Business Machines Corporation Hybrid push/pull execution of continuous SQL queries
US9043319B1 (en) * 2009-12-07 2015-05-26 Google Inc. Generating real-time search results
US8874961B2 (en) * 2010-03-22 2014-10-28 Infosys Limited Method and system for automatic failover of distributed query processing using distributed shared memory
KR101183768B1 (ko) * 2010-08-13 2012-09-17 삼성에스디에스 주식회사 통합 뷰 제공 시스템 및 방법 그리고 이에 적용되는 뷰 생성 기능을 가지는 서버
US8775425B2 (en) * 2010-08-24 2014-07-08 International Business Machines Corporation Systems and methods for massive structured data management over cloud aware distributed file system
US10579634B2 (en) * 2012-08-30 2020-03-03 Citus Data Bilgi Islemleri Ticaret A.S. Apparatus and method for operating a distributed database with foreign tables
US9081826B2 (en) 2013-01-07 2015-07-14 Facebook, Inc. System and method for distributed database query engines
US10185744B2 (en) * 2015-06-23 2019-01-22 Sap Se Caching views on historical data

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030074352A1 (en) * 2001-09-27 2003-04-17 Raboczi Simon D. Database query system and method
US20110082859A1 (en) 2009-10-07 2011-04-07 International Business Machines Corporation Information theory based result merging for searching hierarchical entities across heterogeneous data sources

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Joseph M. Hellerstein 외 2명. Online Aggregation. 1997년

Also Published As

Publication number Publication date
MX349042B (es) 2017-07-07
EP3096250A1 (en) 2016-11-23
CA2896855A1 (en) 2014-07-10
US11347761B1 (en) 2022-05-31
JP6117378B2 (ja) 2017-04-19
US20190121809A1 (en) 2019-04-25
MX2015008799A (es) 2016-04-25
KR20150104585A (ko) 2015-09-15
KR101775433B1 (ko) 2017-09-06
AU2013371448A1 (en) 2015-07-23
US10698913B2 (en) 2020-06-30
AU2013371448B2 (en) 2017-02-16
US20140195558A1 (en) 2014-07-10
US9361344B2 (en) 2016-06-07
WO2014107359A1 (en) 2014-07-10
EP3096250B1 (en) 2019-02-20
EP2752779A2 (en) 2014-07-09
US20150261831A1 (en) 2015-09-17
CN104903894A (zh) 2015-09-09
EP2752779B1 (en) 2016-06-29
US9081826B2 (en) 2015-07-14
CA2896855C (en) 2016-11-01
JP2016509294A (ja) 2016-03-24
US20160188677A1 (en) 2016-06-30
EP2752779A3 (en) 2015-02-18
IL239717A0 (en) 2015-08-31
BR112015016352A2 (pt) 2017-07-11
CN110069526A (zh) 2019-07-30
KR20170103021A (ko) 2017-09-12
CN104903894B (zh) 2018-12-28
IL239717A (en) 2017-04-30
US10210221B2 (en) 2019-02-19

Similar Documents

Publication Publication Date Title
KR102037232B1 (ko) 분산형 데이터베이스 쿼리 엔진을 위한 시스템 및 방법
US11567956B2 (en) Background format optimization for enhanced queries in a distributed computing cluster
US9292575B2 (en) Dynamic data aggregation from a plurality of data sources
US10223431B2 (en) Data stream splitting for low-latency data access
Lim et al. How to Fit when No One Size Fits.
US20150234896A1 (en) Adaptive distribution method for hash operations
US10127283B2 (en) Projecting effect of in-flight streamed data on a relational database
US10885050B2 (en) Altering in-flight streamed data from a relational database
Varga et al. Introducing Microsoft SQL Server 2016: Mission-Critical Applications, Deeper Insights, Hyperscale Cloud
US11500877B2 (en) Streaming tuple database control
Ernstsen Mario. A system for iterative and interactive processing of biological data

Legal Events

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