KR101806055B1 - 선택도에 대해 데이터 비트를 인터리빙함으로써 관계형 데이터베이스에 대한 멀티-칼럼 인덱스의 발생 - Google Patents

선택도에 대해 데이터 비트를 인터리빙함으로써 관계형 데이터베이스에 대한 멀티-칼럼 인덱스의 발생 Download PDF

Info

Publication number
KR101806055B1
KR101806055B1 KR1020167004339A KR20167004339A KR101806055B1 KR 101806055 B1 KR101806055 B1 KR 101806055B1 KR 1020167004339 A KR1020167004339 A KR 1020167004339A KR 20167004339 A KR20167004339 A KR 20167004339A KR 101806055 B1 KR101806055 B1 KR 101806055B1
Authority
KR
South Korea
Prior art keywords
data
column
relational database
columns
database table
Prior art date
Application number
KR1020167004339A
Other languages
English (en)
Other versions
KR20160033761A (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 KR20160033761A publication Critical patent/KR20160033761A/ko
Application granted granted Critical
Publication of KR101806055B1 publication Critical patent/KR101806055B1/ko

Links

Images

Classifications

    • G06F17/30575
    • 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
    • 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
    • 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
    • G06F17/30321
    • G06F17/30592
    • G06F17/30595

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

관계형 데이터베이스 시스템에서 데이터의 효율적 프로세싱을 위해 선택도에 대해 데이터 비트의 인터리빙에 기반하여 멀티-칼럼 인덱스가 발생된다. 관계형 데이터베이스 테이블에 대한 멀티-칼럼 인덱스에 포함을 위해 2개 이상의 칼럼이 식별될 수 있다. 식별된 칼럼으로부터 선택도에 대해 데이터 비트의 인터리빙에, 적어도 부분적으로, 기반하여, 관계형 데이터베이스 테이블 내 각각의 엔트리에 대한 각각의 인덱스 값을 제공하는 멀티-칼럼 인덱스가 관계형 데이터베이스 테이블에 대해 발생된다. 관계형 데이터베이스 테이블의 엔트리는 그 후 멀티-칼럼 인덱스의 인덱스 값에 따라 저장될 수 있다.

Description

선택도에 대해 데이터 비트를 인터리빙함으로써 관계형 데이터베이스에 대한 멀티-칼럼 인덱스의 발생{GENERATING A MULTI-COLUMN INDEX FOR RELATIONAL DATABASES BY INTERLEAVING DATA BITS FOR SELECTIVITY}
조직이 정보를 생성, 추적 및 보유하기 위한 기술적 용량이 계속 커짐에 따라, 밀려오는 정보를 관리 및 저장하기 위한 다양한 다른 기술이 개발되어 왔다. 데이터베이스 시스템은, 예를 들어, 저장된 정보를 관리하도록 많은 상이한 전문적 또는 맞춤형 구성의 하드웨어 및 소프트웨어를 클라이언트에 제공한다. 그렇지만, 조직이 저장 및 관리해야 하는 증가하는 양의 데이터는 보통은 대응하여, 데이터베이스 시스템과 같은, 데이터 저장 및 관리 기술의 복잡도와 사이즈 양자를 증가시켜, 순차로 정보를 유지하고 있는 비용을 상승시킨다. 새로운 기술은 데이터를 유지하고 있는 복잡도 및 저장 요건 양자를 감축하는 한편 동시에 데이터 저장 및 데이터 관리의 효율을 개선하려고 더욱더 추구한다.
도 1은, 일부 실시예에 따라, 선택도에 대해 데이터 비트를 인터리빙하는 관계형 데이터베이스 시스템(relational database system)에 대한 멀티-칼럼 인덱싱의 데이터흐름 블록 선도의 예시도;
도 2는, 일부 실시예에 따라, 일례의 분산형 데이터베이스 웨어하우스 서비스(distributed database warehouse service)를 예시하는 블록 선도;
도 3은, 일부 실시예에 따라, 일례의 분산형 데이터 웨어하우스 클러스터를 예시하는 블록 선도;
도 4는, 일부 실시예에 따라, 일례의 계산 노드를 예시하는 블록 선도;
도 5는, 일부 실시예에 따라, 선택도에 대해 데이터 비트를 인터리빙하는 것에 기반하는 멀티-칼럼 인덱스에 따라 질의 발생 및 프로세싱을 구현하는 일례의 데이터 액세스 모듈을 예시하는 블록 선도;
도 6은, 일부 실시예에 따라, 일례의 멀티-칼럼 인덱스 키 발생기를 예시하는 블록 선도;
도 7은, 일부 실시예에 따라, 선택도에 대해 데이터 비트를 인터리빙하는 것에 기반하여 관계형 데이터베이스 테이블에 대한 멀티-칼럼 인덱스를 발생시키는 방법을 예시하는 하이-레벨 순서도;
도 8은, 일부 실시예에 따라, 선택도에 따라 데이터 비트를 인터리빙하는 것에 기반하는 멀티-칼럼 인덱스를 갖는 관계형 데이터베이스로 향하여 지시된 질의를 프로세싱하는 방법의 하이-레벨 순서도의 예시도;
도 9는, 일부 실시예에 따라, 수정된 압축 기법에 따라 재-압축된 칼럼 데이터에 기반하여 관계형 데이터베이스에 대한 멀티-칼럼 인덱스를 재발생시키는 방법의 하이-레벨 순서도의 예시도; 및
도 10은, 일부 실시예에 따라, 여기에서 설명되는 다양한 방법, 기술 및 시스템을 구현하도록 구성된 일례의 시스템의 예시도.
여기에서는 수개의 실시예 및 예시적 도면에 대하여 예로서 실시예가 설명되고 있기는 하지만, 당업자는 실시예가 설명된 실시예 또는 도면으로 한정되는 것은 아님을 인식할 것이다. 거기에서의 도면 및 상세한 설명은 개시된 특정 형태로 실시예를 한정하려는 의도가 아니라, 반대로, 본 발명은 첨부 청구범위에 의해 정의되는 바와 같은 취지 및 범위 내에 드는 모든 수정, 균등물 및 대안을 망라하는 것임을 이해하여야 한다. 여기에서 사용되는 제목은 단지 편성 목적일 뿐이고 청구범위 또는 설명의 범위를 제한하도록 사용됨을 의미하지는 않는다. 본 출원의 곳곳에서 사용되는 바와 같이, 단어 "할 수 있다"는 의무적 의미(즉, 필수를 의미)보다는 허용적 의미(즉, 잠재성을 가짐을 의미)로 사용된다. 유사하게, 단어 "포함한다" 및 그 활용형은 포함하지만 국한되지는 않음을 의미한다.
이하의 상세한 설명에서는, 청구되는 주제 사항의 철저한 이해를 제공하도록 수많은 특정 상세가 제시된다. 그렇지만, 청구되는 주제 사항이 이들 특정 상세 없이 실시될 수 있음을 당업자는 이해할 것이다. 다른 사례에 있어서, 당업자에 의해 알려져 있을 방법, 장치 또는 시스템은 청구되는 주제 사항을 모호하게 하지 않도록 상세히 설명되지는 않았다.
여기에서 다양한 요소를 설명하기 위해 용어 제1, 제2 등이 사용될 수 있기는 하지만, 이들 요소는 이들 용어에 의해 한정되어서는 아니됨을 또한 이해할 것이다. 이들 용어는 하나의 요소를 다른 하나의 요소와 구별하기 위해 사용될 뿐이다. 예를 들어, 본 발명의 범위로부터 벗어남이 없이, 제1 콘택트는 제2 콘택트라고 칭해질 수 있고, 유사하게, 제2 콘택트는 제1 콘택트라고 칭해질 수 있다. 제1 콘택트도 그리고 제2 콘택트도 콘택트이지만, 그것들은 동일한 콘택트는 아니다.
여기 본 발명의 설명에서 사용되는 용어는 특정 실시예를 설명하려는 목적을 위한 것일 뿐이고 본 발명을 한정하려는 의도는 아니다. 본 발명의 설명 및 첨부 청구범위에서 사용될 때, 단수 형태 부정관사 및 정관사는, 맥락이 명확히 달리 나타내지 않는 한, 복수 형태 역시 포함하려는 의도이다. 여기에서 사용되는 바와 같은 용어 "및/또는"은 연관된 열거된 항목 중 하나 이상의 모든 그리고 어떠한 가능한 조합이라도 지칭 및 망라함을 또한 이해할 것이다. 용어 "포함한다", "포함하는", "포함하고 있다" 및/또는 "포함하고 있는"은, 본 명세서에서 사용될 때, 서술된 특징, 정수, 단계, 동작, 요소 및/또는 컴포넌트의 존재를 특정하지만, 하나 이상의 다른 특징, 정수, 단계, 동작, 요소, 컴포넌트 및/또는 그 그룹의 존재 또는 부가를 못하게 하지는 않음을 더욱 이해할 것이다.
여기에서 사용될 때, 용어 "~면"은, 맥락에 의존하여, "~때" 또는 "~시" 또는 "~결정에 응답하여" 또는 "~검출에 응답하여"를 의미한다고 해석될 수 있다. 유사하게, 구절 "그것이 결정되면" 또는 "[서술된 조건 또는 이벤트]가 검출되면"은, 맥락에 의존하여, "결정시" 또는 "결정에 응답하여" 또는 "[서술된 조건 또는 이벤트] 검출시" 또는 "[서술된 조건 또는 이벤트] 검출에 응답하여"를 의미한다고 해석될 수 있다.
선택도(selectivity)에 대해 데이터 비트를 인터리빙하는 관계형 데이터베이스 테이블에 대한 멀티-칼럼 인덱스를 발생시키는 다양한 실시예가 여기에서 설명된다. 분산형 데이터 웨어하우스 시스템 또는 다른 데이터베이스 관리 시스템과 같은 데이터베이스 관리 서비스는 클라이언트에 효율적 데이터 관리를 제공하기 위해, 로우-지향 포맷(row-orient format) 및/또는 칼럼-지향 포맷(이하 "칼럼형 데이터베이스 테이블"(columnar database table)이라고 지칭됨)과 같은, 많은 상이한 포맷에 따라 관계형 데이터베이스 테이블을 구현할 수 있다. 전형적으로, 관계형 데이터베이스 테이블 내 데이터는, 일자에 의해서와 같이, 데이터베이스 테이블의 하나의 칼럼에 따라 정렬된다. 데이터가 따라 정렬되는 칼럼에 대해 블록이 데이터를 정렬할지 여부를 결정할 때, 각각의 데이터 블록에 대한 상이한 범위가 저장 또는 추정될 수 있어서, 질의가 데이터 블록에 저장되어 있을 것 같다고 알려져 있는 요청된 데이터를 갖는 데이터 블록의 판독만을 지시할 수 있게 한다. 그렇지만, 그러한 기술은, 데이터베이스 테이블이 한 번에 하나의 칼럼을 사용하여 정렬될 수 있을 뿐이므로, 관계형 데이터베이스 테이블이 따라 정렬되는 칼럼 내 데이터에 대한 질의에 응답할 때 적용될 수 있을 뿐이다. 질의가 다중의 다른 칼럼으로 향하여 지시되면, 그때 단일 칼럼을 따른 정렬은 동일한 효율적 질의 프로세싱 속성을 제공하지 않을 수 있다. 전형적 데이터베이스 시스템에 대한 일반적 해법은 상이한 칼럼들을 사용하여 정렬된 데이터베이스 테이블의 다중 사본을 제공하는 것인데, 더 많은 자원을 소모한다. 다른 일반적 해법에서는, 다른 데이터베이스 시스템이, 다중 칼럼의 값을 조합하여 그에 걸쳐 칼럼이 각각의 엔트리에 대해 단일 칼럼 값으로 찾아지게 되는, 연접형 정렬 키를 수용하는 새로운 칼럼을 따라 데이터베이스 테이블을 정렬할 수 있다. 그렇지만, 그러한 해법은 여전히 효율적 찾기를 값들이 연접되어 있는 순서에 치우치게 할 수 있다. 더욱, 이러한 방식의 연접형 키는 인덱스에 사용되는 다중 칼럼에 걸쳐 동등하게 선택적이지 않을 수 있다.
멀티-칼럼 인덱스는 관계형 데이터베이스 테이블이 관계형 데이터베이스 테이블로부터 다중 칼럼을 사용하여 정렬 또는 조직(예를 들어, 분배) 가능하게 할 수 있다. 다중 칼럼에 대해 엔트리에 저장된 데이터 값으로부터 선택도에 대해 데이터 비트를 인터리빙하는 인터리빙 기술에, 적어도 부분적으로, 기반하여 발생된 멀티-칼럼 인덱스는 멀티-칼럼 인덱스를 구성하는 칼럼 간 더 균등하게 분배된 선택도(예를 들어, 특정 칼럼 내 데이터 값의 확률 또는 판별도)를 인덱스 값에 제공할 수 있다. 그리하여, 멀티-칼럼 인덱스를 발생시키도록 사용되는 칼럼(예를 들어, 인덱싱 칼럼 중 하나에 대한 데이터 계층을 결정하도록 사용되는 칼럼) 및/또는 인덱싱 칼럼으로 향하여 지시된 질의를 프로세싱할 때, 인덱싱 칼럼 간 멀티-칼럼 인덱스의 균형 잡힌 또는 더 균등하게 분배된 선택도는 더 효율적으로 선택 데이터를 찾도록 사용될 수 있다. 예를 들어, (위 예에서 논의된 바와 같은) 멀티-칼럼 인덱스 값 범위를 유지하고 있는 것은 질의에 서비스할 때 어느 데이터 블록이 판독될 필요가 있는지 없는지 결정 가능하게 할 수 있다. 그때 더 적은 판독 연산(또는 다른 다양한 액세스 연산)이, 예를 들어, 수신된 질의에 서비스할 데이터를 획득하도록 실행될 수 있다. 관계형 데이터베이스에 대한 질의를 프로세싱하기 위해 선택도에 대해 데이터 비트를 인터리빙하는 것에, 적어도 부분적으로, 기반하여 멀티-칼럼 인덱스를 발생시킴으로써, 일부 실시예는 다량의 데이터의 더 효율적 관리 및 그 액세스를 제공할 수 있다.
도 1은, 일부 실시예에 따라, 선택도에 대해 데이터 비트를 인터리빙하는 것에 기반하여 관계형 데이터베이스 시스템에 대한 멀티-칼럼 인덱스를 발생시키는 데이터흐름 블록 선도를 예시하고 있다. 다양한 실시예에 있어서, 데이터는 관계형 데이터베이스에 대한 저장을 위해 수신될 수 있다(또는 이미 현재 저장되어 있다). 데이터베이스 테이블에 대해 저장될 다중 데이터 칼럼(112) 중, 상이한 선택 칼럼이, 멀티-칼럼 인덱스 키 발생기(130)로 향하여 지시된 데이터 칼럼(112) 중 일부(다른 것들은 아님)로부터의 화살표에 의해 예시된 바와 같이, 멀티-칼럼 인덱스 키를 발생시키도록 사용될 수 있다. 멀티-칼럼 인덱스 키 값을 발생시키도록 사용될 칼럼을 선택 또는 식별하는 것은, 사용될 칼럼에 대한 클라이언트-특정된 칼럼 식별자를 수신하는 것에 의해서와 같이, 테이블 생성 프로세스의 일부분으로서 수행될 수 있다.
일부 실시예에 있어서, 멀티-칼럼 인덱스 키 발생기(130)는 멀티-칼럼 인덱스 키(또는 값)를 포함하는 데이터베이스 테이블에 대한 데이터의 새로운 칼럼을 발생시키도록 데이터베이스 시스템 또는 다른 데이터 저장 관리 컴포넌트에 의해 구현될 수 있다. 이러한 멀티-칼럼 인덱스(122)는 멀티-칼럼 인덱스를 발생시키도록 사용되는 식별된 칼럼으로부터 선택도에 대해 데이터 비트를 인터리빙하는 것에, 적어도 부분적으로, 기반하여 발생될 수 있다. 예를 들어, z-순서 곡선 또는 다른 공간-채움 곡선(예를 들어, 힐버트 곡선)을 발생시키는 인터리빙 기술 또는 기법이 상이한 칼럼 값으로부터의 데이터 비트를 그들 선택도에 따라 인터리빙하도록 사용될 수 있다. 예를 들어, z-순서 곡선에서는, 각각의 칼럼 값으로부터의 최상위 데이터 비트가 인터리빙되고, 그 후 차상위 등이다. 각종 상이한 이러한 기술은, 다른 기술과 더불어, 도 7에 관하여 아래에서 더 상세히 논의된다. 멀티-칼럼 인덱스 값은, 엔트리의 각각의 칼럼에 대한 값으로부터의 데이터 비트를 인터리빙함으로써, 인터리빙 기술 또는 기법에 따라 데이터베이스 테이블 내 각각의 엔트리에 대해 발생될 수 있다. 그 후 결과적 인덱스-값은 멀티-칼럼 인덱스(122) 내 엔트리에 대한 멀티-칼럼 인덱스 키로서 저장될 수 있다. 다양한 다른 방법 및 기술이 멀티-칼럼 인덱스(122)에 대한 인덱스 값을 발생시키도록 사용될 수 있고, 도 5 및 도 6에 관하여 논의되는 바와 같이 멀티-칼럼 인덱스 키 발생기(130)를 구현하기 위한 다양한 수단과 더불어, 도 7에 관하여 아래에서 더 상세히 논의된다. 일부 실시예에 있어서, 순서-보존 압축 기술은 값으로부터의 데이터 비트를 인터리빙하기 이전에 특정 칼럼에 대한 그 값에 적용될 수 있다. 순서-보존 압축 기술을 적용하는 것은 엔트리에 대해 칼럼의 값을 표현하는 개개의 데이터 비트 간 선택도를 더 양호하게 분배할 수 있다. 적어도 일부 실시예에 있어서, 계층 또는 분류는 칼럼에 대한 순서화에 덜 자연적 순서화를 제공하기 위해 압축 이전에 칼럼에 적용되어, 압축되는 데이터의 선택도를 개선할 수 있다.
데이터 스토어(120)는, 다양한 실시예에 있어서, 로우-지향 또는 칼럼형 저장 시스템과 같은 데이터베이스 시스템을 위한 영속적 저장소일 수 있다. 멀티-칼럼 인덱스 키 발생기(130)에 의해 발생된 멀티-칼럼 인덱스 키 값과 함께 데이터 칼럼(112)은 데이터베이스를 위한 데이터 스토어(120)에 영속될 수 있다. 적어도 일부 실시예에 있어서, 데이터 칼럼은 멀티-칼럼 인덱스(112)에 따라 정렬된 순서로 저장될 수 있고, 그리하여 정렬된 데이터 칼럼(124)으로서 영속될 수 있다. 이들 정렬된 데이터 칼럼(124) 및 멀티-칼럼 인덱스(112)는 멀티-칼럼 인덱스 키 값의 정렬된 순서에 따라 물리적으로 영속될 수 있다. 데이터베이스 테이블로 향하여 지시된 질의를 프로세싱할 때, 유사한 멀티-칼럼 인덱스 키 값을 갖는 엔트리는 함께 가까이 위치하고 있어, 질의에 서비스하기 위한 액세스 요청 및 다른 관련된 연산의 수를 감축할 수 있다.
클라이언트(또는 고객, 조직, 엔티티 등)가 후속 저장 또는 관리를 필요로 할 수 있는 다량의 데이터를 수집하는 것은 드물지 않다. 일부 클라이언트는 이러한 데이터에 대해 그들 자신의 데이터 관리 시스템을 구현하기를 바랄 수 있기는 하지만, 데이터 관리 서비스를 획득하는 것이 그들 자신의 데이터를 관리하기를 바라지 않는 그들 클라이언트에게는 더 효율적이고 비용 효과적인 옵션이라고 판명될 수 있음은 점점 명백하다. 예를 들어, 소기업은 장래의 데이터 분석을 위해 판매 기록 및 관련 데이터를 유지하고 있기를 바랄 수 있다. 데이터를 유지하고 있을 데이터 관리 시스템, 및 시스템을 설립 및 유지하는데 필요한 전문 기술에 직접 투자하는 대신에, 소기업은 대안으로 그들 데이터를 저장 및 관리할 데이터 관리 서비스와 계약하는 것이 더 효율적임을 알게 될 수 있다.
도 2 내지 도 4에 관하여 아래에서 논의되는 분산형 데이터 웨어하우스 서비스와 같은 데이터 관리 서비스는 클라이언트에게, 그들 다양한 요구에 따라, 다양한 다른 데이터 관리 서비스를 제공할 수 있다. 일부 경우에 있어서, 클라이언트는 판매 기록 마켓팅, 관리 보고, 사업 프로세스 관리, 예산 예측, 재무 보고, 웹사이트 분석학, 또는 상이한 유형 또는 종류의 데이터와 같은 다량의 데이터를 저장 및 유지하고 있기를 바랄 수 있다. 데이터에 대한 클라이언트의 사용은 또한 데이터를 저장하도록 사용되는 데이터 관리 시스템의 구성에 영향을 미칠 수 있다. 예를 들면, 각각의 로우 내 적은 수의 칼럼으로부터 큰 세트의 데이터를 취합하는 것들과 같은, 소정 유형의 데이터 분석 및 다른 연산에 대해, 칼럼형 데이터베이스 테이블은 더 효율적인 성능을 제공할 수 있다. 환언하면, (전통적 데이터베이스 기법에서와 같이) 각각의 데이터 블록 내 칼럼의 전체 로우를 저장하기보다는, 데이터베이스 테이블로부터의 칼럼 정보가 디스크 상의 데이터 블록 내 저장될 수 있다. 이하의 논의는 관계형 칼럼형 데이터베이스 시스템의 다양한 실시예를 설명하고 있다. 그렇지만, 선택도에 대해 데이터 비트를 인터리빙함으로써 관계형 데이터베이스 시스템에 대해 멀티-칼럼 인덱스를 발생시키는 것과 관련된 바와 같이 아래에서 논의되는 컴포넌트의 다양한 버전은, 로우-지향 데이터베이스 시스템과 같은, 다양한 다른 유형의 관계형 데이터베이스 시스템에 대해 실시예를 구현하도록 동등하게 구성 또는 적응될 수 있다. 그래서, 이하의 예들은 다양한 다른 유형 또는 포맷의 관계형 데이터베이스 시스템에 관하여 제한하려는 의도는 아니다.
일부 실시예에 있어서, 그러한 칼럼형 방식으로 테이블 데이터를 저장하는 것은 다양한 질의에 대한 전반적 디스크 I/O 요건을 감축할 수 있고 분석적 질의 성능을 개선할 수 있다. 예를 들어, 칼럼형 방식으로 데이터베이스 테이블 정보를 저장하는 것은 (예를 들어, 테이블 내 로우 중 전부에 대해 칼럼 필드 값 중 전부를 검색할 때) 질의를 프로세싱하는 것의 일부분으로서 데이터베이스 연산을 수행하도록 메모리 내로 데이터를 검색할 때 수행되는 디스크 I/O 요청의 수를 감축할 수 있고, 질의를 프로세싱할 때 디스크로부터 로딩될 필요가 있는 데이터의 양을 감축할 수 있다. 반대로, 주어진 수의 디스크 요청에 대해, 각각의 데이터 블록이 테이블 로우 전체를 저장하였으면 질의를 프로세싱할 때 필요한 것보다 로우에 대한 더 많은 칼럼 필드 값이 검색될 수 있다. 일부 실시예에 있어서, 디스크 요건은 칼럼형 저장 데이터 유형에 매칭되는 압축 방법을 사용하여 더 감축될 수 있다. 예를 들어, 각각의 블록이 균일한 데이터(즉, 모두 동일한 데이터 유형인 칼럼 필드 값)를 포함하고 있으므로, 디스크 저장 및 검색 요건은 특정 칼럼 데이터 유형에 가장 적당한 압축 방법을 적용함으로써 더 감축될 수 있다. 일부 실시예에 있어서, 디스크 상에 단일 칼럼의 필드 값만을 포함하고 있는 데이터 블록을 저장하기 위한 공간에서의 절약은 (예를 들어, 검색된 데이터를 분석하거나 아니면 프로세싱할 때) 시스템 메모리에서 그 데이터를 검색 및 그 후 저장할 때 공간에서의 절약으로 번역될 수 있다. 예를 들어, 한 번에 하나 또는 적은 수의 칼럼 상에 액세스 및/또는 연산하기만 하면 되는 데이터베이스 연산에 대해, 질의를 실행하도록 실제로 필요로 되는 특정 칼럼 내 데이터를 저장하고 있는 데이터 블록만이 메모리에서 검색 및 저장될 수 있으므로, 전통적 로우-기반 저장으로보다 더 적은 메모리 공간이 필요로 될 수 있다. 칼럼형 관계형 데이터베이스 테이블을 구현하는 효율을 증가시키기 위해, 멀티-칼럼 인덱스는 칼럼형 관계형 데이터베이스 테이블의 인덱싱 칼럼에 대한 데이터를 저장하고 있는 데이터 블록에 저장되어 있을 것 같은 데이터 값을 나타내도록 발생되어, 질의에 응답할 때 판독될 필요가 없는 데이터 블록을 결정하도록 사용될 수 있다.
위에서 논의된 바와 같이, 다양한 클라이언트(또는 고객, 조직, 엔티티 또는 사용자)는 데이터 관리 서비스를 사용하여 데이터를 저장 및 관리하기를 바랄 수 있다. 도 2는, 일부 실시예에 따라, 데이터 관리 서비스를 클라이언트에 제공할 수 있는 일례의 분산형 데이터 웨어하우스 시스템을 예시하고 있다. 구체적으로, 분산형 데이터 웨어하우스 클러스터는, 많은 다른 데이터 관리 또는 저장 서비스와 함께, (예를 들어, 저장소에 데이터를 기록하라는) 요청 또는 (예를 들어, 선택 데이터에 대한 서버 질의 언어(SQL) 요청과 같은) 데이터에 대한 질의에 응답할 수 있다.
다중 사용자 또는 클라이언트는 데이터 웨어하우스 서비스를 획득하도록 분산형 데이터 웨어하우스 클러스터에 액세스할 수 있다. 클라이언트는, 일부 실시예에 따라, 사용자, 클라이언트 애플리케이션 및/또는 데이터 웨어하우스 서비스 가입자를 포함할 수 있다. 이러한 예에 있어서, 클라이언트(250a 내지 250n)의 각각은 분산형 데이터 웨어하우스 서비스(280)에서의 분산형 데이터 웨어하우스 클러스터(225, 235)에 각각 액세스할 수 있다. 분산형 데이터 웨어하우스 클러스터(225, 235)는 그들 클러스터로의 액세스를 갖는 클라이언트(250a 내지 250n)를 대신하여 데이터가 저장될 수 있는 2개 이상의 노드를 포함할 수 있다.
클라이언트(250a 내지 250n)와 같은 클라이언트는 분산형 데이터 웨어하우스 클러스터(225, 235)에 요청을 보내고 그리고/또는 분산형 데이터 웨어하우스 클러스터(225, 235)로부터 응답을 수신하도록 구성된, 도 10에 관하여 아래에서 설명되는 컴퓨터 시스템(1000)과 같은, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 피디에이, 모바일 디바이스, 서버, 또는 어느 다른 컴퓨팅 시스템 또는 다른 디바이스라도 통하여 데이터 웨어하우스 클러스터(225 또는 235)와 통신할 수 있다. 요청은, 예를 들어, 데이터 웨어하우스 클러스터에 의해 제공된 특정 기능 또는 서비스와 연관된 파라미터 및/또는 데이터를 포함하는 메시지로서 포맷팅될 수 있다. 그러한 메시지는 확장성 마크업 언어(XML)와 같은 특정 마크업 언어에 따라 포맷팅될 수 있고, 그리고/또는 단순 객체 액세스 프로토콜(SOAP)과 같은 프로토콜을 사용하여 캡슐화될 수 있다. 애플리케이션 프로그래머 인터페이스(API)는, 클라이언트가 분산형 데이터 웨어하우스 서비스 매니저(202)와 통신하고 있을 때에 대해서와 같이, 클라이언트에 표준화된 메시지 포맷을 제공하도록 구현될 수 있다.
클라이언트(250a 내지 250n)는, 광역 통신망(WAN)(260)(예를 들어, 인터넷)을 통해서와 같이, 다양한 다른 통신 방법을 사용하여 분산형 데이터 웨어하우스 서비스(280)에 의해 호스팅되는 분산형 데이터 웨어하우스 클러스터(225, 235)와 통신할 수 있다. 사설 네트워크, 인트라넷, 및 다른 형태의 통신 네트워크는 또한 클라이언트와 분산형 데이터 웨어하우스 클러스터 간 통신을 용이하게 할 수 있다. 클라이언트는 요청을 포함하는 메시지를 어셈블링하고 데이터 웨어하우스 클러스터에 대응하는 네트워크 엔드포인트(예를 들어, 유니폼 리소스 로케이터(URL))에 그 메시지를 전할 수 있다. 예를 들어, 클라이언트(250a)는 WAN(260)을 통하여 분산형 데이터 웨어하우스 클러스터(225)에 하이퍼텍스트 전송 프로토콜(HTTP) 요청을 보내도록 구성되는, 웹-클라이언트와 같은, 로컬 소프트웨어 애플리케이션을 실행 중인 데스크톱 컴퓨터를 통하여 통신할 수 있다. 클라이언트에 보내지는 응답 또는 다른 데이터는 유사한 방식으로 포맷팅될 수 있다.
적어도 일부 실시예에 있어서, (280)으로 나타낸 바와 같은 분산형 데이터 웨어하우스 서비스는 클러스터(225, 235)와 같은 분산형 데이터 웨어하우스 클러스터를 호스팅할 수 있다. 분산형 데이터 웨어하우스 서비스(280)는 클라이언트(250a 내지 250n)가 특정 클러스터에 직접 요청 및 다른 메시지를 보낼 수 있게 하는 클러스터의 네트워크 엔드포인트를 클라이언트(250a 내지 250n)에 제공할 수 있다. 위에서 언급된 바와 같이, 네트워크 엔드포인트는, 예를 들어, 특정 클러스터를 가리키는 URL과 같은 특정 네트워크 주소일 수 있다. 예를 들어, 다양한 요청 메시지를 보낼 네트워크 엔드포인트 "http://mycluster.com"가 클라이언트(250a)에 부여될 수 있다. 특정 클러스터에 대한 네트워크 엔드포인트가 다중 클라이언트(또는 특정 클라이언트의 사용자들)에 부여될 수 있다. 다양한 보안 특징이 무단 사용자가 클러스터에 액세스하는 것을 방지하도록 구현될 수 있다. 반대로, 다중 클러스터에 대한 네트워크 엔드포인트가 클라이언트에 부여될 수 있다.
데이터 웨어하우스 클러스터(225, 235)와 같은 분산형 데이터 웨어하우스 클러스터는 하나 이상의 노드로 이루어질 수 있다. 이들 클러스터는 다른 수의 노드를 포함할 수 있다. 노드는, 도 10에서 컴퓨터 시스템(1000)에 관하여 아래에서 설명되는 것들과 같은, 서버, 데스크톱 컴퓨터, 랩톱, 또는 더 일반적으로는 어느 다른 컴퓨팅 디바이스라도 될 수 있다. 일부 실시예에 있어서, 데이터 웨어하우스 클러스터 내 노드의 수는, 클러스터 스케일링 요청에 의해서와 같이, 수정될 수 있다. 데이터 웨어하우스 클러스터의 노드는 데이터를 저장하기 위한 하나 이상의 데이터 슬라이스를 구현할 수 있다. 이들 데이터 슬라이스는, 도 3 및 도 4에 관하여 아래에서 논의되는 디스크 저장 디바이스와 같은, 저장 디바이스의 일부분일 수 있다. 클러스터는 클라이언트(250a 내지 250n)와 같은 클라이언트로부터 WAN(260)을 통하여 요청 및 다른 통신을 수신하도록 구성될 수 있다. 클러스터는 클러스터의 네트워크 엔드포인트를 통하여 다중 클라이언트로부터 요청을 수신하도록 구성될 수 있다.
일부 실시예에 있어서, 분산형 데이터 웨어하우스 서비스(280)는 사용자가 클라우드 컴퓨팅 환경에서 데이터 웨어하우스를 설립, 운용 및 스케일링할 수 있게 하는 네트워크-기반 서비스의 일부분으로서 구현될 수 있다. 네트워크-기반 서비스에 의해 호스팅되는 데이터 웨어하우스 클러스터는, 네트워크-기반 서비스에 의해 구현된 클러스터 제어 인터페이스에 클러스터 스케일링 요청을 보내는 것에 의해서와 같이, 사용자가 클러스터를 스케일링할 수 있게 하는 엔터프라이즈-클래스 데이터베이스 질의 및 관리 시스템을 제공할 수 있다. 클러스터를 스케일링하는 것은 네트워크-기반 서비스의 사용자가, 구조화된 데이터에 대한 고속 질의 능력, 다양한 데이터 로딩 및 ETL(추출, 변환 및 로딩) 툴과의 통합, 베스트-인-클래스 비즈니스 인텔리전스(BI) 보고, 데이터 마이닝 및 분석학 툴과의 클라이언트 접속, 및 멀티-테이블 결합, 부-질의 및 취합을 포함하는 것들과 같은 복합 분석 질의의 초고속 실행을 위한 최적화와 같은, 그들 데이터 웨어하우스 기능을 더 효율적으로 수행 가능하게 할 수 있다.
다양한 실시예에 있어서, 분산형 데이터 웨어하우스 서비스(280)는 저장 클라이언트로부터의 요청에 응답하여 생성, 구성, 관리, 스케일링 및 종료될 수 있는 데이터 저장 및 관리 자원을 클라이언트(예를 들어, 분산형 데이터 웨어하우스 시스템에 의해 제공된 데이터 웨어하우스 서비스로의 가입자)에 제공할 수 있다. 예를 들어, 일부 실시예에 있어서, 분산형 데이터 웨어하우스 서비스(280)는 가상 계산 노드로 이루어진 분산형 데이터 웨어하우스 클러스터를 시스템의 클라이언트에 제공할 수 있다. 이들 가상 계산 노드는, 하드웨어 가상 기계, 또는 하드웨어 구성을 시뮬레이팅하도록 구현된 다른 형태의 소프트웨어와 같은, 가상 기계에 의해 구현된 노드일 수 있다. 가상 노드는 물리적 하드웨어 상에 구현된 노드와 동일한 태스크, 기능 및/또는 서비스를 수행하도록 구성될 수 있다.
분산형 데이터 웨어하우스 서비스(280)는, 도 10에 관하여 아래에서 설명되는 다양한 유형의 디바이스와 같이, 맞춤형 또는 기성품 컴퓨팅 시스템, 서버, 또는 컴퓨팅 시스템 또는 디바이스의 어느 다른 조합과 같은 큰 집합의 컴퓨팅 디바이스에 의해 구현될 수 있다. 이들 컴퓨팅 디바이스의 상이한 부분집합은 분산형 데이터 웨어하우스 서비스 매니저(202)에 의해 제어될 수 있다. 분산형 데이터 웨어하우스 서비스 매니저(202)는, 예를 들어, 클라이언트(250a 내지 250n), 또는, 이러한 예의 예시에서는 분산형 데이터 웨어하우스 클러스터(225, 235)일, 분산형 데이터 웨어하우스 매니저(202)에 의해 관리되는 데이터 웨어하우스 클러스터와 상호작용하기를 바라는 어느 다른 클라이언트 또는 사용자와 같은, 클라이언트에 클러스터 제어 인터페이스를 제공할 수 있다. 예를 들어, 분산형 데이터 웨어하우스 서비스 매니저(202)는, 분산형 데이터 웨어하우스 서비스(280)에서 호스팅되는 분산형 데이터 웨어하우스 클러스터에 대한 제어 인터페이스에 의해 제공된 다양한 제어 기능을 선택하도록 그 후 이용될 수 있는, 저장 클라이언트에 대한 하나 이상의 그래픽 사용자 인터페이스(GUI)를 발생시킬 수 있다.
도 3은, 일 실시예에 따라, 분산형 데이터 웨어하우스 서비스 내 분산형 데이터 웨어하우스 클러스터를 예시하는 블록 선도이다. 이 예에서 예시된 바와 같이, 분산형 데이터 웨어하우스 클러스터(300)는, 상호접속부(360)를 통하여 서로 통신할 수 있는, 리더 노드(320) 및 계산 노드(330, 340, 350)를 포함할 수 있다. 리더 노드(320)는 분산형 데이터 웨어하우스 클러스터(300) 상에 질의를 실행하도록 하나 이상의 질의 플랜(325)을 발생시키고 그리고/또는 유지하고 있을 수 있다. 여기에서 설명되는 바와 같이, 분산형 데이터 웨어하우스 클러스터 내 각각의 노드는 클라이언트(예를 들어, 사용자, 클라이언트 애플리케이션, 및/또는 분산형 데이터 웨어하우스 서비스 가입자)를 대신하여 데이터 블록이 저장될 수 있는 다중 디스크를 포함할 수 있다. 이러한 예에 있어서, 계산 노드(330)는 디스크(331-338)를 포함하고, 계산 노드(340)는 디스크(341-348)를 포함하고, 계산 노드(350)는 디스크(351-358)를 포함한다. 일부 실시예에 있어서, 분산형 데이터 웨어하우스 클러스터(또는 그것이 일 컴포넌트인 분산형 데이터 웨어하우스 시스템)의 컴포넌트는, 다양한 적용가능한 부하 균형 기술 중 어느 것이라도 사용하여, 부하 균형을 지원할 수 있다. 예를 들어, 일부 실시예에 있어서, 리더 노드(320)는 부하 균형 컴포넌트(도시되지 않음)를 포함할 수 있다.
적어도 일부 실시예에 있어서, 분산형 데이터 웨어하우스 클러스터(300)는 위에서 설명된 것과 같은 웹 기반 데이터 웨어하우징 서비스의 일부분으로서 구현될 수 있고, 리더 노드(320), 및 계산 노드(330, 340, 350)와 같은 다중 계산 노드를 포함한다. 리더 노드(320)는, 도 2에 관하여 위에서 논의된 클라이언트(250a 내지 250n)와 같은, 저장 클라이언트와의 통신을 관리할 수 있다. 예를 들어, 리더 노드는 다양한 클라이언트 프로그램(예를 들어, 애플리케이션) 및/또는 가입자(사용자)로부터 요청을 수신하고, 그 후 그것들을 파싱하고 실행 플랜(예를 들어, 질의 플랜(들)(325))을 발전시켜 연관된 데이터베이스 연산(들)을 수행하는 서버일 수 있다. 더 구체적으로, 리더 노드는 복합 질의 및 결합에 대한 결과를 획득하는데 필요한 일련의 단계를 발전시킬 수 있다. 또한, 리더 노드(320)는 분산형 데이터 웨어하우징 클러스터(300)에 저장된 데이터에 대해 데이터베이스 연산을 수행하도록 명령받은 계산 노드(330 내지 350) 간 통신을 관리할 수 있다. 예를 들어, 컴파일링된 코드는 질의를 수행하는데 필요로 되는 단계를 수행하도록 리더 노드(320)에 의해 계산 노드(330 내지 350) 중 다양한 것들에 분배될 수 있고, 그들 질의의 중간 결과는 다시 리더 노드(320)에 보내질 수 있다. 리더 노드(320)는 계산 노드(330, 340, 350)로부터 데이터 및 질의 응답 또는 결과를 수신할 수 있다. 클러스터에 저장된 데이터 테이블과 같은, 계산 노드 간 저장된 데이터에 대한 데이터베이스 스키마 및/또는 다른 메타데이터 정보는 리더 노드(320)에 의해 관리 및 저장될 수 있다.
분산형 데이터 웨어하우징 클러스터(300)는 또한 계산 노드(330, 340, 350)와 같은 계산 노드를 포함할 수 있다. 이들 하나 이상의 계산 노드(때로는 저장 노드라고 지칭됨)는, 예를 들어, 도 10에서 컴퓨터 시스템(1000)에 관하여 아래에서 설명되는 것들과 같은 서버 또는 다른 컴퓨팅 디바이스 상에 구현될 수 있고, 각각은, 예를 들어, 서버의 멀티-코어 프로세서의 각각의 코어에 대해 정의된 개개의 질의 프로세싱 "슬라이스"를 포함할 수 있다. 계산 노드는 리더 노드(320)로부터 계산 노드(330, 340, 350)에 보내지는 명령어에 기반하여, 질의와 같은, 데이터베이스 연산의 프로세싱을 수행할 수 있다. 명령어는, 예를 들어, 그것이 보내지는 특정 데이터 계산 노드에 의해 실행가능한 실행 플랜 세그먼트 및 단계로부터 컴파일링되는 코드일 수 있다. 데이터 계산 노드는 최종 취합을 위해 다시 리더 노드(320)에 질의로부터의 중간 결과를 보낼 수 있다. 각각의 데이터 계산 노드는 계산 노드(330, 340 또는 350) 중 하나 이상에 보내지는 질의(또는 다른 데이터베이스 연산)에 대한 작업부하의 일부를 프로세싱하기 위해 소정 메모리 및 디스크 공간에 액세스하도록 구성될 수 있다. 그리하여, 계산 노드(330)는, 예를 들어, 디스크(431), (432), 디스크(438)에까지 액세스할 수 있다.
도 3에 예시된 디스크(331 내지 358)와 같은 디스크는 데이터 계산 노드가 액세스가능한 데이터를 저장하는데 적합한 저장 시스템 및/또는 어느 유형의 저장 디바이스 중 하나 이상으로서 구현될 수 있으며, 국한되는 것은 아니지만: RAID(redundant array of inexpensive disks) 디바이스, (RAID에 따라 구성되지 않는 디스크를 지칭하도록 사용되는) JBOD(Just a Bunch Of Disks)와 같은 디스크 드라이브 또는 디스크 드라이브 어레이, 광학 저장 디바이스, 테이프 드라이브, RAM 디스크, SAN(Storage Area Network), NAS(Network Access Storage), 또는 이들의 조합을 포함한다. 다양한 실시예에 있어서, 디스크는 다양한 칼럼-지향 데이터베이스 기법을 통해 칼럼형 데이터베이스 테이블을 저장하도록 포맷팅될 수 있다.
일부 실시예에 있어서, 분산형 데이터 웨어하우스 클러스터 내 계산 노드의 각각은 주어진 질의를 실행하기 위해, 예를 들어, (예를 들어, 노드 상의 각각의 코어 또는 슬라이스에 대해) 커맨드를 수신하고, 데이터를 되돌려 보내고, 그리고 컴파일링된 코드를 개개의 질의 프로세스에 라우팅하도록 리더 노드와의 통신을 관리하는 노드 서버의(또는 다른 컴퓨팅 디바이스의) 운영 체제 상에서 실행 중인 프로세스 세트를 구현할 수 있다. 일부 실시예에 있어서, 계산 노드의 각각은 그 노드 상에 저장된 블록에 대한 메타데이터를 포함한다. 적어도 일부 실시예에 있어서, 이러한 블록 메타데이터는, 엔트리가 정보(예를 들어, 그 노드 상에 저장된 데이터 블록의 각각에 대한 메타데이터(즉, 데이터 블록당 하나의 엔트리))를 저장하는 데이터 구조(예를 들어, 데이터 어레이)인, 슈퍼블록 데이터 구조로 함께 취합될 수 있다. 일부 실시예에 있어서, 슈퍼블록 데이터 구조의 각각의 엔트리는 각각의 블록에 대한 고유 ID를 포함하고, 그 고유 ID는 데이터 블록과 연관된 다양한 연산을 수행하도록 사용될 수 있다. 예를 들어, 데이터 블록에 저장된 데이터에 적용되는 칼럼-특정 압축 기술의 표시, 데이터 블록에 저장된 데이터에 적용되는 디폴트 압축 기술의 표시, 또는 데이터 블록에 저장되지 않은 데이터 값을 나타내는 확률론적 데이터 구조는 모두 데이터 블록에 대한 각각의 엔트리에 저장될 수 있다. 일부 실시예에 있어서, 고유 ID는 데이터 블록이 분산형 데이터 웨어하우스 시스템에 처음 기록될 때 계산 노드에 의해 또는 리더 노드에 의해 발생될 수 있다(그리고 슈퍼블록 내 대응하는 엔트리가 생성될 수 있다). 적어도 일부 실시예에 있어서, 슈퍼블록에 저장된 엔트리에 대한 데이터 값과 연관된 멀티-칼럼 인덱스 값에 대해, 최소 및 최대 값과 같은, 범위를 나타내는 슈퍼블록 내 엔트리가 유지되고 있을 수 있다.
도 4는, 일부 실시예에 따라, 계산 노드의 일례를 예시하고 있다. 리더 노드(320)와 같은 리더 노드에 보내지고 리더 노드로부터 계산 노드로 보내지는 다양한 질의 및 메시지와 같은 액세스 요청(452)이 계산 노드(450)에서 수신될 수 있다. 도 5에 관하여 아래에서 더 상세히 설명되는 바와 같은 데이터 액세스 모듈(460)은 액세스 요청을 프로세싱하여, 디스크(450 내지 458)로의 판독, 기록 및 다른 액세스 연산을 지시할 수 있다. 다양한 다른 하드웨어 및 소프트웨어 디바이스가 질의 실행 모듈(460)을 구현하도록 개별적으로 또는 조합하여 사용될 수 있다. 질의를 프로세싱할 때, 데이터 액세스 모듈(460)은 질의에 서비스하기 위해 판독될 데이터 블록을 식별하고 그 후 칼럼에 대해 데이터를 저장하고 있는 식별된 데이터 블록을 판독하도록 데이터베이스 테이블에 대해 데이터를 저장하고 있는 각각의 데이터 블록에 대해 슈퍼블록 내 멀티-칼럼 인덱스 값의 범위에 대해 엔트리를 조사할 수 있다.
일부 실시예에 있어서, 계산 노드(450)는, 데이터 블록에 대한 멀티-칼럼 인덱스 값 범위와 더불어 다른 정보도 포함하는 블록 메타데이터를 저장하는 계산 노드(450) 상에 저장된 데이터 블록에 대한 각각의 엔트리를 포함할 수 있는, 계산 노드에 로컬 저장되거나 원격에 저장되지만 계산 노드가 액세스가능한, 위에서 설명된 슈퍼블록 데이터 구조와 같은 슈퍼블록 데이터 구조(470)를 또한 포함할 수 있다. 그렇지만, 일부 실시예에 있어서, 데이터 블록에 대한 메타데이터는, 데이터 블록 자체에와 같이 다중의 다른 위치에, 또는 다른 개개의 데이터 구조에 저장될 수 있음을 유념한다. 그래서, 슈퍼블록 데이터 구조(470)는 데이터 블록에 대한 메타데이터 정보를 보존하도록 적용될 수 있는 다양한 다른 구조, 위치, 방법 또는 기술에 관하여 제한하려는 의도는 아니다.
위에서 논의된 바와 같이, 계산 노드는, 질의, 저장 연산 및 다른 데이터 관리 연산과 같은, 액세스 요청을 수신하도록 구성될 수 있다. 도 5는, 일부 실시예에 따라, 질의 프로세싱을 위한 블룸 필터를 구현하는 일례의 데이터 액세스 모듈을 예시하는 블록 선도이다. 질의(504) 및 데이터 저장 요청(502), 또는 질의 또는 데이터 저장 요청의 표시는 데이터 액세스 모듈(500)로의 입력으로서 수신될 수 있다. 데이터 액세스 모듈(500)은 칼럼형 데이터베이스 테이블의 다중 칼럼에 대한 복수의 데이터 블록을 저장할 수 있는 저장소(530)와 통신할 수 있다. 다중 칼럼에 대한 데이터는 저장소(530) 내 데이터 블록에 저장될 수 있고, 데이터 액세스 모듈(500)은 이러한 데이터를 저장도 하고 그리고 이러한 데이터를 저장소로부터 판독도 하도록 구성될 수 있다.
데이터 액세스 모듈(500)의 일부 또는 전부는, 도 4에 관하여 위에서 설명된 계산 노드(450)와 같은, 계산 노드 상에 구현될 수 있다. 도 4에서의 계산 노드에서 구현되는 것으로 묘사되고 있기는 하지만, 데이터 액세스 모듈(500), 또는 멀티-칼럼 키 발생기(130)와 같은 데이터 액세스 모듈(500)의 컴포넌트 또는 모듈은 도 3에 관하여 위에서 설명된 리더 노드(320), 또는 데이터 웨어하우스 서비스의 어떤 다른 컴포넌트 또는 모듈에 구현될 수 있다. 다양한 다른 구성의 하드웨어 및 소프트웨어 컴포넌트가 데이터 액세스 모듈(500)과 더불어 내부에 예시된 컴포넌트 또는 모듈도 구현하도록 사용될 수 있다. 또한, 상이한 모듈 또는 컴포넌트가 하나 이상의 구별되는 모듈 또는 디바이스로서 데이터 액세스 모듈(500) 내에 예시되어 있기는 하지만, 이들 다양한 컴포넌트는 칼럼형 관계형 데이터베이스 테이블에서 선택도에 대해 데이터 비트를 인터리빙함으로써 멀티-칼럼 인덱스를 발생시키는 것을 구현하도록 함께 조합되거나, 다르게 위치하거나 또는 대안으로 구성될 수 있고, 그래서, 도 5의 이하의 설명은 데이터 액세스 모듈 또는 유사한 모듈 또는 디바이스가 구현될 수 있는 다양한 다른 방식에 관하여 제한하려는 의도는 아님을 유념한다.
데이터 저장 요청(502)은 저장소(530)에 저장된 칼럼형 관계형 데이터베이스 테이블에 대해 저장될 데이터를 포함할 수 있다. 예를 들어, 저장소(530) 내 데이터 블록에 저장을 위한 데이터는 저장 요청 정보 및 저장을 위한 데이터를 수신하도록 구성되는 개방형 데이터베이스 접속성(ODBC) 및/또는 자바 데이터베이스 접속성(JDBC) 드라이버 인터페이스 또는 다른 컴포넌트를 통하여 획득되는 데이터일 수 있다. 멀티-칼럼 인덱스 키 발생기(130)는 저장소(530) 내 데이터베이스 테이블에 대해 저장될 데이터를 입력으로서 수신할 수 있다. 도시되지는 않았지만, 적어도 일부 실시예에서는, 저장소 내 데이터 블록으로부터 획득된 데이터가 또한 멀티-칼럼 인덱스 키 발생기(130)에서 입력으로서 수신될 수 있다. 예를 들어, 멀티-칼럼 인덱스는 이미 저장되거나 유지되고 있는 칼럼형 관계형 데이터베이스 테이블에 대해 발생될 수 있다. 그리하여, 이미 저장된 데이터도 이미 저장된 칼럼형 관계형 데이터베이스 테이블에 대한 멀티-칼럼 인덱스를 발생시키기 위해 멀티-칼럼 인덱스 키 발생기(130)에서 입력으로서 수신될 수 있다.
저장될 데이터의 수신시, 멀티-칼럼 인덱스 키 발생기(130)는 멀티-칼럼 인덱스에 대해 식별된 칼럼으로부터 선택도에 대해 데이터 비트를 인터리빙하는 것에, 적어도 부분적으로, 기반하여 칼럼형 관계형 데이터베이스 테이블에 대한 멀티-칼럼 인덱스를 발생시킬 수 있다. 칼럼형 관계형 데이터베이스 테이블에 대한 멀티-칼럼 인덱스를 발생시키기 위한 다양한 기술 및 방법은 도 7에 관하여 아래에서 논의된다. 도 6은 아래 도 7에서 논의되는 다양한 기술 중 하나 이상을 구현할 수 있는, 일부 실시예에 따른, 일례의 멀티-칼럼 인덱스 키 발생기를 예시하는 블록 선도이다. 적어도 일부 실시예에 있어서, 멀티-칼럼 인덱스 키 발생기(130)는 멀티-칼럼 인덱스에 대해 하나 이상의 식별된 칼럼의 엔트리에 대한 데이터 값을 압축하도록 구성될 수 있는 하나 이상의 압축 엔진(620)을 구현할 수 있다. 압축 엔진(620)은 하나 이상의 순서-보존 압축 기술을 수행 또는 적용하도록 구성될 수 있다. 일반적으로, 순서-보존 압축 기술은 압축되는 데이터 요소의 순서화가 보존되는 그러한 방식으로 데이터를 압축할 수 있다. 일부 실시예에 있어서, 모든 식별된 칼럼이 데이터 값을 압축시킬 필요가 있는 것은 아니다. 예를 들면, 일부 실시예에서는, 3개의 칼럼이 멀티-칼럼 인덱스를 발생시키도록 사용되는 것으로 식별되었지만, 1개의 칼럼만이 압축될 수 있다.
적어도 일부 실시예에 있어서, 멀티-칼럼 인덱스 키 발생기(130)는 또한 계층 기법 발생기(630)를 구현할 수 있다. 계층 기법 발생기(130)는 자연적 순서화를 거의 갖지 않는 칼럼에 대한 계층을 제공하는 하나 이상의 다른 데이터 구조, 칼럼, 테이블 또는 다른 표시자를 발생시킬 수 있다. 예를 들어, 일자는 자연적 순서화(즉, 시간에 의함)를 갖는다. 고객 식별자와 같은 랜덤 발생 번호는 자연적 순서화/분류를 갖지 않을 수 있다. 예를 들어, 고객 식별자 번호는 고객에 대한 어떤 것도 기술하고 있지 않을 수 있다. 계층 기법 발생기(130)는 칼럼형 관계형 데이터베이스 테이블의 하나 이상의 다른 칼럼으로부터 칼럼에 적용될 계층 기법을 발생시키도록 구성될 수 있다. 예를 들어, 계층 기법 발생기(130)는, 거주 주, 그 후 우편 번호, 그리고 그 후 고객 식별자 자체를 포함하는 계층인 고객 식별자 칼럼에 대해 고객에 대한 압축 코드가 발생되게 되도록, 고객에 대한 거주 주 및 고객의 우편 번호를 포함하는 기법을 압축 엔진(620)에 제공할 수 있다. 이것은, 예를 들면, 고객의 주 및 우편 번호를 표현하는 비트 패턴 또는 코드를 적용하고 그리고 그것들을 고객 식별자를 표현하는 데이터 비트와 연접시킴으로써 행해질 수 있다. 이러한 정보는 칼럼에 의한 그룹 또는 칼럼에 대한 차원 테이블로부터 획득될 수 있다. 일부 실시예에서는, 스노우플레이크 또는 스타 기법과 같은 다양한 계층 기술이 특정 칼럼 내 엔트리에 대한 값에 계층 또는 분류를 제공하도록 사용될 수 있다.
압축된 데이터를 발생시킬 때 칼럼에 계층 기법을 적용함으로써, 계층에 의해 정의된 바와 같이 유사한 값의 인덱스 값은 함께 더 가까이 위치할 수 있어서, 더 효율적 질의가 적용된 계층 기법에서 특정된 그룹으로 향하여 지시되는 결과를 초래할 것이다. 예를 들면, 고객 식별자를 갖는 위에서 주어진 예로 계속하면, 고객 식별자의 압축된 버전은 고객 식별자에 대한 주 및 우편 번호를 표현하는 데이터 비트 또는 데이터 비트 패턴을 데이터에 포함할 것이므로, 데이터 비트가, 다른 칼럼으로부터의 데이터 비트와, 인덱스 값 발생기(640)에 의해 인터리빙될 때, 유사하거나 동일한 거주 주 및/또는 우편 번호를 갖는 고객 식별자는 유사한 z-값을 갖고, 그리하여 함께 더 가까이 위치할 수 있어서, 특정 주 및/또는 우편 번호의 고객 식별자로 향하여 지시된 질의에 서비스하는데 더 적은 액세스 연산을 필요로 할 수 있다.
멀티-칼럼 인덱스 키 발생기(130)는 또한 인덱스 값 발생기(640)를 구현할 수 있다. 인덱스 값 발생기(640)는 도 7에서의 요소(710)에 관하여 아래에서 설명되는 다양한 기술을 구현할 수 있다. 예를 들면, 일부 실시예에 있어서, 인덱스 값 발생기(640)는, 칼럼들로부터의 데이터 비트들이 새롭게 발생된 인덱스 값에 놓여질 때까지, (예를 들어, z-순서화 인터리빙 기술을 수행하는 것과 유사하게) 각각의 데이터 블록으로부터 우선 최상위 비트, 그 후 차상위 등을 취하는 것과 같이, 유의 순서로 데이터베이스 테이블의 엔트리에 식별된 인덱싱 칼럼으로부터의 데이터 비트를 인터리빙할 수 있다. 발생된 인덱스 값은 (정렬 키 또는 분배 키와 같은, 칼럼형 관계형 데이터베이스 테이블에 대한 키 값일 수 있는) 멀티-칼럼 인덱스 값으로서 사용될 수 있다. 일부 실시예에 있어서, 멀티-칼럼 인덱스 키 발생기(130)는 칼럼형 관계형 데이터베이스 테이블에 저장될 부가적 데이터/엔트리를 입력으로서 수신할 수 있다. 멀티-칼럼 인덱스 키 발생기(130)는 부가적 엔트리에 대한 멀티-칼럼 인덱스 값을 발생시킬 수 있다. 일부 실시예에 있어서, 부가적 데이터 비트는 특정 칼럼으로부터의 데이터 비트 간 선택도의 균형 잡힌 분배를 유지하기 위해, 압축 엔진(620)에 의해서와 같이, 부가적 데이터/엔트리에 대해 부가될 수 있다. 예를 들어, 칼럼이 14 및 16을 포함하는 데이터 값을 갖고 새로운 값 15가 부가되면, 그때는 데이터 칼럼 전체를 재-압축하는 대신에, 데이터 비트는 그것이 14와 16의 사이에 있음을 나타내는 인덱스 값을 발생시키도록 사용된 15의 압축된 버전에 부가될 수 있다.
멀티-칼럼 인덱스 키 값 발생기(130)는 칼럼형 관계형 데이터베이스 테이블에 대해 발생된 멀티-칼럼 인덱스 값을 저장하거나, 업데이트하거나, 또는 후속하여 엔트리를 저장소(530)에 저장할 수 있는 기록 모듈(520)에 보낼 수 있다. 이미 존재하는 테이블에 대해 수신된 부가적 엔트리에 대해, 기록 모듈(520)은 저장소(530)의 정렬되지 않은 영역에 엔트리를 저장하라고 저장소(530)에 지시할 수 있다. 블록 메타데이터(526)는, 도 4에 관하여 위에서 설명된 슈퍼블록 데이터 구조(470)와 같은, 저장소(530) 내 블록에 대한 취합된 메타데이터일 수 있다. 기록 모듈(520)은 블록 메타데이터(526)의 일부분으로서 데이터 블록에 대한 멀티-칼럼 인덱스 값 범위를 저장할 수 있다. 대안으로, 일부 실시예에 있어서, 블록 메타데이터(526)는 상이한 블록에 대해 상이한 위치에 분산될 수도 있고, 데이터 액세스 모듈로부터 원격에 그러나 액세스가능한 위치에 저장될 수도 있다.
기록 모듈(520)은 또한 데이터 블록에 대한 데이터를 저장소(530) 내 데이터 블록에 저장하도록 데이터 액세스 모듈(500)에 의해 구현될 수 있다. 적어도 일부 실시예에 있어서, 기록 모듈(520)은 각각의 각자의 엔트리에 대한 멀티-칼럼 인덱스 값에 따라 칼럼형 관계형 데이터베이스 테이블의 엔트리를 정렬하고 정렬된 순서에 따라 칼럼형 관계형 데이터베이스 테이블을 저장하라고 저장소(530)에 지시하도록 구성될 수 있다. 일부 실시예에 있어서, 기록 모듈(520)(또는 멀티-칼럼 인덱스 키 발생기(130)와 같은 다른 모듈 또는 모듈들)은 데이터 블록에 저장된 데이터에 대한 다른 메타데이터로 블록 메타데이터(526)를 업데이트하도록 구성될 수 있다.
데이터 액세스 모듈(500)은 또한, 저장소(530)에 저장된 선택 데이터에 대한 질의와 같은, 질의(504) 또는 질의의 표시를 수신할 수 있다. 예를 들어, 도 3에 관하여 위에서 설명된 리더 노드(320)와 같은 리더 노드는 저장 클라이언트로부터 질의를 수신하고, 그리고 데이터 액세스 모듈(500)을 구현하는 계산 노드에 질의를 보내는 질의 실행 플랜을 발생시킬 수 있다. 데이터 액세스 모듈(500)은 질의를 프로세싱 및 수신하는 질의 엔진(540)을 구현할 수 있다. 위에서 논의된 바와 같이, 질의는 질의 플랜에 따라 실행될 명령어일 수 있지만, 또한 더 일반적으로는 특정된 기준을 충족하거나 특정된 프로세스에 의해 발생되는 데이터에 대한 어떠한 유형의 요청이라도 될 수 있다. 일부 실시예에 있어서, 질의 또는 질의의 표시는 질의를 프로세싱하도록 선택 데이터를 식별시키는 하나 이상의 술어 데이터 값을 포함할 수 있다. 예를 들어, SQL 질의는, "WHERE customer = 'small' AND customer = 'medium'"과 같은, 검색될 데이터에 대해 충족되도록 등식 조건을 특정하는 술어 데이터 값을 포함할 수 있다. 일부 실시예에서는, 상이한 유형의 질의가 있을 수 있다. 일부 유형의 질의는 포인트 값 상의 필터링(예를 들어, 주 값 = "텍사스"인 모든 레코드)을 필요로 할 수 있다. 다른 질의는, 데이터 값의 범위에 기반하여 데이터를 필터링하는 범위 질의와 같은, 더 큰 그룹의 데이터(예를 들어, 구입 가격이 $1,000과 $10,000 사이에 대한 모든 구입 주문)를 요청할 수 있다. 일부 질의는 다른 데이터베이스로부터 획득된 대응하는 값에 기반하여 데이터베이스 내 하나의 테이블로부터의 레코드를 결합하는 데이터 결합을 나타낼 수 있다. (예를 들어, 특정 근무 부서의 표시를 포함하는 개인 데이터베이스 중으로부터의 레코드를 동일한 근무 부서를 포함하는 종업원 개인 정보의 그들 레코드와 결합). 질의 엔진(540)은 당업자에게 주지되어 있으므로, 앞선 설명은 질의 엔진의 많은 상이한 기술 및 구현에 관하여 제한하려는 의도는 아니다. 예를 들어, SQL 요청과 같은 표준 데이터베이스 프로토콜 메시지를 프로세싱하도록 구성된 표준 질의 엔진이 구현될 수 있거나, 대안으로, API에 의해 특정된 것들과 같은 맞춤형 질의를 프로세싱하는 질의 엔진이 사용될 수 있다.
따라서, 일부 실시예에서는, 질의 엔진(520)은 선택 데이터에 대해 저장소(530) 내 칼럼형 관계형 데이터베이스 테이블에 대한 (인덱싱 칼럼 중 하나에 적용된 계층 기법을 결정하도록 사용된 하나 이상의 칼럼을 포함하는) 멀티-칼럼 인덱스를 발생시키도록 사용된 칼럼 중 하나 이상으로 지시된 질의(504)의 표시를 수신할 수 있다. 질의 엔진(540)은 멀티-칼럼 인덱스를 발생시키도록 사용된 선택도에 대해 데이터 비트를 인터리빙하는 동일한 인터리빙 기술에 기반하여 하나 이상의 술어 데이터 값을 결정하도록 그 표시를 평가할 수 있다. 예를 들어, 질의가 3개의 칼럼으로 향하여 지시되고 그들 3개의 칼럼에 대한 선택된 범위 또는 값(예를 들어, 일자 = 마지막 2개월)을 나타내면, 그때는 어느 데이터 블록이 판독될 필요가 있는지 결정하는 것을 수행할 때 이용될 술어 인덱스 값을 생성하는 인덱스 값이 발생될 수 있다. 예를 들면, 인덱스 값의 하나 이상의 범위가 선택 데이터를 포함하고 있는 것으로 나타내어질 수 있다. 블록 메타데이터(526)에 저장되었을 수 있는 것과 같은 멀티-칼럼 인덱스 값 범위는 특정 데이터 블록이 술어 인덱스 값과 연관된 엔트리에 대한 데이터를 저장하고 있는지 결정하도록 평가될 수 있다. 그때 범위가 술어 인덱스 값을 포함하고 있지 않으면, 그때 데이터 블록은 액세스될 필요가 없다. 그리하여, 일부 실시예에 있어서, 인덱스 값은 질의에 서비스할 때 준비될 데이터 블록을 식별시키도록 사용될 수 있다. 아래에서 더 상세히 논의되는 도 8은 멀티-칼럼 인덱스 값을 사용하여 질의를 프로세싱하도록 사용될 수 있는 다양한 방법 및 기술 중 일부를 설명하고, 그래서 위 예는 제한하려는 의도는 아니다. 그 후, 질의 엔진(540)은 질의에 서비스하기 위해 칼럼형 관계형 데이터베이스 테이블에 대해 데이터를 저장하고 있는 식별된 데이터 블록을 판독하라고 판독 모듈(550)에 지시할 수 있다.
적어도 일부 실시예에 있어서, 데이터 액세스 모듈(500)은 판독 모듈(550)을 포함할 수 있다. 판독 모듈(550)은 저장소(530)로부터 데이터를 획득하도록 판독 연산을 수행할 수 있다. 일부 실시예에 있어서, 판독 모듈(550)은 칼럼형 관계형 데이터베이스 테이블의 칼럼에 대해 소정 데이터 블록을 판독하고 그리고 판독된 데이터를 추가적 프로세싱을 위해 질의 엔진(540)에 반환하라고 질의 엔진(540)에 의해 지시받을 수 있다. 그 후, 질의 엔진(540)은 저장 클라이언트, 리더 노드 또는 다른 요청하는 시스템 또는 디바이스에 질의 응답(506)에서 데이터 중 적어도 일부를 제공하거나, 또는 수신된 질의에 따라 저장소(530)로부터 판독된 데이터를 프로세싱, 필터링, 조작, 아니면 변경할 수 있다. 적어도 일부 실시예에 있어서, 판독 모듈(550)은 또한 질의(504)를 프로세싱할 때 더 빈번하게 액세스된 데이터에 대한 저장을 제공하는 데이터베이스 캐시(도시되지 않음) 또는 다른 모듈 또는 디바이스 부분에 저장소(530)로부터 판독된 데이터를 전송할 수 있다. 그 후, 질의 엔진(540)은 판독 모듈(550)의 새로운 판독 연산을 요청하면서 캐시 또는 다른 모듈에 액세스할 수 있다. 데이터 관리 및 저장 시스템을 위한 다양한 다른 캐싱 기술이 당업자에게 주지되어 있으므로, 앞선 예들은 제한하려는 의도는 아니다.
예시되지는 않았지만, 질의 엔진(540) 또는 멀티-칼럼 인덱스 키 발생기(130)와 같은, 데이터 액세스 모듈(500)의 다양한 컴포넌트 중 하나는 칼럼형 관계형 데이터베이스 테이블에 대한 멀티-칼럼 인덱스에서 사용되는 칼럼에 대해 재-압축 이벤트를 검출하도록 구성될 수 있다. 도 9는 수정된 압축 기법에 따라 재-압축된 칼럼 데이터에 기반하여 관계형 데이터베이스에 대한 멀티-칼럼 인덱스를 재발생시키도록 구현될 수 있는 다양한 방법 및 기술을 예시하고 있다. 멀티-칼럼 인덱스 키 발생기(130)는, 예를 들면, 특정 칼럼의 데이터에 수정된 압축 기법을 적용하고 그리고 재-압축된 데이터 비트를 다른 칼럼으로부터의 데이터 비트와 인터리빙하여 새로운 멀티-칼럼 인덱스 값을 발생시킴으로써, 재-압축 이벤트의 검출시 칼럼형 관계형 데이터베이스 테이블에 대한 멀티-칼럼 인덱스를 재발생시키도록 구성될 수 있다.
다양한 실시예에 있어서, 업데이트된 멀티-칼럼 인덱스가 발생되면, 재압축 이벤트의 결과로서든 어떤 다른 이벤트의 결과로서든, 현재 멀티-칼럼 인덱스는 업데이트된 멀티-칼럼 인덱스의 발생 동안 칼럼형 관계형 데이터베이스로 지시된 질의에 서비스하기 위해 유지되고 있을 수 있다. 업데이트된 멀티-칼럼 인덱스의 완료시, 그 후에는 업데이트된 멀티-칼럼 인덱스를 사용하여 질의가 서비스될 수 있다.
도 2 내지 도 6은 칼럼형 관계형 데이터베이스 테이블을 구현하는 분산형 데이터 웨어하우징 시스템의 맥락에서 설명 및 예시되었지만, 도 2 내지 도 5에 설명 및 예시된 다양한 컴포넌트는, 로우-지향 관계형 데이터베이스와 같은 다양한 다른 데이터 포맷을 포함할 수 있는, 관계형 데이터베이스 테이블에 대한 데이터 관리 및/또는 저장 서비스를 제공하는 다른 데이터 관리 시스템에 용이하게 적용될 수 있다. 그와 같이, 도 2 내지 도 5는 분산형 데이터 웨어하우스 클러스터에서 실시예를 제한하려는 의도도 아니고, 데이터 저장 및 관리 클러스터의 설명을 제한하려는 의도도 아니다. 예를 들면, 로우-지향 데이터베이스 시스템의 다양한 실시예도 선택도에 대해 데이터 비트를 인터리빙함으로써 멀티-칼럼 인덱스를 발생시키기 위해 유사한 모듈 또는 컴포넌트를 구현할 수 있다.
위에서 논의된 바와 같이, 데이터베이스 관리 시스템은 관계형 데이터베이스 테이블을 이용하여 더 효율적 데이터 관리 기능을 제공하도록 구성될 수 있다. 이들 기능을 더 효율적으로 수행하기 위해, 선택도에 대해 데이터 비트를 인터리빙하는 것에, 적어도 부분적으로, 기반하는 멀티-칼럼 인덱스가 관계형 데이터베이스 테이블에 대해 구현될 수 있다. 도 7은, 일부 실시예에 따라, 선택도에 대해 데이터 비트를 인터리빙하는 것에 기반하여 관계형 데이터베이스 테이블에 대한 멀티-칼럼 인덱스를 발생시키는 방법을 예시하는 하이-레벨 순서도이다. 다양한 다른 시스템 및 디바이스는, 개별적으로든 공조해서든, 아래에 설명되는 다양한 방법 및 기술을 구현할 수 있다. 예를 들어, 데이터 액세스 모듈은, 다양한 방법을 구현하기 위해, 도 5 및 도 6에 관하여 위에서 설명된 멀티-칼럼 인덱스 키 발생기(130)와 같은 멀티-칼럼 인덱스 키 발생기, 및 질의 엔진(540)과 같은 질의 엔진을 구현한다. 대안으로, 예를 들어, 공조하는 도 3에 예시된 다중 계산 노드와 같은 상이한 시스템 및 디바이스의 조합은, 도 3에 또한 예시된 리더 노드(320)도 더불어, 아래 방법 및 기술을 또한 수행할 수 있다. 그래서, 예시된 방법을 수행하는 것으로 참조된 위 예들 및 또는 어느 다른 시스템 또는 디바이스는 시스템 및 디바이스의 다른 상이한 컴포넌트, 모듈, 시스템 또는 구성에 관하여 제한하려는 의도는 아니다.
(700)에 나타낸 바와 같이, 다양한 실시예에 있어서, 관계형 데이터베이스 테이블의 적어도 2개의 칼럼이 식별될 수 있다. 데이터베이스 칼럼의 식별은, 일부 실시예에서는, 멀티-칼럼 인덱스에 포함시킬 칼럼을 선택하는 클라이언트 또는 다른 요청을 수신하는 것에 응답하여 결정될 수 있다. 예를 들어, 도 2에서 위에서 설명된 클라이언트(250)와 같은 클라이언트는 더 큰 생성 테이블 요청의 일부분으로서 또는 데이터 웨어하우스 서비스에서 프로세싱되는 생성 테이블 요청을 발생시키는 다른 인터페이스 형태에 채우는 것의 일부분으로서 칼럼 식별자를 보낼 수 있다. 또한, 다양한 실시예는, 멀티-칼럼 인덱스에 이용될 수 있는 2개 이상의 칼럼을 결정하기 위해, 주어진 칼럼에 얼마나 많은 고유 데이터 값이 저장되어 있는지(예를 들어, 성별 = 2개의 고유 값, 우편 번호 = 99999개의 값)와 같이, 칼럼에 대해 저장될(또는 이미 저장된) 데이터 상에 다양한 선택도 분석을 수행할 수 있다. 예를 들어, 3개 칼럼의 그룹은 소정 레벨의 선택도 아래에 있는 것으로 식별되고, 그리하여 멀티-칼럼 인덱스의 일부분으로서 그룹화되도록 선택될 수 있다. 일부 실시예는 엔트리가 가장 자주 찾아지는 그들 칼럼을 결정하도록 데이터베이스에 대한 메타데이터 또는 다른 질의 또는 액세스 통계를 분석 또는 평가할 수 있다. 특정 칼럼이 질의의 술어 값에 사용되는 횟수 및 3개의 가장 빈번하게 사용된 칼럼이 그때 멀티-칼럼 인덱스의 일부분으로서 사용되도록 식별되었음에 대한 통계를 관계형 데이터베이스 시스템이 유지하고 있는 시나리오를 생각하라. 그리하여, 동일한(또는 유사한) 3개의 가장 빈번하게 액세스된 칼럼을 포함하는 새로운 관계형 데이터베이스 테이블이 생성되게 되면, 그때 그들 칼럼은 새로운 데이터베이스 테이블에 대한 멀티-칼럼 인덱스를 발생시키는데 사용될 수 있다.
관계형 데이터베이스 테이블의 적어도 2개의 칼럼이 식별되고 나면, 다양한 실시예에 있어서, 관계형 데이터베이스 테이블에 대한 멀티-칼럼 인덱스는 (710)에 나타낸 바와 같이 발생될 수 있다. 앞서 언급된 바와 같이, 관계형 데이터베이스 테이블에 대한 멀티-칼럼 인덱스는 데이터베이스 테이블의 각각의 엔트리(즉, 로우)에 대한 인덱스 값을 제공할 수 있다. 그리하여, 다양한 실시예에 있어서, 새로운 칼럼은 이들 각각의 멀티-칼럼 인덱스 키 또는 값을 포함하고 있는 데이터베이스 테이블에 대해 발생된다. 또한, 위에서 언급된 바와 같이, 멀티-칼럼 인덱스는 멀티-칼럼 인덱스 키 또는 값으로서 인덱스 값을 발생시키도록 식별된 칼럼으로부터 선택도에 대해 데이터 비트를 인터리빙하는 것에, 적어도 부분적으로, 기반하여 발생될 수 있다. 다양한 실시예에 있어서, 이들 인덱스 값은 개개의 칼럼이 단독으로 고려될 때 제공할 수 있는 것보다 식별된 칼럼에 관하여 다양한 질의 연산을 수행하기 위한 더 많은 선택도를 제공할 수 있다.
선택도에 대한 인터리빙 기술에 따른 인덱스 값의 발생은 다양한 실시예에 따라 상이한 방식으로 수행될 수 있다. 인덱스 값은 새로운 인덱스 값을 발생시키도록 선택된 데이터로부터의 2진 데이터 값을 인터리빙함으로써 발생될 수 있다. 관계형 데이터베이스 테이블의 엔트리(즉, 로우)에 대한 인덱스 값을 발생시키는 것에 관하여, (700)에서 식별된 칼럼의 데이터 비트는 그 특정 엔트리에 대한 새로운 인덱스 값을 생성하도록 인터리빙될 수 있다. 일부 실시예에 있어서, 데이터 비트는 (예를 들어, z-순서 곡선을 발생시키는 기술을 사용하는 것과 같이) 그들 유의 순서로 인터리빙된다. 예를 들어, 관계형 데이터베이스 테이블에 대해 식별된 칼럼이 칼럼 A 및 칼럼 E이고, 칼럼 A에 대한 엔트리의 값이 6(2진 값 = 110)이고 칼럼 B에 대한 것이 3(2진 값 = 011)이면, 그때 칼럼 A 및 칼럼 B의 엔트리에 대한 비트는 최상위 비트(즉, 첫번째 비트 값)에 따라 인터리빙될 수 있다. 이 예에 있어서, 칼럼 A의 값으로부터의 첫번째 비트는 1이고, 그 후에, 0인, B의 최상위 비트 값이 부가되고, 그 후 A의 차상위 값 1이 부가되고, 그 후 B의 차상위 비트 1이 부가되고 ... 등이다. 이 예에서 최종 생성된 인덱스 값은 101101이다(밑줄친 값은 칼럼 B으로부터 인터리빙된 비트를 표현한다). 유사한 기술이 더 많은 수의 선택된 칼럼에 적용될 수 있다. 예를 들면, 5개의 칼럼이 식별되면, 그때 비트는, 식별된 칼럼 내 엔트리에 대한 값에서의 각각의 다음 비트에 대해 반복되는 동일한 패턴으로, 5개의 칼럼의 각각으로부터 인터리빙될 수 있다. 식별된 칼럼의 수가 달라짐과 함께, 다양한 실시예는 또한 데이터 비트를 인터리빙할 상이한 선택 패턴을 사용할 수 있다. 위에 주어진 예에서는 칼럼 A의 값이 칼럼 B의 값 전에 인터리빙되고 있지만, 역 패턴 B 그 후 A도 사용될 수 있다. 유사하게, 더 많은 수의 식별된 칼럼으로부터 인덱스 값을 발생시키는 것에 대해, 선택 패턴에서의 더 많은 변형이 채용될 수 있다(예를 들어, 칼럼 1, 그 후 칼럼 6, 그 후 칼럼 2, 그리고 그 후 칼럼 23). 적어도 일부 실시예에서는, 식별된 칼럼으로부터 데이터 비트를 인터리빙할 때 동일한 패턴이 반복된다. 더욱, (예를 들어, 공간 채움 곡선 기술과 같은) 많은 상이한 인터리빙 기술이 당업자에게 주지되어 있으므로, 앞선 예들은 관계형 데이터베이스 테이블의 식별된 칼럼에 대해 멀티-칼럼 인덱스가 발생될 수 있는 다양한 다른 방식에 관하여 제한하려는 의도는 아니다.
다양한 실시예에 있어서, 칼럼 내 각각의 엔트리에 대해 저장된 데이터는 엔트리에 대한 모든 데이터 비트 값에 걸쳐 균등하게 분배되거나 선택적이지는 않을 수 있다. 예를 들어, 칼럼이 성별을 기술하면, 데이터 비트 패턴은, M (0100 1101) 또는 F (0100 0110)에 대한 아스키 값과 같은, 단지 2개의 상이한 패턴일 뿐일 수 있다. 각각의 값의 처음 4개의 비트는 동일하다. 그들 비트를 인터리빙하는 것은 더 균등하게(또는 동등하게) 선택적인 상이한 칼럼으로부터의 비트를 인터리빙하는 것으로부터처럼 효율적으로 선택적인 인덱스 값을 발생시키지는 않을 수 있다. 적어도 일부 실시예에 있어서, 각각의 인덱스 값에 걸쳐 선택도의 더 균등한 분배를 제공하기 위해 데이터 비트를 인터리빙할 때 상이한 수의 비트가 선택될 수 있다. 그리하여, 위에서 성별 값 아스키 코드가 사용되면, 그때 처음 5개의 비트는 다른 값들을 인터리빙하기 전에 그룹으로서 부가될 수 있다. 일부 실시예에서는, 상이한 수의 비트가 각각의 칼럼으로부터 인터리빙될 수 있다. 대안으로, 다른 실시예에서는, 동일한 수의 데이터 비트가, 위에 주어진 예에서와 같이, 인터리빙될 수 있다.
적어도 일부 실시예에 있어서, 순서-보존 압축 기술은 멀티-칼럼 인덱스에 대한 인덱스 값을 발생시키는 것의 일부분으로서 식별된 칼럼 중 하나 이상에 대한 데이터에 적용될 수 있다. 사전-기반 압축 기술과 같은 전형적 순서-보존 압축 기술은, 데이터 요소의 원래의 순서화를 유지하면서, 데이터 값의 선택적이지 않은 또는 반복적인 부분을, 이들 부분을 더 선택적인 데이터 값으로 대체하는 것에 의해서와 같이, 감축할 수 있다. 예를 들어, 배송 유형에 대해 주어진 칼럼이, "익일, 2-일, 오버나이트, 그라운드, 에어"와 같은, 다양한 다른 구절을 포함하고 있으면, 그때 사전 압축 기술은 캐릭터의 공통 조합을 캐릭터의 그 조합을 표현하는 더 작은 비트 패턴으로 대체하도록 사용될 수 있다. 그리하여, 이 예에서, "일"은 "일"을 표현할 더 작은 수의 데이터 비트로 대체될 수 있다. 다양한 다른 순서 보존 압축 기술이 당업자에게 주지되어 있으므로, 앞선 예는 순서-보존 압축 기술을 적용하기 위한 다양한 다른 유형, 방법 또는 기술에 관하여 제한하려는 의도는 아니다. 칼럼의 엔트리에 대한 압축된 데이터로부터의 데이터 비트는 그 후 멀티-칼럼 인덱스에 대한 인덱스 값을 발생시키기 위해 다른 식별된 칼럼으로부터의 데이터 비트와 인터리빙될 수 있다. 적어도 일부 실시예에 있어서, 동일한 압축 기술이 특정 칼럼 내 데이터 값들에 적용될 수 있다. 순서-보존 압축 기술을 적용하는 결과로서, 데이터 비트는 칼럼에 대해 더 균등하게 선택적이어서, 멀티-칼럼 인덱스에 더 선택적 z-값을 제공할 수 있다. 일부 실시예에 있어서, 부가적 엔트리에 대한 인덱스 값을 발생시킬 때, 데이터 비트는 인덱싱 칼럼에 걸쳐 선택도의 균형을 보존하기 위해 칼럼에 대한 데이터 값에 부가될 수 있다.
칼럼에 저장된 일부 유형의 데이터는 칼럼의 데이터 값들 간 자연적 순서화 또는 분류(예를 들어, 판매 일자는 시간으로 자연적으로 순서화될 수 있음)를 가질 수 있는 한편, 다른 유형의 데이터는 데이터 값의 자연적 순서화 또는 구조를 갖지 않을 수 있다. 예를 들어, 제품 식별자 또는 고객 식별자 칼럼은 자연적 순서화 또는 구조를 갖지 않을 수 있고, 대신에, 함께 그룹화된 랜덤 발생 또는 배정된 캐릭터일 수 있다. 관계형 데이터베이스 테이블에 대한 멀티-칼럼 인덱스의 일부분으로서 식별된 그들 칼럼에 대해, 계층은 칼럼 내 데이터 값들에 자연적 순서화 또는 분류를 제공하기 위해 식별, 결정 및 적용될 수 있다. 그리하여, 예를 들면, 특정 연령 및 위치와 연관된 고객 식별자를 찾을 때, 고객 식별자에 적용된 계층은 (적용된 계층 기법에 의해 정의된 바와 같은) 유사한 고객 식별자가 멀티-칼럼 인덱스에 사용된 그들 유사한 인덱스 값에 의해 함께 가까이 위치할 수 있게 하였을 수 있다. 그리하여, 일부 실시예에 있어서, 계층 또는 분류 기법은 하나 이상의 칼럼을 압축하기 이전에 하나 이상의 칼럼에 대해 결정될 수 있다.
계층 기법을 적용하는 것의 일부분으로서, 칼럼의 데이터를 압축하는데 사용되는 다양한 순서 보존 압축 기술은 칼럼의 데이터의 압축된 버전에 칼럼의 계층을 포함시켰을 데이터 비트를 포함할 수 있다. 예를 들어, 제품 식별자(그것이 랜덤 발생된 번호일 수 있으므로 자연적 순서화 또는 분류를 거의 또는 전혀 갖지 않을 수 있음)는 각각의 제품 식별자에 대해 일반적 제품군(예를 들어, 가정용 상품, 전자제품, 의류, 식품, ... 등) 및 더 구체적 서브-클래스(예를 들어, 전자 품목에 대해 그것은 텔레비전, 오디오 플레이어, 비디오 플레이어, 카메라, 모바일 폰, ... 등)를 포함하는 계층 기법이 결정되게 할 수 있다. 제품 식별자 칼럼에 순서-보존 압축 기법을 적용할 때, 제품 식별자에 대해 제품군, 그 후 제품의 서브-클래스, 그리고 그 후 제품 식별자 자체를 포함하는 제품 식별자에 대한 압축 코드가 (사전-기반 압축 기술로) 발생될 수 있다. 이것은, 예를 들면, 고객의 제품군 및 서브-클래스를 표현하는 비트 패턴 또는 코드를 적용하고 그리고 그것들을 고객 식별자를 표현하는 데이터 비트와 연접시킴으로써 행해질 수 있다. 계층에 대한 특정 비트 패턴 또는 코드를 결정하는 것은 각각의 그룹에 대한 고유 값의 수에 기반할 수 있다. 예를 들어, 주 및 우편 번호와 같은 위치가 사용되면, 적은 우편 번호를 갖는 주를 표현하는 코드는 더 많은 수의 우편 번호를 갖는 주보다 더 작을 수 있다. 계층 기법을 적용하는 많은 다른 상이한 방식이 구현될 수 있고, 그리하여 앞선 예들은 제한하려는 의도는 아니다. 일부 실시예에서는, 스노우플레이크 또는 스타트 기법이 특정 칼럼에 대한 계층에 사용되는 부가적 차원 정보를 포함하도록 사용될 수 있다.
(720)에 나타낸 바와 같이, 다양한 실시예에 있어서, 관계형 데이터베이스 테이블의 엔트리는 그 후 관계형 데이터베이스 테이블 내 각각의 엔트리에 대한 각각의 인덱스 값에 따라 저장될 수 있다. 적어도 일부 실시예에 있어서, 멀티-칼럼 인덱스 값은 관계형 데이터베이스 테이블에 대한 정렬 키로서 사용될 수 있다. 엔트리가 하나 이상의 저장 디바이스 상에 영속적으로 저장될 때, 엔트리는 그들 각각의 정렬 키(즉, 인덱스 값)의 순서로 정렬되고 정렬된 순서로 저장될 수 있다. 도 4에 관하여 위에서 설명된 슈퍼블록(470)과 같은, 저장소를 기술하는 메타데이터는 (예를 들어, 인덱스 값의 범위와 같은) 특정 데이터 블록에 저장된 데이터에 대한 각각의 인덱스 값을 나타낼 수 있다. 적어도 일부 실시예에 있어서, 멀티-칼럼 인덱스 값은 관계형 데이터베이스 테이블에 대한 분배 키로서 사용될 수 있다. 분배 키는 다중의 상이한 위치에 저장될 때 관계형 데이터베이스 테이블의 부분들의 저장 위치를 결정하도록 사용될 수 있다. 예를 들어, 위의 도 3에서 설명된 바와 같이, 다중 계산(또는 저장) 노드는 관계형 데이터베이스 테이블에 대해 데이터를 저장하도록 구현될 수 있다. 분배 키는 각각의 각자의 엔트리에 대한 멀티-칼럼 인덱스 값에 따라 상이한 계산 노드에 위치하고 그 후 저장되게 되는 관계형 데이터베이스 테이블의 상이한 부분을 결정하도록 사용될 수 있다. 예를 들어, 1 - 2000, 2001 - 4000, 및 4001 - 6000과 같은, 멀티-칼럼 인덱스 값의 상이한 범위가 각각 상이한 계산 노드 상에 저장될 수 있다. 분배 키로서 멀티-칼럼 인덱스 값을 구현함으로써, 일부 실시예는 멀티-칼럼 인덱스를 발생시키는데 사용된 식별된 칼럼에 기반하여 다른 관계형 데이터베이스 테이블을 결합하는 질의의 성능을 개선할 수 있다.
도 5에 관하여 위에서 논의된 다양한 방법 및 기술은 상이한 이벤트, 트리거 또는 다른 요청의 발생시 수행될 수 있다. 예를 들어, 일부 실시예에서는, 위에서 예시된 바와 같이, 관계형 데이터베이스 테이블은 이미 저장되거나 유지되고 있을 수 있고, 선택도에 대해 데이터 비트를 인터리빙하는 것에, 적어도 부분적으로, 기반하여 멀티-칼럼 인덱스를 발생시키도록 사용될 2개 이상의 칼럼을 나타내는 요청이 수신될 수 있다. 다른 일례에 있어서, 일부 실시예에서는 데이터베이스 테이블에 대해 영속될 데이터 및/또는 엔트리가 수신될 수 있다(예를 들어, 데이터베이스 테이블에 대한 새로운 로우). 부가적 데이터/엔트리의 수신시, 하나 이상의 멀티-칼럼 인덱스 값은 데이터/엔트리가 부가되게 되는 관계형 데이터베이스 테이블에 대한 멀티-칼럼 인덱스 값을 발생시키도록 이미 사용된 동일한 칼럼에 따라 발생될 수 있다. 다른 일례에 있어서, 데이터베이스 시스템 매니저, 모듈 또는 다른 관리 컴포넌트와 같은 관계형 데이터베이스 시스템은 특정 데이터베이스 테이블이 2개 이상의 칼럼으로 향하여 지시된 빈번한 질의를 수신한다고 동적으로 또는 자동으로 결정하고 위에서 예시된 방법 또는 기술을 수행하여 그렇게 할 클라이언트 요청 없이 데이터베이스 테이블에 대한 멀티-칼럼 인덱스를 발생시키도록 구성될 수 있다.
부가적 데이터/엔트리를 수신하는 것은, 위에서 언급된 바와 같이, 데이터베이스 테이블 내 새로운 데이터/엔트리에 대한 멀티-칼럼 인덱스 값의 발생을 트리거링할 수 있다. 적어도 일부 실시예에 있어서, 관계형 데이터베이스 테이블에 대한 다양한 업데이트(삭제, 삽입, 수정, 부가, ... 등)는 저장소 내 정렬되지 않은 영역에 새로운 엔트리로서 저장될 수 있다. 재정렬 이벤트(예를 들어, 자유롭게 된 공간을 되찾으라는 클라이언트 요청 또는 정렬되지 않은 영역에 영속된 정렬되지 않은 데이터의 어떤 임계치를 가로지르는 것)를 검출하는 것에 응답하여, 관계형 데이터베이스 테이블에 대한 업데이트의 결과로서의 새로운 데이터/엔트리도 새로운 데이터/엔트리에 대해 발생된 멀티-칼럼 인덱스 값/키에 따라 (앞서 정렬된 엔트리와 함께) 정렬된 순서로 저장될 수 있게 되도록 관계형 데이터베이스 테이블이 재정렬될 수 있다.
멀티-칼럼 인덱스 값은, 일부 실시예에서는, 관계형 데이터베이스 테이블의 칼럼 중 하나 이상으로 향하여 지시된 질의를 프로세싱하기 위해 구현될 수 있다. 멀티-칼럼 인덱스 값을 평가함으로써, 질의는, 판독될 필요가 있는 영속적 저장 디바이스 내 데이터 블록의 수를 감축하는 것에 의해서와 같이, 더 효율적으로 프로세싱 또는 서비스될 수 있다. 도 8은, 일부 실시예에 따라, 선택도에 대해 데이터 비트를 인터리빙하는 것에 기반하는 멀티-칼럼 인덱스를 갖는 관계형 데이터베이스로 향하여 지시된 질의를 프로세싱하는 방법의 하이-레벨 순서도를 예시하고 있다.
(800)에 나타낸 바와 같이, 다양한 실시예에 있어서, 관계형 데이터베이스 테이블에 대한 멀티-칼럼 인덱스를 계산하도록 사용된 적어도 하나의 칼럼으로 향하여 지시된 질의의 표시가 수신될 수 있다. 예를 들면, 고객 식별자, 제품 식별자 및 판매 일자 칼럼이 칼럼에 대한 멀티-칼럼 인덱스를 발생시키도록 사용되면, 하나 이상의 고객 식별자, 제품 식별자 및/또는 판매 일자 값을 찾고 있는 질의 표시가 수신될 수 있다. 질의는 멀티-칼럼 인덱스를 발생시키도록 사용된 식별된 칼럼 전부로 지시될 필요는 없음을 유념한다. 마찬가지로, 일부 실시예에 있어서, 질의는 멀티-칼럼 인덱스에서 사용된 그들 칼럼에 부가하여 다른 칼럼에도 지시될 수 있다. 예를 들어, 일부 실시예에 있어서, 질의는 데이터 계층을 결정하고 그리고/또는 인덱싱 칼럼에 적용하도록 사용된 칼럼에도 (인덱싱 칼럼과 함께 또는 없이) 지시될 수 있다. 그리하여, 위의 예로 계속하면, 질의는 고객 식별자 및 제품 식별자와 더불어 고객 연령 인구통계 및 고객 성별(고객 식별자에 적용될 계층을 결정하도록 사용될 수 있음)로도 향하여 지시될 수 있다.
질의의 표시의 수신시, (810)에 나타낸 바와 같이, 표시는 관계형 데이터베이스 테이블에 대한 멀티-칼럼 인덱스를 발생시키도록 사용된 선택도에 대해 데이터 비트의 동일한 인터리빙에 기반하여 질의에 대한 술어 데이터 값을 결정하도록 평가될 수 있다. 멀티-칼럼 인덱스에 대한 인덱스 값을 발생시키는 위 논의와 유사하게, 인덱스 값은 관계형 데이터베이스 테이블에 관하여 찾아질 술어 데이터 값으로서 발생될 수 있다. 예를 들면, 술어 데이터 값을 식별하도록 사용된 값, 범위 또는 다른 데이터는 질의를 프로세싱하도록 사용되는 하나 이상의 인덱스 값을 발생시키도록 사용될 수 있다. 이러한 예에 있어서, 고객 식별자의 범위 또는 리스트가 나타내어질 수 있으면, 그때 그들 데이터 값은 인덱스 값을 발생시키기 위해 멀티-칼럼 인덱스를 발생시키도록 사용된 다른 칼럼을 표현하는 값과 인터리빙될 수 있다. 그리하여, 고객 식별자 100 - 200는 100 - 200으로부터의 데이터 비트로 발생되는 인덱스 값으로 번역될 수 있다. 인덱스 값을 발생시키도록 사용된 다른 칼럼에 대한 값도 알려져 있으면 사용될 수 있다. 그렇지 않으면, 일부 실시예에서는, 그들 인덱스 칼럼의 엔트리 전부를 포괄하는 인덱스 값을 발생시키도록 다른 값이 포함될 수 있다.
다양한 실시예에 있어서, (820)에 나타낸 바와 같이, 그 후 멀티-칼럼 인덱스 범위는 질의에 서비스하기 위해 판독될 데이터 블록을 식별시키기 위해 술어 데이터 값에 대해 관계형 데이터베이스 테이블에 대한 데이터를 저장하고 있는 각각의 데이터 블록에 대해 분석 또는 평가될 수 있다. 예를 들어, 일부 실시예에 있어서, 영속적 저장소 내 데이터 블록에 저장된 데이터/엔트리에 대한 인덱스 값을 기술하는 메타데이터가 저장/유지되고 있을 수 있다(예를 들어, 메타데이터는 특정 데이터 블록에 저장된 엔트리의, 최소 및 최대 인덱스 값과 같은, z-값의 범위를 기술할 수 있다). 위에서 언급된 바와 같이, 관계형 데이터베이스 테이블의 엔트리는 저장되고, 일부 실시예에서는, 각각의 엔트리에 대한 인덱스 값에 따라 정렬되어, (인덱스 값에 의해 결정된 바와 같은) 유사한 데이터 엔트리가 데이터 블록에서 함께 위치할 수 있게 한다. 그리하여, 멀티-칼럼 인덱스 범위를 분석할 때, 술어 데이터 값이 단 하나의 위치에 저장될 수 있다고 결정될 수 있고, 그들 데이터 블록은 범위 내 술어 데이터 값을 포함하고 있는 것으로 나타내어진다.
그 후, (830)에 나타낸 바와 같이, 관계형 데이터베이스 테이블의 식별된 데이터 블록은 질의에 서비스하기 위해 판독될 수 있다. 예를 들어, 식별된 데이터 블록은 관계형 데이터베이스 테이블에 대한 데이터를 저장하고 있는 영속적 저장 디바이스(또는 영속적 저장 디바이스를 관리 또는 액세스하는 다른 시스템)에 액세스 요청에서 보내질 블록 주소의 리스트일 수 있다.
관계형 데이터베이스 테이블에 대한 업데이트는, 도 7에 관하여 위에서 언급된 바와 같이, 관계형 데이터베이스 테이블에 대한 새로운 엔트리의 생성을 트리거링할 수 있다. 일부 실시예에 있어서, 이들 새로운 데이터/엔트리는 특정 칼럼의 선택도를 개조할 수 있다. 예를 들면, 회사가 주로 캘리포니아에서 사업을 하고 주변 주에서 어떤 작은 사업을 하는 회사에 대한 판매 데이터를 유지하고 있으면, 인덱스 값을 발생시킬 때 데이터 비트의 압축 기법 또는 선택은 캘리포니아 판매를 표현하는데 사용된 비트에 걸쳐 더 균등하게 캘리포니아 판매에 대한 엔트리의 선택도를 분배하는 것에 기반할 수 있다. 그렇지만, 회사가 후속하여 오리건과 같은 다른 주로 심하게 확장하여, 더 많은 새로운 판매 데이터를 발생시키면, 새로운 엔트리는 (오리건을 표현하도록 더 많은 엔트리가 이제 또한 필요로 될 수 있으므로) 위치 칼럼을 표현하는 비트의 선택도 분배를 개조할 수 있다. 예를 들면, 순서-보존 압축 기술이 적용되면, 그 기술은 그것이 원래 적은 오리건 판매에 기반하였을 수 있으므로 오리건 판매의 선택도를 충분히 분배하지는 않을 수 있다. 그래서, 일부 실시예에서는, 압축이 칼럼 내 데이터 비트의 선택도를 균등하게 분배하도록 사용되는 그들 실시예에 대해서와 같이, 데이터의 선택도에서의 변화에 부응하도록 다양한 방법 및 기술이 구현될 수 있다. 도 9는, 일부 실시예에 따라, 수정된 압축 기법에 따라 재-압축된 칼럼 데이터에 기반하여 관계형 데이터베이스에 대한 멀티-칼럼 인덱스를 재발생시키는 방법의 하이-레벨 순서도를 예시하고 있다.
(900)에 나타낸 바와 같이, 일부 실시예예서는 칼럼의 선택도에, 적어도 부분적으로, 기반하여 관계형 데이터베이스에 대한 멀티-칼럼 인덱스를 발생시키도록 사용된 칼럼에 대해 재-압축 이벤트가 검출될 수 있다. 예를 들어, 다양한 실시예에 있어서, 사전-기반 압축 기술에 대한 사전 데이터 구조와 같이, 관계형 데이터베이스의 칼럼에 대한 데이터 비트를 균등하게 분배하도록 사용된 압축 기술/기법을 기술하는 메타데이터가 유지되고 있을 수 있다. 예를 들면, 어떤 스큐 측정 임계치 또는 다른 한계를 가로지르는 칼럼에 대한 소정 수의 새로운 데이터 값이 수신될 때, 그때는 재-압축 이벤트가 칼럼에 대해 트리거링될 수 있다. 재-압축 이벤트 검출시, (910)에서 나타낸 바와 같이, 앞서 적용된 순서-보존 압축 기술/기법은 칼럼의 선택도에 기반하여 수정될 수 있다. 다양한 실시예에 있어서, 이것은 새롭게 재발생하는 데이터 값의 일부에 대해 더 작은 비트 표현을 포함하도록 사전 또는 다른 대체-기반 압축 인코더를 단순 조절하는 것일 수 있다. 대안으로, 다른 압축 기술이 전적으로 적용될 수 있다(또는 재-분석 및 자체-수정할 수 있는 동일한 압축 기술이 재-적용될 수 있다).
(920)에 나타낸 바와 같이, 수정된 압축 기법이 재-압축된 데이터를 발생시키기 위해 칼럼 내 데이터를 압축하도록 적용될 수 있다. 그 후 이러한 재압축된 데이터는, (930)에 나타낸 바와 같이, 식별된 칼럼으로부터 선택도에 대해 재-압축된 데이터로부터의 데이터 비트를 인터리빙하여, 관계형 데이터베이스 테이블에 대한 업데이트된 멀티-칼럼 인덱스를 재-발생시키는 것의 일부분으로서 사용될 수 있다. 적어도 일부 실시예에 있어서, 인덱스 값은, 저장소에서 관계형 데이터베이스 테이블의 엔트리를 재-정렬 또는 재위치시키는 것 없이, 업데이트될 수 있다. 적어도 일부 실시예에 있어서, 원래의 멀티-칼럼 인덱스는 업데이트된 멀티-칼럼 인덱스가 완전히 발생 완료될 때까지 관계형 데이터베이스에서 액세스 요청(예를 들어, 판독 요청)에 서비스하도록 사용될 수 있다.
여기에서 설명되는 바와 같이 선택도에 대해 데이터 비트를 인터리빙함으로써 관계형 데이터베이스 시스템에 대해 멀티-칼럼 인덱스를 발생시키는 실시예는 다양한 다른 디바이스와 상호작용할 수 있는 하나 이상의 컴퓨터 시스템 상에서 실행될 수 있다. 하나의 그러한 컴퓨터 시스템이 도 10에 예시되어 있다. 상이한 실시예에 있어서, 컴퓨터 시스템(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 ISA, 또는 어느 다른 적합한 ISA와 같은 각종 명령어 세트 아키텍처(ISA) 중 어느 것이라도 구현하는 범용 또는 내장 프로세서일 수 있다. 멀티프로세서 시스템에 있어서, 프로세서(1010)의 각각은, 반드시는 아니지만, 공통으로 동일 ISA를 구현할 수 있다.
일부 실시예에 있어서, 적어도 하나의 프로세서(1010)는 그래픽 프로세싱 유닛일 수 있다. 그래픽 프로세싱 유닛 또는 GPU는 퍼스널 컴퓨터, 워크스테이션, 게임 콘솔 또는 다른 컴퓨팅 또는 전자 디바이스를 위한 전용 그래픽-렌더링 디바이스라고 생각될 수 있다. 현대의 GPU는 컴퓨터 그래픽을 조작 및 디스플레이하는데 매우 효율적일 수 있고, 그 고도 병렬 구조는 소정 범위의 복잡한 그래픽 알고리즘에 대해 전형적 CPU보다 그것들이 더 효과적이게 할 수 있다. 예를 들어, 그래픽 프로세서는 소정 수의 그래픽 원시 연산을 실행하는 것을 호스트 중앙 처리 장치(CPU)로 스크린에 직접 그리는 것보다 더 고속이게 하는 방식으로 그 연산을 구현할 수 있다. 다양한 실시예에 있어서, 그래픽 렌더링은, 적어도 부분적으로, 그러한 GPU 중 하나 상에서의 실행, 또는 그 중 2개 이상 상에서의 병렬 실행을 위해 구성된 프로그램 명령어에 의해 구현될 수 있다. GPU(들)는 프로그래머가 GPU(들)의 기능성을 인보크 가능하게 하는 하나 이상의 애플리케이션 프로그래머 인터페이스(API)를 구현할 수 있다. 적합한 GPU는 NVIDIA 코포레이션, ATI 테크놀로지(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)의 기능은, 예를 들어, 노스 브리지 및 사우스 브리지와 같은 2개 이상의 별개 컴포넌트로 나뉠 수 있다. 부가하여, 일부 실시예에 있어서, 시스템 메모리(1020)로의 인터페이스와 같은, I/O 인터페이스(1030)의 기능성 중 일부 또는 전부는 프로세서(1010)에 직접 편입될 수 있다.
네트워크 인터페이스(1040)는 컴퓨터 시스템(1000)과, 다른 컴퓨터 시스템과 같은, 네트워크에 배속된 다른 디바이스 간, 또는 컴퓨터 시스템(1000)의 노드들 간 데이터가 교환될 수 있게 하도록 구성될 수 있다. 부가적으로, 네트워크 인터페이스(1040)는 어느 적합한 유형의 이더넷 네트워크와 같은, 유선 또는 무선 일반 데이터 네트워크를 통하여, 예를 들어, 아날로그 음성 네트워크 또는 디지털 광섬유 통신 네트워크와 같은 원격통신/전화 네트워크를 통하여, 광섬유 채널 SAN과 같은 스토리지 에어리어 네트워크를 통하여, 또는 어느 다른 적합한 유형의 네트워크 및/또는 프로토콜이라도 통하여 통신을 지원할 수 있다.
입/출력 디바이스(1050)는, 일부 실시예에 있어서, 하나 이상의 컴퓨터 시스템(1000)에 의해 데이터를 검색 또는 입력하는데 적합한 하나 이상의 디스플레이 단말, 키보드, 키패드, 터치패드, 스캐닝 디바이스, 음성 또는 광학 인식 디바이스, 또는 어느 다른 디바이스라도 포함할 수 있다. 다중 입/출력 디바이스(1050)는 컴퓨터 시스템(1000) 내에 존재할 수도 있고 컴퓨터 시스템(1000)의 다양한 노드 상에 분산되어 있을 수도 있다. 일부 실시예에 있어서, 유사한 입/출력 디바이스는 컴퓨터 시스템(1000)과는 별개일 수 있고, 네트워크 인터페이스(1040)를 통해서와 같이, 유선 또는 무선 접속을 통해 컴퓨터 시스템(1000)의 하나 이상의 노드와 상호작용할 수 있다.
도 10에 도시된 바와 같이, 메모리(1020)는 여기에서 설명된 바와 같은 다양한 방법 및 기술을 구현하도록 구성된 프로그램 명령어(1025), 및 프로그램 명령어(1025)가 액세스가능한 다양한 데이터를 포함하는 데이터 저장소(1035)를 포함할 수 있다. 일 실시예에 있어서, 프로그램 명령어(1025)는 여기에서 설명된 바와 같은 그리고 도면에서 예시된 바와 같은 실시예의 소프트웨어 요소를 포함할 수 있다. 데이터 저장소(1035)는 실시예에서 사용될 수 있는 데이터를 포함할 수 있다. 다른 실시예에서는, 다른 또는 상이한 소프트웨어 요소 및 데이터가 포함될 수 있다.
당업자는 컴퓨터 시스템(1000)이 단지 예시적인 것이고 여기에서 설명된 바와 같은 스테레오 드로잉 기술의 범위를 제한하려는 의도가 아님을 인식할 것이다. 특히, 컴퓨터 시스템 및 디바이스는, 컴퓨터, 퍼스널 컴퓨터 시스템, 데스크톱 컴퓨터, 랩톱, 노트북, 또는 넷북 컴퓨터, 메인프레임 컴퓨터 시스템, 핸드헬드 컴퓨터, 워크스테이션, 네트워크 컴퓨터, 카메라, 셋톱 박스, 모바일 디바이스, 네트워크 디바이스, 인터넷 가전, PDA, 무선 전화기, 페이저, 소비자 디바이스, 비디오 게임 콘솔, 핸드헬드 비디오 게임 디바이스, 애플리케이션 서버, 저장 디바이스, 스위치, 모뎀, 라우터와 같은 주변 디바이스, 또는 일반적으로는 어느 유형의 컴퓨팅 또는 전자 디바이스라도 포함하여, 나타낸 기능을 수행할 수 있는 하드웨어 또는 소프트웨어의 어느 조합이라도 포함할 수 있다. 컴퓨터 시스템(1000)은 또한 예시되지 않은 다른 디바이스에 접속되어 있을 수 있거나, 그보다는, 자립형 시스템으로서 동작할 수 있다. 부가하여, 예시된 컴포넌트에 의해 제공된 기능성은 일부 실시예에서는 더 적은 컴포넌트로 조합될 수 있거나 부가적 컴포넌트에 분산될 수 있다. 유사하게, 일부 실시예에 있어서, 예시된 컴포넌트 중 일부의 기능성은 제공되지 않을 수 있고 그리고/또는 다른 부가적 기능성이 이용가능할 수 있다.
당업자는, 다양한 항목이 사용되고 있는 동안 저장소 상에 또는 메모리에 저장되어 있는 것으로 예시되어 있지만, 이들 항목 또는 그 일부는 메모리 관리 및 데이터 무결성의 목적으로 메모리와 다른 저장 디바이스 간에 전송될 수 있음을 또한 인식할 것이다. 대안으로, 다른 실시예에 있어서, 소프트웨어 컴포넌트 중 일부 또는 전부는 다른 디바이스 상의 메모리에서 실행할 수 있고 컴퓨터-간 통신을 통하여 예시된 컴퓨터 시스템과 통신할 수 있다. 시스템 컴포넌트 또는 데이터 구조 중 일부 또는 전부는, 다양한 예들이 위에서 설명되어 있는, 적합한 드라이브에 의해 판독되도록 컴퓨터-액세스가능한 매체 또는 휴대용 물품 상에 (예를 들어, 명령어 또는 구조화된 데이터로서) 또한 저장될 수 있다. 일부 실시예에 있어서, 컴퓨터 시스템(1000)과는 별개의 비-일시적 컴퓨터-액세스가능한 매체 상에 저장된 명령어는 네트워크 및/또는 무선 링크와 같은 통신 매체를 통하여 전해지는 전기, 전자기 또는 디지털 신호와 같은 신호 또는 전송 매체를 통하여 컴퓨터 시스템(1000)에 송신될 수 있다. 다양한 실시예는 컴퓨터-액세스가능한 매체 상에 상기 설명에 따라 구현된 명령어 및/또는 데이터를 수신, 송신 또는 저장하는 것을 더 포함할 수 있다. 따라서, 본 발명은 다른 컴퓨터 시스템 구성으로 실시될 수 있다.
여기에서 설명된 분산형 시스템 실시예 중 어느 것이라도, 또는 그 컴포넌트 중 어느 것이라도, 하나 이상의 웹 서비스로서 구현될 수 있음을 유념한다. 예를 들어, 데이터 웨어하우스 시스템 내 리더 노드는 네트워크-기반 서비스로서 클라이언트에 데이터 저장 서비스 및/또는 데이터베이스 서비스를 제시할 수 있다. 일부 실시예에 있어서, 네트워크-기반 서비스는 네트워크를 통하여 상호운용가능한 기계-대-기계 상호작용을 지원하도록 설계된 소프트웨어 및/또는 하드웨어 시스템에 의해 구현될 수 있다. 네트워크-기반 서비스는, 웹 서비스 기술 언어(WSDL)와 같은, 기계-프로세싱가능한 포맷으로 기술된 인터페이스를 가질 수 있다. 다른 시스템은 네트워크-기반 서비스의 인터페이스의 기술에 의해 규정된 방식으로 웹 서비스와 상호작용할 수 있다. 예를 들어, 네트워크-기반 서비스는 다른 시스템이 인보크할 수 있는 다양한 연산을 정의할 수 있고, 다른 시스템이 다양한 연산을 요청할 때 순응할 것으로 예상될 수 있는 특정 애플리케이션 프로그래밍 인터페이스(API)를 정의할 수 있다.
다양한 실시예에 있어서, 네트워크-기반 서비스는 네트워크-기반 서비스 요청과 연관된 파라미터 및/또는 데이터를 포함하는 메시지의 사용을 통해 요청 또는 인보크될 수 있다. 그러한 메시지는 확장성 마크업 언어(XML)와 같은 특정 마크업 언어에 따라 포맷팅될 수 있고, 그리고/또는 단순 객체 액세스 프로토콜(SOAP)과 같은 프로토콜을 사용하여 캡슐화될 수 있다. 웹 서비스 요청을 수행하기 위해, 네트워크-기반 서비스 클라이언트는 요청을 포함하는 메시지를 어셈블링하고, 하이퍼텍스트 전송 프로토콜(HTTP)과 같은 인터넷-기반 응용 계층 전송 프로토콜을 사용하여, 웹 서비스에 대응하는 주소지정가능한 엔드포인트(예를 들어, 유니폼 리소스 로케이터(URL))에 그 메시지를 전할 수 있다.
일부 실시예에 있어서, 웹 서비스는 메시지-기반 기술보다는 REST(Representational State Transfer)적인 기술을 사용하여 구현될 수 있다. 예를 들어, REST적인 기술에 따라 구현된 웹 서비스는, SOAP 메시지 내에 캡슐화되기보다는, PUT, GET 또는 DELETE와 같은 HTTP 메소드 내에 포함된 파라미터를 통해 인보크될 수 있다.
또한, 여기에서 설명된 실시예는 이하의 대표적 조항을 고려하여 이해될 수 있다:
1. 분산형 데이터 웨어하우스 시스템으로서:
복수의 계산 노드를 포함하고, 복수의 계산 노드는:
칼럼형 관계형 데이터베이스 테이블에 대한 저장소를 제공하는 하나 이상의 저장 디바이스로서, 복수의 데이터 블록을 포함하는 하나 이상의 저장 디바이스;
멀티-칼럼 키 발생기로서,
칼럼형 관계형 데이터베이스 테이블의 복수의 칼럼 중 적어도 2개의 칼럼을 식별하고,
식별된 적어도 2개의 칼럼으로부터 선택도에 대해 데이터 비트의 인터리빙에, 적어도 부분적으로, 기반하여 칼럼형 관계형 데이터베이스 테이블에 대한 멀티-칼럼 인덱스를 발생시키도록 구성되되, 상기 멀티-칼럼 인덱스는 칼럼형 관계형 데이터베이스 테이블의 각각의 엔트리에 대한 각각의 인덱스 값을 제공하는 멀티-칼럼 키 발생기;
기록 모듈로서,
복수의 데이터 블록 중 하나 이상 내 각각의 엔트리에 대한 각각의 인덱스 값에 따라 정렬된 칼럼형 관계형 데이터베이스 테이블의 엔트리를 저장하라고 하나 이상의 저장 디바이스에 지시하고, 그리고
하나 이상의 데이터 블록의 각각에 저장된 엔트리의 인덱스 값에 대응하는 멀티-칼럼 인덱스 값 범위를 나타내는 메타데이터를 저장하라고 하나 이상의 저장 디바이스에 지시하도록 구성된 기록 모듈을 구현하는, 분산형 데이터 웨어하우스 시스템.
2. 제1항에 있어서, 식별된 적어도 2개의 칼럼으로부터 선택도에 대해 데이터 비트의 인터리빙에, 적어도 부분적으로, 기반하여 칼럼형 관계형 데이터베이스 테이블에 대한 멀티-칼럼 인덱스를 발생시키기 위해, 멀티-칼럼 키 발생기는 순서 보존 압축 기술에 따라 적어도 2개의 칼럼 중 하나 이상으로부터의 데이터를 압축하도록 구성되는, 분산형 데이터 웨어하우스 시스템.
3. 제2항에 있어서, 순서 보존 압축 기술에 따라 적어도 2개의 칼럼 중 하나 이상으로부터의 데이터를 압축하기 위해, 멀티-칼럼 키 발생기는:
하나 이상의 칼럼 중 특정 칼럼에 대한 칼럼 데이터 계층을 칼럼형 관계형 데이터베이스 테이블의 하나 이상의 다른 칼럼으로부터 결정하고, 그리고
칼럼 데이터 계층에 따라 하나 이상의 칼럼 중 특정 칼럼 내 데이터를 그룹화하기 위해 하나 이상의 칼럼 중 특정 칼럼에 칼럼 데이터 계층을 적용하도록 더 구성되는, 분산형 데이터 웨어하우스 시스템.
4. 제3항에 있어서,
판독 모듈;
질의 엔진으로서,
선택 데이터에 대해 적어도 2개의 칼럼 중 하나 이상으로 또는 칼럼형 관계형 데이터베이스 테이블의 하나 이상의 다른 칼럼 중 하나 이상으로 지시된 질의의 표시를 수신하고,
식별된 적어도 2개의 칼럼으로부터 선택도에 대해 데이터 비트의 인터리빙에, 적어도 부분적으로, 기반하여 하나 이상의 술어 데이터 값으로서 선택 데이터를 식별시키는 하나 이상의 술어 데이터 값을 결정하도록 질의의 표시를 평가하고,
질의의 표시를 수신 및 평가하는 것에 응답하여,
선택 데이터에 대한 질의에 서비스하기 위해 판독될 하나 이상의 데이터 블록 중 특정 데이터 블록을 결정하도록 하나 이상의 데이터 블록의 각각에 대해 하나 이상의 술어 데이터 값에 대한 멀티-칼럼 인덱스 값 범위를 나타내는 메타데이터를 분석하고, 그리고
칼럼형 관계형 데이터베이스 테이블에 대한 데이터를 저장하고 있는 하나 이상의 데이터 블록 중 특정 데이터 블록을 판독하라고 판독 모듈에 지시하도록 구성된 질의 엔진을 더 포함하는, 분산형 데이터 웨어하우스 시스템.
5. 방법으로서:
하나 이상의 컴퓨팅 디바이스에 의해,
관계형 데이터베이스 테이블의 복수의 칼럼 중 적어도 2개의 칼럼을 식별하는 단계;
식별된 적어도 2개의 칼럼으로부터 선택도에 대해 데이터 비트의 인터리빙에, 적어도 부분적으로, 기반하여 관계형 데이터베이스 테이블에 대한 멀티-칼럼 인덱스를 발생시키는 단계로서, 상기 멀티-칼럼 인덱스는 관계형 데이터베이스 테이블의 각각의 엔트리에 대한 각각의 인덱스 값을 제공하는 발생시키는 단계; 및
각각의 엔트리에 대한 각각의 인덱스 값에 따라 관계형 데이터베이스 테이블의 엔트리를 저장하는 단계를 수행하는 것을 포함하는 방법.
6. 제5항에 있어서, 상기 관계형 데이터베이스 테이블에 대한 멀티-칼럼 인덱스를 발생시키는 단계는 적어도 2개의 칼럼 중 하나 이상에 대한 데이터를 압축하기 위해 순서-보존 압축 기술을 적용하는 단계를 포함하는 방법.
7. 제6항에 있어서, 상기 적어도 2개의 칼럼 중 하나 이상에 대한 데이터를 압축하기 위해 순서-보존 압축 기술을 적용하는 단계는 칼럼 데이터 계층에 따라 하나 이상의 칼럼 중 특정 칼럼 내 데이터를 그룹화하기 위해 하나 이상의 칼럼 중 특정 칼럼에 칼럼 데이터 계층을 적용하는 단계를 포함하는 방법.
8. 제5항에 있어서, 관계형 데이터베이스 테이블의 각각의 엔트리에 대한 각각의 인덱스 값은 분배 키 값이되, 상기 각각의 엔트리에 대한 각각의 인덱스 값에 따라 관계형 데이터베이스 테이블의 엔트리를 저장하는 단계는 관계형 데이터베이스 테이블의 엔트리에 대한 분배 키 값에, 적어도 부분적으로, 기반하여 복수의 다른 영속적 저장 디바이스 간에 영속될 관계형 데이터베이스 테이블의 엔트리를 분배하는 단계를 포함하는 방법.
9. 제5항에 있어서, 관계형 데이터베이스 테이블의 각각의 엔트리에 대한 각각의 인덱스 값은 정렬 키 값이되, 상기 각각의 엔트리에 대한 각각의 인덱스 값에 따라 관계형 데이터베이스 테이블의 엔트리를 저장하는 단계는 관계형 데이터베이스 테이블의 엔트리에 대한 정렬 키 값에 따라 정렬된 관계형 데이터베이스 테이블의 엔트리를 저장하는 단계를 포함하는 방법.
10. 제9항에 있어서,
관계형 데이터베이스 테이블에 대해 저장될 하나 이상의 부가적 엔트리를 수신하는 단계; 및
부가적 엔트리에 대해 식별된 적어도 2개의 칼럼으로부터 선택도에 대해 데이터 비트의 인터리빙에, 적어도 부분적으로, 기반하여 하나 이상의 정렬 키 값을 발생시키는 단계를 더 포함하는 방법.
11. 제9항에 있어서, 관계형 데이터베이스 테이블의 엔트리는 복수의 데이터 블록 간에 영속적으로 저장되고, 방법은 하나 이상의 데이터 블록의 각각에 저장된 엔트리의 정렬 키 값에 대응하는 멀티-칼럼 정렬 키 값 범위를 나타내는 메타데이터를 유지하는 단계를 더 포함하는 방법.
12. 제11항에 있어서,
선택 데이터에 대해 관계형 데이터베이스 테이블의 적어도 2개의 칼럼 중 하나 이상으로 지시된 질의의 표시를 수신하는 단계;
식별된 2개의 칼럼으로부터 선택도에 대해 데이터 비트의 인터리빙에, 적어도 부분적으로, 기반하여 하나 이상의 술어 데이터 값으로서 선택 데이터를 식별시키는 하나 이상의 술어 데이터 값을 결정하도록 질의의 표시를 평가하는 단계; 및
질의의 표시를 수신 및 평가하는 것에 응답하여,
선택 데이터에 대한 질의에 서비스하기 위해 판독될 복수의 데이터 블록 중 특정 데이터 블록을 식별하도록 하나 이상의 데이터 블록의 각각에 대해 하나 이상의 술어 데이터 값에 대한 멀티-칼럼 정렬 키 값 범위를 분석하는 단계를 더 포함하는 방법.
13. 제5항에 있어서, 하나 이상의 컴퓨팅 디바이스는 분산형 데이터베이스 시스템에서 하나 이상의 클라이언트에 대한 데이터를 저장하는 데이터 웨어하우스 클러스터를 구현하는 더 큰 컴퓨팅 디바이스 집합의 일부분이고, 하나 이상의 컴퓨팅 디바이스는 함께 데이터 웨어하우스 클러스터의 계산 노드를 구현하고, 상기 관계형 데이터베이스 테이블의 복수의 칼럼 중 적어도 2개의 칼럼을 식별하는 단계는 적어도 2개의 식별된 칼럼으로서 클라이언트-선택된 칼럼의 표시를 수신하는 단계를 포함하는 방법.
14. 비-일시적 컴퓨터-판독가능한 저장 매체로서, 하나 이상의 컴퓨팅 디바이스에 의해 실행될 때 하나 이상의 컴퓨팅 디바이스로 하여금:
관계형 데이터베이스 테이블의 복수의 칼럼 중 적어도 2개의 칼럼을 식별하는 단계;
식별된 적어도 2개의 칼럼으로부터 선택도에 대해 데이터 비트의 인터리빙에, 적어도 부분적으로, 기반하여 관계형 데이터베이스 테이블에 대한 멀티-칼럼 인덱스를 발생시키는 단계로서, 상기 멀티-칼럼 인덱스는 관계형 데이터베이스 테이블의 각각의 엔트리에 대한 각각의 인덱스 값을 제공하는 발생시키는 단계; 및
각각의 엔트리에 대한 각각의 인덱스 값에 따라 관계형 데이터베이스 테이블의 엔트리의 저장을 지시하는 단계를 구현하는 관계형 데이터베이스 시스템을 구현하게 하는 프로그램 명령어를 저장하는 비-일시적 컴퓨터-판독가능한 저장 매체.
15. 제14항에 있어서, 상기 관계형 데이터베이스 테이블에 대한 멀티-칼럼 인덱스를 발생시키는 단계에서, 프로그램 명령어는 데이터베이스 시스템으로 하여금 적어도 2개의 칼럼 중 하나 이상에 대한 데이터를 압축하기 위해 순서-보존 압축 기법을 적용하는 단계를 구현하게 하는 비-일시적 컴퓨터-판독가능한 저장 매체.
16. 제15항에 있어서, 프로그램 명령어는 데이터베이스 시스템으로 하여금:
관계형 데이터베이스 테이블에 대해 저장될 하나 이상의 부가적 엔트리를 수신하는 단계; 및
하나 이상의 부가적 엔트리에 대해 식별된 적어도 2개의 칼럼으로부터 선택도에 대해 데이터 비트의 인터리빙에, 적어도 부분적으로, 기반하여 하나 이상의 인덱스 값을 발생시키는 단계를 더 구현하게 하는 비-일시적 컴퓨터-판독가능한 저장 매체.
17. 제16항에 있어서, 프로그램 명령어 디바이스는 데이터베이스 시스템으로 하여금:
하나 이상의 칼럼 중 특정 칼럼의 선택도에, 적어도 부분적으로, 기반하여 하나 이상의 칼럼 중 특정 칼럼에 대한 재-압축 이벤트를 검출하는 단계;
하나 이상의 칼럼 중 특정 칼럼의 선택도에, 적어도 부분적으로, 기반하여 순서-보존 압축 기법을 수정하는 단계;
재-압축된 데이터를 발생시키기 위해 하나 이상의 부가적 엔트리를 포함하는 하나 이상의 칼럼에 대한 데이터를 압축하도록 수정된 순서-보존 압축 기법을 적용하는 단계; 및
하나 이상의 부가적 엔트리를 포함하는 관계형 데이터베이스 테이블의 엔트리의 각각에 대한 각각의 인덱스 값을 업데이트하기 위해 하나 이상의 칼럼 중 특정 칼럼에 대한 재-압축된 데이터에, 적어도 부분적으로, 기반하여 상기 관계형 데이터베이스 테이블에 대한 멀티-칼럼 인덱스를 발생시키는 단계를 수행하는 단계를 더 구현하게 하는 비-일시적 컴퓨터-판독가능한 저장 매체.
18. 제17항에 있어서, 프로그램 명령어는 데이터베이스 시스템으로 하여금:
재-압축된 데이터에, 적어도 부분적으로, 기반하여 관계형 데이터베이스 테이블에 대한 멀티-칼럼 인덱스를 발생시키는 단계의 수행 동안 판독 요청에 서비스하기 위해 멀티-칼럼 인덱스를 유지하는 단계;
재-압축된 데이터에, 적어도 부분적으로, 기반하여 관계형 데이터베이스 테이블에 대한 멀티-칼럼 인덱스를 발생시키는 단계의 완료시, 재-압축된 데이터에, 적어도 부분적으로, 기반하는 멀티-칼럼 인덱스에 대한 업데이트된 인덱스 값에, 적어도 부분적으로, 기반하여 판독 요청에 서비스하는 단계를 더 구현하게 하는 비-일시적 컴퓨터-판독가능한 저장 매체.
19. 제16항에 있어서, 상기 적어도 2개의 칼럼 중 하나 이상에 대한 데이터를 압축하기 위해 순서-보존 압축 기법을 적용하는 단계에서, 프로그램 명령어 디바이스는 데이터베이스 시스템으로 하여금 하나 이상의 부가적 엔트리의 각각에 대한 값을 표현하기 위해 부가적 데이터 비트를 부가하는 단계를 더 구현하게 하는 비-일시적 컴퓨터-판독가능한 저장 매체.
20. 제15항에 있어서, 적어도 2개의 칼럼 중 하나 이상에 대한 데이터를 압축하기 위해 순서-보존 압축 기법을 적용하는 단계에서, 프로그램 명령어는 데이터베이스 시스템으로 하여금 칼럼 데이터 계층에 따라 하나 이상의 칼럼 중 특정 칼럼 내 데이터를 그룹화하기 위해 하나 이상의 칼럼 중 특정 칼럼에 칼럼 데이터 계층을 적용하는 단계를 구현하게 하되, 칼럼 데이터 계층은 관계형 데이터베이스 테이블의 하나 이상의 다른 칼럼으로부터 결정되는 비-일시적 컴퓨터-판독가능한 저장 매체.
21. 제20항에 있어서, 관계형 데이터베이스 테이블의 각각의 엔트리에 대한 각각의 인덱스 값은 정렬 키 값이고, 관계형 데이터베이스 테이블의 엔트리는 관계형 데이터베이스 테이블의 엔트리에 대한 정렬 키 값에 따라 정렬되고, 관계형 데이터베이스 테이블의 엔트리는 복수의 데이터 블록 간에 영속적으로 저장되고, 프로그램 명령어는 데이터베이스 시스템으로 하여금:
하나 이상의 데이터 블록의 각각에 저장된 엔트리의 정렬 키 값에 대응하는 멀티-칼럼 정렬 키 값 범위를 나타내는 메타데이터를 유지하는 단계;
선택 데이터에 대해 적어도 2개의 칼럼 중 하나 이상으로 또는 관계형 데이터베이스 테이블의 하나 이상의 다른 칼럼 중 하나 이상으로 지시된 질의의 표시를 수신하는 단계;
식별된 2개의 칼럼으로부터 선택도에 대해 데이터 비트의 인터리빙에, 적어도 부분적으로, 기반하여 하나 이상의 술어 데이터 값으로서 선택 데이터를 식별시키는 하나 이상의 술어 데이터 값을 결정하도록 질의의 표시를 평가하는 단계; 및
질의의 표시를 수신 및 평가하는 것에 응답하여,
선택 데이터에 대한 질의에 서비스하기 위해 판독될 복수의 데이터 블록 중 특정 데이터 블록을 식별하도록 하나 이상의 데이터 블록의 각각에 대해 하나 이상의 술어 데이터 값에 대한 멀티-칼럼 정렬 키 값 범위를 분석하는 단계를 더 구현하게 하는 비-일시적 컴퓨터-판독가능한 저장 매체.
22. 제14항에 있어서, 관계형 데이터베이스 테이블의 각각의 엔트리에 대한 각각의 인덱스 값은 분배 키 값이고, 상기 각각의 엔트리에 대한 각각의 인덱스 값에 따라 관계형 데이터베이스 테이블의 엔트리의 저장을 지시하는 단계에서, 프로그램 명령어는 데이터베이스 시스템으로 하여금 관계형 데이터베이스 테이블의 엔트리에 대한 분배 키 값에, 적어도 부분적으로, 기반하여 복수의 다른 영속적 저장 디바이스 간에 영속될 관계형 데이터베이스 테이블의 엔트리를 분배하는 단계를 구현하게 하는 비-일시적 컴퓨터-판독가능한 저장 매체.
여기에서 설명되고 도면에서 예시된 바와 같은 다양한 방법은 방법의 예시적 실시예를 표현한다. 방법은 소프트웨어, 하드웨어, 또는 그들의 조합으로 구현될 수 있다. 방법의 순서는 변경될 수 있고, 다양한 구성요소가 부가, 순서변경, 조합, 생략, 수정 등이 될 수 있다.
본 개시가 유익한 당업자에게 자명할 바와 같이 다양한 수정 및 변경이 이루어질 수 있다. 본 발명은 모든 그러한 수정 및 변경을 포괄하고, 그에 따라, 위 설명은 제한적 의미라기보다는 예시적으로 간주되려는 의도이다.

Claims (15)

  1. 분산형 데이터 웨어하우스 시스템(distributed data warehouse system)으로서,
    복수의 계산 노드를 포함하되, 상기 복수의 계산 노드는,
    칼럼형 관계형 데이터베이스 테이블(columnar relational database table)에 대한 저장소를 제공하는 하나 이상의 저장 디바이스로서, 복수의 데이터 블록을 포함하는 상기 하나 이상의 저장 디바이스;
    멀티-칼럼 키 발생기로서,
    상기 칼럼형 관계형 데이터베이스 테이블의 복수의 칼럼 중 적어도 2개의 칼럼을 식별하고,
    식별된 상기 적어도 2개의 칼럼으로부터의 각각의 데이터 값의 각각의 부분으로부터 선택도에 대해 각각의 데이터 비트의 인터리빙에, 적어도 부분적으로, 기반하여 상기 칼럼형 관계형 데이터베이스 테이블에 대한 멀티-칼럼 인덱스를 발생시키도록 구성되되, 상기 멀티-칼럼 인덱스는 상기 칼럼형 관계형 데이터베이스 테이블의 각각의 엔트리에 대한 각각의 인덱스 값을 제공하는 상기 멀티-칼럼 키 발생기;
    기록 모듈로서,
    상기 복수의 데이터 블록 중 하나 이상 내 각각의 엔트리에 대한 상기 각각의 인덱스 값에 따라 정렬된 상기 칼럼형 관계형 데이터베이스 테이블의 상기 엔트리를 저장하라고 상기 하나 이상의 저장 디바이스에 지시하고, 그리고
    상기 하나 이상의 데이터 블록의 각각에 저장된 상기 엔트리의 상기 인덱스 값에 대응하는 멀티-칼럼 인덱스 값 범위를 나타내는 메타데이터를 저장하라고 상기 하나 이상의 저장 디바이스에 지시하도록 구성된 상기 기록 모듈을 구현하는, 분산형 데이터 웨어하우스 시스템.
  2. 제1항에 있어서, 식별된 상기 적어도 2개의 칼럼으로부터의 상기 각각의 데이터 값의 상기 각각의 부분으로부터 선택도에 대해 상기 각각의 데이터 비트의 인터리빙에, 적어도 부분적으로, 기반하여 상기 칼럼형 관계형 데이터베이스 테이블에 대한 상기 멀티-칼럼 인덱스를 발생시키기 위해, 상기 멀티-칼럼 키 발생기는 순서 보존 압축 기술에 따라 상기 적어도 2개의 칼럼 중 하나 이상으로부터의 데이터를 압축하도록 구성되는, 분산형 데이터 웨어하우스 시스템.
  3. 제2항에 있어서, 순서 보존 압축 기술에 따라 상기 적어도 2개의 칼럼 중 상기 하나 이상으로부터의 데이터를 압축하기 위해, 상기 멀티-칼럼 키 발생기는,
    상기 하나 이상의 칼럼 중 특정 칼럼에 대한 칼럼 데이터 계층을 상기 칼럼형 관계형 데이터베이스 테이블의 하나 이상의 다른 칼럼으로부터 결정하고, 그리고
    상기 칼럼 데이터 계층에 따라 상기 하나 이상의 칼럼 중 상기 특정 칼럼 내 데이터를 그룹화하기 위해 상기 하나 이상의 칼럼 중 상기 특정 칼럼에 상기 칼럼 데이터 계층을 적용하도록 더 구성되는, 분산형 데이터 웨어하우스 시스템.
  4. 제3항에 있어서,
    판독 모듈; 및
    질의 엔진을 더 포함하되, 상기 질의 엔진은,
    선택 데이터에 대해 상기 적어도 2개의 칼럼 중 하나 이상으로 또는 상기 칼럼형 관계형 데이터베이스 테이블의 상기 하나 이상의 다른 칼럼 중 하나 이상으로 지시된 질의의 표시를 수신하고,
    식별된 상기 적어도 2개의 칼럼으로부터의 상기 각각의 데이터 값의 상기 각각의 부분으로부터 선택도에 대해 상기 각각의 데이터 비트의 인터리빙에, 적어도 부분적으로, 기반하여 하나 이상의 술어 데이터 값으로서 상기 선택 데이터를 식별시키는 상기 하나 이상의 술어 데이터 값을 결정하도록 상기 질의의 상기 표시를 평가하고,
    상기 질의의 상기 표시를 수신 및 평가하는 것에 응답하여,
    상기 선택 데이터에 대한 상기 질의에 서비스하기 위해 판독될 상기 하나 이상의 데이터 블록 중 특정 데이터 블록을 결정하도록 상기 하나 이상의 데이터 블록의 각각에 대해 상기 하나 이상의 술어 데이터 값에 대한 상기 멀티-칼럼 인덱스 값 범위를 나타내는 상기 메타데이터를 분석하고, 그리고
    상기 칼럼형 관계형 데이터베이스 테이블에 대한 데이터를 저장하고 있는 상기 하나 이상의 데이터 블록 중 상기 특정 데이터 블록을 판독하라고 상기 판독 모듈에 지시하도록 구성된, 분산형 데이터 웨어하우스 시스템.
  5. 방법으로서,
    하나 이상의 컴퓨팅 디바이스에 의해,
    관계형 데이터베이스 테이블의 복수의 칼럼 중 적어도 2개의 칼럼을 식별하는 단계;
    식별된 상기 적어도 2개의 칼럼으로부터의 각각의 데이터 값의 각각의 부분으로부터 선택도에 대해 각각의 데이터 비트의 인터리빙에, 적어도 부분적으로, 기반하여 상기 관계형 데이터베이스 테이블에 대한 멀티-칼럼 인덱스를 발생시키는 단계로서, 상기 멀티-칼럼 인덱스는 상기 관계형 데이터베이스 테이블의 각각의 엔트리에 대한 각각의 인덱스 값을 제공하는 상기 발생시키는 단계; 및
    각각의 엔트리에 대한 상기 각각의 인덱스 값에 따라 상기 관계형 데이터베이스 테이블의 상기 엔트리를 저장하는 단계를 수행하는 것을 포함하는 방법.
  6. 제5항에 있어서, 상기 관계형 데이터베이스 테이블에 대한 상기 멀티-칼럼 인덱스를 발생시키는 단계는 상기 적어도 2개의 칼럼 중 하나 이상에 대한 데이터를 압축하기 위해 순서-보존 압축 기술을 적용하는 단계를 포함하는 방법.
  7. 제6항에 있어서, 상기 적어도 2개의 칼럼 중 상기 하나 이상에 대한 데이터를 압축하기 위해 상기 순서-보존 압축 기술을 적용하는 단계는 칼럼 데이터 계층에 따라 상기 하나 이상의 칼럼 중 특정 칼럼 내 데이터를 그룹화하기 위해 상기 하나 이상의 칼럼 중 상기 특정 칼럼에 상기 칼럼 데이터 계층을 적용하는 단계를 포함하는 방법.
  8. 제5항에 있어서, 상기 관계형 데이터베이스 테이블의 각각의 엔트리에 대한 상기 각각의 인덱스 값은 분배 키 값이되, 각각의 엔트리에 대한 상기 각각의 인덱스 값에 따라 상기 관계형 데이터베이스 테이블의 상기 엔트리를 저장하는 단계는 상기 관계형 데이터베이스 테이블의 상기 엔트리에 대한 상기 분배 키 값에, 적어도 부분적으로, 기반하여 복수의 다른 영속적 저장 디바이스 간에 영속될 상기 관계형 데이터베이스 테이블의 상기 엔트리를 분배하는 단계를 포함하는 방법.
  9. 제5항에 있어서, 상기 관계형 데이터베이스 테이블의 각각의 엔트리에 대한 상기 각각의 인덱스 값은 정렬 키 값이되, 각각의 엔트리에 대한 상기 각각의 인덱스 값에 따라 상기 관계형 데이터베이스 테이블의 상기 엔트리를 저장하는 단계는 상기 관계형 데이터베이스 테이블의 상기 엔트리에 대한 상기 정렬 키 값에 따라 정렬된 상기 관계형 데이터베이스 테이블의 상기 엔트리를 저장하는 단계를 포함하는 방법.
  10. 제9항에 있어서,
    상기 관계형 데이터베이스 테이블에 대해 저장될 하나 이상의 부가적 엔트리를 수신하는 단계; 및
    상기 부가적 엔트리에 대해 식별된 상기 적어도 2개의 칼럼으로부터의 상기 각각의 데이터 값의 상기 각각의 부분으로부터 선택도에 대해 상기 각각의 데이터 비트의 상기 인터리빙에, 적어도 부분적으로, 기반하여 하나 이상의 정렬 키 값을 발생시키는 단계를 더 포함하는 방법.
  11. 제9항에 있어서, 상기 관계형 데이터베이스 테이블의 상기 엔트리는 복수의 데이터 블록 간에 영속적으로 저장되고, 상기 방법은 하나 이상의 데이터 블록의 각각에 저장된 상기 엔트리의 상기 정렬 키 값에 대응하는 멀티-칼럼 정렬 키 값 범위를 나타내는 메타데이터를 유지하는 단계를 더 포함하는 방법.
  12. 제11항에 있어서,
    선택 데이터에 대해 상기 관계형 데이터베이스 테이블의 상기 적어도 2개의 칼럼 중 하나 이상으로 지시된 질의의 표시를 수신하는 단계;
    식별된 2개의 칼럼으로부터 선택도에 대해 데이터 비트의 상기 인터리빙에, 적어도 부분적으로, 기반하여 하나 이상의 술어 데이터 값으로서 상기 선택 데이터를 식별시키는 상기 하나 이상의 술어 데이터 값을 결정하도록 상기 질의의 상기 표시를 평가하는 단계; 및
    상기 질의의 상기 표시를 수신 및 평가하는 것에 응답하여,
    상기 선택 데이터에 대한 상기 질의에 서비스하기 위해 판독될 상기 복수의 데이터 블록 중 특정 데이터 블록을 식별하도록 상기 하나 이상의 데이터 블록의 각각에 대해 상기 하나 이상의 술어 데이터 값에 대한 상기 멀티-칼럼 정렬 키 값 범위를 분석하는 단계를 더 포함하는 방법.
  13. 제5항에 있어서, 상기 하나 이상의 컴퓨팅 디바이스는 분산형 데이터베이스 시스템에서 하나 이상의 클라이언트에 대한 데이터를 저장하는 데이터 웨어하우스 클러스터를 구현하는 더 큰 컴퓨팅 디바이스 집합의 일부분이고, 상기 하나 이상의 컴퓨팅 디바이스는 함께 상기 데이터 웨어하우스 클러스터의 계산 노드를 구현하고, 상기 관계형 데이터베이스 테이블의 상기 복수의 칼럼 중 상기 적어도 2개의 칼럼을 식별하는 단계는 식별된 상기 적어도 2개의 칼럼으로서 클라이언트-선택된 칼럼의 표시를 수신하는 단계를 포함하는 방법.
  14. 시스템으로서,
    하나 이상의 프로세서; 및
    하나 이상의 메모리를 포함하되, 상기 메모리는, 하나 이상의 컴퓨팅 디바이스에 의해 실행될 때, 상기 하나 이상의 프로세서로 하여금,
    관계형 데이터베이스 테이블의 복수의 칼럼 중 적어도 2개의 칼럼을 식별하는 단계;
    식별된 상기 적어도 2개의 칼럼으로부터의 각각의 데이터 값의 각각의 부분으로부터 선택도에 대해 각각의 데이터 비트의 인터리빙에, 적어도 부분적으로, 기반하여 상기 관계형 데이터베이스 테이블에 대한 멀티-칼럼 인덱스를 발생시키는 단계로서, 상기 멀티-칼럼 인덱스는 상기 관계형 데이터베이스 테이블의 각각의 엔트리에 대한 각각의 인덱스 값을 제공하는 상기 발생시키는 단계; 및
    각각의 엔트리에 대한 상기 각각의 인덱스 값에 따라 상기 관계형 데이터베이스 테이블의 상기 엔트리의 저장을 지시하는 단계를 구현하는 관계형 데이터베이스 시스템을 구현하게 하는 프로그램 명령어를 저장해 놓은 시스템.
  15. 제14항에 있어서, 상기 관계형 데이터베이스 테이블에 대한 상기 멀티-칼럼 인덱스를 발생시키는 단계에서, 상기 프로그램 명령어는 상기 데이터베이스 시스템으로 하여금 상기 적어도 2개의 칼럼 중 하나 이상에 대한 데이터를 압축하기 위해 순서-보존 압축 기법을 적용하는 단계를 구현하게 하는 시스템.
KR1020167004339A 2013-07-29 2014-07-29 선택도에 대해 데이터 비트를 인터리빙함으로써 관계형 데이터베이스에 대한 멀티-칼럼 인덱스의 발생 KR101806055B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/953,432 US10394848B2 (en) 2013-07-29 2013-07-29 Generating a multi-column index for relational databases by interleaving data bits for selectivity
US13/953,432 2013-07-29
PCT/US2014/048531 WO2015017361A1 (en) 2013-07-29 2014-07-29 Generating a multi-column index for relational databases by interleaving data bits for selectivity

Publications (2)

Publication Number Publication Date
KR20160033761A KR20160033761A (ko) 2016-03-28
KR101806055B1 true KR101806055B1 (ko) 2017-12-06

Family

ID=52391349

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167004339A KR101806055B1 (ko) 2013-07-29 2014-07-29 선택도에 대해 데이터 비트를 인터리빙함으로써 관계형 데이터베이스에 대한 멀티-칼럼 인덱스의 발생

Country Status (8)

Country Link
US (3) US10394848B2 (ko)
EP (1) EP3028137B1 (ko)
JP (1) JP6388655B2 (ko)
KR (1) KR101806055B1 (ko)
CN (1) CN105408857B (ko)
CA (1) CA2920033C (ko)
SG (1) SG11201600613UA (ko)
WO (1) WO2015017361A1 (ko)

Families Citing this family (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9489423B1 (en) * 2013-08-22 2016-11-08 Amazon Technologies, Inc. Query data acquisition and analysis
US9588978B2 (en) 2013-09-30 2017-03-07 International Business Machines Corporation Merging metadata for database storage regions based on overlapping range values
US9400817B2 (en) * 2013-12-31 2016-07-26 Sybase, Inc. In-place index repair
US9715515B2 (en) * 2014-01-31 2017-07-25 Microsoft Technology Licensing, Llc External data access with split index
EP3117347B1 (en) 2014-03-10 2020-09-23 Interana, Inc. Systems and methods for rapid data analysis
JP6273969B2 (ja) * 2014-03-28 2018-02-07 富士通株式会社 データ加工装置、情報処理装置、方法、およびプログラム
US9519687B2 (en) * 2014-06-16 2016-12-13 International Business Machines Corporation Minimizing index maintenance costs for database storage regions using hybrid zone maps and indices
US10057217B2 (en) * 2014-07-15 2018-08-21 Sap Se System and method to secure sensitive content in a URI
US10599648B2 (en) * 2014-09-26 2020-03-24 Applied Materials, Inc. Optimized storage solution for real-time queries and data modeling
US9747331B2 (en) * 2014-10-06 2017-08-29 International Business Machines Corporation Limiting scans of loosely ordered and/or grouped relations in a database
US9563687B1 (en) 2014-11-13 2017-02-07 Amazon Technologies, Inc. Storage configuration in data warehouses
US9772848B2 (en) * 2014-11-14 2017-09-26 Intel Corporation Three-dimensional morton coordinate conversion processors, methods, systems, and instructions
US9772850B2 (en) * 2014-11-14 2017-09-26 Intel Corporation Morton coordinate adjustment processors, methods, systems, and instructions
US9772849B2 (en) * 2014-11-14 2017-09-26 Intel Corporation Four-dimensional morton coordinate conversion processors, methods, systems, and instructions
US10042887B2 (en) * 2014-12-05 2018-08-07 International Business Machines Corporation Query optimization with zone map selectivity modeling
US10296507B2 (en) * 2015-02-12 2019-05-21 Interana, Inc. Methods for enhancing rapid data analysis
KR101696338B1 (ko) * 2015-02-16 2017-01-13 네이버 주식회사 컬럼-인덱스 데이터 포맷을 이용하여 빅데이터를 효율적으로 처리 및 분석하는 시스템 및 방법
JP6241449B2 (ja) * 2015-05-21 2017-12-06 横河電機株式会社 データ管理システム及びデータ管理方法
US10303685B2 (en) 2015-06-08 2019-05-28 International Business Machines Corporation Data table performance optimization
US10241979B2 (en) * 2015-07-21 2019-03-26 Oracle International Corporation Accelerated detection of matching patterns
KR102385908B1 (ko) * 2015-08-11 2022-04-13 삼성전자주식회사 스토리지 장치로부터 데이터를 검색하는 방법
US10282349B2 (en) 2015-08-26 2019-05-07 International Business Machines Corporation Method for storing data elements in a database
US10360233B2 (en) * 2015-11-19 2019-07-23 Oracle International Corporation In-memory key-value store for a multi-model database
US20170220656A1 (en) * 2016-02-03 2017-08-03 Adp, Llc Information Access System
US10572462B2 (en) * 2016-04-10 2020-02-25 International Business Machines Corporation Efficient handling of sort payload in a column organized relational database
CN105956046A (zh) * 2016-04-25 2016-09-21 广州神马移动信息科技有限公司 一种字典的更新方法、***和服务器
US10346403B2 (en) * 2016-05-06 2019-07-09 International Business Machines Corporation Value range synopsis in column-organized analytical databases
US11392620B2 (en) * 2016-06-14 2022-07-19 Micro Focus Llc Clustering log messages using probabilistic data structures
US10114846B1 (en) * 2016-06-24 2018-10-30 Amazon Technologies, Inc. Balanced distribution of sort order values for a multi-column sort order of a relational database
US10685003B2 (en) * 2016-06-29 2020-06-16 International Business Machines Corporation Building and using an atomic key with partial key searching capability
US10521411B2 (en) * 2016-08-10 2019-12-31 Moonshadow Mobile, Inc. Systems, methods, and data structures for high-speed searching or filtering of large datasets
US10650017B1 (en) * 2016-08-29 2020-05-12 Amazon Technologies, Inc. Tiered storage for data processing
US20180165327A1 (en) * 2016-12-14 2018-06-14 Google Inc. Avoiding index-navigation deadlocks in database systems
KR101795564B1 (ko) * 2017-01-09 2017-11-09 네이버 주식회사 컬럼-인덱스 데이터 포맷을 이용하여 빅데이터를 효율적으로 처리 및 분석하는 시스템 및 방법
CN107391525B (zh) * 2017-03-10 2020-08-07 阿里巴巴集团控股有限公司 针对数据库的指令处理方法及装置
CN106997378B (zh) * 2017-03-13 2020-05-15 上海摩库数据技术有限公司 基于Redis的数据库数据聚合同步的方法
US10242037B2 (en) 2017-04-20 2019-03-26 Servicenow, Inc. Index suggestion engine for relational databases
US20190005082A1 (en) * 2017-07-03 2019-01-03 Infosys Limited Method and system for committing group atomic transaction in non-relational database
US20190050436A1 (en) * 2017-08-14 2019-02-14 International Business Machines Corporation Content-based predictive organization of column families
CN107577436B (zh) * 2017-09-18 2020-07-07 杭州时趣信息技术有限公司 一种数据存储方法及装置
CN108009254A (zh) 2017-12-05 2018-05-08 北京百度网讯科技有限公司 多索引方法及装置、云***以及计算机可读存储介质
US11073828B2 (en) * 2017-12-08 2021-07-27 Samsung Electronics Co., Ltd. Compression of semantic information for task and motion planning
CN110019218B (zh) 2017-12-08 2023-08-25 阿里巴巴集团控股有限公司 数据存储与查询方法及设备
US11411578B1 (en) * 2017-12-31 2022-08-09 Teradata Us, Inc. Bit reordering compression
US11163764B2 (en) * 2018-06-01 2021-11-02 International Business Machines Corporation Predictive data distribution for parallel databases to optimize storage and query performance
US11157496B2 (en) * 2018-06-01 2021-10-26 International Business Machines Corporation Predictive data distribution for parallel databases to optimize storage and query performance
US11151110B2 (en) * 2018-09-24 2021-10-19 Salesforce.Com, Inc. Identification of records for post-cloning tenant identifier translation
CN109800233A (zh) * 2019-01-24 2019-05-24 博云视觉科技(青岛)有限公司 一种大数据融合搜索方法
JP6702582B2 (ja) * 2019-05-09 2020-06-03 株式会社東芝 データベース管理システムおよびデータベース管理方法
US11106698B2 (en) * 2019-06-11 2021-08-31 Sap Se Multi-master with ownership transfer
US11119999B2 (en) * 2019-07-24 2021-09-14 Sap Se Zero-overhead hash filters
US20210149866A1 (en) * 2019-11-20 2021-05-20 Google Llc Universal data index for rapid data exploration
CN111045994B (zh) * 2019-12-25 2023-08-22 山东方寸微电子科技有限公司 一种基于kv数据库的文件分类检索方法及***
US10769150B1 (en) * 2019-12-26 2020-09-08 Snowflake Inc. Pruning indexes to enhance database query processing
CN111427885B (zh) * 2020-03-03 2023-06-09 中科驭数(北京)科技有限公司 基于查找表的数据库管理方法和装置
US11063601B1 (en) 2020-04-20 2021-07-13 Netapp, Inc. File system format for persistent memory
CN111752953A (zh) * 2020-06-29 2020-10-09 北京百度网讯科技有限公司 标识生成方法、装置、设备以及存储介质
CN112035413B (zh) * 2020-09-03 2024-02-20 杭州海康威视***技术有限公司 元数据信息查询方法、装置及存储介质
CN113312313B (zh) * 2021-01-29 2023-09-29 淘宝(中国)软件有限公司 数据查询方法、非易失性存储介质及电子设备
CN112925859A (zh) * 2021-03-31 2021-06-08 中国建设银行股份有限公司 数据存储方法和装置
US11294929B1 (en) 2021-06-09 2022-04-05 Aeec Smart water data analytics
US11954134B2 (en) * 2021-12-08 2024-04-09 Sap Se Visualization of complex hierarchy data with interactive adjustments
CN115563103B (zh) * 2022-09-15 2023-12-08 河南星环众志信息科技有限公司 一种多维度聚合方法、***、电子设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110213775A1 (en) * 2010-03-01 2011-09-01 International Business Machines Corporation Database Table Look-up
US20110246432A1 (en) * 2007-08-27 2011-10-06 Teradata Us, Inc. Accessing data in column store database based on hardware compatible data structures

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5918225A (en) * 1993-04-16 1999-06-29 Sybase, Inc. SQL-based database system with improved indexing methodology
US5924088A (en) * 1997-02-28 1999-07-13 Oracle Corporation Index selection for an index access path
US6460026B1 (en) * 1999-03-30 2002-10-01 Microsoft Corporation Multidimensional data ordering
US6421662B1 (en) * 1999-06-04 2002-07-16 Oracle Corporation Generating and implementing indexes based on criteria set forth in queries
US6618720B1 (en) * 2000-06-15 2003-09-09 Ncr Corporation Common spool files for maintaining join indexes
US7450438B1 (en) * 2002-06-20 2008-11-11 Cisco Technology, Inc. Crossbar apparatus for a forwarding table memory in a router
US7158996B2 (en) * 2003-01-27 2007-01-02 International Business Machines Corporation Method, system, and program for managing database operations with respect to a database table
EP1441293B1 (en) 2003-02-18 2004-08-04 Hermann Dr.-Ing. Tropf Database and method for organizing data elements
US20050027692A1 (en) * 2003-07-29 2005-02-03 International Business Machines Corporation. Method, system, and program for accessing data in a database table
US7647291B2 (en) * 2003-12-30 2010-01-12 Microsoft Corporation B-tree compression using normalized index keys
US20130104251A1 (en) * 2005-02-01 2013-04-25 Newsilike Media Group, Inc. Security systems and methods for use with structured and unstructured data
US7822776B2 (en) * 2005-12-31 2010-10-26 Michael Wayne Martin Multidimensional dynamic clustering (MDDC)
US7809759B1 (en) * 2006-08-18 2010-10-05 Unisys Corporation Dynamic preconditioning of A B+tree
US20100018569A1 (en) * 2006-09-28 2010-01-28 B-Pods Holdings Pty. Ltd. Solar Energy Harvesting Apparatus
US7577658B2 (en) * 2006-10-06 2009-08-18 Microsoft Corporation Hierarchical locking in B-tree indexes
US7827218B1 (en) 2006-11-18 2010-11-02 X-Engines, Inc. Deterministic lookup using hashed key in a multi-stride compressed trie structure
US8688723B2 (en) 2007-12-21 2014-04-01 Hewlett-Packard Development Company, L.P. Methods and apparatus using range queries for multi-dimensional data in a database
WO2010028279A1 (en) 2008-09-05 2010-03-11 Arcsight, Inc. Storing log data efficiently while supporting querying
US20100088309A1 (en) * 2008-10-05 2010-04-08 Microsoft Corporation Efficient large-scale joining for querying of column based data encoded structures
JPWO2010067897A1 (ja) * 2008-12-12 2012-05-24 日本電気株式会社 データ圧縮装置、データ圧縮方法、データ圧縮プログラム、および、圧縮データ通信システム
US8055687B2 (en) * 2009-01-20 2011-11-08 Hewlett-Packard Development Company, L.P. System and method for determining intervals of a space filling curve in a query box
US9298761B2 (en) * 2009-04-30 2016-03-29 Hewlett Packard Enterprise Development Lp Adaptive merging in database indexes
CN101719141B (zh) * 2009-12-24 2011-09-07 成都市华为赛门铁克科技有限公司 基于目录对象的文件处理方法和***
CN102117305B (zh) * 2010-01-06 2013-09-11 ***通信集团公司 查询数据的***、方法和数据管理***
US9355109B2 (en) * 2010-06-11 2016-05-31 The Research Foundation For The State University Of New York Multi-tier caching
US8935233B2 (en) 2010-09-28 2015-01-13 International Business Machines Corporation Approximate index in relational databases
EP2445049B1 (en) 2010-10-22 2018-06-20 Belenos Clean Power Holding AG Electrode (anode and cathode) performance enhancement by composite formation with graphene oxide
US20120323923A1 (en) * 2011-06-14 2012-12-20 Bank Of America Corporation Sorting Data in Limited Memory
US8554730B2 (en) 2011-07-29 2013-10-08 International Business Machines Corporation Adding a key column to a table to be replicated
US8806160B2 (en) 2011-08-16 2014-08-12 Pure Storage, Inc. Mapping in a storage system
US9043310B2 (en) * 2011-11-08 2015-05-26 International Business Machines Corporation Accessing a dimensional data model when processing a query
US9244980B1 (en) * 2012-05-05 2016-01-26 Paraccel Llc Strategies for pushing out database blocks from cache
US8996544B2 (en) * 2012-09-28 2015-03-31 Oracle International Corporation Pruning disk blocks of a clustered table in a relational database management system
US9430550B2 (en) * 2012-09-28 2016-08-30 Oracle International Corporation Clustering a table in a relational database management system
US9747313B2 (en) * 2012-12-19 2017-08-29 Sap Se Timeline index for managing temporal data
US9323798B2 (en) * 2013-01-14 2016-04-26 International Business Machines Corporation Storing a key value to a deleted row based on key range density
US20140280375A1 (en) * 2013-03-15 2014-09-18 Ryan Rawson Systems and methods for implementing distributed databases using many-core processors
EP2973051A4 (en) * 2013-03-15 2016-11-16 Amazon Tech Inc EVOLUTIVE ANALYSIS PLATFORM FOR SEMI-STRUCTURED DATA

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110246432A1 (en) * 2007-08-27 2011-10-06 Teradata Us, Inc. Accessing data in column store database based on hardware compatible data structures
US20110213775A1 (en) * 2010-03-01 2011-09-01 International Business Machines Corporation Database Table Look-up

Also Published As

Publication number Publication date
US20190377743A1 (en) 2019-12-12
US20150032684A1 (en) 2015-01-29
US20220156289A1 (en) 2022-05-19
US11132384B2 (en) 2021-09-28
CN105408857B (zh) 2019-04-05
SG11201600613UA (en) 2016-02-26
JP6388655B2 (ja) 2018-09-12
CN105408857A (zh) 2016-03-16
WO2015017361A1 (en) 2015-02-05
CA2920033A1 (en) 2015-02-05
JP2016532199A (ja) 2016-10-13
EP3028137B1 (en) 2020-09-02
US10394848B2 (en) 2019-08-27
CA2920033C (en) 2020-08-11
EP3028137A4 (en) 2017-05-17
KR20160033761A (ko) 2016-03-28
EP3028137A1 (en) 2016-06-08

Similar Documents

Publication Publication Date Title
US11132384B2 (en) Generating a multi-column index for relational databases by interleaving data bits for selectivity
US10372723B2 (en) Efficient query processing using histograms in a columnar database
US9367574B2 (en) Efficient query processing in columnar databases using bloom filters
US11494339B2 (en) Multi-level compression for storing data in a data store
US10114846B1 (en) Balanced distribution of sort order values for a multi-column sort order of a relational database
US10061834B1 (en) Incremental out-of-place updates for datasets in data stores
US10860562B1 (en) Dynamic predicate indexing for data stores
US10095738B1 (en) Dynamic assignment of logical partitions according to query predicate evaluations

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right