JP5084827B2 - 永続性を管理する方法、装置、及びコンピュータ・プログラム - Google Patents

永続性を管理する方法、装置、及びコンピュータ・プログラム Download PDF

Info

Publication number
JP5084827B2
JP5084827B2 JP2009517172A JP2009517172A JP5084827B2 JP 5084827 B2 JP5084827 B2 JP 5084827B2 JP 2009517172 A JP2009517172 A JP 2009517172A JP 2009517172 A JP2009517172 A JP 2009517172A JP 5084827 B2 JP5084827 B2 JP 5084827B2
Authority
JP
Japan
Prior art keywords
message
data
data processing
volatile
persistence
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.)
Active
Application number
JP2009517172A
Other languages
English (en)
Other versions
JP2009541882A5 (ja
JP2009541882A (ja
Inventor
トッド、ステファン、ジェイムズ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2009541882A publication Critical patent/JP2009541882A/ja
Publication of JP2009541882A5 publication Critical patent/JP2009541882A5/ja
Application granted granted Critical
Publication of JP5084827B2 publication Critical patent/JP5084827B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/008Reliability or availability analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0635Risk analysis of enterprise or organisation activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery

Description

本発明は、メッセージング・システム、ファイル・システム、データベースのようなデータ処理システムの永続性管理に関するものである。
既知のいくつかのメッセージング・システムは、メッセージ状態情報及びメッセージが永続ストレージ(即ち、ディスク・ストレージのような不揮発性ストレージ)内のログ及びメッセージ・キュー・データ・ファイルに保存される「永続(persistent)」メッセージングを提供する。永続的に記憶されたメッセージは、メッセージング・システムの大部分の障害から再始動に至る過程を乗り切ることができる。ディスク障害以外の障害が発生した場合にも、ログ・データ及び永続的に記憶されたキューからメッセージ状態情報とメッセージとを復元することができる。永続メッセージ及び状態情報の復元可能性は、保証された1回限りのメッセージ配信(once−only message delivery)を実現する上で重要な要因となる。
例えば、メッセージング・マネージャは、メッセージに関する動作が無事実行されたことをアプリケーション・プログラムに確認する前に永続メッセージをディスク・ストレージに保存することができる。典型的なメッセージング・ネットワークでは、メッセージ送信側のアプリケーション・プログラムがAPIコールを介し「put_message」命令を発行して出力メッセージをキューに入れる。ローカル・メッセージング・マネージャ・プログラムがこのキューの管理を行い、分散メッセージング・ネットワーク内の他のローカル・アプリケーション・プログラム又は他のメッセージング・マネージャと通信して当該メッセージをターゲット受信者に転送する。永続メッセージング・システムにおいて、ローカル・メッセージング・マネージャは、「put_message」動作が無事完了したことを送信側アプリケーションに確認する前にメッセージを永続ストレージに保存する。(同期点マネージャによって現在制御されている「作業単位(unit of work)」からメッセージが除外されるいくつかの実施形態では)永続メッセージ又はメッセージに関するデータは、メッセージを宛先に転送するために「put_message」及び「get_message」が実行される度にディスクに書き込むことも、現在の作業単位がコミットされたときにだけメッセージをログに記録することもできる。分散作業単位を用いると、メッセージ転送中にいくつかの中間ポイントへのログの書き込みを回避することが可能となるが、「永続」メッセージとして識別されたメッセージは、事前定義されたポイントの永続ストレージに書き込まれることになる。
これとは対照的に、「非永続」メッセージはディスクに保存されないため、メッセージング・マネージャに障害が発生し再始動の必要が生じたとき、ならびにメッセージング・マネージャがオペレータ・コマンドによって停止されたときは廃棄されることになる。永続メッセージングは復元可能性及び保証されたメッセージ配信の観点では多くの利点をもたらすが、性能コストも伴う。「put_message」及び「get_message」処理が行われる度にディスク書き込みを行えば、メッセージのスループットが低下しアプリケーションの応答回数が増加するため、一部のメッセージを非永続的に処理することには事業上の正当な理由が存在しなければならない。
保証されたメッセージ配信と性能との間にはトレードオフの関係が存在するため、IBMコーポレーションのWebSphere MQファミリー製品にはメッセージのオプション属性として永続設定又は非永続設定のサポートが含まれており、永続メッセージングの性能の改善に向けた様々な取り組みがなされている(「WebSphere」及び「IBM」はインターナショナル・ビジネス・マシーンズ・コーポレーションの商標である)。性能は、高性能ディスク・ストレージの使用、障害不存在下の性能を最適化するコミット処理技法の使用、ならびに障害に対処する効率的な復元技法の使用によって改善されている。例えば、1994年3月23日に出願されIBMコーポレーションに譲渡された米国特許第5,452,430号には、永続データ及び非永続データを単一のメッセージ・キュー内の別個のページ・セットに格納することにより、システム障害からの復旧中に生じる遅延を低減することを目的とする永続メッセージ及び非永続メッセージ処理の解決策が記載されている。C. Mohan及びD. Dievendorffの「Recent Work on Distributed Commit Protocols, and Recoverable Messaging and Queuing」、IEEE Data Engineering Bulletin、17(1)、22〜28ページ(1994年)には、分散コミット・プロトコルならびに復元可能メッセージング/キューイングに関する分野の開発技術が記載されている。
C. Mohan及びD. Dievendorffの「Recent Work on Distributed Commit Protocols, and Recoverable Messaging and Queuing」、IEEE Data Engineering Bulletin、17(1)、22〜28ページ(1994年) 米国特許第5,452,430号
しかしながら、典型的なメッセージング・システムでは依然として永続性指定の柔軟さがあまり改善されていない。1つの提案としては、定義された異なるシステム状態に応じて異なる永続性を指定する機会をメッセージング・システムのユーザに与えるものがある。そのようなメッセージング・システムでは永続性の制御の粒度が高まることからユーザに利点がもたらされるが、永続性ポリシーが指定されたときに永続性の挙動は固定化される。
メッセージの永続性が所望の特性として指定された場合にも、典型的なメッセージング・システムではメッセージの保全性の確保にシステムの過剰なリソースがつぎ込まれてしまう。多くの応用分野において、個々のメッセージの大半は事業価値が低くそのような投資を正当化するに足る理由が見出せないが、典型的な従来技術の解決策では、価値が異なるメッセージ同士を区別することができず、メッセージの永続化コスト又はメッセージの非永続化リスクを考慮に入れることができない。
性能と永続性とのトレードオフの関係は、メッセージング・システムだけでなくデータベース、ファイル・システム、及び他の永続システムにも当てはまる。データベース・システムでは、データは典型的には永続的に保存されるが、低オーバーヘッドのストレージ・ソリューションでもクエリ/構造化機能の利益を享受することができるように、永続ストレージへの書き込みが強制されないいくつかのテーブルが記憶されることも知られている。このような「軽量な」データベース・ソリューションへの動きが進むにつれ、柔軟な永続性管理手法の必要性も益々高まっている。例えばアプリケーション・サーバ用の構成データをファイル・システム内でXMLファイルの形で保持する等、データの信頼性を高めるために、ファイル・システムの利用頻度は益々高まっている。近年、トランザクション・ファイル・システムの需要が益々高まっているが、現行の解決策では柔軟な永続性制御が実現されていない。
本発明の第1の態様は、永続ストレージに保存するコスト、又は永続ストレージに保存しないことに関連するリスクに関する少なくとも1つの基準の評価に従って、データ処理システム内のデータの永続性を管理する方法を提供する。この評価は、ディスク書き込みが行われる時点で実行することもできるが、データ更新処理中の様々な時点でデータ処理ネットワーク内の様々なポイントで実行することもできる。
本発明は、データを永続ストレージに保存するメッセージング・システム、データベース・システム、ファイル・システム、及び他のデータ処理システム内で実施することができる。本発明の第1の実施形態は、メッセージング・システム内の少なくとも1つの基準の動的評価に従ってメッセージの永続性を管理する方法を提供する。前記評価は、前記メッセージが発信元エンティティによって作成され送信された後に実行される点で動的に実行される。前記方法は、永続ストレージへの保存に関するリソース・コストもしくは性能コスト、又は利益、あるいはその両方に従って、前記メッセージに関するメッセージ・データ又はログ・レコードあるいはその両方を永続ストレージに保存する必要があるかどうかを判定するステップを含む。
この文脈では、特定のメッセージの永続性判定を行うときに検討される永続ストレージへの保存(「永続化」)の利益に関しては、当該特定のメッセージの価値及びメッセージに関するデータの損失リスク及び二重化リスクが考慮に入れられることが好ましい。永続化の利益に関しては、メッセージの損失又はメッセージ配信の二重化あるいはその両方に関する潜在的なコスト、あるいは別の処理操作の二重化に関する潜在的なコストが考慮に入れられることが好ましい。例えば、メッセージの損失「コスト」は、個々のメッセージの重要度に基づくものであっても、定義されたサービス品質要件を満足させるメッセージング・システムの能力に基づくものであってもよい。永続化の「コスト」に関しては、好ましくは現時点の使用可能リソースと、内部永続キューの競合のようなリソース制約とに従って、永続ストレージへの書き込みを実行した場合の影響が考慮に入れられることが好ましい。
永続ストレージに保存すべきかどうかの判定は、メッセージがネットワーク内のローカル・メッセージング・マネージャを介して又はメッセージング・システムのネットワークを介して送信側アプリケーションから受信側のターゲット・アプリケーションに転送されるときに、様々なポイントで実行することができる。例えば、周知のとおり、送信側アプリケーションは「put_message」コマンドを発行して、ローカル・メッセージング・マネージャによって管理されるキュー上にメッセージを配置することができ、ローカル・メッセージング・マネージャ(又は「キュー・マネージャ」)は、当該メッセージをネットワーク内の次のメッセージング・マネージャに転送することができ、当該メッセージがターゲット・アプリケーションのローカル・メッセージング・マネージャに到達するまで、以下同様にメッセージの転送を行うことができる。その後、ターゲット・アプリケーションは、ローカル・メッセージング・マネージャによって保持されるメッセージ・キューからメッセージを取得する。本発明によれば、永続性判定は、該当する通信経路内の各メッセージング・マネージャにおいて実行することができるが、メッセージは、各メッセージング・マネージャに影響を及ぼす動的特性に応じて1つのメッセージング・マネージャにおいて永続化されると、それ以外のメッセージング・マネージャにおいて永続化されることはない。
このように永続ストレージへの書き込みを行うべきかどうかの判定が繰り延べられ、状況に応じてその判定が繰り返されることは、メッセージが作成される時点又はメッセージが最初に送信される時点で永続性の挙動が定義される典型的なメッセージング・システムとは大きく異なる点である。
例えば、メッセージが第1のキュー・マネージャQM1から第2のキュー・マネージャに迅速に移動される場合は、当該メッセージは必ずしもQM1において永続的に保存する必要はない可能性がある。その後、最終使用側アプリケーションが低速又は非アクティブである故にメッセージがある期間にわたってQM2で待機することになる場合は、当該メッセージをQM2において永続化することができる。「ムーバ」(メッセージ・チャネル・エージェントとしても知られる)は、QM1上の伝送キューからQM2上のキューへのメッセージの移動を担当するメッセージ・キュー・マネージャ・コンポーネントである。QM1によって管理されるキューにメッセージが入れられるときにムーバが低速な場合又は非アクティブ状態にある場合は、当該メッセージをQM1において永続化することができる。ムーバがメッセージを最終的に移動する時点で使用側アプリケーションがアクティブ状態となった場合は、当該メッセージをQM2において永続化する必要がなくなる可能性がある。上記の例は、メッセージを永続的に記憶すること又はメッセージに対して実行された操作をログに永続的に記録することが望ましいかどうか、及びそのような処理をいつ行うのが望ましいのかを柔軟且つ動的に判定することから得られ得る効果の単なる例示にすぎない。追加的な例については以下の「発明を実施するための最良の形態」のセクションで説明する。
本発明の一実施形態は、メッセージング・システムを介してメッセージが処理されている間に前記メッセージの永続性を管理する方法であって、データを永続ストレージに保存するコストと、データを永続ストレージに保存しないことに関連するリスクとを表す1組の基準のうちの少なくとも1つの基準を評価して、前記メッセージに関するデータを永続ストレージに保存する必要があるかどうかを判定するステップと、前記評価するステップにおいて永続ストレージへの保存が必要であると判定されたことに応答して、前記メッセージに関するデータを永続ストレージに保存するステップと、を含む方法を提供する。
第2の実施形態は、データベース内のデータの永続性を管理する方法であって、データを永続ストレージに保存するコスト又は利益を表す少なくとも1つの基準を評価して、前記データを永続ストレージに保存する必要があるかどうかを判定するステップと、前記評価するステップにおいて永続ストレージへの保存が必要であると判定されたことに応答して、前記データを永続ストレージに保存するステップと、を含む方法を提供する。前記評価は、特定のデータの挿入、削除、又は更新を対象に実行することができ、あるいは前記データベースに影響を及ぼす1組の操作を対象に実行することができる。
本発明のもう一つの態様は、上述の方法を実施する永続性マネージャを含むデータ処理システム、例えばデータベース・システム又はメッセージング・システムを提供する。本発明の一実施形態に係るデータ処理システムは、揮発性データ・ストアと、不揮発性データ・ストアと、前記揮発性データ・ストア内に保持されているデータベース・テーブルに対してデータ更新を適用するデータベース・マネージャと、データ更新を前記不揮発性データ・ストアに保存する必要があるかどうかを判定する永続性マネージャと、を備える。前記永続性マネージャは、前記不揮発性データ・ストアへの保存のコスト又は利益を表す少なくとも1つの基準を評価して、前記データ更新を前記不揮発性データ・ストアに保存する必要があるかどうかを判定し、その後前記データ更新の前記不揮発性データ・ストアへの保存を開始することによって正判定に応答する。
一実施形態に係るメッセージング・システムは、ランダム・アクセス・メモリのような揮発性データ・ストアと、ディスク・ストレージのような不揮発性データ・ストアと、メッセージ配信を処理するメッセージング・マネージャと、メッセージに関するデータを前記不揮発性データ・ストアに保存する必要があるかどうかを判定する永続性マネージャと、を備える。前記永続性マネージャは、前記不揮発性データ・ストアへの保存のコスト又は利益を表す少なくとも1つの基準を評価して、メッセージに関するデータを前記不揮発性データ・ストアに保存する必要があるかどうかを判定する。前記永続性マネージャは、永続ストレージへの保存に関する現在のリソース・コスト又は利益あるいはその両方に従って、前記メッセージに対する操作が実行された時点又はその後のある時点で上記の判定を動的に実行することができる。前記永続性マネージャは、前記評価するステップにおいて永続ストレージへの保存が必要であると判定されたことに応答して、メッセージに関するデータの前記不揮発性データ・ストアへの保存を開始する。
本発明の一実施形態では、永続ストレージへの保存を行うべきかどうかの前記判定は、ログ書き込みが行われる直前に実行され、その結果、どの操作をログ書き込みに含めるべきかがチェックされる。別の実施形態では、前記判定は非同期警告によってトリガされ、例えば該当するキューを処理している前記アプリケーション・プログラム又はメッセージ・チャネル・エージェントがシャット・ダウンされたことに応答して、又は前記キュー深度がメッセージの閾値数を超えたことに応答して、又はメッセージがキューに入っている時間が閾値のミリ秒数を超過したことに応答してトリガされる。
本発明の第3の態様は、データ処理システム内の操作の実行を制御する1組の命令を備え、上述の方法を実施するコンピュータ・プログラムを提供する。前記コンピュータ・プログラムは、前記1組の命令が記録媒体又はデータ転送媒体上に記録されたコンピュータ・プログラム・コードによって実行されるコンピュータ・プログラム製品として提供されることが好ましい。そのようなコンピュータ・プログラム・コードは、データ通信媒体を介して転送することが可能な形で提供され得る。
以下では例示として、添付図面を参照しながら本発明の諸実施形態についてより詳細に説明する。
本発明は、単一のデータ処理システム内、又は分散データ処理ネットワーク内で実施することができ、新規性ある永続性管理手法を実施することにより、いくつかの既存のデータ処理システムよりも高い柔軟性を提供することができる。以下では、メッセージング・ネットワーク内で使用される本発明の第1の実施形態について説明する。
典型的な分散メッセージング・ネットワークは、通信リンク20を介して接続される複数のデータ処理システム10、15を備える。図1には2つのデータ処理システムが相互接続された単純なネットワークが例示されているが、メッセージング・ネットワークは例えば数百の別個のデータ処理システムを含むことができる。メッセージング・ネットワーク内の各データ処理システム10、15は、コンピュータ・プログラム・コードの形であるいは電子回路を使用したハードウェアの形で実装され得るメッセージング・マネージャ30、35を含む。特定のデータ処理システム10上のメッセージング機能は、業務処理を実行するアプリケーション・プログラム40及び41と統合することもできるが、本実施形態では、アプリケーション・プログラム40、41、45と、メッセージング・マネージャ30、35とは、相互動作する別個のコンピュータ・プログラムである。アプリケーション・プログラム40、41、45は、メッセージング・ネットワークを介して互いに通信することができ、それぞれメッセージング・インターフェース(API)50、55を介してローカル・メッセージング・マネージャ30、35と通信することができる。各メッセージング・マネージャ30、35は、ハードウェア・プロセッサ(図示せず)の処理機能に依存し、それらが実行されるデータ処理システム上のオペレーティング・システム(図示せず)から提供されるサービスに依存する。各メッセージング・マネージャ30、35は、ネットワーク内のシステム間におけるオペレーティング・システムの差異に対応するためにデータ変換を行う必要があれば、そのようなデータ変換を実行する。当業界で周知のとおり、上述したデータ処理システム内の各コンポーネント、ランダム・アクセス・メモリ70、75、ならびに不揮発性ディスク・ストレージ90、95は通信バスを介して接続される。
本発明はいくつかの従来型データ処理システムのハードウェア及びオペレーティング・システム・アーキテクチャに適用可能であるので、本明細書では既知のデータ処理システムの標準的な特徴については詳述しない。
図1のメッセージング・システム・アーキテクチャは、比較的単純なアプリケーション・プログラム開発を容易にし、典型的な異種分散データ処理環境内の多種多様なコンポーネント間の統合及び相互動作に関連する問題の多くを解決する。一般的なメッセージング機能はメッセージング・マネージャ30、35内で実行することができ、アプリケーション・プログラム40、41、45を書くことにより、それぞれメッセージングAPI 50、55を介して各ローカル・メッセージング・マネージャの機能をコールすることができる。IBMコーポレーションのWebSphere MQメッセージング・マネージャのようなメッセージング・マネージャ30、35は、各メッセージング・マネージャによって管理されるメッセージ・キューを利用した非同期メッセージ通信を実現する。
例えば、第1のデータ処理システム10上で実行される第1のアプリケーション・プログラム40は、ローカル・メッセージング・マネージャ30によって管理される伝送キュー100上にメッセージを配置することによってリモート・アプリケーション・プログラム45と通信することができる。ローカル・アプリケーション・プログラム45の伝送キュー100や入力キュー110のようなメッセージ・キューは単純に、対応するメッセージング・マネージャが1つのプログラムから別のプログラムに移行する間にメッセージを保持するために予約するストレージ領域である。図1ではメッセージング・マネージャの要素として概略的に示されているが、メッセージ・キュー100、105、110は、後述するように揮発性ランダム・アクセス・メモリ70、75に保持され、永続性マネージャ80、85の制御下でディスク・ストレージ90、95に固定(harden)される。
通信チャネル25は、第1のシステム10とリモート・システム15との間の通信リンク20を介して1対のメッセージ・チャネル・エージェント(又は「ムーバ(mover)」)60、65間で確立される。ローカル・メッセージング・マネージャは、伝送キュー100内に配置されたメッセージのヘッダーを検査してメッセージを経路指定すべきネットワーク内の次のメッセージング・マネージャを判定し、その後ムーバ60、65は、伝送キュー100から第2のメッセージング・マネージャ35によって管理されるキューへの関連メッセージの転送を担当する。第2のメッセージング・マネージャが宛先メッセージング・マネージャまでの経路上の単なる中間ノードにすぎない場合には、メッセージを次のネットワーク・ノードに転送することができるようになるまで、新しいキューはやはりメッセージの一時レポジトリとして働く伝送キュー100となるが、第2のメッセージング・マネージャが宛先アプリケーション・プログラム45のローカル・メッセージング・マネージャである場合には、そのメッセージを処理するアプリケーション・プログラム45の準備が整ったときに、アプリケーション・プログラム45からサービスされるアプリケーション入力キュー110内に配置される。
メッセージを第1の伝送キュー100上に配置するステップと、当該メッセージをアプリケーション入力キュー110に移動するステップと、アプリケーション・プログラム45が当該メッセージを入力キュー110から取得するステップとは、アプリケーション・プログラム40とアプリケーション・プログラム45との間の永続的な専用接続が必要とならないように非同期的に実行される。図1には示されていないが、第1の送信側システム10からリモートの宛先システム15までのネットワーク内に複数の非同期ホップが存在する可能性もある。
いくつかの既知のメッセージング・システムでは、システム管理者又は送信側アプリケーションの指定に従ってメッセージを永続的に送信することも非永続的に送信することもできる。永続性マネージャ80、85は、通信中のアプリケーション・プログラム又はメッセージング・マネージャから必要とされる(それらのアプリケーション又はメッセージング・マネージャ間で送信されるすべてのメッセージについて必要とされ、又は特定のメッセージについてのみ必要とされる)指定の永続性に従って、メッセージを永続ストア90、95(例えば不揮発性ディスク・ストレージ)に書き込む。永続メッセージは、それ自体が送信側アプリケーションのローカル・メッセージング・マネージャ30によって第1の伝送キュー100上に配置されている場合にはローカル永続ストア90に保存することができ(即ち、第1の伝送キュー100のコピーをディスク・ストレージに保存することができ)、それ自体が伝送キュー100に入れられた場合、ならびにそれ自体が伝送キュー100からアプリケーション入力キュー110に無事移動された場合には、ローカル・ログ・レコードをローカル永続ストア90に書き込むことができる。メッセージがアプリケーション入力キュー110内に配置されている場合には、当該メッセージ及び関連するログ・レコードを第2のシステム15上の第2の永続ストア95に書き込むことができ、当該メッセージがターゲット・アプリケーション・プログラム45によってアプリケーション入力キュー110から取得されたときは、やはりログ・レコードの書き込みを行うことができる。
いくつかのメッセージング・システムでは、システム障害後の復旧を可能にする上でログ・レコードが必要とされるため、ログ・レコードは、メッセージをキューに入れる操作又はメッセージをキューから取得する操作が完了と定義される前に書き込まなければならない。しかしながら、(通常のシステム・シャットダウン時の強制的な遅延書き込みを除いたバックグラウンド・タスクとして)キューの永続コピーの更新を書き込む際に「遅延が生じる(lazily)」こともある。
ログ・レコードが永続的に書き込まれる場合に実現され得るメッセージ配信の復元可能性と、その結果得られる保証されたメッセージ配信の利点があるにも関わらず、そのようなディスク書き込みは性能の大きなボトルネックとなっている。いくつかの既知のシステムは、ログ・レコードがディスクに固定される回数(即ち、put操作、get操作、又は他の更新操作が行われる時点ではなく、分散作業単位がコミットされた時点の永続ストレージに対する書き込み回数)を少なくする分散トランザクションをサポートしている。多数の操作が並列実行されるいくつかの既知のシステムは、複数の操作に関するログ・レコードを単一のバッファ内で組み合わせ、それらのログ・レコードを同時にディスクに強制移動(force)する。これらの特徴は性能の改善に寄与するが、永続性及びログ処理は依然として性能のボトルネックとなる。
提案されている1つのシステムでは、ユーザは所望の永続性ポリシーを指定して、異なるシステム状態に応じて異なる永続性の挙動を設定することができる。しかしながら、永続性の挙動はやはり永続性要件が指定されるときに事前定義されるため、現状への動的な対応ならびに永続ストレージへの保存のコスト及び利益の点で考えると、真の意味での柔軟性は実現されていない。
本発明は、必要とされる永続性を事前定義によって指定する柔軟性の低い操作の制約を回避することにより、柔軟性を大幅に高めることができる。メッセージ価値(message value)ならびに永続ストレージへの保存のコスト及び利益を含めた1組の基準に基づいて行われる、永続ストレージへの保存を行うべきかどうかの繰り延べ判定(deferred determination)を行うことにより、いくつかの永続保存操作を全体的に回避することができる。このようなコスト及び利益の基準は、メッセージが送信側から宛先に運ばれるときに、メッセージング・ネットワーク内の様々なポイントで評価することができる。
以下では図2を参照して、本発明の第1の実施形態に係るメッセージング・システム10について説明する。アプリケーション・プログラム40、41は互いに対話することができ、(メッセージング・マネージャ30を介してネットワーク内の他の場所に配置され得る)他のアプリケーション・プログラムとも対話することができる。メッセージング・マネージャ30は、アプリケーション・プログラムからのAPIコールに応答してネットワーク全体のメッセージ転送を処理し、ローカル・データ処理システム10内の使用可能なネットワーク通信機能及びオペレーティング・システム機能を利用する。図2にはメッセージング・ローカル・アプリケーション・プログラムであるAPI 50及びメッセージング・マネージャ30が概略的に示されている。図2には揮発性ランダム・アクセス・メモリ70及び不揮発性ディスク・ストレージ90も概略的に示されている。
アプリケーション・プログラムがメッセージを作成するときに、当該メッセージと永続性属性との関連付けが行われる。当業界で知られるように、永続性属性としては「永続」又は「非永続」を指定することができ、メッセージが配置されるキューのキュー定義に基づいて永続性を選択することが指定される第3のオプションを指定することもできる。永続性属性は(アプリケーション又はメッセージが配置されるキューに関するデフォルトのメッセージ記述子設定を使用して)各メッセージ毎に矛盾なく自動的に設定することができ、また、アプリケーション・プログラムは任意選択でメッセージ記述子内の永続性フィールドを使用して個々のメッセージを「永続」又は「非永続」として指定することもできる。典型的なメッセージング・システムでは、「永続」メッセージについては永続ストレージに保存する必要があるが、「非永続」メッセージについてはそれ自体の損失(即ち、偶発的なメッセージ損失)がアプリケーションによって許容され得るので、永続ストレージに保存する必要はない。それ故、アプリケーションによって指定される永続性属性が典型的なメッセージング・システムのその後の挙動を決定する。メッセージの取得及び読み出しを行うプログラムは、永続性属性にアクセスすることができ、それ自体が応答すべきメッセージと同一の永続性を有する応答メッセージが送信されることを保証することができる。
いくつかの既知のメッセージング・システムにおいて、メッセージは2つの異なる部分、即ち、メッセージ・コンテンツ又はメッセージ・ペイロードと呼ばれることが多いアプリケーション固有データと、メッセージ記述子(message descriptor:MQMD)及び他の構造化フィールドを含むメッセージ・ヘッダーと、から成る。アプリケーション固有データは何らかの特定のデータ・タイプに限定されるわけではなく、例えば文字列、バイト列、2進整数、浮動小数点数等を含むことができる。構造化フィールドは、メッセージを作成したメッセージング・マネージャ30のバージョン番号、メッセージを時系列順に処理するクロック値、データ長、場合によっては有効期限間隔等の情報も含むメッセージの記述を保持する。メッセージ記述子は、送信側アプリケーション・プログラム40からメッセージング・マネージャ30に受け渡され、その後メッセージング・マネージャ30から受信側アプリケーション・プログラム45に受け渡される。メッセージ記述子は、送信側アプリケーション・プログラムの要求に応じて永続性属性(「MQMD.persistence」)及び優先度属性(「MQMD.priority」)を含むことができる。優先度属性は、送信側アプリケーションがメッセージの緊急度を示すことを可能にするために提供され、優先度値は、メッセージング・マネージャがメッセージ・キュー内のメッセージの順序を決定する際に考慮に入れることができる。ただし、宛先キューは先入れ先出し(FIFO)キューとして定義することもでき、その場合には優先度属性が無視されることもある。
上述のように、本発明はより制約の少ない永続性管理手法を実施するものであるが、本発明の実施形態の中には上述の優先度属性を利用するものもある。第1の実施形態において、優先度属性は、(上述の非永続メッセージに関する従来の処理のように)メッセージを常に非永続的に処理すべきかどうかを示し、また、永続ストレージへの保存の利益によってコストが正当化される場合はメッセージを永続的に処理すべきかどうかを示す。送信側アプリケーションによって「永続」のラベルが付されたメッセージについては、メッセージの発信元から当該メッセージが送信された後に永続性の判定が行われる。このような「公称永続(nominally−persistent)」メッセージに関するコスト/利益の繰り延べ比較(deferred cost/benefit comparison)は、メッセージが送信された後にメッセージング・システム内の動的基準の評価に基づいて永続性の判定が行われない従来の解決策とは異なるものである。本発明の本実施形態において、「公称永続」メッセージは、常に永続的に保存されるのではなく、メッセージの処理中にメッセージング・システムによって評価される1組の基準(即ち少なくとも1つの基準)によってそのことが正当化されたときにだけ永続ストレージに保存される。
送信側アプリケーション・プログラム40は、アプリケーション固有のメッセージ・データ及びメッセージ記述子を指定することによって新しいメッセージをキューに入れる。メッセージ記述子は、ターゲット・メッセージ・キュー及びターゲット・メッセージング・マネージャ35を識別し、メッセージを追加すべき第1のメッセージ・キューを識別するのに使用される記述子である。当該第1のメッセージ・キューからターゲット・アプリケーション・プログラムへのメッセージ転送は、複数のメッセージング・マネージャから成るネットワークによって処理される(同一のデータ処理装置上で2つのアプリケーションが実行される限定的なシナリオでは、単一のメッセージング・マネージャがアプリケーション間の通信をサポートすることができるが、多くのシナリオでは、複数のメッセージング・マネージャから成る分散ネットワークによって分散物理ネットワーク全体の非同期メッセージ転送がサポートされる)。
メッセージング・マネージャ又は受信側アプリケーション・プログラムがそれぞれ伝送キュー又はアプリケーション入力キューからメッセージを取得するときに、メッセージング・マネージャ又は受信側アプリケーション・プログラムは、取得すべきメッセージに関するいくつかの情報を指定し、当該メッセージを配置すべきバッファ・ストレージの空き領域(及び当該バッファ・ストレージの空き領域の長さ)を指定する。メッセージを取得するメッセージング・マネージャは、指定された優先度属性に従って当該メッセージを処理する。
本発明の第1の例示的な実施形態では、メッセージの順序付けを簡略化し、故障イベント時の効率的な復旧処理を可能にするために、非永続メッセージ及び「公称永続」メッセージは単一のメッセージ・キュー内の別個のページ・セット120、130内に配置される。このような解決策は、永続ストレージへの保存のコスト又は利益あるいはその両方と無関係に後の永続性の挙動が優先度属性によって決定される点を除いて、米国特許第5,452,430号に記載されるとおりである。本実施形態では、非永続メッセージに割り振られたページ・セットに保持されるメッセージについては永続的な保存が企図されていないが、公称永続メッセージに割り当てられたページ・セットに保持されるメッセージについては不揮発性ディスク・ストレージへの書き込みがスケジューリングされる。データを実際にディスク・ストレージに書き込む前に、永続性のコスト要因及び利益要因の評価が行われる。
永続性のコスト及び利益の評価は様々なタイミングで行うことができ、いくつかの要因を考慮に入れることができる。まず、この評価は、メッセージがメッセージング・ネットワーク内を移動している間にメッセージング・マネージャによって最初にキューに書き込まれるときに、メッセージング・マネージャによって実行され得る。これにより、重要なメッセージを直ちに永続ストレージに保存することが可能となる。この評価の性能のプロンプトが出される他の「トリガ・イベント」は、所与のキューが閾値サイズに達した時点や、個々のメッセージが閾値期間キューに入れられた時点等、メッセージング・システム内の各イベントに基づいて発生させることができる。この評価はログの操作によってトリガすることもでき、例えばミリ秒単位でログ・バッファへの強制移動を行うというシステム認識を利用して、追加的な操作を非常に低いオーバーヘッドで同時にログに記録し得ることを判定することができる。この場合では、特定のログ・レコードの永続化に関連するリソース・コストが低いことが識別されると、ログ・レコードは通常より早い段階でディスクに書き込むことが可能となる。他の「トリガ・イベント」としては、例えば直後のシステム・シャットダウン又は潜在的なシステム障害の警告がメッセージング・マネージャに出されるシステム・イベントを挙げることができる。後者の例は、ディスク・ストレージ・サブシステムによって不良セクタの書き込みパターンが検出された場合に検出することができる。
このような「トリガ・イベント」と、永続ストレージへの保存のコスト及び利益の評価に関する閾値とは、各メッセージに応じて動的に定めることができる。例えば、メッセージが最初にキューに入れられるときにメッセージング・マネージャによって行われる評価では、メッセージが非常に重要なものであるが直ちに書き込むほど重要なメッセージではないことが判定されることもある。その後、このような初期評価では当該特定のメッセージに関するトリガ・イベントとして短い期間が設定されることになる。この期間が満了(即ち「トリガ・イベント」が発生)したときは、それ以上評価を行うことなくメッセージをディスクに強制移動することができ、あるいは第2の評価を行うことができる。
初期評価においては「メッセージ価値」(後述)又は他のデータの判定といった重要な処理が行われる可能性があるので、本発明の第1の実施形態では、最初の評価で収集されたデータがネットワークを介して送られ、同一のメッセージに関して行われる後続の評価で再利用される。一実施形態において、メッセージング・マネージャ間でメッセージを受け渡すのに使用される通信プロトコルは、相互接続されたメッセージング・マネージャ間で計算されたメッセージ価値をメッセージと共に受け渡し、永続性を効率的に評価することができるように機能拡張される。他の実施形態において、メッセージングAPIは、例えば(以下で詳述する)メッセージ・ヘッダーの追加フィールド内でメッセージ価値を指定することができるように機能拡張される。
各メッセージング・マネージャ30において、データ・コレクタ・コンポーネント140は、ローカル・システム上で保持されるメッセージに関するコスト及び利益の評価で使用されるメッセージ価値と、より一般的なメッセージ処理統計情報とを含む一連のメッセージ固有データを維持する。1組のルールがルール・レポジトリ150内で保持され、永続性マネージャ80の評価コンポーネント160によって収集データに適用される。コレクタ・コンポーネント140は、メッセージング・マネージャ30内の処理性能及びデータ構造の分析から様々な情報を得た後、それらの情報を用いて1組のデータベース・テーブルを更新する。
メッセージ価値は、いくつかの手法のうちの1つを利用してメッセージング・マネージャによって判定され得る。例えば、メッセージ価値は、メッセージ・タイプに基づいて、メッセージが配置されるキューに関連するルールに従って計算することができる。別法として、(例えば、通信中のアプリケーション・プログラムが資金移動処理を行っている場合)メッセージ価値は受信側メッセージング・マネージャがメッセージ・コンテンツを分析することによって、あるいはメッセージ・ヘッダー内のメッセージ価値フィールドを参照することによって判定することができる。後者の例の解決策は、メッセージ価値が送信側アプリケーションによってメッセージングAPI(後述)を介して指定される本発明の実施形態、及びメッセージ価値が送信側アプリケーションのローカル・メッセージング・マネージャによって一度だけ計算される本発明の実施形態に適用することができる。
サービス指向アーキテクチャ(SOA)等より高次のアーキテクチャでは一般に、キューと、当該キュー上に配置されるメッセージとして許可されるメッセージ・タイプと、それらのタイプのメッセージのフォーマットと、メッセージ及びそれらの処理に関する他の意味情報(semantic information)との間の関連付けを保持するアーキテクチャがシステムに実装される。本発明のSOA実装では、意味情報はメッセージ価値(又はそのような価値を計算するSOA実装ルール内のコンポーネント)を含む。この情報は、メッセージングAPIの明示的なプログラミングを必要としないより高次の意味コンポーネントによってメッセージング・マネージャに通信される。メッセージング・マネージャは、そのようなメッセージ価値がメッセージングAPIを介して直接提供されたかどうか、あるいはそのようなメッセージ価値がより高次のSOAシステムを介して決定されたかどうかを必ずしも認識している必要はない。
より原始的なシステムでは、メッセージの意味を理解しメッセージ価値を抽出あるいは導出することが可能なAPI交差出口(API crossing exit)を利用することによって同様の効果を達成することができる。この場合も、アプリケーションのプログラマが明示的なAPIコードを書き込む必要なしに「messageValue」がメッセージング・システムに送信される。また、メッセージング・システムがメッセージ価値の情報源を認識していなくてもよい。
(いくつかの既知のメッセージング・システムの場合と同様に)キュー深度も監視され、当該データがデータ・コレクタ・コンポーネント140に提供される。また、メッセージがキュー内に残っている時間と、キュー内に保持されているアイテムの合計データ・サイズとが監視される(また、既知のメッセージング・システムでは明示的な監視を行われなくてもそうした情報が既に利用可能であるため、そのような監視に伴うオーバーヘッドはほとんど存在しない)。更に、キューからのメッセージの読み出しレート、及びメッセージがキュー内に残る典型的な時間と共に、キューの先頭に達する予想時間等より高度な統計ベースの推定値を監視することができる。既知のシステムでしばしば監視される別のシステム特性としてはCPUのオーバーヘッドが挙げられるが、非常に高いCPU負荷がシステム障害と相関を有することが多いことから、そのようなデータは永続性評価にとって重要である可能性がある。また、いくつかのプログラムは他のプログラムに悪影響を及ぼすことが知られており、この事実を永続保存操作を実行すべきか否かを判定する際に考慮することができる。
第1の例示的な実施形態では、メッセージング・マネージャ30はそれ自体の内部メッセージ処理レートを監視し、1秒間にキューから読み出されるメッセージ数を表す値をコレクタ・コンポーネント140に提供する。コレクタ・コンポーネント140は、指数平滑化アルゴリズムをメッセージの読み出しレートに適用してデータベースに保存される値(「messageProcessingRate」)を生成する。コレクタ・コンポーネント140は、各メッセージのメッセージ・キュー内の位置(positionInQueue)も監視する。この「positionInQueue」の値は、メッセージがキューに追加されるときに判定され、後で更新することができる。
メッセージング・マネージャのコレクタ・コンポーネント140は、メッセージング・マネージャ、オペレーティング・システム、又はデータ処理システムのハードウェアに関するすべての障害を含む障害間隔時間に関する統計平均(「meanTimeToFailure」)も生成する。他の統計値(ディスク書き込みエラー等、既存のシステム管理製品によって既に監視がなされているものもある)、ならびに発生し得るシステム障害と関連性を有する雷雨、電力供給の信頼性、地震リスク等の外部要因も、同様に使用することができる。
コレクタ・コンポーネント140は、メッセージング・システムの現在の負荷を表す値(「load」)と、メッセージング・システムの平均負荷を表す統計値(「avgLoad」)と、1秒間に永続メッセージがディスクに書き込まれる平均回数「persistPerSec」)とを(メッセージング・マネージャ30又はオペレーティング・システムから)取得する。
あるメッセージをキューの先頭から取得した後、当該メッセージの処理に費やした時間を表す1つ又は複数の「timeInProcess」値を維持することができる。例えば、現在のメッセージング・マネージャ30がターゲット・アプリケーション・プログラムの入力キューを管理するターゲット・メッセージング・マネージャである場合には、「timeInProcess」は、ローカル・アプリケーションが「get_message」コールを発行することによって上記メッセージを取得した時点からメッセージ取得操作がコミットされるまでの時間となる。メッセージング・マネージャが送信側アプリケーションのメッセージング・マネージャとターゲット宛先アプリケーションのメッセージング・マネージャとの間の中間処理ノードである場合には、「timeInProcess」は、メッセージが(当初の配置場所である)ローカル伝送キューの先頭から取得された時点から当該メッセージを別のノードに転送するメッセージ転送操作がコミットされるまでの時間となる。
データベースを上述のデータで更新した後、それらのデータは、永続性マネージャ80の評価コンポーネント160がルール・レポジトリ150内に保持されている1組のルールを適用することによって処理することができる。評価コンポーネントは、「positionInQueue」及び「messageProcessingRate」の値を処理してメッセージがメッセージ・キューの先頭に達する推定時間(「timeToHeadOfQueue」)を計算する。
timeToHeadOfQueue =positionInQueue / messageProcessingRate
評価コンポーネントは、メッセージがメッセージング・マネージャによって保持される時間の推定値(「timeHeld」)も計算する。
timeHeld = timeToHeadOfQueue +timeInProcess
特定のメッセージの推定損失リスクは、メッセージの保持時間と平均障害間隔時間とに従って計算される。
riskOfLoss = min(1, timeHeld /meanTimeToFailure)
メッセージの損失リスクに関するこのような推定値の評価は、後に永続ストレージへの保存を行うべきか否かを判定する際に使用することができる。永続性マネージャ80の評価コンポーネント160による上記の予備評価ステップの時点ではまだメッセージ価値の検討は行われず、特定のメッセージの損失リスクが考慮に入れられる。本発明のいくつかの実施形態ではメッセージ価値を検討せずにメッセージの損失リスクが評価され、必要とされる永続性が判定されるが、好ましい解決策では、個々のメッセージ価値に基づいてメッセージの損失コストが単なる検討要素として、あるいはメッセージ性能の統計値又はリソース・コストの検討事項と組み合わせて評価される。このように、メッセージの損失コストを表す値は、メッセージの損失リスクを表す値及びシステム・リソースの需要に関する追加的な基準と組み合わせることができ、その一例を以下に示す。
riskCost = messageValue *riskOfLoss
「persistenceCost」値は、「riskCost」が「persistenceCost」を上回ったときにデータを永続ストレージに保存すべきと判断された場合に、「load」値及び「avgLoad」値ならびに「persistPerSec」値に従って計算することができる。この「persistenceCost」は、データを永続ストレージに保存するのに必要とされるリソースに基づく値とすることができ、また、システム性能の永続化効果の推定値を計算し、この推定値を使用して永続性判定に影響を与えることができる。
if (riskCost >persistenceCost) then persistence=true
if (riskCost <persistenceCost) then persistence=false
この永続性判定は、メッセージング・システムが特定の顧客のメッセージング・アプリケーションで規定されるサービス品質要件に従って、性能と、保証された1回限りのメッセージ配信のどちらを優先する必要があるのかに基づいて行うことができる。
上述したような単純なルールであっても、これを実装することでメッセージ処理システムの費用対効果を改善することが可能である。上記のルールは動作性を実証し、本発明の動的な諸原理がどのように具現化され得るかを実証するものであるが、他の多くの代替ルールを使用して永続性を決定することができることも理解していただきたい。そのようなルールは、永続性マネージャが使用可能な情報に応じて上記の例よりも複雑なものとなる可能性がある。
図3は、本発明の一実施形態に係る永続性マネージャ80のコレクタ・コンポーネント140及び評価コンポーネント160に関する更なる詳細の一部を示している。コンポーネント141は、キュー深度及び各メッセージのキュー内の位置ならびに個々のメッセージング・マネージャの内部メッセージ処理レートを含めたメッセージング・マネージャ自体から提供される情報のコレクタである。コレクタ・コンポーネント140は、例えばシステム負荷に関するデータ、障害までの推定平均時間、検出されたディスク書き込みエラーに関する情報等を提供する別個の外部コレクタ・コンポーネント142も含む。コンポーネント141及び142はいずれも、それぞれのデータを評価コンポーネント160の評価処理コンポーネント162によって使用される監視データのソースとなるコレクタ・データベース143に提供する。評価コンポーネント160は、内部コレクタ・コンポーネント141及び外部コレクタ・コンポーネント142によって生成される各イベントに応答し、永続書き込みに関連する設定期間の満了に応答するトリガ・コンポーネント161も含む。ルール・レポジトリ150は、(i)メッセージング・マネージャの動作に特有の条件に関するルール、及び(ii)メッセージング・マネージャの内部動作と独立したデータ処理システム内部の条件に関するルールのうちの一方又は両方を含むことができる。図2及び図3ではメッセージング・マネージャ30の内部コンポーネントとして示されているが、永続性マネージャ80のコンポーネントの一部又は全部は、メッセージング・マネージャ30と別個のコンポーネントであるがメッセージング・マネージャ30と協働するデータ処理システム10内の1つ又は複数のコンポーネントとして実装することもできる。
ここで、電話交換器が顧客の請求書として送るべき通話記録を発行する電話使用料金計算の応用例について検討する。通話記録の多くは数セントにすぎず、現実的な価値のない通話記録もある一方、相当額(例えば50セント又は1ドル)に達する通話記録もあり、通話記録の何割かは数ドル程度掛かっているものもある。請求書の応用例では高価値の通話記録を見過ごすべきでなく、それらは常に永続的に処理されることになるが、閾値(例えば1セント又は10セント)未満の記録については、それらを永続的に取り扱うコストを正当化するほどの価値が見出せないこともある。信頼性の高いデータ処理システムではエラー及び障害が発生する頻度は相対的に低くなり、いくつかの低価値の通話記録の損失は処理性能の向上のために許容され得る。中価値の通話記録は公称永続として取り扱うことができるが、性能コストがメッセージ損失の推定リスクによって正当化される場合にのみ永続ストレージに保存される。
他の応用例では、永続化のコスト及び利益に関連する基準の評価に基づいてデータを永続的に保存すべきかどうかを判定する処理は、すべてのデータ項目に適用することも、高価値の項目にだけ適用することも(他の項目は非永続として取り扱われる)、低価値の項目にだけ適用することもできる(他の項目は永続的に取り扱われる)。
例えば1セントの通話の場合を考えると、第1の「messageValue」は「1.0」となる。ここで、メッセージ処理レートを1000メッセージ/秒、平均「timeInProcess」を0.2秒、平均障害レートを10日に1回と仮定する。次式のとおり、メッセージはキュー上の40番目のメッセージとして追加されるものと仮定する。
Figure 0005084827
上式で、persistenceCost = 3.17e-7 (riskCost < persistenceCost)であれば、メッセージは永続的に保存されない。
一方、10セントの通話であれば以下のようになるため、永続的に記録される。
riskCost = 10 * 2.78e-7 =0.00000278 > 3.17e-7
riskCost > persistenceCost
典型的なシステムでは、「persistenceCost」は一定の値をとらないことに留意していただきたい。例えば、バッファ内に保持されているすべてのログ・レコードを対象とするディスク書き込みが行われる時点で、新しいメッセーメッセージの単一のログ・レコードに関連する「persistenceCost」は、同時に書き込むべきデータが他に存在しないときに実行されたディスク書き込みの直後に得られる「persistenceCost」と比較して、非常に低い値をとることになる。
電話料金の例では、メッセージ配信の障害の事業コストは通話コストと非常に近くなる可能性がある(各自の通話の正確な記録を求める顧客もいるため、場合によってはそれより高くなることもある)。二重配信の事業コストの方が定量化は容易であるが、メッセージング・システム外部のシステム機能を使用して二重化が検出される可能性があり、その場合には、二重化の解消が事業コストではなく処理コストと見なされる可能性がある(多くの場合、顧客は値下げよりも二重課金の方に強い抵抗を示すはずである)。また、メッセージングの既知の解決策では、メッセージの読み出し/削除に関する記録が慎重に処理され、返却される受信確認も慎重に処理される。したがって、本明細書では主に二重化ではなくメッセージ配信の障害のリスク及び関連するコストに焦点が当てられているが、本発明は二重配信のコストの評価にも適用可能である。
上述したように、メッセージは、「riskCost」の計算に基づいて「永続キュー(persistence queue)」(永続ストレージへの保存が企図される項目から成るキュー)上に配置することができる。一実施形態では、この「riskCost」と各メッセージのキュー内の位置とを周期的に再計算することも、顧客アプリケーションの開始や停止等のイベントに応答して再計算することもできる。高価値のメッセージはキューの先頭に移動して迅速に永続化することができる一方、低価値のメッセージの永続化は、最も価値の低いメッセージが永続化前に処理されるように、高価値のメッセージの永続化よりも遅延させることができる。
上記の例示的なルール及び通話料金に関する具体例は、データを永続的に保存すべきか否かの判定に適用され得る検討事項の単なる例にすぎない。障害予測の知識、及びキュー深度やCPU負荷のような統計値の知識、あるいはメッセージ・サイズのようなパラメータの知識を考慮に入れることが、特定のシステムの永続性のボトルネックによって正当化されるかどうかに従って、様々なレベルの複雑さを伴う様々な代替ルールを適用することができる。
当業者ならこのようなルールの様々な変形形態に想到するはずであるが、永続ストレージへの保存のコスト及び利益に関する動的な基準の評価に基づいてデータを永続ストレージに保存すべきかどうかを判定することは、永続性の挙動が事前定義される従来の解決策から脱却するものである。上述の諸実施形態によれば、いくつかの永続保存操作を省略することが可能となり、その結果、永続ストレージへの保存が必要ないことが判定された場合にログ及びメッセージ・キューがディスク・ストレージに書き込まれることに関連する性能のボトルネックを低減することが可能となる。
ここで、メッセージング・システムにおける本発明の適用可能性及び潜在的な利益を更に提示するために、いくつかの例示的なシナリオについて説明する。例えば、あるメッセージ・キューの処理がアクティブ状態の顧客(又は上述のムーバ)によって迅速に行われる場合、上述の永続性判定では、当該キューに追加されるメッセージを永続的に保存する必要はないことが判定される可能性がある。一方、例えばその顧客が使用している別のリソースの障害が原因でシャット・ダウンが行われる場合には、別の永続性判定が行われることによって異なる結果が得られる可能性もある。上記の例示的な公式を使用すると、メッセージがキュー上に残り得る時間が長くなり、その結果riskOfLossが増加するため、riskCostが高くなり、キュー上のメッセージが永続的に保存される傾向も高くなる。このような永続化の判断は新しく到着したメッセージだけを対象に適用することも、すべての待機メッセージを対象に遡及的に適用することもできる。
本例を説明するために、初期プロデューサが第1のメッセージング・マネージャQM1を介してメッセージを送信し、その後第1のメッセージング・マネージャQM1がムーバを使用してメッセージを第2のメッセージング・マネージャQM2に転送し、第2のメッセージング・マネージャQM2がメッセージをエンキューし、最終顧客がそこからメッセージを取得する、メッセージング・ネットワークについて検討する。典型的なメッセージを初期プロデューサからQM1に、その後QM1からQM2へと迅速に移動することができても、最終顧客が低速な場合又は非アクティブ状態にある場合は、メッセージがQM1で永続化されない可能性があるが、QM2で永続化される可能性がある。また、メッセージがプットされる時点でムーバが低速な場合又は非アクティブ状態にある場合は、メッセージがQM1で永続化される可能性がある。ムーバが最終的にメッセージを移動する時点で顧客が既にアクティブ状態にある場合は、メッセージはQM2で永続化されない可能性がある。
メッセージ価値が非常に低い場合にはどちらのメッセージング・マネージャでも永続化を行う必要はないが、メッセージ価値が非常に高い場合には両方のメッセージング・マネージャで永続化が行われることになる。高価値のメッセージは永続キューの先頭に移動され、永続化前に処理される傾向がある低価値のメッセージと比較すると、非常に迅速に永続化され得る。
上述のように、本発明のいくつかの実施形態を用いると、メッセージングAPIを介してメッセージ価値を指定することが可能となる。上記の説明では、(例えば新しいメッセージ・ヘッダー・フィールド「MQMD.messageValue」で指定された)メッセージ価値が、「PERSISTENT」、「NON_PERSISTENT」、及び「PERSISTENCE_AS_Q_DEF」の3つのオプションのうちの1つを指定した永続性属性(「MQMD.persistence」)と組み合わせて使用される、第1の実施形態が示されている。上記の説明では、「NON_PERSISTENT」メッセージが従来どおり処理されるように説明されており、他のメッセージを評価してそれぞれの「公称永続」状態を無視することが状況に応じて正当化されるかどうかが判定されている。別の実施形態では、メッセージング・システムは、メッセージ価値を得るために永続性属性(「MQMD.persistence」)に関連するメッセージの固定メッセージ・ヘッダー(MQMD)内の追加フィールドを提供する一方、新しい永続性属性オプション「PERSISTENCE_BY_VALUE」も可能にする。ここで、メッセージ送信側のアプリケーション・プログラムは、次のメッセージ価値のうちの1つを指定することができる。
「PERSISTENT」
「NON_PERSISTENT」
「PERSISTENCE_AS_Q_DEF」
「PERSISTENCE_BY_VALUE」
メッセージ価値フィールドは、セントを単位とする32ビットの整数又は32ビットの浮動小数点数とすることができ、また、フィールドが設定されていないことを示す「1」等のデフォルト値を有することができる。
別の実施形態では、既知の「PERSISTENCE_AS_Q_DEF」属性値は、最終顧客アプリケーションの入力キューにある限りメッセージング・ネットワークを介して受け渡すことができる。この属性値には、発信元のメッセージング・マネージャ及び他のメッセージング・マネージャが本発明に係る永続性評価及び永続性判定を実行することによって応答することができる。
他の実施形態では、メッセージ価値を既存の永続性属性に追加する代わりに、APIを介して指定されたメッセージ価値に基づいて、すべてのメッセージの永続性判定を行うことができる。
上記では、永続ストレージへの一部の書き込みを回避することによってメッセージの永続化又は他のデータ更新のオーバーヘッドを低減することが望ましい応用例及びシステムの文脈で本発明が説明されてきたことに留意していただきたい。代替的な解決策では、メッセージ送信者の「永続性」指定が絶対要件として取り扱われるが、評価された基準によってそうすることが妥当であると判定された場合には、「非永続」として指定された重要なメッセージであっても、永続メッセージ処理の利益を享受することが可能となる。例えば、実際のシステム障害が検出された後、又はいくつかの条件によってシステム障害のリスクが示された後は、非常に高い価値を有するメッセージあるいはすべてのメッセージをある期間にわたって永続的に処理することができる。
図4乃至図6は、本発明の一実施形態に係る方法の各ステップを簡略的に示している。図4に示されるように、この方法は、第1のアプリケーション・プログラム40がメッセージ・ペイロードと、送信者、ターゲット・メッセージング・マネージャ及びメッセージ・キューのID、ならびに1組の属性に関する情報を含むメッセージ・ヘッダーとを用いてメッセージを作成するステップ200から開始する。この第1の実施形態では、送信側アプリケーションが以下の永続性属性、即ち「PERSISTENT」、「NON_PERSISTENT」、又は「PERSISTENCE_AS_Q_DEF」のうちの1つを指定する。送信側アプリケーションは「put_message」コマンドを発行して、ローカル・メッセージング・マネージャ30によって管理されるメッセージ・キューにメッセージを配置する。ローカル・メッセージング・マネージャ30は、ターゲット・メッセージング・マネージャのIDに基づいて(永続メッセージ及び非永続メッセージが1つのキュー又は別個のキュー内の別個のページ・セットにエンキューされる一実施形態では永続性属性に基づいて)メッセージを配置するのに適したローカル・キューを識別する。ローカル・キューがリモート・ターゲット・キューまでの経路上の中間伝送キューに該当する場合には、その後、ローカル・メッセージング・マネージャのムーバ・コンポーネントは、場合によっては複数の中間メッセージング・マネージャを介して、リモート・メッセージング・マネージャに転送するメッセージを(非同期的に)取得する(220)。一方、メッセージはローカル・キュー・マネージャ30が管理するキュー上に保持されるので、ローカルの永続性マネージャ80は、メッセージ及び当該メッセージに関するログ・データを永続ストレージに保存すべきかどうかを判定する必要がある(230)。この判定は周期的に又はトリガ条件に応答して実行される。先述のように、例示的なトリガ条件としては、メッセージがキュー上に配置されることやシステム問題の検出等のイベント、あるいはキュー深度がメッセージの閾値数に達すること等の条件が挙げられる。永続ストレージへの保存が必要であることが永続性マネージャによって判定された場合には、保存操作が直ちに実行される(240)(他の実施形態では、ディスク書き込み命令自体が優先度順にエンキューされる)。永続ストレージへの保存が現時点で必要ないことが永続性マネージャによって判定された場合には、永続性マネージャは、キュー上に残されたすべてのメッセージを対象とする次回の評価及び永続性判定のためのタイマを設定することができる(250)。図4に示される各方法ステップの更なる詳細は先に説明したとおりである。
図5は、メッセージの発信元のシステム以外のデータ処理システムにおいて、メッセージング・マネージャ及び永続性マネージャによって実行されるステップを示している。メッセージング・マネージャは、別のメッセージング・マネージャからメッセージを受信し(300)、当該メッセージのメッセージ・ヘッダー及び他のデータ・フィールドを読み出してターゲット・メッセージング・マネージャ及びターゲット・キューを識別し、優先度や指定された永続性等のメッセージ属性を識別する(310)。その後、メッセージに対して図4と同様の処理が実行され、ムーバ又はローカル・アプリケーション・プログラムによってメッセージが取得され(320)、永続性マネージャによってメッセージの永続化のコスト及び利益が評価され(330)、その後ディスク書き込みが開始され(340)、又はタイマが経過するまで永続化が繰り延べられる(deferral)(350)。
図6は、発信元のメッセージング・システムによって実行される本発明の別の実施形態に係る方法の各ステップを示している。図6においても、送信側アプリケーション・プログラムがメッセージを作成し、ターゲット・メッセージング・マネージャ及びキューを識別する「put_message」コマンドを発行する(400)。ただし、送信側アプリケーションは永続性属性を明示的に指定する代わりに、メッセージ・ヘッダー内でメッセージ価値を指定する(400)。ローカル・メッセージング・マネージャ30は、メッセージ・ヘッダーを読み出してどのローカル・キュー上にメッセージを配置すべきかを判定し、その判定に従ってメッセージをエンキューする(410)。本実施形態では、価値の異なるメッセージが同一のキューに保存される。ターゲット・キューがローカル・キュー・マネージャによって管理されないものと仮定すると、その後、ローカル・メッセージング・マネージャ内のムーバがメッセージを取得し(420)、当該メッセージをターゲット・メッセージング・マネージャまでの経路上に所在する次のメッセージング・マネージャに送信する。メッセージが到着する任意のメッセージング・システムで永続性判定を実行することができるようにメッセージと共にメッセージ価値も転送される。メッセージがローカルで保持されている間、ローカルの永続性マネージャ80は当該メッセージをローカルの永続ストレージ90に保存すべきかどうかを判定する必要がある。永続性マネージャは、それ自体のキュー上のメッセージに関するヘッダー情報を読み出し、永続ストレージへの保存のコスト及び利益の評価を実行する(430)。上述のように、この評価では永続的に保存する利益を評価する際に、所与のメッセージ価値に関するメッセージの損失又は二重化の事業コストやメッセージ損失のリスク等のメッセージ価値が考慮に入れられる。その後、上述のように、永続性マネージャはディスク書き込みを開始することができ、あるいは次回の評価のためのタイマを設定することができる。
図7は、データベース更新の永続記憶を管理する本発明の別の実施形態に係るコンポーネントを示すデータベース・システムの図である。図7では、プロセッサ500、入出力コンポーネント510、揮発性ランダム・アクセス・メモリ(RAM)520、不揮発性ディスク・ストレージ・システム530、データベース・マネージャ540、及び永続性マネージャ550を含めた本システムの様々なコンポーネントがシステム・バス560を介して接続されている。永続性マネージャ550は、データ・コレクタ・コンポーネント551、トリガ・コンポーネント552、ルール・レポジトリ553、及び評価コンポーネント554を備える。データベース・マネージャ540は、RAM 520内に保持される1組のデータベース・テーブル570を管理し、データベース570との間のデータ更新(追加、削除、及び更新)の読み出し及び書き込みを実行する。データ・コレクタ・コンポーネント551は、データ更新を検出し、当該データ更新に関する情報及びデータベース・システム内の状態に関する他の情報をRAM 520内の第2のデータベース580に保存する。トリガ・コンポーネント552によって識別されたトリガ条件に応答して、評価コンポーネント554は、ルール・レポジトリ553から取得されるルールを第2のデータベース580内に保持されているデータに適用して、永続ストレージへの保存のコスト及び利益を評価する。この評価は、データ更新を不揮発性データ・ストア530内のデータベース570の永続レプリカ590に保存すべきかどうかを判定する際に使用される。ディスク・ストレージのような不揮発性ストレージへのデータ書き込みは、評価の結果永続保存が必要であるという正判定が得られた場合にだけ実行されるので、上記の実施形態は、低価値のデータ項目に関する低オーバーヘッドの(高性能が実現され得る)記憶に適したデータベース・システムを提供する。
当業界で知られる単純な分散メッセージング・システムの概略図である。 本発明を実施することが可能なメッセージング・システムと、互いに協働して本発明の一実施形態に係る永続性管理を実現するシステム・コンポーネントとを概略的に示す図である。 図2の実施形態に係るメッセージング・システム内のいくつかのコンポーネントを詳細に示す図である。 本発明の一実施形態に係る永続性を管理する方法の各ステップを簡略化して示すフロー図である。 本発明の一実施形態に係る永続性を管理する方法の各ステップを簡略化して示すフロー図である。 本発明の別の実施形態に係る方法の各ステップを簡略化して示すフロー図である。 本発明の別の実施形態に係るデータベース管理システムの概略図である。

Claims (20)

  1. データ処理装置であって、
    プロセッサと、
    揮発性データ・ストアと、
    不揮発性データ・ストアと
    を備えており
    前記プロセッサに、前記不揮発性データ・ストアへのデータの保存を管理する方法の各ステップを実行させる永続性マネージャを前記揮発性データ・ストア上に備えており、
    前記方法は、
    データを前記不揮発性データ・ストアに保存するリソース又は性能コスト(以下、「保存コスト」ともいう)と、データを前記不揮発性データ・ストアに保存しないことに関連付けられたリスク(以下、「リスク・コスト」ともいう)評価するステップと
    前記揮発性データ・ストア内に保持されているデータ更新を前記不揮発性データ・ストアに保存する必要があるかどうかを前記保存コストと前記リスク・コストとを比較することによって判定するステップであって、前記保存コストが前記リスク・コストよりも低いことに応じて前記データ更新を前記不揮発性データ・ストアに保存し、一方、前記保存コストが前記リスク・コストよりも高いことに応じて前記データ更新を前記不揮発性データ・ストアに保存しない、前記判定するステップと
    を含み、
    データを前記不揮発性データ・ストアに保存しないことに関連付けられた前記リスクが前記データを前記不揮発性データ・ストアに保存されなかった場合の当該メッセージに関するデータの損失リスクである、
    前記データ処理装置。
  2. 前記評価するステップが、前記メッセージの価値に基づいて前記損失の潜在的なコストを評価するステップを含む、請求項1に記載のデータ処理装置。
  3. 前記メッセージの前記価値が、
    前記メッセージのコンテンツに含まれる金銭価値に基づいて判定され、
    前記メッセージの送信先となるメッセージ・キューの属性から推論され、又は、
    前記メッセージの属性値から判定される、
    請求項2に記載のデータ処理装置。
  4. 前記評価するステップは、前記データ更新の価値と前記データ損失リスクとに基づいて潜在的なデータ損失コストを計算するステップを含む、請求項1〜3のいずれか一項に記載のデータ処理装置。
  5. 前記評価するステップは、前記データ更新が前記不揮発性データ・ストアに保存されなかった場合のデータ更新の二重化リスクを評価するステップを含む、請求項1〜4のいずれか一項に記載のデータ処理装置。
  6. 前記評価するステップは、前記データ処理装置の性能特性を評価するステップを含む、請求項1〜5のいずれか一項に記載のデータ処理装置。
  7. 前記評価するステップは、ログ・レコードが前記不揮発性データ・ストアに書き込まれるまでの残り時間を評価するステップを含む、請求項1〜6のいずれか一項に記載のデータ処理装置。
  8. 前記揮発性データ・ストア上にメッセージング・マネージャ更に備えており
    前記評価するステップは、メッセージが前記メッセージング・マネージャによって処理されている間に、前記メッセージに関するデータを前記不揮発性データ・ストアに保存するコストと、前記メッセージに関するデータを前記不揮発性データ・ストアに保存しないことに関連付けられたリスクとを表す複数の1組の基準のうちの少なくとも1つの基準を評価するステップを含み
    前記判定するステップは、前記評価に基づいて、前記メッセージに関する前記データを前記不揮発性データ・ストアに保存すべきかどうかを判定するステップを含み
    前記方法は、
    正の判定に応答して、前記メッセージに関する前記データの前記不揮発性データ・ストアへの保存を開始するステップ
    をさらに含む、請求項1〜7のいずれか一項に記載のデータ処理装置。
  9. 前記評価するステップは、前記メッセージが前記不揮発性データ・ストアへの保存候補であることを示すメッセージ属性に応答して実行される、請求項8に記載のデータ処理装置。
  10. 前記メッセージが、
    「永続」、
    「非永続」、
    「メッセージ・キューの定義に従って決定される永続性」、及び
    「メッセージ価値に従って決定される永続性」
    から成る群から選択される少なくとも1つのメッセージ属性値を含むメッセージ永続性オプションが提供されている、請求項9に記載のデータ処理装置。
  11. 前記データ処理装置が、前記メッセージ価値を指定する手段を備えており、
    前記メッセージが、少なくとも前記メッセージ永続性オプションの「メッセージ・キューの定義に従って決定される永続性」提供される
    請求項10に記載のデータ処理装置。
  12. 前記評価するステップは、
    前記損失に関連付けられたコストを前記メッセージの前記価値に基づいて評価するステップ
    含む、請求項1〜11のいずれか一項に記載のデータ処理装置。
  13. ネットワーク通信用に互いに接続された複数のデータ処理システムを備えており
    前記複数のデータ処理システムはそれぞれ、
    プロセッサと、
    揮発性データ・ストアと、
    不揮発性データ・ストアと
    を備えており
    前記プロセッサに、メッセージに関するデータをそれぞれの前記不揮発性データ・ストアに保存すべきかどうかを判定する方法の各ステップを実行させる関連する永続性マネージャ並びに、メッセージング・マネージャを前記揮発性データ・ストア上に備えており、
    第1のデータ処理システムは、
    第1のメッセージング・マネージャを使用して、前記第1のデータ処理システム側の前記第1の永続性マネージャによって使用されるメッセージ価値を判定するステップと、
    前記判定されたメッセージ価値を第2のメッセージング・マネージャを備えた第2のデータ処理システム側に送信するステップと
    実行し
    前記第2のデータ処理システムは、
    前記第2のメッセージング・マネージャを使用して、前記メッセージ価値を識別するステップと、
    前記識別されたメッセージ価値を前記第2のデータ処理システム提供することにより、前記第2の永続性マネージャがメッセージに関するデータを前記第2のデータ処理システム側の不揮発性データ・ストアに保存すべきかどうかを判定するステップと
    実行する
    請求項12に記載のデータ処理装置。
  14. 前記評価するステップは、前記メッセージに関する前記データについて計算される損失リスクに基づいて、前記メッセージに関するデータを前記不揮発性データ・ストアに保存する前記利益を評価するステップ含む、請求項8〜13のいずれか一項に記載のデータ処理装置。
  15. ッセージ・キューが閾値キュー深度に達したことに応答して、前記評価するステップと、前記判定するステップと、前記不揮発性データ・ストアへの保存を開始するするステップ開始される、請求項8〜14のいずれか一項に記載のデータ処理装置。
  16. 記メッセージに関する操作実行されたことに応答して、前記評価するステップと、前記判定するステップと、前記不揮発性データ・ストアへの保存を開始するするステップ開始される、請求項8〜14のいずれか一項に記載のデータ処理装置。
  17. 前記メッセージに関する操作は、前記メッセージを前記メッセージング・マネージャによって管理されるキュー上に配置することを含む、請求項16に記載のデータ処理装置。
  18. 前記プロセッサに、前記揮発性データ・ストア内に保持されているデータベース・テーブルに対してデータ更新を適用するデータベース・マネージャを前記揮発性データ・ストア上に更に備えており、
    前記判定するステップは、少なくとも1つの基準の前記評価に基づいて、データの更新、追加、及び削除が前記不揮発性データ・ストアへの保存を必要とするものかどうかを判定するステップを実行する、
    請求項1〜4のいずれか一項に記載のデータ処理装置。
  19. データ処理装置内のデータの永続性を管理する方法であって、前記データ処理装置が、
    データを永続ストレージに保存するリソース又は性能コスト(以下、「保存コスト」ともいう)と、データを前記永続ストレージに保存しないことに関連付けられたリスクと評価して、揮発性データ・ストア内に保持されているデータ更新を前記永続ストレージに保存する必要があるかどうかを前記保存コストと前記リスク・コストとを比較することによって判定するステップであって、前記保存コストが前記リスク・コストよりも低いことに応じて前記データ更新が前記不揮発性データ・ストアに保存され、一方、前記保存コストが前記リスク・コストよりも高いことに応じて前記データ更新が前記不揮発性データ・ストアに保存されない、前記判定するステップと、
    前記保存コストが前記リスク・コストよりも低いことに応じて、前記データ更新の永続ストレージへの保存を開始するステップと
    実行することを含み、
    データを前記不揮発性データ・ストアに保存しないことに関連付けられた前記リスクが前記データを前記不揮発性データ・ストアに保存されなかった場合の当該メッセージに関するデータの損失リスクである、
    前記方法。
  20. コンピュータに、請求項19に記載の方法の各ステップ実行させるコンピュータ・プログラム。
JP2009517172A 2006-07-01 2007-06-26 永続性を管理する方法、装置、及びコンピュータ・プログラム Active JP5084827B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GBGB0613192.4A GB0613192D0 (en) 2006-07-01 2006-07-01 Methods, apparatus and computer programs for managing persistence
GB0613192.4 2006-07-01
PCT/EP2007/056373 WO2008003617A1 (en) 2006-07-01 2007-06-26 Methods, apparatus and computer programs for managing persistence

Publications (3)

Publication Number Publication Date
JP2009541882A JP2009541882A (ja) 2009-11-26
JP2009541882A5 JP2009541882A5 (ja) 2010-05-20
JP5084827B2 true JP5084827B2 (ja) 2012-11-28

Family

ID=36888544

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009517172A Active JP5084827B2 (ja) 2006-07-01 2007-06-26 永続性を管理する方法、装置、及びコンピュータ・プログラム

Country Status (8)

Country Link
US (3) US9495229B2 (ja)
EP (1) EP2038746B1 (ja)
JP (1) JP5084827B2 (ja)
KR (1) KR101054994B1 (ja)
CN (1) CN101490651B (ja)
GB (1) GB0613192D0 (ja)
TW (1) TWI430176B (ja)
WO (1) WO2008003617A1 (ja)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8402201B2 (en) 2006-12-06 2013-03-19 Fusion-Io, Inc. Apparatus, system, and method for storage space recovery in solid-state storage
US9495241B2 (en) 2006-12-06 2016-11-15 Longitude Enterprise Flash S.A.R.L. Systems and methods for adaptive data storage
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US8055782B2 (en) * 2008-10-13 2011-11-08 International Business Machines Corporation System and method for generating exception delay messages when messages are delayed
US8239641B2 (en) * 2009-02-24 2012-08-07 Microsoft Corporation Choosing location or manner of storing data
US20120239860A1 (en) 2010-12-17 2012-09-20 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
US9423849B2 (en) * 2011-01-31 2016-08-23 Nec Corporation Electric power management system and electric power management method
US10019353B2 (en) 2012-03-02 2018-07-10 Longitude Enterprise Flash S.A.R.L. Systems and methods for referencing data on a storage medium
GB201216436D0 (en) 2012-09-14 2012-10-31 Ibm Controlling persisting of data to disk
US9258263B2 (en) * 2012-11-29 2016-02-09 International Business Machines Corporation Dynamic granular messaging persistence
CN103257987A (zh) * 2012-12-30 2013-08-21 北京讯鸟软件有限公司 基于规则的分布式日志服务实现方法
US9348773B2 (en) 2013-05-28 2016-05-24 Dell Products, L.P. Systems and methods for adaptive interrupt coalescing in a converged network
JP6292810B2 (ja) 2013-10-02 2018-03-14 キヤノン株式会社 データ同期方法、データ同期装置およびプログラム
US9749256B2 (en) * 2013-10-11 2017-08-29 Ge Aviation Systems Llc Data communications network for an aircraft
US9853714B2 (en) 2013-10-11 2017-12-26 Ge Aviation Systems Llc Data communications network for an aircraft
US9894143B1 (en) * 2013-11-06 2018-02-13 Amazon Technologies, Inc. Pre-processing and processing pipeline for queue client
GB2520972A (en) 2013-12-05 2015-06-10 Ibm Workload management
US9635109B2 (en) * 2014-01-02 2017-04-25 International Business Machines Corporation Enhancing reliability of a storage system by strategic replica placement and migration
WO2015130314A1 (en) 2014-02-28 2015-09-03 Hewlett-Packard Development Company, L.P. Mapping mode shift
US9577972B1 (en) * 2014-09-09 2017-02-21 Amazon Technologies, Inc. Message inspection in a distributed strict queue
CA2969210C (en) * 2014-12-01 2024-02-20 Informatica Llc Method, apparatus, and comuter-readable medium for processing a message by a message broker system
WO2016159930A1 (en) 2015-03-27 2016-10-06 Hewlett Packard Enterprise Development Lp File migration to persistent memory
CN107209720B (zh) * 2015-04-02 2020-10-13 慧与发展有限责任合伙企业 用于页面高速缓存的系统及方法以及存储介质
US9747174B2 (en) * 2015-12-11 2017-08-29 Microsoft Technology Licensing, Llc Tail of logs in persistent main memory
US10565187B2 (en) * 2016-11-17 2020-02-18 Sap Se Management of transactions spanning different database types
US10678812B2 (en) * 2016-11-17 2020-06-09 Sap Se Asynchronous database transaction handling
US10341463B2 (en) * 2017-05-03 2019-07-02 International Business Machines Corporation System and method for message queue configuration in a network
WO2019089601A1 (en) * 2017-10-31 2019-05-09 Ab Initio Technology Llc Managing a computing cluster interface
US10645040B2 (en) * 2017-12-29 2020-05-05 Facebook, Inc. Techniques for consistent writes in a split message store
US11405343B2 (en) 2017-12-29 2022-08-02 Meta Platforms, Inc. Techniques for extensible message indexing
US10642877B2 (en) 2017-12-29 2020-05-05 Facebook, Inc. Techniques for consistent reads in a split message store
US10673791B2 (en) 2017-12-29 2020-06-02 Facebook, Inc. Techniques for data reads from secondary stores
CN110430229B (zh) * 2019-06-19 2020-09-11 特斯联(北京)科技有限公司 基于云平台的智慧社区物联传感信息采集处理系统及方法
CN111221663B (zh) * 2019-11-21 2022-07-22 苏州浪潮智能科技有限公司 一种消息数据处理方法、装置、设备及可读存储介质
US11537454B2 (en) 2020-01-09 2022-12-27 International Business Machines Corporation Reducing write operations in middleware
SG11202113325VA (en) * 2020-03-11 2021-12-30 Grabtaxi Holdings Pte Ltd Method of predicting fare and fare prediction data system
US11507314B2 (en) * 2020-06-24 2022-11-22 Samsung Electronics Co., Ltd. Systems and methods for message queue storage
KR102460910B1 (ko) * 2020-11-20 2022-10-31 한국전자기술연구원 데이터 중복 방지를 위한 데이터 저장 방법 및 이를 적용한 데이터 플랫폼
CN116560586B (zh) * 2023-07-06 2023-09-05 苏州浪潮智能科技有限公司 属性值的确定方法及装置、存储介质及电子设备

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2276739A (en) * 1993-03-30 1994-10-05 Ibm System for storing persistent and non-persistent queued data.
US5721918A (en) * 1996-02-06 1998-02-24 Telefonaktiebolaget Lm Ericsson Method and system for fast recovery of a primary store database using selective recovery by data type
US6442139B1 (en) * 1998-01-29 2002-08-27 At&T Adaptive rate control based on estimation of message queuing delay
AU7109200A (en) 1999-08-31 2001-03-26 Andersen Consulting Llp A system, method and article of manufacture for a network-based predictive faultmanagement system
US6883101B1 (en) 2000-02-08 2005-04-19 Harris Corporation System and method for assessing the security posture of a network using goal oriented fuzzy logic decision rules
US7352868B2 (en) 2001-10-09 2008-04-01 Philip Hawkes Method and apparatus for security in a data processing system
TW200303690A (en) 2002-02-18 2003-09-01 Empower Interactive Group Ltd Distributed message transmission system and method
US7185033B2 (en) * 2002-08-01 2007-02-27 Oracle International Corporation Buffered message queue architecture for database management systems with unlimited buffered message queue with limited shared memory
GB0308262D0 (en) * 2003-04-10 2003-05-14 Ibm Recovery from failures within data processing systems
US7644118B2 (en) * 2003-09-11 2010-01-05 International Business Machines Corporation Methods, systems, and media to enhance persistence of a message
TW200532488A (en) 2004-03-23 2005-10-01 Ind Tech Res Inst System and method for risk assessment
US7343459B2 (en) * 2004-04-30 2008-03-11 Commvault Systems, Inc. Systems and methods for detecting & mitigating storage risks

Also Published As

Publication number Publication date
KR20090035527A (ko) 2009-04-09
CN101490651B (zh) 2013-12-18
TW200823760A (en) 2008-06-01
GB0613192D0 (en) 2006-08-09
TWI430176B (zh) 2014-03-11
KR101054994B1 (ko) 2011-08-05
US20160357619A1 (en) 2016-12-08
US20100017441A1 (en) 2010-01-21
EP2038746A1 (en) 2009-03-25
EP2038746B1 (en) 2014-07-23
JP2009541882A (ja) 2009-11-26
US9495229B2 (en) 2016-11-15
US20200133750A1 (en) 2020-04-30
CN101490651A (zh) 2009-07-22
US10528405B2 (en) 2020-01-07
WO2008003617A1 (en) 2008-01-10

Similar Documents

Publication Publication Date Title
JP5084827B2 (ja) 永続性を管理する方法、装置、及びコンピュータ・プログラム
US10594641B2 (en) Dynamic filter generation for message management systems
US10348809B2 (en) Naming of distributed business transactions
US8370847B2 (en) Managing persistence in a messaging system
US9367369B2 (en) Automated merger of logically associated messages in a message queue
US7698602B2 (en) Systems, methods and computer products for trace capability per work unit
US8825798B1 (en) Business event tracking system
US10572319B2 (en) Optimization of message oriented middleware monitoring in heterogenenous computing environments
US7478130B2 (en) Message processing apparatus, method and program
US9038093B1 (en) Retrieving service request messages from a message queue maintained by a messaging middleware tool based on the origination time of the service request message
CN107391274A (zh) 离线消息的处理方法及装置
US11243979B1 (en) Asynchronous propagation of database events
WO2023223599A1 (ja) 計算機システム及びメトリクスの算出方法
CN114491674A (zh) 基于区块链的日志处理方法、装置和设备
CN114064676A (zh) 一种数据处理方法及第一处理单元
JPH09330256A (ja) バッファ最適化によるデータベースシステムの性能監視方式

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100323

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100323

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120410

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120607

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120607

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20120607

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120611

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120815

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120815

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20120815

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120904

R150 Certificate of patent or registration of utility model

Ref document number: 5084827

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150914

Year of fee payment: 3