KR101621137B1 - 아파치 하둡을 위한 로우 레이턴시 쿼리 엔진 - Google Patents
아파치 하둡을 위한 로우 레이턴시 쿼리 엔진 Download PDFInfo
- Publication number
- KR101621137B1 KR101621137B1 KR1020140028136A KR20140028136A KR101621137B1 KR 101621137 B1 KR101621137 B1 KR 101621137B1 KR 1020140028136 A KR1020140028136 A KR 1020140028136A KR 20140028136 A KR20140028136 A KR 20140028136A KR 101621137 B1 KR101621137 B1 KR 101621137B1
- Authority
- KR
- South Korea
- Prior art keywords
- query
- data
- node
- low latency
- engine
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/1824—Distributed file systems implemented using Network-attached Storage [NAS] architecture
-
- 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/24542—Plan optimisation
- G06F16/24544—Join order optimisation
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- 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/24535—Query rewriting; Transformation of sub-queries or views
-
- 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/24542—Plan optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Operations Research (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
아파치 하둡을 위한 로우 레이턴시 쿼리 엔진은 MapReduce의 뱃치-프로세싱을 완성하는 동안에, 실시간 또는 거의 실시간, 애드 혹 쿼리 능력을 제공한다. 일 실시예에서, 로우 레이턴시 쿼리 엔진은 쿼리 요청과 쿼리 실행과 관련된 모든 내부 요청을 핸들링하기 위하여, 하둡 클러스터 내의 데이터 노드 상에 설치된 데몬을 포함한다. 추가 실시예에서, 로우 레이턴시 쿼리 엔진은 네임 서비스와 메타데이터 분산을 제공하기 위한 데몬을 포함한다.로우 레이턴시 쿼리 엔진은 클라이언트를 통하여 쿼리 요청을 수신하고, 그 요청을 플랜 프래그먼트의 콜렉션으로 전환하며, 원격 데몬 상의 플랜 프래그먼트의 최적화되고 병렬적인 실행을 코디네이트하여 기존 뱃치-지향형 프로세싱 프레임워크 보다 훨씬 빠른 속도로 결과를 생성한다.
Description
아파치 하둡(Apache Hadoop) 프로젝트(이하, "하둡")는 상품 기계(commodity machine)의 클러스터에 걸쳐, 라지 데이터 세트의 신뢰할만하고, 스케일 조절이 가능하며 분산된 프로세싱을 위한 오픈-소스된 소프트웨어 프레임워크(framework)이다. 하둡은 HDFS(Hadoop Distributed File System)로 알려진 분산 파일 시스템을 포함한다. HDFS는 로컬 노드 상에서 파일 시스템과 함께 링크되어, 전체 하둡 클러스터를 포괄하는 통합된 파일 시스템을 형성한다. 또한, 하둡은 MapReduce로 알려진 프로그래밍 프레임워크에 의해 사용되는 잡스케쥴링(job scheduling)과 클러스터 리소스 매니지먼트(cluster resource management)를 위한 프레임워크를 제공하는 Hadoop YARN을 포함한다. 또한, 하둡은 아파치 하이브(Apache Hive)(이하, "Hive") 및 Apache HBase(이하, "HBase")를 포함하는 다른 아파치 프로젝트에 의해 보충된다. Hive는 데이터 요약화(data sumarization)와 애드 혹 쿼링(ad hoc querying)을 제공하는 데이터 웨어하우스 인프라스트럭처(data warehouse infrastructure)이다. HBase는 스케일 조절이 가능하며, 분산된 NoSQL(No 구조적 질의어) 데이터베이스 또는 라지 테이블(large table)을 위한 구조화된 데이터 저장을 지지하는 데이터 스토어이다.
MapReduce는 맵핑 또는 워크(work)를 작은 하위-문제(sub-problem)로 디바이딩(dividing) 및 그들에게 클러스터 내의 워커 노드를 할당함에 의하여 데이터를 병렬적으로 프로세스한다. 워커 노드는 하위-문제를 프로세스하고, 결과값을 리턴(되돌)하며, 이는 솔루션 상에서 통과된 출력까지 "감소(reduce)" 시키는 것과 결합된다. MapReduce는 뱃치(batch) 프로세싱 프레임워크이고, 서로 다른 기계에 걸쳐 워크로드(workload)를 분산시킴에 의하여 병렬적으로 많은 양의 데이터를 프로세싱하는데 최적화된다. MapReduce는 고장 허용한계를 포함하는 이점을 제공하나, 하이 레이턴시와 같은 심각한 단점도 있다.
MapReduce에서의 레이턴시는 그것의 뱃치 지향형 맵/리듀스 모델의 결과이다. MapReduce에서, 실행되는 동안, "맵" 단계의 출력은 "리듀스" 단계에 대한 입력으로서의 역할을 하므로, 실행의 "맵" 단계가 완성되기 전에 "리듀스" 단계가 완성될 수 없다. 더구나, 모든 중간 데이터는 리듀서(reducer)로 다운로드되기 전에 디스크에 저장된다. 상기 이유 때문에, MapReduce는 레이턴시가 더해지고, 이에 의해 MapReduce를 통해 시작된 간단한 쿼리(query)가 실행하는데 장시간 소요 될 수 있다.
Hive는 MapReduce의 최상에 놓인 프레임워크이다. Hive는 구조적 질의어(구조화 Query Language, SQL)와 같이 보이는 언어를 MapReduce 코드로 번역하고, 사용자에게 훨씬 편리하도록 하둡 클러스터에 데이터를 액세스한다. 그러나, Hive는 커버아래에서, 실행 엔진과 같은 MapReduce를 여전히 사용하고, MapReduce의 모든 단점을 물려받는다. 이 때문에, 간단한 Hive 쿼리도 실행하기 위해서는 장시간 소요된다.
도 1은 로우 레이턴시 쿼리 엔진이 사용될 수 있는 예시적인 환경을 나타낸 다이어그램을 도시한다.
도 2는 뱃치-지향형 및 실시간, 애드 혹 쿼리를 지지하는 통합된 플랫폼의 예시적인 구성을 나타내는 블록도를 도시한다.
도 3A-3B는 대화형(interactive)이고, 실시간인 구조적 질의어(SQL) 쿼리를 통합된 저장 레이어 상에 직접 제공하기 위하여, 하둡 클러스터 내의 데이터 노드 상에 설치된 로우 레이턴시 쿼리 엔진과 설치 매니저의 예시적인 구성의 블록도를 도시한다.
도 4는 하둡을 위한 로우 레이턴시 쿼리 엔진에 의하여 SQL 쿼리를 프로세싱하는 예시적인 방법을 도시한다.
도 5A-5F는 하둡을 위한 로우 레이턴시 쿼리 엔진을 사용하여, 쿼리 실행을 위한 예시적인 플로우를 도시한다.
도 6은 하둡을 위한 로우 레이턴시 쿼리 엔진에 의한 예시적인 쿼리 플랜(query plan)의 실행을 나타내는 블록도를 도시한다.
도 7은 Hive와 로우 레이턴시 쿼리 엔진을 사용하여, 데이터 세트 상에서 수행되는 쿼리를 위한 예시적인 실행 시간을 나타내는 스크린샷을 도시한다.
도 8은 비지니스 인텔리전스 환경(business intelligence environment)의 실시간, 애드 혹 쿼리에 대한 로우 레이턴스 쿼리 엔진을 나타내는 블록도를 도시한다.
도 9는 기계가 본 원에서 논의된 방법론들을 수행하기 위하여, 한 세트의 인스트럭션이 실행되는 컴퓨터 시스템의 예시적인 형태에서의 기계의 도식적인 표현을 도시한다.
도 2는 뱃치-지향형 및 실시간, 애드 혹 쿼리를 지지하는 통합된 플랫폼의 예시적인 구성을 나타내는 블록도를 도시한다.
도 3A-3B는 대화형(interactive)이고, 실시간인 구조적 질의어(SQL) 쿼리를 통합된 저장 레이어 상에 직접 제공하기 위하여, 하둡 클러스터 내의 데이터 노드 상에 설치된 로우 레이턴시 쿼리 엔진과 설치 매니저의 예시적인 구성의 블록도를 도시한다.
도 4는 하둡을 위한 로우 레이턴시 쿼리 엔진에 의하여 SQL 쿼리를 프로세싱하는 예시적인 방법을 도시한다.
도 5A-5F는 하둡을 위한 로우 레이턴시 쿼리 엔진을 사용하여, 쿼리 실행을 위한 예시적인 플로우를 도시한다.
도 6은 하둡을 위한 로우 레이턴시 쿼리 엔진에 의한 예시적인 쿼리 플랜(query plan)의 실행을 나타내는 블록도를 도시한다.
도 7은 Hive와 로우 레이턴시 쿼리 엔진을 사용하여, 데이터 세트 상에서 수행되는 쿼리를 위한 예시적인 실행 시간을 나타내는 스크린샷을 도시한다.
도 8은 비지니스 인텔리전스 환경(business intelligence environment)의 실시간, 애드 혹 쿼리에 대한 로우 레이턴스 쿼리 엔진을 나타내는 블록도를 도시한다.
도 9는 기계가 본 원에서 논의된 방법론들을 수행하기 위하여, 한 세트의 인스트럭션이 실행되는 컴퓨터 시스템의 예시적인 형태에서의 기계의 도식적인 표현을 도시한다.
다음 설명과 도면은 설명적이고, 제한적으로 해석되어서는 아니된다. 많은 구체적인 상세한 설명을 기술하여 본 발명의 전반적인 이해를 돕는다. 그러나, 어떤 예에서, 주지되거나 공지된 상세한 설명은 발명의 모호함을 피하기 위하여 기술되지 않는다. 본 발명에서 일 실시예에 대한 참조는 동일한 실시예에 대하여 참조할 수 있고(다만, 반드시 그러한 것은 아님), 이러한 참조는 실시예들 중 적어도 하나를 의미한다.
본 명세서에서, "하나의 실시예" 또는 "일 실시예"에 대한 참조는 실시예와 관련하여 기술된 구체적인 특징, 구조 또는 특성이 본 발명의 적어도 하나의 실시예에 포함된다. 본 명세서의 다양한 곳에서 출현되는 "일 실시예에서"라는 어구는 동일한 실시예를 모두 말하는 것이 아니고, 분리되고 또는 다른 실시예와 상호 배타적인 대안적인 실시예를 말하는 것도 아니다. 게다가, 다양한 특징이 기술되고, 이는 일부 실시예에 의해 나타나면서 다른 실시예에서는 나타나지 않을 수 있다. 마찬가지로, 다양한 요구사항이 기술되고, 이는 일부 실시예에 대한 요구사항이면서, 다른 실시예에 대한 요구사항이 아닐 수 있다.
일반적으로, 본 명세서에서 사용되는 용어는 본 발명의 맥락 내, 그리고, 각 용어가 사용되는 특별한 맥락의 기술 분야에서 평범한 의미를 가진다. 본 발명을 기술하는데 사용되는 어떤 용어는 본 발명의 아래 또는 어딘가에서 논의되어서, 본 발명의 설명과 관련 있는 종사자에게 추가적인 안내지침을 제공한다. 편의상, 어떤 용어는 가령, 이탤릭 및/또는 따옴표를 사용하여 강조될 수 있다. 강조의 사용은 용어의 범위나 의미에 영향을 주지 않는다. 즉, 용어의 범위와 의미는 강조되었는지와 상관 없이, 동일한 맥락에서 동일하다. 동일한 것이 하나 이상의 방법으로 언급될 수 있다는 점을 이해할 것이다.
결과적으로, 대안적인 언어와 유의어가 본 명세서에서 논의된 하나 이상의 용어에 대해 사용되는데, 용어가 본 명세서에서 설명되거나 논의되는지 여부와 상관없이, 어떤 특별한 의미가 없다. 어떤 용어에 대한 유의어가 제공된다. 하나 이상의 유의어의 장황한 설명은 다른 유의어의 사용을 제한하지 않는다. 본 명세서의 어딘가에서, 본 명세서에서 논의된 어떤 용어의 예를 포함하는 예의 사용은 단지 설명적이지 본 발명 또는 예시된 용어의 범위와 의미를 추가로 제한하려는 의도는 아니다. 이와 같이, 본 발명은 이 명세서에서 주어진 다양한 실시예에 제한되지 않는다.
본 발명의 범위를 추가로 제한하지 않으면서, 본 발명의 실시예에 따른 기구, 장치, 방법 및 관련 결과가 아래에 주어진다. 제목과 부제목은 읽는 사람의 편의상 예로서 사용될 수 있고, 본 발명의 범위를 제한하지 않는다는 것을 주지해야한다. 다른 정의가 없다면, 본 명세서에서 사용되는 모든 기술적 및 과학적 용어는 본 발명이 속하는 기술분야에서의 당업자에 의해 흔히 이해되는 의미와 동일한 의미를 가진다. 정의를 포함하여 모순되는 경우에, 본 문헌이 관리할 것이다.
본 발명의 실시예는 하둡을 위한 로우 레이턴시(LL) 쿼리 엔진을 포함한다. 또한, 본 발명의 실시예는 하둡에 저장된 데이터에 대하여 실시간 또는 거의 실시간으로 쿼리를 실행하기 위한 시스템 및 방법을 포함한다. 본 발명의 실시예는 하둡에 저장된 어떠한 포맷의 데이터에 대하여 애드 혹 쿼리를 실행하기 위한 시스템 및 방법을 더 포함한다.
개시된 하둡을 위한 로우 레이턴시(LL) 쿼리 엔진은, 빠르고 대화형인 쿼리 결과를 제공하고 친숙한 SQL 쿼리 신택스(syntax)를 사용하는 대안적인 프로세싱 프레임워크를 제공한다. 로우 레이턴시(LL) 쿼리 엔진은 결과를 생성하기 위하여, MapReduce를 사용하지 않고, 대신에 하둡 클러스터 전역에 퍼진 데몬을 통하여 직접 데이터에 쿼리한다.
일 실시예에서, 로우 레이턴시(LL) 쿼리 엔진는 비구조화 및/또는 구조화된 빅데이터의 빠른 쿼리를 위한 메카니즘을 제공한다. 로우 레이턴시(LL) 쿼리 엔진은 쿼리에 응답하여 빠르게 정보를 되돌릴 수 있다(return). 많은 경우에서, 쿼리에 대한 결과, 심지어 많은 양의 데이터도 실시간 또는 거의 실시간으로 되돌릴 수 있다. 잡을 시작하면 데이터를 쿼리하는 MapReduce와 달리, 로우 레이턴시(LL) 쿼리 엔진은 HDFS 및/또는 HBase 테이블에 저장된 데이터에 직접 쿼리를 수행한다. 직접적인 쿼리 능력은 사용자에게, 데이터가 시스템으로 인제스트(ingest)되는 것과 같이, 데이터에 대한 고속 쿼리를 수행할 능력을 제공한다.
일 실시예에서, 로우 레이턴시(LL) 쿼리 엔진의 로우 레이턴시의 이점에 의해, 사용자는 대화형 방식으로 쿼리를 수행할 수 있다. MapReduce와 같은 기존 쿼리 엔진을 사용해서는, 심지어 간단한 쿼리도 10분 정도 소요될 수 있다. 그 결과, 사용자는 결과를 보기 위하여 오래 기다려야 또 다른 쿼리를 시작할 수 있다.
또 다른 실시예에서, 로우 레이턴시(LL) 쿼리 엔진은, 데이터 저장소로부터 프로세싱을 분리하는 스키마-온-리드 모델(schema-on-read model)을 실행한다. 데이터가 HDFS 및 HBase의 밑에 있는 저장 레이어에 저장되는 포맷과 관련 없이, 로우 레이턴시(LL) 쿼리 엔진은 런타임(run time)에서 추출한 관련 스키마를 사용하여 이러한 데이터를 직접 쿼리한다. 리지드 스키마(rigid schema)와 결합되지 않음으로써, 로우 레이턴시(LL) 쿼리 엔진에 의해, 사용자는 이해와 다른 발견으로 이어질 수 있는 애드 혹 탐구 질문할 수 있다.
로우
레이턴시
(
LL
)
쿼리
엔진을 사용하기 위한 예시적 환경
도 1은 로우 레이턴시(LL) 쿼리 엔진이 사용될 수 있는 예시적인 환경(environment, 100)을 나타낸 다이어그램을 도시한다. 환경(100)은 자바 데이터베이스 커넥티비티(JDBC) 클라이언트, 오픈 데이터베이스 커넥티비티(ODBC) 클라이언트와 같은 클라이언트(client, 104)를 기술하고, API 및 하둡 클러스터에 연결 및/또는 액세스하기 위한 다른 툴(tool)을 제공한다. Hue와 같은 SQL 어플리케이션(SQL application, 102)은 사용자에게 하둡을 위한 인터페이스를 제공하여, 쿼리 또는 잡을 실행하고, HDFS를 브라우징하며, 작업 흐름등을 생성한다. 또한, 환경(100)은, 하둡 클러스터를 포함하는 데이터 노드(120a-c)를 실행하는 로우 레이턴시(LL) 쿼리 엔진 데몬으로 쿼리를 발행하기 위한 커맨드 라인 인터페이스(command line interface, 116)를 포함한다. 일 실시예에서, 클라이언트(104), 웹 어플리케이션(web application, 102) 및 커맨드 라인 인터페이스(116)의 각각 또는 함께는 클라이언트로 흔히 언급될 수 있다.
환경(100)은 복수의 데이터 노드(120a-c)를 도시한다. 로우 레이턴시(LL) 쿼리 엔진 데몬은 데이터 노드의 각각에서 실행된다. 로우 레이턴시(LL) 쿼리 엔진 데몬은 쿼리를 코디네이트하고 실행하는 긴 실행 프로세스이다. 로우 레이턴시(LL) 쿼리 엔진 데몬의 각각의 예는 클라이언트(102/104)를 통하여 수신된 쿼리를 수신, 플랜(plan) 및 코디네이트할 수 있다. 예를 들어, 로우 레이턴시(LL) 쿼리 엔진은 쿼리를 프래그먼트(fragment)로 나눌 수 있고, 이는 로우 레이턴시(LL) 쿼리 엔진을 병렬적으로 실행하기 위한 예를 실행시키는 원격 노드 중에 분포된다. 데이터 노드(120a-c)의 일부는 단지 HDFS만 실행할 수 있는 반면, 그 외는 HBase 영역 서버(122a-c)를 실행할 수 있다. 쿼리는 HDFS(가령, 120a-c) 및/또는 HBase(가령, 122a-c) 상에서 직접 실행된다.
환경(100)은 통합된 메타데이터 및 Hive 메타스토어(Hive 메타스토어, 106), YARN(108), HDFS 네임 노드(HDFS name node, 110) 및/또는 상태 스토어(state store, 112)와 같은 스케쥴러 구성을 포함한다. Hive 메타스토어(106)는 로우 레이턴시(LL) 쿼리 엔진에 사용 가능한 데이터에 관한 정보를 포함한다. 구체적으로, Hive 메타스토어는 테이블 정의(table definition), 즉, 물리적 데이터를 노출된 논리 테이블로 맵핑하는 것을 포함한다. YARN(108)은 잡스케쥴링 및 클러스터 리소스 매니지먼트를 수행한다. HDFS 네임 노드(NN)(110)는 데이터 노드에 걸친 파일의 분포의 세부사항을 포함하여 로컬 리드(local read)를 최적화한다. 하나의 실시예에서, 네임 노드(110)는 디스크 용량과 관련된 정보를 포함할 수 있고, 파일은 개개의 노드 상에 위치한다.
상태 스토어(112)는 클러스터 내의 단일 노드 상에서 실행되는 글로벌 시스템 저장소이다. 일 실시예에서, 상태 스토어(112)는 네임 서비스(name service)로서 사용될 수 있다. 시작에서, 모든 로우 레이턴시(LL) 쿼리 엔진 데몬은 상태 스토어로 등록할 수 있고, 멤버십 정보를 얻는다. 멤버십 정보는 클러스터 상에서 실행되는 로우 레이턴시(LL) 쿼리 엔진 데몬에 대한 모든 것을 찾는데 사용될 수 있다. 추가 실시예에서, 상태 스토어(112)는 실행되는 쿼리에 메타데이터를 제공하는데 사용될 수 있다. 상태 스토어(112)는 메타데이터를 잡을 수 있고, 시작에서, 또는 또 다른 시간에, 메타데이터를 로우 레이턴시(LL) 쿼리 엔진 데몬에 분산시킬 수 있다. 상태 스토어가 실패할 때, 시스템의 나머지는 상태 스토어로부터 수신된 마지막 정보에 근거하여 작동을 계속할 수 있다. 추가 실시예에서, 상태 스토어는, 하둡 클러스터의 기능 및/또는 성능을 개선시키는데 사용될 수 있는 로드 정보(load information), 진단 정보(diagnostics information)등과 같은 다른 시스템 정보를 저장 및 분산시킬 수 있다.
도 2는 뱃치-지향형 및 실시간, 애드 혹 쿼리를 지지하는 통합된 플랫폼의 예시적인 구성을 나타내는 블록도를 도시한다. 통합된 하둡 플랫폼(unified Hadoop platform, 212)은 분산 프로세싱과 분산 저장을 지원한다. 통합된 하둡 플랫폼(212)은 사용자 인터페이스(user interface, 214), 저장소(storage, 220) 및 메타 데이터(meta data, 222) 구성을 포함한다. 사용자 인터페이스(214)는 ODBC 드라이버, JDBC 드라이버, Hue Beeswax등과 같은 Hive 인터페이스를 포함한다. 또한, 사용자 인터페이스(214)는 SQL 지원을 포함한다. 사용자 인터페이스(214)를 통하여, 쿼리가 발행될 수 있고, 데이터는 저장소(220) 등으로부터 리드 또는 라이트될 수 있다. 저장소(220)는 HDFS 및/또는 HBase 저장소를 포함한다. HDFS는 다양한 파일 포맷(텍스트 파일, 시퀀스 파일, RC 파일 ,Avro 등)을 지원할 수 있다. 스내피(snappy), 지집(gzip), 디플레이트(deflate), 비집(bzip)등과 같은 다양한 압축 코덱도 지원될 수 있다. 메타데이터(222)는 가령, 테이블, 파티션, 스키마-온-리드, 칼럼, 타입, 테이블/블록 위치등과 같은 정보를 포함할 수 있다. 메타데이터(222)는 기존 Hive 메타스토어에 영향을 줄 수 있으며(leverage), 이는 HBase 테이블의 맵핑을 포함하고, 시작/정지 로(row)내로 맵핑된 로 키 칼럼(row key colum) 상에 입각하며, 단일 칼럼 값 필터 내로 맵핑된 다른 칼럼 상에 입각한다.
기존 하둡 플랫폼은 하둡 데이터의 뱃치 프로세싱(batch processing, 216)을 위해 뱃치 지향형 쿼리 엔진(즉, MapReduce)을 사용한다. MapReduce의 뱃치 프로세싱 능력은 통합된 하둡 플랫폼(212) 내의 실시간 액세스 구성(real-time access component, 218)에 의해 보충된다. 실시간 액세스 구성(218)에 의하여, 실시간, 애드 혹 SQL 쿼리는, 로우-레이턴시를 위해 최적화된 분산 로우 레이턴시(LL) 쿼리 엔진을 통하여 통합된 저장소(220) 상에서 직접 수행될 수 있다. 이에 따라, 실시간 액세스 구성(218)은 빅데이터 상에 쿼리와 분석(analytic)을 지원할 수 있다. 한 편, 기존 쿼리 엔진(가령, MapReduce)은 저장소, 메타데이터 및 쿼리의 강한 결합이라는 특징을 가지게 되고, 이는 이러한 쿼리 엔진이 하둡으로부터 원격으로 데이터를 리드할 필요가 있고, 상기 쿼리 엔진이 강한 결합 때문에 쿼리를 하기 전에 쿼리 엔진의 저장소 포멧으로 그 데이터를 전환할 필요가 있다는 것을 의미한다.
도 3A는 대화형이고, 실시간인 SQL 쿼리를 통합된 저장 레이어 상에 직접 제공하기 위하여, 하둡 클러스터 내의 로우 레이턴시(LL) 쿼리 엔진의 구성을 설치하기 위한 설치 매니저(302)의 예시적 구성의 블록도를 도시한다.
매니저(manager, 302)는 로우 레이턴시(LL) 쿼리 엔진을 자동으로 설치, 구성, 관리 및 모니터링하는 설치 매니저(installation manager)이다. 대안적으로, 로우 레이턴시(LL) 쿼리 엔진은 수동으로 설치될 수 있다. 설치 매니저(302)는 로우 레이턴시(LL) 쿼리 엔진 데몬(304), 상태 스토어 데몬(306) 및 로우 레이턴시(LL) 쿼리 엔진 쉘(308)을 포함하는 세 개의 바이너리(binary)를 설치한다. 상기 기술되는 바와 같이, 로우 레이턴시(LL) 쿼리 엔진 데몬(304)은 HDFS 및/또는 HBase 데이터에 대한 쿼리를 플랜하고 실행하는 서비스 또는 프로세스이다. 로우 레이턴시(LL) 쿼리 엔진 데몬은 클러스터 내의 각 데이터 노드에 설치된다. 상태 스토어 데몬(306)은 클러스터 내의 모든 로우 레이턴시(LL) 쿼리 엔진 데몬 예의 위치 및 상태를 추적하는 네임 서비스(name service)이다. 또한, 상태 스토어 데몬(306)은 일부 실행에서 메타데이터 및/또는 다른 진단 정보를 제공하기 위한 메타데이터 스토어일 수 있다. 로우 레이턴시(LL) 쿼리 엔진 쉘(308)은 로우 레이턴시(LL) 쿼리 엔진 데몬에 대해 쿼리를 발행하기 위한 커맨드 라인 인터페이스이고, 클라이언트 상에 설치된다.
도 3B는 하둡 클러스터 내의 각 데이터 노드에 설치된 로우 레이턴시(LL) 쿼리 엔진 데몬의 예시적인 구성의 블록도를 도시한다. 로우 레이턴시(LL) 쿼리 엔진 데몬(304)은, 도시된 바와 같이 각 데이터 노드(314)에 설치된다. 일 실시예에서, 로우 레이턴시(LL) 쿼리 엔진 데몬(304)은 쿼리 플래너(query planner, 316), 쿼리 코디네이터(query coordinator, 318) 및 쿼리 실행 엔진(query execution engine, 320)을 포함한다. 쿼리 플래너(314)는 클라이언트로부터의 요구를 플랜 프래그먼트의 콜렉션(collection)으로 전환하고, 플랜된 프래그먼트를 쿼리 코디네이터(318)로 제공한다. 쿼리 플래너(314)는 로우 레이턴시(LL) 쿼리 엔진의 프런트 엔드를 구성할 수 있고, 자바 또는 다른 적합한 언어로 라이트되어 메타 스토어/상태 스토어, API등과 같은 하둡 환경의 나머지와 상호작용을 촉진시킬 수 있다. 쿼리 플래너(314)는 Scan, HashJoin, HashAggregation, Union, TopN, Exchange 등과 같은 다양한 연산자를 사용하여, 쿼리 플랜을 구성할 수 있다. 각각의 연산자는 어떤 방법으로 데이터를 구체화 혹은 생성 또는 데이터를 결합할 수 있다. 일 실시예에서, 가령, 쿼리 플래너는 레프티(lefty) 플랜 또는 하나 이상의 연산자의 트리를 (가령, 수동으로 혹은 옵티마이저를 사용하여) 생성할 수 있다. 스캔 연산자에 의해, 플랜은 스캔 라인 또는 바운더리를 따라 부서질 수 있다.특수화된 스캔 노드는 다른 모든 저장소 매니저에 대해 존재할 수 있다. 그래서, 가령, HDFS 스캔 노드와 HBase 스캔 노드가 있는데, 이는 서로 다른 파일 포맷에 대한 서로 다른 프로세스를 내부적으로 사용할 수 있다. 일부 플랜은 해시 집합체(hash aggregation)를 위해 데이터를 결합하고, 이는 해시 테이블을 채워서, 집합 결과(aggregate result)를 출력할 수 있다. 유니온 연산자(union operator)는 서로 다른 플랜 프래그먼트로부터 출력을 합칠 수 있다. TopN 연산자는 제한적으로 오더의 등가(equivalent of order)일 수 있다. 교환 연산자는 두 개의 서로 다른 노드에서 실행되는 두 개의 플랜 프래그먼트 사이에 데이터 교환을 관리할 수 있다.
쿼리 코디네이터(318)는 쿼리와 관련된 로우 레이턴시(LL) 쿼리 엔진 데몬의 전체에 걸쳐 플랜된 프래그먼트의 실행을 개시한다. 쿼리 코디네이터(318)는 상태 스토어로부터의 멤버십 정보 및/또는 쿼리 플랜 프래그먼트를 실행하기 위한 데이터 노드 상의 로우 레이턴시(LL) 쿼리 엔진 데몬을 결정 또는 식별하기 위하여 네임 노드로부터의 데이터 블록에 대한 위치 정보를 사용한다. 일 실시예에서, 쿼리 코디네이터(318)는 쿼리로부터의 임의의 술어(predicate)을 적용하여, 파일과 블록 세트로 줄어들 수 있고, 플랜 프래그먼트는 충돌되어야 한다. 또한, 쿼리 코디네이터(318)는 최종 집합체 또는 원격 노드에서 로우 레이턴시(LL) 쿼리 엔진 데몬으로부터 데이터를 합치는 것을 수행할 수 있다. 일 실시예에서, 로우 레이턴시(LL) 쿼리 엔진 데몬은 데이터의 일부를 사전-집합시켜서, 집합체가 노드에 걸쳐 분산되어서, 쿼리의 속도를 높일 수 있다.
쿼리 실행 엔진(320)은 HDFS 및 HBase 상에 부분적으로 플랜된 쿼리 프래그먼트를 실행한다. 예를 들어, 쿼리 실행 엔진(320)은 스캔 및/또는 임의의 다른 쿼리 연산자를 개시한다. 쿼리 실행 엔진(320)은 C++ 으로 라이트 될 수 있고, 자바와 같이 임의의 다fms 적절한 언어로 라이트될 수 있다. 쿼리 실행 엔진은 MapReduce와 별개의 실행 엔진이다. 쿼리 실행 엔진이 데이터를 제공하는 인프라스트럭처를 사용하는 반면(HDFS 및 HBase), 쿼리 실행 엔진은 잡 트랙커 또는 태스크 트랙커와 같은 맵 리덕션을 실행하는 인프라스트럭쳐를 사용하지 않는다.
일 실시예에서, 쿼리 실행 엔진(320)은, 인터프레티브(interpretive) 코드에서 중앙 처리 장치(CPU)에 의해 효율적으로 실행될 수 있는 포맷으로 변환시키기 위하여, 런-타임 코드 생성에 대한 구성(322), 저수준 가상 기계(low level virtual machine, LLVM), 옵티마이저 또는 다른 컴파일러 인프라스트럭처를 포함할 수 있다. 가령, 전형적인 상관적인(relational) 데이터베이스는 표현을 평가하기 위한 인터프레티브 코드를 가져서 색인(indice)등으로부터 데이터를 추출한다. 쿼리 실행 엔진은, 코드를 하드웨어와 좀 더 강하게 결합시키기 위하여, 저수준 가상 기계(LLVM)를 사용하여 이 문제를 해결한다. 예를 들어, 쿼리에서, A는 A+B 분의 B와 같고, 이는 C와 같다는 표현은 세 개의 함수 호출(function call)을 만듬으로써 평가될 수 있다. 세 개의 함수 호출을 만드는 것 대신에, 표현을 평가하고 속도 이득을 얻기 위하여, LLVM은 CPU가 제공하는 작업을 사용한다.
추가 실시예에서, 로우 레이턴시(LL) 쿼리 엔진은 또한, 텍스트 프로세싱 및/또는 다른 리소스 인텐시브 프로세스를 수행하기 위하여 특별한 CPU 명령어를 사용할 수 있다. 또 다른 예에 의하여, 해시값 계산(hash value computation)은 특별한 순환 중복 검사(Cyclic Redundancy Check, CRC32) 명령어를 사용하여 수행되어, 속도 이득을 얻을 수 있다.
예시적인
쿼리
프로세싱
도 4는 하둡을 위한 로우 레이턴시(LL) 쿼리 엔진에 의하여 SQL 쿼리를 프로세싱하는 예시적인 방법을 도시한다. 상기 기술되는 바와 같이, 로우 레이턴시(LL) 쿼리 엔진의 예는 하둡 클러스터 내에 데이터(HDFS 및 HBase)를 가지는 각 노드에서 실행된다. 사용자는 클라이언트(가령, ODBC 클라이언트/Hue/커맨드 라인 툴)를 통하여 쿼리를 임의의 로우 레이턴시(LL) 쿼리 엔진 데몬으로 제출한다. 클라이언트(가령, ODBC 클라이언트)를 통하여, 사용자는 데이터 노드 상의 특정한 로우 레이턴시(LL) 쿼리 엔진 데몬에 직접연결함에 의하여, 임의의 로우 레이턴시(LL) 쿼리 엔진 데몬을 타겟팅할 수 있다. 대안적으로, 라운드 로빈 전략(round robin strategy)이 클러스터 내의 모든 원격 데몬에 걸친 로드를 퍼지게 하는데 사용될 수 있다.
일 실시예에서, 블록(block, 402)에서, 로우 레이턴시(LL) 쿼리 엔진 데몬의 면을 마주하는 사용자(즉, 쿼리 플래너)는 사용자로부터 쿼리 요청을 수신 또는 수용한다. 쿼리 플래너는 플록(406)에서 요청을 플랜 프래그먼트의 콜렉션으로 전환시키고, 쿼리 플랜 프래그먼트를 동일한 노드에서의 쿼리 코디네이터로 밀친다. 쿼리 코디네이터는 다른 모든 로우 레이턴시(LL) 쿼리 엔진 데몬 또는 쿼리와 관련된 원격 데몬에 걸친 실행의 전체 플랜을 코디네이트하는 단일의 예로서 역할을 한다. 일 실시예에서, 실행의 전체 플랜을 코디네이트하기 위하여, 쿼리 코디네이터는 상태 스토어로부터 멤버십 정보 및 블록(408)에서, 네임 노드(HDFS 쿼리를 위하여)로 부터 위치 정보를 수신 또는 얻는다. 멤버십 정보 및 블록 위치 정보를 사용하여, 쿼리 코디네이터는 클러스터 내의 어떤 데몬 도는 노드가 실행을 위하여 쿼리 플랜 프래그먼트를 수신해야하는 지 결정한다. 블록(410)에서, 쿼리 코디네이터는 각 노드로의 데이터 로컬에 대한 플랜 프래그먼트의 실행 개시를 위하여, 관련 데이터를 가진 노드로 쿼리 플랜 프래그먼트를 분산시킨다.
실행 동안에, 모든 노드는 스트리밍 방식으로 서로 효력을 발휘할 수 있다. 일 실시예에서, 만일 쿼리가 결정 블록(decision block, 412)에서 결정된 집합체 또는 블록킹 연산자와 관련되지 않는다면, 쿼리 실행자(executor)(즉, 쿼리 플랜 프래그먼트를 수신하는 노드의 쿼리 실행 엔진)로부터 스트리밍되는 결과는 블록(414)에서 쿼리 코디네이터에 의해 수신된다. 그리고 나서, 결과는 블록(416)에서 클라이언트를 통하여 사용자로 다시 스트리밍된다.
대안적으로, 만일 결정 블록(412)에서 결정된 것 처럼, 블로킹 또는 집합자(aggregator) 연산자는 쿼리내에 존재한다면, 중간 결과는 쿼리 실행자들 사이에 스트립되고, 블록(418)의 하나 이상의 노드에서 사전-집합체된다. 블록(420)에서, 쿼리 코디네이터는 집합체 또는 사전-집합된 결과의 합산을 수행하여, 최종 결과를 결정하고, 이는 블록(416)에서 클라이언트를 통하여 사용자에게로 보내진다.
도 5A-5F는 하둡을 위한 로우 레이턴시(LL) 쿼리 엔진을 사용하여 쿼리 실행을 위한 예시적인 흐름도를 도시한다.
도 5A를 참조하면, 로우 레이턴시(LL) 쿼리 엔진를 작동시키기 위한 하둡 환경(Hadoop environment, 500)은 공통 Hive SQL 및 SQL 어플리케이션(502)을 포함하는 인터페이스와 ODBC 클라이언트, JDBC 클라이언트등과 같은 클라이언트(504)를 포함한다. 또한, 환경은 통합된 메타 데이터와 Hive 메타 스토어(506), YARN(508), HDFS 네임 노드(510) 및/또는 상태 스토어(512)와 같은 스케쥴러 개체를 포함한다. 이 예에서 기술되는 바와 같이, 하둡 환경은 세 개의 HDFS 데이터 노드(520a-c)의 클러스터를 포함하고, 이들 각각은 탑(top)에서 실행되는 로우 레이턴시(LL) 쿼리 엔진 데몬(526a-c)의 예를 가진다. 클라이언트는 로우 레이턴시(LL) 쿼리 엔진 데몬(가령, 526b)의 한 예시만 연결된다. 로우 레이턴시(LL) 쿼리 엔진 데몬은 하나 이상의 통합된 메타 데이터와 스케쥴러 개체와 연결 또는 통신된다. 더구나, 도시된 바와 같이, 로우 레이턴시(LL) 쿼리 엔진 데몬은 분산 및 완전히 대량 병렬 처리(massively parallel processing, MPP)를 위하여 서로 연결된다. 데이터 노드(520a-c) 상의 로우 레이턴시(LL) 쿼리 엔진 데몬(526a-c) 및 상태 스토어(512)는 하둡에서 실시간, 애드 혹 쿼리 능력을 제공하는 로우 레이턴시(LL) 쿼리 엔진의 구성이라는 것을 주지해야 한다. 로우 레이턴시(LL) 쿼리 엔진은 기존의 공통 Hive SQL(502) 및 인터페이스(504), Hive 메타스토어(506), YARN(508), HDFS 네임 노드(510) 및 HDFS 데이터 노드(520a-c)와 HBase 영역 서버(522a-c)를 포함하는 통합된 저장 레이어에 영향을 미친다.
도 5B를 참조하면, SQL 어플리케이션(502)을 사용하여, 사용자는 클라이언트(504)를 통하여 SQL 쿼리 요청(524)을 제출한다. SQL 쿼리 요청은 임의의 노드(526a-c)로 갈 수 있다. 일 실시예에서, SQL 쿼리 요청이 보내지는 노드는 클라이언트/어플리케이션을 통하여 구체화될 수 있다. 대안적으로, 노드는 라운드 로빈 또는 로드 밸런싱을 위한 다른 스케쥴링 방법에 근거하여 선택될 수 있다. HDFS 데이터 노드(520b) 상의 로우 레이턴시(LL) 쿼리 엔진 데몬(526b)의 예는 SQL 쿼리 요청(524)의 수신자로서 기술된다. SQL 쿼리 요청(524)은 로우 레이턴시(LL) 쿼리 엔진 데몬(526b)의 쿼리 플래너(514b)와 상호작용한다.
도 5C를 참조하면, 쿼리 플래너(514b) 및/또는 쿼리 요청(524)를 수신하는 쿼리 코디네이터(515b)는 하나 이상의 통합된 메타 데이터 및 스케쥴러 개체와 통신하여 정보를 얻어서, 쿼리 요청 및/또는 쿼리 요청의 실행을 코디네이트하기 위한 플랜을 생성한다. 예를 들어, 쿼리 플래너 및/또는 코디네이터는 어떤 데이터 노드가 가능한지, 그리고 쿼리와 관련된 데이터 블록의 위치를 결정할 수 있다. HDFS에서, 데이터 블록의 레플리카(replica)는 다양한 데이터 노드에 저장된다. 쿼리 플래너 및/또는 코디네이터는 네임 노드(510)와 통신하여 각 데이터 블록에 대한 각각의 레플리카가 어디에 저장되는지 결정할 수 있고, 쿼리를 실행하기 위하여 레플리카 중 하나를 선택할 수 있다. 라운드 로빈 또는 다른 방법이 데이터 블록의 레플리카 그룹 중에서 레플리카를 선택하는데 사용될 수 있다. 쿼리 플래너(514b)는 쿼리 요청을 분석하여, 클러스터 내의 로우 레이턴시(LL) 쿼리 엔진 데몬에 걸쳐 분산될 수 있는 태스크(task)를 결정할 수 있다.
도 5D를 참조하면, 쿼리 코디네이터(516b)는 쿼리 플래너(514b)로부터의 태스크 또는 플랜 프래그먼트를 쿼리 요청과 간련된 데이터를 유지하는 각 노드의 쿼리 실행 엔진(518a-c)으로 밀쳐낸다. 모든 세 개의 쿼리 실행 엔진은 병렬적이고 분산방식으로 실행된다. 도 5E를 참조하면, 쿼리 실행 엔진(518a-c)은 관련 데이터를 유지하는 노드상의 플랜 프래그먼트를 부분적으로 실행한다. 예를 들어, 쿼리 실행 엔진(518c)은 HDFS 데이터 노드(520c)에 저장된 HDFS 데이터의 로컬 직접 리드부를 수행한다. 마찬가지로, 쿼리 실행 엔진(518a 및 518b)은 HDFS 데이터 노드(520a) 및 HBase(522b)에 각각 저장된 데이터의 로컬 직접 리드부를 수행한다. 또한, 쿼리 실행 엔진(518a-c)은 플랜 프래그먼트에 구체화된 다른 쿼리 연산자를 개시할 수 있다.
도 5F를 참조하면, 쿼리 실행 엔진(518a-c)로부터의 결과는 메모리 전달을 통하여 쿼리 코디네이터(516b)로 전달된다. 만일 쿼리가 블록 작업(가령, TopN, 집합체)과 관련된다면, 중간 결과는 사전-집합체를 위하여 RT 쿼리 엔진 데몬들 사이에서 스트리밍되고, 최종 결과는 쿼리 코디네이터(516b)에서 집합된다. 메모리 내의 쿼리 결과 또는 중간 결과를 유지하는 것은 전달이 디스크의 속도에 의한 것이 아니므로 성능 개선을 제공한다. 그리고 나서, 쿼리 요청(524)에 대한 최종 결과(528)는 클라이언트(504) 및 SQL 어플리케이션(502)을 통하여 사용자에게 되돌려진다.
도 6은 하둡을 위한 로우 레이턴시(LL) 쿼리 엔진에 의한 예시적인 쿼리 플랜(query plan)의 실행을 나타내는 블록도를 도시한다.
쿼리 플랜(602)은 아래 제공된 예시적인 쿼리에 해당된다.
쿼리 플랜(602)은 HDFS 스캔과 HBase 스캔을 포함하고, 두 스캔으로부터의 데이터의 결합과 그룹핑(TopN) 작업과의 집합체를 계산한다. 쿼리 플랜(602)은 스캔 라인을 따라 부서져서, 개개의 플랜 프래그먼트를 형성한다. 예를 들어, 하나의 플랜 프래그먼트는 HBase 데이터 스캔을 포함할 수 있고, 또 다른 플랜 프래그먼트는 HDFS 데이터 스캔을 포함할 수 있다. HBsase 스캔은, 블록(608)에 도시된 바와 같이, 쿼리와 관련 있는 HBase 데이터를 유지하는 영역 서버에서 부분적으로 실행된다. 또한, HDFS 스캔은 블록(606)에 도시된 바와 같이, 관련 HDFS 데이터를 유지하는 데이터 노드 상에 부분적으로 실행된다.
일 실시예에서, 실제 데이터를 생성하는 스캐너에 인접한 조인 작업을 실행하기에 좀 더 최적화 될 수 있다. 블록(606)에 도시된 바와 같이, 데이터 노드는 HBase 스캔으로부터 데이터 방송을 수신하는 교환 노드 또는 연산자를가진다. 데이터 노드에서, 해시 조인 작업은 메모리 내에서, 해시 테이블을 형성하고, 조인 작업 이후에 사전-집합체 작업을 수행한다. 그리고 나서, 사전-집합체 작업의 출력은 최종 플랜 프래그먼트(604)로 보내진다. 최종 플랜 프래그먼트는 단지 하나의 예이고, 쿼리를 핸들링하는 쿼리 코디네이터 상에서 실행된다. 코디네이터에서, 교환 노드는 사전-집합체로부터 데이터를 수신하고, 또 다른 해시 테이블에서 집합체 작업을 수행한다. 그리고 나서, 집합체 작업의 출력은 클라이언트에 제공되는 최종 결과를 생성하는 TopN 작업을 통하여 실행된다. 도시된 바와 같이, HDFS 스캔과 HBase 스캔은 병렬적으로 발생할 수 있다. 마찬가지로, 조인 작업과 집합체 작업도 관련 데이터를 유지하는 데이터 노드에서 병렬적으로 발생할 수 있다. 중간 데이터의 메모리내 전달과 함께 병렬 실행은 쿼리에 응답하는 로우 레이턴시를 야기할 수 있다.
도 5E-F에 도시된 RT 쿼리 엔진이 도 6의 쿼리를 처리하는 것을 고려한다. 도 5E를 참조하면, 쿼리 실행 엔진(518a, 518c)은 HDFS 데이터 노드(520a, 520c) 상의 HDFS 데이터를 각각 스캔한다. 쿼리 엔진(518b)은 HBase 데이터(522b)를 스캔한다. 도 5F를 참조하면, HBase 스캔을 수행하는 쿼리 실행 엔진(518b)은 스캔으로부터, 도시된 바와 같이, HDFS 스캔을 수행하는 두 개의 실행 엔진(518a, 518c)으로 데이터를 방송한다. 쿼리 실행 엔진(518a, 518c)의 각각은 결국에, 조인 작업을 수행하고, 사전-집합체 결과를 초기 쿼리 코디네이터(516b)로 전송한다. 그리고 나서, 초기 쿼리 코디네이터는 결과를 집합하고, TopN 작업을 수행하여 클라이언트(504)에게 제공되는 SQL 결과(528)와 같은 최종 결과를 얻는다. 실시예에서, 어떠한 집합이 필요없는 곳에서는, 쿼리 실행 엔진으로부터 쿼리 코디네이터로 스트림된 데이터가 매우 빠르고 효율적인 방식으로 클라이언트로 스트리밍될 수 있다.
도 7은 Hive와 로우 레이턴시(LL) 쿼리 엔진을 사용하여, 데이터 세트 상에서 수행되는 쿼리를 위한 예시적인 실행 시간을 나타내는 스크린샷을 도시한다. 쿼리는 예시적인 데이터 세트를 가진 가상 기계상에서 수행되어서, Hive/MapReduce 및 로우 레이턴시(LL) 쿼리 엔진을 사용하여, 테이블 내의 엔트리의 수를 결정한다. Hive에서 실행되는 쿼리는 하나 이상의 MapReduce 잡을 실행하여 결과를 탐색하기 때문에, Hive는 하나의 COUNT 쿼리를 실행하는데 거의 40초가 소요된다. 40초 정도는 실제로 MapReduce 잡을 시작하거나 부서지는데(tear down) 사용된다. 동일한 COUNT 쿼리가 로우 레이턴시(LL) 쿼리 엔진을 사용하여, 동일한 데이터 세트 상에서 실행되는 경우에, 실행 시간은 도시된 바와 같이 약 0.5초까지 현저하게 줄어든다. 쿼리 실행 시간에서의 현저한 감소는 로우 레이턴시(LL) 쿼리 엔진의 이점을 나타내며, 이는 하둡 클러스터로 실시간 상호작용을 제공하여, 쿼리간의 긴 시간을 기다릴 필요 없이 분석적으로, 업무적인 다른 쿼리를 수행할 수 있다는 것을 나타낸다.
데이터 관리
일 실시예에서, 로우 레이턴시(LL) 쿼리 엔진은 사용자가 데이터의 많은 양을 쿼리할 수 있게 하고, Hive 및 MapReduce의 기존 뱃치 프로세싱 프레임워크를 사용하여 가능한 것보다 훨씬 빠른 속도에서 답을 얻을 수 있게 하는 로우 레이턴시의 이점을 제공한다. 추가 실시예에서, RT 쿼리 엔진은 데이터의 많은 양에서, 가려진 인사이트(insight)를 검색하는데 사용될 수 있는 스키마를 정의하는데 있어 유연함을 제공한다.
관련 데이터베이스 관리 시스템(RDBMS)에서, 스키마는 첫 번째로 정의된다(즉, 스키마-온-라이트 모델(schema-on-write model)). 입력 데이터의 포맷은, 입력 데이터를 저장하기 전에, 데이터베이스의 소유 포맷으로 전환된다. 스키마-온-라이트 모델은 알려진 질문에 대답하는 것에 대한 작업을 잘한다. 이전에 알려지지 않은 질문이 답변되어야 할 필요가 있다면, 새로운 데이터는 캡쳐될 필요가 있을 것이다. 그러나, 리지드 스키마로, 데이터베이스 시스템이 (스키마와 매칭되지 않은) 새로운 데이터를 받는 것을 시작할 수 없다. 새로운 데이터에 맞추기 위하여, 스키마는 수정되거나 보정되어야 한다. 스키마를 수정하거나 업그레이드하여 새로운 데이터를 캡쳐하기 위하여, 데이터 아키텍트가 데이터베이스 시스템과 연결된 모든 시스템을 변화시킬 필요가 있는데, 가령, 새로운 데이터를 정확하게 분석하고 로딩하는 것, 새로운 데이터를 판독 또는 인식하는 것 등이다. 스키마를 업그레이드하고, 데이터베이스 시스템과 강하게 결합된 모든 시스템을 함께 작동하도록 보장하는 이 프로세스는 장시간 소요될 수 있다. 그 때까지, 새로운 데이터는 질문에 대하여 대답하는 것을 캡쳐할 수 없다.
로우 레이턴시(LL) 쿼리 엔진은 데이터의 프로세싱을 데이터의 저장으로부터 분리한다. 예를 들어, 하둡 내에 밑에 있는 저장소 시스템은 원래 고유의 포맷(가령, 탭-단락된(tab-delimited) 텍스트 파일, CSV, XML, JSON, 이미지등)으로 파일을 받을 수 있다. 로우 레이턴시(LL) 쿼리 엔진은 스키마-온-리드 모델을 사용하여 임의의 포맷으로 저장된 데이터를 즉흥적으로 메모리 포맷(가령, Tuple 포맷) 내에 경제적으로 변환한다. 예를 들어, 로우 레이턴시(LL) 쿼리 엔진이 텍스트 데이터와 상호작용 할 때, 로우 레이턴시(LL) 쿼리 엔진은 텍스트 데이터를 한 번 판독하고, 변환을 수행할 수 있으며, 모든 프로세싱이 완성될 때까지, 변환으로부터의 데이터는 메모리 포맷에서 경제적으로 핸들링 될 수 있다.
로우 레이턴시(LL) 쿼리 엔진은 Hive 메타스토어와 밑에 있는 통합된 저장소(HDFS 및 HBase)와 같은 기존의 하둡 구성에 영향을 미친다. 데이터(로우 레이턴시(LL) 쿼리 엔진이 상기 데이터에 대해 쿼리함)는 MapReduce에 대하여 동시에 사용 가능하다. 예를 들어, 쿼리가 실행될 때, 로우 레이턴시(LL) 쿼리 엔진은 (임의의 포맷의) 파일을 분석하고, 런타임에서 메타 스토어로부터 관련 스키마를 추출한다. 다른 데이터베이스 시스템에서, 데이터의 포맷과 사용자가 데이터(즉, 메타 스토어 내의 스키마)와 어떻게 데이터와 상호작용하는지의 정의는 강하게 결합되기 때문에, 이것은 불가능하다. 이에 따라, 오라클 데이터베이스 내에 저장된 데이터베이스 파일은 다른 프레임이 아닌 오라클에 의해 리드(read)될 수 있다.
도 8은 비지니스 인텔리전스 환경(business intelligence environment)의 실시간, 애드 혹 쿼리에 대한 로우 레이턴스 쿼리 엔진을 나타내는 블록도를 도시한다. 도시된 바와 같이, 하둡(804)은 그 원래의 포맷으로 근원 데이터(original data, 806)를 저장한다. 리지드 스키마 내로 맞춰지는 데이터가 수집되는 종래의 관련 데이터베이스와 달리, 근원 데이터(810)는 임의의 리지드 스키마를 고수하지 않고, 사실상, 프로세싱 면으로부터 분리된다. 하둡 내의 데이터 노드 상에서 실행되는 로우 레이턴시(LL) 쿼리 엔진(806)은 클라이언트(가령, ODBC/JDBC 드라이버)를 통하여, 비지니스 인텔리전스(BI) 툴(816)과 같은 어플리케이션으로부터 쿼리(808)를 받는다.
쿼리(808)는 정의되고, 적응되고 및/또는 재-적응될 수 있는 유연한 스키마-온-리드 모델을 사용하여 이루어져서, 리지드 스키마로는 불가능하였던, 데이터(810)로부터 새로운 값을 추출할 수 있다. 로우 레이턴시(LL) 쿼리 엔진 (806)가 한 번, 관련 데이터를 리드 및 분석하고, 변형을 수행하여, 쿼리(808)에 빠른 응답을 제공하기 위하여, 메모리 형식에 최적화된 변형된 데이터(812)를 저장한다.
도 9는 기계가 본 원에서 논의된 방법론들을 수행하기 위하여, 한 세트의 인스트럭션이 실행되는 컴퓨터 시스템의 예시적인 형태에서의 기계의 도식적인 표현을 도시한다.
도 9의 예에서, 컴퓨터 시스템(computer system, 900)은 프로세서, 메모리, 비휘발성 메모리 및 인터페이스 장치를 포함한다. 다양한 공통 구성(가령, 캐시 메모리)은 설명적 간결성을 위하여 생략된다. 컴퓨터 시스템(900)은 하드웨어 장치를 설명하려는 의도이고, 여기서, 도 1의 예에서 도시된 임의의 구성(및 이 명세서에 기술된 다른 구성)이 실행될 수 있다. 컴퓨터 시스템(900)은 적용될 수 있는 공지되거나 종래의 타입일 수 있다. 컴퓨터 시스템(900)의 구성은 버스 또는 어떤 다른 공지되거나 종래의 장치를 통하여 함께 결합 될 수 있다.
예를 들어, 프로세서는 인텔 펜티엄 마이크로프로세서 또는 모토롤라 파워 PC 마이크로프로세서와 같은 종래의 마이크로프로세서일 수 있다. 관련 분야에서의 당업자는 용어 "기계-리드가능한 (저장) 매개체" 또는 "컴퓨터-리드 가능한 (저장) 매개체"가 프로세서에 의해 액세스 가능한 임의의 타입의 장치를 포함한다는 것을 인식할 것이다.
메모리는 가령, 버스에 의해 프로세서에 연결된다. 메모리는, 제한되지 않지만, 예시적으로, 다이내믹 RAM(DRAM) 및 스태틱 RAM(SRAM)과 같은 랜덤 액세스 메모리(RAM)를 포함할 수 있다. 메모리는 로컬, 원격 또는 분산될 수 있다.
또한, 버스는 프로세서를 비휘발성 메모리와 드라이브 유닛에 연결시킨다. 비활성 메모리는 종종 자기 플로피 디스크 또는 하드 디스크, 자기 광학 디스트, 광학 디스크, CD-ROM, EPROM 또는 EEPROM과 같은 리드-온리 메모리(ROM), 자기 또는 광학 카드 또는 많은 양의 데이터를 저장하기 위한 또 다른 형태의 저장소이다. 이 데이터의 일부는 직접 메모리 액세스 프로세스에 의해 컴퓨터(800) 내의 소프트웨어의 실행 동안에 메모리 내로 기록된다. 비활성 저장소는 로컬, 원격 또는 분산될 수 있다. 비활성 메모리는 선택적인데, 시스템은 메모리 내에서 적용 가능한 모든 데이터로 생성될 수 있기 때문이다. 전형적인 컴퓨터 시스템은 적어도 프로세서, 메모리 및 메모리와 프로세서를 연결시키는 장치(가령, 버스)를 포함하는 것이 일반적일 것이다.
일반적으로, 소프트웨어는 비활성 메모리 및/또는 드라이브 유닛에 저장된다. 사실, 대량 프로그램에 대하여, 메모리 내에 전체 프로그램을 저장하는 것도 불가능할 수 있다. 그럼에도 불구하고, 소프트웨어가 실행되기 위하여, 필요하면, 프로세싱을 위해 컴퓨터 리드 가능한 적절한 위치로 이동되고, 설명을 위해, 위치는 본 명세서에서 메모리로 언급된다는 것을 이해해야 한다. 소프트웨어가 실행응ㄹ 위해 메모리로 이동되는 경우에도, 프로세서는 전형적으로 하드웨어 레지스터를 사용하여 소프트웨어와 관련된 값 및 이상적으로 실행 속도를 높이는 로컬 캐시를 저장할 것이다. 본 명세서에서 사용되는 바와 같이, 소프트웨어 프로그램이 "컴퓨터-리드 가능한 매개체에서 실행되는"으로 언급될 때, 소프트웨어 프로그램은 임의의 공지 또는 종래의 위치(비휘발성 저장소로부터 하드웨어 레지스터로)에서 저장될 것으로 가정된다. 프로그램과 관련된 적어도 하나의 값이 프로세서에 의해 리드 가능한 레지스터에 저장되는 경우에, 프로세서는 "프로그램을 실행하도록 구성된"으로 고려된다.
또한, 버스는 프로세스를 네트워크 인터페이스 장치에 연결한다. 인터페이스는 하나 이상의 모뎀 또는 네트워크 인터페이스를 포함할 수 있다. 모뎀 또는 네트워크 인터페이스는 컴퓨터 시스템의 일부로 고려될 수 있다는 것을 이해할 것이다. 인터페이스는 아날로그 모뎀, isdn 모뎀, 케이블 모뎀, 토큰 링 인터페이스, 위성 전송 인터페이스(가령, "다이렉트 PC") 또는 컴퓨터 시스템을 다른 컴퓨터 시스템과 연결시키기 위한 다른 인터페이스를 포함할 수 있다. 인터페이스는 하나 이상의 입력 및/또는 출력 장치를 포함할 수 있다. I/O 장치는 키보드, 마우스 또는 다른 포인팅 장치, 디스크 드라이브, 프린터, 스캐너 및 디스플레이 장치를 포함하는 다른 입력 및/또는 출력 장치를 포함하고, 이에 제한되지 않는다. 디스플레이 장치는 캐소드 레이 튜브(CRT), 액정 크리스털 디스플레이(LCD) 또는 어떤 다른 적용 가능한 공지되거나 종래의 디스플레이 장치를 포함하고, 이에 제한되지 않는다. 간결성을 위하여, 도 8의 예에서 도시되지 않은 임의의 장치의 컨트롤러는 인터페이스에 위치된다.
작동에 있어서, 컴퓨터 시스템(800)은 디스크 운영 시스템과 같은 파일 관리 시스템을 포함하는 운영 시스템 소프트웨어에 의해 제어될 수 있다. 파일 관리 시스템 소프트웨어와 관련된 운영 시스템 소프트웨어의 일 예는 워싱톤, 레드몬드의 마이크로소프트 코포레이션의 Window® 및 그와 관련된 파일 관리 시스템으로 알려진 운영 시스템 계열이다. 관련된 파일 관리 시스템 소프트웨어를 포함하는 운영 시스템의 또 다른 예는 리눅스 운영 시스템과 그와 관련된 파일 관리 시스템이다. 파일 관리 시스템은 비휘발성 메모리 및/또는 드라이브 유닛에 저장되는 것이 일반적이고, 프로세서가 운영 시스템에 의하여 요구되는 다양한 행위를 실행하도록 하여 데이터를 입력 및 출력, 그리고 데이터를 메모리(휘발성 메모리 및/또는 드라이브 유닛에 파일을 저장하는 것 포함) 내에 저장하도록 한다.
상세한 설명의 일 부분은 컴퓨터 메모리 내의 데이터 비트 상의 작동의 알고리즘 및 심볼적인 표현으로 나타날 수 있다. 이들 알고리즘적인 설명과 표현은 기술 분야의 당업자가 다른 당업자에게 가장 효율적으로 전달할 수 있도록 사용된다. 본 명세서에서, 알고리즘은 원하는 결과로 이어지는 일관성 있는 작업의 시퀀스가 된다. 작업은 물리적 양의 물리적 조작을 요하는 것들이다. 반드시 그렇지는 않지만, 보통, 이들 양은 저장, 전송, 결합, 비교 및 다른 조작이 가능한 전기적 신호 또는 자기적 신호 케이블의 형태를 띤다. 주로 일반적으로 사용하기 때문에, 비트, 값, 요소, 심볼, 문자, 용어, 숫자등과 같은 이들 신호로 언급되는 것이 때때로 편리하다는 것이 증명되었다.
그러나, 이들 용어 및 유사 용어들은 적절한 물리적 양과 관련되고, 이들 양에 적용되는 편리한 라벨이라는 점을 명심해야 한다. 다음 논의로부터 명백하게 구체적으로 진술되지 않는다면, 명세서 전반에 걸쳐, 용어 "프로세싱" 또는 "컴퓨팅" 또는 "계산하는" 또는 "결정하는" 또는 "디스플레이하는" 등과 같은 용어를 사용하는 논의는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 장치의 행동 및 프로세스를 언급하는 것이다. 상기 컴퓨터 시스템은 컴퓨터 시스템의 레지스터 및 메모리 내의 물리적(전자적) 양으로 표현된 데이터를 조작하고, 다른 데이터로 변환하는데, 상기 다른 데이터는 컴퓨터 시스템 메모리 또는 레지스터 또는 다른 이러한 정보 저장, 전송 또는 디스플레이 장치내의 물리적 양으로서 유사하게 표현된다.
본 명세서에 제시된 알고리즘과 디스플레이는 임의의 특정 컴퓨터나 다른 장치와 고유적으로 관련되지 아니한다. 일반적인 다양한 목적의 시스템은 본 명세서의 가르침에 따른 프로그램으로 사용될 수 있거나, 일부 실시예의 방법을 수행하기 위한 좀 더 특화된 장치를 구성하는 것이 편리하다는 것을 증명할 수 있다. 다양한 이들 시스템의 원하는 구조는 아래 설명에 나타날 것이다. 또한, 기술은 임의의 특정 프로그램 언어를 참조하여 기술되지 않고, 따라서, 다양한 실시예는 다양한 프로그램 언어를 사용하여 실행될 수 있다.
대안적인 실시예에서, 기계는 스탠드어론(standalone) 장치로서 작동할 수 있고, 또한, 다른 기계와 연결(가령, 네트워크화)될 수 있다. 네트워크된 배치에서, 기계는 서버의 용량에서 작동하거나, 또는 클라이언트-서버 네트워크 환경 내의 클라이언트 기계 또는 피어-투-피어(peer-to-peer) (또는 분산) 네트워크 환경에서의 피어(peer) 기계로서 작동할 수 있다.
기계는 서버 컴퓨터, 클라이언트 컴퓨터, 개인용 컴퓨터(PC), 태블릿 PC, 랩탑 컴퓨터, 셋-톱 박스(STB), PDA, 셀룰러 폰, 아이폰, 블랙베리, 프로세서, 텔레폰, 웹 어플라이언스, 네트워크 라우터, 스위치 또는 브리지 또는 그 기계에 의해 행해질 수 있는 행동을 구체화하는 한 세트의 명령어(순차적 또는 다르게)를 실행할 수 있는 임의의 기계일 수 있다.
기계-리드 가능한 매개체 또는 기계-리드 가능한 저장 매개체는 단일 매개체가 될 예시적인 실시예에서 도시되는데, 용어 "기계-리드 가능한 매개체" 및 "기계-리드 가능한 저장 매개체"는 단일 매개체 또는 다수 매개체(중앙 또는 분산 데이터베이스, 및/또는 관련 캐시 및 서버)를 포함해야 하고, 이는 하나 이상의 세트의 명령어를 저장한다. 용어 "기계-리드 가능한 매개체" 및 "기계-리드 가능한 저장 매개체"는 기계에 의한 실행을 위하여 한 세트의 명령어를 저장, 인코딩 또는 전달할 수 있는 임의의 매개체를 포함하고, 이에 의해, 기계는 임의의 하나 이상의 현재 개시된 기술 및 혁신의 방법론을 수행할 수 있게 된다.
일반적으로, 본 발명의 실시예를 실해하는 루틴(routine)은 운영 시스템 또는 특수 어플리케이션, 구성, 프로그램, 객체, 모듈 또는 "컴퓨터 프로그램"으로 언급되는 명령어의 시퀀스의 일부로서 실행될 수 있다. 컴퓨터 프로그램은 컴퓨터 내의 다양한 메모리와 저장 장치에서 다양한 시간에 하나 이상의 명령어 세트를 포함하는 것이 일반적이고, 컴퓨터 내의 하나 이상의 프로세싱 유닛 또는 프로세서에 의해 실행되고 리드될 때, 컴퓨터가 작업을 수행하여 본 발명의 다양한 면과 관련된 요소를 실행할 수 있도록 한다.
게다가, 실시예가 완전 기능 컴퓨터와 컴퓨터 시스템의 맥락에서 기술되었으나, 다양한 실시예가 다양한 형태로 프로그램 제품으로서 분산되고, 본 발명이 분산에 실제로 영향을 주는데 사용되는 기계 또는 컴퓨터-리드 가능한 매개체의 특정 타입에 관계 없이 동일하게 적용된다는 것을 당업자는 이해할 것이다.
기계-리드 가능한 저장 매개체, 기계-리드 가능한 매개체 또는 컴퓨터-리드 가능한 (저장) 매게체의 추가적인 예는, 휘발성 및 비휘발성 메모리 장치, 프롤피 및 다른 삭제 가능한 디스크, 하드 디스크 드라이브, 광학 디스크(가령, 컴팩트 디스크 리드-온리 메모리(CD ROMS), 디지털 버사틸 디스크(DVD)와 같은 기록 가능한 타입의 매개체 및 디지털과 아날로그 통신 링크와 같은 전송 타입 매개체를 포함하고, 이에 제한되지 않는다.
맥락이 명확하게 다르게 요구하지 않는다면, 명세서와 청구항 전반에 걸쳐, 단어 "포함한다", "포함하는"등은 제외적이나 배타적인 의미가 아닌 포함적인 의미로 해석되어야 한다. 즉, 포함하고 이에 제한되지 않는것으로 해석되어야 한다. 본 명세서에 사용되는 바와 같이, 용어 "연결된", "결합된" 또는 그의 다른 변형예는 두 개 또는 그 이상의 요소들 사이에 직접 또는 간접적으로 임의의 연결 또는 결합을 의미한다. 요소들 간의 연결의 결합은 물리적, 논리적 또는 그의 조합일 수 있다. 추가로, 단어 "본 명세서에서", "상기", "아래" 및 유사 단어는, 이 출원에서 사용될 때, 이 출원의 일부가 아닌 전체로서 언급될 것이다. 문맥이 허용되는 곳에서, 단수 또는 복수를 사용하여 상기 발명의 상세한 설명에서의 단어는 각각 복수 또는 단수를 포함한다. 두 개 또는 그 이상의 아이템의 리스트와 관련하여, 단어 "또는" 은 리스트의 임의의 아이템, 리스트의 모든 아이템, 리스트의 아이템의 조합을 포함하도록 해석된다.
본 발명의 실시예의 상기 상세한 설명은 상기에 개시된 정확한 형태에 가르침이 제한되거나 하나하나 규명하려는 의도가 아니다. 본 발명의 구체적인 실시예 및 예시가 설명적인 목적으로 상기에 기술되는 동안, 다양한 등가적인 수정예는, 당업자가 인식할 수 있는 바와 같이, 본 발명의 범위 내에서 가능하다. 예를 들어, 프로세서 또는 블록이 주어진 순서로 제시되지만, 대안적인 실시예는 다른 순서로, 단계를 가진 루틴을 수행하거나, 블록을 가진 시스템을 사용할 수 있고, 일부 프로세스 또는 블록은 삭제, 이동, 추가, 나누어짐, 결합 및/또는 수정되어 대안적이거나 부조합을 제공할 수 있다. 이들 프로세스 또는 블록의 각각은 다양한 서로 다른 방법으로 실행될 수 있다. 또한, 프로세스 또는 블록이 가끔 시리즈로 수행되는 것으로 보이나, 대신에, 이들 프로세스 또는 블록이 병렬적으로 수행될 수 있거나 다양한 시간에 수행될 수 있다. 또한, 본 명세서에 명시된 임의의 구체적인 숫자는 단지 예이므로, 대안적인 실시예는 서로 다른 값 또는 범위를 사용할 수 있다.
본 명세서에서 제공된 발명의 가르침은 상기 기술된 시스템뿐만 아니라 다른 시스템에도 적용될 수 있다. 상기 기술된 다양한 실시예의 요소 및 기능은 조합되어 추가 실시예를 제공할 수 있다.
임의의 특허 및 출원과 상기 주지된 다른 참조문헌은 문헌을 제출하는 것과 함께 리스트될 수 있고, 이는 모두 본 명세서에 참조로서 포함된다. 본 발명의 태양은 필요하다면, 수정되어서, 상기 기술된 다양한 참조의 시스템, 기능, 개념을 사용하여 본 발명의 추가 실시예를 제공할 수 있다.
이들 및 다른 변화예는 상기 발명의 상세한 설명의 관점에서 본 발명에서 이루어질 수 있다. 상기 설명이 본 발명의 어떤 실시예를 기술하고, 상정 가능한 최상의 모드를 기술하며, 문맥에 얼마나 자세히 나타나있는지와 관련없이, 가르침은 많은 방법으로 실행될 수 있다. 시스템의 상세 설명은 실행 세부 사항에서 매우 상당히 있지만, 본 명세서에 개시된 주제에 의해 여전히 포함된다. 상기 표시된 바와 같이, 본 발명의 어떤 특징 또는 태양을 기술할 때 사용되는 특정 기술은, 그 기술과 관련 있는 본 발명의 어떤 구체적인 특징, 특성, 또는 태양으로 제한되도록 재정의되는 것을 의미하지 아니한다. 일반적으로, 다음 청구항에서 사용되는 용어는, 발명의 상세한 설명에서 상기 용어를 명백하게 정의하지 않는 한, 본 발명을 이 명세서에 개시된 특정 실시예로 제한되어서는 아니된다. 따라서, 본 발명의 실제 범위는 개시된 실시예 뿐만 아니라 청구항 하에서 발명을 실시 또는 실행하는 모든 등가적인 방법을 아우른다.
본 발명의 어떤 태양이 어떤 청구항 형태로 아래에 제시되지만, 발명자는 청구항 형태의 임의의 수로 발명의 다양한 태양을 고려한다. 예를 들어, 본 발명의 단지 하나의 태양이 하에서 기능식 청구항으로서 언급되지만, 다른 태양은 기능식 청구항 또는 컴퓨터-리드 가능한 매개체로 구체화되는 것과 같은 다른 형태로서 구체화될 수 있다( 하에서 처리될 임의의 청구항은 "수단"이라는 단어로 끝날 것임). 따라서, 출원인은 본 발명의 다른 태양을 위하여 이러한 추가적인 청구항 형태를 달성하기 위하여, 출원을 한 이후에, 추가적인 청구항을 추가할 권리를 가진다.
Claims (39)
- 복수의 데이터 노드를 가진 분산 컴퓨팅 클러스터 내에 저장된 데이터 상에 쿼리를 수행하기 위한 시스템에 있어서, 각각의 데이터 노드는 프로세싱 회로와 메모리 회로를 가진 컴퓨팅 장치이고, 상기 시스템은,
각각의 데이터 노드의 상태를 추적하는 상태 스토어 - 상기 상태 스토어는 데이터 노드와 분리되고, 파일 데이터가 클러스터 데이터에 걸쳐 어디에 저장되는지를 추적하는 네임 노드에 더욱 결합됨 - 와,
복수의 데이터 노드를 포함하되, 각각의 데이터 노드는 쿼리 엔진의 인스턴스를 실행하고, 상기 쿼리 엔진은,
클라이언트로부터의 쿼리를 수신하고, 상태 스토어와 네임 노드로부터, (1) 클러스터 내에서 실행되는 모든 쿼리 엔진 인스턴스에 관한 멤버십 정보 및 (2) 쿼리와 관련된 데이터 블록이 복수의 데이터 노드 중에 어디에 분산되는지에 관한 위치 정보를 획득하고, 상태 스토어와 네임 노드로부터 획득된 데이터에 기초하여 쿼리 프래그먼트를 생성하기 위해 클라이언트로부터 쿼리를 파싱(parse)하며, 상태 스토어로부터 획득된 데이터에 기초하여 쿼리 플랜을 구성하는 쿼리 플래너와,
쿼리 플랜에 따라 복수의 데이터 노드 중에 쿼리 프래그먼트를 분산시키는 쿼리 코디네이터; 및
쿼리 프래그먼트를 실행하여, 집합된 중간 결과를 획득하여, 클라이언트로 되돌리는 쿼리 실행 엔진을 포함하는 것을 특징으로 하는 시스템. - 제 1 항에 있어서, 상기 분산 컴퓨팅 클러스터는 비구조화된 데이터를 저장하는 것을 특징으로 하는 시스템.
- 제 2 항에 있어서, 복수의 데이터 노드 중 하나의 쿼리 코디네이터 및 쿼리 플래너는 쿼리를 위해 클라이언트로부터, 초기 쿼리 코디네이터와 초기 쿼리 플래너로서 각각 선택되는 것을 특징으로 하는 시스템.
- 제 3 항에 있어서, 초기 쿼리 코디네이터와 초기 쿼리 플래너는 라우팅 구성에 의해 선택되고, 상기 라우팅 구성은 로드 밸런싱 스킴(load balancing scheme)을 사용하여 클라이언트로부터의 쿼리를 복수의 데이터 노드 중에 분산하는 것을 특징으로 하는 시스템.
- 제 3 항에 있어서, 초기 쿼리 코디네이터와 초기 쿼리 플래너는, 쿼리를 전송하기 위하여, 복수의 데이터 노드 중에 특정 데이터 노드를 타겟팅하는 클라이언트에 근거하여 선택되는 것을 특징으로 하는 시스템.
- 제 3 항에 있어서, 쿼리 프래그먼트들은, 쿼리와 관련된 데이터를 가진 복수의 데이터 노드로부터의 데이터 노드의 쿼리 실행 엔진에 의하여 병렬적으로 실행되는 것을 특징으로 하는 시스템.
- 제 6 항에 있어서, 초기 쿼리 코디네이터는 쿼리 실행 엔진으로부터의 쿼리 결과들을 집합하여, 집합된 쿼리 결과들을 클라이언트로 제공하는 것을 특징으로 하는 시스템.
- 제 7 항에 있어서, 쿼리 결과를 초기 쿼리 코디네이터로 전송하기 이전에, 중간 쿼리 결과가 사전-집합체를 위하여 쿼리 실행 엔진들 사이에 스트리밍되는 것을 특징으로 하는 시스템.
- 제 6 항에 있어서, 쿼리 실행 엔진은, 분산된 파일 시스템을 사용하여 저장되는 데이터 상에서 쿼리 프래그먼트를 직접 실행하는 것을 특징으로 하는 시스템.
- 제 1 항에 있어서, 쿼리 실행 엔진은 스키마-온-리드를 결정하여, 런타임에서, 저장된 데이터를 메모리 포맷으로 변환하는 것을 특징으로 하는 시스템.
- 제 2 항에 있어서, 상태 스토어는 클러스터 내에서 실행되는 데이터베이스 관리 엔진과 관련된 메타데이터를 저장하는 메타데이터 스토어와 더욱 결합되고, 쿼리 플래너는 상태 스토어로부터 쿼리와 관련된 메타데이터를 획득하는 것을 특징으로 하는 시스템.
- 제 2 항에 있어서, 초기 쿼리 플래너는 클러스터 내의 네임 노드로부터 정보를 사용하여, 쿼리를 위하여, 관련 데이터를 가지는 데이터 노드를 식별하는 것을 특징으로 하는 시스템.
- 제 2 항에 있어서, 런-타임 코드 생성 및 레이턴시 감소를 위하여 저수준 가상 기계 구성을 더 포함하는 것을 특징으로 하는 시스템.
- 복수의 데이터 노드를 가진 분산 컴퓨팅 클러스터 내에서 쿼리를 실행하는 방법에 있어서, 상기 방법은,
분산 컴퓨팅 클러스터 내의 하나의 데이터 노드에 의해, 쿼리를 수신하는 단계와,
쿼리를 수신한 하나의 데이터 노드를 코디네이팅 데이터 노드로 지정하는 단계와,
코디네이팅 데이터 노드에 의해, 그리고 상태 스토어와 네임 노드를 통해, (1) 클러스터 내에서 실행되는 모든 쿼리 엔진 인스턴스에 관한 멤버십 정보 및 (2) 쿼리와 관련된 데이터 블록이 복수의 데이터 노드 중에 어디에 분산되는지에 관한 위치 정보를 획득하는 단계 - 상태 스토어는 데이터 노드로부터 분리됨 - 와,
상태 스토어와 네임 노드로부터 획득된 데이터에 기초하여 쿼리의 프래그먼트를 생성하기 위해 쿼리를 파싱(parse)하는 단계와,
상태 스토어로부터 획득된 데이터에 기초하여 쿼리 플랜을 구성하는 단계와,
코디네이팅 데이터 노드에 의해, 그리고 쿼리 플랜에 따라서, 쿼리와 관련된 데이터를 가진 분산 컴퓨팅 클러스터 내의 데이터 노드에 쿼리의 프래그먼트를 분산시키는 단계와,
쿼리와 관련된 데이터를 가진 데이터 노드로부터, 쿼리의 프래그먼트의 실행에 해당하는 중간 결과를 수신하는 단계와,
클라이언트를 위해, 중간 결과에 기초하여 최종 결과를 생성하는 단계를 포함하는 것을 특징으로 하는 방법. - 제 14 항에 있어서, 상기 데이터 노드는 분산 파일 시스템 또는 분산 컴퓨팅 클러스터의 데이터 스토어 상에서, 쿼리의 프래그먼트를 실행하는 것을 특징으로 하는 방법.
- 제 15 항에 있어서, 분산 컴퓨팅 클러스터는 아파치 하둡 클러스터이고, 분산 파일 시스템은 하둡 분산 파일 시스템(HDFS)이며, 데이터 스토어는 "NoSQL"(No Structured Qery Language) 데이터 스토어인 것을 특징으로 하는 방법.
- 제 16 항에 있어서, NoSQL 데이터 스토어는 아파치 HBase를 포함하는 것을 특징으로 하는 방법.
- 제 15 항에 있어서, 쿼리를 파싱(parsing) 및 분석하는 단계를 더 포함하여, 분산 컴퓨팅 클러스터 내의 데이터 노드 상에서 실행되는 쿼리 실행 엔진에 의하여 수행될 태스크를 결정하는 것을 특징으로 하는 방법.
- 제 18 항에 있어서, 상태 스토어로부터의 데이터 노드의 상태를 결정하는 단계를 더 포함하되, 상기 상태 스토어는 시작할 때 또는 연결이 상실(loss)된 후에 데이터 노드를 등록하는 것을 특징으로 하는 방법.
- 제 19 항에 있어서, 상태 스토어로부터 쿼리와 관련된 데이터의 위치를 결정하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제 16 항에 있어서, 데이터 노드에 걸쳐 병렬적으로 쿼리의 프래그먼트가 실행되는 동안에, 실행으로부터의 중간 결과는 데이터 노드 상에서 실행되는 쿼리 실행 엔진들 간에 스트리밍되는 것을 특징으로 하는 방법.
- 제 14 항에 있어서, 코디네이팅 데이터 노드에 의하여, 상기 결과를 클라이언트로 전송하는 것을 특징으로 하는 방법.
- 제 16 항에 있어서,
코디네이팅 데이터 노드에 의하여, 데이터 노드로부터 쿼리의 사전-집합된 결과를 수신하는 단계; 및
코디네이팅 데이터 노드에 의하여, 사전-집합된 결과에 작동을 수행하여 쿼리의 결과를 결정하는 단계를 더 포함하는 것을 특징으로 하는 방법. - 제 23 항에 있어서, 상기 작동은 집합 작동 또는 TopN 작동을 포함하는 것을 특징으로 하는 방법.
- 제 16 항에 있어서, 쿼리의 프래그먼트는 스캔 바운더리를 따라가는 파티션을 포함하는 플랜에 해당하는 것을 특징으로 하는 방법.
- 제 16 항에 있어서, 상기 데이터 노드는 코디네이팅 데이터 노드를 포함하는 것을 특징으로 하는 방법.
- 제 18 항에 있어서, 쿼리 실행 엔진은 레이턴시를 감소시키기 위하여, 런-타임 코드 생성을 위해 저수준 가상 기계를 실행하는 것을 특징으로 하는 방법.
- 제 14 항에 있어서,
상태 스토어로부터 쿼리와 관련된 메타데이터를 획득하는 단계를 더 포함하는 것을 특징으로 하는 방법. - 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 제 1 항에 있어서, 상기 위치 정보는 쿼리와 관련된 데이터 블록의 복수의 레플리카를 포함하되, 쿼리 플래너 또는 쿼리 코디네이터는 쿼리 프래그먼트의 실행을 위해 복수의 레플리카 중 하나 이상을 선택하되, 전체를 선택하지 않는 것을 특징으로 하는 시스템.
- 제 1 항에 있어서, 상태 스토어가 실패할 때, 시스템은 상태 스토어로부터 받은 마지막 정보에 기초하여 동작을 계속하도록 구성되는 것을 특징으로 하는 시스템.
- 제 14 항에 있어서, 상기 위치 정보는 쿼리와 관련된 데이터 블록의 복수의 레플리카를 포함하되, 상기 방법은, 쿼리의 프래그먼트의 실행을 위해 복수의 레플리카 중 하나 이상을 선택하되, 전체를 선택하지 않는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제 14 항에 있어서, 상태 스토어가 실패된 것으로 결정되면, 상태 스토어로부터 수신된 마지막 정보에 기초하여 동작을 계속하는 단계를 더 포함하는 것을 특징으로 하는 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/800,280 | 2013-03-13 | ||
US13/800,280 US9342557B2 (en) | 2013-03-13 | 2013-03-13 | Low latency query engine for Apache Hadoop |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140112427A KR20140112427A (ko) | 2014-09-23 |
KR101621137B1 true KR101621137B1 (ko) | 2016-05-13 |
Family
ID=50241135
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140028136A KR101621137B1 (ko) | 2013-03-13 | 2014-03-11 | 아파치 하둡을 위한 로우 레이턴시 쿼리 엔진 |
Country Status (7)
Country | Link |
---|---|
US (2) | US9342557B2 (ko) |
EP (1) | EP2778967A1 (ko) |
JP (1) | JP6050272B2 (ko) |
KR (1) | KR101621137B1 (ko) |
AU (1) | AU2014201441B2 (ko) |
CA (2) | CA2843459C (ko) |
GB (1) | GB2511935A (ko) |
Families Citing this family (66)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9665620B2 (en) | 2010-01-15 | 2017-05-30 | Ab Initio Technology Llc | Managing data queries |
US10963426B1 (en) | 2013-02-25 | 2021-03-30 | EMC IP Holding Company LLC | Method of providing access controls and permissions over relational data stored in a hadoop file system |
US9805053B1 (en) | 2013-02-25 | 2017-10-31 | EMC IP Holding Company LLC | Pluggable storage system for parallel query engines |
US9342557B2 (en) * | 2013-03-13 | 2016-05-17 | Cloudera, Inc. | Low latency query engine for Apache Hadoop |
US9442967B2 (en) * | 2013-07-25 | 2016-09-13 | Facebook, Inc. | Systems and methods for efficient data ingestion and query processing |
US10324942B2 (en) * | 2013-07-26 | 2019-06-18 | Snap Inc. | Segment data visibility and management in a distributed database of time stamped records |
US9477731B2 (en) * | 2013-10-01 | 2016-10-25 | Cloudera, Inc. | Background format optimization for enhanced SQL-like queries in Hadoop |
US10776325B2 (en) | 2013-11-26 | 2020-09-15 | Ab Initio Technology Llc | Parallel access to data in a distributed file system |
US10417258B2 (en) | 2013-12-19 | 2019-09-17 | Exposit Labs, Inc. | Interactive multi-dimensional nested table supporting scalable real-time querying of large data volumes |
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 |
US11386085B2 (en) | 2014-01-27 | 2022-07-12 | Microstrategy Incorporated | Deriving metrics from queries |
US11921715B2 (en) | 2014-01-27 | 2024-03-05 | Microstrategy Incorporated | Search integration |
US9633120B2 (en) * | 2014-01-29 | 2017-04-25 | International Business Machines Corporation | Continuously blocking query result data for a remote query |
US9607073B2 (en) | 2014-04-17 | 2017-03-28 | Ab Initio Technology Llc | Processing data from multiple sources |
US10289723B1 (en) * | 2014-08-21 | 2019-05-14 | Amazon Technologies, Inc. | Distributed union all queries |
WO2016088281A1 (en) * | 2014-12-01 | 2016-06-09 | Nec Corporation | Multiple query optimization in sql-on- hadoop systems |
KR101672901B1 (ko) | 2014-12-03 | 2016-11-07 | 충북대학교 산학협력단 | 분산 파일 시스템에서 소형 파일에 대한 접근성 향상을 위한 캐시 관리 시스템 |
US10198185B2 (en) | 2014-12-31 | 2019-02-05 | Samsung Electronics Co., Ltd. | Computing system with processing and method of operation thereof |
US10572296B2 (en) * | 2015-02-27 | 2020-02-25 | Savi Technology, Inc. | System and method for a data processing architecture |
US11016946B1 (en) * | 2015-03-31 | 2021-05-25 | EMC IP Holding Company LLC | Method and apparatus for processing object metadata |
US10318491B1 (en) * | 2015-03-31 | 2019-06-11 | EMC IP Holding Company LLC | Object metadata query with distributed processing systems |
US11429609B2 (en) * | 2015-04-15 | 2022-08-30 | Microsoft Technology Licensing, Llc | Geo-scale analytics with bandwidth and regulatory constraints |
KR101918806B1 (ko) * | 2015-06-30 | 2018-11-14 | 전자부품연구원 | 분산 파일 시스템의 읽기 성능 극대화를 위한 캐시 관리 방법 |
US9961068B2 (en) | 2015-07-21 | 2018-05-01 | Bank Of America Corporation | Single sign-on for interconnected computer systems |
KR101727508B1 (ko) * | 2015-07-28 | 2017-04-18 | 서울과학기술대학교 산학협력단 | 하둡 기반 하드웨어 압축 고속화 장치 및 방법 |
US10121169B2 (en) * | 2015-09-16 | 2018-11-06 | Amobee, Inc. | Table level distributed database system for big data storage and query |
KR101699176B1 (ko) * | 2015-09-22 | 2017-01-23 | 전북대학교산학협력단 | Hdfs 데이터 암호화 및 복호화 방법 |
US11403318B2 (en) * | 2015-10-01 | 2022-08-02 | Futurewei Technologies, Inc. | Apparatus and method for managing storage of a primary database and a replica database |
US10114907B2 (en) | 2015-11-13 | 2018-10-30 | International Business Machines Corporation | Query processing for XML data using big data technology |
US20170154080A1 (en) * | 2015-12-01 | 2017-06-01 | Microsoft Technology Licensing, Llc | Phasing of multi-output query operators |
US10685134B1 (en) | 2015-12-15 | 2020-06-16 | Amazon Technologies, Inc. | Database proxy service |
US9886245B2 (en) * | 2016-02-24 | 2018-02-06 | Helix Data Solutions LLC | Software development tool using a workflow pattern that describes software applications |
US10956467B1 (en) * | 2016-08-22 | 2021-03-23 | Jpmorgan Chase Bank, N.A. | Method and system for implementing a query tool for unstructured data files |
US10762086B2 (en) | 2016-09-01 | 2020-09-01 | Amazon Technologies, Inc. | Tracking query execution status for selectively routing queries |
US10496768B2 (en) | 2016-09-01 | 2019-12-03 | Paypal, Inc. | Simulating a production environment using distributed computing technologies |
CN106406985B (zh) * | 2016-09-21 | 2019-10-11 | 北京百度网讯科技有限公司 | 分布式计算框架和分布式计算方法 |
US10768979B2 (en) | 2016-09-23 | 2020-09-08 | Apple Inc. | Peer-to-peer distributed computing system for heterogeneous device types |
US9864785B2 (en) | 2016-10-24 | 2018-01-09 | Interntaional Business Machines Corporation | Processing a query via a lambda application |
US10379835B2 (en) | 2016-12-19 | 2019-08-13 | International Business Machines Corporation | Optimized creation of distributed storage and distributed processing clusters on demand |
WO2018170276A2 (en) * | 2017-03-15 | 2018-09-20 | Fauna, Inc. | Methods and systems for a database |
US10585913B2 (en) * | 2017-03-20 | 2020-03-10 | Datameer, Inc. | Apparatus and method for distributed query processing utilizing dynamically generated in-memory term maps |
CN107463852A (zh) * | 2017-06-28 | 2017-12-12 | 北京北信源软件股份有限公司 | 基于ApacheRanger对Hadoop集群数据的保护装置及保护方法 |
US10726006B2 (en) | 2017-06-30 | 2020-07-28 | Microsoft Technology Licensing, Llc | Query optimization using propagated data distinctness |
US10467112B2 (en) | 2017-11-09 | 2019-11-05 | Bank Of America Corporation | Distributed data monitoring device |
US10437643B2 (en) | 2017-11-10 | 2019-10-08 | Bank Of America Corporation | Independent storage and processing of data with centralized event control |
US10331484B2 (en) | 2017-11-14 | 2019-06-25 | Bank Of America Corporation | Distributed data platform resource allocator |
US10896176B1 (en) * | 2018-02-15 | 2021-01-19 | EMC IP Holding Company LLC | Machine learning based query optimization for federated databases |
CN108595156A (zh) * | 2018-04-26 | 2018-09-28 | 宁波银行股份有限公司 | 一种基于Impala组件的批处理方法及系统 |
US20190364109A1 (en) * | 2018-05-23 | 2019-11-28 | Microsoft Technology Licensing, Llc | Scale out data storage and query filtering using storage pools |
US11030204B2 (en) | 2018-05-23 | 2021-06-08 | Microsoft Technology Licensing, Llc | Scale out data storage and query filtering using data pools |
US11321330B1 (en) * | 2018-06-26 | 2022-05-03 | Amazon Technologies, Inc. | Combining nested data operations for distributed query processing |
US10841377B2 (en) | 2018-11-26 | 2020-11-17 | Microsoft Technology Licensing, Llc | Managing data resources |
US11748495B2 (en) | 2018-11-28 | 2023-09-05 | Jpmorgan Chase Bank, N.A. | Systems and methods for data usage monitoring in multi-tenancy enabled HADOOP clusters |
US10628244B1 (en) | 2019-10-29 | 2020-04-21 | Snowflake Inc. | Calling external functions from a data warehouse |
CN112749226A (zh) * | 2019-10-30 | 2021-05-04 | 北京国双科技有限公司 | Hive增量数据同步方法、装置、计算机设备和存储介质 |
US10715524B1 (en) | 2019-11-14 | 2020-07-14 | Snowflake Inc. | External credential-less stages for data warehouse integrations |
US11614970B2 (en) | 2019-12-06 | 2023-03-28 | Microstrategy Incorporated | High-throughput parallel data transmission |
US11567965B2 (en) | 2020-01-23 | 2023-01-31 | Microstrategy Incorporated | Enhanced preparation and integration of data sets |
US11210288B2 (en) * | 2020-05-12 | 2021-12-28 | Coupang Corp. | Systems and methods for reducing database query latency |
CN112612805B (zh) * | 2020-12-24 | 2023-12-22 | 北京浪潮数据技术有限公司 | 一种hbase数据索引到查询引擎的方法和相关装置 |
CN112783927B (zh) * | 2021-01-27 | 2023-03-17 | 浪潮云信息技术股份公司 | 一种数据库查询方法及系统 |
US11093492B1 (en) * | 2021-02-25 | 2021-08-17 | Ravishankar Narayanan Nair | System and method of fetching data from an external program |
US11138192B1 (en) * | 2021-04-30 | 2021-10-05 | Snowflake Inc. | Invoking external table functions from a database system |
US11449520B1 (en) * | 2021-10-14 | 2022-09-20 | Snowflake Inc. | Parallel fetching of query result data |
CN114116223A (zh) * | 2021-11-30 | 2022-03-01 | 度小满科技(北京)有限公司 | 一种请求响应方法、设备、系统及可读存储介质 |
Family Cites Families (160)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4908746A (en) | 1986-10-15 | 1990-03-13 | United States Data Corporation | Industrial control system |
JPH08202597A (ja) * | 1995-01-24 | 1996-08-09 | Nippon Telegr & Teleph Corp <Ntt> | スキーマ変換機構編成方式 |
US5634053A (en) | 1995-08-29 | 1997-05-27 | Hughes Aircraft Company | Federated information management (FIM) system and method for providing data site filtering and translation for heterogeneous databases |
US5825877A (en) | 1996-06-11 | 1998-10-20 | International Business Machines Corporation | Support for portable trusted software |
US6553476B1 (en) | 1997-02-10 | 2003-04-22 | Matsushita Electric Industrial Co., Ltd. | Storage management based on predicted I/O execution times |
WO2000005663A2 (en) | 1998-07-24 | 2000-02-03 | Jarg Corporation | Distributed computer database system and method for performing object search |
US6901604B1 (en) | 1999-02-19 | 2005-05-31 | Chaincast, Inc. | Method and system for ensuring continuous data flow between re-transmitters within a chaincast communication system |
US6910082B1 (en) | 1999-11-18 | 2005-06-21 | International Business Machines Corporation | Method, system and program products for reducing data movement within a computing environment by bypassing copying data between file system and non-file system buffers in a server |
US6651242B1 (en) | 1999-12-14 | 2003-11-18 | Novell, Inc. | High performance computing system for distributed applications over a computer |
US6542930B1 (en) | 2000-03-08 | 2003-04-01 | International Business Machines Corporation | Distributed file system with automated file management achieved by decoupling data analysis and movement operations |
US7243299B1 (en) | 2000-04-21 | 2007-07-10 | Microsoft Corporation | Methods and apparatus for displaying multiple contexts in electronic documents |
IL152480A0 (en) | 2000-04-27 | 2003-05-29 | Webfeat Inc | Method and system for retrieving search results from multiple disparate databases |
US6732101B1 (en) | 2000-06-15 | 2004-05-04 | Zix Corporation | Secure message forwarding system detecting user's preferences including security preferences |
US7080147B2 (en) | 2000-09-04 | 2006-07-18 | International Business Machines Corporation | Computer network system, computer system, method for communication between computer systems, method for measuring computer system performance, and storage medium |
US7403980B2 (en) | 2000-11-08 | 2008-07-22 | Sri International | Methods and apparatus for scalable, distributed management of virtual private networks |
US6970891B1 (en) | 2000-11-27 | 2005-11-29 | Microsoft Corporation | Smart card with volatile memory file subsystem |
CA2327211A1 (en) | 2000-12-01 | 2002-06-01 | Nortel Networks Limited | Management of log archival and reporting for data network security systems |
KR100811419B1 (ko) | 2000-12-07 | 2008-03-07 | 주식회사 케이티 | 공개키 암호화를 이용하는 인증 프로토콜에서의서비스거부공격에 대한 방어 방법 |
US7640512B1 (en) | 2000-12-22 | 2009-12-29 | Automated Logic Corporation | Updating objects contained within a webpage |
US7181017B1 (en) | 2001-03-23 | 2007-02-20 | David Felsher | System and method for secure three-party communications |
EP1249981A1 (en) | 2001-04-02 | 2002-10-16 | NuMeme Limited | A security service system and method |
US7020687B2 (en) | 2001-05-18 | 2006-03-28 | Nortel Networks Limited | Providing access to a plurality of e-mail and voice message accounts from a single web-based interface |
US20020184535A1 (en) | 2001-05-30 | 2002-12-05 | Farah Moaven | Method and system for accessing a resource in a computing system |
US6985939B2 (en) | 2001-09-19 | 2006-01-10 | International Business Machines Corporation | Building distributed software services as aggregations of other services |
US6728855B2 (en) | 2001-09-27 | 2004-04-27 | Seagate Technology Llc | Method and system for data path verification |
AU2002361616A1 (en) | 2001-11-13 | 2003-05-26 | Prometric Inc. | Extensible exam language (xxl) protocol for computer based testing |
US7031981B1 (en) | 2001-12-21 | 2006-04-18 | Unisys Corporation | Tool supporting system log file reporting |
US7406473B1 (en) | 2002-01-30 | 2008-07-29 | Red Hat, Inc. | Distributed file system using disk servers, lock servers and file servers |
US7055097B1 (en) | 2002-02-05 | 2006-05-30 | Group 1 Software, Inc. | Displaying a large amount of information in a browser window |
US7392421B1 (en) | 2002-03-18 | 2008-06-24 | Symantec Operating Corporation | Framework for managing clustering and replication |
US7340770B2 (en) | 2002-05-15 | 2008-03-04 | Check Point Software Technologies, Inc. | System and methodology for providing community-based security policies |
JP2004015665A (ja) | 2002-06-10 | 2004-01-15 | Takeshi Sakamura | 電子チケット流通システムにおける認証方法およびicカード |
CA2502134A1 (en) | 2002-06-19 | 2004-03-04 | Secured Communications, Inc. | Inter-authentication method and device |
US6889341B2 (en) | 2002-06-28 | 2005-05-03 | Hewlett-Packard Development Company, L.P. | Method and apparatus for maintaining data integrity using a system management processor |
WO2004006076A2 (en) | 2002-07-03 | 2004-01-15 | Aurora Wireless Technologies, Ltd. | Biometric private key infrastructure |
US6931530B2 (en) | 2002-07-22 | 2005-08-16 | Vormetric, Inc. | Secure network file access controller implementing access control and auditing |
US6678828B1 (en) | 2002-07-22 | 2004-01-13 | Vormetric, Inc. | Secure network file access control system |
US7069497B1 (en) | 2002-09-10 | 2006-06-27 | Oracle International Corp. | System and method for applying a partial page change |
US7143288B2 (en) | 2002-10-16 | 2006-11-28 | Vormetric, Inc. | Secure file system server architecture and methods |
US7577730B2 (en) | 2002-11-27 | 2009-08-18 | International Business Machines Corporation | Semi-hierarchical system and method for administration of clusters of computer resources |
US8311980B2 (en) | 2002-12-09 | 2012-11-13 | Hewlett-Packard Development Company, L.P. | Namespace consistency for a wide-area file system |
US8561161B2 (en) | 2002-12-31 | 2013-10-15 | International Business Machines Corporation | Method and system for authentication in a heterogeneous federated environment |
US20040186832A1 (en) | 2003-01-16 | 2004-09-23 | Jardin Cary A. | System and method for controlling processing in a distributed system |
JP4265245B2 (ja) | 2003-03-17 | 2009-05-20 | 株式会社日立製作所 | 計算機システム |
JP3788438B2 (ja) | 2003-03-24 | 2006-06-21 | ソニー株式会社 | 情報記録媒体、情報処理装置、および情報処理方法、並びにコンピュータ・プログラム |
JP4504099B2 (ja) | 2003-06-25 | 2010-07-14 | 株式会社リコー | デジタル証明書管理システム、デジタル証明書管理装置、デジタル証明書管理方法、更新手順決定方法およびプログラム |
US7624421B2 (en) | 2003-07-31 | 2009-11-24 | Microsoft Corporation | Method and apparatus for managing and displaying contact authentication in a peer-to-peer collaboration system |
US7194589B2 (en) | 2003-08-22 | 2007-03-20 | Oracle International Corporation | Reducing disk IO by full-cache write-merging |
ATE354134T1 (de) | 2003-08-28 | 2007-03-15 | Accenture Global Services Gmbh | Erfassung, zusammenstellung und/oder visualisierung von strukturellen merkmalen von architekturen |
US20070172066A1 (en) | 2003-09-12 | 2007-07-26 | Secured Email Goteborg Ab | Message security |
US7278049B2 (en) | 2003-09-29 | 2007-10-02 | International Business Machines Corporation | Method, system, and program for recovery from a failure in an asynchronous data copying system |
US7457872B2 (en) | 2003-10-15 | 2008-11-25 | Microsoft Corporation | On-line service/application monitoring and reporting system |
US8060743B2 (en) | 2003-11-14 | 2011-11-15 | Certicom Corp. | Cryptographic method and apparatus |
US7552321B2 (en) | 2003-11-20 | 2009-06-23 | The Boeing Company | Method and hybrid system for authenticating communications |
US20080163075A1 (en) | 2004-01-26 | 2008-07-03 | Beck Christopher Clemmett Macl | Server-Client Interaction and Information Management System |
JP2005259113A (ja) | 2004-02-12 | 2005-09-22 | Ricoh Co Ltd | プロセス編集装置、プロセス管理装置、プロセス編集プログラム、プロセス管理プログラム、記録媒体、プロセス編集方法及びプロセス管理方法 |
US7275175B2 (en) | 2004-07-22 | 2007-09-25 | International Business Machines Corporation | Method and apparatus for high-speed network adapter failover |
JP2006080642A (ja) | 2004-09-07 | 2006-03-23 | Sony Corp | 情報処理装置および方法、プログラム並びに記録媒体 |
US8024560B1 (en) | 2004-10-12 | 2011-09-20 | Alten Alex I | Systems and methods for securing multimedia transmissions over the internet |
US7647643B2 (en) | 2004-12-30 | 2010-01-12 | Cisco Technology, Inc. | Template access control lists |
US7810153B2 (en) | 2005-01-28 | 2010-10-05 | Microsoft Corporation | Controlling execution of computer applications |
KR100643325B1 (ko) | 2005-02-18 | 2006-11-10 | 삼성전자주식회사 | 네트워크 및 그의 도메인 설정방법 |
CN100449326C (zh) | 2005-03-16 | 2009-01-07 | 西门子(中国)有限公司 | 监测日志的记录方法及系统 |
JP2006285809A (ja) | 2005-04-04 | 2006-10-19 | Hitachi Ltd | ストリーミング向け性能保証を行うストレージ装置 |
US7577900B2 (en) | 2005-05-13 | 2009-08-18 | Harris Corporation | Mechanism for maintaining data format synchronization between different entities |
US7487191B2 (en) | 2005-06-10 | 2009-02-03 | International Business Machines Corporation | Method and system for model-based replication of data |
US8069267B2 (en) | 2005-06-28 | 2011-11-29 | Microsoft Corporation | Advertisement refresh rules for network applications |
US7818313B1 (en) | 2005-07-18 | 2010-10-19 | Sybase, Inc. | Method for distributing processing of queries over a cluster of servers in a continuous processing system |
WO2007052285A2 (en) | 2005-07-22 | 2007-05-10 | Yogesh Chunilal Rathod | Universal knowledge management and desktop search system |
US7698321B2 (en) | 2005-09-30 | 2010-04-13 | At&T Intellectual Property I, L.P. | Methods, systems, and products for updating web content |
US8041677B2 (en) | 2005-10-12 | 2011-10-18 | Datacastle Corporation | Method and system for data backup |
US20070113188A1 (en) | 2005-11-17 | 2007-05-17 | Bales Christopher E | System and method for providing dynamic content in a communities framework |
JP4435076B2 (ja) | 2005-11-18 | 2010-03-17 | フェリカネットワークス株式会社 | 携帯端末,データ通信方法,およびコンピュータプログラム |
US7653668B1 (en) | 2005-11-23 | 2010-01-26 | Symantec Operating Corporation | Fault tolerant multi-stage data replication with relaxed coherency guarantees |
US7818432B2 (en) | 2005-12-08 | 2010-10-19 | International Business Machines Corporation | Seamless reflection of model updates in a visual page for a visual channel in a composite services delivery system |
US8554758B1 (en) | 2005-12-29 | 2013-10-08 | Amazon Technologies, Inc. | Method and apparatus for monitoring and maintaining health in a searchable data service |
JP2007206739A (ja) | 2006-01-30 | 2007-08-16 | Toshiba Corp | 情報処理装置および認証制御方法 |
CN101043319B (zh) | 2006-03-22 | 2011-02-02 | 鸿富锦精密工业(深圳)有限公司 | 数字内容保护系统及方法 |
JP2007279890A (ja) | 2006-04-04 | 2007-10-25 | Hitachi Ltd | バックアップシステム及びバックアップ方法 |
US9094194B2 (en) | 2006-04-18 | 2015-07-28 | International Business Machines Corporation | Method and system for automating the recovery of a credential store when a user has forgotten their password using a temporary key pair created based on a new password provided by the user |
EP2023248B1 (en) | 2006-04-24 | 2018-10-24 | Panasonic Intellectual Property Management Co., Ltd. | Data processing device, method, program, integrated circuit, and program generating device |
US8296413B2 (en) | 2006-05-31 | 2012-10-23 | Sap Ag | Device registration in a hierarchical monitor service |
US20100242102A1 (en) | 2006-06-27 | 2010-09-23 | Microsoft Corporation | Biometric credential verification framework |
JP2008071154A (ja) | 2006-09-14 | 2008-03-27 | Ricoh Co Ltd | プログラム及び配置図作成装置 |
US20080104579A1 (en) * | 2006-10-31 | 2008-05-01 | Sap Ag | Systems and methods of transforming XML schemas |
AU2007351552B2 (en) | 2006-11-07 | 2010-10-14 | Security First Corporation | Systems and methods for distributing and securing data |
JP4997950B2 (ja) | 2006-12-11 | 2012-08-15 | 富士通株式会社 | ネットワーク管理システム、ネットワーク管理プログラムおよびネットワーク管理方法 |
US8468244B2 (en) | 2007-01-05 | 2013-06-18 | Digital Doors, Inc. | Digital information infrastructure and method for security designated data and with granular data stores |
US8655939B2 (en) | 2007-01-05 | 2014-02-18 | Digital Doors, Inc. | Electromagnetic pulse (EMP) hardened information infrastructure with extractor, cloud dispersal, secure storage, content analysis and classification and method therefor |
JP2008234370A (ja) | 2007-03-21 | 2008-10-02 | Just Syst Corp | 文書処理装置及び文書処理方法 |
US7802128B2 (en) | 2007-03-26 | 2010-09-21 | Oracle International Corporation | Method to avoid continuous application failovers in a cluster |
US20100070769A1 (en) | 2007-03-28 | 2010-03-18 | Shigeyoshi Shima | Log acquisition system, log collection terminal, log acquisition terminal, and log acquisition method and program using the same system and terminals |
KR101366332B1 (ko) | 2007-04-19 | 2014-02-21 | 엘지전자 주식회사 | 통신 시스템에서의 데이터 블록 재전송 방법 |
US20080263006A1 (en) | 2007-04-20 | 2008-10-23 | Sap Ag | Concurrent searching of structured and unstructured data |
JP4073033B1 (ja) * | 2007-04-27 | 2008-04-09 | 透 降矢 | 結合演算の処理機能の向上を考慮した合成関係演算を利用したマルチオペレーション・プロセッシングを用いたデータベースのクエリー処理システム |
US7734961B2 (en) | 2007-05-01 | 2010-06-08 | International Business Machines Corporation | Distributed logging apparatus system and method |
US8185551B2 (en) | 2007-06-08 | 2012-05-22 | Massachusetts Institute Of Technology | Disk-resident streaming dictionary |
US7904809B2 (en) | 2007-06-29 | 2011-03-08 | Microsoft Corporation | Model-based editors for dynamic validation |
US20090013029A1 (en) | 2007-07-03 | 2009-01-08 | Childress Rhonda L | Device, system and method of operating a plurality of virtual logical sites |
US7984043B1 (en) * | 2007-07-24 | 2011-07-19 | Amazon Technologies, Inc. | System and method for distributed query processing using configuration-independent query plans |
US8108770B2 (en) | 2007-08-27 | 2012-01-31 | Yahoo! Inc. | Secure inter-module communication mechanism |
GB2456290B (en) | 2007-10-05 | 2011-03-30 | Iti Scotland Ltd | Distributed protocol for authorisation |
GB2453383A (en) | 2007-10-05 | 2009-04-08 | Iti Scotland Ltd | Authentication method using a third party |
US7961878B2 (en) | 2007-10-15 | 2011-06-14 | Adobe Systems Incorporated | Imparting cryptographic information in network communications |
JP5238219B2 (ja) * | 2007-10-29 | 2013-07-17 | 株式会社東芝 | 情報処理システム及びパイプライン処理制御方法 |
US8739163B2 (en) * | 2008-03-11 | 2014-05-27 | University Of Washington | Critical path deterministic execution of multithreaded applications in a transactional memory system |
US20090177697A1 (en) | 2008-01-08 | 2009-07-09 | International Business Machines Corporation | Correlation and parallelism aware materialized view recommendation for heterogeneous, distributed database systems |
US7937482B1 (en) | 2008-03-27 | 2011-05-03 | Amazon Technologies, Inc. | Scalable consensus protocol |
US8037295B2 (en) | 2008-04-15 | 2011-10-11 | Authenex, Inc. | Hardware-bonded credential manager method and system |
WO2009144534A1 (en) | 2008-05-26 | 2009-12-03 | Nxp B.V. | Decoupling of measuring the response time of a transponder and its authentication |
US11461785B2 (en) | 2008-07-10 | 2022-10-04 | Ron M. Redlich | System and method to identify, classify and monetize information as an intangible asset and a production model based thereon |
JP2010021888A (ja) | 2008-07-11 | 2010-01-28 | Toshiba Corp | 通信装置、鍵サーバ及び管理サーバ |
US7631034B1 (en) | 2008-09-18 | 2009-12-08 | International Business Machines Corporation | Optimizing node selection when handling client requests for a distributed file system (DFS) based on a dynamically determined performance index |
US8150723B2 (en) | 2009-01-09 | 2012-04-03 | Yahoo! Inc. | Large-scale behavioral targeting for advertising over a network |
US9344401B2 (en) | 2009-02-04 | 2016-05-17 | Citrix Systems, Inc. | Methods and systems for providing translations of data retrieved from a storage system in a cloud computing environment |
US20100332373A1 (en) | 2009-02-26 | 2010-12-30 | Jason Crabtree | System and method for participation in energy-related markets |
US9178935B2 (en) | 2009-03-05 | 2015-11-03 | Paypal, Inc. | Distributed steam processing |
CN101520805B (zh) | 2009-03-25 | 2011-05-11 | 中兴通讯股份有限公司 | 一种分布式文件系统及其文件处理方法 |
US20100318516A1 (en) * | 2009-06-10 | 2010-12-16 | Google Inc. | Productive distribution for result optimization within a hierarchical architecture |
CN101621405B (zh) | 2009-07-07 | 2012-02-29 | 中兴通讯股份有限公司 | 分布式管理监控系统及其监控方法、创建方法 |
US8484716B1 (en) | 2009-08-07 | 2013-07-09 | Adobe Systems Incorporated | Hosting a server application on multiple network tiers |
US8782086B2 (en) | 2009-08-27 | 2014-07-15 | Cleversafe, Inc. | Updating dispersed storage network access control information |
US7970861B2 (en) | 2009-11-18 | 2011-06-28 | Microsoft Corporation | Load balancing in a distributed computing environment |
US8631403B2 (en) * | 2010-01-04 | 2014-01-14 | Vmware, Inc. | Method and system for managing tasks by dynamically scaling centralized virtual center in virtual infrastructure |
US20110179160A1 (en) | 2010-01-21 | 2011-07-21 | Microsoft Corporation | Activity Graph for Parallel Programs in Distributed System Environment |
JP5594460B2 (ja) * | 2010-03-08 | 2014-09-24 | 日本電気株式会社 | 送信情報制御装置、方法及びプログラム |
US8874961B2 (en) | 2010-03-22 | 2014-10-28 | Infosys Limited | Method and system for automatic failover of distributed query processing using distributed shared memory |
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 |
US9665868B2 (en) | 2010-05-10 | 2017-05-30 | Ca, Inc. | One-time use password systems and methods |
US20120016901A1 (en) | 2010-05-18 | 2012-01-19 | Google Inc. | Data Storage and Processing Service |
US9323775B2 (en) * | 2010-06-19 | 2016-04-26 | Mapr Technologies, Inc. | Map-reduce ready distributed file system |
US8260826B2 (en) | 2010-09-23 | 2012-09-04 | Hewlett-Packard Development Company, L.P. | Data processing system and method |
US8260803B2 (en) | 2010-09-23 | 2012-09-04 | Hewlett-Packard Development Company, L.P. | System and method for data stream processing |
EP3920465B1 (en) | 2010-10-08 | 2023-12-06 | Brian Lee Moffat | Private data sharing system |
US20120036146A1 (en) * | 2010-10-26 | 2012-02-09 | ParElastic Corporation | Apparatus for elastic database processing with heterogeneous data |
US8676710B2 (en) | 2010-11-22 | 2014-03-18 | Netapp, Inc. | Providing security in a cloud storage environment |
US8601265B2 (en) | 2010-11-22 | 2013-12-03 | Netapp, Inc. | Method and system for improving storage security in a cloud computing environment |
US8631277B2 (en) * | 2010-12-10 | 2014-01-14 | Microsoft Corporation | Providing transparent failover in a file system |
US9026525B2 (en) * | 2010-12-27 | 2015-05-05 | Sap Se | Generic node including stored script |
US8788815B1 (en) | 2011-01-31 | 2014-07-22 | Gazzang, Inc. | System and method for controlling access to decrypted data |
US8762413B2 (en) * | 2011-04-25 | 2014-06-24 | Cbs Interactive, Inc. | User data store |
US8543538B2 (en) | 2011-06-01 | 2013-09-24 | Clustrix, Inc. | Systems and methods for redistributing data in a relational database |
US20130031240A1 (en) | 2011-07-29 | 2013-01-31 | Cisco Technology, Inc. | Capacity Evaluation of Computer Network Capabilities |
EP2740041B1 (en) * | 2011-08-02 | 2019-10-23 | Jadhav, Ajay | Cloud-based distributed persistence and cache data model |
US8533231B2 (en) | 2011-08-12 | 2013-09-10 | Nexenta Systems, Inc. | Cloud storage system with distributed metadata |
WO2013025655A2 (en) | 2011-08-12 | 2013-02-21 | Mcalister Technologies, Llc | Systems and methods for providing supplemental aqueous thermal energy |
US8543836B2 (en) | 2011-08-23 | 2013-09-24 | International Business Machines Corporation | Lightweight document access control using access control lists in the cloud storage or on the local file system |
US8713046B2 (en) | 2011-11-08 | 2014-04-29 | Sybase, Inc. | Snapshot isolation support for distributed query processing in a shared disk database cluster |
US20130124483A1 (en) | 2011-11-10 | 2013-05-16 | Treasure Data, Inc. | System and method for operating a big-data platform |
US8918363B2 (en) * | 2011-11-14 | 2014-12-23 | Google Inc. | Data processing service |
US9613104B2 (en) | 2012-02-17 | 2017-04-04 | Netflix, Inc. | System and method for building a point-in-time snapshot of an eventually-consistent data store |
US8806595B2 (en) | 2012-07-25 | 2014-08-12 | Oracle International Corporation | System and method of securing sharing of resources which require consent of multiple resource owners using group URI's |
US8892599B2 (en) | 2012-10-24 | 2014-11-18 | Marklogic Corporation | Apparatus and method for securing preliminary information about database fragments for utilization in mapreduce processing |
US8732674B1 (en) * | 2012-11-14 | 2014-05-20 | Microsoft Corporation | Revertable managed execution image instrumentation |
US9311354B2 (en) * | 2012-12-29 | 2016-04-12 | Futurewei Technologies, Inc. | Method for two-stage query optimization in massively parallel processing database clusters |
US9081826B2 (en) * | 2013-01-07 | 2015-07-14 | Facebook, Inc. | System and method for distributed database query engines |
US9342557B2 (en) * | 2013-03-13 | 2016-05-17 | Cloudera, Inc. | Low latency query engine for Apache Hadoop |
US10133800B2 (en) | 2013-09-11 | 2018-11-20 | Microsoft Technology Licensing, Llc | Processing datasets with a DBMS engine |
US9477731B2 (en) | 2013-10-01 | 2016-10-25 | Cloudera, Inc. | Background format optimization for enhanced SQL-like queries in Hadoop |
-
2013
- 2013-03-13 US US13/800,280 patent/US9342557B2/en active Active
-
2014
- 2014-02-18 CA CA2843459A patent/CA2843459C/en active Active
- 2014-02-18 CA CA2912038A patent/CA2912038C/en active Active
- 2014-03-06 EP EP14157984.7A patent/EP2778967A1/en not_active Withdrawn
- 2014-03-06 GB GB1403929.1A patent/GB2511935A/en not_active Withdrawn
- 2014-03-11 KR KR1020140028136A patent/KR101621137B1/ko active IP Right Grant
- 2014-03-12 AU AU2014201441A patent/AU2014201441B2/en active Active
- 2014-03-13 JP JP2014049703A patent/JP6050272B2/ja active Active
-
2016
- 2016-05-13 US US15/154,727 patent/US9990399B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US9342557B2 (en) | 2016-05-17 |
CA2843459A1 (en) | 2014-07-08 |
KR20140112427A (ko) | 2014-09-23 |
US20140280032A1 (en) | 2014-09-18 |
US9990399B2 (en) | 2018-06-05 |
JP2014194769A (ja) | 2014-10-09 |
EP2778967A1 (en) | 2014-09-17 |
AU2014201441A1 (en) | 2014-10-02 |
US20170132283A1 (en) | 2017-05-11 |
GB201403929D0 (en) | 2014-04-23 |
CA2912038C (en) | 2018-02-13 |
AU2014201441B2 (en) | 2016-03-03 |
CA2912038A1 (en) | 2014-07-08 |
GB2511935A (en) | 2014-09-17 |
CA2843459C (en) | 2016-01-19 |
JP6050272B2 (ja) | 2016-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101621137B1 (ko) | 아파치 하둡을 위한 로우 레이턴시 쿼리 엔진 | |
US11567956B2 (en) | Background format optimization for enhanced queries in a distributed computing cluster | |
US11036735B2 (en) | Dimension context propagation techniques for optimizing SQL query plans | |
US11977549B2 (en) | Clustering event processing engines | |
JP2014194769A6 (ja) | Apache hadoop用の低レイテンシクエリエンジン | |
US8762408B2 (en) | Optimizing software applications | |
US20160103914A1 (en) | Offloading search processing against analytic data stores | |
US10938907B2 (en) | Techniques and architectures for managing disparate heterogeneous cloud-based resources | |
US11741393B2 (en) | Machine learning lifecycle management | |
CA3238279A1 (en) | Privacy preserving federated query engine |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20190214 Year of fee payment: 4 |