KR20050002616A - 트랜잭션 일관성있는 카피-온-라이트 데이터베이스 - Google Patents

트랜잭션 일관성있는 카피-온-라이트 데이터베이스 Download PDF

Info

Publication number
KR20050002616A
KR20050002616A KR1020040049531A KR20040049531A KR20050002616A KR 20050002616 A KR20050002616 A KR 20050002616A KR 1020040049531 A KR1020040049531 A KR 1020040049531A KR 20040049531 A KR20040049531 A KR 20040049531A KR 20050002616 A KR20050002616 A KR 20050002616A
Authority
KR
South Korea
Prior art keywords
data
storage space
stored
page
database
Prior art date
Application number
KR1020040049531A
Other languages
English (en)
Other versions
KR101085767B1 (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 KR20050002616A publication Critical patent/KR20050002616A/ko
Application granted granted Critical
Publication of KR101085767B1 publication Critical patent/KR101085767B1/ko

Links

Classifications

    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • G06F16/24557Efficient disk access during query execution
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2477Temporal data queries
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/80Database-specific techniques
    • 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

Abstract

이전의 시점에서의 기존의 데이터베이스의 트랜잭션 일관성있는 뷰(transaction-consistent data)를 생성하는 데이터베이스의 데이터베이스 뷰가 제공된다. 각각의 데이터베이스 뷰는 1차 데이터베이스와 함께 이전 시점에서의 1차 데이터베이스의 내용을 결정하는 데 필요한 모든 정보를 포함한다. 데이터베이스 뷰는 1차 데이터베이스 내의 각 데이터 파일에 대응하는 사이드 파일(side file)로 이루어져 있다. 사이드 파일은 데이터베이스 뷰가 생성된 이래로 변경된 대응하는 데이터 파일로부터의 모든 데이터의 복사본을 포함한다. 스파스 파일(sparse file)은 공간을 보존하기 위해 사이드 파일 대신에 사용될 수 있다. 페이지 테이블 데이터(page table data)는 1차 데이터베이스로부터의 페이지가 수정되었는지 여부 및 이전 버전이 데이터베이스 뷰 사이드 파일에 저장되어 있는지 여부에 관한 신속한 결정이 가능하도록 하기 위해 유지된다.

Description

트랜잭션 일관성있는 카피-온-라이트 데이터베이스{TRANSACTION CONSISTENT COPY-ON-WRITE DATABASE}
본 발명은 일반적으로 데이터베이스 시스템 분야에 관한 것이다. 보다 구체적으로는, 본 발명은 데이터베이스의 트랜잭션 일관성있는 복사본(transaction-consistent copy)을 생성하는 것에 관한 것이다.
현재 데이터베이스 및 데이터베이스 제품이 일상적으로 사용되고 있다. 데이터베이스는 정보를 레코드, 테이블 및 인덱스 등의 객체에 저장한다. 데이터베이스에 저장되어 있는 현재 버전의 정보 이외에, 이전 버전의 정보도 사용자에게 유용할 수 있다.
이전 버전의 데이터에 관한 정보를 제공하는 한가지 방법은 사용자가 관심을 가질 수 있는 시점에서 데이터베이스의 전체 복사본을 작성하는 것이다. 이러한 일이 일어날 때, 그 데이터베이스와 관련된 모든 파일이 저장된다. 그렇지만, 일정 분량의 저장 공간에 저장되어 있는 데이터베이스에 대해 각 복사본도 역시 그 분량의 저장 공간을 필요로 하기 때문에, 이 기술은 공간을 많이 소모한다(space intensive). 그 복사 자체가 대량의 데이터의 이동을 수반하기 때문에, 이 방법은 또한 시간 소모적일 수 있다.
변경된 데이터의 복사본만을 저장하는 카피-온-라이트(copy-on-write) 메카니즘을 사용하는 디스크 볼륨 스냅샷(disk volume snapshot)이 제공될 수 있다. 원본 데이터베이스에 변경이 이루어질 때마다, 이전에 저장된 데이터는 변경된 데이터의 복사본에 기록된다. 그렇지만, 이 볼륨 스냅샷은 트랙잭션적으로 일관성이없다(not transactionally consistent). 즉, 저장된 변경은 진행 중인 트랜잭션의 일부일 수 있으며, 따라서 볼륨 스냅샷은 트랜잭션에 관한 부분적인 정보를 포함할 수 있다. 이러한 있을 수 있는 트랜잭션 일관성 결여(transaction inconsistency)로 인해 애플리케이션이 볼륨 스냅샷을 사용하기 위해서는 특수한 후크(hook)가 필요하다. 이와 같이 생성된 볼륨 스냅샷은 저장되어 있는 인덱스 및 테이블의 불완전한 구조적 수정으로 인해 구조적 일관성이 없을 수 있다(structurally inconsistent). 게다가, 볼륨 스냅샷에서, 복사본의 입도(granularity)는 볼륨 레벨(volume level)에 있다. 비데이터베이스(non-database) 데이터도 복사될 수 있으며, 이는 불필요하고 시간 및 자원을 낭비하는 것이다.
특정 트랜잭션에 의해 액세스되는 데이터를 이용가능하게 함으로써 데이터베이스의 버저닝(versioning)도 제공되어 있다. 주어진 트랜잭션에 대해 이러한 데이터만이 저장되며, 따라서 주어진 트랜잭션에 의해 액세스되었던 것이 무엇이었는지에 관한 데이터가 필요한 경우, (그 트랜잭션에 의해 어떤 변경도 이루어지기 전에) 액세스된 데이터가 그 트랜잭션을 개시한 사용자에게 제공될 수 있다. 그렇지만, 이러한 데이터는 다중 트랜잭션 또는 사용자에 의해서는 액세스되지 않는다. 다중 트랜잭션 또는 사용자가 동일한 데이터에 액세스하려고 시도하는 경우, 그 데이터는 이들 서로 다른 액세스에 대해 서로 다를 수 있다. 게다가, 이러한 버저닝은 데이터베이스 서버가 재기동된 후에는 지속성이 없다.
따라서, 신속하게 생성될 수 있고, 트랜잭션 일관성있으며, 다중 트랜잭션 또는 사용자에게 일관성있는 정보를 제공하고, 또 데이터베이스 서버가 재기동된후에도 지속성이 있는 데이터베이스를 뷰잉(viewing)하는 방법이 필요하다.
데이터베이스의 완전한 복사본을 생성하지 않고 이전 시점에서의(데이터베이스 뷰가 생성되었을 시점에서의) 기존의 데이터베이스의 트랜잭션 일관성있는 뷰를 제공하는 데이터베이스의 데이터베이스 뷰(database view)가 생성된다. 1차 데이터베이스란 사용되고 있고 또 그에 대한 하나 이상의 데이터베이스 뷰가 생성되고 있는 데이터베이스를 말한다.
각각의 데이터베이스 뷰는, 1차 데이터베이스와 함께, 이전의 시점에서의 1차 데이터베이스의 내용을 결정하는 데 필요한 모든 정보를 포함하고 있다. 데이터베이스 뷰는 1차 데이터베이스 내의 각각의 데이터 파일에 대응하는 사이드 파일(side file)로 이루어져 있다. 사이드 파일은 데이터베이스 뷰가 생성된 이래로 변경된 대응하는 데이터 파일로부터의 모든 데이터의 복사본을 포함하고 있다.
일 실시예에서, 데이터베이스의 데이터베이스 뷰가 구현된다. 데이터베이스는 데이터 요소를 포함하며 트랜잭션 로그(transaction log)와 관련되어 있다. 트랜잭션 로그는 활성 트랜잭션과 비활성 트랜잭션 둘다를 포함한다. 데이터베이스 뷰는 현재 버전의 데이터베이스와 이전 버전 사이의 차이의 저장 공간("차이 저장 공간")(difference storage)을 포함하고 있다. 이것은 사이드 파일이라고 하는 파일에 저장된다.
새로운 데이터가 데이터베이스에 기록되는 경우에는 항상, 이전 버전에 있는 데이터의 복사본이 차이 저장 공간에 저장된다. 또다른 변경이 이루어지는 경우,차이 저장 공간은 이전 버전에 있는 그 데이터의 복사본을 이미 포함하고 있으며, 따라서 새로운 데이터는 저장되지 않는다.
일 실시예에서, 트랜잭션 로그가 분석되고, 상기 트랜잭션 로그 상의 분리점(split point)이 식별된다. 수정을 수행하는, 로그에서 분리점 이전에 있는 각각의 트랜잭션이 발견되고, 그 수정의 결과가 차이 저장 공간에 기록된다. 이어서, 트랜잭션 로그 상의 활성 트랜잭션에 의해 야기되는 수정이 그 트랜잭션을 취소(undo)하도록 데이터베이스 뷰를 갱신함으로써 데이터베이스 뷰에서 취소된다. 이와 같이, 분리점 당시의 트랜잭션 일관성있는 데이터베이스 뷰가 제공된다.
이하에서 본 발명의 다른 특징에 대해 기술한다.
도 1은 본 발명의 특징들이 구현될 수 있는 예시적인 컴퓨팅 환경의 블록도.
도 2는 본 발명의 일 실시예에 따른 데이터베이스의 블록도.
도 3은 본 발명의 일 실시예에 따른 데이터베이스 뷰(database view) 및 데이터베이스의 블록도.
도 4는 본 발명의 일 실시예에 따른 예시적인 트랜잭션 로그의 블록도.
도 5는 본 발명의 일 실시예에 따른 트랜잭션 일관성있는 데이터베이스 뷰(transaction-consistent view of database)를 구현하는 방법의 흐름도.
<도면의 주요 부분에 대한 부호의 설명>
200: 1차 데이터베이스
205: 데이터 파일
210: 로그 파일
220: 데이터베이스 뷰
225: 사이드 파일
230: 사이드 페이지 테이블 데이터
상술된 발명의 요약은 물론 후술된 바람직한 실시예에 대한 상세한 설명이 첨부 도면을 참조하여 읽어가면 보다 잘 이해될 것이다. 본 발명의 설명의 목적상, 본 발명의 예시적인 구성들이 도면에 도시되어 있지만, 본 발명은 개시된 특정의 방법 및 수단에 한정되지 않는다.
예시적인 컴퓨팅 환경
도 1은 본 발명의 특징들이 구현될 수 있는 예시적인 컴퓨팅 환경을 나타낸 것이다. 컴퓨팅 시스템 환경(100)은 적합한 컴퓨팅 환경의 일례에 불과한 것으로서 본 발명의 사용 또는 기능의 범위에 관한 어떤 제한을 암시하기 위한 것이 아니다. 컴퓨팅 환경(100)은 또한 예시적인 오퍼레이팅 환경(100)에 도시된 컴포넌트들 중 임의의 것 또는 그의 임의의 조합에 관하여 어떤 의존성 또는 요구 사항을갖는 것으로 해석되어서도 안된다.
본 발명은 다수의 다른 범용 또는 특수 목적의 컴퓨팅 시스템 환경 또는 구성에서 사용할 수 있다. 본 발명과 함께 사용하기에 적합할 수 있는 공지의 컴퓨팅 시스템, 환경 및/또는 구성의 예로는 퍼스널 컴퓨터, 서버 컴퓨터, 핸드헬드(hand-held) 또는 랩톱(laptop) 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 셋톱 박스(settop box), 프로그램가능 가전 제품, 네트워크 PC, 미니 컴퓨터, 메인프레임 컴퓨터, 임베디드 시스템(embedded system), 및 상기 시스템 또는 장치 중 임의의 것을 포함하는 분산 컴퓨팅 환경이 있지만, 이에 한정되는 것은 아니다.
본 발명은 컴퓨터에 의해 실행되는 프로그램 모듈 등의 컴퓨터 실행가능 명령어의 일반적인 관점에서 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정 작업을 수행하거나 특정의 추상 데이터 유형을 구현하는 루틴, 프로그램, 오브젝트(object), 컴포넌트(component), 데이터 구조 등을 포함한다. 본 발명은 또한 작업들이 통신 네트워크 또는 기타 데이터 전송 매체를 통해 연결되어 있는 원격 프로세싱 장치들에 의해 수행되는 것인 분산 컴퓨팅 환경에서 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈 및 기타 데이터는 메모리 저장 장치를 포함하는 로컬 및 원격 컴퓨터 저장 매체 둘다에 위치할 수 있다.
도 1을 참조하면, 본 발명을 구현하기 위한 예시적인 시스템은 컴퓨터(110) 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 컴포넌트들로는 프로세싱 유닛(120), 시스템 메모리(130), 및 시스템 메모리를 비롯한 여러가지 시스템 컴포넌트들을 프로세싱 유닛(120)에 연결하는 시스템 버스(121)가 있을 수 있지만, 이에 한정되는 것은 아니다. 프로세싱 유닛(120)은 멀티-쓰레드 프로세서(multi-threaded processor) 상에서 지원되는 것 등의 다수의 논리적 프로세싱 유닛을 나타낼 수 있다. 시스템 버스(121)는 메모리 버스 또는 메모리 콘트롤러, 주변 버스, 및 각종의 버스 구조 중 임의의 것을 사용하는 로컬 버스를 비롯한 몇가지 유형의 버스 구조 중 임의의 것일 수 있다. 제한으로서가 아닌 일례로서, 이러한 구조는 ISA(산업 표준 아키텍처) 버스, MCA(마이크로 채널 아키텍처) 버스, EISA(확장 ISA) 버스, VESA(비디오 일렉트로닉스 표준 어소시에이션) 로컬 버스, 및 PCI(주변 컴포넌트 상호접속) 버스(메자닌(Mezzanine) 버스라고도 함)를 포함한다. 시스템 버스(121)는 또한 통신 장치들 간의 점대점 연결(point-to-point connection), 스위칭 패브릭(switching fabric) 등으로서 구현될 수 있다.
컴퓨터(110)는 일반적으로 각종의 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터(110)에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있으며, 휘발성 및 비휘발성 매체, 분리형(removable) 및 비분리형(non-removable) 매체를 둘다 포함한다. 제한이 아닌 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 분리형 및 비분리형 매체 둘다를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래쉬 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광학 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 컴퓨터(110)에 의해 액세스될 수 있고 원하는 정보를 저장하는 데 사용될 수 있는 임의의 기타 매체를 포함할 수 있지만, 이에 한정되지 않는다. 통신 매체는 일반적으로 반송파 또는 기타 전송 메카니즘 등의 변조된 데이터 신호에 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈, 또는 다른 데이터를 구현하며, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호 내에 정보를 인코딩하도록 그 신호의 특성 중 하나 이상이 설정되거나 변환된 신호를 의미한다. 제한으로서가 아닌 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 접속 등의 유선 매체와, 음향, RF, 적외선 및 기타 무선 매체 등의 무선 매체를 포함한다. 상술한 것들 중의 임의의 것의 조합도 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
시스템 메모리(130)는 ROM(131) 및 RAM(132) 등의 휘발성 및/또는 비휘발성 메모리의 형태의 컴퓨터 저장 매체를 포함한다. 시동 중과 같은 때에 컴퓨터(110) 내의 구성요소들간에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 기본 입출력 시스템(133; BIOS)은 일반적으로 ROM(131)에 저장된다. RAM(132)은 일반적으로 프로세싱 유닛(120)에 의해 즉시 액세스될 수 있고 및/또는 프로세싱 유닛(120)에 의해 현재 작동되고 있는 프로그램 모듈 및/또는 데이터를 포함한다. 제한으로서가 아닌 예로서, 도 1에는 오퍼레이팅 시스템(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)가 도시되어 있다.
컴퓨터(110)는 또한 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체도 포함할 수 있다. 단지 예로서, 도 1에는 비분리형 비휘발성 자기 매체로부터 판독하거나 그 자기 매체에 기록하는 하드 디스크 드라이브(141), 분리형 비휘발성 자기 디스크(152)로부터 판독하거나 그 자기 디스크에 기록하는 자기 디스크 드라이브(151), 및 CD-ROM 또는 기타 광학 매체 등의 분리형 비휘발성 광학 디스크(156)로부터 판독하거나 그 광학 디스크에 기록하는 광학 디스크 드라이브(155)가 도시되어 있다. 예시적인 오퍼레이팅 환경에서 사용될 수 있는 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래쉬 메모리 카드, DVD(Digital versatile disk), 디지털 비디오 테이프, 반도체 RAM, 반도체 ROM 등을 포함하지만 이에 한정되지 않는다. 하드 디스크 드라이브(141)는 일반적으로 인터페이스(140)와 같은 비분리형 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광학 디스크 드라이브(155)는 일반적으로 인터페이스(150)와 같은 분리형 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
앞서 기술되고 도 1에 도시된 드라이브 및 그 관련 컴퓨터 저장 매체는 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈, 및 컴퓨터(110)의 기타 데이터의 저장을 제공한다. 도 1에서, 예를 들어, 하드 디스크 드라이브(141)는 오퍼레이팅 시스템(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146), 및 프로그램 데이터(147)를 저장하는 것으로 도시되어 있다. 이들 컴포넌트는 오퍼레이팅 시스템(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)와 동일한 것이거나 그와 다른 것일 수 있음에 유의한다. 오퍼레이팅 시스템(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146), 및 프로그램 데이터(147)는 최소한 이들이 서로 다른 복사본(different copies)임을 나타내기 위하여 다른 번호가 부여되어 있다. 사용자는 통상 마우스, 트랙볼, 또는 터치 패드라 불리우는 포인팅 장치(161) 및 키보드(162)와 같은 입력 장치를 통해 컴퓨터(110)에 명령 및 정보를 입력할 수 있다. (도시되지 않은) 기타 입력 장치로는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등이 있을 수 있다. 이들 입력 장치 및 그외의 입력 장치는 시스템 버스에 연결된 사용자 입력 인터페이스(160)를 통해 종종 프로세싱 유닛(120)에 접속되지만, 병렬 포트, 게임 포트 또는 USB(범용 직렬 포트)와 같은 기타 인터페이스 및 버스 구조에 의해 접속될 수 있다. 모니터(191) 또는 다른 유형의 디스플레이 장치도 비디오 인터페이스(190) 등의 인터페이스를 통해 시스템 버스(121)에 접속되어 있다. 모니터 외에도, 컴퓨터는 또한 출력 주변 인터페이스(195)를 통해 접속될 수 있는 스피커(197) 및 프린터(196) 등의 기타 주변 출력 장치도 포함할 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 이용하여 네트워크화된 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어(peer) 장치, 또는 기타 통상의 네트워크 노드일 수 있으며, 컴퓨터(110)에 관하여 상술한 구성요소 중 다수 또는 그 모두를 일반적으로 포함할 수 있지만, 도 1에는 메모리 저장 장치(181)만이 도시되어 있다. 도 1에 도시된 논리적 접속은 근거리 통신망(LAN; 171) 및 원거리 통신망(WAN; 173)을 포함하지만, 그 외의 네트워크/버스도 포함할 수 있다. 이러한 네트워킹 환경은 사무실, 기업 광역 컴퓨터 네트워크(enterprise-wide computer network), 인트라넷, 및 인터넷에서 통상적인 것이다.
LAN 네트워킹 환경에서 사용되는 경우, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워킹 환경에서 사용되는 경우, 컴퓨터(110)는 일반적으로 인터넷 등의 WAN(173)을 통해 통신을 구축하기 위한 모뎀(172) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 기타 적절한 메카니즘을 통해 시스템 버스(121)에 접속될 수 있다. 네트워크화된 환경에서, 컴퓨터(110)에 관하여 도시된 프로그램 모듈 또는 그 일부분은 원격 메모리 저장 장치에 저장될 수 있다. 제한으로서가 아닌 예로서, 도 1에서는 원격 애플리케이션 프로그램(185)이 메모리 장치(181)에 상주하는 것으로 도시되어 있다. 도시된 네트워크 접속은 예시적인 것이며, 컴퓨터들간의 통신 링크를 구축하는 그 외의 수단이 사용될 수 있음을 잘 알 것이다.
데이터베이스 및 데이터베이스 뷰
일반적으로, 데이터베이스는 2가지 유형의 파일, 즉 데이터 파일과 로그 파일로 이루어져 있다. 로그 파일은 시간에 따라 데이터베이스 파일에 행해진 변경을 기술하는 일련의 로그 레코드(log record)를 포함한다. 로그 레코드는 로그 일련 번호(log sequence number, LSN)로 식별될 수 있다. 도 2에 도시한 바와 같이, 일 실시예에서, 1차 데이터베이스(200)는 데이터 파일(205) 및 로그 파일(210)의 세트(set)로 이루어져 있다. 데이터 파일은 페이지(page)라고 부르는 저장 블록으로 분할되어 있다.
데이터베이스의 전체 복사본을 생성하지 않고 이전의 시점에서의 기존의 데이터베이스의 트랜잭션 일관성있는 뷰를 제공하는 데이터베이스의 데이터베이스 뷰가 생성된다. 데이터베이스 뷰는 데이터베이스와 함께 이전의 시점에서의 데이터베이스의 복사본을 생성하는 데 필요한 모든 정보를 포함하고 있다. 그렇지만, 데이터베이스 뷰는 본질적으로 모든 정보를 포함하지 않으며, 따라서 전체 복사본 보다 크기가 더 작을 수 있다. 게다가, 뷰는 데이터베이스에 수정이 행해질 때 동작 중에 생성되며, 이에 따라 비용(시간 및 프로세싱)이 시간에 걸쳐 분산될 수 있게 된다. 이전 시점에서 데이터베이스 뷰의 복사본이 작성되는 경우, 시간 및 프로세싱 비용은 동시에 집중되게 된다. 게다가, 데이터베이스 뷰는 데이터베이스에 갱신 동작이 계속되는 동안 생성될 수 있다. 1차 데이터베이스란 사용되고 있으며 그에 대한 하나 이상의 데이터베이스 뷰가 생성되고 있는 데이터베이스를 말한다.
전술한 바와 같이, 데이터베이스 뷰는 1차 데이터베이스와 함께 이전 시점에서의 1차 데이터베이스의 내용을 결정하는 데 필요한 모든 정보를 포함하고 있다. 데이터베이스 뷰는 1차 데이터베이스 내의 각 데이터 파일에 대응하는 사이드 파일(side file)로 이루어져 있다. 사이드 파일은 데이터베이스 뷰가 생성된 이래로 변경된 대응하는 데이터 파일로부터의 모든 데이터의 복사본을 포함한다. 일 실시예에서, 사이드 파일 내의 페이지로부터 1차 파일(primary file) 내의 페이지로의 매핑(mapping) 테이블이 필요하지 않도록 하기 위해, 사이드 파일은 스파스 파일(sparse file)에 저장된다. 스파스 파일에서는 실제로 기록되는 파일의 부분만이 저장 공간을 필요로 한다. 그 파일의 다른 모든 영역은 할당되지 않는다. 다른 실시예들에서, 사이드 파일의 저장 공간은 스파스 파일에 있지 않다.
일 실시예에서, 스파스 파일 메카니즘은 표준 영역 크기(standard region size)를 대상으로 한다. 한 영역 내의 데이터가 스파스 파일에 기록되는 경우, 그 데이터가 전체 영역을 채우고 있지 않더라도 그 전체 영역에 대한 공간이 할당된다. 이 공간이 할당되고 그로부터 판독될 수 있기 때문에, 그 영역 중 유효한 데이터로 채워진 구역과, 그 영역 내에서의 임의의 저장이 필요한 경우 스파스 파일의 입도(granularity)에 의해 일정 크기의 영역이 할당되어야만 하기 때문에 존재하는 그 영역 중의 구역 간에 구별이 이루어져야만 한다.
데이터베이스 뷰가 생성된 이래로 1차 데이터베이스에서 변경된 모든 데이터의 원래 값을 그 데이터베이스 뷰가 포함하고 있기 때문에, 데이터베이스 뷰의 생성 시점 당시의 데이터베이스 데이터는 데이터베이스 뷰로부터 판독될 수 있다. 데이터베이스 뷰에 대한 데이터의 요청에 응답하기 위해, 데이터베이스 뷰의 사이드 파일이 그 요청에 대한 데이터를 포함하고 있는 경우 그 사이드 파일로부터 데이터가 판독된다. 사이드 파일에 존재하지 않는 판독할 데이터는 데이터베이스 뷰가 생성된 이래로 변경되지 않았으며 1차 데이터베이스로부터 판독된다.
일 실시예에서, 사이드 파일은 1차 데이터베이스로부터의 데이터 페이지를 포함한다. 1차 데이터베이스의 임의의 페이지 상의 임의의 데이터가 변경되는 경우, 그 데이터 페이지는 사이드 파일에 저장된다. 본 발명은 1차 데이터베이스에서의 데이터 단위인 페이지를 참조하여 기술되고 있지만, 1차 데이터베이스의 다른데이터 단위가 사용될 수 있는 것도 생각되고 있다.
어느 데이터가 사이드 파일에 기록되었는지 및 어느 데이터가 1차 데이터베이스로부터 판독되어야만 하는지를 결정하기 위해서는, 사이드 파일 내에 유효 데이터가 존재하는 것이 확인되어야만 한다. 일 실시예에서, 유효 데이터가 존재하는지를 확인하기 위해 사이드 파일이 직접 판독된다. 다른 실시예에서, 주어진 페이지가 존재하는지 여부와 유효한지 여부에 관한 데이터를 저장하는 사이드 페이지 테이블(side page table)이 생성된다.
일 실시예에서, 1차 데이터베이스 내의 각 페이지에 대해, 사이드 페이지 테이블은 그 페이지가 1차 데이터베이스로부터 판독되어야만 하는지(그 페이지가 변경되지 않았음을 나타냄) 여부 또는 그 페이지가 변경되었기 때문에 그 페이지가 사이드 파일로부터 판독되어야만 하는지 여부에 관한 정보를 저장한다. 사이드 페이지 테이블은 주어진 페이지가 사이드 파일에 존재하는지 여부에 대한 결정을 신속하게 할 수 있게 해준다.
1-비트 및 2-비트 페이지 테이블
일 실시예에서, 사이드 파일 및 스파스 파일 메카니즘 둘다는 동일한 페이지/영역 크기를 사용한다. 즉, 사이드 파일이 1차 데이터베이스로부터 저장하는 페이지는 임의의 메모리가 스파스 파일에 기록되는 때 스파스 파일이 저장하는 영역과 동일한 크기이다. 예를 들어, 스파스 파일 영역이 8KB이고 1차 데이터베이스로부터 저장된 페이지도 역시 8KB인 경우, 페이지 크기와 영역 크기는 같다. 이 경우, 채워지는 임의의 영역은 1차 데이터베이스로부터 판독된 페이지에 의해 완전히 채워질 것이며, 무효인 데이터가 그 영역에 저장될 가능성은 전혀 없다.
또하나의 실시예에서, 다수의 사이드 파일 영역은 정확하게 각 페이지에 대응한다. 예를 들어, 스파스 파일 영역이 8KB(킬로바이트)이고 1차 데이터베이스로부터 저장된 페이지가 16KB인 경우, 사이드 파일에 저장된 각 페이지는 2개의 영역을 채우게 된다. 이 경우에도 역시, 채워지는 임의의 영역은 1차 데이터베이스로부터 판독된 페이지로부터의 내용으로 완전히 채워지게 된다. 다시 말하면, 무효인 데이터가 그 영역에 포함될 가능성은 전혀 없다.
이들 실시예의 경우, 사이드 페이지 테이블은 사이드 파일 내의 각 페이지에 대한 1비트의 정보를 보유하는 메모리내 비트맵(in-memory bitmap)을 포함한다. 사이드 파일 내의 각 페이지에 대해, 대응하는 비트는 그 페이지가 사이드 파일내에 있는지 여부를 가리킨다.
또다른 실시예에서, 사이드 파일 영역의 입도가 1차 데이터베이스로부터 저장된 페이지의 입도보다 더 크다. 예를 들어, 사이드 파일의 각 영역은 64KB이고 페이지의 크기는 8KB인 경우, 사이드 파일 내에 영역이 존재하는 것은 반드시 그 영역 내의 모든 정보가 1차 데이터베이스로부터의 유효한 데이터임을 반드시 나타내는 것은 아니다. 한 페이지만이 사이드 파일로 복사되는 경우, 이 예에서는 할당된 영역 내의 64KB 중 8KB만이 유효한 데이터를 포함하게 될 것이다. 또다른 실시예에서, 어떤 사이드 파일 페이지는 여러 영역에 걸쳐 분산되어 있다.
이들 실시예의 경우, 사이드 페이지 테이블은 사이드 파일 내의 각 페이지에 대한 2 비트의 정보를 보유하는 2개의 메모리내 비트맵을 포함하며, 본 명세서에서는 이를 비트 1 및 비트 2라고 부른다. 사이드 파일 내의 각 페이지에 대해, 대응하는 비트는 페이지가 사이드 파일 내에 있는 것이 명확한지 여부(비트 1)와 그 페이지가 사이드 파일에 있을 가능성이 있는지 여부(비트 2)를 나타낸다. 비트 2는 또한 사이드 파일에서 페이지가 저장되어 있는 영역이 할당되어 있음을 나타내는 것으로 생각될 수도 있다. 그렇지만, 후술된 바와 같이, 이 비트 2는 사이드 페이지 테이블이 재구축되는 때에만 설정된다.
비트맵은 메모리 내에(in-memory) 유지되며, 따라서 지속성이 없을 수도 있다. 비트맵이 소거되는 경우, 그 비트맵은 스파스 파일 정보로부터 재구축된다. 스파스 파일이 조회되고, 각 페이지에 대해 사이드 파일이 그 페이지가 위치하고 있는 영역에 대해 할당된 메모리를 갖는 경우, 비트 2는 그 페이지가 사이드 파일에 있을 가능성이 있음을 나타내도록 설정된다. 각 페이지에 대해, 비트 1은 그 페이지가 사이드 파일에 있는 것이 명확하지 않음을 나타내도록 초기 설정된다.
사이드 페이지 테이블이 지속성이 있도록 유지되는 경우, 영역 및 페이지의 입도는 무시될 수 있으며, 1비트 사이드 페이지 테이블이 사용될 수 있다. 그렇지만, 일 실시예에서, 데이터베이스 서버가 재기동된 후에 지속성있는 데이터베이스 뷰를 지원하기 위해, 2비트 페이지 테이블이 사용된다.
일 실시예에서, 사이드 파일에 대해 페이지 테이블이 생성되지 않는다. 이 경우, 데이터베이스 뷰 내의 페이지에 대해 복사가 행해졌는지 여부를 결정할 필요가 있을 때마다, 그 데이터베이스 뷰가 조회된다. 이하에서는 1비트 또는 2비트 페이지 테이블이 존재하는 실시예를 참조하여 본 발명이 후술될 것이지만, 페이지테이블이 없고 데이터베이스 뷰가 1차 데이터베이스로부터 복사된 페이지를 포함하고 있는지 여부를 결정하기 위해 그 데이터베이스 뷰가 검사되어야만 하는 실시예도 생각되고 있다.
도 3에 도시되어 있는 바와 같이, 1차 데이터베이스(200)에 대한 데이터베이스 뷰(220)는 사이드 파일(225)로 이루어져 있다. 1차 데이터베이스(200) 내의 데이터 파일(205) 각각은 데이터베이스 뷰(220) 내의 대응하는 사이드 파일(225)을 갖는다. 게다가, 데이터베이스 뷰(220)에 대한 사이드 페이지 테이블 데이터(230)는 메모리 내에 저장되어 있다. 일 실시예에서, 사이드 페이지 테이블 데이터(230)는 모든 사이드 파일(225)을 커버하는 하나의 사이드 페이지 테이블이다. 또하나의 실시예에서, 각각의 사이드 파일(225)에 대해 개별적인 사이드 페이지 테이블이 존재한다.
트랜잭션 로그
데이터베이스에서, 트랜잭션 로그(transaction log)는 트랜잭션 로그가 마지막으로 백업(back up)된 이래로 데이터베이스에 대해 수행된 모든 트랜잭션의 직렬 레코드(serial record)이다. 트랜잭션 로그는 장애 시점까지 데이터베이스를 복구하는 데 사용된다. 일 실시예에서, 트랜잭션 로그는 환형 큐(circular queue)로 모델링된다. 트랜잭션 로그는 그 로그의 비활성 부분을 삭제함으로써 절단(truncate)될 수 있다. 이러한 비활성 부분은 복구될 필요가 없는 완료된 트랜잭션을 포함한다. 역으로, 트랜잭션 로그의 활성 부분은 완료된 트랜잭션 및 여전히 실행되고 있고 아직 완료되지 않은 트랜잭션(활성 트랜잭션) 둘다를 포함한다. 절단은 트랜잭션 로그가 계속 증대되어 더 많은 공간을 사용할 수 있게 하지 않고 트랜잭션 로그 내의 비활성 공간을 최소화하기 위해 수행된다.
활성 트랜잭션은 트랜잭션 일관성 결여(transaction-inconsistency)를 야기할 수 있다. 활성 트랜잭션의 경우, 데이터 파일에 대한 어떤 수정은 버퍼 캐시로부터 데이터 파일로 기록되지 않을 수 있으며, 데이터 파일 내의 불완전 트랜잭션에 대한 어떤 수정이 있을 수 있다. 로그 파일은 데이터베이스의 복구가 트랜잭션 일관성이 있도록 보장하는 데 사용된다. 이것은 ARIES(Algorithms for Recovery and Isolation Exploiting Semantics)-유형 복구를 사용하여 행해진다. 데이터 파일에 기록되어 있지 않을 수 있는 로그에 기록된 모든 수정은 데이터베이스에 대해 수정을 수행함으로써 롤 포워드(roll forward)된다. 데이터베이스의 무결성을 보장하기 위해, 트랜잭션 로그에서 발견된 모든 불완전 트랜잭션은 데이터베이스에 대한 수정을 취소(undo)함으로써 롤 백(roll back)된다.
데이터베이스 뷰 생성하기
데이터베이스 뷰를 생성하기 위해, 데이터베이스 뷰의 물리적인 구조(사이드 파일 및 페이지 테이블)가 초기화되어야만 한다. 먼저, 1차 데이터베이스(200) 내의 각 데이터 파일(205)에 대해 사이드 파일(225)이 생성된다. 전술한 바와 같이, 사이드 파일은 스파스 파일일 수 있거나, 또다른 실시예에서 데이터 파일(205)과 동일한 크기의 비스파스 파일(non-sparse file)일 수도 있다. 사이드 파일(225)은 1차 데이터베이스(200) 내의 데이터 파일(205)과 관련되어 있다.
트랜잭션이 연속하여 일어나고 있고 또 데이터베이스 뷰가 트랜잭션 일관성있기 때문에, 데이터베이스 뷰의 생성 동안 트랜잭션 로그가 사용되어야만 한다. 데이터베이스 뷰에 대해 사용되어야만 하는 트랜잭션에 관한 정보가 폐기되지 않도록 보장하기 위해, (로그 절단이 존재하는 경우) 1차 데이터베이스(200) 상에서 그 로그 절단(log truncation)이 디스에이블(disabling)된다.
일 실시예에서, 데이터베이스 뷰에 대한 사이드 페이지 테이블(230)이 초기화된다. 처음에, 사이드 페이지 테이블은 사이드 파일(225)에 페이지가 존재하지 않음을 나타내도록 설정되고, 2비트 사이드 페이지 테이블의 경우는 사이드 파일(225)에 페이지가 존재할 가능성이 없거나 명확하게 없음을 나타내도록 설정된다.
초기화가 완료되면, 데이터베이스 뷰는 "온라인" 상태로 들어갈 준비가 된다. 이제 데이터베이스 뷰는 1차 데이터베이스(200)와 함께 실행되어질 것이며, 수정이 수행되는 경우 수정된 페이지의 원래의 값(즉, 갱신이 수행되기 이전의 페이지의 내용)의 복사본이 데이터베이스 뷰에 저장될 것이다. 도 5는 본 발명의 일 실시예에 따른 데이터베이스의 트랜잭션 일관성있는 뷰를 구현하는 방법의 흐름도이다. 도 5에 나타낸 바와 같이, 단계 500에서 트랜잭션 로그 상에서의 분리점이 결정된다. 이 분리는 데이터베이스 뷰가 나타내는 시점에 대응한다. 1차 데이터베이스(200) 상에서의 로그의 끝의 LSN은 데이터베이스 뷰가 생성될 때 획득되며, 이 LSN은 1차 데이터베이스(200) 및 데이터베이스 뷰(220)가 분기(diverge)되기 시작하는 "분리점"이다. 이어서, 데이터베이스 뷰 프로세싱이 요구되도록 1차 데이터베이스(200)에 표시된다. 후술된 바와 같이 1차 데이터베이스(200)에서의 데이터베이스 뷰 지원이 시작된다.
데이터베이스 뷰가 일관성있도록 하기 위해, 분리 시에 어떤 트랜잭션이 활성이었는지를 결정하기 위해 분리점 이전의 1차 데이터베이스(200)의 로그가 분석되어야만 한다. 로그 내에서 (분리점 당시에) 가장 오래된 활성 트랜잭션이 식별된다. 그 가장 오래된 활성 트랜잭션 이전에 로그 절단이 인에이블(enable)된다.
ARIES-유형 복구와 유사한 방식으로, 가장 오래된 활성 트랜잭션에서부터 분리점 이전의 1차 데이터베이스(200)의 로그에서의 모든 연산이 데이터베이스 뷰에 대해 수행된다. 도 4는 본 발명의 바람직한 실시예에 따른 예시적인 트랜잭션 로그, 즉 로그 파일(210)의 블록도이다. 로그 파일(210) 내의 로그 엔트리는 로그 엔트리(400, 410, 420, 430, 440, 450, 460, 470, 480, 490, 499)를 포함한다. 분리점(475)이 결정된다. 트랜잭션은 계속하여 로그에 기록되지만, 절단이 디스에이블된다. 로그 파일(210)이 검사되고, 가장 오래된 활성 트랜잭션에서부터 분리점까지의(도 4의 예에서 로그 엔트리 n(400)에서부터 로그 엔트리 n+7까지의) 트랜잭션의 결과로서의 데이터베이스에 대한 임의의 수정이 사이드 파일(225)에 대해 수행된다. 이들 트랜잭션 각각에서의 수정의 결과는 사이드 파일(225)에 저장된다. 그 다음에, 이들 트랜잭션이 검사된다. 로그 엔트리 n(400), 로그 엔트리 n+2(420) 및 로그 엔트리 n+6 등의 로그에서의 임의의 활성 트랜잭션에 의해 로그 파일에 기록된 수정은 사이드 파일(225)에서 취소된다.
도 5에서 알 수 있는 바와 같이, 단계 500에서 트랜잭션 로그 상에서 분리점이 선택된다. 그 다음에, 단계 510에서, 데이터베이스에 대해 수정을 수행하는 각각의 트랜잭션이 발견된다. 일 실시예에서, 트랜잭션이 분석되고, 트랜잭션의 효과가 어떤 값을 데이터베이스 내의 어떤 위치에 기록하게 되는 경우, 그 값은 이하에 상세히 후술되는 데이터베이스 뷰를 수정하는 방법을 사용하여 사이드 파일 내의 대응하는 위치에 저장된다. 이와 같이, 여전히 데이터베이스에 기록될 필요가 있는 모든 변경(예를 들어, "더티 페이지"(dirty page) 내의 변경)이 데이터베이스 뷰를 위해 저장된다.
그렇지만, 어떤 트랜잭션은 아직 커밋(commit)되어 있지 않을 수 있다. 따라서, 로그 내에서 분기점까지의 이들 활성 트랜잭션을 찾아내어(단계 530) 취소시켜야만 한다(단계 540). 일 실시예에서, 불완전한 트랜잭션이 데이터베이스 내의 어떤 위치에 대한 값을 변경하는 경우, 상기 사이드 파일에 부가되어 있는 변경이 그 사이드 파일로부터 제거된다. 대체 실시예에서, 트랜잭션의 취소는 상세한 후술과 같이 데이터베이스 뷰를 수정함으로써, 즉 사이드 파일 내의 데이터를 분리점 당시의 데이터베이스 내의 데이터와 매칭되도록 설정함으로써 행해진다.
이와 같이, 로그로부터의 완료된 트랜잭션만이 데이터베이스 뷰에 반영된다. 분기점이 발생했을 때 취소되어 있던 트랜잭션이 활성인 것을 제외하고는 로그 상의 트랜잭션이 데이터베이스 뷰에 반영되는 경우, 로그 절단이 1차 데이터베이스(200) 상에서 인에이블된다. 데이터베이스 뷰 프로세싱이 인에이블되어 있기 때문에, 데이터베이스 뷰는 1차 데이터베이스(200)에 변경이 일어날 때 갱신되어지며, 따라서 데이터베이스 뷰는 분리점 당시의 1차 데이터베이스(200)의 내용을 결정하기 위해 사용될 수 있다.
데이터베이스 뷰 복구하기
데이터베이스 서버가 (정상적으로 또는 비정상적으로) 정지된 후에 재기동하는 때에, 데이터베이스 뷰가 재초기화되어야만 한다. 그렇게 하기 위해, 메모리에 저장되어 있는 사이드 페이지 테이블이 재초기화되어야만 한다.
2비트 사이드 페이지 테이블 구현에서 사이드 페이지 테이블을 재초기화하기 위해, 할당되어 있는 사이드 페이지 테이블 내의 각각의 영역에 대해, 할당되어 있는 영역 내의 각 페이지에 대한 사이드 페이지 테이블 내의 데이터(비트 2)는 그 페이지가 사이드 파일(225)에 아마도 기록되어 있을 수 있음을 나타내도록 설정된다. 모든 다른 페이지에 대한 사이드 페이지 테이블 내의 데이터는 그 페이지가 사이드 파일(225)에 기록되었을 가능성이 없음을 나타내도록 설정된다. 그렇지만, 그 페이지가 사이드 파일(225)에 기록되었음이 명확하지 않으며, 따라서 비트 1은 처음에 설정되지 않는다.
다른 대안에서, 2비트 사이드 페이지 테이블 구현에서 또는 1비트 사이드 페이지 테이블 구현에서, 전술한 바와 같이 각 페이지에 대해 사이드 파일(225) 내의 페이지가 유효한지를 결정하기 위해 사이드 파일(225)이 검사될 수 있다. 페이지 테이블은 존재하는 각 페이지에 대해 그 페이지가 사이드 파일(225)에 실제로 존재함을 나타내도록 설정된다. 다른 모든 페이지는 그 페이지가 사이드 파일(225)에 존재하지 않음을 나타내도록 설정된다.
1차 데이터베이스에서의 데이터베이스 뷰 지원
데이터가 오버라이트(overwrite)되기 전에 데이터베이스 뷰가 1차 데이터베이스(200)로부터의 정보를 저장하기 위해서, 1차 데이터베이스(200)는 데이터베이스 뷰의 생성을 지원해야만 한다. 1차 데이터베이스(200)가 수정하는 각각의 페이지에 대해, 그 페이지가 데이터베이스 뷰에 있는지 여부에 관한 결정이 행해져야만 한다. 그 페이지가 데이터베이스 뷰에 존재하는 경우, 그 페이지는 올바른 버전의 페이지이다. 예를 들어, 이것은 이전의 수정이 1차 데이터베이스(200) 내의 그 페이지에 대해 행해진 경우에 있을 수 있다. 그 페이지가 1차 데이터베이스(200)에서 다시 변경되는 경우, 데이터베이스 뷰에서의 버전은 변경되어서는 안된다.
페이지가 변경되고 있는 1차 데이터베이스(200)로부터 정보가 수신되는 때, 그 페이지가 사이드 파일(225)에 있는 경우, 아무것도 행해져서는 안된다. 그 페이지가 사이드 파일(225)에 있지 않은 경우, 그 페이지는 사이드 파일(225)에 기록되어야만 하며, 사이드 페이지 테이블에서 올바른 비트가 설정되어야만 한다. 2비트 페이지 테이블이 있는 경우, 이하의 표 1에 나타낸 바와 같이 그 페이지의 비트 1 및 비트 2에 대한 3가지 가능성이 있다.
2비트 페이지 테이블의 경우
비트 1은 그 페이지가 사이드 파일에 있음이 명확함을 나타냄 비트 1은 그 페이지가 사이드 파일에 있음이 명확함을 나타내지 않음
비트 2는 그 페이지가 아마도 사이드 파일에 있음을 나타냄 경우 1: 페이지가 사이드 파일에 있음 경우 2: 페이지가 아마도 사이드 파일에 있음
비트 2는 그 페이지가 사이드 파일에 없음이 명확함을 나타냄 경우 1: 페이지가 사이드 파일에 있음(다른 대안: 경우 4: 무효) 경우 3: 페이지가 사이드 파일에 없음이 명확함.
일 실시예에서, 비트 1이 그 페이지가 사이드 파일(225)에 있음이 명확함을 나타내는 경우, 비트 2는 무시되며, 따라서 표 1에 나타낸 바와 같이, 비트 1이 그페이지가 사이드 파일(225)에 있음이 명확함을 나타내는 경우, 비트 2가 무엇을 나타내더라도 그 페이지가 사이드 파일(225)에 있는 것으로 가정된다. 다른 대체 실시예에서, 비트 1이 그 페이지가 사이드 파일(225)에 있음이 명확함을 나타내는 경우, 비트 2는 그 페이지가 아마도 사이드 파일(225)에 있음을 나타내도록 설정되고, 이 대체 실시예에서, 비트 1은 그 페이지가 사이드 파일(225)에 있음이 명확함을 나타내지만 비트 2는 그 페이지가 사이드 파일(225)에 있지 않음이 명확함을 나타내는 경우, 그 경우는 무효이고, 에러를 만나게 된다.
1차 데이터베이스(200)가 그 페이지가 변경되고 있음을 나타내는 경우, 2비트 페이지 테이블의 경우, 상기 열거된 경우들에 대해 취해야만 하는 조치들은 다음과 같다.
경우 1: 아무것도 하지 않음.
경우 2: 페이지가 사이드 파일(225)에 있는지를 결정하고, 있지 않은 경우 그 페이지를 사이드 파일(225)에 기록함.
경우 3: 그 페이지를 사이드 파일(225)에 기록함.
페이지가 사이드 파일(225)에 기록되는 경우, 경우 1 또는 경우 2에서 1차 데이터베이스(200)에서의 이전 버전의 페이지(지금 1차 데이터베이스(200)에 의해 수정되고 있는 버전)가 사이드 파일(225)에 기록된다. 게다가, 페이지 테이블은 그 페이지가 지금 사이드 파일(225)에 있음을 나타내도록 설정되며 따라서 그 페이지로의 임의의 후속하는 기록은 경우 1에 따라 처리될 것이고, 데이터베이스 뷰에 대한 올바른 페이지가 사이드 파일(225)에 저장된 채로 있게 된다.
경우 2에서 그 페이지가 사이드 파일(225)에 있는지를 결정하기 위해, 그 페이지에 대응하는 데이터가 사이드 파일(225)로부터 판독된다. 그 데이터가 유효한 경우, 이전 버전의 페이지는 사이드 파일(225)에 있으며 그것이 오버라이트(overwrite)되어서는 안된다. 일 실시예에서, 그 페이지에 대응하는 페이지 테이블 비트 1은 그 페이지가 사이드 파일(225)에 있음이 명확함을 나타내도록 설정되고, 따라서 그 페이지로의 장래의 기록은 경우 1에 따라 처리된다.
데이터 무효성(data invalidity)은 새로 할당된 영역에 아직 유효한 데이터가 기록되어 있지 않음을 나타내기 위해 그 영역에 배치된 데이터에 의해 표시될 수 있다. 예를 들어, 데이터베이스의 어떤 페이지도 모두 0을 포함하는 일은 없을 것임을 알고 있는 경우 새로 할당된 영역에 모두 영이 기록될 수 있다. 이러한 경우, 사이드 파일(225)에 그 페이지가 존재하는 것은 사이드 파일(225) 내의 대응하는 페이지가 할당된 영역의 일부이고 또 어떤 영이 아닌 데이터를 포함하는 것에 의해 나타내어진다.
데이터베이스 뷰 판독하기
표 1에 상세히 기술한 경우들은 데이터베이스 뷰에 저장된 데이터의 판독을 수행하는 데도 유용하다. 페이지 내의 데이터가 데이터베이스 뷰로부터 판독되고 있을 때, 그 페이지가 사이드 파일(225)에 존재하는 경우는 그 페이지가 사이드 파일(225)로부터 판독되어야만 한다. 존재하지 않는 경우는, 그 페이지는 1차 데이터베이스(200)로부터 판독되어야만 한다. 2비트 페이지 테이블 시스템에서, 3가지 경우에 대해 취해야만 하는 조치들은 이하와 같다.
경우 1: 사이드 파일(225)로부터 그 페이지를 판독함.
경우 2: 그 페이지가 사이드 파일(225)에 있는지를 결정하고, 있는 경우 사이드 파일(225)로부터 그 페이지를 판독하고, 있지 않은 경우 1차 데이터베이스(200)로부터 그 페이지를 판독함.
경우 3: 그 페이지를 1차 데이터베이스(200)로부터 판독함.
데이터베이스 뷰 수정하기
데이터베이스 뷰는 이전 시점에서의 데이터베이스의 상태를 나타낸다. 사용자가 데이터베이스 뷰를 데이터베이스로서 사용하기로 결정할 수 있다. 예를 들어, 사용자는 데이터베이스 뷰에 대해 조치를 수행하기로, 즉 그 조치가 이전의 시점에서 데이터베이스 뷰에 대해 수행되었더라면 있게 되었을 것인 데이터베이스의 데이터베이스 뷰를 생성하기로 결정할 수 있다. 게다가, 초기화 동안에, 상세히 상술한 바와 같이 데이터베이스 뷰 상에서 트랜잭션이 수행되고 취소될 수 있다.
데이터베이스 뷰를 수정하기 위해, 그 수정은 데이터베이스 뷰 내의 데이터에 기초해야 하며, 그 결과 얻어지는 페이지는 데이터베이스 뷰에 저장되어야 한다. 그 페이지에 대한 데이터베이스 뷰에 데이터가 없는 경우, 그 수정은 1차 데이터베이스(200) 내의 데이터에 기초해야 하며, 그 결과 얻어지는 페이지는 데이터베이스 뷰에 저장되어야 한다.
2비트 페이지 테이블 시스템에서, 3가지 경우에 취해져야만 하는 조치는 다음과 같다.
경우 1: 사이드 파일(225)로부터 페이지를 판독하고, 수정을 수행하며, 그페이지를 사이드 파일(225)에 기록함.
경우 2: 페이지가 사이드 파일(225)에 있는지를 결정하고, 있는 경우 경우 1에서와 같이 진행되고, 있지 않은 경우 경우 3에서와 같이 진행함.
경우 3: 1차 데이터베이스(200)로부터 페이지를 판독하고, 그 페이지를 사이드 파일(225)에 기록하며, 그 페이지 테이블을 그 페이지가 사이드 파일(225)에 있음을 나타내도록 설정함. 적절한 경우 그 페이지에 대해 수정을 수행하고 수정된 페이지를 사이드 파일(225)에 기록함.
이상의 예들은 단지 설명의 목적상 제공된 것에 불과한 것으로서 결코 본 발명을 제한하기 위한 것은 아니다. 본 발명이 여러가지 실시예들을 참조하여 기술되고 있지만, 본 명세서에서 사용되는 용어들은 제한을 위한 것이 아니라 설명 및 예시를 위한 것임을 알아야 한다. 게다가, 본 발명은 특정의 수단, 재료 및 실시예를 참조하여 기술되어 있지만, 본 발명을 본 명세서에 기재된 구체적인 것들로 제한하려는 것이 아니며, 오히려 본 발명은 첨부된 청구항들의 범위 내에 있는 것 등의 모든 기능상 동등물인 구조, 방법 및 사용으로 확장된다. 본 기술에 숙련된 사람은 본 명세서의 개시 내용을 이용하여 그에 대한 여러가지 수정을 시행할 수 있으며, 본 발명의 범위 및 사상을 벗어나지 않고 그의 특징에 있어서의 변경이 행해질 수 있다.
본 발명은 이전의 시점에서의 기존의 데이터베이스의 트랜잭션 일관성있는 뷰를 제공하는 데이터베이스의 데이터베이스 뷰를 제공한다. 각각의 데이터베이스뷰는 1차 데이터베이스와 함께 이전 시점에서의 1차 데이터베이스의 내용을 결정하는 데 필요한 모든 정보를 포함한다. 데이터베이스 뷰는 1차 데이터베이스 내의 각 데이터 파일에 대응하는 사이드 파일로 이루어져 있다. 사이드 파일은 데이터베이스 뷰가 생성된 이래로 변경된 대응하는 데이터 파일로부터의 모든 데이터의 복사본을 포함한다. 스파스 파일은 공간을 보존하기 위해 사이드 파일 대신에 사용될 수 있다. 페이지 테이블 데이터는 1차 데이터베이스로부터의 페이지가 수정되었는지 여부 및 이전 버전이 데이터베이스 뷰 사이드 파일에 저장되어 있는지 여부에 관한 신속한 결정이 가능하도록 하기 위해 유지된다.

Claims (44)

  1. 특정 시점에서의 데이터베이스의 내용을 반영하는 트랜잭션 일관성있는 데이터(transaction-consistent data)를 포함하는 데이터베이스 뷰(database view)를 제공하는 방법으로서,
    상기 데이터베이스는 데이터 요소를 포함하고 트랜잭션 로그(transaction log)와 관련되어 있으며, 상기 트랜잭션 로그는 활성 트랜잭션과 비활성 트랜잭션을 포함하고, 상기 데이터베이스 뷰는 상기 데이터베이스로부터의 상기 데이터 요소 중의 적어도 하나의 이전 버전을 저장하기 위한 차이 저장 공간(difference storage)을 포함하며,
    상기 방법은,
    상기 시점에 대응하는 상기 트랜잭션 로그 상에서의 분리점(split point)을 결정하는 단계,
    상기 데이터베이스에 대해 수정을 수행하는 상기 트랜잭션 로그 상에서의 상기 분리점 이전의 각각의 트랜잭션을 찾아내는 단계,
    상기 수정 각각을 상기 차이 저장 공간에 저장하는 단계,
    상기 트랜잭션 로그 상에서의 상기 분리점 이전의 각각의 활성 트랜잭션을 찾아내는 단계, 및
    상기 차이 저장 공간 내의 임의의 대응하는 수정을 취소하는 단계를 포함하는 방법.
  2. 제1항에 있어서, 상기 차이 저장 공간을 초기화하는 단계를 더 포함하는 방법.
  3. 제1항에 있어서, 상기 시점에 대응하는 상기 트랜잭션 로그 상에서의 분리점을 결정하는 상기 단계는 로그 절단(log trunction)을 디스에이블링(disabling)하는 단계를 더 포함하는 것인 방법.
  4. 제1항에 있어서, 상기 데이터베이스 뷰는 페이지 테이블(view page table)을 더 포함하고,
    상기 방법은 상기 페이지 테이블을 초기화하는 단계를 더 포함하는 것인 방법.
  5. 제1항에 있어서, 상기 차이 저장 공간 내의 임의의 대응하는 수정을 취소하는 상기 단계는 상기 대응하는 수정을 삭제하는 단계를 포함하는 것인 방법.
  6. 제1항에 있어서, 상기 차이 저장 공간 내의 임의의 대응하는 수정을 취소하는 상기 단계는,
    상기 데이터베이스 내의 대응하는 미수정된 데이터를 판독하는 단계, 및
    상기 대응하는 미수정된 데이터를 상기 차이 저장 공간에 기록하는 단계를포함하는 것인 방법.
  7. 제1항에 있어서, 상기 데이터 요소 각각은 데이터 페이지를 포함하는 것인 방법.
  8. 제7항에 있어서, 상기 차이 저장 공간은 적어도 하나의 스파스 파일(sparse file)을 포함하는 것인 방법.
  9. 제8항에 있어서, 상기 수정 각각을 상기 차이 저장 공간에 저장하는 상기 단계는 상기 스파스 파일 중 하나 내에 메모리 영역을 할당하는 단계를 포함하는 것인 방법.
  10. 제9항에 있어서, 상기 데이터 요소 각각은 데이터 페이지를 포함하고,
    상기 데이터베이스 뷰는 페이지 테이블을 더 포함하며,
    상기 페이지 테이블은, 각각의 페이지에 대해,
    상기 페이지가 상기 차이 저장 공간에 저장되어 있는지 여부를 나타내는 제1 저장 데이터, 및
    상기 영역이 상기 차이 저장 공간 내에 할당되어 있는지 여부를 나타내는 제2 저장 데이터를 포함하는 것인 방법.
  11. 제10항에 있어서, 상기 방법은,
    상기 페이지 테이블이 무효한 것임을 검출하는 단계,
    상기 스파스 파일 내의 각 영역에 대해, 상기 영역이 할당되어 있는지 여부를 결정하는 단계, 및
    상기 스파스 파일 내의 각 영역에 대해, 상기 영역이 할당되어 있는지 여부에 기초하여 상기 제2 저장 데이터를 설정하는 단계를 더 포함하는 것인 방법.
  12. 제10항에 있어서, 데이터가 상기 차이 저장 공간 내의 특정 페이지에 저장되어 있는지 여부의 결정은,
    상기 제1 저장 데이터를 검사하고, 상기 제1 저장 데이터가 상기 특정 페이지가 상기 차이 저장 공간에 저장되어 있음을 나타내는 경우, 데이터가 상기 차이 저장 공간 내의 상기 특정 페이지에 저장되어 있는 것으로 결정하는 단계,
    상기 제2 저장 데이터를 검사하고, 상기 제2 저장 데이터가 상기 영역이 상기 차이 저장 공간 내에 할당되어 있지 않음을 나타내는 경우, 데이터가 상기 차이 저장 공간 내의 상기 특정 페이지에 저장되어 있지 않은 것으로 결정하는 단계, 및
    상기 제1 저장 데이터가 상기 페이지가 상기 차이 저장 공간에 저장되어 있음을 나타내지 않고 또 상기 제2 저장 데이터가 상기 영역이 상기 차이 저장 공간 내에 할당되어 있지 않음을 나타내지 않는 경우, 상기 특정 페이지에 대한 상기 차이 저장 공간의 대응하는 구역으로부터 페이지 데이터를 판독하고 상기 대응하는 구역으로부터의 상기 페이지 데이터가 유효한지를 결정하는 단계를 포함하는 것인방법.
  13. 제7항에 있어서, 상기 데이터베이스 뷰는 페이지 테이블을 더 포함하고,
    상기 페이지 테이블은, 각 페이지에 대해, 상기 페이지가 상기 차이 저장 공간에 저장되어 있는지 여부를 나타내는 제1 저장 데이터를 포함하는 것인 방법.
  14. 제13항에 있어서, 데이터가 상기 차이 저장 공간 내의 특정 페이지에 저장되어 있는지 여부의 결정은,
    상기 제1 저장 데이터를 검사하고, 상기 제1 저장 데이터가 상기 특정 페이지가 상기 차이 저장 공간에 저장되어 있음을 나타내는 경우, 데이터가 상기 차이 저장 공간 내의 상기 특정 페이지에 저장되어 있는 것으로 결정하는 단계, 및
    상기 제1 저장 데이터가 상기 특정 페이지가 상기 차이 저장 공간에 저장되어 있음을 나타내지 않는 경우, 상기 특정 페이지에 대한 상기 차이 저장 공간의 대응하는 구역으로부터 페이지 데이터를 판독하고 상기 대응하는 구역으로부터의 상기 페이지 데이터가 유효한지를 결정하는 단계를 포함하는 것인 방법.
  15. 제1항에 있어서, 상기 데이터베이스 뷰 내의 특정의 데이터 요소에 대한 요청을 접수하는 단계,
    데이터가 상기 차이 저장 공간 내의 상기 특정의 데이터 요소에 대응하는 위치에 저장되어 있는지를 결정하는 단계,
    데이터가 상기 차이 저장 공간 내의 상기 특정의 데이터 요소에 대응하는 위치에 저장되어 있는 경우 상기 차이 저장 공간을 판독함으로써 상기 요청에 응답하는 단계, 및
    데이터가 상기 차이 저장 공간 내의 상기 특정의 데이터 요소에 대응하는 위치에 저장되어 있는 경우 상기 데이터베이스를 판독함으로써 상기 요청에 응답하는 단계를 더 포함하는 방법.
  16. 제15항에 있어서, 데이터가 상기 차이 저장 공간 내의 상기 특정의 데이터 요소에 대응하는 위치에 저장되어 있는지를 결정하는 상기 단계는 상기 차이 저장 공간이 상기 위치에 유효한 데이터를 포함하고 있는지를 결정하는 단계를 포함하는 것인 방법.
  17. 제15항에 있어서, 데이터가 상기 차이 저장 공간 내의 상기 특정의 데이터 요소에 대응하는 위치에 저장되어 있는지를 결정하는 상기 단계는 페이지 테이블을 조회하는 단계를 포함하는 것인 방법.
  18. 제1항에 있어서, 상기 방법은,
    상기 데이터베이스에 행해진 수정이 제1 특정의 값을 제2 특정의 데이터 요소 대신에 상기 데이터베이스 내의 장소에 저장하는 것을 검출하는 단계,
    상기 데이터베이스 뷰 내의 대응하는 위치가 유효한 데이터를 포함하고 있는지를 결정하는 단계, 및
    상기 데이터베이스 뷰 내의 상기 대응하는 위치가 유효한 데이터를 포함하고 있지 않은 경우, 상기 제2 특정의 데이터 요소를 상기 대응하는 위치에 기록하는 단계를 더 포함하는 것인 방법.
  19. 제1항에 기재된 방법을 수행하기 위한, 오퍼레이팅 시스템, 복수의 컴퓨터 실행가능 명령어를 저장하고 있는 컴퓨터 판독가능 매체, 코프로세싱 장치, 컴퓨팅 장치, 및 컴퓨터 실행가능 명령어를 전달하는 변조된 데이터 신호 중 적어도 하나.
  20. 특정 시점에서의 데이터베이스의 내용을 반영하는 트랜잭션 일관성있는 데이터를 포함하는 데이터베이스 뷰를 제공하는 시스템으로서,
    상기 데이터베이스는 데이터 요소를 포함하고 트랜잭션 로그와 관련되어 있으며, 상기 트랜잭션 로그는 활성 트랜잭션과 비활성 트랜잭션을 포함하고,
    상기 시스템은,
    상기 시점에 대응하는 상기 트랜잭션 로그 상에서의 분리점을 결정하는 분리점 결정기(split point determiner),
    상기 데이터베이스에 대해 수정을 수행하는 상기 트랜잭션 로그 상에서의 상기 분리점 이전의 각각의 트랜잭션을 찾아내는 제1 트랜잭션 로그 분석기,
    상기 수정 각각을 저장하는 차이 저장 공간,
    상기 트랜잭션 로그 상에서의 상기 분리점 이전의 각각의 활성 트랜잭션을찾아내는 제2 트랜잭션 로그 분석기, 및
    상기 차이 저장 공간 내의 임의의 대응하는 수정을 취소하는 차이 저장 공간 수정기(difference storage modifier)를 포함하는 시스템.
  21. 제20항에 있어서, 상기 분리점 결정기는 로그 절단을 디스에이블시키는 로그 절단 디스에이블기(log truncation disabler)를 더 포함하는 것인 시스템.
  22. 제20항에 있어서, 상기 시스템은 특정의 데이터 요소가 상기 차이 저장 공간에 저장되어 있는지 여부를 나타내는 페이지 테이블을 더 포함하는 것인 시스템.
  23. 제22항에 있어서, 상기 페이지 테이블은 상기 특정의 데이터 요소가 상기 차이 저장 공간에 저장되어 있는지 여부를 나타내는 제1 저장 데이터를 포함하는 것인 시스템.
  24. 제23항에 있어서, 상기 차이 저장 공간은 스파스 파일을 포함하고,
    상기 페이지 테이블은 상기 특정의 데이터 요소에 대응하는 영역이 상기 차이 저장 공간 내에 할당되어 있는지 여부를 나타내는 제2 저장 데이터를 더 포함하는 것인 시스템.
  25. 제24항에 있어서, 상기 시스템은,
    상기 스파스 파일 내의 각 영역에 대해, 상기 영역이 할당되어 있는지 여부를 결정하는 영역 할당 결정기(region allocation determiner), 및
    상기 스파스 파일 내의 각 영역에 대해, 상기 영역이 할당되어 있는지 여부에 기초하여 상기 제2 저장 데이터를 설정하는 제2 저장 데이터 설정기(second stored data setter)를 더 포함하는 것인 시스템.
  26. 제20항에 있어서, 상기 데이터베이스 뷰 내의 특정의 데이터 요소에 대한 요청을 접수하고, 데이터가 상기 차이 저장 공간 내의 상기 특정의 데이터 요소에 대응하는 위치에 저장되어 있는지를 결정하며, 데이터가 상기 차이 저장 공간 내의 상기 특정의 데이터 요소에 대응하는 위치에 저장되어 있는 경우 상기 차이 저장 공간을 판독함으로써 상기 요청에 응답하고, 데이터가 상기 차이 저장 공간 내의 상기 특정의 데이터 요소에 대응하는 위치에 저장되어 있는 경우 상기 데이터베이스를 판독함으로써 상기 요청에 응답하는 요청 응답기(request responder)를 더 포함하는 시스템.
  27. 특정 시점에서의 데이터베이스의 내용을 반영하는 트랜잭션 일관성있는 데이터를 포함하는 데이터베이스 뷰를 제공하는 컴퓨터 판독가능 매체로서,
    상기 데이터베이스는 데이터 요소를 포함하고 트랜잭션 로그와 관련되어 있으며, 상기 트랜잭션 로그는 활성 트랜잭션과 비활성 트랜잭션을 포함하고, 상기 데이터베이스 뷰는 상기 데이터베이스로부터의 상기 데이터 요소 중의 적어도 하나의 이전 버전을 저장하기 위한 차이 저장 공간을 포함하며,
    상기 컴퓨터 판독가능 매체는,
    상기 시점에 대응하는 상기 트랜잭션 로그 상에서의 분리점을 결정하는 단계,
    상기 데이터베이스에 대해 수정을 수행하는 상기 트랜잭션 로그 상에서의 상기 분리점 이전의 각각의 트랜잭션을 찾아내는 단계,
    상기 수정 각각을 상기 차이 저장 공간에 저장하는 단계,
    상기 트랜잭션 로그 상에서의 상기 분리점 이전의 각각의 활성 트랜잭션을 찾아내는 단계, 및
    상기 차이 저장 공간 내의 임의의 대응하는 수정을 취소하는 단계를 포함하는 방법을 수행하는 명령어를 포함하는 것인 컴퓨터 판독가능 매체.
  28. 제27항에 있어서, 상기 방법은 상기 차이 저장 공간을 초기화하는 단계를 더 포함하는 컴퓨터 판독가능 매체.
  29. 제27항에 있어서, 상기 시점에 대응하는 상기 트랜잭션 로그 상에서의 분리점을 결정하는 상기 단계는 로그 절단을 디스에이블하는 단계를 더 포함하는 것인 컴퓨터 판독가능 매체.
  30. 제27항에 있어서, 상기 데이터베이스 뷰는 페이지 테이블을 더 포함하고,
    상기 방법은 상기 페이지 테이블을 초기화하는 단계를 더 포함하는 것인 컴퓨터 판독가능 매체.
  31. 제27항에 있어서, 상기 차이 저장 공간 내의 임의의 대응하는 수정을 취소하는 상기 단계는 상기 대응하는 수정을 삭제하는 단계를 포함하는 것인 컴퓨터 판독가능 매체.
  32. 제27항에 있어서, 상기 차이 저장 공간 내의 임의의 대응하는 수정을 취소하는 상기 단계는,
    상기 데이터베이스 내의 대응하는 미수정된 데이터를 판독하는 단계, 및
    상기 대응하는 미수정된 데이터를 상기 차이 저장 공간에 기록하는 단계를 포함하는 것인 컴퓨터 판독가능 매체.
  33. 제27항에 있어서, 상기 데이터 요소 각각은 데이터 페이지를 포함하는 것인 방법.
  34. 제33항에 있어서, 상기 차이 저장 공간은 적어도 하나의 스파스 파일을 포함하는 것인 컴퓨터 판독가능 매체.
  35. 제34항에 있어서, 상기 수정 각각을 상기 차이 저장 공간에 저장하는 상기단계는 상기 스파스 파일 중 하나 내에 메모리 영역을 할당하는 단계를 포함하는 것인 컴퓨터 판독가능 매체.
  36. 제35항에 있어서, 상기 데이터 요소 각각은 데이터 페이지를 포함하고,
    상기 데이터베이스 뷰는 페이지 테이블을 더 포함하며,
    상기 페이지 테이블은, 각각의 페이지에 대해,
    상기 페이지가 상기 차이 저장 공간에 저장되어 있는지 여부를 나타내는 제1 저장 데이터, 및
    상기 영역이 상기 차이 저장 공간 내에 할당되어 있는지 여부를 나타내는 제2 저장 데이터를 포함하는 것인 컴퓨터 판독가능 매체.
  37. 제36항에 있어서, 상기 방법은,
    상기 페이지 테이블이 무효한 것임을 검출하는 단계,
    상기 스파스 파일 내의 각 영역에 대해, 상기 영역이 할당되어 있는지 여부를 결정하는 단계, 및
    상기 스파스 파일 내의 각 영역에 대해, 상기 영역이 할당되어 있는지 여부에 기초하여 상기 제2 저장 데이터를 설정하는 단계를 더 포함하는 것인 컴퓨터 판독가능 매체.
  38. 제36항에 있어서, 데이터가 상기 차이 저장 공간 내의 특정 페이지에 저장되어 있는지 여부의 결정은,
    상기 제1 저장 데이터를 검사하고, 상기 제1 저장 데이터가 상기 특정 페이지가 상기 차이 저장 공간에 저장되어 있음을 나타내는 경우, 데이터가 상기 차이 저장 공간 내의 상기 특정 페이지에 저장되어 있는 것으로 결정하는 단계,
    상기 제2 저장 데이터를 검사하고, 상기 제2 저장 데이터가 상기 영역이 상기 차이 저장 공간 내에 할당되어 있지 않음을 나타내는 경우, 데이터가 상기 차이 저장 공간 내의 상기 특정 페이지에 저장되어 있지 않은 것으로 결정하는 단계, 및
    상기 제1 저장 데이터가 상기 페이지가 상기 차이 저장 공간에 저장되어 있음을 나타내지 않고 또 상기 제2 저장 데이터가 상기 영역이 상기 차이 저장 공간 내에 할당되어 있지 않음을 나타내지 않는 경우, 상기 특정 페이지에 대한 상기 차이 저장 공간의 대응하는 구역으로부터 페이지 데이터를 판독하고 상기 대응하는 구역으로부터의 상기 페이지 데이터가 유효한지를 결정하는 단계를 포함하는 것인 컴퓨터 판독가능 매체.
  39. 제33항에 있어서, 상기 데이터베이스 뷰는 페이지 테이블을 더 포함하고,
    상기 페이지 테이블은, 각 페이지에 대해, 상기 페이지가 상기 차이 저장 공간에 저장되어 있는지 여부를 나타내는 제1 저장 데이터를 포함하는 것인 컴퓨터 판독가능 매체.
  40. 제39항에 있어서, 데이터가 상기 차이 저장 공간 내의 특정 페이지에 저장되어 있는지 여부의 결정은,
    상기 제1 저장 데이터를 검사하고, 상기 제1 저장 데이터가 상기 특정 페이지가 상기 차이 저장 공간에 저장되어 있음을 나타내는 경우, 데이터가 상기 차이 저장 공간 내의 상기 특정 페이지에 저장되어 있는 것으로 결정하는 단계, 및
    상기 제1 저장 데이터가 상기 특정 페이지가 상기 차이 저장 공간에 저장되어 있음을 나타내지 않는 경우, 상기 특정 페이지에 대한 상기 차이 저장 공간의 대응하는 구역으로부터 페이지 데이터를 판독하고 상기 대응하는 구역으로부터의 상기 페이지 데이터가 유효한지를 결정하는 단계를 포함하는 것인 컴퓨터 판독가능 매체.
  41. 제27항에 있어서, 상기 방법은,
    상기 데이터베이스 뷰 내의 특정의 데이터 요소에 대한 요청을 접수하는 단계,
    데이터가 상기 차이 저장 공간 내의 상기 특정의 데이터 요소에 대응하는 위치에 저장되어 있는지를 결정하는 단계,
    데이터가 상기 차이 저장 공간 내의 상기 특정의 데이터 요소에 대응하는 위치에 저장되어 있는 경우 상기 차이 저장 공간을 판독함으로써 상기 요청에 응답하는 단계, 및
    데이터가 상기 차이 저장 공간 내의 상기 특정의 데이터 요소에 대응하는 위치에 저장되어 있는 경우 상기 데이터베이스를 판독함으로써 상기 요청에 응답하는단계를 더 포함하는 것인 컴퓨터 판독가능 매체.
  42. 제41항에 있어서, 데이터가 상기 차이 저장 공간 내의 상기 특정의 데이터 요소에 대응하는 위치에 저장되어 있는지를 결정하는 상기 단계는 상기 차이 저장 공간이 상기 위치에 유효한 데이터를 포함하고 있는지를 결정하는 단계를 포함하는 것인 컴퓨터 판독가능 매체.
  43. 제41항에 있어서, 데이터가 상기 차이 저장 공간 내의 상기 특정의 데이터 요소에 대응하는 위치에 저장되어 있는지를 결정하는 상기 단계는 페이지 테이블을 조회하는 단계를 포함하는 것인 컴퓨터 판독가능 매체.
  44. 제27항에 있어서, 상기 컴퓨터 판독가능 매체는,
    상기 데이터베이스에 행해진 수정이 제1 특정의 값을 제2 특정의 데이터 요소 대신에 상기 데이터베이스 내의 장소에 저장하는 것을 검출하는 단계,
    상기 데이터베이스 뷰 내의 대응하는 위치가 유효한 데이터를 포함하고 있는지를 결정하는 단계, 및
    상기 데이터베이스 뷰 내의 상기 대응하는 위치가 유효한 데이터를 포함하고 있지 않은 경우, 상기 제2 특정의 데이터 요소를 상기 대응하는 위치에 기록하는 단계를 수행하는 명령어를 더 포함하는 것인 컴퓨터 판독가능 매체.
KR1020040049531A 2003-06-30 2004-06-29 데이터베이스 뷰 제공 방법 및 컴퓨터 판독가능 기록 매체 KR101085767B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/611,774 US7395278B2 (en) 2003-06-30 2003-06-30 Transaction consistent copy-on-write database
US10/611,774 2003-06-30

Publications (2)

Publication Number Publication Date
KR20050002616A true KR20050002616A (ko) 2005-01-07
KR101085767B1 KR101085767B1 (ko) 2011-11-21

Family

ID=33541375

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040049531A KR101085767B1 (ko) 2003-06-30 2004-06-29 데이터베이스 뷰 제공 방법 및 컴퓨터 판독가능 기록 매체

Country Status (5)

Country Link
US (1) US7395278B2 (ko)
EP (1) EP1503290B1 (ko)
JP (1) JP4583087B2 (ko)
KR (1) KR101085767B1 (ko)
CN (1) CN100437568C (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11341115B2 (en) 2014-06-26 2022-05-24 Amazon Technologies, Inc. Multi-database log with multi-item transaction support

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7448048B1 (en) 2003-05-27 2008-11-04 International Business Machines Corporation Method for performing real-time analytics using a business rules engine on real-time heterogeneous materialized data views
US7523462B1 (en) * 2003-05-27 2009-04-21 International Business Machines Corporation Method for providing a real time view of heterogeneous enterprise data
US8095511B2 (en) * 2003-06-30 2012-01-10 Microsoft Corporation Database data recovery system and method
US7672964B1 (en) * 2003-12-31 2010-03-02 International Business Machines Corporation Method and system for dynamically initializing a view for a streaming data base system
US7831639B1 (en) * 2004-12-22 2010-11-09 Symantec Operating Corporation System and method for providing data protection by using sparse files to represent images of data stored in block devices
CN100369038C (zh) * 2005-02-24 2008-02-13 中兴通讯股份有限公司 一种实时数据库事务操作的实现方法
US20060218204A1 (en) * 2005-03-25 2006-09-28 International Business Machines Corporation Log stream validation in log shipping data replication systems
US7487386B2 (en) * 2005-03-30 2009-02-03 International Business Machines Corporation Method for increasing file system availability via block replication
US7440979B2 (en) * 2005-03-30 2008-10-21 Sap Ag Snapshots for instant backup in a database management system
EP1952283A4 (en) * 2005-10-28 2010-01-06 Goldengate Software Inc DEVICE AND METHOD FOR GENERATING A REAL-TIME DATABASE DUPLICATE
US8095750B2 (en) * 2007-05-14 2012-01-10 International Business Machines Corporation Transactional memory system with fast processing of common conflicts
US8095741B2 (en) * 2007-05-14 2012-01-10 International Business Machines Corporation Transactional memory computing system with support for chained transactions
US8688920B2 (en) * 2007-05-14 2014-04-01 International Business Machines Corporation Computing system with guest code support of transactional memory
US8321637B2 (en) * 2007-05-14 2012-11-27 International Business Machines Corporation Computing system with optimized support for transactional memory
US9009452B2 (en) * 2007-05-14 2015-04-14 International Business Machines Corporation Computing system with transactional memory using millicode assists
US8117403B2 (en) * 2007-05-14 2012-02-14 International Business Machines Corporation Transactional memory system which employs thread assists using address history tables
US7792784B2 (en) * 2007-05-31 2010-09-07 International Business Machines Corporation Streaming multidimensional data by bypassing multidimensional query processor
US8196123B2 (en) * 2007-06-26 2012-06-05 Microsoft Corporation Object model for transactional memory
US7962703B1 (en) * 2007-08-08 2011-06-14 Symantec Corporation Techniques for improving dirty page logging
JP4810548B2 (ja) * 2008-02-07 2011-11-09 株式会社東芝 サーバ装置、更新画像検出方法およびプログラム
US8566524B2 (en) * 2009-08-31 2013-10-22 International Business Machines Corporation Transactional memory system with efficient cache support
US20110082832A1 (en) * 2009-10-05 2011-04-07 Ramkumar Vadali Parallelized backup and restore process and system
US8793288B2 (en) * 2009-12-16 2014-07-29 Sap Ag Online access to database snapshots
CN102024052B (zh) * 2010-12-17 2013-03-13 北京握奇数据系统有限公司 一种数据存储系统事务的实现方法和装置
US9110847B2 (en) 2013-06-24 2015-08-18 Sap Se N to M host system copy
CN103744936B (zh) 2013-12-31 2017-02-08 华为技术有限公司 一种数据库中的多版本并发控制方法及数据库系统
KR101805561B1 (ko) 2014-01-02 2017-12-07 후아웨이 테크놀러지 컴퍼니 리미티드 데이터베이스 시스템에서 온라인 분석 처리를 위한 데이터를 유지하는 방법 및 장치
US20150234841A1 (en) * 2014-02-20 2015-08-20 Futurewei Technologies, Inc. System and Method for an Efficient Database Storage Model Based on Sparse Files
US9558078B2 (en) 2014-10-28 2017-01-31 Microsoft Technology Licensing, Llc Point in time database restore from storage snapshots
WO2018118040A1 (en) 2016-12-21 2018-06-28 Hewlett-Packard Development Company, L.P. Persistent memory updating

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5043871A (en) * 1986-03-26 1991-08-27 Hitachi, Ltd. Method and apparatus for database update/recovery
US4914569A (en) * 1987-10-30 1990-04-03 International Business Machines Corporation Method for concurrent record access, insertion, deletion and alteration using an index tree
JP2858795B2 (ja) * 1989-07-14 1999-02-17 株式会社日立製作所 実記憶割り当て方法
US5247672A (en) * 1990-02-15 1993-09-21 International Business Machines Corporation Transaction processing system and method with reduced locking
US5893117A (en) * 1990-08-17 1999-04-06 Texas Instruments Incorporated Time-stamped database transaction and version management system
US5317731A (en) * 1991-02-25 1994-05-31 International Business Machines Corporation Intelligent page store for concurrent and consistent access to a database by a transaction processor and a query processor
US5613113A (en) * 1993-10-08 1997-03-18 International Business Machines Corporation Consistent recreation of events from activity logs
JP2894676B2 (ja) * 1994-03-21 1999-05-24 インターナショナル・ビジネス・マシーンズ・コーポレイション 非同期式遠隔コピー・システム及び非同期式遠隔コピー方法
US5806078A (en) * 1994-06-09 1998-09-08 Softool Corporation Version management system
US5832508A (en) * 1996-09-18 1998-11-03 Sybase, Inc. Method for deallocating a log in database systems
US6041423A (en) * 1996-11-08 2000-03-21 Oracle Corporation Method and apparatus for using undo/redo logging to perform asynchronous updates of parity and data pages in a redundant array data storage environment
SE510050C2 (sv) * 1997-07-21 1999-04-12 Ericsson Telefon Ab L M Metod för insamlande av logginformation vid förändring av databas
US6804766B1 (en) * 1997-11-12 2004-10-12 Hewlett-Packard Development Company, L.P. Method for managing pages of a designated memory object according to selected memory management policies
US6792432B1 (en) * 1998-03-31 2004-09-14 Sybase, Inc. Database system with methods providing high-concurrency access in B-Tree structures
US6243702B1 (en) * 1998-06-22 2001-06-05 Oracle Corporation Method and apparatus for propagating commit times between a plurality of database servers
SE521433C2 (sv) * 1998-07-22 2003-11-04 Ericsson Telefon Ab L M En metod för hantering av risken för en total låsning mellan samtidiga transaktioner i en databas
US6449623B1 (en) * 1998-09-04 2002-09-10 Lucent Technologies Inc, Method and apparatus for detecting and recovering from data corruption of a database via read logging
US6363387B1 (en) * 1998-10-20 2002-03-26 Sybase, Inc. Database system providing methodology for enhancing concurrency using row update bit and deferred locking
US6581205B1 (en) * 1998-12-17 2003-06-17 International Business Machines Corporation Intelligent compilation of materialized view maintenance for query processing systems
US6477544B1 (en) * 1999-07-16 2002-11-05 Microsoft Corporation Single instance store for file systems
CA2281287C (en) * 1999-09-01 2003-03-11 Ibm Canada Limited-Ibm Canada Limitee Method and system for efficiently searching for free space in a table of a relational database having a clustering index
US6473775B1 (en) * 2000-02-16 2002-10-29 Microsoft Corporation System and method for growing differential file on a base volume of a snapshot
US7072916B1 (en) * 2000-08-18 2006-07-04 Network Appliance, Inc. Instant snapshot
US6631374B1 (en) * 2000-09-29 2003-10-07 Oracle Corp. System and method for providing fine-grained temporal database access
US6668262B1 (en) * 2000-11-09 2003-12-23 Cisco Technology, Inc. Methods and apparatus for modifying a database
US20040199549A1 (en) * 2001-06-25 2004-10-07 Kenneth Oksanen Method and system for performing concurrency control in a relational database
US6898608B2 (en) * 2002-04-26 2005-05-24 Oracle International Corporation Techniques for managing what-if analysis of data managed by a relational database system
US6957362B2 (en) * 2002-08-06 2005-10-18 Emc Corporation Instantaneous restoration of a production copy from a snapshot copy in a data storage system
US6792518B2 (en) * 2002-08-06 2004-09-14 Emc Corporation Data storage system having mata bit maps for indicating whether data blocks are invalid in snapshot copies
US6934822B2 (en) * 2002-08-06 2005-08-23 Emc Corporation Organization of multiple snapshot copies in a data storage system
US7191304B1 (en) * 2002-09-06 2007-03-13 3Pardata, Inc. Efficient and reliable virtual volume mapping
US6976022B2 (en) * 2002-09-16 2005-12-13 Oracle International Corporation Method and mechanism for batch processing transaction logging records
JP4292882B2 (ja) * 2003-03-18 2009-07-08 株式会社日立製作所 複数のスナップショット維持方法及びサーバ装置及びストレージ装置
US7035881B2 (en) * 2003-09-23 2006-04-25 Emc Corporation Organization of read-write snapshot copies in a data storage system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11341115B2 (en) 2014-06-26 2022-05-24 Amazon Technologies, Inc. Multi-database log with multi-item transaction support

Also Published As

Publication number Publication date
CN100437568C (zh) 2008-11-26
EP1503290B1 (en) 2018-08-29
KR101085767B1 (ko) 2011-11-21
JP4583087B2 (ja) 2010-11-17
US7395278B2 (en) 2008-07-01
JP2005025750A (ja) 2005-01-27
US20040267828A1 (en) 2004-12-30
EP1503290A3 (en) 2011-01-19
EP1503290A2 (en) 2005-02-02
CN1577334A (zh) 2005-02-09

Similar Documents

Publication Publication Date Title
KR101085767B1 (ko) 데이터베이스 뷰 제공 방법 및 컴퓨터 판독가능 기록 매체
US7440966B2 (en) Method and apparatus for file system snapshot persistence
US8533189B2 (en) Method and system for synthetic backup and restore
KR101014089B1 (ko) 데이터베이스 백업의 일관성 검사를 위한 시스템 및 방법
US8527462B1 (en) Database point-in-time restore and as-of query
US8768890B2 (en) Delaying database writes for database consistency
JP4960963B2 (ja) データベースミラーからのオンラインページリストア
US8250035B1 (en) Methods and apparatus for creating a branch file in a file system
US20060123211A1 (en) Method for optimizing a snapshot operation on a file basis
JP4419884B2 (ja) データ複製装置、方法及びプログラム並びに記憶システム
US20180203606A1 (en) Method and device for writing data and acquiring data in a distributed storage system
US20040030951A1 (en) Instantaneous restoration of a production copy from a snapshot copy in a data storage system
US8117160B1 (en) Methods and apparatus for creating point in time copies in a file system using reference counts
US10459807B2 (en) Determining modified portions of a RAID storage array
US9804926B1 (en) Cataloging file system-level changes to a source storage between image backups of the source storage
EP3405871B1 (en) Versioned records management using restart era
US20200142784A1 (en) Method, device and computer program product for recovering metadata
RU2406118C2 (ru) Способ и система для синтетического резервного копирования и восстановления данных

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151016

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161019

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20171018

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20181018

Year of fee payment: 8