KR101792582B1 - 칼럼형 데이터베이스의 히스토그램을 이용한 효율적인 질의 처리 - Google Patents

칼럼형 데이터베이스의 히스토그램을 이용한 효율적인 질의 처리 Download PDF

Info

Publication number
KR101792582B1
KR101792582B1 KR1020177002434A KR20177002434A KR101792582B1 KR 101792582 B1 KR101792582 B1 KR 101792582B1 KR 1020177002434 A KR1020177002434 A KR 1020177002434A KR 20177002434 A KR20177002434 A KR 20177002434A KR 101792582 B1 KR101792582 B1 KR 101792582B1
Authority
KR
South Korea
Prior art keywords
data
column
probability
ranges
histogram
Prior art date
Application number
KR1020177002434A
Other languages
English (en)
Other versions
KR20170015538A (ko
Inventor
아누라그 윈들라스 굽타
Original Assignee
아마존 테크놀로지스, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 아마존 테크놀로지스, 인크. filed Critical 아마존 테크놀로지스, 인크.
Publication of KR20170015538A publication Critical patent/KR20170015538A/ko
Application granted granted Critical
Publication of KR101792582B1 publication Critical patent/KR101792582B1/ko

Links

Images

Classifications

    • G06F17/30592
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/254Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/221Column-oriented storage; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2237Vectors, bitmaps or matrices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • G06F17/30424

Abstract

칼럼형 데이터베이스의 칼럼에 있는 미정렬 데이터에 대한 히스토그램을 이용하여 효율적인 질의 처리를 위한 확률 데이터 구조를 생성한다. 칼럼형 데이터베이스 테이블의 칼럼의 히스토그램의 다수의 버킷에 대한 버킷 범위 크기를 결정한다. 적어도 몇몇 실시예에서, 히스토그램은 높이-균형 히스토그램일 수 있다. 데이터 블록에 저장된 데이터 값이 히스토그램의 어떠한 특정한 버킷들을 위해 존재하는지를 나타내도록 확률 데이터 구조를 생성한다. 선택 데이터에 대한 칼럼에 관한 질의의 표시를 수신하면, 칼럼에 대한 데이터를 저장하는 데이터 블록들의 각각에 대한 확률 데이터 구조를 검사하여, 데이터 블록들 중 선택 데이터에 대한 칼럼에 서비스하도록 판독할 필요가 없는 특정한 데이터 블록을 결정할 수 있다.

Description

칼럼형 데이터베이스의 히스토그램을 이용한 효율적인 질의 처리{EFFICIENT QUERY PROCESSING USING HISTOGRAMS IN A COLUMNAR DATABASE}
정보를 생성하고, 추적하고, 유지하는 조직에 대한 과학 기술적 용량이 계속 증가함에 따라, 정보의 밀물을 관리하고 저장하기 위한 서로 다른 다양한 기술들이 개발되어 왔다. 예를 들어, 데이터베이스 시스템은, 저장된 정보를 관리하기 위한 하드웨어와 소프트웨어의 서로 다른 많은 특정형 또는 맞춤형 구성들을 클라이언트에 제공한다. 그러나, 데이터 편성의 양이 증가함에 따라, 데이터베이스 시스템처럼 데이터 저장과 관리 기술들의 크기와 복잡성 모두의 대응하는 증가를 종종 저장하고 관리해야 하며, 이에 따라 정보를 유지하는 비용이 증가하게 된다. 새로운 기술들은 데이터 저장 및 데이터 관리의 효율성을 개선하면서 동시에 데이터를 유지하는 복잡성과 저장 요건 모두를 더욱 줄이고자 한다.
이러한 한 가지 기술은, 데이터를 관리하는 데 필요한 액세스 연산의 개수를 줄이도록 칼럼 지향 데이터베이스 테이블(흔히 "칼럼형"이라 칭함)을 이용하여 데이터가 데이터베이스 테이블에 저장될 때 그 데이터의 지향 또는 배열을 수정하는 것을 포함한다. 통상적으로, 다양한 입력(예를 들어, 데이터 기입)과 출력(예를 들어, 데이터 판독) 등의 액세스 연산은, 데이터의 저장 및 관리시 가장 고 비용이 들며 가장 비효율적인 것으로 입증되어 있다. 칼럼형 데이터베이스는, 예를 들어, 데이터베이스 시스템이 데이터베이스 테이블의 로우(row)보다는 데이터베이스 테이블의 칼럼에서 두드러지게 발생하는 정보의 질의에 응답하는 경우, 소정의 유형의 데이터에 대하여, 액세스 연산의 개수를 급격히 줄일 수 있다. 그러나, 칼럼형 데이터베이스 테이블 등의 기술의 출현에도, 수집된 정보를 계속 성장시키려면 데이터의 저장과 관리를 더욱 최적화할 필요가 있다.
도 1은 몇몇 실시예에 따라 칼럼형 데이터베이스의 칼럼에 대한 높이-균형 히스토그램(height-balanced histogram)을 이용한 효율적인 질의 처리의 데이터흐름을 도시한 블록도;
도 2는 몇몇 실시예에 따라 분산형 데이터베이스 웨어하우스 서비스의 일례를 예시하는 블록도;
도 3은 몇몇 실시예에 따라 분산형 데이터 웨어하우스 클러스터의 일례를 예시하는 블록도;
도 4A는 몇몇 실시예에 따라 리더 노드(leader node)의 일례를 예시하는 블록도;
도 4B는 몇몇 실시예에 따라 연산 노드의 일례를 예시하는 블록도;
도 5는 몇몇 실시예에 따라 칼럼형 데이터베이스 테이블의 칼럼에 대한 히스토그램을 이용하여 질의를 처리하는 방법을 예시하는 하이 레벨 흐름도;
도 6은 몇몇 실시예에 따라 칼럼형 데이터베이스 테이블의 칼럼에 있는 데이터의 균일한 분산을 나타내는 히스토그램에 대한 버킷 범위 크기(bucket range size)를 결정하는 방법을 예시하는 하이 레벨 흐름도;
도 7은 몇몇 실시예에 따라 칼럼형 데이터베이스 테이블의 칼럼에 있는 데이터의 히스토그램의 각 버킷을 나타내는 비트맵을 생성하는 방법을 예시하는 하이 레벨 흐름도;
도 8은 몇몇 실시예에 따라 칼럼형 데이터베이스 테이블의 칼럼에 있는 데이터에 대한 질의에 응답하여 어떠한 데이터 블록을 판독할 필요가 없는지를 결정하는 방법을 예시하는 흐름도;
도 9는 몇몇 실시예에 따라 재균형 이벤트(rebalancing event)의 검출에 응답하여 데이터 블록에 대한 확률 데이터 구조를 수정하는 방법을 예시하는 흐름도;
도 10은 몇몇 실시예에 따라 데이터 블록에 대한 확률 데이터 구조를 업데이트하는 방법을 예시하는 흐름도;
도 11은 몇몇 실시예에 따라 시스템의 일례를 도시한 도면.
본 명세서에서는 실시예들을 예시적인 도면과 여러 실시예를 위한 예로서 설명하지만, 통상의 기술자는 실시예들이 설명된 도면이나 실시예들로 한정되지 않는다는 것을 인식할 것이다. 도면과 이에 대한 상세한 설명은 실시예들을 개시된 구체적인 형태로 한정하려는 것이 아니며, 오히려, 본 발명은 청구범위에 의해 정의된 바와 같이 범위와 사상 내에 속하는 모든 수정예, 균등예, 및 대체예를 포함하는 것이라는 점을 이해하기 바란다. 본 명세서에서 사용되는 제목들은, 편성을 위한 것일 뿐이며, 청구범위나 상세한 설명의 범위를 한정하는 데 사용되는 것이 아니다. 본 명세서 전체에 걸쳐 사용되는 바와 같이, "수 있다"(may)라는 용어는, 강제적인 의미(즉, 해야 한다는 의미)라기보다는 허용의 의미(즉, ~에 대한 잠재성을 갖는 의미)로 사용되는 것이다. 마찬가지로, "포함한다"(include), "포함하는"(including), "포함한다"(includes)는 용어는, 포함(including)을 의미하지만, 이에 한정되지는 않는다.
다음에 따르는 상세한 설명에서는, 청구 대상을 완전하게 이해하도록 많은 특정 상세를 설명한다. 그러나, 통상의 기술자라면, 이러한 특정 상세 없이 청구 대상을 실시할 수 있다는 점을 이해할 것이다. 다른 경우에는, 통상의 기술자에게 알려져 있는 방법, 장치, 또는 시스템은 청구 대상이 모호해지지 않도록 상세히 설명하지 않았다.
또한, 본 명세서에서 제1, 제2 등의 용어를 사용하여 다양한 요소들을 설명할 수 있지만, 이러한 요소들이 이러한 용어들로 한정되지 않는다는 점을 이해할 것이다. 이러한 용어들은 한 요소를 다른 요소와 구별하는 데 사용될 뿐이다. 예를 들어, 본 발명의 범위로부터 벗어나지 않고서, 제1컨택트를 제2컨택트라 칭할 수 있고, 마찬가지로, 제2컨택트를 제1컨택트라 칭할 수 있다. 제1컨택트와 제2컨택트 모두는 컨택트이지만 동일한 컨택트는 아니다.
본 명세서에서 본 발명을 설명하는 데 사용되는 용어는 특정한 실시예들을 설명하기 위한 것일 뿐이며 본 발명을 한정하려는 것이 아니다. 본 발명의 상세한 설명과 청구범위에서 사용되는 바와 같이, 단수 형태인 "한", "하나", "그"는, 명백하게 달리 언급하지 않는 한, 복수 형태도 포함하려는 것이다. 또한, 본 명세서에서 사용되는 바와 같은 "및/또는"이라는 용어는 연관된 열거 항목들 중 하나 이상의 임의의 가능한 모든 조합을 가리키며 이러한 조합을 포함한다는 점을 이해할 것이다. 또한, "구비한다", "구비하는", "포함한다", 및/또는 "포함하는"이라는 용어들은 본 명세서에서 사용시 언급된 특징부, 정수, 단계, 동작, 요소, 및/또는 구성요소의 존재를 특정하지만, 하나 이상의 다른 특징부, 정수, 동작, 요소, 구성요소, 및/또는 이들의 그룹의 존재나 추가를 배제하지 않는다는 점을 이해할 것이다.
본 명세서에서 사용되는 바와 같이, "만약"이라는 용어는, 문맥에 따라 "때" 또는 "시" 또는 "결정에 응답하여" 또는 "검출에 응답하여"를 의미하도록 해석될 수 있다. 마찬가지로, "결정되면" 또는 "[언급된 조건이나 이벤트]가 검출되면"이라는 구는, "결정시" 또는 "결정에 응답하여" 또는 "[언급된 조건이나 이벤트]의 검출시" 또는 "[언급된 조건이나 이벤트]의 검출에 응답하여"를 의미하도록 해석될 수 있다.
본 명세서에서는, 칼럼형 데이터베이스의 칼럼에 대한 히스토그램을 이용하는 효율적인 질의 처리의 다양한 실시예들을 설명한다. 분산형 데이터 웨어하우스 시스템 또는 다른 데이터베이스 관리 시스템 등의 데이터베이스 관리 서비스는, 효율적인 데이터 관리를 클라이언트에 제공하도록 칼럼 지향 데이터베이스 테이블(이하, "칼럼형 데이터베이스 테이블"이라 칭함)을 구현할 수 있다. 통상적으로, 칼럼형 데이터베이스 테이블의 데이터는 날짜 등에 의해 데이터베이스 테이블의 하나의 칼럼에 따라 정렬(sort)된다. 블록들이 데이터가 정렬되는 칼럼에 대한 데이터를 정렬할지 여부를 결정하는 경우, 각 데이터 블록에 대한 서로 다른 범위를 저장하거나 추정할 수 있어서, 데이터 블록에 저장될 가능성이 있는 것으로 알려진 요청된 데이터에만 데이터 블록의 판독이 행해지도록 질의가 관여할 수 있다. 그러나, 이러한 기술은, 한 번에 하나의 칼럼만이 정렬될 수 있으므로, 칼럼형 데이터베이스 테이블이 정렬되는 칼럼의 데이터에 대한 질의에 응답할 때에만 적용할 수 있다.
히스토그램은, 종종 버킷이라 칭하는 값들의 서로 다른 범위 내의 데이터 세트의 분포를 나타낸다. 예를 들어, 날씨 온도들의 히스토그램은, 90년대, 80년대, 70년대 등에 고온이었던 날의 수를 나타내는 막대 그래프를 예시할 수 있다. 히스토그램을 나타내는 막대 그래프에서의 막대의 높이는, 일부 범위의 값들이 데이터 세트에서 더욱 빈번한 값들을 가질 수 있으므로, 크게 가변될 수 있다. 그러나, 높이-균형 히스토그램은, 그려진 히스토그램의 막대들의 높이가 균일하거나 균형을 갖추도록 값들(즉, 버킷)의 서로 다른 크기의 범위를 제공한다. 칼럼형 데이터베이스 테이블의 칼럼은 가변적인 빈도의 데이터 값들을 포함할 수 있다. 이러한 데이터 값들에 기초하여 생성되는 히스토그램은, 데이터 블록에 저장된 값들의 서로 다른 범위를 식별하는 데 사용될 수 있고, 따라서, 어떤 블록을 판독할 필요가 없는지를 결정하는 데 사용될 수 있다. 적어도 몇몇 실시예에서, 이러한 데이터 값들에 기초하여 생성되는 높이-균형 히스토그램은 질의를 처리하도록 충분한 선택성(예를 들어, 특정한 버킷의 데이터 값의 구별 또는 확률)을 제공할 수 있는데, 예컨대, 질의가 수신되면, 칼럼의 높이-균형 히스토그램을 이용하여 칼럼에 대한 데이터를 저장하는 어떠한 데이터 블록을 판독할 필요가 없는지를 결정할 수 있다. 예를 들어, 수신된 질의에 서비스하도록 데이터를 얻는 데 있어서 판독 연산들(또는 다른 다양한 액세스 연산들)을 덜 실행할 수 있다. 따라서, 질의를 처리하도록 히스토그램, 즉, 칼럼형 데이터베이스의 칼럼에 대한 높이-균형 히스토그램을 이용함으로써, 몇몇 실시예는 대량의 데이터에 대한 더욱 효율적인 관리 및 액세스를 제공할 수 있다.
클라이언트(또는 고객, 조직, 엔티티 등)가, 후속하는 저장이나 관리를 필요로 할 수 있는 대량의 데이터를 수집하는 것은 흔한 일이다. 일부 클라이언트는 이러한 데이터를 위해 자신의 고유한 데이터 관리 시스템을 구현하길 원할 수도 있지만, 데이터 관리 서비스를 획득함으로써 자신의 고유한 데이터를 관리하길 원하지 않는 클라이언트를 위한 더욱 효율적이고 비용 효과적인 옵션을 증명할 수 있다는 점은 더욱 명백해진다. 예를 들어, 소기업은 판매 기록 및 관련된 데이터를 향후 데이터 분석을 위해 유지하길 원할 수 있다. 소기업은, 그 데이터를 유지하도록 데이터 관리 시스템 및 그 시스템을 설정하고 유지하는 데 필요한 전문 지식에 직접 투자하는 것이 아니라, 대안으로, 자신의 데이터를 저장 및 관리하도록 데이터 관리 서비스와 계약하는 것이 더욱 효율적이라고 판단할 수 있다.
도 2 내지 도 4B에 관하여 후술하는 분산형 데이터 웨어하우스 서비스 등의 데이터 관리 서비스는, 클라이언트들의 다양한 필요에 따라 다양한 서로 다른 데이터 관리 서비스들을 그 클라이언트들에게 제공할 수 있다. 일부 경우에, 클라이언트들은, 판매 기록 마케팅, 관리 보고, 비지니스 프로세스 관리, 예산 예측, 재정 보고, 웹사이트 분석 등의 대량의 데이터 또는 다른 많은 유형이나 종류의 데이터를 저장하고 유지하길 원할 수 있다. 또한, 데이터에 대한 클라이언트의 이용은, 그 데이터를 저장하는 데 사용되는 데이터 관리 시스템의 구성에 영향을 끼칠 수 있다. 예를 들어, 각 로우 내의 적은 개수의 칼럼들로부터 데이터의 많은 세트를 응집(aggregation)하는 것 등의 일부 유형의 데이터 분석과 기타 연산에 있어서, 칼럼형 데이터베이스 테이블은 더욱 효율적인 성능을 제공할 수 있다. 다시 말하면, 데이터베이스 테이블로부터의 칼럼 정보는, (통상적인 데이터베이스 기법에서와 같이) 각 데이터 블록의 칼럼들의 전체 로우들을 저장하기보다는, 디스크의 데이터 블록들에 저장될 수 있다.
몇몇 실시예에서, 이러한 칼럼형 방식으로 테이블 데이터를 저장함으로써, 다양한 질의들에 대한 전체 디스크 I/O 요건들을 줄일 수 있고 분석 질의 성능을 개선할 수 있다. 예를 들어, 데이터베이스 테이블 정보를 칼럼 방식으로 저장함으로써, 질의 처리의 일부로서 데이터베이스 연산을 수행하도록 메모리 내의 데이터를 검색할 때 (예를 들어, 테이블의 모든 로우에 대한 모든 칼럼 필드 값들을 검색할 때) 수행되는 디스크 I/O 요청들의 개수를 줄일 수 있고, 질의 처리시 디스크로부터 로딩할 필요가 있는 데이터의 양을 줄일 수 있다. 역으로, 소정의 개수의 디스크 요청에 대하여, 각 데이터 블록이 전체 테이블 로우에 저장되어 있다면 더욱 많은 로우에 대한 칼럼 필드 값들을 검색할 수 있다. 몇몇 실시예에서는, 칼럼형 저장 데이터 유형에 일치하는 압축 방법을 이용하여 디스크 요건들을 더 줄일 수 있다. 예를 들어, 각 블록은 균일한 데이터(즉, 모두 동일한 데이터 유형인 칼럼 필드 값들)를 포함하므로, 특정한 칼럼 데이터 유형에 가장 적합한 압축 방법을 적용함으로써 디스크 저장 및 검색 요건들을 더 줄일 수 있다. 몇몇 실시예에서, 디스크의 단일 칼럼의 필드 값들만을 포함하는 데이터 블록들을 저장하기 위한 공간을 절약함으로써, 데이터를 검색한 후 시스템 메모리에 저장할 때의(예를 들어, 검색된 데이터를 분석하거나 그 외에는 처리할 때의) 공간을 절약할 수 있다. 예를 들어, 한번에 적은 개수의 칼럼들 또는 하나의 칼럼에 대해서만 액세스 및/또는 연산을 행할 필요가 있는 데이터베이스 연산에 대하여, 질의를 실행하는 데 실제로 필요한 특정한 칼럼들의 데이터를 저장하는 데이터 블록들만을 검색하여 메모리에 저장할 수 있으므로, 통상의 로우 기반 저장을 이용하는 경우보다 메모리 공간이 덜 필요할 수 있다. 칼럼형 데이터베이스 테이블을 구현하는 효율을 증가시키기 위해, 질의에 대한 응답시 판독할 필요가 없는 데이터 블록들을 결정하는 데 사용되는 확률 데이터 구조를 생성하도록 칼럼형 데이터베이스의 칼럼에 대한 히스토그램을 생성할 수 있다.
도 1은, 몇몇 실시예에 따라 칼럼형 데이터베이스의 칼럼에 대하여 높이-균형 히스토그램을 이용하는 효율적인 질의 처리의 데이터흐름 블록도를 도시한다. 높이-균형 히스토그램(110)은, 칼럼형 데이터베이스 테이블의 칼럼(132)의 다수의 데이터 블록에 저장된 데이터 값들에 기초하여 생성될 수 있다. 히스토그램(110)의 버킷 범위 크기는, 그 데이터 값들이 히스토그램의 버킷들(120) 간에 균일하게 분산되도록 결정될 수 있다. 데이터 블록에 저장된 데이터 값이 높이-균형 히스토그램(110)의 버킷들(110) 중 어떠한 특정한 버킷들에 대하여 존재하는지를 나타내는 확률 데이터 구조를 생성할 수 있다. 더욱 일반적으로 말하자면, 확률 데이터 구조는, 주어진 값이, 데이터 블록에 저장된 데이터 값들의 세트 등의 데이터 세트의 멤버인지 여부를 테스트하는 데 사용될 수 있다. 확률 데이터 구조는, 특정한 값이 데이터 값들의 세트의 멤버가 아님을 확실히 나타낼 수 있다. 선택 데이터를 위해 칼럼(132)에 대한 질의(140)에 서비스하도록, 수퍼블록 데이터 구조(100)의 각 엔트리를 검사하여 어떤 블록들을 판독할 필요가 없는지를 결정할 수 있다.
저장 장치(130)는, 저장 디스크 디바이스 등의 하나 이상의 저장 디바이스 또는 칼럼형 데이터베이스 테이블에 대한 데이터를 저장하도록 구성된 다른 유형의 저장 디바이스일 수 있다. 도 1에서, 저장 장치(130)는 칼럼(132)을 포함한 다수의 칼럼에 대한 데이터를 저장하도록 구성될 수 있다. 데이터는, 예를 들어, 날짜, 사이트(cite), 용량, 또는 웹 메트릭의 리스트일 수 있고, 더욱 일반적으로는, 칼럼형 데이터베이스 테이블의 칼럼에 대한 데이터 블록에 저장될 수 있는 데이터 값의 임의의 다른 유형이나 형태일 수 있다. 다양한 실시예들에서, 칼럼에 저장되는 데이터 값들은 미정렬(unsort)된다. 데이터 블록은, 데이터 저장의 단위(예를 들어, 데이터 페이지), 논리적 추상, 또는 이러한 데이터 값들을 데이터베이스 또는 기타 저장 시스템에 저장하는 저장의 물리적 블록일 수 있다. 칼럼형 데이터베이스 테이블은 칼럼의 데이터 값들을 함께 저장하도록 구성된 데이터용 칼럼 지향 저장 시스템일 수 있다. 적어도 몇몇 실시예에서, 저장 장치(130)는 분산형 데이터베이스 시스템의 다수의 서로 다른 노드에 걸친 분산형일 수 있다.
히스토그램(110)은, 칼럼(132)에 저장된 데이터 블록들의 데이터 값들에 기초하여 생성될 수 있다. 버킷들(120)의 버킷 범위 크기를 결정하도록, 데이터 블록들로부터 칼럼의 데이터를 얻을 수 있다. 이어서, 다수의 버킷을 생성할 수 있으며, 이는 데이터 블록에 저장될 수 있는 값들의 수보다 상당히 클 수 있다. 버킷 범위 크기는, 칼럼의 데이터가 버킷들 간에 균일하게 분산되도록 버킷들에 대하여 설정될 수 있다. 도 1은 다양한 버킷(120) 범위 크기를 예시한다. 예를 들어, 소매상은, 칼럼형 데이터베이스 테이블의 칼럼에 소정의 기간에 걸쳐 소매상으로부터 물품을 구매하는 고객에 대한 나이 등의 인구통계 정보를 저장할 수 있다. 고객의 나이가 소정의 나이 범위(예를 들어, 45세 내지 60세)에 크게 집중되고 나머지 고객들의 나이는 더욱 확산되었다면, 균일한 버킷 크기 범위(예를 들어, 10년)를 갖는 히스토그램은, 2개의 버킷, 즉, 고객들의 수가 많은 40-50 및 50-60, 및 고객들의 수가 훨씬 적은 나머지 버킷들을 가질 수 있다. 대신에, 버킷 범위 크기는 일부 버킷 범위가 0세 내지 25세를 포함할 수 있도록 가변될 수 있는 한편, 다른 버킷 범위 크기는, 각 버킷에 표현되는 고객들의 수가 모든 버킷들에 걸쳐 균일하게 분산되도록 적은 45세 내지 47세일 수 있다.
버킷 범위 크기(120)에 기초하여 각 데이터 블록마다 확률 데이터 구조를 생성할 수 있다. 이러한 확률 데이터 구조들은, 버킷에 의해 표현되며 데이터 블록 내에 저장되는 값들의 범위 내의 데이터 값이 버킷들(120) 중 어떠한 버킷을 위해 존재하는지를 나타낸다. 몇몇 실시예에서는, 도 1에 예시한 바와 같이, 확률 데이터 구조를 비트맵으로서 저장할 수 있다. 비트맵의 각 비트는 히스토그램의 버킷에 대응할 수 있다. 세트 비트들은, 버킷의 범위 내의 데이터 값이 데이터 블록 내에 저장되어 있음을 나타낸다. 따라서, 예를 들어, 질의가 처리되고 있고 비트맵이 소정의 데이터 값들에 대하여 검사되는 경우, 질의에서 찾고자 하는 데이터 값을 포함하는 버킷을 나타내는 비트맵의 비트가 설정되어 있으면, 그 데이터 값들을 데이터 블록에 저장할 수 있다. 설정되어 있지 않으면, 데이터 블록을 판독할 필요가 없다. 높이-균형 히스토그램(110)으로서 예시되어 있지만, 적어도 몇몇 실시예에서는, 비(non) 높이-균형 히스토그램을 이용하여 확률 데이터 구조를 생성할 수도 있다.
확률 데이터 구조는, 칼럼에 데이터 블록들에 관한 정보를 저장하는 수퍼블록 데이터 구조(100) 등의 블록 메타데이터 데이터 구조에 저장될 수 있다. 각 데이터 블록은 수퍼블록 데이터 구조(100)에서 각 엔트리를 가질 수 있다. 몇몇 실시예에서는, 칼럼에 대한 새로운 데이터가 수신되면, 어떤 버킷이 버킷 범위 내에 있는 데이터 블록에 저장된 데이터 값을 갖는지를 나타내도록 새로운 확률 데이터 구조를 생성할 수 있다. 적어도 몇몇 실시예에서는, 칼럼에 추가되는 새로운 데이터의 소정의 임계값 또는 히스토그램의 생성 이후 경과된 소정량의 시간 등의 재균형 이벤트를 검출할 수 있다. 몇몇 실시예에서는, 칼럼에 대하여 저장될 추가 데이터의 소정량의 스큐(skew)도 재균형 이벤트를 트리거(trigger)할 수 있다. 버킷 범위 크기는 수정될 수 있으며, 수퍼블록 데이터 구조에 저장된 것과 같은 확률 데이터 구조가 업데이트될 수 있다. 수정된 확률 데이터 구조가 칼럼에 관한 미래 질의의 서비스에 사용되므로, 잘못된 긍정(즉, 데이터 값이 버킷 크기의 범위 내에 저장되어 있음을 확률 데이터 구조가 나타내는 경우, 그러나, 실제로는, 데이터 블록이 버킷 크기의 범위 내에 값을 저장하고 있지 않음)을, 확률 데이터 구조를 업데이트하여 데이터 블록에 저장된 데이터 값들을 더욱 정확하게 반영함으로써 보정할 수 있다. 몇몇 실시예에서는, 확률 데이터 구조를 업데이트하는 경우 질의 처리가 방해받지 않을 수 있도록 질의에 서비스하고 현재의 수퍼블록 데이터 구조를 교체하는 데 사용될 새로운 수퍼블록 데이터 구조를 생성할 수 있다.
칼럼형 데이터베이스의 칼럼에 대한 히스토그램을 이용한 효율적인 질의 처리의 실시예들은 다양한 서로 다른 데이터베이스 관리 시스템들에서 구현될 수 있다. 클라이언트에게 제시되는 분산형 데이터 웨어하우스 서비스 또는 기타 데이터베이스 서비스 등의 데이터 관리 서비스는, 데이터 관리 서비스와 함께 저장된 클라이언트 데이터에 관한 칼럼형 데이터베이스의 칼럼에 대한 히스토그램을 이용하여 질의 처리를 구현할 수 있다. 마찬가지로, 클라이언트가 소유, 동작, 또는 제어하는 데이터베이스 시스템도 칼럼의 질의 처리를 위한 히스토그램을 구현할 수 있다. 더욱 일반적으로, 칼럼형 데이터베이스 테이블에 데이터를 저장하는 임의의 시스템은, 칼럼형 데이터베이스의 칼럼에 대한 히스토그램을 이용한 효율적인 질의 처리의 다양한 실시예들을 구현할 수 있고, 따라서, 이전의 예들을 다양한 다른 가능한 시스템들로 한정할 필요는 없다.
분산형 데이터 웨어하우스 서비스에서의 질의 처리를 위한 히스토그램 구현
전술한 바와 같이, 다양한 클라이언트들(또는 고객, 조직, 엔티티, 또는 사용자)은 데이터 관리 서비스를 이용하여 데이터를 저장 및 관리하길 원할 수 있다. 도 2는 몇몇 실시예에 따라 데이터 관리 서비스를 제공할 수 있는 분산형 데이터 웨어하우스 시스템의 일례를 도시한다. 구체적으로, 데이터 웨어하우스 클러스터는, 다른 많은 데이터 관리 또는 저장 서비스와 함께, 데이터(예를 들어, 선택 데이터에 대한 서버 질의 언어 요청(SQL))에 대한 요청 또는 질의를 저장(예를 들어, 저장 장치에 데이터를 기입)하도록 응답할 수 있다.
다수의 사용자 또는 클라이언트는 데이터 웨어하우스 서비스를 획득하도록 데이터 웨어하우스 클러스터에 액세스할 수 있다. 클라이언트는, 몇몇 실시예에 따라, 사용자, 클라이언트 애플리케이션, 및/또는 데이터 웨어하우스 서비스 가입자를 포함할 수 있다. 이 예에서, 클라이언트들(250a 내지 250n)의 각각은, 분산형 데이터 웨어하우스 서비스(280)의 데이터 웨어하우스 클러스터(225, 235)에 각각 액세스할 수 있다. 분산형 데이터 웨어하우스 클러스터(225, 235)는, 각 클러스터에 대한 액세스를 갖는 클라이언트들(250a 내지 250n)을 대신하여 데이터가 저장될 수 있는 두 개 이상의 노드를 포함할 수 있다.
클라이언트들(250a 내지 250n) 등의 클라이언트는, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 퍼스널 디지털 어시스턴트, 모바일 디바이스, 서버, 또는 다른 임의의 연산 시스템이나 기타 디바이스, 예컨대, 도 11에 관하여 후술하는 데이터 웨어하우스 클러스터(225, 235)에 요청을 송신 및/또는 분산형 데이터 웨어하우스 클러스터(225, 235)로부터 응답을 수신하도록 구성된 컴퓨터 시스템(1000) 등을 통해 데이터 웨어하우스 클러스터(225 또는 235)와 통신할 수 있다. 요청은, 예를 들어, 데이터 웨어하우스 클러스터에 의해 제공되는 특정한 기능이나 서비스에 연관된 데이터 및/또는 파라미터를 포함하는 메시지로서 포맷될 수 있다. 이러한 메시지는, 확장 가능 마크업 언어(XML) 등의 특정한 마크업 언어에 따라 포맷될 수 있고, 및/또는 심플 오브젝트 액세스 프로토롤(SOAP) 등의 프로토콜을 이용하여 캡슐화(encapsulate)될 수 있다. 애플리케이션 프로그래머 인터페이스(API)는, 예를 들어 클라이언트가 분산형 데이터 웨어하우스 서비스 매니저(202)와 통신하고 있을 때 클라이언트에게 표준화 메시지 포맷을 제공하도록 구현될 수 있다.
클라이언트들(250a 내지 250n)은, 와이드 에리어 네트워크(WAN)(260)(예를 들어, 인터넷) 등의 다양한 서로 다른 통신 방법을 이용하여 분산형 데이터 웨어하우스 서비스(280)에 의해 호스팅되는 분산형 데이터 웨어하우스 클러스터들(225, 235)과 통신할 수 있다. 사설 네트워크, 인트라넷, 및 다른 형태의 통신 네트워크도 클라이언트와 데이터 웨어하우스 클러스터 간의 통신을 용이하게 할 수 있다. 클라이언트는, 요청을 포함하는 메시지를 조립할 수 있고, 그 메시지를 네트워크 엔드포인트(예를 들어, 데이터 웨어하우스 클러스터에 대응하는 유니폼 리소스 로케이터(URL))에 전달할 수 있다. 예를 들어, 클라이언트(250a)는, 하이퍼텍스트 트랜스퍼 프로토콜(HTTP) 요청을 WAN(260)을 통해 데이터 웨어하우스 클러스터(225)에 송신하도록 구성된 웹-클라이언트 등의 로컬 소프트웨어 애플리케이션을 실행하는 데스크톱 컴퓨터를 통해 통신할 수 있다. 응답 또는 클라이언트에게 송신되는 기타 데이터도 마찬가지 방식으로 포맷될 수 있다.
적어도 몇몇 실시예에서, 참조 번호 280으로 표시된 분산형 데이터 웨어하우스 서비스는, 클러스터들(225, 235) 등의 분산형 데이터 웨어하우스 클러스터를 호스팅할 수 있다. 분산형 데이터 웨어하우스 서비스(280)는, 저장 클라이언트들(250a 내지 250n)이 요청 및 기타 메시지를 특정한 클러스터에 직접 송신할 수 있게 하는 클러스터들의 저장 클라이언트들(250a 내지 250n)에 네트워크 엔드포인트를 제공할 수 있다. 전술한 바와 같이, 네트워크 엔드포인트는, 예를 들어, 특정한 클러스터를 가리키는 URL 등의 특정한 네트워크 어드레스일 수 있다. 예를 들어, 클라이언트(250a)에게는, 다양한 요청 메시지를 송신하도록 네트워크 엔드포인트 "http://mycluster.com"이 주어질 수 있다. 다수의 저장 클라이언트(또는 특정한 저장 클라이언트의 사용자)에게는 특정한 클러스터에 대한 네트워크 엔드포인트가 주어질 수 있다. 미인가 사용자들이 클러스터들에 액세스하는 것을 방지하도록 다양한 보안 특징부를 구현할 수 있다. 역으로, 클라이언트에는 다수의 클러스터에 대한 네트워크 엔드포인트가 주어질 수 있다.
데이터 웨어하우스 클러스터(225, 235) 등의 분산형 데이터 웨어하우스 클러스터들은 하나 이상의 노드로 구성될 수 있다. 이러한 클러스터들은 서로 다른 개수의 노드들을 포함할 수 있다. 노드는, 서버, 데스크톱 컴퓨터, 랩톱, 또는 더욱 일반적으로는, 도 11의 컴퓨터 시스템(1000)에 관하여 후술하는 바와 같은 다른 임의의 연산 디바이스일 수 있다. 몇몇 실시예에서, 데이터 웨어하우스 클러스터의 노드의 개수는 예를 들어 클러스터 스케일링 요청에 의해 수정될 수 있다. 데이터 웨어하우스 클러스터의 노드들은 데이터를 저장하기 위한 하나 이상의 데이터 슬라이스를 구현할 수 있다. 이러한 데이터 슬라이스들은, 저장 디바이스들의 일부일 수 있는데, 예컨대, 도 3과 도 4B에 관하여 후술하는 디스크 저장 디바이스일 수 있다. 클러스터들은, 클라이언트들(250a 내지 250n) 등의 저장 클라이언트들로부터 WAN(260)을 통해 요청과 기타 통신을 수신하도록 구성될 수 있다. 클러스터는 클러스터의 네트워크 엔드포인트를 통해 다수의 클라이언트로부터 요청을 수신하도록 구성될 수 있다.
몇몇 실시예에서, 분산형 웨어하우스 서비스(280)는, 사용자가 클라우드 연산 환경에서 데이터 웨어하우스를 설정, 동작, 및 스케일링할 수 있게 하는 웹 서비스의 일부로서 구현될 수 있다. 웹 서비스에 의해 호스팅되는 데이터 웨어하우스 클러스터들은, 예를 들어, 클러스터 스케일링 요청을 웹 서비스에 의해 구현되는 클러스터 제어 인터페이스에 송신함으로써 사용자들이 클러스터들을 스케일링할 수 있게 하는 엔터프라이즈-클래스 데이터베이스 질의 및 관리 시스템을 제공할 수 있다. 스케일링 클러스터들은, 웹 서비스의 사용자들이 각자의 웨어하우스 기능을 수행하게 할 수 있는데, 예를 들어, 구조화된 데이터에 대한 빠른 질의 능력, 다양한 데이터 로딩 및 ETL(추출, 변환, 로딩) 틀과의 집적, 베스트-인-클래스 비지니스 인텔리전스(BI) 보고와의 클라이언트 접속, 데이터 마이닝, 분석 툴, 및 멀티 테이블 조인(join), 부 질의(sub-query), 응집 등의 복잡한 분석 질의의 매우 빠른 실행을 위한 최적화를 더욱 효율적으로 수행하게 할 수 있다.
다양한 실시예들에서, 분산형 데이터 웨어하우스 서비스(280)는, 저장 클라이언트로부터의 요청에 응답하여 생성, 구성, 관리, 스케일링, 및 종료될 수 있는 데이터 저장 및 관리 자원을 클라이언트들(예를 들어, 분산형 데이터 웨어하우스 시스템에 의해 제공되는 데이터 웨어하우스 서비스의 가입자)에게 제공할 수 있다. 예를 들어, 몇몇 실시예에서, 분산형 데이터 웨어하우스 서비스(280)는, 가상 연산 노드들로 구성된 데이터 웨어하우스 클러스터들을 시스템의 클라이언트들에게 제공할 수 있다. 이러한 가상 연산 노드들은, 하드웨어 가상 기계 또는 하드웨어 구성을 시뮬레이션하도록 구현된 소프트웨어의 다른 형태 등의 가상 기계들에 의해 구현되는 노드들일 수 있다. 다양한 노드들은, 물리적 하드웨어에 구현된 노드들과 동일한 태스크, 기능, 및/또는 서비스를 수행하도록 구성될 수 있다.
분산형 데이터 웨어하우스 서비스(280)는, 맞춤형 또는 오프-더-쉘프 연산 시스템, 서버 또는 도 11에 관하여 후술하는 다양한 유형의 디바이스들 등의 연산 시스템들이나 디바이스들의 다른 임의의 조합 등의 다수의 연산 디바이스에 의해 구현될 수 있다. 이러한 연산 디바이스들의 서로 다른 서브세트는 분산형 데이터 웨어하우스 매니저(202)에 의해 제어될 수 있다. 분산형 데이터 웨어하우스 매니저(202)는, 예를 들어, 클라이언트들(250a 내지 250n) 등의 클라이언트들에게, 또는 분산형 데이터 웨어하우스 매니저(202)에 의해 관리되는 분산형 데이터 웨어하우스 클러스터, 이 예시에서는, 데이터 웨어하우스 클러스터들(225, 235)과 상호 작용하길 원하는 다른 임의의 클라이언트나 사용자에게 클러스터 제어 인터페이스를 제공할 수 있다. 예를 들어, 분산형 데이터 웨어하우스 매니저(202)는, 저장 클라이언트를 위한 하나 이상의 그래픽 유저 인터페이스(GUI)를 생성할 수 있고, 이러한 제어 인터페이스를 이용하여 분산형 데이터 웨어하우스 서비스(280)에서 호스팅되는 데이터 웨어하우스 클러스터들을 위한 제어 인터페이스에 의해 제공되는 다양한 제어 기능들을 선택할 수 있다.
도 3은 일 실시예에 따라 분산형 데이터 웨어하우스 서비스의 분산형 데이터 웨어하우스 클러스터를 예시하는 블록도이다. 이 예에서 예시한 바와 같이, 분산형 데이터 웨어하우스 클러스터(300)는 상호 접속부(360)를 통해 서로 통신할 수 있는 리더 노드(320) 및 연산 노드들(330, 340, 350)을 포함할 수 있다. 리더 노드(320)는 분산형 데이터 웨어하우스 클러스터(300)에서 질의를 실행하기 위한 하나 이상의 질의 계획(325)을 생성 및/또는 유지할 수 있다. 본 명세서에서 설명하는 바와 같이, 분산형 데이터 웨어하우스 클러스터에서의 각 노드는, 클라이언트들(예를 들어, 사용자, 클라이언트 애플리케이션, 및/또는 분산형 데이터 웨어하우스 서비스 가입자)을 대신하여 데이터 블록들이 저장될 수 있는 다수의 디스크를 포함할 수 있다. 이 예에서, 연산 노드(330)는 디스크(331 내지 338)를 포함하고, 연산 노드(340)는 디스크(341 내지 348)를 포함하고, 연산 노드(350)는 디스크(351 내지 358)를 포함한다. 몇몇 실시예에서, 분산형 데이터 웨어하우스 클러스터(또는 분산형 데이터 웨어하우스 클러스터가 구성요소로 되는 분산형 데이터 웨어하우스 시스템)의 구성요소는, 다양한 적용 가능한 다양한 로드 밸런싱(load balancing) 기술들 중 임의의 것을 이용하여 로드 밸런싱을 지원할 수 있다. 예를 들어, 몇몇 실시예에서, 리더 노드(320)는 로드 밸런싱 구성요소(도시하지 않음)를 포함할 수 있다.
적어도 몇몇 실시예에서, 분산형 데이터 웨어하우스 클러스터(300)는, 전술한 것과 같은 웹 기반 데이터 웨어하우스 서비스의 일부로서 구현될 수 있고, 리더 노드(320), 및 연산 노드들(330, 340, 350) 등의 다수의 연산 노드를 포함한다. 리더 노드(320)는, 도 2에 관하여 전술한 저장 클라이언트들(250a 내지 250n) 등의 저장 클라이언트들과의 통신을 관리할 수 있다. 예를 들어, 리더 노드는, 다양한 처장 클라이언트 프로그램들(예를 들어, 애플리케이션) 및/또는 가입자들(사용자)로부터 요청을 수신한 후, 요청을 파싱(parse)하고 실행 계획(예를 들어, 질의 계획(들)(325))을 세워 연관된 데이터베이스 연산(들)을 실행하는 서버일 수 있다. 더욱 구체적으로, 리더 노드는, 복잡한 질의와 조인에 대한 결과를 얻는 데 필요한 일련의 단계들을 전개할 수 있다. 또한, 리더 노드(320)는, 데이터 웨어하우스 클러스터(300)에 저장된 데이터에 대한 데이터베이스 연산을 실행하도록 지시받은 연산 노드들(330 내지 350) 간의 통신을 관리할 수 있다. 예를 들어, 컴파일된 코드는, 질의를 수행하는 데 필요한 단계들을 실행하도록 연산 노드들(330 내지 350) 중 다양한 연산 노드들에 리더 노드(320)에 의해 분산될 수 있고, 그러한 질의의 중간 결과가 다시 리더 노드(320)에 송신될 수 있다. 리더 노드(320)는, 데이터 및 질의 응답이나 결과를 연산 노드들(330, 340, 350)로부터 수신할 수 있다. 클러스터에 저장된 데이터 테이블 등의 연산 노드들 간에 저장된 데이터에 대한 데이터베이스 스키마 및/또는 기타 메타데이터 정보는 리더 노드(320)에 의해 관리 및 저장될 수 있다.
또한, 분산형 데이터 웨어하우스 클러스터(300)는, 연산 노드들(330, 340, 350) 등의 연산 노드들을 포함할 수 있다. 이러한 하나 이상의 연산 노드는, 예를 들어, 도 11의 컴퓨터 시스템(1000)에 관하여 후술하는 바와 같은 서버나 기타 연산 디바이스 상에 구현될 수 있고, 각각의 연산 노드는, 예를 들어, 서버의 멀티코어 프로세서의 각 코어에 대하여 정의된 개별적인 질의 처리 "슬라이스"를 포함할 수 있다. 연산 노드들은, 리더 노드(320)로부터 연산 노드들(330, 340, 350)로 송신된 명령어에 기초하여 질의 등의 데이터베이스 연산의 처리를 수행할 수 있다. 명령어는, 예를 들어, 특정한 데이터 연산 노드에 송신되어 이러한 특정한 데이터 연산 노드에 의해 실행 가능한 실행 계획 세그먼트와 단계로부터 컴파일된 코드일 수 있다. 데이터 연산 노드들은, 질의로부터의 중간 결과를 최종 응집을 위해 다시 리더 노드(320)에 송신할 수 있다. 각 데이터 연산 노드는, 연산 노드들(330, 340, 또는 350) 중 하나 이상에 송신되는 질의에 대한 워크로드의 일부(또는 기타 데이터베이스 연산)를 처리하기 위해, 도 4B에 예시한 바와 같이, 소정의 메모리와 디스크 공간에 액세스하도록 구성될 수 있다. 따라서, 연산 노드(330)는, 예를 들어, 디스크(431, 432...438까지) 액세스할 수 있다.
도 3에 예시한 디스크(331 내지 358) 등의 디스크는, 레이드(RAID; redundant array of inexpensive disk) 디바이스, (RAID에 따라 구성되지 않은 디스크를 칭하는 데 사용되는) JBOD(Just a Bunch Of Disks) 등의 디스크 드라이브 또는 디스크 드라이브의 어레이, 광 저장 디바이스, 테이프 드라이브, RAM 디스크, 스토리지 에리어 네트워크(SAN), 네트워크 액세스 스토리지(NAS), 또는 이들의 조합을 포함하는, 데이터 연산 노드에 액세스 가능한 데이터를 저장하는 데 적합한 저장 디바이스 및/또는 저장 시스템의 임의의 유형 중 하나 이상으로서 구현될 수 있지만, 이러한 예로 한정되지는 않는다. 다양한 실시예들에서, 디스크는 다양한 칼럼 지향 데이터베이스 기법을 통해 칼럼형 데이터베이스 테이블을 저장하도록 포맷될 수 있다.
몇몇 실시예에서, 분산형 데이터 웨어하우스 클러스터의 연산 노드들의 각각은, 예를 들어, (예를 들면, 노드의 각 코어나 슬라이스마다) 커맨드를 수신하고, 다시 데이터를 송신하고, 컴파일된 코드를 개별적인 질의 프로세스로 라우팅하여 소정의 질의를 실행하도록 리더 노드와의 통신을 관리하는 노드 서버(또는 기타 연산 디바이스)의 운영 체제에서 실행되는 프로세스들의 세트를 구현할 수 있다. 몇몇 실시예에서, 연산 노드들의 각각은 노드에 저장된 블록들에 대한 메타데이터를 포함한다. 적어도 몇몇 실시예에서 이 블록 메타데이터는, 엔트리에서 정보(예를 들어, 해당 노드에 저장된 데이터 블록들의 각각에 관한 메타데이터)를 저장(즉, 데이터 블록당 하나의 엔트리)하는 데이터 구조(예를 들어, 데이터의 어레이)인 수퍼블록 데이터 구조 내로 함께 응집될 수 있다. 몇몇 실시예에서, 수퍼블록 데이터 구조의 각 엔트리는 각 블록에 대한 고유 ID를 포함하고, 그 고유 ID를 사용하여 데이터 블록에 연관된 다양한 연산들을 수행할 수 있다. 예를 들어, 데이터 블록에 저장된 데이터에 적용되는 칼럼-특정형 압축 기술들의 표시, 데이터 블록에 저장된 데이터에 적용되는 디폴트 압축 기술들의 표시, 또는 데이터 블록에 저장되지 않은 데이터 값들을 나타내는 확률 데이터 구조 모두는, 데이터 블록에 대한 각 엔트리에 저장될 수 있다. 몇몇 실시예에서, 고유 ID는, 리더 노드에 의해 또는 분산형 데이터 웨어하우스 시스템에서 데이터 블록이 먼저 기입되는 경우 연산 노드에 의해 생성될 수 있다(그리고, 수퍼블록의 대응하는 엔트리가 생성될 수 있다).
도 4A는 몇몇 실시예에 따라 리더 노드의 일례를 도시한다. 전술한 바와 같이, 리더 노드(400)는, 칼럼형 데이터베이스 테이블에서 추가 데이터를 관리 및 저장하도록 다양한 메시지의 질의를 수신하는 분산형 데이터 웨어하우스 시스템의 다양한 클라이언트들과 상호 작용할 수 있다. 질의 계획(410)을 전개하여 연관된 데이터베이스 연산을 실행하는 것에 더하여, 리더 노드는, 몇몇 실시예에서, 히스토그램 생성기(420)도 포함할 수 있다. 다양한 서로 다른 하드웨어와 소프트웨어 디바이스들은 히스토그램 생성기(420)를 구현하도록 단독으로 또는 조합하여 사용될 수 있다. 히스토그램 생성기(420)는, 칼럼형 데이터베이스 테이블의 칼럼에 있는 다수의 버킷 간의 데이터의 분산을 나타내는 높이-균형 히스토그램에 대한 버킷 범위 크기를 결정하도록 구성될 수 있다. 히스토그램 생성기(420)는, 높이-균형 히스토그램 등의 질의 처리에 사용되는 서로 다른 히스토그램들을 생성할 수 있다. 몇몇 실시예에서, 칼럼형 데이터베이스 테이블의 칼럼에 대한 데이터는, 도 4B에 예시한 연산 노드(450) 등의 서로 다른 많은 연산 노드들에 물리적으로 저장될 수 있다. 따라서, 히스토그램 생성기(420)는, 칼럼에 대한 서로 다른 연산 노드들로부터의 데이터를 입력으로서 획득할 수 있고, 칼럼에 있는 데이터의 히스토그램에 대한 버킷들을 생성할 수 있고, 데이터가 버킷들 간에 균일하게 분산되도록 버킷들의 각각마다 버킷 범위 크기를 설정할 수 있다. 또한, 히스토그램 생성기(420)는, 칼럼에 있는 데이터에 대한 히스토그램의 버킷들에 기초하여 칼럼에 있는 데이터를 저장하는 하나 이상의 데이터 블록의 각 데이터 블록마다 확률 데이터 구조를 생성할 수 있다. 확률 데이터 구조는, 전술한 바와 같이, 주어진 값이 데이터 블록에 저장된 데이터 값들 등의 값들의 세트 내에 있을 가능성이 있는지 여부를 나타낸다. 따라서, 칼럼에 있는 데이터에 대하여 높이-균형 히스토그램 등의 히스토그램에 기초하는 경우, 확률 데이터 구조는, 히스토그램의 다수의 버킷 중 어떠한 버킷들을 위해 데이터 블록에 저장된 버킷 범위 크기의 데이터 값이 존재하는지를 나타낼 수 있다.
또한, 히스토그램 생성기(420)는, 칼럼에 있는 데이터 블록들에 대한 새로운 확률 데이터 구조를 생성하는 것을 비롯하여 주어진 칼럼에 대한 히스토그램을 언제 재생해야 하는지를 결정할 수 있다. 몇몇 실시예에서, 재균형 이벤트는, 예를 들어, 칼럼에 대한 높이-균형 히스토그램이 마지막으로 생성된 후 시간이 경과했을 때 또는 소정량의 새로운 데이터가 칼럼에 저장되었을 때 높이-균형 히스토그램을 위해 검출될 수 있다. 히스토그램 생성기(420)는, 적어도 몇몇 실시예에서, 칼럼의 높이-균형 히스토그램을 위한 버킷 크기 범위를 수정하도록 구성될 수 있고, 수정된 버킷 범위 크기에 따라 확률 데이터 구조를 업데이트할 수 있다. 대안으로, 몇몇 실시예에서, 히스토그램 생성기(420)는, 주어진 칼럼에 저장된 데이터 값들에 대하여 높이-균형 히스토그램을 위한 새로운 버킷 범위 크기를 결정하도록 구성될 수도 있다.
도 4B는 몇몇 실시예에 따라 연산 노드의 일례를 도시한다. 리더 노드(320) 등의 리더 노드에 송신되고 리더 노드로부터 연산 노드로 송신된 된 다양한 질의와 메시지 등의 액세스 요청(452)은 연산 노드(450)에서 수신될 수 있다. 질의 실행 모듈(460)은, 디스크(450 내지 458)에 대한 요청, 판독 지시, 기입, 및 기타 액세스 연산을 처리할 수 있다. 서로 다른 다양한 하드웨어와 소프트웨어 디바이스들은 질의 실행 모듈(460)을 구현하도록 단독으로 또는 조합하여 사용될 수 있다. 질의 처리시, 질의 실행 모듈(460)은, 칼럼에 대한 데이터를 저장하는 각 데이터 블록마다 확률 데이터 구조를 검사하여 질의에 서비스하도록 판독할 필요가 없는 데이터 블록들을 결정한 후, 판독할 필요가 없는 데이터 블록들을 제외하고서 칼럼에 대한 데이터를 저장하는 데이터 블록들을 판독한다.
몇몇 실시예에서, 또한, 연산 노드(450)는, 원격으로 저장되거나 연산 노드에 로컬 저장되지만 연산 노드에 액세스 가능한 전술한 수퍼블록 데이터 구조 등의 수퍼블록 데이터 구조(470)를 포함할 수 있고, 이러한 연산 노드는, 데이터 블록에 대한 확률 데이터 구조를 포함하는 블록 메타데이터를 저장하는 연산 노드(450)에 저장된 데이터 블록에 대한 각 엔트리(472)를 포함할 수 있다. 그러나, 몇몇 실시예에서, 데이터 블록에 대한 메타데이터는 다수의 서로 다른 위치에, 예를 들어, 데이터 블록 자체 또는 다른 개별적인 데이터 구조에 저장될 수 있다는 점에 주목한다. 따라서, 수퍼블록 데이터 구조(470)를, 데이터 블록에 대한 메타데이터 정보를 유지하도록 적용될 수 있는 다른 다양한 구조, 위치, 방법, 또는 기술로 한정하려는 것은 아니다.
전술한 바와 같이, 도 2 내지 도 4는, 칼럼형 데이터베이스 테이블의 칼럼에 대한 히스토그램을 이용하여 질의를 처리하는 실시예들을 예시하며, 칼럼형 데이터베이스 테이블을 저장 및 관리하는 데 사용될 수 있는 다른 아키텍처, 시스템, 구성요소, 또는 배열로 한정하려는 것이 아니다. 예를 들어, 도 3에 관하여 전술한 분산형 데이터 웨어하우스 클러스터(300)는, 리더 노드를 포함하지 않을 수 있고, 또는 데이터의 저장 및 관리를 위한 서로 다른 기능을 수행하는 하나 이상의 서로 다른 노드를 포함할 수 있다.
높이-균형 히스토그램을 이용한 질의 처리의 워크플로우
전술한 바와 같이, 데이터베이스 관리 시스템은, 칼럼형 데이터베이스 테이블을 이용하여 더욱 효율적인 데이터 관리 기능을 제공하도록 구성될 수 있다. 이러한 기능을 더욱 효율적으로 수행하도록, 칼럼에 있는 데이터의 히스토그램에 기초하여 칼럼형 데이터베이스 테이블의 칼럼에 대한 데이터를 저장하는 데이터 블록에 대한 확률 데이터 구조를 생성할 수 있다. 적어도 몇몇 실시예에서, 이 히스토그램은 높이-균형 히스토그램이다. 도 5는 몇몇 실시예에 따라 칼럼형 데이터베이스 테이블의 칼럼에 대한 데이터의 분산을 나타내는 히스토그램을 위한 버킷 범위 크기를 결정하는 방법을 예시하는 하이-레벨 흐름도이다. 서로 다른 다양한 시스템과 디바이스는 후술하는 다양한 방법과 기술을 구현할 수 있다. 도 4에 관하여 전술한 히스토그램 생성기(420) 등의 히스토그램 생성기는, 다양한 방법들을 구현하도록 질의 실행 모듈(460) 등의 질의 실행 모듈과 함께 동작할 수 있다. 대안으로, 예를 들어, 함께 동작하는 도 3에 도시한 다수의 연산 노드 등의 서로 다른 시스템과 디바이스의 조합도 후술하는 방법과 기술을 수행할 수 있다. 따라서, 예시한 방법을 수행하는 것으로 참조되는 전술한 예들 및/또는 다른 임의의 시스템이나 디바이스를, 시스템과 디바이스의 다른 개별적인 것 또는 구성으로 한정하려는 것은 아니다.
다양한 실시예들에서, 참조번호 (500)으로 표시한 바와 같이, 칼럼형 데이터베이스 테이블의 칼럼에 대한 히스토그램의 버킷들을 위한 버킷 범위 크기를 결정할 수 있다. 전술한 바와 같이, 히스토그램은, 흔히 "버킷"이라 칭하는 값들의 범위에 걸친 데이터의 분산을 나타낸다. 통상적으로, 이러한 버킷들은 같은 크기를 가질 수 있다. 예를 들어, 애플리케이션 데모를 사용하여 소모된 시간량에 기초하여 소프트웨어 애플리케이션 다운로드의 수만큼 히스토그램이 생성되었다면, 버킷들은 10분 간격 내지 2시간의 범위 크기를 가질 수 있다. 그러나, 데이터 값들의 높이-균형 히스토그램 등의 히스토그램은, 각 버킷의 다운로드의 수를 균일하게 분산시키도록 일부 버킷들은 5분 간격으로 되어야 하고 일부 버킷들은 30분 간격으로 되어야 한다고 결정할 수 있다. 도 6은 몇몇 실시예에 따라 칼럼형 데이터베이스 테이블의 칼럼에 대한 데이터의 균일한 분산을 나타내는 히스토그램을 위해 버킷 범위 크기를 결정하는 이러한 한 가지 방법을 예시한다.
참조번호 (602)로 표시한 바와 같이, 히스토그램이 나타내는 칼럼의 데이터를 획득할 수 있다. 전술한 바와 같이, 몇몇 실시예에서, 단일 노드인 저장 디바이스는, 한 위치에서 특정 칼럼에 대한 모든 데이터 블록을 물리적으로 저장할 수 있다. 그러나, 적어도 다른 몇몇 실시예에서는, 데이터 블록들이 칼럼형 데이터베이스 테이블의 특정 칼럼에 대한 데이터를 저장하는 데이터 블록들로서 논리적으로 그룹화될 수 있지만, 데이터 블록들 자체는, 도 3에 관하여 전술한 분산형 데이터 웨어하우스 클러스터의 다수의 연산 노드 등의 서로 다른 여러 디바이스 상의 다수의 위치에 걸쳐 물리적으로 분산될 수 있다. 따라서, 일부 경우에, 데이터는, 추가 계산이 수행되기 전에 다수의 디바이스나 시스템으로부터 획득될 수 있다.
이어서, 참조번호 (604)로 표시한 바와 같이, 데이터 블록에 저장된 데이터 값들의 범위를 나타내는 다수의 버킷을 생성할 수 있다. 특정한 개수의 버킷들은 데이터 블록에 저장될 수 있는 데이터 값들의 개수에 기초하여 결정될 수 있다. 몇몇 실시예에서, 생성된 버킷들의 개수는 저장될 수 있는 데이터 값들의 개수보다 상당히 클 수 있다. 예를 들어, 히스토그램을 위한 버킷들의 개수는 데이터 블록에 저장될 수 있는 데이터 값들의 개수의 특정한 인자(또는 다수)에 기초하여 결정될 수 있다. 따라서, 데이터 블록이 100개의 데이터 값을 저장할 수 있다면, 칼럼을 나타내는 히스토그램을 위해 생성된 버킷들의 개수는 10 내지 1000개 버킷의 인자만큼 증가될 수 있다. 버킷들의 개수에 기초하여 확률 데이터 구조가 생성되는 선택성(정확성)은, 데이터 블록에 저장될 수 있는 데이터 값들의 개수와 버킷들의 개수 간의 더욱 큰 상당한 차이에 의존할 수 있다. 그러나, 다른 가능한 실시예들에서는, 대체 기준에 따라, 예컨대, 칼럼에 저장되는 데이터의 유형(예를 들어, 이름, 데이터, 개수, 제품 번호 등) 또는 통상적으로 데이터에 관한 질의의 유형(예를 들어, 범위 질의)에 따라 생성될 버킷들의 개수를 결정할 수 있으므로, 그러한 예로 한정될 필요는 없다.
이어서, 버킷들의 범위 크기는, 참조번호 (606)으로 표시한 바와 같이, 높이-균형 히스토그램을 위한 버킷들 간에 칼럼의 데이터의 균형을 찾도록 조절될 수 있다. 본 명세서에서 사용하는 바와 같은 "균일하게" 또는 "균형"이라는 용어는 "정확하게 동일한 값들"로 한정되지 않으며 또한 이러한 값들을 의미하려는 것도 아니라는 점에 주목한다. 히스토그램을 위한 버킷들 간의 거의 균형, 대략 균형, 또는 심지어 추정된 균형은, 유사한 선택성을 제공할 수 있고, 이러한 용어들은 하나의 구체적인 의미로 한정되어서는 안 된다.
히스토그램의 버킷들을 위한 버킷 범위 크기를 결정할 때, 참조번호 (510)으로 표시한 바와 같이, 칼럼형 데이터베이스 테이블의 칼럼에 대한 데이터를 저장하는 각 데이터 블록마다 확률 데이터 구조를 생성할 수 있다. 전술한 바와 같이, 확률 데이터 구조는, 주어진 값이 데이터 블록에 저장된 데이터 등의 데이터의 세트의 멤버인지 여부를 가리킬 수 있다. 확률 데이터 구조는, 데이터 블록에 저장된 데이터 값이 전체 칼럼에 대한 높이-균형 히스토그램의 어떤 버킷들을 위해 존재하는지를 나타낼 수 있다. 적어도 몇몇 실시예에서, 확률 데이터 구조는 비트맵일 수 있다. 도 7은, 몇몇 실시예에 따라 칼럼형 데이터베이스 테이블의 칼럼에 있는 데이터의 히스토그램에서 각 버킷을 나타내는 비트맵을 생성하는 방법의 흐름도를 예시한다.
참조번호 (612)로 표시한 바와 같이, 칼럼형 데이터베이스 테이블의 칼럼에 대한 데이터를 저장하는 데이터 블록에 대한 비트맵을 생성할 수 있다. 비트맵의 비트들의 개수는 히스토그램의 버킷 개수에 대응할 수 있다. 각 비트는 칼럼에 있는 데이터의 분산을 나타내는 히스토그램의 버킷을 나타낼 수 있다. 예를 들어, 도 1에 예시한 바와 같이, 히스토그램과 함께 예시한 8개의 버킷은 수퍼블록(100)에 저장된 비트맵의 8비트에 대응한다. 데이터 블록에 저장된 각 데이터 값은, 일단 생성되면, 높이-균형 히스토그램을 위한 버킷들 중 하나 내에 위치할 수 있다. 참조번호 (614)로 표시한 바와 같이, 버킷을 위한 값들의 범위 내의 데이터 값을 포함하는 버킷에 대한 각 비트가 설정된다(예를 들어, "1"의 값으로 설정된다). 일단 모든 데이터 값들이 히스토그램의 버킷들에 위치하였고 버킷에 데이터 값들을 포함하는 버킷들에 대한 대응 비트들이 설정되었다면, 비트맵은 블록 메타데이터에 저장될 수 있다. 참조번호 (616)으로 표시한 바와 같이, 몇몇 실시예에서, 비트맵은, 도 4B를 참조하여 전술한 수퍼블록(470) 등의 수퍼블록의 각 엔트리에 저장될 수 있다.
다양한 실시예들에서, 참조번호 (520)으로 표시한 바와 같이, 선택 데이터를 위한 칼럼형 데이터베이스 테이블의 칼럼에 관한 질의 또는 질의의 표시를 수신할 수 있다. 도 2 내지 도 4B에 관하여 전술한 바와 같이, 질의 또는 다른 액세스 요청 메시지는, SQL 또는 API에서 설명한 바와 같은 맞춤형 포맷 등의 다양한 서로 다른 표준화 질의 프로토콜들 또는 언어들에 따라 포맷될 수 있다. 적어도 몇몇 실시예에서, 질의는, 도 4A에 관하여 전술한 리더 노드(400) 등의 리더 노드로부터 도 4B에 관하여 전술한 연산 노드(450) 등의 연산 노드에 관한 하나 이상의 질의일 수 있다. 질의 수신에 응답하여, 참조번호 (530)으로 표시한 바와 같이, 칼럼에 있는 데이터를 저장하는 각 데이터 블록에 대한 확률 데이터 구조를 검사할 수 있다. 확률 데이터 구조의 검사는, 선택 데이터에 대한 질의에 서비스하도록 판독할 필요가 없는 특정한 데이터 블록들을 결정할 수 있다.
도 8은, 몇몇 실시예에 따라 칼럼형 데이터베이스 테이블의 칼럼에 있는 데이터에 대한 질의에 응답하여 판독할 필요가 없는 데이터 블록들을 결정하는 방법의 흐름도를 예시한다. 참조번호 (700)으로 표시한 바와 같이, 선택된 데이터에 대한 칼럼형 데이터베이스 테이블의 칼럼에 관한 질의의 표시를 수신할 수 있다. 질의는, 데이터 값들의 범위 등의 특정한 데이터(예를 들어, 소정의 날짜들 간의 데이터, 소정의 구매 주문서 양에 연관된 데이터 등)에 대한 요청을 포함할 수 있다. 이어서, 선택 데이터의 데이터 값들은 질의에 관한 칼럼을 위한 히스토그램의 버킷 내에 위치할 수 있다. 비트맵 등의 확률 데이터 구조는, 일단 식별되면, 수퍼블록 등의 블록 메타데이터로부터 획득될 수 있고, 참조번호 (710)으로 표시한 바와 같이, 특정한 데이터가 데이터 블록에 저장되지 않는지를 결정하도록 검사될 수 있다. 선택 데이터의 데이터 값들의 버킷 위치에 대한 비트맵의 대응하는 비트들이 설정되어 있지 않으면, 비트맵은, 참조번호 (720)으로 표시한 바와 같이, 데이터 블록을 판독할 필요가 없음을 나타낸다. 예를 들어, 도 1을 다시 참조해 보면, 수퍼블록(100)에 저장된 제1비트맵은, 히스토그램(120)을 위한 버킷들에 대응하는 8비트 값 "10010110"을 갖는다. 제1버킷이 데이터 값 1 내지 10을 나타내고 제2버킷이 값 11 내지 30을 나타내면, 선택된 데이터 값인 20에 대하여, 제2버킷에 대응하는 비트를 검사할 것이다. 이 경우, 비트는 0으로 설정되어, 칼럼(132)에 있는 대응하는 데이터 블록에 저장된 11 내지 30 범위에는 데이터 값들이 없음을 나타낸다. 따라서, 비트맵은, 선택 데이터 값이 20이면 제1데이터 블록을 판독할 필요가 없음을 나타낼 것이다. 그러나, 선택 데이터 값이 5이면, 제1버킷에 대한 대응하는 비트가 1로 설정되어, 값 1 내지 10이 데이터 블록에 저장될 수 있음을 나타낸다. 따라서, 비트맵은, 참조번호 (720)으로 표시한 바와 같이, 데이터 블록이 데이터 값을 저장할 수 있음을 나타낸다. 그 결과, 참조번호 (730)으로 표시한 바와 같이, 데이터 블록을 판독할 수 있다.
도 8에서 예시하고 있듯이, 이 프로세스는, 참조번호 (740)으로 표시한 바와 같이, 수퍼블록의 데이터 블록들에 대한 각 엔트리 등의 모든 블록 메타데이터가, 칼럼에 대한 데이터를 저장하는 데이터 블록들 모두에 대하여 검사될 때까지 반복될 수 있다. 예를 들어, "아니오" 분기부 모두는, 칼럼에 있는 다음 데이터 블록에 대한 비트맵이 수퍼블록으로부터 획득될 수 있음을 나타내는 요소(712)를 가리킨다. 이어서, 참조번호 (750)으로 표시한 바와 같이, 데이터 블록들로부터 판독된 데이터를 제공하여 선택 데이터에 대한 질의에 서비스할 수 있다. 데이터 블록이 판독되기 때문에, 선택 데이터가 그 데이터 블록 내에 있다는 것을 나타내는 것이 아니라 데이터가 데이터 블록에 저장되어 있을 수 있음을 나타낸다는 점에 주목한다. 데이터 블록으로부터의 데이터 판독시 추가 필터링, 처리, 또는 다른 질의 연산을 수행할 수 있다. 데이터의 적어도 일부를 리더 노드, 저장 클라이언트, 또는 다른 시스템이나 디바이스에 리턴할 수 있다.
데이터 값들의 추가 또는 수정 등의 데이터 연산들이 칼럼에 있는 데이터에 대하여 수행되므로, 칼럼에 있는 데이터 블록에 대한 확률 데이터 구조는 현재 상태로 유지되지 않을 수 있다. 예를 들어, 몇몇 실시예에서, 칼럼에 대한 추가 데이터가 수신되어 새로운 데이터 블록에 저장될 수 있다. 새로운 데이터가 저장될 때, 예를 들어, 새로운 데이터 값들에 대하여 이전에 생성된 높이-균형 히스토그램의 버킷들에 대응하는 비트맵의 비트들을 설정함으로써, 새로운 데이터 블록에 대한 확률 데이터 구조를 생성할 수 있다. 시간 경과에 따라, 이는 히스토그램을 스큐할 수 있어서, 히스토그램이 덜 높이-균형화되거나 버킷들 간에 덜 균일하게 분산된 칼럼 데이터를 갖게 될 수 있다. 높이-균형 히스토그램을 구현하는 몇몇 실시예에서, 이러한 추가 데이터는 높이-균형 히스토그램을 이용하는 효율을 줄일 수 있다. 해결책으로서, 적어도 몇몇 실시예에서는, 칼럼형 데이터베이스 테이블의 칼럼에 저장된 현재 데이터에 대한 새로운 높이-균형 히스토그램을 산출할 수 있으며, 이때, 버킷 범위 크기가 결정되고, 새로운 확률 데이터구조가 칼럼에 대한 데이터를 저장하는 데이터 블록들의 각각마다 생성된다. 그러나, 이 연산은, 연산 자원 면에서 고 비용이 들 수 있다. 따라서, 적어도 몇몇 실시예에서, 버킷 범위 자체는, 칼럼에 새로운 또는 수정된 데이터를 포함하도록 칼럼의 데이터의 분산을 재산출하지 않고서 수정될 수 있다.
도 9는 몇몇 실시예에 따라 재균형 이벤트의 검출에 응답하여 데이터 블록에 대한 확률 데이터 구조를 수정하는 방법의 흐름도를 예시한다. 참조번호 (802)로 표시한 바와 같이, 재균형 이벤트를 검출할 수 있다. 예를 들어, 도 4A에 관하여 전술한 히스토그램 생성기(420) 등의 히스토그램 생성기는, 시간 임계값(예를 들어, 24시간)을 초과하는, 칼럼에 대한 높이-균형 히스토그램의 최종 산출 또는 수정 이후 소정량의 시간이 경과하였음을 검출할 수 있다. 다른 실시예들은, 재균형 임계값을 초과하는, 추가 데이터 블록들에 저장된 추가 데이터의 양이 칼럼에 대하여 저장되었을 수 있음을 결정할 수 있다. 예를 들어, 재균형 임계값은 칼럼에 대한 20개의 새로운 데이터 블록일 수 있고, 칼럼에 대한 20개의 데이터 블록보다 많은 데이터 블록을 기입한 후, 재균형 이벤트를 검출할 수 있다.
적어도 몇몇 실시예에서는, 칼럼에 대한 추가 데이터의 분산에 기초하여 재균형 이벤트를 결정할 수 있다. 이 추가 데이터를 분석하여, 칼럼에 있는 데이터의 현재 분포에 비해 높이-균형 히스토그램의 버킷들 간의 추가 데이터의 분산 등의 추가 데이터의 분산의 변화를 결정할 수 있다. 이어서, 추가 데이터의 분산이 히스토그램을 위한 분산이 더 이상 높이-균형화되지 않을 수 있는 현재의 히스토그램과는 다른 분산을 향하여 스큐될 수 있음을 나타내는 소정의 퍼센트 또는 기타 값 등의 분산 임계값을 그 변화가 초과하는지 여부를 결정할 수 있다.
추가 데이터에 대한 분산을 분석하는 것은 다양한 다른 방식들로 수행될 수 있다. 추가 데이터의 데이터 값들의 분석을 수행하여, 추가 데이터가 추가 데이터 블록들에 저장될 때 또는 추가 데이터가 추가 데이터 블록들에 저장된 후에 추가 데이터의 분산을 분석할 수 있다. 예를 들어, 데이터에 대한 데이터 값들의 분산은, 저장 전에 각 데이터 블록에 대하여 데이터 값들을 검사함으로써, 저장 프로세스 동안 추적 또는 감시될 수 있다. 대안으로, 소정의 개수의 추가 데이터 블록들이 저장된 후에, 데이터 값들을 획득 및 분석할 수도 있다.
추가 데이터의 데이터 값들을 분석하는 것에 더하여, 적어도 몇몇 실시예에서는, 추가 데이터를 위해 생성된 비트맵 등의 확률 데이터 구조를 대신 검사할 수 있다. 예를 들어, 전술한 바와 같이, 히스토그램의 어떤 버킷들이 추가 데이터 블록의 추가 데이터의 데이터 값들을 포함하는지를 나타내는 비트맵을 생성할 수 있다. 이러한 비트맵을 분석하여 추가 데이터의 분산을 결정할 수 있다. 예를 들어, 버킷 범위 내의 데이터 값을 나타내는 설정된 비트들의 개수를 카운팅 또는 추적할 수 있다. 이러한 추적은, 추가 데이터를 저장하는 추가 데이터 블록들에 대하여 각 추가 비트맵이 생성될 때 유지될 수 있다(또는 대안으로, 비트맵들이 생성되고 추가 데이터가 데이터 블록들에 저장된 후에 획득될 수 있다). 설정된 범위에 가까운 버킷들 또는 설정된 동일한 버킷들을 갖는 것 등의 추가 데이터에 대하여 설정된 버킷들의 개수에 기초하여, 추가 데이터의 분산을 결정할 수 있다. 이어서, 칼럼에 있는 데이터의 초기 분산에 비교되는 변화를 결정할 수 있다. 예를 들어, 추가 데이터 블록들에 대한 특정한 버킷 범위를 나타내는 설정된 비트들의 개수가 소정의 임계값(예를 들어, 30개의 저장된 추가 데이터 블록에 대한 20인 임계값 등의, 저장된 추가 데이터 블록들의 개수에 대한 카운트 값)을 초과하면, 추가 데이터에 대한 데이터의 분산이 칼럼에 대한 데이터의 이전 분산에 비해 그 특정한 버킷 범위를 향하여 스큐된다고 결정할 수 있다. 재균형 이벤트를 트리거할 수 있다. 또한, 이러한 분석을, 히스토그램의 나머지 버킷들 중 하나 이상에 대하여 수행할 수 있다. 개별적인 버킷들에 대한 결과를, 예를 들어, 조합하여 추가 데이터에 대한 분산을 결정할 수 있고, 이어서, 이러한 분산을 추가 데이터 전의 데이터의 분산과 비교할 수 있다. 이러한 변화가 소정의 분산 임계값을 초과하면, 재균형 이벤트를 트리거할 수 있다.
칼럼의 데이터를 나타내는 높이-균형 히스토그램에 대한 재균형 이벤트를 검출하는 것에 응답하여, 높이-균형 히스토그램에 대한 버킷 범위 크기는, 참조번호 (804)로 표시한 바와 같이 수정될 수 있다. 버킷 범위 크기의 수정은, 많은 서로 다른 버킷 범위 기술들을 이용하여 수행될 수 있는데, 예를 들어, 추가 데이터 블록들에 대한 확률 데이터 구조들을 검사하여 추가 데이터의 분산을 추정함으로써, 수행될 수 있다. 예를 들어, 칼럼에 추가된 새로운 데이터가 더욱 높은 범위 값들으로 스큐되면, 분산은 더욱 높은 범위 값들을 나타내는 버킷들의 크기를 감소시키도록 추정될 수 있다. 대안으로, 버킷 범위 크기는, 예를 들어, 비트맵 확률 데이터 구조에서 설정된 비트들에 인접하는 비트들을 설정함으로써, 중첩하도록 수정될 수 있다. 일단 칼럼에 대한 데이터의 분산을 나타내는 높이-균형 히스토그램을 위한 버킷 범위 크기가 수정되면, 참조번호 (806)으로 표시한 바와 같이, 데이터 블록들에 대한 확률 데이터 구조들을 업데이트하여 높이-균형 히스토그램을 위한 수정된 버킷 범위 크기를 나타낼 수 있다. 후술하는 도 10은 확률 데이터 구조들을 업데이트하는 기술의 일례를 설명한다. 이러한 업데이트는, 예를 들어, 비트맵으로서 표현되는 그러한 확률 데이터 구조의 서로 다른 비트들을 설정하거나 수정된 버킷 범위 크기에 따라 버킷들 간의 데이터의 분산을 나타내는 다른 확률 데이터 구조로 변경하는 것처럼 간단할 수 있다. 예를 들어, 높이-균형 히스토그램은 비트맵보다는 수학식으로서 대신 표현될 수 있다. 대안으로, 업데이트는, 칼럼의 데이터에 대한 질의에 서비스하는 데 사용되는 현재의 블록 메타데이터 구조를 교체하도록 업데이트된 확률 데이터 구조들로 채워진, 수퍼블록 등의 새로운 블록 메타데이터 구조를 생성하는 것을 포함할 수 있다. 새로운 수퍼블록 데이터 구조가 완료될 때까지는 현재의 수퍼블록 데이터 구조를 이용한다.
도 10은 몇몇 실시예에 따라 데이터 블록에 대한 확률 데이터 구조를 업데이트하는 방법의 흐름도를 예시한다. 참조번호 (900)으로 표시한 바와 같이, 칼럼형 데이터베이스 테이블의 칼럼에 대한 추가 데이터를 수신할 수 있다. 데이터는, 참조번호 (910)으로 표시한 바와 같이, 하나 이상의 데이터 블록에 저장될 수 있다. 생성된 데이터 블록들의 개수 등의 저장된 데이터의 양은, 참조번호 (920)으로 표시한 바와 같이, 도 9에 관하여 전술한 재균형 이벤트를 트리거하는 데 사용되는 다양한 임계값들 중 하나 등의 재균형 임계값을 초과할 수 있다. 초과하지 않는다면, 참조번호 (912)로 표시한 바와 같이, 버킷들 간의 데이터의 분산을 나타내는 높이-균형 히스토그램의 버킷들에 위치하는 데이터 값들에 대한 비트들을 설정하는 하나 이상의 데이터 블록에 대한 비트맵을 생성한다. 참조번호 (930)으로 표시한 바와 같이, 재균형 임계값이 초과되면, 버킷들 간의 칼럼에 있는 데이터의 분산을 나타내는 높이-균형 히스토그램을 위한 각 버킷에 대한 버킷 범위 크기를 수정한다. 이어서, 참조번호 (940)으로 표시한 바와 같이, 이제는 수정된 버킷 범위 크기 내의 데이터 값들을 저장하도록 표시된, 칼럼에 있는 데이터 블록들에 대한 버킷들을 나타내는 비트맵들의 미설정된 비트들을 식별한 후, 참조번호 (950)으로 표시한 바와 같이, 그 미설정된 비트들을 설정한다.
다양한 실시예들에서, 수정된 버킷 범위 크기로 인해 업데이트된 확률 데이터 구조들은, 데이터 구조에 대응하는 데이터 블록들의 후속 판독 후에 더 업데이트될 수 있다. 예를 들어, 확률 데이터 구조가, 값들의 소정의 범위 내의 데이터 값이 데이터 블록에 저장되어 있음을 나타내고, 데이터 블록을 판독한 후에는 이러한 값이 그 범위 내에 없다고 결정되면, 확률 데이터 구조를 업데이트하여 그 값이 그 범위 내에 저장되지 않음을 나타낼 수 있다. 도 1을 다시 참조해 보면, 예를 들어, 버킷(8)이 이전보다 훨씬 넓어진 수정된 버킷 범위 크기로 변경되었고 제1데이터 블록에 대한 수퍼블록(100) 비트맵이 업데이트되어 비트 8이 이제는 0 대신 1(버킷(8)에 의해 표현되는 수정된 값들의 범위와 함께 저장된 값을 나타냄)로 됨을 나타내면, 데이터 블록을 판독하고, 비트 8에서 1로 표시된 바와 같이 수정된 범위에 데이터 값을 실제로 저장하지 않으며, 이어서 비트맵을 더 업데이트하여 비트를 0으로 리턴할 수 있다.
적어도 몇몇 실시예에서는, 데이터 블록에 대한 확률 데이터 구조의 선택성 레벨을 결정할 수 있다. 예를 들어, 데이터 비트맵의 비트들의 대부분이 1로 설정되면, 비트맵은, 대부분의 검사에서 데이터 블록을 판독해야 한다고 가리키므로, 큰 선택성을 갖지 않는다. 선택성 레벨이 선택성 임계값 미만이면, 몇몇 실시예에서는, 블룸 필터, 지수필터, 또는 스킵 리스트 등의 다른 확률 데이터 구조를, 높이-균형 히스토그램 대신 구현하여 질의 처리를 용이하게 하도록 블록 메타데이터에 저장할 수 있다.
시스템 예
본 명세서에서 설명하는 바와 같이 칼럼형 데이터베이스의 칼럼에 대한 히스토그램을 이용한 효율적인 질의 처리의 실시예들은, 다양한 다른 디바이스들과 상호 작용할 수 있는 하나 이상의 컴퓨터 시스템에서 실시될 수 있다. 이러한 한 가지 컴퓨터 시스템이 도 11에 예시되어 있다. 서로 다른 실시예들에서, 컴퓨터 시스템(1000)은, 퍼스널 컴퓨터 시스템, 데스크톱 컴퓨터, 랩톱, 노트북, 또는 넷북 컴퓨터, 메인프레임 컴퓨터 시스템, 핸드헬드 컴퓨터, 워크스테이션, 네트워크 컴퓨터, 카메라, 셋톱 박스, 모바일 디바이스, 가전 디바이스, 비디오 게임 콘솔, 핸드헬드 비디오 게임 디바이스, 애플리케이션 서버, 저장 디바이스, 주변 디바이스, 예컨대, 스위치, 모뎀, 라우터를 포함하는 다양한 유형의 디바이스들 중 임의의 것 또는 일반적으로 연산 디바이스나 전자 디바이스의 임의의 유형일 수 있지만, 이러한 예로 한정되지는 않는다.
예시한 실시예에서, 컴퓨터 시스템(1000)은 입력/출력(I/O) 인터페이스(1030)를 통해 시스템 메모리(1020)에 결합된 하나 이상의 프로세서(1010)를 포함한다. 컴퓨터 시스템(1000)은, I/O 인터페이스(1030)에 결합된 네트워크 인터페이스(1040), 및 커서 제어 디바이스(1060), 키보드(1070), 디스플레이(들)(1080) 등의 하나 이상의 입력/출력 디바이스(1050)를 더 포함한다. 디스플레이(들)(1080)는, 표준 컴퓨터 모니터(들) 및/또는 기타 디스플레이 시스템, 기술, 또는 디바이스를 포함할 수 있다. 적어도 일부 구현예에서, 입력/출력 디바이스(1050)는, 또한, 사용자가 스타일러스형 디바이스 및/또는 하나 이상의 디지트를 통해 입력을 행하는 패드나 태블릿 등의 터치 또는 멀티-터치 활성화 디바이스를 포함할 수 있다. 몇몇 실시예에서는 컴퓨터 시스템(1000)만을 이용하여 단일 실시예를 구현하고, 다른 실시예들에서는 다수의 이러한 시스템이나 컴퓨터 시스템(1000)을 구성하는 다수의 노드를 구성하여 실시예들의 서로 다른 경우나 부분을 호스팅할 수 있음을 고려할 수 있다. 예를 들어, 일 실시예에서, 일부 요소들은, 다른 요소들을 구현하는 노드들과는 구별되는 컴퓨터 시스템(1000)의 하나 이상의 노드를 통해 구현될 수 있다.
다양한 실시예들에서, 컴퓨터 시스템(1000)은, 하나의 프로세서(1010)를 포함하는 유니프로세서 시스템, 또는 여러 프로세서(1010)(예를 들어, 2개, 4개, 8개, 또는 다른 적절한 개수)를 포함하는 멀티프로세서 시스템일 수 있다. 프로세서들(1010)은 명령어를 실행할 수 있는 임의의 적절한 프로세서일 수 있다. 예를 들어, 다양한 실시예들에서, 프로세서들(1010)은, x86, PowerPC, SPARC 또는 MIPS ISAs 등의 다양한 명령어 세트 아키텍처들(ISA) 중 임의의 것 또는 다른 임의의 적절한 ISA를 구현하는 범용 또는 임베딩 프로세서일 수 있다. 멀티프로세서 시스템에서, 프로세서들(1010)의 각각은, 반드시 그러한 것은 아니지만, 흔히 동일한 ISA를 구현할 수 있다.
몇몇 실시예에서, 적어도 하나의 프로세서(1010)는 그래픽 처리 유닛일 수 있다. 그래픽 처리 유닛 즉 GPU는, 퍼스널 컴퓨터, 워크스테이션, 게임 콘솔, 또는 기타 연산 또는 전자 디바이스를 위한 전용 그래픽 렌더링 디바이스라 할 수 있다. 현대의 GPU는, 컴퓨터 그래픽을 조작하고 표시하는 데 있어서 매우 효율적일 수 있으며, 높은 병렬 구조에 의해, 복잡한 그래픽 알고리즘의 범위에 대하여 통상적인 CPU보다 더욱 효과적일 수 있다. 예를 들어, 그래픽 프로세서는, 호스트 중앙 처리 유닛(CPU)을 이용하여 스크린에 직접 묘화하는 것보다 다수의 그래픽 원시 연산을 훨씬 빠르게 실행하는 방식으로 그 그래픽 원시 연산을 구현할 수 있다. 다양한 실시예들에서, 그래픽 렌더링은, 적어도 부분적으로는, 이러한 GPU들 중 하나에 대하여 실행되도록 또는 두 개 이상에 대하여 병렬 실행되도록 구성된 프로그램 명령어에 의해 구현될 수 있다. GPU(들)는, 프로그래머가 GPU(들)의 기능을 호출할 수 있게 하는 하나 이상의 애플리케이션 프로그래머 인터페이스(API)를 구현할 수 있다. 적절한 GPU는, NVIDIA Corporation, ATI Technologies (AMD), 기타 등의 판매자에 의해 시판되고 있다.
시스템 메모리(1020)는, 프로세서(1010)에 의해 액세스 가능한 프로그램 명령어 및/또는 데이터를 저장하도록 구성될 수 있다. 다양한 실시예들에서, 시스템 메모리(1020)는, 스태틱 램(SRAM), 동기형 동적 RAM(SDRAM), 비휘발성/플래시 유형 메모리 또는 다른 임의의 유형의 메모리 등의 임의의 적절한 메모리 기술을 이용하여 구현될 수 있다. 예시한 실시예에서, 본 명세서에서 설명하는 바와 같이 분산형 시스템에서의 연산 스케일링 클러스터에 대하여 전술한 바와 같은 소망하는 기능을 구현하는 프로그램 명령어와 데이터는, 각각 프로그램 명령어(1025)와 데이터 저장 장치(1035)로서 시스템 메모리(1020) 내에 저장된 것으로 도시되어 있다. 다른 실시예들에서는, 서로 다른 유형의 컴퓨터 액세스 가능 매체 또는 시스템(1020)이나 컴퓨터 시스템(1000)과는 별도의 유사한 매체에 프로그램 명령어 및/또는 데이터를 수신, 송신, 또는 저장할 수 있다. 일반적으로, 컴퓨터 액세스 가능 매체는, 자기 매체나 광 매체 등의 저장 매체 또는 메모리 매체, 예를 들어, I/O 인터페이스(1030)를 통해 컴퓨터 시스템(1000)에 결합된 디스크 또는 CD/DVD-ROM을 포함할 수 있다. 컴퓨터 액세스 가능 매체를 통해 저장된 프로그램 명령어와 데이터는, 네트워크 인터페이스(1040)를 통해 구현될 수 있는 등의 네트워크 및/또는 무선 링크 등의 통신 매체를 통해 전달될 수 있는, 전기 신호, 전자기 신호, 또는 디지털 신호 등의 신호 또는 송신 매체에 의해 송신될 수 있다.
일 실시예에서, I/O 인터페이스(1030)는, 프로세서(1010), 시스템 메모리(1020), 및 네트워크 인터페이스(1040)나 입력/출력 디바이스(1050) 등의 기타 주변 인터페이스 등의 디바이스의 임의의 주변 디바이스들 간의 I/O 트래픽을 조정하도록 구성될 수 있다. 몇몇 실시예에서, I/O 인터페이스(1030)는, 데이터 신호를 하나의 구성요소(예를 들어, 시스템 메모리(1020))로부터 다른 구성요소(예를 들어, 프로세서(1010))가 사용하는 데 적합한 포맷으로 변환하도록 임의의 필요한 프로토콜, 타이밍 또는 기타 데이터 변환을 수행할 수 있다. 몇몇 실시예에서, I/O 인터페이스(1030)는, 예를 들어, 다양한 페리페럴 컴포넌트 인터커넥트(PCI) 버스 표준 또는 유니버설 시리얼 버스(USB) 등의 다양한 유형의 주변 버스를 통해 연결된 디바이스에 대한 지원부를 포함할 수 있다. 몇몇 실시예에서, I/O 인터페이스(1030)의 기능은, 예를 들어, 노스 브리지와 사우스 브리즈 등의 두 개 이상의 개별적인 구성요소로 분리될 수 있다. 또한, 몇몇 실시예에서, 시스템 메모리(1020)에 대한 인터페이스 등의 I/O 인터페이스(1030)의 기능의 일부 또는 전부는 프로세서(1010) 내에 직접 통합될 수 있다.
네트워크 인터페이스(1040)는, 컴퓨터 시스템(1000)과 네트워크에 연결된 기타 디바이스들, 예컨대, 기타 컴퓨터 시스템 간에, 또는 컴퓨터 시스템(1000)의 노드들 간에 데이터가 교환될 수 있도록 구성될 수 있다. 다양한 실시예들에서, 네트워크 인터페이스(1040)는, 아날로그 음성 네트워크나 디지털 섬유 통신 네트워크 등의 원격 통신/텔레포니 네트워크를 통해, 섬유 채널 SANs 등의 스토리지 에리어 네트워크를 통해, 또는, 임의의 다른 적절한 유형의 네트워크 및/또는 프로토콜을 통해, 예를 들어, 이더넷 네트워크의 임의의 적절한 유형 등의 무선 또는 유선 범용 데이터 네트워크를 통한 통신을 지원할 수 있다.
입력/출력 디바이스들(1050)은, 몇몇 실시예에서, 하나 이상의 디스플레이 단말, 키보드, 키패드, 터치패드, 스캐닝 디바이스, 음성 또는 광학 인식 디바이스, 또는 하나 이상의 컴퓨터 시스템(1000)에 의해 데이터를 입력하거나 검색하는 데 적합한 다른 임의의 디바이스를 포함할 수 있다. 다수의 입력/출력 디바이스(1050)는 컴퓨터 시스템(1000)에 존재할 수 있고 또는 컴퓨터 시스템(1000)의 다양한 노드들에 분산될 수 있다. 몇몇 실시예에서, 유사한 입력/출력 디바이스들은, 컴퓨터 시스템(1000)으로부터 분리된 것일 수 있고, 네트워크 인터페이스(1040) 등을 거쳐 유선 접속 또는 무선 접속을 통해 컴퓨터 시스템(1000)의 하나 이상의 노드와 상호 작용할 수 있다.
도 11에 도시한 바와 같이, 메모리(1020)는, 본 명세서에서 설명하는 바와 같이 스케줄링 전달 순서를 위한 시간 기반 항목 추천을 제공하도록 구성된 프로그램 명령어(1025), 및 프로그램 명령어(1025)에 의해 액세스 가능한 다양한 데이터를 포함하는 데이터 저장 장치(1035)를 포함할 수 있다. 일 실시예에서, 프로그램 명령어(1025)는, 본 명세서에서 설명하고 도면에서 예시한 바와 같은 실시예들의 소프트웨어 요소들을 포함할 수 있다. 데이터 저장 장치(1035)는 실시예들에서 사용될 수 있는 데이터를 포함할 수 있다. 다른 실시예들에서는, 다른 또는 서로 다른 소프트웨어 요소들과 데이터가 포함될 수 있다.
통상의 기술자는, 컴퓨터 시스템(1000)이 예시일 뿐이며 본 명세서에서 설명하는 바와 같이 스테레오 드로잉(stereo drawing) 기술의 범위를 한정하려는 것이 아니라는 점을 인식할 것이다. 구체적으로, 컴퓨터 시스템과 디바이스는, 컴퓨터, 퍼스널 컴퓨터 시스템, 데스크톱 컴퓨터, 랩톱, 노트북, 또는 넷북 컴퓨터, 메인프레임 컴퓨터 시스템, 핸드헬드 컴퓨터, 워크스테이션, 네트워크 컴퓨터, 카메라, 셋톱 박스, 모바일 디바이스, 네트워크 디바이스, 인터넷 어플라이언스, PDA, 무선 폰, 페이저, 가전 디바이스, 비디오 게임 콘솔, 핸드헬드 비디오 게임 디바이스, 애플리케이션 서버, 저장 디바이스, 주변 디바이스, 예컨대, 스위치, 모뎀, 라우터, 또는 일반적으로 연산 디바이스나 전자 디바이스의 임의의 유형을 포함한, 지시된 기능을 수행할 수 있는 하드웨어 또는 소프트웨어의 임의의 조합을 포함할 수 있다. 또한, 컴퓨터 시스템(1000)은, 예시하지 않은 다른 디바이스들에 접속될 수 있고, 또는 독립형 시스템으로서 동작할 수 있다. 또한, 예시한 구성요소들에 의해 제공되는 기능은, 몇몇 실시예에서, 더욱 적은 구성요소들에서 결합될 수 있고 또는 추가 구성요소들에 분산될 수 있다. 마찬가지로, 몇몇 실시예에서, 예시한 구성요소들 중 일부의 기능은 제공되지 않을 수 있고 및/또는 다른 추가 기능을 이용할 수 있다.
또한, 통상의 기술자는, 다양한 항목들이 메모리 또는 저장되거나 사용되는 동안 저장되어 있는 것으로 예시되어 있으나, 이러한 항목들 또는 항목들의 일부가 메모리 관리와 데이터 무결성을 위해 메모리와 기타 저장 디바이스 간에 전달될 수 있다는 점을 인식할 것이다. 대안으로, 다른 실시예들에서, 소프트웨어 구성요소들의 일부 또는 전부는 다른 디바이스의 메모리에서 실행될 수 있고 컴퓨터간 통신을 통해 예시된 컴퓨터 시스템과 통신할 수 있다. 또한, 시스템 구성요소 또는 데이터 구조의 일부 또는 전부는, 적절한 드라이브에 의해 판독되는 컴퓨터 액세스 가능 매체 또는 휴대 물품에 (예를 들어, 명령어 또는 구조화된 데이터로서) 저장될 수 있으며, 이에 대한 다양한 예들을 전술한 바와 같다. 몇몇 실시예에서, 컴퓨터 시스템(1000)과는 별도의 컴퓨터 액세스 가능 매체에 저장된 명령어는, 네트워크 및/또는 무선 링크 등의 통신 매체를 통해 전달되는 전기 신호, 전자기 신호, 또는 디지털 신호 등의 신호 또는 송신 매체를 통해 컴퓨터 시스템(1000)에 송신될 수 있다. 다양한 실시예들은, 컴퓨터 액세스 가능 매체에 전술한 설명에 따라 구현되는 명령어 및/또는 데이터를 수신하고, 송신하고, 또는 저장하는 것을 더 포함할 수 있다. 이에 따라, 본 발명을 다른 컴퓨터 시스템 구성으로 실시할 수도 있다.
본 명세서에서 설명한 분산형 시스템 실시예들 중 임의의 것 또는 이들의 구성요소 중 임의의 것은 하나 이상의 웹 서비스로서 구현될 수 있다는 점을 주목한다. 예를 들어, 데이터 웨어하우스 시스템 내의 리더 노드는 클라이언트에게 데이터 저장 서비스 및/또는 데이터베이스 서비스를 웹 서비스로서 제시할 수 있다. 몇몇 실시예에서, 웹 서비스는 네트워크를 통해 상호운용 가능한 기계 대 기계 상호 작용을 지지하도록 구성된 소프트웨어 및/또는 하드웨어 시스템에 의해 구현될 수 있다. 웹 서비스는 웹 서비스 기술 언어(WSDL) 등의 기계-처리 가능 포맷으로 기술되는 인터페이스를 가질 수 있다. 다른 시스템은 웹 서비스의 인터페이스의 기술에 의해 규정되는 방식으로 웹 서비스와 상호 작용할 수 있다. 예를 들어, 웹 서비스는, 다른 시스템들이 호출할 수 있는 다양한 연산들을 정의할 수 있고, 다른 시스템들이 다양한 연산의 요청시 따를 것으로 예상될 수 있는 특정한 애플리케이션 프로그래밍 인터페이스(API)를 정의할 수 있다.
다양한 실시예들에서, 웹 서비스는, 웹 서비스 요청에 연관된 데이터 및/또는 파라미터를 포함하는 메시지의 사용을 통해 요청 또는 호출될 수 있다. 이러한 메시지는, 확장 가능 마크업 언어(XML) 등의 특정한 마크업 언어에 따라 포맷될 수 있고, 및/또는 심플 오브젝트 액세스 프로토콜(SOAP) 등의 프로토콜을 사용하여 캡슐화될 수 있다. 웹 서비스 요청을 수행하도록, 웹 서비스 클라이언트는, 하이퍼텍스트 트랜스퍼 프로토콜(HTTP) 등의 인터넷 기반 애플리케이션층 전달 프로토콜을 이용하여, 요청을 포함하는 메시지를 조립할 수 있고 메시지를 웹 서비스에 대응하는 어드레싱 가능 엔드포인트(예를 들어, 유니폼 리소스 로케이터(URL))에 전달할 수 있다.
몇몇 실시예에서, 웹 서비스는 메시지 기반 기술보다는 대표 상태 전달(Representational State Transfer; "RESTful") 기술을 이용하여 구현될 수 있다. 예를 들어, RESTful 기술에 따라 구현되는 웹 서비스는, SOAP 메시지 내에 캡슐화되기보다는 PUT, GET, 또는 DELETE 등의 HTTP 메소드에 포함된 파라미터를 통해 호출될 수 있다.
전술한 실시예들은 다음에 따르는 절(항)들을 고려할 때 더욱 잘 이해할 수 있다.
1. 분산형 데이터 웨어하우스 시스템으로서,
복수의 노드를 포함하되,
상기 복수의 노드 중 적어도 일부의 노드의 각각은,
복수의 데이터 블록을 포함하는, 칼럼형 데이터베이스 테이블을 위한 저장 장치; 및
질의 실행 모듈을 포함하고,
상기 복수의 노드 중 적어도 하나의 노드는 높이-균형 히스토그램 생성기를 포함하고, 상기 생성기는,
상기 칼럼형 데이터베이스 테이블의 칼럼의 복수의 버킷 간의 데이터의 분산을 나타내는 높이-균형 히스토그램을 위한 복수의 버킷 범위 크기를 결정하고,
상기 칼럼에 대한 데이터를 저장하는 하나 이상의 데이터 블록의 각 데이터 블록에 대한 확률 데이터 구조를 생성하도록 구성되고,
상기 복수의 버킷의 각 버킷은 값들의 범위 내의 상기 칼럼에 대한 데이터의 하나 이상의 데이터 값의 존재를 나타내고,
상기 확률 데이터 구조는, 상기 데이터 블록에 저장된 버킷 범위 크기의 데이터 값이 상기 복수의 버킷 중 어떤 버킷을 위해 존재하는지를 나타내는 것이며,
상기 질의 실행 모듈은,
선택 데이터에 대한 상기 칼럼형 데이터베이스 테이블의 칼럼에 관한 질의의 표시를 수신하고,
상기 질의의 표시를 수신함에 응답하여,
상기 칼럼에 대한 데이터를 저장하는 상기 하나 이상의 데이터 블록의 각각에 대한 상기 확률 데이터 구조를 검사하여 상기 하나 이상의 데이터 블록 중에서 상기 선택 데이터를 위해 상기 질의에 서비스하도록 판독할 필요가 없는 특정한 데이터 블록들을 결정하고,
상기 하나 이상의 데이터 블록 중에서 판독할 필요가 없는 상기 특정한 데이터 블록들을 제외하고서 상기 칼럼에 대한 데이터를 저장하는 상기 하나 이상의 데이터 블록을 판독하도록 구성된, 분산형 데이터 웨어하우스 시스템.
2. 제1항에 있어서, 상기 칼럼형 데이터베이스 테이블의 칼럼을 나타내는 높이-균형 히스토그램을 위한 상기 복수의 버킷에 대한 복수의 버킷 범위 크기를 결정하도록, 상기 높이-균형 히스토그램 생성기는,
상기 칼럼의 데이터를 획득하고,
상기 복수의 버킷을 생성하고,
상기 칼럼의 데이터가 상기 버킷들 간에 균일하게 분산되도록 상기 높이-균형 히스토그램을 위한 각 버킷마다 상기 복수의 버킷 범위 크기의 버킷 범위 크기를 설정하도록 구성된, 분산형 데이터 웨어하우스 시스템.
3. 제1항에 있어서, 상기 확률 데이터 구조는 복수의 비트를 포함하는 비트맵이고, 상기 비트맵의 각 비트는 상기 높이-균형 히스토그램을 위한 상기 복수의 버킷의 각 버킷을 나타내고, 상기 데이터 블록에 저장된 버킷 범위 크기에 포함된 모든 데이터 값마다, 상기 버킷에 대응하는 상기 비트맵의 비트가 설정된, 분산형 데이터 웨어하우스 시스템.
4. 제1항에 있어서, 상기 높이-균형 히스토그램 생성기는, 또한, 상기 하나 이상의 데이터 블록에 관한 정보를 저장하는 블록 메타데이터 구조의 각 엔트리에 상기 하나 이상의 데이터 블록의 각각의 확률 데이터 구조를 저장하도록 구성된, 분산형 데이터 웨어하우스 시스템.
5. 제1항에 있어서, 상기 적어도 하나의 노드는 분산형 데이터 웨어하우스 클러스터의 리더 노드이고, 상기 적어도 일부의 노드 중 적어도 하나의 노드는 상기 분산형 데이터 웨어하우스 클러스터의 연산 노드인, 분산형 데이터 웨어하우스 시스템.
6. 하나 이상의 연산 디바이스에 의해,
칼럼형 데이터베이스 테이블의 칼럼의 히스토그램을 위한 복수의 버킷의 각각에 대한 버킷 범위 크기를 결정하는 단계로서, 상기 히스토그램은 상기 복수의 버킷 간의 상기 칼럼에 있는 데이터의 분산을 나타내고, 상기 복수의 버킷의 각 버킷은, 결정된 버킷 범위 크기에 따른 값들의 범위 내에서 상기 칼럼에 있는 데이터의 하나 이상의 데이터 값의 존재를 나타내는 것인, 상기 결정하는 단계;
상기 칼럼형 데이터베이스 테이블의 칼럼에 대한 데이터를 저장하는 하나 이상의 데이터 블록의 각각에 대한 확률 데이터 구조를 생성하는 단계로서, 상기 확률 데이터 구조는, 상기 데이터 블록에 저장된 데이터 값이 상기 복수의 버킷 중 어떠한 특정 버킷을 위해 존재하는 것인지를 나타내는 것인, 상기 생성하는 단계;
선택 데이터를 위한 상기 칼럼에 관한 질의의 표시를 수신하는 단계; 및
상기 질의의 표시를 수신함에 응답하여, 상기 칼럼에 대한 데이터를 저장하는 상기 하나 이상의 데이터 블록의 각각에 대한 상기 확률 데이터 구조를 검사하여 상기 하나 이상의 데이터 블록 중에서 상기 선택 데이터를 위한 질의에 서비스하도록 판독할 필요가 없는 특정한 데이터 블록들을 결정하는 단계를 수행하는, 방법.
7. 제6항에 있어서, 상기 칼럼형 데이터베이스 테이블의 칼럼의 히스토그램을 위한 복수의 버킷의 각각에 대한 버킷 범위 크기를 결정하는 단계는,
상기 칼럼의 데이터를 획득하는 단계;
상기 복수의 버킷을 생성하는 단계; 및
상기 칼럼의 데이터가 버킷들 간에 균일하게 분산되도록 각 버킷마다 상기 복수의 버킷 범위 크기의 버킷 범위 크기를 설정하는 단계를 포함하는, 방법.
8. 제6항에 있어서, 상기 칼럼형 데이터베이스 테이블의 칼럼에 대한 데이터를 저장하는 하나 이상의 데이터 블록의 각각에 대한 확률 데이터 구조를 생성하는 단계는,
복수의 비트를 포함하는 데이터 블록용 비트맵을 생성하는 단계로서, 각 비트는 상기 히스토그램을 위한 상기 복수의 버킷의 서로 다른 버킷을 나타내는 것인, 상기 비트맵을 생성하는 단계; 및
상기 데이터 블록에 저장된 데이터 값이 존재하는 특정한 버킷들의 각각에 대하여 상기 비트맵의 각 비트를 설정하는 단계를 포함하는, 방법.
9. 제8항에 있어서, 상기 하나 이상의 데이터 블록에 관한 정보를 저장하는 블록 메타데이터 구조의 각 엔트리에 상기 하나 이상의 데이터 블록의 각각의 상기 확률 데이터 구조를 저장하는 단계를 더 포함하는, 방법.
10. 제9항에 있어서, 상기 칼럼에 대한 데이터를 저장하는 상기 하나 이상의 데이터 블록의 각각에 대한 상기 확률 데이터 구조를 검사하여 상기 하나 이상의 데이터 블록 중에서 상기 선택 데이터를 위한 질의에 서비스하도록 판독할 필요가 없는 특정한 데이터 블록들을 결정하는 단계는,
상기 선택 데이터를 포함하는 값들의 범위 내의 상기 하나 이상의 버킷을 나타내는 하나 이상의 비트를 결정하는 단계; 및
상기 하나 이상의 데이터 블록에 대한 상기 블록 메타데이터 구조에 저장된 각 비트맵의 상기 하나 이상의 비트를 검사하여 상기 선택 데이터를 위한 질의에 서비스하도록 설정된 상기 하나 이상의 비트 중 하나가 없는 데이터 블록들을, 판독할 필요가 없는 상기 특정한 데이터 블록들로서 식별하는 단계를 포함하는, 방법.
11. 제6항에 있어서, 상기 칼럼형 데이터베이스 테이블의 칼럼의 히스토그램은 높이 균형 히스토그램인, 방법.
12. 제11항에 있어서, 상기 복수의 버킷 중에서 상기 칼럼에 있는 데이터의 분산을 위한 재균형 이벤트를 검출하는 단계;
상기 재균형 이벤트의 검출에 응답하여,
상기 칼럼의 상기 높이-균형 히스토그램을 위한 상기 복수의 버킷의 각각에 대한 버킷 범위 크기를 수정하는 단계; 및
상기 복수의 버킷의 수정된 버킷 범위 크기에 따라 상기 하나 이상의 데이터 블록의 각각에 대한 각 확률 데이터 구조를 업데이트하는 단계를 더 포함하는, 방법.
13. 제12항에 있어서, 상기 복수의 버킷 중에서 상기 칼럼에 있는 데이터의 분산을 위한 재균형 이벤트를 검출하는 단계는, 하나 이상의 새로운 데이터 블록에 저장된 상기 칼럼에 대한 추가 데이터의 양이 재균형 임계값을 초과한다고 결정하는 단계를 포함하는, 방법.
14. 제12항에 있어서, 상기 복수의 버킷 중에서 상기 칼럼에 있는 데이터의 분산을 위한 재균형 이벤트를 검출하는 단계는, 상기 칼럼에 대한 데이터의 추가 양의 분산을 분석하여, 상기 데이터의 추가 양의 분산과 상기 칼럼에 있는 데이터의 분산 간의 변화가 분산 임계값을 초과한다고 결정하는 단계를 포함하는, 방법.
15. 제12항에 있어서, 상기 각 확률 데이터 구조를 업데이트하는 단계에 후속하여, 상기 질의에 서비스하도록 상기 하나 이상의 데이터 블록 중 하나의 데이터 블록으로부터 판독된 데이터가, 상기 하나의 데이터 블록에 대한 확률 데이터 구조에 의해 표시되는 바와 같은 데이터 값들의 범위 내의 데이터 값을 포함하지 않는다는 표시를 수신하는 단계; 및
상기 하나의 데이터 블록에 대한 확률 데이터 구조를 업데이트하여, 상기 데이터 값이 상기 데이터 값들의 범위에 포함되어 있는 표시를 제거하는 단계를 더 포함하는, 방법.
16. 제6항에 있어서, 상기 칼럼에 대한 하나 이상의 데이터 블록에 저장된 데이터는 미정렬되는, 방법.
17. 제6항에 있어서, 상기 하나 이상의 연산 디바이스는 분산형 데이터 웨어하우스 시스템을 구현하는 연산 디바이스들의 더욱 큰 집합의 일부이고, 상기 하나 이상의 연산 디바이스는 데이터베이스 웨어하우스 클러스터의 하나 이상의 연산 노드이고, 상기 연산 디바이스들의 더욱 큰 집합의 다른 연산 디바이스는 상기 데이터베이스 웨어하우스 클러스터의 리더 노드이고,
상기 방법은, 상기 리더 노드에 의해, 상기 칼럼형 데이터베이스 테이블의 칼럼에 대한 하나 이상의 질의를 상기 하나 이상의 연산 노드에 송신하는 단계를 더 포함하는, 방법.
18. 프로그램 명령어를 저장하는 비일시적 컴퓨터 판독 가능 저장 매체로서,
상기 프로그램 명령어는, 하나 이상의 연산 디바이스에 의한 실행 시,
칼럼형 데이터베이스 테이블의 칼럼의 히스토그램에 대한 복수의 버킷의 각각에 대한 버킷 범위 크기를 결정하는 단계로서, 상기 히스토그램은 상기 복수의 버킷의 상기 칼럼의 데이터의 분산을 나타내고, 상기 복수의 버킷의 각 버킷은 결정된 버킷 범위 크기에 따른 값들의 범위 내의 상기 칼럼의 데이터의 하나 이상의 데이터 값의 존재를 나타내는 것인, 상기 결정하는 단계;
상기 칼럼형 데이터베이스 테이블의 칼럼에 대한 데이터를 저장하는 하나 이상의 데이터 블록의 각각에 대하여 비트맵을 생장하는 단계로서, 상기 비트맵의 각 비트는 상기 복수의 버킷의 서로 다른 하나의 버킷을 나타내고, 상기 비트맵의 설정된 비트들은, 상기 히스토그램의 상기 복수의 버킷 중 상기 데이터 블록에 저장된 데이터 값이 존재하는 특정한 버킷들을 나타내는 것인, 상기 생성하는 단계;
선택 데이터에 대한 칼럼에 관한 질의의 표시를 수신하는 단계;
상기 질의의 표시를 수신함에 응답하여,
상기 칼럼에 대한 데이터를 저장하는 상기 하나 이상의 데이터 블록의 각각마다 상기 비트맵을 검사하여, 상기 하나 이상의 데이터 블록 중에서 상기 선택 데이터에 대한 질의에 서비스하도록 판독할 필요가 없는 특정한 데이터 블록들을 결정하는 단계; 및
상기 하나 이상의 데이터 블록 중 판독할 필요가 없는 상기 특정한 데이터 블록들을 제외하고서 상기 칼럼에 대한 데이터를 저장하는 상기 하나 이상의 데이터 블록을 판독하는 단계를 구현하는, 비일시적 컴퓨터 판독 가능 저장 매체.
19. 제18항에 있어서, 상기 칼럼형 데이터베이스 테이블의 칼럼에 대한 히스토그램은 높이-균형 히스토그램인, 비일시적 컴퓨터 판독 가능 저장 매체.
20. 제19항에 있어서, 상기 프로그램 명령어는, 상기 하나 이상의 연산 디바이스에 의한 실행 시,
상기 복수의 버킷 간의 상기 칼럼에 있는 데이터의 분산을 위해 재균형 이벤트를 검출하는 단계;
상기 재균형 이벤트의 검출에 응답하여,
상기 칼럼의 높이-균형 히스토그램에 대한 상기 복수의 버킷의 각각에 대한 버킷 범위 크기를 수정하는 단계; 및
상기 복수의 버킷의 수정된 버킷 범위 크기에 따라 상기 하나 이상의 데이터 블록의 각각에 대한 각 비트맵을 업데이트하는 단계를 구현하는, 비일시적 컴퓨터 판독 가능 저장 매체.
21. 제20항에 있어서, 상기 복수의 버킷 간의 상기 칼럼에 있는 데이터의 분산을 위해 재균형 이벤트를 검출할 때, 상기 프로그램 명령어는, 상기 하나 이상의 연산 디바이스에 의한 실행 시, 상기 복수의 버킷의 각각에 대한 버킷 범위 크기가 결정된 후의 시간의 양이 재균형 시간 임계값을 초과한다고 결정하는 단계를 구현하는, 비일시적 컴퓨터 판독 가능 저장 매체.
22. 제20항에 있어서, 상기 복수의 버킷의 수정된 버킷 범위 크기에 따라 상기 하나 이상의 데이터 블록의 각각에 대한 각 비트맵을 업데이트할 때, 상기 프로그램 명령어는, 상기 하나 이상의 연산 디바이스에 의한 실행 시,
상기 복수의 버킷 중에서 상기 수정된 버킷 범위 크기 내에서 데이터 블록에 저장된 데이터 값이 존재하는 버킷을 나타내는 상기 비트맵의 하나 이상의 미설정된 비트들을 식별하는 단계; 및
상기 비트맵의 하나 이상의 미설정된 비트들을 설정하는 단계를 더 구현하는, 비일시적 컴퓨터 판독 가능 저장 매체.
23. 제20항에 있어서, 각 비트맵은 상기 하나 이상의 데이터 블록에 관한 정보를 저장하는 현재 블록 메타데이터 구조의 각 엔트리에 저장되고,
상기 복수의 버킷의 수정된 버킷 범위 크기에 따라 상기 하나 이상의 데이터 블록의 각각에 대한 각 비트맵을 업데이트할 때, 상기 프로그램 명령어는, 상기 하나 이상의 연산 디바이스에 의한 실행 시,
상기 현재 블록 메타데이터 구조의 각 엔트리들로 채워진 새로운 블록 메타데이터 구조를 생성하는 단계; 및
상기 복수의 버킷의 수정된 버킷 범위 크기에 따라 상기 하나 이상의 데이터 블록의 각각에 대하여 상기 새로운 블록 메타데이터 구조의 각 엔트리의 각 비트맵을 수정하는 단계를 구현하고,
상기 새로운 블록 메타데이터 구조를 생성하는 단계 및 상기 새로운 블록 메타데이터 구조의 각 엔트리의 각 비트맵을 수정하는 단계를 완료할 때까지, 상기 질의의 표시에 응답하여 상기 비트맵의 검사 수행시 상기 현재 블록 메타데이터 구조에 저장된 비트맵을 이용하는, 비일시적 컴퓨터 판독 가능 저장 매체.
맺는말
다양한 실시예들은, 컴퓨터 액세스 가능 매체 상에 대하여 전술한 설명에 따라 구현된 명령어 및/또는 데이터를 수신, 송신, 또는 저장하는 것을 더 포함할 수 있다. 일반적으로, 컴퓨터 액세스 가능 매체는, 자기 매체나 광학 매체 등의 저장 매체 또는 메모리 매체, 예컨대, 디스크 또는 DVD/CD-ROM, RAM(예를 들어, SDRAM, DDR, RDRAM, SRAM 등), ROM 등의 비휘발성 매체, 및, 송신 매체, 또는 네트워크 및/또는 무선 링크 등의 통신 매체를 통해 전달되는 전기 신호, 전자기 신호, 또는 디지털 신호 등의 신호를 포함할 수 있다.
본 명세서에서 설명하고 도면에서 예시한 바와 같은 다양한 방법들은 방법들의 실시예들을 나타낸다. 이 방법들은 소프트웨어, 하드웨어, 또는 이들의 조합으로 구현될 수 있다. 방법의 순서는 변경될 수 있으며, 다양한 요소들을 추가, 재순서화, 조합, 생략, 수정 등을 할 수 있다.
본 개시 내용의 이점을 갖는 통상의 기술자에게는 자명하듯이 다양한 수정과 변경을 행할 수 있다. 본 발명은 이러한 모든 수정과 변경을 포함하려는 것이며, 이에 따라, 전술한 설명은 제한적인 의미보다는 예시적인 의미로 간주해야 한다.

Claims (15)

  1. 시스템으로서,
    복수의 노드를 포함하는 하나 이상의 하드웨어 연산 디바이스를 포함하고,
    상기 복수의 노드의 각각은,
    데이터베이스 테이블의 복수의 데이터 블록에 저장되어 있는 데이터의 분포를 나타내는 복수의 데이터 범위(data ranges)를 위한 저장 장치(storage); 및
    상기 복수의 데이터 블록 각각에 대한 각각의 확률 데이터 구조들을 위한 저장 장치 -상기 복수의 데이터 블록의 각각의 데이터 블록에 대한 상기 각각의 확률 데이터 구조는 상기 복수의 데이터 범위 중 어느 데이터 범위들이 상기 각각의 데이터 블록에 저장되지 않은 데이터 값들에 대응하는지를 표시함-
    를 포함하고,
    상기 복수의 노드 중 적어도 하나의 노드는,
    상기 복수의 데이터 블록 내의 데이터의 분포를 위한 재균형 이벤트(rebalancing event)를 검출하고,
    상기 재균형 이벤트를 검출하는 것에 응답하여,
    상기 재균형 이벤트에 대응하는 상기 데이터의 분포에 대한 변화에 기초하여, 상기 복수의 데이터 범위 중 하나 이상의 데이터 범위를 수정하고,
    상기 복수의 데이터 블록 각각에 대한 각각의 확률 데이터 구조들을 업데이트 -상기 업데이트는 상기 복수의 데이터 범위 중 수정된 상기 하나 이상의 데이터 범위에 따름- 하도록 구성되는, 시스템.
  2. 제1항에 있어서,
    상기 하나 이상의 데이터 범위를 수정하기 위해, 상기 적어도 하나의 노드는 상기 데이터의 분포에 대한 변화를 평가하여, 상기 데이터 범위에 대한 밸런싱 스킴(balancing scheme)에 따라 상기 복수의 데이터 범위에 대하여 하나 이상의 조정을 결정하도록 구성되는, 시스템.
  3. 제2항에 있어서, 상기 복수의 데이터 범위는 상기 데이터의 히스토그램의 복수의 버킷에 대응하고, 상기 밸런싱 스킴은 상기 데이터가 상기 복수의 버킷 사이에서 균일하게 분포되도록 버킷 범위 크기들을 결정하는, 시스템.
  4. 제1항에 있어서,
    상기 재균형 이벤트는, 상기 데이터베이스 테이블에 저장하기 위한 추가 데이터의 임계량의 수신, 상기 복수의 확률 데이터 구조의 이전 업데이트 이후의 시간의 임계량의 경과(passage), 상기 데이터의 현재 분포의 변화의 임계량의 분석 결정, 또는 상기 데이터베이스 테이블에 저장하기 위해 수신된 추가 데이터의 분포의 변화의 임계량의 분석 결정 중 적어도 하나를 포함하는, 시스템.
  5. 제1항에 있어서,
    상기 데이터는 상기 데이터베이스 테이블 내의 칼럼이고, 상기 데이터베이스 테이블은 칼럼형(columnar) 데이터베이스 테이블이고, 상기 복수의 노드는 분산형 데이터 웨어하우스 클러스터(distributed data warehouse cluster) 내에 포함되며, 상기 복수의 노드는 리더 노드(leader node) 및 연산 노드(compute node)를 포함하는, 시스템.
  6. 제1항에 있어서, 상기 각각의 확률 데이터 구조들을 업데이트하기 위해, 상기 적어도 하나의 저장 노드는,
    상이한 확률 데이터 구조로 교체하기 위한, 상기 확률 데이터 구조들 중의 적어도 하나의 확률 데이터 구조를 식별하고,
    상기 상이한 확률 데이터 구조를 생성하여, 상기 복수의 데이터 범위 중 어느 데이터 범위들이 식별된 상기 확률 데이터 구조에 대한 각각의 데이터 블록 내에 저장되지 않은 데이터 값들에 대응하는지 표시하도록 구성되는, 시스템.
  7. 제1항에 있어서, 상기 복수의 노드는 질의 엔진을 더 포함하고,
    상기 질의 엔진은,
    상기 데이터베이스 테이블에 관한 질의의 표시를 수신하고,
    상기 질의의 표시를 수신하는 것에 응답하여, 상기 복수의 데이터 블록에 대한 상기 확률 데이터 구조들 중의 하나 이상의 확률 데이터 구조를 검사하여 상기 복수의 데이터 블록 중 어느 데이터 블록들이 상기 질의에 서비스하기 위한 판독을 하지 않는지를 결정하도록 구성되는, 시스템.
  8. 방법으로서,
    하나 이상의 연산 디바이스에 의해,
    데이터베이스 테이블 내의 데이터의 분포에 관한 재균형 이벤트를 검출하는 단계 - 상기 데이터는 복수의 데이터 블록에 저장되고, 복수의 데이터 범위가 상기 데이터의 분포를 나타내며, 복수의 확률 데이터 구조 각각은 상기 복수의 데이터 블록 각각에 대응하고, 상기 복수의 확률 데이터 구조의 주어진 확률 데이터 구조는 상기 복수의 데이터 블록의 주어진 데이터 블록에 대응하고, 상기 주어진 확률 데이터 구조가 상기 복수의 데이터 범위 중 어느 데이터 범위들이 상기 주어진 데이터 블록에 저장되지 않은 데이터 값들에 대응하는지 표시함-;
    상기 재균형 이벤트를 검출하는 단계에 응답하여,
    상기 재균형 이벤트에 대응하는 상기 데이터의 분포에 대한 변화에 기초하여, 상기 복수의 데이터 범위 중 하나 이상의 데이터 범위를 수정하는 단계; 및
    상기 복수의 데이터 범위 중 수정된 상기 하나 이상의 데이터 범위에 따라 상기 복수의 확률 데이터 구조를 업데이트하는 단계
    를 수행하는 것을 포함하는 방법.
  9. 제8항에 있어서, 상기 하나 이상의 데이터 범위를 수정하는 단계는, 상기 데이터의 분포에 대한 변화를 평가하여, 상기 데이터 범위들에 대한 밸런싱 스킴에 따라 상기 복수의 데이터 범위에 대하여 하나 이상의 조정을 결정하는 것을 포함하는, 방법.
  10. 제9항에 있어서, 상기 복수의 데이터 범위는 상기 데이터의 히스토그램의 복수의 버킷에 대응하고, 상기 밸런싱 스킴은 상기 데이터가 상기 복수의 버킷 사이에 균일하게 분포되도록 버킷 범위 크기들을 결정하는, 방법.
  11. 제8항에 있어서,
    상기 재균형 이벤트는, 상기 데이터베이스 테이블에 저장하기 위한 추가 데이터의 임계량의 수신, 상기 복수의 확률 데이터 구조의 이전 업데이트 이후의 시간의 임계량의 경과, 상기 데이터의 현재 분포의 변화의 임계량의 분석 결정, 또는 상기 데이터베이스 테이블에 저장하기 위해 수신된 추가 데이터의 분포의 변화의 임계량의 분석 결정 중 적어도 하나를 포함하는, 방법.
  12. 제8항에 있어서,
    상기 데이터는 상기 데이터베이스 테이블 내의 칼럼이고, 상기 데이터베이스 테이블은 칼럼형 데이터베이스 테이블이고, 상기 복수의 노드는 분산형 데이터 웨어하우스 클러스터 내에 포함되며, 상기 복수의 노드는 리더 노드 및 연산 노드를 포함하는, 방법.
  13. 제8항에 있어서,
    상기 복수의 확률 데이터 구조를 업데이트하는 단계는,
    상이한 확률 데이터 구조로 교체하기 위한, 상기 확률 데이터 구조들 중의 적어도 하나의 확률 데이터 구조를 식별하는 단계; 및
    상기 상이한 확률 데이터 구조를 생성하여, 상기 복수의 데이터 범위 중 어느 데이터 범위들이 식별된 상기 확률 데이터 구조에 대한 각각의 데이터 블록 내에 저장되지 않은 데이터 값들에 대응하는지 표시하는 단계
    를 포함하는, 방법.
  14. 제8항에 있어서,
    상기 데이터베이스 테이블에 관한 질의의 표시를 수신하는 단계; 및
    상기 질의의 표시를 수신하는 것에 응답하여, 상기 복수의 데이터 블록에 대한 상기 확률 데이터 구조들 중 하나 이상의 확률 데이터 구조를 검사하여 상기 복수의 데이터 블록 중 어느 데이터 블록들이 상기 질의에 서비스하기 위한 판독을 하지 않는지를 결정하는 단계
    를 더 포함하는 방법.
  15. 프로그램 명령어들을 저장하는 비일시적 컴퓨터 판독 가능 저장 매체로서,
    상기 프로그램 명령어들은, 하나 이상의 연산 디바이스에 의해 실행될 때,
    데이터베이스 테이블 내의 데이터의 분포에 관한 재균형 이벤트를 검출하는 단계 -상기 데이터는 복수의 데이터 블록에 저장되고, 복수의 데이터 범위가 상기 데이터의 분포를 나타내며, 복수의 확률 데이터 구조 각각은 상기 복수의 데이터 블록 각각에 대응하고, 상기 복수의 확률 데이터 구조의 주어진 확률 데이터 구조가 상기 복수의 데이터 블록 중 주어진 데이터 블록에 대응하며, 상기 주어진 확률 데이터 구조는, 상기 복수의 데이터 범위 중 어느 데이터 범위들이 상기 주어진 데이터 블록 내에 저장되지 않은 데이터 값들에 대응하는지 표시함-;
    상기 재균형 이벤트를 검출하는 단계에 응답하여,
    상기 재균형 이벤트에 대응하는 상기 데이터의 분포에 대한 변화에 기초하여, 상기 복수의 데이터 범위 중 하나 이상의 데이터 범위를 수정하는 단계; 및
    상기 복수의 데이터 범위 중 수정된 상기 하나 이상의 데이터 범위에 따라 상기 복수의 확률 데이터 구조를 업데이트하는 단계
    를 구현하는, 비일시적 컴퓨터 판독 가능 저장 매체.
KR1020177002434A 2013-01-15 2014-01-15 칼럼형 데이터베이스의 히스토그램을 이용한 효율적인 질의 처리 KR101792582B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/742,287 2013-01-15
US13/742,287 US8949224B2 (en) 2013-01-15 2013-01-15 Efficient query processing using histograms in a columnar database
PCT/US2014/011686 WO2014113474A1 (en) 2013-01-15 2014-01-15 Efficient query processing using histograms in a columnar database

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020157021948A Division KR101702321B1 (ko) 2013-01-15 2014-01-15 칼럼형 데이터베이스의 히스토그램을 이용한 효율적인 질의 처리

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020177030855A Division KR101903926B1 (ko) 2013-01-15 2014-01-15 칼럼형 데이터베이스의 히스토그램을 이용한 효율적인 질의 처리

Publications (2)

Publication Number Publication Date
KR20170015538A KR20170015538A (ko) 2017-02-08
KR101792582B1 true KR101792582B1 (ko) 2017-11-02

Family

ID=51165980

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020177002434A KR101792582B1 (ko) 2013-01-15 2014-01-15 칼럼형 데이터베이스의 히스토그램을 이용한 효율적인 질의 처리
KR1020157021948A KR101702321B1 (ko) 2013-01-15 2014-01-15 칼럼형 데이터베이스의 히스토그램을 이용한 효율적인 질의 처리
KR1020177030855A KR101903926B1 (ko) 2013-01-15 2014-01-15 칼럼형 데이터베이스의 히스토그램을 이용한 효율적인 질의 처리

Family Applications After (2)

Application Number Title Priority Date Filing Date
KR1020157021948A KR101702321B1 (ko) 2013-01-15 2014-01-15 칼럼형 데이터베이스의 히스토그램을 이용한 효율적인 질의 처리
KR1020177030855A KR101903926B1 (ko) 2013-01-15 2014-01-15 칼럼형 데이터베이스의 히스토그램을 이용한 효율적인 질의 처리

Country Status (8)

Country Link
US (4) US8949224B2 (ko)
EP (2) EP3299972B1 (ko)
JP (2) JP6378207B2 (ko)
KR (3) KR101792582B1 (ko)
CN (2) CN105074724B (ko)
AU (2) AU2014207599B2 (ko)
CA (1) CA2898054C (ko)
WO (1) WO2014113474A1 (ko)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8949224B2 (en) 2013-01-15 2015-02-03 Amazon Technologies, Inc. Efficient query processing using histograms in a columnar database
US9471629B2 (en) * 2013-04-19 2016-10-18 Software AG USA Inc. Method and apparatus for visual dynamic discovery and analytics exploration application on static and/or real-time data using an a priori model-free process
US10489266B2 (en) * 2013-12-20 2019-11-26 Micro Focus Llc Generating a visualization of a metric at one or multiple levels of execution of a database workload
US10909117B2 (en) 2013-12-20 2021-02-02 Micro Focus Llc Multiple measurements aggregated at multiple levels of execution of a workload
US10140353B2 (en) 2013-12-23 2018-11-27 Teredata, US, Inc. Techniques for query processing using high dimension histograms
US10282371B1 (en) * 2014-12-02 2019-05-07 Western Digital Technologies, Inc. Object storage device with probabilistic data structure
US10133760B2 (en) * 2015-01-12 2018-11-20 International Business Machines Corporation Hardware for a bitmap data structure for efficient storage of heterogeneous lists
US10970285B2 (en) * 2015-02-26 2021-04-06 Red Hat, Inc. Grid topology change in a distributed data grid when iterating on the contents of the data grid
WO2016175861A1 (en) 2015-04-30 2016-11-03 Hewlett Packard Enterprise Development Lp Consolidated metadata in databases
WO2016195728A1 (en) * 2015-05-29 2016-12-08 Hewlett Packard Enterprise Development Lp Generating test data based on histogram statistics
US10191944B2 (en) * 2015-10-23 2019-01-29 Oracle International Corporation Columnar data arrangement for semi-structured data
US10152429B2 (en) * 2015-10-27 2018-12-11 Medallia, Inc. Predictive memory management
US9607062B1 (en) * 2015-11-19 2017-03-28 International Business Machines Corporation Data locality in data integration applications
US10719554B1 (en) 2016-09-19 2020-07-21 Amazon Technologies, Inc. Selective maintenance of a spatial index
US10324911B1 (en) * 2016-09-30 2019-06-18 Virtustream Ip Holding Company Llc Storage system with bucket contents rebalancer providing adaptive partitioning for database buckets
US10242055B2 (en) * 2016-12-07 2019-03-26 Medallia, Inc. Dual filter histogram optimization
US10268593B1 (en) 2016-12-20 2019-04-23 Amazon Technologies, Inc. Block store managamement using a virtual computing system service
US10921991B1 (en) * 2016-12-20 2021-02-16 Amazon Technologies, Inc. Rule invalidation for a block store management system
US10185507B1 (en) * 2016-12-20 2019-01-22 Amazon Technologies, Inc. Stateless block store manager volume reconstruction
US11507283B1 (en) * 2016-12-20 2022-11-22 Amazon Technologies, Inc. Enabling host computer systems to access logical volumes by dynamic updates to data structure rules
US10809920B1 (en) 2016-12-20 2020-10-20 Amazon Technologies, Inc. Block store management for remote storage systems
US11030177B1 (en) * 2017-05-04 2021-06-08 Amazon Technologies, Inc. Selectively scanning portions of a multidimensional index for processing queries
US11138076B2 (en) 2017-06-30 2021-10-05 Redis Ltd. Methods, systems, and media for controlling append-only file rewrites
US10567992B2 (en) 2018-01-25 2020-02-18 Hewlett Packard Enterprise Development Lp Network device KPI monitors based on bitmaps
US11144570B2 (en) 2018-01-26 2021-10-12 Vmware, Inc. Data ingestion by distributed-computing systems
US11016972B2 (en) 2018-01-26 2021-05-25 Vmware, Inc. Splitting a time-range query into multiple sub-queries for serial execution
US11016971B2 (en) 2018-01-26 2021-05-25 Vmware, Inc. Splitting a time-range query into multiple sub-queries for parallel execution
US10860576B2 (en) 2018-01-26 2020-12-08 Vmware, Inc. Splitting a query into native query operations and post-processing operations
US10812332B2 (en) 2018-02-28 2020-10-20 Vmware Inc. Impartial buffering in stream processing
US11178213B2 (en) 2018-02-28 2021-11-16 Vmware, Inc. Automated configuration based deployment of stream processing pipeline
US10824623B2 (en) 2018-02-28 2020-11-03 Vmware, Inc. Efficient time-range queries on databases in distributed computing systems
US11216706B2 (en) 2018-03-15 2022-01-04 Datorama Technologies Ltd. System and method for visually presenting interesting plots of tabular data
GB201816808D0 (en) * 2018-10-16 2018-11-28 Palantir Technologies Inc Data storage method and system
US10628442B1 (en) * 2018-11-09 2020-04-21 Hewlett Packard Enterprise Development Lp Histograms based on varying data distribution
CN109933592B (zh) * 2019-03-22 2021-06-01 杭州复杂美科技有限公司 数据存储方法、数据回滚方法、设备和存储介质
US11693889B2 (en) * 2019-03-28 2023-07-04 Hewlett Packard Enterprise Development Lp Effective materialization strategy utilizing statistical set-theoretic approach for generation of multi-interval multi-column histogram and histograms in general
CN110647566B (zh) * 2019-09-03 2023-04-14 平安科技(深圳)有限公司 模板表格的智能导入方法、装置及计算机可读存储介质
CN111177433B (zh) * 2019-12-31 2021-07-20 北京百度网讯科技有限公司 用于并行处理信息的方法和装置
US20230221864A1 (en) * 2022-01-10 2023-07-13 Vmware, Inc. Efficient inline block-level deduplication using a bloom filter and a small in-memory deduplication hash table
CN114860848A (zh) * 2022-07-06 2022-08-05 北京奥星贝斯科技有限公司 分布式数据库系统的选主方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5761652A (en) 1996-03-20 1998-06-02 International Business Machines Corporation Constructing balanced multidimensional range-based bitmap indices
US6278989B1 (en) 1998-08-25 2001-08-21 Microsoft Corporation Histogram construction using adaptive random sampling with cross-validation for database systems

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6226629B1 (en) * 1997-02-28 2001-05-01 Compaq Computer Corporation Method and apparatus determining and using hash functions and hash values
US6460045B1 (en) 1999-03-15 2002-10-01 Microsoft Corporation Self-tuning histogram and database modeling
US6529872B1 (en) * 2000-04-18 2003-03-04 Matsushita Electric Industrial Co., Ltd. Method for noise adaptation in automatic speech recognition using transformed matrices
KR100398142B1 (ko) * 2000-08-29 2003-09-19 한국과학기술원 대용량 데이터베이스에서의 고속에 의한 다해상도의 최적탐색방법
US6691099B1 (en) 2001-05-31 2004-02-10 Oracle International Corporation Method and system for histogram determination in a database
JP2003256222A (ja) 2002-03-04 2003-09-10 Matsushita Electric Ind Co Ltd 分散処理システム、ジョブ分散処理方法およびプログラム
US6732985B1 (en) * 2003-02-20 2004-05-11 Douglas Chet Cantrell Beach utility pole
US7424498B1 (en) * 2003-06-30 2008-09-09 Data Domain, Inc. Probabilistic summary data structure based encoding for garbage collection
US7299248B2 (en) 2004-06-29 2007-11-20 International Business Machines Corporation Method, system, program for determining frequency of updating database histograms
US7386538B2 (en) * 2005-03-24 2008-06-10 International Business Machines Corporation Building database statistics across a join network using skew values
GB0513045D0 (en) 2005-06-27 2005-08-03 Vidus Ltd Resource scheduling method and system
US7512574B2 (en) * 2005-09-30 2009-03-31 International Business Machines Corporation Consistent histogram maintenance using query feedback
US7707005B2 (en) * 2006-09-02 2010-04-27 Microsoft Corporation Generating histograms of population data by scaling from sample data
US7991763B2 (en) * 2007-04-13 2011-08-02 International Business Machines Corporation Database query optimization utilizing remote statistics collection
US20080288444A1 (en) * 2007-05-16 2008-11-20 John Francis Edwards Evaluating Multi-Table Join Selectivity in a Computer Database
US8234282B2 (en) * 2007-05-21 2012-07-31 Amazon Technologies, Inc. Managing status of search index generation
US7512754B1 (en) * 2008-01-31 2009-03-31 International Business Machines Corporation System and method for optimizing storage utilization
JP2009245424A (ja) * 2008-03-28 2009-10-22 Mitsubishi Electric Research Laboratories Inc コンピュータにより実施される、確率論的クエリー及び確率論的クエリーマッチング関数に対して順位付けした結果セットをレンダリングする方法
US8392406B1 (en) * 2008-05-30 2013-03-05 Oracle International Corporation Determining a height-balanced histogram incrementally
US8290972B1 (en) * 2009-04-29 2012-10-16 Netapp, Inc. System and method for storing and accessing data using a plurality of probabilistic data structures
US8832142B2 (en) * 2010-08-30 2014-09-09 Oracle International Corporation Query and exadata support for hybrid columnar compressed data
US8145669B2 (en) * 2009-12-11 2012-03-27 At&T Intellectual Property I, L.P. Methods and apparatus for representing probabilistic data using a probabilistic histogram
KR101117709B1 (ko) * 2009-12-15 2012-02-24 한국과학기술원 공간 분할 트리의 최소 데이터-불균등 커버를 이용한 다차원 히스토그램 방법 및 이를 실행하기 위한 프로그램이 저장된 기록매체
CN101826098B (zh) * 2010-02-03 2013-05-08 中国科学院地理科学与资源研究所 一种基于ab直方图的空间查询选择率估计方法
US9239996B2 (en) 2010-08-24 2016-01-19 Solano Labs, Inc. Method and apparatus for clearing cloud compute demand
US8458547B2 (en) * 2010-10-26 2013-06-04 Hewlett-Packard Development Company, L.P. Method for constructing a histogram
US8229917B1 (en) * 2011-02-24 2012-07-24 International Business Machines Corporation Database query optimization using clustering data mining
US20120246158A1 (en) * 2011-03-25 2012-09-27 Microsoft Corporation Co-range partition for query plan optimization and data-parallel programming model
US20120254199A1 (en) * 2011-03-31 2012-10-04 Harumi Kuno Merge optimization system
CN102609439A (zh) * 2011-12-23 2012-07-25 浙江大学 一种高维环境中模糊数据的概率窗口查询方法
EP2901324B1 (en) * 2012-09-28 2019-11-06 Oracle International Corporation Adaptive query optimization
US8949224B2 (en) 2013-01-15 2015-02-03 Amazon Technologies, Inc. Efficient query processing using histograms in a columnar database
CN103984695B (zh) * 2014-03-21 2017-06-20 华为技术有限公司 一种数据库中的数据查询方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5761652A (en) 1996-03-20 1998-06-02 International Business Machines Corporation Constructing balanced multidimensional range-based bitmap indices
US6278989B1 (en) 1998-08-25 2001-08-21 Microsoft Corporation Histogram construction using adaptive random sampling with cross-validation for database systems

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Leverenz et al. Oracle Concepts Release 8.0 2007.12

Also Published As

Publication number Publication date
US9268838B2 (en) 2016-02-23
US9767174B2 (en) 2017-09-19
US20150149402A1 (en) 2015-05-28
US8949224B2 (en) 2015-02-03
CA2898054C (en) 2019-04-02
JP2017146994A (ja) 2017-08-24
CA2898054A1 (en) 2014-07-24
EP2946333A4 (en) 2016-09-07
CN107766568A (zh) 2018-03-06
JP6393805B2 (ja) 2018-09-19
US20180025065A1 (en) 2018-01-25
EP2946333B1 (en) 2017-12-06
US20140201129A1 (en) 2014-07-17
US10372723B2 (en) 2019-08-06
AU2017202873B2 (en) 2019-04-11
US20160171064A1 (en) 2016-06-16
JP2016508277A (ja) 2016-03-17
KR20170015538A (ko) 2017-02-08
KR20150107829A (ko) 2015-09-23
JP6378207B2 (ja) 2018-08-22
CN105074724A (zh) 2015-11-18
EP3299972A1 (en) 2018-03-28
CN105074724B (zh) 2017-12-05
KR101702321B1 (ko) 2017-02-06
EP3299972B1 (en) 2019-08-21
AU2014207599A1 (en) 2015-08-13
AU2017202873A1 (en) 2017-05-18
KR20170121343A (ko) 2017-11-01
KR101903926B1 (ko) 2018-10-02
EP2946333A1 (en) 2015-11-25
AU2014207599B2 (en) 2017-02-02
CN107766568B (zh) 2021-11-26
WO2014113474A1 (en) 2014-07-24

Similar Documents

Publication Publication Date Title
KR101792582B1 (ko) 칼럼형 데이터베이스의 히스토그램을 이용한 효율적인 질의 처리
US9367574B2 (en) Efficient query processing in columnar databases using bloom filters
US20220156289A1 (en) Generating a multi-column index for relational databases by interleaving data bits for selectivity
US11494339B2 (en) Multi-level compression for storing data in a data store
US10061834B1 (en) Incremental out-of-place updates for datasets in data stores
US10114846B1 (en) Balanced distribution of sort order values for a multi-column sort order of a relational database
US11829364B2 (en) Making decisions for placing data in a multi-tenant cache

Legal Events

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