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

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

Info

Publication number
KR20010034268A
KR20010034268A KR1020007007955A KR20007007955A KR20010034268A KR 20010034268 A KR20010034268 A KR 20010034268A KR 1020007007955 A KR1020007007955 A KR 1020007007955A KR 20007007955 A KR20007007955 A KR 20007007955A KR 20010034268 A KR20010034268 A KR 20010034268A
Authority
KR
South Korea
Prior art keywords
transaction
objects
version
access
lock
Prior art date
Application number
KR1020007007955A
Other languages
English (en)
Other versions
KR100589816B1 (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

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)를 일관성있게 판독하는 방법에 관한 것이다. 본 발명은 트랜잭션이 두 단계의 로킹에 의해 관리되는 데이터베이스와 이용하기에 적합한데, 여기서 제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}
트랜잭션 관리는 데이터베이스 관리 과정에 있어 기본적인 기술이며, 때로는 데이터베이스에서의 다른 활동(actions)이나 사상(events)으로부터 트랜잭션을 격리시켜 동적이며 변화하는 데이터베이스에 포함된 일관성 정보 픽처(picture)를 제공하는데 이용된다.
통상적인 트랜잭션 과정에 있어서, 실제 트랜잭션 과정동안 트랜잭션에 의해 이용된 객체는, 진행중인 트랜잭션동안 다른 트랜잭션에 의해 이용되는 것을 방지하기 위해 차단된다. 따라서, 상기와 동일한 객체로 접근하고자 하는 다른 트랜잭션은 대기하거나 중지하여 나중에 다시 시도해야 한다.
트랜잭션에서 수행된 실제 작업은 객체를 변경하는 활동 및/또는 객체를 변경되지 않은 상태로 두는 활동을 포함하는데, 이하 이와 같은 활동 이나 사상을 객체 변경 사상 및 객체 비변경(non-changing) 사상이라 한다. 객체의 내용은 변경된 내용을 새로운 버전(version)의 객체에 기록하거나, 또는 옛날 버전을 고쳐 기록함으로써 변경 또는 갱신될 수 있다.
공지된 기술에 있어서, 변경 및 비변경 트랜잭션 모두, 트랜잭션에 관한 모든 활동은 트랜잭션의 "실행" 전에 수행된다. 트랜잭션의 "완결(commit)/실행" 이란 용어는 당업자들에게 잘 알려져있는 것으로서, 간단히 말해 트랜잭션에 의해 요구되며 격리를 요구하는 활동이나 사상이 수행되었음을 트랜잭션이 알려주는 것을 의미한다. 또한, 현재 문서(document)에서 로크 해제를 별도의 활동으로 언급한다 하더라도, 일반적으로 완결이라는 용어가 모든 설정되었던 로크의 해제도 포함한다고 할 수 있다.
트랜잭션 이전의 지금 또는 현재의 객체 버전은, 다른 트랜잭션이 지금 또는 현재 버전을 더 이상 이용하지 않을 때까지 상기 현재의 형태로 유지된다. 이는, 어떤 트랜잭션이 해당 버전을 이용하는지에 따라 각기 다른 버전이 상이한 지속 기간(duration) 주기 동안 세이브(save)될 필요가 있음을 의미한다.
어떤 응용은 다른 트랜잭션, 특히 단순히 판독만하는 트랜잭션에 대해 이용되는 객체로의 접근을 차단하지 않는 방식인 실시간(real time)으로 데이터베이스에 접근할 것을 요구한다. 이러한 점에 있어서, 트랜잭션-제한(bound)이 아니라 오히여 빠르며 차단하지 않는 상이한 객체로의 접근을 허용하는 데이터베이스 관리 시스템을 이용하는 것이 공지되어 있다.
상기 시스템이 갖는 단점은, 데이터베이스에서 실행하는 사용자가 트랜잭션-제한 시스템에서 가능한 것과 동일한 격리 방식으로 진행할 수 없으며, 확실히 일관성 데이터베이스 픽처를 제공받을 수 없다는 점이다.
또한, 비-차단 트랜잭션은 명확한(well-defined) 트랜잭션 프로토콜을 관리함으로써 이루어질 수 있다는 것이 공지되어 있다. 그러나, 상기 트랜잭션 프로토콜은 관리하기가 용이하지 않으며, 이것을 실현한다는 것은 지나치게 복잡한 과정이 요구되고, 및/또는 큰 메모리 용량을 필요로한다.
따라서, 일관성 데이터베이스 픽처, 즉 정확한 결과를 항상 보장할 수 있지는 않지만 빠르고 간단하게 구현될 수 있는 데이터베이스를 제공하는 것, 또는 관리의 긍정성(positive)이 있으며 정확한 픽처를 제공하는 반면 사용중 느리며 다루기 힘든 데이터베이스를 제공하는 것이 공지되어 있다.
또한, 로크가 전혀 이용되지 않은 소위 병행(concurrent) 트랜잭션의 최적 제어에 따른 데이터베이스가 선행기술에 공지되어 있다. 상기 제어는 경합(conflict)이 전혀 일어나지 않는다는 가정하에 모든 트랜잭션을 허용한다는 것을 따른다.
좀 더 상세히 설명하면, 병행 트랜잭션의 최적 제어라 함은, 트랜잭션이 "완결"되기 이전에 트랜잭션과 관련하여 경합이 전혀 일어나지 않는다는 것을 확인하는 검사가 이루어짐을 의미한다. 경합이 일어나는 것으로 발견되면, 트랜잭션이중지된다. 그렇지 않으면, 트랜잭션의 실행이 허용된다.
또한, 두 가지 상이한 로크가 소위 두 단계의 로킹에 있어서는 일반적이라 할 수 있다.
제1로크는 소위 공유 로그(shared lock)로서, 데이터 객체에 대해 단지 판독만하는 트랜잭션에 의해 설정되며, 다른 판독 트랜잭션이 상기 객체로 접근하는 것을 허용하지만, 변경 트랜잭션에 대해서는 객체를 로킹한다.
제2로크는 소위 배타적인(exclusive) 로크로서, 데이터 객체를 변경하는 트랜잭션에 의해 설정되며, 모든 다른 트랜잭션에 대해 상기 객체를 로킹한다.
다음 공보(publications)는 초기 공지된 기술에 대한 실시예를 개시하는 것으로서, 여기서는 상이한 형태의 비-차단 트랜잭션이 예시되어 있다.
US-A-4,627,019
상기 공보에는 데이터베이스의 각종 객체에 관한 인덱스(index)가 상이한 객체가 발견되는 곳을 나타내는 데이터베이스가 기재되어 있다. 객체-변경 트랜잭션이 시작되면, 변경된 객체가 저장될 새로운 데이터베이스 위치로 트랜잭션이 참조된다. 변경된 객체의 새로운 위치를 가리키는 새로운 인덱스가 생성된다.
옛날 인덱스는 계속 유지되어, 여전히 각 객체의 옛날 위치를 가르킨다.
초기 인덱스 버전 각각은 트랜잭션이 상기 인덱스 버전을 이용하는 한 계속 유지된다.
이와 같은 트랜잭션 관리가 비-차단 트랜잭션 프로토콜을 제공하지만, 다수의 상이한 인덱스 버전이 병행하여 존재할 수 있기 때문에 많은 양의 메모리 공간이 필요하다. 트랜잭션 관리의 구현 역시 복잡하다.
EP-A2-0 471 282
상기 공보에는 세 가지 새로운 유형의 로크, 즉 위트 캐시 로크(wit cash lock), 보류(pending) 로크 및, 아웃-오브-데이트(out-of-date) 로크에 대한 설명이 지재되어 있다. 제1트랜잭션인 판독 트랜잭션이 상이한 객체에 로크를 설정하면, 공유 로크대신 캐시 로크가 설정된다. 제1트랜잭션이 여전히 진행중인 동안 제2트랜잭션이 동일한 객체에 배타적인 로크를 요구한다면, 캐시 로크가 보류 로크로 변경된다.
제2트랜잭션이 객체를 보류 로크로 변경하면, 상기 로크는 아웃-오브-데이트 로크로 변경된다. 제2트랜잭션이 객체에 어떤 변화도 일으키지 않는다면, 제2트랜잭션이 완결되면 보류 로크가 캐시 로크로 변경된다.
제1트랜잭션은 일반적으로 모든 로크가 캐시 로크인 동안 지속된다. 제1트랜잭션에 의해 영향을 받는 객체 중에 보류 로크가 있다면, 제1트랜잭션은 보류 로크가 어떤 다른 로크로 전환할때 까지 대기한다.
보류 로크가 캐시 로크로 변경되면 제1로크가 지속될 수 있다. 보류 로크가 아웃-오브-데이트 로크로 변경되면, 이는 객체가 변경되며 그 결과 제1트랜잭션이 중지된다는 것을 나타낸다.
상기 방법에 의해 변경 트랜잭션을 차단하지 않는 로크가 설정될 수 있다 하더라도, 판독 트랜잭션을 수행하는 동안 객체를 변경한 데이터 객체 변경 트랜잭션으로 인해, 시작된 판독 트랜잭션을 중지할 필요가 있다.
본 발명은 복수의 데이터 객체(object)을 일관적으로 데이터베이스에서 판독할 수 있도록 하는 방법에 관한 것이다.
본 발명은 두-단계(two-phase)의 로킹(locking)을 이용하여 트랜잭션(transactions)이 관리되는 데이터 베이스에서의 특정 이익에 적합할 수 있는데, 여기서 제1단계는 트랜잭션에 의해 영향을 받은 객체로의 접근(access) 요구와 접근이 이루어지자마자 상기 객체를 로킹하는 것을 포함하며, 제2단계는 트랜잭션의 실행(commitment) 및 상기 제1단계에서 설정되었던 모든 로크의 해제를 포함한다.
도 1은 데이터베이스의 병행 트랜잭션과 관련하여 공지된 제1문제점을 개략적으로 나타내는 도면.
도 2는 데이터베이스의 병행 트랜잭션과 관련하여 공지된 제2문제점을 개략적으로 나타내는 도면.
도 3은 데이터베이스의 병행 트랜잭션과 관련하여 공지된 제3문제점을 개략적으로 나타내는 도면.
도 4는 병행 트랜잭션 및 데이터베이스의 상호 종속하는 객체와 관련된 제4문제점을 개략적으로 나타내는 도면.
도 5는 본 발명에 따라 데이터베이스의 객체를 갱신하는 한 가지 조건을 개략적으로 나타내는 도면.
도 6은 본 발명에 따라 트랜잭션을 각기 다른 단계로 분리하는 것을 개략적으로 나타내는 도면.
도 7은 본 발명에 따른 개략적이며 매우 간단한 판독 트랜잭션.
도 8은 본 발명에 따른 개략적이며 매우 간단한 그룹 개방.
도 9는 본 발명에 따른 개략적이며 매우 간단한 순환적인 개방 활동.
도 10은 본 발명에 따른 개략적이며 매우 간단한 경로-개방 활동.
기술적인 문제점
상기 설명한 바와 같은 초기의 기술 관점을 고려하면, 할당된 로크가 객체 변경 트랜잭션을 차단하는데 걸리는 시간 주기가 매우 단축되는 트랜잭션 관리를 가능하게 하는데 기술적인 문제점이 있는 것으로 보인다.
다른 기술적인 문제점은 할당된 로크의 설정과 비-변경 트랜잭션에 대한 상기 로크의 해제 사이의 시간 주기를 단축하는 것이다.
다른 기술적인 문제점은, 접근 시간 동안 변경 트랜잭션에 의해 영향을 받은 객체를 차단하지 않고 시간과 관련하여 비-변경 트랜잭션에 의해 이용되는 객체로의 제한없는 접근을 제공하는 것으로서, 즉 트랜잭션에 의해 설정된 로크 이후 비-차단 접근을 제공하는 것이다.
또한, 트랜잭션을 변경과 비-변경 활동으로 분리하는데 있어 기술적인 문제점이 존재하는데, 여기서 상기 트랜잭션의 변경 활동에 배타적인 로크가 제공되며, 비-변경 활동에는 영향을 받은 객체로의 시간상 제한이 없는 비-차단 접근이 제공된다.
또 다른 기술적인 문제점은, 각 객체 버전이 카운터(counter)를 할당받는 것에 의한 데이터베이스에서 상기 설명된 기술적인 문제점을 해결하는 것으로서, 상기 카운터는 로크를 설정할 때와 같이 트랜잭션이 객체로의 접근을 허용받을 때 증가하고(incremented), 로크를 해제할 때와 같이 트랜잭션이 상기 객체 버전으로의 접근을 더 이상 요구하지 않을 때 감소한다(decremented).
다른 기술적인 문제점은, 트랜잭션이 시작된 시간을 나타내는 타임 스탬프(time stamp)를 각 트랜잭션에 할당하는 것에 따른 데이터베이스에서 앞서 설명한 기술적인 문제점을 해결하는 것으로서, 여기서 상기 버전의 객체를 타임 스탬프한 이전(younger) 트랜잭션이 없으면, 트랜잭션 각각은 영향을 받은 각 객체 버전을 각자의 타임 스탬프를 이용하여 스탬프하며, 오래된(older) 트랜잭션으로 종료한 트랜잭션이 전혀 없거나, 또는 해당 버전에 할당된 최초 타임 스탬프만큼 오래된 트랜잭션이 전혀 없는 한 각 객체 버전이 유지되어야 한다.
해결방법
본 발명은, 두 단계로 로킹함으로써 트랜잭션이 관리되는 데이터베이스에서 복수의 객체를 일관성있게 판독할 수 있도록 하는 방법을 그 출발점으로 한다.
제1단계는 트랜잭션에 의해 영향을 받은 객체로의 접근 요구 및, 접근이 이루어진 후 객체를 로킹시키는 요구를 포함하며, 제2단계는 트랜잭션의 완결 및 제1단계에서 설정된 모든 로크의 해제를 포함한다.
트랜잭션에서 수행되는 실제 작업은 객체를 변경하는 활동 및/또는 객체를 변경하지 않는 활동을 포함할 수 있는데, 여기서 객체 내용의 갱신 또는 변경은 변경된 내용을 새로운 객체 버전에 기록함으로써 이루어지며, 트랜잭션 이전에 존재했던 객체 버전은 다른 트랜잭션이 현재 버전을 이용하지 않을 때 까지 유지된다.
트랜잭션은 제1단계에서 모든 데이터 변경 활동을 수행한다.
상기 방법을 출발점으로 하고, 상기 기술적인 문제점 중 하나 이상에 대한 해결방법을 제공하는 것을 목적으로 하면, 본 발명에 있어서, 제2단계 이후 트랜잭션이 상기 개체로의 접근을 유지하고, 제2단계 이후 트랜잭션은 가능한 가장 많은 수의 비-변경 활동을 수행하며, 상기 비-변경 활동을 수행한 이후 객체로의 접근을 폐쇄시킬 것을 제안한다.
그 다음 상기 로크를 해제함으로써, 트랜잭션은 비-변경 활동에 대해 데이터베이스 내의 영향을 받은 객체의 일관성 스냅숏(shapshots)을 유지한다.
또한, 본 발명에 있어서, 제2단계 이후 객체로의 접근은 현재 버전의 객체 각각이 트랜잭션에 의해 이용됨에 따라 이것을 표시하는(marking) 것을 포함하게 되며, 객체 접근을 폐쇄하는 것은 상기 표시를 제거하는 것과 아울러, 적어도 트랜잭션이 폐쇄되기 전까지는 트랜잭션이 완결된다 하더라도 상기 객체 버전을 유지하는 것을 포함할 것을 제안한다.
각 객체 버전이 카운터를 할당받으면, 본 발명은 오로지 상기 표시가 제거될 때, 즉 트랜잭션을 폐쇄시킬 때 상기 표시가 카운터의 감소시에 존재한다는 것을 나타내는데, 상기 카운터는 로크를 설정할 때와 같이 트랜잭션이 상기 버전으로의 접근을 할당받으면 증가, 즉 스텝 업(step up)하고, 로크를 해제할 때와 같이 트랜잭션이 더 이상 상기 버전으로 접근할 필요가 없으면 감소, 즉 스텝 다운(step down)한다.
트랜잭션 각각이 트랜잭션이 시작된 시점을 나타내는 타임 스탬프를 할당받으면, 본 발명에 있어서, 상기 표시는 각 객체 버전의 타임 스탬스를 포함하며, 상기 객체 접근을 폐쇄시킬 때 트랜잭션이 종료하는 것으로 여겨진다고 제안되는데, 여기서 상기 버전의 객체를 타임 스탬프한 이전 트랜잭션이 없으면 트랜잭션 각각은 영향을 받은 객체의 각 버전을 각자의 타임 스탬프를 이용하여 스탬프하며, 상기 버전에 할당된 최초 타임 스탬프와 동일하거나 또는 이보다 더 오래된 트랜잭션이 아직도 종료하지 않았다고 하면 각 객체 버전은 남아있는 것이 허용된다.
트랜잭션이 단지 비-변경 활동을 포함하면, 본 발명에 있어서 로크는, 공유 로크가 해제되기 전에 다른 트랜잭션이 객체 접근을 얻을 수 있지만, 상기 객체를 단지 판독만 할 수 있는 것으로 제한되는 공유 로크를 포함하게 될 것을 제안한다.
모든 객체가 트랜잭션이 시작하기 전에 개방되는 소위 그룹 개방(group opening)을 제공하기 위해, 본 발명에 있어서 객체가 제1단계에서 개방되는 것으로 제안된다.
트랜잭션이 시작하기 전에 하나 이상의 시작 객체가 알려지며, 상기 시작 객체 중 하나 이상이 하나 이상의 다른 객체를 참조하는 소위 데이터 객체의 순환적인 개방(recursive opening)을 제공하기 위해, 본 발명에 있어서 시작 객체는 제1단계에서 개방되고, 다른 객체로의 참조는 상기 시작 객체 중 소정의 객체에 대해 제1단계에서 이루어지며, 또한 다른 객체가 제1단계에서 개방되는 것으로 제안된다.
또한, 본 발명에 있어서 다른 객체로부터 또 다른 객체로의 참조가 제1단계에서 이루어지며, 또 다른 객체가 제1단계에서 개방되는 등으로 제안된다.
본 발명은 또한, 초기 개방된 객체에서 다른 객체를 참조하여 얻어지는 허용된 객체 레벨의 수를 미리 결정함으로써 이용가능한 객체의 수를 제한할 수 있다.
트랜잭션을 시작하기 전에 하나 이상의 시작 객체가 알려지고, 하나 이상의 시작 객체가 하나 이상의 다른 객체를 참조하는 소위 경로 개방(path opening)을 제공하기 위해, 본 발명에 있어서 시작 객체가 제1단계에서 개방되고, 다른 객체로의 참조는 상기 시작 객체 중 소정의 객체에 대해 제1단계에서 이루어지며, 또 다른 객체가 제1단계에서 개방되는 것으로 제안되어 있다.
본 발명의 한 실시형태에 따르면, 다른 가능한 객체로부터 또 다른 객체로의 참조가 제1단계에서 이루어지며, 역시 또 다른 객체가 제1단계에서 개방되는 등으로 된다.
다른 실시형태에 따르면, 초기에 개방된 객체로부터 다른 객체를 참조하여 얻어지는 허용된 객체 레벨의 수를 미리 결정할 수 있게 함으로써, 이용가능한 객체 수가 제한된다.
장점
본 발명 방법에 의해 우선적으로 얻을 수 있는 장점은, 트랜잭션이 다른 트랜잭션에 의한 접근에 대해 객체를 로크시키는 시간을 단축하는 것이 가능함과 아울러, 실질적으로 비-차단 특성의 판독 트랜잭션이 간단하고, 빠르며, 비교적 메모리가 적고 계산에 이로운 방식으로 얻어질 수 있는 방법이라는데 있다.
상기 방법은, 트랜잭션이 완결된 후 트랜잭션에 의해 영향을 받은 객체에 대해 유지된 일관성 스냅숏을 제공함은 물론, 시간상 트랜잭션을 제한하지 않으며 다른 트랜잭션을 차단하지 않고, 트랜잭션으로 하여금 비-변경 활동 객체에 대해 일관성 픽쳐를 이용할 수 있도록 한다.
다른 트랜잭션, 즉 단순히 판독만하는 트랜잭션이 아닌 트랜잭션 조차도 하나 이상의 객체를 로크하는데 걸리는 시간 주기가 각기 다른 크기로 단축될 수 있는데, 이는 로크된 객체에 대한 대기 시간이 상당히 단축되므로 데이터베이스가 모든 트랜잭션에 대해 상이한 속도를 갖게 됨을 의미한다.
또한, 본 발명은 상이한 객체 버전을 복사하는 것이 메모리 용량, 시간 및/또는, 실행에 있어 비용이 드는 작업이라 여겨지는 데이터베이스에서 특히 이로운 방법을 제공한다. 본 발명 방법의 한 실시형태에 따르면, 복사하는 것은 우선 트랜잭션을 판독하는 것이 금지되며, 시간과 관련하여 사용된 로크의 조기 해제를 허용한다.
또한, 본 발명은 다수의 객체에 대해 일관성 스냅숏이 필요하지만, 상기 픽쳐가 반드시 마지막 트랜잭션에 따라 완전히 갱신될 필요가 없는 데이터베이스에 특히 유리하다.
또한, 본 발명은 실시간 응용이 매우 요구되는 RAM 데이터베이스내에서 실현하는 것과 관련하여 특히 유리하다.
발명 방법에 대한 기본적인 특성은 이하의 특허청구범위 제1항에서 설명된다.
이제, 예시 방법 및 첨부 도면을 참조하여 본 발명을 더욱 상세하게 설명한다.
따라서, 도 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)에서 손실된다.
상기 설명한 동작 시퀀스는 "판독, 기록, 기록"으로 되어 있는데, 이것은 경합을 일으킬 수 있다.
이러한 문제점은 예컨대, 통상적인 두 단계의 로킹을 이용함으로써 해결될 수 있다. 다음으로, 수행될 트랜잭션이 갱신 트랜잭션인 동시에 변경 트랜잭션이므로, 제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)을 통해 얻어진 두 개의 상이한 판독은 결과적으로 각기 다른 두 개의 값(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")에서 일어나기 때문이다.
두 단계로 로킹을 제한하는 것이 뜻하는 것은, 두 단계 이상을 포함하는 로크의 설정 및 해제를 이용하여 트랜잭션 관리를 해야한다는 것이지만, 여기서 제1단계는 트랜잭션에 의해 영향을 받은 객체로의 접근 요구 및 이것으로의 접근을 얻은 후 객체를 로킹하는 것을 포함하며, 다른 단계는 트랜잭션을 완결하여, 트랜잭션 관리에 포함될 수 있는 다음 단계를 고려하지 않고 제1단계에 설정된 모든 로크를 해제한다는 것을 알아두어야 한다.
본 발명은 상기 설명하여 예시한 실시형태에 한정되지 않고, 다음 특허청구범위로부터 명백한 바와 같이 본 발명 범위내에서 변형이 이루어질 수 있다는 것을 알아두어야 한다.

Claims (10)

  1. 데이터베이스 내에서 다수의 객체를 일관성있게 판독하는 방법으로서, 데이터베이스 트랜잭션은 두 단계의 로킹에 의해 관리되는데, 제1단계는 상기 트랜잭션에 의해 영향을 받은 객체로의 접근 요구와, 객체로의 접근이 이루어진 후 상기 객체의 로킹을 포함하고, 제2단계는 상기 트랜잭션을 완료하는 것을 포함하고 상기 제1단계에서 설정된 모든 로크가 해제되며, 상기 트랜잭션에 의해 수행된 실제 작업은 객체-변경 및/또는 객체 비-변경 활동을 포함할 수 있고, 객체 내용의 변경 혹은 상기 객체의 갱신은 새로운 내용을 상기 객체의 새로운 버전에 기록하는 상기 트랜잭션에 의해 이루어지며, 상기 트랜잭션 이전의 상기 객체의 현재 버전은 다른 트랜잭션이 상기 현재 버전을 이용하지 않을 때까지 보유되고, 그리고 상기 트랜잭션이 상기 제1단계에서 모든 변경 활동을 수행하는 다수의 객체의 일관성 판독 방법에 있어서,
    상기 트랜잭션은, 상기 제2단계 이후 관련 객체 버전을 판독하기 위해 상기 접근을 유지하고,
    상기 제2단계 이후 가능한 가장 많은 수의 비-변경 활동을 수행하며,
    상기 비-변경 활동을 수행한 후 상기 객체로의 접근을 폐쇄시킴으로써, 상기 로크를 해제한 후 상기 데이터베이스에서 영향을 받은 객체의 일관성 스냅숏을 제공하는 것을 특징으로 하는 다수의 객체의 일관성 판독 방법.
  2. 제1항에 있어서, 상기 제2단계 이후 객체로의 상기 접근은, 상기 트랜잭션에 의해 이용될 시에 각 객체의 현재 버전을 표시하고, 트랜잭션의 폐쇄는 상기 표시의 소거를 나타내는 것을 특징으로 하는 다수의 객체의 일관성 판독 방법.
  3. 제2항에 있어서, 상기 객체의 각 버전은, 로크를 설정할 때와 같이 트랜잭션이 상기 버전으로 접근할 수 있으면 증가하고, 로크를 해제할 때와 같이 트랜잭션이 더 이상 상기 객체 버전으로 접근할 필요가 없을 때 감소하는 카운터를 할당받는데, 상기 표시는 상기 카운터의 증가를 나타내고, 상기 표시의 소거는 상기 카운터의 감소를 나타내는 것을 특징으로 하는 다수의 객체의 일관성 판독 방법.
  4. 제2항에 있어서, 상기 각 트랜잭션은 상기 트랜잭션이 시작된 시간을 나타내는 타임 스탬프를 할당받고, 관련된 객체 버전이 이전 트랜잭션에 의해 타임 스탬프되지 않을시에 영향을 받은 객체의 각 버전을 그 타임 스탬프를 이용하여 스탬프하며, 상기 객체의 각 버전은, 상기 버전에 할당된 최초 타임 스탬프와 동일하거나 이보다 더 오래된 트랜잭션이 아직 종료하지 않는 한 각 객체 버전이 남아있고, 상기 표시는 상기 각 객체의 버전상의 상기 타임 스탬프로 되어 있고, 상기 트랜잭션은 상기 객체로의 접근이 폐쇄되면 종료되는 것을 특징으로 하는 다수의 객체의 일관성 판독 방법.
  5. 전술한 어느 한 항에 있어서, 상기 트랜잭션은 비-변경 활동만을 포함하고, 상기 로크는 상기 객체를 판독만할 수 있는 것으로 제한하지만, 상기 로크가 해제되기 전에 다른 트랜잭션이 상기 객체로 접근할 수 있음을 의미하는 공유 로쿠로 구성되는 것을 특징으로 하는 다수의 객체의 일관성 판독 방법.
  6. 제1항 내지 4항 중 어느 한 항에 있어서, 개방되는 모든 객체는 상기 트랜잭션 시작 전에 알려지고, 상기 객체는 상기 제1단계에서 개방되는 것을 특징으로 하는 다수의 객체의 일관성 판독 방법.
  7. 제1항 내지 4항 중 어느 한 항에 있어서, 하나 이상의 시작 객체는 상기 트랜잭션의 시작 전에 알려지고, 상기 하나 이상의 시작 객체는 하나 이상의 다른 객체를 참조하고, 상기 시작 객체는 상기 제1단계에서 개방되고, 다른 객체로의 참조는 상기 제1단계에서 평가되며, 상기 다른 객체는 상기 제1단계에서 개방되고, 상기 다른 객체로부터 또 다른 객체로의 참조는 상기 제1단계에서 평가되며, 상기 또 다른 객체가 상기 제1단계에서 개방되는 등으로 되는 것을 특징으로 하는 다수의 객체의 일관성 판독 방법.
  8. 제7항에 있어서, 이미 개방된 객체로부터 다른 객체로의 참조로부터 얻어지는 허용된 객체 레벨수를 미리 결정하는 것을 특징으로 하는 다수의 객체의 일관성 판독 방법.
  9. 제1항 내지 4항 중 어느 한 항에 있어서, 하나 이상의 시작 객체는 상기 트랜잭션의 시작 전에 알려지고, 상기 하나 이상의 시작 객체는 하나 이상의 다른 객체를 참조하며, 상기 시작 객체는 상기 제1단계에서 개방되고, 다른 객체로의 참조는 상기 제1단계에서 상기 시작 객체 중 미리결정된 시작 객체의 하나에 대해 평가되며, 상기 다른 객체는 상기 제1단계에서 개방되고, 상기 제1객체로부터 또 다른 객체로의 참조는 상기 제1단계에서 평가되며, 상기 또 다른 객체는 상기 제1단계에서 개방되는 등으로 되는 것을 특징으로 하는 다수의 객체의 일관성 판독 방법.
  10. 제9항에 있어서, 이미 개방된 객체로부터 다른 객체로의 참조로부터 얻어지는 허용된 객체 레벨 수를 미리 결정하는 것을 특징으로 하는 다수의 객체의 일관성 판독 방법.
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 true KR20010034268A (ko) 2001-04-25
KR100589816B1 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
US7496574B2 (en) 2003-05-01 2009-02-24 International Business Machines Corporation Managing locks and transactions
US7289992B2 (en) 2003-05-01 2007-10-30 International Business Machines Corporation Method, system, and program for lock and transaction management
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
US8626713B2 (en) * 2010-12-08 2014-01-07 International Business Machines Corporation Multiple contexts in a redirect on write file system
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
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
CA2319259A1 (en) 1999-07-29
KR100589816B1 (ko) 2006-06-14
WO1999038096A1 (en) 1999-07-29
CN1294714A (zh) 2001-05-09
AU2446499A (en) 1999-08-09
US6560601B1 (en) 2003-05-06
CN1119764C (zh) 2003-08-27
SE522023C2 (sv) 2004-01-07
SE9800161D0 (sv) 1998-01-22
JP2002501257A (ja) 2002-01-15
SE9800161L (sv) 1999-07-23
CA2319259C (en) 2008-06-10
EP1048001A1 (en) 2000-11-02

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
EP1089177B1 (en) Transaction processing system using efficient file update processing and recovery processing
KR940005819B1 (ko) 분산 컴퓨터 데이타베이스에서 지속적 타임스탬프를 위한 시스템 및 방법
US5668958A (en) Heterogeneous filing system with common API and reconciled file management rules
US7395382B1 (en) Hybrid software/hardware transactional memory
KR100862661B1 (ko) 지연된 로깅 방법 및 그 장치
JP2559959B2 (ja) 複数の非同期的プロセスによりレコードを更新する方法
US6009426A (en) Method of managing a shared memory using read and write locks
US7146366B2 (en) Distributed concurrency control using serialization ordering
US7747996B1 (en) Method of mixed lock-free and locking synchronization
JPH056297A (ja) トランザクシヨン処理方法およびシステム
US7689788B2 (en) System and method for executing transactions
Anderson et al. A framework for implementing objects and scheduling tasks in lock-free real-time systems
US8095731B2 (en) Mutable object caching
US7051051B1 (en) Recovering from failed operations in a database system
US6556994B1 (en) Method and system for improving concurrency through early release of unnecessary locks
US7519967B1 (en) Facilitating biased synchronization in an object-based system
Kumar A concurrency control mechanism based on extendible hashing for main memory database systems
JPH09269912A (ja) 情報処理方法とその装置
Hans et al. Opacity vs TMS2: expectations and reality
Daradi et al. Relational Database Management System
KR100312910B1 (ko) 데이터베이스관리시스템에서트랜잭션고립단계의확장방법
KR100295413B1 (ko) 트랜잭션 스케줄링 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20090605

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee