KR101066783B1 - 새도우 페이징을 위한 데이터베이스에 액세스하는 방법, 컴퓨터 판독가능 저장 매체, 및 데이터베이스에 액세스하는 시스템 - Google Patents

새도우 페이징을 위한 데이터베이스에 액세스하는 방법, 컴퓨터 판독가능 저장 매체, 및 데이터베이스에 액세스하는 시스템 Download PDF

Info

Publication number
KR101066783B1
KR101066783B1 KR1020040038694A KR20040038694A KR101066783B1 KR 101066783 B1 KR101066783 B1 KR 101066783B1 KR 1020040038694 A KR1020040038694 A KR 1020040038694A KR 20040038694 A KR20040038694 A KR 20040038694A KR 101066783 B1 KR101066783 B1 KR 101066783B1
Authority
KR
South Korea
Prior art keywords
page
database
shadow
contents
maintenance
Prior art date
Application number
KR1020040038694A
Other languages
English (en)
Other versions
KR20040103470A (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 KR20040103470A publication Critical patent/KR20040103470A/ko
Application granted granted Critical
Publication of KR101066783B1 publication Critical patent/KR101066783B1/ko

Links

Images

Classifications

    • 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/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Landscapes

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

Abstract

새도우 페이징은 원자적이며 내구적인 트랜잭션을 실현하는데 사용되는 기술이고, 데이터베이스의 페이지를 조작할 수 있는 기능을 제공한다. 트랜잭션 동안, 트랜잭션에 의해 영향을 받는 페이지는 데이터베이스 파일로부터, 휘발성 메모리와 같은 작업공간으로 복사되어, 그 작업공간에서 수정된다. 트랜잭션이 커미트될 때, 트랜잭션에 의해 수정된 모든 페이지는 작업공간으로부터 데이터베이스 파일의 미사용 페이지에 기입된다. 트랜잭션이 실행되는 동안, 데이터베이스 파일은 여전히, 수정된 페이지가 작업공간으로 복사되기 전에 존재했던, 수정된 페이지의 원래 버전을 보유하기 때문에, 사용자에게 노출되는 데이터베이스의 상태는 데이터베이스가 트랜잭션 이전에 존재했던 상태이다. 트랜잭션이 완결되기 전이나 장애의 복구시에 사용자가 데이터베이스에 액세스하면, 트랜잭션이 발생하지 않은 것처럼 나타나게 된다.
Figure R1020040038694
새도우 페이징, 데이터베이스, 트랜잭션, 커미트

Description

새도우 페이징을 위한 데이터베이스에 액세스하는 방법, 컴퓨터 판독가능 저장 매체, 및 데이터베이스에 액세스하는 시스템{SHADOW PAGING}
도 1은 본 발명의 예시적 실시예에 따라서, 새도우 페이징을 수행하는데 사용되는 메모리 페이지 구조의 도면.
도 2는 본 발명의 예시적 실시예에 따라서, 사용자 데이터 페이지의 물리적 위치에 매핑된 논리적 ID를 나타내는 매핑 테이블 페이지 부분의 도면.
도 3은 본 발명의 예시적 실시예에 따라서, 매핑 테이블 페이지의 물리적 위치에 매핑된 논리적 ID를 나타내는 디렉토리 페이지 부분의 도면.
도 4는 본 발명의 예시적 실시예에 따라서, 디렉토리 페이지의 물리적 위치에 매핑된 논리적 ID를 나타내는 데이터베이스 헤더 페이지 부분의 도면.
도 5 내지 도 7은 본 발명의 예시적 실시예에 따라서, 새도우 페이징을 수행하는 프로세스의 흐름도.
도 8 내지 도 13은 본 발명의 예시적 실시예에 따라서, 새도우 페이징을 이용하는 트랜잭션을 커미트하는 일례를 도시하는 도면.
도 14는 본 발명의 예시적 실시예에 따라서, 새도우 페이징을 수행하는 시스템의 블록도.
도 15는 본 발명의 예시적 실시예에 따른 새도우 페이징용 방법 및 시스템이 구현될 수 있는 적합한 컴퓨팅 시스템 환경의 일례를 도시하는 도면.
<도면의 주요 부분에 대한 부호의 설명>
12 : 데이터베이스 헤더 페이지
13 : 논리적 ID
14 : 디렉토리 페이지
15 : 사용자 데이터 페이지의 물리적 위치
16 : 매핑 테이블 페이지
18 : 사용자 데이터 페이지
19 : 논리적 ID
21 : 매핑 테이블 페이지의 물리적 위치
25 : 논리적 ID
27 : 디렉토리 데이터 페이지의 물리적 위치
본 발명은 일반적으로 메모리의 이용에 관한 것으로, 보다 구체적으로는, 데이터베이스에서의 트랜잭션을 커미트하는 것에 관한 것이다.
최근에는 데이터베이스 및 데이터베이스 제품이 널리 사용되고 있다. 이동식 데이터베이스 제품에 대한 수요가 증가하고 있다. 이동식 데이터베이스 제품들은 그들의 작은 사이즈와 이식성(portability) 때문에 인기가 있다. 그러나, 이동식 데이터베이스 제품들은 한정된 메모리를 가진다. 데이터베이스 제품의 바람직 한 특징으로는 원자적이고 내구적인 트랜잭션(atomic and durable transactions)을 수행할 수 있는 기능을 들 수 있다. 원자적 트랜잭션은 부분적으로 커미트되지 않는, 즉, 완전히 수행되거나 전혀 수행되지 않는 트랜잭션이다. 내구적 트랜잭션은 데이터베이스의 상태 변화가 영구적인 트랜잭션이다. 데이터베이스의 바람직한 다른 특징으로는 전원 공급 중단, 디스크 파손 등과 같은 장애로부터 복구될 수 있는 기능을 들 수 있다. 원자적이고 내구적인 트랜잭션을 수행하며 안정된 데이터베이스 복구를 제공하는 현재의 시스템들은 복잡해지는 경향이 있으며 대량의 메모리를 요한다. 복잡한, 메모리 집약적 프로세스는, 이동식 데이터베이스 제품과 같이, 한정된 양의 메모리를 가진 제품에 부적당하다.
원자적이고 내구적인 트랜잭션을 수행하며, 예상치 못한 장애로부터 안정적으로 복구될 수 있는 수단을 한정된 양의 메모리를 가진 장치에 제공하는 기술이 필요하다.
본 발명은, 예상치 못한 장애의 해로운 영향을 완화하면서, 데이터베이스에 액세스하는 기술을 제공한다. 이 기술은 비교적 적은 소프트웨어 코드를 사용하므로, 핸드헬드 장치 및/또는 이동식 데이터베이스 제품(예를 들어, SQL-CE)과 같이, 한정된 양의 메모리 또는 한정된 속도를 가진 전자 장치에 특히 적합하다. 본 발명은 원자적 트랜잭션이 완결될 때까지 데이터베이스의 현재 상태를 유지하는 효율적인 수단을 제공하기 위해 새도우 페이징을 사용하며, 그에 따라, 트랜잭션이 커미트되는 동안 시스템 장애가 발생할 경우 트랜잭션을 복구할 수 있다. 트랜잭션 이 완결되면, 데이터베이스의 새로운 상태를 사용할 수 있다.
트랜잭션 동안, 트랜잭션에 의해 영향을 받는 페이지들은 데이터베이스 파일로부터, 휘발성 메모리와 같은, 작업공간으로 복사되며 그 작업공간에서 수정된다. 트랜잭션이 커미트될 때, 트랜잭션에 의해 수정된 모든 페이지들은 작업공간으로부터 데이터베이스 파일의 미사용 페이지들에 기입된다. 데이터베이스 파일은 여전히, 수정된 페이지들이 작업공간에 복사되기 전에 존재했던, 복사된 페이지들의 원래의 버전(original versions)을 포함하기 때문에, 트랜잭션이 실행되는 동안, 사용자에게 노출되는 데이터베이스 상태는 데이터베이스가 트랜잭션 이전에 존재했던 상태이다. 따라서, 사용자가 트랜잭션이 완결되기 전에 데이터베이스에 액세스한다면, 사용자에게는 마치 트랜잭션이 발생하지 않은 것처럼 보인다. 또한, 트랜잭션이 실행되는 동안 장애가 발생하면, 복구시에, 시스템은 트랜잭션이 시작되기 이전의 상태에 있게 된다. 예를 들어, 장애(예를 들어, 디스크 장애, 전력 손실, 기계 파손)가 페이지를 데이터베이스에 기입하는 도중에 발생한다면, 데이터베이스는 여전히 일관된 상태에 있다.
새도우 페이징을 수행하는 예시적 방법에서, 데이터베이스 파일의 선택된 페이지의 내용은 (제1 새도우 페이지라 하는) 데이터베이스 파일의 미사용 페이지에 저장된다. 제1 새도우 페이지는 사용된 페이지로 선언된다. 데이터베이스 파일에서의 페이지 위치를 유지하기 위한 유지 페이지(maintenance pages;데이터베이스 헤더 페이지, 디렉토리 페이지, 매핑 테이블 페이지)는 데이터베이스 파일에서의 제1 새도우 페이지 위치를 반영하도록 업데이트되고, 선택된 페이지들의 위치는 유지된다. 유지 페이지의 일부(디렉토리 페이지, 매핑 테이블 페이지)의 내용이 데이터베이스 파일의 (제2 새도우 페이지라 하는) 미사용 페이지에 저장된다. 제2 새도우 페이지는 사용된 페이지로 선언된다. 그 다음, 제1 새도우 페이지 및 제2 새도우 페이지의 내용이 지속성 메모리(persistent memory)에 저장된다. 유지 페이지의 다른 부분(데이터베이스 헤더 페이지)의 내용이 지속성 메모리에 저장되며, 제1 새도우 페이지 및 제2 새도우 페이지의 내용은 지속성 메모리에 다시 저장된다.
이 방법을 구현하기 위한 시스템은 데이터베이스 파일, 지속성 메모리, 컨트롤러, 및 페이지 할당 표시자를 포함한다. 컨트롤러는 데이터베이스 파일에서의 페이지 위치를 유지하기 위한 유지 페이지를 생성하며 데이터베이스 파일의 선택된 페이지 내용을 제1 새도우 페이지에 저장한다. 컨트롤러는 선택된 페이지의 위치를 유지하면서 제1 새도우 페이지의 위치를 반영하도록 유지 페이지를 업데이트하며 유지 페이지의 제1 부분의 내용을 제2 새도우 페이지에 저장한다. 또한, 컨트롤러는 제1 새도우 페이지 및 제2 새도우 페이지의 내용을 지속성 메모리에 저장하고, 유지 페이지의 제2 부분의 내용을 지속성 메모리에 저장하며, 제1 새도우 페이지 및 제2 새도우 페이지의 내용을 지속성 메모리에 다시 저장한다. 페이지 할당 표시자는 선택된 페이지가 제1 새도우 페이지에 저장되는 것에 응답하여 제1 새도우 페이지가 사용된 페이지인 것을 표시하며 제1 부분의 내용이 제2 새도우 페이지에 저장되는 것에 응답하여 제2 새도우 페이지가 사용된 페이지인 것을 표시한다.
첨부된 도면과 관련하여 이하의 설명을 참조할 경우, 본 발명의 특징 및 이점들을 더 잘 이해할 수 있다.
예시적 실시예의 상세한 설명
여기에서 설명한 바와 같은 새도우 페이징은, 전원 장애, 디스크 파손, 및/또는 프로세서 장애와 같은, 예상치 못한 결함의 해로운 효과를 완화하면서, 데이터베이스 등의 메모리를 액세스하고 제어하는 기술을 제공한다. 이 기술은 비교적 구현이 용이하고 아주 적은 소프트웨어 코드를 이용하므로, 특히, 핸드헬드 장치, 및/또는 이동식 데이터베이스 제품(예를 들어, SQL-CE)과 같이, 메모리량이 한정된 전자 장치에 적합하다. 데이터베이스 제품의 중요한 특징으로는 원자적이고 내구적인 트랜잭션을 수행할 수 있는 기능을 들 수 있다. 원자적 트랜잭션은 부분적으로 커미트되지 않는, 즉, 완전히 수행되거나 전혀 수행되지 않는 트랜잭션이다. 내구적 트랜잭션은, 시스템이 트랜잭션의 수행 직후에 파손된다 하더라도 결과적인 데이터베이스의 트랜잭션 후 상태(resulting post-transaction state of the database)가 잔존한다는 점에서, 데이터베이스의 상태 변화가 영구적인 트랜잭션이다. 새도우 페이징은 원자적이고 내구적인 트랜잭션을 수행하기 위한 메커니즘을 제공한다.
도 1은 새도우 페이징이 수행될 수 있는 예시적 데이터베이스 구성의 도면이다. 예시적 실시예에서는, 도 1에 나타낸 구조를 가진 데이터베이스가 수정될 때 새도우 페이징이 이용될 수 있으며, 여기에서는 이러한 데이터베이스의 맥락에서 본 발명을 설명한다. 그러나, 여기에서 설명한 새도우 페이징이 데이터베이스 애 플리케이션에 한정되는 것은 아니며, 메모리 이용에 관련된 여러가지 다른 상황에서도 이용될 수 있다는 것을 알 수 있다.
도 1에 도시한 페이지들은 데이터베이스 파일의 페이지들인데, 여기에는 데이터베이스 헤더 페이지(12), 디렉토리 페이지(14), 하나 이상의 매핑 테이블 페이지(16), 및 하나 이상의 사용자 데이터 페이지(18)가 포함된다. 도 1에 도시한 데이터베이스 파일의 페이지들은 메모리 또는 저장 장치의 페이지들을 구비한다. 이러한 메모리 또는 저장 장치는 특정한 타입 또는 클래스의 메모리에 한정되지 않으며, 반도체 메모리, 자기 메모리(예를 들어, 디스크), 광학 메모리, 기계적 메모리, RAM(random access memory), 휘발성 메모리, 및 비휘발성 메모리, 또는 데이터를 저장할 수 있는 다른 타입의 장치를 포함할 수 있다. 이하의 설명에서, "메모리 페이지"라는 용어는 (RAM 또는 ROM과 같은) 종래의 "메모리" 장치에 한정되지 않으며, 모든 타입의 데이터 저장 장치를 포함한다는 것을 알 수 있다.
도 1에 나타낸 페이지 구조는 비교적 적은 양의 메모리를 이용하여 구현될 수 있다. 예를 들어, 페이지의 사이즈가 4096바이트이고 데이터베이스 파일의 최대 사이즈가 232바이트(4기가바이트)라면, 그에 따른 파일에서의 최대 페이지 수는 220개 페이지이다. 따라서, 매핑 테이블 페이지(16)는 최대 220개 엔트리(각 페이지당 하나의 엔트리)를 저장한다. 파일에서의 페이지의 물리적 위치가 바이트 오프셋을 사용해 식별된다면, 각 페이지를 나타내는데 32비트가 사용된다. 페이지의 오프셋을 페이지 사이즈의 증분으로서 저장하는 것에 의해, 이것은 페이지당 20비 트로 감소될 수 있다. 따라서, 매핑 테이블 페이지(16)는 (220)×20비트, 즉, 2,621,440바이트의 공간을 사용한다. 예시적 실시예에서, 매핑 테이블(16)은 한 세트의 페이지로서 데이터베이스 파일에 저장된다. 매핑 테이블 페이지가 4096바이트이고 페이지의 물리적 위치를 저장하는데 20비트가 사용된다면, 매핑 테이블 페이지당 최대 1638개 페이지가 참조될 수 있다. 따라서, 최대 220개 페이지를 참조하는데 최대 641개의 매핑 테이블 페이지가 이용될 수 있다. 통상적인 데이터베이스 파일은 4기가바이트보다 훨씬 작으므로, 더 적은 매핑 테이블 페이지를 사용할 것이다. 상술한 바와 같이, 디렉토리 페이지(14)는 (예를 들어, 매핑 테이블 페이지(16)가 수정되고 새로운 위치로 플러시될 때) 데이터베이스 파일에서 매핑 테이블 페이지(16)의 물리적 위치를 추적하는데 이용된다. 상기 예에 따르면, 디렉토리 페이지(14)는 데이터베이스 파일에서 매핑 테이블 페이지(16) 각각의 물리적 위치를 추적하는 20비트 엔트리를 가진다. 헤더 페이지(12), 디렉토리 페이지(14), 및 매핑 테이블 페이지(16)는, 사용자 데이터 페이지(18)의 수에 비해 비교적 적은 양의 디스크 공간(메모리)을 소비한다. 예를 들어, 1,047,933(220 - 643)개의 사용자 데이터 페이지(18)가 643개의 "유지 페이지(maintenance pages)"에 의해 유지될 수 있다. (여기에서 사용되는 바와 같이, "유지 페이지"는 사용자 데이터보다는 데이터베이스 시스템에 의해 사용되는 관리 데이터를 저장하는 페이지이다. 도 1의 예에서는, 헤더 페이지(12), 디렉토리 페이지(14), 및 매핑 테이블 페이지(16)가 "유지 페이지"이다.) 이로 인해, 유지 페이지는 총 데이터베이스 파일 공간의 0.06%만을 소비한다. 4096바이트 페이지 및 20비트 데이터 타입의 상술한 값들은 예시적인 것이다. 이와 같은 상술한 파일 구조의 구현은 20비트 데이터 타입을 더 작은 사이즈의 데이터 타입으로 감소시키기 위해 데이터 압축을 이용할 수 있다.
유지 페이지들은 도 1에 도시한 모든 페이지들의 위치를 유지한다. 데이터베이스 헤더 페이지(12)는 디렉토리 페이지(14)의 위치를 유지한다. 예시적 실시예에서, 디렉토리 페이지(14)의 물리적 어드레스는 데이터베이스 헤더 페이지(12)의 제1 섹터에 저장되고 데이터베이스 헤더 페이지(12)는 데이터베이스 파일의 스타트(start)에 저장된다. 후술하는 바와 같이, 이로 인해 트랜잭션이 원자적이라는 것이 보장된다. 디렉토리 페이지(14)는 매핑 테이블 페이지(16)의 위치를 유지한다. 매핑 테이블 페이지(16)는 사용자 데이터 페이지(18)의 위치를 유지한다. 사용자 데이터 페이지(18)는, 예를 들어, 레코드 및/또는 인덱스 키와 같은 데이터베이스 데이터를 포함할 수 있는 페이지이다. 이하에서 보다 상세히 설명하는 바와 같이, 도 1에 나타낸 메모리 페이지 구조는 새도우 페이징 동안에 메모리 페이지를 추적하고 유지하는데 사용된다.
도 1에 나타낸 구조로 인해 페이지는 "논리적" 식별자에 의해 식별될 수 있다. 통상적인 데이터베이스 제품은, 파일내 페이지의 물리적 어드레스를 나타내는 페이지 식별자를 이용한다. 예를 들어, 통상적인 데이터베이스 제품은 데이터베이스 파일의 논리적 시작(logical beginning)으로부터 참조되는 오프셋 값에 의해 소정 페이지를 식별할 수 있다. 페이지가 다른 페이지를 참조할 수 있기 때문에, 이 들 식별자는 데이터베이스 전체를 통해 다양한 장소에 빈번하게 나타날 수 있다. 따라서, 페이지를 식별하는 이러한 접근은, 하나 이상의 페이지가 이동될 때마다 이동된 페이지를 참조하는 페이지 식별자 모두를 업데이트하여 새로운 위치(예를 들어, 새로운 페이지 오프셋 값)를 반영해야 하기 때문에, 페이지를 파일의 일 위치로부터 다른 위치로 이동시키는 것을 어렵게 한다. 그러나, 도 1의 구조가 사용될 경우에는, 소정 페이지를 포인트하는 디렉토리 페이지와 매핑 테이블 페이지내의 요소(elements)에 기초하여, 소정 페이지를 식별할 수 있다. 예를 들어, 디렉토리 페이지로의 오프셋 및 매핑 테이블 페이지로의 오프셋에 의해 소정 페이지를 식별할 수 있으며, 그 다음, 소정 페이지는, (1) 특정한 매핑 테이블 페이지를 위치 지정하기 위한 디렉토리 페이지에서의 특정 오프셋에서 발견된 포인터를 추종하고, (2) 소정 페이지를 발견하기 위해 위치 지정된 매핑 테이블 페이지에서 발견된 포인터를 추종하는 것에 의해, 위치가 지정된다. 따라서, 페이지는, 단순히 디렉토리 페이지와 매핑 데이블의 적절한 엔트리를 업데이트하는 것에 의해, 논리적 식별자의 변경없이 데이터베이스 파일의 상이한 위치로 이동될 수 있다. 이 기술은 가상 메모리 시스템에서 어드레스 변환 테이블을 사용하는 것과 유사하다.
이하에서 보다 상세히 논의하는 바와 같이, 논리적 식별자의 사용은 새도우 페이징의 구현을 용이하게 하므로, 본 발명의 예시적 실시예에서, 데이터베이스 파일의 페이지는 논리적 식별자들(IDs)에 의해 식별된다. 데이터베이스 내에서, 페이지들은 논리적 ID를 통해 액세스되고 추적된다. 페이지들의 위치 또한 논리적 페이지 ID의 사용을 통해 유지된다. 도 2는 사용자 데이터 페이지(18)의 물리적 위치로 매핑된 논리적 ID(13)를 나타내는 매핑 테이블 페이지(16) 부분의 도면이다. (데이터베이스 파일에서의 페이지의 "물리적" 위치는 데이터베이스 파일(또는 임의 파일)의 각 페이지가 하위 파일 시스템에 의해 파일의 시작으로부터 어떤 오프셋을 갖는 것으로 정의되며, 이 오프셋은, 파일 시스템이 페이지의 실제 위치를 디스크상에서 재배열하는 경우라 하더라도 변하지 않는다는 사실을 의미한다는 것을 알 수 있다. 그러나, "물리적" 위치라는 용어가, 소정 페이지가 저장되어 있는 디스크상의 위치를 데이터베이스 관리 시스템이 반드시 인지하고 있어야 한다는 것을 의미하지는 않는다.) 논리적 페이지 ID(13)는 사용자 데이터 페이지(18)의 물리적 페이지 어드레스로 매핑된다. 이러한 매핑은 매핑 테이블(16)을 통해 실현된다. 매핑 테이블(16)은 데이터베이스 파일에 한 세트의 페이지로서 저장된다. 각각의 매핑 테이블(16)은 논리적 페이지 ID(13)를 개별적인 사용자 데이터 페이지(18)의 (위치라고도 하는) 물리적 페이지 어드레스(15)로 매핑하는 엔트리(11)를 구비한다. 사용자 데이터 페이지(18)의 물리적 위치가 변경될 때 (예를 들어, 데이터가 데이터베이스로 플러시될 때), 그에 대응되는 매핑 테이블(16)의 엔트리가 업데이트된다. 그러한 엔트리를 위해, 이동 중인 사용자 데이터 페이지(18)의 논리적 ID(13)는 변경되지 않지만, 사용자 데이터 페이지(18)가 이동되고 있는 곳의 물리적 어드레스가 매핑 테이블(16)의 엔트리(11)에 대한 물리적 위치 부분(15)에 입력된다.
데이터베이스 헤더 페이지(12) 및 디렉토리 페이지(14) 또한 논리적 ID를 물리적 어드레스로 매핑하는 엔트리를 보유한다. 데이터베이스 헤더 페이지(12)는 논리적 ID를 디렉토리 페이지(14)의 물리적 어드레스로 매핑하는 엔트리를 보유한다. 디렉토리 페이지(14)는 논리적 ID를 매핑 테이블(16)의 물리적 어드레스로 매핑하는 엔트리를 보유한다.
도 3은 매핑 테이블 페이지(16)의 물리적 위치(21)로 매핑된 논리적 ID(19)를 나타내는 디렉토리 페이지(14) 부분의 도면이다. 각각의 디렉토리 페이지(14)는 논리적 페이지 ID(19)를 개별적인 매핑 테이블 페이지(16)의 물리적 페이지 어드레스(21)로 매핑하는 엔트리(17)를 구비한다. 매핑 테이블 페이지(16)의 물리적 위치가 변경될 때 (예를 들어, 데이터가 데이터베이스로 플러시될 때), 그에 대응되는 디렉토리 테이블(14)의 엔트리가 업데이트된다. 그러한 엔트리를 위해, 이동 중인 매핑 테이블 페이지(16)의 논리적 ID(19)는 변경되지 않지만, 매핑 테이블 페이지(16)가 이동되고 있는 곳의 물리적 어드레스가 디렉토리 페이지(14)의 엔트리(17)에 대한 물리적 위치 부분(21)에 입력된다.
도 4는 디렉토리 페이지(14)의 물리적 위치(27)로 매핑된 논리적 ID(25)를 나타내는 데이터베이스 헤더 페이지(12) 부분의 도면이다. 데이터베이스 헤더 페이지(12)는 논리적 페이지 ID(25)를 디렉토리 페이지(14)의 물리적 페이지 어드레스(27)로 매핑하는 엔트리(23)를 구비한다. 디렉토리 페이지(14)의 물리적 위치가 변경될 때 (예를 들어, 데이터가 데이터베이스로 플러시될 때), 그에 대응되는 데이터베이스 헤더 페이지(12)의 엔트리가 업데이트된다. 그러한 엔트리를 위해, 이동 중인 데이터베이스 헤더 페이지(12)의 논리적 ID(25)는 변경되지 않지만, 디렉토리 페이지(14)가 이동되고 있는 곳의 물리적 어드레스가 데이터베이스 헤더 페이 지(12)의 엔트리(23)에 대한 물리적 위치 부분(27)에 입력된다.
예시적 실시예에서, 논리적 ID는, 논리적 ID가 참조하는 페이지의 타입(즉, 헤더, 디렉토리, 매핑 테이블, 또는 사용자 데이터 페이지)이 논리적 ID 참조로부터 유추될 수 있도록 할당된다. 예를 들어, 상술한 페이지 및 엔트리 사이즈를 이용하여, 0의 페이지 ID는 데이터베이스 헤더 페이지(12)를 의미할 수 있고, 1의 페이지 ID는 디렉토리 페이지(14)를 의미할 수 있으며, 2 내지 643의 페이지 ID는 매핑 테이블 페이지(16)를 의미할 수 있고, 644 이상의 페이지 ID는 사용자 데이터 페이지(18)를 의미할 수 있다. 논리적 ID는 임의의 적절한 방식으로 표시될 수 있다. 예시적 일 실시예에서는, 논리적 ID가 무부호의 20비트 값으로 표시될 수 있다. 하위 10비트는 대응되는 매핑 테이블 페이지(16)의 물리적 페이지 어드레스를 보유하는 디렉토리 페이지(14)의 엔트리에 대응된다. 상위 10비트는 대응되는 사용자 데이터 페이지(18)의 물리적 페이지 어드레스를 보유하는 적절한 매핑 테이블 페이지(16)의 엔트리에 대응된다.
논리적 ID는 임의의 적절한 방식으로 물리적 어드레스에 매핑될 수 있다. 논리적 ID를 물리적 어드레스에 매핑하는 예시적 기술을 아래의 표 1에 의사 코드(pseudo code) 형태로 나타낸다. 표 1에 나타낸 기술은 상술한 논리적 ID의 물리적 어드레스 할당을 사용한다.
Figure 112004023112300-pat00001
Figure 112004023112300-pat00002
Figure 112004023112300-pat00003
이하에서 보다 상세히 설명하는 바와 같이, 본 발명의 실시예에 따른 새도우 페이징은 페이지의 내용을 이용가능한 페이지에 기입하는 것과 관련이 있다. 이 프로세스 동안에, 일부 페이지는 사용해제되고 일부는 사용되게 된다. 이것을 실현하기 위해, 할당 표시자가 제공된다. 할당 표시자는 논리적 ID와 물리적 어드레스의 (이용가능하거나 이용불가능한) 상태를 표시한다. 상태를 표시하는 임의의 적절한 수단이 이용될 수 있다. 예시적 실시예에서는, 논리적 ID의 할당 상태를 표시하는데 비트맵이 사용된다. 논리적 ID의 할당 비트맵은 유지 페이지(매핑 테이블 페이지(16), 디렉토리 페이지(14), 및 데이터베이스 헤더 페이지(12))의 각 엔트리에 대해 하나의 비트를 보유한다. 예시적 실시예에서, 1로 설정된 비트는 대응되는 엔트리가 할당된 것(이용불가능한 것)을 표시한다. 0으로 설정된 비트는 대응되는 엔트리가 사용해제인 것(이용가능한 것)을 표시한다. 새도우 페이징 프로세스 동안, 0의 비트맵 값을 검색함으로써, 이용가능한 페이지의 위치를 지정할 수 있다. 발견된 페이지가 지금 할당된다는 것(이용불가능하다는 것)을 표시하기 위해, 대응되는 비트맵 엔트리가 1로 변경된다.
예시적 실시예에서, 논리적 ID의 할당 비트맵은 한 세트의 페이지로서 데이 터베이스 파일에 저장된다. 다른 실시예에서는, 비트맵이 데이터베이스 파일에 저장되지 않으며 데이터베이스가 개방(open)될 때 초기화된다. 매핑 테이블의 페이지 엔트리 모두를 열거하는 것(예를 들어, 데이터베이스 헤더 페이지(12), 디렉토리 페이지(14), 및 매핑 테이블 페이지(16)의 각 엔트리를 판독하는 것)에 의해, 초기화가 실현될 수 있다. 페이지 엔트리가 페이지의 유효한 물리적 어드레스를 보유하면, 그 페이지 엔트리에 대응되는 페이지 ID는 할당된 것으로 마킹된다. 모든 엔트리가 스캔되고 나면, 그 때의 비트맵이 페이지 ID의 현재 할당 상태를 표시한다.
이 할당 비트맵은 데이터베이스 파일에 저장될 수 있다. 예를 들어, 데이터베이스 파일의 최대 사이즈가 232바이트(4기가바이트)이고, 데이터베이스의 페이지 사이즈가 4096바이트라면, 그에 따라, 최대 220개의 논리적 페이지 ID가 필요하다. 따라서, 131,072바이트를 사용하여 논리적 페이지 ID의 할당 비트맵을 구현할 수 있다.
할당 비트맵을 이용함으로써 유지 페이지를 수정하거나 판독하지 않고 논리적 페이지 ID를 사용해제할 수 있으며 그리고/또는 논리적 페이지 ID를 할당할 수 있다. 이로 인해, 다수의 트랜잭션이 동시에 페이지 ID를 데이터베이스에 할당하고 사용해제할 수 있으므로, 병행성이 향상된다. 또한, 비트맵과 페이지 엔트리 모두가 데이터베이스 파일내에 보유되기 때문에, 할당 비트맵을 이용하는 것은 논리적 페이지 ID를 할당하고 사용해제하는 로버스트 메커니즘(robust mechanism)을 제공한다. 이 메커니즘은, 트랜잭션이 디스크로 플러시된 후, 사용해제인 물리적 페이지 어드레스(free physical page addresses)를 사용해제로 마크하고 할당된 물리적 페이지 어드레스를 할당된 것으로 마크한다는 점에서 로버스트이다. 이런 경우가 아니라 동작이 실패하면, 전체 플러시를 복귀시켜야 하지만, 업데이트된 디렉토리 페이지(및 매핑 테이블 페이지 등)의 새로운 물리적 어드레스를 가진 데이터베이스 헤더 페이지가 이미 플러시되었기 때문에, 이것은 아주 어려울 것이다.
페이지 엔트리를 스캐닝함으로써, 비트맵이 메모리에 판독되거나 계산되고 나면, 페이지를 할당하고 사용해제하는 것은, 할당/사용해제될 페이지에 대응되는 비트를 마주칠 때까지 비트맵의 비트 수를 카운트하는 것에 의해, 실현될 수 있다. 예를 들어, 상기 예에서 설명한 페이지 사이즈 및 데이터베이스 구조를 사용한다면, 비트맵에서 0으로 설정된, 비트 644 이상인 제1 비트를 찾는 것에 의해, 사용 데이터 페이지에 대응되는 페이지 ID가 할당될 수 있다. 상기 예에서 유지용 페이지에 대한 페이지 ID 모두는 644 미만으로 유지되기 때문에, 644라는 숫자가 선택된다. 논리적 페이지 ID를 사용해제하기 위해서는, 이 비트를 1에서 0으로 바꾸기만 하면 된다.
논리적 페이지 ID를 할당하고 사용해제하는 상기와 동일한 비트맵-타입 메커니즘이 물리적 페이지 어드레스를 할당하고 사용해제하는 데에도 적용될 수 있다. 이 경우, 비트맵은 데이터베이스 파일의 물리적 페이지 어드레스 각각에 대해 하나의 비트를 가진다. 예시적 실시예에서, 1로 설정된 비트는 물리적 페이지 어드레스가 할당된 것을 표시한다. 0으로 설정된 비트는 물리적 페이지 어드레스가 사용 해제인 것을 표시한다.
물리적 페이지 어드레스는 데이터베이스내의 페이지 위치이다. 트랜잭션이 커미트되고 페이지가 디스크상에 새도우될 때, 그리고 새도우 풀(shadow pool)의 더티 페이지(dirty page)가 대체될 때, 물리적 페이지 어드레스가 할당된다. 더티 페이지는 수정된 페이지이다. 여기에서 설명하는 새도우 페이징은 공백/미사용 페이지의 물리적 페이지 어드레스를 효율적으로 발견하는 기능을 제공한다. 예시적 실시예에서, 이러한 물리적 어드레스 할당 비트맵은 데이터베이스 파일에 저장된다. 상술한 바와 같이, 이러한 물리적 어드레스 할당 비트맵은 최대 131,072바이트 사이즈내에 구현될 수 있다. 또 다른 실시예에서는, 데이터베이스 헤더 페이지(12), 디렉토리 페이지(14), 및 매핑 테이블 페이지(16)를 스캐닝하는 것에 의해 데이터베이스가 개방될 때, 물리적 어드레스 할당 비트맵이 계산된다. 이 비트맵이 계산된다면, 논리적 페이지 ID의 비트맵이 계산되는 것도, 동일한 세트의 페이지가 스캐닝되기 때문에, 동시에 계산될 수 있다.
물리적 페이지 어드레스를 사용해제하는 기술은 상술한 논리적 페이지 ID를 사용해제하는 것과 동일하다. 물리적 페이지 어드레스를 할당하는 기술은 논리적 페이지 ID를 할당하는 것과 거의 동일하다. 사용해제인 물리적 페이지가 존재하지 않으면, 데이터베이스 파일은 성장하며(즉, 약간의 물리적 페이지가 파일의 끝에 부가되며) 데이터베이스 파일에 첨부된 새로운 물리적 페이지 어드레스가 어드레스 비트맵에 사용해제인 물리적 페이지 어드레스로 마크된다는 것이 차이점이다.
처음으로 데이터베이스를 개방할 때, 논리적 페이지 ID 비트맵과 물리적 페 이지 어드레스 비트맵을 초기화하는 예시적 기술을 의사 코드 형태로 아래의 표 2에 나타낸다.
Figure 112004023112300-pat00004
Figure 112004023112300-pat00005
Figure 112004023112300-pat00006
Figure 112004023112300-pat00007
도 5 내지 도 7은 새도우 페이징을 수행하는 예시적 프로세스의 흐름도이다. 상술한 바와 같이, 트랜잭션이 커미트될 때, 트랜잭션에 의해 수정된 모든 페이지가 데이터베이스 파일(제1 데이터베이스 메모리)의 미사용(사용해제) 페이지에 기입된다. 트랜잭션이 실행되는 동안, 트랜잭션 이전의 메모리 상태 및 데이터베이스로의 액세스가 유지된다. 도 1 내지 도 4에 도시한 컴포넌트들을 예시적으로 참조하여 도 5 내지 도 7에 도시한 프로세스를 후술한다.
단계 20에서, 매핑 테이블 페이지(예를 들어, 매핑 테이블 페이지(16))가 데이터베이스 파일에 생성된다. 이들 매핑 테이블 페이지는 데이터베이스 파일의 사용자 데이터 페이지(예를 들어, 사용자 데이터 페이지(18))의 위치를 유지하는데 이용된다. 매핑 테이블 페이지에 의한 사용자 데이터 페이지 위치의 유지는 상술한 바와 같이 실현된다. 단계 22에서는, 디렉토리 페이지(예를 들어, 디렉토리 페이지(14))가 데이터베이스 파일에 생성된다. 디렉토리 페이지는 매핑 테이블 페이 지의 위치를 유지하는데 이용된다. 디렉토리 페이지에 의한 매핑 테이블 페이지 위치의 유지는 상술한 바와 같이 실현된다. 단계 24에서, 데이터베이스 헤더 페이지(예를 들어, 데이터베이스 헤더 페이지(12))가 데이터베이스 파일에 생성된다. 데이터베이스 헤더 페이지는 디렉토리 페이지의 위치를 유지하는데 이용된다. 데이터베이스 헤더 페이지에 의한 디렉토리 페이지 위치의 유지는 상술한 바와 같이 실현된다. 선택적으로, 단계 26에서는, 상술한 바와 같이, 페이지 할당 비트맵이 생성된다. 이 비트맵의 생성은 논리적 ID의 할당을 표시하는 비트맵, 물리적 어드레스의 할당을 표시하는 비트맵, 또는 이들의 조합을 포함할 수 있다. 통상적으로, 데이터베이스 파일이 처음으로 생성될 때, 그리고 데이터베이스 파일에 어떤 데이터가 배치되기 전에, 유지 페이지 및 비트맵이 생성된다.
단계 28에서는, 데이터베이스 파일의 수정될 사용자 데이터 페이지(더티 페이지)의 내용이 데이터베이스 파일의 미사용 페이지에 저장된다. 일 실시예에서, 수정된 페이지는 트랜잭션이 커미트될 때까지 휘발성 메모리에 유지된다. 트랜잭션이 커미트될 때, 더티 사용자 데이터 페이지는 휘발성 메모리에서 데이터베이스 파일의 미사용 페이지에 기입된다. 더티 페이지의 내용이 저장될 미사용 페이지를 새도우 페이지라 한다. 따라서, 더티 사용자 데이터 페이지는 작업공간의 미사용 페이지(새도우 페이지)에 기입된다. 새도우 페이지는 원래의 사용자 데이터 페이지가 사용해제로 마크되기 전에 기입됨으로써, 시주기 동안 원래의 사용자 데이터 페이지를 유지한다. 이 동작이 완결되기 전에 실패할 경우, 미사용 페이지만이 중복 기입되고, 헤더, 디렉토리, 및 매핑 테이블은 여전히 새도우 페이지가 아닌 이 전 페이지의 존재만을 반영하고 있으므로, 데이터베이스는 여전히 일관된 상태이다. 일 실시예에서는, 원래의 사용자 데이터 페이지를 작업공간에 복사하는 것에 이를 실현한다. 작업공간에 수정이 이루어지면, 수정된 작업공간 페이지는 트랜잭션이 커미트되기 전에 사용해제 페이지(새도우 페이지)에 복사된다.
단계 30에서는, 사용자 데이터 새도우 페이지가 할당 중인 것으로 마크된다. 즉, 더티 페이지가 기입된 페이지는 더 이상 사용해제가 아니다. 임의의 적절한 메커니즘에 의해 이 할당 상태가 표시된다. 이러한 일 메커니즘이 할당 비트맵이다. 따라서, 예시적 실시예에서, 새도우 페이지의 할당 상태는 단계 30에서의 할당 비트맵에 의해 표시된다. 각각의 사용자 데이터 페이지가 (새도우되지 않은) 새로운 물리적 페이지에 기입될 때, 단계 32에서는, 매핑 테이블의 사용자 데이터 페이지의 대응되는 엔트리가 사용자 데이터 페이지의 새로운 위치를 반영하도록 업데이트된다. 사용자 데이터 페이지의 이전의 물리적 어드레스(그로부터 내용이 이동된 어드레스)는 단계 34에서 "할당된" 것으로 유지된다. 즉, 사용자 데이터 페이지의 이전의 물리적 어드레스는 사용해제로 선언되지 않는다. 사용자 데이터 페이지가 아직 업데이트되지 않았기 때문에, 장애가 발생할 경우, 데이터베이스 시스템은 이전의 상태를 복구할 수 있다. 이와 같이, 사용자 데이터 페이지의 이전의 물리적 어드레스가 보존되며, 후술하는 바와 같이, 트랜잭션이 완결된 후에, 이전의 물리적 페이지 어드레스는 사용해제로 마크된다(단계 58 참조).
단계 36에서는, 수정된(업데이트된) 매핑 테이블 페이지의 내용이 데이터베이스 파일의 미사용 페이지(매핑 테이블 새도우 페이지)에 저장된다. 따라서, 더 티 매핑 테이블 페이지가 데이터베이스 파일의 미사용 페이지(새도우 페이지)에 기입된다. 새도우 페이지는 어떤 수정이 행해지기 전에 기입되며, 따라서, 이전 페이지가 주기 동안 유지된다. 이러한 동작이 완결되기 전에 실패할 경우, 미사용 페이지만이 중복 기입되었기 때문에, 데이터베이스는 여전히 일관된 상태에 있다. 일 실시예에서는, 원래의 매핑 테이블 페이지를 작업공간에 복사하는 것에 의해 이를 실현한다. 작업공간에서 수정이 행해지면, 수정된 작업공간 페이지는 트랜잭션이 커미트되기 전에 사용해제 페이지(새도우 페이지)에 복사된다. 단계 38에서는, 매핑 테이블 새도우 페이지가 할당 중인 것으로 마크된다. 즉, 더티 페이지가 기입된 페이지는 더 이상 사용해제가 아니다. 임의의 적절한 메커니즘에 의해 이러한 할당 상태가 표시된다. 이러한 일 메커니즘이 할당 비트맵이다. 따라서, 예시적 실시예에서, 매핑 테이블 페이지의 할당 상태는 단계 38에서의 할당 비트맵에 의해 표시된다. 디렉토리 페이지(예를 들어, 디렉토리 페이지(14))는 단계 40에서 매핑 테이블 새도우 페이지의 위치를 반영하도록 업데이트된다. 따라서, 각각의 매핑 테이블 페이지가 새로운 물리적 페이지 어드레스에 기입될 때, 디렉토리 페이지에 대한 매핑 테이블 페이지의 대응되는 엔트리가 매핑 테이블 페이지의 새로운 위치를 반영하도록 업데이트된다. 단계 42에서는, 매핑 테이블 페이지의 이전의 물리적 어드레스(그로부터 내용이 이동된 어드레스)가 유지된다. 즉, 이전의 매핑 테이블 페이지의 물리적 어드레스가 사용해제로 선언되지 않는다. 이로 인해, 데이터베이스 시스템은 장애가 발생할 경우에 이전의 상태를 복구할 수 있다. 이와 같이, 매핑 테이블 페이지의 이전의 물리적 어드레스는 보존되며, 후술하는 바와 같이, 트랜잭션이 완결된 후, 이전의 물리적 페이지 어드레스는 사용해제로 마크된다(단계 58 참조).
단계 44에서는, 디렉토리 페이지의 내용이 데이터베이스 파일의 미사용 페이지(디렉토리 새도우 페이지)에 저장된다. 새도우 페이지는 어떤 수정이 행해지기 전에 기입되며, 따라서, 이전 페이지가 주기 동안 유지된다. 일 실시예에서는, 원래의 디렉토리 페이지를 작업공간에 복사하는 것에 의해 이를 실현한다. 작업공간에서 수정이 행해지면, 수정된 작업공간 페이지는 트랜잭션이 커미트되기 전에 사용해제 페이지(새도우 페이지)에 복사된다. 단계 46에서는, 디렉토리 새도우 페이지가 할당 중인 것으로 마크된다. 즉, 디렉토리 페이지가 기입된 페이지는 더 이상 사용해제가 아니다. 임의의 적절한 메커니즘에 의해 이러한 할당 상태가 표시된다. 이러한 일 메커니즘이 할당 비트맵이다. 따라서, 예시적 실시예에서, 디렉토리 페이지의 할당 상태는 단계 46에서의 할당 비트맵에 의해 표시된다. 데이터베이스 헤더 페이지(예를 들어, 데이터베이스 헤더 페이지(12))는 단계 48에서 디렉토리 새도우 페이지의 위치를 반영하도록 업데이트된다. 따라서, 디렉토리 페이지가 새로운 물리적 페이지 어드레스에 기입될 때, 데이터베이스 헤더 페이지에 대한 디렉토리 페이지의 대응되는 엔트리가 디렉토리 페이지의 새로운 위치를 반영하도록 업데이트된다. 단계 50에서는, 디렉토리 페이지의 이전의 물리적 어드레스(그로부터 내용이 이동된 어드레스)가 유지된다. 즉, 이전의 디렉토리 페이지의 물리적 어드레스가 사용해제로 선언되지 않는다. 이로 인해, 데이터베이스 시스템은 장애가 발생할 경우에 이전의 상태를 복구할 수 있다. 이와 같이, 디렉토리 페이 지의 이전의 물리적 어드레스는 보존되며, 후술하는 바와 같이, 트랜잭션이 완결된 후, 이전의 물리적 페이지 어드레스는 사용해제로 마크된다(단계 58 참조).
단계 52에서는, 데이터베이스 파일의 모든 새도우 페이지(사용자 데이터 새도우 페이지, 매핑 테이블 새도우 페이지, 디렉토리 새도우 페이지)의 내용이 데이터베이스의 지속성 메모리에 저장(플러시)된다. 데이터베이스 파일 새도우가 플러시됨으로써, 이전 단계들로부터의 모든 변화가 지속적인 저장 메커니즘(예를 들어, 디스크)상에 보존된다. 데이터베이스 헤더 페이지는 단계 54에서 데이터베이스에 저장(플러시)된다. 단계 56에서는, 새도우 페이지가 다시 플러시된다. 이러한 이중 플러시 기술(double flush technique)이, 장애가 발생한 경우의 복구시에, 데이터베이스 시스템이 일관된 상태인 것을 보장한다. 데이터베이스 헤더 페이지가 기입될 때까지, 데이터베이스 파일에 불안한 변화는 행해지지 않는다. 다른 트랜잭션이 데이터베이스 헤더 페이지, 디렉토리 페이지, 및 매핑 테이블 페이지의 이전의 또는 현재 커미트된 버전을 사용 중일 수 있다. 데이터베이스 헤더 페이지가 커미트될 때, 이는 새로운 디렉토리 페이지를 활성화하며, 새로운 디렉토리 페이지는 새로운 매핑 테이블 페이지를 활성화하고, 새로운 매핑 테이블 페이지는 사용자 데이터 페이지의 새로운 버전을 활성화한다. 예를 들어, 데이터베이스 헤더 페이지가 기입된 후에만 플러시가 발생할 경우, 디렉토리 페이지가 디스크상에 보존되기 전에 (디렉토리 페이지의 새로운 위치를 보존하면서) 데이터베이스 헤더 페이지가 디스크상에 보존될 수 있다. 이로 인해, 데이터베이스 시스템의 상태가 일관적일 수 있다. 단계 52, 54, 및 56의 성공적인 완결은 트랜잭션이 완전히 실행되었 음을 실질적으로 보장하며, 따라서, 이전의 물리적 페이지 어드레스가 사용을 위해 사용해제된다(이용가능해진다). 따라서, 사용자 데이터 페이지, 매핑 테이블 페이지, 및 디렉토리 페이지가 단계 58에서 사용해제로 선언된다. 임의의 적절한 메커니즘, 예를 들어, 상술한 할당 비트맵에 의해 이러한 할당 상태가 실현될 수 있다. 단계 58에서는, 이전의 물리적 페이지 어드레스 모두가 사용해제되므로, 다른 동작에 이용될 수 있다. 그러나, 플러시 프로세스가 완결되기 전에 장애가 발생한 경우라면, 새롭게 할당된 물리적 페이지 어드레스 모두가 사용해제되며, 시스템은 이전 상태가 된다.
예시적 실시예에서, 트랜잭션이 원자적임(예를 들어, 섹터가 분할 기입되지 않음)을 보장하기 위해, 디렉토리 페이지의 물리적 페이지 어드레스는 데이터베이스 파일의 스타트(예를 들어, 제1 섹터)에 저장되는 데이터베이스 헤더 페이지의 제1 섹터에 저장된다. 따라서, 데이터베이스 헤더 페이지의 제1 섹터가 기입되지 않을 경우, 트랜잭션이 커미트되지 않으며 미사용 페이지만이 중복 기입되었으므로 데이터베이스는 여전히 일관적이기 때문에, 트랜잭션의 커미트는 원자적이다.
이하, 새도우 페이징을 이용하여 트랜잭션을 수행하는 일례가 도 8 내지 도 13을 참조하여 제공된다. 도 8은 데이터베이스 파일의 페이지 0 내지 8을 도시한다. 페이지 0은 데이터베이스 헤더 페이지이고, 페이지 1은 디렉토리 페이지이며, 페이지 2는 매핑 테이블 페이지이고, 페이지 3 및 4는 더티 사용자 데이터 페이지이며, 페이지 5 내지 8은 공백(미사용) 페이지이다. 실선은 헤더 페이지의 엔트리(논리적 ID)가 디렉토리 페이지를 포인트하고, 디렉토리 페이지의 엔트리가 매핑 테이블 페이지를 포인트하며, 매핑 테이블 페이지의 엔트리가 사용자 데이터 페이지를 포인트한다는 것을 나타낸다. 이 예는 트랜잭션이 시작되었고 사용자 페이지 1 및 사용자 페이지 2를 수정했다는 가정으로 시작하며 현재 커미트 중이다. 상술한 바와 같이, 사용자 페이지 1 및 사용자 페이지 2의 더티 카피가 파일의 미사용 위치에 기입된다.
도 9는 사용자 페이지 1 및 2(즉, 각각 물리적 페이지 3 및 4)가 각각 물리적 페이지 어드레스 5 및 6에 기입 중인 것을 도시한다. 대응되는 매핑 테이블 페이지는 사용자 페이지 1 및 사용자 페이지 2의 새로운 위치를 나타내도록 수정된다. 사용자 페이지 1 및 2가 페이지 5 및 6에 기입 중인 것은 회색 줄무늬의 사용자 페이지로부터 나오는 점선의 화살표로 표시된다. 사용자 페이지 1 및 2의 새로운 위치를 나타내기 위해 매핑 페이지 2가 수정 중인 것은 회색 줄무늬의 매핑 테이블 페이지로부터 나오는 실선의 화살표로 표시된다. 매핑 테이블 페이지를 수정하는 것에 의해 매핑 테이블 페이지는 현 트랜잭션의 더티 페이지가 된다. 이 트랜잭션이 실행될 때, 다른 트랜잭션은 (회색 음영의) 페이지 2에 저장되어 있는 매핑 테이블 페이지를 사용한다. 다음으로, 수정된 매핑 테이블 페이지가 미사용 페이지에 기입된다. 도 9를 참조하면, 페이지들이 각 단계에서 디스크에 기입되는 반면, 도 5 내지 도 7을 참조하는 설명에서는, 페이지들이 모든 유지 페이지가 업데이트된 후 디스크로 플러시된다. 본 발명에 따르면, 양자의 기술 모두가 적절하다. 따라서, 페이지는 프로세스의 임의의 적절한 시점에 디스크에 기입될 수 있다.
도 10은 매핑 테이블 페이지가 미사용 페이지 7에 기입되는 중이며 디렉토리 페이지가 매핑 테이블 페이지의 새로운 어드레스를 반영하도록 업데이트 중인 것을 도시한다. 이 예에서는, 하나의 매핑 테이블 페이지만이 수정된다. 이 프로세스는 이전에 설명한 단계와 유사하게 수행된다. 매핑 테이블 페이지는 데이터베이스 파일의 미사용 페이지에 기입되고 디렉토리 페이지는 매핑 테이블 페이지의 새로운 위치를 반영하도록 업데이트된다. 다른 트랜잭션은 여전히 페이지 1 및 2에 각각 위치하는 디렉토리 페이지 및 매핑 테이블 페이지의 회색 음영 버전을 사용 중이다.
다음으로, 도 11에 나타낸 바와 같이, 디렉토리 페이지가 미사용 페이지에 기입된다. 도 11 또한, 디렉토리 페이지의 새로운 위치를 반영하기 위해 업데이트 중인 데이터베이스 헤더 페이지를 도시한다. 다음으로, 도 12에 나타낸 바와 같이, (상술한 이중 플러시 기술을 사용하여) 데이터베이스 헤더 페이지가 기입된다. 헤더 페이지가 기입되고 이중 플러시 프로세스가 수행되고 나면, 트랜잭션은 성공적으로 커미트되며 이제 그 결과는 사용자에게 노출되는 데이터베이스의 상태에 반영된다(즉, 데이터베이스의 사용자는 이제 사용자 데이터 페이지, 매핑 테이블 페이지 및 디렉토리 페이지에 행해진 변화를 "볼" 수 있다). 도 13에 나타낸 바와 같이, 4개 페이지를 새로운 물리적 페이지 어드레스로 이동시킨 결과로서 사용해제된 물리적 페이지 어드레스(페이지 1-4)는 할당해제된다(사용가능해진다).
도 14는 새도우 페이징을 수행하기 위한 시스템의 블록도이다. 예시적 실시예에서, 시스템은 데이터베이스를 액세스하는데 사용되며, 그러한 맥락에서 설명된 다. 시스템은 작업공간(제1 데이터베이스 메모리;78), 지속성 메모리(제2 데이터베이스 메모리;80), 페이지 할당 표시자(72), 컨트롤러(74), 및 선택적인 데이터 압축기(76)를 구비한다. 작업공간(78)과 지속성 메모리(80)는 반도체 메모리, 자기 메모리(예를 들어, 디스크), 광학 메모리, 또는 이들의 조합과 같은 임의 타입의 적절한 메모리를 구비할 수 있다. 통상적으로 그리고 바람직하게, 지속성 메모리(80)는 지속적으로 데이터를 저장할 수 있는 능력을 소유한다. 따라서, 정상적인 동작 조건하에서, 데이터가 특별히 제거되거나 그리고/또는 재기입될 때까지는, 지속성 메모리(80)에 기입된 데이터를 이용할 수 있다. 여기에서 설명하는 바와 같이, 플러시(flush) 및 플러싱(flushing)이라는 용어는 데이터를 지속성 메모리(80)로 전송하는 것을 의미한다.
페이지 할당 표시자(72)는 상술한 바와 같은 논리적 ID와 물리적 어드레스의 할당 상태를 표시하는 기능을 수행한다. 예시적 실시예에서, 페이지 할당 표시자(72)는 상술한 바와 같은 비트맵을 구비한다. 데이터 압축기(76)는 선택적이다. 데이터 압축기(76)는 작업공간(78) 및/또는 지속성 메모리(80)의 데이터를 압축하여 시스템에 이용되는 메모리의 사이즈를 감소시킨다. 데이터 압축기(76)는 임의의 적절한 데이터 압축 기술을 구현할 수 있다.
컨트롤러(74)는 유지 페이지(데이터베이스 헤더 페이지, 디렉토리 페이지, 및 매핑 테이블 페이지)와 관련된 많은 기능들을 수행하며 상술한 바와 같은 새도우 페이징을 수행하기 위한 단계들의 프로세싱을 제어하기도 한다. 컨트롤러(74)는 데이터베이스 파일의 페이지 위치를 유지하기 위한 유지 페이지를 생성한다. 컨트롤러는 또한, 선택된 페이지의 내용을 미사용 페이지(새도우 페이지)에 저장한다. 컨트롤러(74)는 작업공간(78)의 새도우 페이지 위치를 반영하도록 유지 페이지를 업데이트한다. 컨트롤러(74)는 또한, 유지 페이지의 내용을 작업공간(78)의 미사용 페이지에 저장한다. 컨트롤러(74)는 작업공간(78)의 내용을 지속성 메모리(80)에 저장한다. 컨트롤러(74)는 상술한 이중 플러시 프로세스를 제어한다.
적당한 컴퓨팅 시스템 환경의 개관
도 15는 새도우 페이징용 방법 및 시스템이 구현될 수 있는 적당한 컴퓨팅 시스템 환경(100)의 일례를 도시한다. 컴퓨팅 시스템 환경(100)은 적당한 컴퓨팅 환경의 일례일 뿐이며 디스플레이 요소를 동적으로 그리고 개별적으로 제어하는 방법 및 시스템의 사용 또는 기능성 범위에 관한 어떠한 제한을 제시하려는 것이 아니다. 컴퓨팅 환경(100)이 예시적인 동작 환경(100)에 도시된 컴포넌트 중 어느 하나 또는 이들의 조합에 관한 어떠한 의존성 또는 요구사항을 갖는 것으로 해석되어서는 안된다.
새도우 페이징을 위한 방법 및 시스템을 다수의 다른 범용 또는 특수 목적의 컴퓨팅 시스템 환경 또는 구성으로 동작시킬 수 있다. 디스플레이 요소를 동적으로 그리고 개별적으로 제어하기 위한 방법 및 시스템에 사용하기에 적당할 수 있는 널리 공지된 컴퓨팅 시스템, 환경, 및/또는 구성의 예들로는 퍼스널 컴퓨터, 서버 컴퓨터, 핸드헬드 또는 랩탑 장치, 멀티프로세서 시스템, 마이크로프로세서-기반의 시스템, 셋톱 박스, 프로그램가능한 상용 전자장치, 네트워크 PC, 미니컴퓨터, 메 인프레임 컴퓨터, 상기 시스템 또는 장치들 중 어떤 것을 포함하는 분산형 컴퓨팅 환경 등을 들 수 있지만, 이에 한정되는 것은 아니다.
컴퓨터에서 실행되는 컴퓨터 모듈과 같은 컴퓨터-실행가능 명령들의 일반적인 문맥에서, 새도우 페이징을 위한 방법 및 시스템을 설명할 수 있다. 일반적으로, 프로그램 모듈은 특정한 태스크를 수행하거나 특정한 추상적 데이터 타입을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 새도우 페이징을 위한 방법 및 시스템도, 태스크가 통신 네트워크 또는 다른 데이터 전송 매체를 통해 링크되어 있는 원격 프로세싱 장치에 의해 수행되는 분산형 컴퓨팅 환경에서 실행될 수 있다. 분산형 컴퓨팅 환경에서, 프로그램 모듈 및 다른 데이터는 메모리 저장 장치를 포함하는 로컬 및 원격 컴퓨터 저장 매체에 위치할 수 있다.
도 15를 참조하면, 새도우 페이징을 위한 방법 및 시스템을 구현하는 예시적 시스템은 컴퓨터(110) 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 컴포넌트로는 프로세싱 유닛(120), 시스템 메모리(130), 및 시스템 메모리(130)를 포함하는 다양한 시스템 컴포넌트를 프로세싱 유닛(120)에 결합시키는 시스템 버스(121)를 포함할 수 있지만, 이에 한정되는 것은 아니다. 시스템 버스(121)는 메모리 버스 또는 메모리 컨트롤러, 주변장치 버스, 및 다양한 버스 아키텍처 중 임의의 것을 사용하는 로컬 버스를 포함하는 여러가지 타입의 버스 구조 중 어느 하나일 수 있다. 한정이 아닌 일례로써, 이러한 아키텍처로는 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스, 및 (Mezzanine 버스라고도 하는) PCI(Peripheral Component Interconnect) 버스를 들 수 있지만, 이에 한정되는 것은 아니다.
컴퓨터(110)는 통상적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터(110)에 의해 액세스될 수 있는 이용가능한 임의의 매체일 수 있으며 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체 모두를 포함한다. 한정이 아닌 일례로써, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 구비할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD(digital versatile disks) 또는 다른 광학 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 다른 자기 저장 장치, 또는 소정의 정보를 저장하는데 사용될 수 있으며 컴퓨터(110)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만, 이에 한정되는 것은 아니다. 통신 매체는 통상적으로 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 또는 반송파 또는 다른 전송 메커니즘과 같은 변조 데이터 신호의 다른 데이터를 구체화하며, 임의의 정보 전달 매체를 포함한다. "변조 데이터 신호"라는 용어는 하나 이상의 특성 세트를 가지며 정보를 신호로 부호화하는 방식으로 변경된 신호를 의미한다. 한정이 아닌 일례로써, 통신 매체는 유선 네트워크 또는 직접적-유선 접속과 같은 유선 매체, 및 음향, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함한다. 매체들의 임의적인 조합 또한 컴퓨터 판독가능 매체의 범위내에 포함된다는 것을 알 수 있다.
시스템 메모리(130)는 ROM(131) 및 RAM(132)과 같은 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 예를 들어, 스타트-업(strat-up) 동안에, 컴퓨터(110)내의 요소들 사이에서 정보 전달을 돕는 기본적 루틴을 보유하는 기본적 입/출력 시스템(133;BIOS)은 통상적으로 ROM(131)에 저장된다. RAM(132)은 통상적으로 프로세싱 유닛(120)에 즉각적으로 액세스가능한 그리고/또는 프로세싱 유닛(120)에 의해 현재 조작 중인 데이터 및/또는 프로그램 모듈을 보유한다. 한정이 아닌 일례로써, 도 15는 오퍼레이팅 시스템(134), 애플리케이션 프로그램(135), 다른 프로그램 모듈(136), 및 프로그램 데이터(137)를 도시한다.
또한, 컴퓨터(110)는 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 단지 예로써, 도 15는 비분리형, 비휘발성 자기 매체로부터 판독하고 그에 기입하는 하드 디스크 드라이브(141), 분리형, 비휘발성 자기 디스크(152)로부터 판독하고 그에 기입하는 자기 디스크 드라이브(151), 및 CD-ROM, CDRW, 또는 다른 광학 매체와 같은 분리형, 비휘발성 광학 디스크(156)로부터 판독하고 그에 기입하는 광학 디스크 드라이브(155)를 도시한다. 예시적 동작 환경에 사용될 수 있는 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체로는 자기 테이프 카세트, 플래시 메모리 카드, 디지털 다방면 디스크, 디지털 비디오 테이프, 반도체 RAM, 반도체 ROM 등을 들 수 있지만, 그에 한정되는 것은 아니다. 하드 디스크 드라이브(141)는 통상적으로 인터페이스(140)와 같은 비분리형 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광학 디스크 드라이브(155)는 통상적으로 인터페이스(150)와 같은 분리형 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
상술한 그리고 도 15에 도시한 드라이브와 그에 관련된 컴퓨터 저장 매체는 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 및 컴퓨터(110)용 다른 데이터를 저장한다. 예를 들어, 도 15에서는, 하드 디스크 드라이브(141)가 오퍼레이팅 시스템(144), 애플리케이션 프로그램(145), 다른 프로그램 모듈(146), 및 프로그램 데이터(147)를 저장하는 것으로 도시되어 있다. 이들 컴포넌트는 오퍼레이팅 시스템(134), 애플리케이션 프로그램(135), 다른 프로그램 모듈(136), 및 프로그램 데이터(137)와 동일하거나 상이할 수 있다. 여기에서는 최소한 이들이 상이한 카피본임을 도시하기 위해, 오퍼레이팅 시스템(144), 애플리케이션 프로그램(145), 다른 프로그램 모듈(146), 및 프로그램 데이터(147)에 상이한 번호가 부여되어 있다. 사용자는 키보드(162) 및, 흔히 마우스, 트랙볼 또는 터치 패드라 하는 포인팅 장치(161)와 같은 입력 장치를 통해 컴퓨터(110)에 명령 및 정보를 입력할 수 있다. (나타내지 않은) 다른 입력 장치로는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 들 수 있다. 이들 및 다른 입력 장치들은 흔히 시스템 버스(121)에 결합되어 있는 사용자 입력 인터페이스(160)를 통해 프로세싱 유닛(120)에 접속되지만, 병렬 포트, 게임 포트 또는 USB(universal serial bus)와 같은 다른 인터페이스 및 버스 구조에 의해 접속될 수도 있다. 모니터(191) 또는 다른 타입의 디스플레이 장치 또한 비디오 인터페이스(190)와 같은 인터페이스에 의해 시스템 버스(121)에 접속된다. 모니터 이외에, 컴퓨터는 출력 주변장치 인터페이스(195)를 통해 접속될 수 있는, 스피커(197) 및 프린터(196)와 같은, 다른 주변 출력 장치를 포함할 수도 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 사용하는 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 공통 네트워크 노드일 수 있으며, 도 15에는 메모리 저장 장치(181)만이 도시되어 있지만, 통상적으로 컴퓨터(110)와 관련하여 상술한 요소들 중 많은 것을 또는 그 모두를 포함한다. 도시된 논리적 접속은 LAN(local area network;171) 및 WAN(wide area network;173)을 포함하지만, 다른 네트워크를 포함할 수도 있다. 이러한 네트워크 환경은 사무실, 기업-광역 컴퓨터 네트워크, 인트라넷 및 인터넷에서 흔히 볼 수 있다.
LAN 네트워크 환경에서 사용될 경우, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워크 환경에서 사용될 경우, 컴퓨터(110)는 통상적으로 모뎀(172) 또는, 인터넷과 같은 WAN(173)을 통해 통신을 확립하는 다른 수단을 포함한다. 내장형이거나 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160), 또는 다른 적절한 메커니즘을 통해 시스템 버스(121)에 접속될 수 있다. 네트워크 환경에서, 컴퓨터(110)에 대해 도시한 프로그램 모듈 또는 그 일부는 원격 메모리 저장 장치에 저장될 수 있다. 한정이 아닌 일례로써, 도 15는 메모리 장치(181)상에 상주하는 원격 애플리케이션 프로그램(185)을 도시한다. 나타낸 네트워크 접속은 예시적인 것이며 컴퓨터들간에 통신 링크를 확립하는 다른 수단이 사용될 수도 있다.
퍼스널 컴퓨팅 및 인터넷을 중심으로 다양한 분산형 컴퓨팅 프레임워크가 개발되었으며 현재 개발 중에 있다. 개인 및 비즈니스 사용자를 막론하고, 애플리케이션 및 컴퓨팅 장치에 대한 심리스 상호 운용, 웹-인에이블형 인터페이스(seamlessly interoperable and web-enabled interface)가 제공되어, 컴퓨팅 동작을 점차 웹 브라우저 또는 네트워크-지향화한다.
예를 들어, MICROSOFT?의 .NET 플랫폼은 서버, 웹-기반 데이터 저장과 같은 구성요소 서비스(building block services), 및 다운로드가능한 장치 소프트웨어를 포함한다. 일반적으로, .NET 플랫폼은 (1) 전범위의 컴퓨팅 장치를 함께 작업시켜 사용자 정보를 그들 모두에 대해 자동적으로 업데이트하고 동기화하는 기능, (2) HTML보다 XML을 더 많이 사용함으로 인해 가능해진, 웹 사이트에 대한 증가된 상호작용 기능, (3) 예를 들어, 이메일, 또는 Office.NET과 같은 소프트웨어 등의 다양한 애플리케이션을 관리하기 위해 중앙의 시작점으로부터 사용자로의 제품 및 서비스의 상용화된 액세스 및 전달을 특징으로 하는 온라인 서비스, (4) 사용자와 장치간의 정보 동기화 뿐만 아니라 정보 액세스의 효율성과 용이성을 증가시킬 집중식 데이터 저장. (5) 이메일, 팩스, 및 전화와 같은 다양한 통신 매체를 통합하는 기능, (6) 개발자에 대해, 재사용가능한 모듈을 생성함으로써, 생산성을 증가시키고 프로그래밍 오류의 수를 감소시키는 기능, 및 (7) 다른 많은 크로스-플랫폼 통합 특징을 제공한다.
여기에서의 예시적 실시예는 컴퓨팅 장치상에 상주하는 소프트웨어와 관련하 여 설명되지만, 새도우 페이징을 위한 방법 및 시스템의 하나 이상의 부분들은, 서비스들이 .NET의 모든 언어와 서비스를 통해 수행되거나, 지원되거나, 액세스될 수 있도록, 오퍼레이팅 시스템, 애플리케이션 프로그램 인터페이스(API), 또는 보조프로세서와 요구 객체간의 "미들 맨" 객체를 통해 구현될 수 있을 뿐만 아니라, 다른 분산형 컴퓨팅 프레임워크에 구현될 수도 있다.
여기에서 설명한 바와 같은 새도우 페이징 방법은 이들 프로세스를 실행하기 위한 컴퓨터-구현형 프로세스 및 시스템의 형태로 구체화될 수 있다. 또한, 여기에서 설명한 새도우 페이징 방법은 플로피 디스켓, ROM, CD-ROM, 하드 드라이브, 고밀도 디스크, 또는 임의의 다른 컴퓨터-판독가능 저장 매체와 같은 유형의 매체에 구체화될 수도 있는데, 이 경우, 컴퓨터 프로그램 코드가 컴퓨터로 로딩되고 컴퓨터에 의해 실행될 때, 컴퓨터는 본 발명을 실행하기 위한 시스템이 된다. 여기에서 설명한 바와 같은 새도우 페이징 방법은, 예를 들어, 저장 매체에 저장되어, 컴퓨터로 로딩되고 그리고/또는 컴퓨터에 의해 실행되거나, 전기 배선 또는 케이블, 광섬유, 또는 전자기 복사(electromagnetic radiation)와 같은 전송 매체를 통해 전송되는 컴퓨터 프로그램 코드의 형태로 구체화될 수도 있는데, 이 경우, 컴퓨터 프로그램 코드가 컴퓨터로 로딩되고 컴퓨터에 의해 실행될 때, 컴퓨터는 본 발명을 실행하기 위한 시스템이 된다. 범용 프로세서상에 구현될 경우, 컴퓨터 프로그램 코드 세그먼트는 특정한 논리 회로를 생성하도록 프로세서를 구성한다.
여기에서 설명한 다양한 기술들은 하드웨어나 소프트웨어, 또는 적당한 경우, 이들 양자의 조합과 관련하여 구현될 수 있다. 따라서, 본 발명의 방법 및 장 치, 또는 그들의 소정 태양 또는 일부는, 플로피 디스켓, CD-ROM, 하드 드라이브, 또는 임의의 다른 머신-판독가능 저장 매체와 같은 유형의 매체에 구체화된 프로그램 코드(즉, 명령어)의 형태를 취할 수 있는데, 이 경우, 프로그램 코드가, 컴퓨터와 같은, 머신으로 로딩되고 머신에 의해 실행될 때, 그 머신은 본 발명을 실행하기 위한 장치가 된다. 프로그램 코드가 프로그램가능한 컴퓨터상에서 실행될 경우, 컴퓨팅 장치는 일반적으로 프로세서, (휘발성 및 비휘발성 메모리 및/또는 저장 요소를 포함하는) 프로세서에 의해 판독가능한 저장 매체, 하나 이상의 입력 장치, 및 하나 이상의 출력 장치를 포함한다. 예를 들어, 데이터 프로세싱 API 등을 사용하여, 본 발명의 신호 프로세싱 서비스를 이용할 수 있는 하나 이상의 프로그램은 컴퓨터와의 통신을 위해 고급의 절차적 또는 객체 지향 프로그래밍 언어로 구현되는 것이 바람직하다. 그러나, 원한다면, 프로그램(들)은 어셈블리 또는 기계어로 구현될 수 있다. 어떤 경우이든, 언어는 컴파일되거나 해석된 언어일 수 있으며, 하드웨어 구현과 조합될 수 있다.
본 발명의 방법 및 장치는, 전기 배선이나 케이블과 같은 전송 매체를 통하거나, 광섬유를 통하거나, 임의의 다른 전송 형태를 통해 전송되는 프로그램 코드 형태로 구체화된 통신을 통해 실행될 수도 있는데, 이 경우, 프로그램 코드가 수신되어, EEPROM, 게이트 어레이, 프로그램가능한 논리 장치(PLD), 클라이언트 컴퓨터, 비디오 레코더 등과 같은, 머신으로 로딩되고 머신에 의해 실행될 때, 상기 예시적 실시예에서 설명한 바와 같은 신호 프로세싱 기능을 가진 수신 머신은 본 발명을 실행하기 위한 장치가 된다. 범용 프로세서상에 구현될 경우, 프로그램 코드 는 프로세서를 조합하여 본 발명의 기능성을 발휘하도록 동작하는 고유한 장치를 제공한다. 또한, 본 발명과 관련하여 사용되는 임의의 저장 기술은 변함없이 하드웨어와 소프트웨어의 조합일 수 있다.
다양한 구성의 바람직한 실시예들과 관련하여 본 발명의 실시예들을 설명하였지만, 본 발명의 범위를 벗어나지 않으면서, 본 발명의 동일한 기능을 수행하기 위해, 다른 유사한 실시예들이 사용되거나 상술한 실시예들에 변형 및 부가가 이루어질 수 있다는 것을 알 수 있다. 또한, 특히, 무선 네트워크 장치의 수가 계속해서 급격히 증가함에 따라, 헨드헬드 장치의 오퍼레이팅 시스템 및 다른 특정 애플리케이션의 오퍼레이팅 시스템을 포함하는 다양한 컴퓨터 플랫폼이 고려될 수 있다는 것을 알 수 있다. 따라서, 본 발명은 임의의 단일 실시예로 한정되어서는 안되며, 첨부된 청구범위에 따른 폭과 범위로 해석되어야 한다.
따라서, 본 발명에 따르면, 예상치 못한 장애의 해로운 영향을 완화하면서, 데이터베이스에 액세스하는 기술을 제공할 수 있다. 이 기술은 비교적 적은 소프트웨어 코드를 사용하므로, 핸드헬드 장치 및/또는 이동식 데이터베이스 제품(예를 들어, SQL-CE)과 같이, 한정된 양의 메모리 또는 한정된 속도를 가진 전자 장치에 특히 적합하다. 본 발명은 원자적 트랜잭션이 완결될 때까지 데이터베이스의 현재 상태를 유지하는 효율적인 수단을 제공하기 위해 새도우 페이징을 사용하며, 그에 따라, 트랜잭션이 커미트되는 동안 시스템 장애가 발생할 경우 트랜잭션을 복구할 수 있다. 트랜잭션이 완결되면, 데이터베이스의 새로운 상태를 사용할 수 있다.

Claims (21)

  1. 프로세서를 통해 데이터베이스에 액세스하는 방법에 있어서,
    상기 데이터베이스의 제1 데이터베이스 메모리의 선택된 페이지의 내용을 제1 새도우 페이지(shadow page)에 저장하는 단계 - 상기 제1 새도우 페이지는 상기 제1 데이터베이스 메모리의 미사용 페이지(unused page)를 포함함 -;
    상기 선택된 페이지의 위치 및 상기 제1 새도우 페이지의 위치를 상기 데이터베이스의 유지 페이지(maintenance page)에 유지하는 단계;
    상기 제1 새도우 페이지의 내용 및 상기 유지 페이지의 제1 부분의 내용을 상기 데이터베이스의 제2 데이터베이스 메모리에 저장하는 단계;
    상기 유지 페이지의 제2 부분의 내용을 상기 제2 데이터베이스 메모리에 저장하는 단계;
    상기 제1 새도우 페이지의 상기 내용 및 상기 유지 페이지의 상기 제1 부분의 상기 내용을 상기 제2 데이터베이스 메모리에 재차 저장하는 단계;
    상기 선택된 페이지를 사용된 페이지로 표시하는 단계;
    상기 선택된 페이지의 상기 내용을 상기 제1 새도우 페이지에 저장하는 단계에 응답하여, 상기 제1 새도우 페이지를 사용된 페이지로 표시하는 단계;
    상기 유지 페이지의 제1 부분의 내용을 제2 새도우 페이지에 저장하는 단계 - 상기 제2 새도우 페이지는 상기 제1 데이터베이스 메모리의 미사용 페이지를 포함함 -;
    상기 유지 페이지의 상기 제1 부분의 상기 내용을 상기 제2 새도우 페이지에 저장하는 단계에 응답하여, 상기 제2 새도우 페이지를 사용된 페이지로 표시하는 단계;
    상기 제1 새도우 페이지의 내용 및 상기 제2 새도우 페이지의 내용을 상기 제2 데이터베이스 메모리에 저장하는 단계;
    상기 제1 새도우 페이지의 상기 내용 및 상기 제2 새도우 페이지의 상기 내용을 상기 제2 데이터베이스 메모리에 재차 저장하는 단계;
    상기 제1 데이터베이스 메모리의 각 페이지가 사용인지 또는 미사용인지를 표시하는 비트맵을 생성하는 단계; 및
    상기 표시하는 단계에 따라 상기 비트맵을 업데이트하는 단계;
    를 포함하고,
    상기 유지 페이지의 제1 부분은 상기 제1 데이터베이스 메모리 내의 데이터 페이지의 위치를 유지하는 적어도 하나의 매핑 테이블 페이지 및 각각의 매핑 테이블 페이지의 위치를 유지하는 디렉토리 페이지를 포함하고,
    상기 유지 페이지의 제2 부분은 상기 디렉토리 페이지의 위치를 유지하는 데이터베이스 헤더 페이지를 포함하는,
    데이터베이스에 액세스하는 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 제1 데이터베이스 메모리의 선택된 페이지의 내용을 상기 제1 새도우 페이지에 저장하는 단계는, 상기 데이터 페이지의 내용을 상기 제1 새도우 페이지에 저장하는 단계를 포함하는, 데이터베이스에 액세스하는 방법.
  4. 제1항에 있어서,
    상기 제1 새도우 페이지의 상기 내용 및 상기 유지 페이지의 상기 제1 부분의 상기 내용을 상기 제2 데이터베이스 메모리에 재차 저장하는 단계에 후속하여,
    상기 유지 페이지의 상기 제2 부분을 미사용 페이지로 표시하는 단계; 및
    상기 선택된 페이지를 미사용 페이지로 표시하는 단계
    를 더 포함하는, 데이터베이스에 액세스하는 방법.
  5. 제1항에 있어서,
    상기 유지 페이지의 내용을 압축하는 단계를 더 포함하는, 데이터베이스에 액세스하는 방법.
  6. 데이터베이스에 액세스하도록 컴퓨터 프로세서에 지시하기 위해 저장된 컴퓨터 프로그램 코드가 인코딩되어 있는 컴퓨터 판독가능 저장 매체로서,
    상기 프로그램 코드는,
    상기 컴퓨터 프로세서로 하여금 상기 데이터베이스의 제1 데이터베이스 메모리의 선택된 페이지의 내용을 제1 새도우 페이지에 저장하게 하는 선택된 페이지 저장 코드 세그먼트 - 상기 제1 새도우 페이지는 상기 제1 데이터베이스 메모리의 미사용 페이지를 포함함 -;
    상기 컴퓨터 프로세서로 하여금 상기 선택된 페이지의 위치 및 상기 제1 새도우 페이지의 위치를 상기 데이터베이스의 유지 페이지에 유지하게 하는 위치 유지 코드 세그먼트;
    상기 컴퓨터 프로세서로 하여금 상기 제1 새도우 페이지의 내용 및 상기 유지 페이지의 제1 부분의 내용을 상기 데이터베이스의 제2 데이터베이스 메모리에 저장하게 하는 제1 새도우 및 제1 부분 저장 코드 세그먼트;
    상기 컴퓨터 프로세서로 하여금 상기 유지 페이지의 제2 부분의 내용을 상기 제2 데이터베이스 메모리에 저장하게 하는 제2 부분 저장 코드 세그먼트;
    상기 컴퓨터 프로세서로 하여금 상기 제1 새도우 페이지의 상기 내용 및 상기 유지 페이지의 상기 제1 부분의 상기 내용을 상기 제2 데이터베이스 메모리에 재차 저장하게 하는 반복 코드 세그먼트;
    상기 컴퓨터 프로세서로 하여금 상기 선택된 페이지를 사용된 페이지로 표시하게 하는 선택된 페이지 표시 코드 세그먼트;
    상기 컴퓨터 프로세서로 하여금, 상기 선택된 페이지의 상기 내용을 상기 제1 새도우 페이지에 저장하는 상기 동작에 응답하여, 상기 제1 새도우 페이지를 사용된 페이지로 표시하게 하는 제1 새도우 표시 코드 세그먼트;
    상기 컴퓨터 프로세서로 하여금 상기 유지 페이지의 제1 부분의 내용을 제2 새도우 페이지에 저장하게 하는 제1 부분 저장 코드 세그먼트 - 상기 제2 새도우 페이지는 상기 제1 데이터베이스 메모리의 미사용 페이지를 포함함 -;
    상기 컴퓨터 프로세서로 하여금, 상기 유지 페이지의 상기 제1 부분의 상기 내용을 상기 제2 새도우 페이지에 저장하는 상기 동작에 응답하여, 상기 제2 새도우 페이지를 사용된 페이지로 표시하게 하는 제2 새도우 표시 코드 세그먼트;
    상기 컴퓨터 프로세서로 하여금 상기 제1 새도우 페이지의 내용 및 상기 제2 새도우 페이지의 내용을 상기 제2 데이터베이스 메모리에 저장하게 하는 제1 및 제2 새도우 저장 코드 세그먼트;
    상기 컴퓨터 프로세서로 하여금 상기 제1 새도우 페이지의 상기 내용 및 상기 제2 새도우 페이지의 상기 내용을 상기 제2 데이터베이스 메모리에 재차 저장하게 하는 반복 저장 코드 세그먼트;
    상기 컴퓨터 프로세서로 하여금 상기 제1 데이터베이스 메모리의 각 페이지가 사용인지 또는 미사용인지를 표시하는 비트맵을 생성하게 하는 비트맵 생성 코드 세그먼트; 및
    상기 컴퓨터 프로세서로 하여금 상기 표시하는 동작에 따라 상기 비트맵을 업데이트하게 하는 비트맵 업데이트 코드 세그먼트
    를 포함하고,
    상기 유지 페이지의 제1 부분은 상기 제1 데이터베이스 메모리 내의 데이터 페이지의 위치를 유지하는 적어도 하나의 매핑 테이블 페이지 및 각각의 매핑 테이블 페이지의 위치를 유지하는 디렉토리 페이지를 포함하고,
    상기 유지 페이지의 제2 부분은 상기 디렉토리 페이지의 위치를 유지하는 데이터베이스 헤더 페이지를 포함하는,
    컴퓨터 판독가능 저장 매체.
  7. 삭제
  8. 제6항에 있어서,
    상기 제1 데이터베이스 메모리의 선택된 페이지의 내용을 상기 제1 새도우 페이지에 저장하는 상기 동작은, 상기 데이터 페이지의 내용을 상기 제1 새도우 페이지에 저장하는 동작을 포함하는, 컴퓨터 판독가능 저장 매체.
  9. 제6항에 있어서,
    상기 컴퓨터 프로세스로 하여금, 상기 제1 새도우 페이지의 상기 내용 및 상기 유지 페이지의 상기 제1 부분의 상기 내용을 상기 제2 데이터베이스 메모리에 재차 저장하는 상기 동작에 후속하여,
    상기 유지 페이지의 상기 제2 부분을 미사용 페이지로 표시하고,
    상기 선택된 페이지를 미사용 페이지로 표시하게 하는 최종 표시 코드 세그먼트를 더 포함하는, 컴퓨터 판독가능 저장 매체.
  10. 제6항에 있어서,
    상기 컴퓨터 프로세서로 하여금 상기 유지 페이지의 내용을 압축하게 하는 압축 코드 세그먼트를 더 포함하는, 컴퓨터 판독가능 저장 매체.
  11. 데이터베이스에 액세스하는 시스템으로서,
    상기 데이터베이스의 제1 데이터베이스 메모리;
    상기 데이터베이스의 제2 데이터베이스 메모리;
    상기 제1 데이터베이스 메모리 내의 페이지의 위치를 유지하는 유지 페이지를 생성하고,
    상기 제1 데이터베이스 메모리의 선택된 페이지의 내용을 상기 제1 데이터베이스 메모리의 미사용 페이지를 포함하는 제1 새도우 페이지에 저장하며,
    상기 제1 데이터베이스 메모리 내의 상기 제1 새도우 페이지의 위치를 반영하기 위해 상기 유지 페이지를 업데이트하고 - 상기 선택된 페이지의 위치는 유지됨 -,
    상기 유지 페이지의 제1 부분의 내용을 상기 제1 데이터베이스 메모리의 미사용 페이지를 포함하는 제2 새도우 페이지에 저장하며,
    상기 제1 새도우 페이지의 내용 및 상기 제2 새도우 페이지의 내용을 상기 데이터베이스의 제2 데이터베이스 메모리에 저장하고,
    상기 유지 페이지의 제2 부분의 내용을 상기 제2 데이터베이스 메모리에 저장하며,
    상기 제1 새도우 페이지의 내용 및 상기 제2 새도우 페이지의 내용을 상기 제2 데이터베이스 메모리의 동일한 각각의 위치에 저장하는 상기 동작을 반복하는,
    컨트롤러; 및
    상기 선택된 페이지가 상기 제1 새도우 페이지에 저장되는 것에 응답하여, 상기 제1 새도우 페이지가 사용된 페이지임을 표시하고,
    상기 제1 부분의 상기 내용이 상기 제2 새도우 페이지에 저장되는 것에 응답하여, 상기 제2 새도우 페이지가 사용된 페이지임을 표시하는,
    페이지 할당 표시자
    를 포함하고, 상기 페이지 할당 표시자는 상기 제1 데이터베이스 메모리의 각 페이지가 사용인지 또는 미사용인지를 표시하는 비트맵을 포함하고,
    상기 컨트롤러는 상기 표시하는 동작에 따라 상기 비트맵을 업데이트하고,
    상기 유지 페이지의 제1 부분은 상기 제1 데이터베이스 메모리 내의 데이터 페이지의 위치를 유지하는 적어도 하나의 매핑 테이블 페이지 및 각각의 매핑 테이블 페이지의 위치를 유지하는 디렉토리 페이지를 포함하고,
    상기 유지 페이지의 제2 부분은 상기 디렉토리 페이지의 위치를 유지하는 데이터베이스 헤더 페이지를 포함하는,
    데이터베이스에 액세스하는 시스템
  12. 제11항에 있어서,
    상기 반복하는 동작에 후속하여, 상기 페이지 할당 표시자는 상기 유지 페이지의 상기 제2 부분이 미사용 페이지임을 표시하는, 데이터베이스에 액세스하는 시스템.
  13. 삭제
  14. 제11항에 있어서,
    상기 제1 데이터베이스 메모리의 선택된 페이지의 상기 내용을 상기 제1 새도우 페이지에 저장하는 것은, 상기 컨트롤러가 상기 데이터 페이지의 내용을 상기 제1 새도우 페이지에 저장하는 것을 포함하는, 데이터베이스에 액세스하는 시스템.
  15. 제11항에 있어서,
    상기 유지 페이지의 내용을 압축하는 데이터 압축기를 더 포함하는, 데이터베이스에 액세스하는 시스템.
  16. 데이터베이스에 액세스하는 방법에 있어서,
    상기 데이터베이스의 선택된 데이터 페이지의 내용을 제1 새도우 페이지에 저장하는 단계 - 상기 제1 새도우 페이지는 상기 데이터베이스의 미사용 페이지를 포함함 -;
    상기 선택된 데이터 페이지의 위치 및 상기 제1 새도우 페이지의 위치를 상기 데이터베이스의 매핑 테이블 페이지에 유지하는 단계;
    각각의 매핑 테이블 페이지의 위치를 상기 데이터베이스의 디렉토리 페이지에 유지하는 단계;
    상기 디렉토리 페이지의 위치를 상기 데이터베이스의 데이터베이스 헤더 페이지에 유지하는 단계;
    상기 제1 새도우 페이지, 상기 매핑 테이블 페이지, 및 상기 디렉토리 페이지의 내용을 상기 데이터베이스의 지속성 데이터베이스 메모리에 저장하는 단계;
    상기 유지 페이지의 제2 부분의 내용을 상기 지속성 데이터베이스 메모리에 저장하는 단계; 및
    상기 제1 새도우 페이지의 상기 내용 및 상기 유지 페이지의 제1 부분의 상기 내용을 상기 지속성 데이터베이스 메모리에 재차 저장하는 단계
    를 포함하고,
    상기 유지 페이지의 제1 부분은 상기 제1 데이터베이스 메모리 내의 데이터 페이지의 위치를 유지하는 적어도 하나의 매핑 테이블 페이지 및 각각의 매핑 테이블 페이지의 위치를 유지하는 디렉토리 페이지를 포함하고,
    상기 유지 페이지의 제2 부분은 상기 디렉토리 페이지의 위치를 유지하는 데이터베이스 헤더 페이지를 포함하는,
    데이터베이스에 액세스하는 방법.
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
KR1020040038694A 2003-05-30 2004-05-29 새도우 페이징을 위한 데이터베이스에 액세스하는 방법, 컴퓨터 판독가능 저장 매체, 및 데이터베이스에 액세스하는 시스템 KR101066783B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/448,585 2003-05-30
US10/448,585 US7389308B2 (en) 2003-05-30 2003-05-30 Shadow paging

Publications (2)

Publication Number Publication Date
KR20040103470A KR20040103470A (ko) 2004-12-08
KR101066783B1 true KR101066783B1 (ko) 2011-09-21

Family

ID=33131613

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040038694A KR101066783B1 (ko) 2003-05-30 2004-05-29 새도우 페이징을 위한 데이터베이스에 액세스하는 방법, 컴퓨터 판독가능 저장 매체, 및 데이터베이스에 액세스하는 시스템

Country Status (5)

Country Link
US (1) US7389308B2 (ko)
EP (1) EP1482422A3 (ko)
JP (1) JP4544910B2 (ko)
KR (1) KR101066783B1 (ko)
CN (1) CN100517305C (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7185029B1 (en) * 2003-06-27 2007-02-27 Unisys Corporation Method and apparatus for maintaining, and updating in-memory copies of the first and second pointers to reference the new versions of the first and second control structures that indicate available and allocated portions of usable space in the data file
JP4537893B2 (ja) * 2004-06-23 2010-09-08 株式会社リコー 情報処理装置、移動履歴管理方法
US7395405B2 (en) * 2005-01-28 2008-07-01 Intel Corporation Method and apparatus for supporting address translation in a virtual machine environment
US7392263B2 (en) * 2005-02-28 2008-06-24 Microsoft Corporation File system represented inside a database
US20070005625A1 (en) * 2005-07-01 2007-01-04 Nec Laboratories America, Inc. Storage architecture for embedded systems
JP4813924B2 (ja) * 2006-02-28 2011-11-09 株式会社日立製作所 データベース管理システム、ストレージ装置、ディザスタリカバリシステム及びデータベースのバックアップ方法
US9104962B2 (en) * 2007-03-06 2015-08-11 Trion Worlds, Inc. Distributed network architecture for introducing dynamic content into a synthetic environment
US8898325B2 (en) * 2007-03-06 2014-11-25 Trion Worlds, Inc. Apparatus, method, and computer readable media to perform transactions in association with participants interacting in a synthetic environment
DE102008024809B3 (de) * 2008-05-23 2009-11-19 Universität Konstanz Verfahren zur Speicherung einer Mehrzahl von Revisionen von baumstrukturartig verknüpften Datenfamilienteilen
KR101587995B1 (ko) * 2009-10-28 2016-01-22 삼성전자주식회사 적응적 로깅 장치 및 방법
US9104690B2 (en) * 2011-01-27 2015-08-11 Micron Technology, Inc. Transactional memory
US9075708B1 (en) 2011-06-30 2015-07-07 Western Digital Technologies, Inc. System and method for improving data integrity and power-on performance in storage devices
US20140075086A1 (en) 2012-09-13 2014-03-13 International Business Machines Corporation Durable transactions with storage-class memory
US9218279B2 (en) 2013-03-15 2015-12-22 Western Digital Technologies, Inc. Atomic write command support in a solid state drive
US9170938B1 (en) 2013-05-17 2015-10-27 Western Digital Technologies, Inc. Method and system for atomically writing scattered information in a solid state storage device
JP6334824B2 (ja) 2015-07-16 2018-05-30 東芝メモリ株式会社 メモリコントローラ、情報処理装置および処理装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5724581A (en) 1993-12-20 1998-03-03 Fujitsu Limited Data base management system for recovering from an abnormal condition
KR19980034995A (ko) * 1996-11-11 1998-08-05 양승택 공통 블럭 레지스터 내장 메모리의 구조와 이를 이용한 그림자 페이지 회복 구조 및 회복 기법
KR20010055981A (ko) * 1999-12-13 2001-07-04 오길록 안전기억장치를 이용한 주기억장치 상주형 데이터베이스회복 방법
KR100365891B1 (ko) 2000-12-13 2002-12-27 한국전자통신연구원 주기억장치 상주형 데이터베이스 시스템에서 로그 처리를하지 않는 백업/회복 장치 및 그 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5724581A (en) 1993-12-20 1998-03-03 Fujitsu Limited Data base management system for recovering from an abnormal condition
KR19980034995A (ko) * 1996-11-11 1998-08-05 양승택 공통 블럭 레지스터 내장 메모리의 구조와 이를 이용한 그림자 페이지 회복 구조 및 회복 기법
KR20010055981A (ko) * 1999-12-13 2001-07-04 오길록 안전기억장치를 이용한 주기억장치 상주형 데이터베이스회복 방법
KR100365891B1 (ko) 2000-12-13 2002-12-27 한국전자통신연구원 주기억장치 상주형 데이터베이스 시스템에서 로그 처리를하지 않는 백업/회복 장치 및 그 방법

Also Published As

Publication number Publication date
EP1482422A2 (en) 2004-12-01
KR20040103470A (ko) 2004-12-08
US20040243535A1 (en) 2004-12-02
CN100517305C (zh) 2009-07-22
CN1573747A (zh) 2005-02-02
JP2004362570A (ja) 2004-12-24
EP1482422A3 (en) 2005-12-21
US7389308B2 (en) 2008-06-17
JP4544910B2 (ja) 2010-09-15

Similar Documents

Publication Publication Date Title
KR101066783B1 (ko) 새도우 페이징을 위한 데이터베이스에 액세스하는 방법, 컴퓨터 판독가능 저장 매체, 및 데이터베이스에 액세스하는 시스템
US6535869B1 (en) Increasing efficiency of indexing random-access files composed of fixed-length data blocks by embedding a file index therein
US6549918B1 (en) Dynamic information format conversion
EP1721261B1 (en) System and method for recovery units in databases
KR100210208B1 (ko) 객체 지향 환경에서 지속성의 속성들을 인에이블링하는 방법 및 장치
US7440966B2 (en) Method and apparatus for file system snapshot persistence
US6374250B2 (en) System and method for differential compression of data from a plurality of binary sources
US7630998B2 (en) Performing a deletion of a node in a tree data storage structure
US5291601A (en) Shared libraries implemented with linking program loader
US6332172B1 (en) Method and system for virtual memory compression in an embedded system
EP0453707A2 (en) Method and means for managing space re-use in a shadow written B-tree via free space lists
US20060282481A1 (en) Implementing a tree data storage structure in a distributed environment
US6195107B1 (en) Method and system for utilizing virtual memory in an embedded system
JPH04275684A (ja) 図形情報データベース構築方法およびその方法が適用される装置
EP1482423B1 (en) System and method for resizing a database
US10901643B2 (en) Using log objects in object storage for durability of file objects in volatile memory
JP2005025750A (ja) トランザクションの整合性を保つ書き込み時コピーのデータベース
US6996682B1 (en) System and method for cascading data updates through a virtual copy hierarchy
US7272698B2 (en) Heap memory management
JP2002501258A (ja) ファイル・システムにおけるネーティブ・データ署名
CN111597076B (zh) 操作数据的方法和装置以及管理持久化跳表的方法和装置
US7293134B1 (en) System and method for an enhanced snapshot pointer
US20040267827A1 (en) Method, apparatus, and program for maintaining quota information within a file system
CN112740186A (zh) 对存储段应用日志
CN116431848B (zh) 一种基于数据污染传播分析的纹理动态索引方法

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150819

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160818

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170818

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180816

Year of fee payment: 8