KR101419428B1 - 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치 및 그 방법 - Google Patents

모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치 및 그 방법 Download PDF

Info

Publication number
KR101419428B1
KR101419428B1 KR20120115453A KR20120115453A KR101419428B1 KR 101419428 B1 KR101419428 B1 KR 101419428B1 KR 20120115453 A KR20120115453 A KR 20120115453A KR 20120115453 A KR20120115453 A KR 20120115453A KR 101419428 B1 KR101419428 B1 KR 101419428B1
Authority
KR
South Korea
Prior art keywords
page
log
file
manager
hash
Prior art date
Application number
KR20120115453A
Other languages
English (en)
Other versions
KR20140049327A (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 KR20120115453A priority Critical patent/KR101419428B1/ko
Priority to PCT/KR2012/008714 priority patent/WO2014061847A1/ko
Publication of KR20140049327A publication Critical patent/KR20140049327A/ko
Application granted granted Critical
Publication of KR101419428B1 publication Critical patent/KR101419428B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/535Tracking the activity of the user
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/04Protocols specially adapted for terminals or networks with limited capabilities; specially adapted for terminal portability

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 컴퓨팅 자원이 제한적인 모바일 환경에서 대량의 데이터베이스 변경으로 구성된 복합 트랜잭션 처리 시 로깅에 따른 처리 속도 및 저장 용량 관점의 효율성을 높일 수 있는 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치 및 그 방법에 관한 것으로, 그 장치는, 저장 매체에 저장되는 데이터베이스 파일; 트랜잭션 처리 중 데이터베이스 파일에서 변경된 페이지로 구성되고, 저장 매체에 저장되는 로그 파일; 페이지 식별자를 이용하여 데이터베이스 파일을 제어하는 데이터베이스 파일 관리자; LSN 정보를 이용하여 로그 파일을 제어하는 로그 파일 관리자; 변경된 페이지에 대한 정보를 관리하는 해쉬 자료구조를 구비하고, 이미 변경된 페이지에 대한 액세스 또는 페이지 변경은 로그 버퍼 관리자를 통해 수행하고, 변경되지 않은 페이지에 대한 액세스는 데이터베이스 파일 관리자를 통해 수행하도록 제어하는 해쉬 관리자; 로그 파일의 페이지들 중 일부를 메인 메모리 상에 관리하는 로그 버퍼를 구비하고, 이미 변경된 페이지에 대한 액세스 또는 페이지 변경에 대응하여 로그 버퍼를 대상으로 하여 수행하되, 로그 버퍼에 해당 페이지가 없으면 로그 파일과 LRU(Least recently used) 방식의 페이지 교체를 수행하는 로그 버퍼 관리자; 및 상위 모듈로부터의 Commit 요청에 대하여, 로그 버퍼 내의 페이지들 중 로그 파일에 기록되지 않은 페이지들을 모두 기록하도록 제어하고, 해쉬 자료구조를 이용하여 로그 파일에 저장된 모든 페이지를 읽어서 데이터베이스 파일에 순차적으로 기록하도록 제어하고, 데이터베이스 파일의 소정의 영역에 현재까지 진행된 상태를 기록하는 회복 관리자;를 포함하여 구성된다.

Description

모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치 및 그 방법{Apparatus for logging and recovering transactions in database installed in a mobile environment and method thereof}
본 발명은 데이터베이스 관리 시스템(DataBase Management System : DBMS)에서 트랜잭션의 ACID(Atomicity, Consistency, Isolation, Durability) 속성을 만족하게 하는 로깅 및 회복 기술에 관한 것으로, 특히 컴퓨팅 자원이 제한적인 모바일 환경에서 대량의 데이터베이스 변경으로 구성된 복합 트랜잭션 처리 시 로깅에 따른 처리 속도 및 저장 용량 관점의 효율성을 높일 수 있는 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치 및 그 방법에 관한 것이다.
WAL(Write-Ahead Logging)은 트랜잭션의 ACID 속성을 만족하게 하기 위하여 트랜잭션에 의해 데이터베이스 변경(Modification)이 발생한 경우, 원본 데이터베이스에 변경 내용을 반영하기 전에 REDO 및 UNDO 정보를 로그에 기록하는 트랜잭션 로깅 및 회복 방법이다.
그런데, 종래의 로깅 방법에 의하면, 수만 개의 데이터베이스 변경 연산들로 구성된 대용량 복합 트랜잭션의 경우, 각각의 데이터베이스 변경 연산에 대하여 LSN(Log Sequence Number) 정보와 함께 변경된 레코드 단위로 로그 파일을 저장하므로, 파일 I/O 횟수가 매우 빈번해지고, 큰 저장 공간이 소비된다.
한편 대부분의 모바일 장치는 플래시 메모리를 기본적인 저장 매체로 사용하는데, 빈번한 파일 I/O 횟수는 플래시 메모리의 수명을 단축시키고, 성능 또한 저하시키게 된다.
또한 종래의 로깅 방식은 랜덤 기록 방식을 채택하는데, 모바일 장치에서 사용되는 플래시 메모리는 순차 기록 방식에 비하여 랜덤 기록 방식의 성능이 매우 느려 전체적인 성능을 저하시킨다.
본 발명은 상기의 문제점을 해결하기 위하여 안출된 것으로, 해쉬 자료구조와 LRU 알고리즘을 활용하여 데이터베이스의 변경 트랜잭션에 대한 로깅을 수행하여 모바일 단말 상에서 파일 I/O를 최소화함으로써 플래시 메모리의 수명 단축을 방지하고 성능을 증대시키고, 순차 기록 방식을 도입하여 랜덤 기록 방식에 의한 성능 저하를 보완하고, 마지막 버전의 페이지 이미지만을 관리함으로써 저장 공간을 효율적으로 사용할 수 있는, 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치 및 그 방법을 제공함을 그 목적으로 한다.
상기의 목적들을 달성하기 위하여, 본 발명에 의한 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치는, 저장 매체에 저장되는 데이터베이스 파일; 트랜잭션 처리 중 상기 데이터베이스 파일에서 변경된 페이지로 구성되고, 저장 매체에 저장되는 로그 파일; 페이지 식별자를 이용하여 상기 데이터베이스 파일을 제어하는 데이터베이스 파일 관리자; LSN 정보를 이용하여 상기 로그 파일을 제어하는 로그 파일 관리자; 변경된 페이지에 대한 정보를 관리하는 해쉬 자료구조를 구비하고, 이미 변경된 페이지에 대한 액세스 또는 페이지 변경은 로그 버퍼 관리자를 통해 수행하고, 변경되지 않은 페이지에 대한 액세스는 데이터베이스 파일 관리자를 통해 수행하도록 제어하는 해쉬 관리자; 상기 로그 파일의 페이지들 중 일부를 메인 메모리 상에 관리하는 로그 버퍼를 구비하고, 이미 변경된 페이지에 대한 액세스 또는 페이지 변경에 대응하여 상기 로그 버퍼를 대상으로 하여 수행하되, 상기 로그 버퍼에 해당 페이지가 없으면 상기 로그 파일과 LRU(Least recently used) 방식의 페이지 교체를 수행하는 로그 버퍼 관리자; 및 상위 모듈로부터의 Commit 요청에 대하여, 상기 로그 버퍼 내의 페이지들 중 상기 로그 파일에 기록되지 않은 페이지들을 모두 기록하도록 제어하고, 상기 해쉬 자료구조를 이용하여 상기 로그 파일에 저장된 모든 페이지를 읽어서 상기 데이터베이스 파일에 순차적으로 기록하도록 제어하고, 상기 데이터베이스 파일의 소정의 영역에 현재까지 진행된 상태를 기록하는 회복 관리자;를 포함하여 구성된다.
상기의 목적들을 달성하기 위하여, 본 발명에 의한 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치는, 저장 매체에 저장되는 데이터베이스 파일; 트랜잭션 처리 중 상기 데이터베이스 파일에서 변경된 페이지로 구성되고, 저장 매체에 저장되는 로그 파일; 페이지 식별자를 이용하여 상기 데이터베이스 파일을 제어하는 데이터베이스 파일 관리자; LSN 정보를 이용하여 상기 로그 파일을 제어하는 로그 파일 관리자; 상위 모듈로부터의 Write 요청에 대하여, 해당 페이지가 해쉬 자료구조에 등록되어 있지 않으면 해당 페이지의 페이지 식별자와 로그 버퍼 관리자에 의해 생성된 LSN 정보를 해쉬 자료구조에 등록하고 로그 버퍼 관리자에 해당 페이지의 Write 요청을 하고, 등록되어 있으면 등록된 정보를 이용하여 로그 버퍼 관리자에 해당 페이지의 Write 요청을 하는 해쉬 관리자; 상기 해쉬 관리자로부터의 Write 요청에 대하여, 로그 버퍼에 해당 페이지와 동일한 페이지가 있으면 그 위치에 해당 페이지에 기록하고, 없으면 LRU(Least recently used) 페이지 교체 알고리즘에 의해 대상 페이지를 선정하여 로그 파일 관리자에 Write 요청을 하고 로그 버퍼에 해당 페이지를 기록하는 로그 버퍼 관리자; 및 상위 모듈로부터의 Commit 요청에 대하여, 상기 로그 버퍼 내의 페이지들 중 상기 로그 파일에 기록되지 않은 페이지들을 모두 기록하도록 제어하고, 상기 해쉬 자료구조를 이용하여 상기 로그 파일에 저장된 모든 페이지를 읽어서 상기 데이터베이스 파일에 순차적으로 기록하도록 제어하고, 상기 데이터베이스 파일의 소정의 영역에 현재까지 진행된 상태를 기록하는 회복 관리자;를 포함하여 구성된다.
모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치에 있어서, 상기 해쉬 관리자는 상위 모듈로부터의 Read 요청에 대하여, 해당 페이지가 해쉬 자료구조에 등록되어 있으면 로그 버퍼 관리자에 해당 페이지의 Read 요청을 하고, 등록되어 있지 않으면 데이터베이스 파일 관리자에 해당 페이지의 Read 요청을 하고, 상기 로그 버퍼 관리자는 상기 해쉬 관리자로부터의 Read 요청에 대하여, 해당 페이지를 상기 로그 버퍼에서 읽되, 상기 로그 버퍼에 해당 페이지와 동일한 페이지가 없으면 LRU 페이지 교체 알고리즘에 의해 로그 파일에서 해당 페이지와 동일한 페이지를 교체하는 것을 특징으로 한다.
모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치에 있어서, 상기 해쉬 자료구조는 입력값으로 페이지 식별자가 사용되는 MOD 연산으로 이루어진 해쉬 함수와, 해쉬키에 대응하는 버킷의 시작 위치를 지정하는 해쉬 노드들의 리스트 집합인 해쉬 테이블과, 페이지 식별자와 LSN 정보를 버킷의 구성요소로 하는 버킷 블럭을 구비하는 것을 특징으로 한다.
모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치에 있어서, 상기 로그 버퍼 관리자는 상기 로그 버퍼에 액세스하기 위하여, 해쉬 체인 구성을 위한 해쉬 테이블; 및 페이지 식별자에 해당하는 페이지를 검색하기 위한 해쉬 체인과 LRU 방식의 페이지 교체 알고리즘을 위한 LRU 체인과 로그 버퍼 내의 해당 페이지를 가리키는 페이지 포인터로 이루어진 버퍼 제어 블럭;을 구비하는 것을 특징으로 한다.
모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치에 있어서, 상기 로그 버퍼 관리자는 대상 페이지로 선정된 페이지에 대한 LSN 정보가 아직 설정되어 있지 않은 경우, 순차적인 방식으로 LSN 정보를 생성하여 상기 로그 파일 관리자에 Write 요청을 하는 것을 특징으로 한다.
모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치에 있어서, 상기 회복 관리자는 시스템 오류 상황 이후 부팅 시에, 상기 데이터베이스 파일의 소정의 영역에 기록된 현재까지 진행된 상태가 "로그 커밋 완료"인 경우, 상기 로그 파일에 저장된 모든 페이지를 읽어서 상기 데이터베이스 파일에 기록하도록 제어하고, "트랜잭션 시작" 또는 "Migration 커밋 완료"인 경우 상기 로그 파일을 초기화하는 것을 특징으로 한다.
상기의 목적들을 달성하기 위하여, 본 발명에 의한 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 방법은, (a) 상위 모듈로부터의 Write 요청에 대하여, 해당 페이지가 해쉬 자료구조에 등록되어 있지 않은 경우, 페이지 식별자와 LSN 정보를 해쉬 자료구조에 등록하고, 해당 페이지를 로그 버퍼에 기록하되 LRU(Least recently used) 페이지 교체 알고리즘에 의해 선정된 대상 페이지는 로그 파일에 기록하는 단계; (b) 상위 모듈로부터의 Write 요청에 대하여, 해당 페이지가 상기 해쉬 자료구조에 등록되어 있는 경우, 상기 로그 버퍼에 해당 페이지와 동일한 페이지가 있으면 그 위치에 해당 페이지에 기록하고, 없으면 LRU 페이지 교체 알고리즘에 의해 선정된 대상 페이지를 상기 로그 파일에 기록하고 해당 페이지는 상기 로그 버퍼에 기록하는 단계; (c) 상위 모듈로부터의 Commit 요청에 대하여, 상기 로그 버퍼 내의 페이지들 중 상기 로그 파일에 기록되지 않은 페이지들을 모두 기록한 후, 데이터베이스 파일의 소정의 영역에 현재까지 진행된 상태를 기록하고, 상기 해쉬 자료구조를 이용하여 상기 로그 파일에 저장된 모든 페이지를 읽어서 상기 데이터베이스 파일에 순차적으로 기록한 후, 상기 데이터베이스 파일의 소정의 영역에 현재까지 진행된 상태를 기록하는 단계;를 포함하여 구성된다.
모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 방법에 있어서, 상기 (c) 단계 이전에 (a1) 상위 모듈로부터의 Read 요청에 대하여, 해당 페이지가 상기 해쉬 자료구조에 등록되어 있지 않은 경우, 상기 데이터베이스 파일에서 해당 페이지를 읽는 단계; 및 (b1) 상위 모듈로부터의 Read 요청에 대하여, 해당 페이지가 상기 해쉬 자료구조에 등록되어 있는 경우, 해당 페이지를 상기 로그 버퍼에서 읽되, 상기 로그 버퍼에 해당 페이지와 동일한 페이지가 없으면 LRU 페이지 교체 알고리즘에 의해 로그 파일에서 해당 페이지와 동일한 페이지를 교체하는 단계;를 더 포함하는 것을 특징으로 한다.
모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 방법에 있어서, 상기 해쉬 자료구조는 입력값으로 페이지 식별자가 사용되는 MOD 연산으로 이루어진 해쉬 함수와, 해쉬키에 대응하는 버킷의 시작 위치를 지정하는 해쉬 노드들의 리스트 집합인 해쉬 테이블과, 페이지 식별자와 LSN 정보를 버킷의 구성요소로 하는 버킷 블럭을 구비하는 것을 특징으로 한다.
모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 방법에 있어서, 상기 로그 버퍼에 액세스하기 위한 자료구조로 해쉬 체인 구성을 위한 해쉬 테이블; 및 페이지 식별자에 해당하는 페이지를 검색하기 위한 해쉬 체인과 LRU 방식의 페이지 교체 알고리즘을 위한 LRU 체인과 로그 버퍼 내의 해당 페이지를 가리키는 페이지 포인터로 이루어진 버퍼 제어 블럭;을 구비하는 것을 특징으로 한다.
모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 방법에 있어서, 상기 (a) 단계는 대상 페이지로 선정된 페이지에 대한 LSN 정보를 순차적인 방식으로 생성하는 것을 특징으로 한다.
모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 방법에 있어서, (d) 시스템 오류 상황 이후 부팅 시에, 상기 데이터베이스 파일의 소정의 영역에 기록된 현재까지 진행된 상태가 "로그 커밋 완료"인 경우, 상기 로그 파일에 저장된 모든 페이지를 읽어서 상기 데이터베이스 파일에 기록하고, "트랜잭션 시작" 또는 "Migration 커밋 완료"인 경우 상기 로그 파일을 초기화하는 단계;를 더 포함함을 특징으로 한다.
이상 설명한 바와 같이 본 발명에 따르면, DBMS에서 트랜잭션 수행 시 로깅을 위한 저장 공간을 효율적으로 사용할 수 있으며, 파일 I/O를 최소화하고, 파일에 기록할 때 순차 기록함으로써 성능이 개선되는 효과를 얻을 수 있다.
특히 모바일 단말기 상에서는 파일 I/O를 최소화함으로써 성능이 개선되는 효과 뿐만 아니라 플래시 메모리의 수명 단축을 방지할 수 있는 효과도 얻을 수 있다.
도 1은 본 발명에 의한 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치의 전체적인 구성을 도시한 것이고,
도 2는 본 발명에 의한 해쉬 관리자에 의해 사용되는 해쉬 자료구조를 도시한 것이고,
도 3은 본 발명에 의한 로그 버퍼 관리자가 로그 버퍼에 액세스하기 위한 자료 구조를 도시한 것이다.
도 4는 트랜잭션이 수행되는 과정에서 Commit 단계를 설명하기 위한 것이고,
도 5는 본 발명에 의한 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 방법에서 시스템 오류 상황에서 데이터 일관성을 보장하는 방법을 설명하기 위한 것이다.
이하에서는 첨부도면을 참조하여 본 발명에 대해 상세히 설명한다.
도 1에 의하면, 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치의 바람직한 일 실시예는 데이터베이스 파일(20), 로그 파일(30), 데이터베이스 파일 관리자(40), 로그 파일 관리자(50), 해쉬 관리자(60), 로그 버퍼 관리자(70) 및 회복 관리자(80)를 포함하여 구성된다.
여기서 모바일 환경이라 함은, 이동성을 보장하는 장치가 제공하는 환경을 의미하는 것으로, 스마트 폰, 내비게이션 단말기, 개인 정보 단말기(Personal Digital Assistants : PDA) 등을 포함하는 현재 또는 미래의 각종 모바일 단말이 제공하는 환경으로 넓게 해석되어야 할 것이다.
본 발명의 구성요소인 데이터베이스 파일(20)과 로그 파일(30)은 각각 수동적인 구성요소로서, 메인 메모리와는 별개의 저장 매체에 저장된다. 본 발명에서 사용되는 저장 매체는 플래시 메모리로 구현되는 것이 바람직하지만, 반드시 이에 한정되는 것은 아니다.
본 발명의 구성요소인 데이터베이스 파일 관리자(40), 로그 파일 관리자(50), 해쉬 관리자(60), 로그 버퍼 관리자(70) 및 회복 관리자(80)는 각각 모바일 환경으로 제공되는 정보처리장치를 구성하는 각종 하드웨어 및 소프트웨어의 복합체로 구현될 수 있는 능동적인 구성요소로서, 이하에서 각 구성요소가 제공하는 기능적인 특징에 의해 정의된다.
데이터베이스 파일 관리자(40)는 데이터베이스 파일(20)을 관리하는 역할을 하며, 회복 관리자(80)에게 제어용 인터페이스를 제공한다. 데이터베이스 파일 관리자(40)는 페이지 식별자(ID)를 이용하여 데이터베이스 파일(20)에 대한 전반적인 파일 제어 기능을 수행한다. 여기서 페이지 식별자(ID)는 데이터베이스 파일에 대한 파일 번호, 페이지 크기, 페이지 번호를 포함하여 구현되는데, 파일 번호는 데이터베이스 파일의 식별번호이고, 페이지 크기는 데이터베이스 파일의 페이지 크기이고, 페이지 번호는 해당 데이터베이스 파일 중 해당 페이지의 번호를 나타낸다. 따라서, 페이지 식별자에 의해 해당 페이지의 데이터베이스 파일(20) 내에서의 물리적인 오프셋(Offset)(= 페이지 크기 * 페이지 번호)을 계산할 수 있다.
로그 파일 관리자(50)는 로그 파일(30)을 관리하는 역할을 하며, 회복 관리자(80)에게 제어용 인터페이스를 제공한다. 로그 파일 관리자(50)는 로그 순차 번호(Log Sequence Number : LSN) 정보를 이용하여 로그 파일(30)에 대한 전반적인 파일 제어 기능을 수행한다. 여기서 LSN 정보는 로그 파일에 대한 파일 번호, LSN 크기, LSN 번호를 포함하여 구현되는데, 파일 번호는 로그 파일의 식별번호이고, LSN 크기는 로그 파일의 페이지 크기이고, LSN 번호는 해당 로그 파일 중 해당 페이지의 번호를 나타낸다. 따라서, LSN 식별자에 의해 해당 페이지의 로그 파일(30) 내에서의 물리적인 오프셋(Offset)(= LSN 크기 * LSN 번호)을 계산할 수 있다.
해쉬 관리자(60)는 변경된 페이지에 대한 정보를 해쉬 자료구조(62)로 관리하며, 회복 관리자(80)에게 제어용 인터페이스를 제공한다. 도 1에서는 해쉬 자료구조(62)가 해쉬 관리자(60)의 외부 구성으로 도시되어 있으나, 도 2에 도시된 바와 같이 해쉬 관리자(60)의 내부 구성으로도 설정될 수 있음은 당연하다.
상위 모듈(10)로부터 특정 페이지 식별자(ID)에 해당하는 페이지의 읽기(Read) 요청이 들어왔을 때, 해쉬 관리자(60)는 해쉬 자료구조(62) 내에 요청된 페이지 ID가 존재하는지를 검색해 보고, 존재하면 로그 버퍼 관리자(70)에게 페이지 Read 요청을 수행하고, 존재하지 않으면 데이터베이스 파일 관리자(40)에게 페이지 Read 요청을 수행한다.
상위 모듈(10)로부터 특정 페이지 ID에 해당하는 페이지의 쓰기(Write) 요청이 들어왔을 때, 해쉬 관리자(60)는 해쉬 자료구조(62) 내에 페이지 ID와 LSN 정보를 등록하고, 로그 버퍼 관리자(70)에게 페이지 Write 요청을 수행한다.
따라서 본 발명에 의하면, 트랜잭션 수행 중에 발생하는 모든 Write 연산은 데이터베이스 파일(20)을 배제하고, 로그 파일(30)에만 기록하게 된다. 또한, 해쉬의 특성을 이용하여 Write 요청 시 페이지 ID를 해쉬에 등록할 때 중복된 페이지 ID는 등록되지 않으므로, 마지막 버전의 페이지 이미지만을 관리하게 되어 저장 공간이 절약된다. 또한, 해쉬 관리자(60)는 해쉬 자료구조(62) 내에 등록된 페이지 ID를 정렬(Sorting)하여 기록한 로그를 관리함으로써 로그 파일(30)에 로깅된 정보를 원본 데이터베이스 파일(20)에 마이그레이션(Migration)할 때 순차 기록 방식을 사용할 수 있다.
로그 버퍼 관리자(70)는 로그 버퍼(72)를 구비하여 변경된 페이지 이미지를 캐싱하고, 해쉬 관리자(60)와 회복 관리자(80)에게 제어용 인터페이스를 제공한다. 즉, 로그 버퍼 관리자(70)는 파일 I/O를 최소화하기 위해서 로그 파일(30)에 저장되어야 할 페이지 이미지들 중 일부를 메인 메모리의 일정 공간(로그 버퍼) 상에 캐쉬해 두는 기능을 수행한다. 도 1에서는 로그 버퍼(72)가 로그 버퍼 관리자(70)의 외부 구성으로 도시되어 있으나, 로그 버퍼 관리자(70)의 내부 구성으로도 설정될 수 있음은 당연하다.
해쉬 관리자(60)로부터 Read 또는 Write 요청이 들어오면, 로그 버퍼 관리자(70)는 로그 버퍼(72) 내에 해당 페이지와 동일한 페이지(페이지 내용이 아니라 페이지 ID가 동일한 것을 의미한다, 이하의 설명에서도 마찬가지이다)가 있으면 그 위치에 해당 페이지에 대한 Read 또는 Write를 수행하고, 없으면 최근 최소사용(Least recently used : LRU) 페이지 교체 알고리즘에 의해 대상 페이지(Victim)를 선정하여 로그 파일 관리자(50)에 Read 또는 Write를 요청한다.
특히, 로그 버퍼 관리자(70)가 로그 파일 관리자(50)에게 Write 요청을 할 때, 해쉬 자료구조에서 Victim으로 선정된 페이지의 LSN 정보가 초기화된 값인 경우, 순차적인 LSN 정보를 생성함으로써 로깅 시에도 순차 기록 방식을 사용할 수 있다. 로그 파일 관리자(50)에 의해 생성된 LSN 정보는 등록될 때 초기화 값이 설정된 해쉬 자료구조(62)에 반영되어, 이후 해당 페이지를 로그 파일(30)에 다시 기록할 때 사용된다.
회복 관리자(80)는 데이터베이스 파일 관리자(40), 로그 파일 관리자(50), 해쉬 관리자(60) 및 로그 버퍼 관리자(70)를 총괄하여 관리하는 기능을 수행하며, 시스템 오류 상황(운영체제 다운, Power 다운, 응용 프로그램 다운 등)이 발생하여 데이터 베이스 관리 시스템이 재가동하였을 때 원본 데이터베이스 파일(20)의 일관성(Consistency)을 보장해 주는 역할을 수행한다. 추가적으로 회복 관리자(80)는 상기 4개의 관리자들을 상위 모듈(10)에서 보이지 않도록 가려주며, 상위 모듈(10)에 대한 인터페이스 역할을 수행한다. 인터페이스 중 특히 커밋(Commit)에 대한 응용프로그램 프로그래밍 인터페이스(Application Program Interface : API)에서는 Commit를 LogCommit와 MigrationCommit의 2단계로 구분하여 정의한다. 도 1에서는 회복 관리자(80)가 내부에 데이터베이스 파일 관리자(40), 로그 파일 관리자(50), 해쉬 관리자(60) 및 로그 버퍼 관리자(70)를 포함하는 것으로 도시되어 있으나, 이는 관리적인 기능을 강조하기 위한 것이고 실제로는 별개의 모듈로 구현될 수도 있음은 물론이다.
따라서, 회복 관리자(80)는 상위 모듈(10)로부터의 Commit 요청에 대하여, 로그 버퍼 내의 페이지들 중 로그 파일(30)에 기록되지 않은 페이지들을 모두 기록하도록 제어하고(LogCommit), 해쉬 자료구조(62)를 이용하여 로그 파일(30)에 저장된 모든 페이지를 읽어서 데이터베이스 파일(20)에 순차적으로 기록하도록 제어하고(MigrationCommit), 데이터베이스 파일(20)의 소정의 영역에 현재까지 완벽히 진행된 상태를 기록한다.
도 2는 본 발명에 의한 해쉬 관리자(60)에 의해 사용되는 해쉬 자료구조(62)를 설명한다.
본 발명에서 사용되는 해쉬 자료구조(62)는 해쉬 함수, 해쉬 테이블(64) 그리고 버킷 블럭(66)으로 구성된다. 해쉬 테이블(64)은 해쉬키에 대응하는 버킷의 시작 위치를 지정하는 해쉬 노드들의 리스트 집합이다. 버킷 블럭(66)은 서로 다른 입력값에 대하여 동일한 해쉬 함수 값을 갖게 되는 경우 발생되는 해쉬 충돌을 회피하게 위한 수단으로, 해쉬 노드의 포인터에 의해 연결되는 다수의 버킷(Bucket)(68)들을 구비한다.
해쉬 관리자(60)가 사용하는 해쉬 함수의 입력값은 페이지 ID이며, 해쉬 함수는 Mod 연산으로 구현될 수 있다.
버킷 블럭(66)에 저장되는 버킷(68)의 구성요소는 페이지 ID와 LSN 정보이다. 페이지 ID는 상위 모듈(10)에서 관리하는 ID로서, 회복 관리자(80)의 인터페이스를 통해 전달되는 값이고, 데이터베이스 파일(20)을 액세스하기 위한 정보를 가지고 있다. LSN 정보는 로그 버퍼 관리자(70)에 의해 생성되는 ID이며, 로그 파일(30)을 액세스하기 위한 정보를 가지고 있다. 이들 ID를 이용하여 Read 또는 Write 시 저장 매체에서 해당 페이지가 저장된 물리적 위치를 계산할 수 있다.
해쉬 관리자(60)는 삽입 연산시 페이지 ID에 대한 중복값을 허용하지 않으므로, 항상 마지막 버전의 페이지 이미지만을 관리할 수 있도록 한다. 따라서 본 발명에서는 로깅을 위한 저장 공간을 효율적으로 사용할 수 있게 된다.
Commit 시점에서는 해쉬 자료구조(62)에 등록되어 있는 모든 페이지 ID에 해당하는 페이지들이 바로 변경된 페이지들이고, 로깅이 완료된 후(LogCommit) 로그 파일(30)에는 모든 변경된 페이지들이 마지막 버전의 이미지로 기록되어 있게 된다. 따라서 해쉬 자료구조(62) 내에 등록된 모든 버킷들을 페이지 ID 순서로 정렬하여 Migration 작업 시에 사용하면 순차 기록하는 효과를 얻을 수 있다.
도 3은 로그 버퍼 관리자(70)가 로그 버퍼(72)에 액세스하기 위한 자료 구조를 도시한 것이다.
로그 버퍼 관리자(70)가 관리하는 자료구조에는 로그 버퍼(72), 버퍼 제어 블럭(74) 및 해쉬 테이블(76)이 구비된다.
로그 버퍼(72)는 실제로 캐쉬될 페이지들이 저장되는 메인 메모리 내의 공간이다.
버퍼 제어 블럭(74)은 페이지 ID에 해당하는 페이지를 빠르게 검색하기 위한 해쉬 체인(741)과, LRU 방식의 페이지 교체 알고리즘을 위한 LRU 체인(743)과, 로그 버퍼 내의 해당 페이지를 가리키는 페이지 포인터(745)로 이루어진다. 해쉬 체인(741)과 LRU 체인(743)은 각각 하나의 버퍼 제어 블럭에서 다른 버퍼 제어 블럭을 가리키는 포인터로 구성된다.
해쉬 테이블(76)은 해쉬 체인(741)을 구성하기 위한 테이블이다.
여기서 해쉬 체인(741)은 LRU 페이지 교체 알고리즘에 의해 대상 페이지(Victim)가 선정되었을 때 갱신된다.
LRU 체인(743)은 모든 Read 또는 Write 시에 갱신된다. 이 때, 최근에 액세스된 페이지를 가리키는 버퍼 제어 블럭(74)은 최상위에 위치하도록 LRU 체인(743)이 갱신되고, 최하위에 위치한 버퍼 제어 블럭(74)이 가리키는 페이지는 대상 페이지(Victim)로 선정된다.
이하에서 도 1 내지 3을 참조하여, 본 발명에 의한 로깅 동작을 상세히 설명하기로 한다.
내비게이션과 같은 모바일 단말기에 구축된 데이터베이스에서 이루어지는 트랜잭션의 경우, 하나의 트랜잭션에 수만 개의 Read 또는 Write가 복합적으로 구성될 수 있다. 본 발명은 이와 같은 환경에서 유용하게 적용될 수 있다.
상위 모듈(10)로부터의 Write 요청이 있는 경우에는 다음과 같이 수행된다.
해쉬 관리자(60)는 해쉬 자료구조(62)에 대한 검색(a)을 통하여, 해당 페이지가 해쉬 자료구조(62)에 등록되어 있지 않으면, 해당 페이지의 페이지 식별자와 로그 버퍼 관리자(70)에 의해 생성된 LSN 정보를 해쉬 자료구조(62)에 등록하고(b), 로그 버퍼 관리자(70)에 해당 페이지의 Write 요청을 한다(초기 등록 시에 해쉬 자료구조(62)에서 해당 페이지의 LSN 정보는 초기화된 값을 가지고 있다가, 나중에 해당 페이지가 Victim으로 선정되어 로그 파일(30)에 기록될 때 로그 버퍼 관리자(70)에 의해 생성된 LSN 정보로 갱신된다).
이후, 로그 버퍼 관리자(70)는 로그 버퍼(72)에 해당 페이지를 기록하고(c), LRU(Least recently used) 페이지 교체 알고리즘에 의해 대상 페이지(Victim)를 선정하여 로그 파일 관리자(50)에 Write 요청을 하고, 로그 파일 관리자(50)는 Write 요청된 페이지를 로그 파일(30)에 기록한다(d).
로그 버퍼 관리자(70)가 로그 파일 관리자(50)에게 Write 요청을 할 때, 해쉬 자료구조(62)에서 Victim으로 선정된 페이지의 LSN 정보가 초기화된 값인 경우, 로그 버퍼 관리자(70)는 순차적인 LSN 정보를 생성한다. 로그 파일 관리자(50)에 의해 생성된 LSN 정보는 등록될 때 초기화 값이 설정된 해쉬 자료구조(62)에 반영되어, 이후 해당 페이지를 로그 파일(30)에 다시 기록할 때 사용된다.
해쉬 관리자(60)는 해쉬 자료구조(62)에 대한 검색(a)을 통하여, 해당 페이지가 해쉬 자료구조(62)에 등록되어 있으면, 등록된 정보를 이용하여 로그 버퍼 관리자(70)에 해당 페이지의 Write 요청을 한다. 이후, 로그 버퍼 관리자(70)는 로그 버퍼(72)에 해당 페이지와 동일한 페이지가 있으면 그 위치에 해당 페이지에 기록하고, 없으면 LRU 페이지 교체 알고리즘에 의해 대상 페이지(Victim)를 선정하여 로그 파일 관리자(50)에 Write 요청을 하고 로그 버퍼(72)에 해당 페이지를 기록한다(d). 로그 파일 관리자(50)는 Write 요청된 페이지를 로그 파일(30)에 기록한다.
상위 모듈(10)로부터의 Read 요청이 있는 경우에는 다음과 같이 수행된다.
해쉬 관리자(60)는 해쉬 자료구조(62)에 대한 검색(a)을 통하여, 해당 페이지가 해쉬 자료구조(62)에 등록되어 있지 않으면(즉, 트랜잭션에서 변경된 적이 없는 페이지를 요청하는 경우), 데이터베이스 파일 관리자(40)에 해당 페이지의 Read 요청을 하여 읽는다(e).
해쉬 관리자(60)는 해쉬 자료구조(62)에 대한 검색(a)을 통하여, 해당 페이지가 해쉬 자료구조(62)에 등록되어 있으면(즉, 트랜잭션에서 해당 페이지가 이미 한번 이상 변경된 경우), 로그 버퍼 관리자(70)에 해당 페이지의 Read 요청을 한다. 로그 버퍼 관리자(70)는 해당 페이지를 로그 버퍼(72)에서 읽되(f), 로그 버퍼(72)에 해당 페이지와 동일한 페이지가 없으면 LRU 페이지 교체 알고리즘에 의해 로그 파일(30)에서 해당 페이지와 동일한 페이지를 교체한다(g).
도 4를 참조하여 트랜잭션이 수행되는 과정에서 Commit 단계를 설명하면 다음과 같이 수행된다.
먼저, 트랜잭션 시작 단계에서는 회복 관리자에 의해 관리되는 해쉬 자료구조(62) 및 로그 버퍼(72)를 초기화하고, 원본 데이터베이스 파일(20)의 특정 영역(헤더 페이지)에 트랜잭션 상태를 "트랜잭션 시작"으로 기록하고(S100), 시스템 차원에서 버퍼링된 부분이 완전히 파일에 기록되도록 Flush(Sync) 작업을 수행한다.
이후, DML(data manipulation language) Query 단계에서는 상기한 바와 같은 로깅 작업이 수행된다.
마지막으로 Commit 단계는 2단계(LogCommit단계와 MigrationCommit단계)로 구분되어 진행된다.
1단계는 LogCommit 단계로서, 상위모듈(10)에서 사용하고 아직 저장하지 않은 변경된 페이지들을 Write 시켜주고(S110), 로그 버퍼(72) 내의 페이지들 중 로그 파일(30)에 기록되지 않은 페이지들(Dirty 비트를 사용하여 사용되지 않았거나 이미 로그 파일(30)에 기록이 완료된 페이지들과 구분할 수 있다)을 모두 기록하여야 비로소 모든 로깅 작업이 완료된다(S120).
하지만 시스템 차원에서 파일 캐슁 기법을 사용하므로 여전히 파일에 완전히 기록되었다고 보장할 수는 없다. 따라서, 시스템 차원에서 버퍼링된 부분도 완전히 파일로 기록되도록 Flush(Sync) 작업을 수행한다. 원본 데이터베이스 파일(20)의 특정 영역(헤더 페이지)에 현재까지 완벽히 진행된 트랜잭션 상태("로그 커밋 완료")를 기록하고(S130), 다시 한번 Flush(Sync) 작업을 수행한다.
2단계는 MigrationCommit 단계로서, 해쉬 자료구조(보다 정확히는, 해쉬 자료구조(62)를 정렬하여 기록한 로그)를 이용하여, 로그 파일(30)에서 페이지를 읽어서 원본 데이터베이스 파일(20)로 변경된 페이지들을 이주(Migration)시키는 작업을 수행한다(S140). 이후 원본 데이터베이스파일이 완전히 기록되도록 Flush(Sync) 작업을 수행한다. 원본 데이터베이스 파일(20)의 특정영역(헤더페이지)에 현재까지 완벽히 진행된 상태("Migration 커밋 완료")를 기록하고(S150), 다시 한번 Flush(Sync) 작업을 수행한다.
여기까지 진행되었다면 해당 트랜잭션이 정상적으로 수행을 마친 것이다.
Rollback 연산은 원본 데이터베이스 파일(20)이 바뀌지 않았으므로 그 동안 기록해오던 로그 파일(30)을 clean up만 하면 된다. 추가적으로, 상위 모듈(10)에서 캐쉬하고 있던 변경된 페이지들이 존재할 가능성이 있으므로, 상위 모듈(10)에서 사용 중이던 캐쉬된 모든 페이지들을 clean up 해주어야 한다.
도 5를 참조하여, 시스템 오류 상황(운영체제 다운, 전원 다운, 응용 프로그램 다운 등)에서 데이터 일관성을 보장하는 방법에 대하여 설명하면 다음과 같다.
트랜잭션의 마지막 상태값을 원본 데이터베이스 파일(10)의 헤더페이지에 기록함으로써, 시스템 오류 상황 발생시 데이터의 일관성을 보장할 수 있다.
트랜잭션을 성공적으로 시작한 후 1단계 커밋이 완료되기 전에 오류가 발생하였다면(트랜잭션의 마지막 상태값이 "트랜잭션 시작"인 경우)(S200), 재부팅 시 이전의 트랜잭션이 롤백되었음을 응용 프로그램에 알리고, 모든 로그 파일(30)을 clean up한 후(S240), 정상적인 부팅과정을 계속 진행하게 된다(S250).
트랜잭션을 성공적으로 2단계 커밋이 완료하여 정상적으로 수행을 마친 후에 오류가 발생하였다면(트랜잭션의 마지막 상태값이 "Migration 커밋 완료"인 경우)(S210), 재부팅 시 모든 로그 파일(30)을 clean up한 후(S240), 정상적인 부팅과정을 계속 진행하면 된다(S250).
이에 비하여, 만약 1단계 커밋이 완료되고 2단계 커밋(Migration)수행 중 오류가 발생하였다면(트랜잭션의 마지막 상태값은 "로그 커밋 완료"인 경우)(S220), 재부팅시 다시 Migration작업을 수행한 후(S230), 모든 로그 파일(30)을 clean up하여(S240), 정상적인 부팅과정을 계속 진행하게 된다(S250).
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
10 : 상위 모듈 20 : 데이터베이스 파일
30 : 로그 파일 40 : 데이터베이스 파일 관리자
50 : 로그 파일 관리자 60 : 해쉬 관리자
62 : 해쉬 자료구조 64 : 해쉬 테이블
66 : 버킷 블럭 68 : 버킷
70 : 로그 버퍼 관리자 72 : 로그 버퍼
74 : 버퍼 제어 블럭 76 : 해쉬 테이블
80 : 회복 관리자

Claims (13)

  1. 응용 프로그램(상위 모듈)의 요청에 의해 데이터베이스에 대한 트랜잭션을 처리하는 트랜잭션 로깅 및 회복 장치에 있어서,
    저장 매체에 저장되는 데이터베이스 파일;
    상기 트랜잭션 처리 중 상기 데이터베이스 파일에서 변경된 페이지로 구성되고, 저장 매체에 저장되는 로그 파일;
    페이지 식별자를 이용하여 상기 데이터베이스 파일을 제어하는 데이터베이스 파일 관리자;
    로그 순차 번호(LSN) 정보를 이용하여 상기 로그 파일을 제어하는 로그 파일 관리자;
    상기 변경된 페이지에 대한 정보를 관리하는 해쉬 자료구조를 구비하고, 페이지 변경 또는 상기 변경된 페이지에 대한 액세스는 로그 버퍼 관리자를 통해 수행하고, 변경되지 않은 페이지에 대한 액세스는 데이터베이스 파일 관리자를 통해 수행하도록 제어하는 해쉬 관리자;
    상기 로그 파일의 페이지들 중 일부를 메인 메모리 상에 관리하는 로그 버퍼를 구비하고, 페이지 변경 또는 상기 변경된 페이지에 대한 액세스에 대응하여 상기 로그 버퍼를 대상으로 하여 수행하되, 상기 로그 버퍼에 해당 페이지가 없으면 상기 로그 파일과 최근 최소사용(Least recently used : LRU) 방식의 페이지 교체를 수행하는 로그 버퍼 관리자; 및
    상기 상위 모듈로부터의 커밋(Commit) 요청에 대하여, 상기 로그 버퍼 내의 페이지들 중 상기 로그 파일에 기록되지 않은 페이지들을 모두 기록하도록 제어하고, 상기 해쉬 자료구조를 이용하여 상기 로그 파일에 저장된 모든 페이지를 읽어서 상기 데이터베이스 파일에 순차적으로 기록하도록 제어하고, 상기 데이터베이스 파일의 소정의 영역에 현재까지 진행된 상태를 기록하는 회복 관리자;를 포함하는 것을 특징으로 하는 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치.
  2. 응용 프로그램(상위 모듈)의 요청에 의해 데이터베이스에 대한 트랜잭션을 처리하는 트랜잭션 로깅 및 회복 장치에 있어서,
    저장 매체에 저장되는 데이터베이스 파일;
    상기 트랜잭션 처리 중 상기 데이터베이스 파일에서 변경된 페이지로 구성되고, 저장 매체에 저장되는 로그 파일;
    페이지 식별자를 이용하여 상기 데이터베이스 파일을 제어하는 데이터베이스 파일 관리자;
    로그 순차 번호(LSN) 정보를 이용하여 상기 로그 파일을 제어하는 로그 파일 관리자;
    상위 모듈로부터의 쓰기(Write) 요청에 대하여, 해당 페이지가 해쉬 자료구조에 등록되어 있지 않으면 해당 페이지의 페이지 식별자와 로그 버퍼 관리자에 의해 생성된 로그 순차 번호(LSN) 정보를 해쉬 자료구조에 등록하고 로그 버퍼 관리자에 해당 페이지의 쓰기(Write) 요청을 하고, 등록되어 있으면 등록된 정보를 이용하여 로그 버퍼 관리자에 해당 페이지의 쓰기(Write) 요청을 하는 해쉬 관리자;
    상기 해쉬 관리자로부터의 쓰기(Write) 요청에 대하여, 로그 버퍼에 해당 페이지와 동일한 페이지가 있으면 그 위치에 해당 페이지에 기록하고, 없으면 최근 최소사용(Least recently used : LRU) 페이지 교체 알고리즘에 의해 대상 페이지를 선정하여 로그 파일 관리자에 쓰기(Write) 요청을 하고 로그 버퍼에 해당 페이지를 기록하는 로그 버퍼 관리자; 및
    상위 모듈로부터의 커밋(Commit) 요청에 대하여, 상기 로그 버퍼 내의 페이지들 중 상기 로그 파일에 기록되지 않은 페이지들을 모두 기록하도록 제어하고, 상기 해쉬 자료구조를 이용하여 상기 로그 파일에 저장된 모든 페이지를 읽어서 상기 데이터베이스 파일에 순차적으로 기록하도록 제어하고, 상기 데이터베이스 파일의 소정의 영역에 현재까지 진행된 상태를 기록하는 회복 관리자;를 포함하는 것을 특징으로 하는 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치.
  3. 제2항에 있어서, 상기 해쉬 관리자는
    상위 모듈로부터의 읽기(Read) 요청에 대하여, 해당 페이지가 해쉬 자료구조에 등록되어 있으면 로그 버퍼 관리자에 해당 페이지의 읽기(Read) 요청을 하고, 등록되어 있지 않으면 데이터베이스 파일 관리자에 해당 페이지의 읽기(Read) 요청을 하고,
    상기 로그 버퍼 관리자는
    상기 해쉬 관리자로부터의 읽기(Read) 요청에 대하여, 해당 페이지를 상기 로그 버퍼에서 읽되, 상기 로그 버퍼에 해당 페이지와 동일한 페이지가 없으면 최근 최소사용(LRU) 페이지 교체 알고리즘에 의해 로그 파일에서 해당 페이지와 동일한 페이지를 교체하는 것을 특징으로 하는 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치.
  4. 제2항 또는 제3항에 있어서, 상기 해쉬 자료구조는
    입력값으로 페이지 식별자가 사용되는 나머지 연산(MOD 연산)으로 이루어진 해쉬 함수와,
    해쉬키에 대응하는 버킷의 시작 위치를 지정하는 해쉬 노드들의 리스트 집합인 해쉬 테이블과,
    페이지 식별자와 로그 순차 번호(LSN) 정보를 버킷의 구성요소로 하는 버킷 블럭을 구비하는 것을 특징으로 하는 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치.
  5. 제2항 또는 제3항에 있어서, 상기 로그 버퍼 관리자는 상기 로그 버퍼에 액세스하기 위하여,
    해쉬 체인 구성을 위한 해쉬 테이블; 및
    페이지 식별자에 해당하는 페이지를 검색하기 위한 해쉬 체인과 최근 최소사용(LRU) 방식의 페이지 교체 알고리즘을 위한 최근 최소사용(LRU) 체인과 로그 버퍼 내의 해당 페이지를 가리키는 페이지 포인터로 이루어진 버퍼 제어 블럭;을 구비하는 것을 특징으로 하는 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치.
  6. 제2항 또는 제3항에 있어서, 상기 로그 버퍼 관리자는
    대상 페이지로 선정된 페이지에 대한 로그 순차 번호(LSN) 정보가 아직 설정되어 있지 않은 경우, 순차적인 방식으로 로그 순차 번호(LSN) 정보를 생성하여 상기 로그 파일 관리자에 쓰기(Write) 요청을 하는 것을 특징으로 하는 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치.
  7. 제2항 또는 제3항에 있어서, 상기 회복 관리자는
    시스템 오류 상황 이후 부팅 시에, 상기 데이터베이스 파일의 소정의 영역에 기록된 현재까지 진행된 상태가 "로그 커밋 완료"인 경우, 상기 로그 파일에 저장된 모든 페이지를 읽어서 상기 데이터베이스 파일에 기록하도록 제어하고, "트랜잭션 시작" 또는 "마이그레이션 커밋 완료"인 경우 상기 로그 파일을 초기화하는 것을 특징으로 하는 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치.
  8. 응용 프로그램(상위 모듈)의 요청에 의해 데이터베이스에 대한 트랜잭션을 처리하는 트랜잭션 로깅 및 회복 방법에 있어서,
    (a) 상기 상위 모듈로부터의 쓰기(Write) 요청에 대하여, 해당 페이지가 해쉬 자료구조에 등록되어 있지 않은 경우, 페이지 식별자와 로그 순차 번호(LSN) 정보를 해쉬 자료구조에 등록하고, 해당 페이지를 로그 버퍼에 기록하되 최근 최소사용(least recently used : LRU) 페이지 교체 알고리즘에 의해 선정된 대상 페이지는 로그 파일에 기록하는 단계;
    (b) 상기 상위 모듈로부터의 쓰기(Write) 요청에 대하여, 해당 페이지가 상기 해쉬 자료구조에 등록되어 있는 경우, 상기 로그 버퍼에 해당 페이지와 동일한 페이지가 있으면 그 위치에 해당 페이지에 기록하고, 없으면 최근 최소사용(LRU) 페이지 교체 알고리즘에 의해 선정된 대상 페이지를 상기 로그 파일에 기록하고 해당 페이지는 상기 로그 버퍼에 기록하는 단계;
    (c) 상기 상위 모듈로부터의 커밋(Commit) 요청에 대하여, 상기 로그 버퍼 내의 페이지들 중 상기 로그 파일에 기록되지 않은 페이지들을 모두 기록한 후, 데이터베이스 파일의 소정의 영역에 현재까지 진행된 상태를 기록하고, 상기 해쉬 자료구조를 이용하여 상기 로그 파일에 저장된 모든 페이지를 읽어서 상기 데이터베이스 파일에 순차적으로 기록한 후, 상기 데이터베이스 파일의 소정의 영역에 현재까지 진행된 상태를 기록하는 단계;를 포함하는 것을 특징으로 하는 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 방법.
  9. 제8항에 있어서, 상기 (c) 단계 이전에
    (a1) 상기 상위 모듈로부터의 읽기(Read) 요청에 대하여, 해당 페이지가 상기 해쉬 자료구조에 등록되어 있지 않은 경우, 상기 데이터베이스 파일에서 해당 페이지를 읽는 단계; 및
    (b1) 상기 상위 모듈로부터의 읽기(Read) 요청에 대하여, 해당 페이지가 상기 해쉬 자료구조에 등록되어 있는 경우, 해당 페이지를 상기 로그 버퍼에서 읽되, 상기 로그 버퍼에 해당 페이지와 동일한 페이지가 없으면 최근 최소사용(LRU) 페이지 교체 알고리즘에 의해 로그 파일에서 해당 페이지와 동일한 페이지를 교체하는 단계;를 더 포함하는 것을 특징으로 하는 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 방법.
  10. 제8항 또는 제9항에 있어서, 상기 해쉬 자료구조는
    입력값으로 페이지 식별자가 사용되는 나머지 연산(MOD 연산)으로 이루어진 해쉬 함수와,
    해쉬키에 대응하는 버킷의 시작 위치를 지정하는 해쉬 노드들의 리스트 집합인 해쉬 테이블과,
    페이지 식별자와 로그 순차 번호(LSN) 정보를 버킷의 구성요소로 하는 버킷 블럭을 구비하는 것을 특징으로 하는 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 방법.
  11. 제8항 또는 제9항에 있어서,
    상기 로그 버퍼에 액세스하기 위한 자료구조로
    해쉬 체인 구성을 위한 해쉬 테이블; 및
    페이지 식별자에 해당하는 페이지를 검색하기 위한 해쉬 체인과 최근 최소사용(LRU) 방식의 페이지 교체 알고리즘을 위한 최근 최소사용(LRU) 체인과 로그 버퍼 내의 해당 페이지를 가리키는 페이지 포인터로 이루어진 버퍼 제어 블럭;을 구비하는 것을 특징으로 하는 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 방법.
  12. 제8항 또는 제9항에 있어서, 상기 (a) 단계는
    대상 페이지로 선정된 페이지에 대한 로그 순차 번호(LSN) 정보를 순차적인 방식으로 생성하는 것을 특징으로 하는 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 방법.
  13. 제8항 또는 제9항에 있어서,
    (d) 시스템 오류 상황 이후 부팅 시에, 상기 데이터베이스 파일의 소정의 영역에 기록된 현재까지 진행된 상태가 "로그 커밋 완료"인 경우, 상기 로그 파일에 저장된 모든 페이지를 읽어서 상기 데이터베이스 파일에 기록하고, "트랜잭션 시작" 또는 "마이그레이션 커밋 완료"인 경우 상기 로그 파일을 초기화하는 단계;를 더 포함함을 특징으로 하는 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 방법.
KR20120115453A 2012-10-17 2012-10-17 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치 및 그 방법 KR101419428B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR20120115453A KR101419428B1 (ko) 2012-10-17 2012-10-17 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치 및 그 방법
PCT/KR2012/008714 WO2014061847A1 (ko) 2012-10-17 2012-10-23 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR20120115453A KR101419428B1 (ko) 2012-10-17 2012-10-17 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치 및 그 방법

Publications (2)

Publication Number Publication Date
KR20140049327A KR20140049327A (ko) 2014-04-25
KR101419428B1 true KR101419428B1 (ko) 2014-07-17

Family

ID=50488396

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20120115453A KR101419428B1 (ko) 2012-10-17 2012-10-17 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치 및 그 방법

Country Status (2)

Country Link
KR (1) KR101419428B1 (ko)
WO (1) WO2014061847A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109791541B (zh) * 2018-11-29 2023-11-24 袁振南 日志序列号生成方法、装置及可读存储介质
CN113239012B (zh) * 2021-05-17 2023-02-03 挂号网(杭州)科技有限公司 一种数据库迁移方法、装置、电子设备和存储介质
CN117573378A (zh) * 2024-01-15 2024-02-20 摩尔线程智能科技(北京)有限责任公司 内存管理方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080027660A (ko) * 2006-09-25 2008-03-28 주식회사 비티웍스 전자문서 관리 장치 및 방법
KR20100062562A (ko) * 2008-12-02 2010-06-10 한국과학기술원 낸드 플래시 메모리와 비휘발성 램을 사용하는 하이브리드 저장 장치 기반의 데이터베이스 시스템 및 데이터베이스 시스템에서 데이터를 업데이트하는 방법
KR20120110871A (ko) * 2011-03-30 2012-10-10 주식회사 케이티 분산 파일 시스템의 저장서버 결정 및 검색방법
KR20120113584A (ko) * 2011-04-05 2012-10-15 삼성전자주식회사 메모리 장치, 및 이를 포함하는 컴퓨터 시스템

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101157483B1 (ko) * 2010-08-19 2012-06-20 (주)씨디네트웍스 파일 다운로드 방법 및 이를 구현하기 위한 프로그램을 기록한 기록매체

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080027660A (ko) * 2006-09-25 2008-03-28 주식회사 비티웍스 전자문서 관리 장치 및 방법
KR20100062562A (ko) * 2008-12-02 2010-06-10 한국과학기술원 낸드 플래시 메모리와 비휘발성 램을 사용하는 하이브리드 저장 장치 기반의 데이터베이스 시스템 및 데이터베이스 시스템에서 데이터를 업데이트하는 방법
KR20120110871A (ko) * 2011-03-30 2012-10-10 주식회사 케이티 분산 파일 시스템의 저장서버 결정 및 검색방법
KR20120113584A (ko) * 2011-04-05 2012-10-15 삼성전자주식회사 메모리 장치, 및 이를 포함하는 컴퓨터 시스템

Also Published As

Publication number Publication date
KR20140049327A (ko) 2014-04-25
WO2014061847A1 (ko) 2014-04-24

Similar Documents

Publication Publication Date Title
US11210220B2 (en) Log-structured storage for data access
EP3170106B1 (en) High throughput data modifications using blind update operations
US11360863B2 (en) Key-value store on persistent memory
US9183236B2 (en) Low level object version tracking using non-volatile memory write generations
EP3207471B1 (en) High performance transactions in database management systems
WO2017190604A1 (zh) 数据库系统中事务恢复的方法与数据库管理系统
US11132350B2 (en) Replicable differential store data structure
Levandoski et al. LLAMA: A cache/storage subsystem for modern hardware
US8560500B2 (en) Method and system for removing rows from directory tables
JP7101566B2 (ja) 不揮発性メモリにおけるマルチバージョン同時実行制御(mvcc)
US9922086B1 (en) Consistent query of local indexes
Depoutovitch et al. Taurus database: How to be fast, available, and frugal in the cloud
US11755427B2 (en) Fast recovery and replication of key-value stores
EP2590078B1 (en) Shadow paging based log segment directory
CN113515501B (zh) 非易失性内存数据库管理系统恢复方法、装置和电子设备
KR101419428B1 (ko) 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치 및 그 방법
TW202134882A (zh) 資料同步方法
US11829291B2 (en) Garbage collection of tree structure with page mappings
Xu et al. Building a fast and efficient LSM-tree store by integrating local storage with cloud storage
CN114816224A (zh) 数据管理方法和数据管理装置
JPH0816881B2 (ja) データベース更新方法

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: 20180709

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190702

Year of fee payment: 6