(57)【特許請求の範囲】
【請求項１】
ネットワークを介して相互接続した、複数の独立したノードにより構成され、個々にデータを管理し発信するデータソースとなる少なくとも１つのノードと、前記データソースからのデータを収集、管理する少なくとも１つのデータサーバと、前記データソースからのデータを活用する少なくとも１つのアプリケーションが稼動する少なくとも１つのノードとを含める、分散システムにおいて、
前記データサーバと前記データソースからのデータを活用する少なくとも１つのアプリケーションが稼動する少なくとも１つのノードの間にて、前記データソースから収集したデータのレプリケーションを実施する場合、前記データソースとなる少なくとも１つのノードが発信するデータを、前記データサーバが収集し蓄積するステップと、
各ノードでは少なくとも１つのアプリケーションに対して、各アプリケーションにて使用する少なくとも１つのデータに関するレプリカを配置し該データのレプリケーションを実施するステップと、
前記アプリケーションが稼動する少なくとも１つのノードにおいて、周期駆動するアプリケーションの実行周期を取得するステップと、該実行周期に合わせて事前に該周期駆動するアプリケーションが使用する少なくとも１つのデータの更新の有無を判定し、次実行周期の開始までに該データのレプリカの更新を実施し完了させておくステップと、
前記アプリケーションが稼動する少なくとも１つのノードにおいて、イベント駆動するアプリケーションが使用する少なくとも１つのデータに関して、該データのアプリケーションによる参照頻度を監視するステップと、前記参照頻度の監視結果と、該データの種別による重要度により優先順位を決定するステップと、前記決定した優先順位に従って前記イベント駆動によるアプリケーションが使用するレプリカのデータの配置を変更するステップと、を含み、
少なくとも１つのアプリケーションが稼動するノードにおいて、少なくとも１つのアプリケーションに対して使用するデータのレプリカ用のデータ格納領域を個別に割当てる際に、
少なくとも１つの周期駆動型アプリケーションが各々使用するデータのレプリカ用のデータ格納領域を優先的に割当て、
少なくとも１つのイベント駆動型アプリケーションが各々使用するデータのレプリカ用のデータ格納領域は、前記周期駆動型アプリケーションが使用するデータのレプリカ用のデータ格納領域を割当て後の残りの領域を使用する
ことを特徴とする、分散システムにおけるデータレプリケーション管理方法。
【請求項２】
請求項１において、少なくとも１つのデータソースからのデータを収集し管理するデータサーバと、前記データソースからのデータを活用する少なくとも１つのアプリケーションが稼動する少なくとも１つのノードとの間で実施する前記データのレプリケーションは、前記データソースからのデータを前記データサーバが受信したタイミングで実行される、もしくは規定の周期で実行されることを特徴とする、分散システムにおけるデータレプリケーション管理方法。
【請求項３】
請求項１において、少なくとも１つのアプリケーションが稼動するノードにおいて、周期駆動するアプリケーションの実行周期を取得する際に、
ユーザによる事前登録情報を参照する、もしくは前記周期駆動するアプリケーションの動作を監視し算出することを特徴とする、分散システムにおけるデータレプリケーション管理方法。
【請求項４】
請求項１または請求項３において、少なくとも１つのアプリケーションが稼動するノードで周期駆動するアプリケーションが使用するデータに関して、
該周期駆動するアプリケーションの実行周期と連動して、データソースからのデータを収集して管理するデータサーバが、データソースとなるノードからのデータ受信等による該データの更新の有無を監視し、該データの更新を検出した場合は、
該アプリケーションの現周期における処理終了の時点から次周期における処理が開始する時点までの期間に、該更新後のデータを前記アプリケーションが稼動するノードに送信してレプリカの更新を行って完了させておくことを特徴とする、分散システムにおけるデータレプリケーション管理方法。
【請求項５】
ネットワークを介して相互接続した、複数の独立したノードにより構成され、個々にデータを管理し発信するデータソースとなる少なくとも１つのノードと、前記データソースからのデータを収集、管理する少なくとも１つのデータサーバと、前記データソースからのデータを活用する少なくとも１つのアプリケーションが稼動する少なくとも１つのノードとを含める、分散システムにおいて、
前記データサーバと前記データソースからのデータを活用する少なくとも１つのアプリケーションが稼動する少なくとも１つのノードの間にて、前記データソースから収集したデータのレプリケーションを実施する場合、前記データソースとなる少なくとも１つのノードが発信するデータを、前記データサーバが収集し蓄積するステップと、
各ノードでは少なくとも１つのアプリケーションに対して、各アプリケーションにて使用する少なくとも１つのデータに関するレプリカを配置し該データのレプリケーションを実施するステップと、
前記アプリケーションが稼動する少なくとも１つのノードにおいて、周期駆動するアプリケーションの実行周期を取得するステップと、該実行周期に合わせて事前に該周期駆動するアプリケーションが使用する少なくとも１つのデータの更新の有無を判定し、次実行周期の開始までに該データのレプリカの更新を実施し完了させておくステップと、
前記アプリケーションが稼動する少なくとも１つのノードにおいて、イベント駆動するアプリケーションが使用する少なくとも１つのデータに関して、該データのアプリケーションによる参照頻度を監視するステップと、前記参照頻度の監視結果と、該データの種別による重要度により優先順位を決定するステップと、前記決定した優先順位に従って前記イベント駆動によるアプリケーションが使用するレプリカのデータの配置を変更するステップと、を含み、
少なくとも１つのアプリケーションが稼動するノードで周期駆動するアプリケーションが使用するデータに関して、
該周期駆動するアプリケーションの実行周期と連動して、データソースからのデータを収集して管理するデータサーバが、データソースとなるノードからのデータ受信等による該データの更新の有無を監視し、該データの更新を検出した場合は、
該アプリケーションの現周期における処理終了の時点から次周期における処理が開始する時点までの期間に、該更新後のデータを前記アプリケーションが稼動するノードに送信してレプリカの更新を行って完了させておき、
周期駆動するアプリケーションにおける各周期での処理終了の時点から次周期における処理開始の時点までの期間よりも、該周期駆動するアプリケーションが使用するデータに対する、データサーバにおける更新監視、アプリケーションが稼動するノードへの送信及びレプリカ更新の処理に要する時間が長い場合、
該アプリケーションが稼動するノードは、該周期駆動するアプリケーションが使用するデータのレプリカの複製データを用意し、
データサーバによってデータ更新が検出された該アプリケーションが稼動するノードへの該当データの送信及び更新処理を、該アプリケーションの各周期での処理と並行して、前記複製データに対して実行し、
前記複製データへの更新処理完了後に、該アプリケーションが使用するレプリカに対する該アプリケーションの処理が実施されていない間に、前記複製データの内容との差替えを実施することを特徴とする、分散システムにおけるデータレプリケーション管理方法。
【請求項６】
請求項１において、少なくとも１つのアプリケーションが稼動するノードでイベント駆動するアプリケーションが使用するデータに関して、
該データの優先順位を決定するために重要度を参照する該データの種別として、データの用途、データ発生時のシステム状態、データを使用するアプリケーションの優先度、及びデータの鮮度、の少なくとも１つを用いることを特徴とする、分散システムにおけるデータレプリケーション管理方法。
【請求項７】
請求項１において、少なくとも１つのアプリケーションが稼動するノードでイベント駆動するアプリケーションが使用するデータに関して、
該データの種別による重要度の高いデータは、優先順位のより高い範囲内で、監視結果による該データの参照頻度の高さに応じて優先順位を決定し、
該データの種別による重要度の低いデータは、優先順位のより低い範囲内で、監視結果による該データの参照頻度の高さに応じて優先順位を決定することを特徴とする、データ分散システムにおけるデータレプリケーション管理方法。
【請求項８】
請求項１において、少なくとも１つのアプリケーションが稼動するノードでイベント駆動するアプリケーションが使用するデータに関して、
該データの参照頻度の監視結果と、該データの種別による重要度により決定する優先順位とに従って、該データのレプリカの配置場所を、前記優先順位が高い順に、前記ノード内のメモリ、ファイル、該データを格納する他ノードを示すポインタ情報、さらに該データの削除、へと変更することを特徴とする、分散システムにおけるデータレプリケーション管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して相互接続した、複数の独立したノードにより構成され、個々にデータを管理し発信するデータソースとなる少なくとも１つのノードと、前記データソースからのデータを収集、管理する少なくとも１つのデータサーバと、前記データを活用するアプリケーションが稼動する少なくとも１つのノードを含める、分散システムを対象として、特にシステム内でのデータアクセスの応答性能保証のために実施するデータのレプリケーションの方法に関する。
【背景技術】
【０００２】
マスターデータベースをアクセスするマスターサイトと、上記マスターサイトとネットワークを介して接続され、レプリケーションデータベースをアクセスするレプリケーションサイトとを備えた分散型データベースシステムにおいて、上記レプリケーションサイトがクライアントから上記レプリケーションデータベースの更新要求を受けると、その更新要求を上記マスターサイトに送信する一方、上記マスターサイトが当該更新要求にしたがって上記マスターデータベースを更新し、上記レプリケーションサイトが上記マスターサイトから上記マスターデータベースの更新結果を受信すると、その更新結果にしたがって上記レプリケーションデータベースを更新することを特徴とする分散型データベースシステム（特許文献１参照）等が提案されている。
【０００３】
また、プロセス側の機器・設備の監視制御用の多数台のＰＬＣ(Programmable Logic Controller)と、複数の監視拠点にそれぞれ複数台設けられたＭＭＩ(Man-Machine Interface)と、これらＰＬＣとＭＭＩ間を任意にネットワーク接続して制御指令およびプロセス情報を送信する分散制御システムにおいて、前記監視拠点別にロケーション番号を割り付け、このロケーション番号の設定で前記ＭＭＩとＰＬＣ間の制御指令およびプロセス情報の送信先の監視拠点を１つまたは複数に特定し、かつロケーション番号またはＭＭＩの番号、ＰＬＣの番号の省略で送信先をマルチキャストに特定する制御ＬＡＮプロトコルを備えたことを特徴とする分散制御システム（特許文献２参照）等が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−１１６９３９号公報
【特許文献２】特開２００３−０１８２１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明が対象とするのは、鉄道、電力等の分野における分散システムであり、これらの分野におけるアプリケーションは、一定の実行周期にて所定の処理を実行する周期駆動型アプリケーションと、イベント発生をトリガーとして所定の処理を実行するイベント駆動型アプリケーションとの２種類ある。また特に周期駆動型アプリケーションの実行周期を維持して正常に稼動することを優先する必要がある。
【０００６】
しかしながら、上記特許文献１に開示された技術では、周期駆動型アプリケーションの実行周期による実行開始タイミングに対してデータレプリケーションの同期タイミングがずれるまたは遅れる場合、アプリケーションにおけるデータアクセスの応答の性能、またはアクセス時のデータの整合性を保証できない。また特許文献１もしくは特許文献２に開示された技術では、データレプリケーションにおいてレプリカの分散配置を行う場合、レプリケーションの対象となるデータの数、サイズの増加に伴いレプリカデータ同期のための通信トラフィックやノード内のデータ占有領域が増大し、システムへ高負荷を与え得る。特にイベント駆動型アプリケーションがアクセスするデータである場合、アプリケーションによる該データへの参照頻度が低ければ、不要な負荷となり得て、周期駆動型アプリケーションの正常動作にも影響を及ぼし得る。
【０００７】
本発明は、上述した課題を考慮したものであって、動作形態、性能要件等が異なる複数のアプリケーションプログラムが混在して実行する環境にて、競合を回避し、データアクセスの応答性能を保証するために、アプリケーションプログラムの動作と連動したデータレプリケーションを実施するための、分散システムにおけるデータレプリケーション管理方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するため、本発明は以下の構成を備える。即ち、本発明の分散システムは、ネットワークを介して相互接続した、複数の独立したノードにより構成され、個々にデータを管理し発信するデータソースとなる少なくとも１つのノードと、前記データソースからのデータを収集、管理する少なくとも１つのデータサーバと、前記データソースからのデータを活用する少なくとも１つのアプリケーションが稼動する少なくとも１つのノードとを含む。
【０００９】
前記データサーバと、前記データソースからのデータを活用する少なくとも１つのアプリケーションが稼動する少なくとも１つのノードとの間にて、前記データソースから収集したデータのレプリケーションを実施する場合、前記データサーバは、前記データソースとなる少なくとも１つのノードが発信するデータを収集して蓄積する。
【００１０】
各ノードでは、少なくとも１つのアプリケーションに対して、各アプリケーションにて使用する少なくとも１つのデータに関するレプリカを配置し該データのレプリケーションを実施する。
【００１１】
周期駆動するアプリケーションが稼動する少なくとも１つのノードは、周期駆動するアプリケーションの実行周期を取得し、該実行周期に合わせて事前に該周期駆動するアプリケーションが使用する少なくとも１つのデータの更新の有無を判定し、該データの更新が有る場合は、次実行周期の開始までに該データのレプリカの更新を実施し完了させておく。
【００１２】
イベント駆動するアプリケーションが稼動する少なくとも１つのノードは、イベント駆動するアプリケーションが使用する少なくとも１つのデータに関して、該データのアプリケーションによる参照頻度を監視し、前記参照頻度の監視結果と、該データの種別による重要度により優先順位を決定し、前記決定した優先順位に従って前記イベント駆動によるアプリケーションが使用するレプリカのデータの配置を変更する。
【発明の効果】
【００１３】
本発明によれば、アプリケーション開発者はデータアクセスに関連する煩雑な処理を作りこむ必要がなく、アプリケーションロジックの開発に専念でき、開発工数の削減、エラー低減等に寄与する。
【図面の簡単な説明】
【００１４】
【図１】本発明による分散システムにおけるデータレプリケーション管理方法の概要を示す図である。
【図２】本発明の適用先である分散システムの概要を示す図である。
【図３】本発明によるデータレプリケーション管理方法を実施する上での、分散システムを構成する複数のノード間での全体処理シーケンスを示す図である。
【図４】本発明における分散システムを構成し、データソースからのデータを収集、管理し、アプリケーションが稼動する少なくとも１つのノードに対してデータレプリケーションを実施する、データサーバのモジュール構成を示す図である。
【図５】本発明による分散システムを構成し、データソースからのデータを活用するアプリケーションが稼動するノードのモジュール構成を示す図である。
【図６】本発明におけるデータサーバにて管理されるレプリカデータ管理テーブルの構成を示す図である。
【図７】本発明におけるデータサーバでの、周期駆動によるアプリケーションが使用するデータの更新監視及びレプリカの更新処理の流れを示すフローチャートである。
【図８】本発明における少なくとも１つのアプリケーションが稼動するノードでの、周期駆動によるアプリケーションが使用するデータのレプリカの更新処理の流れを示すフローチャートである。
【図９】本発明によるイベント駆動によるアプリケーションが使用するデータの重要度について説明する図である。
【図１０】本発明によるイベント駆動によるアプリケーションが使用するデータの優先順位を決定し、該優先順位に基づきデータを配置する処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１５】
図１は、本発明による分散システムにおけるデータレプリケーション管理方法の概要を示す図である。
【００１６】
主な構成要素は、個々にデータを管理し発信するデータソースとなるデータソースノード０２０３、前記データソースノード０２０３からのデータを収集、管理するデータサーバ０２０１、前記データソースノード０２０３からのデータを活用する少なくとも１つのアプリケーションが稼動するアプリケーションノード０２０２、等である。データソースノード０２０３から発信されるデータはデータサーバ０２０１で受信し、該データサーバ０２０１上のＤＢ０１０１に格納される。アプリケーションノード０２０２では、少なくとも１つの周期駆動によるアプリケーション０１０４と少なくとも１つのイベント駆動によるアプリケーション０１０５が稼動しており、少なくとも１つのレプリカ（０１０２、０１０３）をそれぞれ処理中で使用している。アプリケーションノード０２０２では、周期駆動によるアプリケーション０１０４、あるいはイベント駆動によるアプリケーション０１０５の一方が稼動していてもよい。
【００１７】
データサーバ０２０１はデータソース０２０３から発信されるデータを受信する度にＤＢ０１０１に格納される該当データの上書き更新を実施する。また前記更新データに関するアプリケーションノード０２０２上の該当レプリカに対しても、前記更新データをアプリケーションノード０２０２に送信し、前記該当レプリカの更新を実施する。ここで周期駆動によるアプリケーション０１０４が使用するレプリカ０１０２に関しては、該アプリケーションの実行周期に合わせて事前に該アプリケーションが使用する少なくとも１つのレプリカ０１０２の元となるＤＢ０１０１内のデータに対する更新の有無を判定し、更新を検出した場合、次実行周期の開始時点までに該データのレプリカ０１０２の更新を実施し完了させておく（０１１１）。上記により周期駆動によるアプリケーション０１０４が各周期にて処理を開始する時点では必要なデータが整合性をとれて用意されており、周期駆動によるアプリケーション０１０４の実行周期の維持と処理実行の確実さを保証する。
【００１８】
またアプリケーションノード０２０２では、イベント駆動によるアプリケーション０１０５が使用するレプリカ０１０３よりも周期駆動によるアプリケーション０１０４が使用するレプリカ０１０２に対して優先的にデータ領域を割当てることで、周期駆動によるアプリケーション０１０４の実行周期の維持と処理実行の確実さを保証する。つまり周期駆動によるアプリケーション０１０４が使用するレプリカ０１０２に対しては常にメモリを割当てるが、イベント駆動によるアプリケーション０１０５が使用するレプリカ０１０３に対しては、該データの参照頻度と該データの種別による重要度から優先順位を決定し、前記優先順位に従って、イベント駆動によるアプリケーション０１０５が使用するレプリカ０１０３のデータ配置を優先順位の高い順に、メモリ、ファイル、該データを保有する他ノードへのポインタ、削除、へと遷移させる。
【００１９】
上記の各処理の詳細は以降の図にて述べる。
【００２０】
図２は、本発明の適用先である分散システムの概要を示す図である。
【００２１】
分散システムの主な構成要素は、個々に設備０２０４に関するデータを管理し発信するデータソースとなるデータソースノード０２０３、前記データソースノード０２０３からのデータを収集、管理するデータサーバ０２０１、前記データソースノード０２０３からのデータを活用する少なくとも１つのアプリケーションが稼動するアプリケーションノード０２０２、等である。データソースノード０２０３とデータサーバ０２０１とはネットワーク０２０６を介して接続しているが、アプリケーションノード０２０２とデータサーバ０２０１とはネットワーク０２０５を介して接続している。このようにデータソースノード０２０３とアプリケーションノード０２０２とは別のネットワークに接続しているが、適用先のシステム要件に基づいて、同一ネットワークに接続していてもよい。
【００２２】
データソースノード０２０３の主なハードウェア構成は、処理装置（ＣＰＵ）０２３１、記憶装置（メモリ、ハードディスク）０２３２、通信装置０２３３からなる。記憶装置０２３２には、設備０２０４の管理及び制御を行うためのソフトウェアプログラム、設備０２０４から取得したデータを蓄積またはデータサーバ０２０１に送信するためのソフトウェアプログラム等が格納され、処理装置０２３１により処理される。また通信装置０２３３は、ネットワーク０２０６を介してデータサーバ０２０１との間での通信処理を行う。
【００２３】
データサーバ０２０１の主なハードウェア構成は、処理装置（ＣＰＵ）０２１１、記憶装置（メモリ、ハードディスク）０２１２、通信装置０２１３からなる。記憶装置０２１２には、データソースノード０２０３からデータを収集しＤＢへと格納する処理を行うためのソフトウェアプログラム、アプリケーションノード０２０２に配置するレプリカの管理及び更新監視、データ同期等を行うためのソフトウェアプログラム、データソースノード０２０３からのデータを受信し、アプリケーションノード０２０２にデータ送信するためのソフトウェアプログラム、等が格納され、処理装置０２１１により処理される。また記憶装置０２１２には、データソースノード０２０３から収集したデータを格納、管理するためのＤＢも格納される。また通信装置０２１３は、ネットワーク０２０５を介してアプリケーションノード０２０２との間での通信処理、またネットワーク０２０６を介してデータソースノード０２０３との間での通信処理を行う。
【００２４】
アプリケーションノード０２０２の主なハードウェア構成は、処理装置（ＣＰＵ）０２２１、記憶装置（メモリ、ハードディスク）０２２２、通信装置０２２３からなる。記憶装置０２２２には、該ノードにて稼動するアプリケーションプログラム、レプリカデータの管理及び更新を行うためのソフトウェアプログラム、データサーバ０２０１から送信されるデータを受信するためのソフトウェアプログラム等が格納され、処理装置０２２１により処理される。また記憶装置０２２２には、アプリケーションが使用するレプリカデータが格納される。また通信装置０２２３は、ネットワーク０２０５を介してデータサーバ０２０１との間での通信処理を行う。
【００２５】
図３は、本発明によるデータレプリケーション管理方法を実施する上での、分散システムを構成する複数のノード間での全体処理シーケンスを示す図である。
【００２６】
主な構成要素は、分散システムを構成するデータサーバ０２０１、少なくとも１つのアプリケーションが稼動するアプリケーションノード０２０２、ノード０２０２にてアプリケーションが使用するデータの発生元であるデータソースノード０２０３である。本図ではアプリケーション０２０２にて周期駆動するアプリケーションが実行周期（０３０１、０３０２、０３０３）で稼動している場合について図示する。
【００２７】
アプリケーションノード０２０２にて、ステップ０３１１において、データサーバ０２０１に対して、アプリケーションが使用するレプリカデータに関する登録を行う。
【００２８】
データサーバ０２０１にて、ステップ０３２１において、ステップ０３１１でのアプリケーションノード０２０２からのレプリカ登録に対して、データソースノード０２０３に対して、レプリカのオリジナルとなるデータの配信を要求し、アプリケーション及びレプリカに関する情報を格納するレプリカデータ管理テーブルを更新する。本テーブルの詳細は図６にて述べる。
【００２９】
ステップ０３２２において、アプリケーションの実行周期に応じて、ステップ０３１１にて登録されたレプリカのオリジナルとなる、データサーバ０２０１にて管理するＤＢ上のデータの更新有無の監視を開始する。実行周期０３０１において、データソースノードＡ及びデータソースノードＢ（０２０３）が、ステップ０３２１のデータ配信要求に従って、データサーバ０２０１に対して、レプリカのオリジナルとなる各々のデータが配信されると（０３４１、０３３１）、ステップ０３２３及びステップ０３２４において、これらのデータを受信し、データサーバ０２０１にて管理するＤＢに格納し該当データを更新する。このＤＢはアプリケーションノード０２０２に配置するレプリカの同期元となるデータを格納するものである。
【００３０】
ステップ０３２５において、データ更新監視により、前記データの更新を検出する。ステップ０３２６において、ステップ０３２５にて更新検出したデータを、レプリカを配置するアプリケーションノード０２０２へと送信する。アプリケーションノード０２０２にて、ステップ０３１２において、前記更新検出したデータを受信し、該当レプリカの更新を実施する。
【００３１】
実行周期０３０２において、ステップ０３２７において、データ更新監視を実施するが、更新は検出されなかったため、該周期ではレプリカ更新処理は実施しない。
【００３２】
実行周期０３０３において、データソースノードＢ０２０３にて、ステップ０３３２において、データサーバ０２０１に対して、レプリカのオリジナルとなるデータが配信されると、ステップ０３２８において、これらのデータを受信し、データサーバ０２０１にて管理するＤＢに格納し該当データを更新する。
【００３３】
ステップ０３２９において、データ更新監視により、前記データの更新を検出する。ステップ０３２０において、ステップ０３２９にて更新検出したデータを、レプリカを配置するアプリケーションノード０２０２へと送信する。アプリケーションノード０２０２にて、ステップ０３１３において、前記更新検出したデータを受信し、該当レプリカの更新を実施する。以上の処理を周期毎に繰り返す。
【００３４】
図４は、本発明における分散システムを構成し、データソースノード０２０３からのデータを収集、管理し、アプリケーションが稼動する少なくとも１つのノード０２０２に対してデータレプリケーションを実施する、データサーバ０２０１のモジュール構成を示す図である。
【００３５】
データサーバ０２０１には、データソースノード０２０３からのデータ収集、蓄積及び管理を行い、アプリケーションが稼動する少なくとも１つのノード０２０２に対するデータレプリケーションの制御や管理を行うミドルウェア０４０１、及びデータソースノード０２０３から収集したデータを蓄積しておくＤＢ０４０２が設けられる。
【００３６】
ミドルウェア０４０１の主な構成要素は、レプリケーション管理部０４１１、レプリカデータ同期部０４１２、データ格納部０４１３、データ更新監視部０４１４及びデータ通信部０４１５である。
【００３７】
レプリケーション管理部０４１１は、データ通信部０４１５を介してアプリケーションノード０２０２からのレプリカ登録及びデータレプリケーション実施要求を受付け、データ格納部０４１３へのデータソースノード０２０３からのデータ収集の指示、データ更新監視部へのレプリカ対象データの更新有無監視の指示、及び、データ更新有無の監視結果に基づいた、レプリカデータ同期部０４１２への、アプリケーションが稼動する少なくとも１つのノード０２０２との間でのレプリカデータ同期実行の指示、等を行う。
【００３８】
レプリカデータ同期部０４１２は、データ通信部０４１５を介してアプリケーションが稼動する少なくとも１つのノード０２０２との間での、少なくとも１つのアプリケーションが使用する少なくとも１つのレプリカデータに関する同期処理を実施する。
【００３９】
データ格納部０４１３は、データ通信部０４１５を介して少なくとも１つのデータソースノード０２０３からのデータを収集し、ＤＢ０４０２に格納する。
【００４０】
データ更新監視部０４１４は、ＤＢ０４０２に格納される各々のデータに関して、データソースからのデータの受信及び上書き格納によるデータ更新発生の有無を監視する。
【００４１】
データ通信部０４１５は、通信媒体０２０５または通信媒体０２０６を介して分散システムを構成する他のノードとの間の通信を行う。
【００４２】
レプリカデータ管理テーブル０４１６はレプリケーション管理部０４１１により管理、更新されるが、詳細は図６にて述べる。
【００４３】
図５は、本発明による分散システムを構成し、データソースからのデータを活用するアプリケーションが稼動するノード０２０２のモジュール構成を示す図である。
【００４４】
アプリケーションが稼動するノード０２０２には、データサーバ０２０１との間でのデータレプリケーションの制御、管理を行うミドルウェア０５０１、システムにおける各種の処理を実施するアプリケーション０５０２、前記アプリケーション０５０２が使用するデータに関するレプリカ０５０３が設けられる。
【００４５】
ミドルウェア０５０１の主な構成要素は、レプリカデータ同期部０５１１、レプリカデータ配置制御部０５１２、レプリカデータ監視部０５１３、及びデータ通信部０５１４である。  
レプリカデータ同期部０５１１は、データ通信部０５１４を介してデータサーバ０２０１からデータを取得し、データサーバ０２０１との間でレプリカデータの同期を行う。
【００４６】
レプリカデータ配置制御部０５１２は、イベント駆動するアプリケーションが使用するデータに関して、レプリカデータ監視部０５１３からの監視結果に基づき、前記データのレプリカのためのデータ配置の決定及び配置変更を行う。
【００４７】
レプリカデータ監視部０５１３は、イベント駆動するアプリケーションが使用するデータに関してアプリケーションによる参照頻度を監視する。
【００４８】
データ通信部０５１４は、通信媒体０２０５を介して分散システムを構成する他のノードとの間の通信を行う。
【００４９】
図６は、本発明におけるデータサーバ０２０１にて管理されるレプリカデータ管理テーブル０４１６の構成を示す図である。
【００５０】
レプリカデータ管理テーブル０４１６は、レプリカ０５０３を使用するアプリケーションに関する情報を格納するアプリケーション情報テーブル０６０１と各アプリケーションがレプリカとして使用するデータに関する情報を格納するデータ情報テーブル０６０２とからなる。データ情報テーブル０６０２は、アプリケーション情報テーブル０６０１に格納される各アプリケーションに関する情報に対応して１つずつ用意される。
【００５１】
アプリケーション情報テーブル０６０１の主な構成要素は、アプリ識別情報０６１１、アプリ実行周期０６１２、アプリ開始時刻０６１３、稼動ノード識別情報０６１４、使用データ個数０６１５、レプリカ情報格納ポインタ０６１６、及び最新更新時刻０６１７である。
【００５２】
アプリ識別情報０６１１には、少なくとも１つのアプリケーションが稼動するノード０２０２にて稼動するそれぞれのアプリケーションを識別する情報が格納される。アプリ実行周期０６１２には、アプリ識別情報０６１１に該当するアプリケーションが周期駆動するアプリケーションである場合、該アプリケーションの実行周期が格納される。アプリ識別情報０６１１に該当するアプリケーションがイベント駆動するアプリケーションである場合、本項目０６１２に値は格納されない。アプリ開始時刻０６１３には、アプリ識別情報０６１１に該当するアプリケーションがシステム内で動作を開始する時刻が格納される。
【００５３】
稼動ノード識別情報０６１４には、アプリ識別情報０６１１に該当するアプリケーションが稼動するノード０２０２を識別する情報が格納される。ここではノード番号、ＩＰアドレス等のシステム内でノードを特定する情報が格納される。使用データ個数０６１５には、アプリ識別情報０６１１に該当するアプリケーションがレプリカとして使用するデータの個数が格納される。
【００５４】
レプリカ情報格納ポインタ０６１６には、アプリ識別情報０６１１に該当するアプリケーションがレプリカとして使用するデータに関する情報が格納されるデータ情報テーブル０６０２のポインタ情報が格納される。最新更新時刻０６１７には、項目０６１１〜０６１６のデータが最後に更新された時刻が格納される。これらのアプリケーションに関する情報は、アプリケーションがシステム内に登録される度に前記アプリケーション情報テーブル０６０１に情報が追加される。
【００５５】
データ情報テーブル０６０２の主な構成要素は、レプリカ識別情報０６２１、データ識別情報０６２２、データポインタ０６２３、データサイズ０６２４、データソース情報０６２５、更新フラグ０６２６、及び最新更新時刻０６２７である。これらの構成要素の組（レコード）は、各アプリケーションが使用するレプリカの個数だけ存在する。
【００５６】
レプリカ識別情報０６２１には、前記アプリケーションが使用するレプリカを識別する情報が格納される。データ識別情報０６２２には、レプリカ識別情報０６２１に該当するレプリカのオリジナルとなるデータを識別する情報が格納される。データポインタ０６２３には、データ識別情報０６２２に該当するデータのデータサーバ０２０１上での格納先を示すポインタ情報が格納される。データサイズ０６２４には、データ識別情報０６２２に該当するデータのサイズが格納される。データソース情報０６２５には、データ識別情報０６２２に該当するデータの発生元であるデータソースノード０２０３を識別する情報が格納される。ここではノード番号、ＩＰアドレス等のシステム内でノードを特定する情報が格納される。
【００５７】
更新フラグ０６２６には、データ識別情報０６２２に該当するデータの更新の有無を示すフラグ情報が格納される。最新更新時刻０６２７には、項目０６２１〜０６２６のデータが最後に更新された時刻が格納される。データ情報テーブル０６０２の各項目の情報はデータソースノード０２０３からデータが送信され、データサーバ０２０１上に格納される度に更新される。
【００５８】
図７は、本発明におけるデータサーバ０２０１での、周期駆動によるアプリケーションが使用するデータの更新監視及びレプリカの更新処理の流れを示すフローチャートである。
【００５９】
ステップ０７０１において、少なくとも１つのアプリケーションが稼動するノード０２０２から、周期駆動によるアプリケーションが使用するデータに関するレプリカ登録を受付け、該アプリケーションの実行周期、実行開始時刻等の情報を取得する。ステップ０７０２において、該アプリケーションが使用する少なくとも１つのデータのデータソースノード０２０３に対して、データサーバ０２０１への配信を要求する。ステップ０７０３において、レプリカデータ管理テーブル０４１６における該アプリケーションに関する項目を更新する。ステップ０７０４において、ステップ０７０１にて取得した該アプリケーションの実行周期０６１２、実行開始時刻０６１３等の情報に従って、該アプリケーションの動作と連動した、データ更新の監視としてステップ０７０５以降の処理を開始する。
【００６０】
ステップ０７０５において、レプリカデータ管理テーブル０４１６における該アプリケーションが使用するデータに関する、データ情報テーブル０６０２のデータ毎の項目として更新フラグ０６２６を参照する。前記テーブルの詳細は図６にて述べている。ステップ０７０６において、ステップ０７０５の更新フラグ０６２６の値から、該データが更新有りである場合、ステップ０７０７において、データソースからのデータを格納している、データサーバ０２０１上のＤＢ０４０２から該当データを取得し、一時格納領域に格納する。ステップ０７０８において、ステップ０７０５におけるデータ情報テーブル０６０２における該データの項目に対する更新フラグ０６２６の値をリセットする。
【００６１】
ステップ０７０９において、該アプリケーションが使用する全てデータのデータにして終了していない場合、ステップ０７０５からステップ０７０８の処理を繰り返す。ステップ０７０９において、該アプリケーションが使用する全てデータのデータに対して終了した場合であって、かつ、ステップ０７１０において、ステップ０７０９までの処理にて検出した少なくとも１つの更新データが有る場合、ステップ０７１１において、ステップ０７０７にて一時格納領域に格納していた少なくとも１つの更新データを、該アプリケーションが稼動するノード０２０２に送信する。ステップ０７１０において、ステップ０７０９までの処理にて検出した少なくとも１つの更新データが無い場合、ステップ０７１１の処理は省略する。ステップ０７１２において、該アプリケーションの実行周期に従って次周期まで待機して、ステップ０７０５の処理に戻る。
【００６２】
図８は、本発明における少なくとも１つのアプリケーションが稼動するノード０２０２での、周期駆動によるアプリケーションが使用するデータのレプリカ０５０３に対する更新処理の流れを示すフローチャートである。
【００６３】
ステップ０８０１において、周期駆動によるアプリケーションが使用するデータに関するレプリカ、該アプリケーションの実行周期、及び実行開始時刻等の情報をデータサーバ０２０１に登録する。ステップ０８０２において、該アプリケーションの各周期の処理時間に対して、レプリカ更新の処理に要する時間が所定の値よりも大きいと判定した場合、ステップ０８０３において、該アプリケーションが使用するデータのレプリカの複製データを作成する。ステップ０８０２において、該アプリケーションの各周期の処理時間に対して、レプリカ更新の処理に要する時間が所定の値よりも小さいと判定した場合、ステップ０８０３の処理は省略する。
【００６４】
ステップ０８０４において、データサーバ０２０１より、該アプリケーションが使用するレプリカ０５０３の更新データを受信する。ステップ０８０５において、ステップ０８０３にて該アプリケーションが使用するレプリカ０５０３の複製データを作成していない場合、ステップ０８０６において、ステップ０８０４にて受信したデータを該当データのレプリカ０５０３に上書きして更新する。その後、ステップ０８０４の処理に戻る。
【００６５】
ステップ０８０５において、ステップ０８０３にて該アプリケーションが使用するレプリカ０５０３の複製データを作成している場合、ステップ０８０７において、ステップ０８０４にて受信したデータを該当データのレプリカ０５０３の複製データに対して上書きする。ステップ０８０８において、該アプリケーションが処理待機中ではない場合、処理待機中となるまで待機する。ステップ０８０８において、該アプリケーションが処理待機中である場合、ステップ０８０９において、ステップ０８０７にて更新したレプリカ複製データをレプリカデータ本体に対して上書きして更新する。その後、ステップ０８０４の処理に戻る。
【００６６】
図９は、本発明によるイベント駆動によるアプリケーションが使用するデータの重要度について説明する図である。本図ではいくつかの事例を挙げている。
【００６７】
主な構成要素は、データ種別の分類０９０１、種別による重要度０９０２、参照頻度に対する優先順位０９０３である。
【００６８】
データ種別の分類０９０１は、イベント駆動によるアプリケーションが使用するデータの重要度を決定するために用いる、データ種別の分類である。本図では４つの事例を挙げているが、これらの分類のうちの少なくとも１つを用いるものとする。具体的な事例は適用先システムにより異なり得る。種別による重要度０９０２は、データ種別の分類０９０１毎に重要度の高いデータ、重要度の低いデータの事例を挙げている。参照頻度に対する優先順位０９０３は、種別による重要度０９０２における各々の重要度の高いデータ、又は重要度の低いデータに対して、データの参照頻度に基づいて決定する優先順位の範囲を示す。これらの範囲はデータ毎に予め定義するものである。図９に示すデータの重要度の定義はデータサーバ０２０１に保持されている。
【００６９】
図１０は、データサーバ０２０１が、本発明によるイベント駆動によるアプリケーションが使用するデータの優先順位を決定し、該優先順位に基づきデータを配置する処理の流れを示すフローチャートである。
【００７０】
ステップ１００１において、イベント駆動によるアプリケーションが使用するデータに関して、データ毎の参照頻度を監視する。ステップ１００２において、ステップ１００１の参照頻度監視の結果と図９にて述べたデータの重要度０９０２から該データの優先順位０９０３を算出する。
【００７１】
ステップ１００３において、該データの優先順位がこれまでの値から変更されている場合、ステップ１００４において、図９及びステップ１００２で算出した該データの優先順位０９０３に基づいて、該データの配置の変更を実施する。ここでは優先順位の高い順に、メモリ、ファイル、該データを保有する他ノードへのポインタ、さらにデータ削除、へと該データの配置の仕方が変更されていく。ステップ１００３において、該データの優先順位がこれまでの値から変更されていない場合、ステップ１００４の処理は実施しない。
【００７２】
ステップ１００５において、イベント駆動によるアプリケーションが使用する全てのデータに対して終了した場合、ステップ１００６において、所定の時間だけ待機した後、ステップ１００１の処理に戻る。ステップ１００５において、イベント駆動によるアプリケーションが使用する全てのデータに対して終了していない場合、ステップ１００１からステップ１００４までの処理を繰り返す。
【符号の説明】
【００７３】
０２０１  データサーバ
０２０２  アプリケーションノード
０２０３  データソースノード
０２０５  通信媒体
０４０１  データサーバのミドルウェア
０４０２  ＤＢ
０５０１  アプリケーションノードのミドルウェア
０５０２  アプリケーション
０５０３  レプリカ
【図１】
0005530878.tif 000002
【図２】
0005530878.tif 000003
【図３】
0005530878.tif 000004
【図４】
0005530878.tif 000005
【図５】
0005530878.tif 000006
【図６】
0005530878.tif 000007
【図７】
0005530878.tif 000008
【図８】
0005530878.tif 000009
【図９】
0005530878.tif 000010
【図１０】
0005530878.tif 000011