KR101255639B1 - 컬럼 기반 데이터베이스 시스템 및 데이터베이스 시스템의 조인 인덱스를 이용한 조인 처리 방법 - Google Patents

컬럼 기반 데이터베이스 시스템 및 데이터베이스 시스템의 조인 인덱스를 이용한 조인 처리 방법 Download PDF

Info

Publication number
KR101255639B1
KR101255639B1 KR1020120005939A KR20120005939A KR101255639B1 KR 101255639 B1 KR101255639 B1 KR 101255639B1 KR 1020120005939 A KR1020120005939 A KR 1020120005939A KR 20120005939 A KR20120005939 A KR 20120005939A KR 101255639 B1 KR101255639 B1 KR 101255639B1
Authority
KR
South Korea
Prior art keywords
join
index
storage unit
column
key value
Prior art date
Application number
KR1020120005939A
Other languages
English (en)
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 홍익대학교 산학협력단
Priority to KR1020120005939A priority Critical patent/KR101255639B1/ko
Application granted granted Critical
Publication of KR101255639B1 publication Critical patent/KR101255639B1/ko

Links

Images

Classifications

    • 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/2246Trees, e.g. B+trees
    • 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/24558Binary matching operations
    • G06F16/2456Join operations

Landscapes

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

Abstract

사실 테이블과 차원 테이블 사이의 자연 조인(nature join)을 보다 효율적으로 처리하기 위한 데이터베이스 시스템 및 데이터베이스 시스템의 조인 인덱스를 이용한 조인 처리 방법이 개시된다. 본 발명에 따르면, 프리머리 키 값을 가지고 포린 키와 비교하여 같은 값을 가지는 위치를 찾아내기 위해 사실 테이블의 해당 컬럼을 스캔하는 대신 조인 인덱스를 사용하여 B+tree 구조를 검색으로 하여 해당하는 사실 테이블의 위치를 알아내어 사용자가 만족하는 컬럼 값을 구하는 컬럼 기반 데이터베이스 시스템 및 데이터베이스 시스템의 조인 인덱스를 이용한 조인 처리 방법이 제공된다.
이에, 본 발명은 사실 테이블과 차원 테이블 사이의 조인(join)에 있어 인덱스 조인을 이용함으로써, 트플리스(tuples, 리레이션 내의 속성과 관계되는 값의 집합)을 가지는 사실 테이블의 직접적인 접근을 줄여 disk I/O cost를 절감하는 유익한 장점이 있다.

Description

컬럼 기반 데이터베이스 시스템 및 데이터베이스 시스템의 조인 인덱스를 이용한 조인 처리 방법{COLUMN-ORIENTED DATABASE SYSTEM AND JOIN PROCESS METHOD USING JOIN INDEX THEREOF}
본 발명은 데이터베이스 시스템 및 데이터베이스 시스템의 조인 인덱스를 이용한 조인 처리 방법에 관한 것으로서, 더욱 상세하게는 사실 테이블과 차원 테이블 사이의 자연 조인(nature join)을 보다 효율적으로 처리하기 위한 데이터베이스 시스템 및 데이터베이스 시스템의 조인 인덱스를 이용한 조인 처리 방법에 관한 것이다.
최근에는, 컬럼 기반 데이터베이스 시스템(column-based database system)에 대해 상당한 연구가 이루어지고 있다. 기존에는 데이터를 리레이션(relation)의 형태로 저장 할 때 통상적으로 열(row) 형태로 묶어 저장한 반면, 컬럼 기반 데이터베이스 시스템은 데이터를 저장할 때 같은 도메인(domain)을 취하는 데이터를 묶어 리렐이션의 컬럼 단위으로 저장한다.
이러한 컬럼 기반의 데이터베이스 시스템을 적용하는 일례로서, 데이터 웨어하우스가 있다. 상기 데이터 웨어하우스(data warehouse)는 대게 하나의 사실 테이블(fact table)과 여러 개의 차원 테이블(dimension table)로 이루어지며, 사실 테이블은 차원을 가리키는 여러 포린 키와 그 외의 데이터 컬럼으로 이루어진다.
이와 같은 데이터 웨어하우스는 사실 테이블과 차원 테이블 사이의 조인(join), 특히 사실 테이블의 포린 키 값(foreign key value)과 차원 테이블의 프리머리 키 값(primary key value)이 같은 경우를 찾는 자연 조인(nature join)이 많이 이루어진다.
그러나, 자연 조인인 경우에는 사실 테이블의 직접적인 접근이 늘어나는 수행을 하기 때문에 사실 테이블을 스캔하는 disk I/O cost가 늘어나는 문제점이 있었다.
본 발명은 상술한 문제점을 해결하기 위하여 안출된 것으로서, 본 발명의 목적은 통상적으로 트플리스(tuples, 리레이션 내의 속성과 관계되는 값의 집합)을 가지는 사실 테이블의 직접적인 접근을 줄여 disk I/O cost 성능을 높여, 궁극적으로 전체적인 질의(query) 성능을 향상시킬 수 있는 컬럼 기반 데이터베이스 시스템 및 데이터베이스 시스템의 조인 인덱스를 이용한 조인 처리 방법을 제공하고자 한다.
상기한 바와 같은 본 발명의 목적을 달성하고, 후술하는 본 발명의 특징적인 기능을 수행하기 위한, 본 발명의 특징은 다음과 같다.
본 발명의 일 실시예에 따르면, 사실 테이블(fact table)과 복수 개의 차원 테이블(dimension table)로 이루어진 데이터 웨어하우스(data warehouse)에서 사용되는 컬럼 기반의 데이터베이스 시스템으로서, 상기 차원 테이블의 프리머리 키 값(primary key value)과 상기 프리머리 키 값의 위치를 저장하는 제1 리프 노드 저장부; 상기 사실 테이블에 정의된 포린 키(foreign)에 기초하여 포린 키의 위치를 나타내는 포린 키 위치 리스트(foreign key positon list)를 저장하는 제2 리프 노드 저장부; 상기 제1, 제2 리프 노드 저장부에 저장된 프리머리 키 값, 상기 키 값의 위치 및 상기 포린 키 위치 리스트를 하나의 조인 인덱스 객체로 저장하는 제1 데이터 객체 저장부; 상기 하나의 조인 인덱스 객체와 같은 객체를 복수 개로 저장하는 제2 데이터 객체 저장부; 상기 프리머리 키 값을 이용하여 상기 사실 테이블과 차원 테이블 간에 조인 인덱스 검색이 요청될 경우, 상기 검색 요청을 인식하는 검색 요청 인식부; 및 상기 인식된 검색 요청에 대응하여 조인 인덱스 알고리즘을 수행하여 상기 제2 데이터 객체 저장부에 저장된 복수 개의 조인 인덱스 객체 중 임의의 조인 인덱스 객체에서 사실 테이블의 컬럼 값을 찾아내는 컬럼 값 생성부를 포함하는 컬럼 기반 데이터베이스 시스템이 제공된다.
여기서, 본 발명의 일 실시예에 따른 상기 제1, 제2 리프 노드 저장부 및 데이터 엔트리 저장부에 저장된 데이터는 B+tree의 구조 형태로 저장되되, 상기 tree의 리프 노드(leaf node) 안에 저장되는 구조를 가질 수 있다.
또한, 본 발명의 일 실시예에 따른 상기 사실 테이블과 차원 테이블 간의 조인은 양방향 형태로 행해지는 것이 가능하다.
또한, 본 발명의 다른 일 실시예에 따르면, 컬럼 형태의 조인 인덱스 구조를 이용하여 조인 처리 방법으로서, (a) 커리(query)의 선택 조건을 차원 테이블에 적용하여 상기 차원 테이블의 프리머리 키 값(primary key value)을 획득하는 단계; (b) 상기 획득된 프리머리 키 값을 각각의 조인 인덱스 구조에 적용하여 사실 테이블의 포린 키 위치 리스트를 획득하는 단계; (c) 상기 획득된 포린 키 위치 리스트들을 교집합을 구하여 상기 커리의 선택 조건을 만족하는 하나의 포린 키 위치 리스트를 획득하는 단계; (d) 상기 하나의 포린 키 위치 리스트를 이용하여 각 사실 테이블의 포린 키 값(foreign key value)을 획득하는 단계; (e) 상기 획득된 포린 키 값을 다시 각 조인 인덱스 구조에 적용하여 해당하는 차원 테이블의 위치를 획득하는 단계; 및 (f) 상기 차원 테이블의 위치를 이용하여 상기 커리의 선택 조건에 맞는 컬럼 값을 획득하는 단계를 포함하는 조인 처리 방법이 제공된다.
여기서, 본 발명의 다른 일 실시예에 따른 상기 (a) 단계 내지 (f) 단계는, SSB(Star Schema Benchma) DB 구조와 Q3.(Query #3)에서 처리될 수 있으며, 이때의 처리 결과는, 고객 테이블 상에 기록되어질 수 있다.
본 발명에 의하면, 사실 테이블과 차원 테이블 사이의 조인(join)에 있어 인덱스 조인을 이용함으로써, 트플리스(tuples, 리레이션 내의 속성과 관계되는 값의 집합)을 가지는 사실 테이블의 직접적인 접근을 줄여 disk I/O cost가 절감되는 효과가 있다.
다시 말해, 사실 테이블을 스캔하지 않아도 되어 처리 속도가 빨라지는 효과가 있다. 이와 같은 disk I/O cost 성능이 향상되면, 긍극적으로 전체적인 질의(query) 성능이 향상된다.
도 1은 본 발명의 제1 실시예에 따른 컬럼 기반 데이터베이스 시스템(100)을 예시적으로 나타낸 도면이다.
도 2는 본 발명의 제1 실시예에 따른 조인 인덱스 구조를 나타낸 도면이다.
도 3은 본 발명의 제2 실시예에 따른 컬럼 형태의 조인 인덱스 구조를 이용한 조인 처리 방법(S100)을 예시적으로 나타낸 도면이다.
도 4 내지 도 11은 본 발명의 제3 실시예에 따른 SSB DB 구조와 Q3에서 적용된 인덱스 조인 처리 절차를 설명하기 위한 도면이다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있도록 하기 위하여, 본 발명의 바람직한 실시예들에 관하여 첨부된 도면을 참조하여 상세히 설명하기로 한다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 기능을 지칭한다.
제1 실시예
도 1은 본 발명의 제1 실시예에 따른 컬럼 기반 데이터베이스 시스템(100)을 예시적으로 나타낸 도면이다.
도 1을 참조하면, 본 발명의 제1 실시예에 따른 컬럼 기반 데이터베이스 시스템(100)은 사실 테이블(fact table)과 복수 개의 차원 테이블(dimension table)로 이루어진 데이터 웨어하우스(data warehouse)에서 사용되는 처리 수단으로서, 데이터 웨어하우스(110), 인덱스 조인 저장부(120) 및 인덱스 조인 처리부(130)를 포함한다.
먼저, 데이터 웨어하우스(110)는 하나의 사실 테이블(fact table)과 복수 개의 차원 테이블(dimension table)로 이루어지며, 사실 테이블은 차원(dimension)을 가리키는 여러 개의 포린 키(foreign key)와 데이터 컬럼(data column)으로 이루어진다.
만약, 사용자의 질의 요청에 따라 검색이 요청될 경우 조인 인덱스 알고리즘에 따라 해당하는 차원 테이블과 사실 테이블의 값과 위치 등을 찾아 낸 후, 이후에 설명될 인덱스 조인 저장부(120)에 저장되거나 또는 조인 인덱스 알고리즘을 실질적으로 처리하는 인덱스 조인 처리부(130)로 전송된다. 이때, 차원 테이블과 사실 테이블 간에는 양방향 인덱스 조인이 이루어진다.
이러한 데이터 웨어하우스(110)는 위에서 설명한 사실 테이블 구조와 차원 테이블 구조뿐만 아니라 이후에 설명되는 데이터 용어 및/또는 형식(예: 포린 키 값(foreign key value), 프리머리 키 값(primary key value)) 등은 통상적으로 널리 알려진 용어 및/또는 형식을 그대로 수용하여 적용하고 있다. 따라서, 각 용어및/또는 형식에 대한 별도의 설명은 생략한다.
다음으로, 인덱스 조인 저장부(120)는 인덱스 조인 처리부(130)의 인덱스 알고리즘에 의한 인덱스 조인 처리 요청에 따라 데이터 웨어하우스(1100의 차원 테이블과 사실 테이블의 값과 위치 등을 수신하여 해당하는 위치에 저장된다. 이를 위하여, 인덱스 조인 저장부(120)는 조인 인덱스 알고리즘에 따라 처리된 결과를 저장하기 위한 제1 리프 노드 저장부(121), 제2 리프 노드 저장부(122), 제1 데이터 객체 저장부(123) 및 제2 데이터 객체 저장부(124)을 포함한다.
먼저, 제1 리프 노드 저장부(121)는 이후에 설명될 인덱스 조인 처리부(130)에 의해 요청되어 차원 테이블의 프리머리 키 값(primary key value)과 상기 프리머리 키 값의 위치를 저장한다. 이때, 차원 테이블의 프리머리 키 값과 프리머리 키 값의 위치는 조인 인덱스 알고리즘에 의해 데이터 웨어하우스(110)로부터 획득하여 제1 리프 노드 저장부(121)에 저장된 결과이다.
이어서, 제2 리프 노드 저장부(122)는 조인 인덱스 알고리즘의 해당 처리에 따라 사실 테이블에 정의된 포린 키(foreign key)에 기초하여 포린 키의 위치를 찾아낸 결과로서, 포린 키 위치 리스트(foreign key positon list)를 저장한다. 이때, 포린 키 위치 리스트는 복수 개로 존재할 수도 있다. 물론, 포린 키의 위치와 포린 키는 인덱스 조인 처리부(130)의 조인 인덱스 알고리즘의 절차에 따라 데이터 웨어하우스(110)로부터 획득되어진 결과이다.
다음으로, 제1 데이터 객체 저장부(123)는 조인 인덱스 알고리즘의 해당 처리에 따라 제1 리프 노드 저장부(121)와 제2 리프 노드 저장부(122)에 저장된 프리머리 키 값과 프리머리 키 값의 위치 및 포린 키 위치 리스트를 하나의 조인 인덱스 객체로 저장한다. 물론, 위와 같은 저장은 조인 인덱스 알고리즘의 절차에 따라 제1 리프 노드 저장부(121)와 제2 리프 노드 저장부(122)로부터 각 데이터를 수집하여 저장한 결과이다.
마지막으로, 제2 데이터 객체 저장부(124)는 하나의 조인 인덱스 객체와 같은 객체를 복수 개로 저장하는 역할을 한다. 결국, 인덱스 조인 처리부(130)의 조인 인덱스 알고리즘에 의한 조인 인덱스 객체가 복수 개로 존재한다는 것은 프리머리 키 값과 프리머리 키 값의 위치 및 포린 키 위치 리스트가 복수 셋트로 구별되어 저장됨을 의미한다.
이상에서의 각 저장부(121 ~ 124)는 개별적인 저장소인 것으로서 설명하였으나, 하나의 데이터 저장부 또는 두개의 데이터 저장부에 나뉘어 저장될 수도 있음은 물론이다. 또한 각 저장부에 저장된 데이터는 결국 조인 인덱스 알고리즘이라는 조인 처리 기법에 따라 획득된 결과이다.
한편, 본 발명에 의하면, 위와 같은 각 저장부(121 ~ 124)에 저장된 데이터는 도 2와 같은 조인 인덱스의 구조로 도시화할 수 있다. 도 2에 도시된 조인 인덱스 구조는 하나의 루트 노드와 하나의 루트 노드(root node)로부터 트리 구조를 갖는 복수 개의 논-리프 노드(non-leaf node) 및 논-리프 노드로부터 복수 개의 트리 형태로 매달린 복수 개의 리프 노드(leaf node)의 구조로 되어 있다.
여기서, 복 수개의 리프 노드에는 복수 개의 조인 인덱스 객체(140)를 각 세트로 하여 만들어진다. 예를 들면, D_Pk(프리머리 키), D_position(프리머리 키 값의 위치), F_Fk position list(포린 키 위치 리스트)를 하나의 조인 인덱스 객체로 정의하고 이를 하나의 세트로 만들어진다. 이러한 조인 인덱스 객체는 리프 노드의 구조상에 복수 개로 존재한다.
이러한 조인 인덱스의 구조는 B+tree의 구조 형태를 기본적으로 가지며, 앞서 설명한 tree안에 리프 노드(leaf node) 구조 형태로 되어 있다. 이는 결국, 제1, 제2 리프 노드 저장부(121, 122) 및 제1, 제2 데이터 엔트리 저장부(131,132)에 저장된 데이터는 B+tree의 구조 형태를 갖되, tree의 리프 노드(leaf node) 구조 안에 존재하는 형태을 의미한다. 이러한 조인 인덱스의 구조는 이후에 설명될 조인 인덱스 알고리즘에 으해 실질적으로 구현된다.
다시 도 1로 돌아와, 본 발명의 제1 실시예에 따른 인덱스 조인 처리부(130)는 조인 인덱스 알고리즘을 수행하여 원하는 데이터를 데이터 웨어하우스(110)로부터 획득하고, 그 결과를 인덱스 조인 저장부(120)의 해당 저장부에 저장되도록 데이터 웨어하우스(110)와 인덱스 조인 저장부(120)를 실질적으로 제어하는 역할을 한다. 또한, 조인 인덱스 알고리즘이 해당 사용자의 질의(query)에 따라 반응하고 그 결과를 알려주기 위하여 사용자의 단말기(예: 컴퓨터)와 인터페이스 되는 구조를 갖는다.
이와 같은 기능을 수행하고자, 인덱스 조인 처리부(130)는 검색 요청 인식부(131) 및 컬럼 값 생성부(132)를 포함한다. 검색 요청 인식부(131)는 사용자에게 알려진 프리머리 키 값을 이용하여 사실 테이블과 차원 테이블 간에 조인 인덱스 검색이 요청될 경우, 상기 검색 요청을 인식하는 역할을 한다.
이어서, 컬럼 값 생성부(132)는 검색 요청 인식부(131)에서 인식된 검색 요청에 대응하여 조인 인덱스 알고리즘을 수행한다. 조인 인덱스 알고리즘이 수행되면, 데이터 웨어하우스(110)로부터 해당하는 데이터들을 생성, 도출할 수 있고, 이 결과를 차례로 제1 리프 노드 저장부(121), 제2 리프 노드 저장부(122), 제1 데이터 객체 저장부(123) 및 제2 데이터 객체 저장부(124)에 저장시킬 수 있게 되는 것이다.
이러한 저장은 데이터 웨어하우스(110)의 사실 테이블과 차원 테이블 간에 양방향 조인에 의하여 획득 결과를 저장한 것이다. 이러한 양방향 조인은 기존의 단방향 자연 조인(nature join)에 비하여 매우 진일보한 조인 형식이다.
또한, 조인 인덱스 알고리즘이 수행되면, 본 발명의 컬럼 값 생성부(132)는 사용자가 요청한 선택적인 질의을 만족하는 데이터, 예컨대 최종적으로 저장된 제2 데이터 객체 저장부(124)내에 있는 복수 개의 조인 인덱스 객체 중 임의의 조인 인덱스 객체에서 사실 테이블의 컬럼 값(column value)을 찾아내게 된다. 이러한 사실 테이블의 컬럼 값은 사용자의 질의 요청에 대응한 응답으로서 제공하게 된다.
이와 같은 형태로 찾아진 사실 테이블의 컬럼 값은 사실 테이블의 직접적인 접근을 증가시키는 기존의 자연 조인 방식에 비하여, 현저하게 사실 테이블의 접근이 줄여든다. 이하에서는, 컬럼 기반 데이터베이스 시스템(100)에서 적용하고 있는 도 2의 조인 인덱스 구조를 이용하여 조인 처리 방법에 대하여 설명하기로 한다.
제2 실시예
도 3은 본 발명의 제2 실시예에 따른 컬럼 형태의 조인 인덱스 구조를 이용한 조인 처리 방법(S100)을 예시적으로 나타낸 도면이다.
도 3을 참조하면, 본 발명의 제2 실시예에 따른 조인 처리 방법(S100)은 컬럼 기반 데이터베이스 시스템에서 적용한 컬럼 형태의 복수 개 조인 인덱스를 이용한 조인 처리하는 방법으로서, S110 단계 내지 S160 단계로 이루어진다.
먼저, S110 단계에서는 커리(query)의 선택 조건을 차원 테이블에 적용하여 상기 차원 테이블의 프리머리 키 값(primary key value)을 획득한다. 이후, S120 단계에서는 S110 단계에서 획득된 프리머리 키 값을 각각의 조인 인덱스 구조에 적용하여 사실 테이블의 포린 키 위치 리스트를 획득한다.
이후, S130 단계에서는 S120 단계에서 획득된 포린 키 위치 리스트들을 교집합을 구하여 사용자가 선택한 커리의 선택 조건을 만족하는 사실 테이블의 값이 위치한 하나의 위치 리스트를 획득한다.
이후, S140 단계에서는 S130 단계에서 획득한 하나의 위치 리스트를 이용하여 각 사실 테이블의 포린 키 값(foreign key value)을 획득한다. 이후, S150 단계에서는 S140 단계에서 획득된 포린 키 값을 다시 각 조인 인덱스 구조에 적용하여 해당하는 차원 테이블의 위치를 획득한다.
마지막으로, S160 단계에서는 S150 단계의 차원 테이블의 위치를 이용하여 사용자가 지정한 커리의 선택 조건에 맞는 컬럼 값을 획득한다. 이때의 컬럼 값은 사실 테이블내에 존재하는 복수 개의 컬럼 값중 하나일 것이다.
이와 같은 각 단계의 수행으로 인하여, 사용자가 요청한 커리의 선택조건에 맞게 빠른 컬럼 값을 찾아낼 수 있으면서도 사실 테이블의 접근성을 크게 줄여준다. 이하에서는, 각 단계를 SSB(Star Schema Benchma) 구조와 Q3.(Query #3)에서 적용한 사례를 일례로서 설명하고자 한다.
적용 예(사용 예)
도 4 내지 도 11은 본 발명의 제3 실시예에 따른 SSB DB 구조와 Q3에서 적용된 인덱스 조인 처리 절차를 설명하기 위한 도면이다.
본 발명의 제3 실시예에 따른 인덱스 조인 처리 절차는 도 4와 같은 SSB(Star Schema Benchma) 구조를 사용하며, 질의(query)는 도 5와 같이 SSB의 해당 질의 중 하나인 Q3.(Query #3)을 예로 들어 사용하며, 각 처리 절차에 의한 데이터는 차원 테이블에서 만들어진 고객 테이블 상에 기록된다. 여기서, 도 4에 도시된 SSB의 사실 테이블을 비롯한 모든 차원 테이블은 모두 컬럼기반(column-based) 형태로 저장된다고 가정한다.
먼저, 본 발명의 제3 실시예에 따른 인덱스 조인 처리의 제1 절차는 질의(query)의 선택 조건을 차원 테이블에 적용하여 최종적으로 차원 테이블의 프리머리 키 값을 얻어낸다. 이러한 프리머리 키 값이 획득되는 과정은 도 5를 참조하여 설명한다.
도 5에 도시된 Q3.에서 테이블의 선택(selection) 조건에 해당하는 where 절을 보면 "_region='ASIA', s_region='ASIA', d_year >= 1992 and d_year <= 1997"이라는 조건이 있다. 이 각 조건을 해당하는 차원 테이블에 적용시키면 차원 테이블에서 각각 만들어진 고객 테이블(customer table)은 region='ASIA'가 전체 트플리(tuple)중 1/5, 서퍼리어 테이블(supplier table)은 region='ASIA'가 전체 트플리 중 1/5, 데이터 테이블은 year>=1992 and year<=1997* 전체 트플리스 중 6/7의 트플리가 조건을 만족하게 된다.
이때, 각 테이블마다 만족하게 된 해당 컬럼의 트플리를 비트맵(bitmap) 형태로 표시하며, 표시된 각 비트맵을 이용하여 해당 테이블의 프리머리 키인 컬럼에 적용하여 최종적으로 각 차원 테이블마다 질의의 각 선택 조건을 만족하는 프리머리 키 값을 얻게 되는 것이다. 여기서, 고객 테이블에서의 실시되는 제1 절차을 도 6과 같이 일례로서 나타낼 수 있다.
이후, 본 발명의 제3 실시예에 따른 인덱스 조인 처리의 제2 절차는 획득된 프리머리 키 값을 각각의 조인 인덱스에 적용하여 포린 키의 위치 리스트를 얻어낸다. 보다 구체적으로는, 차원 테이블의 프리머리 키 값을 차원 테이블마다 생성되어 있는 조인 인덱스을 검색 키로 하여 해당 조인 인덱스를 검색하면 만족하는 데이터 셋(조인 인덱스 객체)을 찾아 최종적으로 각 조인 인덱스마다 사실 테이블의 위치 리스트를 얻어낸다.
이러한 위치 리스트의 예는 도 7과 같이 나타낼 수 있다. 즉 도 7에 도시된 고객 테이블에는 복수 개의 조인 인덱스 객체(150)로부터 사실 테이블의 위치 리스트가 position(4,6,1,2,7)로 얻어지고 있음을 보여준다.
이후, 본 발명의 제3 실시예에 따른 인덱스 조인 처리의 제3 절차는 각각의 조인 인덱스에서 얻어진 위치 리스트들에 대하여 교집합을 구한 후 최종적으로 모든 선택 조건을 만족하게 되는 사실 테이블의 위치를 나타내는 하나의 위치 리스트를 얻어낸다.
이러한 과정은 도 8과 같이 나타낼 수 있다. 도 8에 도시된 고객 테이블에서는 여러 개의 위치 리스트들에 대하여 교집합하여 최종적인 하나의 위치 리스트인 position(1,4)을 획득하고 있음을 보여준다.
이후, 본 발명의 제3 실시예에 따른 인덱스 조인 처리의 제4 절차는 최종적으로 획득된 하나의 위치 리스트를 이용하여 각각의 포린 키 값을 얻어낸다. 보다 구체적으로는, 최종적으로 얻어진 사실 테이블의 위치 리스트로 사실 테이블의 포린 키중 질의에 관련하고 있는 각 포린 키 컬럼에 적용하여 해당하는 포린 키 값을 얻어낸다.
이러한 절차의 결과는 도 9와 같이 나타낼 수 있다. 도 9의 고객 테이블에서는 custkey={1,3} suppkey={1} datekey={0101197, 01021997}라는 포린 키를 획득하고 있음을 보여준다.
이후, 본 발명의 제3 실시예에 따른 인덱스 조인 처리의 제5 절차는 제4 절차에서 얻어진 포린 키 값을 다시 각 조인 인덱스의 구조에 적용하여 해당하는 차원 테이블의 위치를 얻어낸다. 이러한 절차는 도 10과 같이 나타낼 수 있는데, 도 10에서는 조인 인덱스의 구조에 적용하여 position(1,3)라는 차원 테이블의 위치를 획득하고 있음을 보여준다.
이후, 본 발명의 제3 실시예에 따른 인덱스 조인 처리의 제6 절차는 도 10으로부터 얻어진 차원 테이블의 위치를 이용하여 최종적으로 사용자가 알고 싶어하는 컬럼 값을 구해낸다.
보다 구체적으로는, 제6 절차에 의해 찾아낸 차원 테이블의 위치를 이용하여 해당하는 차원 테이블에 적용하게 되는데 이때 질의에서 최종적으로 알고자 하는 컬럼에 적용하여 질의의 결과인 컬럼 값을 구하게 된다.
이와 같은 절차는 도 11과 같이 나타낼 수 있다. 도 11에서는 차원 테이블에서 만들어진 고객 테이블에서 CHINA와 INDIA라는 컬럼값을 획득하고 있음을 보여준다.
이상의 각 실시예에 따라 적용된 조인 인덱스 메카니즘은 데이터 웨어하우스와 같은 대용량 데이터를 처리하는 시스템에서 매우 유용하게 쓰일 수 있다. 데이터 웨어 하우스에서 사용되는 질의의 대부분이 사실 테이블과 차원 테이블의 조인을 이용하게 된다.
이때, 조인 과정에서 조인 인덱스는 사실 테이블을 직접 검색하지 않아도 프리머리 키 값과 같은 값을 갖는 포린 키 값의 위치를 알려준다. 따라서, 두 프리머리 키 값과 포린 키 값의 비교를 위해 사실 테이블을 스캔하지 않아도 되며 그 만큼 조인 과정의 disk I/O cost가 절감된다.
또한, 해당 사실 테이블을 스캔하지 않아도 되므로 처리속도가 빠른 장점이 있다. 또 질의의 선택 조건을 만족하는 프리머리 키 값이 연속적인 경우 조인 인덱스 메카니즘을 사용할 경우 조인 인덱스는 B+tree 구조로 되어 있어 빠른 처리가 가능하다.
비교예
통상 인비즈볼 조인(invisible join, 종래의 한 형태)의 경우에는 프리머리 키 값을 가지고 포린 키와 비교하여 같은 값을 가지는 위치를 비트맵으로 만들고, 최종적으로 나온 비트 맵을 비트 단위로 처리하여 모든 선택 조건을 만족하는 사실 테이블에서의 값 위치를 알아낸다.
이때, 프리머리 키 값과 포린 키와 비교하기 위해 사실 테이블의 해당하는 모든 컬럼을 스캔하게 되는데, 사실 테이블의 트플리(tuple)의 수가 엄청나게 많기 때문에 이 부분의 disk I/O cost의 소비가 상당하다.
반면, 앞서 설명된 각 실시예에 따른 조인 인덱스를 사용하는 경우에는 프리머리 키 값을 가지고 포린 키와 비교하여 같은 값을 가지는 위치를 찾아내기 위해 사실 테이블의 해당 컬럼을 스캔하는 대신 조인 인덱스를 사용하여 B+tree 구조를 검색으로 하여 해당하는 사실 테이블의 위치를 알아냄으로써, 빠른 처리가 가능하다. 따라서, 이러한 조인 인덱스는 기존의 인비즈볼 조인에 비하여 사실 테이블의 컬럼들을 스캔하는 비용이 싼 장점이 있다.
이상에서와 같이, 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고 다른 구체적인 형태로 실시할 수 있다는 것을 이해할 수 있을 것이다. 따라서 이상에서 기술한 실시예는 모든 면에서 예시적인 것이며 한정적이 아닌 것이다.
100 : 컬럼 기반 데이터베이스 시스템 110 : 데이터 웨어하우스
120 : 인덱스 조인 저장부 121 : 제1 리프 노드 저장부
122 : 제2 리프 노드 저장부 123 : 제1 데이터 객체 저장부
124 : 제2 데이터 객체 저장부 130 : 인덱스 조인 처리부
131 : 검색 요청 인식부 132 : 컬럼 값 생성부

Claims (6)

  1. 사실 테이블(fact table)과 복수 개의 차원 테이블(dimension table)로 이루어진 데이터 웨어하우스(data warehouse)에서 사용되는 컬럼 기반의 데이터베이스 시스템으로서,
    상기 차원 테이블의 프리머리 키 값(primary key value)과 상기 프리머리 키 값의 위치를 저장하는 제1 리프 노드 저장부;
    상기 사실 테이블에 정의된 포린 키(foreign)에 기초하여 포린 키의 위치를 나타내는 포린 키 위치 리스트(foreign key positon list)를 저장하는 제2 리프 노드 저장부;
    상기 제1, 제2 리프 노드 저장부에 저장된 프리머리 키 값, 상기 키 값의 위치 및 상기 포린 키 위치 리스트를 하나의 조인 인덱스 객체로 저장하는 제1 데이터 객체 저장부;
    상기 하나의 조인 인덱스 객체와 같은 객체를 복수 개로 저장하는 제2 데이터 객체 저장부;
    상기 프리머리 키 값을 이용하여 상기 사실 테이블과 차원 테이블 간에 조인 인덱스 검색이 요청될 경우, 상기 검색 요청을 인식하는 검색 요청 인식부; 및
    상기 인식된 검색 요청에 대응하여 조인 인덱스 알고리즘을 수행하여 상기 제2 데이터 객체 저장부에 저장된 복수 개의 조인 인덱스 객체 중 임의의 조인 인덱스 객체에서 사실 테이블의 컬럼 값을 찾아내는 컬럼 값 생성부;
    를 포함하는 것을 특징으로 하는 컬럼 기반 데이터베이스 시스템.
  2. 제 1항에 있어서,
    상기 제1, 제2 리프 노드 저장부 및 데이터 엔트리 저장부에 저장된 데이터는 B+tree의 구조 형태를 갖되,
    상기 tree의 리프 노드(leaf node) 구조 안에 존재하는 것을 특징으로 하는 컬럼 기반 데이터베이스 시스템.
  3. 제 1항에 있어서,
    상기 사실 테이블과 차원 테이블 간의 조인은 양방향 형태로 행해지는 것을 특징으로 하는 컬럼 기반 데이터베이스 시스템.
  4. 컬럼 형태의 조인 인덱스 구조를 이용하여 조인 처리 방법으로서,
    (a) 커리(query)의 선택 조건을 차원 테이블에 적용하여 상기 차원 테이블의 프리머리 키 값(primary key value)을 획득하는 단계;
    (b) 상기 획득된 프리머리 키 값을 각각의 조인 인덱스 구조에 적용하여 사실 테이블의 포린 키 위치 리스트를 획득하는 단계;
    (c) 상기 획득된 포린 키 위치 리스트들을 교집합을 구하여 사실 테이블의 값이 위치한 하나의 위치 리스트를 획득하는 단계;
    (d) 상기 하나의 위치 리스트를 이용하여 각 사실 테이블의 포린 키 값(foreign key value)을 획득하는 단계;
    (e) 상기 획득된 포린 키 값을 다시 각 조인 인덱스 구조에 적용하여 해당하는 차원 테이블의 위치를 획득하는 단계; 및
    (f) 상기 차원 테이블의 위치를 이용하여 상기 커리의 선택 조건에 맞는 컬럼 값을 획득하는 단계;
    를 포함하는 것을 특징으로 하는 조인 처리 방법.
  5. 제 4항에 있어서,
    상기 (a) 단계 내지 (f) 단계는,
    SSB(Star Schema Benchma) DB 구조와 Q3.(Query #3)에서 처리되는 것을 특징으로 하는 조인 처리 방법.
  6. 제 5항에 있어서,
    상기 (a) 단계 내지 (f) 단계의 처리 결과는, 차원 테이블에서 만들어진 고객 테이블 상에 기록되는 것을 특징으로 하는 조인 처리 방법.
KR1020120005939A 2012-01-18 2012-01-18 컬럼 기반 데이터베이스 시스템 및 데이터베이스 시스템의 조인 인덱스를 이용한 조인 처리 방법 KR101255639B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120005939A KR101255639B1 (ko) 2012-01-18 2012-01-18 컬럼 기반 데이터베이스 시스템 및 데이터베이스 시스템의 조인 인덱스를 이용한 조인 처리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120005939A KR101255639B1 (ko) 2012-01-18 2012-01-18 컬럼 기반 데이터베이스 시스템 및 데이터베이스 시스템의 조인 인덱스를 이용한 조인 처리 방법

Publications (1)

Publication Number Publication Date
KR101255639B1 true KR101255639B1 (ko) 2013-04-16

Family

ID=48443325

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120005939A KR101255639B1 (ko) 2012-01-18 2012-01-18 컬럼 기반 데이터베이스 시스템 및 데이터베이스 시스템의 조인 인덱스를 이용한 조인 처리 방법

Country Status (1)

Country Link
KR (1) KR101255639B1 (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160100752A (ko) * 2015-02-16 2016-08-24 네이버 주식회사 컬럼-인덱스 데이터 포맷을 이용하여 빅데이터를 효율적으로 처리 및 분석하는 시스템 및 방법
KR101795564B1 (ko) * 2017-01-09 2017-11-09 네이버 주식회사 컬럼-인덱스 데이터 포맷을 이용하여 빅데이터를 효율적으로 처리 및 분석하는 시스템 및 방법
KR101947503B1 (ko) 2017-03-20 2019-02-14 주식회사 티맥스데이터 트리 인덱스를 제공하는 컴퓨팅 장치
CN109947861A (zh) * 2017-11-09 2019-06-28 北京京东尚科信息技术有限公司 用于数据仓库生成目标表的方法、装置和计算机可读介质
KR20200029431A (ko) * 2020-03-11 2020-03-18 주식회사 티맥스데이터 효율적인 인덱싱을 제공하기 위한 방법, 장치 및 컴퓨터-판독가능 매체에 포함된 컴퓨터 프로그램
KR20210060930A (ko) * 2019-11-19 2021-05-27 한국전기연구원 열 기반의 데이터베이스관리장치

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080106266A (ko) * 2006-03-20 2008-12-04 마이크로소프트 코포레이션 서식있는 데이터 타입을 지원하는 확장가능 쿼리 언어

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080106266A (ko) * 2006-03-20 2008-12-04 마이크로소프트 코포레이션 서식있는 데이터 타입을 지원하는 확장가능 쿼리 언어

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160100752A (ko) * 2015-02-16 2016-08-24 네이버 주식회사 컬럼-인덱스 데이터 포맷을 이용하여 빅데이터를 효율적으로 처리 및 분석하는 시스템 및 방법
KR101696338B1 (ko) * 2015-02-16 2017-01-13 네이버 주식회사 컬럼-인덱스 데이터 포맷을 이용하여 빅데이터를 효율적으로 처리 및 분석하는 시스템 및 방법
US10152502B2 (en) 2015-02-16 2018-12-11 Naver Corporation Systems, apparatuses, methods, and computer readable media for processing and analyzing big data using columnar index data format
KR101795564B1 (ko) * 2017-01-09 2017-11-09 네이버 주식회사 컬럼-인덱스 데이터 포맷을 이용하여 빅데이터를 효율적으로 처리 및 분석하는 시스템 및 방법
KR101947503B1 (ko) 2017-03-20 2019-02-14 주식회사 티맥스데이터 트리 인덱스를 제공하는 컴퓨팅 장치
CN109947861A (zh) * 2017-11-09 2019-06-28 北京京东尚科信息技术有限公司 用于数据仓库生成目标表的方法、装置和计算机可读介质
KR20210060930A (ko) * 2019-11-19 2021-05-27 한국전기연구원 열 기반의 데이터베이스관리장치
KR102449253B1 (ko) 2019-11-19 2022-09-30 한국전기연구원 열 기반의 데이터베이스관리장치
KR20200029431A (ko) * 2020-03-11 2020-03-18 주식회사 티맥스데이터 효율적인 인덱싱을 제공하기 위한 방법, 장치 및 컴퓨터-판독가능 매체에 포함된 컴퓨터 프로그램
KR102127785B1 (ko) 2020-03-11 2020-06-29 주식회사 티맥스티베로 효율적인 인덱싱을 제공하기 위한 방법, 장치 및 컴퓨터-판독가능 매체에 포함된 컴퓨터 프로그램

Similar Documents

Publication Publication Date Title
CN109299102B (zh) 一种基于Elastcisearch的HBase二级索引系统及方法
US10606834B2 (en) Methods and apparatus of shared expression evaluation across RDBMS and storage layer
CN107291807B (zh) 一种基于图遍历的sparql查询优化方法
KR101255639B1 (ko) 컬럼 기반 데이터베이스 시스템 및 데이터베이스 시스템의 조인 인덱스를 이용한 조인 처리 방법
US7756889B2 (en) Partitioning of nested tables
US11334544B2 (en) Method, apparatus, device and medium for storing and querying data
JP6964384B2 (ja) 異種データソース混在環境におけるフィールド間の関係性の自動的発見のための方法、プログラム、および、システム
US10140351B2 (en) Method and apparatus for processing database data in distributed database system
EP3014488B1 (en) Incremental maintenance of range-partitioned statistics for query optimization
US20140310302A1 (en) Storing and querying graph data in a key-value store
CN107368527B (zh) 基于数据流的多属性索引方法
US8046352B2 (en) Expression replacement in virtual columns
KR102368775B1 (ko) 인덱스 관리 방법, 장치, 기기 및 저장 매체
CN108681603B (zh) 数据库中快速搜索树形结构数据的方法、存储介质
US10977251B1 (en) Join index bitmap for non-equality query conditions
WO2017092583A1 (zh) 一种索引建立方法及设备
CN109597829B (zh) 一种实现可搜索加密关系型数据库缓存的中间件方法
CN110928882B (zh) 一种基于改进红黑树的内存数据库索引方法及系统
JP6159908B6 (ja) 異種データソース混在環境におけるフィールド間の関係性の自動的発見のための方法、プログラム、および、システム
CN113918605A (zh) 数据查询方法、装置、设备以及计算机存储介质
US20140067853A1 (en) Data search method, information system, and recording medium storing data search program
US10558636B2 (en) Index page with latch-free access
US11520763B2 (en) Automated optimization for in-memory data structures of column store databases
US10366067B2 (en) Adaptive index leaf block compression
CN109241098B (zh) 一种分布式数据库的查询优化方法

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee