(57)【要約】【課題】  アトミック・トランザクションと永続トランザクションの達成に使用され、データベースでページ操作する機能を提供するシャドウ・ページを提供すること。【解決手段】  トランザクション中、その影響を受けるページは、データベース・ファイルから揮発性メモリなどの作業空間にコピーされ、そこで変更される。トランザクションがコミットされると、それによる変更済みページすべてが作業空間からデータベース・ファイルの未使用ページに書き込まれる。トランザクション実行中、データベース・ファイルは、変更されたページの元のバージョンで、作業空間にコピーされる前に存在したバージョンを依然として収容しているので、ユーザに公開されるデータベースの状態はトランザクション以前に存在した状態である。トランザクションが完了する前、または障害から復元する際にユーザがデータベースにアクセスした場合、トランザクションは未生起のように見える。【選択図】  図１
2004362570.tif 000002
【特許請求の範囲】
【請求項１】
データベースにアクセスする方法において、
前記データベースの第１のデータベース・メモリの選択されたページの内容を、前記第１のデータベース・メモリの未使用ページを備える第１のシャドウ・ページに格納すること、
前記選択されたページと前記第１のシャドウ・ページの位置を前記データベースのメンテナンス・ページで維持すること、
前記第１のシャドウ・ページと前記メンテナンス・ページの第１の部分の内容を前記データベースの第２のデータベース・メモリに格納すること、
前記メンテナンス・ページの第２の部分の内容を前記第２のデータベース・メモリに格納すること、および
前記第１のシャドウ・ページと前記メンテナンス・ページの前記第１の部分の前記内容を前記第２のデータベース・メモリに再び格納すること
を備えることを特徴とする方法。
【請求項２】
前記選択されたページを使用済みページとして指し示すこと、
前記選択されたページの前記内容を前記第１のシャドウ・ページに格納する前記ステップに応じて、前記第１のシャドウ・ページを使用済みページとして指し示すこと、
前記メンテナンス・ページの第１の部分の内容を、前記第１のデータベース・メモリの未使用ページを含んでいる第２のシャドウ・ページに格納すること、
前記メンテナンス・ページの前記第１の部分の前記内容を前記第２のシャドウ・ページに格納する前記ステップに応じて、前記第２のシャドウ・ページを使用済みページとして示すこと、
前記第１のシャドウ・ページと前記第２のシャドウ・ページの内容を前記第２のデータベース・メモリに格納すること、および
前記第１のシャドウ・ページと前記第２のシャドウ・ページの前記内容を前記第２のデータベース・メモリに再び格納すること
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項３】
前記メンテナンス・ページは、
データ・ページの位置を前記第１のデータベース・メモリで維持するための少なくとも１つのマッピング・テーブル・ページと、
各マッピング・テーブル・ページの位置を維持するためのディレクトリ・ページと、
前記ディレクトリ・ページの位置を維持するためのデータベース・ヘッダー・ページと
を備えることを特徴とする請求項２に記載の方法。
【請求項４】
前記第１のデータベース・メモリの選択されたページの内容を前記第１のシャドウ・ページに格納する前記ステップは、前記データ・ページの内容を前記第１のシャドウ・ページに格納することを備え、
前記メンテナンス・ページの前記第１の部分の内容を前記第２のシャドウ・ページに格納する前記ステップは、前記マッピング・テーブル・ページと前記ディレクトリ・ページの内容を前記第２のシャドウ・ページに格納することを備える
ことを特徴とする請求項３に記載の方法。
【請求項５】
前記第１のデータベース・メモリの各ページが使用済みか未使用かを示すビットマップを生成すること、および
前記指し示す各ステップに従って前記ビットマップを更新すること
をさらに備えることを特徴とする請求項２に記載の方法。
【請求項６】
前記第１のシャドウ・ページと前記メンテナンス・ページの前記第１の部分の前記内容を前記第２のデータベース・メモリに再び格納する前記ステップに続いて、
前記メンテナンス・ページの前記第２の部分を未使用ページとして指し示すこと、および
前記選択されたページを未使用ページとして指し示すこと
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項７】
前記メンテナンス・ページの内容を圧縮することをさらに備えることを特徴とする請求項１に記載の方法。
【請求項８】
コンピュータ・プロセッサにデータベースにアクセスするよう指示するコンピュータ・プログラム・コードで符号化されているコンピュータ可読媒体において、前記プログラム・コードは、
前記コンピュータ・プロセッサに、前記データベースの第１のデータベース・メモリの選択されたページの内容を前記第１のデータベース・メモリの未使用ページを備える第１のシャドウ・ページに格納させる選択ページ格納コード・セグメントと、
前記コンピュータ・プロセッサに、前記選択されたページと前記データベースのメンテナンス・ページの前記第１のシャドウ・ページの位置を維持させる位置維持コード・セグメントと、
前記コンピュータ・プロセッサに、前記第１のシャドウ・ページと前記メンテナンス・ページの第１の部分の内容を前記データベースの第２のデータベース・メモリに格納させる第１シャドウおよび第１の部分格納コード・セグメントと、
前記コンピュータ・プロセッサに、前記メンテナンス・ページの前記第２の部分の内容を前記第２のデータベース・メモリに格納させる第２部分格納コード・セグメントと、
前記コンピュータ・プロセッサに、前記第１のシャドウ・ページと前記メンテナンス・ページの前記第１の部分の前記内容を前記第２のデータベース・メモリに再び格納させる反復コード・セグメントと
を備えることを特徴とするコンピュータ可読媒体。
【請求項９】
前記コンピュータ・プロセッサに、前記選択されたページを使用済みページとして指し示させる選択ページ指標コード・セグメントと、
前記コンピュータ・プロセッサに、前記選択されたページの前記内容を前記第１のシャドウ・ページに格納させる前記ステップに応じて、前記第１のシャドウ・ページを使用済みページとして指し示させる第１シャドウ指標コード・セグメントと、
前記コンピュータ・プロセッサに、前記メンテナンス・ページの第１の部分の内容を、前記第１のデータベース・メモリの未使用ページを含んでいる第２のシャドウ・ページに格納させる第１部分格納コード・セグメントと、
前記コンピュータ・プロセッサに、前記メンテナンス・ページの前記第１の部分の前記内容を前記第２のシャドウ・ページに格納する前記ステップに応じて、前記第２のシャドウ・ページを未使用ページとして指し示させる第２シャドウ指標コード・セグメントと、
前記コンピュータ・プロセッサに、前記第１のシャドウ・ページと前記第２のシャドウ・ページの内容を前記第２のデータベース・メモリに格納させる第１／第２シャドウ格納コード・セグメントと、
前記コンピュータ・プロセッサに前記第１のシャドウ・ページと前記第２のシャドウ・ページの前記内容を前記第２のデータベース・メモリに再び格納させる再格納コード・セグメントと
をさらに備えることを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１０】
前記メンテナンス・ページは、
前記第１のデータベース・メモリでデータ・ページの位置を維持する少なくとも１つのマッピング・テーブル・ページと、
各マッピング・テーブル・ページの位置を維持するディレクトリ・ページと、
前記ディレクトリ・ページの位置を維持するデータベース・ヘッダー・ページと
を備えることを特徴とする請求項９に記載のコンピュータ可読媒体。
【請求項１１】
前記第１のデータベース・メモリの選択されたページの内容を前記第１のシャドウ・ページに格納する前記ステップは、前記データ・ページの内容を前記第１のシャドウ・ページに格納することを備え、
前記メンテナンス・ページの前記第１の部分の内容を前記第２のシャドウ・ページに格納する前記動作は、前記マッピング・テーブル・ページと前記ディレクトリ・ページの内容を前記第２のシャドウ・ページに格納することを備える
ことを特徴とする請求項１０に記載のコンピュータ可読媒体。
【請求項１２】
前記コンピュータ・プロセッサに、前記第１のデータベース・メモリの各ページが使用済みか未使用かを示すビットマップを生成させるビットマップ生成コード・セグメントと、
前記コンピュータ・プロセッサに、前記指し示す各ステップに従い前記ビットマップを更新させるビットマップ更新コード・セグメントと
をさらに備えることを特徴とする請求項９に記載のコンピュータ可読媒体。
【請求項１３】
前記コンピュータ・プロセッサに、前記第１のシャドウ・ページと前記メンテナンス・ページの前記第１の部分の前記内容を前記第２のデータベース・メモリに再び格納させる前記ステップに続いて、
前記メンテナンス・ページの前記第２の部分を未使用ページとして指し示させ、
前記選択されたページを未使用ページとして指し示させる
最終指標コード・セグメントをさらに備えることを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１４】
前記コンピュータ・プロセッサに、前記メンテナンス・ページの内容を圧縮させる圧縮コード・セグメントをさらに備えることを特徴とする請求項８に記載のコンピュータ可読媒体。
【請求項１５】
データベースにアクセスするシステムにおいて、
前記データベースの第１のデータベース・メモリと、
前記データベースの第２のデータベース・メモリと、
コントローラであって、
前記第１のデータベース・メモリでページの位置を維持するためのメンテナンス・ページを生成すること、
前記第１のデータベース・メモリの選択されたページの内容を前記第１のデータベース・メモリの未使用ページ（第１のシャドウ・ページ）に格納すること、
前記選択されたページの位置が維持される前記第１のデータベース・メモリに前記第１のシャドウ・ページの位置を反映させるために前記メンテナンス・ページを更新すること、
前記メンテナンス・ページの第１の部分の内容を前記第１のデータベース・メモリの未使用ページ（第２のシャドウ・ページ）に格納すること、
前記第１のシャドウ・ページと前記第２のシャドウ・ページの内容を前記データベースの第２のデータベース・メモリに格納すること、
前記メンテナンス・ページの第２の部分の内容を前記第２のデータベース・メモリに格納すること、および
前記第１のシャドウ・ページと前記第２のシャドウ・ページの内容を前記第２のデータベース・メモリに格納する前記ステップを反復すること
を実行するコントローラと、
ページ割り当てインジケータであって、
前記選択されたページが前記第１のシャドウ・ページに格納されていることに応じて、前記第１のシャドウ・ページが使用済みページであることを指し示すこと、および
前記第１の部分の内容が前記第２のシャドウ・ページに格納されていることに応じて、前記第２のシャドウ・ページが使用済みページであることを指し示すこと
を実行するページ割り当てインジケータと
を備えることを特徴とするシステム。
【請求項１６】
反復する前記ステップに続いて、前記ページ割り当てインジケータが、前記メンテナンス・ページの前記第２の部分が未使用ページであることを指し示すことを特徴とする請求項１５に記載のシステム。
【請求項１７】
前記ページ割り当てインジケータは、前記第１のデータベース・メモリの各ページが使用済みか未使用かを指し示すためのビットマップを備え、
前記指し示すステップに従って、前記コントローラが前記ビットマップを更新することを特徴とする請求項１５に記載のシステム。
【請求項１８】
前記コントローラは、
データ・ページの位置を前記第１のデータベース・メモリで維持するための少なくとも１つのマッピング・テーブル・ページを生成し、
各マッピング・テーブル・ページの位置を維持するためのディレクトリ・ページを生成し、
前記ディレクトリ・ページの位置を維持するためのデータベース・ヘッダー・ページを生成する
ことを特徴とする請求項１５に記載のシステム。
【請求項１９】
前記第１のデータベース・メモリの選択されたページの前記内容を前記第１のシャドウ・ページに格納することは、前記コントローラが前記データ・ページの内容を前記第１のシャドウ・ページに格納することを備え、
前記メンテナンス・ページの前記第１の部分の前記内容を前記第２のシャドウ・ページに格納することは、前記コントローラが前記マッピング・テーブル・ページと前記ディレクトリ・ページの内容を前記第２のシャドウ・ページに格納することを備える
ことを特徴とする請求項１８に記載のシステム。
【請求項２０】
前記メンテナンス・ページの内容を圧縮するためのデータ・コンプレッサをさらに備えることを特徴とする請求項１５に記載のシステム。
【請求項２１】
データベースにアクセスする方法において、
前記データベースの選択されたデータ・ページの内容を、前記データベースの未使用ページを含んでいる第１シャドウ・ページに格納すること、
前記選択されたデータ・ページと前記第１のシャドウ・ページの位置を前記データベースのマッピング・テーブル・ページで維持すること、
各マッピング・テーブル・ページの位置を前記データベースのディレクトリ・ページで維持すること、
前記ディレクトリ・ページの位置を前記データベースのデータベース・ヘッダー・ページで維持すること、
前記第１のシャドウ・ページ、前記マッピング・テーブル・ページ、および前記ディレクトリ・ページの内容を前記データベースの永続データベース・メモリに格納すること、
前記メンテナンス・ページの第２の部分の内容を前記永続データベース・メモリに格納すること、および
前記第１のシャドウ・ページと前記メンテナンス・ページの前記第１の部分の前記内容を前記永続データベース・メモリに再び格納すること
を備えることを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、メモリの利用に関し、より詳細には、データベースでトランザクションをコミット（確定）することに関する。
【背景技術】
【０００２】
現在、データベースおよびデータベース製品は一般的に使用されている。需要が伸びているのはモバイル・データベース製品である。モバイル・データベース製品はサイズの小ささと携帯性から人気がある。しかし、モバイル・データベース製品はメモリが限られている。データベース製品の望ましい機能には、アトミック・トランザクション（atomic transaction）および永続トランザクション（durable transaction）を実行する機能が含まれる。アトミック・トランザクションは部分的にコミットすることができないトランザクションである。つまり、アトミック・トランザクションは、完全に実行されるか、または全く実行されないかのどちらかである。永続トランザクションは、データベースの状態の変化が永続的なトランザクションである。データベースのもう１つの望ましい機能は、停電、ディスクの破損などのような障害から復元する機能である。アトミック・トランザクションおよび永続トランザクションを実行し、安定したデータベースの復元を提供する現行のシステムは、複雑になり大量のメモリを必要とする傾向がある。複雑でメモリ集約的なプロセスは、モバイル・データベース製品のようにメモリ量の限られた製品には不向きである。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
アトミック・トランザクションおよび永続トランザクションを実行し、メモリ量の限られたデバイスでの予期せぬ障害から確実に復元する手段を提供する技術が求められている。
【課題を解決するための手段】
【０００４】
本発明は、予期せぬ障害の有害な作用を軽減しながら、データベースにアクセスする技術を提供する。この技術は、比較的小さなソフトウェア・コードを使用し、したがって、ハンドヘルド・デバイスおよび／またはモバイル・データベース製品（例えば、ＳＱＬ−ＣＥ）のようなメモリ量または速度の限られた電子デバイスには特に適したものとなっている。本発明は、トランザクションのコミット中にシステム障害が発生したというイベントでトランザクションをロールバックすることができるように、シャドウ・ページングを使用してアトミック・トランザクションが完了するまでデータベースの現在の状態を維持するための効率的な手段を提供する。トランザクションが完了すると、データベースの新しい状態が使用可能となる。
【０００５】
トランザクション中、そのトランザクションの影響を受けたページは、データベース・ファイルから揮発性メモリのような作業空間にコピーされ、その作業空間で変更される。トランザクションがコミットされると、そのトランザクションによって変更されたページすべてが作業空間からデータベース・ファイルの未使用ページに書き込まれる。トランザクションの実行中、データベース・ファイルは変更されたページの元のバージョンを依然として作業空間にコピーされる前の状態で収容しているので、ユーザに公開されるデータベースの状態はトランザクション以前に存在したデータベースの状態である。したがって、トランザクション完了前にユーザがデータベースにアクセスした場合、ユーザにはトランザクションがまだ行われていないように見える。さらに、トランザクションの実行中に障害が発生した場合、復元の際にシステムはトランザクション開始以前の状態にある。例えば、障害（例えば、ディスク障害、電力損失、マシンクラッシュ）がデータベースへのページの書き込み中に発生した場合、データベースは依然として一貫性のある状態（consistent state）にある。
【０００６】
シャドウ・ページングを実行する方法の一例としては、データベース・ファイルの選択されたページの内容（contents）はデータベース・ファイルの（第１のシャドウ・ページと称される）未使用ページに格納される。この第１のシャドウ・ページは使用済みファイルと宣言される。データベース・ファイル内のページの位置を維持するためのメンテナンス・ページ（データベース・ヘッダー・ページ、ディレクトリ・ページ、マッピング・テーブル・ページ）は、データベース・ファイルの第１のシャドウ・ページの位置を反映するために更新され、選択されたページの位置が維持される。メンテナンス・ページの一部の内容（ディレクトリ・ページ、マッピング・テーブル・ページ）は、データベース・ファイルの（第２のシャドウ・ページと称される）未使用ページに格納される。この第２のシャドウ・ページは使用ページと宣言される。次いで第１のシャドウ・ページと第２のシャドウ・ページの内容が永続メモリ（persistent memory）に格納される。メンテナンス・ページの他の部分の内容（データベース・ヘッダー・ページ）は永続メモリに格納され、第１のシャドウ・ページと第２のシャドウ・ページの内容は、再度、永続メモリに格納される。
【０００７】
この方法を実装するシステムは、データベース・ファイル、永続メモリ、コントローラ、ページ割り当てインジケータを含む。コントローラはページの位置をデータベース・ファイル内で維持するためのメンテナンス・ページを生成し、データベース・ファイルの選択されたページの内容を第１のシャドウ・ページに格納する。コントローラは、選択されたページの位置を維持しながら第１のシャドウ・ページの位置を反映するようメンテナンス・ページを更新し、メンテナンス・ページの第１の部分の内容を第２のシャドウ・ページに格納する。コントローラは、第１のシャドウ・ページと第２のシャドウ・ページの内容を永続メモリにも格納し、メンテナンス・ページの第２の部分の内容を永続メモリに格納し、第１のシャドウ・ページと第２のシャドウ・ページの内容を、再度、永続メモリに格納する。ページ割り当てインジケータは、選択されたページが第１のシャドウ・ページに格納されていることに応じて第１のシャドウ・ページが使用ページであることを指し示し、また第１の部分の内容が第２のシャドウ・ページに格納されていることに応じて第２のシャドウ・ページが使用ページであることを指し示す。
【０００８】
本発明の機能および利点は、添付の図面と共に以下の説明を検討すれば最もよく理解されよう。
【発明を実施するための最良の形態】
【０００９】
本明細書に記載のシャドウ・ページングは、停電、ディスクの破損、および／またはプロセッサの障害のような予期せぬ故障の有害な作用を軽減しながら、データベース形式などのメモリにアクセスし、これを制御する技術を提供する。この技術は、実装が比較的容易であり、非常に小さいソフトウェア・コードを使用するので、ハンドヘルド・デバイスおよび／またはモバイル・データベース製品（例えば、ＳＱＬ−ＣＥ）のようにメモリ量が限られた電子デバイスには特に適したものとなっている。データベース製品の重要な機能には、アトミックおよび永続トランザクションを実行する機能が含まれる。アトミック・トランザクションは部分的にコミットすることができないトランザクションであり、つまり、アトミック・トランザクションは、完全に実行されるか、または全く実行されないかのどちらかである。永続トランザクションは、データベースの状態の変化が、トランザクションの実行直後にシステム・クラッシュがあったとしても、結果的に得られるデータベースのトランザクション後の状態は存続するという意味で、永続的なトランザクションである。シャドウ・ページングは、アトミック・トランザクションおよび永続トランザクションを実行するための機構を提供する。
【００１０】
図１は、シャドウ・ページングを実行することのできるデータベース構成例を示している。一実施形態では、図１に示す構造のデータベースが変更された場合にシャドウ・ページングを使用することができ、本発明は本明細書ではこのようなデータベースのコンテクストで説明する。しかし、本明細書に記載のシャドウ・ページングはデータベース・アプリケーションに限定されず、メモリ利用を含めて様々な他のシナリオでも使用することができるということを理解されたい。
【００１１】
図１に示すページはデータベース・ファイルのページであり、これは、データベース・ヘッダー・ページ１２、ディレクトリ・ページ１４、少なくとも１つのマッピング・テーブル・ページ１６、および少なくとも１つのユーザ・データ・ページ１８を含む。図１に示すデータベース・ファイルのページは、メモリまたはストレージのページを含んでいる。このようなメモリまたはストレージは、メモリの特定のタイプまたはクラスには限定されないが、半導体メモリ、磁気メモリ（例えば、ディスク）、光メモリ、機械的メモリ、ランダムアクセスメモリ（ＲＡＭ）、揮発性メモリ、および不揮発性メモリ、またはデータを格納することのできるいかなる他のタイプのデバイスでも含むことができる。以下の説明では、「メモリのページ」という用語は従来の「メモリ」デバイス（ＲＡＭまたはＲＯＭのような）に限定されず、すべてのタイプのデータ記憶装置を含むものと解釈されたい。
【００１２】
図１に示したページ構造は比較的少量のメモリを使用して実装することができる。例えば、ページのサイズが４０９６バイトであり、データベース・ファイルの最大サイズが２３２バイト（４ギガバイト）である場合、その結果得られるファイルのページの最大数は２２０ページである。したがって、マッピング・テーブル・ページ１６は最大２２０項目（１ページ当たり１つのエントリ）を格納する。ファイルにおけるページの物理位置がバイトのオフセットを使用して特定される場合、各ページを表すために３２ビットが使用される。ページのサイズが増えるに従いページのオフセットを格納することにより、これはページあたり２０ビットまで低減することができる。したがって、マッピング・テーブル・ページ１６は（２２０）×２０ビットの空間を使用するが、これは２，６２１，４４０バイトとなる。一実施形態では、マッピング・テーブル１６は一組のページとしてデータベース・ファイルに格納されている。マッピング・テーブル・ページが４０９６バイトであり、ページの物理位置を格納するために２０ビットが使用される場合、マッピング・テーブル・ページあたり最大１６３８ページを参照することができる。したがって、最大２２０ページを参照するために、最大６４１のマッピング・テーブル・ページを使用することができる。一般的なデータベース・ファイルは４ギガバイトより遥かに小さく、したがってより少ないマッピング・テーブル・ページしか使用しない。上記のように、データベース・ファイル内でマッピング・テーブル・ページ１６の物理位置を追跡するためにディレクトリ・ページ１４が使用される（例えば、マッピング・テーブル・ページ１６が変更され、新しい位置にフラッシュされる場合）。上記の実施例によれば、ディレクトリ・ページ１４は、データベース・ファイルの各マッピング・テーブル・ページ１６の物理位置を追跡する２０ビットのエントリーを有する。ヘッダー・ページ１２、ディレクトリ・ページ１４、およびマッピング・テーブル・ページ１６は、ユーザ・データ・ページ１８の数と比べて比較的少量のディスク空間（メモリ）しか消費しない。例えば、１，０４７，９３３（２２０引く６４３）のユーザ・データ・ページ１８は６４３の「メンテナンス・ページ」によって維持することができる。（本明細書で使用する「メンテナンス・ページ」とは、ユーザ・データではなく、データベース・システムによって使用される管理データを格納するページである。）図１の例では、ヘッダー・ページ１２、ディレクトリ・ページ１４、およびマッピング・テーブル・ページ１６が「メンテナンス・ページ」である。）この結果、メンテナンス・ページはデータベース・ファイル空間全体の０．０６％だけを消費することになる。上記の４０９６バイトのページと２０ビットのデータ・タイプという値は一例であるということに留意されたい。上記ファイル構造の実装は、２０ビットのデータ・タイプをよりサイズの小さいデータ・タイプに低減するためにデータ圧縮を使用することができることを想定している。
【００１３】
メンテナンス・ページは、図１に示すすべてのページの位置を維持する。データベース・ヘッダー・ページ１２は、ディレクトリ・ページ１４の位置を維持する。一実施形態では、ディレクトリ・ページ１４の物理アドレスはデータベース・ヘッダー・ページ１２の第１のセクタに格納され、データベース・ヘッダー・ページ１２はデータベース・ファイルの開始に格納される。後述するように、これはトランザクションがアトミックであることを保証している。ディレクトリ・ページ１４はマッピング・テーブル・ページ１６の位置を維持する。マッピング・テーブル・ページ１６はユーザ・データ・ページ１８の位置を維持する。ユーザ・データ・ページ１８は、例えば記録および／またはインデックス・キーのようなデータベース・データを収容することのできるページである。以下でより詳細に説明するように、図１に示すメモリページ構造はシャドウ・ページング中にメモリのページを追跡し維持するために使用される。
【００１４】
図１に示す構造は、ページを「論理」識別子によって識別することを可能にする。典型的なデータベース製品は、ファイル内のページの物理アドレスを表すページ識別子を使用する。例えば、典型的なデータベース製品は、データベース・ファイルの論理開始から参照されるオフセット値によって所与のページを特定することができる。ページは他のページを参照することができるので、これらの識別子はデータベース中の様々な場所に現れる場合がしばしばある。ページを特定するこの方式は、したがって、１つまたは複数のページが移動された時は何時でも新しい位置（例えば、新しいページ・オフセット値）を反映するために、移動されたページを参照するページ識別子すべてを更新する必要があるので、ページをファイルのある位置から別の位置に移動することを難しくする。しかし、図１の構造が使用される場合、所与のページを、ディレクトリ・ページおよび所与のページを指し示すマッピング・テーブル・ページ内の要素に基づいて識別することができる。例えば、所与のページは、ディレクトリ・ページへのオフセット、およびマッピング・テーブル・ページへのオフセットによって特定することができる。次いで所与のページは、（１）ディレクトリ・ページの指定のオフセットにあるポインタに従って特定のマッピング・テーブル・ページを探し出し、また（２）所与のページを見つけるために、探し出されたマッピング・テーブル・ページにあるポインタに従う、ことによって探し出される。したがって、ページは、その論理識別子は変更せずに、ディレクトリ・ページとマッピング・テーブルの適切なエントリーを単に更新することによって、データベース・ファイル内の異なる位置に移動することができる。この技術は、仮想メモリ・システムのアドレス変換テーブルの使用法に類似している。
【００１５】
以下でより具体的に説明するように、論理ページ識別子を使用することは、シャドウ・ページングの実装を容易とするので、本発明の一実施形態では、論理ページ識別子（ＩＤ）によって、データベース・ファイルのページが特定される。データベース内で、ページは、論理ＩＤを介してアクセスされ、追跡される。ページの位置も、論理ページＩＤを使用することにより維持される。図２は、ユーザ・データ・ページ１８の物理位置１５をマッピングする論理ＩＤ  １３を示すマッピング・テーブル・ページ１６の一部を示している。（データベース・ファイル内のページの「物理」位置は、基礎となるファイル・システムがファイルの開始からのあるオフセットを有しており、ファイル・システムがディスク上でのページの実際の位置を再編成した場合でさえこのオフセットは変更されないので、データベース・ファイル（またはいかなるファイル）の各ページは基礎となるファイル・システムによって定義されるという事実を意味することが理解されよう。しかし、「物理」位置という用語は、データベース管理システムがディスクのどこに所与のページが格納されているかを認識する必要があるということまでは示していない。）論理ページＩＤ  １３は、ユーザ・データ・ページ１８の物理ページ・アドレスにマップされる。このマッピングはマッピング・テーブル１６によって達成される。マッピング・テーブル１６は一組のページとしてデータベース・ファイルに格納される。各マッピング・テーブル１６は、論理ページＩＤ  １３をそれぞれのユーザ・データ・ページ１８の物理ページ・アドレス１５（位置とも称される）にマップするエントリー１１を含んでいる。ユーザ・データ・ページ１８の物理位置が変更された場合（例えば、データがデータベースにフラッシュされた場合）、マッピング・テーブル１６のその対応するエントリーが更新される。そのエントリー目に関しては、移動されているユーザ・データ・ページ１８の論理ＩＤ  １３は変更されず、ユーザ・データ・ページ１８の移動先である物理アドレスはマッピング・テーブル１６のエントリー１１の物理位置部分１５に入力される。
【００１６】
データベース・ヘッダー・ページ１２およびディレクトリ・ページ１４も、論理ＩＤを物理アドレスにマップするエントリーを収容する。データベース・ヘッダー・ページ１２は、論理ＩＤをディレクトリ・ページ１４の物理アドレスにマップするエントリーを収容する。ディレクトリ・ページ１４は、論理ＩＤをマッピング・テーブル１６の物理アドレスにマップするエントリーを収容する。
【００１７】
図３は、マッピング・テーブル・ページ１６の物理位置２１をマッピングする論理ＩＤ  １９を示すディレクトリ・ページ１４の一部を示している。各ディレクトリ・ページ１４は、論理ページＩＤ  １９をそれぞれのマッピング・テーブル・ページ１６の物理ページ・アドレス２１にマップするエントリー１７を備える。マッピング・テーブル・ページ１６の物理位置が変更された場合（例えば、データがデータベースにフラッシュされた場合）、ディレクトリ・テーブル１４のその対応するエントリーが更新される。そのエントリーに関しては、移動されているマッピング・テーブル・ページ１６の論理ＩＤ  １９は変更されず、マッピング・テーブル・ページ１６の移動先である物理アドレスはディレクトリ・ページ１４の項目１７の物理位置部分２１に入力される。
【００１８】
図４は、ディレクトリ・ページ１４の物理位置２７をマッピングする論理ＩＤ  ２５を示すデータベース・ヘッダー・ページ１２の一部を示している。データベース・ヘッダー・ページ１２は、論理ページＩＤ  ２５をディレクトリ・ページ１４の物理アドレス２７にマップするエントリー２３を備える。ディレクトリ・ページ１４の物理位置が変更された場合（データがデータベースにフラッシュされた場合）、データベース・ヘッダー・ページ１２のその対応するエントリーが更新される。そのエントリーに関しては、移動中のデータベース・ヘッダー・ページ１２の論理ＩＤ  ２５は変更されず、ディレクトリ・ページ１４の移動先である物理アドレスがデータベース・ヘッダー・ページ１２のエントリー２３の物理位置部分２７に入力される。
【００１９】
一実施形態では、論理ＩＤの参照先であるページのタイプ（すなわち、ヘッダー、ディレクトリ、マッピング・テーブル、またはユーザ・データ・ページ）を論理ＩＤ参照から推定できるよう論理ＩＤが割り当てられる。例えば、上記のページおよび項目のサイズを使用すると、０というページＩＤはデータベース・ヘッダー・ページ１２を参照させることができ、１というページＩＤはディレクトリ・ページ１４を参照させることができ、２というページＩＤは６４３を含めて６４３までマッピング・テーブル・ページ１６を参照させることができ、６４４と等しいかこれより大きなページＩＤはユーザ・データ・ページ１８を参照させることができる。論理ＩＤは、任意の適切な方法でも表現することができる。一実施形態で、論理ＩＤは２０ビットの符号なしの値として表現される。最下位の１０ビットは、対応するマッピング・テーブル・ページ１６の物理ページ・アドレスを収容するディレクトリ・ページ１４の項目に対応する。最上位の１０ビットは、対応するユーザ・データ・ページ１８の物理ページ・アドレスを収容する適切なマッピング・テーブル・ページ１６の項目に対応する。
【００２０】
論理ＩＤは、任意の適切な方法でも物理アドレスにマップすることができる。論理ＩＤを物理アドレスにマップする方法の一例を擬似コード形式で次の表１に示す。表１に示す技術は、物理アドレスの割り当てに上記の論理ＩＤを使用する。
表１
【００２１】
【表１−１】
2004362570.tif 000003
【００２２】
【表１−２】
2004362570.tif 000004
【００２３】
以下でより具体的に説明するように、本発明の一実施形態によるシャドウ・ページングは使用可能なページにページの内容を書き込むことを伴う。このプロセス中、一部のページはフリーとなり、それ以外のページは使用済みになる。これを達成するために割り当てインジケータ（allocation indicator）が提供される。割り当てインジケータは、論理ＩＤの状態（使用可能か使用不可能か）と物理アドレスを指し示す。状態を指し示す任意の適切な手段でも使用することができる。一実施形態では、論理ＩＤの割り当て状態を指し示すためにビットマップが使用される。論理ＩＤ割り当てビットマップは、メンテナンス・ページ（マッピング・テーブル・ページ１６、ディレクトリ・ページ１４、およびデータベース・ヘッダー・ページ１２）のエントリーごとに１ビットを収容する。一実施形態では、１にセットされたビットは、対応するエントリーが割り当てられていること（使用可能でないこと）を指し示す。０にセットされたビットは、対応するエントリーがフリーであること（使用可能であること）を指し示す。シャドウ・ページング・プロセス中、０のビットマップ値をサーチすることによって使用可能なページを探し出すことができる。見つかったページが現在割り当てられていること（使用不可能であること）を指し示すために、対応するビットマップ・エントリーが１に変更される。
【００２４】
一実施形態では、論理ＩＤ割り当てビットマップは一組のページとしてデータベース・ファイルに格納される。別の実施形態では、このビットマップはデータベース・ファイルには格納されず、データベースが開かれた時に初期化される。初期化は、マッピング・テーブルのページ・エントリーすべてを列挙することによって（例えば、データベース・ヘッダー・ページ１２、ディレクトリ・ページ１４、およびマッピング・テーブル・ページ１６の各エントリーを読み取ることによって）達成することができる。ページ・エントリーがページの有効な物理アドレスを収容している場合、そのページ項目に対応するページＩＤは割り当て済みとマーク付けされる。すべてのエントリーが一度スキャンされると、ビットマップはページＩＤの現在の割り当て状態を指し示す。
【００２５】
この割り当てビットマップはデータベース・ファイルに格納することができる。例えば、最大データベース・ファイル・サイズが２３２バイト（４ギガバイト）であり、データベース・ページのサイズが４０９６バイトの場合、最大２２０の論理ページＩＤが生じる。したがって、論理ページＩＤ割り当てビットマップは１３１，０７２バイトを使用して実装することができる。
【００２６】
割り当てビットマップを使用することにより、メンテナンス・ページを変更したり読み取ったりせずに論理ページＩＤを解放し、かつ／または割り当てることができる。このことは、複数のトランザクションがデータベースのページＩＤを同時に割り当てたり、解放したりすることを可能にすることにより、同時実行を改善する。ビットマップとページのエントリーはすべてデータベース・ファイルに収容されているので、割り当てビットマップを使用するは、論理ページＩＤを割り当てたり、解放したりするための堅牢な機構も提供する。この機構は、トランザクションがディスクにフラッシュされた後で、フリーの物理ページ・アドレスはフリーとマーク付けられ、割り当て済み物理ページ・アドレスは割り当て済みとマーク付けされるという点で堅牢である。そうでない場合、動作が失敗するとフラッシュ全体をロールバックしなければならず、これは、更新されたディレクトリ・ページ（また、マッピング・テーブル・ページなど）の新しい物理アドレスを有するデータベース・ヘッダー・ページが既にフラッシュされているので、これは非常に難しい。
【００２７】
ビットマップが一度メモリに読み込まれるか、またはページ項目をスキャンすることによりビットマップが計算されると、ページの割り当ておよび解放は、割り当てられ／解放されるべきページに対応するビットに到達するまでビットマップのビット数を計数することにより達成することができる。例えば、上記例に記載したページ・サイズとデータベース構造を使用すると、０にセットされたビットマップに関して、ビット６４４と等しいかこれよりも大きな最初のビットを探すことにより、ユーザ・データ・ページに対応するページＩＤを割り当てることができる。上記の例では６４４よりも少ないページＩＤはすべてメンテナンス・ページ用に確保されているので、６４４という数を選んだ。論理ページＩＤを解放すると、ビットは単に１から０に変更される。
【００２８】
論理ページＩＤを割り当て、解放することに関して上述したビットマップ・タイプ機構と同じビットマップ・タイプ機構が、物理ページ・アドレスを割り当て、解放するために適用可能である。この場合、ビットマップはデータベース・ファイルの各物理ページ・アドレスに対して１つのビットを有する。一実施形態では、１にセットされたビットは物理ページ・アドレスが割り当てられていることを指し示す。０にセットされたビットは物理ページ・アドレスが解放されていることを指し示す。
【００２９】
物理ページ・アドレスはデータベース内のページの位置である。トランザクションがコミットしてページがディスク上でシャドウされる場合、またシャドウ・プール内でダーティなページを置き換える場合、物理ページ・アドレスが割り当てられる。ダーティなページとは変更されたページである。本明細書に記載するシャドウ・ページングは、空の／未使用のページの物理ページ・アドレスを効率的に発見する機能を提供する。一実施形態では、この物理アドレス割り当てビットマップはデータベース・ファイルに格納されている。上記のように、この物理アドレス割り当てビットマップは最大１３１，０７２バイトのサイズで実装することができる。さらに別の実施形態では、データベース・ヘッダー・ページ１２、ディレクトリ・ページ１４、およびマッピング・テーブル・ページ１６をスキャンすることによってデータベースが開かれる場合、物理アドレス割り当てビットマップが計算される。ビットマップが計算される場合、同じページの組がスキャンされるので、このビットマップは論理ページＩＤビットマップが計算されるのと同時に計算することができる。
【００３０】
物理ページ・アドレスを解放する技術は、上記の論理ページＩＤを解放することと同じである。物理ページ・アドレスを割り当てる技術は、論理ページＩＤの割り当てとほぼ同じである。違うのは、既存の物理ページがフリーでない場合はデータベース・ファイルが増大し（すなわち、いくつかの物理ページがファイルの最後に追加され）、データベース・ファイルに付け加えられた新しい物理ページ・アドレスは、アドレス・ビットマップでフリーの物理ページ・アドレスとマーク付けされる。
【００３１】
最初にデータベースを開いた際に論理ページＩＤビットマップおよび物理ページ・アドレス・ビットマップを初期化する技術の一例を、擬似コード形式で次の表２に示す。
表２
【００３２】
【表２−１】
2004362570.tif 000005
【００３３】
【表２−２】
2004362570.tif 000006
【００３４】
【表２−３】
2004362570.tif 000007
【００３５】
図５から図７は、シャドウイング・ページングを実行するプロセスの一例の流れ図である。上記のように、トランザクションがコミットされた場合、そのトランザクションによって変更されたすべてのページがデータベース・ファイル（第１のデータベース・メモリ）の未使用（フリー）ページに書き込まれる。トランザクションの実行中は、トランザクション以前のメモリの状態およびデータベースへのアクセスが維持される。図５から図７に示したプロセスを図１から図４に示した構成要素を一例として参照して以下で説明する。
【００３６】
マッピング・テーブル・ページ（例えば、マッピング・テーブル・ページ１８）は、ステップ２０で、データベース・ファイル内に生成される。これらのマッピング・テーブル・ページは、データベース・ファイルのユーザ・データ・ページ（例えば、ユーザ・データ・ページ１８）の位置を維持するために使用される。マッピング・テーブル・ページによるユーザ・データ・ページの位置の維持は上記のようにして達成される。ディレクトリ・ページ（例えば、ディレクトリ・ページ１４）が、ステップ２２で、データベース・ファイル内に生成される。ディレクトリ・ページは、マッピング・テーブル・ページの位置を維持するために使用される。ディレクトリ・ページによるマッピング・テーブル・ページの位置の維持は、上記のようにして達成される。データベース・ヘッダー・ページ（例えば、データベース・ヘッダー・ページ１２）は、ステップ２４で、データベース・ファイル内に生成される。データベース・ヘッダー・ページは、ディレクトリ・ページの位置を維持するために使用される。データベース・ヘッダー・ページによるディレクトリ・ページの位置の維持は上記の通りである。任意選択で、上記のように、ページ割り当てビットマップがステップ２６で生成される。このビットマップの生成は、論理ＩＤの割り当てを指し示すビットマップ、物理アドレスの割り当てを指し示すビットマップ、またはこれらの組み合わせを含むことができる。通常、データベース・ファイルが最初に作成され、そのデータベース・ファイルにまだデータが入れられる前にメンテナンス・ページおよびビットマップが生成される。
【００３７】
ステップ２８で、データベース・ファイルで変更されるべきユーザ・データ・ページ（ダーティなページ）の内容がデータベース・ファイルの未使用ページに格納される。一実施形態では、変更されたページは、トランザクションがコミットされるまで揮発性メモリ内に維持される。トランザクションがコミットされると、ダーティなユーザ・データ・ページが揮発性メモリからデータベース・ファイルの未使用ページに書き込まれる。ダーティなページの内容が格納される未使用ページはシャドウ・ページと称される。したがって、ダーティなユーザ・データ・ページは作業空間の未使用ページ（シャドウ・ページ）に書き込まれる。シャドウ・ページには、元のユーザ・データ・ページがフリーとマーク付けられる前に書き込まれ、したがって元のユーザ・データ・ページは一定期間維持される。この動作が完了前に失敗した場合でも、未使用ページだけが上書きされることになり、ヘッダー、ディレクトリ、およびマッピング・テーブルはシャドウ・ページではなく古いページの存在だけを依然として反映することになるので、データベースは依然として一貫性のある状態（consistent state）にある。一実施形態では、これは、元のユーザ・データ・ページを作業空間にコピーすることによって達成される。変更は作業空間内で行われ、次いでトランザクションがコミットされる前に、変更された作業空間ページがフリー・ページ（シャドウ・ページ）にコピーされる。
【００３８】
ステップ３０で、ユーザ・データ・シャドウ・ページは割り当て中とマーク付けされる。すなわち、既にダーティなページが書き込まれているページは最早フリーではない。この割り当てられた状態は適切な機構によって指し示される。このような機構の１つが割り当てビットマップである。したがって、一実施形態では、ステップ３０で、シャドウ・ページの割り当て状態は割り当てビットマップにより指し示される。各ユーザ・データ・ページが新しい物理ページ・アドレスに書き込まれるので（シャドウされるので）、ステップ３２で、ユーザ・データ・ページの新しい位置を反映するためにマッピング・テーブルのユーザ・データ・ページの対応するエントリーが更新される。ユーザ・データ・ページの以前の物理アドレス（内容が移動してきた元のアドレス）がステップ３４で「割り当て済み」として維持される。すなわち、ユーザ・データ・ページの以前の物理アドレスはフリーであるとは宣言されない。ユーザ・データ・ページはまだ更新されていないので、データベース・システムは障害が発生した際にその以前の状態に復元することができる。したがって、ユーザ・データ・ページの古い物理アドレスは「ｓａｖｅｄ  ｏｆｆ」であり、以下で説明するように、トランザクションの完了後、古い物理ページ・アドレスはフリーとマーク付けされる（ステップ５８を参照のこと）。
【００３９】
ステップ３６で、変更された（更新された）マッピング・テーブル・ページの内容はデータベース・ファイルの未使用ページ（マッピング・テーブル・シャドウ・ページ）に格納される。したがって、ダーティなマッピング・テーブル・ページがデータベース・ファイルの未使用ページ（シャドウ・ページ）に書き込まれる。シャドウ・ページは変更が行われる前に書き込まれ、したがって古いページが一定期間だけ維持される。この動作が完了前に失敗した場合、未使用ページしか上書きされないので、データベースは依然として一貫性のある状態（consistent state）にある。一実施形態では、これは、元のマッピング・テーブル・ページを作業空間にコピーすることにより達成される。トランザクションがコミットされる前に、変更が作業空間内で行われ、変更された作業空間ページがフリー・ページ（シャドウ・ページ）にコピーされる。ステップ３８で、マッピング・テーブル・シャドウ・ページは割り当て中とマーク付けされる。すなわち、ダーティなページが既に書き込まれたページは最早フリーではない。この割り当てられた状態は任意の適切な機構によっても指し示される。そのような機構の１つが割り当てビットマップである。したがって、一実施形態では、マッピング・テーブル・ページの割り当て状態は、ステップ３８で割り当てビットマップによって指し示される。ステップ４０でマッピング・テーブル・シャドウ・ページの位置を反映させるために、ディレクトリ・ページ（例えば、ディレクトリ・ページ１４）が更新される。したがって、各マッピング・テーブル・ページが新しい物理ページ・アドレスに書き込まれるので、マッピング・テーブル・ページの新しい位置を反映するためにディレクトリ・ページ内のマッピング・テーブル・ページの対応するエントリーが更新される。マッピング・テーブル・ページの以前の物理アドレス（内容の移動元）はステップ４２で維持される。すなわち、以前のマッピング・テーブル・ページの物理アドレスは、フリーとは宣言されない。これによって、データベース・システムは、障害発生時にそれ以前の状態に復元することができる。したがって、マッピング・テーブル・ページの古い物理アドレスは「ｓａｖｅｄ  ｏｆｆ」であり、以下で説明するように、トランザクションの完了後、古い物理ページ・アドレスはフリーとマーク付けされる（ステップ５８を参照）。
【００４０】
ステップ４４で、ディレクトリ・ページの内容がデータベース・ファイル内の未使用ページ（ディレクトリ・シャドウ・ページ）に格納される。シャドウ・ページには変更がなされる前に書き込まれ、したがって古いページは一定期間維持される。一実施形態では、これは元のディレクトリ・ページを作業空間にコピーすることによって達成される。変更は作業空間内で行われ、トランザクションがコミットされる前に、変更された作業空間ページがフリー・ページ（シャドウ・ページ）にコピーされる。ステップ４６で、ディレクトリ・シャドウ・ページは割り当て中とマーク付けされる。すなわち、ディレクトリ・ページが既に書き込まれているページは、最早、フリーではない。この割り当てられた状態は任意の適切な機構によっても指し示される。１つのこのような機構は割り当てビットマップである。したがって、一実施形態では、ステップ４６でディレクトリ・ページの割り当てられた状態は割り当てビットマップによって指し示される。ステップ４８で、ディレクトリ・シャドウ・ページの位置を反映するために、データベース・ヘッダー・ページ（例えば、データベース・ヘッダー・ページ１２）が更新される。したがって、ディレクトリ・ページが新しい物理アドレスに書き込まれるので、ディレクトリ・ページの新しい位置を反映するために、データベース・ヘッダー・ページ内のディレクトリ・ページの対応するエントリーが更新される。ステップ５０でディレクトリ・ページの以前の物理アドレス（内容の移動元アドレス）が維持される。すなわち、以前のディレクトリ・ページの物理アドレスは、フリーとは宣言されない。これによって、データベース・システムは、障害発生時にそれ以前の状態に復元することができる。したがって、ディレクトリ・ページの古い物理アドレスは「ｓａｖｅｄ  ｏｆｆ」であり、以下で説明するように、トランザクション完了後、古い物理ページ・アドレスはフリーとマーク付けされる（ステップ５８を参照）。
【００４１】
ステップ５２で、データベース・ファイルのシャドウ・ページのすべての内容（ユーザデータ・シャドウ・ページ、マッピング・テーブル・シャドウ・ページ、ディレクトリ・シャドウ・ページ）は、データベース永続メモリに格納される（フラッシュされる）。データベース・ファイル・シャドウがフラッシュされて、したがって以前のステップからの変更のすべては永続ストレージ機構（例えば、ディスク）に固定（harden）される。データベース・ヘッダー・ページは、ステップ５４でデータベースに格納される（フラッシュされる）。ステップ５６で、シャドウ・ページが再度フラッシュされる。このダブル・フラッシュ技術は、データベース・システムが障害発生時の復元の際に一貫性のある状態になることを保証する。データベース・ヘッダーに書き込まれるまで、データベース・ファイルに対して危険な書き込みはなされていない。他のトランザクションは、データベース・ヘッダー・ページ、ディレクトリ・ページ、およびマッピング・テーブル・ページの古いまたは現在のコミットされたバージョンを使用していてよい。データベース・ヘッダー・ページがコミットされると、新しいディレクトリ・ページが起動され、これによって新しいマッピング・テーブル・ページが起動され、これによってユーザ・データ・ページの新しいバージョンが起動される。例えば、データベース・ヘッダー・ページの書き込み後にのみフラッシュが行われた場合、ディレクトリ・ページがディスク上で固定される前にデータベース・ヘッダー・ページがディスク上で固定された（ディレクトリ・ページの新しい位置を保存して）可能性がある。これは、データベース・システムの状態を一貫性のないものとする可能性がある。ステップ５２、５４、および５６が正常に完了したということは、基本的にトランザクションが完全に実行されたことを保証しており、したがって古い物理ページ・アドレスは自由に使用することができる（使用可能である）。したがって、ユーザ・データ・ページ、マッピング・テーブル・ページおよびディレクトリ・ページは、ステップ５８でフリーと宣言される。この割り当て状態は、上記の割り当てビットマップなど、任意の適切な機構によっても達成することができる。ステップ５８で、すべての古い物理ページ・アドレスが解放され、したがってこれは他の動作のために使用することができる。しかし、フラッシュ・プロセスの完了前に障害が発生した場合、すべての新たに割り当てられた物理ページ・アドレスは解放され、システムは以前の状態に置かれる。
【００４２】
一実施形態では、トランザクションがアトミックであることを保証するために（例えば、セクタが部分的に書き込まれない）、ディレクトリ・ページの物理ページ・アドレスが、データベース・ファイルの最初の部分（例えば、第１のセクタに）に格納されているデータベース・ヘッダー・ページの第１のセクタに格納される。したがって、データベース・ヘッダー・ページの第１のセクタが書き込まれていない時点では、トランザクションはコミットされておらず、未使用ページしか上書きされていないので、このデータベースは依然として一貫性のある状態にある、という理由からトランザクションのコミットはアトミックである。
【００４３】
シャドウ・ページを使用してトランザクションを実行する例を、以下で図８から図１３を参照して提供する。図８はデータベース・ファイルのページ０からページ８までを示している。ページ０はデータベース・ヘッダー・ページであり、ページ１はディレクトリ・ページであり、ページ２はマッピング・テーブル・ページであり、ページ３および４はダーティなユーザ・データ・ページであり、ページ５から８は空の（未使用の）ページである。実線は、ヘッダー・ページの項目（論理ＩＤ）はディレクトリ・ページを指し示しており、ディレクトリ・ページの項目はマッピング・テーブル・ページを指し示しており、マッピング・テーブル・ページの項目はユーザ・データ・ページを指し示していることを表している。この例は、トランザクションは既に開始されており、ユーザ・ページ１およびユーザ・ページ２を既に変更しており、現在コミット中であると仮定して開始する。上記のように、ユーザ・ページ１およびユーザ・ページ２のダーティなコピーはファイルの未使用位置に書き込まれる。
【００４４】
図９は、ユーザ・ページ１および２（すなわち、それぞれ物理ページ３および４）が物理ページ・アドレス５および６にそれぞれ書き込まれていることを示している。ユーザ・ページ１およびユーザ・ページ２の新しい位置を表すために、対応するマッピング・テーブル・ページが変更される。ページ５および６に書き込み中のユーザ・ページ１および２は、グレイの斜線で示したユーザ・ページから出ている点線矢印により示される。ユーザ・ページ１および２の新しい位置を表すよう変更中のマッピング・ページ２は、グレイの斜線で示したマッピング・テーブル・ページから出ている実線矢印により示される。マッピング・テーブル・ページを変更することにより、それは現在のトランザクションでダーティなページとなる。このトランザクションの実行中、他のトランザクションはページ２（グレイの斜線）に格納されているマッピング・テーブル・ページを使用する。次に、変更されたマッピング・テーブル・ページは未使用ページに書き込まれる。図９に関しては、ページは各ステップでディスクに書き込まれる、ところが図５から図７に関する説明では、ページはすべてのメンテナンス・ページの更新後にディスクにフラッシュされるということに留意されたい。本発明によれば、どちらの技術も適切である。したがって、ページはプロセスの任意の適切な時点でもディスクに書き込むことができる。
【００４５】
図１０は、未使用ページ７に書き込み中のマッピング・テーブル・ページ、およびマッピング・テーブル・ページの新しいアドレスを反映するために更新中のディレクトリ・ページを示している。この例では、１つのマッピング・テーブル・ページしか変更されていない。このプロセスは上記のステップと同様に実行される。マッピング・テーブル・ページはデータベース・ファイルの未使用ページに書き込まれ、マッピング・テーブル・ページの新しい位置を反映させるためにディレクトリ・ページが更新される。他のトランザクションは、それぞれページ１および２に置かれたディレクトリ・ページおよびマッピング・テーブル・ページのグレイの斜線で示したバージョンを依然として使用している。
【００４６】
次に、図１１に示すようにディレクトリ・ページが未使用ページ（この実施例ではページ８）に書き込まれる。図１１は、ディレクトリ・ページの新しい位置を反映するために更新中のデータベース・ヘッダー・ページも示している。次に、図１２に示すように（上記のダブル・フラッシュ技術を使用して）データベース・ヘッダー・ページが書き込まれる。ヘッダー・ページが書き込まれ、ダブル・フラッシュ・プロセスが実行された後、トランザクションは正常にコミットされ、その結果がユーザに公開されるデータベースの状態に反映される（すなわち、この時点でデータベースのユーザはユーザ・データ・ページ、マッピング・テーブル・ページ、およびディレクトリ・ページになされた変更を「見る」ことができる）。図１３に示すように、４つのページを新しい物理ページ・アドレスに移動した結果解放された物理ページ・アドレス（ページ１〜４）が割り当て解除される（使用可能とされる）。
【００４７】
図１４は、シャドウ・ページングを実行するためのシステムのブロック図である。一実施形態では、システムはデータベースにアクセスするために使用され、このようなコンテクストで説明される。このシステムは、作業空間（第１のデータベース・メモリ）７８、永続メモリ（persistent memory）（第２のデータベース・メモリ）８０、ページ割り当てインジケータ７２、コントローラ７４、および付加的なデータ・コンプレッサ７６を含んでいる。作業空間７８および永続メモリ８０は、半導体メモリ、磁気メモリ（例えば、ディスク）、光メモリ、またはこれらの組み合わせなど任意の適切なタイプのメモリを備えることができる。一般に、かつ好ましくは、永続メモリ８０は、データを永続的に格納する機能を有する。したがって、通常の動作状況では、データが特に除去され、かつ／または書き換えられるまでは、永続メモリ８０に書き込まれたデータは使用可能である。本明細書に記載するように、フラッシュおよびフラッシングという用語は、永続メモリ８０にデータを送信することを表している。
【００４８】
ページ割り当てインジケータ７２は、上記のように論理ＩＤと物理アドレスの割り当て状態を指し示す機能を実行する。一実施形態では、ページ割り当てインジケータ７２は上記のビットマップを含んでいる。データ・コンプレッサ７６は任意選択である。データ・コンプレッサ７６は、システムで使用されるメモリ・サイズを低減するために、作業空間７８および／または永続メモリ８０のデータを圧縮する。データ・コンプレッサ７６は任意の適切なデータ圧縮技術でも組み込むことができる。
【００４９】
コントローラ７４は、メンテナンス・ページ（データベース・ヘッダー・ページ、ディレクトリ・ページ、およびマッピング・テーブル・ページ）に関連付けられた機能の多くを実行し、上記のようにシャドウ・ページを実行するための各ステップの処理も制御する。コントローラ７４は、データベース・ファイルでのページの位置を維持するためにメンテナンス・ページを生成する。また、コントローラは、選択されたページの内容も未使用ページ（シャドウ・ページ）に格納する。コントローラ７４は、作業空間７８でのシャドウ・ページの位置を反映させるためにメンテナンス・ページを更新する。コントローラ７４は、メンテナンス・ページの内容も作業空間７８の未使用ページに格納する。コントローラ７４は、永続メモリ８０に作業空間７８の内容を格納する。コントローラ７４は、上記のダブル・フラッシング・プロセスを制御する。
【００５０】
適切なコンピューティング・システム環境の概要
図１５は、シャドウ・ページングのための方法およびシステムを実装することのできる適切なコンピューティング・システム環境１００の一例を示している。コンピューティング・システム環境１００は、適切なコンピューティング環境の一例にすぎず、表示要素を動的かつ個別に制御するための方法およびシステムの使用または機能の範囲に関していかなる限定をも示唆することを意図するものではない。また、コンピューティング環境１００は、動作環境１００例で示される構成要素のいかなる１つまたは組み合わせに関するいかなる依存または要求を有するものと解釈されるべきではない。
【００５１】
シャドウ・ページングの方法およびシステムは、多数の他の汎用または専用コンピューティング・システム環境または構成で動作可能である。表示要素を動的かつ個別に制御するための方法およびシステムで使用するために適している可能性のある良く知られたコンピューティング・システム、環境、および／または構成の例は、限定はしないが、パーソナル・コンピュータ、サーバ・コンピュータ、ハンドヘルドまたはラップトップ・デバイス、マルチ・プロセッサ・システム、マイクロ・プロセッサ・ベースのシステム、セットトップボックス、プログラム可能な家庭用電化製品、ネットワークＰＣ、ミニ・コンピュータ、メインフレーム・コンピュータ、上記システムまたはデバイスのどれでも含む分散型コンピューティング環境などを含む。
【００５２】
シャドウ・ページングのための方法およびシステムは、コンピュータによって実行中のプログラム・モジュールのようなコンピュータ実行可能命令の一般的なコンテクストで説明することができる。一般に、プログラム・モジュールは、特定タスクを実行し、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。シャドウ・ページングのための方法およびシステムは、通信ネットワークまたは他のデータ伝送媒体を介してリンクされる遠隔処理装置によってタスクが実行される分散型コンピューティング環境でも実行することができる。分散型コンピューティング環境では、プログラム・モジュールおよび他のデータは、メモリ・ストレージ・デバイスを含めてローカルおよび遠隔コンピュータ記憶媒体の両方に置くことができる。
【００５３】
図１５を参照すると、シャドウ・ページングのための方法およびシステムを実装するためのシステム例は、コンピュータ１１０の形式の汎用コンピューティング・デバイスを含む。コンピュータ１１０の構成要素は、限定はしないが、処理装置１２０、システム・メモリ１３０、およびシステム・メモリ１３０を含めて様々なシステム構成要素を処理装置１２０に結合するシステム・バス１２１を含むことができる。システム・バス１２１は、メモリ・バスまたはメモリ・コントローラ、周辺バス、および様々なバス・アーキテクチャのどれかを使用する周辺バスを含めて複数タイプのバス構造のどれであってもよい。限定ではなく一例として、このようなアーキテクチャは、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ電子装置規格化協会（ＶＥＳＡ）ローカル・バス、および周辺部品相互接続（ＰＣＩ）バス（Ｍｅｚｚａｎｉｎｅバスとしても知られる）を含む。
【００５４】
コンピュータ１１０は、通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ１１０によってアクセスすることのできるいかなる使用可能な媒体でもあってよく、揮発性／不揮発性媒体、取外し可能／取外し不可能媒体の両方を含む。限定ではなく一例として、コンピュータ可読媒体はコンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラム・モジュール、または他のデータのような情報の記憶のためのいかなる方法または技術でも実装される揮発性／不揮発性、取外し可能／取外し不可能媒体を含む。コンピュータ記憶媒体は、限定はしないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージ、または他の磁気ストレージ・デバイス、または所望の情報を格納するために使用することができ、コンピュータ１１０によってアクセスすることのできるいかなる他の媒体をも含む。通信媒体は、通常、コンピュータ可読命令、データ構造、プログラム・モジュール、もしくは搬送波または他の転送機構のような変調されたデータ信号形式の他のデータを実施し、いかなる情報配信媒体をも含む。「変調されたデータ信号」という用語は、その特徴的なセットの１つまたは複数を有し、情報を信号に符号化するような方法で変更される信号を意味する。限定ではなく一例として、通信媒体は、有線ネットワークまたは直接有線接続のような有線媒体、およびアコースティック、ＲＦ、赤外線のような無線媒体または他の無線媒体を含む。これら媒体のどの組み合わせでも、コンピュータ可読媒体の範囲に含まれることを理解されたい。
【００５５】
システム・メモリ１３０は、ＲＯＭ  １３１およびＲＡＭ  １３２のような揮発性および／または不揮発性メモリ形式のコンピュータ記憶媒体を含む。起動時などにコンピュータ１１０の素子間で情報を転送することに役立つ基本ルーチンを収容している基本入出力システム１３３（ＢＩＯＳ）は、通常、ＲＯＭ  １３１に格納されている。ＲＡＭ  １３２は、通常、処理装置１２０によって直接アクセス可能な、かつ／または現在操作されているデータおよび／またはプログラム・モジュールを収容している。限定ではなく一例として、図１５は、オペレーティング・システム１３４、アプリケーション・プログラム１３５、他のプログラム・モジュール１３６、およびプログラム・データ１３７を示している。
【００５６】
コンピュータ１１０は、他の取外し可能／取外し不可能な、揮発性／不揮発性コンピュータ記憶媒体も含むことができる。一例としてのみ、図１５は、取外し不可能な不揮発性磁気媒体から読み取り、またはこれに書き込むハードディスク・ドライブ１４１、取外し可能な不揮発性磁気ディスク１５２から読み取り、またはこれに書き込む磁気ディスク・ドライブ１５１、およびＣＤ−ＲＯＭ、ＣＤＲＷ、または他の光媒体のような取外し可能な不揮発性光ディスク１５６から読み取り、またはこれに書き込む光ディスク・ドライブ１５５を示している。動作環境例で使用することのできる他の取外し可能／取外し不可能な揮発性／不揮発性コンピュータ記憶媒体は、限定はしないが、磁気テープ・カセット、フラッシュ・メモリ・カード、デジタル多用途ディスク、デジタル・ビデオ・テープ、固体ＲＡＭ、固体ＲＯＭなどを含む。ハードディスク・ドライブ１４１は、通常、インターフェース１４０のような取外し不可能なメモリ・インターフェースを介してシステム・バス１２１に接続されており、磁気ディスク・ドライブ１５１および光ディスク・ドライブ１５５は、通常、インターフェース１５０のような取外し可能なメモリ・インターフェースによりシステム・バス１２１に接続されている。
【００５７】
上記で説明し、図１５に示したドライブおよびそれらの関連するコンピュータ記憶媒体は、コンピュータ１１０にコンピュータ可読命令、データ構造、プログラム・モジュール、および他のデータの格納を提供する。図１５で、例えばハード・ドライブ１４１は、オペレーティング・システム１４４、アプリケーション・プログラム１４５、他のプログラム・モジュール１４６、およびプログラム・データ１４７を格納しているように示されている。これらの構成要素は、オペレーティング・システム１３４、アプリケーション・プログラム１３５、他のプログラム・モジュール１３６、およびプログラム・データ１３７と同じであっても異なっていてもよいということに留意されたい。オペレーティング・システム１４４、アプリケーション・プログラム１４５、他のプログラム・モジュール１４６、およびプログラム・データ１４７が、最低限異なるものであるということを示すため、本明細書ではこれらに異なる参照番号を付した。ユーザは、キーボード１６２、一般にはマウス、トラック・ボールまたはタッチ・パッドと称されるポインティング・デバイス１６１のような入力装置によってコンピュータ１１０にコマンドおよび情報を入力することができる。他の入力装置（図示せず）は、マイクロフォン、ジョイスティック、ゲーム・パッド、衛星放送用受信アンテナ、スキャナなどを含むことができる。これらおよび他の入力装置は、システム・バス１２１に結合されているユーザ入力インターフェース１６０を介して処理装置１２０に接続されていることがしばしばあるが、パラレル・ポート、ゲーム・ポート、またはユニバーサル・シリアル・バス（ＵＳＢ）のような他のインターフェースおよびバス構造によって接続することができる。モニタ１９１または他のタイプの表示装置も、ビデオ・インターフェース１９０のようなインターフェースを介してシステム・バス１２１に接続されている。モニタに加え、コンピュータは、出力周辺インターフェース１９０を介して接続することのできるスピーカ１９７およびプリンタ１９６のような他の周辺出力装置を含むこともできる。
【００５８】
コンピュータ１１０は、遠隔コンピュータ１８０のような１つまたは複数の遠隔コンピュータへの論理接続を使用してネットワーク接続された環境で動作することができる。遠隔コンピュータ１８０は、パーソナル・コンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア・デバイス、または他の共通ネットワーク・ノードであってよく、一般には上記でコンピュータ１１０に関して説明した要素の多くまたはすべてを含むが、但し図１５にはメモリ・ストレージ・デバイス１８１しか示していない。図示した論理接続はローカル・エリア・ネットワーク（ＬＡＮ）１７１およびワイド・エリア・ネットワーク（ＷＡＮ）１７３を含むが、他のネットワークを含むこともできる。このようなネットワーク接続環境はオフィス、企業規模のコンピュータ・ネットワーク、イントラネット、およびインターネットでは一般的なものである。
【００５９】
ＬＡＮネットワーク接続環境で使用される場合、コンピュータ１１０はネットワーク・インターフェースまたはアダプタ１７０を介してＬＡＮ  １７１に接続される。ＷＡＮネットワーク接続環境で使用される場合、コンピュータ１１０は、通常、モデム１７２、またはインターネットのようなＷＡＮ  １７３を介して通信を確立するための他の手段を含む。内蔵型であっても外付けであってもよいモデム１７２は、ユーザ入力インターフェース１６０または他の適切な機構を介してシステム・バス１２１に接続することができる。ネットワーク接続された環境では、コンピュータ１１０に関して図示されたプログラム・モジュールまたはその一部は遠隔メモリ・ストレージ・デバイスに格納することができる。限定ではなく一例として、図１５は、メモリ・デバイス１８１に常駐するものとして遠隔アプリケーション・プログラム１８５を示している。図示したネットワーク接続は一例であって、コンピュータ間で通信リンクを確立する他の手段を使用することができるということが理解されよう。
【００６０】
様々な分散型コンピューティング・ファームウェアは、パーソナル・コンピューティングおよびインターネットの集中に鑑みて既に開発されており、現在もなお開発中である。個人および企業ユーザにはどちらにも、アプリケーションおよびコンピューティング・デバイスのためのシームレスに相互運用可能かつインターネット対応のインターフェースが提供され、コンピューティング動作をますますウェブ・ブラウザまたはネットワーク指向にする。
【００６１】
例えば、ＭＩＣＲＯＳＯＦＴ（登録商標）の．ＮＥＴプラットフォームは、サーバ、ウェブ・ベースのデータ・ストレージのようなビルディング・ブロック・サービス、およびダウンロード可能なデバイス・ソフトウェアを含む。一般に、．ＮＥＴプラットフォームは、（１）コンピューティング・デバイスの全範囲を協同で動作させ、ユーザ情報をそれらすべてに自動的に更新させ、同期させる機能、（２）ＨＴＭＬよりもＸＭＬをより多く使用することによって可能になるより多くのウェブ・サイト用対話機能、（３）例えば電子メールのような様々なアプリケーションまたはＯｆｆｉｃｅ．ＮＥＴのようなソフトウェアの管理のための、中央開始点からユーザへのカスタマイズされたアクセスと製品およびサービスの配信とを特徴とするオンライン・サービス、（４）情報へのアクセスの効率および容易性ならびにユーザとデバイス間の情報の同期を向上させる集中型データ・ストレージ、（５）電子メール、ファックス、および電話のような様々な通信媒体を統合する機能、（６）開発者のための、再使用可能モジュールを作成し、それによって生産性を向上させ、プログラミング・エラー数を低減させる機能、および（７）多くの他のクロス・プラットフォーム統合機能を提供する。
【００６２】
以上、本明細書の実施形態をコンピューティング・デバイスに常駐するソフトウェアに関して説明したが、サービスが．ＮＥＴの言語およびサービスならびに他の分散型コンピューティング・フレームワークのすべてによって実行され、それらでサポートされ、またはそれらを介してアクセスされるように、シャドウ・ページングのための方法およびシステムの１つまたは複数の部分をコプロセッサと要求側オブジェクトの間でオペレーティング・システム、アプリケーション・プログラム・インターフェース（ＡＰＩ）、または「ミドルマン」オブジェクトを介して実装することもできる。
【００６３】
本明細書に記載のシャドウ・ページングの方法は、これらのコンピュータで実施されるプロセスとこれらのプロセスを実行するためのシステムの形式で実施することができる。本明細書に記載のシャドウ・ページングの方法は、フロッピー（登録商標）ディスケット、読み取り専用メモリ（ＲＯＭ）、ＣＤ−ＲＯＭ、ハード・ドライブ、高密度ディスク、またはいかなる他のコンピュータ可読記憶媒体のような有形媒体形式で実施されるプログラム・コードの形式で実施してもよく、コンピュータ・プログラム・コードがコンピュータにロードされ、コンピュータによって実行された場合、そのコンピュータは本発明を実行するためのシステムになる。本明細書に記載のシャドウ・ページングの方法は、例えば記憶媒体に格納されていても、コンピュータにロードされ、かつ／またはコンピュータによって実行されても、または電気配線またはケーブル経由で、光ファイバを介して、または電磁放射によるなどの何らかの伝送媒体を介して送信されても、コンピュータ・プログラム・コード形式で実施することができ、コンピュータ・プログラム・コードがコンピュータにロードされ、コンピュータによって実行された場合、そのコンピュータは本発明を実行するためのシステムとなる。汎用プロセッサに実装された場合、コンピュータ・プログラム・コード・セグメントは特定論理回路を作成するためのプロセッサを構成する。
【００６４】
本明細書に記載の様々な技術をハードウェアまたはソフトウェア、または適宜これらの組み合わせで実装することができる。したがって、本発明の方法および装置、もしくはその特定の態様またはその部分は、フロッピー（登録商標）ディスケット、ＣＤ−ＲＯＭ、ハード・ドライブ、またはいかなる他の機械可読記憶媒体のような有形媒体で実施されるプログラム・コード（すなわち、命令）の形式を取ることができ、プログラム・コードがコンピュータのような機械にロードされ、コンピュータのような機械によって実行された場合、その機械は本発明を実行するための装置になる。プログラム可能なコンピュータでプログラム・コードを実行する場合、コンピューティング・デバイスは、一般に、プロセッサ、プロセッサによって可読の記憶媒体（揮発性および不揮発性メモリおよび／または記憶素子を含めて）、少なくとも１つの入力装置、および少なくとも１つの出力装置を含む。本発明の信号処理サービスを、例えばデータ処理ＡＰＩなどを使用して利用することのできる１つまたは複数のプログラムは、コンピュータと通信するために高レベルの手続き、またはオブジェクト指向プログラミング言語で実装することが好ましい。しかし、１つ以上のプログラムは、適宜、アセンブリ言語または機械言語で実装することができる。いずれの場合でも、言語はコンパイル言語またはインタプリタ言語であってよく、ハードウェア実施態様と組み合わせることができる。
【００６５】
本発明の方法および装置は、電気配線またはケーブル経由で、光ファイバを介して、またはいかなる他の形式の伝送のような何らかの伝送媒体を介して送信されるプログラム・コードの形式で実施される通信を介して実行することもでき、ＥＰＲＯＭ、ゲートアレイ、プログラム可能な論理デバイス（ＰＬＤ）、クライアント・コンピュータ、ビデオ・レコーダなどのような機械、または上記実施形態に記載の信号処理機能を有する受信側機械にプログラム・コードが受信され、ロードされ、実行された場合、その機械は本発明を実行するための装置になる。汎用プロセッサに実装された場合、プログラム・コードは、本発明の機能を呼び起こすように動作する独自の装置を提供するためにプロセッサと結合する。さらに、本発明と共に使用されるいかなる記憶技術でも常にハードウェアおよびソフトウェアの組み合わせであってよい。
【００６６】
以上、本発明の実施形態を様々な図面の好ましい実施形態に関して説明したが、本発明の範囲を逸脱せずに本発明の同じ機能を実行するために、他の類似の実施形態を使用することができ、または記載した実施形態に修正形態および追加を行うことができるということを理解されたい。さらに、特に多数の無線ネットワーク接続されたデバイスが普及しているので、ハンドヘルド・デバイス・オペレーティング・システムおよび他の特定用途向けオペレーティング・システムを含めて様々なコンピュータ・プラットフォームが想定されることが強調されるべきである。したがって、本発明は単一の実施形態に限定されるべきではなく、特許請求の範囲の幅（breadth）および範囲内で解釈されるべきである。
【図面の簡単な説明】
【００６７】
【図１】本発明の一実施形態による、シャドウ・ページングを実行するために使用されるメモリページ構造を示す図である。
【図２】本発明の一実施形態による、論理ＩＤがユーザ・データ・ページの物理位置にマッピングされていることを示すマッピング・テーブル・ページの一部を示す図である。
【図３】本発明の一実施形態による、論理ＩＤがマッピング・テーブル・ページの物理位置にマップされていることを示すディレクトリ・ページの一部を示す図である。
【図４】本発明の一実施形態による、論理ＩＤがディレクトリ・ページの物理位置にマッピングされていることを示すデータベース・ヘッダー・ページの一部を示す図である。
【図５】本発明の一実施形態による、シャドウイング・ページングを実行するプロセスの流れ図である。
【図６】本発明の一実施形態による、シャドウイング・ページングを実行するプロセスの流れ図である。
【図７】本発明の一実施形態による、シャドウイング・ページングを実行するプロセスの流れ図である。
【図８】本発明の一実施形態による、シャドウ・ページングを使用してトランザクションをコミットする一例を示す図である。
【図９】本発明の一実施形態による、シャドウ・ページングを使用してトランザクションをコミットする一例を示す図である。
【図１０】本発明の一実施形態による、シャドウ・ページングを使用してトランザクションをコミットする一例を示す図である。
【図１１】本発明の一実施形態による、シャドウ・ページングを使用してトランザクションをコミットする一例を示す図である。
【図１２】本発明の一実施形態による、シャドウ・ページングを使用してトランザクションをコミットする一例を示す図である。
【図１３】本発明の一実施形態による、シャドウ・ページングを使用してトランザクションをコミットする一例を示す図である。
【図１４】本発明の一実施形態による、シャドウ・ページングを実行するシステムのブロック図である。
【図１５】本発明の実施例によるシャドウ・ページングのための方法およびシステムを実装することのできる適切なコンピューティング・システム環境の一例を示す図である。
【符号の説明】
【００６８】
１２  データベース・ヘッダー・ページ
１４  ディレクトリ・ページ
１６  マッピング・テーブル・ページ
１８  ユーザ・データ・ページ
【図１】
2004362570.tif 000008
【図２】
2004362570.tif 000009
【図３】
2004362570.tif 000010
【図４】
2004362570.tif 000011
【図５】
2004362570.tif 000012
【図６】
2004362570.tif 000013
【図７】
2004362570.tif 000014
【図８】
2004362570.tif 000015
【図９】
2004362570.tif 000016
【図１０】
2004362570.tif 000017
【図１１】
2004362570.tif 000018
【図１２】
2004362570.tif 000019
【図１３】
2004362570.tif 000020
【図１４】
2004362570.tif 000021
【図１５】
2004362570.tif 000022