JP2005259136A - 非ディスク永続メモリを利用したトランザクション処理システムおよび方法 - Google Patents
非ディスク永続メモリを利用したトランザクション処理システムおよび方法 Download PDFInfo
- Publication number
- JP2005259136A JP2005259136A JP2005062400A JP2005062400A JP2005259136A JP 2005259136 A JP2005259136 A JP 2005259136A JP 2005062400 A JP2005062400 A JP 2005062400A JP 2005062400 A JP2005062400 A JP 2005062400A JP 2005259136 A JP2005259136 A JP 2005259136A
- Authority
- JP
- Japan
- Prior art keywords
- persistent memory
- disk
- memory unit
- transaction
- disk persistent
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
- G06F11/1492—Generic software techniques for error detection or fault masking by run-time replication performed by the application software
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99938—Concurrency, e.g. lock management in shared database
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99953—Recoverability
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Retry When Errors Occur (AREA)
Abstract
【課題】 トランザクションがコミットするのに必要な時間を削減するシステムおよび方法を提供する。
【解決手段】 本発明にかかるシステムは、トランザクション処理システムと共に非ディスク永続メモリを利用する。非ディスク永続メモリを使用してトランザクションをコミットすることにより、トランザクションをコミットすることに関連した時間を削減することができ、したがって、トランザクション処理システム内部の資源の需要を小さくでき、かつ、トランザクション処理のスループットを増加させることができる。
【選択図】図6
【解決手段】 本発明にかかるシステムは、トランザクション処理システムと共に非ディスク永続メモリを利用する。非ディスク永続メモリを使用してトランザクションをコミットすることにより、トランザクションをコミットすることに関連した時間を削減することができ、したがって、トランザクション処理システム内部の資源の需要を小さくでき、かつ、トランザクション処理のスループットを増加させることができる。
【選択図】図6
Description
本発明は、非ディスク永続メモリを利用したトランザクション処理システムおよび方法に関する。
トランザクション処理システムは、複数のトランザクションプログラムの並行実行をサポートすると同時に、原始性(Atomicity)、一貫性(Consistency)、隔離性(Isolation)、および耐久性(Durability)から成るいわゆるACID特性の維持を確保するコンピュータハードウェアおよびソフトウェアのシステムである。
トランザクションプログラムは、オペレーションを適用しなければならない順序およびトランザクションを正しく実行するために実施しなければならないあらゆる並行制御を含めて、アプリケーションの状態に対して適用されるオペレーションを指定したものである。
最も一般的な並行制御オペレーションはロッキングである。
このロッキングによって、トランザクションプログラムに対応するプロセスは、自身が読み出すかまたは書き込むデータに対する共有ロックまたは排他ロックのいずれかを取得する。
トランザクションは、通常はデータベースにおいて表現される物理的で抽象的なアプリケーションの状態に対するオペレーションの集まりを指す。
トランザクションは、トランザクションプログラムを実行することを表す。
オペレーションは、共有状態の読み出しおよび書き込みを含む。
トランザクションプログラムは、オペレーションを適用しなければならない順序およびトランザクションを正しく実行するために実施しなければならないあらゆる並行制御を含めて、アプリケーションの状態に対して適用されるオペレーションを指定したものである。
最も一般的な並行制御オペレーションはロッキングである。
このロッキングによって、トランザクションプログラムに対応するプロセスは、自身が読み出すかまたは書き込むデータに対する共有ロックまたは排他ロックのいずれかを取得する。
トランザクションは、通常はデータベースにおいて表現される物理的で抽象的なアプリケーションの状態に対するオペレーションの集まりを指す。
トランザクションは、トランザクションプログラムを実行することを表す。
オペレーションは、共有状態の読み出しおよび書き込みを含む。
ACID特性について、原始性は、トランザクションが完全に実行されるか、または、全く実行されないという点で、全か無かの振る舞いを示すトランザクションを指す。
完了するトランザクションはコミットしたと言われる。
実行中に放棄されたトランザクションはアボートされたと言われる。
実行を開始したがコミットもアボートもしなかったトランザクションはインフライト(in-flight)であると言われる。
完了するトランザクションはコミットしたと言われる。
実行中に放棄されたトランザクションはアボートされたと言われる。
実行を開始したがコミットもアボートもしなかったトランザクションはインフライト(in-flight)であると言われる。
一貫性は、指定されているあらゆる完全性の制約に関してアプリケーションの状態が一貫性を保ったままトランザクションの完了が成功することを指す。
隔離性は、直列化可能性としても知られており、トランザクションのストリームのどの適正な並行実行も、そのストリームを構成するトランザクションの或る全順序に対応することを保証するものである。
その意味で、実行された或るトランザクションについて、そのストリームの他のあらゆるトランザクションが当該或るトランザクションの直前に実行されても直後に実行されても、他のあらゆるトランザクションの影響は同じである。
強い直列化可能性は、並行トランザクションの実行が制約される程度を指し、トランザクション処理システムの隔離性の異なるレベルを生成する。
本文書の文脈では、最も強い形式の隔離性を示すトランザクション処理システムに関する問題が最も大きい。
このシステムでは、トランザクションが行う更新が決して無駄になることはなく、トランザクション内で繰り返される読み出しオペレーションは同じ結果を生成する。
その意味で、実行された或るトランザクションについて、そのストリームの他のあらゆるトランザクションが当該或るトランザクションの直前に実行されても直後に実行されても、他のあらゆるトランザクションの影響は同じである。
強い直列化可能性は、並行トランザクションの実行が制約される程度を指し、トランザクション処理システムの隔離性の異なるレベルを生成する。
本文書の文脈では、最も強い形式の隔離性を示すトランザクション処理システムに関する問題が最も大きい。
このシステムでは、トランザクションが行う更新が決して無駄になることはなく、トランザクション内で繰り返される読み出しオペレーションは同じ結果を生成する。
耐久性は、トランザクションが一旦コミットすると、トランザクション処理システムに影響を与える障害に対しても、アプリケーションの状態に対するトランザクションの変更が存続するような特性を指す。
トランザクション処理システムに関連する1つの課題は、トランザクションがコミットするのに必要な時間を削減することに関するものである。
したがって、この発明は、トランザクションがコミットするのに必要な時間を削減するシステムおよび方法を提供することに関連した問題から生じたものである。
したがって、この発明は、トランザクションがコミットするのに必要な時間を削減するシステムおよび方法を提供することに関連した問題から生じたものである。
[概要]
本明細書で説明するさまざまな実施の形態は、トランザクション処理システムと共に非ディスク永続メモリを利用する。
非ディスク永続メモリを使用してトランザクションをコミットすることにより、トランザクションをコミットすることに関連した時間を削減することができ、したがって、トランザクション処理システム内部の資源の需要を小さくでき、かつ、トランザクション処理のスループットを増加させることができる。
本明細書で説明するさまざまな実施の形態は、トランザクション処理システムと共に非ディスク永続メモリを利用する。
非ディスク永続メモリを使用してトランザクションをコミットすることにより、トランザクションをコミットすることに関連した時間を削減することができ、したがって、トランザクション処理システム内部の資源の需要を小さくでき、かつ、トランザクション処理のスループットを増加させることができる。
[例示の一般的なトランザクション処理システム]
図1は、本明細書で説明する本発明の原理を実施するのにそのコンポーネントを利用することができる例示のトランザクション処理システム100を示している。
この説明する実施の形態では、トランザクション処理システム100は、データベースライタ102、トランザクションモニタ104、およびログライタ106を備える。
図1は、本明細書で説明する本発明の原理を実施するのにそのコンポーネントを利用することができる例示のトランザクション処理システム100を示している。
この説明する実施の形態では、トランザクション処理システム100は、データベースライタ102、トランザクションモニタ104、およびログライタ106を備える。
データベースライタ102は、トランザクションプログラムが指定するオペレーションを実行すると、データボリューム(すなわち、ディスクまたはディスクの集まり)に記憶されたデータを変化させるように構成される。
データベースライタ102が耐久性以外のACID特性をどのように維持するかは、本明細書の説明には特に関連しない。
データベースライタ102が耐久性以外のACID特性をどのように維持するかは、本明細書の説明には特に関連しない。
耐久性について、データベースライタは、自身がデータベースに対して行った変更が、耐久性のある媒体に確実に記録されるようにする。
オンライントランザクション処理では、これらの変更によって影響を受けたデータは、データボリュームにおいてランダムに分散される傾向がある。
ディスクドライブへのランダムアクセスは非常に非効率的であるので、これらの変更は、ディスクにすぐには書き込まれない。
その代わり、データベースライタ102は、自身の変更を後述するログライタ106に送信し、ログライタ106が、トランザクションのコミットに間に合うように、それら変更を耐久性のあるものにする。
オンライントランザクション処理では、これらの変更によって影響を受けたデータは、データボリュームにおいてランダムに分散される傾向がある。
ディスクドライブへのランダムアクセスは非常に非効率的であるので、これらの変更は、ディスクにすぐには書き込まれない。
その代わり、データベースライタ102は、自身の変更を後述するログライタ106に送信し、ログライタ106が、トランザクションのコミットに間に合うように、それら変更を耐久性のあるものにする。
トランザクションモニタ104は、トランザクションがシステムに出入りする際にトランザクションを追跡する。
トランザクションモニタは、データベースライタ102がトランザクションに代わってデータベースを変更することを追跡し、データベースライタ102がログライタ106に送信したそのトランザクションに関係したあらゆるデータボリュームの変更が、トランザクションのコミット前に永久媒体に確実にフラッシュされるようにする。
また、トランザクションモニタ104は、トランザクションログにトランザクションの状態(例えば、コミットまたはアボート)も記録する。
トランザクションモニタは、データベースライタ102がトランザクションに代わってデータベースを変更することを追跡し、データベースライタ102がログライタ106に送信したそのトランザクションに関係したあらゆるデータボリュームの変更が、トランザクションのコミット前に永久媒体に確実にフラッシュされるようにする。
また、トランザクションモニタ104は、トランザクションログにトランザクションの状態(例えば、コミットまたはアボート)も記録する。
ログライタ106はデータベース監査証跡を保持する。
データベース監査証跡は、各トランザクションがデータベースに行った変更を明示的に記録し、トランザクションがコミットした連続番号を暗黙的に記録する。
再び耐久性特性に注目して、トランザクションがコミットできる前に、そのトランザクションが行った変更を耐久性のある媒体に記憶しなければならない。
ログライタ106はこの制約を強制する。
ログライタ106は、データベースライタ102から、状態の変更を記載した監査記録を受信し、その記録動作を、後述するトランザクションコミット基盤の残りの部分と調整する。
データベース監査証跡は、各トランザクションがデータベースに行った変更を明示的に記録し、トランザクションがコミットした連続番号を暗黙的に記録する。
再び耐久性特性に注目して、トランザクションがコミットできる前に、そのトランザクションが行った変更を耐久性のある媒体に記憶しなければならない。
ログライタ106はこの制約を強制する。
ログライタ106は、データベースライタ102から、状態の変更を記載した監査記録を受信し、その記録動作を、後述するトランザクションコミット基盤の残りの部分と調整する。
当業者に理解されるように、上記エンティティの1つまたは2つ以上のものは、複数のプロセスまたはスレッドを使用して実現することができる。
図2は、図1のトランザクション処理システムの一実施の形態を包括して200で示し、データベースライタ202、トランザクションモニタ204、およびログライタ206を備える。
この例では、上述したコンポーネントのそれぞれが、1対のプロセスを使用して実施される。
したがって、各プロセス対は、(「pri」のラベルが付けられた)主プロセスおよび(「bak」のラベルが付けられた)バックアッププロセスを含む。
この例では、各主プロセスは、トランザクション処理システムの他のいずれかのコンポーネントと通信する前に、自身の状態のバックアッププロセスに関連する部分をチェックポイントする。
主プロセスが故障している場合には、バックアッププロセスが迅速に引き継ぐことができる。
この引き継ぎ間隔はかなり短く(数ミリ秒から数秒続く)、この期間中に、インフライトのトランザクションがアボートされ、場合によっては再開される。
図2のトランザクション処理アーキテクチャのエレメントを実現するプロセスおよびライブラリは、複数のCPUにわたって分散させることができる。
したがって、各プロセス対は、(「pri」のラベルが付けられた)主プロセスおよび(「bak」のラベルが付けられた)バックアッププロセスを含む。
この例では、各主プロセスは、トランザクション処理システムの他のいずれかのコンポーネントと通信する前に、自身の状態のバックアッププロセスに関連する部分をチェックポイントする。
主プロセスが故障している場合には、バックアッププロセスが迅速に引き継ぐことができる。
この引き継ぎ間隔はかなり短く(数ミリ秒から数秒続く)、この期間中に、インフライトのトランザクションがアボートされ、場合によっては再開される。
図2のトランザクション処理アーキテクチャのエレメントを実現するプロセスおよびライブラリは、複数のCPUにわたって分散させることができる。
この例では、データベースライタ202には「DP2」(「ディスクプロセス(Disk Process)2」の略)のラベルが付けられ、ログライタ206には「ADP」(「監査ディスクプロセス(Audit Disk Process)」の略)のラベルが付けられている。
トランザクションモニタ204は、TMF(「トランザクション監視機構(Transaction Monitoring Facility)」の略)と呼ばれる、分散したプロセスおよびシステムのライブラリの集まりを使用して実施される。
トランザクションモニタ204には「TMP」(「トランザクションモニタプロセス(Transaction Monitor Process)」の略)のラベルが付けられている。
トランザクションモニタ204は、トランザクションの開始およびコミットを調整する。
TMFは、クラスタの各CPUにおけるTMFlib(TMFライブラリ)と呼ばれるオペレーティングシステム機構を使用する。
このライブラリによって、DP2プロセスは、任意の所与のトランザクションに対して自身の作業の開始および終了を行う際にTMFに登録を行うことが可能になる。
「トランザクションのコミット」というタイトルの節で後述するように、TMFlibインスタンスは、相互におよびTMPプロセス対と通信して、トランザクションのコミットを調整する。
トランザクションモニタ204は、TMF(「トランザクション監視機構(Transaction Monitoring Facility)」の略)と呼ばれる、分散したプロセスおよびシステムのライブラリの集まりを使用して実施される。
トランザクションモニタ204には「TMP」(「トランザクションモニタプロセス(Transaction Monitor Process)」の略)のラベルが付けられている。
トランザクションモニタ204は、トランザクションの開始およびコミットを調整する。
TMFは、クラスタの各CPUにおけるTMFlib(TMFライブラリ)と呼ばれるオペレーティングシステム機構を使用する。
このライブラリによって、DP2プロセスは、任意の所与のトランザクションに対して自身の作業の開始および終了を行う際にTMFに登録を行うことが可能になる。
「トランザクションのコミット」というタイトルの節で後述するように、TMFlibインスタンスは、相互におよびTMPプロセス対と通信して、トランザクションのコミットを調整する。
[トランザクションのコミット]
図2を参照して、以下では、トランザクション処理システムに単一のログボリューム(または監査証跡ディスクボリューム)208が存在する場合のトランザクションのコミットに必要な例示のステップを説明する。
通常、クライアント210は、トランザクションの開始を示すBegin_Transaction(トランザクション開始)または類似のオペレーションに遭遇する。
クライアントプロセスを実行しているCPU上のTMFlibは、トランザクションモニタプロセス、すなわちTMPにBegin_Transactionイベントを通知する。
TMPは、その新しいトランザクションにトランザクションID(TID)を割り当てる。
TIDは、次に、データベースライタ202に伝えられ、特に、トランザクションに代わって作業を行うディスクプロセスDP2のすべてに伝えられる。
図2に示す簡単なケースでは、単一のデータベースライタ(1対のDP2プロセスを備える)のみが必要とされる。
より一般的なケースでは、複数のDP2プロセス対がトランザクションの処理に必要とされる可能性がある。
図2を参照して、以下では、トランザクション処理システムに単一のログボリューム(または監査証跡ディスクボリューム)208が存在する場合のトランザクションのコミットに必要な例示のステップを説明する。
通常、クライアント210は、トランザクションの開始を示すBegin_Transaction(トランザクション開始)または類似のオペレーションに遭遇する。
クライアントプロセスを実行しているCPU上のTMFlibは、トランザクションモニタプロセス、すなわちTMPにBegin_Transactionイベントを通知する。
TMPは、その新しいトランザクションにトランザクションID(TID)を割り当てる。
TIDは、次に、データベースライタ202に伝えられ、特に、トランザクションに代わって作業を行うディスクプロセスDP2のすべてに伝えられる。
図2に示す簡単なケースでは、単一のデータベースライタ(1対のDP2プロセスを備える)のみが必要とされる。
より一般的なケースでは、複数のDP2プロセス対がトランザクションの処理に必要とされる可能性がある。
データベースライタ202がデータベースの状態を変更すると、DP2プロセスは、状態変更の記録をログライタ206に伝え、特にADPプロセスに伝える。
ADPプロセスは、状態変更をメモリにバッファリングする。
このバッファリングは、バッファリングされた監査データ量が、当該監査データ量についてのしきい値を超えるまでか(その結果、いわゆる儀礼書き込み(courtesy write)になる)、または、トランザクションモニタプロセス204からのメッセージによってコミットを強制された場合にはそれよりも先に(その結果、いわゆる強制書き込みになる)行われる。
ADPプロセスは、状態変更をメモリにバッファリングする。
このバッファリングは、バッファリングされた監査データ量が、当該監査データ量についてのしきい値を超えるまでか(その結果、いわゆる儀礼書き込み(courtesy write)になる)、または、トランザクションモニタプロセス204からのメッセージによってコミットを強制された場合にはそれよりも先に(その結果、いわゆる強制書き込みになる)行われる。
その後、クライアントは、さらにEnd_Transaction(トランザクション終了)または類似のオペレーションに遭遇する。
このEnd_Transactionは、特定のトランザクションの終了を示す。
トランザクションモニタプロセス204がトランザクションをコミットできる前に、上述したように、そのトランザクションに代わってログライタ206に送信されたデータベースの状態変更を確実に耐久性のあるものにしておく必要がある。
これを行うために、TMPは、その特定のトランザクションのFlush(フラッシュ)メッセージをログライタまたはADPに送信し、次いで、必要な状態変更およびコミット記録が耐久性のないシステムバッファからディスクドライブにフラッシュされたことを確認するメッセージをADPから待つ。
トランザクションモニタ204は、この確認を受信すると、トランザクションコミット記録をADPに送信し、コミット記録が耐久性のある媒体に書き込まれると、トランザクションがコミットしたことをクライアントに通知する。
このEnd_Transactionは、特定のトランザクションの終了を示す。
トランザクションモニタプロセス204がトランザクションをコミットできる前に、上述したように、そのトランザクションに代わってログライタ206に送信されたデータベースの状態変更を確実に耐久性のあるものにしておく必要がある。
これを行うために、TMPは、その特定のトランザクションのFlush(フラッシュ)メッセージをログライタまたはADPに送信し、次いで、必要な状態変更およびコミット記録が耐久性のないシステムバッファからディスクドライブにフラッシュされたことを確認するメッセージをADPから待つ。
トランザクションモニタ204は、この確認を受信すると、トランザクションコミット記録をADPに送信し、コミット記録が耐久性のある媒体に書き込まれると、トランザクションがコミットしたことをクライアントに通知する。
上記から、当業者には理解されるように、状態変更およびコミット記録をディスクにフラッシュするのを待つことは、TMFトランザクションをコミットする際の遅延のかなりの部分を占めることは明らかである。
ディスクは機械的な媒体であり、ディスク待ち時間はプロセッサ速度およびメモリ速度ほど急速に改善されることはないので、TMFトランザクションのコミット時間は、数ミリ秒から何秒もの時間に及ぶことが多い。
ディスクは機械的な媒体であり、ディスク待ち時間はプロセッサ速度およびメモリ速度ほど急速に改善されることはないので、TMFトランザクションのコミット時間は、数ミリ秒から何秒もの時間に及ぶことが多い。
いくつかのアプリケーションは高速の応答時間を許容できる一方、他の多くのものは許容できない。
TMFトランザクションの応答時間が高速の場合、平均的なトランザクションがシステムに長く留まり、したがって、トランザクション処理システム内部の資源の需要が大きくなることによって、トランザクション処理のスループットに対して2次的な逆の効果がある。
これは、有限個の資源の下ではトランザクション処理のスループットを間接的に制限する。
TMFトランザクションの応答時間が高速の場合、平均的なトランザクションがシステムに長く留まり、したがって、トランザクション処理システム内部の資源の需要が大きくなることによって、トランザクション処理のスループットに対して2次的な逆の効果がある。
これは、有限個の資源の下ではトランザクション処理のスループットを間接的に制限する。
[一般の永続メモリ]
本明細書で説明する実施の形態によると、非ディスク永続メモリが、トランザクション処理システムと共に使用され、トランザクションのコミット時間を削減する。
本明細書で説明する実施の形態によると、非ディスク永続メモリが、トランザクション処理システムと共に使用され、トランザクションのコミット時間を削減する。
永続メモリは、当業者に理解されるように、アーキテクチャの概念である。
説明する実施の形態によると、利用できる非ディスク永続メモリの多くの可能な実施態様がある。
したがって、非ディスク永続メモリの1つの特定の実施の形態に限定することは、この文書の意図するところではない。
説明する実施の形態によると、利用できる非ディスク永続メモリの多くの可能な実施態様がある。
したがって、非ディスク永続メモリの1つの特定の実施の形態に限定することは、この文書の意図するところではない。
読み手が非ディスク永続メモリに関連したアーキテクチャの原理を理解するのを助けるために、以下の説明では、非ディスク永続メモリシステムが本発明のトランザクション処理システムにおけるその使用を容易にするために有することができる特徴を説明する。
この説明全体を通じて、非ディスク永続メモリシステムの限定的でない2、3の例を提供する。
この説明全体を通じて、非ディスク永続メモリシステムの限定的でない2、3の例を提供する。
非ディスク永続メモリは、この文書で定義されるように、次の特性、すなわち耐久性、接続性、およびアクセスを示すべきである。
耐久性は、リフレッシュすることなく耐久性があり、かつ、システム電力の損失に対しテーブル存続できる非ディスク永続メモリを指す。
耐久性は、これに加えて、電力損失後またはソフト障害後に非ディスク永続メモリに記憶されたデータへのアクセスを確実に継続するようにするために、耐久性のある自己一貫性のあるメタデータを提供すべきである。
耐久性は、これに加えて、電力損失後またはソフト障害後に非ディスク永続メモリに記憶されたデータへのアクセスを確実に継続するようにするために、耐久性のある自己一貫性のあるメタデータを提供すべきである。
接続性について、以下を検討する。
非ディスク永続メモリは、市販のチップセットと共に利用可能なメモリコントローラに取り付けることができる。
専用メモリコントローラは、最終的には、固有の方法で非ディスク永続メモリの耐久性を活用するように設計することができるが、専用メモリコントローラが存在する必要はない。
おそらくフォールトトレランスの意味、パッケージの考慮、物理スロットの制限、または電気負荷の制限の理由から、CPUのメモリコントローラへの直接接続が望ましくない場合には、非ディスク永続メモリの第1レベルのI/Oの取り付けが許可される。
例えば、非ディスク永続メモリをPCIおよび他の第1レベルI/O相互接続に取り付けることができる。
他の第1レベルI/O相互接続は、PCIエクスプレス(PCI Express)、IPを介したRDMA(RDMA over IP)、インフィニバンド(InfiniBand)、ファイバチャネルを介した仮想インタフェース(FC−VI(Virtual Interface over Fibre Channel))、サーバネット(ServerNet)等である。
このような相互接続は、メモリマッピングおよびメモリセマンティックアクセス(memory-semantic access)の双方をサポートする。
非ディスク永続メモリのこの実施の形態は、通信リンク接続型永続メモリユニット(CPMU(Communication-link Attached Persistent Memory Unit))と呼ばれる。
非ディスク永続メモリは、市販のチップセットと共に利用可能なメモリコントローラに取り付けることができる。
専用メモリコントローラは、最終的には、固有の方法で非ディスク永続メモリの耐久性を活用するように設計することができるが、専用メモリコントローラが存在する必要はない。
おそらくフォールトトレランスの意味、パッケージの考慮、物理スロットの制限、または電気負荷の制限の理由から、CPUのメモリコントローラへの直接接続が望ましくない場合には、非ディスク永続メモリの第1レベルのI/Oの取り付けが許可される。
例えば、非ディスク永続メモリをPCIおよび他の第1レベルI/O相互接続に取り付けることができる。
他の第1レベルI/O相互接続は、PCIエクスプレス(PCI Express)、IPを介したRDMA(RDMA over IP)、インフィニバンド(InfiniBand)、ファイバチャネルを介した仮想インタフェース(FC−VI(Virtual Interface over Fibre Channel))、サーバネット(ServerNet)等である。
このような相互接続は、メモリマッピングおよびメモリセマンティックアクセス(memory-semantic access)の双方をサポートする。
非ディスク永続メモリのこの実施の形態は、通信リンク接続型永続メモリユニット(CPMU(Communication-link Attached Persistent Memory Unit))と呼ばれる。
ストレージ接続性(例えば、SCSI)、または、実際には他のあらゆる第2レベルI/O接続性は、以下で特定する性能考慮の理由から永続メモリには望ましくない。
アクセスについて、以下を検討する。
非ディスク永続メモリは、特別に指定されたプロセス仮想アドレスにおいてではあるが、CPUのメモリ命令(ロードおよびストア)を使用して、通常の仮想メモリのようにユーザプログラムからアクセスすることができる。
メモリセマンティックオペレーションをサポートする一定のシステムエリアネットワーク(すなわち、SAN)では、非ディスク永続メモリは、リモートDMA(RDMA)または類似のセマンティクスを使用してアクセスされるネットワーク資源として実施することができる。
例えば、図3は、ネットワーク接続型非ディスク永続メモリを使用するシステム300を示している。
このシステム300は、RDMA使用可能システムエリアネットワーク(SAN)306を通じて1または2つ以上のプロセッサノード302がアクセスできる通信リンク接続型非ディスク永続メモリユニット(CPMU)310を備える。
CPMU310の非ディスク永続メモリにアクセスするために、プロセッサノード302で実行されているソフトウェアは、そのプロセッサノードのネットワークインタフェース(NI)304を通じて読み出しオペレーションまたは書き込みオペレーションを開始する。
このように、読み出しコマンドまたは書き込みコマンドは、RDMA使用可能SAN306上を、CPMUのネットワークインタフェース(NI)308に運ばれる。
したがって、処理後、適切なデータがRDMA使用可能SAN306を介して通信される。
非ディスク永続メモリは、特別に指定されたプロセス仮想アドレスにおいてではあるが、CPUのメモリ命令(ロードおよびストア)を使用して、通常の仮想メモリのようにユーザプログラムからアクセスすることができる。
メモリセマンティックオペレーションをサポートする一定のシステムエリアネットワーク(すなわち、SAN)では、非ディスク永続メモリは、リモートDMA(RDMA)または類似のセマンティクスを使用してアクセスされるネットワーク資源として実施することができる。
例えば、図3は、ネットワーク接続型非ディスク永続メモリを使用するシステム300を示している。
このシステム300は、RDMA使用可能システムエリアネットワーク(SAN)306を通じて1または2つ以上のプロセッサノード302がアクセスできる通信リンク接続型非ディスク永続メモリユニット(CPMU)310を備える。
CPMU310の非ディスク永続メモリにアクセスするために、プロセッサノード302で実行されているソフトウェアは、そのプロセッサノードのネットワークインタフェース(NI)304を通じて読み出しオペレーションまたは書き込みオペレーションを開始する。
このように、読み出しコマンドまたは書き込みコマンドは、RDMA使用可能SAN306上を、CPMUのネットワークインタフェース(NI)308に運ばれる。
したがって、処理後、適切なデータがRDMA使用可能SAN306を介して通信される。
RDMAデータ移動オペレーションに加えて、CPMU310は、さまざまな管理コマンドに応答するように構成することができる。
プロセッサノード302が開始した書き込みオペレーションでは、例えば、データのCPMUへの記憶が成功すると、データは、耐久性を有し、停電またはプロセッサノード302の障害に対して存続する。
特に、電力が長時間切断されていたり、プロセッサノード302のオペレーティングシステムが再ブートされていたりしても、CPMUが正しく機能し続けている限り、メモリの内容は維持される。
この例では、プロセッサノード302は、少なくとも1つの中央処理装置(CPU)およびメモリから成るコンピュータシステムであり、このコンピュータシステムでは、CPUがオペレーティングシステムを実行するように構成される。
プロセッサノード302は、さらに、データベース等のアプリケーションソフトウェアを実行するようにも構成される。
プロセッサノード302は、SAN306を使用して、CPMU310およびI/Oコントローラ(図示せず)などのデバイスだけでなく、他のプロセッサノード302とも通信する。
プロセッサノード302が開始した書き込みオペレーションでは、例えば、データのCPMUへの記憶が成功すると、データは、耐久性を有し、停電またはプロセッサノード302の障害に対して存続する。
特に、電力が長時間切断されていたり、プロセッサノード302のオペレーティングシステムが再ブートされていたりしても、CPMUが正しく機能し続けている限り、メモリの内容は維持される。
この例では、プロセッサノード302は、少なくとも1つの中央処理装置(CPU)およびメモリから成るコンピュータシステムであり、このコンピュータシステムでは、CPUがオペレーティングシステムを実行するように構成される。
プロセッサノード302は、さらに、データベース等のアプリケーションソフトウェアを実行するようにも構成される。
プロセッサノード302は、SAN306を使用して、CPMU310およびI/Oコントローラ(図示せず)などのデバイスだけでなく、他のプロセッサノード302とも通信する。
この例の一実施の形態では、RDMA使用可能SANは、ターゲットプロセッサノード302のCPUに通知することなく、バイトレベルのメモリオペレーションを実行できるネットワークである。
このバイトレベルのメモリオペレーションは、イニシエータプロセッサノード302とターゲットプロセッサノード302との間のコピーオペレーションや、イニシエータプロセッサノード302とデバイス310との間のコピーオペレーション等である。
この場合、SAN306は、連続したネットワーク仮想アドレス空間を不連続な物理アドレス空間にマッピングすることを可能にするために、仮想アドレス物理アドレス化変換を実行するように構成される。
このタイプのアドレス変換によって、CPMU310の動的管理が可能になる。
RDMA機能を有する市販のSAN306には、サーバネット、IPを介したRDMA、インフィニバンド、および仮想インタフェースアーキテクチャに準拠したすべてのSANが含まれるが、これらに限定されるものではない。
このバイトレベルのメモリオペレーションは、イニシエータプロセッサノード302とターゲットプロセッサノード302との間のコピーオペレーションや、イニシエータプロセッサノード302とデバイス310との間のコピーオペレーション等である。
この場合、SAN306は、連続したネットワーク仮想アドレス空間を不連続な物理アドレス空間にマッピングすることを可能にするために、仮想アドレス物理アドレス化変換を実行するように構成される。
このタイプのアドレス変換によって、CPMU310の動的管理が可能になる。
RDMA機能を有する市販のSAN306には、サーバネット、IPを介したRDMA、インフィニバンド、および仮想インタフェースアーキテクチャに準拠したすべてのSANが含まれるが、これらに限定されるものではない。
プロセッサノード302は、一般に、NI304を通じてSAN306に取り付けられるが、多くの変形が可能である。
一方、より一般的には、読み出しオペレーションおよび書き込みオペレーションを通信する装置にプロセッサノードを接続することだけが必要である。
例えば、この例の別の実施態様では、プロセッサノード302は、マザーボード上のさまざまなCPUであり、SANを使用する代わりに、例えばPCIバスといった入出力バスが使用される。
本教示は、必要に応じて、より大きな実施態様またはより小さな実施態様に適合するように拡大縮小できることに留意されたい。
一方、より一般的には、読み出しオペレーションおよび書き込みオペレーションを通信する装置にプロセッサノードを接続することだけが必要である。
例えば、この例の別の実施態様では、プロセッサノード302は、マザーボード上のさまざまなCPUであり、SANを使用する代わりに、例えばPCIバスといった入出力バスが使用される。
本教示は、必要に応じて、より大きな実施態様またはより小さな実施態様に適合するように拡大縮小できることに留意されたい。
ネットワークインタフェース(NI)308は、CPMU310と通信接続され、それによって、CPMU310内に含まれる非ディスク永続メモリへのアクセスが可能になる。
CPMU310の内部で使用されるタイプのメモリ技術を含めて、図3のさまざまなコンポーネントに対して多くの技術が利用可能である。
したがって、図3の実施の形態およびこの文書で説明するそれ以外のものは、非ディスク永続メモリを実現する特定の技術に限定されるものではない。
実際に、複数のメモリ技術が適しており、この複数のメモリ技術には、磁気ランダムアクセスメモリ(MRAM)、磁気抵抗ランダムアクセスメモリ(MRRAM)、ポリマ強誘電体ランダムアクセスメモリ(PFRAM)、オボニクス統合メモリ(OUM(ovonics unified memory))、バッテリバックアップ動的アクセスメモリ(BBDRAM)、およびすべての種類のフラッシュメモリが含まれる。
CPMU310の内部で使用されるタイプのメモリ技術を含めて、図3のさまざまなコンポーネントに対して多くの技術が利用可能である。
したがって、図3の実施の形態およびこの文書で説明するそれ以外のものは、非ディスク永続メモリを実現する特定の技術に限定されるものではない。
実際に、複数のメモリ技術が適しており、この複数のメモリ技術には、磁気ランダムアクセスメモリ(MRAM)、磁気抵抗ランダムアクセスメモリ(MRRAM)、ポリマ強誘電体ランダムアクセスメモリ(PFRAM)、オボニクス統合メモリ(OUM(ovonics unified memory))、バッテリバックアップ動的アクセスメモリ(BBDRAM)、およびすべての種類のフラッシュメモリが含まれる。
SAN306が使用される場合、メモリは、RDMAアクセスのために十分高速であるべきである。
このように、RDMA読み出しオペレーションおよび書き込みオペレーションは、SAN306を介して可能にされる。
別のタイプの通信装置が使用される場合も、使用されるメモリのアクセス速度は、その通信装置に適合するだけ十分高速であるべきである。
永続的な情報は、使用される非ディスク永続メモリがデータを保持できる程度まで設けられることに留意すべきである。
例えば、多くのアプリケーションでは、非ディスク永続メモリは、電力が損失する時間の量にかかわらず、データを記憶するのに必要とされる場合がある。
一方、別のアプリケーションでは、非ディスク永続メモリは、数分または数時間の間のみ必要とされる場合がある。
このように、RDMA読み出しオペレーションおよび書き込みオペレーションは、SAN306を介して可能にされる。
別のタイプの通信装置が使用される場合も、使用されるメモリのアクセス速度は、その通信装置に適合するだけ十分高速であるべきである。
永続的な情報は、使用される非ディスク永続メモリがデータを保持できる程度まで設けられることに留意すべきである。
例えば、多くのアプリケーションでは、非ディスク永続メモリは、電力が損失する時間の量にかかわらず、データを記憶するのに必要とされる場合がある。
一方、別のアプリケーションでは、非ディスク永続メモリは、数分または数時間の間のみ必要とされる場合がある。
この手法と併せて、単一または複数の独立した間接アドレス指定メモリ領域を作成するために、メモリ管理機能が設けられる。
さらに、電力損失後またはプロセッサ障害後にメモリ回復を行うために、CPMUメタデータが設けられる。
メタデータまたは情報は、例えば、CPMU内の保護されたメモリ領域の内容およびレイアウトを含む。
このように、CPMUは、データおよびデータの使用方法を記憶する。
必要があれば、CPMUは、さらに、電力障害またはシステム障害からの回復を可能にすることができる。
さらに、電力損失後またはプロセッサ障害後にメモリ回復を行うために、CPMUメタデータが設けられる。
メタデータまたは情報は、例えば、CPMU内の保護されたメモリ領域の内容およびレイアウトを含む。
このように、CPMUは、データおよびデータの使用方法を記憶する。
必要があれば、CPMUは、さらに、電力障害またはシステム障害からの回復を可能にすることができる。
図4では、CPMU400は、バス等のデータ通信リンクを介して相互接続された非ディスク不揮発性メモリ402およびネットワークインタフェース、すなわちNI404を備える。
ここで、非ディスク不揮発性メモリ402は、例えば、MRAMまたはフラッシュメモリとすることができる。
NI404は、それ自身のRDMA要求を開始せず、その代わり、ネットワークから管理コマンドを受信し、要求された管理オペレーションを実行する。
具体的には、CPMU400は、入力した各メモリアクセス要求のアドレスを変換し、次いで、NI404と不揮発性メモリ402との間のデータ通信リンクを介して、要求されたメモリオペレーションを内部で開始する。
ここで、非ディスク不揮発性メモリ402は、例えば、MRAMまたはフラッシュメモリとすることができる。
NI404は、それ自身のRDMA要求を開始せず、その代わり、ネットワークから管理コマンドを受信し、要求された管理オペレーションを実行する。
具体的には、CPMU400は、入力した各メモリアクセス要求のアドレスを変換し、次いで、NI404と不揮発性メモリ402との間のデータ通信リンクを介して、要求されたメモリオペレーションを内部で開始する。
図5では、CPMU500の別の実施の形態が、バッテリ510を有する非ディスク揮発性メモリ502と不揮発性2次ストア508とを組み合わせたものを使用する。
この実施の形態では、電力障害になると、非ディスク揮発性メモリ502内のデータが、このようなデータを不揮発性2次ストア508に保存できるまで、バッテリ510の電力を使用して維持される。
不揮発性2次ストアは、例えば、磁気ディスクまたは低速フラッシュメモリとすることができる。
CPMU500が適切に動作するために、揮発性メモリ502から不揮発性2次メモリストア508へのデータの転送は、外部からの介入もなく、バッテリ510からの電力以外のさらなる電力もなく行われるべきである。
したがって、必要なあらゆるタスクは、バッテリ510が放電する可能性がある前に完了すべきである。
図示するように、CPMU500は、組み込まれたオペレーティングシステムを実行するオプションのCPU504を含む。
この実施の形態では、電力障害になると、非ディスク揮発性メモリ502内のデータが、このようなデータを不揮発性2次ストア508に保存できるまで、バッテリ510の電力を使用して維持される。
不揮発性2次ストアは、例えば、磁気ディスクまたは低速フラッシュメモリとすることができる。
CPMU500が適切に動作するために、揮発性メモリ502から不揮発性2次メモリストア508へのデータの転送は、外部からの介入もなく、バッテリ510からの電力以外のさらなる電力もなく行われるべきである。
したがって、必要なあらゆるタスクは、バッテリ510が放電する可能性がある前に完了すべきである。
図示するように、CPMU500は、組み込まれたオペレーティングシステムを実行するオプションのCPU504を含む。
したがって、バックアップタスク(すなわち、非ディスク揮発性メモリ502から不揮発性2次メモリストア508へのデータ転送)は、CPU504で実行されるソフトウェアによって行うことができる。
含まれるNI506は、CPU504で実行されるソフトウェアにより使用されて、RDMA要求を開始することもできるし、SAN306上の他のエンティティにメッセージを送信することもできる。
ここでも再び、CPU504は、NI506を通じてネットワークから管理コマンドを受信し、要求された管理オペレーションを実行する。
含まれるNI506は、CPU504で実行されるソフトウェアにより使用されて、RDMA要求を開始することもできるし、SAN306上の他のエンティティにメッセージを送信することもできる。
ここでも再び、CPU504は、NI506を通じてネットワークから管理コマンドを受信し、要求された管理オペレーションを実行する。
CPMU400や500等のCPMUのどの実施の形態も、永続メモリの割り当ておよび共有の目的で管理を受けなければならない。
この例では、CPMU管理は、永続メモリマネージャ(PMM(persistent memory manager))によって実行される。
PMMは、CPMU内に配置することもできるし、先に説明したプロセッサノード302の1つ等のCPMUの外部に配置することもできる。
プロセッサノード302が、CPMU310の非ディスク永続メモリの割り当てもしくは割り当て解除を行う必要がある場合、または、CPMU310の非ディスク永続メモリの既存の領域の使用を開始もしくは停止する必要がある場合に、プロセッサノードは、まずPMMと通信して、要求された管理タスクを実行すべきである。
CPMU310のメモリの内容は(ディスクドライブと同様に)耐久性を有するので、そのCPMU内の非ディスク永続メモリ領域に関係したメタデータも、耐久を有しなければならず、それらの領域との一貫性を保って保持されなければならず、好ましくは、(ディスクドライブのファイルシステムメタデータと同様に)CPMU自体の内部に記憶されなければならないことに留意されたい。
したがって、PMMは、CPMU310のメタデータを、その非ディスク永続メモリの内容と常に一貫性のある状態に保つように、管理タスクを実行しなければならない。
このように、PMM、CPMU310、およびプロセッサノード302の1つまたは2つ以上に影響を与える、起こり得る電力損失、システムシャットダウン、または他の障害の後であっても、記憶されたメタデータを使用して、CPMU310に記憶されたデータを有意義に取り出すことができる。
回復の必要があると、CPMU310を使用するシステム300は、このように、電力障害またはオペレーティングシステムのクラッシュが発生したメモリ状態からそのオペレーションを回復して再開することができる。
この例では、CPMU管理は、永続メモリマネージャ(PMM(persistent memory manager))によって実行される。
PMMは、CPMU内に配置することもできるし、先に説明したプロセッサノード302の1つ等のCPMUの外部に配置することもできる。
プロセッサノード302が、CPMU310の非ディスク永続メモリの割り当てもしくは割り当て解除を行う必要がある場合、または、CPMU310の非ディスク永続メモリの既存の領域の使用を開始もしくは停止する必要がある場合に、プロセッサノードは、まずPMMと通信して、要求された管理タスクを実行すべきである。
CPMU310のメモリの内容は(ディスクドライブと同様に)耐久性を有するので、そのCPMU内の非ディスク永続メモリ領域に関係したメタデータも、耐久を有しなければならず、それらの領域との一貫性を保って保持されなければならず、好ましくは、(ディスクドライブのファイルシステムメタデータと同様に)CPMU自体の内部に記憶されなければならないことに留意されたい。
したがって、PMMは、CPMU310のメタデータを、その非ディスク永続メモリの内容と常に一貫性のある状態に保つように、管理タスクを実行しなければならない。
このように、PMM、CPMU310、およびプロセッサノード302の1つまたは2つ以上に影響を与える、起こり得る電力損失、システムシャットダウン、または他の障害の後であっても、記憶されたメタデータを使用して、CPMU310に記憶されたデータを有意義に取り出すことができる。
回復の必要があると、CPMU310を使用するシステム300は、このように、電力障害またはオペレーティングシステムのクラッシュが発生したメモリ状態からそのオペレーションを回復して再開することができる。
処理ノード302のLOAD(ロード)メモリ命令およびSTORE(ストア)メモリ命令を使用して、SAN306を介したRDMAデータ転送を直接または間接に開始できないシステム300では、アプリケーションプログラミングインタフェース、すなわちAPIを使用してRDMAを開始するために、CPMU310の内容の読み出しおよび書き込みは、処理ノード302で実行されるアプリケーションを必要とする。
明らかなように、非ディスク永続メモリが魅力的である理由の1つは、このメモリが、耐久性をもって記憶されたデータに対して、ディスクドライブよりもきめの細かい(アクセスサイズが意味のあるより小さな)読み出しオペレーションおよび書き込みオペレーションをサポートするからである。
そのきめの細かさは、アクセスサイズ(読み出しまたは書き込みが行われるバイト数)と、アクセスアラインメント(読み出しまたは書き込みが行われる最初のバイトの非ディスク永続メモリ領域内のオフセット)との双方に適用される。
非ディスク永続メモリ領域内のデータ構造体は、自由にアラインすることができ、それによって、ディスクを用いるよりも効率的で効果的な容量の使用が可能になる。
ブロック指向のディスクストレージおよびフラッシュメモリに対する別の利点は、データの小さな部分を変更してライトバックできる前に、まずデータの大きなブロックを読み出す必要がなく、その代わり、書き込みオペレーションは、変更が必要なバイトのみを単純に変更できるということである。
非ディスク永続メモリの生の速度も魅力的である。
アクセス待ち時間は、ディスクドライブのアクセス待ち時間よりも概ね良好である。
ディスクドライブと比較して、非ディスク永続メモリの相対的な使いやすさも重要である。
その理由は、書き込み時に、まず、すべてのポインタを相対的なバイトアドレスに変換し、次いで、読み出し時に相対的なバイトアドレスをポインタに再変換して戻す必要なく、ポインタリッチ(pointer-rich)データ構造体を非ディスク永続メモリに記憶できるからである。
これらのいわゆるマーシャル・アンマーシャルオーバーヘッドは、複雑なデータ構造体ではかなり大きくなる可能性がある。
上記ファクタのすべてによって、アプリケーションプログラマは、すでに永続化したデータ構造体のアクセスおよび操作を高速化することができるだけでなく、ディスクドライブやフラッシュメモリ等の低速のストレージデバイスを用いて永続化することを考慮していなかった一定のデータ構造体の永続化を考慮することもできる。
情報処理システムにおける永続性の程度が大きくなるほど、情報の損失が小さくなるので、障害からの回復がより簡単で高速になる。
回復が高速化することは、システムの可用性が大きくなることを意味する。
したがって、説明した実施の形態の正味の利点は、性能にあるだけでなく、可用性がより大きくなることにもある。
ミッションクリティカルなトランザクション処理システムでは、システムの可用性がないことに関連してコストが高くなる場合に、説明した実施の形態の可用性の利点は、実際には、性能の利点よりもさらに大きな価値を有する可能性がある。
さらに、新しいまたは改良されたデータベースの特徴は、メモリ内オペレーション等の説明した実施の形態を使用することによって可能になり得る。
データベース以外のアプリケーションも、システム300の改善された性能および可用性を活用して、新たな顧客の可能性を生み出すことができる。
それらのアプリケーションは本明細書で列挙するにはあまりにも多すぎるが、それらのアプリケーションの多くは、当業者に明らかであろう。
このような1つのアプリケーションを次に説明する。
そのきめの細かさは、アクセスサイズ(読み出しまたは書き込みが行われるバイト数)と、アクセスアラインメント(読み出しまたは書き込みが行われる最初のバイトの非ディスク永続メモリ領域内のオフセット)との双方に適用される。
非ディスク永続メモリ領域内のデータ構造体は、自由にアラインすることができ、それによって、ディスクを用いるよりも効率的で効果的な容量の使用が可能になる。
ブロック指向のディスクストレージおよびフラッシュメモリに対する別の利点は、データの小さな部分を変更してライトバックできる前に、まずデータの大きなブロックを読み出す必要がなく、その代わり、書き込みオペレーションは、変更が必要なバイトのみを単純に変更できるということである。
非ディスク永続メモリの生の速度も魅力的である。
アクセス待ち時間は、ディスクドライブのアクセス待ち時間よりも概ね良好である。
ディスクドライブと比較して、非ディスク永続メモリの相対的な使いやすさも重要である。
その理由は、書き込み時に、まず、すべてのポインタを相対的なバイトアドレスに変換し、次いで、読み出し時に相対的なバイトアドレスをポインタに再変換して戻す必要なく、ポインタリッチ(pointer-rich)データ構造体を非ディスク永続メモリに記憶できるからである。
これらのいわゆるマーシャル・アンマーシャルオーバーヘッドは、複雑なデータ構造体ではかなり大きくなる可能性がある。
上記ファクタのすべてによって、アプリケーションプログラマは、すでに永続化したデータ構造体のアクセスおよび操作を高速化することができるだけでなく、ディスクドライブやフラッシュメモリ等の低速のストレージデバイスを用いて永続化することを考慮していなかった一定のデータ構造体の永続化を考慮することもできる。
情報処理システムにおける永続性の程度が大きくなるほど、情報の損失が小さくなるので、障害からの回復がより簡単で高速になる。
回復が高速化することは、システムの可用性が大きくなることを意味する。
したがって、説明した実施の形態の正味の利点は、性能にあるだけでなく、可用性がより大きくなることにもある。
ミッションクリティカルなトランザクション処理システムでは、システムの可用性がないことに関連してコストが高くなる場合に、説明した実施の形態の可用性の利点は、実際には、性能の利点よりもさらに大きな価値を有する可能性がある。
さらに、新しいまたは改良されたデータベースの特徴は、メモリ内オペレーション等の説明した実施の形態を使用することによって可能になり得る。
データベース以外のアプリケーションも、システム300の改善された性能および可用性を活用して、新たな顧客の可能性を生み出すことができる。
それらのアプリケーションは本明細書で列挙するにはあまりにも多すぎるが、それらのアプリケーションの多くは、当業者に明らかであろう。
このような1つのアプリケーションを次に説明する。
[非ディスク永続メモリを使用したトランザクションコミット時間の削減]
図1のトランザクション処理システム100に関して、非ディスク永続メモリがない場合に、トランザクションモニタ104がデータベーストランザクションをコミットできる前に、2つのことを行わなければならない。
まず、ログライタ106は、データベースライタ102から受信したそのトランザクションに関するあらゆる監査情報を耐久性のある媒体にフラッシュ(または完全に読み出す)しなければならない。
その後、トランザクションモニタ104も、そのトランザクションのコミット記録を耐久性のある媒体に書き込まなければならない。
説明した実施の形態によると、非ディスク永続メモリを利用することによって、それら情報項目を非ディスク永続メモリのみに書き込んだ後に、トランザクションをコミットすることを許可することができる。
非ディスク永続メモリがディスクストレージよりも低い書き込みオペレーション待ち時間を示す程度まで、それに応じて、トランザクション待ち時間を短くすることができる(また、TMFトランザクションスループットが改善され得る)。
図1のトランザクション処理システム100に関して、非ディスク永続メモリがない場合に、トランザクションモニタ104がデータベーストランザクションをコミットできる前に、2つのことを行わなければならない。
まず、ログライタ106は、データベースライタ102から受信したそのトランザクションに関するあらゆる監査情報を耐久性のある媒体にフラッシュ(または完全に読み出す)しなければならない。
その後、トランザクションモニタ104も、そのトランザクションのコミット記録を耐久性のある媒体に書き込まなければならない。
説明した実施の形態によると、非ディスク永続メモリを利用することによって、それら情報項目を非ディスク永続メモリのみに書き込んだ後に、トランザクションをコミットすることを許可することができる。
非ディスク永続メモリがディスクストレージよりも低い書き込みオペレーション待ち時間を示す程度まで、それに応じて、トランザクション待ち時間を短くすることができる(また、TMFトランザクションスループットが改善され得る)。
具体的には、図2を参照して、ADP206は、TMP204からフラッシュメッセージを受信すると、ディスクストレージに書き込む場合よりも非ディスク永続メモリに書き込む場合の方が概ね高速に、書き込まれていない状態変更およびトランザクションコミット記録を同期してフラッシュすることができる。
書き込みオペレーションが高速になることよって、ADP206がディスクを使用した場合よりも非ディスク永続メモリを使用する場合の方が高速に、TMPはトランザクションをコミットすることが可能になる。
書き込みオペレーションが高速になることよって、ADP206がディスクを使用した場合よりも非ディスク永続メモリを使用する場合の方が高速に、TMPはトランザクションをコミットすることが可能になる。
一例として、一実施の形態によるトランザクション処理システムを包括して600で示す図6を検討する。
システム600は、データベースライタ602、トランザクションモニタ604、およびログライタ606を備える。
システム600は、データベースライタ602、トランザクションモニタ604、およびログライタ606を備える。
説明する実施の形態によると、ログライタ606は、主監査ディスクプロセス608およびバックアップディスクプロセス610を備える。
1対の非ディスク永続メモリユニットが設けられる。
この1対の非ディスク永続メモリユニットは、主非ディスク永続メモリユニット612(「CPMU」とも呼ばれる)およびミラー非ディスク永続メモリユニット614(「CPMU」とも呼ばれる)から成る。
主監査ログディスク616およびミラー監査ディスクログ618が、以下で明らかになる目的で設けられる。
1対の非ディスク永続メモリユニットが設けられる。
この1対の非ディスク永続メモリユニットは、主非ディスク永続メモリユニット612(「CPMU」とも呼ばれる)およびミラー非ディスク永続メモリユニット614(「CPMU」とも呼ばれる)から成る。
主監査ログディスク616およびミラー監査ディスクログ618が、以下で明らかになる目的で設けられる。
図示して説明する実施の形態では、データは、主非ディスク永続メモリユニット612およびミラー非ディスク永続メモリユニット614の双方に書き込まれる。
いくつかの実施の形態では、データは、主ユニットおよびミラーユニットに並行して書き込むことができる。
あるいは、いくつかの実施の形態では、データは、主ユニットおよびミラーユニットに並行して書き込む必要はない。
システムが十分に機能している場合に、いくつかの実施の形態では、情報は、主非ディスク永続メモリユニット612またはミラー非ディスク永続メモリユニット614のいずれかから読み出される。
非ディスク永続メモリユニット(612、614)の一方のみが障害になると、データは、存続している非ディスク永続メモリユニットから読み出される。
障害になった主非ディスク永続メモリユニットが使用状態に復帰する準備ができると、その内容を、存続している非ディスク永続メモリユニットから復元することができる。
いくつかの実施の形態では、データは、主ユニットおよびミラーユニットに並行して書き込むことができる。
あるいは、いくつかの実施の形態では、データは、主ユニットおよびミラーユニットに並行して書き込む必要はない。
システムが十分に機能している場合に、いくつかの実施の形態では、情報は、主非ディスク永続メモリユニット612またはミラー非ディスク永続メモリユニット614のいずれかから読み出される。
非ディスク永続メモリユニット(612、614)の一方のみが障害になると、データは、存続している非ディスク永続メモリユニットから読み出される。
障害になった主非ディスク永続メモリユニットが使用状態に復帰する準備ができると、その内容を、存続している非ディスク永続メモリユニットから復元することができる。
図示して説明する実施の形態では、監査証跡ごとに1つの領域が、非ディスク永続メモリユニット612、614のそれぞれ内に割り当てられ、監査ディスクプロセス対608、610は、それらの領域のそれぞれ内にライトアサイドバッファ(「WAB(write-aside buffer)」として示す)を保持する。
任意の適切なライトアサイドバッファ構成を使用できるが、この例では、ライトアイサドバッファは、当業者に理解されるような循環バッファとして構成される。
主監査ディスクプロセス608は、データベースライタ602から1組の変更を受信すると、非ディスク永続メモリユニット612、614を使用して、それら変更を非常に高速にコミットする。
具体的には、図示した例では、ADP608は、1組の変更を受信すると、その情報を、CPMU612のWABにおけるそのWABの末尾アドレスに追加し、次いで、WABの末尾アドレスを、最も近時に書き込まれた情報の終端を過ぎた点に進める。
次いで、ADP608は、CPMU614のWABに対してそのオペレーションを繰り返す。
当業者は、CPMU612、614への書き込みオペレーション間の並行性の程度を変更することができる。
任意の適切なライトアサイドバッファ構成を使用できるが、この例では、ライトアイサドバッファは、当業者に理解されるような循環バッファとして構成される。
主監査ディスクプロセス608は、データベースライタ602から1組の変更を受信すると、非ディスク永続メモリユニット612、614を使用して、それら変更を非常に高速にコミットする。
具体的には、図示した例では、ADP608は、1組の変更を受信すると、その情報を、CPMU612のWABにおけるそのWABの末尾アドレスに追加し、次いで、WABの末尾アドレスを、最も近時に書き込まれた情報の終端を過ぎた点に進める。
次いで、ADP608は、CPMU614のWABに対してそのオペレーションを繰り返す。
当業者は、CPMU612、614への書き込みオペレーション間の並行性の程度を変更することができる。
説明した実施の形態によると、要求された書き込みオペレーションの完了により、末尾ポインタが進められてWABの先頭アドレスを過ぎると、非ディスク永続メモリ領域への書き込みオペレーションは一時中断され、WABはフルにマーキングされる。
WABの先頭アドレスおよび末尾アドレスを進めるアルゴリズムは、当業者に理解されるように、WABの先頭アドレスおよび末尾アドレスが、双方共に、WABの循環バッファを収容する同じ非ディスク永続メモリ領域内に記憶されて更新される点を除いて、循環キューデータ構造体を実施する教科書の手法に類似している。
WABの先頭アドレスおよび末尾アドレスを進めるアルゴリズムは、当業者に理解されるように、WABの先頭アドレスおよび末尾アドレスが、双方共に、WABの循環バッファを収容する同じ非ディスク永続メモリ領域内に記憶されて更新される点を除いて、循環キューデータ構造体を実施する教科書の手法に類似している。
コスト効率の良い非ディスク永続メモリでは、ログボリュームが、ディスクの代わりにより高速な永続メモリデバイスを全面的に使用して実現されるので、低速ディスクI/Oをトランザクションコミットプロセスから完全に省くことができる。
一方、現在および近い将来では、ディスク容量は、引き続き非ディスク永続メモリ容量を大きく上回る可能性があり、ディスクストレージのバイトあたりのコストは、引き続き非ディスク永続メモリのバイトあたりのコストよりもかなり低い可能性がある。
その場合、相対的に小さな容量の非ディスク永続メモリユニットは、相対的に大きな容量のディスクドライブに代わってWABを実施するのに使用されることになる。
このような構成および類似の設計では、同期して書き込まれた監査情報は、レイジーかつ非同期にディスクに書き込まれることになる。
非ディスク永続メモリにどの情報を保持するのか、および、ディスクにどれをフラッシュするかを選択するさまざまな技法が、メモリ階層設計の技術分野の当業者には明らかであろう。
一方、現在および近い将来では、ディスク容量は、引き続き非ディスク永続メモリ容量を大きく上回る可能性があり、ディスクストレージのバイトあたりのコストは、引き続き非ディスク永続メモリのバイトあたりのコストよりもかなり低い可能性がある。
その場合、相対的に小さな容量の非ディスク永続メモリユニットは、相対的に大きな容量のディスクドライブに代わってWABを実施するのに使用されることになる。
このような構成および類似の設計では、同期して書き込まれた監査情報は、レイジーかつ非同期にディスクに書き込まれることになる。
非ディスク永続メモリにどの情報を保持するのか、および、ディスクにどれをフラッシュするかを選択するさまざまな技法が、メモリ階層設計の技術分野の当業者には明らかであろう。
さらに、今説明したこのようなコスト制約を受ける非ディスク永続メモリ技術では、ADP608は、引き続きディスク書き込みオペレーションを使用することができるが、ADP608は、TMP604のトランザクションのコミットを可能にすることができる前に、それらディスクオペレーションの完了を待つ必要はない。
その代わり、ADP608は、適切に選択された時間間隔内で受信された複数のメッセージから情報を組み合わせるオプションを実行したとしても、データベースライタ602から非ディスク永続メモリデバイス612、614に受信されたすべての監査情報を集中かつ同期して書き込む。
上述したように、ディスクオペレーションをもはや待たせることはないので、ADP608は、ディスクオペレーションごとにより多くのデータを書き込むことができ、それによって、同じ量の監査証跡データに対して実行されるオペレーションの総数を少なくすることにより、I/O関係のオーバーヘッドを少なくすることが得られる。
これは、監査ディスク616、618からのディスクスループットを改善するだけでなく、ADP608を実行するCPUのCPU稼働率も改善する。
したがって、ADP608は、TMP604から、その監査証跡をフラッシュする要求を受信すると、まず、その情報をCPMU612、614に書き込む。
また、ADP608は、いわゆるレイジー方法でその情報を監査ログディスク616、618に書き込むことができるように、その情報をWABにバッファリングする。
フラッシュメッセージがTMP604から受信されたかどうかにかかわらず、例えば、バッファリングされた情報が一定のしきい値を超えるといった所定の条件が満たされるか、または、一定の最大時間間隔で、ADP608はディスク書き込みオペレーションを発行する。
しかしながら、従来の場合と異なり、監査情報がディスク616、618に書き込まれる前であって、CPMU612、614に書き込まれた後に、トランザクションをコミットすることができる。
その代わり、ADP608は、適切に選択された時間間隔内で受信された複数のメッセージから情報を組み合わせるオプションを実行したとしても、データベースライタ602から非ディスク永続メモリデバイス612、614に受信されたすべての監査情報を集中かつ同期して書き込む。
上述したように、ディスクオペレーションをもはや待たせることはないので、ADP608は、ディスクオペレーションごとにより多くのデータを書き込むことができ、それによって、同じ量の監査証跡データに対して実行されるオペレーションの総数を少なくすることにより、I/O関係のオーバーヘッドを少なくすることが得られる。
これは、監査ディスク616、618からのディスクスループットを改善するだけでなく、ADP608を実行するCPUのCPU稼働率も改善する。
したがって、ADP608は、TMP604から、その監査証跡をフラッシュする要求を受信すると、まず、その情報をCPMU612、614に書き込む。
また、ADP608は、いわゆるレイジー方法でその情報を監査ログディスク616、618に書き込むことができるように、その情報をWABにバッファリングする。
フラッシュメッセージがTMP604から受信されたかどうかにかかわらず、例えば、バッファリングされた情報が一定のしきい値を超えるといった所定の条件が満たされるか、または、一定の最大時間間隔で、ADP608はディスク書き込みオペレーションを発行する。
しかしながら、従来の場合と異なり、監査情報がディスク616、618に書き込まれる前であって、CPMU612、614に書き込まれた後に、トランザクションをコミットすることができる。
監査ディスク616、618に対するレイジーに発行された連続的な書き込みオペレーションが完了すると、WABに記憶されていた情報の一部は上書きの対象になる。
次に、CPMU612、614の適切な領域の先頭アドレスが、ライトバックが成功した最後のバイトを過ぎた位置に進められる。
ディスクI/Oの完了がADP608によって受信される前に、非ディスク永続メモリユニットが「フル」にマーキングされていると、非ディスク永続メモリユニットは、その後、「非フル」にマーキングされる。
ADP608は、その後、再度、WABの使用を再開することができる。
ADP608は、自身がWABの使用を中断する時は常に、トランザクションをコミットする前に、ログボリューム616、618に対する未処理のディスクI/Oの待ち状態に戻る。
このような状況では、トランザクション応答時間に対するディスクI/O待ち時間の影響を制限するために、書き込みI/Oオペレーションのサイズは、通常、最適なディスクスループットを生じる値(例えば、128KB〜1MB)よりも小さな値(例えば、コミット記録間に収集された監査量に応じて、4KB〜128KB)に設定される。
非ディスク永続メモリでは、トランザクションは、ディスクI/Oが完了するのを待たず、したがって、ADP608は、より多くの監査データが書き込みのためにバッファリングされるまで待つことができる。
したがって、より大きなディスク書き込みI/Oサイズ(例えば、512KB)を使用して、ログボリューム616、618の最適に近いスループットを得ることができ、ADP608を実行するCPUのディスクI/Oオーバーヘッドを大幅に削減することができる。
次に、CPMU612、614の適切な領域の先頭アドレスが、ライトバックが成功した最後のバイトを過ぎた位置に進められる。
ディスクI/Oの完了がADP608によって受信される前に、非ディスク永続メモリユニットが「フル」にマーキングされていると、非ディスク永続メモリユニットは、その後、「非フル」にマーキングされる。
ADP608は、その後、再度、WABの使用を再開することができる。
ADP608は、自身がWABの使用を中断する時は常に、トランザクションをコミットする前に、ログボリューム616、618に対する未処理のディスクI/Oの待ち状態に戻る。
このような状況では、トランザクション応答時間に対するディスクI/O待ち時間の影響を制限するために、書き込みI/Oオペレーションのサイズは、通常、最適なディスクスループットを生じる値(例えば、128KB〜1MB)よりも小さな値(例えば、コミット記録間に収集された監査量に応じて、4KB〜128KB)に設定される。
非ディスク永続メモリでは、トランザクションは、ディスクI/Oが完了するのを待たず、したがって、ADP608は、より多くの監査データが書き込みのためにバッファリングされるまで待つことができる。
したがって、より大きなディスク書き込みI/Oサイズ(例えば、512KB)を使用して、ログボリューム616、618の最適に近いスループットを得ることができ、ADP608を実行するCPUのディスクI/Oオーバーヘッドを大幅に削減することができる。
ディスク書き込みオペレーションを待つことにより性能に悪影響を与える他の任意のアプリケーションに、非ディスク永続メモリを使用してライトアサイドバッファを作成するのに、類似の設計変更を使用することができる。
設計に対する他の変形は当業者に明らかであろう。
例えば、主非ディスク永続メモリユニットおよびミラー非ディスク永続メモリユニットに連続して交互に書き込む代わりに、アプリケーションは、並行してそれらユニットに書き込むことを選ぶことができる。
例えば、主非ディスク永続メモリユニットおよびミラー非ディスク永続メモリユニットに連続して交互に書き込む代わりに、アプリケーションは、並行してそれらユニットに書き込むことを選ぶことができる。
[例示の方法]
図7は、一実施の形態による方法のステップを示している。
図示して説明する実施の形態では、この方法は、任意の適切なハードウェア、ソフトウェア、ファームウェア、またはそれらの組み合わせで実施することができる。
さらに、この方法は、任意の適切に構成された非ディスク永続メモリアーキテクチャを使用して実施することができる。
非ディスク永続メモリアーキテクチャの限定的でない特定の例を示し、この文書を通じて説明する。
図7は、一実施の形態による方法のステップを示している。
図示して説明する実施の形態では、この方法は、任意の適切なハードウェア、ソフトウェア、ファームウェア、またはそれらの組み合わせで実施することができる。
さらに、この方法は、任意の適切に構成された非ディスク永続メモリアーキテクチャを使用して実施することができる。
非ディスク永続メモリアーキテクチャの限定的でない特定の例を示し、この文書を通じて説明する。
ステップ700は、トランザクションが誘発する状態変更に関連したデータを受信する。
このようなデータは、トランザクションの結果として引き起こされたデータベースの状態変更を記述することができる。
図示して説明する実施の形態では、このデータは、上述したようなデータベースライタのコンポーネントから受信される。
ステップ702は、非ディスク永続メモリにデータを書き込む。
上述したように、任意の適切な非ディスク永続メモリアーキテクチャを利用することができる。
例えば、図6の例では、主非ディスク永続メモリユニットおよびミラー非ディスク永続メモリユニットが利用される。
ステップ704は、非ディスク永続メモリユニットのしきい値に到達したかどうかを確認する。
到達していない場合には、この方法はステップ702に戻る。
他方、非ディスク永続メモリユニットのしきい値に到達した場合には、ステップ706が、非ディスク永続メモリのデータを、図6の監査ログディスク616等の監査ログディスクに書き込む。
図6の例では、このような方法で監査ログディスクに書き込むことは、レイジー方法で行われたと呼ばれる。
このようなデータは、トランザクションの結果として引き起こされたデータベースの状態変更を記述することができる。
図示して説明する実施の形態では、このデータは、上述したようなデータベースライタのコンポーネントから受信される。
ステップ702は、非ディスク永続メモリにデータを書き込む。
上述したように、任意の適切な非ディスク永続メモリアーキテクチャを利用することができる。
例えば、図6の例では、主非ディスク永続メモリユニットおよびミラー非ディスク永続メモリユニットが利用される。
ステップ704は、非ディスク永続メモリユニットのしきい値に到達したかどうかを確認する。
到達していない場合には、この方法はステップ702に戻る。
他方、非ディスク永続メモリユニットのしきい値に到達した場合には、ステップ706が、非ディスク永続メモリのデータを、図6の監査ログディスク616等の監査ログディスクに書き込む。
図6の例では、このような方法で監査ログディスクに書き込むことは、レイジー方法で行われたと呼ばれる。
[例示のコンピュータシステム]
一実施の形態では、上述したシステムは、図8に示すようなコンピュータシステム800において実施することができる。
コンピュータシステム800またはその構成コンポーネントのさまざまな組み合わせは、さまざまな非ディスク永続メモリユニットだけでなく、プロセッサノードをも含む上述したシステムを実施するのに利用することができる。
一実施の形態では、上述したシステムは、図8に示すようなコンピュータシステム800において実施することができる。
コンピュータシステム800またはその構成コンポーネントのさまざまな組み合わせは、さまざまな非ディスク永続メモリユニットだけでなく、プロセッサノードをも含む上述したシステムを実施するのに利用することができる。
図8を参照して、例示のコンピュータシステム800(例えば、パーソナルコンピュータ、ワークステーション、メインフレーム等)は、さまざまなコンポーネントを通信接続するデータバス814で構成される。
図8に示すように、情報および命令を処理するプロセッサ802がバス814に接続される。
プロセッサ802の情報および命令を記憶するRAM804等のコンピュータ可読揮発性メモリもバス814に接続される。
さらに、プロセッサ802の静的な情報および命令を記憶するコンピュータ可読読み出し専用メモリ(ROM)806もバス814に接続される。
磁気ディスク媒体や光ディスク媒体等のデータストレージデバイス808もバス814に接続される。
このデータストレージデバイス808は、大量の情報および命令を記憶するのに使用される。
英数字キーおよびファンクションキーを備え、情報およびコマンドの選択したものをプロセッサ802に通信する英数字入力デバイス810がバス814に接続される。
ユーザが入力した情報およびコマンドの選択したものを中央プロセッサ802に通信するマウス等のカーソル制御デバイス812がバス814に接続される。
例えば、ネットワーク、他のコンポーネント、または他のプロセッサと通信する入出力通信ポート816がバス814に接続される。
コンピュータユーザに情報を表示する表示装置818がバス814に接続される。
この表示デバイス818は、液晶デバイスであってもよいし、陰極線管であってもよいし、ユーザが認識可能な図形画像および英数字文字を作成するのに適した他の表示デバイスであってもよい。
英数字入力810およびカーソル制御デバイス812によって、コンピュータユーザは、表示装置818上における可視シンボル(ポインタ)の二次元移動を信号で動的に送ることが可能になる。
非ディスク永続メモリユニット820が設けられ、上述した実施の形態のいずれをも含むことができるだけでなく、当業者には理解されるように、上述した振る舞いを示す他の非ディスク永続メモリアーキテクチャをも含むことができる。
図8に示すように、情報および命令を処理するプロセッサ802がバス814に接続される。
プロセッサ802の情報および命令を記憶するRAM804等のコンピュータ可読揮発性メモリもバス814に接続される。
さらに、プロセッサ802の静的な情報および命令を記憶するコンピュータ可読読み出し専用メモリ(ROM)806もバス814に接続される。
磁気ディスク媒体や光ディスク媒体等のデータストレージデバイス808もバス814に接続される。
このデータストレージデバイス808は、大量の情報および命令を記憶するのに使用される。
英数字キーおよびファンクションキーを備え、情報およびコマンドの選択したものをプロセッサ802に通信する英数字入力デバイス810がバス814に接続される。
ユーザが入力した情報およびコマンドの選択したものを中央プロセッサ802に通信するマウス等のカーソル制御デバイス812がバス814に接続される。
例えば、ネットワーク、他のコンポーネント、または他のプロセッサと通信する入出力通信ポート816がバス814に接続される。
コンピュータユーザに情報を表示する表示装置818がバス814に接続される。
この表示デバイス818は、液晶デバイスであってもよいし、陰極線管であってもよいし、ユーザが認識可能な図形画像および英数字文字を作成するのに適した他の表示デバイスであってもよい。
英数字入力810およびカーソル制御デバイス812によって、コンピュータユーザは、表示装置818上における可視シンボル(ポインタ)の二次元移動を信号で動的に送ることが可能になる。
非ディスク永続メモリユニット820が設けられ、上述した実施の形態のいずれをも含むことができるだけでなく、当業者には理解されるように、上述した振る舞いを示す他の非ディスク永続メモリアーキテクチャをも含むことができる。
[結論]
上述したさまざまな実施の形態は、トランザクション処理システムと共に非ディスク永続メモリを利用する。
非ディスク永続メモリを使用してトランザクションをコミットすることにより、トランザクションのコミットに関連した時間を削減することができる。
したがって、トランザクション処理システム内部の資源の需要を削減することができ、これによって、トランザクション処理システムのスループットを増大させることができる。
上述したさまざまな実施の形態は、トランザクション処理システムと共に非ディスク永続メモリを利用する。
非ディスク永続メモリを使用してトランザクションをコミットすることにより、トランザクションのコミットに関連した時間を削減することができる。
したがって、トランザクション処理システム内部の資源の需要を削減することができ、これによって、トランザクション処理システムのスループットを増大させることができる。
構造的な特徴および/または方法のステップに特有の文言で本発明を説明してきたが、添付の特許請求の範囲に規定される本発明は、必ずしも、説明した特定の特徴にもステップにも限定されるものではない。
それとは逆に、特定の特徴およびステップは、特許請求の範囲に記載した発明を実施する好ましい形態として開示されたものである。
それとは逆に、特定の特徴およびステップは、特許請求の範囲に記載した発明を実施する好ましい形態として開示されたものである。
100・・・トランザクション処理システム,
102・・・データベースライタ,
104・・・トランザクションモニタ,
106・・・ログライタ,
200・・・トランザクション処理システム,
202・・・データベースライタ,
204・・・トランザクションモニタ,
206・・・ログライタ,
208・・・監査ログディスク,
210・・・クライアント,
302・・・プロセッサノード,
306・・・RDMA使用可能システムエリアネットワーク(SAN),
310・・・通信リンク接続型永続メモリユニット(CPMU),
400・・・通信リンク接続型永続メモリユニット,
402・・・不揮発性メモリ,
500・・・通信リンク接続型永続メモリユニット,
502・・・揮発性メモリ,
508・・・不揮発性2次ストア,
510・・・バッテリ,
600・・・トランザクション処理システム,
602・・・データベースライタ,
604・・・トランザクションモニタ,
606・・・ログライタ,
608,610・・・監査ディスクプロセス,
612,614・・・永続メモリ,
616,618・・・監査ログディスク,
802・・・プロセッサ,
808・・・データストレージ,
810・・・英数字入力,
812・・・カーソル制御,
816・・・通信ポート,
818・・・表示装置,
820・・・非ディスク永続メモリユニット,
102・・・データベースライタ,
104・・・トランザクションモニタ,
106・・・ログライタ,
200・・・トランザクション処理システム,
202・・・データベースライタ,
204・・・トランザクションモニタ,
206・・・ログライタ,
208・・・監査ログディスク,
210・・・クライアント,
302・・・プロセッサノード,
306・・・RDMA使用可能システムエリアネットワーク(SAN),
310・・・通信リンク接続型永続メモリユニット(CPMU),
400・・・通信リンク接続型永続メモリユニット,
402・・・不揮発性メモリ,
500・・・通信リンク接続型永続メモリユニット,
502・・・揮発性メモリ,
508・・・不揮発性2次ストア,
510・・・バッテリ,
600・・・トランザクション処理システム,
602・・・データベースライタ,
604・・・トランザクションモニタ,
606・・・ログライタ,
608,610・・・監査ディスクプロセス,
612,614・・・永続メモリ,
616,618・・・監査ログディスク,
802・・・プロセッサ,
808・・・データストレージ,
810・・・英数字入力,
812・・・カーソル制御,
816・・・通信ポート,
818・・・表示装置,
820・・・非ディスク永続メモリユニット,
Claims (10)
- トランザクション処理システム(600)であって、
前記トランザクション処理システム内の1つ以上のトランザクションに従って、データを処理するように構成されたデータベースライタ(602)と、
前記トランザクション処理システム内のトランザクションを監視するトランザクションモニタ(604)と、
前記トランザクション処理システム内のトランザクションに関連した監査証跡データを保持するログライタ(606)と、
前記ログライタに関連付けられ、前記ログライタから前記監査証跡データを受信するように構成された1つ以上の非ディスク永続メモリユニット(612,614)と
を備えるトランザクション処理システム。 - 前記ログライタ(606)は、
主監査ディスクプロセス(608)およびバックアップ監査ディスクプロセス(610)
を備える
請求項1に記載のトランザクション処理システム。 - 前記1つ以上の非ディスク永続メモリユニット(612、614)は、
主非ディスク永続メモリユニットおよびミラー非ディスク永続メモリユニット
を備える
請求項1または2に記載のトランザクション処理システム。 - 前記1つ以上の非ディスク永続メモリユニット(612、614)は、
主非ディスク永続メモリユニットおよびミラー非ディスク永続メモリユニット
を備え、
前記ログライタ(606)は、前記監査証跡データを前記主非ディスク永続メモリユニットに書き込み、前記監査証跡データを前記ミラー非ディスク永続メモリユニットに書き込む
請求項1または2に記載のトランザクション処理システム。 - 前記1つ以上の非ディスク永続メモリユニット(612、614)は、
前記監査証跡データを受信するライトアサイドバッファ
を備え、
前記ライトアサイドバッファは、循環バッファとして構成される
請求項1、2または4に記載のトランザクション処理システム。 - トランザクションが誘発した状態変更に関連したデータを受信する(700)ことと、
前記受信したデータを、関連したトランザクションをコミットするために十分な非ディスク永続メモリに書き込む(702)ことと
を含む方法。 - 前記書き込む(702)動作は、
前記受信したデータを第1の非ディスク永続メモリユニットおよび第2の非ディスク永続メモリユニットに書き込むこと
を含み、
前記第1の非ディスク永続メモリユニットは、
主非ディスク永続メモリユニット
を備え、
前記第2の非ディスク永続メモリユニットは、
ミラー非ディスク永続メモリユニット
を備える
請求項6に記載の方法。 - 前記書き込む(702)動作は、
前記受信したデータを第1の非ディスク永続メモリユニットおよび第2の非ディスク永続メモリユニットに書き込むこと
を含み、
前記第1の非ディスク永続メモリユニットは、
主非ディスク永続メモリユニット
を備え、
前記第2の非ディスク永続メモリユニットは、
ミラー非ディスク永続メモリユニット
を備え、
前記書き込む動作は、
前記受信したデータを前記主非ディスク永続メモリユニットに書き込むことと、
前記受信したデータを前記ミラー非ディスク永続メモリユニットに書き込むことと
を含む
請求項6に記載の方法。 - 前記書き込む(702)動作は、
前記受信したデータを第1の非ディスク永続メモリユニットおよび第2の非ディスク永続メモリユニットに書き込むこと
を含み、
前記第1の非ディスク永続メモリユニットは、
主非ディスク永続メモリユニット
を備え、
前記第2の非ディスク永続メモリユニットは、
ミラー非ディスク永続メモリユニット
を備え、
前記書き込む動作は、
前記受信したデータを、前記主非ディスク永続メモリユニットおよび前記ミラー非ディスク永続メモリユニットに並行して書き込むこと
を含む
請求項6に記載の方法。 - 前記受信したデータを、前記非ディスク永続メモリに書き込み、前記トランザクションが誘発した状態変更のデータを、1つ以上の監査ログディスクに書き込むこと
をさらに含む請求項6〜9のいずれかに記載の方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/797,258 US7383290B2 (en) | 2004-03-09 | 2004-03-09 | Transaction processing systems and methods utilizing non-disk persistent memory |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005259136A true JP2005259136A (ja) | 2005-09-22 |
Family
ID=34920006
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005062400A Withdrawn JP2005259136A (ja) | 2004-03-09 | 2005-03-07 | 非ディスク永続メモリを利用したトランザクション処理システムおよび方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7383290B2 (ja) |
JP (1) | JP2005259136A (ja) |
DE (1) | DE102005006176A1 (ja) |
TW (1) | TW200602863A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008077220A (ja) * | 2006-09-19 | 2008-04-03 | Denso Corp | オブジェクト指向型車両用制御装置 |
JP2013541094A (ja) * | 2010-09-25 | 2013-11-07 | インテル・コーポレーション | アトミック領域の条件コミットのための決定メカニズムを提供する装置、方法、およびシステム |
JP2014528611A (ja) * | 2011-09-29 | 2014-10-27 | オラクル・インターナショナル・コーポレイション | トランザクションミドルウェアマシン環境においてシングルポイントボトルネックを防止するためのシステムおよび方法 |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7200623B2 (en) | 1998-11-24 | 2007-04-03 | Oracle International Corp. | Methods to perform disk writes in a distributed shared disk system needing consistency across failures |
US6961804B2 (en) * | 2001-07-20 | 2005-11-01 | International Business Machines Corporation | Flexible techniques for associating cache memories with processors and main memory |
US20050203974A1 (en) * | 2004-03-09 | 2005-09-15 | Smith Gary S. | Checkpoint methods and systems utilizing non-disk persistent memory |
US8918367B2 (en) * | 2004-04-30 | 2014-12-23 | Sap Se | Two phase commit emulation for non distributed transactions |
US8688800B2 (en) * | 2005-10-05 | 2014-04-01 | Hewlett-Packard Development Company, L.P. | Remote configuration of persistent memory system ATT tables |
US8706687B2 (en) * | 2007-01-24 | 2014-04-22 | Hewlett-Packard Development Company, L.P. | Log driven storage controller with network persistent memory |
US7975109B2 (en) | 2007-05-30 | 2011-07-05 | Schooner Information Technology, Inc. | System including a fine-grained memory and a less-fine-grained memory |
US20090158242A1 (en) * | 2007-12-18 | 2009-06-18 | Kabira Technologies, Inc., | Library of services to guarantee transaction processing application is fully transactional |
US20090158246A1 (en) * | 2007-12-18 | 2009-06-18 | Kabira Technologies, Inc. | Method and system for building transactional applications using an integrated development environment |
US8732386B2 (en) | 2008-03-20 | 2014-05-20 | Sandisk Enterprise IP LLC. | Sharing data fabric for coherent-distributed caching of multi-node shared-distributed flash memory |
US8229945B2 (en) | 2008-03-20 | 2012-07-24 | Schooner Information Technology, Inc. | Scalable database management software on a cluster of nodes using a shared-distributed flash memory |
US20090260011A1 (en) * | 2008-04-14 | 2009-10-15 | Microsoft Corporation | Command line transactions |
US8510334B2 (en) * | 2009-11-05 | 2013-08-13 | Oracle International Corporation | Lock manager on disk |
US9164554B2 (en) | 2010-04-12 | 2015-10-20 | Sandisk Enterprise Ip Llc | Non-volatile solid-state storage system supporting high bandwidth and random access |
US8856593B2 (en) | 2010-04-12 | 2014-10-07 | Sandisk Enterprise Ip Llc | Failure recovery using consensus replication in a distributed flash memory system |
US8700842B2 (en) | 2010-04-12 | 2014-04-15 | Sandisk Enterprise Ip Llc | Minimizing write operations to a flash memory-based object store |
US9047351B2 (en) | 2010-04-12 | 2015-06-02 | Sandisk Enterprise Ip Llc | Cluster of processing nodes with distributed global flash memory using commodity server technology |
US8868487B2 (en) * | 2010-04-12 | 2014-10-21 | Sandisk Enterprise Ip Llc | Event processing in a flash memory-based object store |
US8666939B2 (en) | 2010-06-28 | 2014-03-04 | Sandisk Enterprise Ip Llc | Approaches for the replication of write sets |
US8694733B2 (en) | 2011-01-03 | 2014-04-08 | Sandisk Enterprise Ip Llc | Slave consistency in a synchronous replication environment |
US8874515B2 (en) | 2011-04-11 | 2014-10-28 | Sandisk Enterprise Ip Llc | Low level object version tracking using non-volatile memory write generations |
US8676968B2 (en) * | 2011-08-09 | 2014-03-18 | Hewlett-Packard Development Company, L.P. | Determining information about a computing system |
US9690638B2 (en) | 2011-09-29 | 2017-06-27 | Oracle International Corporation | System and method for supporting a complex message header in a transactional middleware machine environment |
US9135064B2 (en) | 2012-03-07 | 2015-09-15 | Sandisk Enterprise Ip Llc | Fine grained adaptive throttling of background processes |
EP2891069A4 (en) * | 2012-08-28 | 2016-02-10 | Hewlett Packard Development Co | HIGH PERFORMANCE PERSISTENCE MEMORY |
US9081606B2 (en) * | 2012-11-13 | 2015-07-14 | International Business Machines Corporation | Asynchronous persistent stores for transactions |
US9003228B2 (en) | 2012-12-07 | 2015-04-07 | International Business Machines Corporation | Consistency of data in persistent memory |
KR102275706B1 (ko) | 2014-06-30 | 2021-07-09 | 삼성전자주식회사 | 데이터 저장 장치의 작동 방법과 이를 포함하는 데이터 처리 시스템의 작동 방법 |
US9747174B2 (en) | 2015-12-11 | 2017-08-29 | Microsoft Technology Licensing, Llc | Tail of logs in persistent main memory |
US10318295B2 (en) | 2015-12-22 | 2019-06-11 | Intel Corporation | Transaction end plus commit to persistence instructions, processors, methods, and systems |
US9965538B2 (en) | 2016-01-19 | 2018-05-08 | Microsoft Technology Licensing, Llc | Early thread return with secondary event writes |
US10140150B2 (en) | 2016-02-08 | 2018-11-27 | Microsoft Technology Licensing, Llc | Thread diversion awaiting log call return |
US10691559B2 (en) | 2016-08-15 | 2020-06-23 | Oracle International Corporation | Persistent memory transactions with undo logging |
US9794366B1 (en) | 2016-10-19 | 2017-10-17 | Red Hat, Inc. | Persistent-memory management |
US11740928B2 (en) | 2019-08-26 | 2023-08-29 | International Business Machines Corporation | Implementing crash consistency in persistent memory |
US11928497B2 (en) | 2020-01-27 | 2024-03-12 | International Business Machines Corporation | Implementing erasure coding with persistent memory |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2960297B2 (ja) | 1994-03-16 | 1999-10-06 | 株式会社東芝 | データベースシステム及び負荷分散制御方法 |
US5561795A (en) * | 1994-05-13 | 1996-10-01 | Unisys Corporation | Method and apparatus for audit trail logging and data base recovery |
DE19819205A1 (de) | 1998-04-29 | 1999-11-04 | Siemens Ag | Datenhaltungssystem für persistente Daten |
US6272607B1 (en) * | 1998-08-28 | 2001-08-07 | International Business Machines Corporation | Method and apparatus for transactional writing of data into a persistent memory |
US6493837B1 (en) | 1999-07-16 | 2002-12-10 | Microsoft Corporation | Using log buffers to trace an event in a computer system |
US6578160B1 (en) | 2000-05-26 | 2003-06-10 | Emc Corp Hopkinton | Fault tolerant, low latency system resource with high level logging of system resource transactions and cross-server mirrored high level logging of system resource transactions |
US6813623B2 (en) * | 2001-06-15 | 2004-11-02 | International Business Machines Corporation | Method and apparatus for chunk based transaction logging with asynchronous input/output for a database management system |
US6910160B2 (en) | 2002-01-10 | 2005-06-21 | International Business Machines Corporation | System, method, and computer program product for preserving trace data after partition crash in logically partitioned systems |
US7624112B2 (en) * | 2003-04-03 | 2009-11-24 | Oracle International Corporation | Asynchronously storing transaction information from memory to a persistent storage |
US20050203974A1 (en) * | 2004-03-09 | 2005-09-15 | Smith Gary S. | Checkpoint methods and systems utilizing non-disk persistent memory |
-
2004
- 2004-03-09 US US10/797,258 patent/US7383290B2/en active Active
-
2005
- 2005-02-10 DE DE102005006176A patent/DE102005006176A1/de not_active Ceased
- 2005-03-07 JP JP2005062400A patent/JP2005259136A/ja not_active Withdrawn
- 2005-03-07 TW TW094106777A patent/TW200602863A/zh unknown
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008077220A (ja) * | 2006-09-19 | 2008-04-03 | Denso Corp | オブジェクト指向型車両用制御装置 |
JP2013541094A (ja) * | 2010-09-25 | 2013-11-07 | インテル・コーポレーション | アトミック領域の条件コミットのための決定メカニズムを提供する装置、方法、およびシステム |
US9146844B2 (en) | 2010-09-25 | 2015-09-29 | Intel Corporation | Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region |
JP2014528611A (ja) * | 2011-09-29 | 2014-10-27 | オラクル・インターナショナル・コーポレイション | トランザクションミドルウェアマシン環境においてシングルポイントボトルネックを防止するためのシステムおよび方法 |
Also Published As
Publication number | Publication date |
---|---|
TW200602863A (en) | 2006-01-16 |
US20050203961A1 (en) | 2005-09-15 |
US7383290B2 (en) | 2008-06-03 |
DE102005006176A1 (de) | 2005-10-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7383290B2 (en) | Transaction processing systems and methods utilizing non-disk persistent memory | |
US11243708B2 (en) | Providing track format information when mirroring updated tracks from a primary storage system to a secondary storage system | |
CN107408070B (zh) | 分布式存储系统中的多事务日志 | |
US8706687B2 (en) | Log driven storage controller with network persistent memory | |
US9405680B2 (en) | Communication-link-attached persistent memory system | |
US20040148360A1 (en) | Communication-link-attached persistent memory device | |
US8700585B2 (en) | Optimistic locking method and system for committing transactions on a file system | |
US5263154A (en) | Method and system for incremental time zero backup copying of data | |
US7849254B2 (en) | Create virtual track buffers in NVS using customer segments to maintain newly written data across a power loss | |
US5241669A (en) | Method and system for sidefile status polling in a time zero backup copy process | |
US9798631B2 (en) | Block storage by decoupling ordering from durability | |
US9959074B1 (en) | Asynchronous in-memory data backup system | |
US20130212321A1 (en) | Apparatus, System, and Method for Auto-Commit Memory Management | |
US20140123138A1 (en) | Hypervisor-based server duplication system and method and storage medium storing server duplication computer program | |
JP2006323826A (ja) | データベース管理システムでログ書込みを実行するシステム | |
US20060218200A1 (en) | Application of log records by storage servers | |
JP4222917B2 (ja) | 仮想記憶システムおよびその動作方法 | |
US20050203974A1 (en) | Checkpoint methods and systems utilizing non-disk persistent memory | |
US10019193B2 (en) | Checkpointing a journal by virtualization of non-volatile random access memory | |
WO2017162174A1 (zh) | 一种存储系统 | |
JP6652647B2 (ja) | ストレージシステム | |
US20180052750A1 (en) | Online nvm format upgrade in a data storage system operating with active and standby memory controllers | |
US11875060B2 (en) | Replication techniques using a replication log | |
JP2006012142A (ja) | 非ディスク永続メモリを利用したチェックポイント方法およびシステム | |
US11436151B2 (en) | Semi-sequential drive I/O performance |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20080402 |