KR100970946B1 - 플래시 메모리 기반 임베디드 데이터베이스 시스템의지연쓰기 방법 및 그를 위한 시스템 - Google Patents

플래시 메모리 기반 임베디드 데이터베이스 시스템의지연쓰기 방법 및 그를 위한 시스템 Download PDF

Info

Publication number
KR100970946B1
KR100970946B1 KR1020080011662A KR20080011662A KR100970946B1 KR 100970946 B1 KR100970946 B1 KR 100970946B1 KR 1020080011662 A KR1020080011662 A KR 1020080011662A KR 20080011662 A KR20080011662 A KR 20080011662A KR 100970946 B1 KR100970946 B1 KR 100970946B1
Authority
KR
South Korea
Prior art keywords
write
page
file
lazy
record
Prior art date
Application number
KR1020080011662A
Other languages
English (en)
Other versions
KR20090085818A (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 KR1020080011662A priority Critical patent/KR100970946B1/ko
Publication of KR20090085818A publication Critical patent/KR20090085818A/ko
Application granted granted Critical
Publication of KR100970946B1 publication Critical patent/KR100970946B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1865Transactional file systems
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing

Abstract

본 발명은 플래시 메모리 기반 임베디드 데이터베이스 시스템의 지연쓰기 방법 및 그를 위한 시스템에 관한 것으로, 본 발명에 따른 플래시 메모리 기반 임베디드 데이터베이스 시스템의 지연쓰기 방법의 하나의 실시예는: 진행중인 트랜잭션에서 데이터베이스 페이지(DBP) 갱신시 페이지버퍼가 갱신내역에 대한 지연쓰기 레코드(DWR)를 생성하고 생성된 지연쓰기 레코드를 지연쓰기 버퍼(DWB)에 추가하는 단계; 진행중인 트랜잭션의 커밋시 지연쓰기 버퍼에 존재하는 지연쓰기 레코드를 파일 시스템의 지연쓰기 파일(DWF)에 기록하는 단계; 프로그램 재시작에 따라 지연쓰기 버퍼가 파일 시스템의 지연쓰기 파일의 내용을 읽어 들이는 단계; 및 트랜잭션 진행에 따라 데이터베이스 파일로부터 읽어 들인 페이지의 페이지식별자(PID)를 이용하여 지연쓰기 버퍼에서 지연쓰기 파일로부터 읽어들인 레코드들 중 관련된 지연쓰기 레코드의 존재여부를 검색 추출하여 이전 페이지의 이미지에 반영하여 병합하는 단계;를 포함하여 이루어진다. 또한, 다른 실시예에서 불필요한 데이터를 삭제하고 크기를 줄이는 축약작업을 수행하는 단계를 포함하여 이루어진다.
또한 플래시 메모리 기반 임베디드 데이터베이스 시스템의 지연쓰기 방법을 구현하기 위한 플래시 메모리 기반 임베디드 데이터베이스 시스템을 제안한다.
플래시 메모리, 임베디드 데이터베이스 시스템, 지연쓰기, 삭제연산, 지연쓰기 버퍼, 페이지식별자, 병합, 축약작업

Description

플래시 메모리 기반 임베디드 데이터베이스 시스템의 지연쓰기 방법 및 그를 위한 시스템{Delayed Write Method in Flash Memory Based Embedded Database System And System for Performing It}
본 발명은 플래시 메모리 기반 임베디드 데이터베이스 시스템의 지연쓰기 방법 및 그를 위한 시스템에 관한 것이다.
보다 상세하게는 플래시 메모리에 대한 쓰기 연산과 삭제 연산을 감소시키는 플래시 메모리 기반 임베디드 데이터베이스 시스템의 지연쓰기 방법 및 그 방법을 구현하기 위한 플래시 메모리 기반 임베디드 데이터베이스 시스템에 관한 것이다.
휴대폰, PDA, 스마트카드, 디지털카메라 등과 같은 이동 컴퓨팅장치의 사용이 급증하면서 NAND플래시메모리(플래시메모리)에 대한 관심이 증가하고 있다. 플래시메모리는 가볍고 물리적인 충격에 강하며 전원소모가 작기 때문에 이동 컴퓨팅장치의 하드디스크를 대체할 매체로 각광받고 있다. 반면 플래시 메모리는 빠른 읽기연산 속도에 비해 쓰기연산 속도가 다른 메모리보다 느리고 하드디스크와 같은 메모리의 영역의 덮어쓰기 연산이 불가능하다. 플래시 메모리에 쓰기를 수행하기 위해서는 먼저 해당블록에 대해 삭제연산을 수행해야 하는데, 이것은 플래시 메모리의 연산 중 가장 비용이 많이 요구되는 연산이다. 메모리에서 쓰기 및 삭제연산은 읽기 연산에 비해 시간이 많이 소모되고 플래시 메모리를 마모시키므로 가능한 줄여야 한다.
이러한 문제점을 극복하기 위해 플래시 메모리는 파일 시스템과 플래시 메모리 사이에 위치하는 플래시 변환계층(flash memory translation layer, FTL) 소프트웨어를 사용한다. 플래시 변환계층은 다양한 블록교체기법을 적용하여 사용자에게 비교적 수행시간이 오랭 걸리는 삭제 연산에 대하여 이미 삭제 연산을 수행한 빈 블록으로 재사상(remapping)함으로써 플래시 메모리를 기존의 하드디스크와 같이 사용할 수 있게 한다. 그러나 FTL을 이용하여 덮어쓰기를 지원하는 것은 기존의 파일시스템 또는 데이터베이스 시스템에 플래시 메모리를 바로 사용할 수 있다는 장점이 있는 반면 실행성능이 매우 떨어진다.
FTL을 사용하지 않으면서 플래시 메모리에서 효율적으로 동작하는 파일시스템을 개발하고자 하는 연구를 통해 JFFS, YAFFS와 같은 새로운 파일시스템들이 제안되었고, 이들은 모두 로그파일시스템에 기초를 두고 있다. 일반적으로 데이터베이스 시스템이 효과적으로 동작하기 위해서는 해쉬테이블(hash table) 또는 검색트 리(search tree)와 같은 색인기법들이 필요하며 특히 B-트리(B+, B* 포함) 색인구조는 데이터의 효율적인 삽입, 삭제, 검색이 용이하며 확장성이 우수한 색인기법이다. 하지만 하드디스크에서와 달리 플래시 메모리 상에서 구현한 B-트리는 빈번한 페이지 갱신에 따른 덮어쓰기 증가로 인해 인덱스 구축비용이 매우 커진다는 문제가 있다.
따라서 플래시 메모리 환경에 적합한 트리 구현기법이 필요하다. 플래시 메모리 상에서 트리를 구현하기 위해 종래에 BFTL(B-tree flash translation layer)기법이 제안되었으나 거대한 사상 테이블을 유지하기 위한 별도의 SRAM영역이 필요하며 트리 검색시 일기연산이 다수 발생하여 검색속도가 떨어지는 단점을 가지고 있다. 이러한 단점을 극복하기 위해 FlashDB는 플래시 메모리 기반 데이터베이스 시스템에서 동적인 자동튜닝(tunning) 기법을 제안하고 있다. 이 기법은 저장미디어와 부하에 따라 B-트리의 페이지(노드)들의 특성을 구분하여 쓰기 연산이 많은 페이지는 BFTL의 로그페이지 구조를 적용하되 읽기연산이 많은 페이지는 디스크기반 B-트리의 페이지와 동일한 구조를 적용하였다. 플래시 기반 센서 장치용 효율적인 인덱싱 데이터구조에 관한 연구는 센서장치와 같은 매우 작은 저장공간을 사용하는 저장시스템을 위한 MicroHash와 MicroGF라는 인덱스 구조를 제안하였다. 이것은 해쉬테이블 구조에 기반한 것으로 적은 에너지를 소모하면서도 동등비교와 시간순서에 의한 데이터 검색이 효과적으로 이루어지도록 하였다. 반면 이 기법들은 대 량의 데이터를 다루는 응용에는 적용이 어렵고 일반적인 데이터베이스 시스템에서는 적용하기 곤란한 가정들에 기반하고 있다. 이러한 제약점은 플래시 기반 스마트 카드용 파일구조들을 제안하고 있는 연구에서도 동일하다. 기존 기법들은 주로 플래시 메모리 상의 효과적인 인덱스 구조에 초점을 맞추었다.
이에 반해 본 발명에서는 데이터베이스 내의 인덱스 페이지가 아닌 일반 데이터 페이지들에 대해서도 플래시 메모리상에서 쓰기 성능을 높이기 위한 기법을 제안한다.
본 발명은 상기 언급된 문제를 해결하기 위한 것으로, 쓰기와 소거(삭제) 연산은 플래시 메모리의 연산 중에 가장 큰 시간이 소요되므로, 데이터베이스 페이지 수준에서 페이지 갱신을 줄임으로써, 플래시 메모리에 대한 쓰기 연산과 삭제 연산을 감소시키는 지연쓰기 방법을 구현하고자 한다.
상기 과제를 해결하기 위하여, 본 발명에서 제안하는 기술은 지연쓰기 레코드를 사용하여 갱신되는 데이터베이스 페이지의 개수를 줄임으로써 플래시 메모리에 대한 쓰기와 소거 연산을 감소시킨다.
본 발명에 따른 하나의 실시예에서는 진행중인 트랜잭션에서 페이지버퍼에 적재된 데이터베이스 페이지(DBP) 갱신시 페이지버퍼가 갱신내역에 대한 지연쓰기 레코드(DWR)를 생성하며, 여기에서 지연쓰기 레코드는 앞부분에 배치되어 레코드의 크기, 갱신되는 페이지에 대한 페이지식별자(PID), 연산의 종류를 포함하고 있는 공통 필드영역 및 공통 필드영역 이후에 배치되어 각각의 연산별로 필요한 정보를 포함하고 있는 연산별 필드영역을 구비하는 구조이고, 그리고 생성된 지연쓰기 레코드를 플래시 메모리 상의 지연쓰기 버퍼(DWB)에 추가하는 제1 단계; 진행중인 트랜잭션의 커밋시 지연쓰기 버퍼에 존재하는 지연쓰기 레코드를 파일 시스템의 지연쓰기 파일(DWF)에 기록하는 제2 단계; 데이터베이스 시스템의 프로그램 재시작에 따라 지연쓰기 버퍼가 파일 시스템의 지연쓰기 파일의 내용을 읽어 들이는 제3 단계; 및 트랜잭션 진행에 따라 페이지버퍼의 상위계층에 의해 파일 시스템의 데이터베이스 파일로부터 데이터베이스 페이지를 읽어 들이고 해당 페이지의 페이지식별자(PID)를 이용하여 지연쓰기 버퍼에서 제3 단계에서 읽어들인 레코드들 중 관련된 지연쓰기 레코드의 존재여부를 검색하며 그리고 검색된 관련된 지연쓰기 레코드를 데이터베이스 파일로부터 읽어 들인 이전 데이터베이스 페이지의 이미지에 반영하여 병합하는 제4 단계;를 포함하여 이루어지는 플래시 메모리 기반 임베디드 데이터베이스 시스템의 지연쓰기 방법을 제안한다.
바람직하게는, 제2 단계는: 진행중인 트랜잭션에 대한 지연쓰기 레코드 기록 과정에서 기존 지연쓰기 파일에 기록된 유효한 지연쓰기 레코드 및 유효한 싱크트 페이지 리스트만을 유지하고 불필요한 데이터를 삭제하고 크기를 줄이는 축약작업을 수행하고 새로운 지연쓰기 파일을 생성하는 제2-1 단계를 포함하여 이루어진다. 여기에서 싱크트 페이지 리스트는 갱신된 페이지들 중에서 지연쓰기를 수행하지 않고 페이지 전체를 데이터베이스 파일에 기록한 페이지들에 대한 페이지식별자들이다.
또한, 상기 과제를 해결하기 위하여, 본 발명에 따른 다른 하나의 실시예에서, 지연쓰기 파일의 구조는, 지연쓰기 레코드들이 트랜잭션 단위로 기록되며 트랜잭션의 경계를 나타내기 위한 경계레코드를 트랜잭션 단위로 기록된 지연쓰기 레코드들의 시작과 끝에 삽입하고, 경계레코드 사이에는 갱신된 페이지들 중에서 지연쓰기를 수행하지 않고 페이지 전체를 데이터베이스 파일에 기록한 페이지들에 대한 페이지식별자들(싱크트 페이지 리스트)이 위치하고, 이어서 지연쓰기 레코드들이 기록되고, 페이지 크기에 맞춰 정렬하기 위해 더미 데이터가 추가되는 것을 제안한다.
게다가, 상기 과제를 해결하기 위하여, 본 발명에 따른 또 다른 하나의 실시예에서는, 시작경계레코드와 종료경계레코드로 구분되는 지연쓰기 레코드들의 집합인 트랜잭션런의 구조를 갖추어 갱신 트랜잭션당 하나의 트랜잭션런이 할당되고, 제3 단계에서 데이터베이스 응용프로그램이 시작되는 경우에 수행되는 지연쓰기 읽기는 트랜잭션런 내에서 앞에서 뒤로 레코드를 읽되 최근 트랜잭션런에서 이전 트랜잭션런 순서로 진행하는 것을 특징으로 하는 방법을 제안한다.
더욱이, 상기 과제를 해결하기 위하여, 본 발명에 따른 또 하나의 실시예에서는, 앞선 실시예들에서 제2 단계는: 제2-1 단계에서 축약작업으로 새로운 지연쓰기 파일 생성이 성공적으로 종료되면 기존의 지연쓰기 파일을 삭제하는 제2-2 단계;를 포함하여 이루어진다.
또한, 상기 과제를 해결하기 위하여, 본 발명에 따른 또 다른 하나의 실시예에서는, 앞선 실시예들에서 진행중인 트랜잭션에서 생성된 지연쓰기 레코드를 추가하는 과정에서 데이터베이스 페이지별로 현 트랜잭션에서 생성된 지연쓰기 레코드의 크기와 이전 트랜잭션에서 생성된 지연쓰기 레코드의 크기의 합이 페이지 크기의 미리 예정된 비율 이상이 되면 제2 단계에서 지연쓰기를 수행하지 않고 페이지 전체를 데이터베이스 파일에 기록하는 제2' 단계를 더 포함하는 것을 제한한다.
게다가, 상기 과제를 해결하기 위하여, 본 발명에 따른 또 다른 하나의 실시 예에서는, 앞선 실시예들에서 진행중인 트랜잭션 커밋시 지연쓰기 버퍼에 유지되고 있는 갱신내역을 파악하여 다음의 지연쓰기를 통한 이득(감소되는 페이지 양)을 사용하여 지연쓰기를 통한 이득이 없는 경우(이득 값이 양의 값이 아닌 경우) 제2 단계에서 지연쓰기를 수행하지 않고 갱신된 페이지를 데이터베이스 파일에 기록하는 제2" 단계를 더 포함하는 것을 제한한다:
지연쓰기를 통한 이득 = {지연쓰기 미수행시 갱신될 페이지의 개수} - {지연쓰기 수행시 지연쓰기 파일에 기록될 페이지의 개수 + 1}.
나아가, 상기 과제를 해결하기 위하여, 본 발명에 따른 또한 다른 하나의 실시예에서는, 앞선 실시예들에서 데이터베이스 페이지의 갱신영역이 페이지 헤더 영역인 경우 매번 갱신 때마다 지연쓰기 레코드를 생성하는 대신 갱신되는 헤더 영역만 유지하였다가 트랜잭션 커밋시에 갱신 영역을 지연쓰기 레코드로 생성하는 것을 특징으로 하는 방법을 제안한다.
게다가, 바람직하게는, 상기 과제를 해결하기 위하여, 본 발명에 따른 다른 하나의 실시예는, 파일시스템, 페이지버퍼 및 질의처리기를 포함하는 플래시 메모리 기반 임베디드 데이터베이스 시스템에 있어서, 파일시스템은 데이터베이스 파일과 지연쓰기 파일을 구비하고, 데이터베이스 시스템은: 진행중인 트랜잭션에서 페이지버퍼에 적재된 데이터베이스 페이지(DBP) 갱신시 페이지버퍼에 의해 갱신내역에 대한 생성된 지연쓰기 레코드(DWR)가 추가되고 데이터베이스 시스템의 프로그램 재시작에 따라 파일 시스템의 지연쓰기 파일의 내용을 읽어 들이는 지연쓰기 버퍼(DWB); 진행중인 트랜잭션의 커밋시 지연쓰기 버퍼에 존재하는 지연쓰기 레코드를 파일 시스템의 지연쓰기 파일(DWF)에 기록하는 지연쓰기 기록수단; 트랜잭션 진행에 따라 질의처리기에 의해 파일 시스템의 데이터베이스 파일로부터 읽어 들인 데이터베이스 페이지의 페이지식별자(PID)를 이용하여 지연쓰기 버퍼에서 지연쓰기 파일로부터 읽어들인 레코드들 중 관련된 지연쓰기 레코드의 존재여부를 검색하고 검색된 관련된 지연쓰기 레코드를 데이터베이스 파일로부터 읽어 들인 이전 데이터베이스 페이지의 이미지에 반영하여 병합하는 병합수단; 및 진행중인 트랜잭션에 대한 지연쓰기 레코드 기록 과정에서 기존 지연쓰기 파일에 기록된 유효한 지연쓰기 레코드만을 유지하고 불필요한 데이터를 삭제하고 크기를 줄이는 축약작업을 수행하고 새로운 지연쓰기 파일을 생성하는 축약수단;을 더 포함하여 이루어지는 것을 특징으로 하는 지연쓰기를 위한 플래시 메모리 기반 임베디드 데이터베이스 시스템을 제안한다.
본 발명에 따른 실시예와 기존 기술과의 비교해보면 다음과 같은 차이를 갖는다.
본 발명의 방법과 BFTL 기법을 비교해보면, 본 발명에 따른 실시예에서는 페이지가 캐시(버퍼)에 적재될 때 지연쓰기 큐(버퍼)에 저장된 레코드를 적용하므로 페이지 캐시(버퍼)에는 갱신된 페이지가 사용되는 반면 BFTL에서는 갱신 이전의 페 이지와 갱신 데이터가 서로 독립적으로 존재하고 예약버퍼 측에서 데이터를 검색하면 페이지 캐시(버퍼)의 데이터는 사용되지 않는다는 점에서 차이가 있다.
로그버퍼 FTL 기법(log buffer FTL)과 비교해보면, 동작하는 수준이 로그버퍼 FTL 기법은 섹터이고 본 발명에서는 페이지라는 점에서의 차이가 있으며, 또한 본 발명에 따른 실시예에서는 페이지의 내용 중 변화된 부분만을 유지하는 반면 로그버퍼 기법은 변경된 전체 섹터를 유지한다는 점에서 차이가 있다.
레코드 레벨 REDO 로깅 방법과 비교해보면, REDO 로그는 데이터베이스 시스템 재가동시 고장회복 단계에서 커밋된 데이터가 데이터베이스에 반드시 반영되도록 하기 위한 용도로 사용되는 것인 반면 본 발명에서의 지연쓰기 레코드는 순전히 페이지 갱신을 지연하기 위한 용도이다. 또한 지연쓰기 기법은 고장회복 단계가 아닌 정상적인 동작 중에 사용하는 것을 주요한 목적으로 한다는 점에서도 차이가 있다.
본 발명의 실시예에 따른 지연쓰기 방법을 사용하지 않는 경우 페이지의 캐시(버퍼) 여부와는 무관하게 언젠가는 해당 페이지들은 플래시 메모리 상에서 갱신이 이루어져야 한다. 반면 본 발명의 실시예에서는 다수의 페이지를 갱신하는 대신 지연쓰기 레코드들만을 플래시에 기록하면 되므로 실제 갱신되는 페이지는 크게 줄어들 수 있다.
본 발명에 따른 지연쓰기 방법 및 그를 구현하기 위한 시스템의 실시예에 따 라 데이터베이스 페이지 수준에서 페이지 갱신을 줄임으로써, 플래시 메모리에 대한 쓰기 연산과 삭제 연산을 감소시킬 수 있게 되었다.
그에 따라 쓰기 연산과 삭제연산의 감소를 통해 데이터베이스의 수행 성능을 높일 수 있게 되었다.
이하에서는 아래에 첨부된 도면을 참조하여 바람직한 실시예들을 가지고 당해 기술분야에서 평균적인 지식을 가진자의 이해를 돕기 위해 더욱 상세하게 설명한다. 다양한 실시예에 따른 중복되는 부분의 설명은 본 발명의 정신을 벗어나지 않는 범위에서 그리고 당해 기술분야에서 통상의 지식을 지닌 자의 본 발명에 대한 분명한 이해를 저해하지 않는 범위에서 생략한다.
구체적인 설명에 앞서, 본 출원에서 데이터베이스 페이지 또는 페이지(page)는 8KB 단위의 블럭을 단위로 저장되는 데이터를 말한다. 결과적으로 데이터베이스는 1MB에는 128Page를 저장 할 수 있게 된다. 하나의 열(Row)은 여러 개의 페이지에 걸쳐 저장될 수 없고 단 하나의 페이지에만 저장될 수 있다.
본 발명의 이해를 돕기 위해 설명될 실시예가 적용되는 작업환경은 다음과 같다. 본 발명에 따른 실시예이 적용될 임베디드 데이터베이스 시스템은 클라이언트 프로그램과 서버 프로그램으로 구분되어 프로세스간 통신을 통해 동작하는 분산 형 구조가 아닌 단일 프로그램으로 동작하는 환경을 기초로 하여 설명한다. 이 경우 데이터베이스 엔진은 라이브러리 형태로 제공되어 응용프로그램과 링크되어 동작한다.
본 발명에 따른 실시예에서는 트랜잭션 커밋(commit)시에 페이지버퍼의 데이터를 저장장치에 모두 기록(flush)하는 방식을 사용하는 것으로 한다. 이것은 앞서 설명한 단일 프로그램 형식의 데이터베이스 응용프로그램 구조에 기인하는 것으로 동시에 수행되는 다수의 데이터베이스 응용프로그램들간의 동시성제어(concurrency control)를 수행하기 위해서는 파일단위의 잠금(file locking)을 사용하게 된다. 임의의 트랜잭션에서 갱신된 내역을 별개의 프로세스에서 수행되는 다음 트랜잭션에 전달하기 위해서는 트랜잭션 커밋시 반드시 버퍼내의 갱신된 페이지들을 저장장치에 기록해야 하기 때문이다.
본 발명의 하나의 실시예에 따른 지연쓰기 방법의 동작원리를 설명한다.
도 1은 본 발명에 따른 플래시 메모리 기반 임베디드 데이터베이스 시스템의 지연쓰기 방법의 하나의 실시예에 따른 동작 방식을 나타내는 개념도이다.
도 1을 참조하면, 본 발명의 하나의 실시예에 있어서, 페이지버퍼(page buffer)(10)는 버퍼 내의 페이지를 갱신할 때마다 변경된 데이터를 포함하는 지연쓰기 레코드(delayed write record, DWR)(100, 100a, 100b, 100c, 100d)를 생성한다. 지연쓰기 레코드(DWR)(100)는 메인 메모리에 유지되며 트랜잭션 커밋(commit) 시에 지연쓰기 파일(delayed write file, DWF)(24)에 기록된다. 지연쓰기되는 페이 지들은 버퍼에서 페이지가 교체되더라도 데이터베이스(플래시 메모리)에 기록되지 않는다. 따라서 추후 해당 페이지들이 다시 페이지버퍼(10)에 적재될 때는 이전 페이지의 이미지에 지연쓰기 레코드(100)를 반영하는 병합(merge)과정을 거치게 된다.
이 과정에서 본 발명에서 제안하는 바에 따라, 도 1과 같이 여러 페이지에 대한 갱신내역을 지연쓰기 레코드(100)로 만들어서 지연쓰기 레코드(100)만 따로 저장하도록 하여 갱신되는 데이터베이스 페이지의 개수를 줄이고 결국 데이터베이스의 저장매체인 플래시 메모리 갱신 영역을 줄일 수 있도록 한다. 따라서 본 발명의 실시예는 데이터베이스에 대한 읽기 연산에 대해서는 부가적인 오버헤드가 발생하지만 쓰기연산의 효율을 높이고 플래시 메모리의 내구성을 늘이는 효과가 있다.
본 발명에 따른 지연쓰기 방법을 위한 시스템 구조를 살펴본다.
도 2는 본 발명에 따른 플래시 메모리 기반 임베디드 데이터베이스 시스템의 지연쓰기 방법을 구현하기 위한 데이터베이스 시스템의 하나의 실시예에 따른 구조를 나타내는 블럭도이다.
도 2에 따른 데이터베이스 시스템의 실시예의 구조는 일반적인 페이지버퍼(10)의 구조에 지연쓰기 버퍼(delayed write buffer, DWB)(40)를 추가한 형태이다. 지연쓰기 버퍼(DWB)(40)는 지연쓰기 레코드(DWR)(100, 100a, 100b, 100c, 100d)를 메모리 상에 유지하며 페이지 해쉬를 통해 페이지별로 그룹핑되어 있다. 페이지버퍼(10)에 적재된 데이터베이스 페이지에 갱신이 일어나면 갱신 내역에 대 한 지연쓰기 레코드(100, 100a, 100b, 100c, 100d)가 생성되고 지연쓰기 버퍼(40)에 추가된다.
반대로 데이터베이스 파일(22)로부터 페이지를 읽어들이는 경우에는 해당 페이지의 페이지 식별자(page identifier, PID)를 이용하여 지연쓰기 버퍼(40)에서 관련된 지연쓰기 레코드(100)의 존재여부를 검사한다. 지연쓰기 레코드(100)가 존재하면 그 내용을 읽어들인 페이지에 병합한다.
도 10은 본 발명에 따른 플래시 메모리 기반 임베디드 데이터베이스 시스템의 지연쓰기 방법을 구현하기 위한 데이터베이스 시스템의 하나의 실시예를 나타내는 블럭 구성도이다.
도 10에 도시된 바에 따르면, 지연쓰기를 위한 플래시 메모리 기반 임베디드 데이터베이스 시스템의 하나의 실시예는 데이터베이스 파일(22)과 지연쓰기 파일(24)을 구비하는 파일시스템(20)과, 데이터베이스 파일(22)에 페이지를 쓰고 진행중인 트랜잭션에서 페이지를 적재하는 페이지버퍼(10)와, 페이지버퍼(10)의 상위계층을 이루는 질의처리기(30), 및 지연쓰기 버퍼(40)를 구비하고 있다. 그리고 지연쓰기 버퍼(40), 기록수단(50), 병합수단(60) 및 축약수단(70)을 포함하고 있다. 지연쓰기 버퍼(40)의 구조에 대해서는 도 3을 참조하여 다음에 자세히 설명하기로 한다.
본 실시예에서 진행중인 트랜잭션에서 페이지버퍼(10)에 적재된 데이터베이스 페이지(DBP) 갱신시 페이지버퍼(10)에 의해 갱신내역에 대한 생성하고 생성된 지연쓰기 레코드(DWR)(100)는 지연쓰기 버퍼(DWB)(40)에 추가된다. 또한 지연쓰기 버퍼(DWB)(40)는 데이터베이스 시스템의 프로그램 재시작에 따라 파일시스템(20)의 지연쓰기 파일(24)의 내용을 읽어 들이게 된다. 지연쓰기 레코드(100)의 구조에 대해서는 도 4을 참조하여 아래에서 더욱 자세히 언급한다.
진행중인 트랜잭션의 커밋시 지연쓰기 버퍼(40)에 존재하는 지연쓰기 레코드(100)는 지연쓰기 기록수단(50)에 의해 파일시스템(20)의 지연쓰기 파일(DWF)(24)에 기록된다. 지연쓰기 파일(24)에 대해서는 도 5를 참조하여 아래에서 더욱 상세하게 설명될 것이다.
그리고 트랜잭션 진행에 따라 질의처리기(30)에 의해 파일시스템(20)의 데이터베이스 파일(22)로부터 데이터베이스 페이지를 읽어 들이고, 병합수단(60)은 읽어 들인 페이지의 페이지식별자(PID)를 이용하여 지연쓰기 버퍼(40)에서 지연쓰기 파일(24)로부터 읽어들인 레코드들 중 관련된 지연쓰기 레코드(100)의 존재여부를 검색하고 검색된 관련된 지연쓰기 레코드(100)를 데이터베이스 파일(22)로부터 읽어 들인 이전 데이터베이스 페이지의 이미지에 반영하여 병합한다.
게다가 축약수단(70)은 지연쓰기 기록수단(50)에 의한 진행중인 트랜잭션에 대한 지연쓰기 레코드(100) 기록 과정에서 기존 지연쓰기 파일(24)에 기록된 유효한 지연쓰기 레코드(100)만을 유지하고 불필요한 데이터를 삭제하고 크기를 줄이는 축약작업을 수행하고 새로운 지연쓰기 파일(24)을 생성한다. 축약작업에 대해서는 다음에 도 6 및 8을 참조하여 상세히 설명하기로 한다.
한편, 본 발명에 따른 플래시 메모리 기반 임베디드 데이터베이스 시스템의 지연쓰기 방법의 하나의 실시예는 지연쓰기 레코드(Delayed Write Record, DWR)(100)를 생성하여 지연쓰기 버퍼(Delayed Write Buffer, DWB)(40)에 추가하는 단계, 진행중인 트랜잭션 커밋시 지연쓰기 레코드(100)를 지연쓰기 파일(DWF)(24)에 기록하는 단계를 포함하고, 추후 해당 페이지들이 다시 페이지버퍼(10)에 적재될 때 지연쓰기 파일(24)의 내용을 읽어들여 이전 페이지의 이미지에 지연쓰기 레코드(100)를 반영하는 병합과정을 거치게 된다.
도 7은 본 발명에 따른 플래시 메모리 기반 임베디드 데이터베이스 시스템의 지연쓰기 방법의 하나의 실시예를 나타내는 흐름도이다.
도 7에 따르면, 본 발명에 따른 하나의 실시예는 제1 단계(S100)에서 진행중인 트랜잭션에서 페이지버퍼(10)에 적재된 데이터베이스 페이지(DBP) 갱신시 페이지버퍼(10)가 갱신내역에 대한 지연쓰기 레코드(DWR)(100)를 생성하며, 그리고 생성된 지연쓰기 레코드(100)를 플래시 메모리 상의 지연쓰기 버퍼(DWB)(40)에 추가한다.
제2 단계(S200)에서는 진행중인 트랜잭션의 커밋시 지연쓰기 버퍼(40)에 존재하는 지연쓰기 레코드(100)를 파일시스템(20)의 지연쓰기 파일(DWF)(24)에 기록한다.
도 8을 참조하면, 바람직하게는, 제2 단계에서는 진행중인 트랜잭션에 대한 지연쓰기 레코드(100) 기록 과정에서 기존 지연쓰기 파일(24)에 기록된 유효한 지연쓰기 레코드(100) 및 유효한 싱크트 페이지 리스트(250)만을 유지하고 불필요한 데이터를 삭제하고 크기를 줄이는 축약작업을 수행하고 새로운 지연쓰기 파일(24)을 생성하는 단계(S210)를 포함하여 이루어진다.
제3 단계(S300)는 데이터베이스 시스템의 프로그램 재시작에 따라 지연쓰기 버퍼(40)가 파일시스템(20)의 지연쓰기 파일(24)의 내용을 읽어 들인다.
그리고 제4 단계(S400)에서는 트랜잭션 진행에 따라 페이지버퍼(10)의 상위 계층, 예컨대 도 2 또는 10에서의 질의처리기(30),에 의해 파일시스템(20)의 데이터베이스 파일(22)로부터 데이터베이스 페이지를 읽어 들이고 해당 페이지의 페이지식별자(PID)를 이용하여 지연쓰기 버퍼(40)에서 제3 단계에서 읽어들인 레코드들 중 관련된 지연쓰기 레코드(100)의 존재여부를 검색한다(S410). 그리고 검색된 관련된 지연쓰기 레코드(100)를 데이터베이스 파일(22)로부터 읽어 들인 이전 데이터베이스 페이지의 이미지에 반영하여 병합하는 과정(S420)이 이루어진다.
본 발명에 따른 실시예에서는 CPU 사용 측면과 메모리 사용 측면에서 오버헤드가 따른다. 페이지를 읽을 때마다 지연쓰기 버퍼를 검색하고 만약 지연쓰기된 페이지로 판명되면 병합과정을 거쳐 페이지를 최신 상태로 변경해야 한다. 여기서 페이지식별자를 이용한 검색 과정에 소요되는 시간은 애초에 그다지 크지 않으며 코드 최적화를 통해 상당부분 줄어들게 된다.
도 3은 본 발명에 따른 플래시 메모리 기반 임베디드 데이터베이스 시스템의 지연쓰기 방법의 하나의 실시예에 적용되는 지연쓰기 버퍼(40)의 구조를 나타내는 개념도이다. 참조번호는 도 2 및 10에서의 구성을 참조한다.
지연쓰기 버퍼(40)에서는 도 3에서와 같이 페이지 식별자 해쉬를 통해 페이지상태(PageStatus) 객체에 지연쓰기 레코드(100)가 연결되어 있다. 페이지상태(PageStatus)는 다음과 같은 정보를 포함할 수 있다.
페이지 식별자(PID)를 나타내는 'page_id', 현재 실행중인 트랜잭션에서 데 이터베이스에 기록되었다면 참(true), 그렇지 않으면 거짓(false)을 나타내는 'synced_current_trans', 페이지에 대한 지연쓰기 상태를 나타내는 'dw_status', 현 트랜잭션에서 생성된 DWR(100)의 개수를 나타내는 'num_active', 이전 트랜잭션들에서 생성된 DWR(100)의 개수를 나타내는 'num_stable', 현 트랜잭션에서 생성된 DWR(100)의 크기를 나타내는 'size_active', 이전 트랜잭션에서 생성된 DWR(100)의 크기를 나타내는 'size_stable', 데이터베이스에 페이지가 기록되기 전에 생성된 DWR(100)로서 지연쓰기 파일(24)에 아직 존재하는 것들의 크기를 나타내는 'size_obsolete', 페이지헤더를 DWR(100)로 기록했으면 참(true), 그렇지 않으면 거짓(false)을 나타내는 'save_header', 이전 트랜잭션에서 생성된 DWR(100)들의 리스트를 나타내는 'stable_list', 현재 트랜잭션에서 생성된 DWR(100)들의 리스트를 나타내는 'active_list' 등이다.
도 3에 도시된 바와 같이, 지연쓰기 버퍼(40)내의 지연쓰기 레코드(100)는 현재 진행중인 트랜잭션에 의해 생성된 것을 의미하는 활성 지연쓰기 레코드(active delayed write records)(100)와 이전 트랜잭션에서 생성된 지연쓰기 레코드(100)를 의미하는 안정된 지연쓰기 레코드(stable delayed write records)(100)로 구분될 수 있다.
도 4는 본 발명에 따른 플래시 메모리 기반 임베디드 데이터베이스 시스템의 지연쓰기 방법의 하나의 실시예에 적용되는 지연쓰기 레코드(100)의 구조를 나타내는 개념도이다. 참조번호는 도 2 및 10에서의 구성을 참조한다.
도 4에 도시된 지연쓰기 레코드(100)의 구조를 살펴보면, 데이터베이스 페이지에 가해지는 갱신 연산의 종류와는 무관하게 레코드의 앞부분은 공통필드(101)들로 이루어져 있으며 레코드의 크기(rec_size), 갱신이 되는 페이지에 대한 식별자, 연산의 종류(op_code)가 여기에 해당된다. 공통 필드(101) 이후로는 영역별 필드(102)에 각각의 연산별로 필요한 정보를 기록하게 된다.
본 발명에 따른 하나의 실시예에서 지연쓰기 방법을 SQLite에 적용하였을 때 다음과 같은 5 가지 종류의 연산을 사용하였다.
페이지의 일정 영역에 대한 갱신 내역을 유지하는 연산인 'MEMCPY', 페이지의 시작부터 일정크기의 영역을 주어진 값으로 설정하는 연산인 'MEMSET', 오프셋(offset)으로 주어지는 페이지의 일정영역에 대해 주어진 1 바이트/2 바이트/4 바이트 값으로 설정하는 연산인 'PUT_BYTE/PUT_2BYTE/PUT_4BYTE', 주어진 레코드를 지정된 페이지 위치에 삽입하는 연산인 'INSERT_CELL', 그리고 주어진 위치의 레코드를 삭제하는 연산인 'DROP_CELL'이다.
본 발명에 따른 실시예에서는 본 발명의 이해를 돕기 위하여, 데이터 페이지는 임의의 순간에 오직 하나의 트랜잭션만이 갱신연산을 수행할 수 있는 것으로 하며 해당 트랜잭션이 종료되어야 다른 트랜잭션이 사용할 수 있는 것으로 하여 설명한다. 아울러 지연쓰기의 대상이 되는 데이터베이스 페이지는 인덱스 페이지와 작은 레코드(small record)(페이지 크기보다 작은 레코드)들 저장하는 페이지만이 해당되며 BLOB(binary large object)의 데이터를 저장하기 위한 페이지는 해당되지 않는다. 저장시스템 수준에서 페이지에 대한 갱신은 매우 다양한 형태로 이루어 질 수 있으나 본 발명에 따른 실시예에서는 앞서 언급된 5 종의 연산으로 축약하여 갱신 내역을 기록하였다.
본 발명에 따른 하나의 실시예에 따르면, 데이터베이스 페이지의 갱신영역이 페이지 헤더 영역인 경우 매번 갱신 때마다 지연쓰기 레코드를 생성하는 대신 갱신되는 헤더 영역만 유지하였다가 트랜잭션 커밋시에 갱신 영역을 지연쓰기 레코드(100)로 생성하도록 한다. 페이지 헤더 영역은 트랜잭션 수행도중 동일 영역이 여러 번 갱신되는 경우가 흔히 발생하는데, 매번 갱신 때마다 지연쓰기 레코드(100)를 생성하게 되면 지연쓰기의 효과가 줄어들 것이기 때문이다.
도 5는 본 발명에 따른 플래시 메모리 기반 임베디드 데이터베이스 시스템의 지연쓰기 방법의 하나의 실시예에 적용되는 지연쓰기 파일(24)의 구조를 나타내는 개념도이다.
지연쓰기 파일(delayed write file, DWF)(24)은 트랜잭션의 종료시 메인메모리상의 지연쓰기 버퍼(40)의 내용을 저장하고 트랜잭션의 시작시에는 그 내용을 읽어 들여 지연쓰기 버퍼(40)를 메모리에 구성하는 용도에 사용된다.
본 발명에 따른 더욱 다른 하나의 실시예에서는, 도 5에 도시된 바와 같이, 지연쓰기 레코드(100)들은 트랜잭션 단위로 기록이 되며 이것을 트랜잭션의 경계를 나타내기 위해 경계레코드(210, 220)를 시작(210)과 끝(220)에 삽입한다. 경계레코 드(210, 220)에는 다음과 같은 정보들이 유지된다. 지연쓰기 정보 시작(BEGIN) 또는 종료(END)를 나타내는 'demarc', 트랜잭션 식별자(transaction identifier)를 나타내는 'tx_id', 경계시작 레코드(210)까지의 오프셋(경계 종료 레코드(220)에만 사용)을 나타내는 'offset_begin', 지연쓰기 레코드(100)의 개수를 나타내는 'num_dwrecs', 지연쓰기를 사용하지 않고 데이터베이스에 기록된 페이지의 개수를 나타내는 'num_sync_pages', 페이지 정렬(alignment)을 사용하여 지연쓰기 레코드(100)를 기록한 경우 현재 지연쓰기에 추가된 더미 바이트의 크기를 나타내는 'pad_size', 매직 문자열, 지연쓰기 기록의 무결성(integrity)을 검사하기 위해 사용되는 'dw_magic' 등이다.
게다가, 경계레코드(210, 220) 사이에는 갱신된 페이지들 중에서 지연쓰기를 적용하지 않고 페이지 전체를 데이터베이스에 기록한 페이지들에 대한 페이지식별자들이 위치한다(도 5에서 'synced page list'(250)로 표시된 부분). 이어서 지연쓰기 레코드(100)들이 기록되고 페이지 크기에 맞춰 정렬을 하기 위해 더미 데이터를 추가한다. 마지막으로 종료 경계레코드(220)를 기록한다.
또한, 본 발명에 따른 또 다른 하나의 실시예에서는, 시작경계레코드(210)와 종료경계레코드(220)로 구분되는 레코드들의 집합을 트랜잭션런(200)이라 하고 갱신 트랜잭션당 하나의 트랜잭션런(200)이 할당된다. 지연쓰기의 읽기는 데이터베이스 응용 프로그램이 시작되는 경우에 수행되며 트랜잭션런(200) 내에서는 앞→뒤로 레코드를 읽되 최근 트랜잭션런(200)→이전 트랜잭션런(200) 순서로 진행한다.
도 6은 본 발명에 따른 플래시 메모리 기반 임베디드 데이터베이스 시스템의 지연쓰기 방법의 하나의 실시예에 적용되는 지연쓰기 파일(24)의 축약과정을 나타내는 개념도이다. 또한, 도 8은 본 발명에 따른 플래시 메모리 기반 임베디드 데이터베이스 시스템의 지연쓰기 방법의 또 하나의 실시예를 나타내는 부분 흐름도로 축약과정을 나타내고 있다.
본 발명에 따른 또 하나의 실시예에서는, 현 트랜잭션에 대한 지연쓰기 레코드(100) 쓰기 과정(S200)에서 축약작업이 수행된다. 도 8은 지연쓰기 레코드 쓰기 과정에서 축약작업의 흐름을 나타내고 있다. 본 실시예에서는, 지연쓰기 파일(24)은 시간이 경과될수록 그 크기가 늘어나게 되므로 불필요한 데이터를 삭제하고 크기를 줄이는 축약(shrink) 작업을 수행하고 이를 통해 유효한 지연쓰기 레코드(100) 그리고 유효한 지연쓰기 레코드(100)와 유효한 싱크트 페이지 리스트(synced page list, 지연쓰기를 적용하지 않고 페이지 전체를 데이터베이스에 기록한 페이지들에 대한 페이지식별자)(250)만을 유지한다(S210). 축약작업은 새로운 지연쓰기 파일(24)을 사용하고 기존의 지연쓰기 파일(24)은 축약작업이 성공적으로 종료되면 삭제한다(S220). 만약 축약작업 도중 갑작스런 정전 등으로 인해 컴퓨터 가동이 중단된다면 트랜잭션은 취소(abort)되고 재가동시에는 기존의 지연쓰기 파일(24)을 사용하고 새로운 지연쓰기 파일(24)은 무시된다.
축약 작업의 수행 여부를 판단하기 위해서, 본 발명에 따른 하나의 실시예에서는 다음과 같은 선택 기준을 사용하였다.
- 데이터베이이스 크기가 32 페이지 이하인 경우
: 유효한 DWR(100)의 크기의 합 * 10 < 불필요한 DWR(100)의 크기의 합
- 이외의 경우
: 유효한 DWR(100)의 크기의 합 < 불필요한 DWR(100)의 크기의 합
도 9는 본 발명에 따른 플래시 메모리 기반 임베디드 데이터베이스 시스템의 지연쓰기 방법의 다른 하나의 실시예를 나타내는 부분 흐름도이다.
페이지에 대한 갱신 영역의 크기가 작을수록 지연쓰기의 효과는 커지고 반대의 경우에는 효과가 줄어든다. 지연쓰기의 효과를 높이기 위하여, 도 9에 도시된 바에 따르면, 본 발명에 따른 또 다른 하나의 실시예에서는, 현 트랜잭션에서 생성된 지연쓰기 레코드들(100)의 리스트(active_list)에 지연쓰기 레코드(100)를 추가하는 과정(S100)에서 페이지별로 현 트랜잭션에서 생성된 지연쓰기 레코드(100)의 크기(size_active)와 전 트랜잭션에서 생성된 DWR(100)의 크기(size_stable)의 합이 페이지 크기의 일정 비율(dwratio_per_page) 이상이 되면 지연쓰기를 수행하지 않고 페이지 전체를 데이터베이스(22)에 기록한다(S1200). 여기에서 일정비율은 데이터베이스의 관리자 또는 데이터베이스 응용프로그램 개발자가 지연쓰기의 초기화 단계에서 인자로 지정할 수 있다. 페이지별로 현 트랜잭션에서 생성된 지연쓰기 레코드(100)의 크기(size_active)와 전 트랜잭션에서 생성된 DWR(100)의 크기(size_stable)의 합이 페이지 크기보다 큰 경우에는 지연쓰기를 수행하지 않고 페이지 전체를 데이터베이스에 기록하게 될 것이고, 또한 페이지 크기보다 작은 경 우라고 하더라도 데이터베이스 관리자 또는 개발자가 지정한 일정 비율 이상의 경우에는 지연쓰기를 수행하지 않고 페이지 전체를 데이터베이스에 기록하게 될 것이다.
본 실시예에 따라 병합 과정에서 상당 시간이 소요되는 문제를 해결할 수 있게 되었다. 본 실시예에서 페이지에 대한 지연쓰기 영역의 크기가 일정 비율 이상이면 지연쓰기를 하지 않고 플래시상의 페이지를 갱신하도록 함으로써, 최근 CPU 의 성능이 급격히 향상되고 있음을 감안했을 때 이 과정에서 소요되는 시간은 점차 줄어들 수 있다.
게다가, 지연쓰기가 효율적으로 동작하려면 단일 트랜잭션 내에서 다수의 페이지에 걸쳐 소량의 갱신이 이루어지는 경우에 적용되어야 한다.
도 9에 도시된 바와 같이, 본 발명에 따른 또 하나의 실시예에서는, 트랜잭션 커밋시에는 지연쓰기 버퍼(40)에 유지되고 있는 갱신내역을 파악하여 실제 지연쓰기를 적용할 것인지의 여부는 다음과 같이 지연쓰기를 통한 이득(감소되는 페이지 쓰기의 양)을 사용하여 판단한다. 만일 지연쓰기를 통한 이득이 없는 경우(이득 값이 양의 값이 아닌 경우), 즉 감소되는 페이지가 생기지 않는 경우에는 지연쓰기를 수행하지 않고 갱신된 페이지를 데이터베이스 파일에 기록할 수 있다.
지연쓰기를 통한 이득 = {지연쓰기를 수행하지 않았을 때 갱신될 페이지의 개수} - {지연쓰기를 수행하였을 때 지연쓰기 파일에 기록될 페이지의 개수+1}
여기서 1 은 지연쓰기 파일(24)에 쓰기 연산을 수행함으로써 부가적으로 발 생할 것으로 예상되는 파일 메타 정보 갱신 비용을 나타낸 것으로 1 회의 페이지 쓰기가 발생하는 것으로 한다.
[실시예의 비교실험]
본 발명에 따른 실시예의 성능을 평가하기 위해 실제 임베디드 시스템에서 SQLite EDBMS을 사용하여 본 발명의 실시예를 적용하기 전후의 성능을 비교하였다. 표 1은 본 발명에 따른 실시예의 성능을 평가하기 위한 하드웨어 및 소프트웨어 환경을 나타낸 것이다.
[표 1] 실험환경

임베디드 시스템 보드

Cirrus EDB9315A

CPU

ARM9 500MHz

OS

Linux 2.6.4

페이지 버퍼

400KB

플래시 메모리

NAND Flash 128MB중 4MB 파티션을 사용
(Large Block NAND Flash Memory)

트랜잭션의 종류

INSERT, TABLE SCAN

데이터베이스 페이지 크기

4096 바이트(bytes)

레코드의 크기(record size, rs)

16 바이트, 256 바이트
본 발명에 따른 실시예의 성능을 평가해 보기 위해 레코드의 크기가 각각 16 바이트와 256 바이트인 테이블을 사용하였고 빈 테이블에서 시작하여 임의의 키를 가지는 레코드 10,000 개를 삽입하는데 소요되는 시간을 측정하였다. 레코드 삽입 종료후, 레코드의 크기가 16 바이트, 256 바이트 일 때, 데이터베이스의 크기는 각각 241,664 바이트와 3,149,824 바이트가 되었는데 지연쓰기의 적용여부에 상관없이 모두 동일한 크기이다.
먼저 본 발명에 따른 실시예를 사용하기 위해 부가적으로 필요한 저장공간의 사용량 및 메인메모리 사용량을 알아본다.
[표 2] 지연쓰기 파일의 평균 크기(바이트 단위, 괄호는 데이터베이스 파일에 대한 상대적인 크기 비율)

레코드/트랜잭션
(트랜잭션의 수)

1
(10000)

4
(2500)

16
(625)

64
(157)

256
(40)

레코드의 크기 rs=16

23,108
(9.56%)

19,018
(7.78%)

15,778
(7.53%)

11,917
(4.93%)

8,485
(3.51%)

레코드의 크기 rs=256

58.339
(1.85%)

56,484
(1.79%)

54,496
(1.73%)

50,908
(1.62%)

18,028
(0.60%)
표 2 는 삽입 트랜잭션의 유형별로 평균적인 지연쓰기 파일의 크기를 나타낸 것이다. 전체적으로 데이터베이스 저장공간 크기의 10% 수준을 넘지 않는 부가적인 저장공간(지연쓰기 파일)을 사용만으로도 본 발명에 따른 실시예를 적용할 수 있음을 알 수 있다. 지연쓰기 레코드(100)의 메인메모리 캐쉬 또한 지연쓰기 파일(24)의 크기와 유사하므로 23KB~59KB 정도의 부가적인 메모리를 사용하게 된다. 여기서 지연쓰기 파일(24)에는 무효화된 지연쓰기 레코드(100)를 포함하므로 메인메모리의 실제 사용량은 이보다 작아진다.
트랜잭션에서 삽입하는 레코드의 개수가 작을수록 단일 트랜잭션런(200) 내부에는 지연쓰기 레코드(100) 보다는 트랜잭션 시작과 끝을 나타내는 레코드들이 차지하는 부피가 상대적으로 크고 전체 트랜잭션 시행회수도 많게 되므로 지연쓰기 파일(24)의 평균 크기가 커지게 되는 것을 알 수 있다.
표3은 트랜잭션 수행도중 발생하는 축약작업의 발생 회수를 나타낸 것이다. 축약작업은 지연쓰기 파일(24) 내의 무효한 지연쓰기 파일(24)을 추려내는 과정인데 수행성능에는 좋지 않은 영향을 미치게 된다. 트랜잭션 내에서 많은 수의 레코드를 삽입할수록 무효한 지연쓰기 레코드(100)의 비율이 빠르게 증가하게 되는데 그에 따라 축약작업도 더 자주 발생하게 된다. 특히, 축약작업 수행조건에서 데이터베이스의 페이지의 개수가 32개를 넘는 경우에는 더 자주 축약작업을 수행하도록 하였는데 그에 따라 256바이트 레코드를 사용하는 경우에 축약작업이 더 자주 발생하는 것을 보여 준다.
[표 3] 실행되는 트랜잭션의 수 및 지연쓰기 파일 축약 회수(괄호는 발생빈도)

레코드/트랜잭션
(트랜잭션의 수)

1
(10000)

4
(2500)

16
(625)

64
(157)

256
(40)

레코드의 크기 rs=16

334
(3.4%)

169
(6.8%)

94
(15.0%)

46
(29.3%)

17
(42.5%)

레코드의 크기 rs=256

364
(3.6%)

195
(7.8%)

115
(18.4%)

70
(44.6%)

34
(85.0%)
그래프 1 에서 가로축은 트랜잭션당 삽입한 레코드의 수, 세로축은 소요시간을 각각 나타내며 DW 와 NO_DW 는 각각 본 발명에 따른 실시예를 적용한 경우와 그렇지 않은 경우를 나타낸 것이다. 레코드의 크기에 상관없이 대체적으로 본 발명에 따른 실시예를 적용하는 편이 좋은 성능을 보였는데 특히 레코드의 크기가 작고 동시에 삽입되는 레코드의 개수가 적은 경우 상대적으로 더 좋은 효과를 보인다. 이것은 여러 페이지에 대한 갱신이 하나의 지연쓰기 페이지에 저장될 수 있으므로 전체적으로 페이지 쓰기 연산을 줄어들고 따라서 그만큼 플래시 쓰기 및 지우기가 줄어들 수 있기 때문이다. 단일 레코드가 삽입되는 경우에도 데이터 페이지와 인덱스 페이지가 동시에 갱신되며 경우에 따라서는 B-트리 인덱스 관리를 위해 다수의 페이지가 조금씩 갱신될 수 있다. 이 경우에도 지연쓰기의 장점이 적용될 수 있다.
Figure 112008009433630-pat00001
[그래프 1] 레코드 삽입 소요시간의 비교
그러나 트랜잭션당 레코드의 크기가 일정 수준 이상이 되면 (그래프에서는 64개 초과의 경우) 지연쓰기의 장점이 퇴색되는 것을 볼 수 있다. 이것은 일정 개수 이상의 레코드가 삽입되는 경우 지연쓰기에 의해 감소되는 페이지의 개수가 더 이상 늘어나지 않음을 의미한다. 이것은 그래프 2에서도 확인할 수 있다.
그래프 2는 삽입 실험을 수행하는 동안 발생하는 데이터베이스 페이지 쓰기 연산의 회수를 비교한 것으로 지연쓰기가 쓰기 연산의 회수를 감소시키는 것을 확인할 수 있으며 앞서 언급된 것처럼 트랜잭션 내에서 삽입되는 레코드의 개수가 일정 수준을 넘어서면 쓰기 연산의 감소 폭이 크지 않게 됨을 알 수 있다. 레코드의 크기가 커질수록 그렇지 않은 경우에 비해 분산된 페이지 쓰기를 더 작은 개수의 페이지에 쓰기로 합쳐주는 효과가 감소하게 된다. 이것은 그래프 2-(b)가 그래프 2-(a)보다 모든 영역에서 페이지 감소 비율이 더 작은 것을 통해서도 확인할 수 있다.
Figure 112008009433630-pat00002
[그래프 2] 파일에 대한 쓰기 연산 횟수의 비교 (DB 페이지 단위)
Figure 112008009433630-pat00003
[그래프 3] 파일에 대한 읽기 연산 횟수의 비교 (DB 페이지 단위)
그래프 3은 삽입실험에서 발생하는 데이터베이스 페이지에 대한 읽기 횟수를 비교한 것이다. 어느 경우에서나 지연쓰기를 적용한 경우 더 많은 페이지 읽기가 발생한다. 본 발명에 따른 실시예는 동일 프로세스에서 계속해서 트랜잭션을 수행하는 경우에는 이전 트랜잭션들에서 발생한 지연쓰기 레코드(100)를 메인메모리에 계속 캐쉬하는 방식을 취하였다. 이 과정에서 캐쉬의 유효성을 확인하기 위해 매 트랜잭션의 시작시마다 지연쓰기 파일(24)의 끝을 확인하는 과정을 거친다. 이 과정에서 부가적인 파일 읽기가 발생하는데 이것은 트랜잭션 시행회수와 비례하게 된다. 그래프 3에서 트랜잭션 내에서 삽입하는 레코드의 개수가 많아질수록 트랜잭션의 횟수는 줄어들게 되고 그에 따라 읽기 또한 줄어들게 됨을 알 수 있다.
본 발명에 따른 실시예를 공개소스 임베디드 데이터베이스 시스템 중의 하나인 SQLite Version 3에 구현하여 성능을 비교 분석한 결과 쓰기 연산의 감소를 통해 데이터베이스 갱신 성능을 향상시킬 수 있음을 확인하였다.
이상에서, 본 발명은 첨부된 도면 및 실시예에 따라 구체적으로 설명되었으나, 첨부된 도면 및 상기의 실시예는 본 발명에 대한 당해 기술분야에서 통상의 지식을 가진 자의 이해를 돕기 위해 예시적으로 설명된 것이므로, 본 발명의 범위는 첨부된 특허청구범위에 기재된 발명에 따라 해석되어져야 하고, 그 범위는 당해 기술분야에서 통상의 지식을 가진 자에 의한 다양한 변경, 대안, 균등물을 포함한다.
본 발명의 실시예에 따라 플래시 메모리 기반 임베디드 데이터베이스 시스템에서 쓰기 및 삭제연산이 줄어들게 함으로써 플래시 메모리의 수명을 늘리게 하는데 이바지하므로 당해 기술분야에서 매우 유용할 것이다.
도 1은 본 발명에 따른 플래시 메모리 기반 임베디드 데이터베이스 시스템의 지연쓰기 방법의 하나의 실시예에 따른 동작 방식을 나타내는 개념도이고,
도 2는 본 발명에 따른 플래시 메모리 기반 임베디드 데이터베이스 시스템의 지연쓰기 방법을 구현하기 위한 데이터베이스 시스템의 하나의 실시예에 따른 구조를 나타내는 블럭 개념도이고,
도 3은 본 발명에 따른 플래시 메모리 기반 임베디드 데이터베이스 시스템의 지연쓰기 방법의 하나의 실시예에 적용되는 지연쓰기 버퍼의 구조를 나타내는 개념도이고,
도 4는 본 발명에 따른 플래시 메모리 기반 임베디드 데이터베이스 시스템의 지연쓰기 방법의 하나의 실시예에 적용되는 지연쓰기 레코드의 구조를 나타내는 개념도이고,
도 5는 본 발명에 따른 플래시 메모리 기반 임베디드 데이터베이스 시스템의 지연쓰기 방법의 하나의 실시예에 적용되는 지연쓰기 파일의 구조를 나타내는 개념도이고,
도 6은 본 발명에 따른 플래시 메모리 기반 임베디드 데이터베이스 시스템의 지연쓰기 방법의 하나의 실시예에 적용되는 지연쓰기 파일의 축약과정을 나타내는 개념도이고,
도 7은 본 발명에 따른 플래시 메모리 기반 임베디드 데이터베이스 시스템의 지연쓰기 방법의 하나의 실시예를 나타내는 흐름도이고,
도 8은 본 발명에 따른 플래시 메모리 기반 임베디드 데이터베이스 시스템의 지연쓰기 방법의 또 하나의 실시예를 나타내는 부분 흐름도이고,
도 9는 본 발명에 따른 플래시 메모리 기반 임베디드 데이터베이스 시스템의 지연쓰기 방법의 다른 하나의 실시예를 나타내는 부분 흐름도이고,
도 10은 본 발명에 따른 플래시 메모리 기반 임베디드 데이터베이스 시스템의 지연쓰기 방법을 구현하기 위한 데이터베이스 시스템의 하나의 실시예를 나타내는 블럭 구성도이다.
< 도면의 주요부분에 대한 부호의 설명 >
10 : 페이지버퍼 20 : 파일시스템
22 : 데이터베이스 파일 24 : 지연쓰기 파일(DWF)
30 : 질의 처리기 40 : 지연쓰기버퍼(DWB)
100, 100a 내지 100d : 지연쓰기 레코드(DWR)
101 : 공통필드영역 102 : 연산별 필드영역
200 : 트랜잭션런 210 : 시작경계레코드
220 : 종료경계레코드

Claims (8)

  1. 진행중인 트랜잭션에서 페이지버퍼에 적재된 데이터베이스 페이지(DBP) 갱신시 페이지버퍼가 갱신내역에 대한 지연쓰기 레코드(DWR)(100)를 생성하며, 여기에서 지연쓰기 레코드(100)는 앞부분에 배치되어 레코드의 크기, 갱신되는 페이지에 대한 페이지식별자(PID), 연산의 종류를 포함하고 있는 공통 필드영역 및 공통 필드영역 이후에 배치되어 각각의 연산별로 필요한 정보를 포함하고 있는 연산별 필드영역을 구비하는 구조이고, 그리고 생성된 지연쓰기 레코드를 플래시 메모리 상의 지연쓰기 버퍼(DWB)에 추가하는 제1 단계;
    상기 진행중인 트랜잭션의 커밋시 상기 지연쓰기 버퍼에 존재하는 지연쓰기 레코드를 파일 시스템의 지연쓰기 파일(DWF)에 기록하는 제2 단계;
    데이터베이스 시스템의 프로그램 재시작에 따라 지연쓰기 버퍼가 상기 파일 시스템의 지연쓰기 파일의 내용을 읽어 들이는 제3 단계; 및
    트랜잭션 진행에 따라 페이지버퍼의 상위계층에 의해 상기 파일 시스템의 데이터베이스 파일로부터 데이터베이스 페이지를 읽어 들이고 해당 페이지의 페이지식별자(PID)를 이용하여 상기 지연쓰기 버퍼에서 제3 단계에서 읽어들인 레코드들 중 관련된 지연쓰기 레코드의 존재여부를 검색하며 그리고 검색된 관련된 지연쓰기 레코드를 상기 데이터베이스 파일로부터 읽어 들인 이전 데이터베이스 페이지의 이미지에 반영하여 병합하는 제4 단계;를 포함하고,
    상기 제2 단계는 진행중인 트랜잭션에 대한 지연쓰기 레코드 기록 과정에서 기존 지연쓰기 파일에 기록된 유효한 지연쓰기 레코드 및 유효한 싱크트 페이지 리스트만을 유지하고 불필요한 데이터를 삭제하고 크기를 줄이는 축약작업을 수행하고 새로운 지연쓰기 파일을 생성하는 제2-1 단계를 포함하여 이루어지고, 여기에서 상기 싱크트 페이지 리스트는 갱신된 페이지들 중에서 지연쓰기를 수행하지 않고 페이지 전체를 데이터베이스 파일에 기록한 페이지들에 대한 페이지식별자들인 것을 특징으로 하는 플래시 메모리 기반 임베디드 데이터베이스 시스템의 지연쓰기 방법.
  2. 제 1 항에 있어서, 상기 지연쓰기 파일의 구조는,
    지연쓰기 레코드들이 트랜잭션 단위로 기록되며 트랜잭션의 경계를 나타내기 위한 경계레코드를 트랜잭션 단위로 기록된 지연쓰기 레코드들의 시작과 끝에 삽입하고, 경계레코드 사이에는 갱신된 페이지들 중에서 지연쓰기를 수행하지 않고 페이지 전체를 데이터베이스 파일에 기록한 페이지들에 대한 페이지식별자들(싱크트 페이지 리스트)이 위치하고, 이어서 지연쓰기 레코드들이 기록되고, 페이지 크기에 맞춰 정렬하기 위해 더미 데이터가 추가되는 것을 특징으로 하는 플래시 메모리 기반 임베디드 데이터베이스 시스템의 지연쓰기 방법.
  3. 제 2 항에 있어서,
    시작경계레코드와 종료경계레코드로 구분되는 지연쓰기 레코드들의 집합인 트랜잭션런의 구조를 갖추어 갱신 트랜잭션당 하나의 트랜잭션런이 할당되고,
    제3 단계에서 데이터베이스 응용프로그램이 시작되는 경우에 수행되는 지연쓰기 읽기는 트랜잭션런 내에서 앞에서 뒤로 레코드를 읽되 최근 트랜잭션런에서 이전 트랜잭션런 순서로 진행하는 것을 특징으로 하는 플래시 메모리 기반 임베디드 데이터베이스 시스템의 지연쓰기 방법.
  4. 제 2 항 또는 제 3 항에 있어서, 제2 단계는,
    상기 제2-1 단계에서 상기 축약작업으로 새로운 지연쓰기 파일 생성이 성공적으로 종료되면 기존의 지연쓰기 파일을 삭제하는 제2-2 단계;를 포함하여 이루어지는 것을 특징으로 하는 플래시 메모리 기반 임베디드 데이터베이스 시스템의 지연쓰기 방법.
  5. 제 4 항에 있어서,
    진행중인 트랜잭션에서 생성된 지연쓰기 레코드를 추가하는 과정에서 데이터베이스 페이지별로 현 트랜잭션에서 생성된 지연쓰기 레코드(활성 지연쓰기 레코드)의 크기와 이전 트랜잭션에서 생성된 지연쓰기 레코드(안정된 지연쓰기 레코드)의 크기의 합이 페이지 크기의 미리 예정된 비율 이상이 되면 제2 단계에서 지연쓰기를 수행하지 않고 페이지 전체를 데이터베이스 파일에 기록하는 제2' 단계를 더 포함하는 것을 특징으로 하는 플래시 메모리 기반 임베디드 데이터베이스 시스템의 지연쓰기 방법.
  6. 제 4 항에 있어서,
    진행중인 트랜잭션 커밋시 지연쓰기 버퍼에 유지되고 있는 갱신내역을 파악하여 다음의 지연쓰기를 통한 이득(감소되는 페이지 양)을 사용하여 지연쓰기를 통한 이득이 없는 경우(이득 값이 양의 값이 아닌 경우) 제2 단계에서 지연쓰기를 수행하지 않고 갱신된 페이지를 데이터베이스 파일에 기록하는 제2" 단계를 더 포함하는 것을 특징으로 하는 플래시 메모리 기반 임베디드 데이터베이스 시스템의 지연쓰기 방법:
    지연쓰기를 통한 이득 = {지연쓰기 미수행시 갱신될 페이지의 개수} - {지연쓰기 수행시 지연쓰기 파일에 기록될 페이지의 개수 + 1}.
  7. 제 4 항에 있어서,
    데이터베이스 페이지의 갱신영역이 페이지 헤더 영역인 경우 매번 갱신 때마다 지연쓰기 레코드를 생성하는 대신 갱신되는 헤더 영역만 유지하였다가 트랜잭션 커밋시에 갱신 영역을 지연쓰기 레코드로 생성하는 것을 특징으로 하는 플래시 메모리 기반 임베디드 데이터베이스 시스템의 지연쓰기 방법.
  8. 파일시스템, 페이지버퍼 및 질의처리기를 포함하는 플래시 메모리 기반 임베 디드 데이터베이스 시스템에 있어서,
    상기 파일시스템은 데이터베이스 파일과 지연쓰기 파일을 구비하고,
    상기 데이터베이스 시스템은:
    진행중인 트랜잭션에서 페이지버퍼에 적재된 데이터베이스 페이지(DBP) 갱신시 페이지버퍼에 의해 갱신내역에 대한 생성된 지연쓰기 레코드(DWR)가 추가되고 데이터베이스 시스템의 프로그램 재시작에 따라 상기 파일 시스템의 지연쓰기 파일의 내용을 읽어 들이는 지연쓰기 버퍼(DWB);
    진행중인 트랜잭션의 커밋시 상기 지연쓰기 버퍼에 존재하는 지연쓰기 레코드를 상기 파일 시스템의 지연쓰기 파일(DWF)에 기록하는 지연쓰기 기록수단;
    트랜잭션 진행에 따라 질의처리기에 의해 상기 파일 시스템의 데이터베이스 파일로부터 읽어 들인 데이터베이스 페이지의 페이지식별자(PID)를 이용하여 상기 지연쓰기 버퍼에서 지연쓰기 파일로부터 읽어들인 레코드들 중 관련된 지연쓰기 레코드의 존재여부를 검색하고 검색된 관련된 지연쓰기 레코드를 상기 데이터베이스 파일로부터 읽어 들인 이전 데이터베이스 페이지의 이미지에 반영하여 병합하는 병합수단; 및
    진행중인 트랜잭션에 대한 지연쓰기 레코드 기록 과정에서 기존 지연쓰기 파일에 기록된 유효한 지연쓰기 레코드만을 유지하고 불필요한 데이터를 삭제하고 크기를 줄이는 축약작업을 수행하고 새로운 지연쓰기 파일을 생성하는 축약수단;을 더 포함하여 이루어지는 것을 특징으로 하는 지연쓰기를 위한 플래시 메모리 기반 임베디드 데이터베이스 시스템.
KR1020080011662A 2008-02-05 2008-02-05 플래시 메모리 기반 임베디드 데이터베이스 시스템의지연쓰기 방법 및 그를 위한 시스템 KR100970946B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080011662A KR100970946B1 (ko) 2008-02-05 2008-02-05 플래시 메모리 기반 임베디드 데이터베이스 시스템의지연쓰기 방법 및 그를 위한 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080011662A KR100970946B1 (ko) 2008-02-05 2008-02-05 플래시 메모리 기반 임베디드 데이터베이스 시스템의지연쓰기 방법 및 그를 위한 시스템

Publications (2)

Publication Number Publication Date
KR20090085818A KR20090085818A (ko) 2009-08-10
KR100970946B1 true KR100970946B1 (ko) 2010-07-20

Family

ID=41205638

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080011662A KR100970946B1 (ko) 2008-02-05 2008-02-05 플래시 메모리 기반 임베디드 데이터베이스 시스템의지연쓰기 방법 및 그를 위한 시스템

Country Status (1)

Country Link
KR (1) KR100970946B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101887663B1 (ko) * 2016-10-21 2018-08-13 한양대학교 산학협력단 더미 페이지를 이용한 데이터 처리 방법 및 장치

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11175311A (ja) 1997-12-05 1999-07-02 Tdk Corp フラッシュメモリシステム
US7203794B2 (en) 2002-04-25 2007-04-10 International Business Machines Corporation Destructive-read random access memory system buffered with destructive-read memory cache

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11175311A (ja) 1997-12-05 1999-07-02 Tdk Corp フラッシュメモリシステム
US7203794B2 (en) 2002-04-25 2007-04-10 International Business Machines Corporation Destructive-read random access memory system buffered with destructive-read memory cache

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
논문1:한국정보과학회*

Also Published As

Publication number Publication date
KR20090085818A (ko) 2009-08-10

Similar Documents

Publication Publication Date Title
US10649910B2 (en) Persistent memory for key-value storage
US11210220B2 (en) Log-structured storage for data access
US9183236B2 (en) Low level object version tracking using non-volatile memory write generations
US8738850B2 (en) Flash-aware storage optimized for mobile and embedded DBMS on NAND flash memory
CN103080910B (zh) 存储系统
Miller et al. HeRMES: High-performance reliable MRAM-enabled storage
EP3170106B1 (en) High throughput data modifications using blind update operations
CN103765393B (zh) 存储系统
US8037112B2 (en) Efficient access of flash databases
US20120159098A1 (en) Garbage collection and hotspots relief for a data deduplication chunk store
US11755427B2 (en) Fast recovery and replication of key-value stores
JP7395227B2 (ja) データバックアップ方法、装置、サーバ及びコンピュータプログラム
KR102262409B1 (ko) 비휘발성 메모리 기반 파일 시스템 및 이를 이용한 데이터 갱신 방법
Maheshwari From blocks to rocks: A natural extension of zoned namespaces
US11829291B2 (en) Garbage collection of tree structure with page mappings
US20180011897A1 (en) Data processing method having structure of cache index specified to transaction in mobile environment dbms
KR100970946B1 (ko) 플래시 메모리 기반 임베디드 데이터베이스 시스템의지연쓰기 방법 및 그를 위한 시스템
Lee et al. Efficient logging of metadata using NVRAM for NAND flash based file system
Xu et al. Building a fast and efficient LSM-tree store by integrating local storage with cloud storage
Lee et al. RMSS: an efficient recovery management scheme on NAND flash memory based solid state disk
Jiao et al. BetrFS: a compleat file system for commodity SSDs
Jiang et al. Improving Write Performance for LSM-tree-based Key-Value Stores with NV-Cache
KR20140049327A (ko) 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치 및 그 방법
Lee et al. Buffered i/o support for zoned namespace ssd
KR100982591B1 (ko) 단계적 인덱싱을 위한 파일 시스템, 메인 기억장치 및플래시 기억장치 그리고 상기 단계적 인덱싱을 통한 데이터관리 방법

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
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130809

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140709

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150702

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee