KR100589816B1 - 데이터베이스 관련 방법 - Google Patents

데이터베이스 관련 방법 Download PDF

Info

Publication number
KR100589816B1
KR100589816B1 KR1020007007955A KR20007007955A KR100589816B1 KR 100589816 B1 KR100589816 B1 KR 100589816B1 KR 1020007007955 A KR1020007007955 A KR 1020007007955A KR 20007007955 A KR20007007955 A KR 20007007955A KR 100589816 B1 KR100589816 B1 KR 100589816B1
Authority
KR
South Korea
Prior art keywords
transaction
objects
version
access
database
Prior art date
Application number
KR1020007007955A
Other languages
English (en)
Other versions
KR20010034268A (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 KR20010034268A publication Critical patent/KR20010034268A/ko
Application granted granted Critical
Publication of KR100589816B1 publication Critical patent/KR100589816B1/ko

Links

Images

Classifications

    • 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/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • G06F16/2343Locking methods, e.g. distributed locking or locking implementation details
    • 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/2308Concurrency control
    • G06F16/2315Optimistic concurrency control
    • G06F16/2329Optimistic concurrency control using versioning
    • 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/99931Database or file accessing
    • Y10S707/99938Concurrency, e.g. lock management in shared database
    • 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)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 데이터베이스에서 다수의 객체(1O, 2O, 3O)가 일관성 있게 판독되는 방법에 관한 것이다. 본 발명은 트랜잭션이 2단계의 로킹에 의해 관리되는 데이터베이스와 이용하기에 적합한데, 여기서 제 1 단계(A)는 트랜잭션에 의해 영향을 받은 객체(1O, 2O, 3O)로의 접근 요구와, 이것으로의 접근이 부여되면 곧 상기 객체를 로킹하는 것을 포함하며, 제 2 단계(B)는 상기 트랜잭션의 커미트 및 제 1 단계에서 설정된 모든 로크의 해제를 포함한다. 트랜잭션에서 수행된 실제 작업은 객체 변경 활동 및/또는 객체 비-변경 활동으로 요약될 수 있다. 객체의 내용 변경, 또는 갱신은 새로운 내용의 새로운 객체 버전에 기록함으로써 수행되는데, 여기서 상기 트랜잭션에 이전의 현재 객체 버전은 다른 트랜잭션이 상기 버전을 더 이상 이용하지 않을 때까지 유지된다. 트랜잭션은 제 1 단계(A)내에서 모든 변경 활동을 수행한다. 본 발명에 따르면, 트랜잭션은 제 2 단계(B)이후 객체(1O, 2O, 3O)로의 접근을 유지하도록 되어 있다. 또한, 트랜잭션은 제 2 단계(B) 이후 제 3 단계(C)에서 가능한 많은 수의 비-변경 활동을 수행하도록 되어 있어, 그 결과 상기 트랜잭션은 객체로의 접근을 폐쇄시킨다. 따라서, 본 발명 방법은, 비-변경 활동에 대해, 즉 제 2 단계(B) 이후 제 3 단계(C)에서, 로크가 해제된 후 데이터베이스에서 영향을 받은 객체(1O, 2O, 3O)에 대해 일관성있는 스냅숏을 트랜잭션에 제공한다.
데이터베이스, 트랜잭션, 로크 , 스냅숏, 네비게이션, 타임 스탬프

Description

데이터베이스 관련 방법{A METHOD RELATING TO DATABASES}
본 발명은 다수의 데이터 객체를 일관성 있게 데이터베이스에서 판독하는 방법에 관한 것이다.
본 발명은 2단계 로킹(locking)을 이용하여 트랜잭션(transactions)이 관리되는 데이터 베이스에서의 특정 이점에 적합할 수 있는데, 여기서 제 1 단계는 트랜잭션에 의해 영향을 받은 객체로의 접근 요구와 접근이 이루어지자 마자 상기 객체를 로킹하는 것을 포함하며, 제 2 단계는 트랜잭션의 커미트먼트(commitment) 및 상기 제 1 단계에서 설정되었던 모든 로크의 해제를 포함한다.
트랜잭션 관리는 데이터베이스 관리 과정에 있어 기본적인 기술이며, 때로는 데이터베이스에서의 다른 활동(actions)이나 사상(events)으로부터 트랜잭션을 격리시켜 동적이고 변화하는 데이터베이스에 포함된 일관성 정보 픽처(picture)를 제공하는데 이용된다.
통상적인 트랜잭션 과정에 있어서, 실제 트랜잭션 과정동안 트랜잭션에 의해 이용된 객체는, 진행중인 트랜잭션동안 다른 트랜잭션에 의해 이용되는 것을 방지하기 위해 차단된다. 따라서, 상기와 동일한 객체로 접근하고자 하는 다른 트랜잭 션은 대기하거나 중지하여 나중에 다시 시도해야 한다.
트랜잭션에서 수행된 실제 작업은 객체를 변경하는 활동 및/또는 객체를 변경하지 않은 상태로 두는 활동을 포함하는데, 이하 이와 같은 활동 또는 사상을 객체 변경 사상 및 객체 비변경(non-changing) 사상이라 한다. 객체의 내용은 변경된 내용을 새로운 버전(version)의 객체에 기록함으로써, 또는 구 버전을 고쳐 기록함으로써 변경 또는 갱신될 수 있다.
공지된 기술에 있어서, 트랜잭션, 즉 변경 및 비변경 트랜잭션 모두에 관한 모든 활동은 트랜잭션의 "커미트먼트" 전에 수행된다. 트랜잭션의 "커미트(commit)/커미트먼트" 이란 용어는 당업자들에게 잘 알려져 있는 것으로서, 간단히 말해 트랜잭션에 의해 요구되고 격리를 요구하는 활동 또는 사상이 수행되었음을 트랜잭션이 알려주는 것을 의미한다. 또한, 현재 문서(document)에서 로크 해제를 별도의 활동으로 언급한다 하더라도, 일반적으로 커미트라는 용어가 모든 설정되었던 로크의 해제도 포함한다고 할 수 있다.
트랜잭션 이전의 지금 또는 현재의 객체 버전은, 다른 트랜잭션이 지금 또는 현재 버전을 더 이상 이용하지 않을 때까지 상기 현재의 형태로 유지된다. 이는, 어떤 트랜잭션이 해당 버전을 이용하는지에 따라 각기 다른 버전이 상이한 지속 기간(duration) 주기 동안 세이브(save)될 필요가 있음을 의미한다.
어떤 응용은 다른 트랜잭션, 특히 단순히 판독만하는 트랜잭션에 대해 이용되는 객체로의 접근을 차단하지 않는 방식인 실시간(real time)으로 데이터베이스에 접근할 것을 요구한다. 이러한 점에 있어서, 트랜잭션-제한(bound)이 아니라 오히려 빠르며 차단하지 않는 상이한 객체로의 접근을 허용하는 데이터베이스 관리 시스템을 이용하는 것이 공지되어 있다.
상기 시스템이 갖는 단점은, 데이터베이스에서 실행하는 사용자가 트랜잭션-제한 시스템에서 가능한 것과 동일한 격리 방식으로 진행할 수 없으며, 확실히 일관성 데이터베이스 픽처를 제공받을 수 없다는 점이다.
또한, 비-차단 트랜잭션은 명확한(well-defined) 트랜잭션 프로토콜을 관리함으로써 이루어질 수 있다는 것이 공지되어 있다. 그러나, 상기 트랜잭션 프로토콜은 관리하기가 용이하지 않으며, 이것을 실현한다는 것은 지나치게 복잡한 과정이 요구되고, 및/또는 큰 메모리 용량을 필요로한다.
따라서, 일관성 데이터베이스 픽처, 즉 정확한 결과를 항상 보장할 수 있지는 않지만 빠르고 간단하게 구현될 수 있는 데이터베이스를 제공하는 것, 또는 관리면에서 양호하며 정확한 픽처를 제공하는 반면 사용중 느리며 다루기 힘든 데이터베이스를 제공하는 것이 공지되어 있다.
또한, 로크가 전혀 이용되지 않은 소위 동시(concurrent) 트랜잭션의 최적 제어에 따른 데이터베이스가 선행 기술에 공지되어 있다. 상기 제어는 충돌(conflict)이 전혀 일어나지 않는다는 가정하에 모든 트랜잭션을 허용한다는 것을 따른다.
좀 더 상세히 설명하면, 동시 트랜잭션의 최적 제어는 트랜잭션이 "커미트"되기 이전에 트랜잭션과 관련하여 충돌이 전혀 일어나지 않는다는 것을 확인하는 검사가 이루어짐을 의미한다. 충돌이 일어나는 것으로 발견되면, 트랜잭션이 중지된다. 그렇지 않으면, 트랜잭션의 커미트먼트가 허용된다.
또한, 2개의 상이한 로크가 소위 2단계의 로킹에 있어서는 일반적이라 할 수 있다.
제 1 로크는 소위 공유 로크(shared lock)로서, 데이터 객체에 대해 단지 판독만하는 트랜잭션에 의해 설정되며, 다른 판독 트랜잭션이 상기 객체로 접근하는 것을 허용하지만, 변경 트랜잭션에 대해서는 객체를 로킹한다.
제 2 로크는 소위 배타적인(exclusive) 로크로서, 데이터 객체를 변경하는 트랜잭션에 의해 설정되며, 모든 다른 트랜잭션에 대해 상기 객체를 로킹한다.
다음 공보(publications)는 초기에 공지된 기술의 실시예를 개시하며, 여기서 상이한 형태의 비-차단 트랜잭션이 예시되어 있다.
US-A-4,627,019
상기 공보에는 데이터베이스의 각종 객체에 관한 인덱스(index)가 상이한 객체가 발견되는 곳을 나타내는 데이터베이스가 기재되어 있다. 객체-변경 트랜잭션이 시작되면, 변경된 객체가 저장될 새로운 데이터베이스 위치로 트랜잭션이 참조된다. 변경된 객체의 새로운 위치를 가리키는 새로운 인덱스가 생성된다.
구 인덱스가 계속 유지되어, 여전히 각 객체의 구 위치를 가르킨다.
초기 인덱스 버전 각각은 트랜잭션이 상기 인덱스 버전을 이용하는 한 계속 유지된다.
이와 같은 트랜잭션 관리가 비-차단 트랜잭션 프로토콜을 제공하지만, 다수의 상이한 인덱스 버전이 병행하여 존재할 수 있기 때문에 많은 양의 메모리 공간 이 필요하다. 트랜잭션 관리의 구현 역시 복잡하다.
EP-A2-0 471 282
상기 공보에는 3개의 새로운 유형의 로크, 즉 위트 캐시(wit cash) 로크, 보류(pending) 로크, 및 아웃-오브-데이트(out-of-date) 로크에 대한 설명이 기재되어 있다. 제 1 트랜잭션인 판독 트랜잭션이 상이한 객체에 로크를 설정하면, 공유 로크대신 캐시 로크(cash lock)가 설정된다. 제 1 트랜잭션이 여전히 진행중인 동안 제 2 트랜잭션이 동일한 객체에 배타적인 로크를 요구한다면, 캐시 로크가 보류 로크(pending lock)로 변경된다.
제 2 트랜잭션이 객체를 보류 로크로 변경하면, 상기 로크는 아웃-오브-데이트 로크로 변경된다. 제 2 트랜잭션이 객체를 변화시키지 않는 경우, 보류 로크는 제 2 트랜잭션이 커미트될 때 캐시 로크로 변경된다.
제 1 트랜잭션은 일반적으로 모든 로크가 캐시 로크인 동안 지속된다. 제 1 트랜잭션에 의해 영향을 받는 객체 중에 보류 로크가 있다면, 제 1 트랜잭션은 보류 로크가 어떤 다른 로크로 전환할때 까지 대기한다.
보류 로크가 캐시 로크로 변경되면 제 1 로크가 지속될 수 있다. 보류 로크가 아웃-오브-데이트 로크로 변경되면, 이는 객체가 변경되며 그 결과 제 1 트랜잭션이 중지된다는 것을 나타낸다.
상기 방법에 의해 변경 트랜잭션을 차단하지 않는 로크가 설정될 수 있다 하더라도, 판독 트랜잭션을 수행하는 동안 객체를 변경한 데이터 객체 변경 트랜잭션으로 인해, 시작된 판독 트랜잭션을 중지할 필요가 있다.
기술적인 문제점
상술한 바와 같은 초기의 기술 관점을 고려하면, 할당된 로크가 객체 변경 트랜잭션을 차단하는데 걸리는 시간 주기가 매우 단축되는 트랜잭션 관리를 가능하게 하는데 기술적인 문제점이 있는 것으로 보인다.
다른 기술적인 문제점은 할당된 로크의 설정과 비-변경 트랜잭션에 대한 상기 로크의 해제 사이의 시간 주기를 단축하는 것이다.
다른 기술적인 문제점은, 접근 시간 동안 변경 트랜잭션에 의해 영향을 받은 객체를 차단하지 않고 시간과 관련하여 비-변경 트랜잭션에 의해 이용되는 객체로의 제한없는 접근을 제공하는 것으로서, 즉 트랜잭션에 의해 설정된 로크 이후 비-차단 접근을 제공하는 것이다.
또한, 트랜잭션을 변경과 비-변경 활동으로 분리하는데 있어 기술적인 문제점이 존재하는데, 여기서 상기 트랜잭션의 변경 활동에 배타적인 로크가 제공되며, 비-변경 활동에는 영향을 받은 객체로의 무제한의 비-차단 접근이 제공된다.
또 다른 기술적인 문제점은, 각 객체 버전이 카운터(counter)를 할당받는 것에 의한 데이터베이스에서 상기 설명된 기술적인 문제점을 해결하는 것으로서, 상기 카운터는 로크를 설정할 때와 같이 트랜잭션이 객체로의 접근을 허용받을 때 증가하고(incremented), 로크를 해제할 때와 같이 트랜잭션이 상기 객체 버전으로의 접근을 더 이상 요구하지 않을 때 감소한다(decremented).
다른 기술적인 문제점은, 트랜잭션이 시작된 시간을 나타내는 타임 스탬프(time stamp)를 각 트랜잭션에 할당하는 것에 따른 데이터베이스에서 앞서 설명한 기술적인 문제점을 해결하는 것으로서, 여기서 상기 버전의 객체를 타임 스탬프한 이전(younger) 트랜잭션이 없으면, 트랜잭션 각각은 영향을 받은 각 객체 버전을 각자의 타임 스탬프를 이용하여 스탬프하며, 오래된(older) 트랜잭션으로 종료한 트랜잭션이 전혀 없거나, 또는 해당 버전에 할당된 최초 타임 스탬프만큼 오래된 트랜잭션이 전혀 없는 한 각 객체 버전이 유지되어야 한다.
해결방법
본 발명은, 2단계로 로킹함으로써 트랜잭션이 관리되는 데이터베이스에서 다수의 객체가 일관성 있게 판독될 수 있는 방법을 그 출발점으로 한다.
제 1 단계는 트랜잭션에 의해 영향을 받은 객체로의 접근 요구, 및 접근이 이루어진 후 객체를 로킹시키는 요구를 포함하며, 제 2 단계는 트랜잭션의 커미트 및 제 1 단계에서 설정된 모든 로크의 해제를 포함한다.
트랜잭션에서 수행되는 실제 작업은 객체를 변경하는 활동 및/또는 객체를 변경하지 않는 활동을 포함할 수 있는데, 여기서 객체 내용의 갱신 또는 변경은 변경된 내용을 새로운 객체 버전에 기록함으로써 이루어지며, 트랜잭션 이전에 존재했던 객체 버전은 다른 트랜잭션이 현재 버전을 이용하지 않는 한 유지된다.
트랜잭션은 제 1 단계에서 모든 데이터 변경 활동을 수행한다.
상기 방법을 출발점으로 하고, 상기 기술적인 문제점 중 하나 이상에 대한 해결방법을 제공하는 것을 목적으로 하면, 본 발명에 있어서, 제 2 단계 이후 트랜잭션이 상기 객체로의 접근을 유지하고, 제 2 단계 이후 트랜잭션은 가능한 가장 많은 수의 비-변경 활동을 수행하며, 상기 비-변경 활동을 수행한 이후 객체로의 접근을 폐쇄시킬 것을 제안한다.
그 다음 상기 로크를 해제함으로써, 트랜잭션은 비-변경 활동에 대해 데이터베이스 내의 영향을 받은 객체의 일관성 스냅숏(shapshots)을 유지한다.
또한, 본 발명에 있어서, 제 2 단계 이후 객체로의 접근은 현재 버전의 객체 각각이 트랜잭션에 의해 이용됨에 따라 이것을 표시하는(marking) 것을 포함하게 되며, 객체 접근을 폐쇄하는 것은 상기 표시를 제거하는 것과 아울러, 적어도 트랜잭션이 폐쇄되기 전까지는 트랜잭션이 커미트된다 하더라도 상기 객체 버전을 유지하는 것을 포함할 것을 제안한다.
각 객체 버전이 카운터를 할당받으면, 본 발명은 오로지 상기 표시가 제거될 때, 즉 트랜잭션을 폐쇄시킬 때 상기 표시가 카운터의 감소시에 존재한다는 것을 나타내는데, 상기 카운터는 로크를 설정할 때와 같이 트랜잭션이 상기 버전으로의 접근을 할당받으면 증가, 즉 스텝 업(step up)하고, 로크를 해제할 때와 같이 트랜잭션이 더 이상 상기 버전으로 접근할 필요가 없으면 감소, 즉 스텝 다운(step down)한다.
트랜잭션이 시작된 시점을 나타내는 타임 스탬프가 트랜잭션 각각에 할당되면, 본 발명에 있어서, 상기 표시는 각 객체 버전의 타임 스탬프를 포함하며, 상기 객체 접근을 폐쇄시킬 때 트랜잭션이 종료하는 것으로 여겨진다고 제안되는데, 여기서 상기 버전의 객체를 타임 스탬프한 이전 트랜잭션이 없으면 트랜잭션 각각은 영향을 받은 객체의 각 버전을 각자의 타임 스탬프를 이용하여 스탬프하며, 상기 버전에 할당된 최초 타임 스탬프와 동일하거나 또는 이보다 더 오래된 트랜잭션이 아직도 종료하지 않았다고 하면 각 객체 버전은 남아있는 것이 허용된다.
트랜잭션이 단지 비-변경 활동을 포함하면, 본 발명에 있어서 로크는, 공유 로크가 해제되기 전에 다른 트랜잭션이 객체 접근을 얻을 수 있지만, 상기 객체를 단지 판독만 할 수 있는 것으로 제한되는 공유 로크를 포함할 것을 제안한다.
개방되는 모든 객체가 트랜잭션의 시작 전에 공지되어 있는 소위 그룹 개방(group opening)을 제공하기 위해, 본 발명에 있어서 객체가 제 1 단계에서 개방되는 것으로 제안된다.
트랜잭션이 시작하기 전에 하나 이상의 시작 객체가 알려지며, 상기 시작 객체 중 하나 이상이 하나 이상의 다른 객체를 참조하는 소위 데이터 객체의 순환적인 개방(recursive opening)을 제공하기 위해, 본 발명에 있어서 시작 객체는 제 1 단계에서 개방되고, 다른 객체로의 참조는 상기 시작 객체 중 소정의 객체에 대해 제 1 단계에서 이루어지며, 또한 다른 객체가 제 1 단계에서 개방되는 것으로 제안된다.
또한, 본 발명에 있어서 다른 객체로부터 또 다른 객체로의 참조가 제 1 단계에서 이루어지며, 또 다른 객체가 제 1 단계에서 개방되는 등으로 제안된다.
본 발명은 또한, 조기(earlier) 개방된 객체에서 다른 객체를 참조하여 얻어지는 허용된 객체 레벨의 수를 미리 결정함으로써 이용가능한 객체의 수를 제한할 수 있다.
트랜잭션을 시작하기 전에 하나 이상의 시작 객체가 알려지고, 하나 이상의 시작 객체가 하나 이상의 다른 객체를 참조하는 소위 경로 개방(path opening)를 제공하기 위해, 본 발명에 있어서 시작 객체가 제 1 단계에서 개방되고, 다른 객체로의 참조는 상기 시작 객체 중 소정의 객체에 대해 제 1 단계에서 이루어지며, 또 다른 객체가 제 1 단계에서 개방되는 것으로 제안되어 있다.
본 발명의 일 실시예에 따르면, 다른 가능한 객체로부터 또 다른 객체로의 참조가 제 1 단계에서 이루어지며, 역시 또 다른 객체가 제 1 단계에서 개방되는 등으로 된다.
다른 실시예에 따르면, 조기 개방된 객체로부터 다른 객체를 참조하여 얻어지는 허용된 객체 레벨의 수를 미리 결정할 수 있게 함으로써, 이용가능한 객체 수가 제한된다.
장점
본 발명 방법에 의해 우선적으로 얻을 수 있는 장점은, 트랜잭션이 다른 트랜잭션에 의한 접근에 대해 객체를 로크시키는 시간을 단축하는 것이 가능함과 아울러, 실질적으로 비-차단 특성의 판독 트랜잭션이 간단하고, 빠르며, 비교적 메모리가 적고 계산에 이로운 방식으로 얻어질 수 있는 방법이라는데 있다.
상기 방법은, 트랜잭션이 커미트된 후 트랜잭션에 의해 영향을 받은 객체에 대해 유지된 일관성 스냅숏을 제공함은 물론, 시간 면에서 트랜잭션을 제한하지 않으며 다른 트랜잭션을 차단하지 않고, 트랜잭션으로 하여금 비-변경 활동 객체에 대해 일관성 픽쳐를 이용할 수 있도록 한다.
다른 트랜잭션, 즉 단순히 판독만하는 트랜잭션이 아닌 트랜잭션 조차도 하나 이상의 객체를 로크하는데 걸리는 시간 주기가 각기 다른 크기로 단축될 수 있는데, 이는 로크된 객체에 대한 대기 시간이 상당히 단축되므로 데이터베이스가 모든 트랜잭션에 대해 상이한 속도를 갖게 됨을 의미한다.
또한, 본 발명은 상이한 객체 버전을 복사하는 것이 메모리 용량, 시간 및/또는, 실행에 있어 비용이 드는 작업이라 여겨지는 데이터베이스에서 특히 유용한 방법을 제공한다. 본 발명 방법의 일 실시예에 따르면, 복사하는 것은 우선 트랜잭션을 판독하는 것이 금지되며, 시간과 관련하여 사용된 로크의 조기 해제를 허용한다.
또한, 본 발명은 다수의 객체에 대해 일관성 스냅숏이 필요하지만, 상기 픽쳐가 반드시 마지막 트랜잭션에 따라 완전히 갱신될 필요가 없는 데이터베이스에 특히 유용하다.
또한, 본 발명은 실시간 응용이 매우 요구되는 RAM 데이터베이스내에서 실현하는 것과 관련하여 특히 유용하다.
본 발명 방법에 대한 기본적인 특성은 특허청구범위 제1항에 설명되어 있다.
이제, 본 발명은 예시 방법 및 첨부 도면을 참조하여 더욱 상세히 설명될 것이다.
도 1은 데이터베이스의 동시 트랜잭션과 관련하여 공지된 제 1 문제점을 개략적으로 예시한다.
도 2는 데이터베이스의 동시 트랜잭션과 관련하여 공지된 제 2 문제점을 개략적으로 예시한다.
도 3은 데이터베이스의 동시 트랜잭션과 관련하여 공지된 제 3 문제점을 개략적으로 예시한다.
도 4는 동시 트랜잭션 및 데이터베이스의 상호 종속하는 객체와 관련된 제 4 문제점을 개략적으로 예시한다.
도 5는 본 발명에 따라 데이터베이스의 객체를 갱신하는 한 가지 조건을 개략적으로 예시한다.
도 6은 본 발명에 따라 트랜잭션을 각기 다른 단계로 분리하는 것을 개략적으로 예시한다.
도 7은 본 발명에 따른 개략적이고 매우 간단한 판독 트랜잭션이다.
도 8은 본 발명에 따른 개략적이고 매우 간단한 그룹 개방이다.
도 9는 본 발명에 따른 개략적이고 매우 간단한 순환적인 개방 활동이다.
도 10은 본 발명에 따른 개략적이며 매우 간단한 경로-개방 활동이다.
따라서, 도 1은 데이터베이스 내에서 일관성 있게 수행되는 트랜잭션이 상호 영향을 주는 다수의 각기 다른 공지된 경우 중 제 1 경우를 나타낸다.
로스트 갱신(lost updating)이라고 할 수 있는 상기 경우에 있어서, 제 1 트랜잭션(T1)과 제 2 트랜잭션(T2)은 서로 독립적으로 서로에 대해 알고 있을 필요없이 각기 다른 시간에 동일한 데이터 객체("O")를 갱신한다.
시점("a")에서 제 1 트랜잭션(T1)이 객체의 제 1 버전(O1)을 수집하고, 시점("b")에서는 제 2 트랜잭션(T2)이 상기 객체의 동일한 버전(O1)을 수집한다. 제 1 트랜잭션(T1)에 의한 갱신이 완료되면, 갱신된 객체(O2)는 시점("c")에서 상기 객체의 제 1 버전 위로 데이터베이스에 기록된다. 제 2 트랜잭션(T2)에 의한 갱신이 완료되면, 갱신된 객체(O3)는 제 1 트랜잭션(T1)에 의해 수행된 갱신 객체(O2) 위로 시점("d")에서 기록된다.
예컨대, 객체가 각기 다른 두 명의 사용자(T1, T2)에 의해 변경되는 문서이면, 제 1 사용자(T1)에 의해 이루어진 변경 객체(O2)는 제 2 사용자(T2)에 의해 갱신되는 객체(O3)에서 손실된다.
상기 설명한 동작 시퀀스는 "판독, 기록, 기록"으로 되어 있는데, 이것은 충돌을 일으킬 수 있다.
이러한 문제점은 예컨대, 통상적인 2단계의 로킹을 이용함으로써 해결될 수 있다. 다음으로, 수행될 트랜잭션이 갱신 트랜잭션인 동시에 변경 트랜잭션이므로, 제 1 트랜잭션(T1)은 객체(O)에 배타적인 로크를 설정한다. 그러면, 제 2 트랜잭션(T2)은 제 1 트랜잭션(T1)이 커미트되어 배타적인 로크가 해제될 때까지 상기 객체(O)로 접근할 수 없다.
도 2는 더티 판독(dirty read)이라고 하는 다른 예를 나타내는 것으로서, 여기서 제 1 트랜잭션(T1)은 객체(O4)로 접근할 수 있어 시점("f")에서 객체를 판독하며, 상기 객체(O4)는 더 이른 시점("e")에서 제 2 트랜잭션(T2)에 의해 변경된다. 제 2 트랜잭션(T2)은 객체(O5)를 이후의 시점("g")에서 한 번 더 변경한다. 판독 객체(O4)가 최종 버전인 O5 내용을 포함하지 않으므로, 제 1 트랜잭션(T1)에 의해 수행된 판독을 더티 판독이라 한다.
상기 경우에 수행된 활동 시퀀스는 "기록, 판독, 기록"으로 되어있는데, 이는 도시된 바와 같이 충돌을 일으킨다.
상기 문제점 또한, 상기 트랜잭션이 데이터 변경 트랜잭션이므로 객체(O4)에 배타적인 로크를 설정함과 아울러, 상기 객체로의 판독 트랜잭션(T1)의 접근을 거절함으로써 제 2 트랜잭션(T2)에 의해 해결될 수 있다.
도 3은 반복이 불가능한 판독(unrepeatable read)이라고 하는 제 3 경우를 나타내는 것으로서, 이는 제 1 트랜잭션(T1)이 객체(O)를 두 번 판독함을 의미하는데, 첫 번째(O6)는 시점("I")에서 객체(O7)가 제 2 트랜잭션(T2)에 의해 갱신되기 이전 시점("h")에서 이며, 그 후 제 1 트랜잭션(T1)이 객체(O7)를 판독하여 시점("j")에서 두 번째 판독이 이루어진다. 그러면, 제 1 트랜잭션(T1)을 통해 얻어진 2개의 상이한 판독은 결과적으로 각기 다른 두 개의 값(O6, O7)이 되며, 제 1 판독을 반복할 수 없으므로 제 1 판독 결과를 다시 얻을 수 없다.
상기 활동 시퀀스는 "판독, 기록, 판독"으로 되어 있는데, 이는 도시한 바와 같이 충돌을 일으킬 수 있다.
트랜잭션이 비-변경 트랜잭션이므로, 변경 트랜잭션(T2)이 배타적인 로크를 얻는 것을 방지하여 결과적으로 객체를 갱신하지 못하게 하는 공유 로크를 제 1 판독시에 설정함으로써 문제점을 막을 수 있다.
상기 설명한 경우는, Morgan Kaufmann Publishers Inc., 1993.ISBN 1-55860-190-2 Jim Gray 와 Andreas Reuter에 의한 "Transaction Processing: Concepts and Techniques" 특허 공보에 더욱 상세히 기재되어 있다.
본 발명에 의해 주로 제기된 문제점은 제3경우에서 설명한 반복 불가능한 판독 문제점과 유사하지만, 상이한 객체가 차이를 두고 판독된다.
이와 같은 문제점을 비-차단 판독 문제점이라 하며, 이는 도 4와 관련하여 이하에서 설명된다. 도 4는, 제 1 트랜잭션이 다수의 상이한 객체, 예컨대 객체(1O, 2O 및, 3O)로의 접근을 요구하는 것을 도시한다. 두 객체, 즉 객체(1O)와 객체(3O)가 상호 종속성(mutual dependency)을 갖는다.
제 1 트랜잭션(T1)은 제 1 시점("k")에서는 객체(1O1)을, 제 2 시점("l")에서는 객체(2O1)를, 및 제 3 시점("n")에서는 객체(3O2)를 각각 판독한다.
두 객체(1O2 및 3O2)는, 제 3 시점("n") 전이지만 제 1 시점("k") 다음인 시점("n")에서 제 2 트랜잭션(T2)에 의해 갱신된다.
따라서, 제 1 트랜잭션(T1)은 객체(1O)의 제 1 버전(1O1)과 객체(3O)의 제 2 버전(3O2)을 참조하는데, 상기 버전은 두 객체(1O, 3O) 간의 종속성에 대해 상호 일관성이 없다.
상기 문제점 또한, 통상적인 두 단계의 로킹을 이용하여 해결될 수 있는데, 이는 제 1 트랜잭션(T1)이 객체(1O,2O 및, 3O)에 공유 로크를 이용하여 제 2 트랜잭션(T2)을 차단하거나, 또는 제 2 트랜잭션(2T)이 객체(1O 및 3O)에 배타적인 로크를 설정하여 제 1 트랜잭션(T1)을 차단함으로써 이루어진다.
두 경우 모두, 대기중인 트랜잭션이 로크를 소유하고 있는 트랜잭션에 의해 차단된다. 본 발명의 목적은, 상기 치명적인 차단 효과를 줄이는 한편, 제 1 트랜잭션으로 하여금 세 객체(1O, 2O 및, 3O)의 일관성 픽처를 얻을 수 있도록 하는 것이다.
본 발명은 데이터베이스에서 수행된 트랜잭션이 두 단계 로킹에 의해 관리되는 방법에 관한 것으로서, 제 1 단계는 트랜잭션에 의해 영향을 받은 객체로의 접근 요구와 이것으로 접근한 후 객체를 로킹하는 것을 포함하며, 제 2 단계는 트랜잭션 커미트먼트 및 제 1 단계에서 설정된 모든 로크의 해제를 포함한다.
트랜잭션에 의해 수행된 실제 작업은 데이터 객체를 변경하는 활동이나 사상 및/또는 상기 객체를 변경하지 않는 활동이나 사상을 포함할 수도 있다.
또한, 본 발명은 객체(01)의 내용을 판독하고 변경된 내용을 기록하여 새로운 객체 버전(O2)을 제공하는 트랜잭션에 의해 객체의 내용을 변경 또는 갱신하는 것을 포함하는데(도 5에 따름), 여기서 상기 트랜잭션 이전에 존재했던 객체 버전(O1)은 상기의 현재 버전(O1)을 이용하는 트랜잭션이 더 이상 없을 때까지 보유 된다.
이러한 가정에서 출발하여, 본 발명은 트랜잭션이 제 2 단계 이후 영향을 받은 객체로 접근을 유지하도록 되어 있다고 제안한다. 또한, 트랜잭션은 제 1 단계에서 모든 변경 활동을 수행하여, 제 2 단계 이후인 제 3 단계에서 가능한 가장 많은 수의 비-변경 활동을 수행하도록 되어 있어야 한다.
트랜잭션은 각종 활동을 포함할 수 있다. 상기 활동은 다음을 포함한다:
- 객체의 개방 및 로킹. 이것은 트랜잭션에 의해 개방된 객체 집합에 객체를 추가함을 의미한다.
ㆍ네비게이팅(navigating). 이것은 다른 어떤 객체로의 키(keys) 또는 참조에 대한 식별정보(identify)를 판정하기 위해 개방 객체의 내용 부분을 판독하는 것을 의미한다. 다른 객체로의 접근/네비게이션은, 객체가 이미 개방되어 있다면 아무런 문제가 되지 않는다.
ㆍ개방된 객체의 내용에 속한 값 판독.
- 값을 객체에 기록, 예컨대 객체를 갱신.
- 새로운 객체 생성. 이것은 트랜잭션에 의해 개방된 객체 집합으로 새로운 객체를 추가하게 된다.
- 현재의 객체를 삭제. 이것은 삭제된 객체를 트랜잭션에 의해 개방된 객체 집합에 추가하게 된다.
ㆍ트랜잭션에 의해 개방된 객체로의 접근과 직접 관련되지 않은 그 밖의 계산.
하이픈(hyphen), "-"으로 표시된 활동은 어떤 면에 있어서 데이터를 변경하며, 제 1 단계, 즉 커미트되기 전에 트랜잭션에서 수행되어야 하는 활동이다. 불릿(bullet), " ㆍ"으로 표시된 활동은 데이터를 변경하지 않으며 주로 제 2 단계 이 후, 즉 커미트 후 수행될 수 있는 활동이다.
본 발명에 따르면, 트랜잭션은 아직 수행되지 않은 비-변경 활동을 실행한 후 객체로의 접근을 폐쇄한다.
도 6은 본 발명에 따른 데이터-변경 트랜잭션(T1)의 모양에 대한 간단한 설명이다. 제 1 단계("A")는 시점("o")에서 시작된다. 트랜잭션(T1)은 상기 단계에서 트랜잭션(T1)에 의해 영향을 받은 객체(1O, 2O, 3O)로 접근할 수 있는데, 이것은 상기 도면에서 객체와 트랜잭션 사이에 실선(full lines)으로 도시되어 있다. 관련 로크(pertinent locks)가 각 객체에 설정되는데, 이는 로킹된 객체내에 도트(dot)를 이용하여 개략적으로 도시되어 있으며, 여기서 솔리드(solid) 도트는 배타적인 로크(e1)를 나타내고, 할로우(hollow) 도트는 공유 로크(s1)를 나타낸다.
상술한 경우에 있어서, 제 2 객체(2O)상의 로크는 트랜잭션(T1)이 상기 객체에 대해 변경 트랜잭션이므로 배타적인 로크(e1)이다. 나머지 객체의 로크는 공유 로크(s1)인데, 이는 트랜잭션(T1)이 상기 나머지 객체에 대해 비-변경 트랜잭션이기 때문이다.
모든 변경 활동은 트랜잭션(T1)에 의해 제 1 단계("A")에서 수행된다. 이와 같은 변경은 제 2 객체(2O)를 제 1 버전(2O1)에서 제 2 버전(2O2)로 갱신하는데 있다.
제 2 단계("B")는 시점("p")에서 시작한다. 상기 단계는 설정된 로크의 해제 및 제 1 트랜잭션(T1)에 의한 커미트먼트를 포함한다.
그러나, 본 발명 개념에 따라, 관련된 객체의 유용성(availability)은 제 2 단계 이후에도 유지된다. 상기 유용성이라 함은, 상기 도면에서 점선으로 도시되어 있는 바와 같이 객체가 트랜잭션(T1)에 대해 여전히 개방된 상태임을 의미한다.
제 2 단계("B")를 완료하면, 제 3 단계("C")가 시점("q")에서 시작하는데, 여기서 트랜잭션(T1)에 의해 나머지 비-변경 활동이 수행된다. 이와 같은 활동에 대한 예는 불렛으로 이미 표시된 것이다.
또한, 제 3 단계("C")는 트랜잭션(T1)에 대해 객체(1O,2O,3O)의 유용성을 해제하는 것을 포함하는데, 여기서 이것을 객체 폐쇄라고 하며, 이것은 제 3 단계("C")에서 수행되는 마지막 활동으로서, 즉 나머지 비-변경 활동이 수행된 이후이다.
따라서, 트랜잭션(T1)은 모든 로크를 해제한 후, 즉 도 6의 제 2 단계("C")에서의 비-변경 활동에 있어 데이터베이스의 관련 객체에 대해 일관성 있게 유지된 스냅숏을 부여받는다.
상기 접근은, 상기 활동이 다른 트랜잭션에 대해 전체적으로 차단하지 않으므로 시간 제약을 받는다. 그러나, 상기 접근이 객체의 현재 버전을 메모리에 보관하는 능력을 필요로하므로, 제한하는 요소는 메모리 용량 또는 접근이 될 수 있다.
트랜잭션에 의해 로킹되진 않지만 상술한 바에 따라 여전히 트랜잭션에 대해 개방되어 있는 객체 버전이 소거되지 않도록 하기 위해, 본 발명에 있어서, 트랜잭션에 대한 제 3 단계("C")에서의 객체 접근은 트랜잭션에 의해 이용될 시에 각 객체의 현재 버전을 표시함으로써 제공되는 반면, 폐쇄는 상기 표시를 제거하는 것으로 이루어질 것을 제안한다.
트랜잭션에 의해 이용되는 객체를 표시하는 각종 방법이 선행 기술에 공지되어 있다. 본 발명은 상기 방법 중 소정의 방법으로 특별히 한정되지 않으며, 각 방법에 적용될 수 있다. 이하, 트랜잭션에 의해 이용되는 가장 보편적인 객체 표시 방법 두 가지가 적용된 본 발명의 실시예를 설명한다.
그러나, 상기 각종 방법의 공통 특징 및 본 발명의 필요 조건은, 데이터베이스의 상이한 장소에 새로운 버전의 객체를 저장하여, 상기 버전이 트랜잭션에 의해 이용될 시에 표시되는 한 이전 버전을 세이브함으로써 객체가 갱신된다는 것이다.
본 발명의 제 1 실시예에 있어서, 각 객체 버전이 카운터를 할당받는데, 상기 카운터는 로크를 설정할 때와 같이 트랜잭션이 상기 버전으로 접근할 수 있을 때 증가 또는 스텝-업되고, 로크를 해제할 때와 같이 트랜잭션이 상기 객체로 더 이상 접근할 필요가 없을 때 감소 또는 스텝-다운된다.
상기 트랜잭션 관리의 경우에 있어서, 본 발명에 있어서, 상기 표시하는 것은, 도 6의 제 2 단계("B") 끝에서 로크가 해제되는 것과 관계없이 도 6의 제 3 단계("C") 끝에서 표시가 제거될 때까지 카운터가 감소하지 않도록 이루어질 것을 제안한다.
이러한 경우에 있어서, 현재 버전이 객체의 마지막 버전으로 이루어지지 않은다면, 현재의 객체 버전은 카운터가 0으로 감소됨과 아울러 소거된다.
이것은, 로크를 해제함과 아울러 트랜잭션이 커미트되어 모든 변경 활동이 트랜잭션에 의해 수행되자 마자 영향을 받지만, 카운터는 공지된 기술에 따라 감소하지 않으며, 카운터의 감소는 트랜잭션이 더 이상 상기 객체 버전으로 접근할 필요가없을 때까지는 일어나지 않고, 나머지 비-변경 활동이 트랜잭션에 의해 수행될 때 및/또는 트랜잭션이 더 이상 상기 객체로 접근할 필요가 없을 때 발생함을 의미한다.
본 발명의 다른 제안된 실시예에 따르면, 트랜잭션 각각은 트랜잭션이 시작된 시간을 나타내는 타임 스탬프를 할당받는데, 여기서 현재 객체 버전이 이전 트랜잭션으로부터의 타임 스탬프를 이용하여 스탬프되지 않을 때 각 트랜잭션 스탬프는 각자의 타임 스탬프를 이용하여 관련 객체 버전 각각을 스탬프하며, 현재 버전에 할당된 최초 타임 스탬프만큼 오래되었거나 또는 이보다 더 오래된 트랜잭션이 아직 종료하지 않는 한 객체의 버전 각각이 남아 있어야 한다.
이와 같은 트랜잭션 관리에 있어서, 본 발명에 따라, 표시는 현재의 각 객체 버전 상의 타임 스탬프로 이루어지며, 객체 접근이 폐쇄되면 트랜잭션이 종료하는 것으로 간주된다고 제안된다.
이것은, 트랜잭션이 도 6의 제 2 단계("B") 끝에서 로크를 해제함과 아울러 커미트되어, 모든 변경 활동이 트랜잭션에 의해 수행되자 마자 이루어지지만, 커미트 후에도 트랜잭션이 남아 있는 것으로 여겨지며, 즉 타임 스탬프가 여전히 유효함을 의미하는데, 이는 그 타임 스탬프를 가진 트랜잭션이 여전히 유효하므로 현재 버전을 소거할 수 없음을 의미한다. 트랜잭션의 타임 스탬프는 트랜잭션이 더 이상 객체에 접근할 필요가 없을 때까지 소거되지 않으며, 이것은 트랜잭션이 모든 비-변경 활동을 수행하였을 때 및/또는 트랜잭션이 더 이상 객체에 접근할 것을 요구하지 않을 때, 즉 도 6의 제 3 단계("C") 끝에서 발생한다.
본 방법의 효과는 관련 트랜잭션의 유형에 따라 크기면에서 상이하게 된다. 이제, 본 발명이 특정 성질을 갖는 것이라 할 수 있는 다수의 상이한 트랜잭션을 설명한다.
상기 트랜잭션에 대한 제 1 실시예는, 단지 비-변경 활동만을 포함하며 사용된 로크가 공유 로크인 것으로서, 예컨대 단지 판독만하는 트랜잭션이다.
이와 같은 트랜잭션은 공유 로크를 해제하기 전에 다른 트랜잭션으로 하여금 관련 객체에 접근할 수 있도록 하지만, 상기 다른 트랜잭션은 단지 객체를 판독만 할 수 있다는 제한이 있다.
도 7에 도시된 바와 같이, 객체가 로킹되는 시간 주기("A", "B")는 관련된 모든 객체로의 접근을 제공하여 상기 객체("A")를 로킹한 후 트랜잭션을 커미트하여 로크("B")를 해제하는데 걸린 시간으로만 되어 있으므로, 시간 주기가 비교적 단축된다. 변경 활동이 전혀 수행되지 않으므로, 모든 로크가 설정된 직후 트랜잭션이 커미트되며, 로크가 해제되고, 각 객체의 현재 버전에 표시가 남아 있게 되는데, 이는 상기 버전이 소거될 수 없음을 나타낸다.
따라서, 현재 객체는 전체 상기 주기 동안 다른 비-변경 트랜잭션에 이용할 수 있는데, 이는 설정된 로크가 오로지 공유 로크이며, 커미트 직후 직접 트랜잭션을 변경하는데 이용할 수 있기 때문이다.
관련 객체가 폐쇄되는("C") 지점까지의 시간 주기는 수행될 비-변경 활동과 관련하여 변화하게 된다.
도 8은 본 발명에 있어 특히 이익이 되는 트랜잭션(T1)의 제 2 실시예를 나타내고자 한다. 이것은 개방되는 모든 객체(1O, 2O, 3O)가 트랜잭션을 시작하기 전에 알려진 트랜잭션으로서, 상기 트랜잭션을 그룹 개방 트랜잭션이라 한다. 물론, 상기 트랜잭션은 변경 및 비-변경 활동 두 가지 모두 포함할 수 있다.
트랜잭션이 변경 및 비-변경 활동 두 가지 모두를 포함하는지, 또는 비-변경 활동만을 포함하는지 여부에 관계없이, 관련된 객체는 제 1 단계("A")에서 개방된다.
도 9는 본 발명에 있어 특히 이익이 되는 트랜잭션(T1)의 제 3 실시예를 나타내고자 한다. 이것은, 트랜잭션을 시작하기 전에 하나 이상의 시작 객체(1O, 2O, 3O)가 알려지며, 하나 이상의 시작 객체가 소위 순환적 개방 트랜잭션이라 하는 트랜잭션에 의해 관련된 하나 이상의 다른 객체(4O, 5O, 6O, 7O)를 참조하는 트랜잭션이다.
상기 트랜잭션이 변경 및 비-변경 활동 모두를 포함하는지 또는 비-변경 활동만을 포함하는지 여부에 관계없이, 시작 객체(1O, 2O, 3O)가 제 1 단계("A")에서 개방되어야 하고, 다른 객체로의 참조 평가, 즉 시작 객체(1O, 2O, 3O) 내에서의 네비게이션이 제 1 단계("A")에서 수행되어야 하며, 다른 객체(4O,5O,6O,7O)가 제 1 단계("A")에서 개방되어야 한다.
어떤 경우에는, 상기 다른 객체(4O, 5O, 6O, 7O)로부터 또 다른 객체(8O, 9O, 10O, 11O)로의 참조가 단계("A")에서 평가되어야 하며, 가능한 다른 참조에 대해 상기 또 다른 객체(8O, 9O, 10O, 11O)는 제 1 단계("A")에서 개방되어야 한다.
비-변경 활동인 네비게이션 활동이 제 1 단계("A")에서 수행되어야 한다고 제안되어 있는데, 이것은 영향을 받은 객체가 제 1 단계("A")에서 발견되어 로크되도록 하기 위해 필요하다.
모든 객체를 발견하고 트랜잭션에 의해 개방되는 객체 수를 제한하는데 필요한 시간 주기를 제한하기 위해, 본 발명에 있어서, 이전 객체에서 다른 객체를 참조하여 얻어지는 허용된 객체 레벨 수를 미리 결정하여 제한하도록 할 수 있다("D"). 도 9에 있어서, 허용된 레벨 수가 두 개로 제한되므로("D"), 객체(8O, 9O, 10O, 11O)는 개방되지 않는다.
도 10은 본 발명에 있어서 특히 이익이 되는 트랜잭션(T1)에 대한 제 4 실시예를 나타내고자 한다. 이것은, 트랜잭션을 시작하기 전에 하나 이상의 객체(1O, 2O, 3O)가 알려지며, 하나 이상의 현재 시작 객체가 하나 이상의 다른 객체(4O, 5O, 6O, 7O)를 참조하고, 또한 다른 객체로의 참조가 현재의 시작 객체(1O, 2O, 3O) 중 소정의 한 시작 객체(3O)에 대해 평가되는 트랜잭션으로서, 여기서 이것을 경로-개방 트랜잭션이라 한다.
객체(3O)로부터 도달하는 경로 또는 브랜치(barnch)만 평가되어야 하며, 이는 도 10의 제한(limitation)("E")에 의해 선택된다.
상기 트랜잭션이 변경 및 비-변경 활동을 모두 포함하는지 또는 비-변경 활동만을 포함하는지 여부에 관계없이, 현재의 시작 객체는 제 1 단계("A")에서 개방되어야 하며, 소정의 시작 객체(3O)의 네비게이션은 단계("A")에서 발생해야 하고, 또한 다른 객체(7O)가 제 1 단계("A")에서 개방되어야 한다.
더욱이, 다른 객체(7O)로부터 또 다른 객체(10O, 11O)로의 가능한 참조 평가가 제 1 단계("A")에서 수행되며, 상기 가능한 또 다른 객체(10O, 11O)가 제 1 단계("A")에서 개방되며, 또한 가능한 또 다른 참조에 대해서도 마찬가지이다.
또한, 상기 경우에 있어서, 이전의 개방 객체로부터 다른 객체로 참조하여 얻어지는 허용된 객체 레벨의 수를 미리 결정하여 한정하도록("D") 함으로써, 모든 객체를 발견하고 트랜잭션에 의해 개방되는 객체 수를 제한하는데 필요한 시간을 제한할 수 있다.
도 8, 9 및, 10은 제 1 단계("A")에서 영향을 받은 객체의 개방 절차를 도시하고자 하는 것으로서, 상기 도면에 도시된 각종 단계("A", "B", "C") 간의 상대적인 크기 관계는 본 발명에 있어 중요하지 않다는 점을 알아두어야 한다.
다음 절차는 제안된 트랜잭션에 의해 모든 경우에서 수행된다:
- 트랜잭션을 생성한다;
- 중간 및 시간-소비 계산이 없을 때 다수의 객체를 개방한다;
- 하나 이상의 객체로의 접근이 다른 트랜잭션에 의해 차단되면, 상기 트랜잭션을 중지하고 가능하다면 나중에 시도한다;
- 모든 관련 객체에 대한 접근 권한을 부여받으면, 변경 활동과 필요한 비-변경 활동 모두를 수행한다;
- 관련 객체로의 비-변경 접근을 유지하면서 트랜잭션을 커미트하고 모든 로크를 해제한다;
- 다른 트랜잭션을 방해하거나 상기 다른 트랜잭션에 의해 방해받을 위험없 이, 트랜잭션에 관련 객체에 대한 일관성있는 스냅숏을 제공한다;
- 나머지 비-변경 활동을 수행한다; 그리고
- 관련 객체로의 접근을 해제한다.
본 발명에 따른 트랜잭션 관리는 완전히 비-차단성은 아닌데, 왜냐하면 완전히 비-로킹 시스템에 비해 구현 및 실행에 있어 간단하여 소정의 응용에 수용할 수 있으며 적합하다 하더라도, 소정의 로크가 제 1 단계("A")와 제 2 단계("B")에서 일어나기 때문이다.
2단계로 로킹을 제한하는 것이 뜻하는 것은, 2단계 이상을 포함하는 로크의 설정 및 해제를 이용하여 트랜잭션 관리를 해야한다는 것이지만, 여기서 제 1 단계는 트랜잭션에 의해 영향을 받은 객체로의 접근 요구 및 이것으로의 접근을 얻은 후 객체를 로킹하는 것을 포함하며, 다른 단계는 트랜잭션을 커미트하여, 트랜잭션 관리에 포함될 수 있는 다음 단계를 고려하지 않고 제 1 단계에 설정된 모든 로크를 해제한다는 것을 알아두어야 한다.
본 발명은 상술하여 예시한 실시예에 한정되지 않고, 다음의 특허청구범위로부터 명백한 바와 같이 본 발명 범위내에서 변형이 이루어질 수 있다는 것을 알아두어야 한다.

Claims (10)

  1. 데이터베이스에서 다수의 객체가 일관성 있게 판독되는 방법으로서,
    데이터베이스 트랜잭션은 2단계의 로킹에 의해 관리되는데, 즉,
    상기 트랜잭션에 의해 영향을 받은 객체로의 접근 요구와 객체로의 접근이 이루어진 후 상기 객체의 로킹을 포함하는 제1 단계 및,
    상기 트랜잭션을 커미트하고 상기 제1 단계에서 설정된 모든 로크를 해제하는 제2 단계를 포함하는데,
    상기 트랜잭션에 의해 수행된 실제 작업은 객체-변경 및/또는 객체 비-변경 활동을 포함할 수 있고, 객체 내용의 변경 또는 상기 객체의 갱신은 새로운 내용을 상기 객체의 새로운 버전에 기록하는 상기 트랜잭션에 의해 이루어지며, 상기 트랜잭션 이전의 객체의 현재 버전은 다른 트랜잭션이 상기 현재 버전을 이용하지 않는 한 유지되고, 상기 트랜잭션이 상기 제 1 단계에서 모든 변경 활동을 수행하며,
    상기 트랜잭션은, 상기 제 2 단계 이후 관련 객체 버전을 판독하기 위해 상기 객체로의 접근을 유지하고,
    상기 트랙잭션은 상기 제 2 단계 이후 가능한 가장 많은 수의 비-변경 활동을 수행하고,
    상기 트랜잭션은 상기 비-변경 활동을 수행한 후 상기 객체로의 접근을 폐쇄하며,
    이것에 의해 상기 방법은 상기 로크를 해제한 후 상기 데이터베이스 내에서 영향을 받은 객체의 일관성 스냅숏을 제공하며,
    상기 제 2 단계 이후 객체로의 상기 접근은, 상기 트랜잭션에 의해 이용될 시에 각 객체의 현재 버전을 표시하고, 트랜잭션의 폐쇄는 상기 표시의 소거를 나타내는 것을 특징으로 하는 데이터베이스에서 다수의 객체가 일관성 있게 판독되는 방법.
  2. 제 1 항에 있어서,
    상기 객체의 각 버전은, 로크를 설정할 때와 같이 트랜잭션이 상기 버전으로의 접근이 허용되면 증가하고, 로크를 해제할 때와 같이 트랜잭션이 더 이상 상기 객체 버전으로 접근할 필요가 없을 때 감소하는 카운터를 할당받는데,
    상기 표시는 상기 카운터의 증가를 나타내고, 상기 표시의 소거는 상기 카운터의 감소에 의해 행해지는 것을 특징으로 하는 데이터베이스에서 다수의 객체가 일관성 있게 판독되는 방법.
  3. 제 1 항에 있어서,
    상기 각 트랜잭션은, 상기 트랜잭션이 시작된 시간을 나타내는 타임 스탬프를 할당받고, 관련된 객체 버전이 이전 트랜잭션에 의해 타임 스탬프되지 않을시에 각 트랜잭션은 영향을 받은 객체의 각 버전을 타임 스탬프로 스탬프하며, 상기 객체의 각 버전은, 상기 버전에 할당된 최초 타임 스탬프와 동일하거나 이보다 더 오래된 어떤 트랜잭션이 아직 종료하지 않는 한 각 객체 버전이 유지되도록 하고, 상기 표시는 상기 각 객체의 버전상의 상기 타임 스탬프로 되어 있고, 상기 트랜잭션은 상기 객체로의 접근이 폐쇄되면 종료되는 것으로 간주되는 것을 특징으로 하는 데이터베이스에서 다수의 객체가 일관성 있게 판독되는 방법.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 트랜잭션은 비-변경 활동만을 포함하고, 상기 로크는 상기 객체를 판독만할 수 있는 것으로 제한하지만, 상기 로크가 해제되기 전에 다른 트랜잭션이 상기 객체로 접근이 허용된다는 것을 의미하는 공유 로크로 구성되는 것을 특징으로 하는 데이터베이스에서 다수의 객체가 일관성 있게 판독되는 방법.
  5. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    개방될 모든 객체는 상기 트랜잭션 시작 전에 알려지고, 상기 객체는 상기 제 1 단계에서 개방되는 것을 특징으로 하는 데이터베이스에서 다수의 객체가 일관성 있게 판독되는 방법.
  6. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 트랜잭션의 시작 전에 하나 이상의 시작 객체가 알려지고, 상기 하나 이상의 시작 객체는 하나 이상의 다른 객체를 참조하고, 상기 시작 객체는 상기 제 1 단계에서 개방되고, 다른 객체로의 참조는 상기 제 1 단계에서 평가되며, 상기 다른 객체는 상기 제 1 단계에서 개방되고, 상기 다른 객체로부터 또 다른 객체로의 참조는 상기 제 1 단계에서 평가되며, 상기 또 다른 객체가 상기 제 1 단계에서 개방되는 등으로 되는 것을 특징으로 하는 데이터베이스에서 다수의 객체가 일관성 있게 판독되는 방법.
  7. 제 6 항에 있어서,
    조기 개방된 객체로부터 다른 객체로의 참조로부터 유도되는 허용된 객체 레벨수를 미리 결정하는 것을 특징으로 하는 데이터베이스에서 다수의 객체가 일관성 있게 판독되는 방법.
  8. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 트랜잭션의 시작 전에 하나 이상의 시작 객체가 알려지고, 상기 하나 이상의 시작 객체는 하나 이상의 다른 객체를 참조하며, 상기 시작 객체는 상기 제 1 단계에서 개방되고, 다른 객체로의 참조는 상기 제 1 단계에서 상기 시작 객체 중 하나의 미리결정된 시작 객체에 대해 평가되며, 상기 다른 객체는 상기 제 1 단계에서 개방되고, 상기 제 1 객체로부터 또 다른 객체로의 참조는 상기 제 1 단계에서 평가되며, 상기 또 다른 객체는 상기 제 1 단계에서 개방되는 등으로 되는 것을 특징으로 하는 데이터베이스에서 다수의 객체가 일관성 있게 판독되는 방법.
  9. 제 8 항에 있어서,
    조기 개방된 객체로부터 다른 객체로의 참조로부터 얻어지는 허용된 객체 레벨 수를 미리 결정하는 것을 특징으로 하는 데이터베이스에서 다수의 객체가 일관성 있게 판독되는 방법.
  10. 삭제
KR1020007007955A 1998-01-22 1999-01-21 데이터베이스 관련 방법 KR100589816B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
SE9800161-3 1998-01-22
SE9800161A SE522023C2 (sv) 1998-01-22 1998-01-22 Metod för konsistent läsning av objekt i en databas

Publications (2)

Publication Number Publication Date
KR20010034268A KR20010034268A (ko) 2001-04-25
KR100589816B1 true KR100589816B1 (ko) 2006-06-14

Family

ID=20409935

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020007007955A KR100589816B1 (ko) 1998-01-22 1999-01-21 데이터베이스 관련 방법

Country Status (9)

Country Link
US (1) US6560601B1 (ko)
EP (1) EP1048001A1 (ko)
JP (1) JP2002501257A (ko)
KR (1) KR100589816B1 (ko)
CN (1) CN1119764C (ko)
AU (1) AU2446499A (ko)
CA (1) CA2319259C (ko)
SE (1) SE522023C2 (ko)
WO (1) WO1999038096A1 (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030035122A (ko) * 2001-10-30 2003-05-09 포디홈네트 인터넷 정보 가전용 내장형 데이터베이스 관리시스템에서의 다중 버전을 이용한 동시성 제어 방법
GB0130399D0 (en) * 2001-12-19 2002-02-06 Ibm Message ordering in a messaging system
US7299285B2 (en) * 2002-05-15 2007-11-20 Adc Dsl Systems, Inc. Resource sharing with database synchronization
US8495131B2 (en) 2002-10-08 2013-07-23 International Business Machines Corporation Method, system, and program for managing locks enabling access to a shared resource
US7289992B2 (en) 2003-05-01 2007-10-30 International Business Machines Corporation Method, system, and program for lock and transaction management
US7496574B2 (en) 2003-05-01 2009-02-24 International Business Machines Corporation Managing locks and transactions
US7133884B1 (en) * 2003-11-26 2006-11-07 Bmc Software, Inc. Unobtrusive point-in-time consistent copies
US7272609B1 (en) * 2004-01-12 2007-09-18 Hyperion Solutions Corporation In a distributed hierarchical cache, using a dependency to determine if a version of the first member stored in a database matches the version of the first member returned
JP2005259057A (ja) * 2004-03-15 2005-09-22 Oki Electric Ind Co Ltd 更新履歴管理装置及び記録媒体
JP4451705B2 (ja) 2004-04-26 2010-04-14 株式会社日立製作所 ストレージ装置、これを備えたストレージシステム、このシステムのデータ管理方法、及びストレージ装置のコントローラ実行プログラム
CN100353325C (zh) * 2004-08-23 2007-12-05 华为技术有限公司 实现共享内存数据库的方法及内存数据库系统
EP1677233A1 (en) * 2004-12-29 2006-07-05 Sap Ag Technique for mass data handling in a preference processing context
US7461065B2 (en) * 2006-01-31 2008-12-02 International Business Machines Corporation Method and system for utilizing shared numeric locks
US9280572B2 (en) * 2009-01-12 2016-03-08 Oracle International Corporation Managing product information versions
US8458181B2 (en) 2010-12-08 2013-06-04 International Business Machines Corporation Distributed free block map for a clustered redirect-on-write file system
US8904006B2 (en) 2010-12-08 2014-12-02 International Business Machines Corporation In-flight block map for a clustered redirect-on-write filesystem
US8396832B2 (en) 2010-12-08 2013-03-12 International Business Machines Corporation Independent fileset generations in a clustered redirect-on-write filesystem
US8626713B2 (en) * 2010-12-08 2014-01-07 International Business Machines Corporation Multiple contexts in a redirect on write file system
CN104156369B (zh) * 2013-05-14 2019-04-02 上海盛大网络发展有限公司 一种数据库镜像制作方法和一种数据库
JP6264872B2 (ja) * 2013-12-17 2018-01-24 日本電気株式会社 トランザクション処理システム
US9959308B1 (en) 2014-09-29 2018-05-01 Amazon Technologies, Inc. Non-blocking processing of federated transactions for distributed data partitions
US10754565B2 (en) * 2018-04-23 2020-08-25 Google Llc Systems and methods for deferred lock enforcement

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4627019A (en) * 1982-07-08 1986-12-02 At&T Bell Laboratories Database management system for controlling concurrent access to a database
US5170480A (en) 1989-09-25 1992-12-08 International Business Machines Corporation Concurrently applying redo records to backup database in a log sequence using single queue server per queue at a time
US5261069A (en) 1990-08-13 1993-11-09 Hewlett-Packard Company Method of maintaining consistency of cached data in a database system
US5893117A (en) * 1990-08-17 1999-04-06 Texas Instruments Incorporated Time-stamped database transaction and version management system
US5280612A (en) * 1991-11-26 1994-01-18 International Business Machines Corporation Multiple version database concurrency control system
US6026401A (en) * 1997-10-14 2000-02-15 International Business Machines Corporation Locking tool data objects in a framework environment

Also Published As

Publication number Publication date
KR20010034268A (ko) 2001-04-25
CN1294714A (zh) 2001-05-09
AU2446499A (en) 1999-08-09
SE522023C2 (sv) 2004-01-07
SE9800161D0 (sv) 1998-01-22
US6560601B1 (en) 2003-05-06
CA2319259C (en) 2008-06-10
CN1119764C (zh) 2003-08-27
JP2002501257A (ja) 2002-01-15
WO1999038096A1 (en) 1999-07-29
CA2319259A1 (en) 1999-07-29
EP1048001A1 (en) 2000-11-02
SE9800161L (sv) 1999-07-23

Similar Documents

Publication Publication Date Title
KR100589816B1 (ko) 데이터베이스 관련 방법
US6772155B1 (en) Looking data in a database system
US5414840A (en) Method and system for decreasing recovery time for failed atomic transactions by keeping copies of altered control structures in main memory
KR940005819B1 (ko) 분산 컴퓨터 데이타베이스에서 지속적 타임스탬프를 위한 시스템 및 방법
US5668958A (en) Heterogeneous filing system with common API and reconciled file management rules
EP1089177B1 (en) Transaction processing system using efficient file update processing and recovery processing
EP0698243B1 (en) Storage manager for computer system and method therefor
US7747996B1 (en) Method of mixed lock-free and locking synchronization
US7395382B1 (en) Hybrid software/hardware transactional memory
JP2559959B2 (ja) 複数の非同期的プロセスによりレコードを更新する方法
US7895401B2 (en) Software transactional memory for dynamically sizable shared data structures
US5220665A (en) Method and system for supporting concurrent use during sequential batch applications utilizing persistent cursors
US5263155A (en) System for selectively registering and blocking requests initiated by optimistic and pessimistic transactions respectively for shared objects based upon associated locks
KR100862661B1 (ko) 지연된 로깅 방법 및 그 장치
US20090183159A1 (en) Managing concurrent transactions using bloom filters
JPH056297A (ja) トランザクシヨン処理方法およびシステム
US7689788B2 (en) System and method for executing transactions
US6092163A (en) Pageable filter driver for prospective implementation of disk space quotas
KR100313844B1 (ko) 프레임워크환경에서도구데이터객체를로킹하는메카니즘
US7051051B1 (en) Recovering from failed operations in a database system
CA2279051C (en) Method and system for improving concurrency through early release of unnecessary locks
Kumar A concurrency control mechanism based on extendible hashing for main memory database systems
JPH09269912A (ja) 情報処理方法とその装置
US8688662B2 (en) Copy on access to locked objects
Hans et al. Opacity vs TMS2: expectations and reality

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

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee