KR101665045B1 - 저장장치 io 성능 향상을 위한 멀티 버전 기반의 자료구조를 사용한 데이터 저장 방법 및 장치 - Google Patents

저장장치 io 성능 향상을 위한 멀티 버전 기반의 자료구조를 사용한 데이터 저장 방법 및 장치 Download PDF

Info

Publication number
KR101665045B1
KR101665045B1 KR1020140017353A KR20140017353A KR101665045B1 KR 101665045 B1 KR101665045 B1 KR 101665045B1 KR 1020140017353 A KR1020140017353 A KR 1020140017353A KR 20140017353 A KR20140017353 A KR 20140017353A KR 101665045 B1 KR101665045 B1 KR 101665045B1
Authority
KR
South Korea
Prior art keywords
data
node
page
version
performance
Prior art date
Application number
KR1020140017353A
Other languages
English (en)
Other versions
KR20150096199A (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 KR1020140017353A priority Critical patent/KR101665045B1/ko
Publication of KR20150096199A publication Critical patent/KR20150096199A/ko
Application granted granted Critical
Publication of KR101665045B1 publication Critical patent/KR101665045B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 데이터 저장 방법에 있어서, 데이터 저장을 위한 SQLite의 insert operation을 호출하고, 호출된 상기 insert operation에 따라 데이터를 저장하는 자료구조의 노드 검색 operation을 수행하는 과정과, 검색 연산에 따라 데이터 write operation에 의해 변경이 일어나는 노드의 엔트리 초과 여부를 체크하는 과정과, 체크 결과 엔트리가 초과된 경우 해당 노드의 죽은 데이터가 있는지 여부를 확인하여 확인 결과에 따라 지연 가비지 컬렉션(Lazy garbage collecton) 수행 여부를 결정하는 과정과, 오버플로우 발생 여부를 체크하는 과정과, 상기 오버플로우가 발생된 경우 새로운 노드를 생성하고, 엔트리 재분배를 통해 시블링 재분배(sibling redistribution)을 회피하는 과정과, 노드를 구성하는 페이지의 노드별 생성을 제어하기 위한 지연 분할(Lazy split)을 수행하는 과정과, 버전과 함께 데이터를 저장하여 멀티 버저닝(Multi-versioning)을 수행하는 과정과, 데이터 페이지에 노드에 생명 주기를 카운팅하는 숫자인 파일 변경 카운터(file change counter)를 저장하는 과정을 포함함을 특징으로 한다.

Description

저장장치 IO 성능 향상을 위한 멀티 버전 기반의 자료구조를 사용한 데이터 저장 방법 및 장치{APPARATUS AND METHOD FOR SAVING DATA USING MULTI-VERSION BASED DATA STRUCTURES THAT IMPROVES STORAGE IO PERFORMANCE}
본 발명은 멀티-버전(Multi-version) 기법을 통해 플래시 메모리 내 데이터 저장 성능을 높이는 것에 관한 것으로, 보다 상세하게는 페이지(page) 단위로 데이터를 저장하는 자료 구조들, 예를 들어 B-tree, B+-tree, R-tree, Hash Table, Heap File 등에 멀티-버전(Multi-version) 기법 및, 지연 스플릿(Lazy Split), 메타데이터 임베딩(Metadata Embedding), 지연 가비지 콜렉션(Lazy Garbage Collection), 시블링 재분배 회피(Avoid Sibling Redistribution) 을 SQLite 특성에 맞게 최적화한 데이터 저장 방법 및 장치에 관한 것이다.
대부분의 안드로이드 어플리케이션은 작은 크기의 데이터를 저장할 때 SQLite라는 임베디드 데이터베이스 시스템(embedded database system)을 사용한다.
상기 안드로이드의 어플리케이션이 데이터를 저장하기 위해 SQLite의 insert operation을 호출하게 되면 SQLite는 기존에 가지고 있던 DB 파일(file)의 저널 파일(journal file)을 만약에 있을 시스템오류에 대비하여 생성을 하게 된다.
이때 파일 시스템인 EXT4는 새로운 파일이 생성되었기 때문에 파일의 컨시스턴시(consistency)를 유지하기 위하여 저널링(journaling)을 진행하게 된다. 여기서, journal file을 위한 journaling이라는 기이한 현상이 발생하게 되는데 이를 저널링 오브 저널(Journaling of Journal)이라고 부른다. Journaling of Journal 현상은 추가적인 I/O를 발생시켜 성능을 저하 시키는 주요 원인으로 지목되고 있다.
한편, 복구 정보를 추가적인 파일이 아닌 데이터베이스 파일 자체에 저장을 하고 시스템오류가 발생한 경우 버전(version) 정보를 이용하여 복구하도록 하는 Multi-version B-tree를 사용하더라도 여전히 많은 I/O 트래픽(traffic)이 문제가 된다.
따라서 본 발명은 Journaling of Journal 현상을 해결하기 위해 페이지 (page) 단위로 저장되는 자료구조에 멀티-버전 기법을 SQLite 특성에 맞게 최적화하여, 지연 스프릿, 메타데이터 임베딩, 지연 가비지 콜렉션, 이웃 노드 재분배 회 알고리즘을 수행하는 데이터 저장 방법 및 장치를 제공하고자 한다
본 발명의 일 견지에 따르면, 데이터 저장 방법에 있어서, 데이터 저장을 위한 SQLite의 insert operation을 호출하고, 호출된 상기 insert operation에 따라 데이터를 저장할 노드 검색 operation을 수행하는 과정과, 검색 연산에 따라 데이터 write operation에 의해 변경이 일어나는 노드의 엔트리 초과 여부를 체크하는 과정과, 체크 결과 엔트리가 초과된 경우 해당 노드의 죽은 데이터가 있는지 여부를 확인하여 확인 결과에 따라 지연 가비지 컬렉션(Lazy garbage collecton) 수행 여부를 결정하는 과정과, 오버플로우 발생 여부를 체크하는 과정과, 상기 오버플로우가 발생된 경우 새로운 노드를 생성하고, 엔트리 재분배를 통해 시블링 재분배(sibling redistribution)을 회피하는 과정과, 노드를 구성하는 페이지의 노드별 생성을 제어하기 위한 지연 분할(Lazy split)을 수행하는 과정과, 버전과 함께 데이터를 저장하여 멀티 버저닝(Multi-versioning)을 수행하는 과정과, 데이터 페이지에 노드에 생명 주기를 카운팅하는 숫자인 파일 변경 카운터(file change counter)를 저장하는 과정을 포함함을 특징으로 한다. 파일 변경 카운터는 단조 증가하는 숫자 또는 파일의 변경 시간 등 데이터의 생명 주기를 표시할 수 있는 값을 의미한다.
본 발명은 추가적인 I/O 발생 없이 Multi-version 기법에 기반한 자료구조들을 보다 SQLite 특성에 맞게 최적화하여 플래시 메모리 영역을 효율적으로 관리하므로 시스템을 보다 안정적으로 유지 가능한 효과가 있다.
도 1은 본 발명의 일 실시 예에 따른 지연 스플릿을 수행하는 B-트리를 통한 데이터 저장 방법에 관한 전체 흐름도.
도 2는 본 발명의 일 실시 예에 따른 지연 스플릿을 수행하는 B-트리를 통한 데이터 저장 방법이 적용된 Multi-version B-트리의 스플릿 과정을 보인 화면 예시도.
도 3은 본 발명의 일 실시 예에 따른 지연 스플릿을 수행하는 B-트리를 통한 데이터 저장 방법이 적용된 Sibling Redistribution vs. No Redistribution을 보인 화면 예시도.
도 4는 본 발명의 일 실시 예에 따른 지연 스플릿을 수행하는 B-트리를 통한 데이터 저장 방법에 따른 Insertion operation analysis을 보인 그래프.
도 5는 본 발명의 일 실시 예에 따른 지연 스플릿을 수행하는 B-트리를 통한 데이터 저장 방법에 따른 각 모드별 성능 측정을 보인 그래프.
도 6은 본 발명의 일 실시 예에 따른 지연 스플릿을 수행하는 B-트리를 통한 데이터 저장 방법에 따른 Various workload performance을 보인 예시도.
도 7은 본 발명의 일 실시 예에 따른 지연 스플릿을 수행하는 B-트리를 통한 데이터 저장 방법에 따른 복구 성능의 결과를 보인 그래프.
이하 본 발명에 따른 바람직한 실시 예를 첨부한 도면을 참조하여 상세히 설명한다. 하기 설명에서는 구체적인 구성 소자 등과 같은 특정 사항들이 나타나고 있는데 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐 이러한 특정 사항들이 본 발명의 범위 내에서 소정의 변형이나 혹은 변경이 이루어질 수 있음은 이 기술 분야에서 통상의 지식을 가진 자에게는 자명하다 할 것이다.
본 발명은 멀티-버전(Multi-version) 자료구조를 통해 플래시 메모리 내 데이터 저장에 관한 것으로, 더욱 상세하게는 저널링 오브 저널(Journaling of Journal) 현상을 해결하기 위하여 동시에 하나의 트랜잭션만 데이터베이스에 쓰기(write)를 할 수 있는 임베디드(embedded) 데이터베이스 시스템의 SQLite 특성을 이용하여 삽입(insert) 연산 시 데드(dead) 노드와 라이브(live) 노드를 결합하여 추가적인 페이지 생성을 최소화하기 위한 지연 분할(Lazy split)을 수행하고, 억세스된 노드의 오버플로우(overflow)가 발생된 경우 엔트리의 데드 엔트리 버전 확인을 통해 유효하지 않은 데이터를 필터링하여 추가적인 I/O 발생 없이 지연 가비지 컬렉션(lazy garbage collection)을 수행하고, 데이터에 대응하는 파일 변경 카운터(file change counter)를 가장 최근에 수정된 페이지에 저장하여 메타 데이터 임베딩(embedding)을 수행하고, 새로운 페이지를 생성하여 엔트리 재분배를 통해 시블링 재분배(sibling redistribution)를 회피함으로써 추가적인 I/O 발생 없이 Multi-version 자료구조를 보다 SQLite 특성에 맞게 최적화하여 플래시 메모리 영역을 효율적으로 관리하는 기술을 제공하고자 한다.
이하, 본 발명을 설명함에 있어서 언급되는 B-트리는 페이지 단위로 데이터를 저장 가능한 자료 구조를 의미하는 것으로, 비록 본 발명에서는 B-트리를 기반으로 실시 예로 설명하지만, 본 발명이 이에 한정되지 않음을 밝혀두는 바이며 해쉬 테이블, 힙 파일, 등 다양한 형태의 자료 구조를 포함함을 전제로 하는 바이다.
이하, 본 발명의 일 실시 예에 따른 지연 스플릿을 수행하는 B-트리를 통한 데이터 저장 방법에 관해 도 1을 참조하여 자세히 살펴보기로 한다.
도 1은 본 발명의 일 실시 예에 따른 지연 스플릿을 수행하는 B-트리를 통한 데이터 저장 방법에 관한 전체 흐름도이다.
도 1을 참조하면, 먼저 110 과정에서 소정 플랫폼 기반 어플리케이션이 데이터를 저장하기 위해 SQLite의 insert operation을 호출하고, 112 과정에서는 호출된 상기 insert operation에 따라 B-tree 노드 검색 operation을 수행한다.
여기서, 본 발명이 적용된 Multi-version B-tree의 경우 복구 정보를 추가적인 파일이 아닌 데이터베이스 파일 자체에 저장을 하고 시스템 오류가 발생한 경우 버전 정보를 이용하여 복구하도록 되어 있어 Journaling of Journal이 발생하지 않아 I/O 횟수를 획기적으로 줄일 수 있는 데이터베이스 시스템이다.
계속해서, 112 과정에서의 검색 연산(search operation)에 따라 114 과정에서는 데이터 write operation에 의해 변경이 일어나는 노드의 엔트리 초과 여부를 체크하고, 체크 결과 엔트리가 초과된 경우 116 과정으로 이동하여 해당 노드에 죽은 데이터가 있는지 검사한다. 만일 초과되지 않은 경우 124 과정으로 이동하여 데이터를 저장한다.
이후, 116 과정에서는 해당 노드에 죽은 데이터가 있는 경우, 죽은 데이터를 삭제하여 새로운 데이터가 저장될 수 있는 공간을 만드는 지연 가비지 컬렉션 (lazy garbage collection)을 수행한다. 상기 lazy garbage collection은 해당 노드 내 엔트리의 데드 엔트리(dead entry)의 버전을 확인하고, 확인된 상기 버전의 유효성 여부에 따라 데이터 삭제 여부를 결정한다.
즉, lazy garbage collection이 발생하게 되면 엔트리의 데드 엔트리 버전을 확인하여 상기 버전이 더 이상 유효하지 않을 경우 데이터를 삭제한다.
이러한 lazy garbage collection을 통해 추가적인 I/O 발생 없이 SQLite에 최적화된 garbage collection 진행이 가능하다.
이후 118 과정에서는 상술한 Lazy garbage collection 수행에도 불구하고 여전히 오버플로우(overflow)가 발생된 노드는 다수 존재하는 상태이므로 오버플로우 발생 여부를 체크한다.
이후 120 과정에서는, 체크 결과 오버플로우가 발생된 경우 엔트리 재분배를 통해 시블링 재분배(sibling redistribution)을 회피하고, 새로운 노드를 생성하여 데이터가 저장될 공간을 만드는 과정을 수행한다.
이때, 상기 Sibling redistribution의 경우 노드의 효율(utilization)을 높여서 서치 오퍼레이션(search operation)의 성능을 보다 향상시킨다.
하지만 Sibling Redistribution이 발생하게 될 경우 4개 이상의 더티 페이지(dirty page)가 발생하므로 본 발명의 실시 예에서는 SQLite 특성에 적합한 추가적인 I/O를 최소화 할 수 있도록 상술한 122 과정의 동작을 통해 Avoid Sibling Redistribution을 수행한다.
상기 Sibling redistribution이 발생하게 될 경우 주변 sibling에 대해 check하고, 변경 사항이 발생한 경우 그에 따른 부모 엔트리(parent entry)에 대한 업데이트도 발생하기 때문에 추가적인 I/O 뿐만 아니라 연산이 발생하게 된다.
본 발명의 실시 예에 따라 도 4에 도시된 바와 같이, sibling redistribution을 하지 않게 되면 연산 시간과 I/O traffic 둘 다 줄일 수 있는 효과가 발생한다.
이후, 122 과정에서는 B-트리에 대한 삽입 연산 시 상기 삽입 연산에 의해 변경이 일어나는 노드와 상술한 120 과정에서 새로 생성된 노드 사이에 데이터를 재분배 한다.
도 2의 a)에 도시된 바와 같이 키 값 25에 해당하는 엔트리에 대한 기존의Multi-version B-트리의 스플릿(split) 과정에서 P1과, P2, P3의 데이터가 새로 저장된 데이터를 제외하고 동일하므로 이를 기반으로 122 과정에서는 활성(live) 노드와 비활성(dead) 노드를 도 2의 b)에 도시된 바와 같이 합쳐서 추가적인 페이지 생성을 최소화하도록 하는 지연 분할(lazy split)을 수행한다.
상기 지연 분할(lazy split) 수행을 위해 오버플로우가 발생된 노드의 중앙(median)값과 상기 삽입 연산이 수행되는 데이터에 대응하는 키(key)값을 비교한다.
비교 결과, 상기 중앙값이 작은 경우 새로운 노드를 할당하여 상기 중앙값보다 큰 키 값을 갖는 엔트리들을 복사하여 새로 생성된 페이지에 저장하고, 상기 중앙값이 큰 경우 새로운 노드를 할당하고, 상기 중앙값보다 작은 키 값을 가지는 엔트리를 복사하여 데이터를 해당 페이지에 저장한다.
이를 통해 판단된 활성(live) 혹은 비활성(dead) 노드를 결합하여 상기 지연 분할을 수행한다..
여기서, 상기 B-트리는 플래시 메모리의 인덱스 구조를 나타낼 수 있고, 노드 및 상기 노드와 관련된 노드(조상, 부모, 자식, 사촌 포함)를 포함하고, 이러한 노드들은 각각 페이지 및 메타 페이지를 포함하고, 상기 노드는 적어도 하나의 페이지 및 하나의 메타 페이지로 구성될 수 있고, 상기 페이지는 노드를 구성하는 단위로서 실제 엔트리들을 포함한다. 하나의 실제 엔트리는 키 값과 실제 데이터의 위치를 나타내는 포인터 정보로 구성될 수 있다.
상기 B-트리를 기반으로 하는 파일 시스템 혹은 데이터베이스(database)는 데이터의 쓰기를 트랜잭션 단위로 처리하고, 단위 노드별로 입출력이 발생하여 설정된 노드의 크기 단위로 업데이트가 발생된다.
또한, 상기 오버플로우가 발생된 페이지에서는 복사된 엔트리의 엔드 버전(end version)을 현재 수행되는 트랜잭션 버전으로 바꿔준 후 변경된 관련 정보가 부모 노드(parent node)에 업데이트 해준다.
이러한 지연 분할(Lazy split)을 통해 최소한의 더티(dirty) 페이지 생성으로 새로 삽입된 데이터를 저장할 수 있다.
계속해서 124 과정에서 소정 데이터가 저장될 때, 126 과정에서는 상기 데이터와 이를 관리하기 위한 추가적인 메타 데이터 저장을 위해 데이터와 함께 파일 변경 카운터를 수정하려는 페이지에 함께 저장한다.
이러한 126 과정을 수행하는 메타 데이터 임베딩(embedding)에 대해 더욱 상세하게 설명하면, 본 발명에 있어서 SQLite는 하나의 노드(node) 단위로 I/O가 발생하게 되는데 SQLite의 메타 데이터도 또한 동일하게 설정된 노드의 크기(size) 단위로 업데이트가 발생한다. 이때, 상기 SQLite의 메타 데이터에는 데이터베이스의 동시성 제어(concurrency control)을 위한 버전과 같은 역할을 하는 파일 변경 카운터(file change counter)라는 4byte의 변수가 존재하는데, 예를 들어 새로운 데이터가 데이터베이스에 삽입될 경우 상기 file change counter의 값이 1만큼 증가하게 되며, 이 경우 데이터가 저장된 노드뿐만 아니라 하나의 노드 크기만큼의 I/O를 발생하지 않도록 하기 위하여 file change counter를 124 과정에서 가장 최근에 수정된 페이지에 상기 file change counter를 데이터와 함께 저장함으로써 실제 데이터에 대응하는 메타 데이터가 빈번하게 발생하지 않도록 메타 데이터 임베딩(embedding)을 수행한다.
또한, 이동된 file change counter가 본래의 역할을 할 수 있도록 공유 메모리 혹은 램 디스크(ram disk)를 사용하여 메모리에 저장하여 추가적인 I/O없이 데이터베이스의 동시성 제어가 가능하도록 하였다.
실험 결과 분석
이하에서는 본 발명의 일 실시 예에 따른 지연 스플릿을 수행하는 B-트리를 통한 데이터 저장에 관한 성능을 알아본다.
본 발명의 일 실시 예에 따른 지연 스플릿을 수행하는 B-트리를 통한 데이터 저장에 따른 insert operation을 분석하기 위해 우선, 1) Insert Analysis은 하기와 같다.
데이터베이스에 소정의 데이터를 삽입한 후에 1000번의 insert/delete를 번갈아 하며 1번의 쓰기 트랜잭션(write transaction)에 걸리는 시간을 측정 및 분석하였다. 비교 대상은 SQLite의 기본 모드 중 가장 빠른 Write Ahead Logging모드와 Multi-version B-tree(MVBT)를 비교하여 보았다. 도 4에 도시된 바와 같이, Write Ahead Logging의 경우 logging에서 많은 I/O 트래픽을 발생시키고 있었고, checkpoint의 interval에 따라 성능이 dependent 함을 알 수 있었다. Multi-version B-tree의 경우 연산 시간은 LS-MVBT보다 적었지만 I/O 트래픽이 많이 발생함을 알 수 있었다. LS-MVBT는 Write Ahead Logging에 비해 78%까지 성능이 좋아짐을 알 수 있었다.
2) 처리량(throughput)
SQLite가 기존에 지원하던 2개의 모드 (Truncate, Write Ahead Logging)과 본 발명이 적용된 알고리즘의 성능을 mobibench라는 툴을 사용하여 측정하여 보았다. 트랜잭션의 개수는 1000개로 설정하여 각각의 operation에 대한 성능을 측정하였다. 도 5에 도시된 바와 같이, MVBT의 성능이 Write Ahead Logging보다 좋았으며, 상기 MVBT에 본 발명에 따른 Lazy split, metadata embedding을 적용하여 본 결과 기존의 MVBT에 비해 많은 성능 향상이 있었고 이 모든 기법을 함께 적용한 결과 Write Ahead Logging에 비해 70% 성능향상과 Journaling 모드인 Trunacte 모드에 비해 1220%의 성능 향상이 있었다.
3) 작업량 퍼포먼스(workload performance)
도 6에 도시된 바와 같이, search와 write operation의 비율을 조절하면서 성능을 측정하였다. 93%까지는 LS-MVBT가 여전히 기존의 모드들에 비해 성능이 좋았다. 100% search performance에서는 Write Ahead Logging에 비해 LS-MVBT의 성능이 15% 정도 좋지 않았는데 LS-MVBT에서는 Node utilization을 위한 연산을 하지 않기 때문이다.
4) 복구 성능 측정
SQLite의 기존 복구 기법들은 다소 복잡한 연산이 필요한데 비해 LS-MVBT는 도 7에 도시된 바와 같이, version을 기반으로 복구를 진행하기 때문에 기존의 복구 모드에 비해 성능이 향상되었음을 확인할 수 있었다.
상기와 같이 본 발명에 따른 지연 스플릿을 수행하는 B-트리를 통한 데이터 저장 방법 및 장치에 관한 동작이 이루어질 수 있으며, 한편 상기한 본 발명의 설명에서는 구체적인 실시 예에 관해 설명하였으나 여러 가지 변형이 본 발명의 범위를 벗어나지 않고 실시될 수 있다. 따라서 본 발명의 범위는 설명된 실시 예에 의하여 정할 것이 아니고 청구범위와 청구범위의 균등한 것에 의하여 정하여져야 할 것이다.

Claims (4)

  1. 플랫폼 기반 어플리케이션이 실행되는 장치에 의하여 수행되는, 데이터베이스에 데이터를 저장하는 방법에 있어서,
    데이터를 제1 페이지(page)에 저장하는 삽입 연산(insert operation)을 호출하는 단계;
    상기 제1 페이지에 상기 데이터를 저장할 공간이 없는 오버플로우(overflow)가 발생하였는지 여부를 체크하는 단계; 및
    상기 제1 페이지에 오버플로우가 발생한 경우, 제2 페이지를 생성한 뒤 상기 제1 페이지에 포함된 적어도 하나의 데이터 중 일부와 상기 데이터를 상기 제2 페이지에 저장하는 단계를 포함하며,
    상기 적어도 하나의 데이터 중 일부는,
    상기 적어도 하나의 데이터에 대한 중앙(median)값을 기준으로 상기 적어도 하나의 데이터를 상한값과 하한값을 각각 갖는 2개의 집단으로 양분하였을 때, 상기 양분된 집단 중 상기 데이터에 대응하는 키 값이 속하는 집단이며,
    상기 적어도 하나의 데이터 중 일부에 포함된 데이터의 엔드 버전은 상기 삽입 연산에 상응하는 트랜잭션의 버전으로 변경되는
    데이터베이스에 데이터를 저장하는 방법.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 오버플로우(overflow)가 발생하였는지 여부를 체크하는 단계는,
    상기 제1 페이지에 상기 데이터를 저장할 공간이 없는 경우, 유효하지 않은 버전을 갖는 죽은 데이터가 상기 제1 페이지에 포함되어 있으면 상기 죽은 데이터를 삭제한 뒤 오버플로우가 발생하지 않은 것으로 체크하고, 상기 죽은 데이터가 상기 제1 페이지에 포함되지 않으면 오버플로우가 발생한 것으로 체크하는 것을 특징으로 하는
    데이터베이스에 데이터를 저장하는 방법.
  4. 제 1 항에 있어서,
    상기 데이터가 삽입되는 파일의 변경 횟수를 나타내는 파일 변경 카운터(file change counter)를 상기 데이터가 삽입되는 페이지에 저장하는 단계를 더 포함하는
    데이터베이스에 데이터를 저장하는 방법.
KR1020140017353A 2014-02-14 2014-02-14 저장장치 io 성능 향상을 위한 멀티 버전 기반의 자료구조를 사용한 데이터 저장 방법 및 장치 KR101665045B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140017353A KR101665045B1 (ko) 2014-02-14 2014-02-14 저장장치 io 성능 향상을 위한 멀티 버전 기반의 자료구조를 사용한 데이터 저장 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140017353A KR101665045B1 (ko) 2014-02-14 2014-02-14 저장장치 io 성능 향상을 위한 멀티 버전 기반의 자료구조를 사용한 데이터 저장 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20150096199A KR20150096199A (ko) 2015-08-24
KR101665045B1 true KR101665045B1 (ko) 2016-10-12

Family

ID=54058759

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140017353A KR101665045B1 (ko) 2014-02-14 2014-02-14 저장장치 io 성능 향상을 위한 멀티 버전 기반의 자료구조를 사용한 데이터 저장 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101665045B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014025097A1 (ko) 2012-08-10 2014-02-13 영남대학교 산학협력단 비휘발성 램 기반의 b+ 트리 데이터베이스화 방법

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100289331B1 (ko) * 1998-10-27 2001-05-02 정선종 고차원 색인 구조의 동시성 제어 방법
KR100349667B1 (ko) * 1999-12-24 2002-08-23 한국전자통신연구원 고차원 색인구조의 동시성 제어방법
KR100484485B1 (ko) * 2002-10-01 2005-04-20 한국전자통신연구원 비휘발성 메모리에의 데이터 저장 방법 및 장치

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014025097A1 (ko) 2012-08-10 2014-02-13 영남대학교 산학협력단 비휘발성 램 기반의 b+ 트리 데이터베이스화 방법

Also Published As

Publication number Publication date
KR20150096199A (ko) 2015-08-24

Similar Documents

Publication Publication Date Title
Raju et al. Pebblesdb: Building key-value stores using fragmented log-structured merge trees
US11113260B2 (en) Transactional access to records on secondary storage in an in-memory database
CN106462592B (zh) 优化对索引的多版本支持的系统和方法
US8909610B2 (en) Shared log-structured multi-version transactional datastore with metadata to enable melding trees
US8386421B2 (en) Concurrency control for confluent trees
US9626398B2 (en) Tree data structure
CN109891402B (zh) 可撤销和在线模式转换
Kim et al. Resolving Journaling of Journal Anomaly in Android {I/O}:{Multi-Version} B-tree with Lazy Split
Venkataraman et al. Consistent and durable data structures for {Non-Volatile}{Byte-Addressable} memory
US9003162B2 (en) Structuring storage based on latch-free B-trees
EP3170106B1 (en) High throughput data modifications using blind update operations
Eldawy et al. Trekking through siberia: Managing cold data in a memory-optimized database
US8719237B2 (en) Method and apparatus for deleting duplicate data
CN105868228A (zh) 为olap和oltp事务提供无锁读取和写入操作的内存数据库系统
Bernstein et al. Optimizing optimistic concurrency control for tree-structured, log-structured databases
JP6387399B2 (ja) データ操作のための、メモリ及びストレージ空間の管理
KR101549220B1 (ko) 데이터베이스 관리 방법, 시스템 및 데이터베이스 트리 구조
Schule et al. Versioning in main-memory database systems: From musaeusdb to tardisdb
Kim et al. Diva: Making mvcc systems htap-friendly
Jiao et al. BetrFS: a compleat file system for commodity SSDs
KR101665045B1 (ko) 저장장치 io 성능 향상을 위한 멀티 버전 기반의 자료구조를 사용한 데이터 저장 방법 및 장치
CN103353891B (zh) 数据库管理系统及其数据处理方法
KR102013839B1 (ko) 데이터베이스 관리 방법, 시스템 및 데이터베이스 트리 구조
US20180225318A1 (en) Data storing method using multi-version based data structure
Kim et al. Hybrid transactional/analytical processing amplifies io in lsm-trees

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190926

Year of fee payment: 4