(57)【要約】      （修正有）【課題】トランザクションのコミットに必要な時間を削減するシステムおよび方法を提供する。【解決手段】トランザクション処理システム８００であって、トランザクション処理システム内の１つまたは複数のトランザクションに従ってデータを処理するように構成されたデータベースライタ８０２と、トランザクション処理システム内のトランザクションを監視するトランザクションモニタ８０４と、トランザクション処理システム内のトランザクションに関連する監査トレイルデータを保持するログライタ８０２と、１つまたは複数の非ディスク永続メモリユニット８１２、８１４とを備え、１つまたは複数の非ディスク永続メモリユニット８１２，８１４をチェックポインティングに使用する。【選択図】図８
2006012142.tif 000002
【特許請求の範囲】
【請求項１】
トランザクション処理システム（８００）であって、
前記トランザクション処理システム内の１つまたは複数のトランザクションに従ってデータを処理するように構成されたデータベースライタ（８０２）と、
前記トランザクション処理システム内のトランザクションを監視するトランザクションモニタ（８０４）と、
前記トランザクション処理システム内のトランザクションに関連する監査トレイルデータを保持するログライタ（８０２）と、
１つまたは複数の非ディスク永続メモリユニット（８１２、８１４）と
を備え、
前記１つまたは複数の非ディスク永続メモリユニット（８１２、８１４）をチェックポインティングに使用するように構成された
トランザクション処理システム。
【請求項２】
前記１つまたは複数の非ディスク永続メモリユニットは、
プライマリ非ディスク永続メモリユニット（８１２）およびミラー非ディスク永続メモリユニット（８１４）
を含む
請求項１記載のトランザクション処理システム。
【請求項３】
前記ログライタ（８０６）は、前記１つまたは複数の非ディスク永続メモリユニット（８１２，８１４）をチェックポインティングに使用するように構成される
請求項１記載のトランザクション処理システム。
【請求項４】
前記ログライタ（９０６）および前記データベースライタ（９０２）は、前記１つまたは複数の非ディスク永続メモリユニットをチェックポインティングに使用するように構成される
請求項１記載のトランザクション処理システム。
【請求項５】
前記１つまたは複数の非ディスク永続メモリユニット（８１２、８１４）は、
循環バッファとして構成されたライトアサイドバッファ
を含み、
前記ログライタ（９０６）および前記データベースライタ（９０２）は、前記循環バッファをチェックポインティングに使用するように構成される
請求項１記載のトランザクション処理システム。
【請求項６】
トランザクションによって誘発された状態変更に関連するデータを受け取ること（７００）と、
前記受け取ったデータを非ディスク永続メモリに書き込むことによってチェックポイントを行うこと（７０２）と
を含むコンピュータにより実施される方法。
【請求項７】
前記チェックポイントを行うことは、ログライタによって行われる
請求項６記載のコンピュータにより実施される方法。
【請求項８】
前記チェックポイントを行うことは、データベースライタによって行われる
請求項６記載のコンピュータにより実施される方法。
【請求項９】
前記チェックポイントを行うことは、少なくともログライタおよびデータベースライタによって行われる
請求項６記載のコンピュータにより実施される方法。
【請求項１０】
前記チェックポイントを行うことは、
前記受け取ったデータを第１および第２の非ディスク永続メモリユニットに書き込むこと
を含み、
前記第１の非ディスク永続メモリユニットは、
プライマリ非ディスク永続メモリユニット
を含み、
前記第２の非ディスク永続メモリユニットは、
ミラー非ディスク永続メモリユニット
を含む
請求項６記載のコンピュータにより実施される方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、トランザクション処理システムに関する。
【０００２】
（関連出願）
本願は、参照により本明細書に援用される２００４年３月９日出願の米国特許出願第１０／７９７，２５８号の一部継続であり、その優先権を主張するものである。
本願はまた、米国特許出願第１０／３５１，１９４号および同第１０／７３７，３７４号に関連するものである。
【背景技術】
【０００３】
トランザクション処理システムは、原子性、一貫性、隔離性、および耐久性を含むいわゆるＡＣＩＤ特性の維持を保証しながら複数のトランザクションプログラムの並行実行をサポートするコンピュータハードウェアおよびソフトウェアシステムである。
トランザクションプログラムは、トランザクションを正しく実行するために動作を適用しなければならない順序および実施しなければならないあらゆる並行制御を含めた、アプリケーション状態に対して適用される動作の仕様である。
最も一般的な並行制御動作はロッキングであり、ロッキングにより、トランザクションプログラムに対応するプロセスは、読み出し、または書き込みを行うデータに対して共有ロックあるいは排他ロックを取得する。
トランザクションは、通常、データベースにおいて表される物理的および抽象的なアプリケーションの状態に対する動作の集まりを指す。
トランザクションは、トランザクションプログラムの実行を表す。
動作には、共有状態の読み書きが含まれる。
【０００４】
ＡＣＩＤ特性に関して、原子性は、トランザクションが完全に実行されるか、またはまったく実行されないかのいずれかであるという点で、全か無かの振る舞いを示すトランザクションを指す。
完了したトランザクションはコミットされたと言え、実行中に放棄されたものはアボートされたと言え、実行が開始されたがコミットもアボートもされなかったものはインフライトと言える。
【０００５】
一貫性は、アプリケーション状態を指定されたいずれの保全性制約とも矛盾しない状態のままに保つトランザクションの成功した完了を指す。
【０００６】
隔離性は、直列化可能性としても知られ、トランザクションストリームをいずれも正しく並行実行することが、ストリームを成す各トランザクションを或る全体順序で実行することと一致することを保証する。
この意味では、実行済みトランザクションに関して、ストリーム内の他のあらゆるトランザクションの影響は、このトランザクションの完全に前に実行された場合の影響も、また完全に後で実行された場合の影響も同じである。
強力な直列化可能性は、トランザクションの並行実行が制約される程度を指し、トランザクション処理システムにおいて異なる隔離レベルを作り出す。
本明細書の文脈の中では、トランザクションによって行われた更新が決して失われず、トランザクション内での再読み出し動作の結果が同じである最強の形態の隔離性を示すトランザクション処理システムを最重視する。
【０００７】
耐久性は、トランザクションが一度コミットされると、アプリケーション状態に対するその諸変更が、トランザクション処理システムに対して影響する障害に耐え抜くような特性を指す。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
トランザクション処理システムに伴う一問題は、トランザクションのコミットに必要な時間の削減に関する。
したがって、本発明は、トランザクションのコミットに必要な時間を削減するシステムおよび方法を提供することに関連する問題から生じたものである。
【発明を実施するための最良の形態】
【０００９】
（概観）
本明細書において説明する各種実施形態は、トランザクション処理システムと併せて非ディスク永続メモリを利用する。
非ディスク永続メモリをトランザクションのコミットに使用することにより、トランザクションのコミットに関連する時間を削減することができ、ひいては、トランザクション処理システム内の資源に対する需要を低減するとともに、トランザクション処理のスループットを増大させることができる。
各種実施形態は、非ディスク永続メモリをチェックポインティングプロセスおよびライトアサイド（write-aside）バッファリングプロセスの両方に利用する統一バッファリング方式を提供する。
【００１０】
（例示的な一般トランザクション処理システム）
図１は、構成要素を本明細書において説明する本発明の原理の実施に利用することのできる例示的なトランザクション処理システム１００を示す。
説明する実施形態では、トランザクション処理システム１００は、データベースライタ１０２、トランザクションモニタ１０４、およびログライタ１０６を備える。
【００１１】
データベースライタ１０２は、トランザクションプログラムによって指定された動作を実行する際に、データボリューム（すなわち、ディスクまたはディスクの集まり）に記憶されているデータを変異させるように構成される。
耐久性以外のＡＣＩＤ特性をどのように維持するかは、本明細書における考察にあまり関係がない。
【００１２】
耐久性に関しては、データベースライタが、データベースに対して行った変更が耐久性媒体に記録されるように保証する。
オンライントランザクション処理では、こういった変更によって影響を受けたデータは、各データボリュームにランダムに分散しがちである。
複数のディスクドライブへのランダムアクセスはかなり効率が悪いため、こういった変更はディスクにすぐには書き込まれない。
すぐにではなく、データベースライタ１０２は、それぞれの変更を以下に述べるログライタ１０６に送り、それによって変更がトランザクションコミットに間に合うような耐久性のあるものになる。
【００１３】
トランザクションモニタ１０４は、トランザクションがシステムに入退出する際にトランザクションをトラッキングする。
トランザクションモニタは、トランザクションを受けてデータベースを変異させるデータベースライタ１０２をトラッキングし、データベースライタ１０２によってログライタ１０６に送られたそのトランザクションに関連するいずれのデータボリュームの変更も、トランザクションがコミットされる前に永久媒体にフラッシュされることを保証する。
トランザクションモニタ１０４はまた、トランザクションの状態（たとえば、コミットまたはアボート）をトランザクションログに書き留める。
【００１４】
ログライタ１０６はデータベース監査トレイルを保持し、データベース監査トレイルは、各トランザクションによりデータベースに対して行われた変更を明示的に記録するとともに、トランザクションがコミットされた逐次順序を暗黙的に記録する。
ここでも耐久性特性に注目すると、トランザクションのコミットを可能にするには、それに先立って、そのトランザクションによって行われた変更を耐久性媒体に記録しなければならない。
ログライタ１０６はこの制約を実施し、データベースライタ１０２から、状態の変更を記述した監査記録を受け取り、後述の残りのトランザクションコミットメントインフラストラクチャと記録動作を連携させる。
【００１５】
当業者により理解されるように、上記エンティティのうちの1つまたは複数は、スケーラビリティまたは耐故障性を目的として複数のプロセスまたはスレッドを使用して実現することが可能である。
たとえば、データベースを、1つまたは複数のデータベースライタエンティティによってそれぞれ管理される複数のディスク「ボリューム」に分割することができる。
同様に、監査トレイルを書き込むタスクも、それぞれ、データベースライタの特定のサブセットによって行われた変更を記録する専用の複数のログライタに分割することも可能である。
トランザクション処理システムの連続動作を保証するために、各データベースライタは、セット中の1つのエンティティが万が一故障した場合に、セットからの生き残ったエンティティが、トランザクションストリームの処理を邪魔することなく「引き継ぐ」ことができるように、状態を常に同期させた２つ以上の冗長エンティティのセットを使用して実現することもできる。
【００１６】
図２は、図１のトランザクション処理システムの実施態様の全体を２００で示し、データベースライタ２０２、トランザクションモニタ２０４、およびログライタ２０６を含む。
【００１７】
この例では、上述のエンティティのそれぞれは、一対のプロセスを使用して実施される。
こうして、各プロセス対には、プライマリプロセス（「ｐｒｉ」と記される）およびバックアッププロセス（「ｂａｋ」と記される）が含まれる。
この例では、トランザクション処理システムの他のいずれの構成要素とも通信する前に、各プライマリプロセスが、その状態の関係部分をバックアッププロセスにチェックポイントし、プライマリプロセスが故障した場合に、バックアッププロセスが素早く引き継ぐことができる。
引き継ぎ間隔はかなり短く（数ミリ秒から数秒続く）、この間に、インフライトトランザクションはアボートされ、おそらく再度開始される。
図２におけるトランザクション処理アーキテクチャの各要素を実現するプロセスおよびライブラリは、複数のＣＰＵに分散させることができる。
【００１８】
この例では、データベースライタ２０２は「ＤＰ２」（「ディスクプロセス２」）と記され、ログライタ２０６は「ＡＤＰ」（「監査ディスクプロセス」）と記される。
トランザクションモニタ２０４は、ＴＭＦ（「トランザクションモニタリング機能」）と呼ばれる分散したプロセスおよびシステムライブラリの集まりを使用して実施される。
トランザクションモニタ２０４は「ＴＭＰ」（「トランザクションモニタプロセス」）と記され、トランザクションの開始およびコミットを調整する。
ＴＭＦは、ＴＭＦｌｉｂ（ＴＭＦライブラリ）と呼ばれるオペレーティングシステム機能を、クラスタ中の各ＣＰＵにおいて使用する。
このライブラリは、ＤＰ２プロセスが、任意所与のトランザクションに関するそれぞれの作業を開始・終了する際にＴＭＦに登録できるようにする。
ＴＭＦｌｉｂインスタンスは、当該インスタンス間で通信するともに、ＴＭＰプロセス対と通信して、「トランザクションのコミット」というタイトルのセクションにおいて後述するようにトランザクションコミットメントを調整する。
【００１９】
（トランザクションのコミット）
図２を参照して、以下に、単一のログボリューム（または監査トレイルディスクボリューム）２０８がトランザクション処理システムに存在する場合でのトランザクションコミットに関わる例示的なステップについて説明する。
通常、クライアント２１０が、トランザクションの開始を示すＢｅｇｉｎ＿Ｔｒａｎｓａｃｔｉｏｎまたは同様の動作に直面する。
クライアントプロセスを実行しているＣＰＵ上のＴＭＦｌｉｂは、新しいトランザクションにトランザクションＩＤ（ＴＩＤ）を割り当てる。
ＴＩＤは次いで、データベースライタ２０２、特に、トランザクションを受けて作業するすべてのディスクプロセスＤＰ２に伝搬される。
図２に示す単純な場合では、単一のデータベースライタ（一対のＤＰ２プロセスを含む）のみが関与する。
より一般的な場合では、複数のＤＰ２プロセス対がトランザクションの処理に関わり得る。
【００２０】
データベースライタ２０２がデータベースの状態を変更すると、プライマリＤＰ２プロセス２１０がまず、状態変更をバックアッププロセス２１２にチェックポイントし、次いで状態変更の記録をログライタ２０６、特にＡＤＰプライマリプロセス２１８に伝搬する。
ＡＤＰプライマリプロセスは、バッファリング監査データ量に対するしきい値を超える（いわゆる優遇書き込み（courtesy write）になる）まで、あるいはトランザクションモニタプロセス（ＴＭＰ）２０４からのメッセージによって強制的にコミットする（いわゆる強制書き込みになる）場合はそれよりも早く、状態変更をメモリにバッファリングする。
ＤＰ２とまったく同様に、ＡＤＰプライマリプロセス２１８も、いずれのディスク動作またはメッセージも発行する前に状態変更をバックアッププロセス２２０にチェックポイントする。
【００２１】
次の瞬間において、クライアントは次いで、特定のトランザクションの終了を示すＥｎｄ＿Ｔｒａｎｓａｃｔｉｏｎまたは同様の動作に直面する。
トランザクションモニタプロセス２０４は、トランザクションのコミットに先立って、上に説明したように、トランザクションを受けてログライタ２０６に送られたデータベースの状態変更が耐久性を持ったことを保証する必要がある。
これを実現するために、ＴＭＰはその特定のトランザクションの２相フラッシュメッセージをシステム内の各ログライタまたはＡＤＰに送り、次いで、各ＡＤＰから、求められる状態変更が非耐久性システムバッファからディスクドライブに書き込まれたことを確認する返信を待つ。
トランザクションモニタ２０４は、すべての返信メッセージを受け取ると、トランザクションコミット記録を特に指定されたマスタＡＤＰに送る。
マスタＡＤＰが、コミット記録を耐久性媒体に書き込んだことを承認すると、ＴＭＰはクライアントに、トランザクションがコミットされたことを通知する。
【００２２】
上記から、当業者により理解されるように、状態変更およびコミット記録がディスクにフラッシュされるのを待つことが、ＴＭＦトランザクションのコミットに際しての遅延の大部分を占めることは明らかである。
さらに、データベースライタ、トランザクションモニタ、およびログライタによるチェックポインティングにより、トランザクションをコミットするオーバーヘッドが増す。
ディスクは回転する機械的媒体であるため、ディスクの待ち時間は、プロセッサおよびメモリの速度ほど急速には向上していない。
さらに、メッセージの受け渡しを介しての信頼性の高いチェックポインティングには、データ転送オーバーヘッドのみならず、一対のプロセスを完全に同期させることのオーバーヘッドも伴う。
こういった要因により、ＴＭＦトランザクションコミット時間は、数ミリ秒から数秒の範囲になることが多い。
【００２３】
用途によっては遅い応答時間に耐え得るものもあるが、多くの用途では遅い応答時間は耐えることができない。
ＴＭＦトランザクション応答時間が遅い場合、平均的なトランザクションがシステムに留まる時間が長くなり、ひいてはトランザクション処理システム内の資源に対する需要が高くなり、これによって有限資源下でのトランザクション処理スループットが間接的に制限されることにより、トランザクション処理スループットに対して二次的な不利な影響を及ぼす。
トランザクションがシステムに留まる時間が長くなった場合に容量を超えることになる可能性がある資源の例としては、データベースロック、ソケット、および他の接続資源が挙げられる。
【００２４】
（永続メモリ一般）
本明細書において説明する実施形態によれば、非ディスク永続メモリがトランザクション処理システムと併せて採用されて、一般にトランザクション応答時間を削減し、特にトランザクションコミット時間およびプロセス対チェックポインティング時間を削減する。
以下述べる各種実施形態では、非ディスク永続メモリを、ディスク書き込みの際のライトアサイドバッファ、およびプロセス状態チェックポイントのためのバッファの両方として使用することができる。
【００２５】
永続メモリは、当業者により理解される構造的概念である。
説明する実施形態によれば、利用可能な非ディスク永続メモリには多くの可能な実施態様がある。
したがって、非ディスク永続メモリの特定の一実施形態への限定は本明細書の意図するところではない。
【００２６】
読み手による非ディスク永続メモリに関連する構造的原理の理解を助けるために、以下の考察において、本発明のトランザクション処理システムで非ディスク永続メモリシステムを使用しやすくするために、非ディスク永続メモリシステムが有することのできる特徴について述べる。
この考察全体を通して、非ディスク永続メモリシステムの少数の非限定的な例を提供する。
本明細書において述べる原理は、特許請求する主題の精神および範囲から逸脱することなく、他の非ディスク永続メモリ構造でも採用することが可能なことを認識し理解されたい。
【００２７】
本明細書において定義する非ディスク永続メモリは、以下の特性、すなわち、耐久性、接続性、およびアクセスを示すべきである。
【００２８】
耐久性は、リフレッシュなしで耐久性があり、システムの電源が失われても耐え抜くことができる非ディスク永続メモリを指す。
さらに、電源が失われた後、またはソフト故障後に非ディスク永続メモリに記憶されているデータへの継続的なアクセスを保証するために、耐久性のある自己無矛盾のメタデータを提供すべきである。
【００２９】
接続性に関しては以下を考慮する。
非ディスク永続メモリは、市販のチップセットを使用して利用可能なメモリコントローラへの接続が可能である。
専用メモリコントローラは、最終的に、一意に非ディスク永続メモリの耐久性を利用するように設計することができるが、それらが存在する必要はない。
おそらく耐故障性との関わり合い、パッケージングの問題、物理的なスロットの制約、または電気負荷限度により、ＣＰＵのメモリコントローラへの直接接続性が望ましくない場合では、非ディスク永続メモリの第１レベルＩ／Ｏが許される。
たとえば、非ディスク永続メモリは、ＰＣＩ、およびＰＣＩ  Ｅｘｐｒｅｓｓ、ＲＤＭＡ  ｏｖｅｒ  ＩＰ、ＩｎｆｉｎｉＢａｎｄ、ＦＣ−ＶＩ（Virtual Interface over Fibre Channel）またはＳｅｒｖｅｒＮｅｔ等の他の第１レベルＩ／Ｏ相互接続に取り付けることができる。
このような相互接続は、メモリマッピングおよびメモリセマンティックアクセスの両方をサポートする。
非ディスク永続メモリの本実施形態を通信リンク接続永続メモリユニット（ＣＰＭＵ）と呼ぶ。
【００３０】
記憶装置接続性（たとえば、ＳＣＳＩ）または実際には他のいずれの第２レベルＩ／Ｏ接続性も、以下明らかにするパフォーマンス考慮事項により永続メモリには望ましくない。
【００３１】
アクセスに関しては以下を考慮する。
非ディスク永続メモリは、特に指定されたプロセス仮想アドレスにおいてであるが、ＣＰＵのメモリ命令（ＬｏａｄおよびＳｔｏｒｅ）を使用して普通の仮想メモリのようにユーザプログラムからアクセスすることが可能である。
メモリセマンティック動作をサポートする特定のシステムエリアネットワーク（すなわち、ＳＡＮ）では、非ディスク永続メモリは、リモートＤＭＡ（ＲＤＭＡ）または同様のセマンティックを使用してアクセスされるネットワーク資源として実施することができる。
たとえば、図３は、ＲＤＭＡ対応システムエリアネットワーク（ＳＡＮ）３０６を通して１つまたは複数のプロセッサノード３０２によりアクセス可能な通信リンク接続非ディスク永続メモリユニット（ＣＰＭＵ）３１０を含むネットワーク接続非ディスク永続メモリを使用したシステム３００を示す。
ＣＰＭＵ３１０の非ディスク永続メモリにアクセスするために、プロセッサノード３０２で実行されているソフトウェアが、プロセッサノードのネットワークインタフェース（ＮＩ）３０４を通して遠隔読み出し動作または遠隔書き込み動作を開始する。
このようにして、読み出しコマンドまたは書き込みコマンドは、ＲＤＭＡ対応ＳＡＮ３０６を介してＣＰＭＵのネットワークインタフェース（ＮＩ）３０８に運ばれる。
したがって、処理後、適切なデータがＲＤＭＡ対応ＳＡＮ３０６を介して通信される。
【００３２】
ＲＤＭＡデータ移動動作に加えて、ＣＰＭＵ３１０は、様々な管理コマンドに応答するように構成されることができる。
たとえば、プロセッサノード３０２によって開始された書き込み動作では、データが一旦ＣＰＭＵに首尾良く記憶されてしまえば、そのデータは耐久性を持つようになり、停電またはプロセッサノード３０２の故障を耐え抜く。
特に、メモリ内容は、ＣＰＭＵが正しく機能し続ける限り、電源が長い時間期間にわたって切断された後、またはプロセッサノード３０２上のオペレーティングシステムがリブートした後であっても保持される。
この例では、プロセッサノード３０２は、少なくとも１つの中央演算処理装置（ＣＰＵ）およびメモリからなるコンピュータシステムであり、ＣＰＵはオペレーティングシステムを実行するように構成される。
プロセッサノード３０２は、データベース等のアプリケーションソフトウェアを実行するようにさらに構成される。
プロセッサノード３０２は、ＳＡＮ３０６を使用して他のプロセッサノード３０２ならびにＣＰＭＵ３１０およびＩ／Ｏコントローラ（図示せず）等の装置と通信する。
【００３３】
この例の一実施態様では、ＲＤＭＡ対応ＳＡＮは、イニシエータプロセッサノード３０２とターゲットプロセッサノード３０２の間で、あるいはイニシエータプロセッサノード３０２と装置３１０の間で、ターゲットプロセッサノード３０２のＣＰＵに通知することなく、コピー動作等のメモリ動作をバイトレベルで実行可能なネットワークである。
この場合、ＳＡＮ３０６は、仮想アドレスから物理アドレスへの変換を行い、連続したネットワーク仮想アドレス空間から不連続の物理アドレス空間へのマッピングを可能にするように構成される。
このタイプのアドレス変換により、ＣＰＭＵ３１０の動的管理が可能になる。
市販のＲＤＭＡ機能付きＳＡＮ３０６としては、ＳｅｒｖｅｒＮｅｔ、ＲＤＭＡ  ｏｖｅｒ  ＩＰ、ＩｎｆｉｎｉＢａｎｄ、および仮想インタフェースアーキテクチャに準拠したすべてのＳＡＮが挙げられるがこれらに限定されるものではない。
【００３４】
プロセッサノード３０２は一般に、ＮＩ３０４を通してＳＡＮ３０６に接続されるが、多くの変形が可能である。
しかし、より一般には、プロセッサノードは、読み出し動作および書き込み動作を通信する装置に接続する必要があるだけである。
たとえば、本例の別の実施態様では、プロセッサノード３０２はマザーボード上の様々なＣＰＵであり、ＳＡＮを使用する代わりに入出力バス、たとえばＰＣＩバスが使用される。
本教示は必要に応じて、より大きな、またはより小さな実施態様に対応するようにスケールアップまたはスケールダウンすることが可能なことに留意されたい。
【００３５】
ネットワークインタフェース（ＮＩ）３０８は、ＣＰＭＵ３１０に通信可能に結合されて、ＣＰＭＵ３１０内に収容された非ディスク永続メモリにアクセスできるようにする。
図３の各種構成要素には、ＣＰＭＵ３１０内に使用されるメモリ技術のタイプを含め、多くの技術を利用することが可能である。
したがって、図３の実施形態ならびに本明細書において説明するその他の実施形態は、非ディスク永続メモリを実現する特定の技術に限定されない。
実際には、様々な磁気ランダムアクセスメモリ（ＭＲＡＭ）、磁気抵抗ランダムアクセスメモリ（ＭＲＲＡＭ）、ポリマー強誘電性ランダムアクセスメモリ（ＰＦＲＡＭ）、ＯＵＭ(Ovonics unified memory)、バッテリバックアップダイナミックランダムアクセスメモリ（ＢＢＤＲＡＭ）、およびフラッシュメモリを含め、多くのメモリ技術が適している。
【００３６】
ＳＡＮ３０６が使用される場合、メモリはＲＤＭＡアクセスに十分に高速であるべきである。
このようにして、ＲＤＭＡ読み出し動作および書き込み動作がＳＡＮ３０６を介して可能になる。
別のタイプの通信装置が使用される場合、使用されるメモリのアクセス速度もまた、通信装置に対応するに十分に高速であるべきである。
永続情報は、使用中の非ディスク永続メモリがデータを保持することができる程度まで提供されることに留意されたい。
たとえば、多くの用途において、非ディスク永続メモリは、電源が失われる時間量に関わりなくデータを記憶することが求められる場合もあれば、別の用途では、数分または数時間だけデータを記憶すればよい場合もある。
【００３７】
本手法と併せて、単一または複数の独立した間接的にアドレス指定されるメモリ領域を作成するメモリ管理機能が提供される。
さらに、電源が失われた後、またはプロセッサが故障した後にメモリを復元するために、ＣＰＭＵメタデータが提供される。
メタデータまたは情報には、たとえば、ＣＰＭＵ内の保護メモリ領域の内容およびレイアウトが含まれる。
このようにして、ＣＰＭＵは、データおよびデータ使用方法を記憶する。
必要が生じたときに、ＣＰＭＵは電源またはシステムの故障から復元できるようにする。
【００３８】
図４においては、ＣＰＭＵ４００は、バス等のデータ通信リンクを介して共に結合された非ディスク不揮発性メモリ４０２およびネットワークインタフェースまたはＮＩ４０４を備える。
ここでは、非ディスク不揮発性メモリ４０２は、たとえば、ＭＲＡＭまたはフラッシュメモリであることができる。
ＮＩ４０４は、それ自体はＲＤＭＡ要求を開始せず、そうする代わりにネットワークから管理コマンドを受け取り、要求された管理動作を実行する。
具体的には、ＣＰＭＵ４００は、各入力メモリアクセス要求上のアドレスを変換し、次いで、ＮＩ４０４と不揮発性メモリ４０２の間のデータ通信リンクを介して要求されたメモリ動作を内部で開始する。
【００３９】
図５においては、ＣＰＭＵ５００の別の実施形態は、バッテリ５１０を有する非ディスク揮発性メモリ５０２と不揮発性補助記憶装置５０８の組み合わせを使用する。
この実施形態では、電源が落ちると、非ディスク揮発性メモリ５０２内のデータは、係るデータを不揮発性補助記憶装置５０８に保存することができるまでバッテリ５１０の電源を使用して保持される。
不揮発性補助記憶装置は、たとえば、磁気ディスクまたは低速フラッシュメモリであることができる。
ＣＰＭＵ５００が適宜動作するには、揮発性メモリ５０２から不揮発性補助メモリ記憶装置５０８へのデータの転送は、外部介入またはバッテリ５１０からの電源以外のさらなる電源をいずれも必要とすることなく行われるべきである。
したがって、要求されたタスクはいずれも、バッテリ５１０が切れる前に完了されるべきである。
図示のように、ＣＰＭＵ５００は、埋め込みオペレーティングシステムを実行するオプションのＣＰＵ５０４を備える。
【００４０】
したがって、バックアップタスク（すなわち、非ディスク揮発性メモリ５０２から不揮発性補助メモリ記憶装置５０８へのデータ転送）は、ＣＰＵ５０４上で実行されているソフトウェアによって行うことができる。
ＣＰＵ５０４上で実行されているソフトウェアは、備えられているＮＩ５０６を使用して、ＲＤＭＡ要求を開始し、またはメッセージをＳＡＮ３０６上の他のエンティティに送ることができる。
ここでも、ＣＰＵ５０４は、ＮＩ５０６を通してネットワークから管理コマンドを受け取り、要求された管理動作を実行する。
【００４１】
ＣＰＭＵ４００または５００等、ＣＰＭＵのいずれの実施形態も、永続メモリの割り振りおよび共有のために管理する必要がある。
この例では、ＣＰＭＵ管理は、永続メモリマネージャ（ＰＭＭ）によって実行される。
ＰＭＭは、ＣＰＭＵ内にあってもよく、また上記プロセッサノード３０２の１つ等、ＣＰＭＵ外にあってもよい。
プロセッサノード３０２がＣＰＭＵ３１０における非ディスク永続メモリを割り振る、もしくは割り振り解除する必要がある場合、または非ディスク永続メモリの既存領域の使用を開始する、もしくは止める必要がある場合、プロセッサノードはまず、ＰＭＭと通信して、要求された管理タスクを行うべきである。
ＣＰＭＵ３１０のメモリ内容は耐久性を有する（ディスクドライブとまったく同じように）ため、そのＣＰＭＵ内の非ディスク永続メモリ領域に関連するメタデータも耐久性を有し、これら領域との整合性を保たなければならず、好ましくは、ＣＰＭＵそれ自体内に記憶される（ディスクドライブ上のファイルシステムメタデータとまったく同じように）ことに留意されたい。
したがって、ＰＭＭは、ＣＰＭＵ３１０のメタデータを非ディスク永続メモリの内容との整合性を常に保つように管理タスクを行わなければならない。
したがって、ＣＰＭＵ３１０に記憶されているデータは、発生し得る電源の損失、システムのシャットダウン、またはＰＭＭ、ＣＰＭＵ３１０、およびプロセッサノード３０２の１つまたは複数に影響する他の故障の後であっても、記憶されているメタデータを使用して有意味に検索することができる。
復元の必要が生じると、ＣＰＭＵ３１０を使用するシステム３００はこうして復元し、電源の故障またはオペレーティングシステムのクラッシュが発生したメモリの状態から動作を再開することができる。
【００４２】
処理ノード３０２のＬｏａｄおよびＳｔｏｒｅメモリ命令を使用して、ＳＡＮ３０６を介してＲＤＭＡデータ転送を直接または間接的に開始することが実行不可能なシステム３００では、ＣＰＭＵ３１０の内容の読み書きには、処理ノード３０２上で実行されているアプリケーションが、アプリケーションプログラミングインタフェースまたはＡＰＩを使用してＲＤＭＡを開始する必要がある。
【００４３】
明らかなはずであるように、非ディスク永続メモリが魅力的である理由の１つは、ディスクドライブよりも、耐久性のある記憶データに対して細かい粒度（アクセスサイズがより小さいことを意味する）での読み書き動作をサポートすることである。
この粒度の細かさは、アクセスサイズ（読み出す、または書き込むバイトの数）およびアクセスアラインメント（読み出される、または書き込まれる最初のバイトの、非ディスク永続メモリ領域内のオフセット）の両方に当てはまる。
非ディスク永続メモリ領域内のデータ構造は自由に並べることができるため、ディスクを使用する場合よりも容量を効率的かつ有効に使用することができる。
ブロック指向ディスク記憶装置およびフラッシュメモリに関連する別の利点は、小さなデータを変更して再び書き込む際に、それに先立って大きなデータブロックをまず読み出す必要がなく、そうする代わりに、書き込み動作により、単純に、変更する必要のあるバイトのみを変更することができることである。
非ディスク永続メモリのそれ自体の速度（raw speed）も魅力的である。
アクセス待ち時間は、ディスクドライブのアクセス待ち時間よりも１桁良好である。
ディスクドライブと比較した非ディスク永続メモリの相対的な使用しやすさも、まずすべてのポインタを書き込み時に相対バイトアドレスに変換し、次いで読み出し時に相対バイトアドレスを元のポインタに再変換する必要なく、ポインタが豊富なデータ構造を非ディスク永続メモリに記憶することが可能であるということにより、相当なものである。
いわゆるマーシャリング−マーシャリング解除オーバーヘッドは、複雑なデータ構造の場合にかなり大きくなり得る。
上記要因はすべて、アプリケーションプログラマが、すでに永続的にしたデータ構造のアクセスおよび動作を加速化できるようにするだけでなく、ディスクドライブおよびフラッシュメモリ等のより低速の記憶装置において、永続性を持たせることを考えていなかった特定のデータ構造に永続性を持たせることを考えられるようにする。
情報処理システムにおける永続性の程度が高いほど、情報の損失が少ないため、故障からの復元は容易で素早い。
復元がより素早いことは、システムの可用性が高いことを含意する。
したがって、説明する実施形態の純利益は、単にパフォーマンスだけではく、可用性の増大にもある。
システム可用性の欠如に関連するコストが高い、極めて重要なトランザクション処理システムでは、説明する実施形態の可用性の恩恵は、実際には、パフォーマンスの恩恵よりもさらに大きな価値を持つ可能性がある。
さらに、説明する実施形態を使用して、メモリ内動作等の新しい、または改良されたデータベース機能を可能にすることができる。
データベース以外の用途も、システム３００の向上したパフォーマンスおよび可用性を利用して、新たな顧客機能を生むことができる。
ここに列挙するには数が多すぎるが、こういった用途の多くは当業者に明らかであろう。
このような1つの用途について次に説明する。
【００４４】
（非ディスク永続メモリを使用してのトランザクションコミット時間の削減）
図１のトランザクション処理システム１００に関して、非ディスク永続メモリがない場合、トランザクションモニタ１０４がデータベーストランザクションをコミットするには、それに先立って２つのことが行われなければならない。
第1に、ログライタ１０６は、データベースライタ１０２から受け取ったそのトランザクションに関連するいずれの監査情報も耐久性媒体にフラッシュアウト（すなわち、完全に書き込む）しなければならない。
その後、トランザクションモニタ１０４はまた、耐久性媒体にそのトランザクションのコミット記録を書き込まなければならない。
説明する実施形態によれば、非ディスク永続メモリを利用することにより、こういった情報項目を非ディスク永続メモリにのみ書き込んだ後で、トランザクションのコミットを可能にすることができる。
非ディスク永続メモリがディスク記憶装置よりも低い待ち時間を書き込み動作に示す程度まで、トランザクション待ち時間をそれに従って短縮する（またおそらく、ＴＭＦトランザクションスループットを向上させる）ことができる。
【００４５】
トランザクション処理の一実施形態では、永続メモリが使用されて、トランザクションコミットが加速化される。
具体的には、図２に関連して、プライマリＡＤＰ２１８は、ＤＰ２  ２０２から状態変更メッセージを受け取るとすぐに、確認メッセージをＤＰ２に送る前に、これら状態変更を永続メモリに同期して記録する。
ＴＭＰ２０４からの２相フラッシュメッセージは、ＡＤＰ２０６が「常にフラッシュ」されるため、削減するか、あるいは完全に省くことが可能である。
こうして、いくつかのプロセス間通信ステップおよびディスク動作が、トランザクションコミットのクリティカルパスからなくなると、ＴＭＰ２０４は、ＡＤＰ２０６が、ディスクを使用する場合よりも非ディスク永続メモリを使用する場合にトランザクションをはるかに高速にコミットすることができる。
本発明者らによって行われた1つの実験では、トランザクション応答時間は、永続メモリを使用した場合には、永続メモリを使用しない場合よりも３．５倍高速であることが分かった。
【００４６】
一例として、一実施形態によるトランザクション処理システムの全体を６００で示す図６を考える。
システム６００は、データベースライタ６０２、トランザクションモニタ６０４、およびログライタ６０６を備える。
【００４７】
説明する実施形態によれば、ログライタ６０６は、プライマリ監査ディスクプロセス６０８およびバックアップディスクプロセス６１０を含む。
一対の非ディスク永続メモリユニットが設けられ、これにはプライマリ非ディスク永続メモリユニット６１２（「ＣＰＭＵ」とも呼ぶ）およびミラー非ディスク永続メモリユニット６１４（「ＣＰＭＵ」とも呼ぶ）が含まれる。
プライマリ監査ログディスク６１６およびミラー監査ディスクログ６１８は、以下で明らかになる目的で設けられる。
【００４８】
図示し説明する実施形態では、データはプライマリ非ディスク永続メモリユニット６１２およびミラー非ディスク永続メモリユニット６１４の両方に書き込まれる。
実施形態によっては、データはプライマリおよびミラーユニットに同時に書き込むことができる。
別法として、実施形態によっては、データをプライマリユニットおよびミラーユニットに同時に書き込む必要がない。
システムが完全に機能している場合、実施形態によっては、情報はプライマリ非ディスク永続メモリユニット６１２またはミラー非ディスク永続メモリユニット６１４から読み出される。
万が一、非ディスク永続メモリユニット（６１２、６１４）の一方のみが故障した場合、データは生き残った非ディスク永続メモリユニットから読み出されることになる。
故障したプライマリ非ディスク永続メモリユニットが正常に機能する準備ができると、内容を生き残った非ディスク永続メモリユニットから復元することができる。
【００４９】
図示し説明する実施形態では、監査トレイルごとに1つの領域が、各非ディスク永続メモリユニット６１２、６１４内で割り振られ、監査ディスクプロセス対６０８、６１０が、各領域内のライトアサイドバッファ（「ＷＡＢ」として示す）を保持する。
任意の適したライトアサイドバッファ構成を使用することができるが、本例では、ライトアサイドバッファは、当業者に理解される循環バッファとして構成される。
プライマリ監査ディスクプロセス６０８は、データベースライタ６０２から変更のセットを受け取ると、非ディスク永続メモリユニット６１２、６１４を使用して、これら変更を非常に素早くコミットする。
具体的には、図示の例では、ＡＤＰ６０８は、変更のセットを受け取ると、その情報をＣＰＭＵ６１２のＷＡＢに、そのＷＡＢの末尾アドレスに追加し、次いで、ＷＡＢの末尾アドレスを、一番新しく書き込まれた情報の末尾の先を指すように進める。
次いで、ＣＰＭＵ６１４のＷＡＢに関して動作が繰り返される。
当業者は、ＣＰＭＵ６１２、６１４への書き込み動作間の同時性の程度を変更することが可能である。
【００５０】
説明する実施形態によれば、要求された書き込み動作の完了により、末尾ポインタがＷＡＢの先頭アドレスの先を指す場合、非ディスク永続メモリ領域への書き込み動作は保留され、ＷＡＢは満杯であるとマークされる。
ＷＡＢの先頭アドレスおよび末尾アドレスを進めるアルゴリズムは、当業者により理解されるように、ＷＡＢの先頭アドレスおよび末尾アドレスが両方とも、ＷＡＢの循環バッファを含む同じ非ディスク永続メモリ領域内に記憶され更新されることを除き、循環キューデータ構造を実施する典型的な手法に類似する。
【００５１】
費用効率的な非ディスク永続メモリを使用する場合、ログボリュームの全体がディスクではなくより高速の永続メモリ装置を使用して実現されるため、より低速なディスクＩ／Ｏをトランザクションコミットメントプロセスから完全になくすことができる。
しかし、現在、および近い将来では、ディスクの容量が引き続き非ディスク永続メモリ容量よりもはるかに大きく、ディスク記憶装置の１バイトあたりのコストは引き続き、非ディスク永続メモリの１バイトあたりのコストよりもかなり低いと思われる。
その場合、相対的により小さな容量の非ディスク永続メモリユニットを使用して、相対的により大きな容量のディスクドライブのＷＡＢが実施される。
このような構成では、また同様の設計では、監査情報の同期書き込みは、遅延して非同期にディスクに書き込まれる。
非ディスク永続メモリにどの情報を保持し、どの情報をディスクにフラッシュするかを選択する様々な技法が、メモリ階層設計分野の当業者にとって明らかであろう。
たとえば、トランザクション復元のファジー制御ポイントシステムによれば、システムがクラッシュしたときに、インフライトトランザクションをアンドゥしてからリドゥするという通常の復元プロセスをすべて永続メモリから適用することができるように、ログ情報に値する２つの「制御ポイント」を永続メモリに保持することができる。
【００５２】
さらに、今述べた、このような費用制約付き非ディスク永続メモリ技術を使用する場合、ＡＤＰ６０８は引き続きディスク書き込み動作を使用することができるが、ＴＭＰ６０４にトランザクションのコミットを許すために、それに先立ってこれらディスク動作の完了を待つ必要がない。
代わりに、ＡＤＰ６０８は、データベースライタ６０２から受け取ったすべての監査情報を意欲的に、また同期して非ディスク永続メモリ装置６１２、６１４に書き込むが、適宜選択された時間間隔内に受け取った複数のメッセージからの情報を組み合わせるという選択肢を行使する。
ディスク動作はもはや上に述べたように完了が待たれないため、ＡＤＰ６０８はこの場合、ディスク動作につきより多くのデータを書き込むことができ、それにより、同量の監査トレイルデータに対して行われる動作の総数が少ないため、発生するＩ／Ｏ関連オーバーヘッドは小さくなる。
これにより、監査ディスク６１６、６１８からのディスクスループットが向上するとともに、ＡＤＰ６０８を実行するＣＰＵのＣＰＵ利用率が向上する。
したがって、ＡＤＰ６０８は、ＴＭＰ６０４から監査トレイルフラッシュ要求を受け取ると、保留中の変更をいずれもＣＰＭＵ６１２、６１４内のＷＡＢにフラッシュする。
ＡＤＰ６０８はまた、その情報をバッファリングし、情報をいわゆる遅延して監査ログディスク６１６、６１８に書き込めるようにする。
所定の条件が満たされると、たとえば、バッファリングされる情報に対する特定のしきい値が超える、または最大固定時間間隔になると、ＡＤＰ６０８は、フラッシュメッセージをＴＭＰ６０４から受け取ったか否かに関わらず、ディスク書き込み動作を発行する。
しかし、従来の場合と異なり、本発明のシステムでのトランザクションは、監査情報がディスク６１６、６１８に書き込まれる前であるが、ＣＰＭＵ６１２、６１４に書き込まれた後にコミットすることができる。
【００５３】
監査ディスク６１６、６１８に遅延して発行された順次書き込み動作が完了すると、ＣＰＭＵ  ＷＡＢに記憶されていた情報のいくらかが、上書き可能になる。
次いで、ＣＰＭＵ６１２、６１４の適切な領域内の先頭アドレスが、ライトバックに成功した最後のバイトの先に進められる。
ディスクＩ／Ｏの完了をＡＤＰ６０８が受け取る前に非ディスク永続メモリユニットが「満杯」とマークされていた場合、非ディスク永続メモリユニットは「非満杯」とマークされる。
次いで、ＡＤＰ６０８はＷＡＢの使用をもう一度再開することができる。
ＡＤＰ６０８は、ＷＡＢの使用を保留するときは常に、トランザクションをコミットする前に、ログボリューム６１６、６１８への未処理ディスクＩ／Ｏを待つことに戻る。
このような状況では、書き込みＩ／Ｏ動作のサイズは通常、トランザクション応答時間に対するディスクＩ／Ｏ待ち時間の影響を制限するために、最適なディスクスループット（たとえば、１２８ＫＢ〜１ＭＢ）をもたらす値よりも小さな値（たとえば、コミット記録間に収集される監査の量に応じて４ＫＢ〜１２８ＫＢ）に設定される。
非ディスク永続メモリを使用する場合、トランザクションはディスクＩ／Ｏの完了を待たないため、ＡＤＰ６０８は、書き込みのためにバッファリングされる監査データがより多くなるまで待つことができる。
したがって、より大きなディスク書き込みＩ／Ｏサイズ（たとえば、５１２ＫＢ）を使用して、ログボリューム６１６、６１８に対して最適に近いスループットを得ることができるとともに、ＡＤＰ６０８を実行するＣＰＵに対するディスクＩ／Ｏオーバーヘッドを大幅に低減することができる。
【００５４】
同量の設計変更を用いて、ディスク書き込み動作を待つことによってパフォーマンスが悪影響を受ける他のいずれのアプリケーションにも非ディスク永続メモリを使用するライトアサイドバッファを作成することができる。
【００５５】
設計に対する他の変形が当業者に明らかであろう。
たとえば、プライマリ非ディスクおよびミラー非ディスク永続メモリユニットに対して交互に順次書き込むのではなく、アプリケーションは同時書き込みを選ぶことも可能である。
【００５６】
（例示的な方法）
図７は、一実施形態による方法におけるステップを示す。
図示し説明する実施形態では、方法は、任意の適したハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせにおいて実施することができる。
さらに、方法は、任意の適宜構成された非ディスク永続メモリ構造を使用して実施することができる。
非ディスク永続メモリ構造の具体的で非限定的な例を、本明細書全体を通して図示し説明する。
【００５７】
ステップ７００が、トランザクションによって誘発された状態変更に関連するデータを受け取る。
このようなデータは、トランザクションに起因するデータベース状態変更を記述することができる。
図示し説明する実施形態では、このデータは上述したもの等のデータベースライタ構成要素から受け取られる。
ステップ７０２が、データを非ディスク永続メモリに書き込む。
記したように、任意の適した非ディスク永続メモリ構造を利用することが可能である。
たとえば、図６の例では、プライマリ非ディスク永続メモリユニットおよびミラー非ディスク永続メモリユニットが利用される。
ステップ７０４が、非ディスク永続メモリユニットしきい値に達したか否かを確認する。
達していない場合、方法はステップ７００に戻る。
一方、非ディスク永続メモリユニットしきい値に達した場合、ステップ７０６が、非ディスク永続メモリ中のデータを、図６における監査ログディスク６１６等の監査ログディスクに書き込む。
図６の例では、このようにして監査ログを書き込むことは、遅延して行われるものとして言及している。
【００５８】
（非ディスク永続メモリのログライタチェックポインティングへの使用）
これより、一実施形態によるトランザクション処理システムの全体を８００で示す図８を考える。
システム８００は、データベースライタ８０２、トランザクションモニタ８０４、およびログライタ８０６を備える。
少なくとも1つの実施形態によれば、システム８００は、すぐ上で述べたようなトランザクションコミットプロセスにおいて利用することができる。
さらに、システム８００は、以下述べるように、ログライタチェックポインティングに利用することができる。
この例では、システム８００の構成要素は図６の構成要素と同じであるか、または同様である。
したがって、簡潔にするために、これら構成要素についてはここで再び説明しない。
【００５９】
図８のシステムでは、データベースライタ８０２は、監査記録または状態変更をログライタ８０６に送る。
ログライタ８０６は、監査記録を受け取って永続メモリ８１２、８１４に書き込み、監査データをメモリにバッファリングする。
ここで、コミット時に、トランザクションモニタ８０４は、トランザクションをコミットすべきであることをログライタ８０６に示す。
したがって、ログライタ８０６はコミット記録を受け取って永続メモリ８１２、８１４に書き込み、メモリにバッファリングする。
システム８００を使用してトランザクションをコミットするプロセスにおける最終ステップは、ログライタ８０６が監査記録およびコミット記録を監査ログディスク８１６、８１８に「遅延して」書き込むことである。
この例では、ログライタ８０６による書き込み動作は、コミットプロセスと非同期に行われるため「遅延」と言及される。
この実施形態では、ＡＤＰバックアッププロセス８１０は、ＡＤＰプライマリプロセスが故障した場合に、永続メモリを読み出す必要があるだけである（ＡＤＰバックアッププロセスから永続メモリ８１２、８１４への点線によって線図で示される）。
【００６０】
この特定の例では、ライトアサイドバッファとして採用された同じ永続メモリユニットが、ログライタチェックポインティングにも採用される。
したがって、永続メモリ内のまったく同じ循環バッファを両方の目的で使用することができる。
さらに、ＡＤＰバックアッププロセスが、ＡＤＰプライマリプロセスが故障するまで、永続メモリチェックポイント情報を読み出す必要がないという点で利点が得られる。
【００６１】
当業者に理解されるように、この手法は処理オーバーヘッドを低減するとともに、データコピーを削減する。
具体的には、従来では、ＡＤＰバックアッププロセスにチェックポイントするには、状態変更とともにメッセージをＡＤＰバックアッププロセスに送る必要があり、その後、このような変更が監査ディスクログ８１６、８１８に書き込まれた。
上記手法の場合、ＡＤＰバックアッププロセスはチェックポインティングループから取り出され、それによって処理オーバーヘッドが低減する。
【００６２】
（非ディスク永続メモリのすべてのチェックポインティングへの使用）
一実施形態によれば、非ディスク永続メモリは、上に述べたようにトランザクションのコミットに使用することができるとともに、データベースライタチェックポインティングおよびログライタチェックポインティングの両方にも使用することができる。
この手法では、トランザクションコミットプロセスは、データフローでの２つのステップ、すなわち、ＤＰ２バックアッププロセスおよびＡＤＰバックアッププロセスにそれぞれチェックポイントする各ステップ、をなくすことによって簡素化される。
【００６３】
一例として、一実施形態によるトランザクション処理システムの全体を９００で示す図９を考える。
システム９００は、データベースライタ９０２、トランザクションモニタ９０４、およびログライタ９０６を備える。
この例では、システム９００の構成要素は図６の構成要素と同じであるか、または同様である。
したがって、簡潔にするために、これら構成要素についてはここで再び説明しない。
【００６４】
この実施形態では、データベースライタが監査情報または状態変更をログライタ９０６に送るのではなく、監査情報または状態変更は永続メモリ９１２、９１４に書き込まれる。
こうすることにより、監査情報をＤＰ２バックアッププロセスにチェックポイントすることが事実上なくなる。
したがって、ＤＰ２バックアッププロセス（特に図示せず）は、ＤＰ２プライマリプロセスが故障した場合に、永続メモリからこの情報を読み出す必要があるだけである。
【００６５】
引き続き、監査情報が永続メモリ９１２、９１４に書き込まれると、ログライタ９０６は、情報をディスクにコミットすることに備えて、監査情報を読み出してメモリにバッファリングすることができる。
このプロセス段階が完了すると、トランザクションモニタ９０４は、情報をディスクにコミットさせるコミットプロセスの次の段階を開始することができる。
このために、トランザクションモニタは、コミット記録を永続メモリ９１２、９１４に書き込み、ログライタ９０６はコミット記録を永続メモリ９１２、９１４から読み出してメモリにバッファリングし、ディスクに書き込む。
有利なことに、データベースライタ（ＤＰ２）およびログライタ（ＡＤＰ）のそれぞれのバックアッププロセスは、それぞれのプライマリプロセスが故障した場合、永続メモリ９１２、９１４を読み出す必要があるだけである。
【００６６】
この実施形態によれば、ログライタ９０６はここで、監査情報およびコミット記録を非同期でディスクに遅延して書き込むことができる。
このプロセスは事実上、ログライタをコミットプロセスから切り離す。
【００６７】
有利なことに、図６に関連して上述したように永続メモリをチェックポインティングプロセスならびにトランザクションコミットメントプロセスに使用することにより、トランザクションに関連するデータは、従来よりもはるかに素早く永続的にすることができる。
したがって、更新は、記録が永続メモリに書き込まれるときに耐久性を持ち、コミットプロセスは他のいずれのステップの完了も待つ必要がないため、トランザクションコミットプロセスははるかに高速になる。
【００６８】
（例示的なコンピューターシステム）
一実施形態では、上記システムは、図１０に示すもの等のコンピュータシステム１０００において実施することができる。
コンピュータシステム１０００、またはコンピュータシステム１０００を成す構成要素の様々な組み合わせを利用して、プロセッサノードならびに様々な非ディスク永続メモリユニットを含む上記システムを実施することができる。
【００６９】
図１０を参照すると、例示的なコンピュータシステム１０００（たとえば、パーソナルコンピュータ、ワークステーション、メインフレーム等）には、様々な構成要素を通信可能に結合するデータバス１０１４が構成される。
図１０に示すように、プロセッサ１００２はバス１０１４に結合されて、情報および命令を処理する。
ＲＡＭ１００４等のコンピュータ可読揮発性メモリもバス１０１４に結合され、プロセッサ１００２のために情報および命令を記憶する。
さらに、コンピュータ可読読み取り専用メモリ（ＲＯＭ）１００６もバス１０１４に結合され、プロセッサ１００２のために静的な情報および命令を記憶する。
磁気ディスク媒体または光ディスク媒体等のデータ記憶装置１００８もバス１０１４に結合される。
データ記憶装置１００８は、大量の情報および命令の記憶に使用される。
英数字キーおよび機能キーを備えた英数字入力装置１０１０がバス１０１４に結合され、情報およびコマンド選択をプロセッサ１００２に伝達する。
マウス等のカーソル制御装置１０１２がバス１０１４に結合され、ユーザ入力情報およびコマンド選択を中央プロセッサ１００２に伝達する。
入出力通信ポート１０１６がバス１０１４に結合され、たとえば、ネットワーク、他のコンピュータ、または他のプロセッサと通信する。
ディスプレイ１０１８がバス１０１４に結合され、情報をコンピュータユーザに対して表示する。
表示装置１０１８は、液晶装置、陰極線管、またはユーザが認識可能なグラフィック画像および英数字文字の作成に適した他の表示装置であることができる。
英数字入力１０１０およびカーソル制御装置１０１２は、コンピュータユーザがディスプレイ１０１８上の可視シンボル（ポインタ）の二次元の動きを動的に通知できるようにする。
非ディスク永続メモリユニット１０２０が設けられ、非ディスク永続メモリユニット１０２０は、当業者に理解されるように、上記実施形態のいずれを備えてもよく、また上記振る舞いを示す他の非ディスク永続メモリ構造を備えてもよい。
【００７０】
（結論）
上記の各種実施形態は、非ディスク永続メモリをトランザクション処理システムと併せて利用する。
非ディスク永続メモリを使用してトランザクションをコミットすることにより、トランザクションのコミットに関連する時間を削減することができる。
したがって、トランザクション処理システム内の資源に対する需要を低減することができ、これによってトランザクション処理システムのスループットを向上させることができる。
【００７１】
本発明について構造的特徴および／または方法ステップに固有の言葉で説明したが、添付の特許請求の範囲において規定される本発明は、説明した特定の特徴またはステップに必ずしも限定されるものではないことを理解されたい。
より正確に言えば、特定の特徴およびステップは、特許請求する本発明を実施する好ましい形態として開示されたものである。
【図面の簡単な説明】
【００７２】
【図１】構成要素を1つまたは複数の実施形態と併せて利用することのできる例示的なトランザクション処理システムを示す。
【図２】図１のトランザクション処理システムの一実施態様を示す。
【図３】非ディスク永続メモリユニットの例示的な一実施形態を示す。
【図４】非ディスク永続メモリユニットの例示的な一実施形態を示す。
【図５】非ディスク永続メモリユニットの別の例示的な実施形態を示す。
【図６】1つまたは複数の実施形態による、非ディスク永続メモリユニットを利用する例示的なトランザクション処理システムを示す。
【図７】一実施形態による方法におけるステップを説明する流れ図である。
【図８】1つまたは複数の実施形態による、非ディスク永続メモリユニットを利用する例示的なトランザクション処理システムを示す。
【図９】1つまたは複数の実施形態による、非ディスク永続メモリユニットを利用する例示的なトランザクション処理システムを示す。
【図１０】本明細書において説明する実施形態のうちの1つまたは複数の実施形態に利用することのできる例示的なコンピュータシステムを示す。
【符号の説明】
【００７３】
１００・・・トランザクション処理システム，
１０２・・・データベースライタ，
１０４・・・トランザクションモニタ，
１０６・・・ログライタ，
２０２・・・データベースライタ，
２０４・・・トランザクションモニタ，
２０６・・・ログライタ，
２０８・・・監査ログディスク，
２１０・・・クライアント，
２２２・・・データベースディスク，
３０２・・・プロセッサノード，
３０６・・・ＲＤＭＡ対応システムエリアネットワーク（ＳＡＮ），
３１０・・・通信リンク接続永続メモリユニット（ＣＰＭＵ），
４００・・・通信リンク接続永続メモリユニット，
４０２・・・不揮発性メモリ，
５００・・・通信リンク接続永続メモリユニット，
５０２・・・揮発性メモリ，
５０８・・・不揮発性補助記憶装置，
５１０・・・バッテリ，
６００・・・トランザクション処理システム，
６０２・・・データベースライタ，
６０４・・・トランザクションモニタ，
６０６・・・ログライタ，
６０８・・・監査ディスクプロセス（プライマリ），
６１０・・・監査ディスクプロセス（バックアップ），
６１２，６１４・・・永続メモリ，
６１６，６１８・・・監査ログディスク，
８００・・・トランザクション処理システム，
８０２・・・データベースライタ，
８０４・・・トランザクションモニタ，
８０６・・・ログライタ，
８０８・・・監査ディスクプロセス（プライマリ），
８１０・・・監査ディスクプロセス（バックアップ），
８１２，８１４・・・永続メモリ，
８１６，８１８・・・監査ログディスク，
９００・・・トランザクション処理システム，
９０２・・・データベースライタ，
９０４・・・トランザクションモニタ，
９０６・・・ログライタ，
９１２，９１４・・・永続メモリ，
１００２・・・プロセッサ，
１００８・・・データ記憶装置，
１０１０・・・英数字入力装置，
１０１２・・・カーソル制御装置，
１０１６・・・通信ポート，
１０１８・・・ディスプレイ，
１０２０・・・非ディスク永続メモリユニット，
【図１】
2006012142.tif 000003
【図２】
2006012142.tif 000004
【図３】
2006012142.tif 000005
【図４】
2006012142.tif 000006
【図５】
2006012142.tif 000007
【図６】
2006012142.tif 000008
【図７】
2006012142.tif 000009
【図８】
2006012142.tif 000010
【図９】
2006012142.tif 000011
【図１０】
2006012142.tif 000012