KR20060046029A - 데이터 관리 엔진 및 병행 트랜잭션 수행 방법 - Google Patents

데이터 관리 엔진 및 병행 트랜잭션 수행 방법 Download PDF

Info

Publication number
KR20060046029A
KR20060046029A KR1020050038948A KR20050038948A KR20060046029A KR 20060046029 A KR20060046029 A KR 20060046029A KR 1020050038948 A KR1020050038948 A KR 1020050038948A KR 20050038948 A KR20050038948 A KR 20050038948A KR 20060046029 A KR20060046029 A KR 20060046029A
Authority
KR
South Korea
Prior art keywords
data
page
copy
data page
transaction
Prior art date
Application number
KR1020050038948A
Other languages
English (en)
Other versions
KR101137053B1 (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 KR20060046029A publication Critical patent/KR20060046029A/ko
Application granted granted Critical
Publication of KR101137053B1 publication Critical patent/KR101137053B1/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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • 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

Landscapes

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

Abstract

다수의 사용자들이 병행 트랜잭션들을 효과적으로 수행하고, 수정된 객체의 물리적인 레벨 하의 논리적인 레벨에서 데이터를 추적하는 시스템 및 방법론들이 제공된다. 각각의 트랜잭션은 수정된 데이터 세그먼트의 커미팅된(committed) 버전을 자신의 각각의 공간에 복사할 수 있고, 수정하는 동안 이러한 사본을 갱신시킬 수 있다. 탐지 컴포넌트는 동작중인 임의의 데이터 세그먼트가 다른 트랜잭션 커미팅에 의해 갱신되는 것을 요구하는지를 탐지하며, 병합 컴포넌트는 데이터 세그먼트를 자신의 커미팅된 버전으로 동기화한다. 탐지 및 병합 프로세스를 완료할 때, 다양한 최적화 절차들이 또한 커미트 단계의 일부로서 통합될 수 있다.
병행 트랜잭션, 물리적인 레벨, 논리적인 레벨, 데이터 세그먼트, 커미팅

Description

데이터 관리 엔진 및 병행 트랜잭션 수행 방법{Concurrent transactions and page synchronization}
도 1은 본 발명의 일 양상에 따르는 데이터 관리 엔진의 일부에 대한 블럭도.
도 2는 본 발명의 일 양상에 따라 잠금 관리자를 갖는 데이터베이스 환경의 일부로 동작하는 데이터베이스 엔진의 블럭도.
도 3은 본 발명의 또다른 양상에 따라 잠금 관리자가 관리하는 예시적인 잠금 계층구조를 예시하는 도면.
도 4는 본 발명의 일 양상에 따라 병행 트랜잭션들을 사용하는 클라이언트 서버 네트워크의 블럭도.
도 5는 본 발명의 일 양상에 따르는 페이지 마킹 컴포넌트를 구비한 데이터베이스 엔진의 일부에 대한 블럭도.
도 6는 본 발명의 일 양상에 따르는 특정한 방법론을 예시하는 도면.
도 7은 본 발명의 또다른 양상에 따르는 예시적인 방법론을 나타내는 도면.
도 8은 본 발명의 일 양상에 따르는 탐지 및 병합 방법론에 대한 예시적인 순서도.
도 9는 본 발명의 일 양상에 따르는 커미트 단계의 일부로서의 탐지 및 병합 프로세스에 대한 또다른 예시적인 방법론을 예시하는 도면.
도 10은 본 발명의 다양한 양상들을 사용할 수 있는 적절한 컴퓨팅 환경을 예시하는 개요적 블럭도.
도 11은 본 발명의 일 양상에 따라 데이터 수정 방법론을 사용할 수 있는 클라이언트-서버 시스템을 예시하는 도면.
<도면의 주요 부분에 대한 부호의 설명>
110: 탐지 컴포넌트
112: 트랜잭션
120: 병합 컴포넌트
130: 커미팅된 버전
230: 잠금 관리자 컴포넌트
본 발명은 일반적으로 데이터 관리에 관한 것이며, 특히 페이지 버전화(versioning)/복사 접근법을 통해 데이터의 물리적인 세그먼트 상에서 동작하는 병행 트랜잭션들을 (예를 들어, 데이터베이스 관리 시스템의 하부 페이지 레벨에서) 수행하는 시스템 및 방법들에 관한 것이다.
컴퓨터 기술(예를 들어, 마이크로프로세서 속도, 메모리 성능, 데이터 전송 대역, 소프트웨어 기능 등)의 진보는 일반적으로 다양한 산업에서 컴퓨터 어플리케 이션이 증가하는데 기여했다. 종종 서버들의 어레이로 구성되는 보다 강력한 서버 시스템들은 종종, 예를 들어, 월드 와이드 웹과 같은 외부 소스(source)로부터 생성되는 서비스 요청을 서비스하기 위해 제공된다. 로컬 인터넷 시스템들이 보다 복잡해지면서, 대용량 네트워크 로드들 및 관련 어플리케이션들, 인터넷 시스템 디맨드를 서비스하는 것에 대한 요구가 이에 따라서 증가해왔다.
전형적으로, 컴퓨터 시스템들의 문제점은 사용가능한 정보 또는 데이터 양이 증가하는 것 및 복수의 사용자들이 입력한 갱신들을 끊임없이 모니터링하는 것을 처리하는 것이다. 디스크들 또는 데이터베이스를 위한 다른 매체 상에 소정의 형태로 저장된 정보의 절대적인 양은 빠르게 증가해왔다. 몇십년 전에는 파일 및 디스크들이 수천 바이트 단위로 측정되었지만 - 그때는 수백 바이트(메가바이트)였고, 그후 수억 바이트(기가바이트) -, 요즘에는 매일매일의 활동에서 수백 메가바이트(테라바이트) 및 심지어는 수억 메가바이트의 데이터베이스가 생성되고 사용되고 있다.
이에 따라, 수많은 비지니스 데이터가 데이터베이스 관리 시스템(DBMS)의 관리하의 데이터베이스 내에 저장된다. 이러한 DBMS 시스템들에 대해서, 대규모 설치에서의 데이터베이스 트랜잭션 처리 능력을 위한 디맨드(demand)가 상당히 증가했다. 동시에, 전반적으로 새로운 데이터베이스 어플리케이션들의 큰 퍼센테이지는 관계형 데이터베이스 환경에 있다. 이러한 관계형 데이터베이스는 데이터베이스 상에서 쿼리의 다양한 형태들을 지원하기 위한 이상적인 환경도 제공한다. 예를 들어, 이러한 데이터베이스 환경들에서 가속화할 것으로 예상되는 경향은 애드 후크 비구조적 수반 쿼리(ad hoc unstructured concomitant)들의 사용 증가이다. 이에 의해, 동일한 데이터베이스에 대하여 대규모 트랜잭션 프로세싱과 비구조적 쿼리들 둘다를 동시에 지원하기 위한 요구가 증가한다. 따라서, 데이터에 대한 사본들을 공유하면서, 대규모 트랜잭션들과 복잡한 쿼리들 사이의 최소한의 인터페이스를 사용해 둘 모두를 효과적으로 지원하는 시스템 및 방법론들이 요구된다.
전형적으로, 비지니스 엔티티(entity)들은 복수의 이러한 트랜잭션들을 동시에 실행할 수 있는 데이터베이스 엔진의 필수적인 기능으로, 대규모의 상대적으로 단순한 트랜잭션들을 통해 그들의 데이터베이스를 생성 및 유지시킨다. 이러한 복수의 트랜잭션들의 각각은 데이터베이스에 대한 판독, 기록, 갱신 및/또는 삭제 등의 일련의 동작들로 더 구성될 수 있는 일부 작업으로 고려될 수 있다. 이러한 트랜잭션은 잘 이해된 비지니스 동작들을 나타낼 수 있다(예를 들어, 새로운 고객 레코드 생성, 구좌 지출 또는 이체의 기록 등). 점차적으로 기업들은 그들의 온라인 데이터에 대해 더 많은 애드 후크 비구조적 쿼리들을 실행하는 것에 관심을 갖고 있다. 이에 따라, 데이터베이스 무결성 또는 데이터베이스 상태의 정확도에 대한 측정이 점차적으로 중요해졌다.
일반적으로 데이터베이스 무결성은 두개 이상의 동시에 실행하는 트랜잭션들이 데이터베이스 내에 부정확한 상태를 생성하는 방식으로 서로 간섭하지 않을 것을 보증하는 문제를 의미할 수 있다. 전형적으로 어플리케이션 프로그래머는 각각의 트랜잭션이 정확한 상태를 생성하고, 데이터베이스가 정확한 상태에 있을 때 그 각각의 트랜잭션이 개시될 것을 보증해야 한다. 이러한 트랜잭션 관리는 일반적으로 ACIS(원자성, 정합성, 고립성 및 내구성)를 지켜야 한다. 그러나, 데이터 페이지들의 다수의 사본들이 생성되면, 이러한 표준들은 지켜지기 어려워질 수 있다. 동시에, 데이터베이스 엔진이 병행 트랜잭션들을 보다 효율적으로 지원할수록, 동작 속도 및 감소된 데이터베이스 성장의 관점에서의 최종 사용자 경험은 더 양호해질 수 있다.
특히, 종래 쉐도우 페이징 기술(shadow paging technique)들은 전형적으로 데이터 수정에 대한 커미트 단계 동안 효율적인 동작들을 제공하지 않으며, 병행 트랜잭션들의 병합을 위한 추가적인 오버헤드를 요구할 수 있다. 게다가, 로그 레코드들을 사용하는 것은 일반적으로 데이터베이스 관리 및 복구의 복잡도를 증가시킬 수 있다.
그러므로, 일반적으로 다수의 사용자들로부터 데이터 엔트리를 수용하는 임의의 데이터 관리 시스템 및 데이터베이스 동작들에 관련된 종래 시스템들 및 방법론들에 관련된 상술된 결함을 극복할 필요가 있다.
다음은 본 발명의 하나 이상의 양상들에 대한 기초적인 이해를 제공하기 위한 본 발명에 대한 간략한 요약이다. 이 요약은 본 발명에 대한 광범위한 개요는 아니다. 이것은 본 발명의 핵심 또는 중요한 구성요소들을 식별하거나 본 발명의 영역을 제한하기 위한 것은 아니다. 오히려, 이 요약의 목적은 후술된 보다 상세한 설명에 대한 서두와 같은 간결한 형태로 본 발명의 일부 개념들을 나타내는 것 이다.
본 발명은 버전화/복사 접근법을 사용함으로써 병행 트랜잭션들을 실행하는 시스템 및 방법들을 제공하며, 탐지 컴포넌트는 동작중인 임의의 데이터 세그먼트가 다른 트랜잭션 커미팅에 인해 갱신이 요구되는지를 탐지하고, 병합 컴포넌트는 데이터 세그먼트를 그것의 커미팅된 버전으로 동기화한다. 데이터 세그먼트는 데이터베이스 내의 데이터 페이지와 같은, 다수의 트랜잭션들 간에 공유된 데이터의 교환 유닛 및/또는 물리적인 유닛일 수 있다. 따라서, 병행 트랜잭션들은 데이터 페이지의 각각의 사본을 수정하는 각각의 트랜잭션을 사용해 데이터 페이지의 다양한 사본들 상에서 동작할 수 있으므로, 다수의 사용자 동작을 용이하게 한다. 본 발명이 우선 데이터베이스 트랜잭션들의 문맥으로 설명되었지만, 본 발명은 그것에 제한되지 않고, 여기서 수정중인 객체의 물리적인 레벨 하의 논리적인 레벨에서 데이터를 추적하는 것이 요구되는 어떠한 관리 시스템에라도 적용될 수 있다.
본 발명의 방법론에 따르면, 하부 페이지 레벨에서 데이터 페이지를 수정하는 것을 요구하는 트랜잭션 T1은 데이터 페이지의 최종 커미팅된 버전("귀중한 사본(golden copy)")을 데이터베이스로부터 자신의 공간으로 복사한다. 요구된 하부 페이지 레벨(예를 들어, 행레벨)을 수정하기 위해 적절한 잠금들을 수락할 때, 트랜잭션 T1은 복사된 복재물에 대해 요구된 수정을 개시한다. 이때, 동일한 페이지(예를 들어, T1에 의해 잠기지 않은 다른 행)의 다른 세그먼트들을 수정하는 다양한 다른 트랜잭션들은 커미팅할 수 있으며, 이에 따라 T1에 의해 동시에 수정된 데이터 페이지의 "귀중한 사본"이 변경된다. T1이 커미팅하기 전에, 본 발명은 "귀중한 사본"에 가해진 이러한 변경을 탐지하고 이러한 변경을 T1의 수정과 병합하여, 커미트 단계에서 데이터베이스의 일관성을 유지시킨다. 따라서, 귀중한 사본의 조기 사본들은 그것의 차후 수정으로 갱신 및/또는 동기화된다. 또한, 재판독 동작을 위해(예를 들어, T1이 수정한 페이지를 판독하는 것이 필요한 경우) 페이지의 귀중한 사본에 가해진 임의의 변경들이 트랜잭션의 공간으로 병합되어야 하며, 이에 따라 재판독 프로세스를 위한 이러한 페이지의 적절한 판독-커미팅된 버전이 사용된다. 게다가, 트랜잭션 T1이 커미팅하지 않았다고 결정되면, 단순히 T1에 의해 수정된 페이지의 사본은 단순히 삭제된다.
본 발명의 관련 양상에서, 귀중한 사본(들)에게 변경의 트랜잭션을 통지하는페이지 마킹 컴포넌트가 제공될 수 있다. 각각의 트랜잭션이 동작하는 페이지에 대한 정보는 데이터베이스 엔진 내에 저장될 수 있으며, 트랜잭션이 커미팅하면, 커미팅된 버전에 관한 정보는 요구된 바와 같이 다른 트랜잭션에 제공된다. 이와같이, 병행 트랜잭션들이 상이한 페이지들 상에서 동작하면, 전형적으로 병합 단계가 요구되지 않으며, 페이지 마킹 컴포넌트는 페이지의 최종 커미팅된 버전으로 조화시키기 위한 정보를 다른 트랜잭션들에게 제공할 필요가 없다. 마찬가지로, 트랜잭션이 롤백되고 어느 커미트도 수행되지 않으면, 일반적으로 다른 트랜잭션들의 페이지 마킹은 요구되지 않는다.
본 발명의 다른 양상에 따르면, 병합 프로세스를 효과적으로 수행하기 위해 다양한 최적화 특징들을 도입할 수 있다. 예를 들어, 트랜잭션의 커미트 단계 이전에(예를 들어, 트랜잭션에 의해 수행된 수정이 데이터베이스로 "확실해지기" 전에), 특정한 페이지를 위한 공간 사용가능성이 전형적으로 보증될 수 있고(예를 들어, 페이지의 다양한 사본 상에서 동작하는 이 트랜잭션들은 그 페이지 상의 저장 공간 모두를 소비하진 않음), 페이지 주위 데이터의 재조직화가 완화되는(예를 들어, 다양한 사본들을 병합하기 위해, 그 트랜잭션은 페이지 주위의 데이터를 이동시킬 필요 없음) 등의 조건들이 강요될 수 있다. 이러한 프레임워크는 커미트 동작이 효율적이고 간단하게 일어날 수 있도록 하며, 이에 따라 다수의 사용자 동작을 향상시키고 시스템 자원들을 보호한다.
본 발명의 관련 양상에서, 한번에 한명의 사용자만을 위한 하나의 메커니즘이 커미팅하도록 하는 스핀 잠금 시스템이 제공될 수 있다. 데이터베이스 동작의 일관성을 제공하기 위해 트랜잭션이 커미트 단계에 도달했을 때, 전형적으로 이러한 뮤텍스(mutex) 컴포넌트가 사용된다.
상술된 및 관련된 목표를 달성하기 위해, 본 발명은 전반적으로 후술된 특징들을 포함한다. 다음의 설명 및 첨부된 도면들은 본 발명의 특정한 예시적인 양상들을 상세하게 설명한다. 그러나 이러한 양상들은 본 발명의 원리들이 사용될 수 있는 몇몇 다양한 방식들을 표시할 뿐이다. 도면들에 관련해 고려될 때, 본 발명의 다음의 상세한 설명에 의해 본 발명의 다른 양상들, 이점들 및 새로운 특징들이 명백해질 것이다.
본 발명은 이제 유사한 참조 번호들이 구성유사한 요소들을 참조하는 도면들 을 참조하여 설명된다. 다음의 설명에서, 설명을 위해, 수많은 구체적인 세부사항들이 본 발명의 완벽한 이해를 제공하기 위해 설명된다. 그러나, 본 발명이 이러한 구체적인 세부사항들 없이 구현될 수 있음을 보증할 수 있다. 다른 예에서, 본 발명을 용이하게 설명하기 위해 잘 알려진 구조 및 장치들이 블럭도 형태로 도시된다.
본 출원서에 사용되는 바와 같이, "컴포넌트", "핸들러", "모듈", "시스템" 등의 용어는 하드웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어, 또는 실행중인 소프트웨어 중 하나인 컴퓨터 관련 엔티티를 의미하고자 하는 것이다. 예를 들어, 컴포넌트는 프로세서 상에서 실행중인 프로세스, 프로세서, 객체, 실행가능 파일, 실행 스레드, 프로그램, 및/또는 컴퓨터일 수 있지만, 이에 한정된 것은 아니다. 예로서, 서버 상에서 실행중인 어플리케이션 및 서버는 컴포넌트일 수 있다. 하나 이상의 컴포넌트들은 실행되는 프로세스 및/또는 스레드 내에 상주할 수 있으며, 컴포넌트는 하나의 컴퓨터 상에 및/또는 2개 이상의 컴퓨터들 간에 분산되어 위치될 수 있다. 또한, 이러한 컴포넌트들은 다양한 데이터 구조가 저장되어 있는 다양한 컴퓨터 판독가능 매체로부터 실행될 수 있다. 컴포넌트들은 하나 이상의 데이터 패킷(예를 들어, 신호를 통해, 로컬 시스템 내에서, 분산 시스템 내에서 및/또는 다른 시스템을 갖는 인터넷과 같은 네트워크를 통해서 또다른 컴포넌트와 상호작용하는 한 컴포넌트로부터의 데이터)들을 갖는 신호에 따라 로컬 및/또는 원격 프로세스를 통해 통신할 수 있다.
본 발명은 탐지 컴포넌트 및 병합 컴포넌트를 사용하여 소정의 데이터 세그 먼트 상에서 (예를 들어, 데이터베이스의 하부 페이지 레벨에서) 병행 트랜잭션들을 실행하는 시스템 및 방법들을 제공한다. 각각의 트랜잭션은 최종 커미팅된 버전의 데이터 세그먼트("귀중한 사본")를 데이터 저장 장치로부터 트랜잭션 소유의 공간으로 복사한다. 탐지 컴포넌트는 동작중인 임의의 데이터 세그먼트가 다른 트랜잭션들에 의해 그곳에서 수행되는 다른 수정들에 기초하여 갱신되는 것을 요구하는 지를 탐지할 수 있다. 본 발명이 데이터베이스 트랜잭션들에 관련하여 앞서 설명되었지만, 본 발명은 그것에 한정된 것이 아니라, 어떤 데이터 관리 시스템에도 적용될 수 있으며, 여기서 다수의 사용자는 데이터 저장 장치 공간의 데이터 세그먼트의 변경을 요구한다는 것을 명심해야 한다.
우선 도 1을 참조하면, 탐지 컴포넌트(110) 및 병합 컴포넌트(120)를 통합한 본 발명의 일 양상에 따른 데이터 관리 엔진의 예시적인 일부가, 거기에서 수행되는 트랜잭션들(112 내지 116)과 함께 예시된다. 각각의 트랜잭션들(112 내지 116)은 트랜잭션에 의해 생성된 임의의 데이터 세그먼트 이외에 데이터 세그먼트(i, m, n 및 z는 정수)의 커미팅된 버전(130)으로부터 복사된 데이터 세그먼트의 각각의 사본(예를 들어, 데이터베이스로부터의 데이터 페이지(들)의 사본들) 상에서 동작할 수 있다. 예를 들어, 이러한 동작들은 데이터베이스의 각각의 페이지 내의 데이터에 대한 행레벨(row level) 조작을 포함할 수 있다. 전형적으로, 본 발명의 데이터 관리 엔진은 복수의 사용자가 동시에 데이터 세그먼트들의 데이터 저장 장치(도시되지 않음)에서 동작을 수행할 수 있도록 할 수 있는 다수 사용자 엔진일 수 있다. 트랜잭션이 데이터 세그먼트 내의 데이터를 수정할 것을 요구하면, 우선 데이터 세그먼트가 그 트랜잭션을 위해 예약된 공간으로 복사될 수 있다. 그후에, 트랜잭션이 이러한 복사된 데이터 세그먼트 상에서 동작하여 요구된 데이터를 수정할 수 있다.
공유된 데이터 세그먼트의 커미팅된 버전("귀중한 사본", 130)으로부터 복사된 임의의 데이터 세그먼트들이 갱신을 요구하는지를 탐지하기 위해, 탐지 컴포넌트(110)는 복수의 병행 트랜잭션들(112 내지 116)에서 동작할 수 있다. 예를 들어, 트랜잭션 T1이 데이터 세그먼트의 최종 커미팅된 버전(귀중한 사본)으로부터 그 데이터 세그먼트를 복사한 후에, 또다른 트랜잭션이 데이터 세그먼트 상에서 커미팅할 때, 및 그로인해 귀중한 사본이 수정될 때에 이러한 갱신이 요구될 수 있다. 데이터 세그먼트 저장 장치 공간의 일관적인 상태를 유지하기 위해, 트랜잭션 T1은 이제 귀중한 사본에의 또다른 트랜잭션 커미팅에 의한 이러한 변경을 반영하기 위해 갱신될 필요가 있다. 이러한 갱신은 복수의 병행 트랜잭션들(112, 114 및 116)에서 동작할 수 있는 병합 컴포넌트에 의해 수행될 수 있으며, N은 정수이다.
예를 들어, 주어진 임의의 시간에, 다수의 트랜잭션들 1 내지 N(N은 정수)은 데이터 저장 장치 공간의 특정한 데이터 세그먼트를 수정하길 원할 수 있다. 이러한 수정들은 특정한 슬롯에 있는 데이터의 변경, 데이터 필드들의 삽입, 데이터 필드의 삭제 등을 포함할 수 있다. 그후 트랜잭션은 데이터 세그먼트를 예약된 공간으로 복사하고 각각의 트랜잭션은 데이터 페이지의 각각의 사본에 행들을 삽입하거나 삭제한다. 이에 따라, 그후 탐지 컴포넌트(110)는 특정한 데이터 세그먼트의 귀중한 사본들 상에서 발생된 변경을 탐지하고, 병합 컴포넌트(120)와 조합해 동작하여, 트랜잭션의 커미트 단계 이전에, 커미팅될 페이지를 올바르게 갱신한다.
도 2는 본 발명의 특정한 양상에 따라 잠금 관리자(230)와 상호작용하는 데이터베이스 엔진의 일부에 대한 예시적인 양상을 예시한다. 잠금 관리자(230)는 특정한 자원에 대한 잠금이 수용될 수 있는지를 결정할 수 있으므로, 각각의 트랜잭션 T1 내지 Tn이 데이터 페이지의 각각의 사본 상에서 동작할 수 있을 때, 전형적으로 하부 페이지 잠금(예를 들어, 행레벨 잠금)을 관리하기에 적절하다. 임의의 주어진 시간에 데이터 페이지의 수많은 사본들이 존재할 수 있으므로, 잠금 관리자(230)는 전형적으로 병행 트랜잭션이 상이한 행들에 있지만 동일한 데이터 페이지 내에 있는 정보를 수정할 수 있음을 보증할 수 있다. 예를 들어, 잠금 관리자(230)는 트랜잭션에게 특정한 행에 대한 배타적인 잠금을 수락할 수 있으므로, 다른 행들에 대한 수정들이 여전히 허용될 수 있지만, 다른 트랜잭션들이 그 행을 수정하는 것은 제한될 수 있다. 따라서, 동작들의 일반적인 병행성에 기초하여, 잠금 관리자(230)는 특정한 자원에 대한 잠금을 수용 또는 거절할 수 있다.
본 발명의 하나의 특정한 양상에 따르면, 잠금 관리자(230)는 데이터베이스 엔진의 탐지 컴포넌트(210) 및 병합 컴포넌트(220)에 독립적일 수 있다. 관련 양상에서, 잉여 정보(예를 들어, 특정한 위치에 있는 배타적인 잠금의 수락, 빈공간 사용가능성 등)가 잠금 관리자 내에 저장되어, 어느 트랜잭션(212-216)이 데이터베이스의 귀중한 사본 상에서 수행되고 있는지를 추적하기 위해 탐지 컴포넌트(210) 에 의해 사용될 수 있다. 따라서, 데이터 페이지 상의 다양한 트랜잭션들이 데이터 페이지의 개별적인 사본들을 수정할 수 있으므로, 병합 컴포넌트(220)에 관련된 탐지 컴포넌트(210)는 트랜잭션들(212-216)에 대한 ACID 속성들을 보존할 수 있으며, 잠금 관리자(230)는 논리적으로 트랜잭션이 특정한 자원을 수정하는 것이 허용됨을 전형적으로 보증할 수 있다. 이것은 다수의 사용자들이 데이터베이스를 수정하는 동안, 하부페이지 레벨(예를 들어, 행레벨)에서 병행 트랜잭션들이 용이하게 동작하도록 한다. 추가적으로, 데이터 페이지를 판독하는 동안(예를 들어, 데이터 페이지에 대한 수정이 요구되지 않은 때), 데이터 페이지의 커미팅된 상태로부터의 판독이 요청될 수 있으므로, 전형적으로 공유된 잠금들을 요청하기 위한 조건은 없을 것이다. 또한, 임의의 데이터 페이지에 대한 사본을 갖고 있는 트랜잭션이 판독 동작을 요구하면, 판독 동작은 공유된 잠금들을 또다시 요구하지 않을 것이므로, 커미팅된 페이지 및/또는 임의의 페이지들의 트랜잭션 버전을 사용하여 판독을 할 수 있다(전형적으로 트랜잭션의 페이지들은 커미팅된 페이지들 보다 먼저 사용되므로, 페이지가 다르게 수정되지 않음을 제공함).
도 3은 잠금 관리자(230)에 의해 수락된 예시적인 잠금 계층구조를 예시한다. 잠금 입상에 예시된 바와 같이, 데이터베이스 2의 테이블 2 내에 있는 데이터 페이지 2 상의 행 3에 대한 수정을 요구하는 트랜잭션 T에 대한 배타적인 잠금이 수락될 수 있다. 이에 따라, 데이터 페이지 2의 사본이 트랜잭션 T의 예약된 공간(도시되지 않음)에 복사될 수 있고, 그후 트랜잭션 T는 수정을 진행할 수 있다. 행 3에 수락된 이러한 배타적인 잠금이 다른 트랜잭션들에게 가시화될 수 있으므 로, T가 자신의 수정을 커미팅(또는 롤백)하고 잠금이 해제되기 전까지는 전형적으로 다른 어느 트랜잭션도 데이터 페이지 2의 각 사본 상의 그 행을 수정할 수 없다.
도 4는 본 발명의 일 양상에 따라 데이터베이스를 수정할 것을 요구하는 복수의 클라이언트들을 예시하며, 여기서 각각의 클라이언트(420) 상에서 작동하고 있는 것은, 예를 들어, 웹 브라우저(410)인 클라이언트 프로세스일 수 있다. 마찬가지로, 서버(450) 상에서 작동하고 있는 것은, 예를 들어, 웹 서버(460)인 대응하는 서버 프로세스일 수 있다. 추가적으로, 웹 브라우저(410)에 임베딩된 것은 스크립트 또는 어플리케이션(430)일 수 있으며, 클라이언트 컴퓨터(420)의 런타임 환경(440) 내에서 작동하고 있는 것은 포매팅된 데이터 패킷들을 패키징 및 언패킹(unpacking)하는 프록시(415)일 수 있다. 서버(450)와 통신하고 있는 것은 데이터베이스(도시되지 않음)에의 액세스를 관리하는 DBMS(480)이다. DBMS(480) 및 데이터베이스(도시되지 않음)는 서버 내에 위치하거나, 원격 데이터베이스 서버(도시되지 않음) 상에 원격으로 위치할 수 있다. 웹 서버(460) 상에서 작동하고 있는 것은 데이터베이스 인터페이스 API(470)이며, 이것은 DBMS(480)에의 액세스를 제공한다. 클라이언트 컴퓨터(420)와 서버 컴퓨터(450)는 네트워크(490)를 통해 서로 통신할 수 있다. 예를 들어, 클라이언트 컴퓨터와 서버 컴퓨터가 동일한 컴퓨터인 다른 배치들도 가능함이 인식될 것이다. 클라이언트 프로세스, 예를 들어, 웹 브라우저(410)가 데이터베이스로부터의 데이터를 요구할 때, 스크립트 또는 어플리케이션(430)은 네트워크(490)(예를 들어, 인터넷)를 통해 서버 컴퓨터(450)에게 송신 되는 쿼리를 발행하며, 그 쿼리는 서버 컴퓨터에서, 예를 들어, 웹 서버(460)인 서버 프로세스에 의해 해석된다. 서버(450)로의 클라이언트(420) 요청은 다수의 코맨드들을 포함할 수 있으며, 서버(450)로부터의 응답은 복수의 결과 세트들을 반환할 수 있다.
이러한 통신에서, 세션, 프리젠테이션, 및 어플리케이션 서비스 구성요소들은 표 데이터 스트림(Tabular Data Stream; TDS)으로 제공될 수 있다. TDS가 임의의 특정한 전송 제공자를 요구하지 않으므로, 그것은 다수의 전송 프로토콜들 및 네트워크(490)에 구현될 수 있다. 반환되는 클라이언트 코맨드들에의 응답은 자가 기술적일 수 있으며, 레코드 지향적이다(예를 들어, 데이터 스트림들은 이름, 유형 및 반환될 열들의 선택적인 기술일 수 있음).
클라이언트(420)측 상에서, 데이터는 서버(450) 측에서 수용할 수 있는 언어인 SQL 코맨드일 수 있으며, 관련 바이너리 데이터(예를 들어, 대량의 복사 코맨드를 위한 데이터) 또는 주의 신호가 SQL 코맨드를 뒤따른다. 접속을 원하면, 클라이언트(420)는 서버에게 접속 신호를 송신할 수 있다. 클라이언트(420)가 하나 이상의 서버(450)로의 접속을 가지고 있더라도, 각각의 접속 경로는 동일한 방식을 사용해 개별적으로 구축될 수 있다.
서버(450)가 클라이언트(420)로부터 접속 신호를 수신하면, 서버는 클라이언트에게 자신이 그 접속 요청을 수용할지 또는 거절할지를 통지한다. 마찬가지로, SQL 코맨드 또는 SQL 코맨드들의 배치(batch)를 송신하기 위해, SQL 코맨드(예를 들어, 유니코드 포맷으로 나타내짐)는 버퍼의 데이터 섹션 내에 복사된 후에 SQL 서버(450) 측으로 송신된다. 추가적으로, 다양한 ODBC(Open Data Base Connectivity) 루틴들은 SQL 코맨드가 클라이언트 메시지 버퍼 내에 위치하게 하거나, 메시지 버퍼가 서버에 송신되도록 할 수 있다. 트랜잭션의 커미트 단계 이전에 수정을 원하면, 특정한 페이지에 대한 공간 사용가능성이 전형적으로 보증될 수 있으며(예를 들어, 페이지의 다양한 사본들 상에서 동작하는 트랜잭션들은 그 페이지 상의 저장 공간 모두를 소비하지 않음), 페이지 주위 데이터의 재조직화가 완화될 수 있다(예를 들어, 트랜잭션은 다양한 사본들을 병합하기 위해 페이지 주위의 데이터를 이동시킬 필요가 없음). 이러한 프레임워크는 커미트 동작이 효율적이고 간단하게 일어나도록 할 수 있으며, 이에 따라 다수의 사용자 동작을 향상시키고 시스템 자원을 보호한다.
도 5는 페이지 마킹 컴포넌트(530)를 더 통합한 본 발명의 일 양상에 따른 데이터베이스 엔진의 일부에 대한 개요적 블럭도를 예시한다. 전형적으로, 트랜잭션 T1이 특정한 페이지 상에서 동작할 때, 트랜잭션 T1은 그 페이지의 귀중한 사본에 변경이 있었는지를 탐지할 수 있어야 하며, 탐지한 후에 복사를 행한다. 본 발명의 일 양상에서, 이러한 탐지는 탐지 컴포넌트(510)에 관련해 동작하는 페이지 마킹 컴포넌트(530)를 통해 용이해진다. 페이지 마킹 컴포넌트(530)는 귀중한 사본(들)에게 변경의 트랜잭션들을 통지할 수 있다. 각각의 트랜잭션이 동작하고 있는 페이지들에 대한 정보는 데이터베이스 엔진 내에 저장될 수 있으며, 트랜잭션이 커미팅될 때, 커미팅된 버전에 대한 정보는 요구된 바와 같이 다른 트랜잭션에게 제공된다. 따라서, 병행 트랜잭션들이 상이한 페이지들 상에서 동작하면, 병합 단계가 요구되지 않으며, 전형적으로 페이지 마킹 컴포넌트는 페이지의 최종 커미팅된 버전과의 일치를 위하여 다른 트랜잭션들에게 정보를 제공할 필요가 없다. 마찬가지로, 트랜잭션이 롤백하고 커미트가 수행되지 않으면, 일반적으로 다른 트랜잭션들의 페이지 마킹은 요구되지 않는다.
따라서, 트랜잭션 T1이 커미팅할 때, 다른 트랜잭션들에 대한 어떤 효과를 가질 수 있는를 결정하는데, 예를 들어, 다른 트랜잭션 T2는 T1이 수정한 것과 동일한 페이지의 또다른 사본 상에서 동작할 수 있으며, 그렇다면, T2가 동작하고 있는 사본 상에 마크가 할당될 수 있다. 각각의 트랜잭션들(512-516)이 동작하고 있는 페이지에 대한 정보는 데이터베이스 엔진에 저장될 수 있다. 트랜잭션(512)이 자신의 갱신을 커미팅하기 전에, 병합이 요구됐는지를 확인한다. 이러한 것은 페이지 마킹 컴포넌트가 할당한 관련 마크를 확인함으로써 및/또는 다른 트랜잭션들이 동일한 페이지를 수정했는지를 확인함으로써 이루어질 수 있다. 이에 따라, 병행 트랜잭션들(512-516)이 상이한 페이지들 상에서 동작하면, 전형적으로 병합 단계는 요구되지 않는다. 마찬가지로, 트랜잭션들(512-516) 중 임의의 것이 롤백할 것이 요구되면, 각각의 페이지 사본은 단순히 삭제되고, 이러한 트랜잭션에 의해 마킹된 페이지된 또 다른 트랜잭션(현재 롤백됨)은 커미팅된 버전으로 병합을 실행할 수 있다.
도 6은 본 발명의 병합 프로세스에 관련해 사용할 수 있는 최적화 특징을 예 시한다. 병행 트랜잭션 T1는 데이터 페이지(610)의 사본 상에서 동작할 수 있다. 데이터 페이지(610)(귀중한 사본)는 초기에 행 A를 포함한다. T1는 시점(611)에서 데이터 페이지(610)의 사본 상에서 동작을 시작하여, 시점(612)에서 행 B 및 C를 삽입한다. 시점(612)에서의 이러한 삽입 동작이 수행되기 이전에, 2개의 조건, 즉 페이지 상의 공간 사용가능성(페이지가 완전히 채워지지 않음) 및 페이지가 다른 트랜잭션들은 이러한 페이지를 수정하는 것으로 인한 재조직화를 요구하지 않을 것(660)을 확인 및/또는 시행하기 위한 최적화 특징(optimization feature)이 도입될 수 있다. 이에 따라, 데이터 페이지 상에서 소비된 공간 및 데이터 페이지 상에서 사용가능한 공간은 동작을 위한 페이지의 선택 및/또는 삽입 동작 이전에 결정될 수 있다(예를 들어, 이러한 페이지를 복사하기 전에, 수정이 수행되기 위해 사용가능한 충분한 공간이 있는지를 결정할 수 있음). 따라서, 하부 페이지 수정에 대한 논리적인 고려사항(예를 들어, 특정한 위치에서 행을 삽입하기 위한 논리적인 허락이 있는지의 여부)들 이외에, 본 발명에 대한 최적화 특징은 또한 그 페이지의 물리적인 속성들을 고려할 수 있다(예를 들어, 삽입시에 특정한 페이지 상의 사용가능한 공간이 있는지의 여부). 이어서, 열 B 및 C가 시점(612)에서 삽입된다. 이러한 열 B 및 C의 삽입은 이러한 데이터 페이지 사본(620) 상의 사용가능한 공간을 점유할 수 있다. T1의 커미트 동작(616)은 따라서 효율적이고 간단하게 일어날 수 있으며, 동시에 다수의 사용자 동작을 향상시키고 시스템 자원들을 보호한다. 상술된 최적화 특징이 본 발명의 다른 양상들을 구현하기 위해 필수적이지는 않지만, 그것은 성능을 향상시킨다. 특히, "페이지가 완전히 채워지지 않음" 조건을 따르지 않으면, 전형적으로 데이터베이스 엔진이 데이터가 저장된 또다른 페이지를 찾을 것을 요구한다. 관련 양상에서, T1이 자신의 수정들을 롤백하고 데이터 페이지 상의 공간을 비우면, 이러한 추가적인 공간에 대한 사용가능성은 모든 트랜잭션들에게 알려질 수 있다. 롤백이 또한 관련된 잠금(예를 들어, 배타적인 잠금)들을 삭제할 수 있으므로, 현재 롤백된 트랜잭션에 의해 소비된 공간상의 조기에 저장된 정보는 관련된 잠금들을 소거함으로써 동시에 삭제된다.
도 7은 본 발명의 일 양상에 따른 예시적인 방법론을 예시한다. 방법론(700)은 데이터 저장 영역으로부터의 데이터를 수정할 것, 예를 들어, 데이터베이스 내의 데이터 페이지 "A"의 하부 페이지 레벨에서 수정할 것을 요구하는 트랜잭션 T1에 의해 개시된다. 데이터베이스 환경의 특정한 예에서, 트랜잭션 T1은 다수의 사용자 데이터베이스 엔진의 일부로서 동작하는 복수의 병행 트랜잭션들의 일부일 수 있다. 단계(710)에서 트랜잭션 T1이 요구하는 데이터 조작은 특정한 데이터 페이지 상에서 행을 갱신된 행으로 대체하는 특정한 슬롯에서의 데이터의 변경, 행들의 삽입, 행 등의 삭제 등일 수 있다. 단계(720)에서 공간을 예약하기 위해 트랜잭션 T1이 데이터 페이지 "A"를 사본 A1으로서 복사할 수 있다. 단계(730)에서, 다른 트랜잭션들이 데이터 페이지 "A"의 귀중한 사본을 수정했음을 탐지한다. 이러한 탐지는, 예를 들어, 탐지 컴포넌트에 의해 행해질 수 있고, 페이지 A1은 병합 요청과 함께 페이지 마킹 컴포넌트에 의해 마킹될 수 있다. 트랜잭션 T1은 데이터의 손실없이 데이터베이스의 일관성을 유지하면서 커미팅할 수 있다.
도 8은 본 발명의 일 양상에 따른 관련 방법론을 예시하며, 여기서 본 발명의 일 양상에 따라 단계(810)에서 데이터 페이지를 재판독하는 트랜잭션이 요구된다. 이러한 재판독은, 예를 들어, 트랜잭션의 수명동안 트랜잭션이 동일한 데이터에서 한번 이상 "선택" 동작을 수행할 때 일어날 수 있으며, 여기서 트랜잭션은 판독 커미팅된 고립 레벨에서 동작한다. 단계(820)에서, 한번에 단지 하나의 트랜잭션만을 위한 메커니즘만이 병합할 수 있도록 할 수 있는 스핀 잠금이 획득된다. 이러한 뮤텍스(mutex) 컴포넌트가 사용되어 전형적으로 데이터베이스 동작의 일관성을 보증할 수 있다. 단계(830)에서, 복수의 병행 트랜잭션들 간에 공유될 수 있는 데이터 페이지의 "귀중한 사본"에 가해진 새로운 변경들과 페이지를 병합할 필요가 있는지를 탐지 방법론에 의해 결정한다. 병합할 필요가 없으면, 스핀 잠금이 단계(840)에서 해제되고, 동작은 단계(890)에서 종료된다. 한편, 페이지를 병합하는 것이 요구됐다고 결정되면, 방법론이 병합 프로세스로 진행하고, 그후 단계(860)에서 페이지의 커미팅된 버전이 트랜잭션의 각각의 공간에 복사된다. 이어서, 병합 프로세스의 추가적인 부분으로서, 페이지 상에서 수행된 각각의 변경에 대해, 단계(870)에서, 관련된 커미팅된 페이지가 갱신된다. 단계(880)에서, 트랜잭션의 페이지는 그후 커미팅된 페이지의 갱신된 사본으로 대체된다.
이제 도 9를 참조하면, 본 발명의 일 양상에 따른 관련 방법론이 예시되며, 여기서 변경은 커미트 절차(910)의 일부로서 변경을 탐지 및 병합하는 것이 약술된다. 단계(920)에서, 한번에 한명의 사용자만을 위한 메커니즘만이 커미팅할 수 있도록하는 스핀 잠금이 획득되어, 데이터베이스 동작 내의 일관성이 보증된다. 단계(925)에서, 탐지 및 병합 프로세스를 위해, 트랜잭션이 수정한 다음 데이터 페이지가 선택된다. 이어서, 탐지 프로세스가 개시되고, 단계(927)에서,페이지가 다른 트랜잭션들에 의해 사용되고 있는지가 결정된다. 사용되고 있으면, 방법론은 병합하기 위해 예를 들어, 상세하게 상술된 바와 같은 페이지 마킹 컴포넌트를 통해 다른 트랜잭션들이 사용하는 그러한 페이지의 사본들을 마킹하는 단계(929)로 진행한다. 한편, 단계(930)에서, 페이지가 복수의 병행 트랜잭션들 간에 공유될 수 있는 데이터 페이지의 "귀중한 사본"에 가해진 새로운 변경과 병합될 필요가 있는지가 탐지 방법론을 통해 결정된다. 페이지를 병합하라는 요청이 존재하면, 방법론은 병합 프로세스로 진행하고, 단계(960)에서 페이지의 커미팅된 버전이 트랜잭션의 각각의 공간으로 복사된다. 이어서, 병합 프로세스의 추가적인 일부로서, 페이지 상에서 수행되는 각각의 변경에 대해서, 단계(970)에서 관련된 커미팅된 페이지가 갱신된다. 그후 단계(990)에서 트랜잭션의 페이지가 커미팅된 페이지의 갱신된 사본으로 대체되고, 이어서 단계(940)에서 잠금들이 해제된다. 한편, 단계(930)에서 페이지를 병합하라는 요청이 없다고 결정되면, 방법론은 바로 단계(940)에서 잠금들을 해제한다. 이어서, 단계(945)에서, 프랜잭션에 의해 동작되는 최종 페이지에 도달했는지가 결정된다. 동작 루프들이 단계(925)로 뒤돌아가지 않으면, 단계(947)에서 동작이 스핀 잠금을 해제하고, 단계(995)에서 동작이 종료된다.
이제 도 10을 참조하면, 간략하게, 본 발명의 다양한 양상들이 구현될 수 있는 클라이언트 및 서버 측 상의 적절한 컴퓨팅 환경의 일반적인 설명이 예시된다. 본 발명은 컴퓨터 및/또는 컴퓨터들 상에서 실행되고 있는 컴퓨터 프로그램의 컴퓨터 실행가능 명령어들의 일반적인 문맥으로 상술되었으며, 당업자들은 본 발명이 다른 프로그램 모듈들의 조합으로도 구현될 수 있음을 인식할 것이다. 일반적으로, 프로그램 모듈들은 특정한 태스크들을 수행하고/하거나 특정한 추상 데이터 유형을 구현하는 루틴, 프로그램, 컴포넌트, 데이터 구조 등을 포함한다. 게다가, 당업자들은 본 발명의 방법론들이 단일 프로세서 또는 멀티프로세서 컴퓨터 시스템, 미니컴퓨터, 메인프레임 컴퓨터, 개인용 컴퓨터, 핸드핼드 컴퓨팅 장치, 마이크로프로세서 기반 또는 프로그램가능 가전 제품 등을 포함하는 다른 컴퓨터 시스템 구성으로 구현될 수 있음을 이식할 것이다. 상술된 바와 같이, 본 발명의 예시적인 양상은 태스크들이 통신 네트워크를 통해 링크된 원격 프로세싱 장치에 의해 수행되는 분산 컴퓨팅 환경에서도 구현될 수 있다. 그러나 본 발명의 모든 양상들이 자립형 컴퓨터 상에서 구현될 수는 없다. 분산 컴퓨팅 환경에서, 프로그램 모듈들은 로컬 및 원격 메모리 저장 장치 모두에 위치할 수 있다. 예시적으로 프로세싱 유닛(1021), 시스템 메모리(1022), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트들을 프로세싱 유닛(1021)에 접속시키는 시스템 버스(1023)를 포함하는 컴퓨터(1020)을 포함한다. 프로세싱 유닛(1021)은 다양한 상업적으로 사용가능한 프로세서 중 임의의 것일 수 있다. 듀얼 마이크로프로세서 및 다른 멀티프로세서 아키텍처도 프로세싱 유닛(1021)으로 사용될 수 있다.
시스템 버스는 메모리 버스 및 메모리 제어기, 주변 버스, 및 상업적으로 사용가능한 다양한 버스 아키텍처들 중 임의의 것을 사용하는 로컬 버스를 포함하는 임의의 몇몇 유형의 버스 구조일 수 있다. 시스템 메모리는 ROM(1024) 및 RAM(1025)을 포함할 수 있다. 시동중과 같은 때에 컴퓨터(1020) 내의 구성요소들간에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 기본 입출력 시스템(BIOS)은 ROM(1024)에 저장된다.
컴퓨터(1020)는 디스크 드라이브(1027), 예를 들어 분리형 디스크(1029)로부터 판독하고 이에 기록하기 위한 자기 디스크 드라이브(1028), 및 예를 들어 CD-ROM 디스크(1031) 또는 다른 광학 매체로부터 판독하고 이에 기록하기 위한 광학 디스크 드라이브(1030)를 더 포함한다. 하드 디스크 드라이브(1027), 자기 디스크 드라이브(1028), 및 광학 디스크 드라이브(1030)는 각각 하드 디스크 드라이브 인터페이스(1032), 자기 디스크 드라이브 인터페이스(1033), 및 광학 드라이브 인터페이스(1034)에 의해 시스템 버스(1023)에 접속된다. 드라이브 및 그들에 관련된 컴퓨터 판독가능 매체는 예를 들어 컴퓨터(1020)에 대한 데이터, 데이터 구조, 컴퓨터 실행가능 명령어의 비휘발성 저장 장치를 제공한다. 상술된 컴퓨터 판독가능 매체는 하드 디스크, 분리형 자기 디스크, 및 CD를 의미하지만, 당업자들은 자기 카세트, 플래시 메모리 카드, 디지털 비디오 디스크, 베르누이 카트리지(Bernoulli cartridge) 등의 컴퓨터가 판독할 수 있는 다른 유형의 매체도 예시적인 동작 환경에서 사용될 수 있으며, 또한 임의의 이러한 매체가 본 발명의 방법을 수행하는 컴퓨터 실행가능 명령어들을 포함할 수 있음을 인식할 것이다.
운영 시스템(1035), 하나 이상의 어플리케이션 프로그램(1036), 다른 프로그램 모듈(1037), 및 프로그램 데이터(1038)를 포함하는 수많은 프로그램 모듈들은 드라이브 및 RAM(1025)에 저장될 수 있다. 예시적인 컴퓨터 내의 운영 시스템(1035)은 사실상 상업적으로 사용가능한 임의의 운영 시스템일 수 있다.
사용자는 키보드(1040) 및 마우스(142) 등의 포인팅 장치를 통해 컴퓨터(1020)에 코맨드 및 정보를 입력할 수 있다. 다른 입력 장치(도시되지 않음)들은 마이크로폰, 조이스틱, 게임패드, 위성접시, 스캐너 등을 포함할 수 있다. 이러한 및 다른 입력 장치들은 종종 시스템 버스에 연결된 직렬 포트 인터페이스(1046)를 통해 프로세싱 유닛(1021)에 연결되지만, 병렬 포트, 게임 포트, 또는 USB 등의 다른 인터페이스들에 의해 접속될 수도 있다. 모니터(1047) 또는 다른 유형의 디스플레이 장치는 또한 비디오 어댑터(1048)와 같은 인터페이스를 통해 시스템 버스(1023)에 접속될 수 있다. 모니터 이외에, 컴퓨터들은 전형적으로 스피커 및 프린터 등의 다른 주변 출력 장치(도시되지 않음)들을 포함한다.
컴퓨터(1020)는 원격 컴퓨터(1049)와 같은 하나 이상의 원격 컴퓨터로의 논리적인 접속을 사용하여 네트워크 환경에서 동작할 수 있다. 도 10에는 메모리 저장 장치(1050)만이 예시되어 있지만, 원격 컴퓨터(1049)는 워크스테이션, 서버 컴퓨터, 라우터, 피어 장치, 또는 다른 일반 네트워크 노드일 수 있으며, 전형적으로 컴퓨터(1020)에 관련하여 상술된 많은 또는 모든 구성요소들을 포함한다. 도 10에 나타낸 논리적인 접속들은 LAN(1051) 및 WAN(1052)을 포함할 수 있다. 이러한 네트워크 환경은 사무실, 기업 크기 컴퓨터 네트워크, 인트라넷 및 인터넷에 일반적 이다.
LAN 네트워크 환경에서 사용될 때, 컴퓨터(1020)는 네트워크 인터페이스 또는 어댑터(1053)를 통해 LAN(1051)에 접속될 수 있다. WAN 네트워크 환경에서 사용될 때, 컴퓨터(1020)는 전형적으로 모뎀(1054)을 포함할 수 있고/할 수 있거나 LAN 상의 통신 서버에 접속되고/되거나 인터넷과 같은 WAN(1052)에서의 통신을 구축하기 위한 다른 수단을 가질 수 있다. 내장형 또는 외장형일 수 있는 모뎀(1054)은 직렬 포트 인터페이스(1046)를 통해 시스템 버스(1023)에 접속될 수 있다. 네트워크 환경에서, 컴퓨터(1020) 또는 그것의 일부에 관련해 설명된 프로그램 모듈들은 원격 메모리 저장 장치에 저장될 수 있다. 도시된 네트워크 접속들은 예시적인 것이며, 컴퓨터들 간의 통신 링크를 구축하는 다른 수단들이 사용될 수 있음을 인식할 것이다.
컴퓨터 프로그래밍에 능숙한 자들의 구현에 따르면, 본 발명은 컴퓨터(1020)와 같은 컴퓨터가 수행하는 활동들 및 동작들의 상징적인 표현을 참조하여 설명되며, 다르게 설명되지 않는다. 이러한 활동들 및 동작들은 종종 컴퓨터 실행되는 것을 의미한다. 활동들 및 상징적으로 표현된 동작들은 결과 전송 또는 전기 신호 표현의 감소를 생성하는 데이터 비트들을 표현하는 전기 신호의 프로세싱 유닛(1021)에 의한 조정 및 메모리 시스템[시스템 메모리(1022), 하드 드라이브(1027), 플로피 디스크(1029), 및 CD-ROM(1031)] 내의 메모리 위치에의 데이터 비트의 유지를 포함하여, 컴퓨터 시스템의 동작뿐만 아니라 신호의 다른 프로세싱을 재구성하거나 대체한다. 이러한 데이터 비트들이 유지되는 메모리 위치들은 데이터 비트들 에 대응하는 특정한 전기, 자기, 또는 광학 속성을 갖는 물리적 위치들이다.
이제 도 11을 참조하면, 본 발명의 일 양상에 따르는 데이터 조정 방법론을 사용하는 클라이언트-서버 시스템(1100)이 예시된다. 클라이언트(들)(1120)는 하드웨어 및/또는 소프트웨어(예를 들어, 스레드, 프로세스, 컴퓨팅 장치)일 수 있다. 시스템(1100)은 또한 하나 이상의 서버(들)(1140)도 포함할 수 있다. 서버(들)(1140)도 하드웨어 및/또는 소프트웨어(예를 들어, 스레드, 프로세스, 컴퓨팅 장치)일 수 있다. 예를 들어, 이러한 서버(1140)는 스레드를 하우징하여 본 발명을 사용해 전송을 수행할 수 있다. 클라이언트(1120) 및 서버(1140)는 본 발명에 따라 전송되는 데이터 패킷의 형태로 2개 이상의 컴퓨터 프로세스들 간에 통신할 수 있다. 클라이언트/서버는 또한 동일한 프로세스를 공유할 수 있다. 예시된 바와 같이, 시스템(1100)은 클라이언트(들)(1120)와 서버(들)(1140) 간의 통신을 용이하게 할 수 있는 통신 프레임워크(1180)를 포함한다. 클라이언트(들)(1120)는 클라이언트(들)(1120)에 로컬인 정보를 저장할 수 있는 하나 이상의 클라이언트 데이터 저장소(들)(1110)에 동작적으로 접속된다. 게다가, 클라이언트(1120)는 서버 프로세스를 작동시키는 서버 컴퓨터(1140) 상에 위치한 데이터베이스(1160)에 액세스할 수 있고 그것을 갱신할 수 있다. 본 발명의 일 양상에서, 통신 프레임워크(1180)는 웹 브라우저인 클라이언트 프로세스 및 웹 서버인 서버 프로세스를 갖는 인터넷일 수 있다. 이와 같이, 전형적인 클라이언트(1120)는 CPU, 시스템 메모리, 개인용 컴퓨터를 인터넷에 접속하기 위한 모뎀 또는 네트워크 카드, 디스플레이뿐만 아니라 키보드, 마우스 등의 다른 컴포넌트들 갖는 종래 개인용 컴퓨터와 같은 범용 컴퓨터일 수 있다. 마찬가지로, 전형적인 서버(1140)는 메인 프레임 컴퓨터 또는 전용 워크스테이션 등을 통합하거나 종합할 수 있다.
본 발명이 특정한 예시된 양상들에 관하여 도시되고 설명되었지만, 당업자들은 본 명세서 및 첨부된 도면을 읽고 이해하여 동등한 대체물 및 수정물이 생성될 수 있음을 인식할 것이다. 특히 상술된 컴포넌트(어셈블리, 장치, 회로, 시스템 등)들에 의해 수행되는 다양한 기능들에 관련하여, 개시된 구조와 구조적으로 동일하지는 않지만, 본 명세서에서 본 발명의 예시적인 양상을 예시하는 기능을 수행하는 이러한 컴포넌트들을 설명하는데 사용된 용어들("수단"을 참조하는 것을 포함)은, 다르게 나타내어지지 않음, 설명된 컴포넌트들의 특정한 기능을 수행하는 임의의 컴포넌트(예를 들어, 기능적으로 동일함)에 대응하도록 의도된다. 이에 관하여, 본 발명이 본 발명의 다양한 방법들의 활동 및/또는 이벤트들을 수행하는 컴퓨터 실행가능 명령어를 포함하는 컴퓨터 판독가능 매체뿐만 아니라 시스템을 포함함이 또한 인식될 것이다. 게다가, 상세한 설명 및 청구항에서 사용되는 한, '포함한다', '갖는다' 및 그와 유사한 표현들은 포괄적인 의미를 갖도록 의도된다.
본 발명은 효과적으로 다수의 사용자들이 병행 트랜잭션들을 수행하고, 수정된 객체의 물리적인 레벨 하의 논리적인 레벨에서 데이터를 추적하는 시스템 및 방법론들을 제공한다.

Claims (34)

  1. 복수의 병행 트랜잭션(concurrent transactions)에 걸쳐 동작하고, 데이터 세그먼트의 사본이 상기 데이터 세그먼트의 커미팅된 버전에 비교하여 최신인지를 탐지하는 탐지 컴포넌트를 포함하고,
    상기 데이터 세그먼트는 그것의 수정을 요구하는 트랜잭션(들)에 의해 복사되는 데이터 관리 엔진.
  2. 제1항에 있어서, 상기 데이터 세그먼트의 사본을 그것의 커미팅된 버전으로 동기화하는 병합 컴포넌트를 더 포함하는 데이터 관리 엔진.
  3. 제2항에 있어서, 병행 트랜잭션들에 걸친 상기 데이터 세그먼트의 하부 레벨 잠금을 가능하게 하는 잠금 관리자를 더 포함하는 데이터 관리 엔진.
  4. 제2항에 있어서, 상기 병행 트랜잭션들의 각각은 상기 데이터 세그먼트의 각각의 사본을 수정하는 데이터 관리 엔진.
  5. 제3항에 있어서, 상기 탐지 컴포넌트는 각각의 트랜잭션에 의해 사용되는 데이터 세그먼트의 각각의 사본에 대한 데이터 변경을 탐지할 수 있게 하는 데이터 관리 엔진.
  6. 제4항에 있어서, 상기 병합 컴포넌트는 상기 각각의 사본 상의 마크에 기초하여 병합 조건을 결정하는 데이터 관리 엔진.
  7. 제3항에 있어서, 상기 데이터 세그먼트는 데이터베이스의 데이터 페이지이고, 상기 하부 페이지 잠금은 상기 데이터 페이지에 대한 행레벨 잠금(row lovel locking)인 데이터 관리 엔진.
  8. 제2항에 있어서, 상기 각각의 사본에 마킹하는 페이지 마킹 컴포넌트를 더 포함하는 데이터 관리 엔진.
  9. 제7항에 있어서, 상기 데이터 페이지 상에서 동작하는 트랜잭션에 대한 조건들의 세트를 시행하여, 상기 트랜잭션의 커미트 단계 이전에 상기 데이터 페이지를 위한 공간 사용가능성이 보증되는 것과 병합 프로세스 동안 데이터의 재조직화가 요구되지 않는 것 중 적어도 하나가 이루어지게 하는 최적화 특징(optimization feature)을 더 포함하는 데이터 관리 엔진.
  10. 병행 트랜잭션들에 걸쳐 동작하여, 데이터 페이지의 사본이 그것의 커미팅된 버전에 비교하여 최신인지를 탐지하고, 그렇지 않으면, 관련된 페이지 마킹 컴포넌트를 통해 상기 데이터 페이지를 마킹하기 위하여, 상기 데이터 페이지 상에서 하 부 페이지 레벨 동작들을 수행하는 탐지 컴포넌트; 및
    상기 데이터 페이지의 사본을 그것의 커미팅된 버전으로 갱신하는 병합 컴포넌트
    를 포함하는 데이터베이스 엔진.
  11. 제10항에 있어서, 상기 병행 트랜잭션들의 각각은 상기 데이터 페이지 상의 사용가능한 공간 모두를 소비하지 않고서 상기 데이터 페이지의 각각의 사본을 수정하는 데이터베이스 엔진.
  12. 제10항에 있어서, 상기 병행 트랜잭션들에 걸쳐 동작들의 호환성을 용이하게 하는 잠금 관리자를 더 포함하는 데이터베이스 엔진.
  13. 병행 트랜잭션들을 수행하는 방법으로서,
    데이터 페이지의 각각의 사본을 생성하기 위해, 상기 데이터 페이지를 수정할 것을 요구하는 트랜잭션을 위해 예약된 공간으로 상기 데이터 페이지를 복사하는 단계; 및
    상기 각각의 사본이 상기 데이터 페이지의 커미팅된 버전에 대해 최신으로 유지되는지를 탐지하는 단계
    를 포함하는 방법.
  14. 제13항에 있어서, 상기 각각의 사본을 상기 데이터 페이지의 커미팅된 버전으로 갱신하는 단계를 더 포함하는 방법.
  15. 제13항에 있어서, 다른 트랜잭션을 커미팅한 결과로서 상기 데이터 페이지를 수정하는 단계를 더 포함하는 방법.
  16. 제13항에 있어서, 상기 데이터 페이지의 각각의 사본에 마킹하는 단계를 더 포함하는 방법.
  17. 제13항에 있어서, 상기 데이터 페이지 상의 자원에 잠금들을 할당하는 단계를 더 포함하는 방법.
  18. 제14항에 있어서, 각각의 트랜잭션을 한번에 하나씩 커미팅하는 단계를 더 포함하는 방법.
  19. 제13항에 있어서, 상기 트랜잭션의 롤백(roll back)시에, 상기 각각의 사본을 삭제하는 단계를 더 포함하는 방법.
  20. 제18항에 있어서, 트랜잭션을 커미팅할 때 상기 잠금들을 삭제하는 단계를 더 포함하는 방법.
  21. 제13항의 방법을 수행하기 위한 컴퓨터 실행가능 명령어들이 저장되어 있는 컴퓨터 판독가능 매체.
  22. 병행 트랜잭션들을 수행하는 시스템으로서,
    데이터 페이지 상의 갱신된 정보를 탐지하기 위한 수단; 및
    상기 갱신된 정보를 상기 데이터 페이지의 사본에 병합하기 위한 수단
    을 포함하는 시스템.
  23. 제22항에 있어서, 상기 데이터 페이지의 사본에 마킹하기 위한 수단을 더 포함하는 시스템.
  24. 데이터 구조가 저장되어 있는 컴퓨터 판독가능 매체로서,
    데이터 페이지의 사본이 그것의 커미팅된 버전에 비교하여 최신인지를 탐지하기 위해 복수의 활성 트랜잭션에 걸쳐 동작하는 컴퓨터 실행가능 컴포넌트를 포함하고,
    상기 데이터 페이지는 그것을 수정하는 것을 요구하는 활성 트랜잭션에 의해 복사되는 컴퓨터 판독가능 매체.
  25. 제24항에 있어서, 상기 각각의 사본을 상기 데이터 페이지의 커미팅된 버전 으로 갱신하는 컴퓨터 실행가능 컴포넌트를 더 포함하는 컴퓨터 판독가능 매체.
  26. 제24항에 있어서, 데이터 페이지 상에서 데이터 수정이 수행되는 동안의 논리적인 고려사항들을 관리하는 추가적인 컴퓨터 실행가능 컴포넌트를 더 포함하는 컴퓨터 판독가능 매체.
  27. 제26항에 있어서, 상기 추가적인 컴퓨터 실행가능 컴포넌트는 상기 데이터 페이지의 하부 페이지 레벨에서 잠금들을 수용하는 컴퓨터 판독가능 매체.
  28. 제25항에 있어서, 상기 각각의 사본에 마킹하는 추가적인 컴퓨터 실행가능 컴포넌트를 더 포함하는 컴퓨터 판독가능 매체.
  29. 병행 트랜잭션들 내의 동기화를 용이하게 하는 시스템으로서,
    데이터 페이지 상의 갱신된 정보를 탐지하기 위한 수단;
    상기 갱신된 정보를 상기 데이터 페이지의 사본에 병합하기 위한 수단; 및
    상기 병행 트랜잭션들의 커미트 단계에서 상기 데이터 페이지 주위의 데이터를 재조직화하는 것을 완화하기 위한 수단
    을 포함하는 시스템.
  30. 트랜잭션에 의해 데이터 페이지 내의 데이터를 조작하기 위한 방법으로서,
    상기 트랜잭션을 위해 예약된 공간으로 데이터 페이지를 복사하는 단계;
    상기 데이터 페이지 상의 갱신된 정보를 탐지하는 단계; 및
    상기 데이터 페이지에 대한 스핀 잠금(spin lock)을 획득하는 단계
    를 포함하는 방법.
  31. 제30항에 있어서, 상기 데이터 페이지 상에서 수행되는 복수의 병행 트랜잭션에 걸쳐 상기 데이터 페이지 상의 공간 사용가능성을 추적하는 단계를 더 포함하는 방법.
  32. 제30항에 있어서, 상기 데이터 페이지에 마킹하는 단계를 더 포함하는 방법.
  33. 제30항에 있어서, 상기 데이터 페이지 상의 행레벨에서 자원을 잠그는 단계를 더 포함하는 방법.
  34. 제30항의 방법을 수행하기 위한 컴퓨터 실행가능 명령어들이 저장되어 있는 컴퓨터 판독가능 매체.
KR1020050038948A 2004-06-29 2005-05-10 데이터 관리 엔진 및 병행 트랜잭션 수행 방법 KR101137053B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/879,665 2004-06-29
US10/879,665 US8762331B2 (en) 2004-06-29 2004-06-29 Concurrent transactions and page synchronization

Publications (2)

Publication Number Publication Date
KR20060046029A true KR20060046029A (ko) 2006-05-17
KR101137053B1 KR101137053B1 (ko) 2012-04-19

Family

ID=35063233

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050038948A KR101137053B1 (ko) 2004-06-29 2005-05-10 데이터 관리 엔진 및 병행 트랜잭션 수행 방법

Country Status (5)

Country Link
US (1) US8762331B2 (ko)
EP (1) EP1612700B1 (ko)
JP (1) JP4833590B2 (ko)
KR (1) KR101137053B1 (ko)
CN (1) CN1716248B (ko)

Cited By (1)

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

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8688662B2 (en) * 2004-09-28 2014-04-01 International Business Machines Corporation Copy on access to locked objects
US8195659B2 (en) * 2005-08-23 2012-06-05 Ricoh Co. Ltd. Integration and use of mixed media documents
US8086580B2 (en) * 2005-01-11 2011-12-27 International Business Machines Corporation Handling access requests to a page while copying an updated page of data to storage
US8600960B2 (en) * 2005-11-22 2013-12-03 Sap Ag Processing proposed changes to data
KR101168774B1 (ko) 2006-02-03 2012-07-25 주식회사 엘지씨엔에스 보안장비의 룰 최적화 장치 및 방법
US20080027996A1 (en) * 2006-07-31 2008-01-31 Morris Robert P Method and system for synchronizing data using a presence service
US7788243B2 (en) * 2006-09-08 2010-08-31 Sybase, Inc. System and methods for optimizing data transfer among various resources in a distributed environment
US7822792B2 (en) * 2006-12-15 2010-10-26 Sap Ag Administration of planning file entries in planning systems with concurrent transactions
JP2010538354A (ja) * 2007-08-29 2010-12-09 テレフオンアクチーボラゲット エル エム エリクソン(パブル) データベースシステムにおける方法および装置
JP4210318B1 (ja) * 2007-11-28 2009-01-14 株式会社京都ソフトウェアリサーチ データ格納システムおよびデータ格納プログラム
US8650155B2 (en) * 2008-02-26 2014-02-11 Oracle International Corporation Apparatus and method for log based replication of distributed transactions using globally acknowledged commits
US8738573B2 (en) * 2008-05-23 2014-05-27 Microsoft Corporation Optimistic versioning concurrency scheme for database streams
US8521776B2 (en) * 2008-12-05 2013-08-27 International Business Machines Corporation Accessing data in a multi-generation database
CN102236542B (zh) * 2010-05-05 2014-06-11 中兴通讯股份有限公司 一种基于任务进程表的硬件控制实现方法和装置
JP5652228B2 (ja) * 2011-01-25 2015-01-14 富士通株式会社 データベースサーバ装置、データベース更新方法及びデータベース更新プログラム
US8490207B2 (en) * 2011-05-31 2013-07-16 Red Hat, Inc. Performing zero-copy sends in a networked file system with cryptographic signing
JP5772458B2 (ja) * 2011-09-29 2015-09-02 富士通株式会社 データ管理プログラム、ノード、および分散データベースシステム
US10348821B2 (en) * 2012-12-21 2019-07-09 Dropbox, Inc. Prioritizing structural operations and distributing changes in a synced online content management system
US9898501B2 (en) * 2013-09-12 2018-02-20 Neustar, Inc. Method and system for performing transactional updates in a key-value store
CN103530324A (zh) * 2013-09-24 2014-01-22 金蝶软件(中国)有限公司 应用于多页签的数据更新方法和相关装置
JP6281282B2 (ja) * 2013-12-27 2018-02-21 富士通株式会社 アクセス制御プログラム、制御装置およびアクセス制御方法
JP5836422B2 (ja) * 2014-04-14 2015-12-24 株式会社Tkc データ一致化のための方法およびシステム
CN106649307B (zh) * 2015-10-28 2019-09-20 北京国双科技有限公司 在数据集合中添加元素的方法和装置
CN106708521B (zh) * 2016-12-21 2020-07-17 金蝶软件(中国)有限公司 一种页面元数据的保存方法及装置
CA3071965C (en) * 2017-08-10 2024-01-16 Shardsecure, Inc. Method for securing data utilizing microshard fragmentation
US11288251B2 (en) * 2018-05-25 2022-03-29 Microsoft Technology Licensing, Llc Supporting concurrent updates to a database page
US11457066B2 (en) * 2019-06-12 2022-09-27 International Business Machines Corporation Splitting and merging of storages
US11314771B2 (en) 2019-06-12 2022-04-26 International Business Machines Corporation Splitting and merging of storages
US11347713B2 (en) 2019-09-27 2022-05-31 Salesforce.Com, Inc. Version-based table locking

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5088036A (en) * 1989-01-17 1992-02-11 Digital Equipment Corporation Real time, concurrent garbage collection system and method
US5355477A (en) * 1991-12-23 1994-10-11 International Business Machines Corporation Method for updating a block using record-level locks by committing the update if the block has not been updated by another process otherwise spinning
JPH06290147A (ja) * 1993-03-31 1994-10-18 Hitachi Ltd オンラインシステムの端末制御データ変更方法
US5544345A (en) * 1993-11-08 1996-08-06 International Business Machines Corporation Coherence controls for store-multiple shared data coordinated by cache directory entries in a shared electronic storage
US5675797A (en) * 1994-05-24 1997-10-07 International Business Machines Corporation Goal-oriented resource allocation manager and performance index technique for servers
US5852715A (en) 1996-03-19 1998-12-22 Emc Corporation System for currently updating database by one host and reading the database by different host for the purpose of implementing decision support functions
US6301616B1 (en) * 1997-04-11 2001-10-09 Microsoft Corporation Pledge-based resource allocation system
US5864851A (en) * 1997-04-14 1999-01-26 Lucent Technologies Inc. Method and system for managing replicated data with enhanced consistency and concurrency
US5963945A (en) * 1997-06-05 1999-10-05 Microsoft Corporation Synchronization of a client and a server in a prefetching resource allocation system
US6219675B1 (en) * 1997-06-05 2001-04-17 Microsoft Corporation Distribution of a centralized database
GB2326492B (en) * 1997-06-20 2002-03-20 Ibm Apparatus, method and computer program for providing arbitrary locking modes for controlling concurrent access to server resources
US6449622B1 (en) * 1999-03-08 2002-09-10 Starfish Software, Inc. System and methods for synchronizing datasets when dataset changes may be received out of order
US6418438B1 (en) * 1998-12-16 2002-07-09 Microsoft Corporation Dynamic scalable lock mechanism
US6546443B1 (en) * 1999-12-15 2003-04-08 Microsoft Corporation Concurrency-safe reader-writer lock with time out support
CA2302981C (en) * 2000-03-29 2004-06-01 Ibm Canada Limited-Ibm Canada Limitee Online database table reorganization
US6622189B2 (en) * 2000-11-30 2003-09-16 International Business Machines Corporation Method and system for low overhead spin lock instrumentation
JP2003263350A (ja) * 2002-03-07 2003-09-19 Ricoh Co Ltd データベースシステム

Cited By (1)

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

Also Published As

Publication number Publication date
EP1612700A3 (en) 2006-07-26
US8762331B2 (en) 2014-06-24
JP4833590B2 (ja) 2011-12-07
EP1612700A2 (en) 2006-01-04
CN1716248A (zh) 2006-01-04
KR101137053B1 (ko) 2012-04-19
CN1716248B (zh) 2010-06-23
JP2006012153A (ja) 2006-01-12
EP1612700B1 (en) 2020-07-22
US20050289189A1 (en) 2005-12-29

Similar Documents

Publication Publication Date Title
KR101137053B1 (ko) 데이터 관리 엔진 및 병행 트랜잭션 수행 방법
US7707195B2 (en) Allocation locks and their use
Shamis et al. Fast general distributed transactions with opacity
US9146934B2 (en) Reduced disk space standby
US8635193B2 (en) Cluster-wide read-copy update system and method
US7168064B2 (en) System and method for supplementing program builds with file usage information
US7676788B1 (en) Architecture and method for executing program builds
US20150172412A1 (en) Managing dependencies between operations in a distributed system
US20030200212A1 (en) Method, system, and program product for transaction management in a distributed content management application
US11599514B1 (en) Transactional version sets
Shukla et al. Schema-agnostic indexing with Azure DocumentDB
US7395529B1 (en) Conflict detection and correction in a program build environment
US7263695B1 (en) System and method for processing recursive invocations within a program build
US11886422B1 (en) Transactional protocol for snapshot isolation without synchronized clocks
US7631010B2 (en) Systems and methods in support of data base page synchronization
Pellegrini et al. Transparent and efficient shared-state management for optimistic simulations on multi-core machines
US11709809B1 (en) Tree-based approach for transactionally consistent version sets
Yao et al. Scaling distributed transaction processing and recovery based on dependency logging
Wong et al. Oracle streams: A high performance implementation for near real time asynchronous replication
Hu et al. Online schema evolution is (almost) free for snapshot databases
Krogh et al. Pro MySQL NDB Cluster
Gropengießer et al. Cloudy transactions: Cooperative xml authoring on amazon s3
SE Cloudy Transactions: Cooperative XML Authoring on Amazon S3.
Huang Design principles and techniques for enabling reboot-based administration in a persistent state storage system
de Sousa Key-CRDT stores

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

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170317

Year of fee payment: 6