KR101020781B1 - 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법 - Google Patents

플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법 Download PDF

Info

Publication number
KR101020781B1
KR101020781B1 KR1020090018454A KR20090018454A KR101020781B1 KR 101020781 B1 KR101020781 B1 KR 101020781B1 KR 1020090018454 A KR1020090018454 A KR 1020090018454A KR 20090018454 A KR20090018454 A KR 20090018454A KR 101020781 B1 KR101020781 B1 KR 101020781B1
Authority
KR
South Korea
Prior art keywords
log
block
database
data
flash memory
Prior art date
Application number
KR1020090018454A
Other languages
English (en)
Other versions
KR20100099888A (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 KR1020090018454A priority Critical patent/KR101020781B1/ko
Publication of KR20100099888A publication Critical patent/KR20100099888A/ko
Application granted granted Critical
Publication of KR101020781B1 publication Critical patent/KR101020781B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory

Landscapes

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

Abstract

본 발명은 플래시 메모리 기반의 데이터베이스 시스템에서 로그를 관리하는 방법에 관한 것으로서 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법에 있어서, 플래시 메모리의 블록을 데이터베이스의 데이터를 저장하는 데이터 블록과 상기 데이터 블록에 대한 로그를 저장하는 로그 블록으로 나누는 단계와 상기 데이터 블록에 대해 로그가 발생하는 경우 로그가 발생한 상기 데이터 블록과 연관된 상기 로그 블록에 상기 발생 로그를 저장하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법을 제공하여 다수의 쓰기 및 지우기 연산을 유발하는 합병 연산의 발생을 감소시켜 데이터베이스의 전체적인 성능 향상을 가져오는 효과가 있다.
플래시 메모리, 데이터베이스, 로그 관리

Description

플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법{A METHOD FOR LOG MANAGEMENT IN FLASH MEMORY-BASED DATABASE SYSTEMS}
본 발명은 플래시 메모리 기반의 데이터베이스 시스템에서 성능 향상을 위한 효율적인 로그 관리 방법에 관한 것이다.
최근 들어 플래시 메모리는 하드 디스크를 대체할 새로운 저장 매체로서 크게 각광을 받고 있다. 플래시 메모리는 비휘발성이고, 전력 소모가 작으며, 크기가 작고, 충격에 강하다는 장점을 가지나, 하드 디스크와는 달리 제자리 갱신(in-place update)이 불가능하며, 읽기 연산에 비해 쓰기 연산이 느리고, 플래시 메모리를 구성하는 각 블록에 대한 지우기 연산의 횟수에 제한이 있다는 제약을 가진다.
플래시 메모리는 하나 이상의 블록으로 구성되며, 각 블록은 고정된 수의 페이지로 이루어진다. 플래시 메모리는 제자리 갱신이 불가능하므로, 플래시 메모리에서 어떤 페이지의 데이터를 갱신하기 위해서는 해당 페이지를 포함하고 있는 블록 전체에 대한 지우기 연산을 수행한 다음, 해당 페이지에 대한 쓰기 연산을 수행 하여야 한다.
지우기 연산은 읽기나 쓰기 연산에 비해 훨씬 느리고 각 블록에 대한 지우기 연산의 횟수에는 제약이 있으므로, 어떤 페이지의 내용이 변경될 때마다 매번 지우기 연산을 수행하는 것은 시스템의 성능을 저하시키는 한편 플래시 메모리의 수명을 단축시킨다. 이러한 제약을 극복하기 위해 플래시 메모리에서는 플래시 변환 계층(Flash Translation Layer, FTL)이라는 소프트웨어 계층이 흔히 사용된다.
FTL은 읽기 또는 쓰기 명령이 요청된 논리 주소를 데이터가 실제로 저장된 물리 주소로 변환하는 방식을 통해 플래시 메모리를 제자리 갱신이 가능한 하드 디스크처럼 사용할 수 있게 해준다. 최근 들어 플래시 메모리의 용량 증가와 함께 그에 저장되는 데이터의 양이 증가하면서, 플래시 메모리에서의 데이터베이스 시스템의 사용이 증가하고 있다. FTL을 사용하면 기존의 하드 디스크 기반의 데이터베이스 시스템도 플래시 메모리에서 별도의 수정없이 수행될 수 있다.
그러나, FTL은 순차 쓰기(sequential writes)보다는 임의 쓰기(random writes)를 주로 요청하는 데이터베이스 시스템에 대해서는 최적화된 성능을 내기가 어렵다. 플래시 메모리 상에서의 데이터베이스 시스템의 성능을 극대화하기 위해, 데이터베이스 시스템이 FTL을 사용하지 않고 직접 플래시 메모리에 접근하는 방법들이 제안되었다.
도1은 데이터베이스 시스템이 FTL을 사용하지 않고 직접 플래시 메모리에 접 근하는 종래 방법들을 설명하기 위한 도면이다. 도1에서 데이터 페이지(Data page)는 데이터베이스의 데이터를 저장하고 있는 플래시 메모리 페이지를 나타내며, 로그 페이지(Log page)는 로그를 저장하고 있는 플래시 메모리 페이지를 나타낸다.
도1의 (a)는 로그-구조 방법(Log-structured approach)에 따라 플래시 메모리가 쓰이는 예를 도시하고 있다. 로그-구조 방법은 어떤 데이터에 변경이 발생하면 해당 데이터의 변경 사항에 대한 로그를 데이터베이스의 맨 끝에 순차적으로 쓴다. 따라서 변경된 데이터의 위치에 관계없이 쓰기 연산은 항상 데이터베이스의 맨 끝에서만 순차적으로 일어나므로 임의 쓰기 요청에 대해서도 좋은 성능을 보일 수 있다.
하지만, 이 방법은 어떤 데이터를 읽을 때, 해당 데이터의 최신 내용을 얻기 위해 전체 로그를 검색하여 해당 데이터에 대한 로그를 모두 찾아야 하므로 읽기 성능이 떨어진다는 단점이 있다.
페이지내 로깅 (In-Page Logging, IPL) 방법은 이러한 문제를 극복하기 위해 제안된 방법으로, 도1의 (b)와 같이 플래시 메모리의 각 블록에 고정된 크기의 영역을 로그 영역(log region)으로 할당한다. 이 방법은 어떤 데이터에 변경이 발생하면, 해당 데이터의 변경 사항에 대한 로그를 해당 데이터와 같은 블록 내의 로그 영역에 기록하므로 어떤 데이터를 읽을 때 해당 데이터의 최신 내용을 얻기 위해서 해당 데이터가 담긴 블록 내의 로그 영역에 저장된 로그만 찾아보면 되므로 읽기 성능이 향상된다.
이 방법은 어떤 블록 내의 로그 영역이 로그로 가득 차면, 해당 블록 내의 데이터에 해당 블록 내 로그 영역에 저장된 로그들을 반영하여 최신 내용으로 갱신한 뒤, 이를 새로 할당 받은 빈 블록에 쓰고 기존 블록을 지우는 합병(merge) 연산을 수행한다. 데이터베이스에 저장되는 데이터에는 일반적으로 80-20 법칙과 같이, 자주 참조되고 갱신되는 데이터와 그렇지 않은 데이터가 있으며, 최근에 갱신된 데이터는 추후에 또 갱신될 확률이 높다.
그러나, IPL은 모든 플래시 메모리 블록에 대해 동일한 고정된 크기의 로그 영역을 할당하므로, 빈번히 갱신되는 데이터를 담고 있는 블록은 그의 로그 영역이 로그들로 금방 차게 되어 빈번한 합병 연산이 발생하게 된다.
반면에 갱신이 거의 일어나지 않는 데이터들만 담고 있는 블록은 로그가 거의 발생하지 않기 때문에, 그의 로그 영역은 거의 빈 상태로 유지되게 된다. 합병 연산은 다수의 쓰기 및 지우기 연산을 유발하므로, 이렇게 특정 블록의 데이터만 빈번하게 갱신되는 경우 IPL 방법은 많은 수의 쓰기 및 지우기 연산을 발생시킬 수 있다.
본 발명은 상기한 바와 같은 과제를 해결하기 위한 것으로, 어떤 데이터에 대한 변경이 발생했을 때 원래 위치의 데이터를 덮어쓰지 않고 변경 사항에 대한 로그를 다른 위치에 기록하는 방식을 사용하는 플래시 메모리 기반의 데이터베이스 시스템에서, 쓰기와 지우기 연산의 수를 줄여 데이터베이스 시스템의 전체 성능을 향상시킬 수 있는 효과적인 로그 관리 방법을 제공하는 데 그 목적이 있다.
상기 본 발명의 기술적 과제를 달성하기 위한 플래시 메모리 기반의 데이터베이스 시스템에서의 로그 관리 방법은, 플래시 메모리의 블록을 데이터베이스의 데이터를 저장하는 데이터 블록과 상기 데이터 블록에 대한 로그를 저장하는 로그 블록으로 나누는 단계와, 상기 데이터 블록에 대해 로그가 발생하는 경우 로그가 발생한 상기 데이터 블록과 연관된 상기 로그 블록에 상기 발생 로그를 저장하는 단계를 포함하는 것을 특징으로 한다.
또한, 상기 데이터 블록에 저장된 데이터베이스 페이지를 데이터베이스 버퍼로 읽어들일 때, 상기 데이터 블록과 연관된 로그 블록에서 해당 데이터베이스 페이지에 대한 로그를 찾아 상기 데이터베이스 페이지에 반영한 뒤, 이를 상기 데이터베이스 버퍼로 읽어들이는 단계를 포함할 수 있다.
또한, 상기 로그블록 중 하나가 로그들로 가득 차는 경우, 상기 로그들을 연관된 데이터 블록들에 각각 최신 내용으로 반영하여 갱신하는 단계와, 상기 갱신 후 새로 할당받은 빈 데이터 블록에 변경된 내용을 쓰는 단계 및 상기 변경된 내용에 해당하는 기존의 로그 블록과 데이터 블록들을 지우는 단계를 포함할 수 있다.
또한, 상기 데이터 블록과 상기 로그 블록은 N:1 연관 관계를 유지할 수 있다.
또한, 상기 데이터 블록과 상기 로그 블록을 연관시키는 시점은 해당 데이터 블록에 대한 로그가 처음으로 플래시 메모리에 쓰여지는 시점일 수 있다.
또한, 상기 데이터 블록에 대해 로그가 처음 발생하면 해당 데이터 블록을 ETTF(Estimated Time To Full)가 가장 큰 로그 블록과 연관시킬 수 있다.
또한, 상기 로그 블록의 최대 개수는 사용자에 의해 설정될 수 있다.
상기한 바와 같이 본 발명에 따른 로그 관리방법은 플래시 메모리를 이용하는 데이터베이스 시스템에서 데이터의 변경으로 인해 발생하는 로그들을 별도로 할당된 로그 블록에 고른 양으로 분포시킴으로써, 다수의 쓰기 및 지우기 연산을 유발하는 합병 연산의 발생을 감소시켜 데이터베이스의 전체적인 성능 향상을 가져오는 효과가 있다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예를 상세히 설명한다.
도2는 본 발명에 따른 플래시 메모리의 블록 구성 및 데이터베이스 버퍼의 구조를 도시한다. 플래시 메모리의 블록은 데이터베이스의 데이터를 저장하는 데이터 블록(210)과 그의 변경 사항에 대한 로그를 저장하는 로그 블록(220)으로 나뉜다.
로그 블록의 최대 개수는 사용자가 설정할 수 있으며, 저장되는 데이터의 특성에 따라 다른 값을 줄 수 있다. 예를 들어 쓰기가 빈번히 발생하는 환경에서는 합병 연산의 발생을 줄이기 위해 더 많은 수의 로그 블록을 할당할 수 있으며, 반대로 쓰기가 거의 발생하지 않는 환경에서는 적은 수의 로그 블록만을 할당할 수도 있다.
각 데이터 블록은 고정된 크기의 데이터베이스 페이지(211)로 구성된다. 데이터베이스 페이지의 크기가 8KB이고 플래시 메모리의 블록의 크기가 256KB인 경우, 하나의 데이터 블록에는 32개의 데이터베이스 페이지가 저장될 수 있다. 각 로그 블록은 고정된 크기의 로그 페이지로 구성된다.
로그 페이지(221)의 크기는 플래시 메모리의 최소 쓰기 단위와 동일한 크기로 설정하여 로그를 플래시 메모리에 쓸 때 불필요하게 플래시 메모리에 쓰여지는 데이터의 양을 최소화할 수 있다. 예를 들어 최소 쓰기 단위가 2KB 크기의 페이지이고 블록의 크기가 256KB인 MLC NAND 플래시 메모리의 경우, 로그 페이지의 크기를 2KB로 설정하면 하나의 로그 블록에는 128개의 로그 페이지가 저장된다. 데이터베이스 버퍼(200)에는 플래시 메모리에서 읽어들인 데이터베이스 페이지들이 저장되며, 데이터베이스 버퍼 내의 각 데이터베이스 페이지(201)에 대해서는 메모리 내 로그 페이지(in-memory log page)(202)가 하나씩 할당된다.
어떤 데이터베이스 페이지에 대해 변경이 발생하면, 해당 데이터베이스 페이지를 데이터베이스 버퍼(200)로 읽어들인 후 데이터베이스 버퍼에서 해당 데이터베 이스 페이지를 갱신한다.
이 때, 해당 변경 사항에 대한 로그를 해당 데이터베이스 페이지에 할당된 메모리 내 로그 페이지(202)에 저장한다. 만약 데이터베이스 버퍼 내의 데이터베이스 페이지가 버퍼 교체 정책 등에 의해 데이터베이스 버퍼로부터 방출되거나 그에 할당된 메모리 내 로그 페이지가 로그로 가득 차게 되면, 해당 로그 페이지를 플래시 메모리의 로그 블록(220)에 쓴다.
본 발명에서는 데이터 블록(210)과 로그 블록(220) 간의 N:1 연관 관계를 유지하여 어떤 데이터 블록에 대해 생성된 로그는 해당 데이터 블록과 연관된 로그 블록에 저장되도록 한다.
이러한 연관 관계에 대한 정보는 도3에서 도시한 바와 같이 테이블의 형태로 메모리에 유지되며, 이 테이블을 연관 관계 테이블이라고 한다. 도 3에서 Data block ID는 데이터 블록의 번호를 나타내며, Log block ID는 해당 데이터 블록과 연관된 로그 블록의 번호를 나타낸다. Last log page ID는 해당 로그 블록 내에서 해당 데이터 블록에 대해 발생된 로그가 마지막으로 쓰여진 로그 페이지 번호를 나타낸다. Last log page ID는 데이터베이스 시스템의 읽기 성능의 향상을 위해 사용된다.
연관 관계 테이블은 시스템의 전원이 끊기면 메모리에서 사라지게 된다. 따라서, 이 테이블을 시스템 재부팅 시 다시 복구할 수 있도록 하기 위해 로그 블록(220)의 각 로그 페이지(221)의 여유 영역(spare area)에 해당 로그 페이지의 로 그를 발생시킨 데이터 블록(210)의 번호를 기록해 두어, 시스템이 재부팅되면 각 로그 블록에 저장된 로그 페이지들의 여유 영역에 기록된 데이터 블록 번호를 탐색함으로써 연관 관계 테이블을 다시 메모리에 구축할 수 있다.
어떤 데이터베이스 페이지에 대해 변경이 발생하면, 앞서 설명한 바와 같이 메모리 내 로그 페이지에 해당 데이터베이스 페이지의 변경 사항에 대한 로그가 저장된다. 해당 데이터베이스 페이지가 버퍼 교체 정책 등에 의해 데이터베이스 버퍼로부터 방출되거나 그에 할당된 메모리 내 로그 페이지가 로그들로 가득차게 되면, 연관 관계 테이블에서 해당 데이터베이스 페이지가 속한 데이터 블록과 연관된 로그 블록을 찾는다. 그 후 찾아진 로그 블록에 해당 로그 페이지를 쓰고, 연관 관계 테이블에서 Last log page ID의 값을 갱신한다.
데이터 블록과 로그 블록을 연관시키는 방법에 대해 설명한다.
어떤 로그 블록이 로그로 가득 차면 추후 설명할 합병 연산이 발생한다. 빈번한 합병 연산의 발생은 시스템의 성능을 크게 저하시키므로, 본 발명에서는 어떤 특정한 로그 블록이 다른 로그 블록보다 로그로 빨리 차서 합병 연산이 빈번하게 일어나는 것을 막도록 한다. 이를 위해 메모리에 각 로그 블록에 대해 도4와 같은 정보를 유지한다.
도4에서 도시하고 있는 내용을 보면 Log block ID는 로그 블록의 번호를, Log count는 해당 로그 블록에 현재 몇 개의 로그 페이지가 저장되어 있는지를 각각 나 타낸다. 그리고 First log time은 해당 로그 블록에서 첫 번째 로그 페이지가 쓰여진 시각을 나타낸다. 데이터 블록과 로그 블록을 연관시키는 방법을 설명하기 전에 각 로그 블록에 대해 다음과 같은 용어를 정의한다.
Update Frequency(UF) = Log count / (현재 시각 - First log time)
Estimated Time to Full(ETTF) = 현재 로그 블록 내의 빈 페이지 수 / UF
UF는 로그 블록에 현재 저장된 로그 페이지의 개수를 첫 번째 로그 페이지가 쓰여진 시각부터 지금까지 경과한 시간으로 나눈 값으로서, 해당 로그 블록이 얼마나 빠른 속도로 로그가 차고 있는지를 나타내는 수치이다. 예를 들어, 빈번히 갱신되는 데이터 블록과 연관된 로그 블록일수록 큰 UF 값을 가진다. 만약 어떤 로그 블록이 저장하고 있는 로그 페이지가 하나도 없을 경우, 해당 로그 블록에 대해 UF = 1로 한다.
ETTF는 로그 블록에 현재 남아있는 빈 페이지의 수를 UF로 나눈 값으로서, 해당 로그 블록이 어느 정도의 시간 후에 로그로 가득 차게 될 것인지를 예상하는 수치이다. 어떤 데이터 블록과 로그 블록을 연관시키는 시점은, 해당 데이터 블록에 대한 로그가 처음으로 플래시 메모리에 쓰여지는 시점이다. 이 때, 해당 데이터 블록을 ETTF가 가장 큰 로그 블록과 연관시킨다. 이러한 방법을 통해 어떤 특정한 로그 블록에만 로그가 몰리는 것을 방지할 수 있으며, 결과적으로 합병 연산이 자주 발생하는 것을 막을 수 있다.
어떤 로그 블록이 로그로 가득 차게 되면 합병 연산이 발생한다. 합병 연산은 해당 로그 블록 내의 로그들을 해당 로그 블록과 연관된 각각의 데이터 블록에 반영한 뒤, 갱신된 데이터 블록들을 각각 새로 할당받은 빈 데이터 블록에 쓴다. 그리고 기존의 로그 블록과 데이터 블록에 대해 지우기 연산을 수행한 후, 연관 관계 테이블에서 해당 로그 블록과 데이터 블록 간의 연관 관계를 제거함으로써 합병 연산이 완료된다. 따라서 어떤 데이터 블록과 로그 블록 간의 연관 관계는 로그 블록이 로그로 가득차서 합병 연산이 발생할 때까지 유지된다.
데이터베이스 버퍼에 존재하지 않는 데이터베이스 페이지에 대한 읽기 요청이 들어오면, 먼저 플래시 메모리에서 해당 데이터베이스 페이지를 읽은 후, 여기에 해당 데이터베이스 페이지가 속한 데이터 블록과 연관된 로그 블록에서 해당 데이터베이스 페이지에 대한 로그를 찾아 반영하여, 최신의 내용으로 갱신된 데이터베이스 페이지를 데이터베이스 버퍼에 올린다. 이러한 읽기 연산은 어떤 데이터베이스 페이지를 최신의 내용으로 갱신하기 위해 연관된 로그 블록 전체를 검색해야 하는 비용이 발생하므로, 이를 줄이고자 다음과 같은 방법을 사용한다. 먼저, 로그 블록에 저장된 각 로그 페이지의 여유 영역에 도5와 같은 정보를 추가로 기록한다.
도5에서 Database page ID와 Data block ID는 해당 로그 페이지의 로그가 발 생된 데이터베이스 페이지의 번호 및 그가 속한 데이터 블록의 번호, Previous log page ID는 해당 데이터베이스 페이지에 대해 발생된 이전의 로그를 저장하고 있는 로그 블록에서의 바로 이전의 로그 페이지 번호를 도시한다.
이 정보는 동일한 데이터베이스 페이지에 대해 발생된 이전 로그를 저장하고 있는 로그 페이지를 찾기 위한 포인터의 용로도서 사용된다. First log time은 해당 로그 블록에서 첫 번째 로그 페이지가 기록된 시각으로서, 로그 블록의 첫 번째 로그 페이지의 여유 영역에만 존재한다. 이 정보는 시스템의 전원이 끊어졌다가 재부팅될 때, 도 4에서 설명한 각 로그 블록에 대한 정보를 메모리에 재구축할 때 사용된다.
여유 영역은 플래시 메모리 페이지의 주 데이터 영역과 동시에 기록이 되므로, 위와 같이 여유 영역에 추가적인 정보를 기록하는 것은 별도의 오버헤드를 발생시키지 않는다. 어떤 데이터베이스 페이지에 대한 로그를 찾기 위해서는 먼저 연관 관계 테이블에서 해당 데이터베이스 페이지가 속한 데이터 블록과 연관된 로그 블록의 번호(Log block ID)와 해당 로그 블록 내에서 해당 데이터 블록에 대한 로그가 마지막으로 쓰여진 페이지 번호(Last log page ID)를 찾는다.
이후 해당 로그 블록에서 Last log page ID로부터 0번 로그 페이지 방향으로 차례로 진행하면서 각 로그 페이지의 여유 영역에 저장된 Database page ID를 읽어 해당 데이터베이스 페이지에 대해 마지막으로 저장된 로그 페이지를 찾는다. 이후 해당 데이터베이스 페이지에 대한 나머지 로그는 로그 페이지의 여유 영역에 저장된 Previous log page ID를 따라서 찾을 수 있다. 이렇게 Previous log page ID를 이용하면 해당 데이터베이스 페이지에 대한 로그 페이지만 찾아 읽을 수 있으므로 검색해야 할 로그 페이지의 수를 줄일 수 있다.
이상과 같이 본 발명에 따른 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법을 예시한 도면을 참조로 하여 설명하였으나, 본 명세서에 개시된 실시예와 도면에 의해 본 발명이 한정되는 것은 아니며, 본 발명의 기술사상 범위내에서 당업자에 의해 다양한 변형이 이루어질 수 있음은 물론이다.
도1은 데이터베이스 시스템이 FTL을 사용하지 않고 직접 플래시 메모리에 접근하는 방법들을 설명하기 위한 도면이다.
도2는 본 발명에 따른 플래시 메모리의 블록 구성 및 데이터베이스 버퍼의 구조를 나타내는 도면이다.
도3은 데이터 블록과 로그 블록 간의 연관 관계를 저장하는 테이블의 구조를 나타내는 도면이다.
도4는 각 로그 블록의 정보를 저장하는 테이블의 구조를 나타내는 도면이다.
도5는 로그 블록에 저장된 각 로그 페이지의 여유 영역에 저장되는 추가 정보를 나타내는 도면이다.
< 도면의 주요 부분에 대한 부호의 설명 >
200:데이터베이스 버퍼(Database Buffer)
201:메모리 내 데이터베이스 페이지(in-memory database page)
202:메모리 내 로그 페이지(in-memory log page)
210:데이터 블록(Data blocks)
211:데이터베이스 페이지(Database page)
220:로그 블록(Log blocks)
221:로그 페이지(Log page)

Claims (7)

  1. 플래시 메모리의 블록을 데이터베이스의 데이터를 저장하는 데이터 블록과 상기 데이터 블록에 대한 로그를 저장하는 로그 블록으로 나누고 상기 데이터 블록과 상기 로그블록을 연관시키는 연관단계 및
    상기 데이터 블록에 대해 로그가 발생하는 경우 로그가 발생한 데이터 블록과 연관된 상기 로그 블록에 발생된 상기 로그를 저장하는 저장단계를 포함하여 구성되고,
    상기 데이터 블록과 상기 로그 블록의 연관은 N:1 연관 관계를 유지하며,
    상기 데이터 블록과 상기 로그 블록을 연관시키는 시점은 해당 데이터 블록에 대한 로그가 처음으로 플래시 메모리에 쓰여지는 시점이고,
    상기 데이터 블록에 대해 로그가 처음 발생하면 해당 데이터 블록을 ETTF(Estimated Time To Full)가 가장 큰 로그 블록과 연관시키며,
    상기 ETTF는 로그 블록에 현재 남아있는 빈 페이지의 수를 UF(Update Frequency)로 나눈 값이고,
    상기 UF는 로그 블록에 현재 저장된 로그 페이지의 개수를 첫 번째 로그 페이지가 쓰여진 시각부터 지금까지 경과한 시간으로 나눈 값(단, 로그 블록이 저장하고 있는 로그 페이지가 하나도 없을 경우 해당 로그 블록에 대해 UF = 1)인 것을 특징으로 하는 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법.
  2. 청구항 1에 있어서,
    상기 연관단계 후에 상기 데이터 블록에 저장된 데이터베이스 페이지를 데이터베이스 버퍼로 읽어들일 때, 상기 데이터 블록과 연관된 로그 블록에서 해당 데이터베이스 페이지에 대한 로그를 찾아 상기 데이터베이스 페이지에 반영한 뒤, 이를 상기 데이터베이스 버퍼로 읽어들이는 단계를 더 포함하여 이루어지는 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법.
  3. 청구항 1에 있어서,
    상기 저장단계에서 상기 발생된 로그를 저장하는 로그블록이 가득차는 경우, 상기 로그들을 연관된 데이터 블록들에 각각 최신 내용으로 반영하여 갱신하는 갱신단계;
    상기 갱신단계 후 새로 할당받은 빈 데이터 블록에 변경된 내용을 쓰는 재작성단계; 및
    상기 재작성단계후 변경된 내용에 해당하는 기존의 로그 블록과 데이터 블록들을 지우는 삭제단계를 포함하는 것을 특징으로 하는 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법.
  4. 삭제
  5. 삭제
  6. 삭제
  7. 청구항 1항 내지 청구항 3항 중 어느 하나의 항에 있어서,
    상기 로그 블록의 최대 개수는 사용자에 의해 설정되는 것을 특징으로 하는 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법.
KR1020090018454A 2009-03-04 2009-03-04 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법 KR101020781B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020090018454A KR101020781B1 (ko) 2009-03-04 2009-03-04 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090018454A KR101020781B1 (ko) 2009-03-04 2009-03-04 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법

Publications (2)

Publication Number Publication Date
KR20100099888A KR20100099888A (ko) 2010-09-15
KR101020781B1 true KR101020781B1 (ko) 2011-03-09

Family

ID=43006029

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090018454A KR101020781B1 (ko) 2009-03-04 2009-03-04 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법

Country Status (1)

Country Link
KR (1) KR101020781B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9715444B2 (en) 2012-06-01 2017-07-25 Samsung Electronics Co., Ltd. Storage device having nonvolatile memory device and write method

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102275710B1 (ko) 2015-02-02 2021-07-09 삼성전자주식회사 오버-라이트가 가능한 메모리 장치, 메모리 시스템 및 메모리 시스템의 동작방법
CN111026613B (zh) * 2019-12-11 2024-01-19 人教数字出版有限公司 日志处理方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080045833A (ko) * 2006-11-21 2008-05-26 삼성전자주식회사 플래쉬 메모리 관리 방법 및 이를 이용하는 플래쉬 메모리시스템
KR100849221B1 (ko) 2006-10-19 2008-07-31 삼성전자주식회사 비휘발성 메모리의 관리 방법 및 비휘발성 메모리 기반의장치
KR20080097078A (ko) * 2007-04-30 2008-11-04 재단법인서울대학교산학협력재단 비휘발성 메모리 기반의 데이터베이스 관리 시스템 및 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100849221B1 (ko) 2006-10-19 2008-07-31 삼성전자주식회사 비휘발성 메모리의 관리 방법 및 비휘발성 메모리 기반의장치
KR20080045833A (ko) * 2006-11-21 2008-05-26 삼성전자주식회사 플래쉬 메모리 관리 방법 및 이를 이용하는 플래쉬 메모리시스템
KR20080097078A (ko) * 2007-04-30 2008-11-04 재단법인서울대학교산학협력재단 비휘발성 메모리 기반의 데이터베이스 관리 시스템 및 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9715444B2 (en) 2012-06-01 2017-07-25 Samsung Electronics Co., Ltd. Storage device having nonvolatile memory device and write method

Also Published As

Publication number Publication date
KR20100099888A (ko) 2010-09-15

Similar Documents

Publication Publication Date Title
CN110678836B (zh) 用于键值存储的持久性存储器
US8250333B2 (en) Mapping address table maintenance in a memory device
KR101982251B1 (ko) 저장 디바이스들이 낮은 과도 공급으로 낮은 기입 증폭을 달성하기 위한 방법
KR101717644B1 (ko) 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 장치, 시스템, 및 방법
EP2605142B1 (en) Lba bitmap usage
KR101038167B1 (ko) 프로세서로부터 메모리로의 액세스를 관리하는 메모리 관리 장치를 포함하는 정보 처리 장치 및 메모리 관리 방법
US9378131B2 (en) Non-volatile storage addressing using multiple tables
US10740251B2 (en) Hybrid drive translation layer
US10936203B2 (en) Memory storage device and system employing nonvolatile read/write buffers
US9208101B2 (en) Virtual NAND capacity extension in a hybrid drive
US20110238908A1 (en) Disc device
KR101297442B1 (ko) 공간 지역성을 고려한 요구 기반 플래시 메모리 변환 계층을 포함하는 낸드 플래시 메모리 시스템
KR20100115090A (ko) 버퍼를 고려한 가비지 컬렉션 기법
JP2005242897A (ja) フラッシュディスク装置
KR101008032B1 (ko) 메타 데이터 관리 시스템 및 방법
KR101020781B1 (ko) 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법
KR101077901B1 (ko) 로그 블록 단위 매핑 기법을 이용한 플래시 메모리 관리 장치 및 방법
KR100745163B1 (ko) 동적 매핑 테이블을 이용한 플래시 메모리 관리방법
EP2381354A2 (en) Data recording device
KR100874013B1 (ko) 플래시 메모리의 데이터 관리 방법 및 장치
KR101353967B1 (ko) 환형 구조의 비휘발성 메모리 캐쉬에 데이터를 읽고 쓰기 위한 데이터 처리 방법
KR100868674B1 (ko) 플래시메모리 관리방법
KR101373613B1 (ko) 환형 구조의 비휘발성 메모리 캐쉬를 포함하는 하이브리드 스토리지 장치
CN114661238B (zh) 带缓存的存储系统空间回收的方法及应用
KR101375832B1 (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: 20140303

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee