(57)【要約】【課題】分散オブジェクト基盤上においてレプリケーション処理を通信負荷を抑制した形で実現する。【解決手段】プライマリオブジェクトは、変数等の値をシリアライズ処理を実施してシリアライズデータを生成し、当該シリアライズデータをセグメント分割して各セグメントについてハッシュ値を算出して、レプリケーションマネージャに出力する。レプリケーションマネージャは、従前のハッシュ値をハッシュ管理テーブルに登録しておき、受信したハッシュ値と従前のハッシュ値を比較して、不一致と判断されたハッシュ値に係るセグメントを、プライマリオブジェクトから取得して、レプリカオブジェクトに出力する。レプリカオブジェクトは、セグメントのデータを受信すると、保持するシリアライズデータの該当部分を置換して、デシリアライズ処理を実施すれば、プライマリオブジェクトの最新状態をレプリカオブジェクトに設定することができる。【選択図】図７
2009245089.tif 000002
【特許請求の範囲】
【請求項１】
第１のオブジェクトと、
第２のオブジェクトと、
レプリケーションマネージャと、
をコンピュータに、実現させるための分散オブジェクト・プログラムであって、
前記第１のオブジェクトが、
少なくともユーザ定義の内部データの値をシリアライズする処理を実施することによりシリアライズデータを生成し、当該シリアライズデータを前記第１のオブジェクトが実行されている前記コンピュータの記憶装置のうち前記第１のオブジェクトに割り当てられた第１の領域に格納するシリアライズ機能と、
要求に応じて、前記第１の領域に格納されている前記シリアライズデータに対してハッシュ値を算出して、出力するハッシュ機能と、
要求に応じて、前記シリアライズデータを出力する出力機能と、
を有し、
前記第２のオブジェクトが、
前記シリアライズデータを受信し、前記第２のオブジェクトが実行されているコンピュータの記憶装置のうち前記第２のオブジェクトに割り当てられた第２の領域に格納する受信機能と、
前記第２のオブジェクトが実行されている前記第２の領域の前記シリアライズデータをデシリアライズする処理を実施することにより、前記少なくともユーザ定義の内部データの値を生成し、前記第２のオブジェクトの内部データの値として設定するデシリアライズ機能と、
を有し、
前記レプリケーションマネージャが、
前記第１のオブジェクトに対応して前記第２のオブジェクトと、前記第１のオブジェクトの従前のハッシュ値とを管理し且つ前記レプリケーションマネージャが実行されているコンピュータの記憶装置に格納されている管理テーブルを参照して、前記第１のオブジェクトにハッシュ値を要求して取得し、取得した前記ハッシュ値と、前記管理テーブルに登録されている前記従前のハッシュ値とを比較する比較機能と、
取得した前記ハッシュ値と、前記管理テーブルに登録されている前記従前のハッシュ値とが不一致である場合、前記第１のオブジェクトから、前記シリアライズデータを取得し、前記管理テーブルにおいて前記第１のオブジェクトに対応して登録されている前記第２のオブジェクトに、前記シリアライズデータを送信するデータ転送機能と、
を有する
分散オブジェクト・プログラム。
【請求項２】
前記第１のオブジェクトの前記ハッシュ機能が、前記シリアライズデータのセグメント毎にハッシュ値を算出し、
前記管理テーブルが、前記シリアライズデータのセグメント毎に従前のハッシュ値を管理しており、
前記レプリケーションマネージャの前記比較機能が、前記セグメント毎にハッシュ値の比較を行い、
前記レプリケーションマネージャのデータ転送機能が、取得した前記ハッシュ値と、前記管理テーブルに登録されている前記従前のハッシュ値とが不一致である場合、当該不一致とされた前記ハッシュ値に係るセグメントのデータを取得して、前記第２のオブジェクトに送信し、
前記第２のオブジェクトの前記受信機能が、受信した前記セグメントのデータで、前記第２の領域に格納されている前記シリアライズデータの該当部分を置換する
請求項１記載の分散オブジェクト・プログラム。
【請求項３】
前記第１のオブジェクトの前記シリアライズ機能及び前記第２のオブジェクトの前記デシリアライズ機能の詳細がユーザ定義され、
前記第１のオブジェクトの前記ハッシュ機能、前記出力機能及び前記シリアライズ機能の存在と、前記レプリケーションマネージャと、前記第２のオブジェクトの前記受信機能及び前記デシリアライズ機能の存在とがフレームワークで規定且つ提供される
請求項１記載の分散オブジェクト・プログラム。
【請求項４】
第１のオブジェクトと、
第２のオブジェクトと、
レプリケーションマネージャと、
をコンピュータに、実現させるための分散オブジェクト・プログラムであって、
前記第１のオブジェクトが、
少なくともユーザ定義の内部データの値をシリアライズする処理を実施することによりシリアライズデータを生成し、当該シリアライズデータを前記第１のオブジェクトが実行されているコンピュータの記憶装置のうち前記第１のオブジェクトに割り当てられた第１の領域に格納するシリアライズ機能と、
要求に応じて、前記第１の領域に格納されている前記シリアライズデータに対してハッシュ値を算出して、出力するハッシュ機能と、
要求に応じて、前記シリアライズデータを出力する出力機能と、
を有し、
前記第２のオブジェクトが、
少なくともユーザ定義の内部データの値をシリアライズする処理を実施することにより第２のシリアライズデータを生成し、当該第２のシリアライズデータを前記第２のオブジェクトが実行されているコンピュータの記憶装置のうち前記第２のオブジェクトに割り当てられた第２の領域に格納するシリアライズ機能と、
前記第２の領域に格納されている前記第２のシリアライズデータに対してハッシュ値を算出するハッシュ機能と、
外部からハッシュ値を受信した場合、前記ハッシュ機能により算出された前記ハッシュ値と比較して、一致しているか判断する比較機能と、
前記外部から受信したハッシュ値と算出された前記ハッシュ値とが不一致である場合に、前記第１のオブジェクトから、前記シリアライズデータを取得し、前記第２の領域に格納する受信機能と、
前記第２の領域に格納されている前記シリアライズデータをデシリアライズする処理を実施することにより、少なくともユーザ定義の内部データの値を生成し、前記第２のオブジェクトの内部データの値として設定するデシリアライズ機能と、
を有し、
前記レプリケーションマネージャが、
前記第１のオブジェクトに対応する前記第２のオブジェクトを管理し且つ前記レプリケーションマネージャが実行されているコンピュータの記憶装置に格納されている管理テーブルを参照して、前記第１のオブジェクトにハッシュ値を要求して取得し、取得した前記ハッシュ値を、前記管理テーブルに前記第１のオブジェクトに対応して登録されている前記第２のオブジェクトに対して送信する機能
を有する
分散オブジェクト・プログラム。
【請求項５】
前記第１及び第２のオブジェクトの前記ハッシュ機能が、前記シリアライズデータのセグメント毎にハッシュ値を算出し、
前記第２のオブジェクトの前記比較機能が、前記セグメント毎にハッシュ値の比較を実施し、
前記第２のオブジェクトの前記受信機能が、前記比較機能によって不一致と判断されたハッシュ値に係るセグメントのデータを、前記第１のオブジェクトから取得し、取得した前記セグメントのデータで、前記第２の領域に格納されている前記第２のシリアライズデータの該当部分を置換する
請求項４記載の分散オブジェクト・プログラム。
【請求項６】
前記第１のオブジェクトの前記シリアライズ機能並びに前記第２のオブジェクトの前記シリアライズ機能及び前記デシリアライズ機能の詳細がユーザ定義され、
前記第１のオブジェクトの前記ハッシュ機能、前記出力機能及び前記シリアライズ機能の存在と、前記レプリケーションマネージャと、前記第２のオブジェクトの前記比較機能、前記受信機能及び前記デシリアライズ機能の存在とがフレームワークで規定且つ提供される
請求項４記載の分散オブジェクト・プログラム。
【請求項７】
レプリケーションマネージャにより、第１のオブジェクトに対応して第２のオブジェクトと、前記第１のオブジェクトの従前のハッシュ値とを管理し且つ前記レプリケーションマネージャが実行されているコンピュータの記憶装置に格納されている管理テーブルを参照して、前記第１のオブジェクトにハッシュ値を要求するステップと、
前記第１のオブジェクトにより、少なくともユーザ定義の内部データの値をシリアライズする処理を実施することによりシリアライズデータを生成し、当該シリアライズデータを前記第１のオブジェクトが実行されているコンピュータの記憶装置のうち前記第１のオブジェクトに割り当てられた第１の領域に格納するステップと、
前記第１のオブジェクトにより、前記第１の領域に格納されている前記シリアライズデータに対してハッシュ値を算出して、前記レプリケーションマネージャに出力するステップと、
前記レプリケーションマネージャにより、前記第１のオブジェクトから前記ハッシュ値を取得し、取得した前記ハッシュ値と、前記管理テーブルに登録されている前記従前のハッシュ値とを比較するステップと、
取得した前記ハッシュ値と、前記管理テーブルに登録されている前記従前のハッシュ値とが不一致である場合、前記レプリケーションマネージャにより、前記第１のオブジェクトから、前記シリアライズデータを取得し、前記管理テーブルにおいて前記第１のオブジェクトに対応して登録されている前記第２のオブジェクトに、前記シリアライズデータを送信するステップと、
前記第２のオブジェクトにより、前記レプリケーションマネージャから前記シリアライズデータを受信し、前記第２のオブジェクトが実行されているコンピュータの記憶装置のうち前記第２のオブジェクトに割り当てられた第２の領域に格納するステップと、
前記第２のオブジェクトにより、前記第２の領域に格納されている前記シリアライズデータをデシリアライズする処理を実施することにより、前記少なくともユーザ定義の内部データの値を生成し、前記第２のオブジェクトの内部データの値として設定するステップと、
を含み、分散オブジェクト環境に含まれるコンピュータにより実行されるレプリケーション処理方法。
【請求項８】
レプリケーションマネージャにより、第１のオブジェクトに対応する第２のオブジェクトを管理し且つ前記レプリケーションマネージャが実行されているコンピュータの記憶装置に格納されている管理テーブルを参照して、前記第１のオブジェクトにハッシュ値を要求するステップと、
前記第１のオブジェクトにより、少なくともユーザ定義の内部データの値をシリアライズする処理を実施することによりシリアライズデータを生成し、当該シリアライズデータを前記第１のオブジェクトが実行されているコンピュータの記憶装置のうち前記第１のオブジェクトに割り当てられた第１の領域に格納するステップと、
前記第１のオブジェクトにより、前記第１の領域に格納されている前記シリアライズデータに対してハッシュ値を算出して、前記レプリケーションマネージャに出力するステップと、
前記レプリケーションマネージャにより、前記第１のオブジェクトから取得した前記ハッシュ値を、前記管理テーブルに前記第１のオブジェクトに対応して登録されている前記第２のオブジェクトに対して送信するステップと、
前記第２のオブジェクトにより、少なくともユーザ定義の内部データの値をシリアライズする処理を実施することにより第２のシリアライズデータを生成し、当該第２のシリアライズデータを前記第２のオブジェクトが実行されているコンピュータの記憶装置のうち前記第２のオブジェクトに割り当てられた第２の領域に格納するステップと、
前記第２のオブジェクトにより、前記第２の領域に格納されている前記第２のシリアライズデータに対してハッシュ値を算出するステップと、
前記レプリケーションマネージャから前記ハッシュ値を受信した場合、前記第２のオブジェクトにより、前記第２のシリアライズデータから算出された前記ハッシュ値と比較して、一致しているか判断するステップと、
前記レプリケーションマネージャから受信したハッシュ値と算出された前記ハッシュ値とが不一致である場合に、前記第２のオブジェクトにより、前記第１のオブジェクトから前記シリアライズデータを取得し、前記第２の領域に格納するステップと、
前記第２のオブジェクトにより、前記第２の領域に格納されている前記シリアライズデータをデシリアライズする処理を実施することにより、少なくともユーザ定義の内部データの値を生成し、前記第２のオブジェクトの内部データの値として設定するステップと、
を含み、分散オブジェクト環境に含まれるコンピュータにより実行されるレプリケーション処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散オブジェクト基盤上におけるレプリケーション技術に関する。
【背景技術】
【０００２】
分散オブジェクト基盤上でのアプリケーション開発において、フォールトトレランス等の信頼性保証をするためには、レプリカオブジェクトを準備しておきレプリケーション処理（すなわちデータ同期）をすることが必要となる。従来までのレプリケーション処理では、プライマリオブジェクトの内部データをレプリカオブジェクトに単純に送信して実現していた。
【０００３】
なお、例えば特開２００６−２６８７４０号公報には、レプリケーションに要する時間の短縮するための技術が開示されている。マスタストレージのバックアップ作成後、バックアップに対応した差分マップを作成し、マスタストレージでは、ホストから行われた更新箇所を差分マップに記録し、レプリカストレージは、バックアップデータからリストアし、マスタストレージとレプリカストレージのペアを作成し、差分マップをもとに、マスタストレージのバックアップ後の更新箇所のデータをレプリカストレージに送り、レプリカストレージでデータを更新し、レプリカストレージはレプリケーションに関してマスタストレージと同期がとられている。しかし、分散オブジェクト環境については考慮されていない。
【０００４】
さらに、例えば特開２００７−２０００２９号公報には、複数システム間のファイル複製におけるネットワーク転送、ディスクＩ／Ｏ、更新ブロック検出を最小限のブロックに限定することで、高速かつ柔軟なファイル複製を実現するファイル複製システムを得るための技術が開示されている。具体的には、ディスク装置に格納されるファイルを、データブロック及び連続する複数のデータブロックから構成されるセグメントである領域に分割し、分割した領域毎の更新有無が判定可能な更新判定情報を含むメタデータブロックを階層的に配置し、階層的に配置されたメタデータブロックを前記ファイルの大きさに応じて木構造でディスク装置に格納するメタデータブロック管理手段と、複数のコンピュータ間で上記木構造の情報ブロックに含まれる更新判定情報の比較を行って更新されたデータブロックを検出し、更新されたデータブロックのみを複製元から複製先へ転送するファイル複製制御手段とを設けている。しかし、分散オブジェクト環境については考慮されていない。
【特許文献１】特開２００６−２６８７４０号公報
【特許文献２】特開２００７−２０００２９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上で述べたような従来技術では、分散オブジェクト基盤に簡単に対応できない。
【０００６】
従って、本発明の目的は、分散オブジェクト基盤上においてレプリケーション処理を通信負荷を抑制した形で実現するための技術を提供することである。
【課題を解決するための手段】
【０００７】
本発明に係る分散オブジェクト・プログラムは、第１のオブジェクト（例えばプライマリオブジェクト）と、第２のオブジェクト（例えばレプリカオブジェクト）と、レプリケーションマネージャとをコンピュータに実現させるための分散オブジェクト・プログラムである。そして、上記第１のオブジェクトは、少なくともユーザ定義の内部データの値をシリアライズする処理を実施することによりシリアライズデータを生成し、当該シリアライズデータを第１のオブジェクトが実行されているコンピュータの記憶装置のうち第１のオブジェクトに割り当てられた第１の領域に格納するシリアライズ機能と、要求に応じて、第１の領域に格納されているシリアライズデータに対してハッシュ値を算出して、出力するハッシュ機能と、要求に応じて、シリアライズデータを出力する出力機能とを有する。また、上記第２のオブジェクトは、上記シリアライズデータを受信し、第２のオブジェクトが実行されているコンピュータの記憶装置のうち第２のオブジェクトに割り当てられた第２の領域に格納する受信機能と、第２の領域に格納されているシリアライズデータをデシリアライズする処理を実施することにより、少なくともユーザ定義の内部データの値を生成し、第２のオブジェクトの内部データの値として設定するデシリアライズ機能とを有する。さらに、上記レプリケーションマネージャは、第１のオブジェクトに対応して第２のオブジェクトと、第１のオブジェクトの従前のハッシュ値とを管理し且つレプリケーションマネージャが実行されているコンピュータの記憶装置に格納されている管理テーブルを参照して、第１のオブジェクトにハッシュ値を要求して取得し、取得したハッシュ値と、管理テーブルに登録されている従前のハッシュ値とを比較する比較機能と、取得したハッシュ値と、管理テーブルに登録されている従前のハッシュ値とが不一致である場合、第１のオブジェクトから、上記シリアライズデータを取得し、管理テーブルにおいて第１のオブジェクトに対応して登録されている第２のオブジェクトに、上記シリアライズデータを送信するデータ転送機能とを有する。
【０００８】
このようなオブジェクトの構成を採用し、さらにレプリケーションマネージャを導入することによって、分散オブジェクト基盤上においても、変更が検出された場合にのみ通信を行うため通信負荷を下げることができ、システム全体に対する影響を抑制することができるようになる。
【０００９】
なお、上記分散オブジェクト・プログラムにおいて、上記第１のオブジェクトのハッシュ機能が、上記シリアライズデータのセグメント毎にハッシュ値を算出するようにしてもよい。この場合、上記管理テーブルが、上記シリアライズデータのセグメント毎に従前のハッシュ値を管理しておく。そして、上記レプリケーションマネージャの比較機能が、セグメント毎にハッシュ値の比較を行い、レプリケーションマネージャのデータ転送機能が、取得したハッシュ値と、管理テーブルに登録されている従前のハッシュ値とが不一致である場合、当該不一致とされたハッシュ値に係るセグメントのデータを取得して、第２のオブジェクトに送信する。そして、上記第２のオブジェクトの受信機能が、受信した上記セグメントのデータで、第２の領域に格納されているシリアライズデータの該当部分を置換する。このようにすればさらに通信負荷を減らすことができるようになる。
【００１０】
さらに、上記第１のオブジェクトのシリアライズ機能及び第２のオブジェクトのデシリアライズ機能の詳細（オブジェクトの本来処理に依存する部分）がユーザ定義されるものであり、上記第１のオブジェクトのハッシュ機能、出力機能及びシリアライズ機能の存在と、上記レプリケーションマネージャと、上記第２のオブジェクトの受信機能及びデシリアライズ機能の存在とがフレームワークで規定且つ提供されるものである場合もある。すなわち、分散オブジェクト基盤（フレームワーク）においてレプリケーションを実現するための基底クラスによって、上記第１のオブジェクトのハッシュ機能、出力機能及びシリアライズ機能の存在と、上記第２のオブジェクトの受信機能及びデシリアライズ機能の存在とを予め規定且つ提供しておき、上記第１のオブジェクトのシリアライズ機能及び第２のオブジェクトのデシリアライズ機能の詳細については、基底クラスをユーザ定義によってオーバーライドすることによって実現するものである。
【００１１】
本発明の第２の態様に係る分散オブジェクト・プログラムは、第１のオブジェクトと、第２のオブジェクトと、レプリケーションマネージャとをコンピュータに実現させるものである。そして、上記第１のオブジェクトは、少なくともユーザ定義の内部データの値をシリアライズする処理を実施することによりシリアライズデータを生成し、当該シリアライズデータを第１のオブジェクトが実行されているコンピュータの記憶装置のうち第１のオブジェクトに割り当てられた第１の領域に格納するシリアライズ機能と、要求に応じて、第１の領域に格納されている上記シリアライズデータに対してハッシュ値を算出して、出力するハッシュ機能と、要求に応じて、上記シリアライズデータを出力する出力機能とを有する。また、上記第２のオブジェクトは、少なくともユーザ定義の内部データの値をシリアライズする処理を実施することにより第２のシリアライズデータを生成し、当該第２のシリアライズデータを第２のオブジェクトが実行されているコンピュータの記憶装置のうち第２のオブジェクトに割り当てられた第２の領域に格納するシリアライズ機能と、第２の領域に格納されている第２のシリアライズデータに対してハッシュ値を算出するハッシュ機能と、外部からハッシュ値を受信した場合、ハッシュ機能により算出された上記ハッシュ値と比較して、一致しているか判断する比較機能と、外部から受信したハッシュ値と算出されたハッシュ値とが不一致である場合に、第１のオブジェクトから、上記シリアライズデータを取得し、第２の領域に格納する受信機能と、第２の領域に格納されている上記シリアライズデータをデシリアライズする処理を実施することにより、少なくともユーザ定義の内部データの値を生成し、第２のオブジェクトの内部データの値として設定するデシリアライズ機能とを有する。さらに、上記レプリケーションマネージャは、第１のオブジェクトに対応する第２のオブジェクトを管理し且つレプリケーションマネージャが実行されているコンピュータの記憶装置に格納されている管理テーブルを参照して、第１のオブジェクトにハッシュ値を要求して取得し、取得したハッシュ値を、管理テーブルに第１のオブジェクトに対応して登録されている第２のオブジェクトに対して送信する機能を有する。
【００１２】
このようにレプリケーションマネージャの機能を削減する形で実装するようにしても良い。
【００１３】
なお、本発明の第２の態様において、第１及び第２のオブジェクトのハッシュ機能が、シリアライズデータのセグメント毎にハッシュ値を算出するようにしてもよい。この場合、第２のオブジェクトの比較機能が、セグメント毎にハッシュ値の比較を実施し、第２のオブジェクトの受信機能が、比較機能によって不一致と判断されたハッシュ値に係るセグメントのデータを、第１のオブジェクトから取得し、取得したセグメントのデータで、第２の領域に格納されている第２のシリアライズデータの該当部分を置換するようにする。このようにすれば、より通信負荷を下げることができるようになる。
【００１４】
さらに、第１のオブジェクトのシリアライズ機能並びに第２のオブジェクトのシリアライズ機能及びデシリアライズ機能の詳細（オブジェクト本来の処理に依存する部分）がユーザ定義され、第１のオブジェクトのハッシュ機能、出力機能及びシリアライズ機能の存在と、レプリケーションマネージャと、第２のオブジェクトの比較機能、受信機能及びデシリアライズ機能の存在とがフレームワークで規定且つ提供される場合もある。
【００１５】
なお、上記プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等の記憶媒体又は記憶装置に格納される。また、ネットワークなどを介してデジタル信号として配信される場合もある。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【発明の効果】
【００１６】
本発明によれば、分散オブジェクト基盤上においてレプリケーション処理を通信負荷を抑制した形で実現することができるようになる。
【発明を実施するための最良の形態】
【００１７】
まず、本発明の実施の形態におけるレプリケーション・システム部分のクラス図を図１に示す。分散オブジェクト基盤（フレームワーク）部分には、レプリケーションマネージャと、レプリケーションの基本的な機能を含むアプリケーション基底クラスとが含まれる。レプリケーションマネージャとアプリケーション基底クラスとは、互いにやり取りを行う。また、図１で点線矢印で示し且つ以下で述べるように、アプリケーション基底クラス同士も互いにやり取りを行う場合もある。
【００１８】
また、ユーザが作成すべきユーザ作成プログラムのうち、レプリケーションが必須となるオブジェクトについてのユーザ作成アプリケーションは、アプリケーション基底クラスを承継する。これによって、どのようなアプリケーションを作成する場合においても、以下で述べるようなレプリケーションを実現できるようにする。なお、レプリケーションにおいて以下で述べるシリアライズ機能及びデシリアライズ機能は必須となるが、アプリケーション依存の部分があるので、ユーザ作成アプリケーションにおいて、アプリケーション基底クラスの該当メソッドをオーバーライドするように詳細な機能を規定する。すなわち、シリアライズ機能及びデシリアライズ機能についても、アプリケーション基底クラスにおいてその存在は規定されるが、その詳細は、ユーザ作成アプリケーションにおいて規定される。なお、ユーザ作成アプリケーション同士は、図１で二点鎖線で示すように、その本来の処理において必要であればやり取りを行う。
【００１９】
なお、分散オブジェクト環境においては、図２に示すようにネットワーク１で繋がれた複数のコンピュータ３（図２では３Ａ乃至３Ｃ）で、レプリケーションが必要な各オブジェクトが実行されている。同じコンピュータで、レプリケーションが必要な各オブジェクトが実行される場合もあるが、典型的には、異なるコンピュータで各々実行される。どのコンピュータのどのアドレスにどのオブジェクトが存在するかについては、分散オブジェクト基盤で提供される周知の機構（例えばネーミングサービスなど）に問い合わせることによって取得可能となっている。以下では、この点については前提としてこれ以上は述べないものとする。
【００２０】
［実施の形態１］
図３に本発明の第１の実施の形態における実行状態（オブジェクト及びレプリケーションマネージャとの関係）を示す。第１の実施の形態においては、例えば現在必要な処理を実施しているプライマリオブジェクトＰ１と、バックアップのためのレプリカオブジェクトＲ１及びＲ２と、レプリケーションマネージャ１０１とが存在している。基本的には、プライマリオブジェクトＰ１と、レプリカオブジェクトＲ１及びＲ２とは、同じ構成を有する。そして、プライマリオブジェクトＰ１もレプリカオブジェクトＲ１及びＲ２も、レプリケーションマネージャ１０１を介してレプリケーションを実施する。
【００２１】
プライマリオブジェクトＰ１並びにレプリカオブジェクトＲ１及びＲ２の機能構成例を図４に示す。これらのオブジェクトのレプリケーションに関連する機能部２００は、アプリケーション基底クラス由来のハッシュ生成部２０１と、アプリケーション基底クラス由来のセグメントデータインターフェース部２０３と、アプリケーション基底クラスによってその存在は規定されるがユーザ作成アプリケーションによってオーバーライドされるシリアライズ部２０５及びデシリアライズ部２０７とを有する。また、これらのオブジェクトのレプリケーションに関連するデータ部３００には、シリアライズ部２０５によって少なくともユーザ定義の変数の値などの内部データ値をシリアライズした結果であるシリアライズデータ３０１が含まれる。なお、シリアライズデータ３０１は、所定サイズのセグメントｓｅｇ１乃至３に分けられる場合もあれば、ユーザ定義に従ってセグメント分割される場合もある。
【００２２】
ハッシュ生成部２０１は、シリアライズデータ３０１の各セグメントに対して周知のアルゴリズムにてハッシュ値を算出する機能を有する。また、セグメントデータインターフェース部２０３は、外部からの要求に応じて、指定されたセグメントのデータを読み出して出力したり、外部から取得したセグメントのデータを該当部分に格納する処理などを実施する。
【００２３】
シリアライズ部２０５は、オブジェクトの状態を表す変数の値などの内部データ値を、バイト列などのシリアライズデータ３０１に変換する処理を実施するものであり、デシリアライズ部２０７は、バイト列などのシリアライズデータ３０１からオブジェクトの状態を表す変数の値などの内部データ値に戻して、オブジェクトに設定する処理を実施するものである。これらの具体的処理内容については周知であるからこれ以上述べない。
【００２４】
図５に示すように、レプリケーションマネージャ１０１は、プライマリオブジェクトＰ１とレプリカオブジェクトＲ１及びＲ２の関係とプライマリオブジェクトＰ１から受信した従前のハッシュ値とを管理するハッシュ管理テーブル１１３と、プライマリオブジェクトＰ１からハッシュ値を取得してハッシュ管理テーブル１１３に登録されている従前のハッシュ値との比較処理を実施するハッシュ処理部１１１と、ハッシュ処理部１１１により不一致であると判断されたハッシュ値に係るセグメントをプライマリオブジェクトＰ１から取得してレプリカオブジェクトＲ１及びＲ２に送付する差分セグメントデータ処理部１１２とを有する。
【００２５】
図６に、ハッシュ管理テーブル１１３に登録されるデータの一例を示す。図６の例では、プライマリオブジェクトのＩＤと、対応するレプリカオブジェクトのＩＤと、セグメント毎の従前のハッシュ値とが登録されるようになっている。図６の例では、３つのセグメントに分割される例を示しているが、プライマリオブジェクトが保持するデータ量によってセグメントの数は変化する。従ってセグメントが１つ（内部データ全体と同じ）の場合もあれば、より多くのセグメントが含まれる場合もある。また、レプリカオブジェクトの数も１以上任意の整数である。また、初期的には、ハッシュ値は登録されないので、初回は必ずハッシュ値は不一致と判断され、ハッシュ管理テーブル１１３に登録されるようになる。
【００２６】
次に、図７を用いて、プライマリオブジェクトＰ１、レプリケーションマネージャ１０１、並びにレプリカオブジェクトＲ１及びＲ２により実施されるレプリケーション処理の内容について説明する。
【００２７】
レプリケーションマネージャ１０１のハッシュ処理部１１１は、定期的に又は任意のタイミングで、ハッシュ管理テーブル１１３に登録されているプライマリオブジェクトＰ１に対してハッシュ値要求を送信する（ステップＳ１）。プライマリオブジェクトＰ１のハッシュ生成部２０１は、レプリケーションマネージャ１０１からハッシュ値要求を受信すると（ステップＳ３）、シリアライズ部２０５に処理を指示する。そうすると、シリアライズ部２０５は、少なくともユーザ定義の変数の値などの内部データ値に対してシリアライズ処理を実施してシリアライズデータ３０１を生成し、プライマリオブジェクトＰ１が実行されているコンピュータのメインメモリなどの記憶装置（プライマリオブジェクトＰ１に割り当てられた領域）に格納する（ステップＳ５）。
【００２８】
さらに、ハッシュ生成部２０１は、例えば所定のデータ量毎にシリアライズデータ３０１をセグメント分割し、各セグメントに対して所定のアルゴリズムによってハッシュ値を算出し、各セグメントのハッシュ値をレプリケーションマネージャ１０１に出力する（ステップＳ７）。
【００２９】
レプリケーションマネージャ１０１のハッシュ処理部１１１は、プライマリオブジェクトＰ１から、セグメント毎のハッシュ値を受信し、例えばレプリケーションマネージャ１０１が実行されているコンピュータのメインメモリなどの記憶装置に格納する（ステップＳ９）。そして、ハッシュ処理部１１１は、ハッシュ管理テーブル１１３に登録されている従前のハッシュ値と、受信したハッシュ値とをセグメント毎に比較する（ステップＳ１１）。全てのセグメントのハッシュ値が一致する場合には、プライマリオブジェクトＰ１の状態に変化はないので、これ以上処理する必要はない。すなわち、今回の処理は終了する（ステップＳ１５）。
【００３０】
一方、１つでもハッシュ値が一致しなければ、シリアライズデータ３０１、すなわちプライマリオブジェクトＰ１の変数の値などの内部データ値に変更が生じたことになるので、レプリカオブジェクトＲ１及びＲ２の変数の値などの内部データ値も変更しなければならない。そこで、ハッシュ処理部１１１は、ステップＳ９で受信し且つ不一致となったハッシュ値を、ハッシュ管理テーブル１１３に登録する。また、レプリカオブジェクト１０１の差分セグメントデータ処理部１１２は、不一致となったハッシュ値に係るセグメントのＩＤを含むセグメント要求を、プライマリオブジェクトＰ１に送信する（ステップＳ１７）。プライマリオブジェクトＰ１のセグメントデータインターフェース部２０３は、レプリケーションマネージャ１０１からセグメント要求を受信すると（ステップＳ１９）、当該セグメント要求において要求されているセグメントのデータを、データ部３００から読み出し、レプリケーションマネージャ１０１に出力する（ステップＳ２１）。
【００３１】
レプリケーションマネージャ１０１の差分セグメントデータ処理部１１２は、プライマリオブジェクトＰ１から、要求したセグメントのデータを受信すると（ステップＳ２３）、ハッシュ管理テーブル１１３に登録されているレプリカオブジェクトＲ１及びＲ２に対して、受信したセグメントのデータ及びセグメントのＩＤを転送する（ステップＳ２５）。
【００３２】
レプリカオブジェクトＲ１及びＲ２のセグメントデータインターフェース部２０３は、レプリケーションマネージャ１０１から、セグメントのデータ及びセグメントのＩＤを受信すると（ステップＳ２７）、レプリカオブジェクトＲ１又はＲ２が実行されているコンピュータのメインメモリなどの記憶装置（レプリカオブジェクトＲ１及びＲ２に割り当てられている領域）に格納されているシリアライズデータ３０１において、受信したセグメントＩＤに係るセグメントのデータを、受信したセグメントのデータで置換して格納する（ステップＳ２９）。そして、レプリカオブジェクトＲ１及びＲ２のセグメントデータインターフェース部２０３は、デシリアライズ部２０７に処理を指示する。すなわち、デシリアライズ部２０７は、更新されたシリアライズデータ３０１に対してデシリアライズ処理を実施して、少なくともユーザ定義の変数の値をレプリカオブジェクトＲ１及びＲ２に対して設定する（ステップＳ３１）。
【００３３】
以上のような処理を繰り返し実施すれば、ハッシュ値が異なる場合にのみレプリカオブジェクトＲ１及びＲ２の更新が発生するので、定期的に更新する場合に比して通信負荷を下げることができるようになる。また、セグメント毎にハッシュ値の一致不一致を判断し、更新が発生したセグメントのデータのみが通信されるようにしているので、この点においても通信負荷を下げることができる。
【００３４】
［実施の形態２］
図８に本発明の第２の実施の形態における実行状態（オブジェクト及びレプリケーションマネージャとの関係）を示す。第１の実施の形態では、レプリケーション処理においてレプリケーションマネージャ１０１の関与が大きかったが、本実施の形態では、レプリケーションマネージャ１０１の関与を削減した実施形態を示す。また、第１の実施の形態では、現在動作中のプライマリオブジェクトＰ１と現在スタンバイ中のレプリカオブジェクトＲ１及びＲ２とが存在するような例を示したが、本実施の形態では、オブジェクト間で第１の実施の形態のような差がない場合を例として示す。
【００３５】
図８に示すように、本実施の形態では、レプリケーションマネージャ５０１と各オブジェクトＯ１乃至Ｏ３（レプリケーションが必要となるオブジェクトが３つの例）とがやり取りを行うが、レプリケーションマネージャ５０１のレプリケーション処理における関与を削減した分これとは別にオブジェクト間でもやり取りが必要となる。
【００３６】
次に、各オブジェクトＯ１乃至Ｏ３の機能構成例を図９に示す。これらのオブジェクトのレプリケーションに関連する機能部６００は、アプリケーション基底クラス由来のハッシュ生成部６０１と、アプリケーション基底クラス由来のハッシュ比較処理部６０２と、アプリケーション基底クラス由来のセグメントデータインターフェース部６０３と、アプリケーション基底クラスによってその存在は規定されるがユーザ作成アプリケーションによってオーバーライドされるシリアライズ部６０４及びデシリアライズ部６０５とを有する。また、これらのオブジェクトのレプリケーションに関連するデータ部７００には、シリアライズ部６０４によって少なくともユーザ定義の変数の値などの内部データ値をシリアライズした結果であるシリアライズデータ７０１が含まれる。なお、シリアライズデータ７０１は、所定サイズのセグメントｓｅｇ１乃至３に分けられる場合もあれば、ユーザ定義に従ってセグメント分割される場合もある。
【００３７】
ハッシュ生成部６０１は、シリアライズデータ７０１の各セグメントに対して周知のアルゴリズムにてハッシュ値を算出する機能を有する。また、ハッシュ比較処理部６０２は、外部から受信したハッシュ値と、ハッシュ生成部６０１が算出したハッシュ値とを比較する処理などを実施する。セグメントデータインターフェース部６０３は、外部からの要求に応じて、指定されたセグメントのデータを読み出して出力したり、外部から取得したセグメントのデータを該当部分に格納する処理などを実施する。
【００３８】
シリアライズ部６０４は、オブジェクトの状態を表す変数の値などの内部データ値を、バイト列などのシリアライズデータ７０１に変換する処理を実施するものであり、デシリアライズ部６０５は、バイト列などのシリアライズデータ７０１からオブジェクトの状態を表す変数の値などの内部データ値に戻して、オブジェクトに設定する処理を実施するものである。これらの具体的処理内容については周知であるからこれ以上述べない。
【００３９】
図１０に示すように、レプリケーションマネージャ５０１は、オブジェクトのグループを管理するオブジェクト管理テーブル５１２と、特定のオブジェクトからハッシュ値を取得して特定のオブジェクトと同一グループの他のオブジェクトに転送するハッシュ処理部５１１とを有する。
【００４０】
図１１に、オブジェクト管理テーブル５１２に格納されるデータの一例を示す。図１１の例では、グループＩＤと、当該グループに属するオブジェクトのＩＤとが対応して格納されている。
【００４１】
次に、図１２及び図１３を用いて、オブジェクトＯ１乃至Ｏ３と、レプリケーションマネージャ５０１とが実施するレプリケーション処理の内容を説明する。なお、オブジェクトＯ１の状態を基準に、オブジェクトＯ２及びＯ３の状態を更新する例を示すが、オブジェクトＯ２又はＯ３の状態を基準に、他のオブジェクトの状態を更新するようにしても良い。
【００４２】
レプリケーションマネージャ５０１のハッシュ処理部５１１は、定期的に又は任意のタイミングで、オブジェクト管理テーブル５１２に登録されている特定のグループの特定のオブジェクトＯ１に対してハッシュ値要求を送信する（ステップＳ４１）。オブジェクトＯ１のハッシュ生成部６０１は、レプリケーションマネージャ５０１からハッシュ値要求を受信すると（ステップＳ４３）、シリアライズ部６０４に処理を指示する。そうすると、シリアライズ部６０４は、少なくともユーザ定義の変数の値などの内部データ値に対してシリアライズ処理を実施してシリアライズデータ７０１を生成し、オブジェクトＯ１が実行されているコンピュータのメインメモリなどの記憶装置（オブジェクトＯ１に割り当てられている領域）に格納する（ステップＳ４５）。
【００４３】
さらに、ハッシュ生成部６０１は、例えば所定のデータ量毎にシリアライズデータ７０１をセグメント分割し、各セグメントに対して所定のアルゴリズムによってハッシュ値を算出し、各セグメントのハッシュ値をレプリケーションマネージャ５０１に出力する（ステップＳ４７）。
【００４４】
レプリケーションマネージャ５０１のハッシュ処理部５１１は、オブジェクトＯ１からセグメント毎にハッシュ値を受信し（ステップＳ４９）、オブジェクト管理テーブル５１２において当該オブジェクトＯ１と同一グループに属する他のオブジェクトＯ２及びＯ３を特定して、受信したハッシュ値をオブジェクトＯ２及びＯ３に転送する（ステップＳ５１）。
【００４５】
オブジェクトＯ２及びＯ３のハッシュ比較処理部６０２は、レプリケーションマネージャ５０１からセグメント毎のハッシュ値を受信すると（ステップＳ５３）、オブジェクトＯ２及びＯ３が実行されているコンピュータのメインメモリなどの記憶装置（オブジェクトＯ２及びＯ３に割り当てられている領域）に格納し、シリアライズ部６０４に対して処理を指示する。すなわち、シリアライズ部６０４は、少なくともユーザ定義の変数の値などの内部データ値に対してシリアライズ処理を実施してシリアライズデータ７０１を生成し、オブジェクトＯ２及びＯ３が実行されているコンピュータのメインメモリなどの記憶装置（オブジェクトＯ２及びＯ３に割り当てられている領域）に格納する（ステップＳ５５）。さらに、ハッシュ比較処理部６０２は、ハッシュ生成部６０１に対して、処理を指示する。すなわち、例えば所定のデータ量毎にシリアライズデータ７０１をセグメント分割し、各セグメントに対して所定のアルゴリズムでハッシュ値を算出し、要求元のハッシュ比較処理部６０２に出力する（ステップＳ５７）。ステップＳ５５及びＳ５７においては予め実施しておくようにしても良い。
【００４６】
そして、ハッシュ比較処理部６０２は、レプリケーションマネージャ５０１から受信したハッシュ値と、ハッシュ生成部６０１によって算出されたハッシュ値とを、セグメント毎に比較し、シリアライズデータ７０１、すなわちオブジェクトＯ１の状態変化が発生したか判断する（ステップＳ５９）。
【００４７】
ここでオブジェクトＯ１の状態変化が発生していないと判断した場合には、ここで処理を終了する（ステップＳ６１）。一方、いずれかのセグメントについてハッシュ値が一致しない、すなわちオブジェクトＯ１の状態変化が発生している場合には、不一致であるハッシュ値に係るセグメントのＩＤを含む変更セグメントデータ要求を、オブジェクトＯ１に対して送信する（ステップＳ６３）。オブジェクトＯ１のセグメントデータインターフェース部６０３は、同一グループの他のオブジェクトＯ２及びＯ３から、セグメントのＩＤを含む変更セグメントデータ要求を受信する（ステップＳ６５）。処理は端子Ａ及びＢを介して図１３の処理に移行する。
【００４８】
図１３の説明に移行して、オブジェクトＯ１のセグメントデータインターフェース部６０３は、要求に係るセグメントのデータを読み出して、セグメントのＩＤと共に要求元のオブジェクトＯ２及びＯ３に送信する（ステップＳ６７）。オブジェクトＯ２及びＯ３のセグメントデータインターフェース部６０３は、オブジェクトＯ１から、要求に係るセグメントのデータとセグメントＩＤとを受信すると（ステップＳ６９）、当該セグメントのＩＤに対応し且つオブジェクトＯ２及びＯ３が実行されているコンピュータのメインメモリなどの記憶装置に格納されているシリアライズデータの該当部分を、受信したセグメントのデータで置換する（ステップＳ７１）。その後、セグメントデータインターフェース部６０３は、デシリアライズ部６０５に処理を指示する。
【００４９】
そうすると、デシリアライズ部６０５は、シリアライズデータ７０１に対してデシリアライズ処理を実施して、少なくともユーザ定義の変数の値などの内部データ値を復元して、設定する（ステップＳ７３）。
【００５０】
このようにすれば、第１の実施の形態のように、オブジェクトの状態に変更が発生した場合にのみ、内部データの通信を行うので、レプリケーションに必要な通信負荷を下げることができる。なお、ハッシュ値で変更のあるセグメントを特定できるので、さらに通信を行うデータ量を削減できる。
【００５１】
以上本発明の実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、第２の実施の形態では、レプリケーションマネージャ５０１を用いていたが、例えばオブジェクト管理テーブル５１２と同様のテーブルを各々のオブジェクトが管理して、各々オブジェクトが互いにハッシュ値要求を同一グループ他のオブジェクトに定期的に送信するような構成を採用するようにしても良い。
【００５２】
また、レプリケーションマネージャが処理の起点になるような例を示したが、各オブジェクトが自律的にハッシュ値を算出する処理を開始するようにしても良い。
【００５３】
なお、オブジェクトが実行されるコンピュータ３は、図１４に示すように、メモリ２５０１（記憶部）とＣＰＵ２５０３（処理部）とハードディスク・ドライブ（ＨＤＤ）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。ＯＳ及びＷｅｂブラウザを含むアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。必要に応じてＣＰＵ２５０３は、表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、必要な動作を行わせる。また、処理途中のデータについては、メモリ２５０１に格納され、必要があればＨＤＤ２５０５に格納される。このようなコンピュータは、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及び必要なアプリケーション・プログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【００５４】
（付記１）
第１のオブジェクトと、
第２のオブジェクトと、
レプリケーションマネージャと、
をコンピュータに、実現させるための分散オブジェクト・プログラムであって、
前記第１のオブジェクトが、
少なくともユーザ定義の内部データの値をシリアライズする処理を実施することによりシリアライズデータを生成し、当該シリアライズデータを前記第１のオブジェクトが実行されている前記コンピュータの記憶装置のうち前記第１のオブジェクトに割り当てられた第１の領域に格納するシリアライズ機能と、
要求に応じて、前記第１の領域に格納されている前記シリアライズデータに対してハッシュ値を算出して、出力するハッシュ機能と、
要求に応じて、前記シリアライズデータを出力する出力機能と、
を有し、
前記第２のオブジェクトが、
前記シリアライズデータを受信し、前記第２のオブジェクトが実行されているコンピュータの記憶装置のうち前記第２のオブジェクトに割り当てられた第２の領域に格納する受信機能と、
前記第２のオブジェクトが実行されている前記第２の領域の前記シリアライズデータをデシリアライズする処理を実施することにより、前記少なくともユーザ定義の内部データの値を生成し、前記第２のオブジェクトの内部データの値として設定するデシリアライズ機能と、
を有し、
前記レプリケーションマネージャが、
前記第１のオブジェクトに対応して前記第２のオブジェクトと、前記第１のオブジェクトの従前のハッシュ値とを管理し且つ前記レプリケーションマネージャが実行されているコンピュータの記憶装置に格納されている管理テーブルを参照して、前記第１のオブジェクトにハッシュ値を要求して取得し、取得した前記ハッシュ値と、前記管理テーブルに登録されている前記従前のハッシュ値とを比較する比較機能と、
取得した前記ハッシュ値と、前記管理テーブルに登録されている前記従前のハッシュ値とが不一致である場合、前記第１のオブジェクトから、前記シリアライズデータを取得し、前記管理テーブルにおいて前記第１のオブジェクトに対応して登録されている前記第２のオブジェクトに、前記シリアライズデータを送信するデータ転送機能と、
を有する
分散オブジェクト・プログラム。
【００５５】
（付記２）
前記第１のオブジェクトの前記ハッシュ機能が、前記シリアライズデータのセグメント毎にハッシュ値を算出し、
前記管理テーブルが、前記シリアライズデータのセグメント毎に従前のハッシュ値を管理しており、
前記レプリケーションマネージャの前記比較機能が、前記セグメント毎にハッシュ値の比較を行い、
前記レプリケーションマネージャのデータ転送機能が、取得した前記ハッシュ値と、前記管理テーブルに登録されている前記従前のハッシュ値とが不一致である場合、当該不一致とされた前記ハッシュ値に係るセグメントのデータを取得して、前記第２のオブジェクトに送信し、
前記第２のオブジェクトの前記受信機能が、受信した前記セグメントのデータで、前記第２の領域に格納されている前記シリアライズデータの該当部分を置換する
付記１記載の分散オブジェクト・プログラム。
【００５６】
（付記３）
前記第１のオブジェクトの前記シリアライズ機能及び前記第２のオブジェクトの前記デシリアライズ機能の詳細がユーザ定義され、
前記第１のオブジェクトの前記ハッシュ機能、前記出力機能及び前記シリアライズ機能の存在と、前記レプリケーションマネージャと、前記第２のオブジェクトの前記受信機能及び前記デシリアライズ機能の存在とがフレームワークで規定且つ提供される
付記１記載の分散オブジェクト・プログラム。
【００５７】
（付記４）
第１のオブジェクトと、
第２のオブジェクトと、
レプリケーションマネージャと、
をコンピュータに、実現させるための分散オブジェクト・プログラムであって、
前記第１のオブジェクトが、
少なくともユーザ定義の内部データの値をシリアライズする処理を実施することによりシリアライズデータを生成し、当該シリアライズデータを前記第１のオブジェクトが実行されているコンピュータの記憶装置のうち前記第１のオブジェクトに割り当てられた第１の領域に格納するシリアライズ機能と、
要求に応じて、前記第１の領域に格納されている前記シリアライズデータに対してハッシュ値を算出して、出力するハッシュ機能と、
要求に応じて、前記シリアライズデータを出力する出力機能と、
を有し、
前記第２のオブジェクトが、
少なくともユーザ定義の内部データの値をシリアライズする処理を実施することにより第２のシリアライズデータを生成し、当該第２のシリアライズデータを前記第２のオブジェクトが実行されているコンピュータの記憶装置のうち前記第２のオブジェクトに割り当てられた第２の領域に格納するシリアライズ機能と、
前記第２の領域に格納されている前記第２のシリアライズデータに対してハッシュ値を算出するハッシュ機能と、
外部からハッシュ値を受信した場合、前記ハッシュ機能により算出された前記ハッシュ値と比較して、一致しているか判断する比較機能と、
前記外部から受信したハッシュ値と算出された前記ハッシュ値とが不一致である場合に、前記第１のオブジェクトから、前記シリアライズデータを取得し、前記第２の領域に格納する受信機能と、
前記第２の領域に格納されている前記シリアライズデータをデシリアライズする処理を実施することにより、少なくともユーザ定義の内部データの値を生成し、前記第２のオブジェクトの内部データの値として設定するデシリアライズ機能と、
を有し、
前記レプリケーションマネージャが、
前記第１のオブジェクトに対応する前記第２のオブジェクトを管理し且つ前記レプリケーションマネージャが実行されているコンピュータの記憶装置に格納されている管理テーブルを参照して、前記第１のオブジェクトにハッシュ値を要求して取得し、取得した前記ハッシュ値を、前記管理テーブルに前記第１のオブジェクトに対応して登録されている前記第２のオブジェクトに対して送信する機能
を有する
分散オブジェクト・プログラム。
【００５８】
（付記５）
前記第１及び第２のオブジェクトの前記ハッシュ機能が、前記シリアライズデータのセグメント毎にハッシュ値を算出し、
前記第２のオブジェクトの前記比較機能が、前記セグメント毎にハッシュ値の比較を実施し、
前記第２のオブジェクトの前記受信機能が、前記比較機能によって不一致と判断されたハッシュ値に係るセグメントのデータを、前記第１のオブジェクトから取得し、取得した前記セグメントのデータで、前記第２の領域に格納されている前記第２のシリアライズデータの該当部分を置換する
付記４記載の分散オブジェクト・プログラム。
【００５９】
（付記６）
前記第１のオブジェクトの前記シリアライズ機能並びに前記第２のオブジェクトの前記シリアライズ機能及び前記デシリアライズ機能の詳細がユーザ定義され、
前記第１のオブジェクトの前記ハッシュ機能、前記出力機能及び前記シリアライズ機能の存在と、前記レプリケーションマネージャと、前記第２のオブジェクトの前記比較機能、前記受信機能及び前記デシリアライズ機能の存在とがフレームワークで規定且つ提供される
付記４記載の分散オブジェクト・プログラム。
【００６０】
（付記７）
レプリケーションマネージャにより、第１のオブジェクトに対応して第２のオブジェクトと、前記第１のオブジェクトの従前のハッシュ値とを管理し且つ前記レプリケーションマネージャが実行されているコンピュータの記憶装置に格納されている管理テーブルを参照して、前記第１のオブジェクトにハッシュ値を要求するステップと、
前記第１のオブジェクトにより、少なくともユーザ定義の内部データの値をシリアライズする処理を実施することによりシリアライズデータを生成し、当該シリアライズデータを前記第１のオブジェクトが実行されているコンピュータの記憶装置のうち前記第１のオブジェクトに割り当てられた第１の領域に格納するステップと、
前記第１のオブジェクトにより、前記第１の領域に格納されている前記シリアライズデータに対してハッシュ値を算出して、前記レプリケーションマネージャに出力するステップと、
前記レプリケーションマネージャにより、前記第１のオブジェクトから前記ハッシュ値を取得し、取得した前記ハッシュ値と、前記管理テーブルに登録されている前記従前のハッシュ値とを比較するステップと、
取得した前記ハッシュ値と、前記管理テーブルに登録されている前記従前のハッシュ値とが不一致である場合、前記レプリケーションマネージャにより、前記第１のオブジェクトから、前記シリアライズデータを取得し、前記管理テーブルにおいて前記第１のオブジェクトに対応して登録されている前記第２のオブジェクトに、前記シリアライズデータを送信するステップと、
前記第２のオブジェクトにより、前記レプリケーションマネージャから前記シリアライズデータを受信し、前記第２のオブジェクトが実行されているコンピュータの記憶装置のうち前記第２のオブジェクトに割り当てられた第２の領域に格納するステップと、
前記第２のオブジェクトにより、前記第２の領域に格納されている前記シリアライズデータをデシリアライズする処理を実施することにより、前記少なくともユーザ定義の内部データの値を生成し、前記第２のオブジェクトの内部データの値として設定するステップと、
を含み、分散オブジェクト環境に含まれるコンピュータにより実行されるレプリケーション処理方法。
【００６１】
（付記８）
レプリケーションマネージャにより、第１のオブジェクトに対応する第２のオブジェクトを管理し且つ前記レプリケーションマネージャが実行されているコンピュータの記憶装置に格納されている管理テーブルを参照して、前記第１のオブジェクトにハッシュ値を要求するステップと、
前記第１のオブジェクトにより、少なくともユーザ定義の内部データの値をシリアライズする処理を実施することによりシリアライズデータを生成し、当該シリアライズデータを前記第１のオブジェクトが実行されているコンピュータの記憶装置のうち前記第１のオブジェクトに割り当てられた第１の領域に格納するステップと、
前記第１のオブジェクトにより、前記第１の領域に格納されている前記シリアライズデータに対してハッシュ値を算出して、前記レプリケーションマネージャに出力するステップと、
前記レプリケーションマネージャにより、前記第１のオブジェクトから取得した前記ハッシュ値を、前記管理テーブルに前記第１のオブジェクトに対応して登録されている前記第２のオブジェクトに対して送信するステップと、
前記第２のオブジェクトにより、少なくともユーザ定義の内部データの値をシリアライズする処理を実施することにより第２のシリアライズデータを生成し、当該第２のシリアライズデータを前記第２のオブジェクトが実行されているコンピュータの記憶装置のうち前記第２のオブジェクトに割り当てられた第２の領域に格納するステップと、
前記第２のオブジェクトにより、前記第２の領域に格納されている前記第２のシリアライズデータに対してハッシュ値を算出するステップと、
前記レプリケーションマネージャから前記ハッシュ値を受信した場合、前記第２のオブジェクトにより、前記第２のシリアライズデータから算出された前記ハッシュ値と比較して、一致しているか判断するステップと、
前記レプリケーションマネージャから受信したハッシュ値と算出された前記ハッシュ値とが不一致である場合に、前記第２のオブジェクトにより、前記第１のオブジェクトから前記シリアライズデータを取得し、前記第２の領域に格納するステップと、
前記第２のオブジェクトにより、前記第２の領域に格納されている前記シリアライズデータをデシリアライズする処理を実施することにより、少なくともユーザ定義の内部データの値を生成し、前記第２のオブジェクトの内部データの値として設定するステップと、
を含み、分散オブジェクト環境に含まれるコンピュータにより実行されるレプリケーション処理方法。
【図面の簡単な説明】
【００６２】
【図１】本発明の実施の形態に係るレプリケーション処理に係る部分のクラス図である。
【図２】分散オブジェクト環境におけるハードウエア構成例を示す図である。
【図３】本発明の第１の実施の形態におけるオブジェクトとレプリケーションマネージャの関連を表す模式図である。
【図４】本発明の第１の実施の形態におけるオブジェクトの構成例を示す図である。
【図５】本発明の第１の実施の形態におけるレプリケーションマネージャの構成例を示す図である。
【図６】ハッシュ管理テーブルに格納されるデータの一例を示す図である。
【図７】本は発明の第１の実施の形態における処理フローを示す図である。
【図８】本発明の第２の実施の形態におけるオブジェクトとレプリケーションマネージャの関連を表す模式図である。
【図９】本発明の第２の実施の形態におけるオブジェクトの構成例を示す図である。
【図１０】本発明の第２の実施の形態におけるレプリケーションマネージャの構成例を示す図である。
【図１１】オブジェクト管理テーブルに格納されるデータの一例を示す図である。
【図１２】本発明の第２の実施の形態における処理フローを示す図である。
【図１３】本発明の第２の実施の形態における処理フローを示す図である。
【図１４】コンピュータの機能ブロック図である。
【符号の説明】
【００６３】
１０１，５０１  レプリケーションマネージャ
２０１，６０１  ハッシュ生成部
２０３，６０３  セグメントデータインターフェース部
２０５，６０４  シリアライズ部
２０７，６０５  デシリアライズ部
３０１，７０１  シリアライズデータ
６０２  ハッシュ比較処理部
１１１，５１１  ハッシュ処理部
１１２  差分セグメントデータ処理部
１１３  ハッシュ管理テーブル
５１２  オブジェクト管理テーブル
【図１】
2009245089.tif 000003
【図２】
2009245089.tif 000004
【図３】
2009245089.tif 000005
【図４】
2009245089.tif 000006
【図５】
2009245089.tif 000007
【図６】
2009245089.tif 000008
【図７】
2009245089.tif 000009
【図８】
2009245089.tif 000010
【図９】
2009245089.tif 000011
【図１０】
2009245089.tif 000012
【図１１】
2009245089.tif 000013
【図１２】
2009245089.tif 000014
【図１３】
2009245089.tif 000015
【図１４】
2009245089.tif 000016