KR101775433B1 - 분산형 데이터베이스 쿼리 엔진을 위한 시스템 및 방법 - Google Patents
분산형 데이터베이스 쿼리 엔진을 위한 시스템 및 방법 Download PDFInfo
- Publication number
- KR101775433B1 KR101775433B1 KR1020157020768A KR20157020768A KR101775433B1 KR 101775433 B1 KR101775433 B1 KR 101775433B1 KR 1020157020768 A KR1020157020768 A KR 1020157020768A KR 20157020768 A KR20157020768 A KR 20157020768A KR 101775433 B1 KR101775433 B1 KR 101775433B1
- Authority
- KR
- South Korea
- Prior art keywords
- query
- node
- data
- partial
- nodes
- Prior art date
Links
Images
Classifications
-
- G06F17/30545—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24539—Query rewriting; Transformation using cached or materialised query results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
-
- G06F17/30283—
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Fuzzy Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Multi Processors (AREA)
Abstract
본 명세서에 낮은 지연 시간의 데이터베이스 쿼리 처리를 수행할 수 있는 시스템을 위한 기술이 개시된다. 시스템은 게이트웨이 서버와 복수의 작업 노드를 포함한다. 게이트웨이 서버는 복수의 데이터 노드를 가지는 분산형 저장 클러스터에 저장된 데이터를 포함하는 데이터베이스에 대한 데이터베이스 쿼리를 복수의 부분 쿼리로 나누고 복수의 중간 결과에 기반하여 쿼리 결과를 구성하도록 설정된다. 복수의 작업 노드의 각 작업 노드는 각 부분 쿼리와 연관되고 상기 분산형 저장 클러스터의 적어도 하나의 데이터 노드에 저장된 데이터를 스캔함으로써 복수의 부분 쿼리의 각 부분 쿼리를 처리하고 그 작업 노드의 메모리에 저장된 상기 복수의 중간 결과 중 한 중간 결과를 생성하도록 설정된다.
Description
본 출원은 본 명세서에 전체로서 참조로 통합되는 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은 본 명세서에 도시된 임의의 클러스터 노드를 나타내는 컴퓨터 노드의 구조의 예시를 나타내는 상위 계층 블록 다이어그램이다.
도 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 (19)
- 복수의 데이터 노드를 가지는 분산형 저장 클러스터에 저장된 데이터를 포함하는 데이터베이스에 대한 데이터베이스 쿼리로부터 복수의 부분 쿼리를 생성하고, 복수의 중간 결과에 기반하여 쿼리 결과를 구성하도록 설정된 게이트웨이 서버; 및
데이터 노드와는 이격되는 복수의 작업 노드를 포함하며,
상기 복수의 작업 노드의 각 작업 노드는 각 부분 쿼리와 연관되고 분산형 저장 클러스터의 적어도 하나의 데이터 노드에 저장된 데이터를 스캔함으로써 복수의 부분 쿼리의 각 부분 쿼리를 처리하도록 설정되고, 복수의 작업 노드의 각 작업 노드는 그 작업 노드의 메모리에 저장된 복수의 중간 결과 중 한 중간 결과를 생성하도록 더 설정되고,
상기 게이트웨이 서버는 스트래글링(straggling) 작업 노드를 식별하고, 스트래글링 작업 노드에 할당된 부분 쿼리를 복수의 부차 부분 쿼리로 더 나누고, 복수의 부차 부분 쿼리를 복수의 작업 노드의 일부에 할당하도록 더 설정되고, 부분 쿼리는 쿼리의 입력 파일 블록의 양 및 위치 정보에 기반하여 부차 부분 쿼리로 나누어지는 시스템. - 제 1 항에 있어서,
상기 복수의 작업 노드의 각 작업 노드는 분산형 저장 클러스터의 적어도 하나의 데이터 노드에 저장된, 각 부분 쿼리와 연관된 데이터의 부분을 스캔함으로써 복수의 부분 쿼리의 각 부분 쿼리를 처리하고, 그 작업 노드의 메모리에 저장된 근사 중간 결과를 생성하도록 더 설정되는 시스템. - 제 2 항에 있어서,
상기 게이트웨이 서버는 적어도 하나의 근사 중간 결과에 기반하여 근사 쿼리 결과를 구성하도록 더 설정되는 시스템. - 제 1 항에 있어서,
상기 게이트웨이 서버는 복수의 중간 결과의 일부에 기반하여 근사 쿼리 결과를 구성하도록 더 설정되는 시스템. - 제 1 항에 있어서,
상기 스트래글링 작업 노드는 게이트웨이 서버에 진행율을 보고하는데 실패하거나 특정 기간 후에 게이트웨이 서버에 특정 값 미만의 진행율을 보고하는 작업 노드인 시스템. - 제 1 항에 있어서,
상기 복수의 작업 노드의 각 작업 노드는 분산형 저장 클러스터 내에서 각 데이터 노드를 구동하는 서비스인 시스템. - 제 1 항에 있어서,
데이터베이스의 테이블 레벨 메타데이터 및 분산형 저장 클러스터의 파일 레벨 메타데이터를 캐시하도록 설정된 메타데이터 캐시를 더 포함하는 시스템. - 제 7 항에 있어서,
상기 메타데이터 캐시는 데이터베이스 쿼리를 위하여 이전 데이터베이스 쿼리로부터 캐시된 메타데이터를 유지하도록 설정되는 시스템. - 제 1 항에 있어서,
상기 복수의 작업 노드의 각 작업 노드는 그 작업 노드에 의해 처리되는 부분 쿼리의 상태를 보고하기 위하여 하트비트 메시지(heartbeat message)를 주기적으로 게이트웨이 서버에 송신하는 시스템. - 제 1 항에 있어서,
상기 게이트웨이 서버는 근사 쿼리 결과를 반환하기 위하여 또는 데이터베이스 쿼리의 처리를 종료하기 위하여 클라이언트 장치로부터 지시를 수신하도록 더 설정되는 시스템. - 제 1 항에 있어서,
상기 게이트웨이 서버는 작업 노드에 즉시 근사 중간 결과를 반환하도록 지시하고, 근사 중간 결과에 기반하여 근사 쿼리 결과를 클라이언트 장치에 반환하도록 더 설정되는 시스템. - 제 1 항에 있어서,
상기 데이터베이스 쿼리는 근사 쿼리 결과의 요청을 포함하는 시스템. - 제 1 항에 있어서,
상기 쿼리 결과는 데이터 노드에 저장되고 쿼리 결과를 위해 스캔된, 연관된 데이터의 부분의 표시를 동반하는 시스템. - 제 1 항에 있어서,
상기 데이터베이스는 하이브 데이터 웨어하우스(Hive data warehouse) 시스템이고, 상기 분산형 저장 클러스터는 하둡(Hadoop) 클러스터인 시스템. - 게이트웨이 서버에 의하여, 클라이언트 장치로부터, 복수의 클러스터 노드를 가지는 분산형 저장 클러스터에 저장된 데이터를 포함하는 데이터베이스에 대한 데이터베이스 쿼리를 수신하는 단계;
게이트웨이 서버에 의하여, 상기 데이터베이스 쿼리를 복수의 부분 쿼리로 나누는 단계;
게이트웨이 서버에 의하여, 상기 부분 쿼리의 각각을 복수의 작업 노드의 각 작업 노드로 송신하는 단계;
게이트웨이 서버에 의하여, 스트래글링 작업 노드를 식별하고, 스트래글링 작업 노드에 할당된 부분 쿼리를 복수의 부차 부분 쿼리로 나누고, 복수의 부차 부분 쿼리를 복수의 작업 노드의 일부에 할당하는 단계;
게이트웨이 서버에 의하여, 상기 작업 노드로부터 부분 쿼리에 대한 복수의 중간 결과를 검색하는 단계;및
게이트웨이 서버에 의하여, 상기 복수의 중간 결과에 기반하여 쿼리 결과를 생성하는 단계를 포함하고,
각 작업 노드는 분산형 저장 클러스터의 클러스터 노드의 메모리에서 실행되는 서비스이고,
각 중간 결과는 각각의 작업 노드가 실행되는 클러스터 노드에 저장되는, 연관된 데이터를 스캔함으로써 작업 노드의 각각의 작업 노드에 의해 처리되고,
상기 부분 쿼리는 쿼리의 입력 파일 블록의 양 및 위치 정보에 기반하여 부차 부분 쿼리로 나누어지는, 분산형 데이터베이스 시스템에서 데이터베이스 쿼리를 처리하기 위한 방법. - 제 15 항에 있어서,
상기 식별하는 단계는:
게이트웨이 서버에 의하여, 상기 작업 노드가 주기적으로 송신하는 하트비트 메시지를 모니터링함으로써 스트래글링 작업 노드를 식별하는 단계를 포함하며,
상기 스트래글링 작업 노드로부터의 하트비트 메시지가 기결정된 기간 동안 수신되지 않을 때, 또는 스트래글링 작업 노드로부터의 하트비트 메시지가 수신되고 하트비트 메시지가 스트래글링 작업 노드에 의해 처리되는 부분 쿼리의 상태를 나타내는 임계치 미만의 수를 포함할 때, 스트래글링 작업 노드가 식별되는, 분산형 데이터베이스 시스템에서 데이터베이스 쿼리를 처리하기 위한 방법. - 제 15 항에 있어서,
게이트웨이 서버에 의하여, 캐시 내의 데이터베이스를 위하여 이전 데이터베이스 쿼리와 연관된 데이터를 캐시하는 단계;
게이트웨이 서버에 의하여, 이전 데이터베이스 쿼리에 의하여 변화된 캐시에 저장된 캐시된 데이터 내의 항목을 무효화하기 위하여 데이터베이스의 감사 로그의 실시간 공급을 검색하는 단계; 및
게이트웨이 서버에 의하여, 특정 기간에 대하여 쿼리되지 않은 캐시로부터의 캐시된 데이터의 항목을 제거하는 단계를 더 포함하는, 분산형 데이터베이스 시스템에서 데이터베이스 쿼리를 처리하기 위한 방법. - 삭제
- 삭제
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/735,820 | 2013-01-07 | ||
US13/735,820 US9081826B2 (en) | 2013-01-07 | 2013-01-07 | System and method for distributed database query engines |
EP13198563.2A EP2752779B1 (en) | 2013-01-07 | 2013-12-19 | System and method for distributed database query engines |
EP13198563.2 | 2013-12-19 | ||
PCT/US2013/077240 WO2014107359A1 (en) | 2013-01-07 | 2013-12-20 | System and method for distributed database query engines |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020177024191A Division KR102037232B1 (ko) | 2013-01-07 | 2013-12-20 | 분산형 데이터베이스 쿼리 엔진을 위한 시스템 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150104585A KR20150104585A (ko) | 2015-09-15 |
KR101775433B1 true KR101775433B1 (ko) | 2017-09-06 |
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 Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020177024191A KR102037232B1 (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) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10698913B2 (en) | 2013-01-07 | 2020-06-30 | Facebook, Inc. | System and methods for distributed database query engines |
KR102265085B1 (ko) * | 2020-12-04 | 2021-06-14 | 김근석 | 코드 분산 처리 서버, 코드 분산 처리 방법 및 기록 매체에 저장된 프로그램 |
Families Citing this family (195)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9332069B2 (en) | 2012-12-28 | 2016-05-03 | Wandisco, Inc. | Methods, devices and systems for initiating, forming and joining memberships in distributed computing systems |
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 |
US9424272B2 (en) * | 2005-01-12 | 2016-08-23 | Wandisco, Inc. | Distributed file system using consensus nodes |
US9082127B2 (en) | 2010-03-31 | 2015-07-14 | Cloudera, Inc. | Collecting and aggregating datasets for analysis |
US9317572B2 (en) | 2010-03-31 | 2016-04-19 | Cloudera, Inc. | Configuring a system to collect and aggregate datasets |
US8874526B2 (en) | 2010-03-31 | 2014-10-28 | Cloudera, Inc. | Dynamically processing an event using an extensible data model |
US9081888B2 (en) | 2010-03-31 | 2015-07-14 | Cloudera, Inc. | Collecting and aggregating log data with fault tolerance |
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 |
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 |
US9898475B1 (en) | 2013-02-25 | 2018-02-20 | EMC IP Holding Company LLC | Tiering with pluggable storage system for parallel query engines |
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 |
US11386085B2 (en) | 2014-01-27 | 2022-07-12 | Microstrategy Incorporated | Deriving metrics from queries |
US9952894B1 (en) | 2014-01-27 | 2018-04-24 | Microstrategy Incorporated | Parallel query processing |
US10255320B1 (en) | 2014-01-27 | 2019-04-09 | Microstrategy Incorporated | Search integration |
US10095759B1 (en) | 2014-01-27 | 2018-10-09 | Microstrategy Incorporated | Data engine integration and data refinement |
US9715515B2 (en) | 2014-01-31 | 2017-07-25 | Microsoft Technology Licensing, Llc | External data access with split index |
US10325032B2 (en) | 2014-02-19 | 2019-06-18 | Snowflake Inc. | Resource provisioning systems and methods |
CN104520815B (zh) * | 2014-03-17 | 2019-03-01 | 华为技术有限公司 | 一种任务调度的方法及装置 |
ES2881606T3 (es) * | 2014-03-31 | 2021-11-30 | Wandisco Inc | Sistema de ficheros geográficamente distribuido que usa replicación de espacio de nombres coordinada |
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 |
US9082512B1 (en) | 2014-08-07 | 2015-07-14 | Pure Storage, Inc. | Die-level monitoring in a storage cluster |
US9558069B2 (en) | 2014-08-07 | 2017-01-31 | Pure Storage, Inc. | Failure mapping in a storage array |
US9766972B2 (en) * | 2014-08-07 | 2017-09-19 | Pure Storage, Inc. | Masking defective bits in a storage array |
US10983859B2 (en) | 2014-08-07 | 2021-04-20 | Pure Storage, Inc. | Adjustable error correction based on memory health in a storage unit |
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 |
US9672238B2 (en) | 2015-05-14 | 2017-06-06 | Walleye Software, LLC | Dynamic filter processing |
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 | 广东亿迅科技有限公司 | 一种基于分布式采集的日志分析系统及方法 |
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 |
US10455045B2 (en) | 2016-09-06 | 2019-10-22 | Samsung Electronics Co., Ltd. | Automatic data replica manager in distributed caching and data processing systems |
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 |
US10977260B2 (en) | 2016-09-26 | 2021-04-13 | Splunk Inc. | Task distribution in an execution node of a distributed execution environment |
US11615104B2 (en) | 2016-09-26 | 2023-03-28 | Splunk Inc. | Subquery generation based on a data ingest estimate of an external data system |
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 |
US11269939B1 (en) | 2016-09-26 | 2022-03-08 | Splunk Inc. | Iterative message-based data processing including streaming analytics |
US11416528B2 (en) * | 2016-09-26 | 2022-08-16 | Splunk Inc. | Query acceleration data store |
US11663227B2 (en) | 2016-09-26 | 2023-05-30 | Splunk Inc. | Generating a subquery for a distinct data intake and query system |
US11163758B2 (en) | 2016-09-26 | 2021-11-02 | Splunk Inc. | External dataset capability compensation |
US11860940B1 (en) | 2016-09-26 | 2024-01-02 | Splunk Inc. | Identifying buckets for query execution using a catalog of buckets |
US11442935B2 (en) | 2016-09-26 | 2022-09-13 | Splunk Inc. | Determining a record generation estimate of a processing task |
US11550847B1 (en) | 2016-09-26 | 2023-01-10 | Splunk Inc. | Hashing bucket identifiers to identify search nodes for efficient query execution |
US11222066B1 (en) | 2016-09-26 | 2022-01-11 | Splunk Inc. | Processing data using containerized state-free indexing nodes in a containerized scalable environment |
US11586627B2 (en) | 2016-09-26 | 2023-02-21 | Splunk Inc. | Partitioning and reducing records at ingest of a worker node |
US11604795B2 (en) | 2016-09-26 | 2023-03-14 | Splunk Inc. | Distributing partial results from an external data system between worker nodes |
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 |
US11281706B2 (en) | 2016-09-26 | 2022-03-22 | Splunk Inc. | Multi-layer partition allocation for query execution |
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 |
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 |
US11243963B2 (en) | 2016-09-26 | 2022-02-08 | Splunk Inc. | Distributing partial results to worker nodes from an external data system |
US11593377B2 (en) | 2016-09-26 | 2023-02-28 | Splunk Inc. | Assigning processing tasks in a data intake and query system |
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 |
US10353965B2 (en) | 2016-09-26 | 2019-07-16 | Splunk Inc. | Data fabric service system architecture |
US11106734B1 (en) | 2016-09-26 | 2021-08-31 | Splunk Inc. | Query execution using containerized state-free search nodes in a containerized scalable environment |
US10956415B2 (en) | 2016-09-26 | 2021-03-23 | Splunk Inc. | Generating a subquery for an external data system using a configuration file |
US11314753B2 (en) | 2016-09-26 | 2022-04-26 | Splunk Inc. | Execution of a query received from a data intake and query system |
US20180089324A1 (en) | 2016-09-26 | 2018-03-29 | Splunk Inc. | Dynamic resource allocation for real-time search |
US11599541B2 (en) | 2016-09-26 | 2023-03-07 | Splunk Inc. | Determining records generated by a processing task of a query |
US11461334B2 (en) | 2016-09-26 | 2022-10-04 | Splunk Inc. | Data conditioning for dataset destination |
US11874691B1 (en) | 2016-09-26 | 2024-01-16 | Splunk Inc. | Managing efficient query execution including mapping of buckets to search nodes |
US10795884B2 (en) | 2016-09-26 | 2020-10-06 | Splunk Inc. | Dynamic resource allocation for common storage query |
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 |
US11562023B1 (en) | 2016-09-26 | 2023-01-24 | Splunk Inc. | Merging buckets in a data intake and query system |
US12013895B2 (en) | 2016-09-26 | 2024-06-18 | Splunk Inc. | Processing data using containerized nodes in a containerized scalable environment |
US11126632B2 (en) | 2016-09-26 | 2021-09-21 | Splunk Inc. | Subquery generation based on search configuration data from an external data system |
US11294941B1 (en) | 2016-09-26 | 2022-04-05 | Splunk Inc. | Message-based data ingestion to a data intake and query system |
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 |
US11232100B2 (en) * | 2016-09-26 | 2022-01-25 | Splunk Inc. | Resource allocation for multiple datasets |
US11580107B2 (en) | 2016-09-26 | 2023-02-14 | Splunk Inc. | Bucket data distribution for exporting data to worker nodes |
US10726009B2 (en) | 2016-09-26 | 2020-07-28 | Splunk Inc. | Query processing using query-resource usage and node utilization data |
US11023463B2 (en) | 2016-09-26 | 2021-06-01 | Splunk Inc. | Converting and modifying a subquery for an external data 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 |
US11029053B2 (en) | 2017-03-09 | 2021-06-08 | Johnson Controls Technology Company | Building automation system with live memory management |
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 | 北京京东尚科信息技术有限公司 | 一种数据查询方法和装置 |
US11921672B2 (en) | 2017-07-31 | 2024-03-05 | Splunk Inc. | Query execution at a remote heterogeneous data store of a data fabric service |
US11989194B2 (en) | 2017-07-31 | 2024-05-21 | Splunk Inc. | Addressing memory limits for partition tracking among worker nodes |
US12118009B2 (en) | 2017-07-31 | 2024-10-15 | Splunk Inc. | Supporting query languages through distributed execution of query engines |
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 |
WO2019044842A1 (ja) * | 2017-09-04 | 2019-03-07 | Necエナジーデバイス株式会社 | 電池パック、制御装置、制御方法、及びプログラム |
US10552394B2 (en) | 2017-09-07 | 2020-02-04 | International Business Machines Corporation | Data storage with improved efficiency |
US11151137B2 (en) | 2017-09-25 | 2021-10-19 | Splunk Inc. | Multi-partition operation in combination operations |
US10896182B2 (en) | 2017-09-25 | 2021-01-19 | Splunk Inc. | Multi-partitioning determination for 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 |
WO2019171328A1 (en) | 2018-03-07 | 2019-09-12 | Open Text Sa Ulc | Flexible and scalable artificial intelligence and analytics platform with advanced content analytics and data ingestion |
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 | 中兴通讯股份有限公司 | 数据查询处理方法、装置及系统、计算机可读存储介质 |
CN113168147B (zh) * | 2018-12-29 | 2024-07-09 | 阿里巴巴集团控股有限公司 | 使用硬件加速高效地扫描数据库的系统和方法 |
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 | 中国农业科学院农业信息研究所 | 一种农业大数据的处理方法、装置、设备和存储介质 |
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 |
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 |
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 |
US11106509B2 (en) | 2019-11-18 | 2021-08-31 | Bank Of America Corporation | Cluster tuner |
US11429441B2 (en) | 2019-11-18 | 2022-08-30 | Bank Of America Corporation | Workflow simulator |
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数据库的数据查询方法 |
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平台的地理实体空间数据的处理方法及存储介质 |
US12072939B1 (en) | 2021-07-30 | 2024-08-27 | Splunk Inc. | Federated data enrichment objects |
CN113672641A (zh) * | 2021-08-18 | 2021-11-19 | 北京金山云网络技术有限公司 | 数据库集群数据处理方法、装置、系统、介质和电子设备 |
US11645231B1 (en) * | 2022-04-24 | 2023-05-09 | Morgan Stanley Services Group Inc. | Data indexing for distributed query execution and aggregation |
US12093272B1 (en) | 2022-04-29 | 2024-09-17 | Splunk Inc. | Retrieving data identifiers from queue for search of external data system |
US20230376485A1 (en) * | 2022-05-17 | 2023-11-23 | Sap Se | Distributed query plan generation |
CN115168474B (zh) * | 2022-07-26 | 2023-04-14 | 成都智元汇信息技术股份有限公司 | 一种基于大数据模型的物联中台系统搭建方法 |
EP4404077A1 (en) * | 2023-01-19 | 2024-07-24 | MasterCard International Incorporated | Method and system for operating a query processing engine |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6922791B2 (en) | 2001-08-09 | 2005-07-26 | Dell Products L.P. | Failover system and method for cluster environment |
US20060074857A1 (en) | 2002-03-28 | 2006-04-06 | Thure Etzold | Method and apparatus for querying relational databases |
JP2009187268A (ja) | 2008-02-06 | 2009-08-20 | Nippon Telegr & Teleph Corp <Ntt> | Web検索装置、Web検索方法、プログラムおよび記録媒体 |
US20100138405A1 (en) | 2008-12-03 | 2010-06-03 | International Business Machines Corporation | Hybrid Push/Pull Execution of Continuous SQL Queries |
Family Cites Families (21)
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 | データベースアクセス方法及び多次元データベースアクセスシステム |
AUPR796701A0 (en) | 2001-09-27 | 2001-10-25 | Plugged In Communications Pty Ltd | Database query system and method |
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 |
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 |
US8219552B2 (en) | 2009-10-07 | 2012-07-10 | International Business Machines Corporation | Information theory based result merging for searching hierarchical entities across heterogeneous data sources |
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 |
-
2013
- 2013-01-07 US US13/735,820 patent/US9081826B2/en active Active
- 2013-12-19 EP EP16176465.9A patent/EP3096250B1/en active Active
- 2013-12-19 EP EP13198563.2A patent/EP2752779B1/en active Active
- 2013-12-20 CA CA2896855A patent/CA2896855C/en not_active Expired - Fee Related
- 2013-12-20 CN CN201380069759.9A patent/CN104903894B/zh active Active
- 2013-12-20 JP JP2015551711A patent/JP6117378B2/ja active Active
- 2013-12-20 BR BR112015016352A patent/BR112015016352A2/pt active Search and Examination
- 2013-12-20 MX MX2015008799A patent/MX349042B/es active IP Right Grant
- 2013-12-20 KR KR1020177024191A patent/KR102037232B1/ko active IP Right Grant
- 2013-12-20 WO PCT/US2013/077240 patent/WO2014107359A1/en active Application Filing
- 2013-12-20 AU AU2013371448A patent/AU2013371448B2/en not_active Ceased
- 2013-12-20 CN CN201811509796.8A patent/CN110069526A/zh active Pending
- 2013-12-20 KR KR1020157020768A patent/KR101775433B1/ko active IP Right Grant
-
2015
- 2015-06-02 US US14/728,966 patent/US9361344B2/en active Active
- 2015-06-30 IL IL239717A patent/IL239717A/en active IP Right Grant
-
2016
- 2016-03-08 US US15/064,559 patent/US10210221B2/en active Active
-
2018
- 2018-12-19 US US16/226,051 patent/US10698913B2/en active Active
-
2020
- 2020-05-12 US US15/930,008 patent/US11347761B1/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6922791B2 (en) | 2001-08-09 | 2005-07-26 | Dell Products L.P. | Failover system and method for cluster environment |
US20060074857A1 (en) | 2002-03-28 | 2006-04-06 | Thure Etzold | Method and apparatus for querying relational databases |
JP2009187268A (ja) | 2008-02-06 | 2009-08-20 | Nippon Telegr & Teleph Corp <Ntt> | Web検索装置、Web検索方法、プログラムおよび記録媒体 |
US20100138405A1 (en) | 2008-12-03 | 2010-06-03 | International Business Machines Corporation | Hybrid Push/Pull Execution of Continuous SQL Queries |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10698913B2 (en) | 2013-01-07 | 2020-06-30 | Facebook, Inc. | System and methods for distributed database query engines |
US11347761B1 (en) | 2013-01-07 | 2022-05-31 | Meta Platforms, Inc. | System and methods for distributed database query engines |
KR102265085B1 (ko) * | 2020-12-04 | 2021-06-14 | 김근석 | 코드 분산 처리 서버, 코드 분산 처리 방법 및 기록 매체에 저장된 프로그램 |
Also Published As
Publication number | Publication date |
---|---|
US11347761B1 (en) | 2022-05-31 |
JP6117378B2 (ja) | 2017-04-19 |
US20150261831A1 (en) | 2015-09-17 |
US9361344B2 (en) | 2016-06-07 |
US20140195558A1 (en) | 2014-07-10 |
US10698913B2 (en) | 2020-06-30 |
EP2752779A3 (en) | 2015-02-18 |
IL239717A0 (en) | 2015-08-31 |
US10210221B2 (en) | 2019-02-19 |
CN110069526A (zh) | 2019-07-30 |
EP2752779A2 (en) | 2014-07-09 |
MX349042B (es) | 2017-07-07 |
US9081826B2 (en) | 2015-07-14 |
AU2013371448B2 (en) | 2017-02-16 |
CN104903894A (zh) | 2015-09-09 |
WO2014107359A1 (en) | 2014-07-10 |
AU2013371448A1 (en) | 2015-07-23 |
US20160188677A1 (en) | 2016-06-30 |
KR102037232B1 (ko) | 2019-10-28 |
CA2896855A1 (en) | 2014-07-10 |
JP2016509294A (ja) | 2016-03-24 |
MX2015008799A (es) | 2016-04-25 |
EP3096250A1 (en) | 2016-11-23 |
US20190121809A1 (en) | 2019-04-25 |
EP3096250B1 (en) | 2019-02-20 |
KR20150104585A (ko) | 2015-09-15 |
BR112015016352A2 (pt) | 2017-07-11 |
IL239717A (en) | 2017-04-30 |
CA2896855C (en) | 2016-11-01 |
EP2752779B1 (en) | 2016-06-29 |
KR20170103021A (ko) | 2017-09-12 |
CN104903894B (zh) | 2018-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101775433B1 (ko) | 분산형 데이터베이스 쿼리 엔진을 위한 시스템 및 방법 | |
US10936588B2 (en) | Self-described query execution in a massively parallel SQL execution engine | |
US10223431B2 (en) | Data stream splitting for low-latency data access | |
US11055193B2 (en) | Multi-version query retry in a database environment | |
US11971799B2 (en) | Automated query retry using a database platform | |
US11874824B2 (en) | Identifying software regressions based on query retry attempts in a database environment | |
CN114925086A (zh) | 自服务数据平台 | |
Gamage | Improving query processing performance in database management systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |