KR102520110B1 - 데이터베이스 쿼리 처리를 향상시키기 위한 프루닝 인덱스 - Google Patents
데이터베이스 쿼리 처리를 향상시키기 위한 프루닝 인덱스 Download PDFInfo
- Publication number
- KR102520110B1 KR102520110B1 KR1020217031021A KR20217031021A KR102520110B1 KR 102520110 B1 KR102520110 B1 KR 102520110B1 KR 1020217031021 A KR1020217031021 A KR 1020217031021A KR 20217031021 A KR20217031021 A KR 20217031021A KR 102520110 B1 KR102520110 B1 KR 102520110B1
- Authority
- KR
- South Korea
- Prior art keywords
- filter
- micro
- data
- partitions
- query
- 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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
-
- 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/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
- G06F16/24557—Efficient disk access during query execution
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/221—Column-oriented storage; Management thereof
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- 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
-
- 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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- 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/903—Querying
- G06F16/9035—Filtering based on additional data, e.g. user or group profiles
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/18—Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
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)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Evolutionary Biology (AREA)
- Algebra (AREA)
- Probability & Statistics with Applications (AREA)
- Operations Research (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
마이크로-파티션의 세트로 조직화된 소스 테이블은 네트워크-기반 데이터 웨어하우스에 의해 액세스된다. 프루닝 인덱스는 소스 테이블에 기초하여 생성된다. 프루닝 인덱스는 소스 테이블의 각 열에서의 개별 값의 위치를 나타내는 필터의 세트를 포함한다. 소스 테이블을 대상으로 하는 퀴리는 네트워크 기반 데이터 웨어하우스에서 수신된다. 쿼리는 프루닝 인덱스를 사용하여 처리된다. 쿼리의 처리는 쿼리에 매칭되는 데이터를 스캐닝하기 위해 소스 테이블의 마이크로-파티션의 세트를 프루닝하는 것을 포함하고, 복수의 마이크로-파티션에 대한 프루닝은, 프루닝 인덱스를 사용하여, 쿼리에 매칭되는 데이터를 스캐닝하기 위해 마이크로-파티션의 서브세트를 식별하는 것을 포함한다.
Description
본 출원은 2019 년 12 월 26 일자로 출원된 미국 특허 출원 제16/727,315호에 대한 우선권을 주장하며, 그 내용은 그 전체가 본 명세서에 참고로 인용된다.
본 발명의 실시 형태는, 일반적으로 데이터베이스에 관한 것으로, 보다 구체적으로는, 클라우드 데이터 웨어하우스 시스템에서 데이터베이스 쿼리 처리를 향상시키기 위해 프루닝 인덱스를 생성하고 사용하는 것에 관한 것이다.
데이터베이스는 컴퓨팅 애플리케이션에서의 데이터 저장 및 액세스를 위해 널리 사용된다. 데이터베이스 저장의 목적은 막대한 양의 정보를 액세스, 관리 및 업데이트 가능하도록 조직화된 방식으로 제공하는 것이다. 데이터베이스에 있어서, 데이터는 행, 열 및 테이블로 조직화될 수 있다. 데이터베이스는 액세스되거나 분석될 필요가 있을 수 있는 정보를 저장하기 위해 다양한 엔티티 및 회사에 의해 사용된다.
클라우드 데이터 웨어하우스("네트워크 기반 데이터 웨어하우스" 또는 간단히 "데이터 웨어하우스"라고도 지칭됨)는, 하나 이상의 서로 다른 소스로부터의 통합 데이터의 중앙 저장소를 포함하는 데이터 분석 및 보고를 위해 사용되는 네트워크 기반 시스템이다. 클라우드 데이터 웨어하우스는, 기업의 데이터베이스 내에 저장된 데이터에 기초하여 해당 기업에 대한 분석 보고서를 생성하는 데에 사용 가능한 현재 및 과거 데이터를 저장할 수 있다. 이를 위해, 데이터 웨어하우스는 전형적으로 비즈니스 지능 툴, 데이터를 추출 및 변환하거나 데이터를 저장소에 로딩하는 툴, 및 메타데이터를 관리하거나 검색하는 툴을 제공한다.
임의의 정보를 데이터베이스로부터 추출하여야 하는 경우, 데이터베이스 데이터에 대해 쿼리 명령문이 실행될 수 있다. 클라우드 데이터 웨어하우스 시스템은 쿼리를 처리하고, 어떤 정보가 해당 쿼리에 의해 리턴되어야 하는지를 나타내는 하나 이상의 쿼리 술어(predicates)에 따라 임의의 데이터를 리턴한다. 데이터 웨어하우스 시스템은 데이터베이스로부터 특정 데이터를 추출하고, 그 데이터를 판독 가능한 형태로 포맷팅한다. 그러나, 쿼리를 충족시키는 데이터를 식별하기 위해 전체 테이블을 스캔하는데 상당한 양의 시간 및 컴퓨팅 리소스가 요구되기 때문에, 매우 큰 테이블 상에서 쿼리들을 실행하는 것은 어려울 수 있다.
본 발명은, 하기의 상세한 설명 및 본 발명의 다양한 실시 형태의 첨부 도면으로부터 보다 충분히 이해될 것이다.
도 1은 본 발명의 몇몇 실시 형태에 따른, 클라우드 스토리지 제공자 시스템과 통신하는 네트워크 기반 데이터 웨어하우스 시스템을 포함하는 예시적인 컴퓨팅 환경을 도시한다.
도 2는 본 발명의 몇몇 실시 형태에 따른, 컴퓨팅 서비스 관리자의 구성 요소를 예시하는 블록도이다.
도 3은 본 발명의 몇몇 실시 형태에 따른, 실행 플랫폼의 구성 요소를 예시하는 블록도이다.
도 4는 예시적인 몇몇 실시 형태에 따른, 소스 테이블에 기초하여 네트워크 기반 데이터 웨어하우스 시스템에 의해 생성된 프루닝 인덱스의 일부를 형성할 수 있는, 블록화 블룸 필터의 생성을 예시하는 개념도이다.
도 5는 본 발명의 몇몇 실시 형태에 따른, 예시적인 프루닝 인덱스의 일부를 예시한다.
도 6은 본 발명의 몇몇 실시 형태에 따른, 프루닝 인덱스의 단일 블룸 필터를 도시한다.
도 7은 몇몇 실시 형태에 따른, 프루닝 인덱스의 생성에 관한 추가적인 상세를 예시하는 개념도이다.
도 8은 몇몇 실시 형태에 따른, 프루닝 인덱스의 유지를 예시하는 개념도이다.
도 9 내지 도 13은 본 발명의 몇몇 실시 형태에 따른, 데이터베이스 쿼리의 처리시에 프루닝 인덱스를 생성하고 사용하는 방법을 수행함에 있어서 네트워크 기반 데이터 웨어하우스 시스템의 동작을 설명하는 흐름도이다.
도 14는 본 발명의 몇몇 실시 형태에 따른, 머신이 본 명세서에서 개시된 방법론 중 임의의 하나 이상을 수행하도록 명령어 세트가 실행될 수 있는 컴퓨터 시스템의 형태로 상기 머신을 도식적으로 표현한 도면이다.
도 1은 본 발명의 몇몇 실시 형태에 따른, 클라우드 스토리지 제공자 시스템과 통신하는 네트워크 기반 데이터 웨어하우스 시스템을 포함하는 예시적인 컴퓨팅 환경을 도시한다.
도 2는 본 발명의 몇몇 실시 형태에 따른, 컴퓨팅 서비스 관리자의 구성 요소를 예시하는 블록도이다.
도 3은 본 발명의 몇몇 실시 형태에 따른, 실행 플랫폼의 구성 요소를 예시하는 블록도이다.
도 4는 예시적인 몇몇 실시 형태에 따른, 소스 테이블에 기초하여 네트워크 기반 데이터 웨어하우스 시스템에 의해 생성된 프루닝 인덱스의 일부를 형성할 수 있는, 블록화 블룸 필터의 생성을 예시하는 개념도이다.
도 5는 본 발명의 몇몇 실시 형태에 따른, 예시적인 프루닝 인덱스의 일부를 예시한다.
도 6은 본 발명의 몇몇 실시 형태에 따른, 프루닝 인덱스의 단일 블룸 필터를 도시한다.
도 7은 몇몇 실시 형태에 따른, 프루닝 인덱스의 생성에 관한 추가적인 상세를 예시하는 개념도이다.
도 8은 몇몇 실시 형태에 따른, 프루닝 인덱스의 유지를 예시하는 개념도이다.
도 9 내지 도 13은 본 발명의 몇몇 실시 형태에 따른, 데이터베이스 쿼리의 처리시에 프루닝 인덱스를 생성하고 사용하는 방법을 수행함에 있어서 네트워크 기반 데이터 웨어하우스 시스템의 동작을 설명하는 흐름도이다.
도 14는 본 발명의 몇몇 실시 형태에 따른, 머신이 본 명세서에서 개시된 방법론 중 임의의 하나 이상을 수행하도록 명령어 세트가 실행될 수 있는 컴퓨터 시스템의 형태로 상기 머신을 도식적으로 표현한 도면이다.
이하, 본 발명을 실현하기 위한 특정한 예시적인 실시 형태가 상세히 참조될 것이다. 이들 특정한 실시 형태의 예는 첨부 도면에서 예시되며, 구체적인 상세는 본 발명의 충분한 이해를 제공하기 위해 다음 설명에서 기재된다. 이러한 예가, 청구 범위를 예시된 실시 형태에만 한정하는 것이 아님을 이해할 것이다. 반대로, 이러한 예는 본 발명의 범위 내에 포함될 수 있는 다양한 대체, 수정 및 등가물을 커버하도록 의도된다.
전술한 바와 같이, 쿼리를 충족시키는 데이터를 식별하기 위해 전체 테이블을 스캔하는 데에 상당한 양의 시간 및 컴퓨팅 리소스가 요구되기 때문에, 매우 큰 테이블에 관한 쿼리를 처리하는 것은 어렵다. 따라서, 전체 테이블을 스캔하지 않고 쿼리를 실행하는 것이 바람직할 수 있다. 본 발명의 양태는, 쿼리를 처리하기 위한 축소된 스캔 세트를 구성하기 위해 사용될 수 있는 프루닝 인덱스를 생성함으로써 큰 테이블 상의 쿼리를 처리함에 있어서 상기 과제를 비롯한 다른 과제를 해결한다. 보다 구체적으로, 큰 소스 테이블은 마이크로-파티션의 세트로 조직화될 수 있고, 프루닝 인덱스는, 쿼리를 충족시키는 데이터를 식별하기 위해 스캐닝할 마이크로-파티션의 서브세트를 식별하는데 사용될 소스 테이블에 대해 생성될 수 있다.
본 명세서에서의 "마이크로-파티션"은 배치 유닛이고, 각 마이크로-파티션은 인접한 저장 유닛을 갖는다. 일 예로서, 각 마이크로-파티션은 50 MB 내지 500 MB의 비압축 데이터를 포함할 수 있다(데이터가 압축 상태로 저장될 수 있기 때문에 저장소의 실제 크기는 더 작을 수 있음을 이해할 것이다). 테이블에서의 행의 그룹은, 열 방식으로 조직화된 개별 마이크로-파티션에 매핑될 수 있다. 이러한 크기 및 구조에 의해, 마이크로-파티션은 극도로 세분화되어 선택되어 스캔될 수 있어, 구조가 수백만 또는 수억개의 마이크로-파티션으로 구성될 수 있다. 스캐닝될 마이크로-파티션에 대한 이러한 세분화된 선택 처리를 본 명세서에서는 "프루닝(pruning)"이라고 칭한다. 프루닝은, 메타데이터를 이용하여 테이블에서의 어느 마이크로-파티션 또는 마이크로-파티션 그룹화가 쿼리에 관련되지 않는지를 결정한 후, 쿼리에 응답할 때 그러한 관련되지 않는 마이크로-파티션을 회피하고, 쿼리에 응답하기 위해 관련된 마이크로-파티션만을 스캐닝하는 것을 수반한다. 메타데이터는, 마이크로-파티션에서의 각 열에 대한 값의 범위, 개별 값들의 개수, 및/또는 최적화와 효율적인 쿼리 처리의 양방에 이용되는 부가적인 속성을 비롯하여, 마이크로-파티션에 저장된 모든 행에 대해 자동으로 수집될 수 있다. 일 실시 형태에 있어서, 마이크로-파티션 처리는 모든 테이블에 대해 자동으로 수행될 수 있다. 예를 들면, 테이블은 데이터가 삽입/로딩될 때 발생하는 순서를 이용하여 투명하게 분할될 수 있다. 그러나, 본 발명에서의 마이크로-파티션은 단지 예시이며, 한정적으로 해석되지 않음을 이해할 것이다. 마이크로-파티션은 본 발명의 범위를 벗어나지 않고 다른 데이터베이스 저장 장치를 포함할 수 있다는 것을 이해할 것이다.
몇몇 실시 형태에 따르면, 네트워크 기반 데이터 웨어하우스 시스템은 소스 테이블에 대한 프루닝 인덱스를 생성하고, 소스 테이블을 대상으로 하는 쿼리를 처리할 때, 그 생성된 프루닝 인덱스를 사용하여 소스 테이블의 마이크로-파티션을 프루닝할 수 있다. 프루닝 인덱스를 생성할 때, 네트워크 기반 데이터 웨어하우스 시스템은, 소스 테이블의 마이크로-파티션의 각 열에서 개별 값을 인덱싱하기 위하여 소스 테이블의 각 마이크로-파티션마다 필터를 생성한다. 필터는, 예를 들면, 블록화 블룸 필터, 블룸 필터, 해시 필터, 또는 쿠쿠 필터(cuckoo filter)를 포함할 수 있다.
등식 술어를 포함하는 쿼리를 수신하면, 네트워크 기반 데이터 웨어하우스 시스템은, 등식 술어를 평가하기 위해 전체 소스 테이블을 스캐닝하기보다는, 소스 테이블의 마이크로-파티션의 서브세트만을 포함하는 마이크로-파티션의 감소된 스캔 세트를 식별하기 위해 프루닝 인덱스를 조사(probe)하며, 마이크로-파티션의 감소된 스캔 세트만이 쿼리를 실행할 때 스캐닝된다.
프루닝 인덱스를 사용하여 쿼리의 실행시에 스캔할 마이크로-파티션의 세트를 프루닝함으로써, 네트워크 기반 데이터 웨어하우스는 종래의 방법론과 비교할 때 큰 테이블 상에서 포인트 쿼리의 실행을 가속한다. 이러한 방식으로 프루닝 인덱스를 사용함으로써, 테이블 상의 임의의 등식 술어에 대하여 일정한 오버헤드를 또한 보장한다. 데이터 웨어하우스에서 프루닝 인덱스를 활용함으로써 얻어지는 부가적인 이점으로는, 다른 유형의 술어를 지원할 수 있고, 테이블에서의 개별 값의 개수를 신속하게 계산할 수 있으며, 결합 프루닝(join pruning)을 지원할 수 있는 것을 포함하지만, 이들에 한정되지 않는다.
도 1은, 본 발명의 몇몇 실시 형태에 따른, 저장 플랫폼(104)과 통신하는 네트워크 기반 데이터 웨어하우스 시스템(102)을 포함하는 예시적인 컴퓨팅 환경(100)을 도시한다. 불필요한 상세한 설명으로 본 발명의 이해를 모호하게 하는 것을 피하기 위해, 본 발명의 이해에 관련이 없는 다양한 기능적 구성 요소는 도 1에서 생략되었다. 그러나, 당업자라면, 본 명세서에서 구체적으로 설명되지 않은 추가적인 기능을 용이하게 하기 위해 다양한 추가적인 기능적 구성 요소가 컴퓨팅 환경(100)의 일부로서 포함될 수 있다는 것을 쉽게 인식할 것이다.
도시된 바와 같이, 컴퓨팅 환경(100)은 네트워크 기반 데이터 웨어하우스 시스템(102) 및 저장 플랫폼(104)(예를 들면, AWS®, Microsoft Azure Blob Storage®, 또는 Google Cloud Storage®)을 포함한다. 네트워크 기반 데이터 웨어하우스 시스템(102)은, 저장 플랫폼(104) 내의 저장 장치(106-1 내지 106-N)을 포함하는 하나 이상의 개별 소스로부터의 통합 데이터를 보고하거나 분석하는 데에 사용된다. 저장 플랫폼(104)은 복수의 컴퓨팅 머신을 포함하고, 데이터 저장 및 계산 능력과 같은 온-디멘드 컴퓨터 시스템 리소스를 네트워크 기반 데이터 웨어하우스 시스템(102)에 제공한다.
네트워크 기반 데이터 웨어하우스 시스템(102)은 컴퓨팅 서비스 관리자(108), 실행 플랫폼(110) 및 데이터베이스(114)를 포함한다. 네트워크 기반 데이터 웨어하우스 시스템(102)은 데이터 보고 및 분석 서비스를 호스팅하고 다수의 클라이언트 계정에 제공한다. 관리적 사용자는 아이덴티티(예를 들면, 사용자, 역할, 및 그룹)을 생성하고 관리할 수 있고, 권한을 이용하여 아이덴티티의 리소스 및 서비스에 대한 액세스를 허용하거나 거부할 수 있다.
컴퓨팅 서비스 관리자(108)는 네트워크 기반 데이터 웨어하우스 시스템(102)의 동작을 조정하고 관리한다. 또한, 컴퓨팅 서비스 관리자(108)는 쿼리 최적화 및 컴파일링을 수행할 뿐만 아니라 컴퓨팅 리소스(“가상 웨어하우스”로도 지칭됨)를 제공하는 컴퓨팅 서비스의 클러스터를 관리한다. 컴퓨팅 서비스 관리자(108)는 데이터 저장 및 검색 요청을 제공하는 최종 사용자, 본 명세서에서 설명된 시스템 및 방법을 관리하는 시스템 관리자, 및 컴퓨팅 서비스 관리자(108)와 상호 작용하는 다른 구성 요소/장치와 같은 임의의 수의 클라이언트 계정을 지원할 수 있다.
또한, 컴퓨팅 서비스 관리자(108)는 사용자 장치(112)와 통신한다. 사용자 장치(112)는 네트워크 기반 데이터 웨어하우스 시스템(102)에 의해 지원되는 다수의 클라이언트 계정 중 하나의 사용자에 대응한다. 몇몇 실시 형태에 있어서, 컴퓨팅 서비스 관리자(108)는 사용자 장치(112)로부터 어떠한 직접적인 통신을 수신하지 않고, 네트워크 기반 데이터 웨어하우스 시스템(102) 내의 큐로부터 작업에 관한 통신만을 수신한다.
또한, 컴퓨팅 서비스 관리자(108)는 컴퓨팅 환경(100)에 저장된 데이터와 연관된 데이터베이스(114)에 결합된다. 데이터베이스(114)는 네트워크 기반 데이터 웨어하우스 시스템(102) 및 그 사용자와 연관된 다양한 기능 및 양태에 관한 데이터를 저장한다. 몇몇 실시 형태에 있어서, 데이터베이스(114)는 원격 데이터 저장 시스템에 저장된 데이터의 개요 및 로컬 캐시로부터 입수 가능한 데이터를 포함한다. 또한, 데이터베이스(114)는 데이터가 원격 데이터 저장 시스템(예를 들면, 저장 플랫폼(104)) 및 로컬 캐시에서 어떻게 조직화되는지에 관한 정보를 포함할 수 있다. 데이터베이스(114)를 통해서, 시스템 및 서비스가 저장 장치로부터 실제 데이터를 로드하거나 액세스하지 않고 데이터에 액세스할 필요가 있는지 여부를 결정할 수 있다.
예를 들면, 데이터베이스(114)는 하나 이상의 프루닝 인덱스를 포함할 수 있다. 컴퓨팅 서비스 관리자(108)는 저장 플랫폼(104)으로부터 액세스된 각 소스 테이블에 대한 프루닝 인덱스를 생성하고, 쿼리를 실행할 때 데이터를 스캔하기 위해 소스 테이블의 마이크로-파티션의 세트를 프루닝하는 데에 프루닝 인덱스를 사용할 수 있다. 즉, 마이크로-파티션의 세트로 조직화된 소스 테이블을 대상으로 하는 쿼리가 주어지면, 컴퓨팅 서비스 관리자(108)는 데이터베이스(114)로부터 프루닝 인덱스에 액세스하고, 그 프루닝 인덱스를 이용하여 쿼리의 실행 시에 스캐닝할 마이크로-파티션의 감소된 세트를 식별할 수 있다. 쿼리의 실행 시에 스캔할 마이크로-파티션의 세트를 본 명세서에서 "스캔 세트"로 칭하는 경우도 있다.
몇몇 실시 형태에 있어서, 컴퓨팅 서비스 관리자(108)는 데이터베이스(114)로부터의 데이터에 기초하여 작업이 수행되어야 한다고 결정할 수 있다. 이러한 실시 형태에 있어서, 컴퓨팅 서비스 관리자(108)는 데이터를 스캔하고, 작업이 데이터 조직화 또는 데이터베이스 성능을 개선하기 위해 수행되어야 한다고 결정할 수 있다. 예를 들면, 컴퓨팅 서비스 관리자(108)는, 새로운 버전의 소스 테이블이 생성되었고, 프루닝 인덱스가 그 새로운 버전의 소스 테이블을 반영하도록 리프레시(refreshed)되지 않았다고 결정할 수 있다. 데이터베이스(114)는 새로운 버전의 소스 테이블이 언제 생성되었는지 및 프루닝 인덱스가 언제 마지막으로 리프레시되었는지를 나타내는 트랜잭션 변경 추적 스트림을 포함할 수 있다. 그 트랜잭션 스트림에 기초하여, 컴퓨팅 서비스 관리자(108)는 작업이 수행되어야 한다고 결정할 수 있다. 몇몇 실시 형태에 있어서, 컴퓨팅 서비스 관리자(108)는 트리거 이벤트에 기초하여 작업이 수행되어야 한다고 결정하고, 컴퓨팅 서비스 관리자(108)가 작업의 실행을 스케줄링하고 관리할 준비가 될 때까지 작업을 큐에 저장한다. 본 발명의 일 실시 형태에 있어서, 컴퓨팅 서비스 관리자(108)는 수행되고 있는 하나 이상의 DML 커맨드에 기초하여 테이블 또는 프루닝 인덱스가 재클러스터화될 필요가 있는지를 결정하고, 여기서, DML 커맨드 중 하나 이상은 트리거 이벤트를 구성한다.
컴퓨팅 서비스 관리자(108)는 다양한 데이터 저장 및 데이터 검색 태스크를 실행하는 다수의 컴퓨팅 리소스를 제공하는 실행 플랫폼(110)에 더 결합된다. 실행 플랫폼(110)은 저장 플랫폼(104)의 저장 플랫폼(104)에 결합된다. 저장 플랫폼(104)은 다수의 데이터 저장 장치(106-1 내지 106-N)를 포함한다. 몇몇 실시 형태에 있어서, 데이터 저장 장치(106-1 내지 106-N)는 하나 이상의 지리적 위치에 위치한 클라우드 기반의 저장 장치이다. 예를 들면, 데이터 저장 장치(106-1 내지 106-N)는 퍼블릭 클라우드 인프라 또는 프라이빗 클라우드 인프라의 일부일 수 있다. 데이터 저장 장치(106-1 내지 106-N)는 하드 디스크 드라이브(HDD), 솔리드 스테이트 드라이브(SSD), 저장 클러스터, Amazon S3TM 저장 시스템 또는 임의의 다른 데이터 저장 기술일 수 있다. 또한, 저장 플랫폼(104)은 분산 파일 시스템(예를 들면, Hadoop Distributed File Systems(HDFS)), 오브젝트 저장 시스템 등을 포함할 수 있다.
실행 플랫폼(110)은 복수의 컴퓨팅 노드를 포함한다. 컴퓨팅 노드 상의 프로세스 세트는 컴퓨팅 서비스 관리자(108)에 의해 컴파일된 쿼리 계획을 실행한다. 프로세스 세트는, 쿼리 계획을 실행하는 제1 프로세스와, 최장시간 미사용(least recently used(LRU)) 폴리시를 이용하여 마이크로-파티션 파일을 모니터링 및 삭제하고 메모리 부족(out of memory(OOM)) 오류 완화 프로세스를 구현하는 제2 프로세스와, 컴퓨팅 서비스 관리자(108)에 다시 전송하기 위해 프로세스 로그 및 상태로부터 건강 정보를 추출하는 제3 프로세스와, 시스템 부팅 후에 컴퓨팅 서비스 관리자(108)와 통신을 구축하기 위한 제4 프로세스와, 컴퓨팅 서비스 관리자(108)에 의해 제공되는 주어진 작업에 대한 컴퓨팅 클러스터와의 모든 통신을 처리하고, 컴퓨팅 서비스 관리자(108) 및 실행 플랫폼(110)의 다른 컴퓨팅 노드에 정보를 다시 전달하는 제5 프로세스를 포함할 수 있다.
몇몇 실시 형태에 있어서, 컴퓨팅 환경(100)의 요소 사이의 통신 링크는 하나 이상의 데이터 통신 네트워크를 통해 구현된다. 이들 데이터 통신 네트워크는 임의의 통신 프로토콜 및 임의의 유형의 통신 매체를 사용할 수 있다. 몇몇 실시 형태에 있어서, 데이터 통신 네트워크는 서로 결합된 둘 이상의 데이터 통신 네트워크(또는 서브-네트워크)의 조합이다. 대안적인 실시 형태에 있어서, 이들 통신 링크는 임의의 유형의 통신 매체 및 임의의 통신 프로토콜을 이용하여 구현된다.
도 1에 도시된 바와 같이, 데이터 저장 장치(106-1 내지 106-N)는 실행 플랫폼(110)과 연관된 컴퓨팅 리소스로부터 분리된다. 이러한 아키텍처는, 변화하는 데이터 저장/검색의 니즈 뿐만 아니라 사용자 및 시스템의 변화하는 니즈에 기초하여 네트워크 기반 데이터 웨어하우스 시스템(102)에 대한 동적 변화를 지원한다. 동적 변화의 지원을 통해서, 네트워크 기반 데이터 웨어하우스 시스템(102)은 네트워크 기반 데이터 웨어하우스 시스템(102) 내의 시스템 및 구성 요소에 대한 변화 요구에 응답하여 빠르게 확장할 수 있다. 데이터 저장 장치로부터의 컴퓨팅 리소스의 분리는, 대응하는 다량의 컴퓨팅 리소스를 필요로 하지 않고 다량의 데이터의 저장을 지원한다. 마찬가지로, 이러한 리소스의 분리는, 사용 가능한 데이터 저장 리소스의 대응하는 증가를 요구하지 않고도 특정 시간에 활용되는 컴퓨팅 리소스의 상당한 증가를 지원한다.
컴퓨팅 서비스 관리자(108), 데이터베이스(114), 실행 플랫폼(110) 및 저장 플랫폼(104)이 개별 구성 요소로서 도 1에 도시되어 있다. 그러나, 컴퓨팅 서비스 관리자(108), 데이터베이스(114), 실행 플랫폼(110) 및 저장 플랫폼(104)의 각각은, 분산 시스템(예를 들면, 다수의 지리적 위치에서의 다수의 시스템/플랫폼에 걸쳐 분산됨)으로서 구현될 수 있다. 또한, 컴퓨팅 서비스 관리자(108), 데이터베이스(114), 실행 플랫폼(110), 및 저장 플랫폼(104)의 각각은, 수신된 요청의 변경 및 네트워크 기반 데이터 웨어하우스 시스템(102)의 변화하는 니즈에 따라 (서로 독립적으로) 확장 또는 축소될 수 있다. 따라서, 설명된 실시 형태에 있어서, 네트워크 기반 데이터 웨어하우스 시스템(102)은 동적이며 현재 데이터 처리 니즈를 충족시키기 위해 정기적인 변경을 지원한다.
통상의 동작 중에, 네트워크 기반 데이터 웨어하우스 시스템(102)은 컴퓨팅 서비스 관리자(108)에 의해 결정된 다수의 작업을 처리한다. 이러한 작업은, 언제 어떻게 작업을 실행할지를 결정하기 위해 컴퓨팅 서비스 관리자(108)에 의해 스케쥴링되고 관리된다. 예를 들면, 컴퓨팅 서비스 관리자(108)는 작업을 다수의 개별 태스크로 분할할 수 있고, 다수의 개별 태스크의 각각을 실행하기 위해 어떤 데이터가 필요한지를 결정할 수 있다. 컴퓨팅 서비스 관리자(108)는, 태스크를 처리하기 위해 실행 플랫폼(110)의 하나 이상의 노드에 다수의 개별 태스크의 각각을 할당할 수 있다. 컴퓨팅 서비스 관리자(108)는, 태스크를 처리하는 데에 어떤 데이터가 필요한지 결정할 수 있고, 실행 플랫폼(110) 내의 어떤 노드가 작업을 처리하는 데에 가장 적합한지를 더 결정할 수 있다. 일부 노드는 태스크를 처리하는 데에 필요한 데이터를 이미 캐시하였을 수도 있고, 따라서 태스크를 처리하기에 좋은 후보가 될 수 있다. 데이터베이스(114)에 저장된 메타데이터는, 실행 플랫폼(110)에서의 어느 노드가 태스크를 처리하기 위하여 필요한 데이터의 적어도 일부를 이미 캐시하였는지를 결정하는 데에 컴퓨팅 서비스 관리자(108)를 지원한다. 실행 플랫폼(110)의 하나 이상의 노드는 해당 노드에 의해 캐시된 데이터, 및 필요한 경우 저장 플랫폼(104)에서 검색된 데이터를 이용하여 태스크를 처리한다. 일반적으로, 검색 속도는 저장 플랫폼(104)으로부터 데이터를 검색하는 속도보다 훨씬 빠르기 때문에, 실행 플랫폼(110) 내의 캐시로부터 가능한 한 많은 데이터를 검색하는 것이 바람직하다.
도 1에 도시된 바와 같이, 컴퓨팅 환경(100)은 실행 플랫폼(110)을 저장 플랫폼(104)으로부터 분리한다. 이러한 배치에 있어서, 실행 플랫폼(110)에서의 처리 리소스 및 캐시 리소스는 저장 플랫폼(104)의 데이터 저장 장치(106-1 내지 106-N)와 독립적으로 작동한다. 따라서, 컴퓨팅 리소스 및 캐시 리소스는 특정한 데이터 저장 장치(106-1 내지 106-N)에 제한되지 않는다. 대신에, 모든 컴퓨팅 리소스 및 모든 캐시 리소스는 저장 플랫폼(104)의 데이터 저장 리소스 중 임의의 리소스로부터 데이터를 검색하고 데이터를 저장할 수 있다.
도 2는, 본 발명의 몇몇 실시 형태에 따른, 컴퓨팅 서비스 관리자(108)의 구성 요소를 도시하는 블록도이다. 도 2에 도시된 바와 같이, 컴퓨팅 서비스 관리자(108)는 데이터 저장 장치(206)에 결합된 액세스 관리자(202) 및 키 관리자(204)를 포함한다. 액세스 관리자(202)는 본 명세서에 설명된 시스템에 대한 인증 및 권한 부여 태스크를 처리한다. 키 관리자(204)는 인증 및 권한 부여 태스크 시에 사용된 키의 저장 및 인증을 관리한다. 예를 들면, 액세스 관리자(202) 및 키 관리자(204)는 원격 저장 장치(예를 들면, 저장 플랫폼(104)의 데이터 저장 장치)에 저장된 데이터에 액세스하는데 사용되는 키를 관리한다. 본 명세서에서의 원격 저장 장치는 "지속형 저장 장치" 또는 "공용 저장 장치"이라고도 지칭될 수 있다.
요청 처리 서비스(208)는, 수신된 데이터 저장 요청 및 데이터 검색 요청(예를 들면, 데이터베이스 데이터에 대해 수행될 작업)을 관리한다. 예를 들면, 요청 처리 서비스(208)는 수신된 쿼리(예를 들면, 데이터 저장 요청 또는 데이터 검색 요청)를 처리하는 데 필요한 데이터를 결정할 수 있다. 데이터는 실행 플랫폼(110) 내의 캐시에 또는 저장 플랫폼(104) 내의 데이터 저장 장치에 저장될 수 있다.
관리 콘솔 서비스(210)는 관리자 및 기타 시스템 관리자에 의한 다양한 시스템 및 프로세스에 대한 액세스를 지원한다. 또한, 관리 콘솔 서비스(210)는 작업을 실행하고 시스템 상의 워크로드를 모니터링하기 위한 요청을 수신할 수 있다.
또한, 컴퓨팅 서비스 관리자(108)는 작업 컴파일러(212), 작업 최적화기(214) 및 작업 실행기(216)를 포함한다. 작업 컴파일러(212)는 작업을 다수의 개별 태스크로 파싱(parse)하고, 다수의 개별 태스크의 각각에 대한 실행 코드를 생성한다. 작업 최적화기(214)는 처리될 필요가 있는 데이터에 기초하여 다수의 개별 태스크를 실행하기 위한 최상의 방법을 결정한다. 작업 최적화기(214)는 또한 작업 실행의 속도 및 효율성을 개선하기 위해 다양한 데이터 프루닝 동작 및 기타 데이터 최적화 기술을 처리한다. 작업 실행기(216)는 큐로부터 수신되거나 컴퓨팅 서비스 관리자(108)에 의해 결정된 작업에 대한 실행 코드를 실행한다.
작업 스케줄러 및 조정자(218)는 수신된 작업을 컴파일 및 최적화를 위한 적절한 서비스 또는 시스템에 전송하고 실행 플랫폼(114)에 배정한다. 예를 들면, 작업은 우선 순위가 지정되고, 지정된 우선 순서대로 처리될 수 있다. 일 실시 형태에 있어서, 작업 스케줄러 및 조정자(218)는, 데이터베이스에서 다른 시스템에 의해 스케줄링될 수 있지만 실행 플랫폼(110)에서 동일한 처리 리소스를 활용할 수 있는 사용자 쿼리와 같은 다른 "외부" 작업과 함께 컴퓨팅 서비스 관리자(108)에 의해 스케줄링되는 내부 작업에 대한 우선순위를 결정한다. 몇몇 실시 형태에 있어서, 작업 스케줄러 및 조정자(218)는 실행 플랫폼(110)에서 특정 노드를 식별하거나 할당하여 특정 태스크를 처리한다. 가상 웨어하우스 관리자(220)는 실행 플랫폼(110)에서 구현된 다수의 가상 웨어하우스의 운영을 관리한다. 후술하는 바와 같이, 각 가상 웨어하우스는, 각각이 캐시 및 프로세서를 포함하는 다수의 실행 노드를 포함한다.
또한, 컴퓨팅 서비스 관리자(108)는 원격 데이터 저장 장치 및 로컬 캐시(예를 들면, 실행 플랫폼(110)의 캐시)에 저장된 데이터와 관련된 정보를 관리하는 컨피그레이션 및 메타데이터 관리자(222)를 포함한다. 컨피그레이션 및 메타데이터 관리자(222)는 메타데이터를 이용하여 특정 태스크 또는 작업을 처리하기 위한 데이터를 검색하기 위해 액세스해야 하는 데이터 마이크로-파티션을 결정한다. 모니터 및 워크로드 분석기(224)는 컴퓨팅 서비스 관리자(108)에 의해 수행되는 프로세스를 감독하고, 가상 웨어하우스 및 실행 플랫폼(110)의 실행 노드에 걸친 태스크(예를 들면, 워크로드)의 분배를 관리한다. 모니터 및 워크로드 분석기(224)는 또한 네트워크 기반 데이터 웨어하우스 시스템(102)의 전반에 걸쳐 워크로드의 변화에 기초하여 필요에 따라 태스크를 재분배하고, 실행 플랫폼(110)에 의해 처리될 수도 있는 사용자(예를 들면, "외부")쿼리 워크로드에 기초하여 태스크를 더 재분배할 수 있다. 컨피그레이션 및 메타데이터 관리자(222)와 모니터 및 워크로드 분석기(224)는 데이터 저장 장치(226)에 결합된다. 도 2에서의 데이터 저장 장치(226)는 네트워크 기반 데이터 웨어하우스 시스템(102) 내의 임의의 데이터 저장 장치를 나타낸다. 예를 들면, 데이터 저장 장치(226)는 실행 플랫폼(110)의 캐시, 저장 플랫폼(104)의 저장 장치, 또는 임의의 다른 저장 장치를 나타낼 수 있다.
도시된 바와 같이, 컴퓨팅 서비스 관리자(108)는 프루닝 인덱스 생성기(228)를 더 포함한다. 프루닝 인덱스 생성기(228)는, 저장 플랫폼(104)에 저장된 테이블을 대상으로 하는 쿼리에 대한 스캔 세트를 프루닝하는 데에 사용될 프루닝 인덱스를 생성하는 것을 담당한다. 각 프루닝 인덱스는 소스 테이블의 각 열에서 고유 값의 존재를 인코딩하는 한 세트의 필터(예를 들면, 블록화 블룸 필터, 블룸 필터, 해시 필터, 또는 쿠쿠 필터)를 포함한다. 프루닝 인덱스 생성기(228)는 소스 테이블의 각 마이크로-파티션용 필터를 생성하고, 각 필터는 쿼리와 매칭하는 데이터가 잠재적으로 소스 테이블의 특정 마이크로-파티션에 저장되어 있는지를 나타낸다. 프루닝 인덱스의 생성에 관한 추가적인 상세는 후술한다.
도 3은, 본 발명의 몇몇 실시 형태에 따른, 실행 플랫폼(110)의 구성 요소를 나타내는 블록도이다. 도 3에 도시된 바와 같이, 실행 플랫폼(110)은 가상 웨어하우스(1), 가상 웨어하우스(2), 및 가상 웨어하우스(n)를 포함하는 다수의 가상 웨어하우스를 포함한다. 각 가상 웨어하우스는 데이터 캐시 및 프로세서를 각각 포함하는 다수의 실행 노드를 포함한다. 가상 웨어하우스는 다수의 실행 노드를 사용하여 다수의 태스크를 병렬로 실행할 수 있다. 본 명세서에서 논의된 바와 같이, 실행 플랫폼(110)은, 시스템 및 사용자의 현재 처리 니즈에 기초하여 실시간으로 새로운 가상 웨어하우스를 추가하고 기존의 가상 웨어하우스를 삭제할 수 있다. 이러한 유연성을 통해, 실행 플랫폼(110)은, 대량의 컴퓨팅 리소스가 더 이상 필요하지 않을 때 해당 컴퓨팅 리소스에 대한 비용을 계속하여 지불하지 않고도, 필요에 따라 대량의 컴퓨팅 리소스를 신속하게 전개할 수 있다. 모든 가상 웨어하우스는 임의의 데이터 저장 장치(예를 들면, 저장 플랫폼(104)의 임의의 저장 장치)로부터 데이터에 액세스할 수 있다.
도 3에 도시된 각 가상 웨어하우스는 3개의 실행 노드를 포함하지만, 특정한 가상 웨어하우스는 임의의 수의 실행 노드를 포함할 수 있다. 또한, 가상 웨어하우스에서의 실행 노드의 개수는 동적이며, 추가 수요가 있을 때, 새 실행 노드가 생성되고, 더 이상 필요하지 않을 때는 기존의 실행 노드는 삭제된다.
각 가상 웨어하우스는 도 1에 도시된 데이터 저장 장치(106-1 내지 106-N) 중 임의의 저장 장치에 액세스할 수 있다. 따라서, 가상 웨어하우스는 반드시 특정 데이터 저장 장치(106-1 내지 106-N)에 할당될 필요는 없고, 대신에, 저장 플랫폼(104) 내의 데이터 저장 장치(106-1 내지 106-N) 중 임의의 저장 장치로부터 데이터에 액세스할 수 있다. 마찬가지로, 도 3에 도시된 실행 노드의 각각은 데이터 저장 장치(106-1 내지 106-N) 중 임의의 저장 장치로부터 데이터에 액세스할 수 있다. 몇몇 실시 형태에 있어서, 특정 가상 웨어하우스 또는 특정 실행 노드는 특정 데이터 저장 장치에 일시적으로 할당될 수 있지만, 가상 웨어하우스 또는 실행 노드는 나중에 임의의 다른 데이터 저장 장치로부터 데이터에 액세스할 수 있다.
도 3에 도시된 예에 있어서, 가상 웨어하우스(1)는 3개의 실행 노드(302-1,302-2, 302-n)를 포함한다. 실행 노드(302-1)는 캐시(304-1) 및 프로세서(306-1)를 포함한다. 실행 노드(302-2)는 캐시(304-2) 및 프로세서(306-2)를 포함한다. 실행 노드(302-n)는 캐시(304-n) 및 프로세서(306-n)를 포함한다. 실행 노드(302-1, 302-2, 302-n)의 각각은 하나 이상의 데이터 저장 및/또는 데이터 검색 태스크를 처리하는 것과 연관된다. 예를 들면, 가상 웨어하우스는 클러스터링 서비스, 구체화된 뷰 리프레시 서비스, 파일 압축 서비스, 저장 절차 서비스 또는 파일 업그레이드 서비스와 같은 내부 서비스와 연관된 데이터 저장 및 데이터 검색 태스크를 처리할 수 있다. 다른 구현예에 있어서, 특정한 가상 웨어하우스는 특정한 데이터 저장 시스템 또는 데이터의 특정 카테고리와 연관된 데이터 저장 및 데이터 검색 태스크를 처리할 수 있다.
상기한 가상 웨어하우스(1)와 마찬가지로, 가상 웨어하우스(2)는 3개의 실행 노드(312-1, 312-2, 312-n)를 포함한다. 실행 노드(312-1)는 캐시(314-1) 및 프로세서(316-1)를 포함한다. 실행 노드(312-2)는 캐시(314-2) 및 프로세서(316-2)를 포함한다. 실행 노드(312-n)는 캐시(314-n) 및 프로세서(316-n)를 포함한다. 또한, 가상 웨어하우스(3)는 3개의 실행 노드(322-1, 322-2, 322-n)를 포함한다. 실행 노드(322-1)는 캐시(324-1) 및 프로세서(326-1)를 포함한다. 실행 노드(322-2)는 캐시(324-2) 및 프로세서(326-2)를 포함한다. 실행 노드(322-n)는 캐시(324-n) 및 프로세서(326-n)를 포함한다.
몇몇 실시 형태에 있어서, 도 3에 도시된 실행 노드는 실행 노드가 캐싱하는 데이터에 대하여 스데이트리스(stateless)하다. 예를 들면, 이러한 실행 노드는 실행 노드 또는 특정 실행 노드에 의해 캐시되는 데이터에 대한 상태 정보를 저장하거나 다른 방식으로 유지하지 않는다. 따라서 실행 노드에 장애가 발생하는 경우, 해당 장애가 발생한 노드는 다른 노드로 명료하게 교체될 수 있다. 장애 발생한 실행 노드와 연관된 상태 정보가 없기 때문에, 장애가 발생한 노드는 특정 상태를 재생할 우려없이 새로운 (교체) 실행 노드로 쉽게 교체될 수 있다.
도 3에 도시된 실행 노드의 각각이 하나의 데이터 캐시 및 하나의 프로세서를 포함하지만, 대안적인 실시 형태에서는, 임의의 수의 프로세서 및 임의의 수의 캐시를 포함하는 실행 노드를 포함할 수 있다. 또한, 캐시는 서로 다른 실행 노드에서 크기가 다양할 수 있다. 도 3에 도시된 캐시는, 저장 플랫폼(104)의 하나 이상의 데이터 저장 장치로부터 검색된 데이터를 로컬 실행 노드에 저장한다. 따라서, 캐시는 원격 저장 시스템으로부터 데이터를 지속적으로 검색하는 플랫폼에서 발생하는 병목 문제를 감소시키거나 제거한다. 원격 저장 장치로부터 데이터에 반복적으로 액세스하는 대신에, 본 명세서에 설명된 시스템 및 방법은 실행 노드 내의 캐시로부터 데이터에 액세스하고, 이는 보다 상당히 신속하며, 상기한 병목 문제를 회피한다. 몇몇 실시 형태에 있어서, 캐시는, 캐싱된 데이터에 대한 고속 액세스를 제공하는 고속 메모리 장치를 사용하여 구현된다. 각 캐시는 저장 플랫폼(104)의 저장 장치 중의 임의의 저장 장치로부터의 데이터를 저장할 수 있다.
또한, 캐시 리소스 및 컴퓨팅 리소스는 서로 다른 실행 노드마다 변경될 수 있다. 예를 들면, 하나의 실행 노드는 상당한 컴퓨팅 리소스와 최소한의 캐시 리소스를 포함할 수 있으며, 이 실행 노드는 상당한 컴퓨팅 리소스가 필요한 태스크에 유용하다. 다른 실행 노드는 상당한 캐시 리소스와 최소한의 컴퓨팅 리소스를 포함할 수 있으며, 이 실행 노드는 대용량의 데이터의 캐싱이 필요한 태스크에 유용하다. 또 다른 실행 노드는 보다 빠른 입출력 동작을 제공하는 캐시 리소스를 포함할 수 있으며, 이 실행 노드는 대용량의 데이터의 신속한 스캔이 필요한 태스크에 유용하다. 몇몇 실시 형태에 있어서, 특정 실행 노드와 연관된 캐시 리소스 및 컴퓨팅 리소스는, 실행 노드에 의해 수행될 예상된 태스크에 기초하여, 실행 노드가 생성될 때 결정된다.
또한, 특정 실행 노드와 연관된 캐시 리소스 및 컴퓨팅 리소스는, 실행 노드에 의해 수행되는 변경 태스크에 기초하여 시간에 따라 변경될 수 있다. 예를 들면, 실행 노드에 의해 수행되는 태스크가 보다 프로세서-집약적인 경우, 실행 노드에는 더 많은 처리 리소스가 할당될 수 있다. 마찬가지로, 실행 노드에 의해 수행되는 태스크가 보다 큰 캐시 용량을 요구하는 경우, 실행 노드에는 보다 많은 캐시 리소스가 할당될 수 있다.
가상 웨어하우스(1, 2 및 n)가 동일한 실행 플랫폼(110)과 연관되어 있지만, 가상 웨어하우스는 다수의 지리적 위치에서 다수의 컴퓨팅 시스템을 이용하여 구현될 수 있다. 예를 들면, 가상 웨어하우스(1)는 제1 지리적 위치에서 컴퓨팅 시스템에 의해 구현될 수 있는 반면, 가상 웨어하우스(2 및 n)는 제2 지리적 위치에서 다른 컴퓨팅 시스템에 의해 구현될 수 있다. 몇몇 실시 형태에 있어서, 이들 서로 다른 컴퓨팅 시스템은 하나 이상의 서로 다른 엔티티에 의해 유지되는 클라우드 기반 컴퓨팅 시스템이다.
또한, 각 가상 웨어하우스는 다수의 실행 노드를 갖는 것으로 도 3에 도시되어 있다. 각 가상 웨어하우스와 연관된 다수의 실행 노드는 다수의 지리적 위치에서 다수의 컴퓨팅 시스템을 이용하여 구현될 수 있다. 예를 들면, 가상 웨어하우스(1)의 인스턴스는 지리적 위치에서 하나의 컴퓨팅 플랫폼에서의 실행 노드(302-1, 302-2)를 구현하고, 다른 지리적 위치에서 다른 컴퓨팅 플랫폼에서의 실행 노드(302-n)를 구현한다. 실행 노드를 구현하기 위해 특정 컴퓨팅 시스템을 선택하는 것은, 특정 실행 노드에 필요한 리소스의 수준(예를 들면, 처리 리소스 요구 사항 및 캐시 요구 사항), 특정 컴퓨팅 시스템에서 사용 가능한 리소스, 지리적 위치 내에서 또는 지리적 위치 사이에서의 네트워크의 통신 능력, 및 가상 웨어하우스에서 이미 다른 실행 노드를 구현하고 컴퓨팅 시스템과 같은 다양한 요인에 따라 달라질 수 있다.
또한, 실행 플랫폼(110)은 내고장성(fault tolerant)을 갖는다. 예를 들면, 하나의 가상 웨어하우스가 실패하면, 해당 가상 웨어하우스는 다른 지리적 위치에 있는 다른 가상 웨어하우스로 신속하게 교체된다.
특정 실행 플랫폼(110)은 임의의 수의 가상 웨어하우스를 포함할 수 있다. 또한, 특정 실행 플랫폼에서의 가상 웨어하우스의 개수는 동적이므로, 추가 처리 및/또는 캐싱 리소스가 필요할 때, 새로운 가상 웨어하우스가 생성된다. 마찬가지로, 가상 웨어하우스와 연관된 리소스가 더 이상 필요하지 않을 때, 기존 가상 웨어하우스는 삭제될 수 있다.
몇몇 실시 형태에 있어서, 가상 웨어하우스는 클라우드 컴퓨팅 저장 플랫폼(104)에서의 동일한 데이터에 대해 작동할 수 있지만, 각 가상 웨어하우스는 독립적인 처리 및 캐싱 리소스를 갖는, 그 자체의 실행 노드를 갖는다. 이러한 컨피그레이션에 따르면, 서로 다른 가상 웨어하우스에 대한 요청은 요청 간의 간섭없이 독립적으로 처리될 수 있다. 가상 웨어하우스를 동적으로 추가하거나 제거하는 능력과 조합된, 이러한 독립적인 처리는, 기존 사용자가 관찰한 성능에 영향을 주지않고 신규 사용자를 위한 새로운 처리 용량의 추가를 지원한다.
도 4는, 예시적인 몇몇 실시 형태에 따른, 소스 테이블(402)에 기초하여 네트워크 기반 데이터 웨어하우스 시스템(102)에 의해 생성된 프루닝 인덱스의 일부를 형성하는 필터(400)의 생성을 설명하는 개념도이다. 도시된 바와 같이, 소스 테이블(402)은 다수의 마이크로-파티션으로 조직화되고, 각 마이크로-파티션은 값이 저장된 다수의 열을 포함한다.
푸르닝 인덱스를 생성할 때, 컴퓨팅 서비스 관리자(108)는 소스 테이블(402)의 각 마이크로-파티션에 대한 필터를 생성한다. 이 필터의 일 예는 도 4에서 블록화 블룸 필터(400)로서 도시되어 있다. 블록화 블룸 필터(400)는 다수의 블룸 필터를 포함하고, 대응하는 마이크로-파티션의 각 열에서의 개별 값의 존재를 인코딩한다. 등식 술어를 포함하는 쿼리가 수신될 때, 네트워크 기반 데이터 웨어하우스 시스템(102)은, 등식 술어를 평가하기 위해 전체 소스 테이블(402)을 스캐닝하기보다는, 소스 테이블(402)의 마이크로-파티션의 서브세트만을 포함하는 마이크로-파티션의 감소된 스캔 세트를 식별하기 위해 프루닝 인덱스를 조사한다(probe).
도시된 바와 같이, 블록화 블룸 필터(400)는 열 스캔을 활용(leverage)하기 위해 프루닝 인덱스의 개별 열로서 저장된 N개의 블룸 필터로 분해된다. 소스 테이블(402)의 특정 마이크로-파티션에 대한 블록화 블룸 필터(400)를 생성함에 있어서, 저장된 값은 블룸 필터에서의 비트 위치로 변환된다. 예를 들면, 해시 값의 세트는 마이크로-파티션의 각 열에 저장된 값으로부터 생성될 수 있고, 이들 해시 값의 세트는 블룸 필터에서의 비트를 설정하는데 사용될 수 있다.
마이크로-파티션의 모든 열에 대한 개별 값의 개수는 마이크로-파티션의 최대 크기에 의해 제한된다. 일례로서, 최악의 경우에, 16MB 파티션에 대하여, 모든 열에 대한 개별 값의 개수의 합은 많아도 4백만(16MB/4 바이트)이다. 따라서, 프루닝 인덱스를 가능한 한 효율적으로 액세스하기 위해, 각 블룸 필터(400)는 (예를 들면, 파티션 당 개별 값의 개수에 기초하여) 해시 값의 도메인 상의 고정 개수의 청크로 슬라이스되고, 각 블룸 필터(400)는 고정 개수의 M 비트(예를 들면, 64 비트) 값으로 더 분해된다. 블록화 블룸 필터(400)의 각 라인은 프루닝 인덱스에 단일 행으로서 인코딩되어 저장된다. 각 블룸 필터(400)는 저장된 열 값의 해시 값에 의해 인덱싱된 2차원 어레이로서 프루닝 인덱스로 표현된다.
도 5는, 본 발명의 몇몇 실시 형태에 따른, 예시적인 프루닝 인덱스(500)의 일부를 예시한다. 프루닝 인덱스(500)는 복수의 행 및 열로 조직화된다. 프루닝 인덱스(500)의 열은 파티션 번호(502), 해시 값의 도메인의 인코딩을 제공하는 슬라이스 번호(504), 요약 유형(506), 해시 번호(508), 및 N개의 수치 열로 분해되는 블록화 블룸 필터(510)(예를 들면, 블록화 블룸 필터(400))를 포함하고, 블록화 블룸 필터(510) 내의 각 열은 블룸 필터를 나타낸다.
각 행 내에서, 마이크로-파티션 번호 또는 다른 식별자는 파티션 번호(502)에 포함되고, 슬라이스 번호는 슬라이스 번호(504)의 열에 포함되고, 요약 유형의 지시 기호(indicator)가 요약 유형(506)의 열에 저장되고, 블룸 필터를 만들기 위해 이용되는 해시 함수의 개수에 대응하는 수가 해시 번호(508)의 열에 저장된다. 슬라이스 번호의 열에서의 각 슬라이스 번호(504)는 레벨 및 블록 번호의 조합을 포함한다. 레벨은 블룸 필터(510)의 슬라이스 개수를 나타내고, 블록 번호는 특정한 블룸 필터(510)(예를 들면, 블룸 필터의 열)에서의 슬라이스의 위치를 나타낸다. 해시 함수의 개수는 프루닝 인덱스(500)의 거짓 인식율(fa1se pasitive rate)을 제어하도록 조정될 수 있다.
프루닝 인덱스에 액세스하는 컴퓨팅 리소스에 관한 비용은, 주로 인덱스의 크기에 의해 제한되고, 따라서, 프루닝 인덱스의 총 크기를 최소화하는 것이 유익하다. 이를 위해, 컴퓨팅 서비스 관리자(108)는 마이크로-파티션마다 계산되는 슬라이스의 개수를 줄일 수 있다. 프루닝 인덱스의 제1 레벨의 분할은 해시 값의 도메인을 나타내도록 수행된다. 하나의 극단적인 예로서, 블룸 필터는 해시 값의 전체 도메인을 커버할 수 있고(여기서, 블룸 필터는 단일 슬라이스를 포함함), 다른 극단적인 예로서, 블룸 필터는 슬라이스의 임의의 최대치(예를 들면, 4096)로 분할될 수 있다. 프루닝 인덱스의 단일 슬라이스가 제한된 수의 개별 값만을 나타낼 수 있기 때문에, 이러한 결정은 소스 테이블에서의 개별 값의 개수에 의해 파라미터화된다.
개별 값의 개수는, 주어진 마이크로-파티션에 대해 생성된 행의 개수를 제어하기 때문에, 클러스터링의 비용에 상당히 영향을 미친다. 예를 들면, 적은 개수의 개별 값(예로서, 3)을 갖는 마이크로-파티션은 단일 슬라이스를 가질 것인 반면, 많은 개수의 개별 값(예로서, 1백만)을 갖는 마이크로-파티션은 최대 개수의 슬라이스를 가질 수 있다. 일반적으로, 개별 값의 최대 개수는 인코딩할 슬라이스의 최대 개수를 결정한다. 따라서, 몇몇 실시 형태에 있어서, 컴퓨팅 서비스 관리자(108)는, 레벨에 대해서는 해시 값의 제1 부분(예를 들면, 16 상위 비트)을 사용하고, 어드레싱(addressing)에 대해서는 해시 값의 제2 부분(예를 들면, 16 하위 비트)을 사용한다.
이를 위해, 프루닝 인덱스(500) 내의 블록은 값의 도메인의 분해의 레벨을 인코딩하는 계층으로 조직화된다. 상기의 예로서, 도 6은 프루닝 인덱스의 단일 블룸 필터(600)를 예시한다. 도 6에 도시된 예에서, 블룸 필터(600)는 2048 바이트이고, 1/1,000,0000의 거짓 인식율을 갖는 64개의 개별 값을 나타낼 수 있다. 소스 테이블의 대응하는 마이크로-파티션이 64 개보다 많은 개별 값을 포함하는 경우, 블룸 필터의 밀도가 1/2보다 크면(예를 들면, 설정되지 않은 비트보다 많은 비트가 설정되면), 거짓 인식율은 저하될 것이다. 이 문제를 해결하기 위해, 몇몇 실시 형태에 있어서, 컴퓨팅 서비스 관리자(108)는 2개의 블룸 필터(블룸 필터(602 및 604))를 만들 수 있고, 이 중의 하나의 블룸 필터는 도메인의 각각의 절반에 대한 것이다.
블룸 필터(602 및 604)의 각각은, 그의 레벨 및 슬라이스 번호에 의해 식별되는, 프루닝 인덱스에서의 2개의 행에 의해 표현될 것이다. 몇몇 실시 형태에 따르면, 특정 값 및 그의 대응하는 해시 값은, 소스 테이블의 모든 마이크로-파티션에 걸쳐 복수의 블록 중 하나의 블록에 매핑된다. 레벨에 관계없이, 비트는 도메인의 고정된 서브세트를 인코딩한다.
각 슬라이스 번호는 레벨 번호와 블록 번호의 조합을 포함한다. 몇몇 실시 형태에 있어서, 레벨 및 블록 번호는 2개의 개별 열로서 표현될 수 있고, 다른 실시 형태에서는, 선형화 프로세스가 클러스터링에서 이러한 값을 조합하여 슬라이스 번호를 형성하는 데에 사용된다.
몇몇 실시 형태에 있어서, 블룸 필터마다 계산하는 해시 함수의 개수는 성능을 개선하기 위해 변경될 수 있다. 이러한 최적화에 의해, 매우 큰 테이블에 대하여 목표 거짓 인식율을 유지하면서 프루닝 인덱스를 만드는 데에 소요되는 CPU의 비용을 줄일 수 있다. 따라서, 몇몇 실시 형태에 있어서, 사용자는 목표 거짓 인식율을 특정할 수 있고, 컴퓨팅 서비스 관리자(108)는 목표 거짓 인식율에 기초하여 블룸 필터마다 계산할 해시 함수의 개수와 레벨을 결정할 수 있다.
도 7은, 몇몇 실시 형태에 따른, 프루닝 인덱스의 생성에 관한 추가적인 상세를 예시하는 개념도이다. 필터(예를 들면, 블록화 블룸 필터)의 생성은 프루닝 인덱스의 행의 세트를 계산하는 컴퓨팅 서비스 관리자(108) 내의 특수 연산자에 의해 수행된다. 이 연산자는 소스 테이블의 특정 마이크로-파티션의 모든 열을 획득하고, 해당 마이크로-파티션에 대한 필터를 추가한다(populate).
소스 테이블에서의 개별 값의 총 개수가 알려지지 않은 경우, 컴퓨팅 서비스 관리자(108)는 레벨의 최대 개수를 프루닝 인덱스에 할당하고, 각 필터를 추가한 다음에, 통합 단계(consolidation phase)를 적용하여 프루닝 인덱스의 최종 표현에서 상이한 필터를 병합한다. 마이크로-파티션마다 이러한 정보를 계산하기 위해 할당된 메모리는 일정하다. 도 7에 도시된 예에 있어서, 이러한 정보를 계산하기 위해 할당된 메모리는 64비트 무부호 정수의 2차원 어레이이다. 제1 차원은 레벨(레벨의 최대 개수)에 의해 인덱싱되고 제2 차원은 블룸 필터의 개수(예를 들면, 32)에 의해 인덱싱된다. 각 파티션이 단일 스레드(thread)에 의해 처리되기 때문에, 전체 메모리는 스레드의 개수(예를 들면, 8) 및 레벨의 최대 레벨에 의해 제한된다.
이하의 유사 부호(pseudocode)의 단편(snippet)은, 몇몇 실시 형태에 따른, 프루닝 인덱스의 생성시에 컴퓨팅 서비스 관리자(108)에 의해 수행될 수 있는 예시적인 알고리즘을 나타낸다.
·새로운 파티션의 경우:
모든 필터를 병합한다
·각 열에 대하여:
열의 각 값에 대해 32-비트 해시 값 H를 계산한다
16개의 상위 비트를 이용하여 레벨 L을 계산한다, L= H>>16
위치 P= H&(32-1)에서 필터를 계산한다
블룸 필터가 값을 포함하지 않는 경우,
· 개별 값의 개수를 증가시킨다
도 7에 도시된 바와 같이, 각 파티션의 경계에서, 컴퓨팅 서비스 관리자(108)는 목표 블룸 필터 밀도에 기초하여 블록들을 조합한다. 예를 들면, 컴퓨팅 서비스 관리자(108)는 블룸 필터 밀도가 절반 이하로 되도록 블록들을 조합할 수 있다. 해싱된 값의 도메인이 균일하기 때문에, 블록들의 조합은 상기 계산된 개별 값의 관찰된 개수에 기초하여 증분적으로 또는 전역적으로 행해질 수 있다.
개별 값의 개수가 알려져 있으면, 컴퓨팅 서비스 관리자(108)는 개별 값의 최대 개수를 레벨당 개별 값의 개수로 나눔으로써 프루닝 인덱스에 대한 레벨의 개수를 결정한다. 2개의 레벨을 조합하기 위해, 컴퓨팅 서비스 관리자(108)는 필터를 나타내는 모든 정수에 대해 논리적 OR 연산을 수행한다.
성능상의 이유로, 필터 함수(생성 및 체크)는 2개의 해시 함수(예를 들면, 2개의 32 비트 해시 함수)을 조합한다. 컴퓨팅 서비스 관리자(108)에서의 프루닝 및 실행 플랫폼(110)에서의 스캔 세트 초기화가 가능하도록, 해시 함수 계산 및 필터 유도(filter derivation)의 양방이 실행 플랫폼(110) 및 컴퓨팅 서비스 관리자(108)의 양방에서 동일할 필요가 있다.
도 8은, 몇몇 실시 형태에 따른, 소스 테이블의 변경에 기초한 프루닝 인덱스의 유지를 예시하는 개념도이다. 도시된 바와 같이, 800에서, 소스 테이블이 변경된다(예를 들면, 하나 이상의 행 또는 열이 추가된다). 802에서, 소스 테이블의 변경은 소스 테이블의 각각의 변경된 또는 새로운 마이크로-파티션에 대한 프루닝 인덱스에서 추가적인 행의 생성을 트리거한다. 804에서, 일정한 간격으로, 프루닝 인덱스에서의 신규 생성된 행이 슬라이스 번호 상에서 재클러스터링된다.
컴퓨팅 서비스 관리자(108)는 프루닝 인덱스를 클러스터링하는 일부로서 결정론적 선택 알고리즘을 사용한다. 소스 테이블에서의 각 마이크로-파티션의 처리는, 소스 마이크로-파티션에서의 개별 값의 개수에 기초하여 한정된(및 거의 일정한) 개수의 행을 생성한다. 구성상, 이들 행은 고유한 것으로 알려져 있고, 인덱스 도메인은 해당 파티션과 중첩하지 않고 이미 클러스터링된 인덱스 행과 완전히 중첩한다. 클러스터링의 비용을 최소화하기 위해, 컴퓨팅 서비스 관리자(108)는 임계 개수의 행이 생성되어 일정한 파티션을 생성할 때까지 행의 재클러스터링을 지연시킨다.
몇몇 실시 형태에 있어서 프루닝 인덱스가 블록화 블룸 필터로 구체적으로 구현되는 것으로 설명되었지만, 프루닝 인덱스는 블록화 블룸 필터에 한정되지 않으며, 다른 실시 형태에 있어서는, 프루닝 인덱스는 블룸 필터, 해시 필터, 또는 쿠쿠 필터와 같은 다른 필터를 사용하여 구현될 수 있다는 것을 이해할 것이다.
도 9 내지 도 13은, 본 발명의 몇몇 실시 형태에 따른, 데이터베이스 쿼리를 처리함에 있어서 프루닝 인덱스를 생성하고 사용하는 방법(900)을 수행할 때 네트워크 기반 데이터 웨어하우스 시스템(102)의 동작을 설명하는 흐름도이다. 방법(900)은, 방법(900)의 동작이 네트워크 기반 데이터 웨어하우스 시스템(102)의 구성 요소에 의해 수행될 수 있도록, 하나 이상의 하드웨어 구성 요소(예를 들면, 하나 이상의 프로세서)에 의한 실행용 컴퓨터 판독 가능한 명령어로 구현될 수 있다. 따라서, 방법(900)은 참고로 일 예로서 하기에 설명된다. 그러나, 방법(900)은 다양한 다른 하드웨어 구성에서 전개(deployed)될 수 있고, 네트워크 기반 데이터 웨어하우스 시스템(102) 내의 전개에 한정하는 것으로 의도되지 않음을 이해할 것이다.
실시 형태에 따라, 방법(900)의 동작은 서로 다른 방식으로 반복되거나 도시되지 않은 개재 동작을 수반할 수 있다. 방법(900)의 동작이 특정 순서로 도시되어 설명될 수 있지만, 동작이 수행되는 순서는, 특정 동작을 병렬로 수행하거나 동작의 세트를 별개의 프로세스로 수행하는 것을 비롯하여, 실시 형태 사이에서 달라질 수 있다. 예를 들면, 프루닝 인덱스의 사용 및 생성이 방법(900)의 일부로서 함께 설명되고 예시되지만, 프루닝 인덱스의 사용 및 생성은 몇몇 실시 형태에 따라 별개의 프로세스로서 수행될 수 있다는 점을 이해할 것이다.
동작(905)에서, 컴퓨팅 서비스 관리자(108)는 복수의 마이크로-파티션으로 조직화된 소스 테이블에 액세스한다. 소스 테이블은 행 및 열로 조직화된 복수의 셀을 포함하고, 데이터 값은 각 셀에 포함된다.
동작(910)에서, 컴퓨팅 서비스 관리자(108)는 소스 테이블에 기초하여 프루닝 인덱스를 생성한다. 프루닝 인덱스는 소스 테이블의 각 마이크로-파티션의 각 열에서의 개별 값을 인덱싱하는 한 세트의 필터(예를 들면, 한 세트의 블록화 블룸 필터)를 포함한다. 소스 테이블에서의 각 마이크로-파티션마다 필터가 생성되고, 각 필터는 정수 비교가 가능하도록 N개의 수치 열(예를 들면, 32개의 수치 열)로 분해된다. 몇몇 실시 형태에 따르면, 프루닝 인덱스는 복수의 행을 포함하고, 각 행은 마이크로-파티션 식별자, 슬라이스 번호, 및 한 세트의 블룸 필터를 포함한다.
동작(915)에서, 컴퓨팅 서비스 관리자(108)는 슬라이스 번호에 기초하여 프루닝 인덱스의 행을 클러스터링한다. 슬라이스 번호에 기초하여 행을 클러스터링할 때, 컴퓨팅 서비스 관리자(108)는 동일한 슬라이스 번호를 갖는 행들을 그룹화하고, 그 행 그룹을 대응하는 슬라이스 번호에 기초하여 순서대로 분류한다.
동작(920)에서, 컴퓨팅 서비스 관리자(108)는 소스 테이블을 대상으로 하는 쿼리를 수신한다. 쿼리는 등식 술어를 포함할 수 있다.
동작(925)에서, 컴퓨팅 서비스 관리자(108)는 소스 테이블을 대상으로 하는 쿼리에 기초하여 소스 테이블과 연관된 프루닝 인덱스에 액세스한다. 예를 들면, 데이터베이스(114)는 테이블과 프루닝 인덱스 사이의 연관성을 기술하는 정보를 저장할 수 있다.
동작(930)에서, 컴퓨팅 서비스 관리자(108)는 실행 플랫폼(110)과 함께 작동하여, 프루닝 인덱스를 이용하는 쿼리를 처리한다. 쿼리를 처리함에 있어서, 컴퓨팅 서비스 관리자(108) 및/또는 실행 플랫폼(110)은 프루닝 인덱스를 사용하여, 쿼리와 매칭하는 데이터(예를 들면, 등식 술어를 충족하는 데이터 값)에 대해 스캐닝될 검색 테이블의 마이크로-파티션의 세트를 프루닝할 수 있다. 즉, 프루닝 인덱스는 소스 테이블의 마이크로-파티션의 서브세트만을 포함하는 축소된 스캔 세트를 식별하는데 사용될 수 있다. 컴퓨팅 서비스 관리자(108)는 프루닝 인덱스를 사용하여, 등식 술어를 충족하는 데이터가 잠재적으로 저장되는 하나 이상의 마이크로-파티션을 식별한다. 쿼리를 처리할 때, 실행 플랫폼(110)은 나머지 마이크로-파티션의 스캔을 행하는 동안, 축소된 스캔 세트의 마이크로-파티션의 서브세트를 스캔한다.
도 10에 도시된 바와 같이, 방법(900)은, 몇몇 실시 형태에 있어서, 동작(1005 및 1010)을 더 포함할 수 있다. 이러한 실시 형태에 따르면, 동작(1005 및 1010)은 컴퓨팅 서비스 관리자(108)가 프루닝 인덱스를 생성하는 동작(910)의 일부로서 수행될 수 있다. 동작(1005 및 1010)은 단지 설명의 편의를 위해 소스 테이블의 단일 마이크로-파티션을 참조하여 후술한다. 그러나, 프루닝 인덱스를 생성할 때, 컴퓨팅 서비스 관리자(108)는 소스 테이블의 각 마이크로-파티션마다 필터를 생성하고, 따라서, 동작(1005 및 1010)은 소스 테이블의 각 마이크로-파티션마다 수행될 수 있음을 이해할 것이다.
동작(1005)에서, 컴퓨팅 서비스 관리자(108)는 소스 테이블의 마이크로-파티션마다 필터를 생성한다. 예를 들면, 컴퓨팅 서비스 관리자(108)는 소스 테이블의 마이크로-파티션의 각 열에서의 개별 값을 인덱싱하는 마이크로-파티션에 대하여 블록화 블룸 필터를 생성할 수 있다. 마이크로-파티션에 대한 필터의 생성에 관한 추가적인 상세는 도 11을 참조하여 이하에 설명한다.
몇몇 실시 형태에 있어서 선택적인 동작(1010)에서, 컴퓨팅 서비스 관리자(108)는 필터의 하나 이상의 행을 병합한다. 컴퓨팅 서비스 관리자(122)는 논리적 OR 연산을 수행함으로써 행을 병합할 수 있다. 컴퓨팅 서비스 관리자(108)는 밀도 임계값에 도달할 때까지 필터의 행을 병합할 수 있고, 여기서, 밀도는 행에서 1과 0의 비율을 나타낸다. 밀도 임계값은 목표 거짓 인식율에 기초할 수 있다.
도 11에 도시된 바와 같이, 동작(1005)은, 몇몇 실시 형태에 있어서, 동작(1105, 1110, 1115, 및 1120)을 포함할 수 있다. 동작(1105)에서, 컴퓨팅 서비스 관리자(108)는 소스 테이블의 마이크로-파티션에 대응하는 필터마다 레벨의 개수를 계산한다. 소스 테이블의 마이크로-파티션에서의 개별 값의 개수를 알고 있지 않은 경우, 컴퓨팅 서비스 관리자(108)는 가능한 개별 값의 최대 개수에 기초하여 레벨의 개수를 결정한다. 소스 테이블의 마이크로-파티션에서의 개별 값의 개수를 알고 있는 경우, 컴퓨팅 서비스 관리자(108)는 개별 값의 개수에 기초하여 레벨의 개수를 결정한다.
동작(1110)에서, 컴퓨팅 서비스 관리자(108)는 소스 테이블의 마이크로-파티션의 열에 포함된 주어진 데이터 값에 기초하여 필터 내의 목표 셀을 식별한다. 목표 셀을 식별하기 위해, 컴퓨팅 서비스 관리자(108)는 필터에서 슬라이스 및 필터 열을 식별한다. 컴퓨팅 서비스 관리자(108)는 데이터 값 및 프루닝 인덱스에서의 레벨의 개수에 기초하여 슬라이스를 식별한다. 컴퓨팅 서비스 관리자(108)는 데이터 값 및 블록화 블룸 필터에서의 필터 열의 개수에 기초하여 필터 열을 식별한다.
동작(1115)에서, 컴퓨팅 서비스 관리자(108)는 소스 테이블로부터의 데이터 값에 기초하여 해시 값을 생성한다. 해시 값을 생성할 때, 컴퓨팅 서비스 관리자(108)는 하나 이상의 해시 함수를 데이터 값에 적용할 수 있다. 동작(1120)에서, 컴퓨팅 서비스 관리자(108)는 해시 값을 이용하여 블록화 블룸 필터에 목표 셀을 추가한다.
설명의 편의상, 동작(1110, 1115, 및 1120)은 소스 테이블의 단일의 마이크로-파티션에서의 단일 데이터 값을 참조하여 앞서 설명하였다. 그러나, 소스 테이블의 마이크로-파티션에 대한 필터를 생성할 때, 동작(1110, 1115, 및 1120)은 소스 테이블에서의 마이크로-파티션의 각 열의 각 데이터 값마다 반복되는 것을 이해할 것이다.
도 12에 도시된 바와 같이, 방법(900)은, 몇몇 실시 형태에 있어서, 동작(1205 및 1210)을 포함할 수 있다. 이러한 실시 형태에 따르면, 동작(1205 및 1210)은 동작(925)의 일부로서 수행될 수 있고, 여기서, 컴퓨팅 서비스 관리자(108)는 실행 플랫폼(110)과 함께 작동하여, 프루닝 인덱스를 사용하는 쿼리를 처리한다.
동작(1205)에서, 컴퓨팅 서비스 관리자(108)는 소스 테이블의 마이크로-파티션의 서브세트를 포함하는 감소된 스캔 세트를 식별하여, 쿼리에서 등식 술어를 충족하는 데이터를 스캐닝한다. 소스 테이블의 마이크로-파티션의 서브세트는, 프루닝 인덱스에서의 블록화 블룸 필터의 세트에 기초하여 매칭 데이터를 잠재적으로 갖는 것으로 결정된 마이크로-파티션을 포함한다. 컴퓨팅 서비스 관리자(108)는, 등식 술어에 기초하여 해시 값을 생성하고 해당 해시 값과 매칭되는 프루닝 인덱스에서의 하나 이상의 값을 식별함으로써 마이크로-파티션의 서브세트를 식별할 수 있다. 컴퓨팅 서비스 관리자(108)는 해시 값과 매칭되는 프루닝 인덱스에서의 하나 이상의 값에 기초하여 등식 술어를 충족하는 데이터를 잠재적으로 저장하는 하나 이상의 마이크로-파티션을 식별한다. 즉, 해시 값과 매칭되는 프루닝 인덱스에서의 값은, 매칭 데이터가, 해당 값이 저장된 프루닝 인덱스의 셀에 대응하는 슬라이스 번호 및 필터 열에 기초하여 식별될 수 있는 마이크로-파티션에 잠재적으로 저장되는 것을 나타낸다.
컴퓨팅 서비스 관리자(108)는 마이크로-파티션의 서브세트를 실행 플랫폼(110)에 전송하고, 실행 플랫폼(110)은 감소된 스캔 세트에서의 소스 테이블의 마이크로-파티션의 서브세트만을 스캔하여 등식 술어를 충족하는 데이터를 찾는다. 이러한 방식으로, 실행 플랫폼(110)은, 추가 시간 및 리소스를 소비하는 동안 매칭 데이터가 잠재적으로 저장되는 마이크로-파티션만을 검색하여, 프루닝 인덱스에 기초하여 매칭 데이터가 저장되지 않는 것으로 알려진 나머지 마이크로-파티션을 더 검색한다.
몇몇 실시 형태에 따르면, 데이터를 스캐닝하기 위해 소스 테이블의 마이크로-파티션의 감소된 스캔 세트를 제공하는 대신에, 컴퓨팅 서비스 관리자(108)는 비매칭 마이크로-파티션의 세트를 식별하고 컴파일링할 수 있다. 컴퓨팅 서비스 관리자(108) 또는 실행 플랫폼(110)은 비매칭 마이크로-파티션의 세트에 기초하여 스캔 세트로부터 마이크로-파티션을 제거할 수 있다.
도 13에 도시된 바와 같이, 방법(900)은, 몇몇 실시 형태에 있어서, 동작(1305, 1310, 및 1315)을 포함할 수 있다. 동작(1305, 1310, 및 1315)이 동작(925)에 후속하여 수행되는 것으로 예시되어 있지만, 동작(1305, 1310, 및 1315)은 컴퓨팅 서비스 관리자(108)가 프루닝 인덱스를 생성하는 동작(910)에 후속하여 임의의 시점에서 수행될 수 있음을 이해할 것이다.
동작(1305)에서, 컴퓨팅 서비스 관리자(108)는 소스 테이블에 대한 변경을 검출한다. 소스 테이블에 대한 변경은 소스 테이블에 추가되고/되거나 소스 테이블로부터 삭제되는 하나 이상의 행을 포함할 수 있다.
동작(1310)에서, 컴퓨팅 서비스 관리자(108)는, 소스 테이블에 대한 변경에 기초하여, 소스 테이블과 연관된 프루닝 인덱스에서의 하나 이상의 추가 행을 생성한다. 컴퓨팅 서비스 관리자(108)는 프루닝 인덱스의 행이 프루닝 인덱스의 초기 생성시에 생성되는 것과 동일한 방식으로 추가 행을 생성한다.
동작(1315)에서, 컴퓨팅 서비스 관리자(108)는 슬라이스 번호에 기초하여 프루닝 인덱스를 재클러스터링한다. 몇몇 실시 형태에 따르면, 컴퓨팅 서비스 관리자(108)는 임계 개수의 추가 행이 프루닝 인덱스에 추가될 때까지 프루닝 인덱스의 재클러스터링을 대기할 수 있다.
도 14는, 본 발명의 몇몇 실시 형태에 따른, 머신(1400)이 본 발명에서 개시된 하나 이상의 방법론을 수행하도록 명령어 세트가 실행될 수 있는 컴퓨터 시스템의 형태로 상기 머신(1400)을 도식적으로 표현한 도면이다. 구체적으로, 도 14는, 머신(1400)이 본 명세서에 개시된 방법론 중 어느 하나 이상을 수행하도록 명령어(1416)(예를 들면, 소프트웨어, 프로그램, 애플리케이션, 애플릿, 앱, 또는 다른 실행 가능한 코드)가 실행될 수 있는 예시적인 형태의 컴퓨터 시스템의 머신(1400)을 도식적으로 표현한 도면이다. 예를 들면, 명령어(1416)에 의해, 머신(1400)은 방법(900) 중 어느 하나 이상의 방법의 어느 하나 이상의 동작을 실행할 수 있다. 다른 예로서, 명령어(1416)에 의해, 머신(1400)은 도 4 내지 도 8 중의 어느 하나 이상에 도시된 기능의 일부를 구현할 수 있다. 이러한 방식으로, 명령어(1416)는 프로그래밍되지 않은 일반적인 머신을 특정 머신(1400)(예를 들면, 컴퓨팅 서비스 관리자(108), 실행 플랫폼(110), 데이터 저장 장치(206))로 변환하고, 이 특정 머신(1400)은 본 명세서에서 개시된 방식으로 설명되고 도시된 기능 중 어느 하나를 수행하도록 특별히 구성된다.
대안적인 실시 형태에 있어서, 머신(1400)은 독립형 장치로서 동작하거나 다른 머신에 결합될 수 있다(예를 들면, 네트워크화될 수 있다). 네트워크화된 배치에 있어서, 머신(1400)은 서버-클라이언트 네트워크 환경에서 서버 머신 또는 클라이언트 머신으로서, 또는 피어-투-피어(또는 분산) 네트워크 환경에서 피어 머신으로서 작동할 수 있다. 머신(1400)은 서버 컴퓨터, 클라이언트 컴퓨터, 퍼스널 컴퓨터(PC), 태블릿 컴퓨터, 랩톱 컴퓨터, 넷북, 스마트폰, 모바일 장치, 네트워크 라우터, 네트워크 스위치, 네트워크 브리지, 또는 머신(1400)에 의해 취해질 동작을 지정하는 명령어(1416)를 순차적으로 또는 다른 방식으로 실행할 수 있는 임의의 머신을 포함할 수 있지만, 이에 한정되지는 않는다. 또한, 단일 머신(1400)만이 예시되어 있지만, "머신"이라는 용어는 본 명세서에 개시된 방법론들 중 어느 하나 이상을 수행하도록 명령어(1416)를 개별적으로 또는 공동으로 실행하는 머신(1400)의 집합을 포함하는 것으로 간주되어야 한다.
머신(1400)은, 버스(1402)를 통해 서로 통신하도록 구성된 프로세서(1410), 메모리(1430) 및 입/출력(I/0) 구성 요소(1450)를 포함한다. 예시적인 실시 형태에 있어서, 프로세서(1410)(예를 들면, CPU(central processing unit), RISC(reduced instruction set computing) processor, CISC(complex instruction set computing) 프로세서, GPU(graphics processing unit) DSP(digital signal processor), ASIC(application-specific integrated circuit), RFIC(radio-frequency integrated circuit), 다른 프로세서, 또는 이들의 임의의 적절한 조합)는, 예를 들면, 명령어(1416)를 실행할 수 있는 프로세서(1412) 및 프로세서(1414)를 포함할 수 있다. "프로세서"라는 용어는 명령어(1416)를 동시에 실행할 수 있는 2개 이상의 독립 프로세서("코어"로 지칭되는 경우도 있음)를 포함할 수 있는 멀티코어 프로세서(1410)인 것으로 간주된다. 도 14는 다수의 프로세서(1410)를 도시하지만, 머신(1400)은 단일 코어를 갖는 단일 프로세서, 다수의 코어를 갖는 단일 프로세서(예를 들면, 다수의 코어 프로세서), 단일 코어를 갖는 다수의 프로세서, 다수의 코어를 갖는 다수의 프로세서, 또는 그들의 임의의 조합을 포함할 수 있다.
메모리(1430)는 메인 메모리(1432), 정적 메모리(1434), 및 저장 유닛(1436)을 포함할 수 있고, 이들은 버스(1402)를 통해 프로세서(1410)에 액세스 가능하다. 메인 메모리(1432), 정적 메모리(1434), 및 저장 유닛(1436)은 본 명세서에서 설명된 방법론 또는 기능 중 어느 하나 이상을 구현하는 명령어(1416)를 저장한다. 또한, 명령어(1416)는, 머신(1400)에 의해 실행 될 때, 메인 메모리(1432) 내에, 정적 메모리(1434) 내에, 저장 유닛(1436) 내에, 프로세서(1410) 중 적어도 하나 내에(예를 들어, 프로세서의 캐시 메모리 내에), 또는 임의의 적절한 조합 내에 완전히 또는 부분적으로 존재할 수 있다.
I/0 구성 요소(1450)는 입력을 수신하고, 출력을 제공하며, 출력을 생성하고, 정보를 전송하며, 정보를 교환하고, 측정값을 획득하는 등의 구성 요소들을 포함한다. 특정 머신(1400)에 포함된 특정 I/0 구성 요소(1450)는 머신의 유형에 따라 정해질 수 있다. 예를 들면, 모바일 폰과 같은 휴대용 머신은 터치 입력 장치 또는 기타 입력 메커니즘을 포함할 수 있는 반면, 헤드리스 서버 머신은 그러한 터치 입력 장치를 포함하지 않을 수도 있다. I/0 구성 요소(1450)는 도 14에 도시되지 않은 다수의 다른 구성 요소를 포함할 수 있음을 이해할 것이다. I/0 구성 요소(1450)는 후속하는 설명을 단순화하기 위하여 기능에 따라 그룹화된 것으로, 특별히 한정되지 않는다. 다양한 예시적인 실시 형태에 있어서, I/0 구성 요소(1450)는 출력 구성 요소(1452) 및 입력 구성 요소(1454)를 포함할 수 있다. 출력 구성 요소(1452)는 시각적 구성 요소(예를 들면, 플라즈마 디스플레이 패널(PDF), 발광 다이오드(LED) 디스플레이, 액정 디스플레이(LCD), 프로젝터 또는 음극선관(CRT)와 같은 디스플레이), 음향 구성 요소(예를 들면, 스피커), 기타 신호 발생기 등을 포함할 수 있다. 입력 구성 요소(1454)는 영숫자 입력 구성 요소(예를 들면, 키보드, 영숫자 입력을 수신하도록 구성된 터치 스크린, 사진-광학 키보드, 또는 다른 영숫자 입력 구성 요소), 포인트 기반 입력 구성 요소(예를 들면, 마우스, 터치패드, 트랙볼, 조이스틱, 모션 센서 또는 기타 포인팅 도구), 촉각 입력 구성 요소(예를 들면, 물리적 버튼, 터치 또는 터치 제스처의 위치 및/또는 힘을 제공하는 터치 스크린, 또는 기타 촉각 입력 구성 요소), 오디오 입력 구성 요소(예를 들면, 마이크) 등을 포함할 수 있다.
통신은 다양한 기술을 이용하여 구현될 수 있다. I/0 구성 요소(1450)는 머신(1400)를 커플링(1482) 및 커플링(1472)을 통해 네트워크(1480) 또는 장치(1470)에 각각 연결하도록 동작 가능한 통신 구성 요소(1464)를 포함할 수 있다. 예를 들면, 통신 구성 요소(1464)는 네트워크(1480)와 인터페이스하기 위한 네트워크 인터페이스 구성 요소 또는 다른 적절한 장치를 포함할 수 있다. 다른 예에 있어서, 통신 구성 요소(1464)는 유선 통신 구성 요소, 무선 통신 구성 요소, 셀룰러 통신 구성 요소, 및 다른 양식을 통한 통신을 제공하기 위한 다른 통신 구성 요소를 포함할 수 있다. 장치(1470)는 다른 머신 또는 다양한 주변 장치(예를 들면, USB(Universal Serial Bus)를 통해 연결된 주변 장치) 중 임의의 것일 수 있다. 예를 들면, 전술한 바와 같이, 머신(1400)은 컴퓨팅 서비스 관리자(108) 및 실행 플랫폼(110) 중 어느 하나에 대응할 수 있고, 장치(1470)는 네트워크 기반 데이터 웨어하우스 시스템(102) 또는 저장 플랫폼(104)과 통신하는 것으로 본 명세서에 설명된 데이터 저장 장치(206) 또는 임의의 다른 컴퓨팅 장치를 포함할 수 있다.
실행가능 명령어 및 머신 저장 매체
다양한 메모리(예를 들면, 1430, 1432, 1434, 및/또는 프로세서(들)(1410)의 메모리 및/또는 저장 유닛(1436))는, 본 명세서에서 설명된 방법론 또는 기능 중 하나 이상에 의해 구체화되거나 활용되는, 하나 이상의 세트의 명령어(1416) 및 데이터 구조(예를 들면, 소프트웨어)를 저장할 수 있다. 이러한 명령어(1416)는, 프로세서(1410)에 의해 실행될 때, 개시된 실시 형태를 구현하기 위하여 다양한 동작을 실행시킨다.
본 명세서에서의 "머신 저장 매체", "장치 저장 매체" 및 "컴퓨터 저장 매체"라는 용어는 동일한 것을 의미하며, 본 발명에서는 동일한 의미로서 사용될 수 있다. 이들 용어는 실행 가능한 명령어 및/또는 데이터를 저장하는 단일 또는 다수의 저장 장치 및/또는 미디어(예를 들면, 중앙 집중식 또는 분산형 데이터베이스, 및/또는 관련 캐시 및 서버)를 의미한다. 따라서, 이들 용어는 프로세서의 내부 또는 외부 메모리를 비롯하여 솔리드-스테이트 메모리 및 광자기 매체를 포함하는 것으로 간주되지만, 이에 한정되지 않는다. 머신-저장 매체, 컴퓨터-저장 매체, 및/또는 장치-저장 매체의 구체적인 예로는, 반도체 메모리 장치, 예를 들면, 소거 가능한 프로그래머블 판독 전용 메모리(EPROM), 전기적으로 소거 가능한 프로그래머블 판독 전용 메모리(EEPROM), 필드 프로그래머블 게이트 어레이(FPGA) 및 플래시 메모리 장치와 같은 비휘발성 메모리와; 내부 하드 디스크 및 이동식 디스크와 같은 자기 디스크와; 광자기 디스크와; CD-ROM 및 DVD-ROM 디스크가 있다. "머신 저장 매체", "컴퓨터 저장 매체" 및 "장치 저장 매체"라는 용어는 반송파, 변조된 데이터 신호 및 기타 그러한 매체를 구체적으로 제외하며, 그 중 적어도 일부는 후술하는 "신호 매체"라는 용어에 포함된다.
전송 매체
다양한 예시적인 실시 형태에 있어서, 네트워크(1480)의 하나 이상의 부분은 얘드혹 네트워크, 인트라넷, 엑스트라넷, 가상 사설 통신망(VPN), 근거리 통신 망(LAN), 무선 랜(WLAN), 광역 통신 망(WAN), 무선 광역 통신 망(WWAN), 도시권 통신망(MANUFACTURING), 인터넷, 인터넷의 일부, 공중 교환 전화망(PSTN)의 일부, 기존 전화 서비스(POTS) 네트워크, 셀룰러 전화 네트워크, 무선 네트워크, Wi-Fi® 네트워크, 다른 유형의 네트워크, 또는 2개 이상의 네트워크의 조합일 수 있다. 예를 들면, 네트워크(1480) 또는 네트워크(1480)의 일부는 무선 또는 셀룰러 네트워크를 포함할 수 있고, 커플링(1482)은 부호 분할 다중 접속(CDMA), GSM(Global System for Mobile Communications) 접속, 또는 다른 유형의 셀룰러 또는 무선 커플링일 수 있다. 본 예에서, 커플링(882)은 lxRTT(Single Carrier Radio Transmission Technology), EVDO(Evolution-Data Optimized) 기술, GPRS(General Packet Radio Service) 기술, EDGE(Enhanced Data rates for GSM Evolution) 기술, 3G를 포함한 3GPP(third Generation Partnership Project), 4G(fourth generation wireless) 네트워크, UMTS(Universal Mobile Telecommunications System), HSPA(High-Speed Packet Access), WiMAX(Worldwide Interoperability for Microwave Access), LTE(Long Term Evolution) 표준, 다양한 표준 설정 기관에서 정의한 기타 통신 기술, 기타 장거리 프로토콜 또는 기타 데이터 전송 기술과 같은 다양한 유형의 데이터 전송 기술 중의 어느 하나에 의해 구현될 수 있다.
명령어(1416)는, 네트워크 인터페이스 장치(예를 들면, 통신 구성 요소(1464)에 포함된 네트워크 인터페이스 구성 요소)를 통해 전송 매체를 사용하고 다수의 공지된 전송 프로토콜(예를 들면, 하이퍼텍스트 전송 프로토콜(HTIP)) 중의 어느 하나를 활용하여 네트워크(1480)를 통해 전송되거나 수신될 수 있다. 마찬가지로, 명령어(1416)는 커플링(1472)(예를 들면, 피어-투-피어 커플링)을 통해 전송 매체를 이용하여 장치(1470)에 전송되거나 장치(1470)로부터 수신될 수 있다. "전송 매체" 및 "신호 매체"라는 용어는 동일한 것을 의미하며 본 명세서에서는 동일한 의미로서 사용될 수 있다. "전송 매체" 및 "신호 매체'라는 용어는 머신(1400)에 의한 실행을 위하여 명령어(1416)를 저장, 인코딩 또는 전달할 수 있는 임의의 무형 매체를 포함하는 것으로 간주되어야 하며, 그러한 소프트웨어의 통신을 용이하게 하기 위하여 디지털 또는 아날로그 통신 신호 또는 기타 무형 매체를 포함하는 것으로 간주되어야 한다. 따라서, "전송 매체" 및 "신호 매체"라는 용어는 변조된 데이터 신호, 반송파 등의 모든 형태를 포함하는 것으로 간주되어야 한다. "변조된 데이터 신호"라는 용어는 신호의 정보를 인코딩하는 방식으로 설정되거나 변경된 특성 중 하나 이상을 갖는 신호를 의미한다.
컴퓨터 판독 가능한 매체
"머신 판독 가능 매체", "컴퓨터 판독 가능 매체" 및 "장치 판독 가능 매체"라는 용어는 동일한 것을 의미하며 본 발명에서는 동일한 의미로서 사용될 수 있다. 이들 용어는 머신 저장 매체와 전송 매체를 모두 포함하는 것으로 정의된다. 따라서, 이들 용어는 저장 장치/매체 및 반송파/변조된 데이터 신호를 모두 포함한다.
본 명세서에서 설명된 예시적인 방법의 다양한 동작은, 관련 동작을 수행하도록 일시적으로(예를 들면, 소프트웨어에 의해) 구성되거나 영구적으로 구성된 하나 이상의 프로세서에 의해 적어도 부분적으로 수행될 수 있다. 마찬가지로, 본 명세서에서 설명된 방법은 적어도 부분적으로 프로세서에 의해 구현될 수 있다. 예를 들면, 방법(900)의 동작 중 적어도 일부는 하나 이상의 프로세서에 의해 수행될 수 있다. 특정 동작의 수행은, 단일 시스템 내에 상주할 뿐만 아니라 여러 시스템에 걸쳐 배치되는 하나 이상의 프로세서에 분산될 수 있다. 몇몇 예시적인 실시 형태에 있어서, 프로세서 또는 프로세서들은 단일 위치(예를 들면, 가정 환경, 사무실 환경, 또는 서버 팜 내)에 위치될 수 있고, 다른 실시 형태에서는, 이들 프로세서는 다수의 위치에 걸쳐 분산될 수 있다.
본 발명의 실시 형태가 특정한 예시적인 실시 형태를 참조하여 설명되었지만, 본 발명의 요지의 보다 넓은 범위를 벗어나지 않는 한, 이들 실시 형태에 다양한 수정 및 변경이 이루어질 수 있음은 자명하다. 따라서, 본 명세서 및 도면은 제한적인 의미가 아니라 예시적인 것으로 간주되어야 한다. 본 명세서의 일부를 구성하는 첨부 도면은 제한적이지 않은 예시이며, 본 발명이 실시될 수 있는 특정 실시 형태를 도시한 것이다. 예시된 실시 형태는, 당업자가 본 명세서에 개시된 교시를 실시하기에 충분하도록 상세하게 설명된다. 본 발명의 범위를 벗어나지 않고 구조적 및 논리적 대체 및 변경이 이루어질 수 있도록, 다른 실시 형태가 사용될 수 있고 그로부터 더 도출될 수 있다. 따라서, 본 상세한 설명은 제한적인 의미로 받아들여서는 안 되며, 다양한 실시 형태의 범위는 청구범위가 부여되는 등가물의 전체 범위와 함께 첨부된 청구 범위에 의해서만 정의된다.
본 발명의 실시 형태는, 본 출원의 범위를 임의의 단일 발명, 또는 두 개 이상의 발명이 실제로 공개된 경우는 발명 개념에 자발적으로 제한하려는 의도 없이 단지 편의를 위해 "발명"이라는 용어로 개별적으로 및/또는 통합적으로 언급될 수 있다. 따라서, 본 명세서에서 특정 실시 형태가 예시되고 설명되었지만, 동일한 목적을 달성하기 위해 계산된 임의의 배열이 도시된 특정 실시 형태를 대체할 수 있음을 이해해야 한다. 본 발명은 다양한 실시 형태의 모든 적응 또는 변형을 포함하도록 의도된다. 상기 실시 형태들의 조합 및 본 명세서에서 구체적으로 설명되지 않은 다른 실시 형태는, 상기 설명을 검토할 때 당업자에게 자명하다.
본 명세서에 있어서, "a" 또는 "an"이라는 용어는, 특허 문헌에서 흔히 볼 수 있듯이, "적어도 하나" 또는 "하나 이상"의 다른 모든 경우 또는 사용법과 관계없이 하나 또는 둘 이상을 포함하는 것으로 사용된다. 본 명세서에 있어서, ''또는"이라는 용어는, 달리 명시하지 않는 한, "A 또는 B"가 "A이지만 B는 아니다", "B이지만 A는 아니다" 및 "A와 B이다"를 포함하는 등 배타적이지 않는 것을 가리키는 데에 사용된다. 또한, 첨부된 청구 범위에 있어서, "포함하는(including)" 및 "여기서(in which)"라는 용어는, 해당 용어 "포함하는(comprising)" 및 "여기서(wherein)"의 일반 영어 등가물로서 사용된다. 또한, 첨부된 청구 범위에 있어서, "포함하는(including)" 및 "포함하는(comprising)"이라는 용어는 개방형(open-ended) 용어로서 사용되며, 즉, 청구 범위에서의 그러한 용어 뒤에 기재된 구성 요소 이외의 요소를 포함하는 시스템, 장치, 물품 또는 프로세스는 여전히 해당 청구 범위에 속하는 것으로 간주된다.
실시예
실시예 1은, 적어도 하나의 하드웨어 프로세서와, 상기 적어도 하나의 하드웨어 프로세서가 동작을 수행하도록 하는 명령어를 저장하는 메모리를 포함하는 네트워크 기반 데이터 웨어하우스 시스템으로서, 상기 동작은, 마이크로-파티션의 세트로 조직화된 소스 테이블에 액세스하는 동작과, 상기 소스 테이블에 기초하여 프루닝 인덱스를 생성하는 동작-상기 프루닝 인덱스는 상기 소스 테이블의 각 열에서의 개별 값을 인덱싱하는 필터의 세트를 포함함-과, 상기 소스 테이블을 대상으로 하는 쿼리를 수신하는 동작과, 상기 프루닝 인덱스를 사용하여 상기 쿼리를 처리하는 동작-상기 쿼리의 처리는 상기 쿼리와 매칭되는 데이터를 스캐닝하기 위해 상기 소스 테이블의 마이크로-파티션의 세트를 프루닝하는 것을 포함하고, 상기 마이크로-파티션의 세트의 상기 프루닝은 상기 프루닝 인덱스를 사용하여 상기 쿼리와 매칭되는 데이터를 스캐닝하기 위해 마이크로-파티션의 서브세트를 식별하는 것을 포함함-을 포함한다.
실시예 2에 있어서, 실시예 1의 발명은, 상기 소스 테이블의 각 마이크로-파티션마다 필터를 생성하는 동작을 선택적으로 더 포함한다.
실시예 3에 있어서, 실시예 1 및 실시예 2 중의 어느 하나의 발명은, 주어진 데이터 값에 대해, 상기 데이터 값에 기초하여 제1 필터 내의 셀을 식별하는 동작과, 상기 데이터 값에 기초하여 해시 값을 생성하는 동작과, 상기 해시 값을 이용하여 상기 제1 필터 내에 상기 셀을 추가하는 동작을 수행함으로써, 제1 마이크로-파티션에 대한 제1 필터를 생성하는 동작을 선택적으로 더 포함한다.
실시예 4에 있어서, 실시예 1 내지 실시예 3 중의 어느 하나의 발명은, 상기 제1 필터에서의 레벨의 개수를 계산하는 동작과, 상기 데이터 값 및 상기 제1 필터에서의 상기 레벨의 개수에 기초하여 상기 제1 필터에서의 슬라이스를 식별하는 동작과, 상기 데이터 값 및 제1 블룸 블록화 필터에서의 필터 열의 사전 결정된 개수에 기초하여 필터 열을 식별하는 동작을 선택적으로 더 포함한다.
실시예 5에 있어서, 실시예 1 내지 실시예 4 중의 어느 하나의 발명은, 목표 거짓 인식율에 기초하여 상기 제1 필터의 하나 이상의 행을 병합하는 동작을 선택적으로 더 포함한다.
실시예 6은, 실시예 1 내지 실시예 5 중의 어느 하나의 발명을 포함하며, 상기 필터의 세트에서의 필터는 블룸 필터의 세트를 선택적으로 포함하고, 상기 프루닝 인덱스는 복수의 열을 선택적으로 포함하고, 상기 복수의 열은 마이크로-파티션 식별자 열, 슬라이스 번호 열, 및 상기 블룸 필터의 세트를 포함한다.
실시예 7에 있어서, 실시예 1 내지 실시예 6 중의 어느 하나의 발명은, 슬라이스 번호 열에 대하여 복수의 행을 클러스터링하는 동작을 선택적으로 더 포함한다.
실시예 8에 있어서, 실시예 1 내지 실시예 7 중의 어느 하나의 필터는, 다수의 블룸 필터를 선택적으로 더 포함하고, 상기 필터에서의 블룸 필터의 개수는 거짓 인식율 제약에 기초한다.
실시예 9에 있어서, 실시예 1 내지 실시예 8 중의 어느 하나의 발명은, 상기 쿼리에 포함된 등식 술어에 기초하여 해시 값을 생성하는 동작과, 상기 해시 값과 매칭되는 상기 프루닝 인덱스에서의 하나 이상의 값을 식별하는 동작과, 상기 해시 값과 매칭되는 상기 프루닝 인덱스에서의 상기 하나 이상의 값에 기초하여 상기 등식 술어를 잠재적으로 충족하는 하나 이상의 마이크로-파티션을 식별하는 동작을 선택적으로 더 포함한다.
실시예 10에 있어서, 실시예 1 내지 실시예 9 중의 어느 하나의 발명은, 상기 소스 테이블에 대한 변경을 검출하는 동작과, 상기 소스 테이블에 대한 변경에 기초하여 상기 프루닝 인덱스에 대한 하나 이상의 추가 행을 생성하는 동작과, 슬라이스 번호에 기초하여 상기 프루닝 인덱스를 재클러스터링하는 동작을 선택적으로 더 포함한다.
실시예 11에 있어서, 실시예 1 내지 실시예 10 중의 어느 하나의 발명은, 상기 소스 테이블의 상기 마이크로-파티션의 서브세트를 스캐닝하여 상기 쿼리와 매칭되는 데이터를 식별하는 동작을 선택적으로 더 포함한다.
실시예 12에 있어서, 실시예 1 내지 실시예 11 중의 어느 하나의 발명은, 상기 쿼리와 매칭되는 데이터가 잠재적으로 저장되는 하나 이상의 마이크로-파티션을 식별하는 동작을 선택적으로 더 포함한다.
실시예 13은, 마이크로-파티션의 세트로 조직화된 소스 테이블에 액세스하는 단계와, 컴퓨터의 하나 이상의 하드웨어 프로세서에 의해, 상기 소스 테이블에 기초하여 프루닝 인덱스를 생성하는 단계-상기 프루닝 인덱스는 상기 소스 테이블의 각 열에서의 개별 값을 인덱싱하는 필터의 세트를 포함함-와, 상기 소스 테이블을 대상으로 하는 쿼리를 수신하는 단계와, 상기 프루닝 인덱스를 사용하여 상기 쿼리를 처리하는 단계-상기 쿼리의 처리는 상기 소스 테이블의 마이크로-파티션의 세트를 프루닝하여 상기 쿼리와 매칭되는 데이터를 스캐닝하는 것을 포함하고, 상기 마이크로-파티션의 세트의 상기 프루닝은 상기 프루닝 인덱스를 사용하여 상기 쿼리와 매칭되는 상기 데이터를 스캐닝하기 위해 마이크로-파티션의 서브세트를 식별하는 것을 포함함-를 포함하는 방법이다.
실시예 14에 있어서, 실시예 13의 발명은, 상기 소스 테이블의 각 마이크로-파티션마다 필터를 생성하는 단계를 선택적으로 더 포함한다.
실시예 15에 있어서, 실시예 13 및 실시예 14 중의 어느 하나의 발명은, 주어진 데이터 값에 대하여, 상기 데이터 값에 기초하여 상기 제1 필터 내의 셀을 식별하는 동작과, 상기 데이터 값에 기초하여 해시 값을 생성하는 동작과, 상기 해시 값을 이용하여 상기 제1 필터 내에 셀을 추가하는 동작을 수행함으로써, 제1 마이크로-파티션에 대한 제1 필터를 생성하는 단계를 선택적으로 더 포함한다.
실시예 16에 있어서, 실시예 13 내지 실시예 15 중의 어느 하나의 발명은, 상기 제1 필터에서의 레벨의 개수를 계산하는 단계와, 상기 데이터 값 및 상기 제1 필터에서의 상기 레벨의 개수에 기초하여 상기 제1 필터에서의 슬라이스를 식별하는 단계와, 상기 데이터 값 및 제1 블룸 블록화 필터에서의 필터 열의 사전 결정된 개수에 기초하여 필터 열을 식별하는 단계를 선택적으로 더 포함한다.
실시예 17에 있어서, 실시예 13 내지 실시예 16 중의 어느 하나의 발명은, 상기 프루닝 인덱스에서의 레벨의 개수를 계산하는 단계와, 상기 데이터 값 및 상기 프루닝 인덱스에서의 상기 레벨의 개수에 기초하여 상기 제1 필터에서의 레벨을 식별하는 단계와, 상기 데이터 값 및 상기 제1 블룸 블록화 필터에서의 필터 열의 사전 결정된 개수에 기초하여 필터 열을 식별하는 단계를 선택적으로 더 포함한다.
실시예 18에 있어서, 실시예 13 내지 실시예 17 중의 어느 하나의 발명은, 목표 거짓 인식율에 기초하여 상기 제1 필터의 하나 이상의 행을 병합하는 단계를 선택적으로 더 포함한다.
실시예 19는 실시예 13 내지 실시예 18 중의 어느 하나의 발명을 포함하며, 상기 필터의 세트에서의 필터는 블룸 필터의 세트를 선택적으로 포함하고, 상기 프루닝 인덱스는 복수의 열을 선택적으로 더 포함하고, 상기 복수의 열은 마이크로-파티션 식별자 열, 슬라이스 번호 열, 및 상기 블룸 필터의 세트를 포함하고, 상기 프루닝 인덱스는 상기 슬라이스 번호 열에 선택적으로 클러스터링된다.
실시예 20에 있어서, 실시예 12 내지 실시예 19 중의 어느 하나의 발명은, 상기 쿼리에 포함된 등식 술어에 기초하여 해시 값을 생성하는 단계와, 상기 해시 값과 매칭되는 상기 프루닝 인덱스에서의 하나 이상의 값을 식별하는 단계와, 상기 해시 값과 매칭되는 상기 프루닝 인덱스에서의 상기 하나 이상의 값에 기초하여 상기 등식 술어를 잠재적으로 충족하는 하나 이상의 마이크로-파티션을 식별하는 단계를 선택적으로 더 포함한다.
실시예 21에 있어서, 실시예 12 내지 실시예 20 중의 어느 하나의 발명은, 상기 소스 테이블에 대한 변경을 검출하는 단계와, 상기 소스 테이블에 대한 변경에 기초하여 상기 프루닝 인덱스에 대한 하나 이상의 추가 행을 생성하는 단계와, 슬라이스 번호에 기초하여 상기 프루닝 인덱스를 재클러스터링하는 단계를 선택적으로 더 포함한다.
실시예 22에 있어서, 실시예 12 내지 실시예 21 중의 어느 하나의 발명은, 상기 쿼리와 매칭되는 데이터를 식별하기 위해 상기 소스 테이블의 상기 마이크로-파티션의 서브세트를 스캐닝하는 단계를 선택적으로 더 포함한다.
실시예 23에 있어서, 실시예 12 내지 실시예 22 중의 어느 하나의 발명은, 상기 쿼리와 매칭되는 데이터가 잠재적으로 저장되는 하나 이상의 마이크로-파티션을 식별하는 단계를 선택적으로 더 포함한다.
실시예 24는, 머신의 하나 이상의 프로세서에 의해 실행될 때, 상기 머신이 동작을 수행하도록 구성된 명령어를 포함하는 컴퓨터 저장 매체로서, 상기 동작은, 마이크로-파티션의 세트로 조직화된 소스 테이블에 액세스하는 동작과, 상기 소스 테이블에 기초하여 프루닝 인덱스를 생성하는 동작-상기 프루닝 인덱스는 상기 소스 테이블의 각 열에서의 개별 값을 인덱싱하는 필터의 세트를 포함함-과, 상기 소스 테이블을 대상으로 하는 쿼리를 수신하는 동작과, 상기 프루닝 인덱스를 사용하여 상기 쿼리를 처리하는 동작-상기 쿼리의 처리는 상기 쿼리와 매칭되는 데이터를 스캐닝하기 위해 상기 소스 테이블의 마이크로-파티션의 세트를 프루닝하는 단계를 포함하고, 상기 마이크로-파티션의 세트의 상기 프루닝은 상기 프루닝 인덱스를 사용하여 상기 쿼리와 매칭되는 데이터를 스캐닝하기 위해 마이크로-파티션의 서브세트를 식별하는 단계를 포함함-을 포함한다.
실시예 25에 있어서, 실시예 24의 발명은, 상기 소스 테이블의 각 마이크로-파티션마다 필터를 생성하는 동작을 선택적으로 더 포함한다.
실시예 26에 있어서, 실시예 24 및 실시예 25 중의 어느 하나의 발명은, 주어진 데이터 값에 대해, 상기 데이터 값에 기초하여 제1 필터 내의 셀을 식별하는 동작과, 상기 데이터 값에 기초하여 해시 값을 생성하는 동작과, 상기 해시 값을 이용하여 상기 제1 필터 내에 상기 셀을 추가하는 동작을 수행함으로써, 제1 마이크로-파티션에 대한 제1 필터를 생성하는 동작을 선택적으로 더 포함한다.
실시예 27에 있어서, 실시예 24 내지 실시예 26 중의 어느 하나의 발명은, 상기 제1 필터에서의 레벨의 개수를 계산하는 동작과, 상기 데이터 값 및 상기 제1 필터에서의 상기 레벨의 개수에 기초하여 상기 제1 필터에서의 슬라이스를 식별하는 동작과, 상기 데이터 값 및 상기 제1 필터에서의 필터 열의 개수에 기초하여 필터 열을 식별하는 동작을 선택적으로 더 포함한다.
실시예 28은 실시예 24 내지 실시예 27 중의 어느 하나의 발명을 포함하고, 상기 필터의 세트에서의 필터는 블룸 필터의 세트를 선택적으로 포함하고, 상기 프루닝 인덱스는 복수의 열을 선택적으로 더 포함하고, 상기 복수의 열은 마이크로-파티션 식별자 열, 슬라이스 번호 열, 및 상기 블룸 필터의 세트를 포함하고, 상기 프루닝 인덱스는 상기 슬라이스 번호 열에서 선택적으로 클러스터링된다.
실시예 29에 있어서, 실시예 24 내지 실시예 28 중의 어느 하나의 발명은, 상기 쿼리에 포함된 등식 술어에 기초하여 해시 값을 생성하는 동작과, 상기 해시 값과 매칭되는 상기 프루닝 인덱스에서의 하나 이상의 값을 식별하는 동작과, 상기 해시 값과 매칭되는 상기 프루닝 인덱스에서의 상기 하나 이상의 값에 기초하여 상기 등식 술어를 잠재적으로 충족하는 하나 이상의 마이크로-파티션을 식별하는 동작을 선택적으로 더 포함한다.
실시예 30에 있어서, 실시예 24 내지 실시예 29 중의 어느 하나의 발명은, 상기 소스 테이블에 대한 변경을 검출하는 동작과, 상기 소스 테이블에 대한 상기 변경에 기초하여 상기 프루닝 인덱스에 대한 하나 이상의 추가 행을 생성하는 동작과, 슬라이스 번호에 기초하여 상기 프루닝 인덱스를 재클러스터링하는 동작을 선택적으로 더 포함한다.
Claims (30)
- 네트워크 기반 데이터 웨어하우스 시스템으로서,
적어도 하나의 하드웨어 프로세서와,
상기 적어도 하나의 하드웨어 프로세서가 동작을 수행하도록 하는 명령어를 저장하는 메모리를 포함하며,
상기 동작은,
마이크로-파티션의 세트로 조직화된 소스 테이블에 액세스하는 것;
상기 소스 테이블에 기초하여 프루닝 인덱스를 생성하는 것-상기 프루닝 인덱스는 상기 소스 테이블의 각 열에서의 개별 값을 인덱싱하는 필터의 세트를 포함하고, 상기 프루닝 인덱스를 생성하는 것은 상기 필터의 세트를 생성하는 것을 포함하고, 상기 필터의 세트에서의 각 필터는 상기 마이크로-파티션의 세트에서의 마이크로-파티션에 대응하며 상기 프루닝 인덱스에서의 2차원 어레이로서 표현됨-;
상기 소스 테이블을 대상으로 하는 쿼리를 수신하는 것; 및
상기 프루닝 인덱스를 사용하여 상기 쿼리를 처리하는 것-상기 쿼리의 처리는 상기 쿼리와 매칭되는 데이터를 스캐닝하기 위해 상기 소스 테이블의 상기 마이크로-파티션의 세트를 프루닝하는 것을 포함하고, 상기 마이크로-파티션의 세트의 상기 프루닝은 상기 프루닝 인덱스를 사용하여 상기 쿼리와 매칭되는 데이터를 스캐닝하기 위해 마이크로-파티션의 서브세트를 식별하는 것을 포함함-을
포함하는 네트워크 기반 데이터 웨어하우스 시스템. - 제1항에 있어서,
상기 프루닝 인덱스를 생성하는 것은, 상기 소스 테이블에서의 상기 마이크로-파티션의 세트의 제1 마이크로-파티션에 대해 제1 필터를 생성하는 것을 포함하고, 상기 제1 필터는 상기 제1 마이크로-파티션의 각 열(column)에서 개별 값을 인덱싱하는, 네트워크 기반 데이터 웨어하우스 시스템. - 제2항에 있어서,
상기 제1 필터를 생성하는 것은:
주어진 데이터 값에 대해,
상기 데이터 값에 기초하여 제1 필터 내의 셀을 식별하는 것;
상기 데이터 값에 기초하여 해시 값을 생성하는 것; 및
상기 해시 값을 이용하여 상기 제1 필터 내에 상기 셀을 추가하는 것(populating)을 포함하는, 네트워크 기반 데이터 웨어하우스 시스템. - 제3항에 있어서,
상기 제1 필터에서의 레벨의 개수를 계산하는 것을 더 포함하고,
상기 셀을 식별하는 것은,
상기 데이터 값 및 상기 제1 필터에서의 상기 레벨의 개수에 기초하여 상기 제1 필터에서의 슬라이스를 식별하는 것; 및
상기 데이터 값 및 상기 제1 필터에서의 필터 열의 개수에 기초하여 필터 열을 식별하는 것을 포함하는, 네트워크 기반 데이터 웨어하우스 시스템. - 제3항에 있어서,
상기 제1 필터를 생성하는 것은, 목표 거짓 인식율(target false positive rate)에 기초하여 상기 제1 필터의 하나 이상의 행을 병합하는 것을 더 포함하는, 네트워크 기반 데이터 웨어하우스 시스템. - 제1항에 있어서,
상기 필터의 세트에서의 각 필터는 블룸 필터의 세트를 포함하고,
상기 프루닝 인덱스는 복수의 열을 더 포함하고, 상기 복수의 열은 마이크로-파티션 식별자 열, 슬라이스 번호 열, 및 상기 블룸 필터의 세트를 포함하는, 네트워크 기반 데이터 웨어하우스 시스템. - 제6항에 있어서,
상기 슬라이스 번호 열에 기초하여 상기 프루닝 인덱스를 클러스터링하는 것을 더 포함하는, 네트워크 기반 데이터 웨어하우스 시스템. - 제1항에 있어서,
상기 필터의 세트의 각 필터는 다수의 블룸 필터를 포함하고, 각 블록화 블룸 필터에서의 블룸 필터의 개수는 거짓 인식율 제약에 기초하는, 네트워크 기반 데이터 웨어하우스 시스템. - 제1항에 있어서,
상기 프루닝 인덱스를 사용하여 상기 쿼리를 처리하는 것은,
상기 쿼리에 포함된 등식 술어에 기초하여 해시 값을 생성하는 것;
상기 해시 값과 매칭되는 상기 프루닝 인덱스에서의 하나 이상의 값을 식별하는 것; 및
상기 해시 값과 매칭되는 상기 프루닝 인덱스에서의 상기 하나 이상의 값에 기초하여 상기 등식 술어를 잠재적으로 충족하는 하나 이상의 마이크로-파티션을 식별하는 것
을 포함하는 네트워크 기반 데이터 웨어하우스 시스템. - 제1항에 있어서,
상기 동작은,
상기 소스 테이블에 대한 변경을 검출하는 것;
상기 소스 테이블에 대한 변경에 기초하여 상기 프루닝 인덱스에 대한 하나 이상의 추가 행을 생성하는 것; 및
슬라이스 번호에 기초하여 상기 프루닝 인덱스를 재클러스터링하는 것
을 더 포함하는 네트워크 기반 데이터 웨어하우스 시스템. - 제1항에 있어서,
상기 동작은,
상기 쿼리와 매칭되는 데이터를 식별하기 위해 상기 소스 테이블의 상기 마이크로-파티션의 서브세트를 스캐닝하는 것을 더 포함하는, 네트워크 기반 데이터 웨어하우스 시스템. - 제11항에 있어서,
상기 쿼리와 매칭되는 데이터를 스캐닝하기 위해 상기 마이크로-파티션의 서브세트를 식별하는 것은, 상기 쿼리와 매칭되는 데이터가 잠재적으로 저장되는 하나 이상의 마이크로-파티션을 식별하는 것을 포함하는, 네트워크 기반 데이터 웨어하우스 시스템. - 방법으로서,
마이크로-파티션의 세트로 조직화된 소스 테이블에 액세스하는 단계;
컴퓨터의 하나 이상의 하드웨어 프로세서에 의해, 상기 소스 테이블에 기초하여 프루닝 인덱스를 생성하는 단계-상기 프루닝 인덱스는 상기 소스 테이블의 각 열에서의 개별 값을 인덱싱하는 필터의 세트를 포함하고, 상기 프루닝 인덱스를 생성하는 단계는 상기 필터의 세트를 생성하는 단계를 포함하고, 상기 필터의 세트에서의 각 필터는 상기 마이크로-파티션의 세트에서의 마이크로-파티션에 대응하며 상기 프루닝 인덱스에서의 2차원 어레이로서 표현됨-;
상기 소스 테이블을 대상으로 하는 쿼리를 수신하는 단계; 및
상기 프루닝 인덱스를 사용하여 상기 쿼리를 처리하는 단계-상기 쿼리의 처리는 상기 쿼리와 매칭되는 데이터를 스캐닝하기 위해 상기 소스 테이블의 상기 마이크로-파티션의 세트를 프루닝하는 것을 포함하고, 상기 마이크로-파티션의 세트의 상기 프루닝은 상기 프루닝 인덱스를 사용하여 상기 쿼리와 매칭되는 데이터를 스캐닝하기 위해 마이크로-파티션의 서브세트를 식별하는 것을 포함함-를
포함하는 방법. - 제13항에 있어서,
상기 프루닝 인덱스를 생성하는 단계는, 상기 소스 테이블의 상기 마이크로-파티션의 세트에서의 제1 마이크로-파티션에 대해 제1 필터를 생성하는 단계를 포함하고, 상기 제1 필터는 상기 제1 마이크로-파티션의 각 열에서 개별 값을 인덱싱하는, 방법. - 제14항에 있어서,
상기 제1 필터를 생성하는 단계는:
주어진 데이터 값에 대하여,
상기 데이터 값에 기초하여 제1 필터 내의 셀을 식별하는 단계;
상기 데이터 값에 기초하여 해시 값을 생성하는 단계; 및
상기 해시 값을 이용하여 상기 제1 필터 내에 상기 셀을 추가하는 단계를 포함하는, 방법. - 제15항에 있어서,
상기 프루닝 인덱스를 생성하는 단계는,
상기 제1 필터에서의 레벨의 개수를 계산하는 단계를 포함하고,
상기 셀을 식별하는 단계는,
상기 데이터 값 및 상기 제1 필터에서의 상기 레벨의 개수에 기초하여 상기 제1 필터에서의 슬라이스를 식별하는 단계; 및
상기 데이터 값 및 상기 제1 필터에서의 필터 열의 사전 결정된 개수에 기초하여 필터 열을 식별하는 단계를 포함하는, 방법. - 제16항에 있어서,
상기 제1 필터를 생성하는 단계는, 목표 거짓 인식율에 기초하여 상기 제1 필터의 하나 이상의 행을 병합하는 단계를 더 포함하는 방법. - 제13항에 있어서,
상기 필터의 세트에서의 각 필터는 블룸 필터의 세트를 포함하고,
상기 프루닝 인덱스는 복수의 열을 더 포함하고,
상기 복수의 열은 마이크로-파티션 식별자 열, 슬라이스 번호 열, 및 상기 블룸 필터의 세트를 포함하고,
상기 프루닝 인덱스는 상기 슬라이스 번호 열에 클러스터링되는 방법. - 제13항에 있어서,
상기 필터의 세트의 각 필터는, 다수의 블룸 필터를 포함하고, 각 블록화 블룸 필터 내의 블룸 필터의 개수는 거짓 인식율 제약에 기초하는, 방법. - 제13항에 있어서,
상기 프루닝 인덱스를 사용하여 상기 쿼리를 처리하는 단계는,
상기 쿼리에 포함된 등식 술어에 기초하여 해시 값을 생성하는 단계;
상기 해시 값과 매칭되는 상기 프루닝 인덱스에서의 하나 이상의 값을 식별하는 단계; 및
상기 해시 값과 매칭되는 상기 프루닝 인덱스에서의 상기 하나 이상의 값에 기초하여 상기 등식 술어를 잠재적으로 충족하는 하나 이상의 마이크로-파티션을 식별하는 단계
를 포함하는 방법. - 제13항에 있어서,
상기 소스 테이블에 대한 변경을 검출하는 단계;
상기 소스 테이블에 대한 변경에 기초하여 상기 프루닝 인덱스에 대한 하나 이상의 추가 행을 생성하는 단계; 및
슬라이스 번호에 기초하여 상기 프루닝 인덱스를 재클러스터링하는 단계
를 더 포함하는 방법. - 제13항에 있어서,
상기 쿼리와 매칭되는 데이터를 식별하기 위해 상기 소스 테이블의 상기 마이크로-파티션의 서브세트를 스캐닝하는 단계를 더 포함하는 방법. - 제22항에 있어서,
상기 쿼리와 매칭되는 데이터를 스캐닝하기 위해 상기 마이크로-파티션의 서브세트를 식별하는 단계는, 상기 쿼리와 매칭되는 데이터가 잠재적으로 저장되는 하나 이상의 마이크로-파티션을 식별하는 단계를 포함하는 방법. - 머신의 하나 이상의 프로세서에 의해 실행될 때,
마이크로-파티션의 세트로 조직화된 소스 테이블에 액세스하는 것;
상기 소스 테이블에 기초하여 프루닝 인덱스를 생성하는 것-상기 프루닝 인덱스는 상기 소스 테이블의 각 열에서의 개별 값을 인덱싱하는 필터의 세트를 포함하고, 상기 프루닝 인덱스를 생성하는 것은 상기 필터의 세트를 생성하는 것을 포함하고, 상기 필터의 세트에서의 각 필터는 상기 마이크로-파티션의 세트에서의 마이크로-파티션에 대응하며 상기 프루닝 인덱스에서의 2차원 어레이로서 표현됨-;
상기 소스 테이블을 대상으로 하는 쿼리를 수신하는 것; 및
상기 프루닝 인덱스를 사용하여 상기 쿼리를 처리하는 것-상기 쿼리의 처리는 상기 쿼리와 매칭되는 데이터를 스캐닝하기 위해 상기 소스 테이블의 마이크로-파티션의 세트를 프루닝하는 것을 포함하고, 상기 마이크로-파티션의 세트의 상기 프루닝은 상기 프루닝 인덱스를 사용하여 상기 쿼리와 매칭되는 데이터를 스캐닝하기 위해 마이크로-파티션의 서브세트를 식별하는 것을 포함함-을,
포함하는 동작을 상기 머신이 수행하도록 구성된 명령어를 저장하는 컴퓨터 저장 매체. - 제24항에 있어서,
상기 프루닝 인덱스를 생성하는 것은, 상기 소스 테이블의 상기 마이크로-파티션의 세트에서의 제1 마이크로-파티션에 대해 제1 필터를 생성하는 것을 포함하고, 상기 제1 필터는 상기 제1 마이크로-파티션의 각 열에서 개별 값을 인덱싱하는, 컴퓨터 저장 매체. - 제25항에 있어서,
상기 제1 필터를 생성하는 것은:
주어진 데이터 값에 대해,
상기 데이터 값에 기초하여 제1 필터 내의 셀을 식별하는 것;
상기 데이터 값에 기초하여 해시 값을 생성하는 것;
상기 해시 값을 이용하여 상기 제1 필터 내에 상기 셀을 추가하는 것을 포함하는, 컴퓨터 저장 매체. - 제26항에 있어서,
상기 프루닝 인덱스를 생성하는 것은,
상기 제1 필터에서의 레벨의 개수를 계산하는 것을 포함하고,
상기 셀을 식별하는 것은,
상기 데이터 값 및 상기 제1 필터에서의 상기 레벨의 개수에 기초하여 상기 제1 필터에서의 슬라이스를 식별하는 것; 및
상기 데이터 값 및 상기 제1 필터에서의 필터 열의 개수에 기초하여 필터 열을 식별하는 것을 포함하는, 컴퓨터 저장 매체. - 제24항에 있어서,
상기 필터의 세트에서의 각 필터는 블룸 필터의 세트를 포함하고,
상기 프루닝 인덱스는 복수의 열을 더 포함하고,
상기 복수의 열은 마이크로-파티션 식별자 열, 슬라이스 번호 열, 및 상기 블룸 필터의 세트를 포함하고,
상기 프루닝 인덱스는 상기 슬라이스 번호 열에서 클러스터링되는, 컴퓨터 저장 매체. - 제24항에 있어서,
상기 프루닝 인덱스를 사용하여 상기 쿼리를 처리하는 것은,
상기 쿼리에 포함된 등식 술어에 기초하여 해시 값을 생성하는 것;
상기 해시 값과 매칭되는 상기 프루닝 인덱스에서의 하나 이상의 값을 식별하는 것; 및
상기 해시 값과 매칭되는 상기 프루닝 인덱스에서의 상기 하나 이상의 값에 기초하여 상기 등식 술어를 잠재적으로 충족하는 하나 이상의 마이크로-파티션을 식별하는 것을 포함하는, 컴퓨터 저장 매체. - 제24항에 있어서,
상기 동작은,
상기 소스 테이블에 대한 변경을 검출하는 것;
상기 소스 테이블에 대한 상기 변경에 기초하여 상기 프루닝 인덱스에 대한 하나 이상의 추가 행을 생성하는 것; 및
슬라이스 번호에 기초하여 상기 프루닝 인덱스를 재클러스터링하는 것을 더 포함하는, 컴퓨터 저장 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/727,315 | 2019-12-26 | ||
US16/727,315 US10769150B1 (en) | 2019-12-26 | 2019-12-26 | Pruning indexes to enhance database query processing |
PCT/US2020/044199 WO2021133433A1 (en) | 2019-12-26 | 2020-07-30 | Pruning indexes to enhance database query processing |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210132156A KR20210132156A (ko) | 2021-11-03 |
KR102520110B1 true KR102520110B1 (ko) | 2023-04-11 |
Family
ID=72289900
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020217031021A KR102520110B1 (ko) | 2019-12-26 | 2020-07-30 | 데이터베이스 쿼리 처리를 향상시키기 위한 프루닝 인덱스 |
Country Status (6)
Country | Link |
---|---|
US (5) | US10769150B1 (ko) |
EP (1) | EP3842957A1 (ko) |
KR (1) | KR102520110B1 (ko) |
CN (1) | CN113051351B (ko) |
DE (1) | DE202020005734U1 (ko) |
WO (1) | WO2021133433A1 (ko) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11567939B2 (en) | 2019-12-26 | 2023-01-31 | Snowflake Inc. | Lazy reassembling of semi-structured data |
US11016975B1 (en) | 2019-12-26 | 2021-05-25 | Snowflake Inc. | Scan set pruning for pattern matching queries |
US10769150B1 (en) | 2019-12-26 | 2020-09-08 | Snowflake Inc. | Pruning indexes to enhance database query processing |
US10997179B1 (en) | 2019-12-26 | 2021-05-04 | Snowflake Inc. | Pruning index for optimization of pattern matching queries |
US11372860B2 (en) | 2019-12-26 | 2022-06-28 | Snowflake Inc. | Processing techniques for queries where predicate values are unknown until runtime |
US11681708B2 (en) | 2019-12-26 | 2023-06-20 | Snowflake Inc. | Indexed regular expression search with N-grams |
US12050605B2 (en) | 2019-12-26 | 2024-07-30 | Snowflake Inc. | Indexed geospatial predicate search |
US11308090B2 (en) | 2019-12-26 | 2022-04-19 | Snowflake Inc. | Pruning index to support semi-structured data types |
US11615095B2 (en) | 2020-10-30 | 2023-03-28 | Snowflake Inc. | Automatic pruning cutoff in a database system |
US20220318508A1 (en) * | 2021-03-30 | 2022-10-06 | Gsi Technology Inc. | N-gram based classification with associative processing unit |
CN113702849B (zh) * | 2021-08-20 | 2024-06-18 | 深圳市新威尔电子有限公司 | 电池检测数据处理方法 |
CN115374329B (zh) * | 2022-10-25 | 2023-03-17 | 杭州比智科技有限公司 | 一种管理企业业务元数据和技术元数据的方法及系统 |
US11880369B1 (en) | 2022-11-21 | 2024-01-23 | Snowflake Inc. | Pruning data based on state of top K operator |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160350347A1 (en) * | 2015-05-29 | 2016-12-01 | Oracle International Corporation | Techniques for evaluating query predicates during in-memory table scans |
US20170323003A1 (en) | 2016-05-06 | 2017-11-09 | International Business Machines Corporation | Value range synopsis in column-organized analytical databases |
US20180068008A1 (en) * | 2016-09-02 | 2018-03-08 | Snowflake Computing, Inc. | Incremental Clustering Maintenance Of A Table |
Family Cites Families (147)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4956774A (en) | 1988-09-02 | 1990-09-11 | International Business Machines Corporation | Data base optimizer using most frequency values statistics |
US5864842A (en) | 1995-10-23 | 1999-01-26 | Ncr Corporation | Optimization of SQL queries using hash star join operations |
US6215910B1 (en) * | 1996-03-28 | 2001-04-10 | Microsoft Corporation | Table-based compression with embedded coding |
US6374232B1 (en) * | 1996-08-29 | 2002-04-16 | Oracle Corp. | Method and mechanism for retrieving values from a database |
US6618729B1 (en) | 2000-04-20 | 2003-09-09 | Ncr Corporation | Optimization of a star join operation using a bitmap index structure |
US6571233B2 (en) | 2000-12-06 | 2003-05-27 | International Business Machines Corporation | Optimization of SQL queries using filtering predicates |
US7499907B2 (en) | 2001-10-12 | 2009-03-03 | Teradata Us, Inc. | Index selection in a database system |
US7386561B1 (en) | 2002-02-06 | 2008-06-10 | Ncr Corp. | Partitioned joins of spatial objects in a database system |
US7171427B2 (en) * | 2002-04-26 | 2007-01-30 | Oracle International Corporation | Methods of navigating a cube that is implemented as a relational object |
US6957225B1 (en) * | 2002-05-07 | 2005-10-18 | Oracle International Corporation | Automatic discovery and use of column correlations in tables |
US7281013B2 (en) | 2002-06-03 | 2007-10-09 | Microsoft Corporation | Workload analysis tool for relational databases |
US7111025B2 (en) | 2003-04-30 | 2006-09-19 | International Business Machines Corporation | Information retrieval system and method using index ANDing for improving performance |
US7500111B2 (en) | 2003-05-30 | 2009-03-03 | International Business Machines Corporation | Querying encrypted data in a relational database system |
US7849063B2 (en) | 2003-10-17 | 2010-12-07 | Yahoo! Inc. | Systems and methods for indexing content for fast and scalable retrieval |
US7620624B2 (en) | 2003-10-17 | 2009-11-17 | Yahoo! Inc. | Systems and methods for indexing content for fast and scalable retrieval |
US7870161B2 (en) | 2003-11-07 | 2011-01-11 | Qiang Wang | Fast signature scan |
US7454418B1 (en) | 2003-11-07 | 2008-11-18 | Qiang Wang | Fast signature scan |
US7493337B2 (en) | 2004-03-31 | 2009-02-17 | Microsoft Corporation | Query progress estimation |
US7814104B2 (en) * | 2005-05-04 | 2010-10-12 | Oracle International Corporation | Techniques for partition pruning |
US7428524B2 (en) * | 2005-08-05 | 2008-09-23 | Google Inc. | Large scale data storage in sparse tables |
US7461060B2 (en) * | 2005-10-04 | 2008-12-02 | International Business Machines Corporation | Generalized partition pruning in a database system |
US7849073B2 (en) | 2006-12-18 | 2010-12-07 | Ianywhere Solutions, Inc. | Load balancing for complex database query plans |
US8315984B2 (en) | 2007-05-22 | 2012-11-20 | Netapp, Inc. | System and method for on-the-fly elimination of redundant data |
US8666976B2 (en) | 2007-12-31 | 2014-03-04 | Mastercard International Incorporated | Methods and systems for implementing approximate string matching within a database |
US8209178B1 (en) | 2008-01-10 | 2012-06-26 | Google Inc. | Randomized language models |
US8145806B2 (en) | 2008-09-19 | 2012-03-27 | Oracle International Corporation | Storage-side storage request management |
US7996369B2 (en) | 2008-11-14 | 2011-08-09 | The Regents Of The University Of California | Method and apparatus for improving performance of approximate string queries using variable length high-quality grams |
GB2482630B (en) * | 2009-04-16 | 2014-12-24 | Toshiba Res Europ Ltd | A speech processing method and apparatus |
US8533181B2 (en) * | 2009-04-29 | 2013-09-10 | Oracle International Corporation | Partition pruning via query rewrite |
US8271499B2 (en) | 2009-06-10 | 2012-09-18 | At&T Intellectual Property I, L.P. | Incremental maintenance of inverted indexes for approximate string matching |
US20110082855A1 (en) * | 2009-10-01 | 2011-04-07 | Al-Omari Awny K | Multi-dimensional access to data |
US20120137367A1 (en) | 2009-11-06 | 2012-05-31 | Cataphora, Inc. | Continuous anomaly detection based on behavior modeling and heterogeneous information analysis |
US8818991B2 (en) | 2009-12-23 | 2014-08-26 | Pivotal Software, Inc. | Apparatus and method for analyzing query optimizer performance |
US8359316B2 (en) * | 2010-03-01 | 2013-01-22 | International Business Machines Corporation | Database table look-up |
US8655867B2 (en) | 2010-05-13 | 2014-02-18 | Salesforce.Com, Inc. | Method and system for optimizing queries in a multi-tenant database environment |
CN101916261B (zh) | 2010-07-28 | 2013-07-17 | 北京播思软件技术有限公司 | 一种分布式并行数据库系统的数据分区方法 |
KR101855542B1 (ko) * | 2010-09-10 | 2018-06-08 | 톰슨 라이센싱 | 예제 기반 데이터 프루닝을 이용한 비디오 부호화 |
US8527544B1 (en) | 2011-08-11 | 2013-09-03 | Pure Storage Inc. | Garbage collection in a storage system |
US11195057B2 (en) | 2014-03-18 | 2021-12-07 | Z Advanced Computing, Inc. | System and method for extremely efficient image and pattern recognition and artificial intelligence platform |
US9916538B2 (en) | 2012-09-15 | 2018-03-13 | Z Advanced Computing, Inc. | Method and system for feature detection |
US9514272B2 (en) * | 2011-10-12 | 2016-12-06 | Complete Genomics, Inc. | Identification of DNA fragments and structural variations |
US8768927B2 (en) * | 2011-12-22 | 2014-07-01 | Sap Ag | Hybrid database table stored as both row and column store |
US8880510B2 (en) * | 2011-12-23 | 2014-11-04 | Sap Se | Unique value calculation in partitioned tables |
US8458156B1 (en) | 2012-05-18 | 2013-06-04 | Google Inc. | Learning common spelling errors through content matching |
US10311062B2 (en) | 2012-08-21 | 2019-06-04 | Microsoft Technology Licensing, Llc | Filtering structured data using inexact, culture-dependent terms |
US9111095B2 (en) | 2012-08-29 | 2015-08-18 | The Johns Hopkins University | Apparatus and method for identifying similarity via dynamic decimation of token sequence n-grams |
US9727609B2 (en) | 2012-09-28 | 2017-08-08 | Oracle International Corporation | Triggering hard parses |
US8996544B2 (en) * | 2012-09-28 | 2015-03-31 | Oracle International Corporation | Pruning disk blocks of a clustered table in a relational database management system |
US9514187B2 (en) * | 2012-09-28 | 2016-12-06 | Oracle International Corporation | Techniques for using zone map information for post index access pruning |
US9298726B1 (en) | 2012-10-01 | 2016-03-29 | Netapp, Inc. | Techniques for using a bloom filter in a duplication operation |
US20140114942A1 (en) * | 2012-10-23 | 2014-04-24 | International Business Machines Corporation | Dynamic Pruning of a Search Index Based on Search Results |
TW201429669A (zh) | 2012-11-21 | 2014-08-01 | Procter & Gamble | 射出成型系統之縮小形澆道 |
US9773041B2 (en) | 2013-03-06 | 2017-09-26 | Oracle International Corporation | Methods and apparatus of shared expression evaluation across RDBMS and storage layer |
US10198363B2 (en) * | 2015-10-23 | 2019-02-05 | Oracle International Corporation | Reducing data I/O using in-memory data structures |
US10296508B2 (en) * | 2013-06-06 | 2019-05-21 | Sap Se | Systems and methods to manage online analytical and transactional processing for an in-memory columnar database |
US10394848B2 (en) * | 2013-07-29 | 2019-08-27 | Amazon Technologies, Inc. | Generating a multi-column index for relational databases by interleaving data bits for selectivity |
US9471711B2 (en) | 2013-09-23 | 2016-10-18 | Teradata Us, Inc. | Schema-less access to stored data |
US9659045B2 (en) | 2013-11-08 | 2017-05-23 | Oracle International Corporation | Generic indexing for efficiently supporting ad-hoc query over hierarchically marked-up data |
WO2015086824A1 (en) | 2013-12-13 | 2015-06-18 | Danmarks Tekniske Universitet | Method of and system for information retrieval |
US9684671B1 (en) | 2014-02-28 | 2017-06-20 | Pivotal Software, Inc. | Parallel streaming of external data |
US10303800B2 (en) | 2014-03-04 | 2019-05-28 | Interactive Intelligence Group, Inc. | System and method for optimization of audio fingerprint search |
US9792328B2 (en) | 2014-03-13 | 2017-10-17 | Sybase, Inc. | Splitting of a join operation to allow parallelization |
US9836505B2 (en) | 2014-03-13 | 2017-12-05 | Sybase, Inc. | Star and snowflake join query performance |
US9412365B2 (en) | 2014-03-24 | 2016-08-09 | Google Inc. | Enhanced maximum entropy models |
US9454574B2 (en) | 2014-03-28 | 2016-09-27 | Sybase, Inc. | Bloom filter costing estimation |
US20160004706A1 (en) * | 2014-07-01 | 2016-01-07 | Microsoft Corporation | Security trimming of search suggestions |
US10002148B2 (en) * | 2014-07-22 | 2018-06-19 | Oracle International Corporation | Memory-aware joins based in a database cluster |
US9940356B2 (en) | 2014-07-31 | 2018-04-10 | International Business Machines Corporation | Efficient join-filters for parallel processing |
US9672248B2 (en) | 2014-10-08 | 2017-06-06 | International Business Machines Corporation | Embracing and exploiting data skew during a join or groupby |
US10628418B2 (en) * | 2014-11-13 | 2020-04-21 | Sap Se | Data driven multi-provider pruning for query execution plan |
CN105701098B (zh) * | 2014-11-25 | 2019-07-09 | 国际商业机器公司 | 针对数据库中的表生成索引的方法和装置 |
US20160162364A1 (en) * | 2014-12-03 | 2016-06-09 | Commvault Systems, Inc. | Secondary storage pruning |
CA2876466C (en) * | 2014-12-29 | 2022-07-05 | Ibm Canada Limited - Ibm Canada Limitee | Scan optimization using bloom filter synopsis |
US10810200B2 (en) | 2015-01-07 | 2020-10-20 | International Business Machines Corporation | Technology for join processing |
US10909078B2 (en) | 2015-02-25 | 2021-02-02 | International Business Machines Corporation | Query predicate evaluation and computation for hierarchically compressed data |
US10303791B2 (en) | 2015-03-20 | 2019-05-28 | International Business Machines Corporation | Efficient join on dynamically compressed inner for improved fit into cache hierarchy |
US9922064B2 (en) | 2015-03-20 | 2018-03-20 | International Business Machines Corporation | Parallel build of non-partitioned join hash tables and non-enforced N:1 join hash tables |
US10372700B2 (en) | 2015-03-30 | 2019-08-06 | International Business Machines Corporation | Data filtering using a plurality of hardware accelerators |
US10387414B2 (en) * | 2015-04-13 | 2019-08-20 | Risk Management Solutions, Inc. | High performance big data computing system and platform |
US10067969B2 (en) * | 2015-05-29 | 2018-09-04 | Nuodb, Inc. | Table partitioning within distributed database systems |
US10366247B2 (en) | 2015-06-02 | 2019-07-30 | ALTR Solutions, Inc. | Replacing distinct data in a relational database with a distinct reference to that data and distinct de-referencing of database data |
US10321162B2 (en) * | 2015-06-08 | 2019-06-11 | Qualcomm Incorporated | Derivation of color gamut scalability parameters and tables in scalable video coding |
US10372706B2 (en) | 2015-07-29 | 2019-08-06 | Oracle International Corporation | Tracking and maintaining expression statistics across database queries |
US10204135B2 (en) | 2015-07-29 | 2019-02-12 | Oracle International Corporation | Materializing expressions within in-memory virtual column units to accelerate analytic queries |
US10162857B2 (en) * | 2015-08-31 | 2018-12-25 | Qatar Foundation For Education, Science And Community | Optimized inequality join method |
US10019382B2 (en) | 2015-10-20 | 2018-07-10 | Sap Se | Secondary data structures for storage class memory (scm) enables main-memory databases |
US10642831B2 (en) * | 2015-10-23 | 2020-05-05 | Oracle International Corporation | Static data caching for queries with a clause that requires multiple iterations to execute |
US20170139989A1 (en) * | 2015-11-18 | 2017-05-18 | Sap Se | Pruning of Table Partitions from a Calculation Scenario for Executing a Query |
US10324927B2 (en) * | 2015-11-19 | 2019-06-18 | Sap Se | Data-driven union pruning in a database semantic layer |
US9836603B2 (en) * | 2015-12-30 | 2017-12-05 | Symantec Corporation | Systems and methods for automated generation of generic signatures used to detect polymorphic malware |
US10521454B2 (en) * | 2016-01-08 | 2019-12-31 | Bmc Software, Inc. | Reorganization of partition by growth space with LOB columns |
US10242074B2 (en) | 2016-02-03 | 2019-03-26 | Facebook, Inc. | Search-results interfaces for content-item-specific modules on online social networks |
US10210195B2 (en) * | 2016-02-12 | 2019-02-19 | International Business Machines Corporation | Locating data in a set with a single index using multiple property values |
US10725994B2 (en) * | 2016-04-08 | 2020-07-28 | International Business Machines Corporation | Automatically revising synopsis table structure |
US20170300862A1 (en) | 2016-04-14 | 2017-10-19 | Linkedln Corporation | Machine learning algorithm for classifying companies into industries |
US10649991B2 (en) | 2016-04-26 | 2020-05-12 | International Business Machines Corporation | Pruning of columns in synopsis tables |
US10353867B1 (en) | 2016-06-27 | 2019-07-16 | EMC IP Holding Company LLC | Method and system for verifying files for garbage collection |
US11507601B2 (en) | 2016-08-18 | 2022-11-22 | International Business Machines Corporation | Matching a first collection of strings with a second collection of strings |
US11222066B1 (en) | 2016-09-26 | 2022-01-11 | Splunk Inc. | Processing data using containerized state-free indexing nodes in a containerized scalable environment |
US10635671B2 (en) | 2016-10-05 | 2020-04-28 | Oracle International Corporation | Sort-merge band join optimization |
US20180101540A1 (en) | 2016-10-10 | 2018-04-12 | Facebook, Inc. | Diversifying Media Search Results on Online Social Networks |
US11036699B2 (en) * | 2016-10-20 | 2021-06-15 | International Business Machines Corporation | Method for computing distinct values in analytical databases |
US10642832B1 (en) | 2016-11-06 | 2020-05-05 | Tableau Software, Inc. | Reducing the domain of a subquery by retrieving constraints from the outer query |
US11074261B1 (en) | 2016-12-16 | 2021-07-27 | Amazon Technologies, Inc. | Format independent processing for distributed data |
US10528599B1 (en) | 2016-12-16 | 2020-01-07 | Amazon Technologies, Inc. | Tiered data processing for distributed data |
US10303456B2 (en) | 2017-03-23 | 2019-05-28 | Intel Corporation | Technologies for performing energy efficient software distribution |
US10713247B2 (en) | 2017-03-31 | 2020-07-14 | Amazon Technologies, Inc. | Executing queries for structured data and not-structured data |
US20180336262A1 (en) | 2017-05-19 | 2018-11-22 | Futurewei Technologies, Inc. | Geometric approach to predicate selectivity |
US10866971B2 (en) | 2017-05-22 | 2020-12-15 | Sap Se | Hash collision tables for relational operations |
US10789229B2 (en) | 2017-06-13 | 2020-09-29 | Microsoft Technology Licensing, Llc | Determining a hierarchical concept tree using a large corpus of table values |
US10705809B2 (en) | 2017-09-08 | 2020-07-07 | Devfactory Innovations Fz-Llc | Pruning engine |
US10838963B2 (en) * | 2017-09-11 | 2020-11-17 | International Business Machines Corporation | Optimized access for hierarchical low cardinality value synopsis in analytical databases |
US10885056B2 (en) | 2017-09-29 | 2021-01-05 | Oracle International Corporation | Data standardization techniques |
US11163745B2 (en) | 2017-10-05 | 2021-11-02 | Liveramp, Inc. | Statistical fingerprinting of large structure datasets |
US10812495B2 (en) | 2017-10-06 | 2020-10-20 | Uvic Industry Partnerships Inc. | Secure personalized trust-based messages classification system and method |
KR102452953B1 (ko) * | 2017-10-30 | 2022-10-11 | 삼성전자주식회사 | 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치 |
US20190205376A1 (en) | 2017-12-28 | 2019-07-04 | Microsoft Technology Licensing, Llc | Title standardization through iterative processing |
US11036735B2 (en) | 2018-01-16 | 2021-06-15 | Oracle International Corporation | Dimension context propagation techniques for optimizing SQL query plans |
US11037258B2 (en) | 2018-03-02 | 2021-06-15 | Dubset Media Holdings, Inc. | Media content processing techniques using fingerprinting and heuristics |
US10642840B1 (en) | 2018-03-07 | 2020-05-05 | Amazon Technologies, Inc. | Filtered hash table generation for performing hash joins |
EP3547166B1 (en) | 2018-03-26 | 2020-12-02 | Hasso-Plattner-Institut für Digital Engineering gGmbH | Data placement in hybrid data layouts for tiered htap databases |
US10657031B2 (en) * | 2018-03-30 | 2020-05-19 | Oracle International Corporation | Scalable execution tracing for large program codebases |
US10691753B2 (en) | 2018-04-25 | 2020-06-23 | Oracle International Corporation | Memory reduced string similarity analysis |
US11269839B2 (en) | 2018-06-05 | 2022-03-08 | Oracle International Corporation | Authenticated key-value stores supporting partial state |
US10713243B2 (en) | 2018-06-18 | 2020-07-14 | Salesforce.Com, Inc. | Precompiled SQL queries that allow for dynamic selection of columns |
US11061895B2 (en) * | 2018-07-18 | 2021-07-13 | Oracle International Corporation | Adaptive granule generation for parallel queries with run-time data pruning |
US11010257B2 (en) | 2018-10-12 | 2021-05-18 | EMC IP Holding Company LLC | Memory efficient perfect hashing for large records |
WO2020086381A1 (en) | 2018-10-23 | 2020-04-30 | Nvidia Corporation | Effective and scalable building and probing of hash tables using multiple gpus |
US11544300B2 (en) | 2018-10-23 | 2023-01-03 | EMC IP Holding Company LLC | Reducing storage required for an indexing structure through index merging |
US10573312B1 (en) | 2018-12-04 | 2020-02-25 | Sorenson Ip Holdings, Llc | Transcription generation from multiple speech recognition systems |
US10388272B1 (en) | 2018-12-04 | 2019-08-20 | Sorenson Ip Holdings, Llc | Training speech recognition systems using word sequences |
US11170761B2 (en) | 2018-12-04 | 2021-11-09 | Sorenson Ip Holdings, Llc | Training of speech recognition systems |
US11042650B2 (en) | 2018-12-06 | 2021-06-22 | International Business Machines Corporation | Sargable query-predicate evaluation for encrypted databases |
US20200285761A1 (en) | 2019-03-07 | 2020-09-10 | Lookout, Inc. | Security policy manager to configure permissions on computing devices |
US11176133B2 (en) | 2019-04-04 | 2021-11-16 | Sap Se | Filter evaluation for table fragments |
EP3742349A1 (en) * | 2019-05-24 | 2020-11-25 | Samsung Electronics Co., Ltd. | Decompression apparatus and control method thereof |
US11194793B1 (en) | 2019-06-25 | 2021-12-07 | Amazon Technologies, Inc. | Dynamically materialized views for sheets based data |
US20210073219A1 (en) | 2019-09-09 | 2021-03-11 | International Business Machines Corporation | Database query data redundancy nullification |
US11429604B2 (en) | 2019-09-10 | 2022-08-30 | Oracle International Corporation | Techniques of heterogeneous hardware execution for SQL analytic queries for high volume data processing |
US10997179B1 (en) | 2019-12-26 | 2021-05-04 | Snowflake Inc. | Pruning index for optimization of pattern matching queries |
US11372860B2 (en) | 2019-12-26 | 2022-06-28 | Snowflake Inc. | Processing techniques for queries where predicate values are unknown until runtime |
US11016975B1 (en) | 2019-12-26 | 2021-05-25 | Snowflake Inc. | Scan set pruning for pattern matching queries |
US12050605B2 (en) | 2019-12-26 | 2024-07-30 | Snowflake Inc. | Indexed geospatial predicate search |
US11308090B2 (en) | 2019-12-26 | 2022-04-19 | Snowflake Inc. | Pruning index to support semi-structured data types |
US10769150B1 (en) | 2019-12-26 | 2020-09-08 | Snowflake Inc. | Pruning indexes to enhance database query processing |
US11468012B2 (en) | 2020-02-28 | 2022-10-11 | EMC IP Holding Company LLC | Garbage collection assisted deduplication in a log structured file system |
WO2022016170A1 (en) | 2020-07-17 | 2022-01-20 | Snowflake Inc. | Pruning index for optimization of pattern matching queries |
-
2019
- 2019-12-26 US US16/727,315 patent/US10769150B1/en active Active
-
2020
- 2020-07-17 US US16/932,462 patent/US10942925B1/en active Active
- 2020-07-30 KR KR1020217031021A patent/KR102520110B1/ko active IP Right Grant
- 2020-07-30 DE DE202020005734.7U patent/DE202020005734U1/de active Active
- 2020-07-30 WO PCT/US2020/044199 patent/WO2021133433A1/en active Application Filing
- 2020-12-21 EP EP20216097.4A patent/EP3842957A1/en active Pending
- 2020-12-25 CN CN202011561998.4A patent/CN113051351B/zh active Active
-
2021
- 2021-01-28 US US17/161,115 patent/US11086875B2/en active Active
- 2021-06-25 US US17/358,154 patent/US11308089B2/en active Active
-
2022
- 2022-03-15 US US17/654,887 patent/US11803551B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160350347A1 (en) * | 2015-05-29 | 2016-12-01 | Oracle International Corporation | Techniques for evaluating query predicates during in-memory table scans |
US20170323003A1 (en) | 2016-05-06 | 2017-11-09 | International Business Machines Corporation | Value range synopsis in column-organized analytical databases |
US20180068008A1 (en) * | 2016-09-02 | 2018-03-08 | Snowflake Computing, Inc. | Incremental Clustering Maintenance Of A Table |
Also Published As
Publication number | Publication date |
---|---|
US20210319025A1 (en) | 2021-10-14 |
EP3842957A1 (en) | 2021-06-30 |
US20220277013A1 (en) | 2022-09-01 |
US11086875B2 (en) | 2021-08-10 |
CN113051351B (zh) | 2024-06-11 |
US10769150B1 (en) | 2020-09-08 |
US11308089B2 (en) | 2022-04-19 |
US10942925B1 (en) | 2021-03-09 |
US11803551B2 (en) | 2023-10-31 |
CN113051351A (zh) | 2021-06-29 |
WO2021133433A1 (en) | 2021-07-01 |
US20210200772A1 (en) | 2021-07-01 |
DE202020005734U1 (de) | 2022-04-04 |
KR20210132156A (ko) | 2021-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102520110B1 (ko) | 데이터베이스 쿼리 처리를 향상시키기 위한 프루닝 인덱스 | |
US11544269B2 (en) | Index to support processing of pattern matching queries | |
US11593379B2 (en) | Join query processing using pruning index | |
US11016975B1 (en) | Scan set pruning for pattern matching queries | |
US11494384B2 (en) | Processing queries on semi-structured data columns | |
WO2024054858A1 (en) | Data-driven query-execution scheduling | |
EP4182808A1 (en) | Pruning index for optimization of pattern matching queries | |
US11880364B2 (en) | Predictive resource allocation for distributed query execution | |
US20230214383A1 (en) | Object dependency status tracking in a cloud system | |
US11755581B2 (en) | Cutoffs for pruning of database queries | |
US20240232167A9 (en) | File-based error handling during ingestion with transformation | |
US20230222121A1 (en) | Clustering and compaction of materialized views on a database system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |