(58)【調査した分野】(Int.Cl.,DB名)
前記制御部は、前記アプリケーションに対応する前記閾値判定方法情報をもとに前記データ正常性が確保できると判定された場合に、前記選択した前記更新方法情報の更新方法にしたがってデータを更新する
ことを特徴とする、請求項1に記載の情報処理装置。
前記制御部は、前記アプリケーションに対応する前記閾値判定方法情報に前記リクエストに含まれる入力値を代入して、前記閾値と前記入力値の前記閾値判定方法情報への代入結果とを比較して、前記データ正常性が確保できるかを判定する
ことを特徴とする、請求項5に記載の情報処理装置。
【発明を実施するための形態】
【0014】
以下図面について、本発明の一実施の形態を詳述する。
【0015】
なお、以後の説明では「aaaテーブル」、「aaaリスト」、「aaaDB」、「aaaキュー」等の表現にて本発明の情報を説明するが、これら情報は必ずしもテーブル、リスト、DB、キュー、等のデータ構造以外で表現されていてもよい。そのため、データ構造に依存しないことを示すために「aaaテーブル」、「aaaリスト」、「aaaDB」、「aaaキュー」等について「aaa情報」と呼ぶことがある。さらに、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ID」という表現を用いるが、これらについてはお互いに置換が可能である。
【0016】
以後の説明では「プログラム」を主語として説明を行う場合があるが、プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポート(通信制御デバイス)を用いながら行うため、プロセッサを主語とした説明としてもよい。また、プログラムを主語として開示された処理は管理サーバ等の計算機、情報処理装置が行う処理としてもよい。また、プログラムの一部または全ては専用ハードウェアによって実現されてもよい。
【0017】
また、各種プログラムはプログラム配布サーバや、計算機が読み取り可能な記憶メディアによって各計算機にインストールされてもよい。
【0018】
(1)第1の実施の形態
(1−1)本実施の形態の概要
まず、本実施の形態の概要について説明する。
本実施の形態では、大地震など大規模通信インフラ障害発生時の以下の課題を解決することである。
【0019】
大地震で発生する大規模通信インフラ障害として、複数データセンタ間の接続が切断される、または接続帯域が小さく通信が困難なケース(これを分断障害と呼ぶ)が考えられる。さらにこのとき、ユーザは特定の場所から特定のデータセンタを利用できるが、その他のデータセンタを利用できなくなること(これを局所接続と呼ぶ)も考えられる。
【0020】
特定のアプリケーションでは、分断障害の場合にも局所接続だけを利用しアプリケーションを継続実行してほしいというユーザニーズがある。このようなアプリケーションとしては、例えば、食品および薬などの生活必需品の在庫管理、または銀行口座からの出金処理などが挙げられる。これは、大地震などの災害時には、災害発生個所の各データセンタを利用するユーザは、手持ちの必需品や金品をなくしていることが多いためである。
【0021】
このようなアプリケーションは、通常、データ整合性を保証するためにデータセンタ間通信を利用して実施されるが、分断障害の場合はデータセンタ間の通信ができなくなり、正常な処理を実施できなくなることが問題となる。
【0022】
例えば、上記した特許文献1では、複数箇所のデータセンタから同一データに対して更新されマージされた場合に、各アプリケーションによって規定されたデータ正常性を逸脱し異常値となる可能性がある。例えば、在庫管理における在庫払い出し処理の場合、在庫数データの正常値は正の値であり、異常値は負の値である。2箇所のデータセンタで在庫数を減算するアプリケーションを実行した場合に、各データセンタのアプリケーションでは在庫が負の値にならない範囲で正常終了しても、各更新をマージした時点で在庫数が負の値になる可能性がある。
【0023】
また、上記した特許文献1では、分断障害時には、いずれか1つのデータ複製しか更新できない。つまり、特定の1つのデータセンタでしかアプリケーションを継続実行できないこととなる。局所接続を考慮すると、特定場所に居住するユーザは、アプリケーションを利用可能だが、他のユーザはアプリケーションを利用できず不便を強いられる。
【0024】
そこで、本実施の形態では、分断時にデータ正常性を保証しながら、複数のデータ複製に対して同時更新することを第1の目的としている。
【0025】
また、本実施の形態の第2の目的は、大規模通信インフラ障害がない正常時にも、複数データセンタ上で同時に実行されるアプリケーションの実行時間を短縮することである。例えば、局所接続の環境で特定のデータセンタを利用していたユーザが移動するケースや、同環境で別の位置にいる複数ユーザが同一アプリケーションを実行するケースなどが考えられる。
【0026】
前者のケースでは、移動前に利用するデータセンタA及びユーザ移動後に利用するデータセンタBが、同一のデータとアプリケーションを格納していることを前提とする。ユーザが移動するケースの場合、データセンタAのアプリケーションに対して複数リクエストが送信される途中で、データセンタBにリクエストの送信が開始されることがある。この場合、データセンタAのアプリケーションがデータを更新途中の状態でも、データセンタBのアプリケーションに対して新たなリクエストが送信される可能性がある。
【0027】
このとき、データセンタBのアプリケーションが、受信したリクエストに基づき処理を実行する際には、通常、アプリケーションは、データ整合性を保証するためにデータセンタ間通信を利用する。しかし、データセンタ間通信の遅延などにより、アプリケーションの処理完了が遅延して、データ整合性が保証されない場合がある。
【0028】
上記特許文献1では、アプリケーションを同時に実行することが可能なため、アプリケーション実行時間は短縮できるが、上記したように、データ正常性を損なう可能性がある。また、上記特許文献2では、いずれかのデータセンタしかアプリケーションを実行できないため、データセンタBはデータセンタAからの処理完了通信を待つ必要があり、データセンタBの処理遅延を回避できない。
【0029】
そこで、本実施の形態では、データ正常性を保証しながら、データセンタ間通信の遅延を排除することでアプリケーション実行時間を短縮することを第2の目的としている。すなわち、本実施の形態では、分断障害時のアプリケーションの可用性向上とアプリケーションの実行時間短縮を実現するために、一時的にデータが不整合となることを許可する。そして、アプリケーションごとに規定されたデータの正常性を保証できる範囲であればデータの同時更新を許可し、そうでなければデータの同時更新を許可しない仕組みを提供する。
【0030】
具体的に、データ正常性保証範囲の例として、在庫数減算アプリケーションの場合を考える。本実施の形態では、在庫数が10である場合に、在庫数が負の値にならないという正常性を保証しながら、2つのデータセンタでの同時更新を許可する。このためには、1つのデータセンタで許可する減算幅を5とするパターンが考えられる。また一方のデータセンタでは減算幅を7とし、別のデータセンタでは減算幅を3とするパターンも考えられる。いずれのパターンにおいても、各データセンタで減算幅という数値に対して閾値を設けることで、アプリケーションの同時更新が可能かを判定することができる。すなわち、在庫数と減算値を比較して同時許可を判定するように、アプリケーションの入力値と特定の閾値に基づいてデータ正常性保証範囲を判定することができる。
【0031】
この閾値を適切に設定するために利用できる特性として、ユーザとデータセンタの相関関係が挙げられる。局所接続のケースを考えると、特定ユーザは特定データセンタを頻繁に利用し、それ以外のデータセンタは利用しないという局地的な相関関係がある。この場合、上記の閾値をユーザとデータセンタの組の相関関係に比例して設定することで、より頻繁に利用するデータセンタではより広範囲な処理を実行することができる。
【0032】
しかし、上記した従来技術では、ユーザとデータセンタとの相関関係は考慮されておらず、相関関係に応じた閾値を設定することはできない。
【0033】
本実施の形態では、ユーザとデータセンタとの相関関係を利用して、閾値を適切に設定することで、上記した第1の目的と第2の目的である、分断障害時のアプリケーション可用性や、アプリケーションの実行時間短縮などの効果を最大限得ることが可能となる。
【0034】
また、本実施の形態では、上記の効果を得られる閾値を適切に再計算および再配布することを第3の目的としている。局所接続するユーザとデータセンタとの相関関係は、時間経過によって変化することが考えられる。例えば、ユーザが拠点を移転するケースでは、時間経過に応じて閾値を再計算および再配布する周期は1時間から1日の周期で実施し、アプリケーションを改変および再配布する周期が半年から数年であるのに対して比較的短いと考えられる。そのため、アプリケーションを配布する仕込みとは別に閾値を配布する仕組みを提供する。これにより、閾値変更のたびにアプリケーションを改変したり再配布したりする必要がなくなり、アプリケーションを管理するコストの削減に寄与する。
【0035】
また、本実施の形態では、閾値に応じて更新方法を変更するだけでなく、同時に閾値に応じたマージ方法を選択する機能を提供することを第4の目的としている。
【0036】
また、本実施の形態では、複数データセンタで構成されるクラスタの障害の種類に応じて、データセンタ間で必要に応じた通信をして閾値を融通している。このように、閾値を緩和して、分断障害時のアプリケーション可用性を向上させたり、アプリケーション実行時間を短縮させたりする効果を最大限に得ることを第5の目的としている。
【0037】
すなわち、本実施の形態は、上記第1〜第5の目的を達成することにより、データの整合性を保証してデータ更新することによりアプリケーションの可用性を向上させたりアプリケーション実行時間を短縮させたりすることを可能としている。
【0038】
(1−2)計算機システムの構成
次に、本実施の形態にかかる計算機システム1のハードウェア構成について説明する。
図1に示すように、計算機システム1は、計算機101、ユーザ端末105、管理計算機133、計算機144及び管理者端末147から構成される。計算機101は、ユーザ端末105、管理計算機133、計算機144と接続されている。また、計算機101は、ユーザ端末105から送信されたユーザリクエスト145を受信し、アプリケーションの実行および更新方法選択を実施する。また、管理計算機133は、計算機管理者端末147と接続されている。ユーザ端末105は、通信部104、計算機144と接続されており、いずれかの計算機にユーザリクエスト145を送信する。
【0039】
計算機144は、計算機101と同等のハードウェア構成をもつ計算機である。
図1の例では、計算機101と計算機144の2つの計算機が接続された構成を示しているが、単一の計算機もしくは2つ以上の計算機がネットワークを介して協働する構成としてもよい。
【0040】
計算機101は、データ正常性を保証しながら分断障害時のアプリケーション可用性向上およびアプリケーション実行時間短縮を実現するため、データ正常性が保証できる範囲に基づきデータ更新方法を選択するコンピュータ装置である。
【0041】
計算機101は、メモリ(記憶部)103、CPU(演算部)102、通信部104及びタイマー107から構成されている。メモリ103は、ハードディスクドライブなどの記憶装置で構成される。CPU102は、メモリ103に保持されるプログラム類を読み出すなどして各種処理を実行し、装置全体の統括制御を行なうとともに各種判定、演算及び制御処理を行なう。また、通信部104及びタイマー107は、ユーザ端末105とのデータ通信を行う。
図1に示す例では、ユーザ端末105および管理計算機133が計算機101の入力部ともいえる。
【0042】
なお、メモリ103には、本実施形態の情報処理装置として必要な機能を実装する為のプログラム、および各種テーブル等が格納されている。本実施形態の情報処理装置として備えるべき機能は、計算機101が備えるプログラムを実行することで実装される機能といえる。
図1では、こうした機能を処理部として示している。
【0043】
また、
図1では計算機101を単体のコンピュータ装置として示しているが、本実施形態の情報処理装置として必要な機能を実装した他装置とネットワークを介して互いに協働し、複数装置をもって計算機101を構成するとしてもよい。
【0044】
メモリ103には、アプリケーション制御部106、更新方法選択部110、更新実行部114、マージ実行部119、処理実績収集部123、クラスタ状態更新部124、参照実行部149が格納される。また、メモリ103には、計算機固有情報125、アプリケーション別閾値判定方法情報126、閾値情報127、選択済み更新方法情報128、更新方法別処理スクリプト情報129、マージ方法別処理スクリプト情報130、データ格納部131、マージリクエストキュー132及び更新リクエスト146などのテーブルやデータが格納される。メモリ103は、通信部104及びタイマー107と接続されており、通信部104を介してユーザ端末105、管理計算機133または計算機144から受信した情報を格納する。
【0045】
通信部104は、メモリ103、CPU102、ユーザ端末105、管理計算機133及び計算機144と接続されている。アプリケーション制御部106は、アプリケーション108及びリクエストパース部109を含む。タイマー107は、メモリ103と接続されている。更新方法選択部110は、閾値検索部111、閾値判定部112及び更新方法取得インタフェース13を含む。更新実行部114は、更新インタフェース115、更新処理起動部116及び処理スクリプト117を含む。処理スクリプト117はマージ処理名118を含む。マージ実行部119はマージ処理起動部120、マージ処理スクリプト121及びマージ起動インタフェース122を含む。
【0046】
具体的に、計算機101は、ユーザ端末105からのユーザリクエスト145を受信し、アプリケーション制御部106を実行させて、ユーザリクエスト145に応じたアプリケーション108を実行することで、データを更新させる更新リクエスト146を更新方法選択部110に提供する。そして、計算機101は、更新方法選択部110を実行することで、閾値情報127、選択済み更新方法情報128及びユーザリクエスト145を参照して、データ正常性が保証できる更新方法のうち、可用性および処理時間短縮効果が得られる更新方法を選択する。
【0047】
また、計算機101は、更新実行部114を実行することで、選択した更新方法を使用し、データ格納部131のデータを更新する。更新実行部114は、選択済み更新方法情報128、更新方法別処理スクリプト情報129及び更新リクエスト146を使用して、データを更新する。また、計算機101は、参照実行部149を実行することで、データ格納部131のデータを参照する。また、計算機101は、マージ実行部119を実行することで、データ格納部131の整合性を復元する処理(マージ)を実行する。
【0048】
なお、計算機101は、アプリケーション別閾値判定方法情報126の所定の評価式に含まれる評価値を閾値情報127とする。CPU102は、選択処理において、アプリケーションごとに該当した評価式に対応する数値を用いて、アプリケーションごとの評価値を算出し、当該評価値を用いて更新方法を選択する。
【0049】
また、メモリ103のアプリケーション別閾値判定方法情報126には、各評価式を計算するプログラムを含む。CPU102は、更新方法を選択する処理において、アプリケーションごとに該当した評価式に対応するプログラムを用いて、アプリケーションごとの評価値を算出し、当該評価値を用いて更新方法を選択する。
【0050】
なお、更新方法は、計算機によって実行されるプログラムである処理スクリプトを起動する方法を意味し、処理スクリプトに含まれる各種の処理部も、物理的には計算機上で実行されるものである。
【0051】
次に、
図2を参照して計算機101のメモリ103に格納され、各部から参照及び更新される計算機固有情報125及び閾値情報127の詳細について説明する。
【0052】
計算機固有情報125は、計算機101の固有の情報であって、計算機名リスト201、クラスタ状態情報202、局所ユーザ処理実績情報203及びクラスタ内計算機状態情報209から構成されている。また、閾値情報127は、閾値バージョン205、閾値テーブル206、閾値合成方法情報207及び伝播情報208から構成されている。各情報の詳細は後で詳細に説明する。
【0053】
図1に戻り、管理計算機133の構成について説明する。
図1に示すように、管理計算機133は、CPU134、通信部135及びメモリ136などから構成されている。CPU134は、メモリ136に保持されるプログラム類を読み出すなどして各種処理を実行し、装置全体の統括制御を行なうとともに各種判定、演算及び制御処理を行なう。また、通信部135は、計算機101とのデータ通信を行う。また、管理計算機133は、管理者端末147と接続され、管理者端末147を介して管理者の入力を受け付ける。
【0054】
また、メモリ136には、ユーザ固有情報137、アプリケーション別閾値判別方法情報138、閾値テーブル作成部139、閾値情報伝播管理部140、閾値情報141、計算機固有情報142及び閾値計算方法情報143が格納されている。
図3に示すように、ユーザ固有情報137には、ユーザ名リスト301及びユーザ処理実績情報302が含まれる。各情報の詳細は後で説明する。
【0055】
(1−3)データ構成
次に、各テーブルまたはリストのデータ構成について説明する。まず、ユーザ端末105から送信されるユーザリクエスト145について説明する。
図4は、ユーザリクエスト145の一例を示す図表であり、アプリケーションが「A在庫管理」である場合にユーザ端末105から送信されるユーザリクエスト145Aの一例である。
【0056】
図4に示すように、ユーザリクエスト145Aは、ユーザ名欄401、アプリケーション入力値1欄402、アプリケーション入力値2欄403及びアプリケーション名欄404から構成される。
【0057】
ユーザ名欄401には、リクエストの要求元であるユーザの名称を示す情報が格納される。アプリケーション入力値1欄402及びアプリケーション入力値2欄403には、アプリケーションへの入力値がそれぞれ格納される。また、アプリケーション名欄404には、リクエストが要求するアプリケーションの名称が格納される。
【0058】
図4では、例えば、ユーザ「User1」が、アプリケーション「A在庫管理」の実行を要求し、当該アプリケーションの入力値は「Package1/Warehouse1」及び「10」であることがわかる。
【0059】
また、
図5は、ユーザリクエスト145の一例を示す図表であり、アプリケーションが「B口座残高引出」である場合にユーザ端末105から送信されるユーザリクエスト145Bの一例である。
【0060】
図5に示すように、ユーザリクエスト145Bは、ユーザ名欄501、アプリケーション入力値1欄502、アプリケーション入力値2欄503及びアプリケーション名欄504から構成される。
【0061】
ユーザ名欄501には、リクエストの要求元であるユーザの名称を示す情報が格納される。アプリケーション入力値欄502には、アプリケーションへの入力値が格納される。また、アプリケーション名欄503には、アプリケーションの名称が格納される。
【0062】
図5では、例えば、ユーザ「User1」が、アプリケーション「B口座残高引出」の実行を要求し、当該アプリケーションの入力値は「10000」であることがわかる。
【0063】
次に、アプリケーションが参照および更新するデータを格納する計算機101のデータ格納部131について説明する。
図6は、DB名がDB1であるデータ格納部131を示す図表である。
図6に示すように、データ格納部131は、キー欄601及び値欄602から構成される。キー欄601には、データ格納部131に格納されたデータの参照または更新する際に使用されるキーが格納される。また、値欄602には、キー欄601に格納されたキーに対応するデータの値が格納される。
【0064】
例えば、
図6では、データのキー「在庫数/Package1/Warehouse1」に対応する値は「200」であり、データのキー「在庫数/Package1/Warehouse2」に対応する値は「300」であることがわかる。
【0065】
次に、DB名がDB2であるデータ格納部131について説明する。
図7に示すように、データ格納部131は、キー欄701及び値欄702から構成される。キー欄701には、データ格納部131に格納されたデータの参照または更新する際に使用されるキーが格納される。また、値欄702には、キー欄701に格納されたキーに対応するデータの値が格納される。
【0066】
例えば、
図7では、データのキー「残高/User1」に対応する値は「100000」であり、データのキー「残高/User2」に対応する値は「20000」であることがわかる。
【0067】
次に、計算機101のアプリケーション制御部106が更新実行部114の更新インタフェース115に送信する更新リクエスト146について説明する。
図8に示すように、更新リクエスト146は、DB名欄801、キー欄802及び値欄803から構成される。DB名欄801には、データ格納部131を特定する名称が格納される。キー欄802には、データ格納部131の更新箇所を特定するキーの情報が格納される。値欄803には、キーに対応するデータの更新値の情報が格納される。
【0068】
例えば、
図8では、DB名がDB1に格納されているデータのうち、キー「在庫数/Package1/Warehouse1」に対応するデータを「190」に更新することがわかる。
【0069】
次に、計算機101の計算機固有情報125に含まれる計算機名リスト201について説明する。計算機名リスト201は、後述する閾値テーブル206に格納される計算機101の名称の一覧である。
【0070】
図9に示すように、計算機名リスト201は、番号欄901及び計算機名欄902から構成される。番号欄901には、計算機名リスト201に記載される順番を示す番号が格納される。計算機名欄902には、番号欄901に格納された番号に対応する計算機101の計算機名が格納される。計算機名には、計算機101を一意に示す値が格納される。
【0071】
具体的に、計算機名リスト201の各行について説明する。
図9では、例えば、番号「1」に対応する計算機101の計算機名は「DC1」であり、番号「2」に対応する計算機101の計算機名は「DC2」であり、番号「3」に対応する計算機101の計算機名は「DC3」であり、番号「4」に対応する計算機101の計算機名は「DC4」であることがわかる。
【0072】
次に、管理計算機133のユーザ固有情報137に含まれるユーザ名リスト301について説明する。ユーザ名リスト301は、計算機101を利用するユーザの名称の一覧である。
図10に示すように、ユーザ名リスト301は、番号欄1001及びユーザ名欄1002から構成される。
【0073】
番号欄1001には、ユーザ名リスト301に記載される順番を示す番号が格納される。ユーザ名欄1002には、番号欄1001に格納された番号に対応するユーザ名が格納される。ユーザ名は、ユーザに一意に与えられ。ユーザを特定することができる情報である。
【0074】
具体的に、ユーザ名リストの各行について説明する。
図10では、例えば、番号「1」に対応するユーザ名は「User1」であり、番号「2」に対応するユーザ名は「User2」であり、番号「3」に対応するユーザ名は「User3」であり、番号「4」に対応する計算機101の計算機名は「User4」であることがわかる。
【0075】
次に、計算機101のメモリ103に格納されているアプリケーション別閾値判定方法情報126について説明する。アプリケーション別閾値判定方法情報138は、アプリケーションの各バージョン等に対応する閾値判定方法を管理するテーブルである。また、アプリケーション別閾値判定方法情報126は、閾値判定部112が、閾値判定処理を実施し、データ正常性を保証できるか否かを判定するために使用される。具体的には、実施するアプリケーションのアプリケーション名およびアプリケーションバージョンに対応する更新判定方法に基づいて、データの正常性を判定する。また、アプリケーション別閾値判定方法情報126には、更新判定処理において、特定の更新方法を優先的に選択することを可能とするための優先順位を含む。この優先順位は、分断障害時のアプリケーションの可用性を向上させたり、アプリケーションの実行時間を短縮させたりする効果が高いものを優先的に選択できるように設定される。なお、アプリケーション別閾値判定方法情報126は、管理者端末147を介して管理者により作成され、管理計算機133の閾値情報伝播管理部140から計算機101に送信される。また、アプリケーション別閾値判定方法情報126は、適切な方法で管理計算機133に自動作成するようにしてもよい。
【0076】
図11に示すように、アプリケーション別閾値判定方法情報126は、番号欄1101、アプリケーション名欄1102、アプリケーションバージョン欄1103、優先順位欄1104、クラスタ状態欄1105、閾値判定方法欄1106及び更新方法名欄1107から構成される。
【0077】
番号欄1101には、アプリケーション別閾値判定方法を管理するための番号が格納される。アプリケーション名欄1102には、アプリケーションの名称が格納される。アプリケーションバージョン欄1103には、アプリケーションのバージョンを示す情報が格納される。優先順位欄1104には、閾値判定処理における優先順位の情報が格納され、優先順位欄に格納された数値が小さいほど、対応するアプリケーションが優先的に処理されることを意味する。クラスタ状態欄1105には、閾値判定処理の判定条件となるクラスタ状態の情報が格納される。
【0078】
閾値判定方法欄1106には、閾値を判定するための評価式が格納される。当該評価式に所定の数値を代入することにより、真偽値を導き出すことができる。閾値判定方法により導き出された真偽値は、後述する更新方法を適用可能かを示す値である。また、閾値判定方法に代入する数値は、閾値判定部112が参照可能なデータとしてメモリ103上に格納されている値である。すなわち、閾値情報137に含まれる数値や、ユーザリクエスト145に含まれるアプリケーション入力値などを示す。更新方法名欄1107には、閾値判定処理の結果選択される更新方法の情報が格納される。具体的に、更新方法名欄1107には、「非ロック」または「ロック」が格納され、「非ロック」はデータをロックすることなく更新処理を実施することを示し、「ロック」はデータをロックして更新処理を実施することを示す。
【0079】
具体的に、アプリケーション別閾値判定方法情報126の行1108及び行1109を例示して説明する。
図11では、例えば、番号「1」で管理される閾値判定方法は、アプリケーション名が「A在庫管理」であり、アプリケーションバージョンが「2」であり、優先順位が「1」である。閾値判定処理において、優先順位の値が小さいほうが優先的に処理される行であるため、クラスタ状態が「分断障害時」の場合に、番号「1」の閾値判定方法1106「(入力値)<(a2)*(平均入力値)」が優先的に評価される。評価式に入力値や閾値(a2)や平均入力値などの所定の値を代入して、当該数式の真偽を評価する。
【0080】
番号「1」で管理される閾値判定方法の評価の結果、真偽値が「真」であった場合には、更新方法名「非ロック1」に対応する更新方法が採用される。また、番号「2」で管理される閾値判定方法は、アプリケーション名が「A在庫管理」であり、アプリケーションバージョンが「2」であり、優先順位は「2」であり、クラスタ状態が「Default」の場合に、閾値判定方法は「true」であり、更新方法名は「ロック」である。これは、クラスタ状態が「分断障害時」ではない場合、すなわち、正常な状態である場合には、常にデータをロックして更新処理することを意味する。
【0081】
このように、アプリケーション別閾値判定方法情報126において、優先順位1104の値に小さい値を設定しておくことにより、ユーザリクエスト145に対応するアプリケーションを実行してデータを更新する際に、分断障害時のアプリケーション可用性向上やアプリケーションの実行時間短縮の効果が高い更新方法を選択することが可能となる。
【0082】
次に、
図12を参照して閾値情報127に含まれる閾値バージョン205について説明する。閾値バージョン205は、閾値のバージョンを示す情報であって、閾値バージョン205に格納されている閾値のバージョンがインクリメントされたタイミングで閾値に関する情報が伝播される。
【0083】
次に閾値情報127の閾値テーブル206について説明する。閾値テーブル206は、アプリケーション108に対応する閾値を管理するテーブルである。
【0084】
図13に示すように、閾値テーブル206は、番号欄1301、閾値名欄1302、ユーザ名欄1303、計算機名欄1304、閾値欄1305及び閾値差分欄1306から構成される。
【0085】
番号欄1301には、閾値名、ユーザ名および計算機名の組み合わせを一意に識別する番号が格納される。閾値名欄1302には、閾値判定方法で使用される閾値を特定する名称が格納される。ユーザ名欄1303には、ユーザを識別する名称が格納される。計算機名欄1304には、計算機101を識別する名称が格納される。閾値欄1305には、閾値名欄1302に格納される閾値名、ユーザ名欄1303に格納されるユーザ名、計算機名欄1304に格納される計算機名の組み合わせに対して設定される閾値であって、閾値判定処理に使用される閾値が格納される。閾値差分欄1306には、閾値が更新された場合に、更新前後の閾値の値の差分の値が格納される。
【0086】
具体的に、閾値テーブル206の行1307、行1308及び行1309を例示して説明する。
図13では、例えば、番号「1」で管理される閾値は、閾値名「a1」の閾値であり、ユーザ名「User1」が、計算機名「DC1」を使用する場合に設定される閾値は「0.3」、前回の閾値との差分は「0.1」であることがわかる。また、番号「2」で管理される閾値は、閾値名「a1」の閾値であり、ユーザ名「User1」が、計算機名「DC2」を使用する場合に設定される閾値は「0.5」、前回の閾値との差分は「0」であることがわかる。また、番号「3」で管理される閾値は、閾値名「a1」の閾値であり、ユーザ名「User1」が、計算機名「DC3」を使用する場合に設定される閾値は「0.2」、前回の閾値との差分は「−0.1」であることがわかる。このように、ユーザが計算機DC1〜DC3を使用する場合に、ユーザが使用する計算機毎に閾値が設定される。
【0087】
次に、管理計算機133のメモリ136に格納されているユーザ固有情報137に含まれるユーザ処理実績情報302について説明する。
【0088】
図14に示すように、ユーザ処理実績情報302は、番号欄1401、ユーザ名欄1402、計算機名欄1403、アプリケーション名欄1404、処理回数欄1405、合計処理回数1406及び入力値平均欄1407から構成される。
【0089】
番号欄1401には、ユーザ処理実績を識別する番号が格納される。ユーザ名欄1402には、ユーザ処理実績の対象となるユーザを識別する名称が格納される。計算機名欄1403には、ユーザ処理実績の対象となるユーザが使用した計算機を識別する名称が格納される。アプリケーション名欄1404には、ユーザ処理実績の対象となるユーザが使用したアプリケーションを識別する名称が格納される。処理回数欄1405には、ユーザ処理実績の対象となるユーザが計算機名欄1403に格納されている計算機を使用してアプリケーション名欄1404に格納されているアプリケーションを実行した回数が格納される。合計処理回数1406には、ユーザがアプリケーションを実行した合計回数が格納される。入力値平均欄1407には、アプリケーションを実行した際に入力した値の平均値が格納される。
【0090】
具体的に、ユーザ処理実績情報302の行1408及び行1409を例示して説明する。
図14では、例えば、番号「1」で管理されるユーザ処理実績は、ユーザ名が「User1」のユーザにより、計算機「DC1」を使用してアプリケーション名「A在庫管理」が実行された処理回数が「3」回であり、合計処理回数が「5」回であり、アプリケーション名「A在庫管理」の平均入力値が「10」であることがわかる。また、番号「2」で管理されるユーザ処理実績は、ユーザ名が「User1」のユーザにより、計算機「DC2」を使用してアプリケーション名「A在庫管理」が実行された処理回数が「2」回であり、合計処理回数が「5」回であり、アプリケーション名「A在庫管理」の平均入力値が「10」であることがわかる。
【0091】
次に、計算機101のメモリ103に格納されている計算機固有情報125に含まれる局所ユーザ処理実績情報203について説明する。ユーザ処理実績情報302は、複数の局所ユーザ処理実績情報203に格納された情報を結合することにより作成される。
図15に示すように、局所ユーザ処理実績情報203は、番号欄1501、ユーザ名欄1502、計算機欄1503、アプリケーション名欄1504、処理回数欄1505及び平均入力値欄1506から構成される。
【0092】
番号欄1501には、局所ユーザ処理実績を識別する番号が格納される。ユーザ名欄1502には、ユーザ処理実績の対象となるユーザを識別する名称が格納される。計算機欄1503には、ユーザ処理実績の対象となるユーザが使用した計算機を識別する名称が格納される。アプリケーション名欄1504には、ユーザ処理実績の対象となるユーザが使用したアプリケーションを識別する名称が格納される。処理回数欄1505には、ユーザ処理実績の対象となるユーザが計算機名欄1503に格納されている計算機を使用してアプリケーション名欄1504に格納されているアプリケーションを実行した回数が格納される。平均入力値欄1506には、アプリケーションを実行した際に入力した値の平均値が格納される。
【0093】
具体的に、局所ユーザ処理実績情報203の行1507及び行1508を例示して説明する。
図15では、例えば、番号「1」で管理される局所ユーザ処理実績は、ユーザ名が「User1」のユーザにより、計算機「DC1」を使用してアプリケーション名「A在庫管理」が実行された処理回数が「1」回であり、アプリケーション名「A在庫管理」の平均入力値が「10」であることがわかる。また、番号「2」で管理される局所ユーザ処理実績は、ユーザ名が「User2」のユーザにより、計算機「DC1」を使用してアプリケーション名「C充電量管理」が実行された処理回数が「3」回であり、アプリケーション名「C充電量管理」の平均入力値が「30」であることがわかる。
【0094】
次に、計算機101のメモリ103に格納されているクラスタ状態情報202について説明する。クラスタとは、1つ以上の計算機101の集合である。特に、クラスタ内の計算機のデータ格納部131が同一のデータを持つ場合に、データを更新する際に通信が必要な計算機を集合体として扱うためのものである。クラスタ状態とは、計算機101自身の状態またはクラスタを構成する計算機101の通信障害等の状態を示し、計算機101が正常な状態と同様の処理が出来ない状態などを示す。
【0095】
図16に示すように、クラスタ状態情報202は、番号欄1601及びクラスタ状態欄1603から構成される。
【0096】
番号欄1601には、クラスタ状態を管理するための番号が格納される。クラスタ名欄1602には、クラスタを識別する名称が格納される。クラスタ状態欄1603には、クラスタの状態を示す情報が格納される。
【0097】
具体的に、クラスタ状態情報202の行1604及び行1605を例示して説明する。
図16では、例えば、番号が「1」で管理されるクラスタ状態は、クラスタ名が「C1」でのクラスタ状態が「正常」であることがわかる。また、番号が「2」で管理されるクラスタ状態は、クラスタ名が「C2」のクラスタ状態が「分断障害」であることがわかる。
【0098】
次に、計算機101のメモリ103に格納されている計算機固有情報125に含まれる計算機位置情報204について説明する。計算機位置情報204は、計算機101の物理的な位置や、計算機101の接続関係から導き出される論理的な位置を示す情報である。
図17に示すように、計算機位置情報204は、計算機名欄1701、座標1欄1702、座標2欄1703及び座標3欄1704から構成される。
【0099】
計算機名欄1701には、計算機101を識別する名称が格納される。座標1欄1702及び座標2欄1703には、計算機101が位置する緯度経度を示す情報が格納される。また、座標3欄1704には、計算機101に接続される管理計算機133等との接続関係から導き出される論理的な位置を示す情報が格納される。
【0100】
具体的に、計算機位置情報204の行1705を例示して説明する。
図17では、例えば、計算機名「DC1」の緯度経度は「35.00、135.00」であり、論理的な位置情報は「10」であることがわかる。
【0101】
次に、計算機101のメモリ103に格納されている閾値情報127に含まれる伝播情報208について説明する。伝播情報208は、管理計算機133により伝播される閾値情報127の伝播情報や伝播条件を示す情報である。
図18に示すように、伝播情報208は、計算機名欄1801、依存計算機欄1802、閾値バージョン欄1803及び伝播時刻欄1804から構成される。
【0102】
計算機名欄1801には、計算機101を識別する名称が格納される。依存計算機欄1802には、計算機名欄1801に格納された計算機名に対応する計算機101に閾値情報127を送信する際に、該閾値情報127の送信が完了されていることが条件となる計算機101を示す情報が格納される。閾値バージョン欄1803には、伝播対象の閾値情報127のバージョン情報が格納される。伝播時刻欄1804には、最新の閾値情報127送信時刻が格納される。
【0103】
具体的に、伝播情報208の行1805及び行1806を例示して説明する。
図18では、例えば、計算機「DC1」に閾値情報127を送信する際には、計算機「DC3」への閾値情報137の送信が完了されている必要があり、伝播すべき閾値情報127の閾値バージョンは「2」であり、伝播時刻は「xx/yy/zz 13:00:00」であることがわかる。また、計算機「DC2」に閾値情報127を送信する際には、閾値情報137を送信する際の依存計算機はなく、伝播すべき閾値情報127の閾値バージョンは「2」であり、伝播時刻は「xx/yy/zz 13:00:00」であることがわかる。
【0104】
次に、管理計算機133のメモリ136に格納されている閾値計算方法情報143について説明する。閾値計算方法情報143は、各閾値を導出するための計算方法を示す。
図19に示すように、閾値計算方法情報143は、閾値名欄1901及び計算方法欄1902から構成される。
【0105】
閾値名欄1901には、閾値を識別する名称が格納される。計算方法欄1902には、各閾値を算出するための計算方法が格納される。
【0106】
具体的に、閾値計算方法情報143の行1903及び行1904を例示して説明する。
図19では、例えば、閾値「a1」は、「(処理回数)/(合計処理回数)」により算出される。また、閾値「a2」は、「min(在庫数)」が閾値である。すなわち、在庫数の最小値が閾値「a2」の値として算出される。
【0107】
次に、計算機101のメモリ103に格納されている更新方法別処理スクリプト情報129について説明する。
図20に示すように、更新方法別処理スクリプト情報129は、データの更新方法に対応する処理スクリプトの起動方法を示す情報である。更新方法別処理スクリプト情報129は、更新実行部114により参照されて、処理スクリプト117が軌道される。
図20に示すように、更新方法別処理スクリプト情報129は、更新方法名欄2001、処理スクリプト名書式欄2002、クラスタ状態欄2003及び更新結果欄2004から構成される。
【0108】
更新方法名欄2001には、データの更新方法の名称が格納される。処理スクリプト名書式欄2002には、更新方法名欄2001に格納された更新方法を実現するための処理スクリプト117の起動方法が格納される。クラスタ状態欄2003には、クラスタの状態を示す情報が格納される。更新結果欄2004には、更新結果を示す情報が格納される。
【0109】
具体的に、更新方法別処理スクリプト情報129の行2005及び行2007を例示して説明する。
図20では、更新方法が「ロック」の場合には、処理スクリプト「http://db/sync/(テ゛ータヘ゛ース名)/(キー)/(値)」が起動されることがわかる。また、更新方法が「非ロック1」の場合には、処理スクリプト「http://db/async1/ (テ゛ータヘ゛ース名)/(キー)/(値)」が起動されることがわかる。
【0110】
次に、計算機101のメモリ103に格納されている選択済み更新方法情報128について説明する。
図21に示すように、選択済み更新方法情報128には、選択された更新方法を示す情報が格納される。
図21では、更新方法として「非ロック1」が選択されたことがわかる。
【0111】
次に、計算機101のメモリ103に格納されている閾値合成方法情報207について説明する。閾値合成方法情報207は、後述する閾値検索処理において、計算機101間で送受信される閾値情報に含まれる閾値を合成し新たな閾値を取得する閾値合成処理の方法を示す情報であり、閾値検索部111が閾値合成処理を実行する際に使用される情報である。
【0112】
図22に示すように、閾値合成方法情報207は、閾値名欄2201及び閾値合成方法名欄2202から構成される。閾値名欄2201には、閾値を識別する名称が格納される。閾値合成方法名欄2202には、閾値合成処理の方法を示す情報が格納される。
【0113】
具体的に、閾値合成方法情報207の行2203及び行2204を例示して説明する。
図22では、閾値が「a1」の場合の閾値合成方法は「総和型」であり、閾値が「a2」の場合の閾値合成方法は「最大値型」であることがわかる。
【0114】
次に、計算機101のメモリ103に格納されているマージリクエストキュー132に格納されるマージリクエストついて説明する。マージリクエストには、データの更新処理の実行後に、マージ実行部119に実行させる処理方法が含まれる。
図23に示すように、マージリクエストキュー132に含まれるマージリクエスト2300は、DB名欄2301、キー欄2302、更新前値欄2303、更新後値欄2304及びマージ処理名欄2305から構成される。
【0115】
DB名欄2301には、データ格納部131を識別する情報が格納される。キー欄2302には、データ格納部131内のデータを識別するキーが格納される。更新前値欄2303には、指定されたデータの更新を処理する前の値が格納される。更新後値欄2304には、指定されたデータの更新を処理した後の値が格納される。マージ処理名欄2305には、指定されたデータをマージする際のマージ方法の情報が格納される。
【0116】
具体的に、マージリクエスト2300の行2306を例示して説明する。
図23では、DB名「DB1」のキー「在庫数/Package1/Warehouse1」に対応するデータの更新前の値が「200」であり、更新後の値が「190」であり、マージ処理する場合には更新値を総和してマージする「総和型マージ」処理が行われることがわかる。
【0117】
次に、計算機101のメモリ103に格納されているマージ方法別処理スクリプト情報130について説明する。マージ方法別処理スクリプト情報130は、1つ以上のマージ処理に対して、マージ実行部119がマージ処理を実行する際に参照され、マージ実行部119が処理スクリプト117を起動する方法を示す情報が格納される。
図24に示すように、マージ方法別処理スクリプト情報130は、
図24に示すように、マージ処理名欄2401及び処理スクリプト名書式欄2402から構成される。
【0118】
マージ処理名欄2401には、マージ処理方法を識別する名称が格納される。処理スクリプト名書式欄2402には、マージ処理名に対応するマージ処理を実行する際の処理スクリプト117の起動方法が格納される。
【0119】
具体的に、マージ方法別処理スクリプト情報130の行2403及び行2404を例示して説明する。
図24では、マージ処理名が「三方マージ」の場合の処理スクリプト117の起動方法は「http://merge/threeway//(テ゛ータヘ゛ース名)/(キー)/(更新前値)/(更新後値)」である。また、マージ処理名が「上書きマージ」の場合の処理スクリプト117の起動方法は「http://merge/override/ (テ゛ータヘ゛ース名)/(キー)/(更新後値)」であることがわかる。
【0120】
次に、計算機101のメモリ103に格納されている計算機固有情報125に含まれるクラスタ内計算機状態情報209について説明する。クラスタ内計算機状態情報209は、クラスタに含まれる計算機の状態を示す情報である。クラスタ内計算機状態は、計算機自身または計算機を接続するネットワークの障害により、クラスタ内に含まれる任意の2つの計算機の間の接続が正常または異常である状態を示す。
図25に示すように、クラスタ内計算機状態情報209は、計算機名欄4801、DC1欄4802、DC2欄4803、DC3欄4804及びクラスタ名欄4808から構成される。
【0121】
計算機名欄4801には、クラスタに含まれる計算機101の名称が格納される。DC1欄4802、DC2欄4803及びDC3欄4804には、それぞれ、接続される101との接続状態の情報が格納される。クラスタ名欄4808には、クラスタを識別する名称が格納される。
【0122】
具体的に、クラスタ内計算機状態情報209の行4805〜行4807を例示して説明する。
図25では、クラスタ名「C1」に含まれる計算機101は、「DC1」、「DC2」及び「DC3」であり、「DC1」と「DC1」とは同一計算機のため、DC1欄4802には同一計算機であることを示す「×」が格納される。また、DC2欄4803には「DC1」と「DC2」との接続が「正常」であることを示す情報が格納され、後述する閾値合成処理の実施が可能であることを示す。DC3欄4804には「DC1」と「DC3」との接続が「通信不可」の状態であることを示す情報が格納される。また、行4806のDC3欄には、「DC2」と「DC3」との接続が「通信不可」の状態であることを示す情報が格納される。
【0123】
(1−4)データ更新処理
次に、本実施の形態における情報処理方法の実行手順について
図26〜
図41を参照して説明する。以下に説明する情報処理方法に対応する各機能部は、計算機101がメモリ103から読み出して実行するプログラムによって実現される。そして、このプログラムは、以下に説明される各種の動作を行うためのコードから構成されている。
【0124】
本実施の形態では、ユーザ端末105からのユーザリクエスト145を受信して、計算機101がメモリ103に格納されたアプリケーション108を実行して更新リクエスト146を更新実行部114に送信する。そして、更新実行部114は、予め選択された所定の更新方法に応じてデータ格納部131のデータを更新する。このとき、計算機101は、ユーザリクエスト145に含まれる情報をもとにアプリケーション108を実行するだけでなく、ユーザリクエスト145および所定の閾値情報を用いて、データ正常性が保証できる更新方法のうち、可用性及び処理時間短縮効果が得られる更新方法を選択する。
【0125】
まず、本実施の形態にかかる更新方法選択処理の全体処理について説明する。更新方法選択処理において、計算機101及び管理計算機133が実行する全体処理は、アプリケーション実行及びデータ更新処理シーケンス(S1)、閾値合成処理シーケンス(S2)、マージ処理シーケンス(S3)、ユーザ処理実績作成処理シーケンス(S4)及び閾値テーブル作成および伝播処理シーケンス(S5)の5つの処理シーケンスからなる。計算機101は、ユーザ端末105からのユーザリクエスト145を受信した時点と、マージ処理の周期になった時点と、閾値テーブル206作成周期になった時点の3つの時点で上記した5つのシーケンスを必要に応じて実行する。
【0126】
図26に示すように、まず、計算機101は、ユーザ端末105からユーザリクエスト145を受信する(2501)。ステップ2501では、計算機101上の複数のCPU102を用いて複数のスレッドまたはプロセスとして実行し、複数のユーザリクエスト145を同時に受信してもよい。また、ステップ2501では、複数の計算機101上で別のプロセスとして実行され、複数のユーザリクエスト145を同時に受信してもよい。
【0127】
次に、ステップ2501において受信したユーザ端末105からのユーザリクエストに応じて、計算機101のアプリケーション制御部106、更新方法選択部110、更新実行部114がアプリケーションの実行およびデータ更新処理シーケンス(S1)を実施する(S2502)。ステップ2501では、必要に応じて、一の計算機101と他の計算機101の閾値検索部111が閾値合成処理シーケンス(S2)を実行する。ステップ2501は、ステップ2501と同様に複数スレッドまたは複数プロセスの形態で実行してもよい。また、ステップ2502は、ステップ2501と同様に複数計算機上で実行してもよい。
【0128】
次に、計算機101は、マージ処理のタイミングかを判定する(2503)。ステップ2503において、マージ処理のタイミングであった場合には、マージ実行部119が、マージリクエストキュー132を参照して、マージ処理シーケンス(S3)を実施する(2504)。また、ステップ2503において、マージ処理のタイミングではない場合には、ステップ2505以降の処理を実行する。
【0129】
ステップ2505において、計算機101及び管理計算機133は、閾値テーブル206の作成周期であるかを判定する(2505)。ステップ2505において、閾値テーブル206の作成周期であると判定された場合には、計算機101の処理実績収集部123及び管理計算機133の閾値テーブル作成部139は、局所ユーザ処理実績情報収集及びユーザ処理実績作成処理シーケンス(S4)を実施する(2506)。
【0130】
そして、管理計算機133の閾値テーブル作成部139、閾値情報伝播管理部140、計算機101の更新方法選択部110が閾値テーブル206の作成および伝播処理シーケンス(S5)を実施して(2507)、処理を終了する。
【0131】
一方、ステップ2505において、閾値テーブル206の作成周期ではないと判定された場合には、処理を終了する。
【0132】
次に
図27を参照して、アプリケーション実行処理及びデータ更新処理シーケンス(S1)について説明する。当該処理は、計算機101がユーザ端末105からのユーザリクエスト145を受信したタイミングで実行される処理であり、アプリケーション108の実行及びアプリケーションを実行することにより派生するデータ更新処理も含む。以下では、更新方法選択部110が更新方法選択処理(P2)において閾値に基づく更新方法の選択を実施し、更新実行部1605が選択された結果を用いて更新処理(P3)を実行するシーケンスについて説明する。
【0133】
図27に示すように、まず、ユーザ端末105は、ユーザリクエスト145を計算機101のアプリケーション制御部106に送信する(2607)。そして、アプリケーション制御部106は、データ更新可否取得インタフェースを更新方法選択部110に送信する(2608)。次に、アプリケーション制御部106は、アプリケーションを実行(P1)する(2609)。次に、更新方法選択部110は、参照リクエストを参照実行部149へ送信する。
【0134】
次に、参照実行部149は、参照リクエストに対応する参照結果を更新方法選択部110へ送信する。次に、更新方法選択部110は、更新方法選択処理(P2)を実行する(2612)。次に、更新方法選択部110は、更新方法選択結果通知を更新実行部114へ送信する。次に、アプリケーション制御部106は、更新インタフェースを更新実行部114へ送信する。次に、更新実行部114は、更新処理(P3)を実行する(2615)。次に、更新実行部114は、マージリクエストをマージリクエストキュー132へ送信する。次に、更新実行部114は、更新結果をアプリケーション制御部106へ送信する。最後に、アプリケーション制御部106は、アプリケーションを終了する処理を実行する(2618)。
【0135】
次に、
図28を参照して、アプリケーション実行処理(P1)について説明する。アプリケーション実行処理(P1)は、計算機101のアプリケーション制御部106により実行される処理である。アプリケーション制御部106は、ユーザ端末105からのユーザリクエスト145に応じてアプリケーション108を実行するとともに、アプリケーション108への入力を利用し予め更新方法選択処理(P2)を実行する。これにより、アプリケーション108が更新実行部114に対してデータ更新を要求する際には、予め選択した更新方法を利用することができる。
【0136】
図28に示すように、アプリケーション制御部106は、ユーザ端末105からユーザリクエスト145を取得する(2701)。
【0137】
そして、アプリケーション制御部106のリクエストパース部109は、ユーザリクエスト145からユーザ名、アプリケーション名およびアプリケーション入力値を取得する(2702)。そして、リクエストパース部109は、ステップ2702において取得したユーザ名、アプリケーション名およびアプリケーション入力値を更新方法選択部110の更新方法取得インタフェース113に送信し、更新方法選択部110に更新方法選択処理(P2)を実施させる(2703)。
【0138】
そして、アプリケーション制御部106は、アプリケーション名に合致するアプリケーション108を実行する(2704)。ステップ2704は、ステップ2703の終了を待たずにステップ2702の直後に実施し、ステップ2702とステップ2703とを同時に実行してもよい。例えば、計算機101上でステップ更新方法選択処理(P2)を実行するプロセスとアプリケーション108を実行するプロセスを同時に実行しておき、リクエストパース部109が2つのプロセスを同時に実行させてもよい。
【0139】
そして、アプリケーション108は、更新リクエスト146を作成し、更新実行部114の更新インタフェース115に送信する(2705)。
【0140】
上記したアプリケーション実行処理(P1)により、リクエストパース部109が更新方法選択処理(P2)に必要な情報であるユーザ名、アプリケーション名およびアプリケーション入力値をユーザリクエスト145から取得し、更新方法選択処理(P2)に引き渡す。この処理は、アプリケーション108の実行とは別に実施するようにしてもよい。これにより、更新方法選択処理(P2)に必要な情報とそれを引き渡すタイミングを知る必要なく、アプリケーション108を実装することができる。
【0141】
また、図示していない他の計算機において、更新方法選択処理(P2)を実行できない場合でも、更新インタフェース115を受信することが出来れば、アプリケーション108を改変することなく実行させることが可能となる。これにより、計算機間でのアプリケーション108の移行が可能となる。具体的に、他の計算機で実行可能な更新インタフェース115としては、SQLなどの汎用的なクエリがあり、SQLに対応したデータベースソフトウェアを実行している計算機ではアプリケーション108を実行することもできる。
【0142】
次に、
図29を参照して、更新方法選択処理(P2)について説明する。更新方法選択処理(P2)は、更新方法選択部110により実行され、当該処理により後述する更新実行部114における更新処理に使用する選択済み更新方法情報128を取得することができる。更新方法選択部110が備える閾値検索部111および閾値判定部112は、それぞれ閾値情報127からの閾値の検索と、当該閾値を利用して優先順位に従い更新方法選択処理を実行して、最終結果として選択済み更新方法情報128を取得する。
【0143】
閾値とは、アプリケーション毎に決められたデータ正常性が保証できる境界を意味する。また、閾値判定方法は、特定アプリケーションで特定更新方法を用いてデータの更新を実施したときにデータ正常性が保証できる範囲内であることが確認できた場合に、当該更新方法を用いるように選択する判定処理を意味する。さらに、優先順位は、データ正常性が保証される更新方法が複数ある場合に、複数の更新方法のうちアプリケーション可用性向上効果もしくはアプリケーション実行時間短縮効果が高いものを先に検索することを意味する。
【0144】
図29に示すように、まず、更新方法選択部110は、更新方法取得インタフェース113によりユーザ名、アプリケーション名、アプリケーション入力値を取得する(2801)。
【0145】
そして、閾値判定部112は、アプリケーション別閾値判定方法情報126を参照して、アプリケーション名が含まれる行を、検索対象閾値判定リストLthに格納する(2802)。そして、閾値判定部112は、検索対象閾値判定リストLthを優先順位でソートする(2803)。
【0146】
そして、閾値判定部112は、検索対象閾値判定リストLthに行があるか判定する(2804)。ステップ2804において、検索対象閾値判定リストLthに行があると判定された場合には、閾値判定部112は、ステップ2805以降の処理を実行する。一方、ステップ2804において、検索対象閾値判定リストLthに行がないと判定された場合には、閾値判定部112は、ステップ2815以降の処理を実行する。
【0147】
ステップ2805において、閾値判定部112は、検索対象閾値判定リストLthの先頭行のクラスタ状態欄1105の情報をメモリに記憶する。そして、閾値判定部112は、計算機固有情報125のクラスタ状態と一致するかを判定する(2806)。ステップ2806において、計算機固有情報125のクラスタ状態と一致する場合は、ステップ2807以降の処理を実行する。一方、ステップ2806において、計算機固有情報125のクラスタ状態と一致しない場合は、ステップ2804へ戻る。
【0148】
ステップ2807において、閾値判定部112は、該当行の閾値判定方法1106に記載された閾値名と、ユーザ名、計算機名とを閾値検索部111に送信し、閾値検索部111が閾値検索処理(P3)を実施し、閾値判定部112に閾値を返す。
【0149】
そして、閾値判定部112は、アプリケーション別閾値判定方法情報126の閾値判定方法に、受信した閾値、アプリケーション入力値、ユーザ名を入力して閾値判定結果を取得する(2808)。
【0150】
そして、閾値判定部112は、閾値判定結果がtrueかを判定する(2809)。ステップ2809において、閾値判定結果がtrueであると判定された場合には、閾値判定部112は、ステップ2813以降の処理を実行する。一方、ステップ2809において、前記閾値判定結果がtrueではないと判定された場合には、閾値判定部112は、ステップ2810以降の処理を実行する。
【0151】
ステップ2810では、閾値合成方法情報207に該当する閾値名が含まれるかを判定する。ステップ2810において、閾値合成方法情報207に該当する閾値名が含まれると判定された場合は、閾値判定部112は、ステップ2811以降の処理を実行する。一方、閾値合成方法情報207に該当する閾値名が含まれていないと判定された場合には、閾値判定部112は、ステップ2814以降の処理を実行する。
【0152】
ステップ2811では、閾値検索部111は、閾値判定部112から閾値合成処理シーケンスに必要なユーザ名、計算機名および閾値名を送信されると、閾値合成処理シーケンス(S2)を実施して閾値を取得し、閾値判定部112に送信する。
【0153】
そして、閾値判定部112は、ステップ2811で取得した閾値を用いて、再度取得した閾値判定結果がtrueかを判定する(2812)。ステップ2812において、閾値判定結果がtrueである場合には、閾値判定部112は、ステップ2813以降の処理を実行する。一方、ステップ2812において、閾値判定結果がtrueではないと判定された場合には、閾値判定部112は、ステップ2814以降の処理を実行する。
【0154】
また、ステップ2813では、更新方法選択部110は、該当行の更新方法名をメモリ上の選択済み更新方法情報128に格納する。
【0155】
また、ステップ2814では、閾値判定部112は、検索対象閾値判定リストLthから先頭行を削除する。次いで、閾値判定部112は、デフォルトを選択済み更新方法情報に格納する(ステップ2815)。
【0156】
上記した更新方法選択処理(P2)により、閾値判定部112が更新方法の選択に必要な閾値を特定し、閾値検索部111が特定した閾値を閾値情報から検索する。そして、閾値判定部112は、閾値、ユーザ名およびアプリケーション入力値を用いて閾値を判定し、その結果更新方法を選択することができる。これにより、データ正常性が保証できる範囲の更新方法を選択することが可能となる。
【0157】
次に、
図30を参照して、更新処理(P3)について説明する。
図30に示すように、更新実行部114は、更新インタフェース115により更新リクエストを取得する(2901)。そして、更新実行部114は、メモリ上の選択済み更新方法情報128を参照する(2902)。
【0158】
そして、更新実行部114は、更新方法別処理スクリプト情報129を参照し、ステップ2902で参照した選択済み更新方法情報128と同一の更新方法名である行を検索し、処理スクリプト名を取得する(2903)。
【0159】
そして、ステップ2903で取得した処理スクリプト名に対応する処理スクリプト名書式に更新リクエスト146に含まれるデータベース名、キー及び値を代入し、処理スクリプト名を取得して更新処理起動部116に提供する(2904)。
【0160】
続いて、更新処理起動部116は、ステップ2904において提供された処理スクリプト名で指定された処理スクリプト117を起動する(2905)。
【0161】
そして、更新処理起動部116は、処理スクリプト117の起動により更新された値について、キー、更新前の値、更新後の値をメモリに格納する(2906)。そして、処理スクリプト117は、処理スクリプトを起動した後、必要となるマージ処理名、キー、更新前値、更新後値をマージリクエスト2616に記載し、マージリクエストキュー132に送信する(2907)。
【0162】
次に、
図31を参照して、閾値検索処理(P4)について説明する。
図31に示すように、閾値検索部111は、閾値判定部112からユーザ名、データ処理計算機名、閾値名を取得する(3001)。そして、閾値検索部111は、閾値テーブル206を参照して、ステップ3001で取得した閾値名(a1)、ユーザ名(User1)、データ処理計算機名(DC1)が含まれる行を検索する(3002)。
【0163】
続いて、閾値判定部112は、閾値テーブル206において該当行が検索できたかを判定する(3003)。ステップ3003において、該当行が検索できたと判定された場合には、閾値判定部112は、該当行の閾値(0.3)を閾値判定部112に送信する(S3004)。一方、ステップ3003において、該当行が検索できなかったと判定された場合には、閾値判定部112は、閾値名(a1)を含み、ユーザ名(Default)、データ処理計算機名(Default)を含む行の閾値(0)を閾値判定部112に送信する。
【0164】
次に、
図32〜
図34を参照して、閾値合成処理について説明する。閾値合成処理は、閾値検索部111が、閾値検索処理(P4)を実行中に実行する処理であり、一の計算機101の閾値検索部111と他の計算機101の閾値検索部111とが通信することにより実施される。以下では、
図32に示すように、計算機名DC1の計算機101が、計算機名DC2の計算機とは通信可能でありかつ計算機名DC3とは通信不可能な状態で、3つの計算機が同一のクラスタに所属している場合に閾値合成処理(P5)実行するシーケンスについて説明する。
【0165】
図33では、計算機DC1の閾値検索部111と計算機DC2の閾値検索部111とが通信して閾値合成処理(P5)を実行するシーケンスについて説明する。閾値合成処理(P5)は、閾値検索処理(P4)の実行中に、計算機101間で閾値を融通し合い、閾値同士を合成する処理である。ここで、融通処理とは、計算機101が更新方法選択処理を実行する際に、閾値情報127から得られる閾値が小さい場合に、単一の計算機101が取得できる閾値のみを利用するよりも、複数の計算機101が取得できる閾値を合算してより大きな閾値として一時的に利用し、更新方法選択処理を実行可能とする処理である。本実施の形態では、閾値合成処理(P5)により、特定ユーザが特定計算機のみを利用でき、その計算機における閾値が小さい場合に、他の計算機と閾値の情報を交換し、一時的に閾値を大きくして可用性向上及び実行時間短縮を図っている。
【0166】
図33に示すように、まず、計算機DC1の閾値検索部111は、計算機DC2の閾値検索部111に融通判定要求を送信する(3203)。
【0167】
計算機DC1の閾値検索部111から融通判定要求を送信された計算機DC2の閾値検索部111は、融通判定処理を実行する(S3204)。そして、計算機DC2の閾値検索部111は、融通判定処理の結果である融通可否情報を計算機DC1の閾値検索部111に送信する(3205)。
【0168】
そして、融通可否情報を計算機DC1から受信した計算機DC2の閾値検索部111は、閾値合成処理(P5)を実行する(3206)。そして、計算機DC1の閾値検索部111は、閾値合成処理(P5)を実行した結果を示す融通済み通知を計算機DC2の閾値検索部111に送信する(3207)。最後に、DC2の閾値検索部111は、融通後閾値更新処理を実行する(3208)。
【0169】
次に、
図34を参照して、閾値合成処理(P5)の詳細について説明する。
図34に示すように、閾値検索部111は、閾値判定部112からユーザ名、データ処理計算機名、閾値名を取得する(3301)。そして、閾値検索部111は、クラスタ内計算機状態情報209から同一クラスタに所属する別の計算機名を検索する(3302)。そして、閾値検索部111は、ステップ3302における検索の結果、該当した計算機のうち正常な計算機に閾値が融通可能かを問い合わせる(3303)。
【0170】
そして、ステップ3303の問い合わせの結果、閾値検索部111は、融通可能判定情報を受信したかを判定する(3304)。ステップ3304において、融通可能判定情報を受信したと判定された場合には、閾値検索部111は、ステップ3305以降の処理を実行する。一方、ステップ3305において、融通可能判定情報を受信していないと判定された場合には、閾値検索部111は、閾値合成処理(P5)を終了する。
【0171】
ここで、融通可能判定情報とは、閾値の融通が可能であるかを計算機101が判定する処理である。例えば、閾値a1について、融通可能かを他の計算機101に問い合わせた場合に、該問い合わせを受信した計算機101の閾値検索部111が、閾値が融通可能かを判定する。具体的に、該計算機101における閾値a1が0より大きいか、などの判定処理を実行し、融通可能である場合には、融通可能な閾値a1の値を融通可能判定情報として返す。
【0172】
そして、ステップ3305において、閾値検索部111は、閾値合成方法情報207を参照して、閾値名に該当する行の閾値合成方法名を取得する(3305)。そして、閾値検索部111は、ステップ3305において取得した閾値合成方法に応じた合成処理を実行する(3306)。
【0173】
ここで、ステップ3306において実行される合成処理とは、ステップ3304で受信した1つ以上の融通可能判定情報に基づいて実施される。例えば、閾値合成処理を実施する計算機における閾値が0.2であり、受信した融通可能判定情報が「閾値0.3を融通可能」との情報を含み、かつステップ3305において取得した閾値合成方法が「総和型」であったとする。この場合、閾値合成方法に示されるとおり、閾値0.2及び閾値0.3の総和を求めることで、合成後の閾値0.5を取得することができる。
【0174】
このように、閾値合成処理(P5)を実行することにより、2つ以上の計算機において、閾値を合成し、単一計算機で使用できる閾値より大きな閾値に基づいて更新方法を選択することが可能となる。これにより、分断障害時のアプリケーション可用性およびアプリケーション実行時間短縮を実現する頻度を高めることができる。
【0175】
次に、
図35及び
図36を参照して、マージ処理について説明する。マージ処理は、マージ実行部119が実行する処理であり、一の計算機101のマージ実行部119と他の計算機101のマージ実行部119とが通信することにより実施される。以下では、計算機DC1のマージ実行部119が計算機DC2のマージリクエストキュー132から情報を取得可能で、2つの計算機が同一のクラスタに所属している場合に、マージ実行処理(P6)を実行するシーケンスについて説明する。
【0176】
図35に示すように、まず、タイマー107は、マージ起動インタフェース122をマージ実行部119に送信する(3405)。ステップ3405において、マージ起動インタフェース122を受信したマージ実行部119は、マージ処理を起動させる(3406)。
【0177】
ステップ3406においてマージ処理が起動されると、計算機DC1のマージリクエストキュー132は、マージ実行部119にマージリクエスト取得を要求する(3407)。続いて、計算機DC2のマージリクエストキュー132は、マージ実行部119にマージリクエスト取得を要求する(3408)。その後、マージ実行部119は、マージ処理を実行(P6)する(3409)。
【0178】
次に、
図36を参照して、マージ実行部119によるマージ処理について説明する。マージ処理は、タイマー107によりマージ起動インタフェース122が呼び出されたタイミングで実行される。マージ処理では、マージ実行部119は、更新実行部114により生成されたマージリクエスト2616に応じた処理が実行される。
【0179】
以下では、マージ起動インタフェース122は、タイマー107により周期的にマージ実行部に対して呼び出す場合を示すが、かかる例に限定されない。例えば、マージ起動インタフェース122は、計算機101におけるクラスタ状態情報202の状態変更に応じて呼び出されるようにしてもよい。クラスタ状態情報202の状態変更とは、例えばクラスタに含まれる計算機間の通信が不可能である「分断障害」の状態が、通信経路の回復などにより「正常」に変更される場合などを意味する。クラスタ状態が「分断障害」の状態では、クラスタに含まれる計算機同士が互いに通信しないまま独自にデータを更新し、データ格納部131のデータが異なり整合性がない状態となっている可能性がある。クラスタ状態が「分断障害」から「正常」に変更されたタイミングで、計算機間の通信が可能となる。このため、通信が可能となったタイミングで各計算機からマージリクエストを集約し、データに対してマージ処理を実行することで、データ整合性がある状態にする。
【0180】
図36に示すように、マージ実行部119は、マージ起動インタフェース122を呼び出されたタイミングでマージ処理を開始する(3501)。
【0181】
そして、マージ実行部119は、マージリクエストキュー132が空かを判定する(3502)。ステップ3502において、マージリクエストキュー132が空ではない場合には、マージリクエストキュー132から先頭マージリクエストを取得し、マージリクエストキュー132から先頭マージリクエストを削除する(3503)。
【0182】
そして、ステップ3503において取得したマージリクエストから、マージ処理名118を取得し、マージ処理起動部120がマージ処理名118に該当する処理スクリプト117を起動する(3504)。
【0183】
次に、
図37を参照して、ユーザ処理実績作成処理シーケンス(S4)について説明する。ユーザ処理実績作成処理は、管理計算機133が、局所ユーザ処理実績情報203を収集して、ユーザ処理実績情報302を作成する処理である、局所ユーザ処理実績情報203は、管理計算機133に接続された各計算機によって作成されたユーザ処理実績の情報であり、ユーザ処理実績情報302は、全ての計算機のユーザ処理実績を集約したものである。
【0184】
例えば、ユーザUser1が、計算機DC1と計算機DC2を利用した場合に、計算機DC1及び計算機DC2にそれぞれ作成された局所ユーザ処理実績情報203が作成される。各計算機のユーザ処理実績情報203を管理計算機133が集約し、一つのユーザ処理実績情報302にまとめることで、ユーザUser1が全ての計算機を利用した実績を管理することができる。
【0185】
図37に示すように、タイマー107は、タイマーシグナルを管理計算機133の閾値テーブル作成部139に送信する(3604)。ステップ3604においてタイマーシグナルを受信した閾値テーブル作成部139は、ユーザ処理実績作成処理を開始する(3605)。
【0186】
閾値テーブル作成部139は、各計算機101の処理実績収集部123から、局所ユーザ処理実績情報203を受信する(3606)。そして、閾値テーブル作成部139は、ステップ3606において各計算機101から受信した局所ユーザ処理実績情報203を集計して、ユーザ処理実績情報302を作成する(3607)。
【0187】
次に、
図38を参照して、閾値テーブル作成及び伝播処理シーケンス(S5)について説明する。閾値テーブル作成処理は、管理計算機133の閾値テーブル作成部139により実行され、閾値伝播処理は、閾値情報伝播管理部140が実行する処理である。本実施の形態では、閾値テーブル作成部139が閾値情報127の閾値テーブル206を作成する閾値テーブル作成処理(P7)を実行する。閾値テーブル作成部139は、閾値テーブル作成処理により作成された閾値情報127を閾値情報伝播管理部3702に提供する。そして、閾値情報伝播管理部140は、各計算機101の更新方法選択部110に閾値情報127を送信する。
【0188】
図38に示すように、まず、閾値テーブル作成部139は閾値テーブル作成処理(P7)を実行する(3704)。そして、閾値テーブル作成部139は、閾値テーブル作成処理で作成された閾値情報を閾値情報伝播管理部140に送信する(3705)。
【0189】
そして、閾値情報伝播管理部140は、閾値情報伝播処理(P8)を実行する。そして、閾値情報伝播管理部140は、閾値情報を計算機101の更新方法選択部110に送信する(3707)。そして、更新方法選択部110は、閾値情報伝播完了を閾値情報伝播管理部140へ送信する(3708)。
【0190】
次に、
図39を参照して、閾値テーブル作成処理(P7)について説明する。以下では、特に、閾値テーブル作成処理で閾値a1を作成する場合について説明する。閾値テーブル作成処理は、管理計算機133の閾値テーブル作成部139が、閾値テーブル206を作成する処理である。閾値テーブル206には、ユーザ名と計算機名の組み合わせに対応する閾値が格納される。
【0191】
閾値テーブル作成処理(P7)により、閾値テーブル206にユーザ名と計算機名の組み合わせに対応する閾値を設定することができ、特定アプリケーションを実行した場合の更新方法を、計算機101に応じて選択することができる。ユーザとデータセンタの相関関係を利用して、特定ユーザに対して相関が大きい計算機に対して大きい閾値を設定することにより、分断障害時のアプリケーションの可用性及びアプリケーションの実行時間短縮の効果を得られる頻度を最大化することが可能となる。
【0192】
以下では、閾値テーブル作成処理のうち、閾値名をa1とし、当該閾値に関連する閾値テーブル206の値を更新する処理について説明する。なお、閾値テーブル206は、上記したように、1つ以上の閾値を格納することができる。閾値テーブル206に複数の閾値を格納する場合には、以下の処理を各閾値に対して繰り返し実行することにより、閾値テーブル206全体の作成及び更新を行うことができる。
【0193】
図39に示すように、まず、閾値テーブル作成部139は、閾値計算方法情報143を参照して、閾値名に対応する計算方法を参照する(3801)。例えば、計算方法が(処理回数)/(合計処理回数)である場合には、ユーザ処理実績のうち、特定計算機における処理回数を、計算機全体における処理回数で除算する計算式である。また、ステップ3801において、閾値テーブル作成部139は、検索対象ユーザ名リストLuを作成し、ユーザ名リスト301で初期化する。
【0194】
そして、閾値テーブル作成部139は、検索対象ユーザ名リストに残りの要素があるかを判定する(3802)。ステップ3802において、検索対象ユーザ名リストに残りの要素があると判定された場合には、検索対象ユーザ名リストの先頭を該当ユーザ名(User1)とし、検索対象計算機名リストLdcを作成、計算機名リスト201で初期化する(3803)。一方、ステップ3802において、検索対象ユーザ名リストに残値の要素がないと判定された場合には、ステップ3812以降の処理を実行する。
【0195】
続いて、閾値テーブル作成部139は、検索対象計算機名リストLdcに残りの要素があるかを判定する(3804)。ステップ3804において、検索対象計算機名リストLdcに残りの要素があると判定された場合には、ステップ3805以降の処理を実行する。一方、ステップ3804において、検索対象計算機名リストLdcに残りの要素がないと判定された場合には、ステップ3811以降の処理を実行する。
【0196】
ステップ3805において、閾値テーブル作成部139は、検索対象計算機名リストLdcの先頭を該当計算機名(DC1)とする。また閾値テーブル作成部139は、ユーザ処理実績情報302を参照して、該当ユーザ名と該当計算機名が記載された行の処理回数(2)及び合計処理回数(5)を参照する。ステップ3801において参照した計算方法に処理回数(2)および合計処理回数(5)を代入して、計算結果を新規の閾値(0.4)として取得する。このとき、相関の大きい計算機に対しては、処理回数の数値が大きくなり、閾値の値も大きくなる。すなわち、閾値計算方法情報143に設定された計算方法が、処理回数に応じて閾値を求める計算式であるため、ステップ3805における閾値の計算においてユーザと計算機101との相関に応じた閾値を算出することができる。
【0197】
そして、閾値テーブル作成部139は、閾値テーブル206の該当閾値名(a1)、該当ユーザ名(User1)、該当計算機名(DC1)が記載された行を検索する(3806)。
【0198】
そして、閾値テーブル作成部139は、該当行を検索できたかを判定する(3807)。ステップ3807において、該当行を検索できたと判定された場合には、閾値テーブル作成部139は、検索行の閾値(0.3)を取得し、新規に設定する閾値(0.4)との差分を計算して、該当行の閾値差分(0.1)に格納する。また、閾値テーブル作成部139は、該当行の閾値に新規に設定する閾値(0.4)を格納する。閾値差分(0.1)は、後述する閾値情報伝播処理で使用する情報である。
【0199】
一方、ステップ3807において、該当行を検索できなかったと判定された場合には、閾値テーブル作成部139は、閾値テーブル206に、該当閾値名(a1)、該当ユーザ名(User1)、該当計算機名(DC1)、閾値(0.4)を格納するための行を作成する。また、閾値差分1306の値は閾値と同値とする。
【0200】
そして、閾値テーブル作成部139は、検索対象計算機名リストLdcから、該当計算機名を削除する(3810)。続いて、閾値テーブル作成部139は、検索対象ユーザ名リストLuから、該当ユーザ名を削除する(3811)。そして、閾値テーブル作成部139は、閾値バージョン205の値をインクリメントする(3812)。
【0201】
上記した閾値テーブル作成処理(P7)により、ユーザと相関の大きい計算機に対して大きい閾値を設定して、分断障害時のアプリケーションの可用性及びアプリケーションの実行時間短縮の効果を得られる頻度を最大化することが可能となる。
【0202】
次に、
図40及び41を参照して、閾値情報伝播処理(P8)について説明する。
図40は、閾値伝播処理の概要を説明する概念図である。
図40に示すように、管理計算機133から管理計算機133に接続された各計算機101a、101b及び101cに閾値情報が伝播される。管理計算機133は、閾値テーブル206を有し、閾値の差分情報を参照して閾値情報127を伝播する順番を決定する。
【0203】
具体的には、管理計算機133の閾値テーブル206かでは、計算機DC1の閾値は0.2から0.4に増加し、閾値差分は0.2であることがわかる。また、計算機DC2の閾値は0.5から0.3に減少し、閾値差分は−0.2であることがわかる。また、計算機DC4の閾値は0.3のまま変更していないため、閾値差分は0.0であることがわかる。
【0204】
この場合、管理計算機133は、閾値が小さいものから送信し閾値差分が負の計算機への送信が完了するまで、閾値差分が正である計算機に送信しない。すなわち、計算機DC1の送信可否は、計算機DC2に依存する関係となっている。この依存関係を、伝播情報208の依存計算機欄1802に格納する。
【0205】
閾値情報伝播管理部140は、伝播情報208を参照して、閾値の伝播対象となる計算機101に対して、該計算機101の依存計算機への閾値情報127の送信が完了したことを確認した後、該計算機101への閾値情報127の送信を開始する。このように、閾値情報伝播処理において、計算機101の依存関係を遵守して閾値情報127を送信する。これにより、計算機101の閾値伝播中に分断障害が発生し、すべての計算機に対して閾値を送信することができなくなったとしても、一部の計算機101に閾値情報127を送信した状態で計算機101の更新方法選択部110がデータ正常性を保証してデータ更新を行うことができる。
【0206】
例えば、
図40では、計算機DC1、計算機DC2及び計算機DC3の間で、閾値の合計が1を超えないことによりデータ正常性が保証されるアプリケーションが稼働されているとする。このとき、閾値情報伝播処理において、計算機DC2への送信が終わったあとに分断障害が発生したとする。本来は、計算機DC2への閾値情報127の送信の後にDC1に閾値情報127が送信されるところ、分断障害のため、計算機DC1へ閾値情報127を送信することができない。この場合、計算機DC1の閾値は0.2のままであり、計算機DC2の閾値は0.3に更新されており、計算機DC3の閾値は0.3のままである。すなわちこの状態では、閾値の合計は1を超えていない状態であり、仮にこの状態が継続されても、更新方法選択部110において選択される更新方法はデータ正常性を保証することができることとなる。
【0207】
閾値情報伝播管理部140により実行される閾値情報伝播処理(P8)は、管理計算機133上の閾値情報127を1つ以上の計算機101の更新方法選択部110に送信する処理である。
【0208】
図41に示すように、閾値情報伝播処理(P8)は、閾値バージョン205がインクリメントされたタイミングで起動される(4001)。閾値情報伝播管理部140は、伝播情報208の依存計算機及び伝播情報の情報をクリアする(4002)。
【0209】
そして、閾値情報伝播管理部140は、閾値テーブル206を参照して、閾値差分が負である行の計算機名をAとし、閾値差分が正である行の計算機名をBとし、伝播情報208内に計算機名Bを検索し、該当行の依存計算機に計算機名Bを記載する(4003)。
図40では、計算機名がDC1である計算機の閾値差分は0.1である。また計算機名がDC3である計算機の閾値差分は−0.1である。したがって、計算機DC1をBとし、計算機DC3をAとし、伝播情報208内の計算機DC1を検索する。その結果、
図18の伝播情報208の行1805を検索して、該当行の依存計算機欄1802にDC3を格納する。
【0210】
そして、閾値情報伝播管理部140は、伝播情報208を走査して(4004)、伝播情報208内に次に閾値情報127を送信する必要のある計算機101があるかを判定する(4005)。ステップ4005において、伝播情報208内に次の計算機101があると判定された場合には、次の計算機を、閾値情報伝播管理部140は、閾値情報127を送信する該当計算機101(該当計算機=DC1)とする(4006)。一方、ステップ4005において、伝播情報208内に次の計算機101がないと判定された場合には、閾値情報伝播管理部140は、閾値情報伝播処理を終了する。
【0211】
そして、ステップ4006において該当計算機とした計算機について、依存計算機があるかを判定する(4007)。ステップ4007において、依存計算機があると判定された場合には、依存計算機の閾値バージョン205が最新かを判定する(4008)。一方、ステップ4007において、依存計算機がないと判定された場合には、ステップ4005以降の処理を繰り返す。
【0212】
ステップ4008において、依存計算機の閾値バージョン205が最新であると判定された場合には、閾値情報伝播管理部140は、ステップ4010以降の処理を実行する。一方、ステップ408において、依存計算機の閾値バージョン205が最新ではないと判定された場合には、閾値情報伝播管理部140は、依存計算機に閾値テーブル206を送信して、伝播情報208の閾値バージョン205を最新にする(4009)。
【0213】
そして、閾値情報伝播管理部140は、該当計算機(DC1)に閾値情報127を送信し、伝播情報208の該当計算機に該当する行の閾値バージョン205を最新にする(4010)。
【0214】
次に、管理計算機133に接続されている管理者端末147の管理者画面のユーザインタフェースについて説明する。管理者画面のユーザインタフェースとしては、例えば、アプリケーション別閾値判定方法情報126における優先順位1104を設定するための優先度設定画面を例示できる。
図42に示す管理者設定画面4101は、管理者が使用する設定画面の一例である。また、優先度設定画面4102は、管理者がアプリケーション別閾値判定方法情報126に格納される優先順位を入力するための画面の一例である。
【0215】
図42に示すように、A在庫管理4103は、アプリケーション「A在庫管理」に関する更新方法の優先順位を設定する入力欄である。また、B口座残高引出4104は、アプリケーション「B口座残高引出」に関する更新方法の優先順位を設定する入力欄である。また、表示欄4105、表示欄4106、表示欄4107には、それぞれ、非ロック1、非ロック2、ロックが表示され、それぞれ更新方法の名称を示している。また、入力欄4108〜4113は、優先順位の入力欄である。
【0216】
管理者は、管理者設定画面4101の入力欄4108〜4133の入力欄に数値を入力する。管理者により入力欄4108〜4133に入力された数値がアプリケーション別閾値判定方法情報126の優先順位として設定される。数値の小さい閾値が入力された場合には、当該閾値に対応する更新方法が、上記した更新方法選択処理において、優先的に選択される更新方法となる。
【0217】
次に、ユーザ端末105の表示画面のユーザインタフェースの一例について説明する。
図43は、ユーザ端末105の表示画面に表示されるユーザリクエスト処理完了画面の一例である。
図43に示すユーザリクエスト処理完了画面4201は、ユーザ端末105から送信されたユーザリクエスト145に対応するアプリケーション108の実行結果を返答する画面である。
【0218】
図43に示すように、ユーザリクエスト処理完了画面4201は、A在庫管理処理結果欄4202及びB口座残高引出処理結果欄4203を含む。
【0219】
A在庫管理処理結果欄4202の処理結果欄4202には、「処理完了です。(更新終了)」と表示されている。これは、ユーザからのリクエストに応じてアプリケーション「A在庫管理」が実行され、データの更新も完了したことを意味する。
【0220】
また、B口座残高引出処理結果欄4203の処理結果欄4205には、「処理を受け付けましたが、現在処理を完了できません。(更新待ち)」と表示されている。これは、ユーザからのリクエストに応じてアプリケーション「B口座残高引出」が実行されたが、選択された更新方法による更新が、現在のクラスタ状態では完了できなかったことを意味する。
【0221】
上記の表示例以外にも、更新処理の間にロックが発生し、それによって計算機側でロックが開放されるまで待機するために返答が返ってこないという内容を表示しても良い。この例のうち、アプリケーション可用性向上およびアプリケーション実行時間短縮の効果が現れている例は、アプリケーション「A在庫管理」の処理結果である。
【0222】
上記アプリケーション「A在庫管理」の処理結果は、計算機101がユーザのリクエストに対して処理完了を通知して次のリクエストを待機している状態であることを意味する。一方、アプリケーション「B口座残高引出」の処理結果は、処理を完了していないことを通知し、ユーザ端末から次のリクエストを送信できないか、または送信しても実行されない状態であることを意味する。これはユーザから見ると、一時的にアプリケーションが使用できない状態にあるのと同義である。
【0223】
また、上記したように、処理結果がロックなどにより返答が返ってこない場合には、計算機101が次のリクエストを受け付けられないだけでなく、ユーザ端末は計算機からの返答を待つ必要があり、その間にユーザが別の処理を開始することをも妨げる。しかし、本実施の形態では、アプリケーション処理結果として処理完了を通知する頻度を高くすることができる。ユーザリクエスト処理完了画面において、ユーザ及び計算機101によって異なる結果が表示することが可能となる。
【0224】
なお、本発明は、上記実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせても良い。
【0225】
(1−5)本実施の形態の効果
本実施形態によれば、データ正常性を保証し、かつ分断障害時のアプリケーション可用性およびアプリケーション実行時間短縮を実現できる。更新方法選択処理(P2)により、閾値判定部が更新方法の選択に必要な閾値を特定し、閾値検索部が閾値検索処理(P4)により前記特定した閾値を閾値情報から検索し、前記閾値、ユーザ名およびアプリケーション入力値を用いて閾値判定し、その結果更新方法を選択する。更新方法選択処理(P2)は、更新方法に設定した優先順位に従い、データ正常性が保証される更新方法が複数ある場合に、そのうちアプリケーション可用性向上効果もしくはアプリケーション実行時間短縮効果が高いものを先に検索することができる。
【0226】
また更新方法選択処理(P2)は、アプリケーション108とは別に実装することができ、本実施の形態の更新方法選択システムを前提にしないアプリケーション108を改変することなく上記システムに移行し、同等の効果を得ることができる。
【0227】
また、アプリケーション制御処理(P1)および更新処理(P3)により、アプリケーション108が更新実行部114に対してデータ更新を要求する際には、更新方法選択処理(P2)にて予め選択した更新方法を利用することができる。
【0228】
また、閾値合成処理(P5)を実施することにより、2つ以上の計算機において閾値を合成し、単一計算機で使用できる閾値より大きな閾値に基づいて更新方法を選択することで、分断障害時アプリケーション可用性およびアプリケーション実行時間短縮を実現する頻度を高めることができる。
【0229】
また、マージ処理(P6)により、適切なタイミングでデータの整合性を復元することができる。
【0230】
また、閾値テーブル作成処理(P7)により、ユーザに対して相関の大きい計算機に対して大きな閾値を算出し、上記した本発明の効果を最大化することができる。
【0231】
また、閾値情報伝播処理(P8)により、計算機101の依存関係を遵守し閾値情報127を送信することにより、計算機101の閾値伝播中に分断障害が発生し、全ての計算機に対して閾値を送信することができなくなっても、一部計算機に送信した状態で計算機101内の更新方法選択部110がデータ正常性を保証しつづけることができる。
【0232】
(2)第2の実施の形態
(2−1)本実施の形態の概要
次に、第2の実施の形態について説明する。
本実施の形態では、計算機101に含まれる更新方法を選択する更新方法選択部110が、現在利用可能な更新方法を選択し、選択された更新方法に対して現在の計算機101の状態により決定できる更新結果の推定値を算出する。そして、選択された更新方法及び更新結果の推定値をリストとしてユーザ端末に返答する。
【0233】
(2−2)計算機システムの構成
本実施の形態における計算機101を含む計算機システムの構成は、第1の実施の形態と同様であり、
図1〜
図3に示す構成である。計算機101は、データ正常性を保証しながら分断障害時のアプリケーション可用性向上およびアプリケーション実行時間短縮が可能であるかどうかをユーザに通知するため、アプリケーションの入力値の範囲と、入力値の範囲に応じた採用可能な更新方法のリストを作成する。さらに、計算機101は、各更新方法を採用した場合に更新実行部より得られると推定できる更新結果をリストに追加して、ユーザ端末に返答する。
【0234】
(2−3)データ構成
本実施の形態におけるデータ構成は、第1の実施の形態とほぼ同様であるため、異なるデータ構成については、後述するデータ更新処理の説明で詳細に説明する。
【0235】
(2−4)データ更新処理
次に、本実施の形態における情報処理方法の実行手順について説明する。以下では、第1の実施の形態と異なる処理について特に詳細に説明する。
【0236】
図44を参照して、本実施の形態における更新方法リスト取得シーケンス(S6)について説明する。更新方法リスト取得処理は、計算機101が、ユーザ端末105からの更新方法リスト取得リクエストを受信したタイミングで実行される。本実施の形態では、ユーザ端末105は、更新方法リスト取得リクエストをアプリケーション制御部106に送信し、アプリケーション制御部106は、所定のアプリケーションの更新方法を問い合わせる更新方法取得インタフェース4308を呼び出す。そして、計算機101の更新方法選択部110が更新方法リスト取得処理(P9)において、閾値に基づいた更新方法対応リストを算出し、ユーザ端末105に返答する。
【0237】
図44に示すように、まず、ユーザ端末105は、更新可否リスト取得リクエストをアプリケーション制御部106に送信する(4307)。更新可否リスト取得リクエストは、ユーザ端末105が更新方法リストを取得する際に、計算機101に送信する情報である。
【0238】
図45に示すように、更新可否リスト取得リクエストは、ユーザ名欄4401、アプリケーション入力値1欄4402及びアプリケーション名欄4403から構成される。ユーザ名欄4401には、更新方法リスト取得リクエストの要求元であるユーザの名称が格納される。アプリケーション入力値1欄4402には、更新方法リスト取得リクエストが要求するアプリケーションへの入力値の1つが格納される。アプリケーション名欄4403には、更新方法リスト取得リクエストが要求するアプリケーションが格納される。
【0239】
例えば、
図45では、ユーザ名「User1」のユーザが、アプリケーション入力値「Package1/Warehouse1」で、アプリケーション「A在庫管理」についての更新方法リストの取得と要求していることがわかる。
【0240】
図44に戻り、アプリケーション制御部106は、更新方法取得インタフェースを更新方法選択部110へ送信する(4308)。次に、更新方法選択部110は、参照リクエストを参照実行部149に送信する。次に、参照実行部149は、参照結果を更新方法選択部110に送信する。次に、更新方法選択部110は、更新方法リスト取得処理(P9)を実行する(4311)。ステップ4311における更新方法知ると取得処理(P9)については後で詳細に説明する。
【0241】
次に、更新方法選択部110は、更新方法リストをアプリケーション制御部106に通知する(4312)。更新方法リストは、更新方法選択部110がユーザ端末105からの更新方法リスト取得リクエストに応じて作成する情報である。
【0242】
図46に示すように、更新方法リスト4500は、アプリケーション入力値範囲欄4501、更新方法名欄4502及び更新結果推定値欄4503から構成される。アプリケーション入力値範囲欄4501には、アプリケーションに対する入力値の1つが格納される。更新方法名欄4502には、更新方法選択部110によって選択される更新方法が格納される。更新結果推定値欄4503には、アプリケーション入力値をリクエストした場合に、返答が予想される更新結果の推定値が格納される。
【0243】
例えば、
図46では、アプリケーション入力値範囲が「(アプリケーション入力値2)<20」である場合に選択される更新方法名は「非ロック1」であり、更新結果の推定値は「現在この計算機で更新完了可能」であることがわかる。これは、アプリケーション入力値2の値が20より小さい場合には、「非ロック1」の方法で更新処理が実行され、該更新処理が実行された結果、当該計算機での更新が正常に完了することが推定されることを意味している。
【0244】
次に、
図47を参照して、上記したステップ4311における更新方法リスト取得処理(P9)の詳細について説明する。更新方法リスト取得処理は、ユーザ端末105からの更新可否取得リクエストを受けて、更新方法取得リクエストに記載のアプリケーションについて、更新方法リストを取得する処理である。
【0245】
まず、更新方法選択部110は、更新方法取得インタフェース113により、ユーザ名、アプリケーション名及びアプリケーション入力値を取得する(4601)。
【0246】
そして、閾値判定部112は、アプリケーション別閾値判定方法情報126を参照し、ステップ4601で取得したアプリケーション名が含まれる行を、検索対象閾値判定リストLthに格納する(4602)。
【0247】
そして、閾値判定部112は、検索対象閾値判定リストLthを優先順位でソートし(4603)して、更新方法リストを初期化する(4604)。
【0248】
そして、閾値判定部112は、検索対象閾値判定リストLthに行があるかを判定する(4605)。ステップ4605において、検索対象閾値判定リストLthに行があると判定された場合には、ステップ4606以降の処理を実行する。一方、ステップ4605において、検索対象閾値判定リストLthに行がないと判定された場合には、更新方法リスト取得処理を終了する。
【0249】
そして、ステップ4606において、閾値判定部112は、検索対象閾値判定リストLthの先頭行のクラスタ状態をメモリに記憶する。
【0250】
続いて、閾値判定部112は、ステップ4606でメモリに記憶したクラスタ状態と計算機固有情報125のクラスタ状態とが一致するかを判定する(4607)。ステップ4607において、計算機固有情報125のクラスタ状態と一致すると判定された場合には、ステップ4608以降の処理を実行する。一方、ステップ4607において、計算機固有情報125のクラスタ状態と一致しないと判定された場合には、ステップ4605以降の処理に戻る。
【0251】
ステップ4608において、閾値判定部112は、該当行の閾値判定方法1106に記載された閾値名と、ユーザ名及び計算機名を閾値検索部111に送信し、閾値検索部111が閾値検索処理(P3)を実施し、閾値判定部112に当該閾値を返信する(4608)。
【0252】
そして、閾値判定部112は、該当行の閾値判定方法1106に、受信した閾値、アプリケーション入力値及びユーザ名を入力して、閾値判定結果または閾値に関する評価式を取得する(4609)。
【0253】
そして、閾値判定部112は、更新方法リストに、該当行の更新方法名を記載し、ステップ4609において取得した閾値判定結果または閾値に関する評価式をアプリケーション入力値範囲として格納する(4610)。
【0254】
そして、閾値判定部112は、更新方法別処理スクリプト情報129のうち更新方法名が格納された行を検索し、該当行の更新結果を取得し、更新方法リストの追加行の更新結果推定値に、当該更新結果を格納する(4611)。
【0255】
そして、閾値判定部112は、検索対象閾値判定リストLthから先頭行を削除する(4612)。
【0256】
次に、
図48を参照して、本実施形態にかかるユーザ端末105におけるユーザリクエスト画面の一例について説明する。ユーザリクエスト画面は、ユーザ端末105から送信されたユーザリクエスト145に応じたアプリケーションが実行結果を返答する画面である。
【0257】
図48に示すように、ユーザリクエスト作成および送信画面4701には、A在庫管理リクエスト作成表示欄4702及びB口座残高引出表示欄4703を含む。
【0258】
A在庫管理リクエスト作成表示欄4702には、更新結果推定値を表示させる表示欄4704とリクエストする入力値を入力させる入力欄4707が含まれる。表示欄4704には、例えば、「入力値が100までの場合現在この計算機で処理完了可能」であることが表示される。ユーザは、表示欄4704に表示された更新結果推定値を参照して、例えば、100以下の入力値を入力欄4707に入力する。
【0259】
また、B口座残高引出表示欄4703には、更新結果推定値を表示させる表示欄4705とリクエストする入力値を入力させる入力欄4709が含まれる。表示欄4705には、例えば、「現在この計算機で処理完了不可能」であることが表示される。ユーザは、表示欄4705に表示された更新結果推定値を参照して、現在、当該アプリケーションについての入力ができないことを認識する。
【0260】
なお、本発明は、上記実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせても良い。
【0261】
以上、本発明を実施するための最良の形態などについて具体的に説明したが、本発明はこれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【0262】
(2−5)本実施の形態の効果
こうした本実施形態によれば、データ正常性を保証し、かつ分断障害時のアプリケーション可用性およびアプリケーション実行時間短縮を実現できる入力値の範囲と更新方式をユーザに通知することができる。