KR20160126148A - 읽기 성능 개선을 위한 티-트리 인덱스를 이용한 데이터베이스 읽기 방법 및 그 장치 - Google Patents

읽기 성능 개선을 위한 티-트리 인덱스를 이용한 데이터베이스 읽기 방법 및 그 장치 Download PDF

Info

Publication number
KR20160126148A
KR20160126148A KR1020150056598A KR20150056598A KR20160126148A KR 20160126148 A KR20160126148 A KR 20160126148A KR 1020150056598 A KR1020150056598 A KR 1020150056598A KR 20150056598 A KR20150056598 A KR 20150056598A KR 20160126148 A KR20160126148 A KR 20160126148A
Authority
KR
South Korea
Prior art keywords
index
tree
key
requested data
tree index
Prior art date
Application number
KR1020150056598A
Other languages
English (en)
Other versions
KR101693108B1 (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 한양대학교 에리카산학협력단
Priority to KR1020150056598A priority Critical patent/KR101693108B1/ko
Publication of KR20160126148A publication Critical patent/KR20160126148A/ko
Application granted granted Critical
Publication of KR101693108B1 publication Critical patent/KR101693108B1/ko

Links

Images

Classifications

    • G06F17/30327
    • G06F17/30595
    • G06F17/30961

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

읽기 성능 개선을 위한 티-트리 인덱스를 이용한 데이터베이스 읽기 방법 및 그 장치가 개시된다. 본 발명의 일 실시예에 따른 티-트리 인덱스를 이용한 데이터베이스 읽기 방법은 클라이언트 단말기로부터 읽기 연산이 요청되면 메모리 저장 테이블(MemStore)을 검색하여 요청된 데이터를 검색하는 단계; 상기 메모리 저장 테이블에 상기 요청된 데이터가 존재하지 않는 경우 메모리 영역에 형성된 T-트리 인덱스를 검색하여 상기 요청된 데이터에 대한 인덱스를 검색하는 단계; 및 상기 검색된 인덱스를 이용하여 상기 요청된 데이터의 위치를 획득하고, 상기 획득된 위치의 HFile을 통해 상기 요청된 데이터를 읽는 단계를 포함한다.

Description

읽기 성능 개선을 위한 티-트리 인덱스를 이용한 데이터베이스 읽기 방법 및 그 장치 {DATABASE READ METHOD AND APPARATUS USING T-TREE INDEX FOR IMPROVING READ PERFORMANCE}
본 발명은 데이터베이스 읽기에 관한 것으로서, T-트리 인덱스 구조를 사용하여 데이터베이스 예를 들어, HBase의 읽기 성능을 개선할 수 있는 T-트리 인덱스를 이용한 데이터베이스 읽기 방법 및 그 장치에 관한 것이다.
인터넷, 스마트폰의 대중화, 소셜 네트워크 서비스의 확산으로 인하여 하루에도 많은 양의 데이터가 생산되고 있으며, 이러한 데이터를 빅 데이터라고 부른다. 최근 빅 데이터를 저장/관리하고, 분석하는 다양한 빅 데이터 처리 기술들이 활발하게 연구되어 실생활에 응용되고 있다.
기존의 관계형 데이터베이스 관리시스템(RDBMS; Relational DataBase Management System)은 빅 데이터를 저장하기 위해 확장성을 제공해야 하지만, 저장소 관리의 어려움과 비용적인 문제가 있다. 최근에는 관계형 데이터베이스에 비해 덜 형식적인 NoSQL 데이터베이스들이 점차 확대되어 사용되고 있다. 대표적으로 구글에서는 대용량 데이터를 효율적으로 처리하기 위하여 빅 테이블(Big-table) 저장 기법을 발표하였으며, 빅 테이블 기반의 오픈소스 NoSQL 데이터베이스인 HBase가 널리 사용되고 있다.
대표적인 NoSQL 데이터베이스인 HBase는 데이터의 저장을 위하여 하둡 분산 파일시스템(HDFS; Hadoop Distributed File System)을 사용하며, 쓰기 성능의 향상을 위해 순차 쓰기만을 사용하여 영구 저장 파일인 HFile을 대량으로 생성한다. HBase는 데이터 삽입 시 임시적으로 메모리에 저장하고 메모리가 가득 차게 되면 일괄 쓰기를 통하여 디스크에 데이터를 저장한다. 이렇게 HDFS에 저장된 HFile들은 제자리 갱신이 불가능하여 계속 누적되기 때문에 컴팩션(Compaction) 이라는 합병 연산이 수행되기 전까지 그 수가 계속해서 증가한다.
HBase의 읽기 연산은 검색하고자 하는 키가 들어있는 리전의 모든 HFile들을 검색한다. 즉, HFile의 개수만큼 HDFS에서 읽기 연산을 수행해야 하기 때문에 HBase의 읽기 성능은 최적화된 쓰기 성능에 비해 좋지 않으며 특히 데이터의 양이 많아질수록 읽기 성능의 저하는 더욱 심해지게 된다.
따라서, HBase의 읽기 성능을 개선시킬 수 있는 방법의 필요성이 대두된다.
본 발명의 실시예들은, HFile에 대한 키를 요약하여 관리함으로써, 데이터베이스의 읽기 성능을 개선시킬 수 있는 T-트리 인덱스를 이용한 데이터베이스 읽기 방법 및 그 장치를 제공한다.
본 발명의 실시예들은, T-트리 인덱스 구조를 활용하여 HBase의 각 리전마다 저장된 HFile들에 대한 접근을 줄이고, 저장되는 데이터에 대한 인덱스를 만들어 데이터를 읽는 데 필요한 시간을 줄여 검색성능을 향상시킬 수 있는 T-트리 인덱스를 이용한 데이터베이스 읽기 방법 및 그 장치를 제공한다.
본 발명의 실시예들은, 분산 저장된 다수의 HFile들에 대한 키를 요약하여 관리하는 T-트리 인덱스 구조를 제공한다.
본 발명의 일 실시예에 따른 티-트리 인덱스를 이용한 데이터베이스 읽기 방법은 클라이언트 단말기로부터 읽기 연산이 요청되면 메모리 저장 테이블(MemStore)을 검색하여 요청된 데이터를 검색하는 단계; 상기 메모리 저장 테이블에 상기 요청된 데이터가 존재하지 않는 경우 메모리 영역에 형성된 T-트리 인덱스를 검색하여 상기 요청된 데이터에 대한 인덱스를 검색하는 단계; 및 상기 검색된 인덱스를 이용하여 상기 요청된 데이터의 위치를 획득하고, 상기 획득된 위치의 HFile을 통해 상기 요청된 데이터를 읽는 단계를 포함한다.
상기 T-트리 인덱스는 HFile에 저장된 키/값 형식의 데이터를 구별하기 위하여 키를 요약하고 요약된 키 정보를 생성하며, 상기 생성된 요약된 키 정보와 상기 요약된 키에 대응하는 실제 키의 사상 정보를 포함하는 사상 테이블을 상기 메모리 영역에 형성하고, 상기 형성된 사상 테이블과 T-트리에 의해 형성될 수 있다.
상기 요청된 데이터에 대한 인덱스를 검색하는 단계는 상기 사상 테이블로부터 상기 요청된 데이터에 대응하는 요약된 키 정보를 획득하고, 상기 획득된 요약된 키 정보를 통해 상기 T-트리 인덱스의 인덱스를 검색할 수 있다.
상기 요청된 데이터에 대한 인덱스를 검색하는 단계는 상기 사상 테이블을 이용하여 상기 요청된 데이터에 대한 인덱스를 획득하고, 상기 획득된 인덱스와 상기 T-트리 인덱스를 구성하는 오프셋을 비교함으로써, 상기 T-트리 인덱스에서 상기 획득된 인덱스를 검색할 수 있다.
상기 요청된 데이터를 읽는 단계는 디스크 영역에 미리 저장된 인덱스에 따른 HFile의 위치 정보들로부터 상기 검색된 인덱스에 대응하는 HFile의 위치 정보를 획득하고, 상기 획득된 위치 정보를 이용하여 상기 요청된 데이터를 읽을 수 있다.
본 발명의 일 실시예에 따른 티-트리 인덱스 생성 방법은 데이터베이스의 티-트리 인덱스 생성 방법에 있어서, HFile에 저장된 키/값 형식의 데이터를 구별하기 위하여 키를 요약하고 요약된 키 정보를 생성하는 단계; 상기 생성된 요약된 키 정보와 상기 요약된 키에 대응하는 실제 키의 사상 정보를 포함하는 사상 테이블을 메모리 영역에 형성하는 단계; 및 상기 형성된 사상 테이블과 T-트리를 이용하여 상기 메모리 영역에 T-트리 인덱스를 생성하는 단계를 포함한다.
상기 요약된 키 정보는 로우 키와 컬럼으로 구성되고, 상기 사상 테이블을 메모리 영역에 형성하는 단계는 상기 로우 키에 대한 사상 정보를 포함하는 제1 사상 테이블과 상기 컬럼에 대한 사상 정보를 포함하는 제2 사상 테이블을 형성할 수 있다.
상기 T-트리 인덱스에 포함된 인덱스 각각은 로우 키, 컬럼 및 파일 포인터의 조합으로 구성될 수 있다.
나아가, 본 발명의 일 실시예에 따른 티-트리 인덱스 생성 방법은 상기 T-트리 인덱스에 포함된 인덱스 각각의 빈도수를 저장하고, 상기 저장된 빈도수가 미리 결정된 기준 빈도수보다 작은 경우 해당 인덱스를 상기 메모리 영역에서 삭제하는 단계를 더 포함할 수 있다.
더 나아가, 본 발명의 일 실시예에 따른 티-트리 인덱스 생성 방법은 컴팩션과 리전의 분할을 포함하는 HFile이 변경되는 경우 상기 T-트리 인덱스에 포함된 인덱스를 갱신하는 단계를 더 포함할 수 있다.
본 발명의 일 실시예에 따른 티-트리 인덱스를 이용한 데이터베이스 읽기 장치는 클라이언트 단말기로부터 읽기 연산 요청을 수신하는 수신부; 상기 읽기 연산 요청에 따라 메모리 저장 테이블(MemStore)을 검색하여 요청된 데이터를 검색하고, 상기 메모리 저장 테이블에 상기 요청된 데이터가 존재하지 않는 경우 메모리 영역에 형성된 T-트리 인덱스를 검색하여 상기 요청된 데이터에 대한 인덱스를 검색하는 검색부; 및 상기 검색된 인덱스를 이용하여 상기 요청된 데이터의 위치를 획득하고, 상기 획득된 위치의 HFile을 통해 상기 요청된 데이터를 읽는 읽기부를 포함한다.
상기 T-트리 인덱스는 HFile에 저장된 키/값 형식의 데이터를 구별하기 위하여 키를 요약하고 요약된 키 정보를 생성하며, 상기 생성된 요약된 키 정보와 상기 요약된 키에 대응하는 실제 키의 사상 정보를 포함하는 사상 테이블을 상기 메모리 영역에 형성하고, 상기 형성된 사상 테이블과 T-트리에 의해 형성될 수 있다.
상기 검색부는 상기 사상 테이블로부터 상기 요청된 데이터에 대응하는 요약된 키 정보를 획득하고, 상기 획득된 요약된 키 정보를 통해 상기 T-트리 인덱스의 인덱스를 검색할 수 있다.
상기 검색부는 상기 사상 테이블을 이용하여 상기 요청된 데이터에 대한 인덱스를 획득하고, 상기 획득된 인덱스와 상기 T-트리 인덱스를 구성하는 오프셋을 비교함으로써, 상기 T-트리 인덱스에서 상기 획득된 인덱스를 검색할 수 있다.
상기 읽기부는 디스크 영역에 미리 저장된 인덱스에 따른 HFile의 위치 정보들로부터 상기 검색된 인덱스에 대응하는 HFile의 위치 정보를 획득하고, 상기 획득된 위치 정보를 이용하여 상기 요청된 데이터를 읽을 수 있다.
본 발명의 실시예들은, HFile에 대한 키를 요약하여 관리함으로써, 데이터베이스의 읽기 성능을 개선시킬 수 있다.
본 발명의 실시예들은, T-트리 인덱스 구조를 활용하여 HBase의 각 리전마다 저장된 HFile들에 대한 접근을 줄이고, 저장되는 데이터에 대한 인덱스를 만들어 데이터를 읽는 데 필요한 시간을 줄여 검색성능을 향상시킬 수 있다.
본 발명의 실시예들은, 메모리 영역에 저장된 인덱스들 중 빈도수가 낮은 인덱스를 삭제함으로써, 메모리에 부하가 발생하는 것을 방지할 수 있다.
도 1은 본 발명의 일 실시예에 따른 데이터베이스 읽기 방법을 설명하기 위한 일 예시도를 나타낸 것이다.
도 2는 T-트리 인덱스 구조를 설명하기 위한 일 예시도를 나타낸 것이다.
도 3은 본 발명의 일 실시예에 따른 데이터베이스 읽기 방법에 대한 동작 흐름도를 나타낸 것이다.
도 4는 도 3에 대한 읽기 과정을 설명하기 위한 일 예시도를 나타낸 것이다.
도 5는 본 발명에 따른 읽기 성능의 일 예시도를 나타낸 것이다.
도 6은 본 발명의 일 실시예에 따른 T-트리 인덱스 관리 방법에 대한 동작 흐름도를 나타낸 것이다.
도 7은 본 발명의 일 실시예에 따른 데이터베이스 읽기 장치에 대한 구성을 나타낸 것이다.
이하, 본 발명에 따른 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 또한, 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
본 발명은 분산 저장된 다수의 HFile들에 대한 키를 요약하여 관리하는 T-트리 인덱스 구조를 이용하여 HBase의 각 리전마다 저장된 HFile들에 대한 접근을 줄이고, 데이터를 읽는 데 필요한 시간을 줄여 검색성능을 향상시키는 것을 그 요지로 한다.
도 1은 본 발명의 일 실시예에 따른 데이터베이스 읽기 방법을 설명하기 위한 일 예시도를 나타낸 것이다.
도 1에 도시된 바와 같이, HBase은 HDFS을 통하여 테이블 형태로 데이터를 저장하여 관리하며, 테이블은 정렬된 키를 기준으로 분할하여 리전 서버 (Region Server)에 있는 여러 리전들에 분산되어 저장한다. 각각의 리전 내부에는 메모리 영역에 형성되어 삽입한 데이터를 임시적으로 저장하는 메모리 저장 테이블(MemStore), 메모리 영역에 형성되어 HFile들에 대한 인덱스를 저장하는 IStore, HDFS에 저장되는 HFile들, 서버 장애 시 IStore의 복구를 위한 IFile로 구성된다.
여기서, IStore는 HFile에 저장된 키/값 형식의 데이터를 구별하기 위하여 키를 요약하여 요약된 키 정보와 요약된 키에 대응하는 실제 키의 사상 정보를 포함하는 사상 테이블을 포함하고, 사상 테이블과 T-트리를 이용하여 형성된 T-트리 인덱스 구조를 포함한다.
IStore는 도 2에 도시된 바와 같이, 인덱스를 메모리에서 구성하고 사용하기 위하여 메모리에 최적화된 T-트리를 사용하며, 트리의 키를 간단하게 만들기 위해 로우 키(row key)와 컬럼(column)에 대한 두 개의 사상 테이블(mapping table)로 관리한다. T-트리 인덱스 구조의 각 노드는 한 개의 부모 노드 포인터, 두 개의 자식 노드 포인터와 복수 개의 데이터(로우키 ID, 컬럼 ID, 파일 포인터)로 구성된다. 각 노드는 가지고 있는 데이터들의 값 예를 들어, 데이터의 오프셋보다 작은 데이터들의 트리인 하위 트리(왼쪽 자식 포인터에 대응되는 트리)와 큰 데이터들의 트리인 하위 트리(오른쪽 자식 포인터에 대응되는 트리)를 가진다. T-트리 인덱스의 검색 연산은 현재 노드에서 데이터의 가장 작은 오프셋과 가장 큰 오프셋을 검색하고자 하는 인덱스와 비교함으로써, T-트리 인덱스에서 요청 데이터의 인덱스를 검색할 수 있다.
사상 테이블에 요약된 키와 데이터를 찾기 위한 실제 키의 사상정보를 유지하여 메모리 공간을 절약한다. 키는 각 데이터를 구분할 수 있는 값이어야 하기 때문에 길이가 길고, 따라서 각 노드별로 키를 가지고 있다면 공간효율이 떨어지게 된다. 본 발명은 공간 절약을 위하여 키를 요약한다. 키 정보는 로우 키와 컬럼으로 구성된다. 두 값은 HFile의 데이터를 구분하는 단위일 뿐 아니라 각각 구별되는 값이므로 각각 다르게 유지된다. 로우 키는 일정한 범위의 값이 리전으로 들어오지만 다양한 값이 들어오므로 범위 형태로 사상 테이블에 유지하고, 컬럼은 컬럼패밀리와 컬럼한정자 두 값의 합으로 HBase의 테이블이 생성되면 정해지게 되므로 전체 컬럼에 대한 사상정보를 사상테이블에 저장한다. 그리고 IFile에 같은 키를 가진 다른 버전의 데이터를 순차적으로 저장하여 버전 정보를 키에 포함시키지 않아도 버전 관리가 가능하다.
인덱스로 HFile에 직접 접근하기 위해 HFile의 위치, HFile 내부에 저장된 데이터의 오프셋 정보, 데이터의 크기 정보가 필요하다. 이 정보들을 모두 보관하기에는 많은 용량이 필요하므로 분산 저장시스템에 데이터의 위치 정보들을 IFile에 저장할 수 있다. IFile도 HDFS을 읽어야 하지만 전체 HFile 내부의 블록인덱스를 찾지 않고 하나의 파일만을 검색하기 때문에 기존 시스템보다 효율적이다.
또한, IStore가 모든 인덱스 정보를 유지하기에는 메모리의 제약이 있으므로 빈도수가 적은 인덱스 정보를 IStore에서 삭제할 수 있다. 즉, 인덱스 각각에 대한 빈도수를 저장하고, 저장된 빈도수가 미리 결정된 기준 빈도수보다 작은 경우 해당 인덱스를 삭제할 수 있으며, 빈도수에 따른 인덱스의 삭제는 일정 시간 단위 또는 미리 결정된 시간에 이루어질 수 있다. 이러한 빈도수에 따른 인덱스의 정리는 데이터가 많아 메모리의 사용을 줄여야 하기 때문이며, 따라서 각 인덱스의 빈도수를 저장하여 찾지 않는 인덱스 정보에 대하여 메모리에서 제거한다. 빈도수에 의해 제거된 인덱스 정보에 대해 읽기 요청이 들어오고 IStore에서 찾지 못하는 경우 저장된 IFile에는 IStore의 인덱스 트리도 같이 저장하므로 IFile에서 인덱스 정보를 찾을 수 있다.
나아가, IStore의 정보들은 지속적으로 데이터의 인덱스 정보들을 갱신할 수 있다. 하지만 쓰기요청이 들어올 때마다 인덱스도 갱신을 하게 되면 속도가 저하되기 때문에 최신 정보들의 경우에는 MemStore에서 유지하고 HFile의 데이터만을 인덱싱하여 갱신이 자주 발생하지 않도록 할 수 있다. 예를 들어, IStore는 컴팩션과 리전의 분할 과정과 같은 HFile이 변경될 때에 인덱스를 갱신할 수 있다. 여기서, 컴팩션은 HFile들을 합치는 기능을 수행하며, HFile과 데이터의 위치가 전체적으로 변경되므로 IStore와 IFile을 새롭게 생성한다. 컴팩션을 하지 않아도 인덱스를 통해 데이터를 쉽게 찾기 때문에 컴팩션의 수행을 줄일 수 있다. 리전 분할의 경우 하나의 리전을 두 개의 리전으로 분할하게 되고 HFile도 리전이 가진 로우 키의 범위에 따라 나뉘므로 새롭게 리전이 생성될 때 IStore를 각각 생성하여 HFile을 나눌 때 인덱스 정보를 생성할 수 있다.
IFile은 IStore의 모든 정보를 저장한다. 기본적으로 데이터의 위치를 찾기 위해 사용되지만 서버장애 시 IStore의 복구를 위해 IStore의 정보들도 저장할 수 있다. 이 때, IFile은 IStore와 마찬가지로 MemStore가 플러시되어 HFile에 데이터가 저장될 때 IFile도 새롭게 생성되어 데이터의 위치와 갱신된 IStore의 내용을 저장할 수 있다.
이러한 T-트리 인덱스 구조를 이용하여 HBase의 읽기 성능 개선을 위한 읽기 방법에 대해 도 3과 도 4를 참조하여 설명한다.
도 3은 본 발명의 일 실시예에 따른 데이터베이스 읽기 방법에 대한 동작 흐름도를 나타낸 것이고, 도 4는 도 3에 대한 읽기 과정을 설명하기 위한 일 예시도를 나타낸 것이다.
도 3과 도 4를 참조하면, 본 발명에 따른 데이터베이스 예를 들어, HBase 읽기 방법은 클라이언트 단말기로부터 읽기 연산 요청이 수신되면 최신 데이터가 저장된 MemStore 검색(①)을 수행한다(S310, S320).
단계 S320의 검색을 통해 MemStore에 요청 데이터의 존재 여부를 판단하고, MemStore에 요청 데이터가 존재하지 않으면 IStore에 저장된 로우 키 사상 테이블과 컬럼 사상 테이블로부터 요청 데이터의 인덱스를 획득(②)한다(S330, S340).
반면, 단계 S330 검색 결과 MemStore에 요청 데이터가 존재하면 MemStore에서 요청 데이터를 읽는다(S380).
단계 S340에 의해 요청 데이터의 인덱스가 획득되면 IStore의 T-트리 인덱스 구조에서 획득된 인덱스를 검색(③)한다(S350).
여기서, 단계 S350은 T-트리 인덱스의 최상위 부모 노드에서부터 획득된 인덱스와 가장 작은 오프셋 및 가장 큰 오프셋을 비교함으로써, 좌측 트리 또는 우측 트리를 결정하고, 그 다음 노드에서 이와 같은 과정을 반복 수행함으로써, 획득된 인덱스를 T-트리 인덱스 구조에서 검색할 수 있다.
본 발명에서의 T-트리 인덱스는 상술한 바와 같이 HFile에 저장된 키/값 형식의 데이터를 구별하기 위하여 키를 요약하고 요약된 키 정보를 생성하며, 생성된 요약된 키 정보와 요약된 키에 대응하는 실제 키의 사상 정보를 포함하는 사상 테이블을 메모리 영역에 형성하고, 형성된 사상 테이블과 T-트리를 이용하여 형성될 수 있다.
단계 S350에 의해 획득된 인덱스가 검색되면 검색된 인덱스를 이용하여 요청 데이터의 HFile 위치 정보를 획득(④)하고, 획득된 위치 정보의 HFile(⑤)을 통해 클라이언트 단말기로부터 요청 받은 요청 데이터에 대한 키/값 데이터를 읽는다(S360, S370).
여기서, 단계 S360은 검색된 인덱스를 이용하여 IFile의 데이터블록으로부터 요청 데이터의 HFile 위치 정보를 획득할 수 있다.
상술한 바와 같이, 본 발명에 따른 방법은T-트리 인덱스를 이용하여 HBase 읽기 기능을 수행하기 때문에 도 5에 도시된 일 예와 같이, 전체 데이터의 5%를 인덱스시킨 IStore(5%)와 전체 데이터의 10%를 인덱스시킨 IStore(10%)의 검색 시간이 전체 데이터를 기존 방식(HBase)으로 읽는 검색 시간에 비해 8%와 15% 더 빠른 것을 알 수 있다.
이와 같이, 본 발명의 실시예에 따른 데이터베이스 읽기 방법은 HFile에 대한 키를 요약하여 관리함으로써, 데이터베이스의 읽기 성능을 개선시킬 수 있으며, T-트리 인덱스 구조를 활용하여 HBase의 각 리전마다 저장된 HFile들에 대한 접근을 줄이고, 저장되는 데이터에 대한 인덱스를 만들어 데이터를 읽는 데 필요한 시간을 줄여 검색성능을 향상시킬 수 있다.
또한, 상술한 T-트리 인덱스 구조를 생성하고 관리하는 과정을 도 6을 참조하여 설명한다.
도 6은 본 발명의 일 실시예에 따른 T-트리 인덱스 관리 방법에 대한 동작 흐름도를 나타낸 것이다.
도 6을 참조하면, T-트리 인덱스 관리 방법은 HFile에 저장된 키/값 형식의 데이터를 구별하기 위하여 키를 요약하고 요약된 키 정보를 생성한다(S610).
여기서, 요약된 키 정보는 로우 키와 컬럼으로 구성될 수 있다.
단계 S610에 의해 요약된 키 정보가 생성되면 생성된 요약된 키 정보와 요약된 키에 대응하는 실제 키의 사상 정보를 포함하는 사상 테이블을 메모리 영역에 형성한다(S620).
이 때, 사상 테이블은 요약된 키 정보의 로우 키에 대한 사상 정보를 포함하는 사상 테이블과 요약된 키 정보의 컬럼에 대한 사상 정보를 포함하는 사상 테이블을 포함할 수 있다.
단계 S620에 의해 형성된 사상 테이블과 T-트리 구조를 이용하여 메모리 영역에 T-트리 인덱스 구조를 생성한다(S630).
여기서, 생성된 T-트리 인덱스에 포함된 인덱스 각각은 로우 키, 컬럼 및 파일 포인터의 조합으로 구성될 수 있다.
단계 S630에 의해 T-트리 인덱스 구조가 생성되면 IStore에 저장된 인덱스들 각각에 대해 빈도수를 저장하고, IStore에 저장된 인덱스들 각각에 대한 빈도수와 미리 결정된 기준 빈도수를 비교한다(S640, S650).
단계 S650의 비교 결과, 빈도수가 기준 빈도수보다 낮으면 해당 인덱스를 메모리 영역에서 삭제한다(S660).
여기서, 단계 S660에 의해 빈도수가 낮은 인덱스를 삭제함으로써, 메모리 사용을 줄일 수 있다.
또한, 본 발명에 따른 인덱스 관리 방법은 인덱스를 갱신할 수 있다. 예를 들어, 컴팩션과 리전의 분할을 포함하는 HFile이 변경되는 경우 T-트리 인덱스에 포함된 인덱스 또는 사상 테이블에 저장된 인덱스를 갱신할 수 있다.
이와 같이, 본 발명의 실시예에 따른 인덱스 관린 방법은 메모리 영역에 저장된 인덱스들 중 빈도수가 낮은 인덱스를 삭제함으로써, 메모리에 부하가 발생하는 것을 방지할 수 있고, HFile의 요약된 키 정보 기반으로 T-트리 인덱스 구조를 생성함으로써, 데이터베이스의 읽기 기능을 개선할 수 있다.
도 7은 본 발명의 일 실시예에 따른 데이터베이스 읽기 장치에 대한 구성을 나타낸 것이다.
도 7을 참조하면, 본 발명의 일 실시예에 따른 데이터베이스 읽기 장치(700)는 수신부(710), 검색부(720), 읽기부(730) 및 저장부(740)를 포함한다.
수신부(710)는 클라이언트 단말기로부터 읽기 연산 요청을 수신한다.
검색부(720)는 읽기 연산 요청에 따라 MemStore를 검색하여 요청 데이터를 검색하고, MemStore에 요청 데이터가 존재하지 않는 경우 메모리 영역에 형성된 T-트리 인덱스를 검색하여 요청된 데이터에 대한 인덱스를 검색한다.
여기서, T-트리 인덱스는HFile에 저장된 키/값 형식의 데이터를 구별하기 위하여 키를 요약하고 요약된 키 정보를 생성하며, 생성된 요약된 키 정보와 요약된 키에 대응하는 실제 키의 사상 정보를 포함하는 사상 테이블을 메모리 영역에 형성하고, 형성된 사상 테이블과 T-트리 구조를 이용하여 형성될 수 있다.
이러한 검색부(720)는 사상 테이블로부터 요청 데이터에 대응하는 요약된 키 정보를 획득하고, 획득된 요약된 키 정보를 통해 T-트리 인덱스의 인덱스를 검색할 수 있다.
이 때, 검색부(720)는 사상 테이블을 이용하여 요청 데이터에 대한 인덱스를 획득하고, 획득된 인덱스와 T-트리 인덱스를 구성하는 오프셋을 비교함으로써, T-트리 인덱스에서 획득된 인덱스를 검색할 수 있다.
읽기부(730)는 T-트리 인덱스에서 검색된 인덱스를 이용하여 요청 데이터의 위치 정보를 획득하고, 획득된 위치 정보의 HFile을 통해 요청 데이터의 키/값 데이터를 읽는다.
여기서, 읽기부(730)는 디스크 영역 예를 들어, IFile에 미리 저장된 인덱스에 따른 HFile의 위치 정보들로부터 검색된 인덱스에 대응하는 HFile의 위치 정보를 획득하고, 획득된 HFile의 위치 정보를 이용하여 요청 데이터의 키/값 데이터를 읽을 수 있다.
저장부(740)는 메모리 영역과 HDFS를 모두 포함하는 구성으로, MemStore, IStore, HFile, IFile을 모두 포함할 수 있다. 즉, 저장부(740)는 본 발명을 수행하는 모든 데이터를 저장한다.
이상에서 설명된 시스템 또는 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 시스템, 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예들에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (15)

  1. 클라이언트 단말기로부터 읽기 연산이 요청되면 메모리 저장 테이블(MemStore)을 검색하여 요청된 데이터를 검색하는 단계;
    상기 메모리 저장 테이블에 상기 요청된 데이터가 존재하지 않는 경우 메모리 영역에 형성된 T-트리 인덱스를 검색하여 상기 요청된 데이터에 대한 인덱스를 검색하는 단계; 및
    상기 검색된 인덱스를 이용하여 상기 요청된 데이터의 위치를 획득하고, 상기 획득된 위치의 HFile을 통해 상기 요청된 데이터를 읽는 단계
    를 포함하는 티-트리 인덱스를 이용한 데이터베이스 읽기 방법.
  2. 제1항에 있어서,
    상기 T-트리 인덱스는
    HFile에 저장된 키/값 형식의 데이터를 구별하기 위하여 키를 요약하고 요약된 키 정보를 생성하며, 상기 생성된 요약된 키 정보와 상기 요약된 키에 대응하는 실제 키의 사상 정보를 포함하는 사상 테이블을 상기 메모리 영역에 형성하고, 상기 형성된 사상 테이블과 T-트리에 의해 형성되는 티-트리 인덱스를 이용한 데이터베이스 읽기 방법.
  3. 제2항에 있어서,
    상기 요청된 데이터에 대한 인덱스를 검색하는 단계는
    상기 사상 테이블로부터 상기 요청된 데이터에 대응하는 요약된 키 정보를 획득하고, 상기 획득된 요약된 키 정보를 통해 상기 T-트리 인덱스의 인덱스를 검색하는 티-트리 인덱스를 이용한 데이터베이스 읽기 방법.
  4. 제2항에 있어서,
    상기 요청된 데이터에 대한 인덱스를 검색하는 단계는
    상기 사상 테이블을 이용하여 상기 요청된 데이터에 대한 인덱스를 획득하고, 상기 획득된 인덱스와 상기 T-트리 인덱스를 구성하는 오프셋을 비교함으로써, 상기 T-트리 인덱스에서 상기 획득된 인덱스를 검색하는 티-트리 인덱스를 이용한 데이터베이스 읽기 방법.
  5. 제1항에 있어서,
    상기 요청된 데이터를 읽는 단계는
    디스크 영역에 미리 저장된 인덱스에 따른 HFile의 위치 정보들로부터 상기 검색된 인덱스에 대응하는 HFile의 위치 정보를 획득하고, 상기 획득된 위치 정보를 이용하여 상기 요청된 데이터를 읽는 티-트리 인덱스를 이용한 데이터베이스 읽기 방법.
  6. 데이터베이스의 티-트리 인덱스 생성 방법에 있어서,
    HFile에 저장된 키/값 형식의 데이터를 구별하기 위하여 키를 요약하고 요약된 키 정보를 생성하는 단계;
    상기 생성된 요약된 키 정보와 상기 요약된 키에 대응하는 실제 키의 사상 정보를 포함하는 사상 테이블을 메모리 영역에 형성하는 단계; 및
    상기 형성된 사상 테이블과 T-트리를 이용하여 상기 메모리 영역에 T-트리 인덱스를 생성하는 단계
    를 포함하는 티-트리 인덱스 관리 방법.
  7. 제6항에 있어서,
    상기 요약된 키 정보는
    로우 키와 컬럼으로 구성되고,
    상기 사상 테이블을 메모리 영역에 형성하는 단계는
    상기 로우 키에 대한 사상 정보를 포함하는 제1 사상 테이블과 상기 컬럼에 대한 사상 정보를 포함하는 제2 사상 테이블을 형성하는 티-트리 인덱스 관리 방법.
  8. 제6에 있어서,
    상기 T-트리 인덱스에 포함된 인덱스 각각은
    로우 키, 컬럼 및 파일 포인터의 조합으로 구성되는 티-트리 인덱스 관리 방법.
  9. 제6에 있어서,
    상기 T-트리 인덱스에 포함된 인덱스 각각의 빈도수를 저장하고, 상기 저장된 빈도수가 미리 결정된 기준 빈도수보다 작은 경우 해당 인덱스를 상기 메모리 영역에서 삭제하는 단계
    를 더 포함하는 티-트리 인덱스 관리 방법.
  10. 제6에 있어서,
    컴팩션과 리전의 분할을 포함하는 HFile이 변경되는 경우 상기 T-트리 인덱스에 포함된 인덱스를 갱신하는 단계
    를 더 포함하는 티-트리 인덱스 관리 방법.
  11. 클라이언트 단말기로부터 읽기 연산 요청을 수신하는 수신부;
    상기 읽기 연산 요청에 따라 메모리 저장 테이블(MemStore)을 검색하여 요청된 데이터를 검색하고, 상기 메모리 저장 테이블에 상기 요청된 데이터가 존재하지 않는 경우 메모리 영역에 형성된 T-트리 인덱스를 검색하여 상기 요청된 데이터에 대한 인덱스를 검색하는 검색부; 및
    상기 검색된 인덱스를 이용하여 상기 요청된 데이터의 위치를 획득하고, 상기 획득된 위치의 HFile을 통해 상기 요청된 데이터를 읽는 읽기부
    를 포함하는 티-트리 인덱스를 이용한 데이터베이스 읽기 장치.
  12. 제11항에 있어서,
    상기 T-트리 인덱스는
    HFile에 저장된 키/값 형식의 데이터를 구별하기 위하여 키를 요약하고 요약된 키 정보를 생성하며, 상기 생성된 요약된 키 정보와 상기 요약된 키에 대응하는 실제 키의 사상 정보를 포함하는 사상 테이블을 상기 메모리 영역에 형성하고, 상기 형성된 사상 테이블과 T-트리에 의해 형성되는 티-트리 인덱스를 이용한 데이터베이스 읽기 장치.
  13. 제12항에 있어서,
    상기 검색부는
    상기 사상 테이블로부터 상기 요청된 데이터에 대응하는 요약된 키 정보를 획득하고, 상기 획득된 요약된 키 정보를 통해 상기 T-트리 인덱스의 인덱스를 검색하는 티-트리 인덱스를 이용한 데이터베이스 읽기 장치.
  14. 제12항에 있어서,
    상기 검색부는
    상기 사상 테이블을 이용하여 상기 요청된 데이터에 대한 인덱스를 획득하고, 상기 획득된 인덱스와 상기 T-트리 인덱스를 구성하는 오프셋을 비교함으로써, 상기 T-트리 인덱스에서 상기 획득된 인덱스를 검색하는 티-트리 인덱스를 이용한 데이터베이스 읽기 장치.
  15. 제11항에 있어서,
    상기 읽기부는
    디스크 영역에 미리 저장된 인덱스에 따른 HFile의 위치 정보들로부터 상기 검색된 인덱스에 대응하는 HFile의 위치 정보를 획득하고, 상기 획득된 위치 정보를 이용하여 상기 요청된 데이터를 읽는 티-트리 인덱스를 이용한 데이터베이스 읽기 장치.
KR1020150056598A 2015-04-22 2015-04-22 읽기 성능 개선을 위한 티-트리 인덱스를 이용한 데이터베이스 읽기 방법 및 그 장치 KR101693108B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150056598A KR101693108B1 (ko) 2015-04-22 2015-04-22 읽기 성능 개선을 위한 티-트리 인덱스를 이용한 데이터베이스 읽기 방법 및 그 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150056598A KR101693108B1 (ko) 2015-04-22 2015-04-22 읽기 성능 개선을 위한 티-트리 인덱스를 이용한 데이터베이스 읽기 방법 및 그 장치

Publications (2)

Publication Number Publication Date
KR20160126148A true KR20160126148A (ko) 2016-11-02
KR101693108B1 KR101693108B1 (ko) 2017-01-05

Family

ID=57518540

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150056598A KR101693108B1 (ko) 2015-04-22 2015-04-22 읽기 성능 개선을 위한 티-트리 인덱스를 이용한 데이터베이스 읽기 방법 및 그 장치

Country Status (1)

Country Link
KR (1) KR101693108B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108153805A (zh) * 2017-11-17 2018-06-12 广东睿江云计算股份有限公司 一种高效清理Hbase时序数据的方法、系统
CN112612805A (zh) * 2020-12-24 2021-04-06 北京浪潮数据技术有限公司 一种hbase数据索引到查询引擎的方法和相关装置

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108319725A (zh) * 2018-02-28 2018-07-24 武汉珞珈弘禹工程技术有限公司 一种水文监测数据存储的方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020029843A (ko) * 2000-10-14 2002-04-20 구자홍 주기억장치 데이터베이스의 인덱스 데이터 관리방법
KR20140048396A (ko) * 2012-10-11 2014-04-24 주식회사 케이티 클라우드 스토리지 서비스의 파일 검색 시스템 및 방법, 및 파일 제어 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020029843A (ko) * 2000-10-14 2002-04-20 구자홍 주기억장치 데이터베이스의 인덱스 데이터 관리방법
KR20140048396A (ko) * 2012-10-11 2014-04-24 주식회사 케이티 클라우드 스토리지 서비스의 파일 검색 시스템 및 방법, 및 파일 제어 방법

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108153805A (zh) * 2017-11-17 2018-06-12 广东睿江云计算股份有限公司 一种高效清理Hbase时序数据的方法、系统
CN112612805A (zh) * 2020-12-24 2021-04-06 北京浪潮数据技术有限公司 一种hbase数据索引到查询引擎的方法和相关装置
CN112612805B (zh) * 2020-12-24 2023-12-22 北京浪潮数据技术有限公司 一种hbase数据索引到查询引擎的方法和相关装置

Also Published As

Publication number Publication date
KR101693108B1 (ko) 2017-01-05

Similar Documents

Publication Publication Date Title
US11182356B2 (en) Indexing for evolving large-scale datasets in multi-master hybrid transactional and analytical processing systems
US8832050B2 (en) Validation of distributed balanced trees
US10783115B2 (en) Dividing a dataset into sub-datasets having a subset of values of an attribute of the dataset
US10114908B2 (en) Hybrid table implementation by using buffer pool as permanent in-memory storage for memory-resident data
US8719237B2 (en) Method and apparatus for deleting duplicate data
US8938430B2 (en) Intelligent data archiving
US9495398B2 (en) Index for hybrid database
US20200004851A1 (en) Trie-based indices for databases
US10678784B2 (en) Dynamic column synopsis for analytical databases
CN110134335B (zh) 一种基于键值对的rdf数据管理方法、装置及存储介质
CN110807028B (zh) 用于管理存储系统的方法、设备和计算机程序产品
KR101693108B1 (ko) 읽기 성능 개선을 위한 티-트리 인덱스를 이용한 데이터베이스 읽기 방법 및 그 장치
US20180075074A1 (en) Apparatus and method to correct index tree data added to existing index tree data
US20220342888A1 (en) Object tagging
US10572452B1 (en) Context-based read-ahead for B+ tree data structures in a deduplication system
US10698865B2 (en) Management of B-tree leaf nodes with variable size values
KR102354343B1 (ko) 블록체인 기반의 지리공간 데이터를 위한 공간 데이터 인덱싱 방법 및 장치
CN110968649B (zh) 用于管理数据集的方法、设备和计算机程序产品
EP3091447A1 (en) Method for modifying root nodes and modifying apparatus
US11132266B2 (en) Method, device, and computer program product for managing application system
JP5953262B2 (ja) データ索引装置、データ索引方法及びプログラム
US10402452B1 (en) Distributed hash table based logging service
US11481372B1 (en) Systems and methods for indexing multi-versioned data
CN109643303B (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
FPAY Annual fee payment

Payment date: 20191001

Year of fee payment: 4