JP2004362570A - シャドウ・ページング - Google Patents

シャドウ・ページング Download PDF

Info

Publication number
JP2004362570A
JP2004362570A JP2004160180A JP2004160180A JP2004362570A JP 2004362570 A JP2004362570 A JP 2004362570A JP 2004160180 A JP2004160180 A JP 2004160180A JP 2004160180 A JP2004160180 A JP 2004160180A JP 2004362570 A JP2004362570 A JP 2004362570A
Authority
JP
Japan
Prior art keywords
page
shadow
database
contents
storing
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
JP2004160180A
Other languages
English (en)
Other versions
JP4544910B2 (ja
Inventor
Steven J Bailey
ジェイ.ベイリー スティーブン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2004362570A publication Critical patent/JP2004362570A/ja
Application granted granted Critical
Publication of JP4544910B2 publication Critical patent/JP4544910B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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

【課題】 アトミック・トランザクションと永続トランザクションの達成に使用され、データベースでページ操作する機能を提供するシャドウ・ページを提供すること。
【解決手段】 トランザクション中、その影響を受けるページは、データベース・ファイルから揮発性メモリなどの作業空間にコピーされ、そこで変更される。トランザクションがコミットされると、それによる変更済みページすべてが作業空間からデータベース・ファイルの未使用ページに書き込まれる。トランザクション実行中、データベース・ファイルは、変更されたページの元のバージョンで、作業空間にコピーされる前に存在したバージョンを依然として収容しているので、ユーザに公開されるデータベースの状態はトランザクション以前に存在した状態である。トランザクションが完了する前、または障害から復元する際にユーザがデータベースにアクセスした場合、トランザクションは未生起のように見える。
【選択図】 図1

Description

本発明は、一般に、メモリの利用に関し、より詳細には、データベースでトランザクションをコミット(確定)することに関する。
現在、データベースおよびデータベース製品は一般的に使用されている。需要が伸びているのはモバイル・データベース製品である。モバイル・データベース製品はサイズの小ささと携帯性から人気がある。しかし、モバイル・データベース製品はメモリが限られている。データベース製品の望ましい機能には、アトミック・トランザクション(atomic transaction)および永続トランザクション(durable transaction)を実行する機能が含まれる。アトミック・トランザクションは部分的にコミットすることができないトランザクションである。つまり、アトミック・トランザクションは、完全に実行されるか、または全く実行されないかのどちらかである。永続トランザクションは、データベースの状態の変化が永続的なトランザクションである。データベースのもう1つの望ましい機能は、停電、ディスクの破損などのような障害から復元する機能である。アトミック・トランザクションおよび永続トランザクションを実行し、安定したデータベースの復元を提供する現行のシステムは、複雑になり大量のメモリを必要とする傾向がある。複雑でメモリ集約的なプロセスは、モバイル・データベース製品のようにメモリ量の限られた製品には不向きである。
アトミック・トランザクションおよび永続トランザクションを実行し、メモリ量の限られたデバイスでの予期せぬ障害から確実に復元する手段を提供する技術が求められている。
本発明は、予期せぬ障害の有害な作用を軽減しながら、データベースにアクセスする技術を提供する。この技術は、比較的小さなソフトウェア・コードを使用し、したがって、ハンドヘルド・デバイスおよび/またはモバイル・データベース製品(例えば、SQL−CE)のようなメモリ量または速度の限られた電子デバイスには特に適したものとなっている。本発明は、トランザクションのコミット中にシステム障害が発生したというイベントでトランザクションをロールバックすることができるように、シャドウ・ページングを使用してアトミック・トランザクションが完了するまでデータベースの現在の状態を維持するための効率的な手段を提供する。トランザクションが完了すると、データベースの新しい状態が使用可能となる。
トランザクション中、そのトランザクションの影響を受けたページは、データベース・ファイルから揮発性メモリのような作業空間にコピーされ、その作業空間で変更される。トランザクションがコミットされると、そのトランザクションによって変更されたページすべてが作業空間からデータベース・ファイルの未使用ページに書き込まれる。トランザクションの実行中、データベース・ファイルは変更されたページの元のバージョンを依然として作業空間にコピーされる前の状態で収容しているので、ユーザに公開されるデータベースの状態はトランザクション以前に存在したデータベースの状態である。したがって、トランザクション完了前にユーザがデータベースにアクセスした場合、ユーザにはトランザクションがまだ行われていないように見える。さらに、トランザクションの実行中に障害が発生した場合、復元の際にシステムはトランザクション開始以前の状態にある。例えば、障害(例えば、ディスク障害、電力損失、マシンクラッシュ)がデータベースへのページの書き込み中に発生した場合、データベースは依然として一貫性のある状態(consistent state)にある。
シャドウ・ページングを実行する方法の一例としては、データベース・ファイルの選択されたページの内容(contents)はデータベース・ファイルの(第1のシャドウ・ページと称される)未使用ページに格納される。この第1のシャドウ・ページは使用済みファイルと宣言される。データベース・ファイル内のページの位置を維持するためのメンテナンス・ページ(データベース・ヘッダー・ページ、ディレクトリ・ページ、マッピング・テーブル・ページ)は、データベース・ファイルの第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)のようにメモリ量が限られた電子デバイスには特に適したものとなっている。データベース製品の重要な機能には、アトミックおよび永続トランザクションを実行する機能が含まれる。アトミック・トランザクションは部分的にコミットすることができないトランザクションであり、つまり、アトミック・トランザクションは、完全に実行されるか、または全く実行されないかのどちらかである。永続トランザクションは、データベースの状態の変化が、トランザクションの実行直後にシステム・クラッシュがあったとしても、結果的に得られるデータベースのトランザクション後の状態は存続するという意味で、永続的なトランザクションである。シャドウ・ページングは、アトミック・トランザクションおよび永続トランザクションを実行するための機構を提供する。
図1は、シャドウ・ページングを実行することのできるデータベース構成例を示している。一実施形態では、図1に示す構造のデータベースが変更された場合にシャドウ・ページングを使用することができ、本発明は本明細書ではこのようなデータベースのコンテクストで説明する。しかし、本明細書に記載のシャドウ・ページングはデータベース・アプリケーションに限定されず、メモリ利用を含めて様々な他のシナリオでも使用することができるということを理解されたい。
図1に示すページはデータベース・ファイルのページであり、これは、データベース・ヘッダー・ページ12、ディレクトリ・ページ14、少なくとも1つのマッピング・テーブル・ページ16、および少なくとも1つのユーザ・データ・ページ18を含む。図1に示すデータベース・ファイルのページは、メモリまたはストレージのページを含んでいる。このようなメモリまたはストレージは、メモリの特定のタイプまたはクラスには限定されないが、半導体メモリ、磁気メモリ(例えば、ディスク)、光メモリ、機械的メモリ、ランダムアクセスメモリ(RAM)、揮発性メモリ、および不揮発性メモリ、またはデータを格納することのできるいかなる他のタイプのデバイスでも含むことができる。以下の説明では、「メモリのページ」という用語は従来の「メモリ」デバイス(RAMまたはROMのような)に限定されず、すべてのタイプのデータ記憶装置を含むものと解釈されたい。
図1に示したページ構造は比較的少量のメモリを使用して実装することができる。例えば、ページのサイズが4096バイトであり、データベース・ファイルの最大サイズが232バイト(4ギガバイト)である場合、その結果得られるファイルのページの最大数は220ページである。したがって、マッピング・テーブル・ページ16は最大220項目(1ページ当たり1つのエントリ)を格納する。ファイルにおけるページの物理位置がバイトのオフセットを使用して特定される場合、各ページを表すために32ビットが使用される。ページのサイズが増えるに従いページのオフセットを格納することにより、これはページあたり20ビットまで低減することができる。したがって、マッピング・テーブル・ページ16は(220)×20ビットの空間を使用するが、これは2,621,440バイトとなる。一実施形態では、マッピング・テーブル16は一組のページとしてデータベース・ファイルに格納されている。マッピング・テーブル・ページが4096バイトであり、ページの物理位置を格納するために20ビットが使用される場合、マッピング・テーブル・ページあたり最大1638ページを参照することができる。したがって、最大220ページを参照するために、最大641のマッピング・テーブル・ページを使用することができる。一般的なデータベース・ファイルは4ギガバイトより遥かに小さく、したがってより少ないマッピング・テーブル・ページしか使用しない。上記のように、データベース・ファイル内でマッピング・テーブル・ページ16の物理位置を追跡するためにディレクトリ・ページ14が使用される(例えば、マッピング・テーブル・ページ16が変更され、新しい位置にフラッシュされる場合)。上記の実施例によれば、ディレクトリ・ページ14は、データベース・ファイルの各マッピング・テーブル・ページ16の物理位置を追跡する20ビットのエントリーを有する。ヘッダー・ページ12、ディレクトリ・ページ14、およびマッピング・テーブル・ページ16は、ユーザ・データ・ページ18の数と比べて比較的少量のディスク空間(メモリ)しか消費しない。例えば、1,047,933(220引く643)のユーザ・データ・ページ18は643の「メンテナンス・ページ」によって維持することができる。(本明細書で使用する「メンテナンス・ページ」とは、ユーザ・データではなく、データベース・システムによって使用される管理データを格納するページである。)図1の例では、ヘッダー・ページ12、ディレクトリ・ページ14、およびマッピング・テーブル・ページ16が「メンテナンス・ページ」である。)この結果、メンテナンス・ページはデータベース・ファイル空間全体の0.06%だけを消費することになる。上記の4096バイトのページと20ビットのデータ・タイプという値は一例であるということに留意されたい。上記ファイル構造の実装は、20ビットのデータ・タイプをよりサイズの小さいデータ・タイプに低減するためにデータ圧縮を使用することができることを想定している。
メンテナンス・ページは、図1に示すすべてのページの位置を維持する。データベース・ヘッダー・ページ12は、ディレクトリ・ページ14の位置を維持する。一実施形態では、ディレクトリ・ページ14の物理アドレスはデータベース・ヘッダー・ページ12の第1のセクタに格納され、データベース・ヘッダー・ページ12はデータベース・ファイルの開始に格納される。後述するように、これはトランザクションがアトミックであることを保証している。ディレクトリ・ページ14はマッピング・テーブル・ページ16の位置を維持する。マッピング・テーブル・ページ16はユーザ・データ・ページ18の位置を維持する。ユーザ・データ・ページ18は、例えば記録および/またはインデックス・キーのようなデータベース・データを収容することのできるページである。以下でより詳細に説明するように、図1に示すメモリページ構造はシャドウ・ページング中にメモリのページを追跡し維持するために使用される。
図1に示す構造は、ページを「論理」識別子によって識別することを可能にする。典型的なデータベース製品は、ファイル内のページの物理アドレスを表すページ識別子を使用する。例えば、典型的なデータベース製品は、データベース・ファイルの論理開始から参照されるオフセット値によって所与のページを特定することができる。ページは他のページを参照することができるので、これらの識別子はデータベース中の様々な場所に現れる場合がしばしばある。ページを特定するこの方式は、したがって、1つまたは複数のページが移動された時は何時でも新しい位置(例えば、新しいページ・オフセット値)を反映するために、移動されたページを参照するページ識別子すべてを更新する必要があるので、ページをファイルのある位置から別の位置に移動することを難しくする。しかし、図1の構造が使用される場合、所与のページを、ディレクトリ・ページおよび所与のページを指し示すマッピング・テーブル・ページ内の要素に基づいて識別することができる。例えば、所与のページは、ディレクトリ・ページへのオフセット、およびマッピング・テーブル・ページへのオフセットによって特定することができる。次いで所与のページは、(1)ディレクトリ・ページの指定のオフセットにあるポインタに従って特定のマッピング・テーブル・ページを探し出し、また(2)所与のページを見つけるために、探し出されたマッピング・テーブル・ページにあるポインタに従う、ことによって探し出される。したがって、ページは、その論理識別子は変更せずに、ディレクトリ・ページとマッピング・テーブルの適切なエントリーを単に更新することによって、データベース・ファイル内の異なる位置に移動することができる。この技術は、仮想メモリ・システムのアドレス変換テーブルの使用法に類似している。
以下でより具体的に説明するように、論理ページ識別子を使用することは、シャドウ・ページングの実装を容易とするので、本発明の一実施形態では、論理ページ識別子(ID)によって、データベース・ファイルのページが特定される。データベース内で、ページは、論理IDを介してアクセスされ、追跡される。ページの位置も、論理ページIDを使用することにより維持される。図2は、ユーザ・データ・ページ18の物理位置15をマッピングする論理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というページIDは643を含めて643までマッピング・テーブル・ページ16を参照させることができ、644と等しいかこれより大きなページIDはユーザ・データ・ページ18を参照させることができる。論理IDは、任意の適切な方法でも表現することができる。一実施形態で、論理IDは20ビットの符号なしの値として表現される。最下位の10ビットは、対応するマッピング・テーブル・ページ16の物理ページ・アドレスを収容するディレクトリ・ページ14の項目に対応する。最上位の10ビットは、対応するユーザ・データ・ページ18の物理ページ・アドレスを収容する適切なマッピング・テーブル・ページ16の項目に対応する。
論理IDは、任意の適切な方法でも物理アドレスにマップすることができる。論理IDを物理アドレスにマップする方法の一例を擬似コード形式で次の表1に示す。表1に示す技術は、物理アドレスの割り当てに上記の論理IDを使用する。
表1
Figure 2004362570


Figure 2004362570
以下でより具体的に説明するように、本発明の一実施形態によるシャドウ・ページングは使用可能なページにページの内容を書き込むことを伴う。このプロセス中、一部のページはフリーとなり、それ以外のページは使用済みになる。これを達成するために割り当てインジケータ(allocation indicator)が提供される。割り当てインジケータは、論理IDの状態(使用可能か使用不可能か)と物理アドレスを指し示す。状態を指し示す任意の適切な手段でも使用することができる。一実施形態では、論理IDの割り当て状態を指し示すためにビットマップが使用される。論理ID割り当てビットマップは、メンテナンス・ページ(マッピング・テーブル・ページ16、ディレクトリ・ページ14、およびデータベース・ヘッダー・ページ12)のエントリーごとに1ビットを収容する。一実施形態では、1にセットされたビットは、対応するエントリーが割り当てられていること(使用可能でないこと)を指し示す。0にセットされたビットは、対応するエントリーがフリーであること(使用可能であること)を指し示す。シャドウ・ページング・プロセス中、0のビットマップ値をサーチすることによって使用可能なページを探し出すことができる。見つかったページが現在割り当てられていること(使用不可能であること)を指し示すために、対応するビットマップ・エントリーが1に変更される。
一実施形態では、論理ID割り当てビットマップは一組のページとしてデータベース・ファイルに格納される。別の実施形態では、このビットマップはデータベース・ファイルには格納されず、データベースが開かれた時に初期化される。初期化は、マッピング・テーブルのページ・エントリーすべてを列挙することによって(例えば、データベース・ヘッダー・ページ12、ディレクトリ・ページ14、およびマッピング・テーブル・ページ16の各エントリーを読み取ることによって)達成することができる。ページ・エントリーがページの有効な物理アドレスを収容している場合、そのページ項目に対応するページIDは割り当て済みとマーク付けされる。すべてのエントリーが一度スキャンされると、ビットマップはページIDの現在の割り当て状態を指し示す。
この割り当てビットマップはデータベース・ファイルに格納することができる。例えば、最大データベース・ファイル・サイズが232バイト(4ギガバイト)であり、データベース・ページのサイズが4096バイトの場合、最大220の論理ページIDが生じる。したがって、論理ページID割り当てビットマップは131,072バイトを使用して実装することができる。
割り当てビットマップを使用することにより、メンテナンス・ページを変更したり読み取ったりせずに論理ページIDを解放し、かつ/または割り当てることができる。このことは、複数のトランザクションがデータベースのページIDを同時に割り当てたり、解放したりすることを可能にすることにより、同時実行を改善する。ビットマップとページのエントリーはすべてデータベース・ファイルに収容されているので、割り当てビットマップを使用するは、論理ページIDを割り当てたり、解放したりするための堅牢な機構も提供する。この機構は、トランザクションがディスクにフラッシュされた後で、フリーの物理ページ・アドレスはフリーとマーク付けられ、割り当て済み物理ページ・アドレスは割り当て済みとマーク付けされるという点で堅牢である。そうでない場合、動作が失敗するとフラッシュ全体をロールバックしなければならず、これは、更新されたディレクトリ・ページ(また、マッピング・テーブル・ページなど)の新しい物理アドレスを有するデータベース・ヘッダー・ページが既にフラッシュされているので、これは非常に難しい。
ビットマップが一度メモリに読み込まれるか、またはページ項目をスキャンすることによりビットマップが計算されると、ページの割り当ておよび解放は、割り当てられ/解放されるべきページに対応するビットに到達するまでビットマップのビット数を計数することにより達成することができる。例えば、上記例に記載したページ・サイズとデータベース構造を使用すると、0にセットされたビットマップに関して、ビット644と等しいかこれよりも大きな最初のビットを探すことにより、ユーザ・データ・ページに対応するページIDを割り当てることができる。上記の例では644よりも少ないページIDはすべてメンテナンス・ページ用に確保されているので、644という数を選んだ。論理ページIDを解放すると、ビットは単に1から0に変更される。
論理ページIDを割り当て、解放することに関して上述したビットマップ・タイプ機構と同じビットマップ・タイプ機構が、物理ページ・アドレスを割り当て、解放するために適用可能である。この場合、ビットマップはデータベース・ファイルの各物理ページ・アドレスに対して1つのビットを有する。一実施形態では、1にセットされたビットは物理ページ・アドレスが割り当てられていることを指し示す。0にセットされたビットは物理ページ・アドレスが解放されていることを指し示す。
物理ページ・アドレスはデータベース内のページの位置である。トランザクションがコミットしてページがディスク上でシャドウされる場合、またシャドウ・プール内でダーティなページを置き換える場合、物理ページ・アドレスが割り当てられる。ダーティなページとは変更されたページである。本明細書に記載するシャドウ・ページングは、空の/未使用のページの物理ページ・アドレスを効率的に発見する機能を提供する。一実施形態では、この物理アドレス割り当てビットマップはデータベース・ファイルに格納されている。上記のように、この物理アドレス割り当てビットマップは最大131,072バイトのサイズで実装することができる。さらに別の実施形態では、データベース・ヘッダー・ページ12、ディレクトリ・ページ14、およびマッピング・テーブル・ページ16をスキャンすることによってデータベースが開かれる場合、物理アドレス割り当てビットマップが計算される。ビットマップが計算される場合、同じページの組がスキャンされるので、このビットマップは論理ページIDビットマップが計算されるのと同時に計算することができる。
物理ページ・アドレスを解放する技術は、上記の論理ページIDを解放することと同じである。物理ページ・アドレスを割り当てる技術は、論理ページIDの割り当てとほぼ同じである。違うのは、既存の物理ページがフリーでない場合はデータベース・ファイルが増大し(すなわち、いくつかの物理ページがファイルの最後に追加され)、データベース・ファイルに付け加えられた新しい物理ページ・アドレスは、アドレス・ビットマップでフリーの物理ページ・アドレスとマーク付けされる。
最初にデータベースを開いた際に論理ページIDビットマップおよび物理ページ・アドレス・ビットマップを初期化する技術の一例を、擬似コード形式で次の表2に示す。
表2
Figure 2004362570



Figure 2004362570
Figure 2004362570
図5から図7は、シャドウイング・ページングを実行するプロセスの一例の流れ図である。上記のように、トランザクションがコミットされた場合、そのトランザクションによって変更されたすべてのページがデータベース・ファイル(第1のデータベース・メモリ)の未使用(フリー)ページに書き込まれる。トランザクションの実行中は、トランザクション以前のメモリの状態およびデータベースへのアクセスが維持される。図5から図7に示したプロセスを図1から図4に示した構成要素を一例として参照して以下で説明する。
マッピング・テーブル・ページ(例えば、マッピング・テーブル・ページ18)は、ステップ20で、データベース・ファイル内に生成される。これらのマッピング・テーブル・ページは、データベース・ファイルのユーザ・データ・ページ(例えば、ユーザ・データ・ページ18)の位置を維持するために使用される。マッピング・テーブル・ページによるユーザ・データ・ページの位置の維持は上記のようにして達成される。ディレクトリ・ページ(例えば、ディレクトリ・ページ14)が、ステップ22で、データベース・ファイル内に生成される。ディレクトリ・ページは、マッピング・テーブル・ページの位置を維持するために使用される。ディレクトリ・ページによるマッピング・テーブル・ページの位置の維持は、上記のようにして達成される。データベース・ヘッダー・ページ(例えば、データベース・ヘッダー・ページ12)は、ステップ24で、データベース・ファイル内に生成される。データベース・ヘッダー・ページは、ディレクトリ・ページの位置を維持するために使用される。データベース・ヘッダー・ページによるディレクトリ・ページの位置の維持は上記の通りである。任意選択で、上記のように、ページ割り当てビットマップがステップ26で生成される。このビットマップの生成は、論理IDの割り当てを指し示すビットマップ、物理アドレスの割り当てを指し示すビットマップ、またはこれらの組み合わせを含むことができる。通常、データベース・ファイルが最初に作成され、そのデータベース・ファイルにまだデータが入れられる前にメンテナンス・ページおよびビットマップが生成される。
ステップ28で、データベース・ファイルで変更されるべきユーザ・データ・ページ(ダーティなページ)の内容がデータベース・ファイルの未使用ページに格納される。一実施形態では、変更されたページは、トランザクションがコミットされるまで揮発性メモリ内に維持される。トランザクションがコミットされると、ダーティなユーザ・データ・ページが揮発性メモリからデータベース・ファイルの未使用ページに書き込まれる。ダーティなページの内容が格納される未使用ページはシャドウ・ページと称される。したがって、ダーティなユーザ・データ・ページは作業空間の未使用ページ(シャドウ・ページ)に書き込まれる。シャドウ・ページには、元のユーザ・データ・ページがフリーとマーク付けられる前に書き込まれ、したがって元のユーザ・データ・ページは一定期間維持される。この動作が完了前に失敗した場合でも、未使用ページだけが上書きされることになり、ヘッダー、ディレクトリ、およびマッピング・テーブルはシャドウ・ページではなく古いページの存在だけを依然として反映することになるので、データベースは依然として一貫性のある状態(consistent state)にある。一実施形態では、これは、元のユーザ・データ・ページを作業空間にコピーすることによって達成される。変更は作業空間内で行われ、次いでトランザクションがコミットされる前に、変更された作業空間ページがフリー・ページ(シャドウ・ページ)にコピーされる。
ステップ30で、ユーザ・データ・シャドウ・ページは割り当て中とマーク付けされる。すなわち、既にダーティなページが書き込まれているページは最早フリーではない。この割り当てられた状態は適切な機構によって指し示される。このような機構の1つが割り当てビットマップである。したがって、一実施形態では、ステップ30で、シャドウ・ページの割り当て状態は割り当てビットマップにより指し示される。各ユーザ・データ・ページが新しい物理ページ・アドレスに書き込まれるので(シャドウされるので)、ステップ32で、ユーザ・データ・ページの新しい位置を反映するためにマッピング・テーブルのユーザ・データ・ページの対応するエントリーが更新される。ユーザ・データ・ページの以前の物理アドレス(内容が移動してきた元のアドレス)がステップ34で「割り当て済み」として維持される。すなわち、ユーザ・データ・ページの以前の物理アドレスはフリーであるとは宣言されない。ユーザ・データ・ページはまだ更新されていないので、データベース・システムは障害が発生した際にその以前の状態に復元することができる。したがって、ユーザ・データ・ページの古い物理アドレスは「saved off」であり、以下で説明するように、トランザクションの完了後、古い物理ページ・アドレスはフリーとマーク付けされる(ステップ58を参照のこと)。
ステップ36で、変更された(更新された)マッピング・テーブル・ページの内容はデータベース・ファイルの未使用ページ(マッピング・テーブル・シャドウ・ページ)に格納される。したがって、ダーティなマッピング・テーブル・ページがデータベース・ファイルの未使用ページ(シャドウ・ページ)に書き込まれる。シャドウ・ページは変更が行われる前に書き込まれ、したがって古いページが一定期間だけ維持される。この動作が完了前に失敗した場合、未使用ページしか上書きされないので、データベースは依然として一貫性のある状態(consistent state)にある。一実施形態では、これは、元のマッピング・テーブル・ページを作業空間にコピーすることにより達成される。トランザクションがコミットされる前に、変更が作業空間内で行われ、変更された作業空間ページがフリー・ページ(シャドウ・ページ)にコピーされる。ステップ38で、マッピング・テーブル・シャドウ・ページは割り当て中とマーク付けされる。すなわち、ダーティなページが既に書き込まれたページは最早フリーではない。この割り当てられた状態は任意の適切な機構によっても指し示される。そのような機構の1つが割り当てビットマップである。したがって、一実施形態では、マッピング・テーブル・ページの割り当て状態は、ステップ38で割り当てビットマップによって指し示される。ステップ40でマッピング・テーブル・シャドウ・ページの位置を反映させるために、ディレクトリ・ページ(例えば、ディレクトリ・ページ14)が更新される。したがって、各マッピング・テーブル・ページが新しい物理ページ・アドレスに書き込まれるので、マッピング・テーブル・ページの新しい位置を反映するためにディレクトリ・ページ内のマッピング・テーブル・ページの対応するエントリーが更新される。マッピング・テーブル・ページの以前の物理アドレス(内容の移動元)はステップ42で維持される。すなわち、以前のマッピング・テーブル・ページの物理アドレスは、フリーとは宣言されない。これによって、データベース・システムは、障害発生時にそれ以前の状態に復元することができる。したがって、マッピング・テーブル・ページの古い物理アドレスは「saved off」であり、以下で説明するように、トランザクションの完了後、古い物理ページ・アドレスはフリーとマーク付けされる(ステップ58を参照)。
ステップ44で、ディレクトリ・ページの内容がデータベース・ファイル内の未使用ページ(ディレクトリ・シャドウ・ページ)に格納される。シャドウ・ページには変更がなされる前に書き込まれ、したがって古いページは一定期間維持される。一実施形態では、これは元のディレクトリ・ページを作業空間にコピーすることによって達成される。変更は作業空間内で行われ、トランザクションがコミットされる前に、変更された作業空間ページがフリー・ページ(シャドウ・ページ)にコピーされる。ステップ46で、ディレクトリ・シャドウ・ページは割り当て中とマーク付けされる。すなわち、ディレクトリ・ページが既に書き込まれているページは、最早、フリーではない。この割り当てられた状態は任意の適切な機構によっても指し示される。1つのこのような機構は割り当てビットマップである。したがって、一実施形態では、ステップ46でディレクトリ・ページの割り当てられた状態は割り当てビットマップによって指し示される。ステップ48で、ディレクトリ・シャドウ・ページの位置を反映するために、データベース・ヘッダー・ページ(例えば、データベース・ヘッダー・ページ12)が更新される。したがって、ディレクトリ・ページが新しい物理アドレスに書き込まれるので、ディレクトリ・ページの新しい位置を反映するために、データベース・ヘッダー・ページ内のディレクトリ・ページの対応するエントリーが更新される。ステップ50でディレクトリ・ページの以前の物理アドレス(内容の移動元アドレス)が維持される。すなわち、以前のディレクトリ・ページの物理アドレスは、フリーとは宣言されない。これによって、データベース・システムは、障害発生時にそれ以前の状態に復元することができる。したがって、ディレクトリ・ページの古い物理アドレスは「saved off」であり、以下で説明するように、トランザクション完了後、古い物理ページ・アドレスはフリーとマーク付けされる(ステップ58を参照)。
ステップ52で、データベース・ファイルのシャドウ・ページのすべての内容(ユーザデータ・シャドウ・ページ、マッピング・テーブル・シャドウ・ページ、ディレクトリ・シャドウ・ページ)は、データベース永続メモリに格納される(フラッシュされる)。データベース・ファイル・シャドウがフラッシュされて、したがって以前のステップからの変更のすべては永続ストレージ機構(例えば、ディスク)に固定(harden)される。データベース・ヘッダー・ページは、ステップ54でデータベースに格納される(フラッシュされる)。ステップ56で、シャドウ・ページが再度フラッシュされる。このダブル・フラッシュ技術は、データベース・システムが障害発生時の復元の際に一貫性のある状態になることを保証する。データベース・ヘッダーに書き込まれるまで、データベース・ファイルに対して危険な書き込みはなされていない。他のトランザクションは、データベース・ヘッダー・ページ、ディレクトリ・ページ、およびマッピング・テーブル・ページの古いまたは現在のコミットされたバージョンを使用していてよい。データベース・ヘッダー・ページがコミットされると、新しいディレクトリ・ページが起動され、これによって新しいマッピング・テーブル・ページが起動され、これによってユーザ・データ・ページの新しいバージョンが起動される。例えば、データベース・ヘッダー・ページの書き込み後にのみフラッシュが行われた場合、ディレクトリ・ページがディスク上で固定される前にデータベース・ヘッダー・ページがディスク上で固定された(ディレクトリ・ページの新しい位置を保存して)可能性がある。これは、データベース・システムの状態を一貫性のないものとする可能性がある。ステップ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の新しい位置を表すために、対応するマッピング・テーブル・ページが変更される。ページ5および6に書き込み中のユーザ・ページ1および2は、グレイの斜線で示したユーザ・ページから出ている点線矢印により示される。ユーザ・ページ1および2の新しい位置を表すよう変更中のマッピング・ページ2は、グレイの斜線で示したマッピング・テーブル・ページから出ている実線矢印により示される。マッピング・テーブル・ページを変更することにより、それは現在のトランザクションでダーティなページとなる。このトランザクションの実行中、他のトランザクションはページ2(グレイの斜線)に格納されているマッピング・テーブル・ページを使用する。次に、変更されたマッピング・テーブル・ページは未使用ページに書き込まれる。図9に関しては、ページは各ステップでディスクに書き込まれる、ところが図5から図7に関する説明では、ページはすべてのメンテナンス・ページの更新後にディスクにフラッシュされるということに留意されたい。本発明によれば、どちらの技術も適切である。したがって、ページはプロセスの任意の適切な時点でもディスクに書き込むことができる。
図10は、未使用ページ7に書き込み中のマッピング・テーブル・ページ、およびマッピング・テーブル・ページの新しいアドレスを反映するために更新中のディレクトリ・ページを示している。この例では、1つのマッピング・テーブル・ページしか変更されていない。このプロセスは上記のステップと同様に実行される。マッピング・テーブル・ページはデータベース・ファイルの未使用ページに書き込まれ、マッピング・テーブル・ページの新しい位置を反映させるためにディレクトリ・ページが更新される。他のトランザクションは、それぞれページ1および2に置かれたディレクトリ・ページおよびマッピング・テーブル・ページのグレイの斜線で示したバージョンを依然として使用している。
次に、図11に示すようにディレクトリ・ページが未使用ページ(この実施例ではページ8)に書き込まれる。図11は、ディレクトリ・ページの新しい位置を反映するために更新中のデータベース・ヘッダー・ページも示している。次に、図12に示すように(上記のダブル・フラッシュ技術を使用して)データベース・ヘッダー・ページが書き込まれる。ヘッダー・ページが書き込まれ、ダブル・フラッシュ・プロセスが実行された後、トランザクションは正常にコミットされ、その結果がユーザに公開されるデータベースの状態に反映される(すなわち、この時点でデータベースのユーザはユーザ・データ・ページ、マッピング・テーブル・ページ、およびディレクトリ・ページになされた変更を「見る」ことができる)。図13に示すように、4つのページを新しい物理ページ・アドレスに移動した結果解放された物理ページ・アドレス(ページ1〜4)が割り当て解除される(使用可能とされる)。
図14は、シャドウ・ページングを実行するためのシステムのブロック図である。一実施形態では、システムはデータベースにアクセスするために使用され、このようなコンテクストで説明される。このシステムは、作業空間(第1のデータベース・メモリ)78、永続メモリ(persistent memory)(第2のデータベース・メモリ)80、ページ割り当てインジケータ72、コントローラ74、および付加的なデータ・コンプレッサ76を含んでいる。作業空間78および永続メモリ80は、半導体メモリ、磁気メモリ(例えば、ディスク)、光メモリ、またはこれらの組み合わせなど任意の適切なタイプのメモリを備えることができる。一般に、かつ好ましくは、永続メモリ80は、データを永続的に格納する機能を有する。したがって、通常の動作状況では、データが特に除去され、かつ/または書き換えられるまでは、永続メモリ80に書き込まれたデータは使用可能である。本明細書に記載するように、フラッシュおよびフラッシングという用語は、永続メモリ80にデータを送信することを表している。
ページ割り当てインジケータ72は、上記のように論理IDと物理アドレスの割り当て状態を指し示す機能を実行する。一実施形態では、ページ割り当てインジケータ72は上記のビットマップを含んでいる。データ・コンプレッサ76は任意選択である。データ・コンプレッサ76は、システムで使用されるメモリ・サイズを低減するために、作業空間78および/または永続メモリ80のデータを圧縮する。データ・コンプレッサ76は任意の適切なデータ圧縮技術でも組み込むことができる。
コントローラ74は、メンテナンス・ページ(データベース・ヘッダー・ページ、ディレクトリ・ページ、およびマッピング・テーブル・ページ)に関連付けられた機能の多くを実行し、上記のようにシャドウ・ページを実行するための各ステップの処理も制御する。コントローラ74は、データベース・ファイルでのページの位置を維持するためにメンテナンス・ページを生成する。また、コントローラは、選択されたページの内容も未使用ページ(シャドウ・ページ)に格納する。コントローラ74は、作業空間78でのシャドウ・ページの位置を反映させるためにメンテナンス・ページを更新する。コントローラ74は、メンテナンス・ページの内容も作業空間78の未使用ページに格納する。コントローラ74は、永続メモリ80に作業空間78の内容を格納する。コントローラ74は、上記のダブル・フラッシング・プロセスを制御する。
適切なコンピューティング・システム環境の概要
図15は、シャドウ・ページングのための方法およびシステムを実装することのできる適切なコンピューティング・システム環境100の一例を示している。コンピューティング・システム環境100は、適切なコンピューティング環境の一例にすぎず、表示要素を動的かつ個別に制御するための方法およびシステムの使用または機能の範囲に関していかなる限定をも示唆することを意図するものではない。また、コンピューティング環境100は、動作環境100例で示される構成要素のいかなる1つまたは組み合わせに関するいかなる依存または要求を有するものと解釈されるべきではない。
シャドウ・ページングの方法およびシステムは、多数の他の汎用または専用コンピューティング・システム環境または構成で動作可能である。表示要素を動的かつ個別に制御するための方法およびシステムで使用するために適している可能性のある良く知られたコンピューティング・システム、環境、および/または構成の例は、限定はしないが、パーソナル・コンピュータ、サーバ・コンピュータ、ハンドヘルドまたはラップトップ・デバイス、マルチ・プロセッサ・システム、マイクロ・プロセッサ・ベースのシステム、セットトップボックス、プログラム可能な家庭用電化製品、ネットワークPC、ミニ・コンピュータ、メインフレーム・コンピュータ、上記システムまたはデバイスのどれでも含む分散型コンピューティング環境などを含む。
シャドウ・ページングのための方法およびシステムは、コンピュータによって実行中のプログラム・モジュールのようなコンピュータ実行可能命令の一般的なコンテクストで説明することができる。一般に、プログラム・モジュールは、特定タスクを実行し、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。シャドウ・ページングのための方法およびシステムは、通信ネットワークまたは他のデータ伝送媒体を介してリンクされる遠隔処理装置によってタスクが実行される分散型コンピューティング環境でも実行することができる。分散型コンピューティング環境では、プログラム・モジュールおよび他のデータは、メモリ・ストレージ・デバイスを含めてローカルおよび遠隔コンピュータ記憶媒体の両方に置くことができる。
図15を参照すると、シャドウ・ページングのための方法およびシステムを実装するためのシステム例は、コンピュータ110の形式の汎用コンピューティング・デバイスを含む。コンピュータ110の構成要素は、限定はしないが、処理装置120、システム・メモリ130、およびシステム・メモリ130を含めて様々なシステム構成要素を処理装置120に結合するシステム・バス121を含むことができる。システム・バス121は、メモリ・バスまたはメモリ・コントローラ、周辺バス、および様々なバス・アーキテクチャのどれかを使用する周辺バスを含めて複数タイプのバス構造のどれであってもよい。限定ではなく一例として、このようなアーキテクチャは、業界標準アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ電子装置規格化協会(VESA)ローカル・バス、および周辺部品相互接続(PCI)バス(Mezzanineバスとしても知られる)を含む。
コンピュータ110は、通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ110によってアクセスすることのできるいかなる使用可能な媒体でもあってよく、揮発性/不揮発性媒体、取外し可能/取外し不可能媒体の両方を含む。限定ではなく一例として、コンピュータ可読媒体はコンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラム・モジュール、または他のデータのような情報の記憶のためのいかなる方法または技術でも実装される揮発性/不揮発性、取外し可能/取外し不可能媒体を含む。コンピュータ記憶媒体は、限定はしないが、RAM、ROM、EEPROM、フラッシュ・メモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージ、または他の磁気ストレージ・デバイス、または所望の情報を格納するために使用することができ、コンピュータ110によってアクセスすることのできるいかなる他の媒体をも含む。通信媒体は、通常、コンピュータ可読命令、データ構造、プログラム・モジュール、もしくは搬送波または他の転送機構のような変調されたデータ信号形式の他のデータを実施し、いかなる情報配信媒体をも含む。「変調されたデータ信号」という用語は、その特徴的なセットの1つまたは複数を有し、情報を信号に符号化するような方法で変更される信号を意味する。限定ではなく一例として、通信媒体は、有線ネットワークまたは直接有線接続のような有線媒体、およびアコースティック、RF、赤外線のような無線媒体または他の無線媒体を含む。これら媒体のどの組み合わせでも、コンピュータ可読媒体の範囲に含まれることを理解されたい。
システム・メモリ130は、ROM 131およびRAM 132のような揮発性および/または不揮発性メモリ形式のコンピュータ記憶媒体を含む。起動時などにコンピュータ110の素子間で情報を転送することに役立つ基本ルーチンを収容している基本入出力システム133(BIOS)は、通常、ROM 131に格納されている。RAM 132は、通常、処理装置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)のような他のインターフェースおよびバス構造によって接続することができる。モニタ191または他のタイプの表示装置も、ビデオ・インターフェース190のようなインターフェースを介してシステム・バス121に接続されている。モニタに加え、コンピュータは、出力周辺インターフェース190を介して接続することのできるスピーカ197およびプリンタ196のような他の周辺出力装置を含むこともできる。
コンピュータ110は、遠隔コンピュータ180のような1つまたは複数の遠隔コンピュータへの論理接続を使用してネットワーク接続された環境で動作することができる。遠隔コンピュータ180は、パーソナル・コンピュータ、サーバ、ルータ、ネットワークPC、ピア・デバイス、または他の共通ネットワーク・ノードであってよく、一般には上記でコンピュータ110に関して説明した要素の多くまたはすべてを含むが、但し図15にはメモリ・ストレージ・デバイス181しか示していない。図示した論理接続はローカル・エリア・ネットワーク(LAN)171およびワイド・エリア・ネットワーク(WAN)173を含むが、他のネットワークを含むこともできる。このようなネットワーク接続環境はオフィス、企業規模のコンピュータ・ネットワーク、イントラネット、およびインターネットでは一般的なものである。
LANネットワーク接続環境で使用される場合、コンピュータ110はネットワーク・インターフェースまたはアダプタ170を介してLAN 171に接続される。WANネットワーク接続環境で使用される場合、コンピュータ110は、通常、モデム172、またはインターネットのようなWAN 173を介して通信を確立するための他の手段を含む。内蔵型であっても外付けであってもよいモデム172は、ユーザ入力インターフェース160または他の適切な機構を介してシステム・バス121に接続することができる。ネットワーク接続された環境では、コンピュータ110に関して図示されたプログラム・モジュールまたはその一部は遠隔メモリ・ストレージ・デバイスに格納することができる。限定ではなく一例として、図15は、メモリ・デバイス181に常駐するものとして遠隔アプリケーション・プログラム185を示している。図示したネットワーク接続は一例であって、コンピュータ間で通信リンクを確立する他の手段を使用することができるということが理解されよう。
様々な分散型コンピューティング・ファームウェアは、パーソナル・コンピューティングおよびインターネットの集中に鑑みて既に開発されており、現在もなお開発中である。個人および企業ユーザにはどちらにも、アプリケーションおよびコンピューティング・デバイスのためのシームレスに相互運用可能かつインターネット対応のインターフェースが提供され、コンピューティング動作をますますウェブ・ブラウザまたはネットワーク指向にする。
例えば、MICROSOFT(登録商標)の.NETプラットフォームは、サーバ、ウェブ・ベースのデータ・ストレージのようなビルディング・ブロック・サービス、およびダウンロード可能なデバイス・ソフトウェアを含む。一般に、.NETプラットフォームは、(1)コンピューティング・デバイスの全範囲を協同で動作させ、ユーザ情報をそれらすべてに自動的に更新させ、同期させる機能、(2)HTMLよりもXMLをより多く使用することによって可能になるより多くのウェブ・サイト用対話機能、(3)例えば電子メールのような様々なアプリケーションまたはOffice.NETのようなソフトウェアの管理のための、中央開始点からユーザへのカスタマイズされたアクセスと製品およびサービスの配信とを特徴とするオンライン・サービス、(4)情報へのアクセスの効率および容易性ならびにユーザとデバイス間の情報の同期を向上させる集中型データ・ストレージ、(5)電子メール、ファックス、および電話のような様々な通信媒体を統合する機能、(6)開発者のための、再使用可能モジュールを作成し、それによって生産性を向上させ、プログラミング・エラー数を低減させる機能、および(7)多くの他のクロス・プラットフォーム統合機能を提供する。
以上、本明細書の実施形態をコンピューティング・デバイスに常駐するソフトウェアに関して説明したが、サービスが.NETの言語およびサービスならびに他の分散型コンピューティング・フレームワークのすべてによって実行され、それらでサポートされ、またはそれらを介してアクセスされるように、シャドウ・ページングのための方法およびシステムの1つまたは複数の部分をコプロセッサと要求側オブジェクトの間でオペレーティング・システム、アプリケーション・プログラム・インターフェース(API)、または「ミドルマン」オブジェクトを介して実装することもできる。
本明細書に記載のシャドウ・ページングの方法は、これらのコンピュータで実施されるプロセスとこれらのプロセスを実行するためのシステムの形式で実施することができる。本明細書に記載のシャドウ・ページングの方法は、フロッピー(登録商標)ディスケット、読み取り専用メモリ(ROM)、CD−ROM、ハード・ドライブ、高密度ディスク、またはいかなる他のコンピュータ可読記憶媒体のような有形媒体形式で実施されるプログラム・コードの形式で実施してもよく、コンピュータ・プログラム・コードがコンピュータにロードされ、コンピュータによって実行された場合、そのコンピュータは本発明を実行するためのシステムになる。本明細書に記載のシャドウ・ページングの方法は、例えば記憶媒体に格納されていても、コンピュータにロードされ、かつ/またはコンピュータによって実行されても、または電気配線またはケーブル経由で、光ファイバを介して、または電磁放射によるなどの何らかの伝送媒体を介して送信されても、コンピュータ・プログラム・コード形式で実施することができ、コンピュータ・プログラム・コードがコンピュータにロードされ、コンピュータによって実行された場合、そのコンピュータは本発明を実行するためのシステムとなる。汎用プロセッサに実装された場合、コンピュータ・プログラム・コード・セグメントは特定論理回路を作成するためのプロセッサを構成する。
本明細書に記載の様々な技術をハードウェアまたはソフトウェア、または適宜これらの組み合わせで実装することができる。したがって、本発明の方法および装置、もしくはその特定の態様またはその部分は、フロッピー(登録商標)ディスケット、CD−ROM、ハード・ドライブ、またはいかなる他の機械可読記憶媒体のような有形媒体で実施されるプログラム・コード(すなわち、命令)の形式を取ることができ、プログラム・コードがコンピュータのような機械にロードされ、コンピュータのような機械によって実行された場合、その機械は本発明を実行するための装置になる。プログラム可能なコンピュータでプログラム・コードを実行する場合、コンピューティング・デバイスは、一般に、プロセッサ、プロセッサによって可読の記憶媒体(揮発性および不揮発性メモリおよび/または記憶素子を含めて)、少なくとも1つの入力装置、および少なくとも1つの出力装置を含む。本発明の信号処理サービスを、例えばデータ処理APIなどを使用して利用することのできる1つまたは複数のプログラムは、コンピュータと通信するために高レベルの手続き、またはオブジェクト指向プログラミング言語で実装することが好ましい。しかし、1つ以上のプログラムは、適宜、アセンブリ言語または機械言語で実装することができる。いずれの場合でも、言語はコンパイル言語またはインタプリタ言語であってよく、ハードウェア実施態様と組み合わせることができる。
本発明の方法および装置は、電気配線またはケーブル経由で、光ファイバを介して、またはいかなる他の形式の伝送のような何らかの伝送媒体を介して送信されるプログラム・コードの形式で実施される通信を介して実行することもでき、EPROM、ゲートアレイ、プログラム可能な論理デバイス(PLD)、クライアント・コンピュータ、ビデオ・レコーダなどのような機械、または上記実施形態に記載の信号処理機能を有する受信側機械にプログラム・コードが受信され、ロードされ、実行された場合、その機械は本発明を実行するための装置になる。汎用プロセッサに実装された場合、プログラム・コードは、本発明の機能を呼び起こすように動作する独自の装置を提供するためにプロセッサと結合する。さらに、本発明と共に使用されるいかなる記憶技術でも常にハードウェアおよびソフトウェアの組み合わせであってよい。
以上、本発明の実施形態を様々な図面の好ましい実施形態に関して説明したが、本発明の範囲を逸脱せずに本発明の同じ機能を実行するために、他の類似の実施形態を使用することができ、または記載した実施形態に修正形態および追加を行うことができるということを理解されたい。さらに、特に多数の無線ネットワーク接続されたデバイスが普及しているので、ハンドヘルド・デバイス・オペレーティング・システムおよび他の特定用途向けオペレーティング・システムを含めて様々なコンピュータ・プラットフォームが想定されることが強調されるべきである。したがって、本発明は単一の実施形態に限定されるべきではなく、特許請求の範囲の幅(breadth)および範囲内で解釈されるべきである。
本発明の一実施形態による、シャドウ・ページングを実行するために使用されるメモリページ構造を示す図である。 本発明の一実施形態による、論理IDがユーザ・データ・ページの物理位置にマッピングされていることを示すマッピング・テーブル・ページの一部を示す図である。 本発明の一実施形態による、論理IDがマッピング・テーブル・ページの物理位置にマップされていることを示すディレクトリ・ページの一部を示す図である。 本発明の一実施形態による、論理IDがディレクトリ・ページの物理位置にマッピングされていることを示すデータベース・ヘッダー・ページの一部を示す図である。 本発明の一実施形態による、シャドウイング・ページングを実行するプロセスの流れ図である。 本発明の一実施形態による、シャドウイング・ページングを実行するプロセスの流れ図である。 本発明の一実施形態による、シャドウイング・ページングを実行するプロセスの流れ図である。 本発明の一実施形態による、シャドウ・ページングを使用してトランザクションをコミットする一例を示す図である。 本発明の一実施形態による、シャドウ・ページングを使用してトランザクションをコミットする一例を示す図である。 本発明の一実施形態による、シャドウ・ページングを使用してトランザクションをコミットする一例を示す図である。 本発明の一実施形態による、シャドウ・ページングを使用してトランザクションをコミットする一例を示す図である。 本発明の一実施形態による、シャドウ・ページングを使用してトランザクションをコミットする一例を示す図である。 本発明の一実施形態による、シャドウ・ページングを使用してトランザクションをコミットする一例を示す図である。 本発明の一実施形態による、シャドウ・ページングを実行するシステムのブロック図である。 本発明の実施例によるシャドウ・ページングのための方法およびシステムを実装することのできる適切なコンピューティング・システム環境の一例を示す図である。
符号の説明
12 データベース・ヘッダー・ページ
14 ディレクトリ・ページ
16 マッピング・テーブル・ページ
18 ユーザ・データ・ページ

Claims (21)

  1. データベースにアクセスする方法において、
    前記データベースの第1のデータベース・メモリの選択されたページの内容を、前記第1のデータベース・メモリの未使用ページを備える第1のシャドウ・ページに格納すること、
    前記選択されたページと前記第1のシャドウ・ページの位置を前記データベースのメンテナンス・ページで維持すること、
    前記第1のシャドウ・ページと前記メンテナンス・ページの第1の部分の内容を前記データベースの第2のデータベース・メモリに格納すること、
    前記メンテナンス・ページの第2の部分の内容を前記第2のデータベース・メモリに格納すること、および
    前記第1のシャドウ・ページと前記メンテナンス・ページの前記第1の部分の前記内容を前記第2のデータベース・メモリに再び格納すること
    を備えることを特徴とする方法。
  2. 前記選択されたページを使用済みページとして指し示すこと、
    前記選択されたページの前記内容を前記第1のシャドウ・ページに格納する前記ステップに応じて、前記第1のシャドウ・ページを使用済みページとして指し示すこと、
    前記メンテナンス・ページの第1の部分の内容を、前記第1のデータベース・メモリの未使用ページを含んでいる第2のシャドウ・ページに格納すること、
    前記メンテナンス・ページの前記第1の部分の前記内容を前記第2のシャドウ・ページに格納する前記ステップに応じて、前記第2のシャドウ・ページを使用済みページとして示すこと、
    前記第1のシャドウ・ページと前記第2のシャドウ・ページの内容を前記第2のデータベース・メモリに格納すること、および
    前記第1のシャドウ・ページと前記第2のシャドウ・ページの前記内容を前記第2のデータベース・メモリに再び格納すること
    をさらに備えることを特徴とする請求項1に記載の方法。
  3. 前記メンテナンス・ページは、
    データ・ページの位置を前記第1のデータベース・メモリで維持するための少なくとも1つのマッピング・テーブル・ページと、
    各マッピング・テーブル・ページの位置を維持するためのディレクトリ・ページと、
    前記ディレクトリ・ページの位置を維持するためのデータベース・ヘッダー・ページと
    を備えることを特徴とする請求項2に記載の方法。
  4. 前記第1のデータベース・メモリの選択されたページの内容を前記第1のシャドウ・ページに格納する前記ステップは、前記データ・ページの内容を前記第1のシャドウ・ページに格納することを備え、
    前記メンテナンス・ページの前記第1の部分の内容を前記第2のシャドウ・ページに格納する前記ステップは、前記マッピング・テーブル・ページと前記ディレクトリ・ページの内容を前記第2のシャドウ・ページに格納することを備える
    ことを特徴とする請求項3に記載の方法。
  5. 前記第1のデータベース・メモリの各ページが使用済みか未使用かを示すビットマップを生成すること、および
    前記指し示す各ステップに従って前記ビットマップを更新すること
    をさらに備えることを特徴とする請求項2に記載の方法。
  6. 前記第1のシャドウ・ページと前記メンテナンス・ページの前記第1の部分の前記内容を前記第2のデータベース・メモリに再び格納する前記ステップに続いて、
    前記メンテナンス・ページの前記第2の部分を未使用ページとして指し示すこと、および
    前記選択されたページを未使用ページとして指し示すこと
    をさらに備えることを特徴とする請求項1に記載の方法。
  7. 前記メンテナンス・ページの内容を圧縮することをさらに備えることを特徴とする請求項1に記載の方法。
  8. コンピュータ・プロセッサにデータベースにアクセスするよう指示するコンピュータ・プログラム・コードで符号化されているコンピュータ可読媒体において、前記プログラム・コードは、
    前記コンピュータ・プロセッサに、前記データベースの第1のデータベース・メモリの選択されたページの内容を前記第1のデータベース・メモリの未使用ページを備える第1のシャドウ・ページに格納させる選択ページ格納コード・セグメントと、
    前記コンピュータ・プロセッサに、前記選択されたページと前記データベースのメンテナンス・ページの前記第1のシャドウ・ページの位置を維持させる位置維持コード・セグメントと、
    前記コンピュータ・プロセッサに、前記第1のシャドウ・ページと前記メンテナンス・ページの第1の部分の内容を前記データベースの第2のデータベース・メモリに格納させる第1シャドウおよび第1の部分格納コード・セグメントと、
    前記コンピュータ・プロセッサに、前記メンテナンス・ページの前記第2の部分の内容を前記第2のデータベース・メモリに格納させる第2部分格納コード・セグメントと、
    前記コンピュータ・プロセッサに、前記第1のシャドウ・ページと前記メンテナンス・ページの前記第1の部分の前記内容を前記第2のデータベース・メモリに再び格納させる反復コード・セグメントと
    を備えることを特徴とするコンピュータ可読媒体。
  9. 前記コンピュータ・プロセッサに、前記選択されたページを使用済みページとして指し示させる選択ページ指標コード・セグメントと、
    前記コンピュータ・プロセッサに、前記選択されたページの前記内容を前記第1のシャドウ・ページに格納させる前記ステップに応じて、前記第1のシャドウ・ページを使用済みページとして指し示させる第1シャドウ指標コード・セグメントと、
    前記コンピュータ・プロセッサに、前記メンテナンス・ページの第1の部分の内容を、前記第1のデータベース・メモリの未使用ページを含んでいる第2のシャドウ・ページに格納させる第1部分格納コード・セグメントと、
    前記コンピュータ・プロセッサに、前記メンテナンス・ページの前記第1の部分の前記内容を前記第2のシャドウ・ページに格納する前記ステップに応じて、前記第2のシャドウ・ページを未使用ページとして指し示させる第2シャドウ指標コード・セグメントと、
    前記コンピュータ・プロセッサに、前記第1のシャドウ・ページと前記第2のシャドウ・ページの内容を前記第2のデータベース・メモリに格納させる第1/第2シャドウ格納コード・セグメントと、
    前記コンピュータ・プロセッサに前記第1のシャドウ・ページと前記第2のシャドウ・ページの前記内容を前記第2のデータベース・メモリに再び格納させる再格納コード・セグメントと
    をさらに備えることを特徴とする請求項8に記載のコンピュータ可読媒体。
  10. 前記メンテナンス・ページは、
    前記第1のデータベース・メモリでデータ・ページの位置を維持する少なくとも1つのマッピング・テーブル・ページと、
    各マッピング・テーブル・ページの位置を維持するディレクトリ・ページと、
    前記ディレクトリ・ページの位置を維持するデータベース・ヘッダー・ページと
    を備えることを特徴とする請求項9に記載のコンピュータ可読媒体。
  11. 前記第1のデータベース・メモリの選択されたページの内容を前記第1のシャドウ・ページに格納する前記ステップは、前記データ・ページの内容を前記第1のシャドウ・ページに格納することを備え、
    前記メンテナンス・ページの前記第1の部分の内容を前記第2のシャドウ・ページに格納する前記動作は、前記マッピング・テーブル・ページと前記ディレクトリ・ページの内容を前記第2のシャドウ・ページに格納することを備える
    ことを特徴とする請求項10に記載のコンピュータ可読媒体。
  12. 前記コンピュータ・プロセッサに、前記第1のデータベース・メモリの各ページが使用済みか未使用かを示すビットマップを生成させるビットマップ生成コード・セグメントと、
    前記コンピュータ・プロセッサに、前記指し示す各ステップに従い前記ビットマップを更新させるビットマップ更新コード・セグメントと
    をさらに備えることを特徴とする請求項9に記載のコンピュータ可読媒体。
  13. 前記コンピュータ・プロセッサに、前記第1のシャドウ・ページと前記メンテナンス・ページの前記第1の部分の前記内容を前記第2のデータベース・メモリに再び格納させる前記ステップに続いて、
    前記メンテナンス・ページの前記第2の部分を未使用ページとして指し示させ、
    前記選択されたページを未使用ページとして指し示させる
    最終指標コード・セグメントをさらに備えることを特徴とする請求項8に記載のコンピュータ可読媒体。
  14. 前記コンピュータ・プロセッサに、前記メンテナンス・ページの内容を圧縮させる圧縮コード・セグメントをさらに備えることを特徴とする請求項8に記載のコンピュータ可読媒体。
  15. データベースにアクセスするシステムにおいて、
    前記データベースの第1のデータベース・メモリと、
    前記データベースの第2のデータベース・メモリと、
    コントローラであって、
    前記第1のデータベース・メモリでページの位置を維持するためのメンテナンス・ページを生成すること、
    前記第1のデータベース・メモリの選択されたページの内容を前記第1のデータベース・メモリの未使用ページ(第1のシャドウ・ページ)に格納すること、
    前記選択されたページの位置が維持される前記第1のデータベース・メモリに前記第1のシャドウ・ページの位置を反映させるために前記メンテナンス・ページを更新すること、
    前記メンテナンス・ページの第1の部分の内容を前記第1のデータベース・メモリの未使用ページ(第2のシャドウ・ページ)に格納すること、
    前記第1のシャドウ・ページと前記第2のシャドウ・ページの内容を前記データベースの第2のデータベース・メモリに格納すること、
    前記メンテナンス・ページの第2の部分の内容を前記第2のデータベース・メモリに格納すること、および
    前記第1のシャドウ・ページと前記第2のシャドウ・ページの内容を前記第2のデータベース・メモリに格納する前記ステップを反復すること
    を実行するコントローラと、
    ページ割り当てインジケータであって、
    前記選択されたページが前記第1のシャドウ・ページに格納されていることに応じて、前記第1のシャドウ・ページが使用済みページであることを指し示すこと、および
    前記第1の部分の内容が前記第2のシャドウ・ページに格納されていることに応じて、前記第2のシャドウ・ページが使用済みページであることを指し示すこと
    を実行するページ割り当てインジケータと
    を備えることを特徴とするシステム。
  16. 反復する前記ステップに続いて、前記ページ割り当てインジケータが、前記メンテナンス・ページの前記第2の部分が未使用ページであることを指し示すことを特徴とする請求項15に記載のシステム。
  17. 前記ページ割り当てインジケータは、前記第1のデータベース・メモリの各ページが使用済みか未使用かを指し示すためのビットマップを備え、
    前記指し示すステップに従って、前記コントローラが前記ビットマップを更新することを特徴とする請求項15に記載のシステム。
  18. 前記コントローラは、
    データ・ページの位置を前記第1のデータベース・メモリで維持するための少なくとも1つのマッピング・テーブル・ページを生成し、
    各マッピング・テーブル・ページの位置を維持するためのディレクトリ・ページを生成し、
    前記ディレクトリ・ページの位置を維持するためのデータベース・ヘッダー・ページを生成する
    ことを特徴とする請求項15に記載のシステム。
  19. 前記第1のデータベース・メモリの選択されたページの前記内容を前記第1のシャドウ・ページに格納することは、前記コントローラが前記データ・ページの内容を前記第1のシャドウ・ページに格納することを備え、
    前記メンテナンス・ページの前記第1の部分の前記内容を前記第2のシャドウ・ページに格納することは、前記コントローラが前記マッピング・テーブル・ページと前記ディレクトリ・ページの内容を前記第2のシャドウ・ページに格納することを備える
    ことを特徴とする請求項18に記載のシステム。
  20. 前記メンテナンス・ページの内容を圧縮するためのデータ・コンプレッサをさらに備えることを特徴とする請求項15に記載のシステム。
  21. データベースにアクセスする方法において、
    前記データベースの選択されたデータ・ページの内容を、前記データベースの未使用ページを含んでいる第1シャドウ・ページに格納すること、
    前記選択されたデータ・ページと前記第1のシャドウ・ページの位置を前記データベースのマッピング・テーブル・ページで維持すること、
    各マッピング・テーブル・ページの位置を前記データベースのディレクトリ・ページで維持すること、
    前記ディレクトリ・ページの位置を前記データベースのデータベース・ヘッダー・ページで維持すること、
    前記第1のシャドウ・ページ、前記マッピング・テーブル・ページ、および前記ディレクトリ・ページの内容を前記データベースの永続データベース・メモリに格納すること、
    前記メンテナンス・ページの第2の部分の内容を前記永続データベース・メモリに格納すること、および
    前記第1のシャドウ・ページと前記メンテナンス・ページの前記第1の部分の前記内容を前記永続データベース・メモリに再び格納すること
    を備えることを特徴とする方法。
JP2004160180A 2003-05-30 2004-05-28 シャドウ・ページング Expired - Fee Related JP4544910B2 (ja)

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
JP2004362570A true JP2004362570A (ja) 2004-12-24
JP4544910B2 JP4544910B2 (ja) 2010-09-15

Family

ID=33131613

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004160180A Expired - Fee Related JP4544910B2 (ja) 2003-05-30 2004-05-28 シャドウ・ページング

Country Status (5)

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

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012155705A (ja) * 2011-01-27 2012-08-16 Micron Technology Inc トランザクションメモリ
US10635587B2 (en) 2015-07-16 2020-04-28 Toshiba Memory Corporation Memory controller, information processing apparatus, and processor

Families Citing this family (14)

* 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 삼성전자주식회사 적응적 로깅 장치 및 방법
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

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07175700A (ja) 1993-12-20 1995-07-14 Fujitsu Ltd データベース管理方式
KR100204576B1 (ko) * 1996-11-11 1999-06-15 정선종 공통 블럭 레지스터 내장 메모리의 구조와 이를 이용한 그림자 페이지 회복 구조 및 회복 기법
KR20010055981A (ko) * 1999-12-13 2001-07-04 오길록 안전기억장치를 이용한 주기억장치 상주형 데이터베이스회복 방법
KR100365891B1 (ko) 2000-12-13 2002-12-27 한국전자통신연구원 주기억장치 상주형 데이터베이스 시스템에서 로그 처리를하지 않는 백업/회복 장치 및 그 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSNB200400045001, グレイ ジム, トランザクション処理 [下], 20011029, 1版1刷, p.787−870, 日経BP社 岡部 力也 *
JPN6010003108, グレイ ジム, トランザクション処理 [下], 20011029, 1版1刷, p.787−870, 日経BP社 岡部 力也 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012155705A (ja) * 2011-01-27 2012-08-16 Micron Technology Inc トランザクションメモリ
US9104690B2 (en) 2011-01-27 2015-08-11 Micron Technology, Inc. Transactional memory
US10083122B2 (en) 2011-01-27 2018-09-25 Micron Technology, Inc. Transactional memory
US10635587B2 (en) 2015-07-16 2020-04-28 Toshiba Memory Corporation Memory controller, information processing apparatus, and processor

Also Published As

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

Similar Documents

Publication Publication Date Title
JP4544910B2 (ja) シャドウ・ページング
US7716192B2 (en) Concurrent, lock-free object copying
US9235474B1 (en) Systems and methods for maintaining a virtual failover volume of a target computing system
US6549918B1 (en) Dynamic information format conversion
US7630998B2 (en) Performing a deletion of a node in a tree data storage structure
US7496586B1 (en) Method and apparatus for compressing data in a file system
US8176142B2 (en) Shared JAVA jar files
US6332172B1 (en) Method and system for virtual memory compression in an embedded system
US20070300037A1 (en) Persistent flash memory mapping table
US20060195649A1 (en) Heap memory management
US7415653B1 (en) Method and apparatus for vectored block-level checksum for file system data integrity
US8527559B2 (en) Garbage collector with concurrent flipping without read barrier and without verifying copying
US20050283585A1 (en) Architecture for a scalable and user-extensible heap dump analysis tool
JP4537771B2 (ja) データベースのサイズを変更するための方法、コンピュータ可読媒体およびシステム
US6195107B1 (en) Method and system for utilizing virtual memory in an embedded system
US6996682B1 (en) System and method for cascading data updates through a virtual copy hierarchy
US6463515B1 (en) System and method for recovering physical memory locations in a computer system
US8341133B2 (en) Compressed transactional locks in object headers
US6233621B1 (en) System and method for space efficient hashcode allocation
CN111597076B (zh) 操作数据的方法和装置以及管理持久化跳表的方法和装置
US7533225B1 (en) Method and apparatus for enabling adaptive endianness
EP3834090B1 (en) Fast initialization of complex in-memory data structures
US7603568B1 (en) Method and apparatus for self-validating checksums in a file system
US11099948B2 (en) Persistent storage segment caching for data recovery
CN116490847A (zh) 支持分布式文件系统中的垃圾收集的虚拟数据复制

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070525

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100122

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100422

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100622

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100629

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130709

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4544910

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees