KR20070074836A - 트랜잭션 처리를 위한 로그 정보 관리 시스템 및 방법 - Google Patents

트랜잭션 처리를 위한 로그 정보 관리 시스템 및 방법 Download PDF

Info

Publication number
KR20070074836A
KR20070074836A KR1020060002867A KR20060002867A KR20070074836A KR 20070074836 A KR20070074836 A KR 20070074836A KR 1020060002867 A KR1020060002867 A KR 1020060002867A KR 20060002867 A KR20060002867 A KR 20060002867A KR 20070074836 A KR20070074836 A KR 20070074836A
Authority
KR
South Korea
Prior art keywords
page
buffer
management module
log
list
Prior art date
Application number
KR1020060002867A
Other languages
English (en)
Other versions
KR100781515B1 (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 KR1020060002867A priority Critical patent/KR100781515B1/ko
Priority to US11/640,287 priority patent/US7849060B2/en
Priority to EP07100135A priority patent/EP1806668B1/en
Priority to JP2007000560A priority patent/JP4916892B2/ja
Priority to CNB2007100015990A priority patent/CN100511235C/zh
Publication of KR20070074836A publication Critical patent/KR20070074836A/ko
Application granted granted Critical
Publication of KR100781515B1 publication Critical patent/KR100781515B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • 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/23Updating
    • G06F16/2358Change logging, detection, and notification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 로그 정보 관리 시스템 및 방법에 관한 것으로서, 본 발명의 실시에 따른 로그 정보 관리 시스템은 갱신되는 페이지가 새로 할당되는 페이지인지 여부를 판단하는 인덱스/레코드/카탈로그 관리 모듈과, 자유 페이지 목록과 비완료 자유 페이지 목록을 관리하고, 상기 갱신되는 페이지가 새로 할당되는 페이지인 경우 상기 자유 페이지 목록 또는 상기 비완료 자유 페이지 목록으로부터 신규 페이지를 할당하는 저장 관리 모듈 및 상기 신규 페이지에 대응하는 버퍼 페이지에 대한 식별 정보를 설정하는 버퍼 관리 모듈을 포함하며, 상기 버퍼 페이지에 대한 데이터 값 변경에 대해서는 로그 정보가 발생되지 않는다.
로그(log), 트랜젝션

Description

트랜잭션 처리를 위한 로그 정보 관리 시스템 및 방법{System and method for managing log information for transaction}
도 1은 종래 기술에 따른 로그 정보 관리 시스템의 구성을 나타내는 블록도이다.
도 2는 종래 기술에 따른 일반적인 로그 레코드의 구조를 나타내는 예시도이다.
도 3은 본 발명의 일 실시예에 따른 로그 정보 관리 시스템의 구성을 나타내는 블록도이다.
도 4는 본 발명의 일 실시예에 따른 갱신 트랜잭션 과정을 나타내는 플로우 차트이다.
도 5는 본 발명의 일 실시예에 따라 데이터를 갱신하는 과정을 구체적으로 나타내는 플로우 차트이다.
도 6은 본 발명의 일 실시예에 따라 디스크 페이지를 새로 할당하는 과정을 나타내는 플로우 차트이다.
도 7은 본 발명의 일 실시예에 따라 새로 할당된 디스크 페이지를 버퍼에 반입하는 과정을 나타내는 플로우 차트이다.
도 8은 본 발명의 일 실시예에 따라 버퍼 내의 페이지를 디스크로 반출하는 과정을 나타내는 플로우 차트이다.
도 9는 본 발명의 일 실시예에 따라 자유 페이지 목록(Free Page List)과 비완료 자유 페이지 목록(Not-Committed Free Page List)의 갱신 과정을 나타내는 예시도이다.
도 10은 본 발명의 일 실시예에 따른 실험 결과를 나타내는 그래프이다.
< 도면의 주요 부분에 대한 설명 >
300: 로그 정보 관리 시스템
310: 트랜잭션 관리 모듈
320: 복구 관리 모듈
330: 로그 관리 모듈
340: 인덱스/레코드/카탈로그 관리 모듈
350: 버퍼 관리 모듈
370: 저장 관리 모듈
390: 어플리케이션
본 발명은 데이터베이스 관리 시스템(Database Management System)에서의 로그 정보 관리에 관한 것으로서, 보다 상세하게는 신규로 할당된 데이터 페이지에 관하여 발생하는 로그 정보의 크기를 최소화하는 로그 정보 관리 시스템 및 방법에 관한 것이다.
데이터베이스 관리 시스템에서의 '로그(log)' 또는 '로깅(logging)'이란 일반적으로 어플리케이션 프로그램이 수행하는 작업에 의해 변경 중인 데이터가 시스템 이상 또는 사용자 부주의에 의해 정상적인 값을 갖지 못하게 되는 것을 방지하기 위하여 변경 전 상태의 데이터를 별도로 저장하는 것을 의미한다.
이러한 로깅(logging)에 의해 데이터베이스 관리 시스템은 철회 또는 복구 작업을 수행함으로써 비정상적으로 종료된 어플리케이션 프로그램에 의해 조작 중이던 데이터를 원래의 정상적인 상태로 되돌릴 수 있게 되는 것이다.
도 1은 종래 기술에 따른 로그 정보 관리 시스템의 구성을 나타내는 블록도이다.
도 1을 참조하면, 트랜잭션 매니저(110)는 트랜잭션들의 시작, 종료, 철회 시에 로그 매니저(130)를 사용하여 로그 정보를 남기고, 현재 진행되고 있는 트랜잭션들의 정보를 유지한다. 복구 매니저(120)는 특정 트랜잭션의 철회 시에 로그 매니저(130)를 통하여 로그 정보를 확보한 후 데이터에 행해진 변경을 되돌리는 역할을 담당한다. 특히, 복구 매니저(120)는 로그 정보 관리 시스템이 비정상적으로 종료되었을 때 미완료된 트랜잭션의 영향을 데이터베이스에서 제거하고 완료된 트랜잭션의 수정 사항을 데이터베이스에 반영하여 데이터 일관성을 유지하도록 한다. 로그 매니저(130)는 다른 모듈들에서 발생시킨 데이터베이스에 대한 변경된 로그 정보를 취합하여 버퍼(160)에 반영하며, 복구 매니저(120)로부터 요청된 로그 정보를 디스크(180)로부터 읽어서 제공한다.
 인덱스/레코드/카탈로그 매니저(140)는 로그 정보 관리 시스템을 구성하는 주요 데이터인 인덱스(Index), 레코드(Record), 카탈로그(Catalog) 정보들을 각각 관리하는 모듈로서, 버퍼 매니저(150)에게 필요한 데이터(인덱스, 레코드, 카탈로그)를 버퍼(160)에 적재시키고 필요한 값을 읽거나 변경하도록 요청한다. 로그 정보 관리 시스템에서 대부분의 로그 정보들은 인덱스/레코드/카탈로그 매니저(140)에 의해 발생된다.
버퍼 매니저(150)는 버퍼(160)를 관리하면서 다른 모듈들의 요청에 따라 디스크(180)에 저장된 인덱스, 레코드 또는 카탈로그에 대한 로그 정보를 담은 페이지들을 버퍼에 적재시키거나 버퍼(160)에 적재된 페이지를 디스크(180)에 저장한다. 디스크(180)에서 데이터 페이지들을 읽거나 기록하는 작업은 저장 매니저(170)에 의해 수행될 수 있다.
버퍼(160)는 메모리의 일부로서 로그 정보 관리 시스템이 확보하여 전용하는 공간이다. 버퍼(160)에는 로그 정보가 기록되며 도 2에서는 이러한 로그 정보의 예로서 로그 레코드를 도시하고 있다.
로그 레코드(200)는 로그 헤더(410), 이전 데이터 이미지(420) 그리고 갱신 데이터 이미지(430)를 포함한다.
로그 헤더(410)는 로그 시퀀스 번호(Log Sequence Number, 이하, 'LSN'), 트랜잭션 식별 정보, 이전 LSN 정보, 페이지 식별 정보, 오프셋 정보, 데이터 길이 정보 등을 포함한다.
LSN은 해당 로그 레코드를 식별하는 정보이고, 트랜잭션 식별 정보는 해당 로그 레코드가 의미하는 변경을 발생시킨 트랜잭션의 식별 정보이다. 이전 LSN 정보는 트랜잭션 식별 정보가 가리키는 트랜잭션 내에서 해당 로그 직전에 발생시킨 로그 레코드의 식별 정보이다. 페이지 식별 정보는 해당 로그 레코드가 담고 있는 변경 작업이 어느 페이지에 대해 행해졌는지를 나타내며, 오프셋(Offset) 정보는 페이지 식별 정보에 의해 식별되는 페이지의 어느 위치부터 데이터 변경이 발생했는지를 나타내고, 데이터 길이 정보는 변경된 데이터의 크기를 나타내는 정보이다.
이전 데이터 이미지(420)는 변경되지 이전의 데이터 값을, 갱신 데이터 이미지(430)는 변경된 이후의 데이터 값을 나타낸다.
버퍼 매니저(150)는 디스크(180)로부터 페이지 단위로 데이터를 읽어 들이기 때문에 버퍼(160)도 마찬가지로 페이지 단위로 분할되어 관리된다.
저장 매니저(170)는 버퍼 매니저(150)의 요청에 따라 디스크(180)의 특정 페이지를 읽어 들여 버퍼(160)에 적재하거나 버퍼(160)의 특정 페이지를 디스크(180)에 기록한다. 또한 저장 매니저(170)는 새로운 페이지가 요청될 때 해당 시점에서 사용되지 않고 있는 디스크 페이지를 데이터 저장용으로 할당하고, 기존의 디스크 페이지를 더 이상 데이터 저장용으로 사용하지 않는 경우에는 해당 디스크 페이지를 빈 디스크 페이지들 중 하나로 관리한다. 저장 매니저(170)는 페이지 사용 현황을 관리하는 역할을 하는 페이지 사용 관리 모듈(Page Usage Management Module)을 더 포함할 수 있다.
어플리케이션(190)은 질의 프로세서(Query Processor) 또는 질의 엔진(Query Engine)으로서 동작할 수 있다. 어플리케이션(190)은 트랜잭션 매니저(110)에게 트 랜잭션의 시작, 철회 또는 종료를 알릴 수 있으며, 트랜잭션의 경계 내, 즉 트랜잭션의 시작과 트랜잭션 종료/철회 사이에서 인덱스/레코드/카탈로그 매니저(140)를 통해 로그 정보를 읽거나 변경할 수 있다.
도 1에 도시된 각 구성 요소간의 동작 과정을 설명하면 다음과 같다.
우선, 어플리케이션(190)이 트랜잭션의 시작을 트랜잭션 매니저(110)에게 요청하면, 트랜잭션 매니저(110)는 새로운 하나의 트랜잭션을 생성하고 생성된 트랜잭션에 대한 정보를 트랜잭션이 종료될 때까지 유지한다.
그리고 나서, 어플리케이션이 인덱스/레코드/카탈로그 매니저(140)에게 데이터 갱신 작업을 요청하면, 인덱스/레코드/카탈로그 매니저(140)는 필요한 페이지를 버퍼 매니저(150)에게 요청하여 버퍼(160) 내에 확보한 후 필요한 갱신 작업을 수행하게 된다. 각 갱신 작업이 수행될 때마다 인덱스/레코드/카탈로그 매니저(140)는 변경 전의 데이터와 변경 후의 데이터에 대한 로그 정보를 생성하여 로그 매니저(130)에게 전달한다. 데이터 갱신 작업에 대한 보다 구체적인 과정은 후술하기로 한다.
어플리케이션(190)은 데이터 갱신 작업이 오류 없이 수행되었다고 판단한 경우 트랜잭션 매니저(110)에게 트랜잭션을 종료하도록 하고, 그렇지 않은 경우에는 트랜잭션을 중단하도록 요청한다.
만일 트랜잭션이 종료하는 경우에 트랜잭션 매니저(110)는 로그 매니저(130)에게 트랜잭션의 종료를 의미하는 로그(이하, 'Commit_Log') 정보를 생성하도록 지시한다. 그리고 나서, 트랜잭션 매니저(110)는 로그 매니저(130)에게 상기 Commit_Log 정보를 포함한 모든 로그 정보들을 디스크(180)에 기록하도록 요청한다. 만일 상기 Commit_Log의 LSN 값보다 작은 LSN 값을 갖는 모든 로그 정보들이 버퍼(160) 내에 있는 경우, 로그 매니저(130)는 버퍼 매니저(150)에게 상기 로그 정보들을 디스크(180)의 로그 파일에 기록하도록 요청한다.
만약 어플리케이션(190)이 트랜잭션을 중단하기로 결정한 경우에는 트랜잭션 매니저(110)가 복구 매니저(120)에게 트랜잭션의 철회를 요청한다. 복구 매니저(120)는 해당 트랜잭션 내에서 이미 변경한 데이타 값들을 복구하기 위해서 이전 데이터 값을 가지고 있는 로그 정보들을 로그 매니저(130)에게 요청한다. 상기 요청은 버퍼 매니저(150)와 저장 매니저(170)에게 차례로 전달되어 처리된다.
그리고 나서, 복구 매니저(120)는 이전 값으로 복구해야 할 데이터 페이지들을 버퍼 매니저(150)에게 요청하고, 버퍼 매니저(150)는 요청된 페이지들을 저장 매니저(170)를 이용하여 버퍼(160)에 읽어들인다. 복구 매니저(120)는 로그 매니저(130)에게 요청한 로그 정보를 참조하여 변경이 발생한 부분을 찾아 이전 데이터 값(before image)로 복원한다.
트랜잭션이 종료되거나 철회된 후, 트랜잭션 매니저(110)는 해당 트랜잭션의 정보를 트랜잭션 테이블에서 제거한다.
한편, 어플리케이션(190)이 인덱스/레코드/카탈로그 매니저(140)에게 데이터 갱신을 요청하는 경우에 발생하는 동작 과정을 구체적으로 설명하도록 한다.
인덱스/레코드/카탈로그 매니저(140)는 데이터 갱신이 물리적으로 디스크(180)에 미치는 영향을 파악하여 디스크(180) 내의 어느 디스크 페이지를 수정해야 할 지를 결정한다.
인덱스/레코드/카탈로그 매니저(140)는 어플리케이션(190)으로부터 요청된 갱신 작업이 디스크 페이지의 해제인지('delete' 모드), 새로운 페이지에 데이터를 기록하는 것인지('insert' 모드) 또는 기존 페이지에 기록된 데이터 값의 변경인지('modify' 모드)를 판단한다.
'delete' 모드인 경우, 버퍼 매니저(150)는 지정된 디스크 페이지가 버퍼(160) 내에 있는 경우 해당 페이지를 버퍼(160)에서 제거한다. 그리고 나서, 버퍼 매니저(150)는 지정된 디스크 페이지의 해제를 저장 매니저(170)에게 요청하며, 저장 매니저(170)는 해당 페이지를 더 이상 사용하지 않는 페이지로 분류한다. 이 때, 디스크 페이지의 사용에 변경이 발생하였으므로, 저장 매니저(170)는 변경 내역에 대한 로그 정보를 생성하여 로그 매니저(130)에게 전달한다.
'insert' 모드인 경우, 버퍼 매니저(150)는 저장 매니저(170)에게 새로운 페이지를 할당해 줄 것을 요청한다. 저장 매니저(170)가 새로운 페이지를 할당한 후 디스크 페이지 사용의 변경 내역에 대한 로그 정보를 생성하여 로그 매니저(130)에게 전달한다. 그리고 나서, 저장 매니저(170)는 요청된 디스크 페이지를 버퍼 매니저(150)가 지정한 버퍼(160) 공간에 복사한 후, 인덱스/레코드/카탈로그 매니저(140)는 해당 페이지에 대한 데이터 값의 삽입(insertion)을 수행하고, 이에 대한 로그 정보를 발생시켜 로그 매니저(130)에게 전달한다. 
'modify' 모드인 경우 인덱스/레코드/카탈로그 매니저(140)는 변경할 디스크 페이지를 버퍼 매니저(150)에게 요청한다. 버퍼 매니저(150)는 해당 디스크 페이지 가 버퍼(160)에 올라와 있는지 여부를 검사한다. 만일 데이터 값을 갱신할 페이지가 이미 버퍼(160) 내에 존재하면 인덱스/레코드/카탈로그 매니저(140)는 해당 페이지에 대한 데이터 값의 변경을 수행한다.
그러나, 만일 데이터 값을 갱신할 페이지가 버퍼(160) 내에 존재하지 않는 경우에는 저장 매니저(170)가 요청된 디스크 페이지를 버퍼 매니저(150)가 지정한 버퍼(160)의 빈 공간에 복사한다. 만일 이 경우 사용 가능한 빈 공간이 없는 경우에 버퍼 매니저(150)는 적절한 페이지를 선정하여 디스크(180)로 내려보내고 버퍼(160) 내에 빈 공간을 확보한다. 그리고 나서, 저장 매니저(170)가 요청된 디스크 페이지를 버퍼 매니저(150)가 지정한 버퍼(160)의 빈 공간으로 복사한다. 그리고 나서, 인덱스/레코드/카탈로그 매니저(140)는 해당 페이지에 대한 데이터 값의 변경을 수행하고, 데이터 값 변경에 대한 로그 정보를 발생시켜 로그 매니저(130)에게 전달한다.
한편, 데이터베이스에서는 로그 레코드의 대량 삽입이나 인덱스의 생성시 많은 페이지들이 신규로 할당되며 할당된 페이지들에 대한 데이터 값이 변경된다. 그런데 위와 같은 종래의 로그 정보 관리 시스템에서는 모든 데이터 값의 변경에 대해서 이전 데이터 이미지(Before Image)와 갱신 데이터 이미지(After Image)가 로그 정보로 남게 된다. 이러한 특성 때문에 어떤 페이지가 인덱스, 레코드 또는 카탈로그 정보를 저장하기 위한 페이지로 새로 할당된 후에 페이지 전체에 대하여 새로운 데이터 값들이 쓰여지게 되면 종래 기술에서는 헤더 정보를 무시한다고 하더라도 새로 할당된 페이지 크기의 2배에 달하는 로그 정보가 발생한다. 즉, N개의 데이터 페이지가 신규 할당된 후 각 페이지 전체에 걸쳐서 값이 쓰여질 때 2N 개의 페이지에 달하는 로그 정보가 발생하게 되는 것이다. 그런데, 한 번 생성된 로그 정보는 모두 트랜잭션이 완료되기 이전에 디스크에 기록되어야 하므로, 디스크의 입출력 과정에서 로그 정보 관리 시스템의 성능을 저하시킬 수 있다. 특히 대량의 레코드 삽입 작업이 빠르게 처리되어야 할 시스템에서는 큰 문제가 될 수도 있다.
따라서, 신규로 할당된 데이터 페이지에 관하여 발생하는 로그 정보의 크기를 최소화함으로써 대량의 레코드 삽입 또는 새로운 인덱스 생성 작업이 발생하더라도 시스템의 성능이 저하되는 것을 방지할 필요가 생기게 되었다.
본 발명은 트랜잭션 발생 시 신규 할당 페이지에 대한 로그 정보를 최소화함으로써 대량의 레코드 삽입 또는 인덱스 생성 작업에 대한 응답 시간을 단축하여 로그 정보 관리 시스템의 성능을 개선하는 것을 목적으로 한다.
본 발명의 목적은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 로그 정보 관리 시스템은 갱신되는 페이지가 새로 할당되는 페이지인지 여부를 판단하는 인덱스/레코드/카탈로그 관리 모듈과, 자유 페이지 목록과 비완료 자유 페이지 목록을 관리하고, 상기 갱신되는 페이지가 새로 할당되는 페이지인 경우 상기 자유 페이지 목 록 또는 상기 비완료 자유 페이지 목록으로부터 신규 페이지를 할당하는 저장 관리 모듈 및 상기 신규 페이지에 대응하는 버퍼 페이지에 대한 식별 정보를 설정하는 버퍼 관리 모듈을 포함하며, 상기 버퍼 페이지에 대한 데이터 값 변경에 대해서는 로그 정보가 발생되지 않는다.
또한, 상기 목적을 달성하기 위하여, 본 발명의 일 실시예에 따른 로그 정보 관리 방법은 갱신되는 페이지가 새로 할당되는 페이지인지 여부를 판단하는 (a) 단계와, 상기 갱신되는 페이지가 새로 할당되는 페이지인 경우 자유 페이지 목록 또는 비완료 자유 페이지 목록으로부터 신규 페이지를 할당하는 (b) 단계 및 상기 신규 페이지에 대응하는 버퍼 페이지에 대한 식별 정보를 설정하는 (c) 단계를 포함하며, 상기 버퍼 페이지에 대한 데이터 값 변경에 대해서는 로그 정보가 발생되지 않는다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
이하, 본 발명의 실시예들에 의하여 로그 정보 관리 시스템 및 방법을 설명 하기 위한 블록도 또는 처리 흐름도에 대한 도면들을 참고하여 본 발명에 대해 설명하도록 한다. 이 때, 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑제되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있 다. 또, 몇 가지 대체 실행 예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
도 3은 본 발명의 일 실시예에 따른 로그 정보 관리 시스템의 구성을 나타내는 블록도이다.
도 3을 참조하면, 로그 정보 관리 시스템(300)은 트랜잭션 관리 모듈(310), 복구 관리 모듈(320), 로그 관리 모듈(330), 인덱스/레코드/카탈로그 관리 모듈(340), 버퍼 관리 모듈(350), 버퍼 모듈(360), 저장 관리 모듈(370), 디스크 모듈(380) 그리고 어플리케이션(390)을 포함한다. 여기에서, 버퍼 모듈(360)은 데이터 버퍼(362)와 로그 버퍼(364)를 포함하고, 저장 관리 모듈(370)은 페이지 사용 관리 모듈(page usage management module)(372)을 포함한다.
이 때, 본 발명의 실시예에서 사용되는 '모듈'이라는 용어는 소프트웨어 또는 FPGA또는 ASIC과 같은 하드웨어 구성요소를 의미하며, 모듈은 어떤 역할들을 수행한다. 그렇지만 모듈은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. 모듈은 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 모듈은 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 모듈들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 모듈들로 결합되거나 추가적인 구성요소들과 모듈들로 더 분리될 수 있다. 뿐만 아니라, 구성요소들 및 모듈들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다.
어플리케이션(390)은 질의 프로세서(Query Processor) 또는 질의 엔진(Query Engine)으로서 동작할 수 있다. 어플리케이션(390)은 트랜잭션 관리 모듈(310)에게 트랜잭션의 시작, 철회 또는 종료를 알릴 수 있으며, 트랜잭션의 경계 내, 즉 트랜잭션의 시작과 트랜잭션 종료/철회 사이에서 인덱스/레코드/카탈로그 관리 모듈(140)을 통해 로그 정보를 읽거나 변경할 수 있다.
트랜잭션 관리 모듈(310)은 트랜잭션들의 시작, 종료, 철회 시에 로그 관리 모듈(330)을 이용하여 로그 정보를 남기고, 현재 진행되고 있는 트랜잭션들의 정보를 유지한다.
복구 관리 모듈(320)은 특정 트랜잭션의 철회 시에 로그 관리 모듈(330)을 통하여 로그 정보를 확보한 후 데이터에 행해진 변경을 되돌리는 역할을 담당한다. 특히, 복구 관리 모듈(320)은 로그 정보 관리 시스템(300)이 비정상적으로 종료되었을 때 미완료된 트랜잭션의 영향을 데이터베이스에서 제거하고 완료된 트랜잭션의 수정 사항을 데이터베이스에 반영하여 데이터 일관성을 유지하도록 한다.
로그 관리 모듈(330)은 다른 모듈들에서 발생시킨 데이터베이스에 대한 변경된 로그 정보를 취합하여 버퍼 모듈(360)에 반영하며, 복구 관리 모듈(320)로부터 요청된 로그 정보를 디스크 모듈(380)로부터 읽어서 제공한다.
인덱스/레코드/카탈로그 관리 모듈(340)은 로그 정보 관리 시스템(300)을 구성하는 주요 데이터인 인덱스(Index), 레코드(Record), 카탈로그(Catalog) 정보들을 관리하는 모듈로서, 버퍼 관리 모듈(350)에게 필요한 데이터(인덱스, 레코드, 카탈로그)를 버퍼 모듈(360)에 적재시키고 필요한 값을 읽거나 변경하도록 요청한다. 로그 정보 관리 시스템(300)에서 대부분의 로그 정보들은 인덱스/레코드/카탈로그 관리 모듈(340)에 의해 발생된다.
또한, 인덱스/레코드/카탈로그 관리 모듈(340)은 데이터 값에 대한 갱신이 발생하는 경우 로그 정보를 남기기 전에 갱신이 발생한 페이지가 새로 할당된 페이지인지를 확인한다. 만일 데이터 값에 대한 갱신이 발생한 페이지가 해당 트랜잭션 내에서 새로 할당된 페이지로 판정되면 인덱스/레코드/카탈로그 관리 모듈(340)은 데이터 값이 갱신되었다고 하더라도 이에 대한 로그 정보를 남기지 않는다.
버퍼 관리 모듈(350)은 버퍼 모듈(360)을 관리하면서 다른 모듈들의 요청에 따라 디스크 모듈(380)에 저장된 인덱스, 레코드 또는 카탈로그에 대한 로그 정보를 담은 페이지들을 버퍼 모듈(360)의 데이터 버퍼(362)에 적재시키거나 데이터 버퍼(362)에 적재된 페이지를 디스크 모듈(380)에 저장한다. 디스크 모듈(380)에서 데이터 페이지들을 읽거나 기록하는 작업은 저장 관리 모듈(370)에 의해 수행될 수 있다.
또한, 버퍼 관리 모듈(370)은 로그 관리 모듈(330)의 요청에 따라 페이지 LSN 값으로서 MAX_LSN 값을 갖는 데이터 페이지만을 데이터 버퍼(362)에서 선택하 여 디스크 모듈(380)에 모두 기록한다. 페이지 LSN은 각 페이지를 식별하는 식별 정보로 이해될 수 있다.
 버퍼 모듈(360)은 메모리의 일부로서 로그 정보 관리 시스템(300)이 확보하여 전용하는 공간이다. 버퍼 모듈(360)은 로그 정보가 저장되는 로그 버퍼(364)와 페이지가 저장되는 데이터 버퍼(362)를 포함한다.
저장 관리 모듈(370)은 버퍼 관리 모듈(350)의 요청에 따라 디스크 모듈(380)의 특정 페이지를 읽어 들여 버퍼 모듈(360)에 적재하거나 버퍼 모듈(360)의 특정 페이지를 디스크 모듈(380)에 기록한다. 또한 저장 관리 모듈(370)은 새로운 페이지가 요청될 때 해당 시점에서 사용되지 않고 있는 디스크 페이지를 데이터 저장용으로 할당하고, 기존의 디스크 페이지를 더 이상 데이터 저장용으로 사용하지 않는 경우에는 해당 디스크 페이지를 빈 디스크 페이지들 중 하나로 관리한다. 저장 관리 모듈(370)은 페이지 사용 현황을 관리하는 역할을 하는 페이지 사용 관리 모듈(Page Usage Management Module)(372)을 포함한다.
한편, 저장 관리 모듈(370)은 새로 할당된 페이지를 버퍼 모듈(360)의 데이터 버퍼(362)로 반입할 때 해당 페이지를 자유 페이지 목록(Free Page List)으로부터 할당받은 경우 디스크 모듈(380)로부터 페이지를 읽는 대신 데이터 버퍼(362)에 있는 지정된 버퍼 페이지의 페이지 LSN을 변경하는 작업을 수행한다. 이 때, 자유 페이지(Free Page)란 데이터가 새로 할당가능한 페이지를 의미하고, 자유 페이지 목록(Free Page List)은 이러한 자유 페이지를 관리하는 데이터 구조로서 페이지 사용 관리 모듈(372)에 의해 관리될 수 있다.
또한 데이터 버퍼(362) 내의 임의의 페이지를 디스크 모듈(380)로 반출할 때에는 지정된 버퍼 페이지의 페이지 LSN을 임의의 값으로 변경한 후 기록한다. 이와 같은 디스크 입출력에 관련된 저장 관리 모듈(370)의 동작은 도 7과 도 8에서 구체적으로 설명하도록 한다.
저장 관리 모듈(370)에 포함된 페이지 사용 관리 모듈(372)은 자유 페이지 목록(Free Page List)과 비완료 자유 페이지 목록(Not-Committed Free Page List)를 관리한다. 비완료 자유 페이지 목록은 아직 완료되지 않은 임의의 트랜잭션 내에서 해제된 페이지들의 목록이다. 디스크 페이지에 대한 신규 할당이 요청되면, 페이지 사용 관리 모듈(372)은 먼저 자유 페이지 목록(Free Page List)에서 사용 가능한 자유 페이지를 찾아 할당한다. 만일 자유 페이지 목록에 사용 가능한 자유 페이지가 없을 때에는 비완료 자유 페이지 목록에서 자유 페이지를 찾아 할당하게 된다. 자유 페이지와 비완료 자유 페이지를 갱신하는 방법에 대해서는 도 9에서 구체적으로 설명하도록 한다.
도 4는 본 발명의 일 실시예에 따른 갱신 트랜잭션 과정을 나타내는 플로우 차트이다.
우선, 어플리케이션(390)이 트랜잭션의 시작을 트랜잭션 관리 모듈(310)에게 요청하면, 트랜잭션 관리 모듈(310)은 새로운 하나의 트랜잭션을 생성하고 생성된 트랜잭션에 대한 정보를 트랜잭션이 종료될 때까지 유지한다(S405).
그리고 나서, 어플리케이션(390)이 인덱스/레코드/카탈로그 관리 모듈(340)에게 데이터 갱신 작업을 요청하면, 인덱스/레코드/카탈로그 관리 모듈(340)은 필 요한 페이지를 버퍼 관리 모듈(350)에게 요청하여 버퍼 모듈(360)의 데이터 버퍼(362) 내에 확보한 후 필요한 갱신 작업을 수행하게 된다(S410). 이 때, 갱신이 발생한 페이지들 중 새로 할당되는 데이터 페이지에 대해서는 로그 정보가 발생되지 않는다. 한편, 데이터 버퍼(364)에 적재되는 페이지들은 각 페이지 내부에 페이지 LSN 값을 보유하게 되는데 본 발명에서는 새로 할당되는 페이지에 대해서는 이 페이지 LSN 값을 특정한 값(예를 들어, MAX_LSN 값)으로 설정함으로써 불필요한 로그 정보를 생성하지 않는다. 즉, 인덱스/레코드/카탈로그 관리 모듈(340)은 갱신이 발생한 페이지의 페이지 LSN 값이 MAX_LSN인 경우 로그 정보를 생성하지 않는다. 이 때, 'MAX_LSN'은 해당 로그 정보 관리 시스템에서 생성 가능한 가장 큰 LSN 값을 나타낸다.
데이터 갱신 작업에 대한 보다 구체적인 과정은 도 5에서 설명하기로 한다.
어플리케이션(390)은 데이터 갱신 작업이 오류 없이 수행되었다고 판단한 경우 트랜잭션 관리 모듈(310)에게 트랜잭션을 종료하도록 하고, 그렇지 않은 경우에는 트랜잭션을 중단하도록 요청한다(S415).
어플리케이션(390)이 갱신을 승인할 경우(S415), 해당 트랜잭션에 의해 해제되어 비완료 자유 페이지 목록에 들어 있던 페이지 정보들을 자유 페이지 목록에 반영한다. 본 발명에서는 종래의 방식과는 달리 어떤 트랜잭션 내에서 해제된 페이지들을 바로 자유 페이지 목록에 넣지 않고 별도의 비완료 자유 페이지 목록에서 관리한다. 
그리고 나서, 데이터 버퍼(362)에 들어 있는 데이터 페이지들 중 아직 디스 크 모듈(380)에 기록되지 않은 신규 할당 페이지들(즉, 페이지 LSN 이 MAX_LSN 인 페이지)을 디스크 모듈(380)에 기록한다(S425). 본 발명에서는 신규 할당 페이지들에 대해서 로그 정보를 남기지 않는 대신 트랜잭션이 완료되지 이전에 디스크 모듈(380)에 신규 할당 페이지들을 기록함으로써 트랜잭션 완료 이후에 발생할 수 있는 비정상 종료에도 데이터의 일관성이 유지될 수 있게 된다. 
한편, 신규 할당 페이지들을 디스크 모듈(380)에 페이지 LSN 값이 MAX_LSN인 상태로 기록하게 되면 다른 트랜잭션 내에서 해당 페이지에 대한 갱신을 시도할 때 페이지 LSN을 보고 신규로 할당된 페이지로 오인할 수 있다. 따라서 저장 관리 모듈(370)은 페이지 LSN이 MAX_LSN인 신규 할당 페이지를 디스크 모듈(380)에 기록할 때에는 페이지 LSN을 임의의 다른 값으로 바꾼 후 기록하는 것이 바람직하다.
S425 단계가 수행된 후, 트랜잭션 관리 모듈(310)은 로그 관리 모듈(330)에게 'Commit_Log'를 생성하도록 지시한다(S430). 그리고, 만일 상기 Commit_Log의 LSN 값보다 작은 LSN 값을 갖는 모든 로그 정보들이 로그 버퍼(364) 내에 있는 경우, 로그 관리 모듈(330)은 버퍼 관리 모듈(350)에게 상기 로그 정보들을 디스크 모듈(380)의 로그 파일에 기록하도록 요청한다(S435).
만약 어플리케이션(390)이 데이터 갱신을 승인하지 않는 경우 즉, 트랜잭션을 중단하기로 결정한 경우에는 트랜잭션 관리 모듈(310)은 복구 관리 모듈(320)에게 트랜잭션의 철회를 요청한다. 복구 관리 모듈(320)은 해당 트랜잭션 내에서 이미 변경한 데이타 값들을 복구하기 위해서 이전 데이터 값을 가지고 있는 로그 정보들을 로그 관리 모듈(330)에게 요청한다(S445). 상기 요청은 버퍼 관리 모듈 (350)과 저장 관리 모듈(370)에게 차례로 전달되어 처리된다.
그리고 나서, 복구 관리 모듈(320)은 로그 관리 모듈(330)에게 요청한 로그 정보를 참조하여 변경이 발생한 부분을 찾아 이전 데이터 값(before image)으로 복원한다(S450).
트랜잭션이 종료되거나 철회된 후, 트랜잭션 관리 모듈(310)은 해당 트랜잭션의 정보를 트랜잭션 테이블에서 제거한다(S440).
도 5는 본 발명의 일 실시예에 따라 데이터를 갱신하는 과정을 구체적으로 나타내는 플로우 차트이다.
우선, 어플리케이션(390)은 인덱스/레코드/카탈로그 관리 모듈(340)에게 데이터 갱신을 요청한다(S505). 그리고 나서, 인덱스/레코드/카탈로그 관리 모듈(340)은 상기 요청된 갱신이 디스크 페이지를 해제하는 갱신이라고 판단한 경우에는(S510), 버퍼 관리 모듈(350)이 해당하는 디스크 페이지가 데이터 버퍼(362)에 올라와 있는 경우 해당 페이지를 제거하고(S515), 저장 관리 모듈(370)의 페이지 사용 관리 모듈(372)은 해제된 페이지 번호를 비완료 자유 페이지 목록에 삽입한 후, 이 페이지를 해제시킨 트랜잭션이 완료되거나 중단되기 전까지 유지하게 된다. 만일 이 페이지를 해제시킨 트랜잭션이 완료되는 경우 완료된 트랜잭션에 의해 해제되었던 모든 페이지들은 비완료 자유 페이지 목록에서 제거되어 자유 페이지 목록에 삽입된다. 그리고, 트랜잭션이 중단되는 경우에는 중단된 트랜잭션에 의해서 해제되었던 모든 페이지들은 비완료 자유 페이지 목록에서 제거되고 자유 페이지 목록에는 삽입되지 않는다. 이와 같은 방법을 통하여 요청된 디스크 페이지가 해제 된다(S520).
저장 관리 모듈(370)은 페이지 변경에 대한 로그 정보를 생성하여 로그 관리 모듈(330)로 전달하게 된다.
한편, S510 단계에서 요청된 갱신이 디스크 페이지를 해제하는 갱신이 아니라 새로운 페이지 또는 기존 페이지에 대한 데이터 값의 변경이라고 인덱스/레코드/카탈로그 관리 모듈(340)에 의해 판단된 경우에는(S510), 버퍼 관리 모듈(350)은 갱신되는 페이지가 버퍼 모듈(360)에 이미 존재하는지 여부를 검사한다(S530). 만일 갱신되는 페이지가 버퍼 모듈(360)에 이미 존재하는 경우에는 페이지를 갱신하지만(S560), 그렇지 않은 경우에는 버퍼 관리 모듈(350)은 버퍼 모듈(360)에 사용 가능한 버퍼 공간이 있는지 여부를 검사한다(S535).
S535 단계에서 사용 가능한 버퍼 공간이 없는 경우, 디스크 모듈(380)에 기록할 페이지가 선택되고 선택된 페이지에 대한 페이지 LSN이 처리되는데, 이러한 동작을 구체적으로 설명하도록 한다(S540).
우선, 데이터 버퍼(362)에서 선택된 특정한 페이지에 대한 페이지 LSN이 MAX_LSN인 경우에 이는 선택된 페이지가 자유 페이지 목록에 있다가 트랜잭션 내에서 새로 할당된 것을 의미한다. 따라서, 이 경우 저장 관리 모듈(370)은 선택된 페이지를 디스크 모듈(380)에 기록하기 전에 먼저 페이지 LSN 값을 기설정된 임의의 LSN값으로 변경한다. 이 때, 바람직하게는 변경된 LSN 값은 시스템 내에서 발생한 가장 큰 LSN 값이다. 만일 데이터 버퍼(362)에서 선택된 특정한 페이지에 대한 페이지 LSN이 MAX_LSN이 아닌 경우에, 저장 관리 모듈(370)은 선택된 페이지의 페이 지 LSN을 변경시키지 않고 디스크 모듈(380)에 기록한다.
위와 같은 방법을 통하여 버퍼 모듈(360)에 사용 가능한 버퍼 공간이 마련되면, 버퍼 관리 모듈(350)은 요청된 페이지가 새로 할당되어야 할 페이지인지를 검사한다(S545).
만일, 요청된 페이지가 새로 할당되어야 할 페이지가 아닌 경우에는 저장 관리 모듈(372)은 요청된 디스크 페이지를 버퍼 관리 모듈(350)이 지정한 데이터 버퍼(362)에 복사하고(S555), 인덱스/레코드/카탈로그 관리 모듈(340)은 해당 페이지에 대한 데이터 값을 변경을 수행한다(S560).
만일, S545 단계에서 요청된 페이지가 새로 할당되어야 할 페이지인 경우에는 새로 할당되는 페이지에 대한 처리 동작이 수행되는데(S550), 이하에서 구체적으로 설명하도록 한다.
우선, 페이지 사용 관리 모듈(372)은 자유 페이지 목록(Free Page List) 내에 이용가능한 자유 페이지가 있는 경우에는 자유 페이지 목록 내에서 신규 페이지를 할당하고, 그렇지 않은 경우에는 비완료 자유 페이지 목록에서 페이지를 할당한다.
이 때, 새로 할당된 페이지가 자유 페이지 목록에서 할당된 경우 해당 디스크 페이지가 데이터 버퍼(362)로 적재되어 다시 디스크 모듈(380)에 기록되기 전까지는 해당 페이지에 대한 모든 데이터 값 변경에 대해서는 로그 정보를 발생시키지 않는다. 그리고, 저장 관리 모듈(370)은 디스크 모듈(380)에서 해당 디스크 페이지를 읽지 않으며, 버퍼 관리 모듈(350)은 지정된 버퍼 페이지에 대한 페이지 LSN 값 을 이 페이지가 자유 페이지 목록에서 신규 할당된 페이지임을 의미하는 MAX_LSN 값으로 설정한다. 
만일 자유 페이지 목록 내에 자유 페이지가 하나도 없어서 신규 할당된 페이지가 비완료 자유 페이지 목록에서 할당된 경우에는 디스크 모듈(380)에서 해당 페이지를 지정된 버퍼 공간으로 읽어들인다.
 S560 단계에서 페이지가 갱신되면, 갱신된 페이지에 대한 로그 정보가 처리된다(S565).
종래 기술에서는 어떤 페이지에 대한 데이터 값이 갱신될 때마다 반드시 로그 정보가 생성되었으나, 본 발명에서는 인덱스/레코드/카탈로그 관리 모듈(340)이 S560 단계에서 데이터 값을 갱신한 후, 해당 페이지에 대한 로그 정보 생성이 필요한지 여부를 판단한다. 보다 구체적으로 인덱스/레코드/카탈로그 관리 모듈(340)은 버퍼 모듈(360)에 올라와 있는 해당 페이지의 페이지 LSN 값이 MAX_LSN인 경우에는 로그 정보를 생성하지 않게 된다.
도 6은 본 발명의 일 실시예에 따라 디스크 페이지를 새로 할당하는 과정을 나타내는 플로우 차트이다.
도 6을 참조하면, 페이지 사용 관리 모듈(372)은 자유 페이지 목록(Free Page List)이 비어 있는지 여부를 검사하고(S610), 만일 비어 있는 경우에는 비완료 자유 페이지 목록(Not-Committed Free Page List)에서 첫번째 페이지를 선택하여 할당한다(S620). 만일 비어 있지 않은 경우에는 자유 페이지 목록(Free Page List)에서 첫번째 페이지를 선택하여 할당한다(S630).
도 7은 본 발명의 일 실시예에 따라 새로 할당된 디스크 페이지를 버퍼에 반입하는 과정을 나타내는 플로우 차트이다.
저장 관리 모듈(370)은 요청받은 페이지가 새로 할당되는 페이지인지 검사하고(S710), 만일 새로 할당되는 페이지인 경우에는 저장 관리 모듈(370)은 새로 할당된 페이지가 자유 페이지 목록에서 할당된 것인지 검사하고(S720), 만일 자유 페이지 목록에서 할당된 페이지인 경우에는 데이터 버퍼(362)의 해당 공간(즉, 디스크 페이지를 적재할 버퍼 모듈(360) 내의 버퍼 페이지)의 페이지 LSN을 MAX_LSN으로 설정함으로써(S730) 새로 할당되는 디스크 페이지를 버퍼 모듈(360)로 반입하는 과정이 종료한다.
그러나, S710 단계에서 새로 할당되는 페이지가 아니거나 S720 단계에서 새로 할당된 페이지가 자유 페이지 목록에서 할당된 것이 아닌 경우(예컨대, 새로 할당된 페이지가 비완료 자유 페이지 목록에서 할당받은 신규 페이지인 경우)에는 저장 관리 모듈(370)은 해당 디스크 페이지를 디스크 모듈(380)에서 읽어들인 후 버퍼 모듈(360)의 데이터 버퍼(362)로 적재한다.
도 7과 같은 동작을 수행하기 위해 저장 관리 모듈(370)은 버퍼 모듈(360)을 관리하는 버퍼 관리 모듈(350)과 통신을 수행하게 된다.
도 8은 본 발명의 일 실시예에 따라 버퍼 내의 페이지를 디스크로 반출하는 과정을 나타내는 플로우 차트이다.
도 8을 참조하면, 저장 관리 모듈(370)은 디스크 모듈(380)에 기록할 페이지의 페이지 LSN이 MAX_LSN인지를 검사한다(S810). 이 때, MAX_LSN인 경우에는 페이 지 LSN을 기설정된 LSN으로 변경하고(S820), 버퍼 모듈(360)의 데이터 버퍼(362) 내에서 요청된 버퍼 페이지를 디스크 모듈(380)에 기록한다(S830). 만일, S810 단계에서 MAX_LSN이 아닌 경우에는 버퍼 모듈(360)의 데이터 버퍼(362) 내에서 요청된 버퍼 페이지를 디스크 모듈(380)에 기록한다(S830).
도 8과 같은 동작을 수행하기 위해 저장 관리 모듈(370)은 버퍼 모듈(360)을 관리하는 버퍼 관리 모듈(350)과 통신을 수행하게 된다.
도 9는 본 발명의 일 실시예에 따라 자유 페이지 목록(Free Page List)과 비완료 자유 페이지 목록(Not-Committed Free Page List)의 갱신 과정을 나타내는 예시도로서 이러한 갱신 과정은 저장 관리 모듈(370)의 페이지 사용 관리 모듈(372)에 의해 수행될 수 있다.
우선 처음에는 자유 페이지 목록에 5개의 자유 페이지들이 있고, 비완료 자유 페이지 목록은 비어 있는 것을 나타내고 있다(S910). 비완료 자유 페이지 목록은 비어 있다는 것은 현재 완료되지 않은 트랜잭션에서 해제한 디스크 페이지는 없다는 것을 의미한다.
만일, 페이지 #1과 페이지 #3이 해제되면 페이지 #1과 페이지 #3은 비완료 자유 페이지 목록에 들어가고, 자유 페이지 목록에는 변화가 없다(S920).
다음으로, 5개의 디스크 페이지들이 할당되면 먼저 자유 페이지 목록에 있는 페이지들부터 할당되므로 자유 페이지 목록은 비게 되며, 비완료 자유 페이지 목록에는 변화가 없다(S930).
다음으로, 1개의 페이지가 더 할당되면 이제는 비완료 자유 페이지 목록에서 페이지 #3을 할당한다. 그 결과 비완료 자유 페이지 목록에는 페이지 #1만이 자유 페이지로서 남게 된다(S940).
마지막으로 페이지 #1과 페이지 #3을 해제했던 트랜잭션이 완료된 후에는 비완료 자유 페이지 목록의 자유 페이지들이 자유 페이지 목록에 병합된다. 그 결과 자유 페이지 목록은 비완료 자유 페이지 목록에 있던 페이지 #1을 갖게 되고, 비완료 자유 페이지 목록은 비어 있게 된다(S950).
도 10은 본 발명의 일 실시예에 따른 실험 결과를 나타내는 그래프로서, 3000개의 레코드를 새로 삽입하였을 때의 처리 속도를 비교하고 있다.
이 때, 하나의 레코드는 11개의 필드(field)로 구성되고 11개의 필드(field) 중 9개의 필드를 인덱스(index)로 하였으며, 하나의 레코드 크기는 210바이트(bytes)로 하였다.
도 10을 참조하면, 종래 기술을 따를 경우에는 3000개의 레코드를 새로 삽입하는 경우 약 25초(second)가 소요되었으나 본 발명을 따를 경우에는 약 10초(second)가 소요되어 삽입 성능이 약 2.5배 향상되었음을 알 수 있다. 또한, 본 발명에 따라 로그 정보의 양이 감소하였으므로 복구 시 소요 시간도 약 1/50로 감소되었다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이 며 한정적이 아닌 것으로 이해해야만 한다.
본 발명을 따르게 되면, 로그 정보 관리 시스템에서 대량으로 신규 페이지가 할당되더라도 할당된 페이지에 대한 로그 정보를 최소화할 수 있으므로 디스크의 쓰기 비용(wirte cost)을 감소시킬 수 있는 효과가 있다.
또한 본 발명을 따르게 되면, 새로 할당된 페이지를 디스크에서 읽어들이지 않으므로 디스크의 읽기 비용(read cost)을 감소시킬 수 있는 효과가 있다.
또한, 본 발명을 따르게 되면, 새로 할당된 페이지에 관한 로그 정보가 최소화되기 때문에 데이터를 복구하는 경우에도 응답 속도가 빨라지는 효과가 있다.

Claims (13)

  1. 갱신되는 페이지가 새로 할당되는 페이지인지 여부를 판단하는 인덱스/레코드/카탈로그 관리 모듈;
    자유 페이지 목록과 비완료 자유 페이지 목록을 관리하고, 상기 갱신되는 페이지가 새로 할당되는 페이지인 경우 상기 자유 페이지 목록 또는 상기 비완료 자유 페이지 목록으로부터 신규 페이지를 할당하는 저장 관리 모듈; 및
    상기 신규 페이지에 대응하는 버퍼 페이지에 대한 식별 정보를 설정하는 버퍼 관리 모듈을 포함하며,
    상기 버퍼 페이지에 대한 데이터 값 변경에 대해서는 로그 정보가 발생되지 않는 로그 정보 관리 시스템.
  2. 제1항에 있어서,
    상기 식별 정보는 페이지 로그 시퀀스 번호를 포함하는 로그 정보 관리 시스템.
  3. 제1항에 있어서,
    상기 버퍼 관리 모듈은 상기 식별 정보를 생성 가능한 가장 큰 로그 시퀀스 번호로 설정하는 로그 정보 관리 시스템.
  4. 제1항에 있어서,
    상기 신규 페이지는 상기 자유 페이지 목록으로부터 할당되는 로그 정보 관리 시스템.
  5. 제1항에 있어서,
    상기 신규 페이지가 상기 비완료 자유 페이지 목록에서 할당된 경우에는 상기 저장 관리 모듈이 디스크로부터 해당 페이지를 지정된 버퍼 공간으로 읽어 들이는 로그 정보 관리 시스템.
  6. 제1항에 있어서,
    상기 버퍼 관리 모듈에 의해 관리되는 버퍼에서 임의의 페이지에 대한 페이지 로그 시퀀스 번호가 기설정된 특정한 값에 해당하는 경우 상기 저장 관리 모듈은 상기 페이지를 디스크에 기록하기 전에 상기 페이지 로그 시퀀스 번호의 값을 기설정된 임의의 로그 시퀀스 번호로 변경하는 로그 정보 관리 시스템.
  7. 제1항에 있어서,
    상기 인덱스/레코드/카탈로그 관리 모듈(340)은 상기 버퍼 관리 모듈에 의해 관리되는 버퍼에 있는 페이지에 대한 페이지 로그 시퀀스 번호가 기설정된 특정한 값에 해당하는 경우에 데이터 값이 갱신된 페이지에 대한 로그 정보를 생성하지 않는 로그 정보 관리 시스템.
  8. 갱신되는 페이지가 새로 할당되는 페이지인지 여부를 판단하는 (a) 단계;
    상기 갱신되는 페이지가 새로 할당되는 페이지인 경우 자유 페이지 목록 또는 비완료 자유 페이지 목록으로부터 신규 페이지를 할당하는 (b) 단계; 및
    상기 신규 페이지에 대응하는 버퍼 페이지에 대한 식별 정보를 설정하는 (c) 단계를 포함하며,
    상기 버퍼 페이지에 대한 데이터 값 변경에 대해서는 로그 정보가 발생되지 않는 로그 정보 관리 방법.
  9. 제8항에 있어서,
    상기 식별 정보는 페이지 로그 시퀀스 번호를 포함하는 로그 정보 관리 방법.
  10. 제8항에 있어서,
    상기 (c) 단계는 상기 식별 정보를 생성 가능한 가장 큰 로그 시퀀스 번호로 설정하는 단계를 포함하는 로그 정보 관리 방법.
  11. 제8항에 있어서,
    상기 (b) 단계는 상기 신규 페이지가 상기 비완료 자유 페이지 목록에서 할당된 경우에 상기 할당된 신규 페이지가 디스크로부터 지정된 버퍼 공간으로 적재 되는 단계를 포함하는 로그 정보 관리 방법.
  12. 제8항에 있어서,
    상기 버퍼 페이지에 대한 페이지 로그 시퀀스 번호가 기설정된 특정한 값에 해당하는 경우 상기 버퍼 페이지를 디스크에 기록하기 전에 상기 페이지 로그 시퀀스 번호의 값을 기설정된 임의의 로그 시퀀스 번호로 변경하는 (d) 단계를 더 포함하는 로그 정보 관리 방법.
  13. 제8항에 있어서,
    상기 버퍼 페이지에 대한 페이지 로그 시퀀스 번호가 기설정된 특정한 값에 해당하는 경우에 상기 버퍼 페이지에 대한 로그 정보를 생성하지 않는 (d) 단계를 더 포함하는 로그 정보 관리 방법.
KR1020060002867A 2006-01-10 2006-01-10 트랜잭션 처리를 위한 로그 정보 관리 시스템 및 방법 KR100781515B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020060002867A KR100781515B1 (ko) 2006-01-10 2006-01-10 트랜잭션 처리를 위한 로그 정보 관리 시스템 및 방법
US11/640,287 US7849060B2 (en) 2006-01-10 2006-12-18 System and method for managing log information for transaction
EP07100135A EP1806668B1 (en) 2006-01-10 2007-01-04 System and method for managing log information for transaction
JP2007000560A JP4916892B2 (ja) 2006-01-10 2007-01-05 トランザクション処理のためのログ情報管理システムおよび方法
CNB2007100015990A CN100511235C (zh) 2006-01-10 2007-01-09 管理事务处理的日志信息的系统和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060002867A KR100781515B1 (ko) 2006-01-10 2006-01-10 트랜잭션 처리를 위한 로그 정보 관리 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20070074836A true KR20070074836A (ko) 2007-07-18
KR100781515B1 KR100781515B1 (ko) 2007-12-03

Family

ID=37983501

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060002867A KR100781515B1 (ko) 2006-01-10 2006-01-10 트랜잭션 처리를 위한 로그 정보 관리 시스템 및 방법

Country Status (5)

Country Link
US (1) US7849060B2 (ko)
EP (1) EP1806668B1 (ko)
JP (1) JP4916892B2 (ko)
KR (1) KR100781515B1 (ko)
CN (1) CN100511235C (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8296270B2 (en) 2009-10-28 2012-10-23 Samsung Electronics Co., Ltd. Adaptive logging apparatus and method

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8140483B2 (en) 2007-09-28 2012-03-20 International Business Machines Corporation Transaction log management
US8108356B2 (en) * 2007-12-24 2012-01-31 Korea Advanced Institute Of Science And Technology Method for recovering data in a storage system
JP5250871B2 (ja) * 2008-12-24 2013-07-31 インターナショナル・ビジネス・マシーンズ・コーポレーション ムラ評価装置、ムラ評価方法、ディスプレイ検査装置、およびプログラム
US9612954B2 (en) * 2008-12-31 2017-04-04 Micron Technology, Inc. Recovery for non-volatile memory after power loss
US8266126B2 (en) * 2010-03-24 2012-09-11 Matrixx Software, Inc. System with multiple conditional commit databases
US9195578B2 (en) * 2012-08-24 2015-11-24 International Business Machines Corporation Systems, methods and computer program products memory space management for storage class memory
US9478271B2 (en) * 2013-03-14 2016-10-25 Seagate Technology Llc Nonvolatile memory data recovery after power failure
US20170235781A1 (en) * 2016-02-16 2017-08-17 TmaxData Co., Ltd. Method, server and computer program stored in computer readable medium for managing log data in database
CN108446203A (zh) * 2018-03-20 2018-08-24 万帮充电设备有限公司 服务器事务日志处理方法及装置
US20200050692A1 (en) * 2018-08-10 2020-02-13 Microsoft Technology Licensing, Llc Consistent read queries from a secondary compute node
CN115328878B (zh) * 2022-10-17 2023-04-07 成都卫士通信息产业股份有限公司 日志数据存储系统、方法、设备及介质

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01261745A (ja) 1988-04-08 1989-10-18 Internatl Business Mach Corp <Ibm> データ・ベース・レコードのトランザクシヨンの回復方法
JPH04148250A (ja) 1990-10-08 1992-05-21 Toshiba Corp オンライントランザクションシステム
JP2631185B2 (ja) * 1993-02-19 1997-07-16 日本電信電話株式会社 データベースバックアップ方法
US5455946A (en) * 1993-05-21 1995-10-03 International Business Machines Corporation Method and means for archiving modifiable pages in a log based transaction management system
JPH07175700A (ja) * 1993-12-20 1995-07-14 Fujitsu Ltd データベース管理方式
JPH08249217A (ja) * 1995-03-15 1996-09-27 Toshiba Corp キャッシュ管理装置
AU6500596A (en) * 1995-07-20 1997-02-18 Novell, Inc. Transaction log management in a disconnectable computer and network
US5903898A (en) * 1996-06-04 1999-05-11 Oracle Corporation Method and apparatus for user selectable logging
US6738790B1 (en) 1997-10-31 2004-05-18 Oracle International Corporation Approach for accessing large objects
US6185663B1 (en) * 1998-06-15 2001-02-06 Compaq Computer Corporation Computer method and apparatus for file system block allocation with multiple redo
JP3763992B2 (ja) * 1999-03-30 2006-04-05 富士通株式会社 データ処理装置及び記録媒体
JP2000339183A (ja) * 1999-05-25 2000-12-08 Nec Corp ワークエリアのデータセット管理方式
KR20010055981A (ko) * 1999-12-13 2001-07-04 오길록 안전기억장치를 이용한 주기억장치 상주형 데이터베이스회복 방법
US6571259B1 (en) * 2000-09-26 2003-05-27 Emc Corporation Preallocation of file system cache blocks in a data storage system
KR20020030223A (ko) 2000-10-16 2002-04-24 주식회사 알라딘소프트 주기억장치 데이터베이스 시스템에서 고성능 트랜잭션을지원하기 위한 로깅 및 회복 방법
KR20020037399A (ko) 2000-11-14 2002-05-21 구자홍 데이터베이스 관리시스템의 트랜잭션처리방법
US20020103815A1 (en) 2000-12-12 2002-08-01 Fresher Information Corporation High speed data updates implemented in an information storage and retrieval system
CA2370601A1 (en) * 2002-02-05 2003-08-05 Ibm Canada Limited-Ibm Canada Limitee Optimizing log usage for temporary objects
US6721765B2 (en) 2002-07-02 2004-04-13 Sybase, Inc. Database system with improved methods for asynchronous logging of transactions
JP4139642B2 (ja) * 2002-07-29 2008-08-27 株式会社日立製作所 データベース管理方法およびシステム
US8266609B2 (en) * 2005-12-07 2012-09-11 Microsoft Corporation Efficient placement of software transactional memory operations around procedure calls

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8296270B2 (en) 2009-10-28 2012-10-23 Samsung Electronics Co., Ltd. Adaptive logging apparatus and method

Also Published As

Publication number Publication date
CN100511235C (zh) 2009-07-08
US20070174355A1 (en) 2007-07-26
JP2007188497A (ja) 2007-07-26
CN101000630A (zh) 2007-07-18
JP4916892B2 (ja) 2012-04-18
EP1806668A2 (en) 2007-07-11
KR100781515B1 (ko) 2007-12-03
EP1806668A3 (en) 2008-06-18
EP1806668B1 (en) 2011-07-06
US7849060B2 (en) 2010-12-07

Similar Documents

Publication Publication Date Title
KR100781515B1 (ko) 트랜잭션 처리를 위한 로그 정보 관리 시스템 및 방법
JP3763992B2 (ja) データ処理装置及び記録媒体
WO2021027956A1 (zh) 一种基于区块链系统的交易处理方法及装置
CN110825752B (zh) 基于无碎片回收的数据库多版本并发控制系统
KR20110097937A (ko) 내구성 강화 메모리 디바이스
CN113377292B (zh) 一种单机存储引擎
CN110597663A (zh) 一种事务处理方法及装置
CN115408149A (zh) 一种时序存储引擎内存设计及分配方法及装置
US10180901B2 (en) Apparatus, system and method for managing space in a storage device
US20120317384A1 (en) Data storage method
US20120185451A1 (en) Data processing method and system for database management system
US20110099347A1 (en) Managing allocation and deallocation of storage for data objects
CN114780489B (zh) 一种实现分布式块存储底层gc的方法及装置
CN116501736A (zh) 一种数据库延迟回放的控制方法以及控制系统
US10185653B2 (en) Integrated systems and methods for the transactional management of main memory and data storage
CN114995998A (zh) 一种准实时记账方法、装置、存储介质
CN114328018A (zh) 快照的创建方法、计算设备及存储介质
RU2647648C1 (ru) Способ организации хранения исторических дельт записей
JPS58223857A (ja) 計算装置の動作方法
CN112559457A (zh) 数据访问方法及装置
JPH0816881B2 (ja) データベース更新方法
US20210034580A1 (en) Method, apparatus and computer program product for maintaining metadata
CN113625825B (zh) 一种基于线程逻辑时钟的事务内存的实现方法
KR100678926B1 (ko) 로그 정보 관리 시스템 및 방법
JP2822869B2 (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
G170 Publication of correction
FPAY Annual fee payment

Payment date: 20121016

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20131022

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20141022

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20151020

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20161018

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20171019

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20181024

Year of fee payment: 12