KR20010050667A - 효과적인 파일 갱신 처리 및 복구 처리를 이용하는트랜잭션 처리 시스템 - Google Patents

효과적인 파일 갱신 처리 및 복구 처리를 이용하는트랜잭션 처리 시스템 Download PDF

Info

Publication number
KR20010050667A
KR20010050667A KR1020000056689A KR20000056689A KR20010050667A KR 20010050667 A KR20010050667 A KR 20010050667A KR 1020000056689 A KR1020000056689 A KR 1020000056689A KR 20000056689 A KR20000056689 A KR 20000056689A KR 20010050667 A KR20010050667 A KR 20010050667A
Authority
KR
South Korea
Prior art keywords
file
transaction
update
uncommitted
memory device
Prior art date
Application number
KR1020000056689A
Other languages
English (en)
Other versions
KR100398753B1 (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 니시무로 타이죠
Publication of KR20010050667A publication Critical patent/KR20010050667A/ko
Application granted granted Critical
Publication of KR100398753B1 publication Critical patent/KR100398753B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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
    • 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
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Landscapes

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

Abstract

본 발명에 따르면, 병렬로 다수의 트랜잭션 동작에 의한 파일 갱신 처리 뿐만 아니라 오류 발생과 동시에 복구 처리를 용이하고 효과적으로 실현할 수 있는 트랜잭션 처리 시스템이 개시된다. 트랜잭션 처리 시스템에 있어서, 버퍼영역상으로 독출되는 하나의 파일에 대해 갱신 처리를 수행하는 다수의 트랜잭션이 실행되고, 그 하나의 파일이 다수의 트랜잭션 간에서 하나의 트랜잭션의 커미트와 동시에 안정된 메모리장치에 기록되며, 여기서 하나의 파일은 그 하나의 트랜잭션에 의해 이루어진 커미트된 갱신의 내용 및 다른 커미트 되지 않은 트랜잭션에 의해 이루어진 커미트 되지 않은 갱신의 내용과, 커미트 되지 않은 갱신을 취소하기 위한 정보를 포함한다.

Description

효과적인 파일 갱신 처리 및 복구 처리를 이용하는 트랜잭션 처리 시스템{TRANSACTION PROCESSING SYSTEM USING EFFICIENT FILE UPDATE PROCESSING AND RECOVERY PROCESSING}
본 발명은 트랜잭션 처리 시스템 및 다수의 트랜잭션이 병렬로 동일한 파일에 대해 억세스를 하는 트랜잭션 처리 방법에 관한 것이다.
일반적으로, 트랜잭션 처리 시스템에 있어서, 처리의 실행은 트랜잭션으로 불리워지는 처리 흐름의 단위로 관리된다. 예컨대, 필요한 처리가 실행되고, 처리 결과가 터미널 장치나 네트워크로부터 수신된 처리 요청에 응답하여 복귀된다. 어떻게 해서든지 활성화되는 처리를 실행하기 위한 이러한 흐름은 트랜잭션으로 언급된다.
개개의 트랜잭션은 그 실행의 처리에서 하나 또는 다수의 파일(또는 데이터베이스)에 의해 기록 및 관리되는 데이터의 갱신을 만든다. 트랜잭션 처리 시스템은 하나 또는 다수의 데이터의 이러한 갱신이 자동적으로 커미트 되거나 어보트되는 것을 보증한다. 즉, 커미트(commit)는 모든 갱신을 동시에 유효하게 하는데 반하여, 어보트(abort)는 모든 갱신을 버림과 더불어 트랜잭션을 실행하기 전의 상태로 되돌아가는 파일의 상태를 설정한다. 더욱이, 트랜잭션 시스템은 또한 트랜잭션이 한번 커미트되면, 트랜잭션이 결코 취소되지 않는다는 것에 의해 갱신이 이루어지는 것을 보증한다.
예컨대 제이. 그레이(J. Gray) 및 에이. 루터(A. Reuter): "Transaction Processing: Concepts and Techniques", Morgan Kaufmann Pulishers, Inc.,에서 알 수 있는 바와 같이, 이미 잘 알려진 이러한 트랜잭션 처리 시스템을 실현하기 위한 다양한 방법이 있다.
트랜잭션 처리 시스템에서 취급이 어려운 경우는 다수의 트랜잭션이 동시에 동일한 파일상의 데이터를 갱신하는 경우이다. 하나의 파일의 갱신이 동시에 하나의 트랜잭션에 대해서만 허용된다면 문제는 야기되지 않는다. 그러나, 동시에 병렬로 다수의 트랜잭션을 처리하는 것에 의해 성능을 개선하기 위해, 동시에 동일한 파일의 다른 부분에서 기록 및 관리되는 데이터의 갱신을 인에이블하는 것이 필요로 된다. 이러한 문제는 또한 파일 보다는 데이터베이스를 이용하는 경우에 야기된다. 이하, 파일을 이용하는 경우가 설명되지만, 데이터베이스를 이용하는 경우도 마찬가지이다.
병렬로 갱신 처리를 수행하기 위한 이러한 트랜잭션 처리 시스템을 실현하기 위해, WAL(Write Ahead Logging)로 불리워지는 구성이 통상적으로 널리 이용되고 있다. 이러한 구성에서, 다수의 트랜잭션이 메모리상의 버퍼에 대해 독출된 파일과 관련하여 갱신이 이루어질 때, 로그 파일(log file)은 어느 파일의 어느 부분이 어느 트랜잭션에 의해 재기록되는가 및 어떻게 재기록되는가를 기록한다. 더욱이, 로그에 기록된 갱신정보가 안정된 메모리장치(예컨대, 하드디스크)에 기록되어 손실되지 않는 것이 보증될때까지, 시간이 제어되어 버퍼상에서 이루어진 갱신이 하드디스크와 같은 메모리 매체상의 오리지날 파일에 대해 다시 기록되지 않게 된다.
WAL구성에 있어서, 모든 갱신 기록은 로그에 기록되어 시스템 오류가 발생될 때, 파일은 로그를 이용함으로써 올바른 상태로 복구될 수 있게 된다. 즉, 오류 발생 후, 시스템이 재활성화될 때, 트랜잭션 처리 시스템은 로그로서 언급되고, 파일에 아직 기록되지 않은 커미트된 트랜잭션에 의해 이루어진 갱신을 올바로 반영한다. 또한, 파일에 미리 기록된 어보트된 트랜잭션에 의해 이루어진 갱신이 있으면, 갱신을 삭제하기 위한 처리가 수행되게 된다. 이러한 복구처리에 의해, 오류가 야기될 때 트랜잭션의 원자성, 내구성, 분리 및 일관성을 보증할 수 있게 된다.
통상적인 WAL구성에 따른 트랜잭션 처리 시스템에 있어서, 트랜잭션이 파일을 갱신할 때, 갱신내용은 먼저 로그에 기록되고, 이어 파일 자체가 갱신되며, 그 결과 복잡한 처리 절차가 다수의 트랜잭션에 의해 파일 공유를 관리하기 위해 요구되게 된다. 더욱이, 기록 처리가 하나의 갱신에 대해 2번, 로그에 대해 한번, 파일 그 자체에 대해 한번 요구된다. 더욱이, 복잡한 처리 절차가 로그를 이용함으로써 파일의 일관성 상태를 복구하도록 복구 처리를 위해 또한 요구된다. 더욱이, 복구 처리가 오류 발생 후 재활성화와 동시에 완전하게 수행되어야만 하고, 따라서 재활성화는 상당한 정도의 시간을 요구한다.
트랜잭션 처리 시스템을 실현하기 위한 다른 구성은 그림자 페이지(shadow page) 구성이다. 이러한 구성이 있어서, 파일을 갱신할 경우, 갱신이 그 내에 기록 되기 전에 파일을 갖춘 페이지 및 갱신이 그 내에 기록된 후 파일을 갖춘 페이지는 하드디스크상에 제공되고, 파일 관리 데이터가 트랜잭션의 커미트와 동시에 자동적으로 전환된다. 이러한 이유에 대해, 올바른 파일이 항상 하드디스크상에 존재하는 것을 보증하는 것이 가능하다.
그림자 페이지 구성에 있어서, 올바른 상태의 파일은 항상 하드디스크상에 존재함에 따라 오류 발생과 동시에 복구 처리의 오버헤드가 작다는 이점이 있다. 그러나, 그림자 페이지 구성은, 하나의 트랜잭션의 커미트 전의 하나와 커미트 후의 다른 하나인 2개의 파일을 기록하는 페이지를 원자적으로 전환하기 위한 기본 동작을 채용하고, 따라서 다수의 트랜잭션이 동일한 파일을 갱신하기를 원할 경우, 이러한 트랜잭션을 직렬화할 필요가 있어 갱신을 연속적으로 이루게 된다. WAL구성에서와 같이 병렬로 다수의 트랜잭션에 의해 동일한 파일의 다른 부분의 갱신을 인에이블하기 위해, 그림자 페이지 구성 하나만을 이용하는 것은 불충분하고, WAL구성과 유사하게 로그를 이용하는 데이터 관리와 같은 몇몇 장치를 채용하는 것이 필요하다. 이러한 이유에 대해, 그림자 페이지 구성이 용이하게 실시될 수 있음에도 불구하고, 부가적으로 복잡한 데이터 관리를 실시하는 것이 필요하게 된다.
다음에, 통상적인 파일 시스템에 대해 간단히 설명한다. 도 43은 통상적인 트랜잭션 처리 시스템의 예를 나타낸 것이다. 통상적인 트랜잭션 처리 시스템에 있어서, 트랜잭션을 처리하기 위한 응용 프로그램(101)은 데이터베이스 관리 시스템(102)을 통해 데이터 연산을 수행한다. 파일시스템(103)은 하드디스크(104)와 같은 안정된 메모리장치에 기록된 파일의 운영 및 관리를 수행한다. 데이터베이스 관리 시스템(102)은 파일시스템(103)에 의한 파일 관리를 이용함으로써 응용프로그램(101)에 의해 요구된 데이터를 관리한다. 또한, 데이터베이스 관리 시스템(102)은 다수의 응용 프로그램(102)에 의해 공유된 데이터에 대해 동작하는 동안 동시 제어를 수행한다.
본 발명은 상기한 점을 감안하여 발명된 것으로, 병렬로 다수의 트랜잭션 동작에 의해 파일 갱신 처리를 용이하고 효율적으로 실현할 수 있을 뿐만 아니라 오류 발생과 동시에 복구 처리를 용이하고 효율적으로 실현할 수 있는 트랜잭션 처리 방법 및 트랜잭션 처리 시스템을 제공함에 그 목적이 있다.
도 1은 본 발명의 1실시예에 따른 트랜잭션 처리 시스템의 하나의 예시적 구성을 나타낸 블록도,
도 2는 도 1의 트랜잭션 처리 시스템에서 이용된 갱신 관리 테이블의 예를 나타낸 도면,
도 3은 도 1의 트랜잭션 처리 시스템에서 이용된 트랜잭션 관리 테이블의 예를 나타낸 도면,
도 4는 도 1의 트랜잭션 처리 시스템에서 이용될 수 있는 데이터 파일의 예를 나타낸 도면,
도 5는 UPDATE(1, ICECREAM, ¥450) 처리 후, 도 4의 데이터 파일의 상태를 나타낸 도면,
도 6은 UPDATE(3, APPLE, ¥500) 처리 후, 도 5의 데이터 파일의 상태를 나타낸 도면,
도 7은 REMOVE(2, BISCUIT) 처리 후, 도 6의 데이터 파일의 상태를 나타낸 도면,
도 8은 UPDATE(2, CHOCOLATE, ¥300) 처리 후, 도 7의 데이터 파일의 상태를 나타낸 도면,
도 9는 REMOVE(1, GRAPE) 처리 후, 도 8의 데이터 파일의 상태를 나타낸 도면,
도 10은 UPDATE(2, KIWIFRUIT, ¥300) 처리 후, 도 9의 데이터 파일의 상태를 나타낸 도면,
도 11은 COMMIT(3) 처리 후, 도 10의 데이터 파일의 상태를 나타낸 도면,
도 12는 COMMIT(1) 처리 후, 도 11의 데이터 파일의 상태를 나타낸 도면,
도 13은 ABORT(2) 처리 후, 도 12의 데이터 파일의 상태를 나타낸 도면,
도 14는 도 1의 트랜잭션 처리 시스템에서 READ(txid, key)를 위한 예시적 처리절차를 나타낸 플로우차트,
도 15는 READ(4, CHOCOLATE) 처리 후, 도 4의 데이터 파일의 상태를 나타낸 도면,
도 16은 도 1의 트랜잭션 처리 시스템에서 UPDATE(txid, key, value)를 위한 예시적 처리절차를 나타낸 플로우차트,
도 17은 도 1의 트랜잭션 처리 시스템에서 REMOVE(txid, key)를 위한 예시적 처리절차를 나타낸 플로우차트,
도 18은 도 1의 트랜잭션 처리 시스템에서 COMMIT(txid)를 위한 예시적 처리절차를 나타낸 플로우차트,
도 19는 도 1의 트랜잭션 처리 시스템에서 ABORT(txid)를 위한 예시적 처리절차를 나타낸 플로우차트,
도 20은 도 1의 트랜잭션 처리 시스템에서 복구를 위한 예시적 처리절차를 나타낸 플로우차트,
도 21은 도 1의 트랜잭션 처리 시스템에서 이용될 수 있는 트랜잭션에 의해 갱신되는 상태에서의 정보를 갖춘 데이터 파일의 예를 나타낸 도면,
도 22는 도 1의 트랜잭션 처리 시스템에서 이용될 수 있는 고속검색(faster search)을 실현하기 위한 2진 트리구조(binary tree structure)를 이용하는 데이터 파일의 예를 나타낸 도면,
도 23은 본 발명에 따른 트랜잭션 처리 시스템에서 이용될 수 있는 정보의 하나의 세트를 기록하는 다수의 파일중 하나의 예를 나타낸 도면,
도 24는 본 발명에 따른 트랜잭션 처리 시스템에서 이용될 수 있는 정보의 하나의 세트를 기록하는 다수의 파일중 다른 하나의 예를 나타낸 도면,
도 25는 본 발명에 따른 트랜잭션 처리 시스템에서 이용될 수 있는 정보의 하나의 세트를 기록하는 다수의 파일중 다른 하나의 예를 나타낸 도면,
도 26은 본 발명에 따른 트랜잭션 처리 시스템에서 이용될 수 있는 정보의 하나의 세트를 기록하는 다수의 파일중 다른 하나의 예를 나타낸 도면,
도 27은 본 발명의 1실시예에 따른 트랜잭션 처리 시스템의 다른 예시적 구성을 나타낸 블록도,
도 28은 도 27의 트랜잭션 처리 시스템에서 이용된 갱신 그룹 테이블의 예를 나타낸 도면,
도 29는 트랜잭션 (1) 및 (2)에 의해 갱신된 후, 도 25의 데이터 파일의 상태를 나타낸 도면,
도 30은 트랜잭션 (1) 및 (2)에 의해 갱신된 후, 도 26의 데이터 파일의 상태를 나타낸 도면,
도 31은 트랜잭션 (1)의 커미트(commit) 후, 도 29의 데이터 파일의 상태를 나타낸 도면,
도 32는 트랜잭션 (1)의 커미트(commit) 후, 도 30의 데이터 파일의 상태를 나타낸 도면,
도 33은 트랜잭션 (2)의 어보트(abort) 후, 도 32의 데이터 파일의 상태를 나타낸 도면,
도 34는 트랜잭션 (3)에 의해 갱신된 후, 도 23, 24, 25, 26의 데이터 파일의 일부분의 상태를 나타낸 도면,
도 35는 트랜잭션 (3)에 의해 갱신된 후, 도 23, 24, 25, 26의 데이터 파일의 다른 부분의 상태를 나타낸 도면,
도 36은 트랜잭션 (3)에 의해 갱신된 후, 도 23, 24, 25, 26의 데이터 파일의 다른 부분의 상태를 나타낸 도면,
도 37은 트랜잭션 (3)의 커미트 후, 도 34, 35, 36의 데이터 파일로부터 다시 기록 되는 하나의 데이터 파일의 상태를 나타낸 도면,
도 38은 트랜잭션 (3)의 커미트 후, 도 34, 35, 36의 데이터 파일로부터 다시 기록 되는 다른 데이터 파일의 상태를 나타낸 도면,
도 39는 도 1의 트랜잭션 처리 시스템에서 이용될 수 있는 일반적인 XML 문서의 예를 나타낸 도면,
도 40은 트랜잭션 (1) 및 (2)에 의해 갱신된 후, 도 39의 XML 문서의 상태를 나타낸 도면,
도 41은 트랜잭션 (1)의 커미트 후, 도 40의 XML 문서의 상태를 나타낸 도면,
도 42는 트랜잭션 (2)의 커미트 후, 도 41의 XML 문서의 상태를 나타낸 도면,
도 43은 통상적인 트랜잭션 처리 시스템의 예를 나타낸 블록도이다.
상기 목적을 달성하기 위한 본 발명에 따르면, 버퍼영역으로 독출되는 하나의 파일에 대해 갱신을 수행하는 다수의 트랜잭션을 실행하는 단계와; 다수의 트랜잭션 사이에서 하나의 트랜잭션의 커미트와 동시에 상기 하나의 파일을 안정된 메모리장치로 기록하는 단계를 구비하여 이루어지고, 상기 하나의 파일이 상기 하나의 트랜잭션에 의해 이루어진 커미트된 갱신의 내용 및 다른 커미트 되지 않은 트랜잭션에 의해 이루어진 커미트 되지 않은 갱신의 내용과, 커미트 되지 않은 갱신을 취소하기 위한 정보를 포함하는 것을 특징으로 하는 트랜잭션 처리 방법이 제공된다.
또한 본 발명에 따르면, 안정된 메모리장치로부터 버퍼영역상으로 트랜잭션 처리 타켓이 되는 하나의 파일을 독출하도록 구성된 독출 유니트와; 버퍼영역상의 상기 하나의 파일에 다수의 트랜잭션중 각 하나와 갱신을 취소하기 위한 정보에 의해 이루어진 상기 하나의 파일에 대해 갱신의 내용을 기록함으로써 상기 하나의 파일을 갱신하도록 구성된 갱신 유니트 및; 상기 다수의 트랜잭션 사이에서 하나의 트랜잭션의 커미트와 동시에 안정된 메모리장치에, 상기 하나의 트랜잭션에 의해 이루어진 커미트된 갱신의 내용 및 다른 커미트 되지 않은 트랜잭션에 의해 이루어진 커미트 되지 않은 갱신의 내용과 커미트 되지 않은 갱신을 취소하기 위한 정보를 포함하는 상기 하나의 파일을 기록하도록 구성된 기록 유니트를 구비하여 구성된 것을 특징으로 하는 트랜잭션 처리 시스템이 제공된다.
또한 본 발명에 따르면, 트랜잭션 처리 시스템으로서 기능하도록 컴퓨터를 야기시키기 위해 그 내에 내장된 컴퓨터 독출 가능 프로그램을 갖춘 컴퓨터 이용 가능 매체에 있어서, 컴퓨터 독출 가능 프로그램이, 안정된 메모리장치로부터 버퍼영역 상으로 트랜잭션 처리 타켓으로 되는 하나의 파일을 독출하도록 상기 컴퓨터를 야기시키기 위한 제1컴퓨터 독출 가능 프로그램 코드와; 버퍼영역상의 상기 하나의 파일에, 다수의 트랜잭션의 각 하나와 갱신을 취소하기 위한 정보에 의해 이루어진 상기 하나의 파일과 관련하는 갱신의 내용을 기록하는 것에 의해 상기 하나의 파일을 갱신하도록 상기 컴퓨터를 야기시키기 위한 제2컴퓨터 독출 가능 프로그램 코드 및; 상기 다수의 트랜잭션 간에서 하나의 트랜잭션의 커미트와 동시에 안정된 메모리장치에 상기 하나의 트랜잭션에 의해 이루어진 커미트된 갱신의 내용 및 다른 커미트 되지 않은 트랜잭션에 의해 이루어진 커미트 되지 않은 갱신의 내용과, 커미트 되지 않은 갱신을 취소하기 위한 정보를 포함하는 상기 하나의 파일을 기록하도록 상기 컴퓨터를 야기시키기 위한 제3컴퓨터 독출 가능 프로그램 코드를 포함하는 것을 특징으로 하는 컴퓨터 이용 가능 매체가 제공된다.
(실시예)
이하, 도 1 내지 도 42를 참조하여 본 발명에 따른 트랜잭션 처리 시스템의 1실시예에 대해 상세히 설명한다.
도 1은 본 발명의 1실시예에 따른 트랜잭션 처리 시스템의 하나의 예시적 구성을 나타낸 블록도이다.
이하 설명하는 본 실시예에서 하드디스크가 안정된 메모리장치로서 이용되지만, 안정된 메모리장치로서 다른 적절한 메모리장치를 이용하는 것도 물론 가능함을 주지해야만 한다. 또한, 이하 설명하는 본 실시예에 있어서, 트랜잭션은 응용프로그램에 의해 발생되지만, 트랜잭션이 다른 응용프로그램에 의해 발생되는 경우에도 동일한 것은 명백하다.
도 1에 나타낸 바와 같이 이러한 실시예의 트랜잭션 처리 시스템에 있어서, 트랜잭션을 실행하기 위한 다수의 응용프로그램(2) 사이에서 공유 파일의 동작은 공유 데이터 관리 유니트(4)를 통해 수행되는 반면, 비공유 파일의 동작은 응용프로그램(2)으로부터 파일시스템(6)을 직접 명령함으로써 수행된다.
트랜잭션 관리자(8)는 각 응용프로그램(2)에 의해 처리되는 트랜잭션의 관리를 수행한다. 응용프로그램(2)은 트랜잭션 처리의 시작과 동시에 트랜잭션 관리자(8)에 의해 할당된 트랜잭션 식별자를 얻는다. 그 후, 트랜잭션을 처리하는 프로세스에서 공유 데이터 관리 유니트(4)나 파일 시스템(6)에 대해 동작을 명령하는 경우, 파일이 갱신되는 트랜잭션이 트랜잭션 식별자를 제시함으로써 통보되어진다. 응용프로그램(2)이 트랜잭션 관리자(8)에 대해 트랜잭션 처리의 완료를 통보할 때, 트랜잭션 관리자(8)는 트랜잭션 식별자에 의해 식별된 트랜잭션에 의해 이루어진 파일 갱신의 결과를 기록함으로써 커미트하거나, 갱신 결과를 포기함으로써 어보트하도록 공유 데이터 관리유니트(4) 및 파일 시스템(6)을 명령한다.
또한, 응용프로그램(2) 그 자체가 트랜잭션 식별자 및, 커미트나 어보트 명령에 대응하여 정보를 발생시키는 트랜잭션 관리자(8)가 없는 구성을 이용하는 것이 가능함을 주지해야만 하지만, 이하의 설명에서는 트랜잭션 관리자(8)를 이용하는 경우에 대해 설명한다.
공유 데이터 관리 유니트(4)는 다수의 트랜잭션에 의해 동일한 파일의 다른 부분의 갱신을 실현한다. 공유 데이터 관리 유니트(4)는 갱신 관리 테이블(41)을 이용하여 (이러한 공유 데이터 관리 유니트(4)를 통해) 어느 파일이 어느 트랜잭션에 의해 갱신되는가를 관리한다. 도 2는 갱신 관리 테이블의 예를 나타낸 것이다. 갱신 관리 테이블(41)은 파일명 및 해당 파일을 갱신하는 트랜잭션의 트랜잭션 식별자의 리스트간에서의 대응을 기록한다. 도 2는 F0102의 파일명을 갖는 파일이, 예컨대 "36", "21", "5"의 트랜잭션 식별자를 갖춘 3개의 트랜잭션에 의해 동시에 갱신되어지는 것을 가르킨다.
파일시스템(6)은 트랜잭션에 의해 파일 운영을 실현하기 위한 유니트이다. 파일시스템(6)은 버퍼영역(62)과 트랜잭션 관리 테이블(61)을 관리하기 위한 버퍼 관리 유니트(도시되지 않았음)를 갖춘다. 하드디스크(10)에 기록된 파일을 독출 또는 갱신하는 경우, 이러한 파일은 버퍼영역(62)으로 독출되어, 버퍼영역(62)상에서 독출 또는 갱신된다. 새로운 파일을 생성할 경우, 파일은 버퍼영역(62)상에 먼저 생성된다. 버퍼영역(62)상에서 갱신 또는 생성된 파일은 트랜잭션의 커미트와 동시에 하드디스크(10)로 기록된다. 트랜잭션 관리 테이블(61)은 어느 트랜잭션이 어느 파일을 갱신하는가를 관리한다.
도 3은 트랜잭션 관리 테이블(61)의 예를 나타낸 도면이다. 트랜잭션 관리 테이블(61)은 트랜잭션 식별자와 해당 트랜잭션에 의해 현재 갱신된 파일의 리스트 사이의 대응을 기록한다. 도 3은, 예컨대 트랜잭션 식별자 "3"을 갖는 트랜잭션이 파일 F9268만을 현재 갱신하는 한편, 트랜잭션 식별자 "5"를 갖는 트랜잭션이 2개의 파일 F0100 및 F9264를 현재 갱신하는 것을 나타낸다. 트랜잭션 관리 테이블(61)의 마지막 엔트리는 어떠한 트랜잭션에도 속하지 않는 파일의 갱신을 관리한다.
도 3에 도시된 트랜잭션 관리 테이블(61)에 있어서, 마지막 행의 트랜잭션 엔트리 "NOTX"는 이에 대응한다. 이러한 예에 있어서, 파일 F0102, F2156, F3624, F5497 및 F7531은 특정 트랜잭션의 일부로서 갱신되어지는 것 보다는 소정 트랜잭션의 소정 관계를 갖는 것 없이 갱신되어지는 것을 나타낸다. 이하 설명하는 바와 같이, 공유 데이터 관리 유니트(4)를 통해 갱신되는 파일은 소정 트랜잭션에 속하지 않고서 갱신되어지고, 따라서 이러한 파일은 이러한 엔트리에 기록되어진다. 이러한 엔트리에 기록된 파일을 갱신하는 트랜잭션은 공유 데이터 관리 유니트(4)의 갱신 관리 테이블(41)을 조회함으로써 확인되어질 수 있음을 주지해야 한다.
이하, 정보가 공유 데이터 관리 유니트(4)를 통해 XML 문서 포맷으로 기록되는 파일을 갱신하는 트랜잭션 처리 시스템에서의 데이터의 예로서 XML 문서 포맷의 정보를 이용하는 경우의 예를 설명한다.
XML과 관련된 상세한 설명이 "Extensible Markup Language(XML) 1.0"(W3C Recommendation, 98년 2월 10일)에 개시되어 있다.
이 경우, 트랜잭션 처리 시스템은 XML 문서 포맷의 파일에서 "key"와 대응하는 "value"에 의해 형성된 쌍의 세트를 기록 및 관리한다. 이러한 문서는 키를 특정함으로써 값이 검색되어질 수 있는 일반적 데이터베이스로서 이용될 수 있다.
도 4는 이러한 문서의 예를 나타낸 것이다. 이러한 예시적 XML 문서에 있어서, "key"는 태그 〈key〉와 〈/key〉에 의해 에워싸인 부분에서 유지되고, "value"는 태그 〈value〉와 〈/value〉에 의해 에워싸인 부분에서 유지되며, "key"와 "value"의 쌍이 태그 〈entry〉와 〈/entry〉에 의해 에워싸인 엔트리가 형성되고, 다수의 이러한 엔트리가 가장 바깥쪽 태그 〈KVtable〉과 〈/KVtable〉에 의해 에워싸인다. 실질적으로, XML 문서는 또한 그 상부에서 〈?xml version = "1.0"?〉으로 시작하는 서두부를 갖지만, 여기에서는 생략되어 있다. XML 언어에 있어서, 〈key〉와 같은 시작 태그와 〈/key〉와 같은 대응하는 종료 태그에 의해 에워싸인 부분은 엘리먼트로서 언급되어진다.
도 4에 도시된 XML 문서에 있어서, key "APPLE"은 대응하는 value "¥400"을 갖고, key "BISCUIT"은 대응하는 value "¥250"을 갖으며, key "CHOCOLATE"은 대응하는 value "¥200"을 갖고, key "GRAPH"는 대응하는 value "¥600"을 갖는다.
여기서, 이러한 XML 문서 파일과 관련하여 트랜잭션을 실행하는 응용프로그램(2) 및 트랜잭션 관리자(8)는 공유 데이터 관리 유니트를 통해 "READ(txid, key)", "UPDATE(txid, key, value)", REMOVE(txid, key)", "COMMIT(txid)" 및 "ABORT(txid)"를 포함하는 5가지 동작을 수행할 수 있다. 이러한 실시예에 있어서, READ, UPDATE 및, REMOVE는 응용프로그램(2)에 의해 명령받는 한편, COMMIT 및 ABORT는 트랜잭션 관리자(8)에 의해 명령되어진다. 이미 설명한 바와 같이, 이는 명령 COMMIT와 ABORT에 대한 응용프로그램(2) 뿐만 아니라 트랜잭션 관리자(8)를 이용하지 않는 경우에도 가능하다.
READ(txid, key)는 "key"에 의해 특정된 엔트리의 값을 독출하는 "txid"에 의해 특정화된 트랜잭션 식별자를 갖춘 트랜잭션에서의 동작이다.
UPDATE(txid, key, value)는 "value"에 의해 특정화된 값에 대해 "key"에 의해 특정화된 엔트리의 값을 갱신하는 "txid"에 의해 특정화된 트랜잭션 식별자를 갖춘 트랜잭션에서의 동작이다. "key"에 의해 특정화된 엔트리가 존재하지 않을 경우, 새로운 엔트리가 생성되게 된다.
REMOVE(txid, key)는 "key"에 의해 특정화된 엔트리를 삭제하는 "txid"에 의해 특정화된 트랜잭션 식별자를 갖춘 트랜잭션에서의 동작이다.
COMMIT(txid)는 디스크상의 파일에 대해 복귀하는 기록에 의해 영구히 만들어지는 "txid"에 의해 특정화된 트랜잭션 식별자를 갖춘 트랜잭션에 의해 이루어진 파일 내용 갱신에서의 동작이다.
ABORT(txid)는 "txid"가 전체적으로 생략됨으로써 특정화된 트랜잭션 식별자를 갖춘 트랜잭션에 의해 이루어진 파일 내용 갱신에서의 동작이다.
이러한 5가지 동작 사이에서, UPDATE와 REMOVE가 파일 내용을 갱신하는 동작 동안 READ는 파일 내용을 갱신하지 않는 동작이고, COMMIT와 ABORT는 예컨대 올바르게 완성된 상태인 커미트된 상태, 또는 처리 결과를 삭제함으로써 처리 개시 이전의 상태에서의 트랜잭션의 처리 결과를 설정하기 위한 동작이다.
여기서, 본 실시예의 트랜잭션 처리 시스템의 동작에 대해 3개의 트랜잭션[txid = 1을 갖는 트랜잭션 (1), txid = 2를 갖는 트랜잭션 (2), txid = 3을 갖는 트랜잭션 (3)]이 다음과 같이 병렬로 도 4의 XML 문서에 억세스하는 예시적 경우에 대해 설명한다.
[1] UPDATE (1, ICECREAM, ¥450)
[2] UPDATE (3, APPLE, ¥500)
[3] REMOVE (2, BISCUIT)
[4] UPDATE (2, CHOCOLATE, ¥300)
[5] REMOVE (1, GRAPE)
[6] UPDATE (2, KIWIFRUIT, ¥300)
[7] COMMIT (3)
[8] COMMIT (1)
[9] ABORT (2)
이러한 트랜잭션 처리 시스템이 도 4의 파일을 갱신하는 경우, 공유 데이터 관리 유니트(4)로부터 명령을 받는 파일 시스템(6)은 먼저 버퍼영역(62)으로 하드디스크(10)의 파일의 내용을 독출한다. 트랜잭션이 커미트될 때까지 파일의 갱신은 버퍼영역(62)의 복사와 관련해서만 이루어지게 되고, 하드디스크(10)에 다시 기록되지 않게 된다.
[1] 먼저, UPDATE (1, ICECREAM, ¥450)에 의해, 트랜잭션 (1)은 키 "ICECREAM"을 부가하고, 그 값을 "¥"450"으로 설정한다. 이 시점에서, 파일이 버퍼영역(62)에 아직 있지 않으면, 파일은 버퍼영역(62)으로 독출된다. 그 후, 버퍼영역(62)의 데이터가 도 5에 도시된 바와 같이 변화된다. 여기서, 키 "ICECREAM"을 갖는 새로운 엔트리가 부가되고, 그 값이 "¥450"으로 설정된다. 더욱이, 이러한 엔트리가 트랜잭션 (1)에 의해 현재 갱신되는 것을 나타내기 위해, 2개의 속성 TXID 및 TXSTATE가 태그 〈entry〉의 속성으로서 기록된다. 속성 TXID는 속성 TXSTATE가 갱신의 형태를 기록하는 동안 갱신을 이루는 트랜잭션의 트랜잭션 식별자를 기록하고, 이러한 정보는 COMMIT 또는 ABORT 처리와 동시에 이용되어진다. 여기서, 트랜잭션 식별자 "1"은 TXID 속성의 값으로 설정되고, "UPDATE"는 현재의 갱신이 TXSTATE 속성의 값으로 설정되는 것을 지시한다.
[2] 다음에, UPDATE (3, APPLE, ¥500)에 의해, 트랜잭션(3)은 키 "APPLE"의 값을 "¥500"으로 갱신한다. 이 시점에서, 버퍼영역의 데이터는 도 6에 도시된 바와 같이 변화된다. 여기서, 키 "APPLE"을 갖는 엔트리의 〈value〉 태그는 〈oldvalue〉 태그로 변화시킴으로써 유지되고, 새로운 값 "¥500"이 〈value〉 태그에 의해 에워싸인 새로운 엘리먼트가 엔트리에 대해 생성 및 부가된다. 더욱이, 트랜잭션 식별자 "3"은 TXID 속성의 값으로 설정되고, "UPDATE"는 현재의 갱신이 TXSTATE 속성의 값으로 설정되는 것을 지시한다.
[3] 다음에, REMOVE (2, BISCUIT)에 의해, 트랜잭션 (2)은 키 "BISCUIT"을 갖는 엔트리를 삭제한다. 이 시점에서, 버퍼영역(62)의 데이터가 도 7에 도시된 바와 같이 변화된다. 여기서, 트랜잭션 식별자 "2"는 TXID 속성의 값으로 설정되고, "REMOVE"는 삭제가 키 "BISCUIT"을 갖는 엔트리의 TXSTATE 속성의 값으로 설정되는 것을 나타낸다.
[4] 다음에, UPDATE (2, CHOCOLATE, ¥300)에 의해, 트랜잭션 (2)은 키 "CHOCOLATE"의 값을 "¥300"으로 갱신하고, 상기와 마찬가지로 처리를 수행하여 버퍼영역(62)의 데이터가 도 8에 도시된 바와 같이 된다.
[5] 다음에, REMOVE (1, GRAPE)에 의해, 트랜잭션 (1)은 키 "GRAPE"를 갖는 엔트리를 삭제하고, 상기와 마찬가지의 처리를 수행하여 버퍼영역(62)의 데이터가 도 9에 도시된 바와 같이 된다.
[6] 다음에, UPDATE (2, KIWIFRUIT, ¥300)에 의해, 트랜잭션 (2)는 키 "KIWIFRUIT"를 갖는 엔트리를 부가하고, 그 값을 "¥300"으로 설정하며, 상기와 같은 처리를 수행하여 버퍼영역(62)의 데이터가 도 10에 도시된 바와 같이 된다.
[7] 다음에, COMMIT (3)에 의해, 트랜잭션 (3)을 위한 커미트 처리가 활성화된다.
여기서, 다수의 트랜잭션이 상기에서와 같이 동일한 파일을 갱신하는 경우의 커미트 처리에 대해 설명한다.
트랜잭션 (3)을 위한 커미트 처리는 파일의 데이터가 도 10에 도시된 바와 같이 버퍼영역(62)상에서 갱신되는 상태에서 COMMIT (3)에 의해 활성화되는 것으로 가정한다. 이 점에서, 트랜잭션 (3)에 의해 이루어진 갱신은 엘리먼트가 TXID 및 TXSTATE를 갖춤과 더불어 〈oldvalue〉 태그를 포함하는 잠정 상태에서 이러한 TXID, TXSTATE 및 〈oldvolue〉 태그를 삭제함으로써 하드디스크(10)로 다시 기록할 수 있는 올바르게 갱신된 상태로 변화된다.
트랜잭션 (3)에 의해 이루어진 갱신을 반영하는 파일의 데이터가 이러한 방법으로 발생될 때, 이는 하드디스크(10)의 원래의 파일을 대체하도록 다시 기록된다. 이 시점에서, 본 실시예에 있어서, 트랜잭션 (1) 및 트랜잭션 (2)에 의해 현재 갱신된 상태의 데이터가 그 상태에서 하드디스크(10)에 다시 기록될 수 있다. 이는 이하 설명되어지는 바와 같이 갱신을 취소하는데 필요한 정보는 현재 갱신되는 상태에서의 데이터에 부착되고, 따라서 이러한 데이터가 다음에 독출될 때 갱신을 취소하기 위한 처리를 수행하는 것이 가능하다.
[8] 다음에, COMMIT (1)에 의해, 트랜잭션 (1)을 위한 커미트 처리가 활성화된다. 이 시점에서 트랜잭션 (1)에 의해 이루어진 갱신이 도 12에 도시된 바와 같이 데이터에 반영되고, 이는 하드디스크(10)에 다시 기록된다.
[9] 다음에, ABORT (2)에 의해, 트랜잭션 (1)이 어보트된다. 이 시점에서, 트랜잭션 (2)에 의해 이루어진 갱신이 도 13에 도시된 바와 같이 버퍼영역(62)의 파일의 데이터로부터 취소된다.
이하, 상기 예에서 설명한 각 동작에 대한 처리 절차를 상세히 설명한다.
먼저, READ를 위한 처리절차에 대해 설명한다.
READ의 동작은 단지 특정 키에 대응하는 엔트리의 값을 독출하는 것으로서 간단하다. 그러나, 어떠한 시스템이 이용되는가에 따라 READ를 수행하기 위한 2가지 방법이 있다. 무엇이 양 방법에 대해 공통인가는 다른 트랜잭션에 의해 현재 갱신되지 않으면 값이 독출될 수 있다는 것이다. 그러나, 이러한 2가지 방법간의 차이는 하나의 트랜잭션에 의해 독출된 엔트리가 하나의 트랜잭션이 완성되었는가의 여부의 전에 다른 트랜잭션에 의해 갱신될 수 있는가의 여부와 관련하여 야기된다. 즉, 하나의 방법은, 이는 수행될 수 있음에 따라 배타적 제어가 READ를 위해 이용되지 않는다는 해석을 채용한다. 다른 방법은, 이는 수행될 수 없고, 따라서 잘 알려진 READ/WRITE 잠금 의미론(lock semantics)에 따라 배타적 제어가 이용된다는 해석을 채용한다. 특히, 동일한 트랜잭션에 의해 READ와 갱신이 호환되지만, 다른 트랜잭션에 의해 READ와 갱신은 호환되지 않는 한편, 다른 트랜잭션에 의한 READ들은 호환된다.
배타적 제어를 이용하지 않는 전자의 경우는 READ에 대한 제어를 생략함으로써 얻어진 배타적 제어를 이용하는 후자의 방법의 특정 경우로서 효과적으로 보여질 수 있고, 따라서 후자의 방법에 대한 처리 절차를 여기서 설명한다.
도 14는 READ(txid, key)를 위한 예시적 처리절차를 나타낸 것이다.
먼저, 특정 "key"와 동일한 키의 값을 갖춘 엔트리가 검색된다(단계 S11).
엔트리가 발견되면(단계 S12), TXSTATE 속성이 그 엔트리에 부가되었는가의 여부가 점검되고, TXSTATE 속성이 부가되면, "READ", "UPDATE", REMOVE"중 어느 하나가 TXSTATE 속성의 값인가가 점검된다(단계 S13).
TXSTATE 속성이 부가되지 않은 경우, 이는 그 엔트리에 대한 접근이 없고, 따라서 TXSTATE 속성의 값이 "READ"로서 설정되는 동안 TXID 속성과 TXSTATE 속성이 그 엔트리에 부가됨과 더불어 TXID 속성의 값이 "txid"로서 설정되고(단계 S14), 〈value〉부의 값이 결과적으로 복귀된다(단계 S15).
TXSTATE 속성의 값이 "READ"인 경우, "txid"가 아직 TXID 속성의 값에 포함되지 않으면(단계 S16), "txid"가 TXID 속성의 값으로 부가되고(단계 S17), 〈value〉부의 값이 결과적으로 복귀된다(단계 S18).
TXSTATE 속성의 값이 "UPDATE"인 경우, TXID 속성의 값이 "txid"인지의 여부가 점검되고(단계 S19), 동일한 트랜잭션에 의해 갱신되면 엔트리가 독출될 수 있으며(단계 S19 예), 따라서 〈value〉부의 값이 결과적으로 복귀된다(단계 S20). 그렇지 않으면(단계 S19 아니오), 다른 엔트리에 의해 현재 이용됨에 따라 엔트리가 독출될 수 없음을 통보한다.
TXSTATE 속성의 값이 "REMOVE"인 경우, 존재하지 않는 무엇을 독출하도록 시도됨에 따라 에러가 지시된다.
엔트리를 찾을 수 없으면(단계 S12 아니오), 에러가 지시된다.
도 15는 트랜잭션 (4)이 도 4에 도시된 파일 데이터에 대해 READ(4, CHOCOLATE)의 결과로서 키 "CHOCOLATE"의 값을 독출한 직후, 버퍼영역(62)상의 데이터의 상태를 나타낸 것이다.
통상적으로, TXID 속성의 값은 하나의 트랜잭션 식별자를 갖지만, TXSTATE 속성의 값이 "READ"인 경우 TXID 속성의 값은 트랜잭션 식별자의 리스트를 갖을 수 있다. 이는 다수의 트랜잭션이 그를 동시에 독출할 수 있기 때문이다. 예컨대, 트랜잭션 식별자 "1", "4", "5"를 갖는 트랜잭션이 그를 독출할 때, 그 TXID 속성의 값은 "1 4 5"의 형태로 리스트에 의해 주어진다.
다음에, UPDATE에 대한 처리 절차에 대해 설명한다.
도 16은 UPDATE(txid, key, value)를 위한 예시적 처리절차를 나타낸 것이다.
먼저, 특정 "key"와 동일한 키의 값을 갖춘 엔트리가 검색된다(단계 S21).
엔트리를 찾으면(단계 S22 예), TXSTATE 속성이 엔트리에 부가되어지는가의 여부가 점검되고, TXSTATE 속성이 부가되면, "READ", "UPDATE", REMOVE"중 어느 하나가 TXSTATE 속성의 값인가가 점검된다(단계 S23).
TXSTATE 속성이 부가되지 않은 경우, 이는 그 엔트리에 대한 접근이 없고, 따라서 TXSTATE 속성의 값이 "UPDATE"로서 설정되는 동안 TXID 속성과 TXSTATE 속성이 그 엔트리에 부가됨과 더불어 TXID 속성의 값이 "txid"로서 설정되고, 현재 〈value〉부의 태그 명이 〈oldvalue〉로 변화되는 한편 새로운 〈value〉부가 생성되어 그 값이 UPDATE의 제3인자에 의해 특정된 "value"로서 설정된다(단계 S24).
TXSTATE 속성의 값이 "READ"인 경우, 동일한 트랜잭션 홀로 독출되어 TXID 속성의 값이 오직 "txid"만인지 아닌지의 여부가 점검될 때에만 이러한 엔트리를 갱신하는 것이 가능하다(단계 S25). 만약 그렇다면, TXSTATE 속성의 값이 "UPDATE"로 변화되고, 현재 〈value〉부의 태그 명이 〈oldvalue〉로 변화되며, 새로운 〈value〉부가 생성되어 그 값이 UPDATE의 제3인자에 의해 특정된 "value"로서 설정된다(단계 S26). 만약 다른 트랜잭션이 독출되면, UPDATE는 수행될 수 없게 됨에 따라 이는 이러한 엔트리가 다른 트랜잭션에 의해 일반적으로 이용됨을 통보한다.
TXSTATE 속성의 값이 "UPDATE"인 경우, TXID 속성의 값이 "txid"인지 아닌지의 여부가 점검된다(단계 S27). 그렇다면, 이는 동일한 트랜잭션에 의해 갱신된 엔트리이고, 따라서 〈value〉부의 값은 UPDATE의 제3인자에 의해 특정된 "value"로 변화된다(단계 S28). 다른 트랜잭션이 갱신되면(단계 S27 아니오), UPDATE는 실행될 수 없게 되고, 따라서 이는 이러한 엔트리가 다른 트랜잭션에 의해 일반적으로 이용되고 있는 것임을 통보한다.
TXSTATE 속성의 값이 "REMOVE"인 경우, 이는 존재하지 않음에 따라 에러가 표시되는 무엇인가를 갱신하기 위한 시도이다.
특정 "key"와 동일한 키의 값을 갖춘 엔트리를 찾을 수 없으면(단계 S22 아니오), 새로운 엔트리가 생성됨과 더불어 그 〈key〉부와 〈value〉부의 값이 각각 UPDATE의 제2 및 제3인자에 의해 특정된 "key" 및 "value"로서 설정되는 한편, TXID 속성의 값이 "txid"로서 설정됨과 더불어 TXSTATE 속성의 값이 "UPDATE"로서 설정된다(단계 S29).
다음에, REMOVE에 대한 처리 절차에 대해 설명한다.
도 17은 REMOVE(txid, key)를 위한 예시적 처리절차를 나타낸 것이다.
먼저, 특정 "key"와 동일한 키의 값을 갖춘 엔트리가 검색된다(단계 S31).
엔트리를 찾으면(단계 S32 예), TXSTATE 속성이 엔트리에 부가되어지는가의 여부가 점검되고, TXSTATE 속성이 부가되면, "READ", "UPDATE", REMOVE"중 어느 하나가 TXSTATE 속성의 값인가가 점검된다(단계 S33).
TXSTATE 속성이 부가되지 않은 경우, 이는 아무도 그 엔트리에 접근하지 않음에 따라 TXID 속성과 TXSTATE 속성이 그 엔트리에 부가됨과 더불어 TXSTATE 속성의 값이 "REMOVE"로서 설정되는 동안 TXID 속성의 값이 "txid"로서 설정된다(단계 S34).
TXSTATE 속성의 값이 "READ"인 경우, 동일한 트랜잭션 홀로 독출되어 TXID 속성의 값이 오직 "txid"만인지 아닌지의 여부가 점검될 때에만 이러한 엔트리를 삭제하는 것이 가능하다(단계 S35). 만약 그렇다면, TXSTATE 속성의 값이 "REMOVE"로 변화된다(단계 S36). 만약 다른 트랜잭션이 독출되면, REMOVE는 수행될 수 없게 됨에 따라 이는 이러한 엔트리가 다른 트랜잭션에 의해 일반적으로 이용되고 있음을 통보한다.
TXSTATE 속성의 값이 "UPDATE"인 경우, TXID 속성의 값이 "txid"인지 아닌지의 여부가 점검된다(단계 S37). 그렇다면, 이는 동일한 트랜잭션에 의해 갱신된 엔트리이고, 따라서 REMOVE가 실행될 수 있게 된다. 이점에서, 이것이 이러한 트랜잭션에 의해 새롭게 생성된 엔트리인지 또는 이전부터 존재하였던 엔트리인지의 여부가 〈oldvalue〉부가 있는지 없는지의 여부에 의해 확인할 수 있다. 〈oldvalue〉부가 없으면(단계 S38 아니오), 이는 이러한 트랜잭션에 의해 생성된 엔트리임에 따라 이러한 엔트리는 즉각 삭제될 수 있다(단계 S40). 그렇지 않으면(단계 S38 예), TXSTATE 속성의 값이 "REMOVE"로 변화된다(단계 S39). 다른 트랜잭션이 갱신되면(단계 S37 아니오), REMOVE는 실행될 수 없게 됨에 따라 이는 이러한 엔트리가 다른 트랜잭션에 의해 현재 사용중인 것임이 통보된다.
TXSTATE 속성이 "REMOVE"인 경우, 이는 존재하지 않음에 따라 에러가 표시되는 무엇인가를 삭제하기 위해 시도한다
엔트리를 찾을 수 없으면(단계 S32 아니오), 에러가 표시된다.
다음에, COMMIT를 위한 처리절차에 대해 설명한다.
도 18은 COMMIT(txid)를 위한 예시적 처리절차를 나타낸 것이다.
COMMIT 처리에 있어서, 파일의 모든 엔트리는 도 18의 절차에 의해 처리된다.
먼저, 해당 엔트리의 TXSTATE 속성이 값이 점검된다(단계 S101).
TXSTATE 속성이 없으면, 이러한 엔트리를 억세스하는 트랜잭션이 없기 때문에 동작이 필요하지 않게 된다.
TXSTATE 속성의 값이 "READ"인 경우, "txid"가 TXID 속성의 값에 포함되고(단계 S102 예), 다른 트랜잭션 식별자가 또한 포함됨에 따라 "txid"가 TXID 속성의 유일한 값이 아니면(단계 S103 아니오), "txid"는 TXID 속성으로부터 제거된다(단계 S104). "tixd"가 TXID 속성의 유일한 값이면(단계 S103 예), TXID 속성과 TXSTATE 속성은 삭제된다(단계 S105).
TXSTATE 속성의 값이 "UPDATE"인 경우, TXID 속성의 값이 "txid"인지 아닌지의 여부가 점검된다(단계 S106). 그렇다면, 〈oldvalue〉부, TXID 속성 및, TXSTATE 속성은 삭제되고, 이러한 갱신이 타당성 있게 된다(단계 S107).
TXSTATE 속성의 값이 "REMOVE"인 경우, TXID 속성의 값이 "txid"인지 아닌지의 여부가 점검된다(단계 S108). 그렇다면, 이러한 엔트리는 삭제된다(단계 S109).
상기 처리가 모든 엔트리에 대해 완료된 때, 그 때의 버퍼영역(62)상의 데이터가 하드디스크(10)로 다시 기록되어 파일을 갱신한다.
COMMIT 처리의 끝에서, 공유 데이터 관리 유니트(4)는 버퍼영역(62)상에서 갱신된 파일을 하드디스크(10)로 기록하도록 파일시스템(6)을 명령한다. 이 시점에서, 파일 기록은 커미트되어지는 트랜잭션에 의해 갱신된 다른 파일과 동기되어 원자적으로 이루어져야만 한다. 즉, 트랜잭션을 실행하는 응용프로그램(2)이 공유 데이터 관리 유니트(4)를 이용하지 않고서 파일시스템(6)을 직접 명령하는 것에 의해 다수의 파일상에서 갱신이 이루어지게 된다는 가능성이 있고, 또한 다수의 파일이 공유 데이터 관리 유니트(4)를 통해 갱신되어진다는 가능성이 있다(도 2 및 도 3 참조). 이러한 트랜잭션을 원자적으로 커미트하기 위해, 그 다수의 파일상의 모든 갱신을 완전하게 커미트할 필요가 있다. 본 실시예의 트랜잭션 처리 시스템에 있어서, 응용프로그램(2)으로부터의 직접 명령에 의해 갱신된 파일의 리스트는 각 트랜잭션을 위해 관리되고, 따라서 동일한 트랜잭션에 의해 갱신된 파일은 그 정보를 이용하여 하드디스크(10)에 집합적으로 그리고 원자적으로 다시 기록될 수 있게 된다.
그러나, 공유 데이터 관리 유니트(4)를 통해 동작된 파일은 소정 트랜잭션과 관계 없는 파일로서 파일시스템(6)에서 관리된다. 트랜잭션이 이러한 파일을 다시 기록하기 위한 타이밍으로서 이용되어져야만 하는 커미트의 타이밍은 COMMIT 처리와 동시에 공유 데이터 관리 유니트(4)에 의해 판단된다.
이러한 종료에 대해, 파일시스템(6)은 특정 트랜잭션의 커미트의 타이밍과 동기하여 원자적으로 하드디스크(10)에 소정 트랜잭션과 관계 없이 공유 데이터 관리 유니트(4)에 의해 오픈 및 갱신된 파일의 재기록을 명령하기 위한 기능이 제공된다. COMMIT 처리를 수행하는 공유 데이터 관리 유니트(4)는 특정 트랜잭션 식별자의 트랜잭션에 의해 이루어진 갱신을 파일에 반영하고, 이때 특정 트랜잭션 식별자의 트랜잭션에 동기하여 하드디스크(10)에 이러한 파일을 다시 기록 하도록 파일시스템을 명령한다. 파일시스템(6)은 이러한 방법으로 특정된 파일을, 특정 트랜잭션 식별자의 커미트와 동시에 하드디스크(10)에 원자적으로, 트랜잭션 관리테이블(61)에서 지시된 바와 같은 해당 트랜잭션에 의해 갱신된 파일과 동시에, 다시 기록한다.
그러나, (트랜잭션 관리 테이블(61)의 엔트리와 버퍼영역(62)의 파일의 이미지와 같은)파일시스템(6)을 직접 명령함으로써 트랜잭션을 수행하는 응용프로그램(2)에 의해 갱신된 파일의 정보는 파일시스템(6)의 커미트 처리가 종료된 후 불필요하게 됨을 주지해야 한다. 한편, 소정의 특정 트랜잭션과 관계 없이 공유 데이터 관리 유니트(4)에 의해 갱신된 파일은 그 후에도 다른 트랜잭션에 의해 계속 갱신되어지고, 따라서 이러한 파일은 소정 트랜잭션과 관계를 갖지 않는 상태에서 공유 데이터 관리 유니트(4)에 의해 계속 이용되어지게 된다. 이러한 이유에 대해, 파일시스템(6)은 이러한 파일과 관련한 정보를 계속 유지하게 된다.
다음에, ABORT에 대한 처리 절차를 설명한다.
도 19는 ABORT(txid)를 위한 예시적 처리절차를 나타낸 것이다.
ABORT 처리에 있어서, 파일의 모든 엔트리는 도 19의 절차에 의해 처리된다.
먼저, 해당 엔트리의 TXSTATE 속성의 값이 점검된다(단계 S111).
TXSTATE 속성이 없으면, 이러한 엔트리를 억세스하는 트랜잭션이 없기 때문에 동작이 필요로 되지 않는다.
TXSTATE 속성의 값이 "READ"인 경우, "txid"가 TXID 속성의 값에 포함되고(단계 S112 예), 다른 트랜잭션이 또한 포함되어 "txid"가 TXID 속성의 유일한 값이 아니면(단계 S113 아니오), "txid"가 TXID 속성으로부터 제거된다(단계 S114). "txid"가 TXID 속성의 유일한 값이면(단계 S113 예), TXID 속성과 TXSTATE 속성이 삭제된다(단계 S115).
TXSTATE 속성의 값이 "UPDATE"인 경우, TXID 속성의 값이 "txid"인지 아닌지의 여부가 점검된다(단계 S116). 그렇다면, 엔트리의 UPDATE를 취소하기 위한 동작이 수행된다. 이 시점에서, 해당 엔트리에 〈oldvalue〉부가 있으면(단계 S117 예), 다시 갱신하기 전의 값을 갖기 위하여 현재 〈value〉부가 삭제되고, 〈oldvalue〉부의 태그 명이 〈value〉로 변화되는 한편, TXID 속성과 TXSTATE 속성이 삭제된다(단계 S118). 해당 엔트리에 〈oldvalue〉부가 없으면(단계 S117 아니오), 이는 이러한 트랜잭션에 의해 새롭게 생성된 엔트리임에 따라 이러한 엔트리는 삭제된다(단계 S119).
TXSTATE 속성의 값이 "REMOVE"인 경우, TXID 속성의 값이 "txid"인지 아닌지의 여부가 점검된다(단계 S120). 그렇다면, REMOVE를 취소하기 위해 TXID 속성과 TXSTATE 속성이 삭제된다(단계 S121).
ABORT의 경우, 어보트되는 트랜잭션에 의해 만들어진 파일의 갱신이 버퍼영역(62)상에서 취소됨을 주지해야 한다. 이 점에서, 동일한 파일을 갱신한 다른 이미 커미트된 트랜잭션이 있으면, 어보트되는 트랜잭션에 의해 갱신되는 상태가 또한 이미 파일에 기록되어졌을 가능성이 있다. 그러나, ABORT 처리와 동시에 하드디스크(10)로 버퍼영역(62)상의 취소로부터 초래되는 파일을 기록하는데 이는 절대적으로 필요한 것은 아니다. 이는 다른 트랜잭션이 동일한 파일을 다음에 갱신함과 더불어 이러한 트랜잭션이 커미트될 때, 중지된 트랜잭션에 의한 갱신의 취소는 하드디스크(10)상에 올바로 반영되기 때문이다. 또한, 이러한 파일을 다음에 갱신하는 트랜잭션이 없음과 더불어 취소가 시스템의 오류에 기인하여 잊혀진 경우에도, 하드디스크(10)상의 파일에 남아있는 커미트 되지 않은 트랜잭션에 의해 갱신되는 상태가 이하 설명하는 복구 처리에 의해 다음에 이러한 파일을 오픈함과 동시에 취소되게 된다.
다음에, 복구에 대한 처리 절차를 설명한다.
이러한 실시예의 트랜잭션 처리 시스템에 있어서, 커미트 되지 않은 트랜잭션에 의해 갱신되는 상태의 파일은 하드디스크(10)로 다시 기록된다. 이러한 이유에 대해, 오류가 시스템에서 발생될 때, 복구 처리를 수행함으로써 갱신되는 상태는 남겨지게 되고, 따라서 갱신되는 상태에서 남겨진 갱신을 취소시키는 것이 필요로 된다. 통상적인 트랜잭션 처리 시스템에 있어서, 이러한 복구 처리는 오류 발생 후 재활성화와 동시에 즉각적으로 완전하게 수행되어야만 한다. 이러한 이유에 대해, 오류 후 재활성화의 부담이 커진다. 반면, 본 실시예의 트랜잭션 처리 시스템에 있어서, 다음에 하드디스크(10)로부터 해당 파일을 독출함과 동시에 복구 처리를 수행하기에 충분하다.
도 20은 복구를 위한 예시적 처리절차를 나타낸 것이다.
공유 데이터 관리 유니트(4)가 아직 버퍼영역(62)에 있지 않은 파일을 언급하기 위해 파일시스템(6)에 대한 오픈 처리를 명령할 때, 파일시스템(6)은 하드디스크(10)로부터 해당 파일을 독출하여 버퍼영역(62)에 복사한다. 이 점에서, 공유 데이터 관리 유니트(4)는 파일의 모든 엔트리에 대해 도 20에 도시된 절차에 의해 복구 처리를 수행한다.
먼저, 해당 엔트리의 TXSTATE 속성의 값을 점검한다(단계 S201).
TXSTATE 속성이 없으면, 이러한 엔트리에 억세스되는 트랜잭션이 없기 때문에 동작이 필요로 되지 않는다.
TXSTATE 속성의 값이 "READ"인 경우, TXID 속성과 TXSTATE 속성이 삭제된다(단계 S202).
TXSTATE 속성의 값이 "UPDATE"인 경우, 이는 몇몇 트랜잭션이 이러한 엔트리를 갱신하는 동안 오류가 야기된 것을 의미하고, 따라서 이러한 갱신은 취소된다. 이 시점에서의 동작은 해당 엔트리에 〈oldvalue〉부가 있는지 없는지의 여부에 따라 다르다. 해당 엔트리에 〈oldvalue〉부가 있으면(단계 S203 예), 이는 해당 트랜잭션의 개시 전에 존재하였던 엔트리이고, 따라서 다시 갱신되기 전의 값을 갖기 위해 현재 〈value〉부가 삭제됨과 더불어 〈oldvalue〉부의 태그 명이 〈value〉부로 변화되는 한편, TXID 속성과 TXSTATE 속성이 삭제된다(단계 S204). 해당 엔트리에 〈oldvalue〉부가 없으면(단계 S203 아니오), 이는 이러한 트랜잭션에 의해 새롭게 생성된 엔트리이고, 따라서 이러한 엔트리는 삭제된다(단계 S205).
TXSTATE 속성의 값이 "REMOVE"인 경우, REMOVE를 취소하기 위해 TXID 속성과 TXSTATE 속성을 삭제한다(단계 S206).
이러한 복구 처리가 파일이 디스크로부터 독출될 때 마다 매번 수행되면, 부담이 매우 커지게 된다. 이러한 이유에 대해, 파일이 기록될 때, 해당 파일이 갱신된 상태를 포함하는지 아닌지의 여부가 용이하게 인식되는 것에 의해 파일은 정보를 갖고 부가될 수 있고, 따라서 부담이 경감될 수 있다. 특히, 예컨대 도 21에 도시된 바와 같이, 몇몇 트랜잭션이 현재 파일을 갱신하고 있는가의 여부를 나타내는 정보는 문서의 경로 엘리먼트(route element)의 속성으로서 제공된다. 도 21의 예에 있어서, 이는 루트(root) 〈KVtable〉의 속성 TXNUM에 의해 나타내어지고, 이는 트랜잭션 (1)과 트랜잭션 (2)의 2개의 트랜잭션이 현재 파일을 갱신중임을 나타낸다. 이러한 방법에서, 파일이 먼저 디스크로부터 독출될 때, 그 루트 엘리먼트가 TXNUM 속성을 갖는다면, 도 20의 복구 처리가 해당 파일의 모든 엔트리에 대해 수행된다. TXNUM 속성이 없으면, 복구 처리가 불필요하다.
여기서, 이제까지의 설명에 있어서, 엔트리가 루트 엘리먼트 〈KVtable〉 하의 평탄 구조(flat structure)에 기록되지만, 이는 또한 예컨대 잘 알려진 2진 트리 구조(binary tree structure)와 같은 구조를 이용함으로써 더 빠른 검색을 실현시키는 것이 가능하다. 도 22는 이러한 경우에 있어서 파일 데이터의 예를 나타낸다. 이러한 예에 있어서, 엔트리는 〈key〉 및 〈value〉에 더하여 〈less〉 및 〈greater〉로 불리워지는 엘리먼트를 갖는다. 2진 트리 구조는 〈less〉 아래에 해당 엘리먼트 미만의 키의 값을 갖는 엔트리와 〈greater〉 아래에 해당 엘리먼트 보다 더 큰 키의 값을 갖는 엔트리를 위치시키는 것에 의해 형성된다. 이러한 경우에 있어서도, 트랜잭션에 의한 UPDATE 또는 REMOVE를 위한 갱신은 평탄 구조를 이용하는 경우와 유사하게 취급될 수 있다. 그러나, 엔트리의 부가나 삭제에 의해 트리 구조를 재편성하도록 처리할 필요가 있다. 이러한 처리는 통상적 트리 구조에서의 노드의 부가/삭제를 위한 처리와 정확히 동일하다. 트리 구조를 재편성함과 동시에, 이는 또한 브랜치가 양호하게 균형 되어진 것과 같은 AVL 트리와 같은 방법을 이용하는 것에 의해 트리를 재편성하거나, 더 높은 억세스 주파수가 트리의 루트에 더 근접 위치됨에 따른 엔트리와 같은 트리를 재편성하는 것이 가능하다
이는 또한 잘 알려진 B-TREE와 같은 관리 구조를 이용하는 분할하여 파일을 관리하는 본 발명의 트랜잭션 처리 시스템에 대해 가능하다. 도 23, 24, 25, 26은 이러한 경우의 예를 나타낸다. 여기서, 엔트리 부가/삭제 처리는 하나의 파일이 최대 6개의 엔트리를 포함함과 더불어 엔트리의 수가 6개를 넘을 때 파일이 분할되는 B-TREE에서의 알고리즘과 동일한 알고리즘에 의해 수행된다. 도 23, 24, 25, 26의 예에서, FILE001은 루트 파일이고, FILE002, FILE003, FILE004는 루트 파일 아래에 위치한 파일이다.
도 27은 이러한 방법에 있어서 다수의 파일로 분할하여 정보의 하나의 세트를 기록 및 관리하는 트랜잭션 처리 시스템의 예시적 구성을 나타낸 것이다.
도 27의 구성은 공유 데이터 관리 유니트(4)가 갱신 그룹 테이블(42)을 갖는다는 것에서 도 1의 그것과 다르다. 이하 설명하는 바와 같이, 파일 간의 구성이 다수의 파일간의 정보를 이동시킴으로써 변화될 때, 커미트와 동시에 이러한 파일을 하드디스크(10)에 다시 기록하는 것이 필요하다. 갱신 그룹 테이블(42)은 하드디스크(10)에 다시 기록되어야만 하거나 커미트와 동시에 삭제되는 파일의 이러한 그룹을 관리하기 위해 이용된다.
도 28은 갱신 그룹 테이블(42)의 예를 나타낸 것이다. 이러한 갱신 그룹 테이블은 커미트와 동시에 다시 기록되거나 삭제되어야만 하는 파일의 각 그룹의 멤버 파일을 기록한다. 도 28에 있어서, FILE001, FILE002, FILE005는 예컨대 그룹을 구성한다.
여기서, 도 23, 24, 25, 26의 FILE001로부터 시작하는 키로서 "SESAME"을 갖춘 엔트리를 검색하기 위한 절차가 FILE001의 루트로부터 시작된다. 먼저, 키가 "KIWIFRUIT"와 비교될 때, 이는 키가 greater임이 찾아진다. 다음에, 키가 〈greater〉측상의 "ROSEMARY"와 비교될 때, 키가 greater임이 찾아진다. 다음에, 〈greater〉측이 언급될 때, 이는 FILE004에 대한 링크(link)이다. 이어서, 검색이 FILE004로 시프트되고, 키가 "THYME"와 비교될 때, 키가 less임이 찾아진다. 다음에, 〈less〉측이 언급될 때, 키 "SESAME"을 갖는 엔트리가 찾아진다. 엔트리가 이러한 방법으로 한번 찾아지면, 엔트리상에서 이어지는 동작은 상기한 예와 유사하고, 따라서 갱신되는 상태가 TXID 속성과 TXSTATE 속성을 부가하는 것에 의해 복구 가능 형태로 유지된다.
예컨대, 도 23, 24, 25, 26의 상태에서의 데이터와 관련하여, 트랜잭션 (1)은 "¥250"에 대해 키 "ORANGE"를 갖는 엔트리의 값과, "¥150"에 대해 키 "SESAME"을 갖는 엔트리의 값을 갱신하는 한편, 트랜잭션 (1)과 병렬로 동작하는 트랜잭션 (2)는 키 "VODKA"를 갖는 엔트리를 삭제한다. 이러한 상태에서, 도 25, 26의 데이터는 도 29, 30에 도시된 바와 같이 된다. UPDATE 또는 REMOVE와 같은 갱신되는 상태를 갖춘 방법은 하나의 파일에 모든 엔트리를 넣는 경우와 동일하고, 따라서 갱신된 엔트리는 2개의 속성 TXID와 TXSTATE를 부가하는 것에 의해 관리된다.
도 29 및 도 30의 상태에서 트랜잭션 (1)과 트랜잭션 (2)가 각각 연속적으로 커미트 및 어보트되는 경우의 예시적 동작을 이하 설명한다.
먼저, 트랜잭션 (1)의 커미트와 동시에, 트랜잭션 (1)에 의해 갱신된 엔트리가 FILE003 및 FILE004에만 존재한다. 이어서, 도 31 및 도 32의 상태의 데이터가 FILE003 및 FILE004와 관련하여 커미트 처리를 수행하는 것에 의해 얻어지고, 이러한 데이터가 트랜잭션 (1)에 의해 갱신이 이루어진 다른 파일과 동시에 하드디스크(10)에 다시 기록된다. 이 시점에서, 상기한 실시예와 마찬가지로 FILE004는 트랜잭션 (2)에 의해 갱신되는 상태를 포함한다.
다음에, 트랜잭션 (2)의 어보트와 동시에, 트랜잭션 (2)에 의해 갱신된 엔트리는 FILE004에만 존재한다. 결과적으로, 도 33의 상태의 데이터는 FILE004와 관련한 어보트 처리를 수행함으로써 얻어지고, 이 때 어보트 처리가 종료된다. 상기한 실시예와 마찬가지로, 어보트 처리와 동시에 하드디스크(10)로 파일을 다시 기록할 필요가 없다.
여기서, 도 34, 35, 36은 새로운 트랜잭션 (3)이 키 "DODO"와 키 "HOOPOE"에 대해 엔트리를 부가하고, 각각 "¥5000000" 및 "¥980000"로 그 값을 설정한 후의 상태를 나타낸다. 여기서, 하나의 파일에 들어갈 수 있는 엔트리의 수는 미리 결정됨에 따라 하나의 파일의 용량을 초과하는 엔트리의 부가가 이러한 예시적 갱신에서 시도될 때, 파일 간에서 재편성이 야기되어 엔트리가 이동된다. 도 34, 35, 36의 예에서, 키 "DODO" 및 키 "HOOPOE"에 대한 엔트리의 부가는 FILE002에 대한 양쪽 부가이다. 따라서, 엔트리가 이동되는 동안 FILE002가 분할되어 새로운 파일 FILE005가 생성된다.
파일간의 엔트리의 이동이 이러한 방법으로 야기될 때, 또는 새로운 파일이 부가되거나 반대로 파일이 삭제될 때, 이러한 파일의 갱신은 동시에 하드디스크(10)에 반영되어야만 한다. 이러한 이유에 대해, 본 실시예의 트랜잭션 처리 시스템의 공유 데이터 관리 유니트(4)는 갱신 그룹 테이블(42)을 관리한다. FILE002의 분할이 FILE002에 대한 엔트리의 부가의 결과로서 야기되고, FILE001의 갱신과 FILE005의 생성이 도 34, 35, 36의 예로서 야기될 때, 공유 데이터 관리 유니트(4)는 단일 그룹으로서 FILE001, FILE002, FILE005를 등록한다.
트랜잭션 (3)의 커미트와 동시에, 트랜잭션 (3)에 의해 갱신된 엔트리는 FILE001 및 FILE005에만 존재하지만, 이는 FILE002이 또한 동시에 재기록 되어야만 하는 갱신 그룹 테이블(42)에 대해 언급함으로써 확인할 수 있다. 따라서, 커미트 처리가 수행되기 위한 FILE001 및 FILE005 뿐만 아니라 FILE002을 포함하는 3개의 파일은 도 37 및 도 38에 도시된 바와 같이 하드디스크(10)에 다시 기록된다.
상기한 바와 같이, 하나의 트랜잭션을 커미팅하는 경우에 있어서, 커미트되어지는 해당 트랜잭션에 의해 갱신, 부가 또는 삭제되는 데이터를 포함하는 파일이 하드디스크에 다시 기록되어지는 파일을 위한 후보로서 먼저 선택된다. 갱신 그룹 테이블이 이러한 후보 파일중 어느 것을 포함하는 그룹을 갖는다면, 해당 그룹의 모든 파일은 후보 파일에 부가된다. 어느 다른 후보를 찾는 것이 불가능하게 될 때까지 이러한 동작을 반복함으로써, 하드디스크에 다시 기록되어야만 하는 모든 파일과, 삭제되어야만 하는 모든 파일을 한번에 찾는 것이 가능하다. 커미트 처리가 하드디스크에 다시 기록해야만 하는 이러한 파일을 다시 기록하고, 하드디스크로부터 삭제되어져야만 하는 이러한 파일을 삭제하는 것에 의해 완료된다.
본 발명에 있어서, 커미트되어지는 트랜잭션에 의해 갱신된 파일을 하드디스크에 다시 기록함과 동시에, 커미트 되지 않은 다른 트랜잭션이 동일한 파일을 갱신 처리하는 중임에도 불구하고, 이러한 파일은 커미트 되지 않은 트랜잭션에 의해 갱신되는 처리에서의 데이터와, 해당 갱신을 취소하기 위해 필요한 정보에 따라 하드디스크에 다시 기록된다. 이 시점에서, 이러한 파일과 다른 파일 사이에서 데이터의 이동, 새로운 파일의 부가 또는 갱신과 관련된 몇몇 파일의 삭제, 부가, 또는 커미트 되지 않은 트랜잭션에 의한 데이터의 삭제를 포함하는 경우가 있을 수 있다. 이러한 경우에 있어서, 그렇지 않다면, 이러한 상태에서 오류가 야기되면 이는 커미트 되지 않은 트랜잭션에 의해 이루어진 갱신을 취소하는 것이 불가능하게 되기 때문에, 커미트 되지 않은 트랜잭션에 의해 부가된 파일은 또한 하드디스크에 다시 기록되어야만 하고, 커미트 되지 않은 트랜잭션에 의해 삭제된 파일은 하드디스크로부터 또한 삭제되어야만 한다.
상기한 갱신 그룹 테이블은 하드디스크에 다시 기록되어야만 하는 파일과, 커미트 처리와 동시에 하드디스크로부터 삭제되어야만 하는 파일간의 모든 그룹 관계를 기록하고, 따라서 상기한 커미트 처리 절차의 갱신 그룹 테이블에 대해 언급하는 것에 의해 파일을 선택함으로써 하나의 트랜잭션의 커미트 처리와 동시에 다시 기록되거나 삭제되어야만 하는 모든 후보 파일을 선택하는 것이 가능하다.
데이터가 상기한 바와 같이 다수의 파일을 거쳐 분할 저장되는 본 발명의 트랜잭션 처리 시스템을 실현하는 경우, 다양한 경계에 따라 하나의 파일에 들어갈 수 있는 엔트리의 수를 제한하는 것이 가능하다. 예컨대, 하나의 파일의 엔트리의 수가 도 34, 35, 36의 예와 같이 제한되는 구성과, 파일의 물리적 구조에 따라 엔트리의 수를 제한하는 구성, 부가/삭제가 빈번한 정보에 따라 엔트리의 최대 수를 변화시키기 위한 구성 및, 이러한 구성의 조합등을 이용하는 것이 가능하다.
본 실시예에서와 같이 다수의 파일을 거쳐 분할하여 데이터를 저장하기 위한 구성은 엔트리의 수가 클 때에도 엔트리의 일부분만이 갱신되면, 커미트와 동시에 디스크에 기록되어지는 데이터의 양이 감소되어질 수 있다는 이점을 갖는다. 하나의 파일에 모든 엔트리를 넣기 위한 구성에 있어서, 하나의 큰 파일의 일부분 만이 갱신될 때 커미트와 동시에 디스크에 전체 파일을 다시 기록할 필요가 있다.
이제까지의 설명은 키와 값의 쌍의 데이터베이스등의 구성을 갖춘 데이터에 대해 본 발명을 적용하는 예시적 경우에 대해 직접 설명하였다. 이하, 더욱 일반적인 XML 문서에 대해 본 발명을 적용하는 경우가 다른 예로서 설명된다.
도 39는 일반적 XML 문서의 예를 나타낸 것이고, 도 40은 도 39의 문서에서 "〈title〉NAGOYA〈/title〉"의 〈chapter〉의 〈author〉가 "MISOKATSU"로 변경된 트랜잭션 (1)과, "〈chapter〉〈title〉HAKATA〈/title〉〈author〉KARASHIMENTAIKO〈/author〉 〈/chapter〉"를 부가한 트랜잭션 (2)의 데이터의 상태를 나타낸 것이다.
그 후, 트랜잭션 (1)의 커미트와 동시에 도 41에 나타낸 상태로 갱신되고, 이러한 데이터가 디스크에 다시 기록된다.
더욱이, 데이터가 트랜잭션 (2)의 커미트와 동시에 도 42에 도시된 상태로 갱신되고, 이러한 데이터가 디스크로 다시 기록된다.
처리 타켓으로서 이러한 일반적 XML 문서를 이용하는 경우에도, 오류 발생에 기인하여 갱신된 상태에서 남겨진 파일은 다음에 디스크로부터 이러한 파일을 독출함과 동시에 점검되고, TXSTATE로서 ADD를 갖는 엘리먼트를 삭제함과 더불어 TXSATAE로서 REMOVE를 갖는 엘리먼트를 남기기 위한 복구 처리가 수행되고, 따라서 커미트 되지 않은 트랜잭션에 의해 이루어진 잠정적 갱신이 취소된다.
상기한 바와 같이, 본 발명에 따르면, 간단한 처리 절차에 의해 병렬로 동작하는 다수의 트랜잭션에 의해 파일의 갱신을 실현하는 것이 가능하다. 본 발명에 있어서, 통상적인 WAL 구성 또는 그림자 페이지 구성에서 특정 로그 관리를 수행하는 경우와는 달리, 데이터 갱신, 커미트, 또는 복구와 동시에 복잡하게 처리할 필요가 없다.
또한, 본 발명에 있어서, 재활성화와 동시에 완전하게 오류 발생 후에 복구 처리를 수행할 필요가 없고, 이는 다음에 해당 파일을 이용함과 동시에 복구 처리를 수행하기에 충분하며, 따라서 복구 처리의 부담이 작다.
더욱이, 본 발명에 있어서, 다수의 파일을 거쳐 분할하여 하나의 데이터를 관리하는 것에 의해 갱신되는 파일을 커미팅함과 동시에 디스크에 다시 기록되는 데이터의 양을 감소시키는 것이 가능하다.
따라서, 본 발명에 따르면, 병렬로 동작하는 다수의 트랜잭션에 의한 파일 갱신 처리 뿐만 아니라 오류 발생과 동시에 복구 처리를 용이하고 효과적으로 실현할 수 있는 트랜잭션 처리 방법과 트랜잭션 처리 시스템을 제공하는 것이 가능하다.
본 발명에 있어서, 하나의 트랜잭션에 의해 갱신된 파일이 해당 트랜잭션의 커미트와 동시에 다른 트랜잭션에 의해 또한 갱신되고, 해당 다른 트랜잭션에 의해 이루어진 갱신의 내용과 해당 갱신을 취소하기 위한 정보가 또한 파일에 기록됨과 더불어 이러한 파일이 안정된 메모리장치(예컨대, 하드디스크)에 기록되며, 따라서 파일로부터 분리적으로 로그를 제공하는 것에 의한 복잡한 관리를 이용하는 것 없이, 트랜잭션의 원자성(시스템에 오류가 발생되는 경우에도 보증이 가능하고, 각 트랜잭션에 의해 이루어진 갱신이 안정된 메모리장치상에서 모두 유효(커미트) 또는 무효(어보트)로 되고, 따라서 다른 상태가 없다는 사실)을 유지하는 동안 병렬로 다수의 트랜잭션에 의해 하나의 파일의 데이터의 갱신을 실현하는 것이 가능하다.
하나의 트랜잭션이 커미트된 후 동일한 파일을 갱신하는 다른 트랜잭션을 커미팅하는 경우, 트랜잭션의 원자성을 유지하기 위해, 후에 커미트 되어지는 트랜잭션에 의해 이루어진 갱신의 내용을 포함하는 파일과, 후에 커미트되어지는 트랜잭션에 의해 재기록되지 않는 초기에 커미트되는 트랜잭션에 의해 이루어진 갱신의 내용의 일부는 (후에 커미트되어지는 트랜잭션에 의해 이루어진 갱신의 내용과 해당 갱신을 취소하기 위한 정보를 포함하는) 안정된 메모리장치에 기록되는 파일에 초기에 중복 기록된다. 하나의 트랜잭션이 커미트된 후 동일한 파일을 갱신하는 다른 트랜잭션을 중지시키는 경우에 있어서, 중지되는 트랜잭션에 의해 이루어진 갱신이 취소되는 상태의 파일이 (후에 커미트되어지는 트랜잭션에 의해 이루어진 갱신의 내용과 해당 갱신을 취소하기 위한 정보를 포함하는) 안정된 메모리장치에 기록되는 파일에 초기에 중복 기록될 수 있지만, 다음에 해당 파일을 독출함과 동시에 복구 처리를 수행함으로써, 트랜잭션의 원자성은 어보트와 동시에 소정 동작 없이 유지될 수 있게 됨을 주지하여야 한다.
동일한 파일을 갱신하는 다른 트랜잭션이 하나의 트랜잭션이 커미트된 후 커미트 또는 어보트되기 전에 시스템에서 오류가 야기되는 경우에도, 커미트된 트랜잭션에 의해 이루어진 갱신은 이미 안정된 메모리장치상의 파일에 올바로 반영된다. 더욱이, 복구 처리를 수행함으로써 이러한 트랜잭션이 어보트된다면, 다른 커미트 되지 않은 트랜잭션에 의해 이루어진 갱신을 취소시키는 것이 가능하고, 따라서 트랜잭션의 일관성이 유지될 수 있게 된다. 더욱이, 오류로부터 복구와 동시에 이러한 복구 처리를 수행하는 것이 필요 없고, 다음에 해당 파일을 독출함과 동시에 이러한 복구 처리를 수행하기에 충분하다.
또한, 다수의 파일에 대해 기록을 동기화함으로써, 커미트의 시간까지 그 처리의 개시 이후로 하나의 트랜잭션에 의해 이루어진 다수의 파일과 관련한 갱신이 안정된 메모리장치상에서 모두 유효(커미트) 또는 모두 무효(어보트)로 되는 것을 보증하는 원자적 기록을 실현시키는 것이 가능하고, 따라서 다른 상태가 없다(시스템에 오류가 야기되는 경우에도, 나머지가 무효로 되는 동안 하나의 트랜잭션에 이해 이루어진 갱신의 일부분만이 유효로 될 가능성이 없다).
상기한 설명의 안정된 메모리장치는 전원이 턴 오프될 때에도 저장된 내용이 사라지지 않게 되는, 예컨대 하드디스크와 같은 메모리장치로 언급됨을 주지하여야 한다.
또한, 본 발명에 따른 상기 설명된 실시예는 본 명세서의 기술에 따라 프로그램된 통상적인 일반 목적 디지털 컴퓨터를 이용하여 컴퓨터 분야에 통상적인 지식을 가진 자에 의해 편리하게 수행되어질 수 있음을 주지하여야 한다. 적절한 소프트웨어 코딩이 본 명세서에 개시된 기술을 기초로 소프트웨어 분야에 통상적인 지식을 가진 자에 의해 통상적인 프로그래머에 의해 용이하게 준비될 수 있다.
특히, 상기 설명한 실시예의 트랜잭션 처리 시스템은 소프트웨어 패키지의 형태로 용이하게 실현될 수 있다.
이러한 소프트웨어 패키지는 본 발명의 개시된 기능 및 처리를 수행하도록 컴퓨터를 프로그램하는데 이용되는 저장된 컴퓨터 코드를 포함하는 저장 매체를 채용하고 있는 컴퓨터 프로그램 제품일 수 있다. 저장 매체는 제한되는 것은 아니지만, 소정 형태의 통상적인 플로피 디스크, 광디스크, CD-ROM, 자기-광 디스크, ROM, RAM, EPROM, EEPROM, 자기 또는 광학 카드, 또는 전자 명령을 저장하기 위한 다른 적절한 매체를 포함할 수 있다.
한편, 본 발명은 상기한 실시예로 한정되는 것은 아니고, 본 발명의 요지를 벗어나지 않는 범위내에서 다양하게 변형하여 실시할 수 있음은 물론이다.
이상 설명한 바와 같이 본 발명에 의하면, 병렬로 다수의 트랜잭션 동작에 의한 파일 갱신 처리 뿐만 아니라 오류 발생과 동시에 복구 처리를 용이하고 효과적으로 실현할 수 있게 된다.

Claims (12)

  1. 버퍼영역으로 독출되는 하나의 파일에 대해 갱신을 수행하는 다수의 트랜잭션을 실행하는 단계와;
    다수의 트랜잭션 사이에서 하나의 트랜잭션의 커미트와 동시에 상기 하나의 파일을 안정된 메모리장치로 기록하는 단계를 구비하여 이루어지고, 상기 하나의 파일이 상기 하나의 트랜잭션에 의해 이루어진 커미트된 갱신의 내용 및 다른 커미트 되지 않은 트랜잭션에 의해 이루어진 커미트 되지 않은 갱신의 내용과, 커미트 되지 않은 갱신을 취소하기 위한 정보를 포함하는 것을 특징으로 하는 트랜잭션 처리 방법.
  2. 제1항에 있어서, 다수의 트랜잭션 사이에서 다른 트랜잭션의 커미트와 동시에 안정된 메모리장치에 기록된 상기 하나의 파일상에 갱신된 파일을 중복기록하는 단계를 더 구비하고, 갱신된 파일은 상기 다른 트랜잭션에 의해 이루어진 새롭게 커미트된 갱신의 내용과, 새롭게 커미트된 갱신의 내용과 충돌하지 않는 이미 커미트된 트랜잭션에 의해 이루어진 이미 커미트된 갱신의 내용의 일부를 포함하는 것을 특징으로 하는 트랜잭션 처리 방법.
  3. 제1항에 있어서, 커미트 되지 않은 트랜잭션에 의해 이루어진 커미트 되지 않은 갱신의 내용과 커미트 되지 않은 갱신을 취소하기 위한 정보가 안정된 메모리장치로부터 새롭게 독출되는 각 파일에 포함되어지는가의 여부를 점검하는 단계와;
    각 파일이 커미트 되지 않은 갱신의 내용과 커미트 되지 않은 갱신을 취소하기 위한 정보를 포함할 때, 커미트 되지 않은 갱신이 커미트 되지 않은 갱신을 취소하기 위한 정보를 이용하는 것에 의해 제거되는 상태에서 각 파일을 설정하는 단계를 더 구비하여 이루어진 것을 특징으로 하는 트랜잭션 처리 방법.
  4. 제1항에 있어서, 상기 하나의 트랜잭션 또한 버퍼영역상의 상기 다른 파일에 대해 갱신 처리를 수행하고, 상기 다른 파일이 상기 하나의 트랜잭션에 의해 이루어진 상기 다른 파일에 대해 커미트된 갱신의 내용을 포함할 때, 안정된 메모리장치로 상기 하나의 파일의 기록과 동기하여 안정된 메모리장치에 다른 파일을 기록하는 단계를 더 구비하여 이루어진 것을 특징으로 하는 트랜잭션 처리 방법.
  5. 제1항에 있어서, 상기 하나의 파일이 분할적으로 정보의 하나의 세트를 기록하는 다수의 파일중 하나인 것을 특징으로 하는 트랜잭션 처리 방법.
  6. 제5항에 있어서, 상기 하나의 트랜잭션에 의해 이루어진 커미트된 갱신과 관련하여 버퍼영역상에서 새로운 파일의 부가와, 파일 간에서 데이터의 이동 및, 불필요한 파일의 삭제중 적어도 하나를 수행함으로써 다수의 파일중 각 하나의 크기가 규정된 경계에 따르는 다수의 파일을 조정하는 단계를 더 구비하여 이루어지고;
    기록단계는 또한 안정된 메모리장치로 커미트된 갱신과 관련하여 조정단계에 의해 새롭게 갱신 또는 생성되는 파일의 기록과, 상기 하나의 파일의 기록과 원자적으로 안정된 메모리장치로부터 커미트된 갱신과 관련하여 조정단계에 의해 삭제되는 파일의 삭제을 수행하는 것을 특징으로 하는 트랜잭션 처리 방법.
  7. 제6항에 있어서, 조정단계는 또한 다른 커미트 되지 않은 트랜잭션에 의해 이루어진 커미트 되지 않은 갱신과 관련하여 다수의 파일을 조정하고,
    기록단계는 또한 안정된 메모리장치로 커미트되지 않은 갱신과 관련하여 조정단계에 의해 새롭게 갱신 또는 생성되는 파일의 기록과, 상기 하나의 파일의 기록과 원자적으로 안정된 메모리장치로부터 커미트 되지 않은 갱신과 관련하여 조정단계에 의해 삭제되는 파일의 삭제을 수행하는 것을 특징으로 하는 트랜잭션 처리 방법.
  8. 안정된 메모리장치로부터 버퍼영역상으로 트랜잭션 처리 타켓이 되는 하나의 파일을 독출하도록 구성된 독출 유니트와;
    버퍼영역상의 상기 하나의 파일에 다수의 트랜잭션중 각 하나와 갱신을 취소하기 위한 정보에 의해 이루어진 상기 하나의 파일에 대해 갱신의 내용을 기록함으로써 상기 하나의 파일을 갱신하도록 구성된 갱신 유니트 및;
    상기 다수의 트랜잭션 사이에서 하나의 트랜잭션의 커미트와 동시에 안정된 메모리장치에, 상기 하나의 트랜잭션에 의해 이루어진 커미트된 갱신의 내용 및 다른 커미트 되지 않은 트랜잭션에 의해 이루어진 커미트 되지 않은 갱신의 내용과 커미트 되지 않은 갱신을 취소하기 위한 정보를 포함하는 상기 하나의 파일을 기록하도록 구성된 기록 유니트를 구비하여 구성된 것을 특징으로 하는 트랜잭션 처리 시스템.
  9. 제8항에 있어서, 기록 유니트는 버퍼영역상에서 갱신에 의해 갱신된 상기 하나의 파일로부터 상기 하나의 트랜잭션에 의해 이루어진 커미트된 갱신을 취소하기 위한 정보를 삭제함으로써 안정된 메모리장치에 기록되어지는 상기 하나의 파일을 얻는 것을 특징으로 하는 트랜잭션 처리 시스템.
  10. 제8항에 있어서, 독출 유니트가 분할적으로 정보의 하나의 세트를 기록하는 상기 하나의 파일을 포함하는 다수의 파일을 독출하고,
    갱신 유니트가 또한 상기 하나의 트랜잭션에 의해 이루어진 커미트된 갱신과 관련하여 버퍼영역상에서 새로운 파일의 부가와, 파일 간에서의 데이터의 이동 및, 불필요한 파일의 삭제중 적어도 하나를 수행함으로써 다수의 파일중 각 하나의 크기가 규정된 경계에 따르는 다수의 파일의 조정을 이루며,
    기록 유니트가 또한 안정된 메모리장치에 커미트된 갱신과 관련하여 조정에 의해 새롭게 갱신 또는 생성되는 파일의 기록과, 상기 하나의 파일의 기록과 원자적으로 안정된 메모리장치로부터 커미트된 갱신과 관련하여 조정에 의해 삭제된 파일의 삭제를 수행하는 것을 특징으로 하는 트랜잭션 처리 시스템.
  11. 제10항에 있어서, 갱신 유니트는 또한 다른 커미트 되지 않은 트랜잭션에 의해 이루어진 커미트 되지 않은 갱신과 관련하여 다수의 파일의 조정을 이루고,
    기록 유니트가 또한 안정된 메모리장치에 커미트 되지 않은 갱신과 관련하여 조정에 의해 새롭게 갱신 또는 생성되는 파일의 기록을 수행하는 기록과, 상기 하나의 파일의 기록과 원자적으로 안정된 메모리장치로부터 커미트 되지 않은 갱신과 관련하여 조정에 의해 삭제되는 파일의 삭제를 수행하는 것을 특징으로 하는 트랜잭션 처리 시스템.
  12. 트랜잭션 처리 시스템으로서 기능하도록 컴퓨터를 야기시키기 위해 그 내에 내장된 컴퓨터 독출 가능 프로그램을 갖춘 컴퓨터 이용 가능 매체에 있어서,
    컴퓨터 독출 가능 프로그램이,
    안정된 메모리장치로부터 버퍼영역 상으로 트랜잭션 처리 타켓으로 되는 하나의 파일을 독출하도록 상기 컴퓨터를 야기시키기 위한 제1컴퓨터 독출 가능 프로그램 코드와;
    버퍼영역상의 상기 하나의 파일에, 다수의 트랜잭션의 각 하나와 갱신을 취소하기 위한 정보에 의해 이루어진 상기 하나의 파일과 관련하는 갱신의 내용을 기록하는 것에 의해 상기 하나의 파일을 갱신하도록 상기 컴퓨터를 야기시키기 위한 제2컴퓨터 독출 가능 프로그램 코드 및;
    상기 다수의 트랜잭션 간에서 하나의 트랜잭션의 커미트와 동시에 안정된 메모리장치에 상기 하나의 트랜잭션에 의해 이루어진 커미트된 갱신의 내용 및 다른 커미트 되지 않은 트랜잭션에 의해 이루어진 커미트 되지 않은 갱신의 내용과, 커미트 되지 않은 갱신을 취소하기 위한 정보를 포함하는 상기 하나의 파일을 기록하도록 상기 컴퓨터를 야기시키기 위한 제3컴퓨터 독출 가능 프로그램 코드를 포함하는 것을 특징으로 하는 컴퓨터 이용 가능 매체.
KR10-2000-0056689A 1999-09-29 2000-09-27 효과적인 파일 갱신 처리 및 복구 처리를 이용하는트랜잭션 처리 시스템 KR100398753B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP1999-276264 1999-09-29
JP27626499A JP4237354B2 (ja) 1999-09-29 1999-09-29 トランザクション処理方法及びトランザクション処理システム

Publications (2)

Publication Number Publication Date
KR20010050667A true KR20010050667A (ko) 2001-06-15
KR100398753B1 KR100398753B1 (ko) 2003-09-19

Family

ID=17567023

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2000-0056689A KR100398753B1 (ko) 1999-09-29 2000-09-27 효과적인 파일 갱신 처리 및 복구 처리를 이용하는트랜잭션 처리 시스템

Country Status (5)

Country Link
US (2) US6519614B1 (ko)
EP (1) EP1089177B1 (ko)
JP (1) JP4237354B2 (ko)
KR (1) KR100398753B1 (ko)
TW (1) TW550474B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8473464B2 (en) 2009-01-30 2013-06-25 Samsung Electronics Co., Ltd. Method and device for data recovery using bit logging
KR20220074537A (ko) * 2020-11-27 2022-06-03 이화여자대학교 산학협력단 가상 머신 환경에서의 블록 커밋 방법 및 그 방법을 수행하는 가상화 시스템

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4237354B2 (ja) * 1999-09-29 2009-03-11 株式会社東芝 トランザクション処理方法及びトランザクション処理システム
US7512635B1 (en) * 2000-12-18 2009-03-31 Bmc Software, Inc. System and method for updating information on a computer system using a limited amount of space
US7555500B2 (en) * 2001-02-15 2009-06-30 Teradata Us, Inc. Optimized end transaction processing
KR100625595B1 (ko) * 2001-05-28 2006-09-20 한국전자통신연구원 트랜잭션 처리 시스템의 병렬 로깅 방법 및 트랜잭션 로그 처리 시스템
US6857053B2 (en) * 2002-04-10 2005-02-15 International Business Machines Corporation Method, system, and program for backing up objects by creating groups of objects
US7430740B1 (en) * 2002-04-12 2008-09-30 724 Solutions Software, Inc Process group resource manager
US7076508B2 (en) * 2002-08-12 2006-07-11 International Business Machines Corporation Method, system, and program for merging log entries from multiple recovery log files
US7424671B2 (en) 2003-05-16 2008-09-09 Justsystems Canada Inc. Methods and systems for enabling collaborative authoring of hierarchical documents
US7243088B2 (en) * 2003-08-06 2007-07-10 Oracle International Corporation Database management system with efficient version control
US7490113B2 (en) * 2003-08-27 2009-02-10 International Business Machines Corporation Database log capture that publishes transactions to multiple targets to handle unavailable targets by separating the publishing of subscriptions and subsequently recombining the publishing
US7269588B1 (en) 2003-09-24 2007-09-11 Oracle International Corporation Neighborhood locking technique for increasing concurrency among transactions
US7555481B1 (en) 2003-10-28 2009-06-30 Oracle Corporation Method and apparatus for increasing transaction concurrency by early release of locks in groups
US7730489B1 (en) * 2003-12-10 2010-06-01 Oracle America, Inc. Horizontally scalable and reliable distributed transaction management in a clustered application server environment
US7739244B2 (en) * 2004-10-14 2010-06-15 Oracle International Corporation Operating logging for online recovery in shared memory information systems
JP2006163596A (ja) * 2004-12-03 2006-06-22 Internatl Business Mach Corp <Ibm> 情報処理システム、制御方法、及びプログラム
US7539694B1 (en) 2005-02-04 2009-05-26 Marvell International Ltd. Concurrently searching and manipulating binary trees
GB0506059D0 (en) * 2005-03-24 2005-05-04 Ibm Methods and apparatus for switching between data streams
US20060265485A1 (en) * 2005-05-17 2006-11-23 Chai Sek M Method and apparatus for controlling data transfer in a processing system
JP4571090B2 (ja) * 2006-03-28 2010-10-27 株式会社野村総合研究所 スケジューラプログラム、サーバシステム、スケジューラ装置
US8112396B2 (en) * 2006-06-07 2012-02-07 Emc Corporation Backup and recovery of integrated linked databases
US8010550B2 (en) * 2006-11-17 2011-08-30 Microsoft Corporation Parallelizing sequential frameworks using transactions
US7860847B2 (en) * 2006-11-17 2010-12-28 Microsoft Corporation Exception ordering in contention management to support speculative sequential semantics
US8024714B2 (en) 2006-11-17 2011-09-20 Microsoft Corporation Parallelizing sequential frameworks using transactions
JP4942519B2 (ja) * 2007-03-14 2012-05-30 株式会社日立製作所 情報処理装置、プログラム及び情報処理方法
US20080319878A1 (en) * 2007-06-22 2008-12-25 Thorsten Glebe Dynamic Time Series Update Method
EP2206051A2 (en) 2007-09-28 2010-07-14 Xcerion Aktiebolag Network operating system
US9325802B2 (en) * 2009-07-16 2016-04-26 Microsoft Technology Licensing, Llc Hierarchical scale unit values for storing instances of data among nodes of a distributed store
KR101587995B1 (ko) * 2009-10-28 2016-01-22 삼성전자주식회사 적응적 로깅 장치 및 방법
JP5427593B2 (ja) * 2009-12-25 2014-02-26 富士通フロンテック株式会社 情報処理装置、情報処理方法、および情報処理プログラム
US20120222051A1 (en) * 2011-02-25 2012-08-30 Microsoft Corporation Shared resource access verification
CN102131002B (zh) * 2011-03-29 2016-10-05 华为终端有限公司 一种手机数据处理方法和装置
US20150286671A1 (en) * 2012-10-29 2015-10-08 Nec Corporation Transaction system
US20160275089A1 (en) * 2015-03-17 2016-09-22 Netapp, Inc. Methods for implementing nosql database snapshots and devices thereof
US20200092160A1 (en) * 2018-09-18 2020-03-19 Electronics And Telecommunications Research Institute Fault event management method for controller-based restoration
US20230161740A1 (en) * 2020-04-08 2023-05-25 Ncipher Security Limited A device, a method of performing a file transaction, and a method of performing an access operation
KR102644923B1 (ko) 2020-12-01 2024-03-08 김동현 롤타입 방충망이 구비된 창틀
JP2023037883A (ja) * 2021-09-06 2023-03-16 キオクシア株式会社 情報処理装置

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4791556A (en) * 1984-08-29 1988-12-13 Vilkaitis John V Method for operating a computer which searches for operational symbols and executes functions corresponding to the operational symbols in response to user inputted signal
US4945474A (en) * 1988-04-08 1990-07-31 Internatinal Business Machines Corporation Method for restoring a database after I/O error employing write-ahead logging protocols
DE68927705T2 (de) * 1989-06-13 1997-07-17 Ibm Verfahren zum Entfernen unbestätigter Änderungen an gespeicherten Daten durch ein Datenbankverwaltungssystem
US5247672A (en) * 1990-02-15 1993-09-21 International Business Machines Corporation Transaction processing system and method with reduced locking
US5201044A (en) * 1990-04-16 1993-04-06 International Business Machines Corporation Data processing method for file status recovery includes providing a log file of atomic transactions that may span both volatile and non volatile memory
US5319773A (en) * 1990-05-16 1994-06-07 International Business Machines Corporation Asynchronous resynchronization of a commit procedure
EP0516900B1 (en) * 1991-06-04 1996-05-01 International Business Machines Corporation Data backup and recovery in a data processing system
US5504899A (en) * 1991-10-17 1996-04-02 Digital Equipment Corporation Guaranteeing global serializability by applying commitment ordering selectively to global transactions
JPH05233570A (ja) * 1991-12-26 1993-09-10 Internatl Business Mach Corp <Ibm> 異オペレーティング・システム間分散データ処理システム
US5522066A (en) * 1992-04-16 1996-05-28 Industrial Technology Research Institute Interface for accessing multiple records stored in different file system formats
US5452445A (en) * 1992-04-30 1995-09-19 Oracle Corporation Two-pass multi-version read consistency
US5530848A (en) * 1992-10-15 1996-06-25 The Dow Chemical Company System and method for implementing an interface between an external process and transaction processing system
GB2273180A (en) * 1992-12-02 1994-06-08 Ibm Database backup and recovery.
US5504883A (en) * 1993-02-01 1996-04-02 Lsc, Inc. Method and apparatus for insuring recovery of file control information for secondary storage systems
JPH06266597A (ja) * 1993-03-11 1994-09-22 Fujitsu Ltd ログ取得方式
JP2557192B2 (ja) * 1993-03-15 1996-11-27 インターナショナル・ビジネス・マシーンズ・コーポレイション トランザクション処理の同期方法、トランザクション処理のモニタ方法及びトランザクションのコミット処理方法
US5455944A (en) * 1993-03-16 1995-10-03 International Business Machines Corporation Method for managing logging and locking of page free space information in a transaction processing system
GB2281644A (en) * 1993-09-02 1995-03-08 Ibm Fault tolerant transaction-oriented data processing.
US5553279A (en) * 1993-10-08 1996-09-03 International Business Machines Corporation Lossless distribution of time series data in a relational data base network
US5561795A (en) * 1994-05-13 1996-10-01 Unisys Corporation Method and apparatus for audit trail logging and data base recovery
US5586312A (en) * 1994-10-11 1996-12-17 Unisys Corporation Method and apparatus for using an independent transaction processing application as a service routine
US5680610A (en) * 1995-01-19 1997-10-21 Unisys Corporation Method and apparatus for testing recovery scenarios in global transaction processing systems
EP0758114A4 (en) * 1995-02-28 1998-08-26 Ntt Data Tsushin Kk COOPERATIVE DISTRIBUTED SYSTEM, NEWSPAPER PROCESSING AND RECOVERY PROCESSING IN THE SAME
US5712971A (en) * 1995-12-11 1998-01-27 Ab Initio Software Corporation Methods and systems for reconstructing the state of a computation
US5850507A (en) * 1996-03-19 1998-12-15 Oracle Corporation Method and apparatus for improved transaction recovery
US5857204A (en) * 1996-07-02 1999-01-05 Ab Initio Software Corporation Restoring the state of a set of files
US5781910A (en) * 1996-09-13 1998-07-14 Stratus Computer, Inc. Preforming concurrent transactions in a replicated database environment
US6035379A (en) * 1997-01-09 2000-03-07 Microsoft Corporation Transaction processing for user data employing both logging and shadow copying
US6275863B1 (en) * 1999-01-25 2001-08-14 International Business Machines Corp. System and method for programming and executing long running transactions
JP4237354B2 (ja) * 1999-09-29 2009-03-11 株式会社東芝 トランザクション処理方法及びトランザクション処理システム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8473464B2 (en) 2009-01-30 2013-06-25 Samsung Electronics Co., Ltd. Method and device for data recovery using bit logging
KR20220074537A (ko) * 2020-11-27 2022-06-03 이화여자대학교 산학협력단 가상 머신 환경에서의 블록 커밋 방법 및 그 방법을 수행하는 가상화 시스템

Also Published As

Publication number Publication date
TW550474B (en) 2003-09-01
EP1089177B1 (en) 2014-04-30
US20030078910A1 (en) 2003-04-24
US6519614B1 (en) 2003-02-11
US6834275B2 (en) 2004-12-21
KR100398753B1 (ko) 2003-09-19
JP2001101045A (ja) 2001-04-13
EP1089177A2 (en) 2001-04-04
EP1089177A3 (en) 2003-05-02
JP4237354B2 (ja) 2009-03-11

Similar Documents

Publication Publication Date Title
KR100398753B1 (ko) 효과적인 파일 갱신 처리 및 복구 처리를 이용하는트랜잭션 처리 시스템
KR100396722B1 (ko) 트랜잭션에 의하여 복수개의 화일의 어토믹 갱신을실현하는 트랜잭션 화일 시스템
US9058351B2 (en) Apparatus and method for read optimized bulk data storage
US8370311B2 (en) Using versioning to back up multiple versions of a stored object
JP2505040B2 (ja) 索引木への並列アクセスのためのデ―タ・アクセス方法およびデ―タ処理システム
EP0284664B1 (en) Method of rapidly opening disc files identified by path names
US20110231459A1 (en) Data management method
JPH11143755A (ja) 階層構成情報のコピーおよび共有方法
US6192376B1 (en) Method and apparatus for shadowing a hierarchical file system index structure to enable error recovery
US8108356B2 (en) Method for recovering data in a storage system
US20020147736A1 (en) System and method for reorganizing stored data
JPH07200390A (ja) データアクセス方法
US8452730B2 (en) Archiving method and system
US5953728A (en) System for modifying a database using a transaction log
JPH11120057A (ja) ファイルバックアップ方法
US5758339A (en) Method of identifying shared and unshared information using system chapters, a sysplex chapter, a table of contents, and a header
JP4390618B2 (ja) データベース再編成プログラム、データベース再編成方法、及びデータベース再編成装置
JPH09244933A (ja) データベースバックアップ方法及び装置
US20050044090A1 (en) Computer system and program
JPH04191934A (ja) 機能別プログラム管理方法および装置
JP2000099383A (ja) データベース管理システム及び方法、並びに記録媒体
JPH01222344A (ja) データ管理処理方法
JPH07248950A (ja) 資源の更新連携方法
JPH02253451A (ja) データベース管理方式
JPS63165933A (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: 20080813

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee