(57)【要約】【課題】  マスター計算機と各レプリカ計算機とのデータ等価を、無駄なデータ処理や保存を行うことなしに計算機資源や通信資源を効率よく活用して高速に実現する。【解決手段】  モード処理部１５は、モード情報管理と自計算機のモード管理およびモード変更を行う。マスター計算機において、データ更新処理部１２２は、データ更新操作の結果を更新データキャッシュ１２４に格納した後、更新内容コミットデータとしてデータベース１１に格納し、更新データマージ部１３１は、更新内容コミットデータをマージしてマージデータを生成し、レプリケーション通信部１４２は、マージデータをレプリケーションデータとしてレプリカ計算機に送信する。レプリカ計算機において、マージデータ展開部１３２は、受信したレプリケーションデータを更新内容コミットデータに展開し、受信データ反映部１２３は、更新内容コミットデータをデータベース１１に反映する。【選択図】  図１
2005339411.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して接続された複数の計算機に目的データをそれぞれ格納し、特定の１つの計算機をマスターモード、その他の各計算機をレプリカモードで運用することによりマスター計算機およびレプリカ計算機としてそれぞれ動作させ、マスター計算機でデータ更新操作により目的データがオリジナルに更新された場合に、各レプリカ計算機の目的データをマスター計算機と同一内容に等価する分散データ等価方法において
前記各計算機は、
複数のアプリケーションからアクセス可能な共有領域に前記目的データを格納するデータファイルを配置してなるデータベースを備え、
前記複数の計算機のうち、どの計算機が前記マスター計算機であるかを特定するモード情報と自計算機のモードを特定するモード情報を含むモード情報を管理して、他計算機との間でモード情報の送受信を行うと共に、モード切替が必要な場合にはモード遷移および予め決められたモード遷移後の動作を実行するモード処理ステップを行い、
前記マスター計算機により、
前記データ更新操作の結果を更新キャッシュに一旦格納すると共に、コミット要求に応じて更新キャッシュの内容を１個の更新内容コミットデータとし、固有のデータ特定情報を付加して前記データファイルに格納するデータ更新ステップと、
予め設定されたマージ併合条件に従って決められる１個または複数個の前記更新内容コミットデータをマージしてマージデータを生成する更新データマージステップと、
前記モード情報に基づき、等価対象となる前記各レプリカ計算機を示す送信先情報を管理して、この送信先情報に基づき各レプリカ計算機に対して前記マージデータをレプリケーションデータとして送信するレプリケーション送信ステップを行い、
前記レプリカ計算機により、
前記モード情報に基づき、レプリケーションデータの送信元となる前記マスター計算機を示す送信元情報を管理して、この送信元情報に基づきマスター計算機からのレプリケーションデータを受信するレプリケーション受信ステップと、
前記レプリケーションデータである前記マージデータを、元の１個または複数個の前記更新内容コミットデータに展開するマージデータ展開ステップと、
展開された前記更新内容コミットデータを、各更新内容コミットデータ毎に、そのデータのリトリーブ状態を示すリトリーブ状態情報に基づき、前記データファイルに反映するか否か判定して、反映すると判定した更新内容コミットデータをその前記データ特定情報と共にデータファイルに反映する受信データ反映ステップを行い、
前記レプリカ計算機により、
自計算機と前記マスター計算機の前記データファイル間の差異をなくすためにデータファイルの一部または全部を一括してコピーするリトリーブに必要なリトリーブデータを要求するリトリーブ要求をマスター計算機に送信するリトリーブ要求送信ステップを行い、
前記マスター計算機により、
前記レプリカ計算機からの前記リトリーブ要求の受信に応答して前記リトリーブデータをそのレプリカ計算機に送信するリトリーブデータ送信ステップを行い、
前記レプリカ計算機により、
前記マスター計算機から前記リトリーブデータを受信した場合に、前記リトリーブを実行して前記リトリーブ状態情報を更新するリトリーブデータ受信ステップを行う、
ことを特徴とする分散データ等価方法。
【請求項２】
前記データファイルは、前記目的データのデータ本体として、行と列から構成される表形式データを格納すると共に、その表形式データまたはそれを構成する列、行のいずれかの単位のデータを特定するデータ特定情報とそれぞれに割り当てられたシリアル番号から構成されるデータ状態表を格納しており、
前記リトリーブ状態情報は、前記表形式データまたはそれを構成する列、行のいずれかの単位の前記データを特定するデータ特定情報とそれぞれの前記リトリーブ状態から構成されるリトリーブ状態表であり、
前記リトリーブデータは、前記データ状態表を比較した結果として得られる前記表形式データまたはそれを構成する列、行のいずれかの単位のデータである、
ことを特徴とする請求項１に記載の分散データ等価方法。
【請求項３】
前記各計算機で管理される前記モード情報は、どの計算機が前記マスター計算機であるかを特定するマスター計算機情報と自計算機のモードを特定する自計算機モード情報を含むモード管理情報として管理され、
前記各計算機による前記モード処理ステップは、
自計算機の初期起動時において、他計算機がマスター計算機であることを特定するモード情報を受信した場合に、前記マスター計算機情報を当該他計算機に設定して維持すると共に、前記自計算機モード情報を前記レプリカモードに設定して維持する初期起動ステップと、
前記初期起動ステップ後に、自計算機上で前記アプリケーションによるマスター設定が行われた場合に、前記マスター計算機情報を自計算機に設定して維持し、かつ、前記自計算機モード情報を前記マスターモードに設定して維持すると共に、他計算機に自計算機がマスター計算機であることを特定するモード情報を送信するマスターモード変更ステップと、
前記初期起動ステップ後に、他計算機で前記アプリケーションによるマスター設定が行われた結果、当該他計算機がマスター計算機であることを特定するモード情報を受信した場合に、前記マスター計算機情報を当該他計算機に設定して維持すると共に、前記自計算機モード情報を前記レプリカモードに設定して維持するレプリカモード変更ステップを含む、
ことを特徴とする請求項１または請求項２に記載の分散データ等価方法。
【請求項４】
前記初期起動ステップおよび前記レプリカモード変更ステップの各々は、
他計算機がマスター計算機であることを特定するモード情報を受信した場合に、前記マスター計算機情報を当該他計算機に設定して維持するステップと、
前記レプリケーション受信ステップを開始可能にするステップと、
前記マスター計算機に対して前記リトリーブ要求送信ステップと前記リトリーブデータ受信ステップを行うことにより、そのマスター計算機と前記データファイル中のデータを一括等価するステップと、
前記自計算機モード情報を前記レプリカモードに設定して維持するステップを含み、
前記マスターモード変更ステップは、
自計算機上で前記アプリケーションによるマスター設定が行われた場合に、前記マスター計算機情報または他計算機からのモード情報の受信に基づき、前記マスター計算機として動作中の他計算機の有無を確認するステップと、
前記マスター計算機として動作中の他計算機が存在していないことを確認した場合に、前記マスター計算機情報を自計算機に設定して維持するステップと、
前記レプリケーション送信ステップを開始可能にするステップと、
前記リトリーブデータ送信ステップを開始可能にするステップと、
前記自計算機モード情報を前記マスターモードに設定して維持するステップと、
他計算機に自計算機が前記マスター計算機であることを特定するモード情報を送信するステップを含む、
ことを特徴とする請求項３に記載の分散データ等価方法。
【請求項５】
前記各計算機による前記モード処理ステップは、前記マスターモードと前記レプリカモードに加えて、マスターモードまたはレプリカモードになる途中の状態を、遷移中モードとして取り扱い、
前記マスターモード変更ステップは、
前記自計算機モード情報を前記遷移中モードに一旦設定して維持するステップと、遷移中モードから前記マスターモードに変更して維持するステップを含み、
前記レプリカモード変更ステップは、
前記自計算機モード情報を前記遷移中モードに一旦設定して維持するステップと、遷移中モードから前記マスターモードに変更して維持するステップを含む、
ことを特徴とする請求項３または請求項４に記載の分散データ等価方法。
【請求項６】
前記各計算機による前記モード処理ステップは、前記マスターモードと前記レプリカモードに加えて、マスターモードになる途中の状態とレプリカモードになる途中の状態を、マスター遷移中モードおよびレプリカ遷移中モードとしてそれぞれ取り扱い、
前記マスターモード変更ステップは、
前記自計算機モード情報を前記マスター遷移中モードに一旦設定して維持するステップと、マスター遷移中モードから前記マスターモードに変更して維持するステップを含み、
前記レプリカモード変更ステップは、
前記自計算機モード情報を前記レプリカ遷移中モードに一旦設定して維持するステップと、レプリカ遷移中モードから前記マスターモードに変更して維持するステップを含む、
ことを特徴とする請求項５に記載の分散データ等価方法。
【請求項７】
前記マスターモード変更ステップは、
自計算機上で前記アプリケーションによるマスター設定が行われた場合に、前記自計算機モード情報を前記マスター遷移中モードに設定して維持するステップと、
他計算機に自計算機が前記マスター遷移中モードであることを示すマスター遷移中情報を送信するステップと、
前記マスター計算機情報または他計算機からのモード情報の受信に基づき、前記マスター計算機として動作中の他計算機の有無を確認するステップと、
前記マスター計算機として動作中の他計算機が存在していないことを確認した場合に、前記マスター計算機情報を自計算機に設定して維持するステップと、
前記レプリケーション送信ステップを開始可能にするステップと、
前記リトリーブデータ送信ステップを開始可能にするステップと、
前記自計算機モード情報を前記マスターモードに設定して維持するステップと、
他計算機に自計算機が前記マスターモードで前記マスター計算機として動作していることを示すマスター運用中情報を送信するステップを含み、
前記レプリカモード変更ステップは、
他計算機から前記マスター遷移中情報を受信した場合に、前記自計算機モード情報を前記レプリカ遷移中モードに設定して維持するステップと、
他計算機から前記マスター運用中情報を受信した場合に、前記マスター計算機情報を当該他計算機に設定して維持するステップと、
前記レプリケーション受信ステップを開始可能にするステップと、
前記マスター計算機に対して前記リトリーブ要求送信ステップと前記リトリーブデータ受信ステップを行うことにより、そのマスター計算機と前記データファイル中のデータを一括等価するステップと、
前記自計算機モード情報を前記レプリカモードに設定して維持するステップを含む、
ことを特徴とする請求項６に記載の分散データ等価方法。
【請求項８】
前記初期起動ステップは、
自計算機の初期起動時において、他計算機がマスター計算機であることを特定するモード情報が得られない場合に、前記自計算機モード情報を前記遷移中モードまたは前記レプリカ遷移中モードに設定して維持するステップを含む、
ことを特徴とする請求項５乃至請求項７のいずれかに記載の分散データ等価方法。
【請求項９】
前記初期起動ステップおよび前記レプリカモード変更ステップの各々は、
前記マスター計算機に対して前記リトリーブ要求送信ステップと前記リトリーブデータ受信ステップを行うことにより、そのマスター計算機と前記データファイル中のデータを一括等価するステップを含み、
前記リトリーブ要求送信ステップまたは前記リトリーブデータ送信ステップは、
前記リトリーブ要求について要求元である前記レプリカ計算機と要求先である前記マスター計算機の前記データファイル中に格納された前記データ特定情報の比較を行い、その比較結果に応じて前記リトリーブデータを特定するデータ特定情報比較ステップを含む、
ことを特徴とする請求項３乃至請求項５のいずれかに記載の分散データ等価方法。
【請求項１０】
前記リトリーブ要求送信ステップは、前記マスター計算機に前記リトリーブ要求を送信する場合に、自計算機の前記データ特定情報をそのマスター計算機に送信するステップを含み、
前記リトリーブデータ送信ステップは、前記リトリーブ要求元である前記レプリカ計算機から送信された前記リトリーブ要求と前記データ特定情報を受信した場合に、前記データ特定情報比較ステップとして、そのデータ特定情報と自計算機のデータ特定情報の比較を行い、その比較結果に応じて前記リトリーブデータを特定するステップを含む、
ことを特徴とする請求項９に記載の分散データ等価方法。
【請求項１１】
前記リトリーブ要求送信ステップは、
前記マスター計算機に前記リトリーブ要求を送信する前に、そのマスター計算機の前記データ特定情報の送信要求を送信するステップと、
前記マスター計算機から前記データ特定情報の送信要求に応じたデータ特定情報を受信した場合に、前記データ特定情報比較ステップとして、そのデータ特定情報と自計算機のデータ特定情報の比較を行い、その比較結果に応じて前記リトリーブデータを特定するステップを含み、
前記リトリーブデータ送信ステップは、前記レプリカ計算機から送信された前記データ特定情報の送信要求を受信した場合に、自計算機の前記データ特定情報をそのレプリカ計算機に送信するステップを含む、
ことを特徴とする請求項９に記載の分散データ等価方法。
【請求項１２】
前記更新データマージステップは、
前記マージ併合条件として、前回のマージ後に得られた前記更新内容コミットデータの総数、総データサイズ、前回のマージからの経過時間、を含む複数の条件項目の中から選択された単数または複数の条件項目の組み合わせから構成されたマージ併合条件が成立するか否かを判定するステップと、
前記マージ併合条件が成立した時点で、マージする前記更新内容コミットデータの数を決定するステップを含む、
ことを特徴とする請求項１乃至請求項１１のいずれかに記載の分散データ等価方法。
【請求項１３】
ネットワークを介して接続された複数の計算機に目的データをそれぞれ格納し、特定の１つの計算機をマスターモード、その他の各計算機をレプリカモードで運用することによりマスター計算機およびレプリカ計算機としてそれぞれ動作させ、マスター計算機でデータ更新操作により目的データがオリジナルに更新された場合に、各レプリカ計算機の目的データをマスター計算機と同一内容に等価する分散データ等価システムにおいて、
前記各計算機は、
複数のアプリケーションからアクセス可能な共有領域に前記目的データを格納するデータファイルを配置してなるデータベースと、
前記複数の計算機のうち、どの計算機が前記マスター計算機であるかを特定する情報と自計算機のモードを特定する情報を含むモード情報を管理して、モード切替が必要な場合にはモード遷移および予め決められたモード遷移後の動作を実行すると共に、他計算機との間でモード情報の送受信を行うモード処理部と、
前記マスターモード時に、前記データ更新操作の結果を更新キャッシュに一旦格納すると共に、コミット要求に応じて更新キャッシュの内容を１個の更新内容コミットデータとし、固有のデータ特定情報を付加して前記データファイルに格納するデータ更新処理部と、
前記マスターモード時に、予め設定されたマージ併合条件に従って決められる１個または複数個の前記更新内容コミットデータをマージしてマージデータを生成する更新データマージ部と、
前記マスターモード時に、前記モード情報に基づき、等価対象となる前記各レプリカ計算機を示す送信先情報を管理して、この送信先情報に基づき各レプリカ計算機に対して前記マージデータをレプリケーションデータとして送信し、前記レプリカモード時に、モード情報に基づき、レプリケーションデータの送信元となる前記マスター計算機を示す送信元情報を管理して、この送信元情報に基づきマスター計算機からのレプリケーションデータを受信するレプリケーション処理部と、
前記レプリカモード時に、前記レプリケーションデータである前記マージデータを、元の１個または複数個の前記更新内容コミットデータに展開するマージデータ展開部と、
前記レプリカモード時に、展開された前記更新内容コミットデータを、各更新内容コミットデータ毎に、そのデータのリトリーブ状態を示すリトリーブ状態情報に基づき、前記データファイルに反映するか否か判定して、反映すると判定した更新内容コミットデータをその前記データ特定情報と共にデータファイルに反映する受信データ反映部と、
前記レプリカモード時に、自計算機と前記マスター計算機の前記データファイル間の差異をなくすためにデータファイルの一部または全部を一括してコピーするリトリーブに必要なリトリーブデータを要求するリトリーブ要求をマスター計算機に送信すると共に、マスター計算機からリトリーブデータを受信した場合に、リトリーブを実行して前記リトリーブ状態情報を更新し、前記マスターモード時に、前記レプリカ計算機からのリトリーブ要求の受信に応答してリトリーブデータをそのレプリカ計算機に送信するリトリーブ処理部を備えている、
ことを特徴とする分散データ等価システム。
【請求項１４】
ネットワークを介して接続された複数の計算機に目的データをそれぞれ格納し、特定の１つの計算機をマスターモード、その他の各計算機をレプリカモードで運用することによりマスター計算機およびレプリカ計算機としてそれぞれ動作させ、マスター計算機でデータ更新操作により目的データがオリジナルに更新された場合に、各レプリカ計算機の目的データをマスター計算機と同一内容に等価する分散データ等価システムを構築するために各計算機に適用される分散データ等価システム構築用プログラムにおいて、
前記計算機が、複数のアプリケーションからアクセス可能な共有領域に前記目的データを格納するデータファイルを配置してなるデータベースを備えている場合に、この計算機に、
前記複数の計算機のうち、どの計算機が前記マスター計算機であるかを特定する情報と自計算機のモードを特定する情報を含むモード情報を管理して、モード切替が必要な場合にはモード遷移および予め決められたモード遷移後の動作を実行すると共に、他計算機との間でモード情報の送受信を行うモード処理機能と、
前記マスターモード時に、前記データ更新操作の結果を更新キャッシュに一旦格納すると共に、コミット要求に応じて更新キャッシュの内容を１個の更新内容コミットデータとし、固有のデータ特定情報を付加して前記データファイルに格納するデータ更新処理機能と、
前記マスターモード時に、予め設定されたマージ併合条件に従って決められる１個または複数個の前記更新内容コミットデータをマージしてマージデータを生成する更新データマージ機能と、
前記マスターモード時に、前記モード情報に基づき、等価対象となる前記各レプリカ計算機を示す送信先情報を管理して、この送信先情報に基づき各レプリカ計算機に対して前記マージデータをレプリケーションデータとして送信し、前記レプリカモード時に、モード情報に基づき、レプリケーションデータの送信元となる前記マスター計算機を示す送信元情報を管理して、この送信元情報に基づきマスター計算機からのレプリケーションデータを受信するレプリケーション処理機能と、
前記レプリカモード時に、前記レプリケーションデータである前記マージデータを、元の１個または複数個の前記更新内容コミットデータに展開するマージデータ展開機能と、
前記レプリカモード時に、展開された前記更新内容コミットデータを、各更新内容コミットデータ毎に、そのデータのリトリーブ状態を示すリトリーブ状態情報に基づき、前記データファイルに反映するか否か判定して、反映すると判定した更新内容コミットデータをその前記データ特定情報と共にデータファイルに反映する受信データ反映機能と、
前記レプリカモード時に、自計算機と前記マスター計算機の前記データファイル間の差異をなくすためにデータファイルの一部または全部を一括してコピーするリトリーブに必要なリトリーブデータを要求するリトリーブ要求をマスター計算機に送信すると共に、マスター計算機からリトリーブデータを受信した場合に、リトリーブを実行して前記リトリーブ状態情報を更新し、前記マスターモード時に、前記レプリカ計算機からのリトリーブ要求の受信に応答してリトリーブデータをそのレプリカ計算機に送信するリトリーブ処理機能、
を実現させることを特徴とする分散データ等価システム構築用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して接続された複数の計算機をマスター計算機およびレプリカ計算機としてそれぞれ動作させ、マスター計算機で目的データがオリジナルに更新された場合に、各レプリカ計算機の目的データをマスター計算機と同一内容に等価する分散データ等価技術に関するものである。
【背景技術】
【０００２】
昨今の都市の基幹をなすライフラインと言われる産業システム(電力、ガス、水道、公共交通機関等)においては、システムを監視制御するために用いられるデータベースは巨大になり、かつ高速にアクセスできることが求められている。そして、産業システムの状態が変われば、データベースを変化させ、複数箇所の計算機のデータ内容が等しく保たれることが求められている。等しく保つことで、複数箇所ではネットワークを介してデータを取得することがないので、高速なアクセスが可能となる。
【０００３】
また、最も重要な計算機をサーバーとして運用する場合、このサーバーが停止しても産業システムの機能が失われないようにサーバー機能を他計算機がバックアップする、二重系(または多重系)のシステムを構成するのが通常である。多重系構成にすることによって、サーバーが停止しても、他の計算機に直ちにサーバー機能を移して、産業システムの機能を損なわないようにする。サーバー機能を移しても、以前と変わらずデータを引き継いでアクセス可能であり、かつ、他の残りの計算機も同様に等しくデータが保たれた状態であることが必要である。このように、産業システムにおいては、複数の計算機間でデータ内容を等しく保つ分散データ等価システムが必要となっていた。
【０００４】
特許文献１においては、このような分散データ等価システムとして、システム内における複数の計算機のデータを等しく保つために変更内容を転送する電力系統の監視制御手法が提案されている。この手法は、電力系統の監視制御データベースの内容に変更のあった場合には、各計算機間でその変更内容を授受するものである。この手法によれば、各計算機でデータベースの内容を更新すると、各計算機が変更内容を他計算機へ送り出す。同時刻に同箇所のデータ変更があった場合は、後でデータ内容を修正して調整するものである。この手法においては、複数箇所の計算機からデータベースを更新可能である。
【０００５】
また、特許文献２においては、複数の計算機がある場合に、特定の1つの計算機をベースホストと呼び、ベースホストにてデータ更新可能とした場合に、ベースホストを切り替えるベースホスト切替型データベース管理システムについて記載されている。この手法においては、ベースホストを切り替えるとき、ベースホストを変更したという情報を、ある計算機から変更内容をレプリケーション通信で送り出して、各計算機のベースホスト内容を書き換える。また、ベースホストを切り替えた場合に、新旧ベースホストのデータ内容のずれを合わせるのに、切替のタイミングをきっかけにして、データベースのデータをレプリケーション手段によって最新データに等しく保つようにしている。
【０００６】
また、特許文献３においては、レプリケーションにより複数の計算機のデータ内容を、一貫して保つ分散データ管理手法について記載されている。この手法においては、データベースへの更新はトランザクションという一連の操作の塊で行われる。トランザクションの中身はデータベースの中で実行され、データベースで実行された更新内容は、通信手段によって他計算機にレプリケーションされる。
【０００７】
【特許文献１】特許番号第２７８７１０８号公報
【特許文献２】特開２００２−２９７５９３公報
【特許文献３】特開２００２−２９７４２８公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
複数の計算機にあるデータを等しく保つ分散データ等価システムにおいては、データ内容を等しく保つための変更内容の送信が、高速に行われることが求められている。多重系システムを構成し、サーバーが停止してもシステムとして継続するため、サーバー機能(マスター)を他に移して動作し続けることが必要である。マスターを切り替える機能があり、切り替えてもデータが等しく保たれて継続して利用できるデータ管理システムが必要である。
【０００９】
前記特許文献１の手法は、データの変更内容を各計算機から送信するものであるが、同時期に同箇所を複数の計算機で更新する可能性もあり、このような場合には、一つの計算機以外の更新内容を一旦無効にした後に残りの計算機の更新内容を順次反映し直すという調整が必要であった。このような調整を行うためには、更新順番の調停、変更の履歴を保存する必要があった。この手法においては、結局のところ、システム全体として更新のスループットが高速にならず、かつ、各計算機には、変更内容のデータ量に比べて大幅に大容量の主記憶メモリが必要になっていた。
【００１０】
また、前記特許文献２の手法においては、ベースホスト（マスター）を切り替える場合に、例えば、「ベースホストがホストＢに変更された」、「ベースからレプリカに変更された」というような変更内容がレプリケーションされて、各計算機の管理情報を変更するので、ベースホストが存在しなくなったことを確認した別の計算機がベースホストになるような、他の計算機のモード変更と同期する振る舞いはできなかった。そのため、通信時間の時間遅れ次第では、ある時間帯に２つ以上のベースホストが同時に存在する可能性があった。また、切替後のデータをレプリケーションで合わせるため、通信の遅れ等でタイムアウトした場合に、データが一致しない計算機が発生する可能性もあった。複数の計算機が同時にデータ更新可能なベースホストになるための動作を行った場合には、システム管理情報の書き換え権限を調停するために、いずれの管理情報も書き換えられず、２つ以上のベースホストが動作してしまう可能性があった。
【００１１】
また、前記特許文献３の手法においては、並行して複数のデータ更新が実行されても、データ更新がトランザクションという形でデータベースへ行われるため、データベースのスループットの影響を受け易かった。そして、その変更内容をそのままレプリケーション送信するため、細かなトランザクションが続いた場合には、実際の変更内容に比べて、通信のオーバーヘッドが大きくなり、更新のスループットが通信のスループットより低いレベルで制限される可能性があった。
【００１２】
なお、このような問題点は、産業システムを監視制御するための分野に限らず、マスター計算機のデータ更新結果を各レプリカ計算機に反映させる各種の分野における分散データ等価技術においても同様に存在している。
【００１３】
本発明は、上記のような従来技術の問題点を解決するために提案されたものであり、その目的は、マスター計算機と各レプリカ計算機とのデータ等価を、無駄なデータ処理や保存を行うことなしに計算機資源や通信資源を効率よく活用して高速に実現可能な分散データ等価方法とシステム、およびプログラムを提供することである。
【課題を解決するための手段】
【００１４】
本発明は、上記のような目的を達成するために、各計算機でマスター計算機と自計算機のモード情報を管理し、モード情報に基づいてデータ更新結果の送受信を行うと共に、レプリカ計算機からのリトリーブ要求に応じてマスター計算機からリトリーブデータを送信することにより、マスター計算機と各レプリカ計算機とのデータ等価を、無駄なデータ処理や保存を行うことなしに計算機資源や通信資源を効率よく活用して高速に実現できるようにしたものである。
【００１５】
本発明の分散データ等価方法は、ネットワークを介して接続された複数の計算機に目的データをそれぞれ格納し、特定の１つの計算機をマスターモード、その他の各計算機をレプリカモードで運用することによりマスター計算機およびレプリカ計算機としてそれぞれ動作させ、マスター計算機でデータ更新操作により目的データがオリジナルに更新された場合に、各レプリカ計算機の目的データをマスター計算機と同一内容に等価するための方法である。この分散データ等価方法において、各計算機は、複数のアプリケーションからアクセス可能な共有領域に目的データを格納するデータファイルを配置してなるデータベースを備え、モード処理ステップを行うと共に、マスター計算機とレプリカ計算機の間で、データ更新、更新データマージ、レプリケーション送信、レプリケーション受信、マージデータ展開、受信データ反映、リトリーブ要求送信、リトリーブデータ送信、リトリーブデータ受信、の各ステップを行うことを特徴としている。
【００１６】
ここで、モード処理ステップは、複数の計算機のうち、どの計算機がマスター計算機であるかを特定するモード情報と自計算機のモードを特定するモード情報を含むモード情報を管理して、他計算機との間でモード情報の送受信を行うと共に、モード切替が必要な場合にはモード遷移および予め決められたモード遷移後の動作を実行するステップである。
【００１７】
また、データ更新、更新データマージ、レプリケーション送信、の各ステップは、マスターモード時にマスター計算機として動作する計算機により行われる。データ更新ステップは、データ更新操作の結果を更新キャッシュに一旦格納すると共に、コミット要求に応じて更新キャッシュの内容を１個の更新内容コミットデータとし、固有のデータ特定情報を付加して前記データファイルに格納するステップである。更新データマージステップは、予め設定されたマージ併合条件に従って決められる１個または複数個の前記更新内容コミットデータをマージしてマージデータを生成するステップである。レプリケーション送信ステップは、モード情報に基づき、等価対象となる各レプリカ計算機を示す送信先情報を管理して、この送信先情報に基づき各レプリカ計算機に対してマージデータをレプリケーションデータとして送信するステップである。
【００１８】
これに対して、レプリケーション受信、マージデータ展開、受信データ反映、の各ステップは、レプリカモード時にレプリカ計算機として動作する計算機により行われる。レプリケーション受信ステップは、モード情報に基づき、レプリケーションデータの送信元となるマスター計算機を示す送信元情報を管理して、この送信元情報に基づきマスター計算機からのレプリケーションデータを受信するステップである。マージデータ展開ステップは、レプリケーションデータである前記マージデータを、元の１個または複数個の更新内容コミットデータに展開するステップである。受信データ反映ステップは、展開された更新内容コミットデータを、各更新内容コミットデータ毎に、そのデータのリトリーブ状態を示すリトリーブ状態情報に基づき、データファイルに反映するか否か判定して、反映すると判定した更新内容コミットデータをそのデータ特定情報と共にデータファイルに反映するステップである。
【００１９】
さらに、リトリーブ要求送信は、レプリカ計算機により、自計算機とマスター計算機のデータファイル間の差異をなくすためにデータファイルの一部または全部を一括してコピーするリトリーブに必要なリトリーブデータを要求するリトリーブ要求をマスター計算機に送信するステップである。リトリーブデータ送信ステップは、マスター計算機により、レプリカ計算機からのリトリーブ要求の受信に応答してリトリーブデータをそのレプリカ計算機に送信するステップである。リトリーブデータ受信ステップは、レプリカ計算機により、マスター計算機からリトリーブデータを受信した場合に、リトリーブを実行してリトリーブ状態情報を更新するステップである。
【００２０】
なお、本発明の分散データ等価システム、プログラムは、いずれも、上記のような分散データ等価方法の特徴を、別の観点から把握したものである。
【００２１】
このような特徴を有する本発明によれば、マスター切替というモード管理において各計算機でモード変更を行い、モード変更は、他の計算機のモード変更を受信したことをきっかけでモード遷移ルールに従って遷移し、遷移した状況に応じてデータ等価を行うことができる。すなわち、複数の計算機のモード変更を互いの状況に応じて行うことができ、かつ、モード管理の状況に応じてデータ等価を積極的に行うことができる。そのため、複数のマスター計算機が存在してしまうような問題を生じることなく、マスター計算機を１つに定めて、他の計算機との調整を行うことなくデータ更新を連続して高速に行うことができる。
【００２２】
また、各アプリケーションでデータ更新操作を行った場合に、そのデータ更新結果をアプリケーションごとに更新キャッシュに格納し、コミット操作によって送り出し、１つまたは複数のアプリケーションからなされたコミットをマージしてある程度のデータ単位に固めてレプリケーション送信を行うことができる。そのため、複数のアプリケーションでデータ更新を並行かつ高速に行うことができる。また、コミットした結果は複数個がマージされるため、個別に送信する場合に比べて送信オーバーヘッドを大幅に減らすことができる。したがって、データ更新やコミットよりスループットの低い通信機能であっても、その通信機能の能力を最大限に活用して効率よくデータ更新結果を送信することができ、その結果、計算機間のデータ等価を、無駄なデータ処理や保存を行うことなしに計算機資源や通信資源を効率よく活用して高速に実現できる。
【発明の効果】
【００２３】
以上のように、本発明によれば、マスター計算機と各レプリカ計算機とのデータ等価を、無駄なデータ処理や保存を行うことなしに計算機資源や通信資源を効率よく活用して高速に実行可能な分散データ等価方法とシステム、およびプログラムを提供することができる。
【発明を実施するための最良の形態】
【００２４】
以下には、本発明を適用した分散データ等価システムの実施形態について図面を参照して説明する。ただし、ここで記載する実施形態は、本発明をなんら限定するものではなく、本発明の一態様を例示するものにすぎない。
【００２５】
本発明は、典型的には、コンピュータをソフトウェアで制御することにより実現される。この場合のソフトウェアは、コンピュータのハードウェアを物理的に活用することで本発明の各計算機の機能および作用効果を実現するものであり、また、従来技術を適用可能な部分には好適な従来技術が適用される。さらに、本発明を実現するハードウェアやソフトウェアの具体的な種類や構成、ソフトウェアで処理する範囲などは自由に変更可能であり、例えば、本発明を実現するプログラムは本発明の一態様である。
【００２６】
［１．用語説明］
以下にはまず、本明細書中で用いられる重要な用語の定義について説明する。
【００２７】
（１）マスター計算機：
等価対象となる目的データに対して、単なる複製ではなく、オリジナルなデータ更新が可能で、また、そのオリジナルにデータ更新されたデータを参照可能な計算機である。通常は、ネットワークで接続されたシステムの中で特定の１台である。
【００２８】
（２）レプリカ計算機：
等価対象となる目的データに対して、オリジナルなデータ更新はできず、マスター計算機でオリジナルにデータ更新されたデータの複製とその参照のみが可能な計算機である。すなわち、レプリカ計算機により取り扱われる目的データは、マスター計算機のオリジナルデータの複製のみによりデータ更新される。
【００２９】
（３）マスター切替：
１つのレプリカ計算機をマスター計算機に設定することである。一般的には、既にマスター計算機が存在する場合に、１つのレプリカ計算機をマスターに設定することを意味している。これまでマスターであった計算機を旧マスター、新たにマスターに設定した計算機を新マスターと呼ぶことがある。また、マスター計算機が故障等で失われて存在せず、レプリカ計算機のみが存在する場合に、１つのレプリカ計算機をマスターに設定することもマスター切替と呼ぶ。さらに、設定や起動のタイミング等で、マスター計算機が複数存在してしまったとき、複数のマスター計算機または他のレプリカ計算機の１つをマスターに設定することもマスター切替と呼ぶ。
【００３０】
（４）データファイル：
等価対象となる目的データのデータ本体が格納されたファイルである。具体的には、計算機のハードディスクや主記憶メモリ等の記憶装置上に配置される。データファイルは、複数のアプリケーションからアクセス可能な共有領域に配置されて、各アプリケーションから更新・参照される。一般的には、データファイルは、データ本体と、更新シリアル番号を格納するデータ状態表から構成される。この場合、データ本体は、それぞれが、テーブル、リスト、キュー等のデータ構造を持つ１個または複数個のデータから構成される。以下の実施形態では、一例として、データ本体が、複数個の表形式データ（テーブル）から構成されている場合について説明している。また、本発明のデータファイルは、ハードディスク上のデータと後述するマッピングデータの両方を含む概念である。
【００３１】
（５）データ状態表：
データ本体をいくつかの単位に分けて、各単位毎にそれぞれの更新シリアル番号を格納した表である。具体的に、データ本体が、複数のテーブルから構成される場合、データ状態表は、各テーブルのシリアル番号を格納したものになる。また、テーブルをカラム別に分けて考えた場合、データ状態表は、テーブルとカラムのシリアル番号を格納したものになる。
【００３２】
（６）シリアル番号：
データ更新される毎に増分される番号である。一般的には、データを構成する各単位毎にシリアル番号を振る。例えば、テーブルとカラムの単位でシリアル番号を振る場合に、更新があったならば、更新されたテーブルのシリアル番号と、そのテーブルの該当カラムのシリアル番号をそれぞれ更新する。
【００３３】
（７）更新キャッシュ：
アプリケーション毎に設けられた一時的な記憶領域である。すなわち、各アプリケーションでなされたデータ更新内容をそれぞれ溜めておく領域である。
【００３４】
（８）データ更新：
アプリケーションによる「データ更新」とは、データの書き換え、追加、削除の全てを含む概念である。このような操作を行うと、通常は、一旦キャッシュに溜められて、即座にデータファイルに変更が加えられることはない。１つのアプリケーションがデータ更新した場合、そのデータ更新結果のコミットが行われない段階では、他のアプリケーションにそのデータ更新結果は示されない。
【００３５】
（９）コミット：
キャッシュに溜められたデータ更新結果を、複数のアプリケーションが共有するデータファイルに反映することである。反映とは、データファイル中の特定のデータを更新対象とするデータ更新が行われた場合に、その特定データのデータ更新前のデータ値を、データ更新結果として得られたデータ値に変更することである。１つのアプリケーションがデータ更新した場合、そのデータ更新結果のコミットが行われた段階で初めて、他のアプリケーションにもデータ更新結果が示されることになる。また、コミットされた１回毎のデータはコミットデータと呼ぶが、コミットと略称することもある。
【００３６】
（１０）モード：
計算機の状態である。少なくとも、マスターモードとレプリカモードがある。以下の実施形態では、マスターモードである「マスター運用中」、レプリカモードである「レプリカ運用中」に加えて、「マスター遷移中」、「レプリカ遷移中」のモードを用いている。また、説明の簡略化の観点から、概して、自計算機または他計算機のモードを示すモード情報を「モード」と略している。
【００３７】
（１１）モード管理：
少なくとも自計算機のモードを維持することであり、必要であれば、特定の計算機をマスター計算機に維持することも含む。さらに、全計算機のモードを維持する場合もあり得る。基本的なモード管理は、他計算機からのモード情報を受信して、自計算機のモードを変更したり、モード変更後にその変更後のモード情報を送信したりするものである。また、モード情報を受信したり、自計算機のモードを変更したりした場合は、必要に応じて、レプリケーションやリトリーブを連携して働かせることも行う。
【００３８】
（１２）モード管理表：
モード管理表には少なくとも自計算機のモード情報が格納されている。実際には、モード管理、リトリーブ、レプリケーションの機能に利用するために、モード管理表には、自計算機が認識するマスター計算機名（名称またはＩＰアドレス等のユニークな識別子）や、モード送受信をやり取りした他計算機のモードを格納することもある。
【００３９】
（１３）モード変更：
計算機のモードを変更することである。モードを変更した際に、必要があれば、モード管理の一部として変更後のモード情報を送信する。
【００４０】
（１４）リトリーブ：
１つの計算機から、データファイルの全体または一部を一括してコピーすることである。例えば、テーブルデータファイルならば、１つのテーブル全体をコピーする操作や、テーブルの一部のカラムをコピーする操作がリトリーブである。通常のリトリーブにおいては、コピーを受けようとする側がリトリーブ要求を発して、要求を受けた側が必要な部分（例えば、テーブルやカラム）を送信する。送信は１対１となる。
【００４１】
（１５）リトリーブ状態表：
データファイル中のデータ本体のリトリーブ送受信する単位ごとに、当該データがリトリーブのどのような状態にあるかを示す情報を格納した表である。例えば、状態としては、「リトリーブ中」、「リトリーブ完了」などの状態がある。テーブルデータの場合、リトリーブ送受信する単位としては、カラム単位、テーブル単位等が考えられる。この場合、リトリーブ状態表は、カラム毎の状態、テーブル毎の状態等が記述された表となる。
【００４２】
（１６）レプリケーション：
マスター計算機においてデータファイルが更新された際に、更新内容を１つまたは複数のレプリカ計算機に送信することである。通常は、同一の送信内容を複数のレプリカ計算機に同時に送る。送信される更新内容をレプリケーションデータと呼ぶ。また、レプリカ計算機において自計算機がレプリケーションデータの受信対象であることをマスター計算機に通知することをレプリケーション接続と呼ぶ。レプリカ計算機においては、このレプリケーション接続を行うことにより、マスター計算機からのレプリケーションデータの受信が可能となる。
【００４３】
（１７）レプリケーション管理表：
レプリケーションの送受信側において、それぞれ送受信相手側の計算機を示す情報を格納した表である。すなわち、レプリケーションの送信側では、レプリケーション送信先計算機名を格納し、レプリケーションの受信側では、レプリケーション送信元計算機名を格納し、送信側でありかつ受信側でもある場合は、両方を格納した表である。
【００４４】
（１８）マージ：
複数のコミットデータを一体的にまとめて扱うことである。まとめられたものをマージデータと呼ぶ。逆に、マージデータを元の複数のコミットに分けることをマージ展開と呼ぶ。
【００４５】
（１９）マージ番号：
マージデータごとに振られた番号である。以下の実施形態では、マージ展開処理においてマージ番号の抜けをチェックすることで、リトリーブ要求を発するきっかけとなる。
【００４６】
（２０）マッピングデータ：
複数のアプリケーションが共有するデータファイルの実現方法の１つである。データベースの中身を固定的なハードディスク上に配置し、データベースを起動した際に、ハードディスクにあるデータを主記憶メモリ上のプロセス空間に映したデータである。主記憶メモリ上のプロセス空間に映されたマッピングデータを更新すれば、（ＯＳの実装によるが）ハードディスク上のデータについても直ちに更新される。また、マッピングデータを参照すれば、ハードディスク上のデータを読み出したことになる。
【００４７】
（２１）一斉同報通信：
複数の計算機に対して同時一斉に送信を行うことである。受信側の受信状況に関わらず送信する一方的な通信である。複数の計算機が特定のグループである場合と不特定多数である場合がある。ＩＰ網におけるマルチキャスト通信マルチブロードキャスト通信は、一斉同報通信の一例である。
【００４８】
（２２）アプリケーション：
各計算機上で動作するアプリケーションであるが、特に、分散データ等価システムのデータ処理やモード処理を発生させるシステム外部の外部アプリケーションを示している。
【００４９】
［２．システム構成］
図１は、本発明を適用した一つの実施形態に係る分散データ等価システム（以下には、本システムと略称する）を構成する各計算機を示すブロック構成図である。この図１に示すように、各計算機は、分散データ等価処理を実現するための構成要素として、データベース１１、データ処理部１２、マージデータ処理部１３、レプリケーション処理部１４、モード処理部１５、リトリーブ処理部１６、等を備えている。また、データ操作アプリケーション１７とモード設定アプリケーション１８は、各計算機上で動作して本システムのデータ処理やモード処理を発生させるシステム外部の外部アプリケーションである。なお、本システムの各構成要素１１〜１６の機能および構成は、次の通りである。
【００５０】
データベース１１は、分散データ等価システム監視制御データ等の目的データを格納する部分であり、ハードディスク上に配置されたデータファイル１１１とそのマッピングデータ１１２を備えている。このうち、データファイル１１１は、ハードディスク上において、複数のアプリケーションからアクセス可能な共有領域に配置されている。また、マッピングデータ１１２は、データファイル１１１を主記憶メモリ上のプロセス空間に映したデータである。このようにデータファイル１１１とマッピングデータ１１２からデータベース１１を構成するのは、本発明を計算機にて実現する方法の一つである。
【００５１】
データ処理部１２は、データベース１１中のデータを処理する部分であり、データ参照処理部１２１、データ更新処理部１２２、受信データ反映部１２３、更新データキャッシュ１２４を備えている。このうち、データ参照処理部１２１は、マスターモード時とレプリカモード時の両方で動作する部分であり、データ操作アプリケーション１７からのデータ参照要求に応じて、データベース１１中のデータの参照を行う。
【００５２】
また、データ更新処理部１２２は、マスターモード時に動作してデータベース１１中のデータの更新を行う部分であり、データ操作アプリケーション１７からのデータ更新要求に応じて、データ更新操作の結果を更新データキャッシュ１２４に一旦格納すると共に、コミット要求に応じて更新データキャッシュ１２４の内容を１個の更新内容コミットデータとし、固有のシリアル番号を付加してデータベース１１に格納する。
【００５３】
また、受信データ反映部１２３は、レプリカモード時に動作してマスター計算機側におけるデータベース１１のデータ更新内容を自計算機のデータベース１１に反映する部分である。この受信データ反映部１２３は、マスター計算機側で得られた更新内容コミットデータを、自計算機のマージデータ処理部１３を通じて取得し、各更新内容コミットデータ毎に、後述するリトリーブ状態表に基づき、自計算機のデータベース１１に反映するか否か判定して、反映すると判定した更新内容コミットデータをそのシリアル番号と共にデータベース１１に反映する。
【００５４】
マージデータ処理部１３は、更新内容コミットデータのマージおよびマージされたデータのマージ展開を行う部分であり、更新データマージ部１３１とマージデータ展開部１３２を備えている。このうち、更新データマージ部１３１は、マスターモード時に動作する部分であり、予め設定されたマージ併合条件に従って決められる１個または複数個の更新内容コミットデータをマージしてマージデータを生成する。また、マージデータ展開部１３２は、レプリカモード時に動作する部分であり、マスター計算機側で得られたマージデータを、自計算機のレプリケーション処理部１４を通じて取得し、元の１個または複数個の更新内容コミットデータに展開する。
【００５５】
レプリケーション処理部１４は、更新内容コミットデータのマージデータをレプリケーションデータとして送受信する部分であり、レプリケーション管理部１４１、レプリケーション通信部１４２、レプリケーション管理表１４３を備えている。このうち、レプリケーション管理部１４１は、マスターモード時とレプリカモード時の両方で動作する部分であり、レプリケーション管理表１４３を管理する。
【００５６】
また、レプリケーション管理表１４３には、マスターモード時には、等価対象となる各レプリカ計算機を示すレプリカ計算機情報（送信先情報）が格納され、レプリカモード時には、レプリケーションデータの送信元となるマスター計算機を示すマスター計算機情報（送信元情報）が格納される。また、レプリケーション通信部１４２は、マスターモード時とレプリカモード時の両方で動作する部分であり、マスターモード時には、レプリカ計算機情報に基づき各レプリカ計算機に対してマージデータをレプリケーションデータとして送信し、レプリカモード時には、マスター計算機情報に基づきマスター計算機にレプリケーション接続してレプリケーションデータを受信する。
【００５７】
モード処理部１５は、モード情報の送受信を含む管理と、自計算機のモード管理およびモード変更を行う部分であり、モード管理部１５１、モード送信部１５２、モード受信部１５３、モード管理表１５４を備えている。ここで、モード情報は、どの計算機が前記マスター計算機であるかを特定するマスター計算機情報と自計算機のモードを特定する自計算機モード情報を含む情報であり、モード管理表１５４に格納される。
【００５８】
モード管理部１５１は、マスターモード時とレプリカモード時の両方で動作する部分であり、モード管理表１５４を管理すると共に、モード設定アプリケーション１８からのモード変更要求に応じて、モード変更が必要な場合にはモード遷移および予め決められたモード遷移後の動作を実行する。また、モード送信部１５２とモード受信部１５３は、マスターモード時とレプリカモード時の両方で動作する部分であり、他計算機との間でモード情報の送受信を行う。
【００５９】
リトリーブ処理部１６は、リトリーブに必要なデータをリトリーブデータとして他計算機との間で送受信する部分であり、リトリーブ要求受理部１６１、リトリーブデータ送信部１６２、リトリーブ要求送信部１６３、リトリーブデータ受信部１６４、リトリーブ状態表１６５を備えている。
【００６０】
このうち、リトリーブ要求受理部１６１とリトリーブデータ送信部１６２は、マスターモード時に動作する部分であり、リトリーブ要求受理部１６１はレプリカ計算機からのリトリーブ要求を受理し、リトリーブデータ送信部１６２は要求元のレプリカ計算機にリトリーブデータを送信する。
【００６１】
また、リトリーブ要求送信部１６３とリトリーブデータ受信部１６４は、レプリカモード時に動作する部分であり、リトリーブ要求送信部１６３はマスター計算機にリトリーブ要求を送信し、リトリーブデータ受信部１６４はマスター計算機からのリトリーブデータを受信する。また、リトリーブ状態表１６５は、レプリカモード時に使用され、リトリーブデータとして送受信するデータ単位毎に、そのデータがリトリーブのどのような状態にあるかを示すリトリーブ状態情報が格納されている。このリトリーブ状態表１６５は、リトリーブ状態に応じてリトリーブ要求送信部１６３により更新される。
【００６２】
図２は、図１に示す複数の計算機を通信ネットワークで接続することによって構成される分散データ等価システムを示すブロック構成図である。複数の計算機のうち、特定の１つの計算機を、データベース１１のオリジナルなデータ更新が可能なマスターモード、その他の計算機を、オリジナルなデータ更新はできずマスター側のデータ更新内容を複製するレプリカモードで運用することにより、マスター計算機およびレプリカ計算機としてそれぞれ動作させる。
【００６３】
図３は、図２に示す複数の計算機を、マスター計算機およびレプリカ計算機として動作させた場合のシステム構成を示すブロック構成図である。この図３においては、図１に示す各構成要素のうち、マスター計算機、レプリカ計算機として動作する際に使用される構成要素のみを示しており、マスター計算機とレプリカ計算機におけるそれらの構成要素の関係を示している。
【００６４】
以下には、これらの図１〜図３に示す計算機の各構成要素１１〜１６の詳細について順次説明する。
【００６５】
［２−１．データベース］
データベース１１のデータファイル１１１には、表形式データファイルとデータ状態表という２種類のデータが格納されている。
【００６６】
表形式データファイルは、図４（ａ）に示すような、行、列からなる表形式データファイルであり、データファイル１１１内に１つまたは複数格納されている。以下の説明では、簡略化の観点から、表形式データファイルを「テーブル」と略称する。テーブルには、計算機間でデータファイル内のテーブルを一意に識別するための固有の名称が与えられており、この名称により個々のテーブルの識別を行う。この名称は、テーブルを一意に識別できるものであればよく、番号や記号からなる単なる文字列、記号列などでもよい。
【００６７】
データ状態表は、図４（ｂ）に示すように、テーブル、列、行、のいずれかの単位のデータのそれぞれに、シリアル番号値が割り当てられた表であり、図４（ｂ）においては、一例として列番号毎にシリアル番号値が割り当てられている。このシリアル番号は各単位のデータが計算機間で同一であるか否かを判断するために次のように使用される。すなわち、データファイル１１１において、あるテーブルの列番号、行番号により特定できる１つのデータ値が変更された際に、テーブル、列番号に対応するデータ状態表のシリアル番号値を加算して変更前と異なるシリアル番号値とすることで、計算機間ではシリアル番号値が一致していればテーブルの列番号により示されるデータ内容は同一であると判断し、一致していなければ同一でないと判断する。
【００６８】
なお、図４（ｂ）では、列番号毎にシリアル番号値を与えているが、テーブル毎、行番号毎またはテーブル、行番号、列番号毎にシリアル番号値を与えて管理してもよい。また、本実施形態では、一例として、データファイル１１１のデータ本体を表形式のテーブルとしているが、変形例として、データファイル１１１のデータ本体の形式は、表形式データに限らず、データ内容の追加、削除、更新、参照を行うことが可能な形式であれば、どのような形式でもよい。
【００６９】
また、データベース１１のマッピングデータ１１２は、ハードディスク上に配置されたデータファイル１１１中のテーブルおよびデータ状態表を、本システムおよび複数のデータ操作アプリケーション１７から主記憶メモリ上の仮想メモリ・ページに直接マッピングしたものである。複数のデータ操作アプリケーション１７が動作する場合には、データ操作アプリケーション１７毎にマッピングデータ１１２が作成される。
【００７０】
データベース１１へのデータ更新内容の反映処理においては、データファイル１１１へ直接反映処理を行うことなく、マッピングデータ１１２へ一旦反映することで、データファイル１１１への反映が間接的に行われ、同時に、本システムおよび複数のデータ操作アプリケーション１７の仮想メモリ・ページにマッピングされているマッピングデータ１１２への反映が行われる。なお、変形例として、マッピングデータ１１２を作成せず、データベース１１への更新、参照処理を行う毎にデータファイル１１１上のテーブル、データ状態表を構成するファイルへの書込み、読込み処理を行ってもよい。
【００７１】
［２−２．データ処理部］
更新データキャッシュ１２４は、図５に示すように、変更されたデータのテーブル名称、行番号、列番号、シリアル番号値、変更後データ値などにより管理されており、マスター計算機上で動作するデータ操作アプリケーション１７に対して個別に作成・管理される。マスター計算機において、データ操作アプリケーション１７が複数動作する場合には、各データ操作アプリケーション１７に対して更新データキャッシュ１２４がそれぞれ作成され、データ更新処理部１２２によりデータの追加、変更、消去、データ参照処理部１２１によりデータの参照が行われる。
【００７２】
データ参照処理部１２１は、データ操作アプリケーション１７からのデータ参照要求を受けた場合に、次のようなデータ参照処理を行う。すなわち、自計算機がマスター計算機として動作している場合には、対応するテーブル名称、行番号、列番号のデータが更新データキャッシュ１２４に存在するか否かを確認し、存在する場合には更新データキャッシュ１２４内のデータ値を返却する。マスター計算機として動作している場合にそのような更新データキャッシュデータが存在しない場合およびレプリカ計算機として動作している場合には、テーブルの行番号、列番号のデータ値を返却する。
【００７３】
データ更新処理部１２２は、マスター計算機として動作している自計算機上のデータ操作アプリケーション１７からのデータ変更要求を受けた場合に、データ変更処理として、更新データキャッシュ１２４へ変更内容（データ更新操作の結果）の追加を行い、データ操作アプリケーション１７からのコミット要求を受けた場合に、次のようなコミット処理を行う。
【００７４】
すなわち、コミット処理において、データ更新処理部１２２はまず、更新データキャッシュ１２４に格納された変更後データ値をテーブルへ反映すると共に、データ状態表の対応するテーブル名称、列番号のシリアル番号値に「１」加算し、加算したシリアル番号値を更新データキャッシュ１２４のシリアル番号値へ格納する。この後、更新データマージ部１３１へ更新データキャッシュ１２４の内容と共に通知を行い、更新データキャッシュ１２４の内容を空とする。
【００７５】
受信データ反映部１２３は、レプリカ計算機として動作している自計算機のマージデータ展開部１３２から、マスター計算機によるデータベースへの変更内容の通知を受けた場合に、次のようなデータ反映処理を行う。すなわち、データ反映処理において、受信データ反映部１２３は、リトリーブ状態表１６５を参照し、その変更内容が反映可能な場合にはテーブルへ反映し、データ状態表のシリアル番号値を更新する。また、変更内容が反映可能でない場合には一時保存し、反映可能となったタイミングでテーブルへ反映し、データ状態表のシリアル番号値の更新を行う。
【００７６】
［２−３．マージデータ処理部］
更新データマージ部１３１は、マスター計算機として動作している自計算機のデータ更新処理部１２２から更新データキャッシュ１２４の内容の通知を受けた場合に、今回通知された更新データキャッシュ１２４の内容と、以前に通知された一時保存中の更新データキャッシュ内容とのマージ処理を行う。ここで、以前に通知された一時保存中の更新データキャッシュ内容が存在する場合には、その更新データキャッシュ内容とのマージを行い、そのような一時保存中の更新データキャッシュ内容が存在しない場合には、今回通知された更新データキャッシュ内容を一時保存する。
【００７７】
このようなマージ処理は、予め設定されたマージ併合条件に従って行われる。すなわち、マージ併合条件を満たした場合には、一時保存中の複数の更新データキャッシュ内容をマージしてマージデータを作成し、このマージデータをそのままあるいは必要に応じて分割を行ってレプリケーションデータとし、レプリケーション通信部１４２に対してレプリケーションデータの送信依頼通知を行い、一時保存中の更新データキャッシュ内容を空にする。
【００７８】
ここで、マージ併合条件とは、次のような各種の条件項目の中から選択された単数または複数の条件項目を組み合わせたものである。各種の条件項目としては、一時保存中の更新データキャッシュ内容のデータサイズ、前回のマージ処理（レプリケーション通信部１４２への送信依頼通知を行い一時保存中の更新データキャッシュ内容を空にするまでの処理）完了後にデータ更新処理部１２２から通知を受けた回数、前回のマージ処理完了からの経過時間、などが考えられる。
【００７９】
マージデータ展開部１３２は、レプリカ計算機として動作している自計算機のレプリケーション通信部１４２から通知を受けたレプリケーションデータを、テーブルへ反映可能な更新内容コミットデータへ展開し、受信データ反映部１２３へ通知を行う。
【００８０】
［２−４．レプリケーション処理部］
レプリケーション管理表１４３には、図６に示すように、自計算機がマスター計算機として動作している場合には、データ等価対象である１または複数のレプリカ計算機の情報が格納されており、また、自計算機がレプリカ計算機として動作している場合には、マスター計算機の情報が格納されている。
【００８１】
レプリケーション管理部１４１は、モード管理部１５１からの要求を受け、レプリケーション管理表１４３の初期化や、マスター計算機情報の追加を行う。
【００８２】
レプリケーション通信部１４２は、マスター計算機として動作している場合に、レプリカ計算機からのレプリケーション接続を受けた場合には、そのレプリカ計算機を示すレプリカ計算機情報をレプリケーション管理表１４３に追加する。また、マスター計算機として動作している自計算機の更新データマージ部１３１より送信依頼通知を受けた場合には、レプリケーション管理表１４３に従い、レプリケーションデータ内容を１または複数のレプリカ計算機のレプリケーション通信部１４２へ送信する。
【００８３】
レプリケーション通信部１４２はまた、レプリカ計算機として動作している場合に、レプリケーション管理表１４３に格納されたマスター計算機情報に従い、マスター計算機へレプリケーション接続してマスター計算機からレプリケーションデータを受信し、マージデータ展開部１３２への通知を行う。
【００８４】
［２−５．モード処理部］
本実施形態において、モード管理表１５４は、図７に示すように、「自計算機モード情報」と「マスター計算機情報」から構成されている。「自計算機モード情報」には自計算機のモード情報が格納される。「マスター計算機情報」には、ネットワーク内にマスター計算機が存在する場合に、そのマスター計算機の情報が格納される。
【００８５】
なお、変形例として、自計算機モード情報のみ、あるいは、全ての計算機のモード情報を格納してもよい。また、モード情報の通信に一斉同報通信を利用して、モード変更した計算機がそのモード情報を複数の計算機に同時一斉に送信することにより、各計算機が他計算機のモード情報を自動的に取得してモード管理表１５４をリアルタイム更新することも可能である。
【００８６】
モード管理部１５１は、モード設定アプリケーション１８からのマスターモードへのモード設定変更要求を受けた場合や、モード受信部１５３を通じて他計算機からのモード情報を受信した場合に、自計算機のモード変更およびモード管理表１５４の変更、モード送信部１５２への自計算機のモード情報の送信要求、レプリケーション管理部１４１へのレプリカ計算機追加通知やマスター計算機変更通知、リトリーブ要求送信部１６３へのリトリーブ開始要求通知、等を行う。
【００８７】
モード送信部１５２は、モード管理部１５１からの送信要求に従い、ブロードキャストやマルチキャスト等の一斉同報通信を使用して、ネットワーク上の１または複数の計算機のモード受信部１５３へモード情報データの送信を行う。
【００８８】
モード受信部１５３は、他の計算機のモード送信部１５２から送信されたモード情報データを受信し、モード管理部１５１へ通知する。
【００８９】
本発明において、モード管理で扱うモード種別は、最低限「マスター」と「レプリカ」が識別できることであるが、本実施形態では、本発明におけるマスターモードとレプリカモードに加えて、これらのモードになる途中の状態についても独立したモードとして取り扱うものとする。
【００９０】
以下には、マスターモードとレプリカモードをそれぞれ「マスター運用中」、「レプリカ運用中」と呼ぶと共に、レプリカモードおよびマスターモードへの各遷移状態をそれぞれ「マスター遷移中」、「レプリカ遷移中」と呼ぶ。すなわち、本実施形態では、モード種別として、「マスター運用中」、「レプリカ運用中」、「マスター遷移中」、「レプリカ遷移中」という４つのモードを取り扱う。
【００９１】
これらのモードのうち、マスターモードである「マスター運用中」だけが、データベース１１中のデータに対して、単なる複製ではなく、オリジナルなデータ更新が可能なモードである。レプリカモードである「レプリカ運用中」は、データベース１１のオリジナルなデータ更新ができず、マスター計算機でオリジナルにデータ更新されたデータの複製とその参照のみが可能なモードである。
【００９２】
「マスター遷移中」は、「マスター運用中」に遷移する途中のモードであるため、「マスター運用中」に遷移する場合には、常に「マスター遷移中」を経た上で「マスター運用中」に遷移する。例えば、「レプリカ運用中」の計算機において、外部アプリケーションからマスター計算機として動作するようにマスター切替を設定された場合には、「マスター遷移中」に遷移して他にマスター計算機が存在するか否かを確認した後、「マスター運用中」に遷移する。同様に、「レプリカ遷移中」は、「レプリカ運用中」に遷移する途中のモードであるため、「レプリカ運用中」に遷移する場合には、常に「レプリカ遷移中」を経た上で「レプリカ運用中」に遷移する。
【００９３】
なお、計算機が「マスター遷移中」、「レプリカ遷移中」のいずれかのモードである場合、その計算機は、アプリケーションとの関係ではいずれもレプリカ計算機と同様の存在となる。
【００９４】
図８は、４種類のモードから他のモードに遷移する場合の遷移条件として、各モードにおける遷移のトリガー（きっかけ、契機となる事象）と遷移先を示す図である。矢印上に記載された内容が「トリガー」である。この図８においては、４種類のモードの他に、データベースがない状態（データベースの初期化前または停止後の状態）として「データベースなし」モードを便宜的に導入しているが、この「データベースなし」モードは、モード管理表１５１には現れないモードである。以下には、図８を参照しながら、この「データベースなし」モードを含む計５種類のモードでの遷移フローを説明する。
【００９５】
まず、５種類のモード間の遷移トリガーは、大別して、「データベース起動／停止」、「外部アプリケーションのモード設定」、「他計算機からのモード情報受信」、という３種類に分類できる。
【００９６】
第１のトリガー「データベース起動／停止」は、「データベースなし」モードを遷移先または遷移元とするトリガーである。データベースの起動時直前のモードは、「データベースなし」である。この場合に、データベース１１を起動すると、まず、「レプリカ遷移中」に遷移する。「データベースなし」モードへは、他の４つのいずれかのモードからも遷移可能であり、そのためのトリガーはデータベース１１の停止である。
【００９７】
第２のトリガー「外部アプリケーションのモード設定」は、システム外部のモード設定アプリケーション１８によってモード設定されることである。自計算機をマスター計算機に設定するというモード設定操作が行われた場合に、自計算機のモードが「レプリカ運用中」または「レプリカ遷移中」ならば、「マスター遷移中」に遷移する。
【００９８】
第３のトリガー「他計算機からのモード情報受信」は、他計算機からその計算機のモードを示すモード情報を受信することである。他計算機からモード情報を受信した場合には、自計算機のモードをそのモード情報に応じた遷移先モードに変更する。図９は、このようなモード受信時の遷移条件を示す表であり、左の欄に示す現在のモードにおいて右上欄に示すモードであることを示すモード情報を受信した場合における、自計算機の遷移先モードを、現在モードと受信モードの交差する中央の各欄にそれぞれ示したものである。
【００９９】
この図９に示すように、自計算機が「マスター運用中」モードである時に、他の計算機から「マスター遷移中」モードを受信した場合、自計算機を最終的には「レプリカ運用中」モードに変更することになるので、モード管理部１５１は、そのための前段階としてまず、自計算機を途中のモードである「レプリカ遷移中」モードに変更し、モード管理表１５４の「自計算機モード」欄を「レプリカ遷移中」に変更する。
【０１００】
また、自計算機が「レプリカ運用中」モードである時に、他の計算機から「マスター遷移中」モードを受信した場合、この場合にも最終的には「レプリカ運用中」モードになるので、モード管理部１５１は、そのための前段階として自計算機を「レプリカ遷移中」モードに変更し、モード管理表１５４の「自計算機モード」欄を「レプリカ遷移中」に変更する。
【０１０１】
なお、このように、最終的に「レプリカ運用中」モードにすべき状況で現在モードが「レプリカ運用中」モードである場合は、変形例として、「レプリカ遷移中」モードに変更せずに、そのまま「レプリカ運用中」モードを維持することも考えられるが、本実施形態では、他の計算機から「マスター遷移中」モードを受信した場合の処理を現在モードに関わらず等しくする観点から、現在モードが「レプリカ運用中」であっても、「レプリカ遷移中」に一旦変更するものとする。
【０１０２】
また、自計算機が「マスター遷移中」モードである時に、以前のマスター計算機から「レプリカ遷移中」モードを受信した場合には、以前のマスター計算機がマスター計算機でなくなったことを確認したことになるので、モード管理部１５１は、自計算機を「マスター運用中」モードに変更し、モード管理表１５４の「自計算機モード」欄を「マスター運用中」に変更する。
【０１０３】
これに対して、自計算機が「レプリカ遷移中」モードである時に、新マスター計算機から「マスター運用中」モードを受信した場合には、新たにマスター計算機が確立したことを確認したことになるので、モード管理部１５１は、自計算機を「レプリカ運用中」モードに変更し、モード管理表１５４の「自計算機モード」欄を「レプリカ運用中」に変更する。
【０１０４】
モード管理部１５１は、以上のような各モード遷移を行った後、遷移後の新モードに応じて決定される各動作を実行する。図１０は、そのようなモード遷移後に行う動作を示したものである。
【０１０５】
この図１０に示すように、「マスター運用中」にモード遷移した場合には、モード管理部１５１は、単純に、モード送信部１５２により新モード「マスター運用中」の送信のみを行う。
【０１０６】
また、「レプリカ運用中」にモード遷移した場合には、モード管理部１５１は、モード送信部１５２により新モード「レプリカ運用中」を送信すると共に、レプリケーション管理部１４１とレプリケーション通信部１４２によりマスター計算機に対してレプリケーション接続し、リトリーブ要求送信部１６３によりリトリーブ要求を送信する。
【０１０７】
また、「マスター遷移中」にモード遷移した場合には、モード管理部１５１は、モード送信部１５２により新モード「マスター遷移中」を送信すると共に、最終的に「マスター運用中」にモード遷移した際の動作の準備として、レプリケーション管理部１４１とレプリケーション通信部１４２によりレプリケーション送信を開始し、リトリーブ要求受理部１６１を起動する。ここで、レプリケーション送信の開始においては、以前のレプリケーション管理表１４３を抹消してレプリケーション接続を待つ。
【０１０８】
また、「レプリカ遷移中」にモード遷移した場合には、モード管理部１５１は、単純に、モード送信部１５２により新モード「レプリカ遷移中」の送信のみを行う。
【０１０９】
以上のように、モード処理部１５は、図８および図９に示すような予め決められた遷移条件に基づき、モード遷移を行うと共に、モード遷移後には、レプリケーション処理部１４およびリトリーブ処理部１６と連携して、図１０に示すような予め決められた内容のモード遷移後の動作を実行する。
【０１１０】
［２−６．リトリーブ処理部］
リトリーブ状態表１６５には、図１１に示すように、各テーブルのリトリーブ状態が格納されている。
【０１１１】
リトリーブ要求受理部１６１は、自計算機がマスター計算機である場合にのみ動作し、レプリカ計算機である他の計算機のリトリーブ要求送信部１６３から「データ状態表」の送信要求、または「テーブルの列に関するデータ」および「データ状態表」の送信要求を受けた場合に、リトリーブデータ送信部１６２へその送信要求を行う。
【０１１２】
リトリーブデータ送信部１６２は、自計算機がマスター計算機である場合にのみ動作し、リトリーブ要求受理部１６１で受け付けた送信要求の要求内容に応じて、自計算機のデータベース１１中のテーブルおよびデータ状態表からデータを取得し、取得したデータを「送信要求内容に応じたデータ」として、要求元レプリカ計算機のリトリーブデータ受信部１６４へ送信する。
【０１１３】
リトリーブ要求送信部１６３は、自計算機がレプリカ計算機である場合にのみ動作し、自計算機のモード管理部１５１、マージデータ展開部１３２、受信データ反映部１２３からの通知を受けた場合に、「データ状態表」の送信要求、または「テーブルの列に関するデータ」および「データ状態表」の送信要求をマスター計算機のリトリーブデータ送信部１６２に行い、リトリーブ状態表１６５の更新を行う。
【０１１４】
リトリーブ要求送信部１６３は、行った送信要求が「データ状態表の送信要求」である場合には、要求先マスター計算機から「送信要求内容に応じたデータ」として送信される「データ状態表」を、リトリーブデータ受信部１６４を通じて受信し、自計算機のデータベース１１のデータ状態表全体と比較する。このデータ状態表比較の結果として、シリアル番号値の異なる「テーブル、列」が得られた場合に、その「テーブル、列」についての「テーブルの列に関するデータ」および「データ状態表」の送信要求をマスター計算機のリトリーブデータ送信部１６２へ行い、リトリーブ状態表１６５の更新を行う。
【０１１５】
リトリーブ要求送信部１６３はまた、行った送信要求が、上記のような「テーブル、列」についての「テーブルの列に関するデータ」および「データ状態表」の送信要求である場合には、要求先マスター計算機のリトリーブデータ送信部１６２から、それらのデータを含む完了通知を、リトリーブデータ受信部１６４を通じて受信し、リトリーブ状態表１６５の更新を行う。
【０１１６】
リトリーブデータ受信部１６４は、要求先マスター計算機のリトリーブデータ送信部１６２から受信した内容が、「データ状態表」である場合には、リトリーブ要求送信部１６３へその内容を通知する。これに対して、受信した内容が「テーブル、列」についての「テーブルの列に関するデータ」および「データ状態表」である場合には、自計算機のデータベース１１中のテーブルおよびデータ状態表へ反映し、完了結果をリトリーブ要求送信部１６３へ通知する。
【０１１７】
［３．初期起動・モード変更処理］
図１２は、図１〜図３に示す分散データ等価システムの各計算機による初期起動からシステム停止に至るまでの動作概要を示すフローチャートである。
【０１１８】
この図１２に示すように、各計算機は、モード処理部１５とレプリケーション処理部１４およびリトリーブ処理部１６の連携により、「初期起動処理」を行う（Ｓ１２０１）ことで、「レプリカ遷移中」モードまたは「レプリカ運用中」モードとなり、レプリカ計算機として動作する（Ｓ１２０２）。その後、モード設定アプリケーション１８で自計算機のマスター設定が行われた場合（Ｓ１２０３のＹＥＳ）には、モード処理部１５とレプリケーション処理部１４およびリトリーブ処理部１６の連携により、「自計算機マスター設定時のモード変更処理」を行う（Ｓ１２０４）ことで、マスター運用中モードとなり、マスター計算機として動作する（Ｓ１２０５）。
【０１１９】
また、他の計算機のマスター設定が行われた場合（Ｓ１２０６のＹＥＳ）には、モード処理部１５とレプリケーション処理部１４およびリトリーブ処理部１６の連携により、「他計算機マスター設定時のモード変更処理」を行う（Ｓ１２０７）ことで、レプリカ運用中モードとなり、レプリカ計算機として動作する（Ｓ１２０８）。各計算機は、自計算機のデータベース１１が停止するまで（Ｓ１２０９のＮＯ）、自計算機または他計算機のマスター設定に応じたモード変更処理（Ｓ１２０３〜Ｓ１２０８）を繰り返し、自計算機のデータベース１１が停止した時点（Ｓ１２０９のＹＥＳ）で動作を終了する。
【０１２０】
以下には、図１２に示す動作のうち、初期起動処理（Ｓ１２０１）、自計算機マスター設定時のモード変更処理（Ｓ１２０４）、他計算機マスター設定時のモード変更処理（Ｓ１２０７）の詳細について順次説明する。
【０１２１】
［３−１．初期起動処理］
図１３は、図１２に示す初期起動処理（Ｓ１２０１）の処理手順の概要を示すフローチャートである。この処理は、モード管理部１５１を処理主体とし、レプリケーション管理部１４１およびリトリーブ要求送信部１６３と連携して行われる。
【０１２２】
なお、初期起動時には、計算機はレプリカ計算機として起動させるため、モード管理表１５４の最初の自計算機モードをレプリカ遷移中と設定する。なお、初期起動時の最初のモードは４つのモードのどれでもよいが、処理フローを簡略化する観点から、本実施形態においては最初のモードを「レプリカ遷移中」とした場合について説明する。
【０１２３】
まず、モード管理部１５１により、通信ネットワーク内にマスター計算機が存在するか否かの確認を行う（Ｓ１３０１）。モード管理部１５１は、この確認を行うための処理として、具体的には、モード送信部１５２を通じて、マスター計算機が存在するかの「問い合わせ」をマルチキャストまたはブロードキャストにてネットワーク上へ送信し、一定時間応答を待つ。
【０１２４】
この「問い合わせ」に対して、通信ネットワーク内にマスター計算機として動作している計算機が存在する場合には、そのマスター計算機上のモード受信部１５３により「問い合わせ」が受信され、マスター計算機上のモード管理部１５１へ通知が行われる。この場合に、そのマスター計算機上のモード管理部１５１は、モード送信部１５２を通じて自計算機がマスター計算機であることを示す情報を送信する。そして、問い合わせ元の計算機において、モード受信部１５３によりマスター計算機の情報を受信し、その通知をモード管理部１５１により受けた場合には、マスター計算機の存在を確認したことになる。
【０１２５】
このようなマスター計算機の確認処理（Ｓ１３０１）の結果、マスター計算機が存在しない場合（Ｓ１３０２のＮＯ）には、自計算機または通信ネットワーク上の他計算機がマスター計算機となるまで、モード管理部１５１により自計算機モードおよびモード管理表１５４の自計算機モード情報を「レプリカ遷移中」に維持し、レプリカ計算機として動作する（Ｓ１３０３）。
【０１２６】
これに対して、マスター計算機が存在する場合（Ｓ１３０２のＹＥＳ）には、モード管理部１５１によりモード管理表１５４のマスター計算機情報の設定を行い（Ｓ１３０４）、モード管理部１５１からリトリーブ要求送信部１６３に通知を行うことで、リトリーブ要求送信部１６３により、リトリーブ状態表１６５の初期化を行う（Ｓ１３０５）。このリトリーブ状態表１６５の初期化において、リトリーブ要求送信部１６３は、データファイル１１１内の全てのテーブルについて、リトリーブ状態表１６５の状態を「リトリーブ未」に設定する。
【０１２７】
リトリーブ状態表１６５の初期化（Ｓ１３０５）を完了した後、モード管理部１５１からレプリケーション管理部１４１にマスター計算機情報の通知を行うことで、レプリケーション管理部１４１により、レプリケーション受信開始のための処理を行う（Ｓ１３０６）。
【０１２８】
この場合、レプリケーション管理部１４１は、レプリケーション受信するための処理として、具体的には、モード管理部１５１から通知されたマスター計算機情報をレプリケーション管理表１４３へ格納し、レプリケーション通信部１４２によりマスター計算機へのレプリケーション接続処理を行う。レプリケーション接続処理とは、自計算機がレプリケーション受信する対象であることをマスター計算機に通知することである。これにより、レプリケーション通信部１４２は、マスター計算機からのレプリケーション受信が可能となる。
【０１２９】
このようなレプリケーション受信開始処理（Ｓ１３０６）の結果、レプリケーション受信可能となった後、モード管理部１５１からリトリーブ要求送信部１６３に通知を行うことで、リトリーブ要求送信部１６３により、データベース全体のリトリーブ処理を行う（Ｓ１３０７）。
【０１３０】
図１４（ａ）は、このデータベース全体のリトリーブ処理（Ｓ１３０７）の処理手順を示すフローチャートである。この処理は、リトリーブ要求送信部１６３を処理主体として行われる。
【０１３１】
まず、マスター計算機からデータ状態表の取得を行い（Ｓ１４０１）、各テーブルについて（Ｓ１４０２）、自計算機のデータ状態表との比較を行い（Ｓ１４０３）、テーブルの列全てのバージョン番号値が等しいテーブルについて（Ｓ１４０４のＹＥＳ）は、リトリーブ状態表１６５の該当テーブルの状態を「リトリーブ済」とし（Ｓ１４０５）、その他の、バージョン番号値の異なる列を持つテーブルについて（Ｓ１４０４のＮＯ）は、「テーブル、列のリトリーブ要求処理」を行う（Ｓ１４０６）。
【０１３２】
図１４（ｂ）は、この「テーブル、列のリトリーブ要求処理」（Ｓ１４０６）の処理手順を示すフローチャートである。初めに、要求を受けたテーブルについて「リトリーブ中」とし（Ｓ１４０６１）、テーブル毎にバージョン番号の異なるカラムについての情報とともにマスター計算機へ送信要求を行う（Ｓ１４０６２）。
【０１３３】
この送信要求を受けたマスター計算機のリトリーブ要求受理部１６１からリトリーブデータ送信部１６２へ通知を行い、送信要求内容に応じたデータがリトリーブデータとして送信されることにより、このリトリーブデータは、「送信要求内容に応じたリトリーブデータ」として、リトリーブ要求元の計算機のリトリーブデータ受信部１６４により受信される（Ｓ１４０６３）。その結果、「リトリーブ実行処理」として、リトリーブデータ受信部１６４によりテーブルおよびデータ状態表へリトリーブデータが一括的に反映されると共に、リトリーブ要求送信部１６３へのリトリーブ完了通知が行われる（Ｓ１４０６４）。
【０１３４】
図１４（ａ）に示すデータベース全体のリトリーブ処理においては、全てのテーブルについて一連の処理手順（Ｓ１４０２〜Ｓ１４０７）が完了した後、リトリーブ要求送信部１６３によってリトリーブデータ受信部１６４からのリトリーブ完了通知を受ける（Ｓ１４１０）。その結果、リトリーブ要求送信部１６３は、リトリーブ状態表１６５の該当するテーブルの状態を「リトリーブ済」とし（Ｓ１４１１）、全てのテーブルについて「リトリーブ済」となった時点（Ｓ１４０８の”ＹＥＳ”）で、データベース全体のリトリーブ処理は完了となる（Ｓ１４０９）。
【０１３５】
図１３に示す「初期起動処理」においては、図１４（ａ）に示す「データベース全体のリトリーブ処理」（Ｓ１３０７）が完了した後、モード管理部１５１により、自計算機モードおよびモード管理表１５４の自計算機モード情報を「レプリカ運用中」へ変更し（Ｓ１３０８）、これ以降、自計算機は、マスター変更が発生するまで「レプリカ運用中」モードを維持し、レプリカ計算機として動作する（Ｓ１３０９）。
【０１３６】
なお、図１３中の「レプリケーション受信開始処理」（Ｓ１３０６）における「レプリケーション接続」とは、通信層（ＩＰ層）での接続ではなく、本システムでのレプリケーションの管理層（レプリケーション処理部１４）での接続である。また、レプリケーション通信には、ＩＰ層のＴＣＰやＵＤＰ（マルチキャスト、ブロードキャスト）が用いられる。接続型ＩＰ通信であるＴＣＰを用いる時は、レプリケーション接続処理と同期してＴＣＰレベルでの接続処理を行う。
【０１３７】
［３−２．自計算機マスター設定時のモード変更処理］
図１５は、図１２に示す自計算機マスター設定時のモード変更処理（Ｓ１２０４）の処理手順の概要を示すフローチャートである。この処理は、モード管理部１５１を処理主体とし、レプリケーション管理部１４１およびリトリーブ要求受理部１６１と連携して行われる。
【０１３８】
なお、この「自計算機マスター設定時のモード変更処理」の具体的な処理手順は、自計算機がマスター計算機とレプリカ計算機のいずれであるかにより異なり、レプリカ計算機である場合には、現在のモードがレプリカ運用中とレプリカ遷移中のいずれであるかにより異なる。以下では、これらの状況別における処理手順について説明する。
【０１３９】
前述した初期起動時に通信ネットワーク内にマスター計算機が存在しない場合には、各計算機において、モード管理表１５４の自計算機モード情報は「レプリカ遷移中」に設定され、マスター計算機情報は空となっている。一方、初期起動時にスター計算機が存在する場合には、それ以外の計算機において、モード管理表１５４の自計算機モード情報は「レプリカ運用中」に設定され、マスター計算機情報には、マスター計算機として現在動作している計算機の情報が格納されている。
【０１４０】
さらに、初期起動後に１回またはそれ以上のマスター設定によるモード変更処理が行われた後には、各計算機において、モード管理表１５４の自計算機モード情報は「マスター運用中」、「レプリカ運用中」、「マスター遷移中」、「レプリカ遷移中」、のいずれかに設定され、マスター計算機情報には、マスター計算機として現在動作している計算機の情報が格納されている。ここで、自計算機がマスター計算機として動作している場合には、モード管理表１５４の自計算機モード情報は「マスター運用中」に設定され、マスター計算機情報には自計算機の情報が格納されている。
【０１４１】
このような各種の状況において、モード設定アプリケーション１８により自計算機のマスター設定が行われると（Ｓ１５０１）、モード管理部１５１により処理が行われる。モード管理部１５１は、モード管理表１５４の自計算機モード情報を参照し、マスター計算機であるか否かの確認を行う（Ｓ１５０２）。自計算機がマスター計算機である場合には（Ｓ１５０２のＹＥＳ）、そのままマスター設定処理を完了する。
【０１４２】
また、自計算機がマスター計算機でない場合には（Ｓ１５０２のＮＯ）、モード管理表１５４の自計算機モード情報を「マスター遷移中」へ変更する（Ｓ１５０３）。
【０１４３】
自計算機モード情報を「マスター遷移中」へ変更後、モード管理部１５１は、モード送信部１５２によりマスター遷移中情報の送信を行う（Ｓ１５０４）。マスター遷移中情報の送信では、自計算機モード情報としてマスター遷移中情報をマルチキャストまたはブロードキャストにてネットワーク上へ送信する。
【０１４４】
次に、モード管理部１５１は、自計算機のモード管理表１５４にて「マスター運用中」モードで現在動作中のマスター計算機（現マスター計算機）が存在するか否かを確認し（Ｓ１５０５）、現マスター計算機が存在する場合には（Ｓ１５０５のＹＥＳ）、現マスター計算機からレプリカ遷移中情報が送信されてくるまで一定時間受信待ちを行い、モード受信部１５３により現マスター計算機からのレプリカ遷移中情報を受信する（Ｓ１５０６）。モード管理部１５１は、現マスター計算機からのレプリカ遷移中情報を受信した場合、または、現マスター計算機が存在しない場合には（Ｓ１５０５のＮＯ）、モード管理表１５４のマスター計算機情報へ自計算機の情報を格納する（Ｓ１５０７）。
【０１４５】
その後、モード管理部１５１からレプリケーション管理部１４１に自計算機マスター情報の通知を行い、レプリケーション管理部１４１により、レプリケーション送信開始処理を行う（Ｓ１５０８）。レプリケーション管理部１４１は、このレプリケーション送信開始処理として、具体的には、レプリケーション管理表１４３の初期化を行い、レプリケーション通信部１４２がマスター計算機とレプリケーション接続している場合には切断処理を行い、レプリカ計算機からのレプリケーション接続要求の受付を可能とする。このようなレプリケーション送信開始処理を行うことにより、マスター計算機では、レプリカ計算機からのレプリケーション接続要求を受け、接続を行い、以降に発生するレプリケーションデータの送信が可能となる。
【０１４６】
次に、モード管理部１５１からの通知により、リトリーブ要求送信部１６３の停止（Ｓ１５０９）を行う。リトリーブ要求送信部１６３は、現在要求中の処理がある場合には、その処理を停止する。
【０１４７】
続いて、モード管理部１５１からの通知により、リトリーブ要求受理部１６１の開始（Ｓ１５１０）を行う。リトリーブ要求受理部１６１は、開始処理を行うことでレプリカ計算機からのリトリーブ要求に応答可能となる。
【０１４８】
この後、モード管理部１５１は、モード管理表１５４の自計算機モード情報を「マスター運用中」へ変更し（Ｓ１５１１）、モード送信部１５２にてマスター運用中情報の送信を行い（Ｓ１５１２）、マスター計算機としての動作を開始する。
【０１４９】
［３−３．他計算機マスター設定時のモード変更処理］
図１６、図１７は、図１２に示す他計算機マスター設定時のモード変更処理（Ｓ１２０７）の処理手順の概要を示すフローチャートであり、図１６は、「レプリカ遷移中」モードに遷移するまでの前半部分、図１７は、その後「レプリカ運用中」モードに遷移するまでの後半部分を示している。この処理は、モード管理部１５１を処理主体とし、レプリケーション管理部１４１およびリトリーブ要求送信部１６３と連携して行われる。
【０１５０】
なお、この「自計算機マスター設定時のモード変更処理」の具体的な処理手順は、自計算機がマスター計算機とレプリカ計算機のいずれであるかにより異なり、レプリカ計算機である場合には、現在のモードがレプリカ運用中とレプリカ遷移中のいずれであるかにより異なる。以下では、これらの状況別における処理手順について説明する。
【０１５１】
前述した初期起動時に通信ネットワーク内にマスター計算機が存在しない場合には、各計算機において、モード管理表１５４の自計算機モード情報は「レプリカ遷移中」に設定され、マスター計算機情報は空となっている。一方、初期起動時にスター計算機が存在する場合には、それ以外の計算機において、モード管理表１５４の自計算機モード情報は「レプリカ運用中」に設定され、マスター計算機情報には、マスター計算機として現在動作している計算機の情報が格納されている。
【０１５２】
さらに、初期起動後に１回またはそれ以上のマスター設定によるモード変更処理が行われた後には、各計算機において、モード管理表１５４の自計算機モード情報は「マスター運用中」、「レプリカ運用中」、「マスター遷移中」、「レプリカ遷移中」、のいずれかに設定され、マスター計算機情報には、マスター計算機として現在動作している計算機の情報が格納されている。ここで、自計算機がマスター計算機として動作している場合には、モード管理表１５４の自計算機モード情報は「マスター運用中」に設定され、マスター計算機情報には自計算機の情報が格納されている。
【０１５３】
他計算機の１つでマスター設定が行われると、その計算機において前述した「自計算機マスター設定時のモード変更処理」が行われ、マスター遷移中情報が送信される（Ｓ１５０４）。
【０１５４】
自計算機において、そのような他計算機からのマスター遷移中情報をモード受信部１５３により受信すると（Ｓ１６０１）、モード管理部１５１は、モード管理表１５４の自計算機モード情報を参照して、自計算機のモードが「マスター運用中」または「レプリカ運用中」であるか否かの確認を行う（Ｓ１６０２）。
【０１５５】
確認の結果、自計算機のモードが「マスター運用中」と「レプリカ運用中」のいずれでもない場合、すなわち、「マスター遷移中」または「レプリカ遷移中」である場合には（Ｓ１６０２のＮＯ）、そのまま処理を完了する。例えば、初期起動時にマスター計算機が存在しなかった場合の処理では、自計算機は「レプリカ遷移中」であるが、この際に、他計算機からのマスター遷移中情報を受信してもモード変更処理を行うことはない。
【０１５６】
また、確認の結果、自計算機のモードが「マスター運用中」または「レプリカ運用中」である（Ｓ１６０２のＹＥＳ）場合には、モード管理部１５１からレプリケーション管理部１４１に通知を行い、レプリケーション管理部１４１によりレプリケーション停止処理を行う（Ｓ１６０３）。レプリケーション管理部１４１は、このレプリケーション停止処理として、具体的には、レプリケーション管理表１４３の初期化を行い、レプリケーション通信部１４２がマスター計算機とレプリケーション接続している場合には切断処理を行い、レプリカ計算機からのレプリケーション接続を受けている場合には切断処理を行う。このようなレプリケーション停止処理処理を行うことにより、以降、レプリケーション処理の開始を行うまでは、レプリケーションの送信・受信処理は発生しなくなる。
【０１５７】
次に、モード管理部１５１は、自計算機のモードが「マスター運用中」であるか否かを判定する（Ｓ１６０４）。自計算機のモードが「マスター運用中」である（Ｓ１６０４のＹＥＳ）場合には、モード管理部１５１からの通知により、リトリーブ要求受理部１６１の停止（Ｓ１６０５）を行う。リトリーブ要求受理部１６１は、この時点で、現在受付済みの要求処理がリトリーブデータ送信部１６２において実行されている場合にその処理を停止する。
【０１５８】
また、自計算機のモードが「マスター運用中」でない（Ｓ１６０４のＮＯ）場合には、モード管理部１５１からの通知により、リトリーブ要求送信部１６３の停止（Ｓ１６０６）を行う。リトリーブ要求送信部１６３は、現在要求中の処理がある場合には、その処理を停止する。
【０１５９】
次に、モード管理部１５１は、モード管理表１５４の自計算機モード情報を「レプリカ遷移中」へ変更する（Ｓ１６０７）。変更前のモード情報もまた、以降の処理で必要なため、変更前の時点で記憶しておく。
【０１６０】
モード管理部１５１は、自計算機のモードを「レプリカ遷移中」へ変更した後、モード送信部１５２によりレプリカ遷移中情報の送信を行う（Ｓ１６０８）。このレプリカ遷移中情報の送信処理においては、レプリカ遷移中情報をマルチキャストまたはブロードキャストにてネットワーク上へ送信する。ここで、自計算機の変更前のモードが「マスター運用中」であった場合には、このレプリカ遷移中情報に対して、新規マスター計算機による受信待ちが行われている。
【０１６１】
レプリカ遷移中情報の送信処理（Ｓ１６０８）を行った後は、モード管理部１５１は、新規マスター計算機からのマスター運用中情報の受信待ちを行う。
【０１６２】
その後、前記マスター遷移中情報の送信元である新規マスター計算機から、その計算機の前記「自計算機マスター設定時のモード変更処理」によりマスター運用中情報が送信されると（Ｓ１５１２）、図１７に示すように、自計算機においては、その新規マスター計算機からのマスター運用中情報をモード受信部１５３により受信する（Ｓ１７０１）。この場合に、モード管理部１５１は、自計算機のモード管理表１５４のマスター計算機情報を、その新規マスター計算機の情報に変更し（Ｓ１７０２）、リトリーブ状態表１６５の初期化を行い（Ｓ１７０３）、レプリケーション受信開始処理（Ｓ１７０４）、データベース全体のリトリーブ処理（Ｓ１７０５）を行い、データベース全体のリトリーブ処理が完了した後、自計算機モード情報を「レプリカ運用中」へ変更し（Ｓ１７０６）、レプリカ計算機として動作する（Ｓ１７０７）。
【０１６３】
ここで、マスター計算機情報の設定からレプリカ計算機として動作するまでの一連の処理（Ｓ１７０２〜Ｓ１７０７）は、図１３の初期起動処理における一連の処理（Ｓ１３０４〜Ｓ１３０９）と同様である。
【０１６４】
［４．データ変更・反映処理］
図１８は、図１〜図３に示す分散データ等価システムにおいて、マスター計算機のデータ変更処理からレプリカ計算機のデータ反映処理に至るまでの分散データ等価処理手順の概要を示すフローチャートである。
【０１６５】
この図１８に示すように、「マスター運用中」モード（Ｓ１２０５）で動作しているマスター計算機において、データ処理部１２により、データベース１１中のデータの変更内容を更新データキャッシュ１２４に格納するデータ変更処理（Ｓ１８０１）を行い、その変更内容を更新内容コミットデータとしてデータベース１１に反映するコミット処理（Ｓ１８０２）を行う。次に、更新データマージ部１３１により、マージ併合条件に従って、更新内容コミットデータである更新データキャッシュ内容をマージするマージ処理（Ｓ１８０３）を行い、続いて、レプリケーション処理部１４により、マージされたデータをレプリケーションデータとしてレプリカ計算機に送信するレプリケーション送信処理（Ｓ１８０４）を行う。
【０１６６】
この後、「レプリカ運用中」モード（Ｓ１２０８）で動作しているレプリカ計算機において、レプリケーション処理部１４により、マスター側から送信されたレプリケーションデータを受信するレプリケーション受信処理（Ｓ１８１１）を行う。次に、マージデータ処理部１３により、レプリケーションデータをデータベース１１に反映可能な更新内容コミットデータへ展開するマージデータ展開処理（Ｓ１８１２）を行い、続いて、データ処理部１２により、展開された更新内容コミットデータを、自計算機のデータベース１１に反映するデータ反映処理（Ｓ１８１３）を行うことで、マスター計算機のデータベース１１と同一内容に等価する。
【０１６７】
以下には、図１８に示す各処理の詳細について順次説明する。
【０１６８】
［４−１．データ変更処理］
図１９は、図３に示すマスター計算機のデータ処理部１２によるデータ変更処理手順の概要を示すフローチャートである。
【０１６９】
この図１９に示すように、データ操作アプリケーション１７によりデータ変更要求が行われた場合（Ｓ１９０１）には、データ更新処理部１２２により、そのデータ変更要求に応じた変更内容を更新データキャッシュ１２３に格納するデータ変更処理が行われる。ここでは、一例として、データ変更要求は、変更するテーブルの「テーブルのテーブル名称」、変更するデータの「テーブル内での行番号」、「テーブル内での列番号」、「変更後データ値」により与えられるものとする。
【０１７０】
データ更新処理部１２２は、まず、モード管理表１５４の自計算機モード情報を参照し、自計算機が「マスター運用中」モードで動作しているマスター計算機であるか否かの確認を行う（Ｓ１９０２）。自計算機がマスター計算機でない場合（Ｓ１９０２のＮＯ）には、そのままデータ変更処理を終了する。
【０１７１】
また、自計算機がマスター計算機である場合（Ｓ１９０２のＹＥＳ）には、データ更新処理部１２２は、「テーブルのテーブル名称」、「テーブル内での行番号」、「テーブル内での列番号」により、更新データキャッシュ１２３内にそのデータ変更要求に該当するキャッシュデータが既に存在するか否かを確認する（Ｓ１９０３）。該当するキャッシュデータが存在する場合（Ｓ１９０３のＹＥＳ）には、該当するキャッシュデータの「変更後データ値」の更新を行う（Ｓ１９０５）。
【０１７２】
また、更新データキャッシュ１２３内にデータ変更要求に該当するキャッシュデータが存在しない場合（Ｓ１９０３のＮＯ）には、更新データキャッシュ１２３内に、新たにキャッシュデータを追加し、追加したキャッシュデータの情報として、「テーブルのテーブル名称」、「テーブル内での行番号」、「テーブル内での列番号」、「変更後データ値」を格納する（Ｓ１９０４）。
【０１７３】
［４−２．変更内容のコミット処理］
図２０は、図３に示すマスター計算機のデータ処理部１２による変更内容のコミット処理手順の概要を示すフローチャートである。
【０１７４】
この図２０に示すように、データ操作アプリケーション１７により変更内容のコミット要求が行われた場合（Ｓ２００１）には、データ更新処理部１２２により、更新データキャッシュ１２３内にキャッシュデータが格納されているか否かを確認する（Ｓ２００２）。更新データキャッシュ１２３内にキャッシュデータが格納されている場合（Ｓ２００２のＹＥＳ）には、個々のキャッシュデータについて（Ｓ２００３）、次のような一連の処理（Ｓ２００４〜Ｓ２００６）を行う。
【０１７５】
すなわち、個々のキャッシュデータについて（Ｓ２００３）、「変更後データ値」をデータファイル１１１の該当するテーブル名称のテーブルの行番号、列番号のデータ値へ反映し（Ｓ２００４）、データ状態表１１２の該当するテーブル名称、列番号のシリアル番号値を加算し（Ｓ２００５）、加算後のシリアル番号値をキャッシュデータの「シリアル番号値」へ格納する（Ｓ２００６）。
【０１７６】
全てのキャッシュデータについて一連の処理（Ｓ２００４〜Ｓ２００６）が完了（Ｓ２００７）した後、その時点での更新データキャッシュ１２３の内容を更新データマージ部１３１に通知してマージ要求する「更新データキャッシュのマージ要求処理」（Ｓ２００８）を行い、続いて、更新データキャッシュ１２３内のキャッシュデータを空の状態にする（Ｓ２００９）。
【０１７７】
［４−３．コミットデータのマージ処理］
図２１は、図３に示すマスター計算機のマージデータ処理部１３によるコミットデータのマージ処理手順の概要を示すフローチャートである。
【０１７８】
ここでは、マージ要求を受けた複数のキャッシュデータの内容を、どのタイミングでマージしてレプリケーション通信部１４２へ送信要求を行うかについてのマージ併合条件が、次のような複数の条件項目の組み合わせであるものとする。すなわち、マージ併合条件は、「『現在マージされている複数のキャッシュデータの総データサイズ』、『前回レプリケーション通信部１４２へ送信要求を行ってからの時間』、『前回レプリケーション通信部１４２へ送信要求を行ってからマージ要求を受付けた回数』、という複数の項目のいずれかが設定済みの閾値を超えること」、として設定されているものとする。
【０１７９】
図２１に示すように、マージ処理において、更新データマージ部１３１は、データ更新処理部１２２からの更新データキャッシュ内容のマージ要求をタイムアウト付きで「受付待ち」しており（Ｓ２１０１）、いずれかの事象の発生により「受付待ち」が解除された場合（Ｓ２１０２）には、その発生した事象がタイムアウトとマージ要求の受付のいずれであるかの判定（Ｓ２１０３）を行う。
【０１８０】
タイムアウトが発生した場合には（Ｓ２１０３のＮＯ）、一時保存領域に現在保存中のマージ中データがあるか否かの判定を行う（Ｓ２１０４）。なお、「マージ中データ」とは、更新データキャッシュ内容をマージして得られたマージデータのうち、特に、レプリケーション送信要求用のデータとして確定する前の処理途中のデータを示しており、マージ併合条件に基づいてさらに別の更新データキャッシュ内容とマージされる可能性のあるデータを意味している。
【０１８１】
一時保存領域に現在保存中のマージ中データが存在しない場合（Ｓ２１０４のＮＯ）には、要求受付回数、タイムアウト時間のリセットを行い（Ｓ２１０６）、再び、マージ要求受付待ち（Ｓ２１０２）を行う。また、一時保存領域に現在保存中のマージデータが存在する場合（Ｓ２１０４のＹＥＳ）には、一時保存中のマージ中データをレプリケーション送信要求用のデータとして確定してレプリケーション通信部１４２に対してレプリケーション送信要求を行う（Ｓ２１０５）。続いて、送信要求済のマージデータ、要求受付回数、タイムアウト時間のリセットを行い（Ｓ２１０６）、再び、マージ要求受付待ち（Ｓ２１０１）を行う。
【０１８２】
一方、マージ要求を受け付けた場合（Ｓ２１０３のＹＥＳ）には、一時保存領域に現在保存中のマージ中データがあるか否かの判定を行う（Ｓ２１０７）。一時保存領域に現在保存中のマージ中データが存在する場合（Ｓ２１０７のＹＥＳ）には、その現在保存中のマージ中データと、今回要求を受け付けた更新データキャッシュ内容とのマージを行う（Ｓ２１０８）。また、現在保存中のマージ中データが存在しない場合（Ｓ２１０７のＮＯ）には、要求を受けた更新データキャッシュ内容をマージ中データとして一時保存領域に保存する（Ｓ２１０９）。
【０１８３】
その後、マージ併合条件に基づいて、「現在保存中のマージ中データのサイズが閾値を超えているか」（Ｓ２１１０）、「現在保存中のマージ中データを構成するために受け付けた要求受付回数が閾値を超えているか」（Ｓ２１１１）の判定を行い、いずれかの閾値を超えている場合（Ｓ２１１０のＹＥＳまたはＳ２１１１のＹＥＳ）には、レプリケーション通信部１４２へレプリケーション送信要求（Ｓ２１０５）を行い、その要求に使用された現在保存中のマージ中データ、要求受付回数、タイムアウト時間のリセットを行い（Ｓ２１０６）、再びマージ要求受付待ち（Ｓ２１０１）を行う。
【０１８４】
マージ併合条件に基づく上記の判定において、いずれの閾値も超えていない場合（Ｓ２１１０のＮＯおよびＳ２１１１のＮＯ）には、タイムアウト時間の設定を行い（Ｓ２１１２）、再びマージ要求受付待ち（Ｓ２１０２）を行う。
【０１８５】
なお、以上のようなマージ処理において、レプリケーション送信要求（Ｓ２１０５）を行う際には、確定された元のマージデータをそのまま使用してもよいが、別の手法として、元のマージデータを分割または圧縮して得られたデータを使用してもよい。すなわち、元のマージデータの内容を複数に分割して得られたデータ、あるいは、元のマージデータをハフマン符号化等のデータ圧縮手段を用いて圧縮して得られたデータ、またはそれらの分割、圧縮の両方を共に実行して得られたデータ、のいずれかのデータを用いてレプリケーション送信要求を行ってもよい。
【０１８６】
［４−４．レプリケーション送受信処理］
図２２は、図３に示すマスター計算機とレプリカ計算機のレプリケーション処理部１４によるレプリケーション送信処理手順とレプリケーション受信処理手順の概要を示すフローチャートである。
【０１８７】
この図２２に示すように、マスター計算機のレプリーション管理部１４１は、レプリケーション送信要求待ちを行っており（Ｓ２２０１）、自計算機の更新データマージ部１３１からレプリケーション送信要求を受けると、レプリケーション管理表１４３を参照して、レプリケーションデータの送信先となるレプリカ計算機が存在するか否かを判定する（Ｓ２２０２）。
【０１８８】
送信先レプリカ計算機が存在しない場合（Ｓ２２０２のＮＯ）には、要求を受けたデータ内容を破棄して、再び送信要求待ち（Ｓ２２０１）を行う。また、送信先レプリカ計算機が存在する場合（Ｓ２２０２の”ＹＥＳ”）には、レプリケーション管理表１４３中のその送信先レプリカ計算機の情報を参照して、レプリケーション通信部１４２により送信先レプリカ計算機のレプリケーション通信部１４２へデータ送信を行う（Ｓ２２０３）。
【０１８９】
一方、レプリカ計算機のレプリケーション管理部１４１は、マスター計算機からのレプリケーションデータの受信待ちを行っており（Ｓ２２１１）、マスター計算機からのレプリケーションデータを受信すると（Ｓ２２１２）、その受信したデータ内容について、自計算機のマージデータ展開部１３２にマージデータ展開要求を行う（Ｓ２２１３）。
【０１９０】
［４−５．マージデータ展開・データ反映処理］
図２３、図２４は、図３に示すレプリカ計算機のマージデータ処理部１３とデータ処理部１２によるマージデータ展開処理手順とデータ反映処理手順の概要をそれぞれ示すフローチャートである。
【０１９１】
図２３に示すように、マージデータ展開部１３２は、レプリケーション通信部１４２からマージ展開要求を受けると（Ｓ２３０１）、レプリケーション通信部１４２の受信したレプリケーションデータであるマージデータ内容を、個々の更新内容を表す更新内容コミットデータへと展開する（Ｓ２３０２）。次に、その展開した更新内容コミットデータについて、受信データ反映部１２３にデータ反映要求を行う（Ｓ２３０３）。
【０１９２】
図２４に示すように、受信データ反映部１２３は、マージデータ展開部１３２からのデータ反映要求を受けると、個々の更新内容コミットデータについて（Ｓ２４０１）処理を行い、その処理中更新内容コミットデータに該当するテーブルのリトリーブ状態をリトリーブ状態表１６５で確認し（Ｓ２４０２）、「リトリーブ済」であるか否かを判定する（Ｓ２４０３）。
【０１９３】
処理中更新内容コミットデータに該当するテーブルのリトリーブ状態が「リトリーブ済」でない場合（Ｓ２４０３のＮＯ）には、その更新内容コミットデータを一時保存領域へ保存した（Ｓ２４０４）後、次の更新内容コミットデータの処理を行う。
【０１９４】
また、受信データ反映部１２３は、該当するテーブルのリトリーブ状態が「リトリーブ済」である場合（Ｓ２４０３のＹＥＳ）には、一時保存領域において「該当するテーブルについての更新内容コミットデータ」の確認を行い（Ｓ２４０６）、該当するテーブルについての保存中更新内容コミットデータの存在の有無を判定する（Ｓ２４０７）。
【０１９５】
該当するテーブルについて保存中更新内容コミットデータが存在する場合（Ｓ２４０７のＹＥＳ）には、その保存中更新内容コミットデータについて、マッピングデータ１１２内のデータ状態表を参照して、データ状態表中の該当するテーブル、列のシリアル番号値と、保存中更新内容データのシリアル番号値との比較を行い（Ｓ２４１１）、その保存中更新内容コミットデータをマッピングデータ１１２に反映可能であるか否かの判定を行う（Ｓ２４１２）。
【０１９６】
保存中更新内容コミットデータをマッピングデータ１１２に反映可能である場合（Ｓ２４１２のＹＥＳ）には、その保存中更新内容コミットデータのデータ値をマッピングデータ１１２内の該当テーブルへ反映し（Ｓ２４１３）、データ状態表のシリアル番号値の加算を行う（Ｓ２４１４）。
【０１９７】
また、保存中更新内容コミットデータをマッピングデータ１１２に反映できない場合（Ｓ２４１２のＮＯ）には、その「保存中更新内容コミットデータ」、および、個別の処理対象である「処理中更新内容コミットデータ」の破棄を行い（Ｓ２４１５）、該当するテーブル、列について、「テーブル、列のリトリーブ要求処理」を行い（Ｓ２４１６）、次の更新内容コミットデータの処理を行う。
【０１９８】
一方、保存中更新内容コミットデータの反映（Ｓ２４１３）とそれに続くシリアル番号値加算が完了した場合（Ｓ２４１４）、または、一時保存領域に、該当するテーブルについての保存中更新内容データが存在しない場合（Ｓ２４０７のＮＯ）には、個別の処理対象である「処理中更新内容コミットデータ」について、次のような一連の処理（Ｓ２４２１〜Ｓ２４２６）を行う。
【０１９９】
すなわち、処理中更新内容コミットデータについて、マッピングデータ１１２内のデータ状態表とのシリアル番号値の比較を行い（Ｓ２４２１）、反映可能か否かの判定を行い（Ｓ２４２２）、反映可能である場合（Ｓ２４２２のＹＥＳ）には、そのデータ値をマッピングデータ１１２へ反映し（Ｓ２４２３）、データ状態表のシリアル番号値の加算を行い（Ｓ２４２４）、次の更新内容データの処理を行う。
【０２００】
また、処理中更新内容コミットデータが反映可能でない場合（Ｓ２４２２のＮＯ）には、その処理中更新内容コミットデータを破棄すると共に、反映済の保存中更新内容コミットデータが存在する場合にはその保存中更新内容コミットデータを破棄し（Ｓ２４２５）、「テーブル、列のリトリーブ要求処理」を行い（Ｓ２４２６）、次の更新内容コミットデータの処理を行う。
【０２０１】
このような「処理中更新内容コミットデータ」についての一連の処理（Ｓ２４２１〜Ｓ２４２６）は、前述した「保存中更新内容コミットデータ」についての一連の処理（Ｓ２４１１〜Ｓ２４１６）と同様である。
【０２０２】
なお、以上のようなデータ反映処理において、個々の更新内容コミットデータがテーブル単位、またはテーブルの列単位である場合には、データ反映処理を高速に行うために、複数の更新内容コミットデータについての個々のデータ反映処理を並列に実行してもよい。
【０２０３】
また、リトリーブ状態表１６５の確認を行い、リトリーブ中であるために一時保存領域へ保存していたデータについては、リトリーブ要求送信部１６３にてリトリーブ完了となった際に、そのリトリーブ完了について受信データ反映部１２３に通知を行うようにしてもよい。この場合には、受信データ反映部１２３は、一時保存領域に、リトリーブが完了したテーブルのデータが保存されているか否かを確認し、保存されている場合に、前述したような一連の処理（Ｓ２４１１〜Ｓ２４１４、または、Ｓ２４１６）を行うことで、リトリーブ完了直後に保存中のデータを反映させることが可能である。
【０２０４】
あるいはまた、図２１に示すように、マスター計算機の更新データマージ部１３１によりレプリケーション送信要求（Ｓ２１０５）を行う際に、マージされたマージデータに個々のマージデータ毎に割り振られるマージ番号を付加して送信し、レプリカ計算機の処理部１２〜１４のいずれかで、受信したマージデータについてマージ番号のチェックを行うようにしてもよい。この構成において、通信障害が発生した場合には、レプリカ計算機の受信データ反映部１２３からリトリーブ要求送信部１６３に通知を行い、マージ番号チェック結果に応じたデータのリトリーブ要求処理を行うことにより、マージデータを展開した個々の更新内容データについて、データ状態表と更新内容データとの比較を行う必要なしに、障害から復旧することも可能である。
【０２０５】
［５．効果］
以上のような本実施形態によれば、次のような効果が得られる。
【０２０６】
（１）マスター計算機においては、複数のデータ操作アプリケーションによるデータ更新操作結果について、データ変更処理とコミット処理を行うことによってデータベースが更新された場合に、更新された複数の変更内容コミットデータのマージが行われ、マージが行われたデータを分割・圧縮した後にレプリケーション送信する。これにより、コミット処理の都度、レプリケーション送信する場合と比較して通信ネットワークへ与える負荷を低減することができ、結果として、複数のレプリカ計算機へデータ更新内容を反映する場合のスループットを向上することができる。
【０２０７】
（２）レプリカ計算機においては、レプリケーション受信後に分割・圧縮されたレプリケーションデータを、複数の変更内容コミットデータへ展開し、変更内容コミットデータをデータベースへ反映する場合には、データ状態表を用いて反映可能な変更内容であるかを確認し、必要な場合にはテーブル、列のデータをマスター計算機からリトリーブする。これにより、通信ネットワーク内に一時的に障害が発生してレプリケーションデータが紛失した場合にも、マスター計算機のデータベースの複製データを確実に維持することができる。
【０２０８】
（３）初期起動時およびマスター切替時においてリトリーブ処理を行う場合に、マスター計算機からデータ状態表を取得して自計算機のデータ状態表と比較し、リトリーブが必要なテーブルおよび列のデータについてのみマスター計算機からデータ取得を行う。これにより、マスター計算機とのデータ内容の違いが少ない場合には、データベースの全内容を取得する場合と比較して、初期起動時およびマスター切替時のリトリーブ処理時間を大幅に短縮することができる。
【０２０９】
（４）マスター切替を行う場合に、モード管理により、マスター計算機ではマスター遷移中を経てマスター運用中となり、レプリカ計算機ではレプリカ遷移中を経てレプリカ計算機となる。新マスター計算機では、現マスター計算機からのレプリカ遷移中情報を受信した段階で、マスター運用中へ遷移する。またレプリカ計算機では、新マスター計算機からのマスター運用中情報を受信した段階でレプリカ運用中へ遷移する。これにより、ネットワーク内に存在するマスター計算機を、常に1台のみに保つことができる。ネットワーク障害等により、万一、マスター計算機が複数存在する状況が発生した場合にも、レプリカ計算機では、常に自計算機が認識しているマスター計算機からのレプリケーションデータのみを反映するため、データベースに不整合が発生することはない。
【０２１０】
（５）また、マスター計算機が複数存在する状況が発生した場合にも、その中の1台の計算機において、モード管理により、マスター遷移中、マスター運用中を送信することで、他の計算機は、全てレプリカ計算機へ遷移し、データベース全体のリトリーブ処理を行い、マスター計算機のデータベースのリトリーブを行うことができるため、このような障害発生時のリカバリ処理を容易に行うことが可能となる。
【０２１１】
［６．他の実施形態］
なお、本発明は、前述した実施形態に限定されるものではなく、本発明の範囲内で他にも多種多様な変形例が実施可能である。例えば、図面に示したシステム構成や計算機の機能構成は、一例にすぎず、具体的なシステム構成や機能構成は適宜選択可能である。また、図面に示したデータ構成も一例にすぎず、具体的なデータ構成は適宜選択可能である。同様に、図面に示したフローチャートは、一例にすぎず、具体的な動作手順や各処理の詳細は適宜選択可能である。
【０２１２】
例えば、前述した実施形態においては、リトリーブ要求時におけるデータ状態表（データ特定情報）の比較を、レプリカ計算機側で行う場合について説明したが、データ状態表をレプリカ計算機からマスター計算機に送信することで、マスター計算機側でデータ状態表の比較を行い、比較結果に応じて送信するリトリーブデータを特定するようにしてもよい。
【図面の簡単な説明】
【０２１３】
【図１】本発明を適用した一つの実施形態に係る分散データ等価システムを構成する各計算機を示すブロック構成図。
【図２】図１に示す複数の計算機を通信ネットワークで接続することによって構成される分散データ等価システムを示すブロック構成図。
【図３】図２に示す複数の計算機を、マスター計算機およびレプリカ計算機として動作させた場合のシステム構成を示すブロック構成図。
【図４】図３に示すデータファイルに格納される表形式データファイル（ａ）とデータ状態表（ｂ）のデータ構造の一例を示す図。
【図５】図３に示す更新データキャッシュのデータ構造の一例を示す図。
【図６】図３に示すレプリケーション管理表のデータ構造の一例を示す図。
【図７】図３に示すモード管理表のデータ構造の一例を示す図。
【図８】図３に示すモード管理部で管理される4種類のモードから他のモードに遷移する場合の遷移条件として、モード遷移のトリガーと遷移先を示す図。
【図９】図８に示す遷移条件のうち、モード受信時の遷移条件として、現在のモードにおいてモード情報を受信した場合の遷移先モードを示す図。
【図１０】図８、図９に示す遷移条件で各モード遷移を行った後、遷移後の新モードに応じて決定される各動作を示す図。
【図１１】図３に示すリトリーブ状態表のデータ構造の一例を示す図。
【図１２】図１〜図３に示す分散データ等価システムの各計算機による初期起動からシステム停止に至るまでの動作概要を示すフローチャート。
【図１３】図１２に示す初期起動処理の処理手順の概要を示すフローチャート。
【図１４】（ａ）は、図１３に示すデータベース全体のリトリーブ処理の処理手順を示すフローチャート、（ｂ）は、（ａ）中のテーブル、列のリトリーブ要求処理の処理手順を示すフローチャート。
【図１５】図１２に示す自計算機マスター設定時のモード変更処理における処理手順の概要を示すフローチャート。
【図１６】図１２に示す他計算機マスター設定時のモード変更処理における処理手順のうち、レプリカ遷移中モードに遷移するまでの前半部分の概要を示すフローチャート。
【図１７】図１２に示す他計算機マスター設定時のモード変更処理における処理手順のうち、レプリカ運用中モードに遷移するまでの後半部分の概要を示すフローチャート。
【図１８】図１〜図３に示す分散データ等価システムにおいて、マスター計算機のデータ変更処理からレプリカ計算機のデータ反映処理に至るまでの分散データ等価処理手順の概要を示すフローチャート。
【図１９】図３に示すマスター計算機のデータ処理部によるデータ変更処理手順の概要を示すフローチャート。
【図２０】図３に示すマスター計算機のデータ処理部による変更内容のコミット処理手順の概要を示すフローチャート。
【図２１】図３に示すマスター計算機のマージデータ処理部によるコミット実行後のマージ処理手順の概要を示すフローチャート。
【図２２】図３に示すマスター計算機とレプリカ計算機のレプリケーション処理部によるレプリケーション送信処理手順とレプリケーション受信処理手順の概要を示すフローチャート。
【図２３】図３に示すレプリカ計算機のマージデータ処理部によるマージデータ展開処理手順の概要を示すフローチャート。
【図２４】図３に示すレプリカ計算機のデータ処理部によるデータ反映処理手順の概要を示すフローチャート。
【符号の説明】
【０２１４】
１１…データベース
１２…データ処理部
１３…マージデータ処理部
１４…レプリケーション処理部
１５…モード処理部
１６…リトリーブ処理部
１７…データ操作アプリケーション
１８…モード設定アプリケーション
１１１…データファイル
１１２…マッピングデータ
１２１…データ参照処理部
１２２…データ更新処理部
１２３…受信データ反映部
１２３…更新データキャッシュ
１３１…更新データマージ部
１３２…マージデータ展開部
１４１…レプリケーション管理部
１４２…レプリケーション通信部
１４３…レプリケーション管理表
１５１…モード管理部
１５２…モード送信部
１５３…モード受信部
１５４…モード管理テーブル
１６１…リトリーブ要求受理部
１６２…リトリーブデータ送信部
１６３…リトリーブ要求送信部
１６４…リトリーブデータ受信部
１６５…リトリーブ状態表
【図１】
2005339411.tif 000003
【図２】
2005339411.tif 000004
【図３】
2005339411.tif 000005
【図４】
2005339411.tif 000006
【図５】
2005339411.tif 000007
【図６】
2005339411.tif 000008
【図７】
2005339411.tif 000009
【図８】
2005339411.tif 000010
【図９】
2005339411.tif 000011
【図１０】
2005339411.tif 000012
【図１１】
2005339411.tif 000013
【図１２】
2005339411.tif 000014
【図１３】
2005339411.tif 000015
【図１４】
2005339411.tif 000016
【図１５】
2005339411.tif 000017
【図１６】
2005339411.tif 000018
【図１７】
2005339411.tif 000019
【図１８】
2005339411.tif 000020
【図１９】
2005339411.tif 000021
【図２０】
2005339411.tif 000022
【図２１】
2005339411.tif 000023
【図２２】
2005339411.tif 000024
【図２３】
2005339411.tif 000025
【図２４】
2005339411.tif 000026