(57)【特許請求の範囲】
【請求項１】
ネットワークを介して接続された複数のコンピュータの主記憶領域上にそれぞれデータベースを配置し、前記データベースに格納されたデータのそれぞれについて、そのオリジナルデータを、前記複数のコンピュータの内のある特定のコンピュータに格納し、このオリジナルデータを保有するコンピュータをオリジナルサイトとすると共に、前記オリジナルサイトとは異なる他のコンピュータには、前記オリジナルデータと同一のレプリカデータを格納し、このレプリカデータを保有するコンピュータをレプリカサイトとし、前記各コンピュータにおいては、前記データベースにアクセスする処理をトランザクションとして実行する分散データ管理システムにおいて、
前記オリジナルサイトとレプリカサイトを構成する各コンピュータにはそれぞれ、
前記トランザクションの実行依頼を受け付けるトランザクション受付部と、
トランザクションの実行を制御するトランザクション実行制御部と、
トランザクションを実行するトランザクション実行部と、
オリジナルサイトから送られた更新データを自サイトのレプリカデータに反映させるレプリケーション処理部と、
オリジナルデータあるいはレプリカデータを格納するデータ格納部と、トランザクション名、そのトランザクションの処理対象となるデータ名、そのデータのオリジナルサイト名、そのトランザクションの属性、そのトランザクションに対応するトランザクション関数名を対応づけて示したトランザクション登録表と、
データ受信部及びデータ送信部を備え、
前記データベースに格納された各データの更新処理は、前記オリジナルサイトのトランザクション実行部でのみ実行し、前記レプリカサイトにおいては、前記オリジナルサイトで実行された更新結果を前記データ受信部で受信し、前記レプリケーション処理部によって自己のレプリカデータに反映し、
前記各サイトにおけるアプリケーションの実行時には、そのサイトに設けられたトランザクション受付部において受け付けられたアプリケーションの依頼に基づき、トランザクション実行制御部がトランザクション登録表を検索して、自サイトがオリジナルサイトであるか否かを判定すると共に、トランザクション登録表を検索して実行に必要なトランザクション関数を決定し、このトランザクション実行制御部の指示に従い、トランザクション実行部においてトランザクション関数の呼び出しを行うことを特徴とする分散データ管理システム。
【請求項２】
時々刻々と変化するデータのスナップショットを出力するスナップショット出力部と、
前記スナップショットをネットワーク経由で取得する間に発生したデータの更新情報を保存するバッファ部とをさらに備え、
前記データ送信部より、他のサイトへスナップショットの送信要求を出し、他のサイトからスナップショットを取得する間に発生したデータの更新情報を前記バッファ部に保存し、前記スナップショットの取得と同時に、バッファ部に保存した更新情報を自己のデータに反映することを特徴とする請求項１に記載の分散データ管理システム。
【請求項３】
前記トランザクション受付部は、トランザクションの実行依頼を受け付ける毎に、受け付けたトランザクションをすべてのサイトを通じて一意に識別することができる「受付ＩＤ」を発行することを特徴とする請求項１又は請求項２に記載の分散データ管理システム。
【請求項４】
前記トランザクション実行部は、データの更新処理がなされるたびに「更新シリアル番号」を発行することを特徴とする請求項１乃至請求項３のいずれか一に記載の分散データ管理システム。
【請求項５】
前記オリジナルサイトが、ネットワーク上のいずれのサイトであるかを識別するための手段が設けられていることを特徴とする請求項１乃至請求項４のいずれか一に記載の分散データ管理システム。
【請求項６】
自サイトがオリジナルサイトに対してデータ更新処理の実行を依頼したサイトであるか否かを識別するための手段が設けられていることを特徴とする請求項１乃至請求項５のいずれか一に記載の分散データ管理システム。
【請求項７】
ネットワークを介して接続された複数のコンピュータの主記憶領域上にそれぞれデータベースを配置し、前記データベースに格納されたデータのそれぞれについて、そのオリジナルデータを、前記複数のコンピュータの内のある特定のコンピュータに格納し、このオリジナルデータを保有するコンピュータをオリジナルサイトとすると共に、前記オリジナルサイトとは異なる他のコンピュータには、前記オリジナルデータと同一のレプリカデータを格納し、このレプリカデータを保有するコンピュータをレプリカサイトとし、前記各コンピュータにおいては、前記データベースにアクセスする処理をトランザクションとして実行する分散データ管理方法において、
前記オリジナルサイトとレプリカサイトを構成する各コンピュータにはそれぞれ、前記トランザクションの実行依頼を受け付けるトランザクション受付部と、トランザクションの実行を制御するトランザクション実行制御部と、トランザクションを実行するトランザクション実行部と、オリジナルサイトから送られた更新データを自サイトのレプリカデータに反映させるレプリケーション処理部と、オリジナルデータあるいはレプリカデータを格納するデータ格納部と、トランザクション名、そのトランザクションの処理対象となるデータ名、そのデータのオリジナルサイト名、そのトランザクションの属性、そのトランザクションに対応するトランザクション関数名を対応づけて示したトランザクション登録表とを設け、
前記データベースに格納された各データの更新処理は、前記オリジナルサイトのトランザクション実行部でのみ実行し、前記レプリカサイトにおいては、前記オリジナルサイトで実行された更新結果を前記データ受信部で受信し、前記レプリケーション処理部によって自己のレプリカデータに反映することにより、データの同一性を保持し、
前記各サイトにおけるアプリケーションの実行時には、そのサイトに設けられたトランザクション受付部において受け付けられたアプリケーションの依頼に基づき、トランザクション実行制御部がトランザクション登録表を検索して、自サイトがオリジナルサイトであるか否かを判定すると共に、トランザクション登録表を検索して実行に必要なトランザクション関数を決定し、このトランザクション実行制御部の指示に従い、トランザクション実行部においてトランザクション関数の呼び出しを行うことを特徴とする分散データ管理方法。
【請求項８】
自サイトのデータベースに最新のオリジナルデータを取得する場合に、ネットワーク上の他のサイトへスナップショットの送信要求を出し、他のサイトからスナップショットを受信すると共に、その受信中に発生したデータの更新情報を保存し、前記スナップショットの取得と同時に、保存した更新情報を自己のデータに反映することにより、時々刻々と変化するデータにキャッチアップすることを特徴とする請求項７に記載の分散データ管理方法。
【請求項９】
前記トランザクションがデータを参照するものである場合には、自サイトがオリジナルサイトであるか、レプリカサイトであるかにかかわらず、自己の保有するデータに対して参照処理を行うことを特徴とする請求項７又は請求項８に記載の分散データ管理方法。
【請求項１０】
前記トランザクションが処理対象とするデータのオリジナルが、そのトランザクションの実行依頼を受けたコンピュータに保有され、そのトランザクションによりオリジナルデータが更新された場合に、その更新結果を他のすべてのレプリカサイトに送信することを特徴とする請求項７又は請求項８に記載の分散データ管理方法。
【請求項１１】
前記トランザクションが処理対象とするデータのオリジナルサイトが、そのトランザクションの実行依頼を受けたコンピュータ以外のサイトであり、そのトランザクションによる処理がデータの更新である場合に、そのトランザクションの実行依頼を受けたコンピュータ（レプリカサイト）は、データの更新処理をオリジナルサイトに依頼し、オリジナルサイトで更新処理を実行した後、オリジナルサイトから更新結果を受信し、その更新結果を自己が保有するレプリカデータに反映すると同時に、そのトランザクションの実行依頼元に実行完了を通知することを特徴とする請求項７又は請求項８に記載の分散データ管理方法。
【請求項１２】
前記トランザクションが処理対象とするデータのオリジナルサイトが、そのトランザクションの実行依頼を受けたコンピュータ以外のサイトであり、そのトランザクションによる処理がデータの更新である場合に、データの更新依頼を受けたオリジナルサイトにおいては、更新処理を実行した後、その更新結果を他のすべてのレプリカサイトに送信することを特徴とする請求項７又は請求項８に記載の分散データ管理方法。
【請求項１３】
前記トランザクションが処理対象とするデータのオリジナルサイトが、そのトランザクションの実行依頼を受けたコンピュータ以外のサイトであり、そのトランザクションによる処理がデータの更新である場合に、自サイトがそのトランザクションの実行依頼を受けたコンピュータでも、オリジナルサイトでもない時は、オリジナルサイトから更新結果を受信し、その更新結果を自己が保有するレプリカデータに反映することを特徴とする請求項７又は請求項８に記載の分散データ管理方法。
【請求項１４】
ネットワークを介して接続された複数のコンピュータの主記憶領域上にそれぞれデータベースを配置し、前記データベースに格納されたデータのそれぞれについて、そのオリジナルデータを、前記複数のコンピュータの内のある特定のコンピュータに格納し、このオリジナルデータを保有するコンピュータをオリジナルサイトとすると共に、前記オリジナルサイトとは異なる他のコンピュータには、前記オリジナルデータと同一のレプリカデータを格納し、このレプリカデータを保有するコンピュータをレプリカサイトとし、前記オリジナルサイトで実行された更新結果を、ネットワーク上のすべてのレプリカデータに反映することにより、データの同一性を保持することを可能とした分散データ管理プログラムであって、
前記オリジナルサイトとレプリカサイトを構成する各コンピュータにはそれぞれ、前記トランザクションの実行依頼を受け付けるトランザクション受付部と、トランザクションの実行を制御するトランザクション実行制御部と、トランザクションを実行するトランザクション実行部と、オリジナルサイトから送られた更新データを自サイトのレプリカデータに反映させるレプリケーション処理部と、オリジナルデータあるいはレプリカデータを格納するデータ格納部と、トランザクション名、そのトランザクションの処理対象となるデータ名、そのデータのオリジナルサイト名、そのトランザクションの属性、そのトランザクションに対応するトランザクション関数名を対応づけて示したトランザクション登録表とを設け、
前記データベースに格納された各データの更新処理は、前記オリジナルサイトのトランザクション実行部でのみ実行し、前記レプリカサイトにおいては、前記オリジナルサイトで実行された更新結果を前記データ受信部で受信し、前記レプリケーション処理部によって自己のレプリカデータに反映することにより、データの同一性を保持するステップと、  前記各サイトにおけるアプリケーションの実行時には、そのサイトに設けられたトランザクション受付部において受け付けられたアプリケーションの依頼に基づき、トランザクション実行制御部がトランザクション登録表を検索して、自サイトがオリジナルサイトであるか否かを判定すると共に、トランザクション登録表を検索して実行に必要なトランザクション関数を決定し、このトランザクション実行制御部の指示に従い、トランザクション実行部においてトランザクション関数の呼び出しを行うステップと、
あるデータのオリジナルサイトがネットワーク上のいずれのサイトであるかと、そのデータに対する処理が「参照」か「更新」のいずれであるかを検索するステップと、前記検索の結果、その処理が「更新」であり、且つ、自サイトがそのデータのオリジナルサイトである場合には、そのトランザクションを実行するステップと、その更新結果を他のレプリカサイトに送信するステップを有することを特徴とする分散データ管理プログラム。
【請求項１５】
ネットワークを介して接続された複数のコンピュータの主記憶領域上にそれぞれデータベースを配置し、前記データベースに格納されたデータのそれぞれについて、そのオリジナルデータを、前記複数のコンピュータの内のある特定のコンピュータに格納し、このオリジナルデータを保有するコンピュータをオリジナルサイトとすると共に、前記オリジナルサイトとは異なる他のコンピュータには、前記オリジナルデータと同一のレプリカデータを格納し、このレプリカデータを保有するコンピュータをレプリカサイトとし、前記オリジナルサイトで実行された更新結果を、ネットワーク上のすべてのレプリカデータに反映することにより、データの同一性を保持することを可能とした分散データ管理プログラムであって、
前記オリジナルサイトとレプリカサイトを構成する各コンピュータにはそれぞれ、前記トランザクションの実行依頼を受け付けるトランザクション受付部と、トランザクションの実行を制御するトランザクション実行制御部と、トランザクションを実行するトランザクション実行部と、オリジナルサイトから送られた更新データを自サイトのレプリカデータに反映させるレプリケーション処理部と、オリジナルデータあるいはレプリカデータを格納するデータ格納部と、トランザクション名、そのトランザクションの処理対象となるデータ名、そのデータのオリジナルサイト名、そのトランザクションの属性、そのトランザクションに対応するトランザクション関数名を対応づけて示したトランザクション登録表とを設け、
前記データベースに格納された各データの更新処理は、前記オリジナルサイトのトランザクション実行部でのみ実行し、前記レプリカサイトにおいては、前記オリジナルサイトで実行された更新結果を前記データ受信部で受信し、前記レプリケーション処理部によって自己のレプリカデータに反映することにより、データの同一性を保持するステップと、  前記各サイトにおけるアプリケーションの実行時には、そのサイトに設けられたトランザクション受付部において受け付けられたアプリケーションの依頼に基づき、トランザクション実行制御部がトランザクション登録表を検索して、自サイトがオリジナルサイトであるか否かを判定すると共に、トランザクション登録表を検索して実行に必要なトランザクション関数を決定し、このトランザクション実行制御部の指示に従い、トランザクション実行部においてトランザクション関数の呼び出しを行うステップと、
あるデータのオリジナルサイトがネットワーク上のいずれのサイトであるかと、そのデータに対する処理が「参照」か「更新」のいずれであるかを検索するステップと、前記検索の結果、その処理が「更新」であり、且つ、自サイトがそのデータのレプリカサイトである場合には、その処理の実行をオリジナルサイトに転送するステップと、オリジナルサイトにおける更新結果を受信して、自己のレプリカデータに反映するステップを有することを特徴とする分散データ管理プログラム。
【請求項１６】
自サイトのデータベースに最新のデータを取得する場合に、ネットワーク上の他のサイトへスナップショットの送信要求を出すステップと、
他のサイトからスナップショットを受信するステップと、
その受信中に発生したデータの更新情報を保存するステップと、
前記スナップショットの取得と同時に、保存した更新情報を自己のデータに反映するステップをさらに有することを特徴とする請求項１４又は請求項１５に記載の分散データ管理プログラム。
【請求項１７】
前記データベースに格納されるデータを、ネットワーク上の複数のコンピュータで同一性を保持すべきデータと、各コンピュータに固有のデータとに区別し、
前記同一性を保持すべきデータについては、その更新処理は、前記オリジナルサイトのトランザクション実行部でのみ実行し、前記レプリカサイトにおいては、前記オリジナルサイトで実行された更新結果を前記データ受信部で受信し、前記レプリケーション処理部によって自己のレプリカデータに反映し、
一方、各コンピュータに固有なデータについては、各コンピュータ毎にデータの更新を実行し、他のコンピュータにその更新結果を反映させないことを特徴とする請求項１に記載の分散データ管理システム。
【請求項１８】
前記データベースに格納されるデータを、ネットワーク上の複数のコンピュータで同一性を保持すべきデータと、各コンピュータに固有のデータとに区別し、
前記同一性を保持すべきデータについては、その更新処理は、前記オリジナルサイトでのみ実行可能とし、
前記レプリカサイトにおいては、前記オリジナルサイトで実行された更新結果を自己が保有するレプリカデータに反映することにより、データの同一性を保持し、
一方、各コンピュータに固有なデータについては、各コンピュータ毎にデータの更新を実行し、他のコンピュータにその更新結果を反映させないことを特徴とする請求項７に記載の分散データ管理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ネットワークに接続された複数のマシン間における共有データを、適切且つ効率良く管理することができる分散データ管理システム及び分散データ管理方法に関するものである。
【０００２】
【従来の技術】
ネットワークに分散したマシン間における共有データをリアルタイムに監視・制御するシステムでは、大量のデータを高速に処理（検索・更新）する必要があるため、それらのデータへのアクセス手段を提供するデータ管理手段(データベース、ファイルシステム等)の性能がシステムの性能を決定する。このようなデータ管理性能の向上を図るためには、通常ハードディスク等の外部記憶装置に格納されているデータのすべてを主記憶上に配置して管理することが考えられる。特に、昨今の主記憶容量の増加により、現在のハードウェア環境でも全データを主記憶上に常駐させることは可能となってきている。
【０００３】
【発明が解決しようとする課題】
しかしながら、従来のディスクを前提にしたデータ管理を単に主記憶でキャッシングするだけでは、リアルタイムアプリケーションが必要とする性能を達成することはできない。その理由としては、（１）アプリケーションとデータ管理手段との間で大量のデータ転送操作が必須となる、（２）ディスクを前提として設計されたアルゴリズムを各マシンの主記憶上で実行してもそれほど性能が向上しないという２点が挙げられる。さらに、ディスクを前提として設計されたアルゴリズムでは、データ管理手段が提供できる検索機能が限られているため、多少高速化されてもアプリケーションの開発負荷は軽減されない。
【０００４】
また、従来のデータ管理システムにおいては、ネットワークに分散したマシン間で一貫して等価な共有データを維持することが困難であったため、クライアント／サーバ方式の様な構成を採用して、オリジナルデータを一つのサーバに集中管理させていた。
しかし、このように一つのサーバ上にデータを集中させた場合には、多数のマシンからの処理要求に伴うサーバの負担も大きく、処理効率も悪かった。
【０００５】
また、従来のデータ管理システムにおいては、トランザクション処理が単にデータの参照を目的とするだけで、データの更新を伴わない場合であっても、すべてのマシンがオリジナルデータを集中管理しているサーバにアクセスしていたため、ネットワークを介する分だけアクセス速度が低下すると共に、ネットワークのトラフィックも混雑する等、トランザクション処理の効率が悪かった。
【０００６】
さらに、従来のデータ管理システムにおいては、各マシンで実行されるアプリケーションプログラムは、オリジナルデータがどのサーバにあるかをチェックする必要があったため、必要とするデータに直ちにアクセスすることができないといった欠点があった。
【０００７】
また、従来のデータ管理システムにおいては、あるマシンのアプリケーションプログラムからあるデータに対して１つの更新処理が実行されている間は、同じデータに対しては他のマシンのアプリケーションプログラムが要求する処理を中断しなければならなかったため、高いトランザクション処理のスループットを実現することができなかった。
【０００８】
本発明は、上記のような従来技術の問題点を解決するために提案されたものであり、その目的は、ネットワークで結合された複数のマシン上で協調動作することにより、各マシンの主記憶上に共有データを常駐させて一貫して維持・更新することができる分散データ管理システム及び分散データ管理方法を提供することにある。
【０００９】
【課題を解決するための手段】
上記の目的を達成するため、請求項１記載の発明は、ネットワークを介して接続された複数のコンピュータの主記憶領域上にそれぞれデータベースを配置し、前記データベースに格納されたデータのそれぞれについて、そのオリジナルデータを、前記複数のコンピュータの内のある特定のコンピュータに格納し、このオリジナルデータを保有するコンピュータをオリジナルサイトとすると共に、前記オリジナルサイトとは異なる他のコンピュータには、前記オリジナルデータと同一のレプリカデータを格納し、このレプリカデータを保有するコンピュータをレプリカサイトとし、前記各コンピュータにおいては、前記データベースにアクセスする処理をトランザクションとして実行する分散データ管理システムにおいて、次のような構成を採用したことを特徴とする。
（１）前記オリジナルサイトとレプリカサイトを構成する各コンピュータにはそれぞれ、前記トランザクションの実行依頼を受け付けるトランザクション受付部と、トランザクションの実行を制御するトランザクション実行制御部と、トランザクションを実行するトランザクション実行部と、オリジナルサイトから送られた更新データを自サイトのレプリカデータに反映させるレプリケーション処理部と、オリジナルデータあるいはレプリカデータを格納するデータ格納部と、トランザクション名、そのトランザクションの処理対象となるデータ名、そのデータのオリジナルサイト名、そのトランザクションの属性、そのトランザクションに対応するトランザクション関数名を対応づけて示したトランザクション登録表と、データ受信部及びデータ送信部を備える。
（２）前記データベースに格納された各データの更新処理は、前記オリジナルサイトのトランザクション実行部でのみ実行し、前記レプリカサイトにおいては、前記オリジナルサイトで実行された更新結果を前記データ受信部で受信し、前記レプリケーション処理部によって自己のレプリカデータに反映する。
（３）前記各サイトにおけるアプリケーションの実行時には、そのサイトに設けられたトランザクション受付部において受け付けられたアプリケーションの依頼に基づき、トランザクション実行制御部がトランザクション登録表を検索して、自サイトがオリジナルサイトであるか否かを判定すると共に、トランザクション登録表を検索して実行に必要なトランザクション関数を決定し、このトランザクション実行制御部の指示に従い、トランザクション実行部においてトランザクション関数の呼び出しを行う。
【００１０】
請求項７の発明は、前記請求項１の発明を方法の観点から捉えたものであって、前記オリジナルサイトとレプリカサイトを構成する各コンピュータにはそれぞれ、前記トランザクションの実行依頼を受け付けるトランザクション受付部と、トランザクションの実行を制御するトランザクション実行制御部と、トランザクションを実行するトランザクション実行部と、オリジナルサイトから送られた更新データを自サイトのレプリカデータに反映させるレプリケーション処理部と、オリジナルデータあるいはレプリカデータを格納するデータ格納部と、トランザクション名、そのトランザクションの処理対象となるデータ名、そのデータのオリジナルサイト名、そのトランザクションの属性、そのトランザクションに対応するトランザクション関数名を対応づけて示したトランザクション登録表とを設け、前記データベースに格納された各データの更新処理は、前記オリジナルサイトのトランザクション実行部でのみ実行し、前記レプリカサイトにおいては、前記オリジナルサイトで実行された更新結果を前記データ受信部で受信し、前記レプリケーション処理部によって自己のレプリカデータに反映することにより、データの同一性を保持し、前記各サイトにおけるアプリケーションの実行時には、そのサイトに設けられたトランザクション受付部において受け付けられたアプリケーションの依頼に基づき、トランザクション実行制御部がトランザクション登録表を検索して、自サイトがオリジナルサイトであるか否かを判定すると共に、トランザクション登録表を検索して実行に必要なトランザクション関数を決定し、このトランザクション実行制御部の指示に従い、トランザクション実行部においてトランザクション関数の呼び出しを行うことを特徴とする。
【００１１】
このような構成を有する請求項１、請求項７の発明によれば、ネットワーク上の複数のコンピュータに配置されたデータベースに格納された各データの更新処理を、ネットワーク上で唯一のオリジナルサイトでのみ実行し、他のレプリカサイトにおいては、オリジナルサイトで実行された更新結果を受信して、自己が保有するレプリカデータに反映することにより、ネットワーク上の複数のコンピュータが利用するデータの同一性を保持することができる。
【００１２】
請求項２の発明は、請求項１に記載の分散データ管理システムにおいて、時々刻々と変化するデータのスナップショットを出力するスナップショット出力部と、前記スナップショットをネットワーク経由で取得する間に発生したデータの更新情報を保存するバッファ部とをさらに備え、
前記データ送信部より、他のサイトへスナップショットの送信要求を出し、他のサイトからスナップショットを取得する間に発生したデータの更新情報を前記バッファ部に保存し、前記スナップショットの取得と同時に、バッファ部に保存した更新情報を自己のデータに反映することを特徴とする。
【００１３】
請求項８の発明は、請求項２の発明を方法の観点から捉えたものであって、請求項７に記載の分散データ管理方法において、自サイトのデータベースに最新のオリジナルデータを取得する場合に、ネットワーク上の他のサイトへスナップショットの送信要求を出し、他のサイトからスナップショットを受信すると共に、その受信中に発生したデータの更新情報を保存し、前記スナップショットの取得と同時に、保存した更新情報を自己のデータに反映することにより、時々刻々と変化するデータにキャッチアップすることを特徴とする。
【００１４】
このような構成を有する請求項２、請求項８の発明によれば、システムの起動時等に、自サイトのデータベースに最新のオリジナルデータを取得する場合に、最新のデータをもつマシンにリトリーブ要求を出して、ある時点における最新のデータを受信すると共に、その受信中に発生したデータの更新情報も受信・保存し、これら双方を自己のデータに反映することにより、最新のデータを取得することができる。
【００１５】
請求項３の発明は、請求項１又は請求項２に記載の分散データ管理システムにおいて、前記トランザクション受付部は、トランザクションの実行依頼を受け付ける毎に、受け付けたトランザクションをすべてのサイトを通じて一意に識別することができる「受付ＩＤ」を発行することを特徴とする。
このような構成を有する請求項３の発明によれば、「受付ＩＤ」により、例えば、「そのトランザクションは、どのサイトで、何番目に受け付けたトランザクションであるか」を一意に識別することができるので、ネットワークを介して実行されるレプリケーションとトランザクションとを正確に照合することができる。
【００１６】
請求項４の発明は、請求項１乃至請求項３のいずれか一に記載の分散データ管理システムにおいて、前記トランザクション実行部は、データの更新処理がなされるたびに「更新シリアル番号」を発行することを特徴とする。
このような構成を有する請求項４の発明によれば、オリジナルサイトでデータの更新処理がなされるたびにシリアルに発行される「更新シリアル番号」によって、レプリカサイトは、この番号順にレプリケーションを処理することで、そのデータ内容をオリジナルデータと同一のものとすることができる。
【００１７】
請求項５の発明は、請求項１乃至請求項４のいずれか一に記載の分散データ管理システムにおいて、前記オリジナルサイトが、ネットワーク上のいずれのサイトであるかを識別するための手段が設けられていることを特徴とする。
このような構成を有する請求項５の発明によれば、ネットワーク上の各サイトにおいて、自サイトがデータの更新処理を実行し得るオリジナルサイトであるか否かを容易に判断することができる。
【００１８】
請求項６の発明は、請求項１乃至請求項５のいずれか一に記載の分散データ管理システムにおいて、自サイトがオリジナルサイトに対してデータ更新処理の実行を依頼したサイトであるか否かを識別するための手段が設けられていることを特徴とする。
このような構成を有する請求項６の発明によれば、自サイトがオリジナルサイトに対してデータ更新処理の実行を依頼したサイトであるか否かを判断でき、実行依頼元である場合には、レプリケーションされた更新データを自己のレプリカデータに反映すると共に、その実行結果をデータ更新を依頼したアプリケーションに通知する。また、実行依頼元でない場合には、レプリケーションされた更新データを自己のレプリカデータに反映する処理を行うだけでよい。
【００１９】
請求項９の発明は、請求項７又は請求項８に記載の分散データ管理方法において、前記トランザクションがデータを参照するものである場合には、自サイトがオリジナルサイトであるか、レプリカサイトであるかにかかわらず、自己の保有するデータに対して参照処理を行うことを特徴とする。
このような構成を有する請求項９の発明によれば、データ参照処理を高速化することができると共に、負荷分散を実現することができる。
【００２０】
請求項１０の発明は、請求項７又は請求項８に記載の分散データ管理方法において、前記トランザクションが処理対象とするデータのオリジナルが、そのトランザクションの実行依頼を受けたコンピュータに保有され、そのトランザクションによりオリジナルデータが更新された場合に、その更新結果を他のすべてのレプリカサイトに送信することを特徴とする。
このような構成を有する請求項１０の発明によれば、トランザクションの実行依頼を受けたサイトがオリジナルサイトであるので、自らデータ更新処理を実行し、その更新結果を他のすべてのレプリカサイトに送信することにより、ネットワーク上の複数のコンピュータが利用するデータの同一性を保持することができる。
【００２１】
請求項１１の発明は、請求項７又は請求項８に記載の分散データ管理方法において、前記トランザクションが処理対象とするデータのオリジナルサイトが、そのトランザクションの実行依頼を受けたコンピュータ以外のサイトであり、そのトランザクションによる処理がデータの更新である場合に、そのトランザクションの実行依頼を受けたコンピュータ（レプリカサイト）は、データの更新処理をオリジナルサイトに依頼し、オリジナルサイトで更新処理を実行した後、オリジナルサイトから更新結果を受信し、その更新結果を自己が保有するレプリカデータに反映すると同時に、そのトランザクションの実行依頼元に実行完了を通知することを特徴とする。
【００２２】
このような構成を有する請求項１１の発明によれば、トランザクションの実行依頼を受けたサイトがレプリカサイトであるので、オリジナルサイトにデータ更新処理の実行を依頼し、オリジナルサイトから更新結果を受信して、その更新結果を自己が保有するレプリカデータに反映することにより、ネットワーク上の複数のコンピュータが利用するデータの同一性を保持することができる。
【００２３】
請求項１２の発明は、請求項７又は請求項８に記載の分散データ管理方法において、前記トランザクションが処理対象とするデータのオリジナルサイトが、そのトランザクションの実行依頼を受けたコンピュータ以外のサイトであり、そのトランザクションによる処理がデータの更新である場合に、データの更新依頼を受けたオリジナルサイトにおいては、更新処理を実行した後、その更新結果を他のすべてのレプリカサイトに送信することを特徴とする。
このような構成を有する請求項１２の発明によれば、トランザクションの実行依頼を受けたサイトがレプリカサイトであるため、そのレプリカサイトからデータの更新依頼を受けたオリジナルサイトでは、更新処理を実行した後、その更新結果を他のすべてのレプリカサイトに送信することにより、ネットワーク上の複数のコンピュータが利用するデータの同一性を保持することができる。
【００２４】
請求項１３の発明は、請求項７又は請求項８に記載の分散データ管理方法において、前記トランザクションが処理対象とするデータのオリジナルサイトが、そのトランザクションの実行依頼を受けたコンピュータ以外のサイトであり、そのトランザクションによる処理がデータの更新である場合に、自サイトがそのトランザクションの実行依頼を受けたコンピュータでも、オリジナルサイトでもない時は、オリジナルサイトから更新結果を受信し、その更新結果を自己が保有するレプリカデータに反映することを特徴とする。
【００２５】
このような構成を有する請求項１３の発明によれば、自サイトがトランザクションの実行依頼元サイトでも、オリジナルサイトでもない時は、オリジナルサイトから更新結果を受信し、その更新結果を自己が保有するレプリカデータに反映することにより、ネットワーク上の複数のコンピュータが利用するデータの同一性を保持することができる。
【００２６】
請求項１４の発明は、請求項１に記載の発明をコンピュータプログラムの観点でとらえたものであって、特に、あるデータのオリジナルサイトがネットワーク上のいずれのサイトであるかと、そのデータに対する処理が「参照」か「更新」のいずれであるかを検索するステップと、前記検索の結果、その処理が「更新」であり、且つ、自サイトがそのデータのオリジナルサイトである場合には、そのトランザクションを実行するステップと、その更新結果を他のレプリカサイトに送信するステップを有することを特徴とする。
【００２７】
請求項１５の発明は、前記請求項１４の発明と同様に、請求項１の発明をコンピュータプログラムの観点でとらえたものであって、特に、あるデータのオリジナルサイトがネットワーク上のいずれのサイトであるかと、そのデータに対する処理が「参照」か「更新」のいずれであるかを検索するステップと、前記検索の結果、その処理が「更新」であり、且つ、自サイトがそのデータのレプリカサイトである場合には、その処理の実行をオリジナルサイトに転送するステップと、オリジナルサイトにおける更新結果を受信して、自己のレプリカデータに反映するステップを有することを特徴とする。
【００２８】
このような構成を有する請求項１４及び請求項１５の発明によれば、ネットワーク上の複数のコンピュータに配置されたデータベースに格納された各データの更新処理を、ネットワーク上で唯一のオリジナルサイトでのみ実行し、他のレプリカサイトにおいては、オリジナルサイトで実行された更新結果を受信して、自己が保有するレプリカデータに反映することにより、ネットワーク上の複数のコンピュータが利用するデータの同一性を保持することができる。
【００２９】
請求項１６の発明は、請求項８に記載の発明をコンピュータプログラムの観点で捉えたものであって、請求項１４又は請求項１５に記載の分散データ管理プログラムにおいて、自サイトのデータベースに最新のデータを取得する場合に、ネットワーク上の他のサイトへスナップショットの送信要求を出すステップと、他のサイトからスナップショットを受信するステップと、その受信中に発生したデータの更新情報を保存するステップと、前記スナップショットの取得と同時に、保存した更新情報を自己のデータに反映するステップをさらに有することを特徴とする。
【００３０】
このような構成を有する請求項１６の発明によれば、システムの起動時等に、自サイトのデータベースに最新のデータを取得する場合に、最新のデータをもつマシンにリトリーブ要求を出して、ある時点における最新のデータを受信すると共に、その受信中に発生したデータの更新情報も受信・保存し、これら双方を自己のデータに反映することにより、最新のデータを取得することができる。
【００３１】
請求項１７の発明は、請求項１に記載の分散データ管理システムにおいて、前記データベースに格納されるデータを、ネットワーク上の複数のコンピュータで同一性を保持すべきデータと、各コンピュータに固有のデータとに区別し、前記同一性を保持すべきデータについては、その更新処理は、前記オリジナルサイトのトランザクション実行部でのみ実行し、前記レプリカサイトにおいては、前記オリジナルサイトで実行された更新結果を前記データ受信部で受信し、前記レプリケーション処理部によって自己のレプリカデータに反映し、一方、各コンピュータに固有なデータについては、各コンピュータ毎にデータの更新を実行し、他のコンピュータにその更新結果を反映させないことを特徴とする。
【００３２】
請求項１８の発明は、請求項１７の発明を方法の観点で捉えたものであって、請求項７に記載の分散データ管理方法において、前記データベースに格納されるデータを、ネットワーク上の複数のコンピュータで同一性を保持すべきデータと、各コンピュータに固有のデータとに区別し、前記同一性を保持すべきデータについては、その更新処理は、前記オリジナルサイトでのみ実行可能とし、前記レプリカサイトにおいては、前記オリジナルサイトで実行された更新結果を自己が保有するレプリカデータに反映することにより、データの同一性を保持し、一方、各コンピュータに固有なデータについては、各コンピュータ毎にデータの更新を実行し、他のコンピュータにその更新結果を反映させないことを特徴とする。
【００３３】
このような構成を有する請求項１７、請求項１８の発明によれば、データベースの特定の部分に関しては、そのデータが更新されてもレプリケーションデータを生成・伝達しないとすることによって、同一トランザクションで、システム全体で同一であるべきデータとサイト毎に扱いが異なるデータを同時に更新することができる。また、すべてのデータにレプリケーションを義務づけた場合に生じる無駄なレプリケーションを回避することができる。
【００３４】
【発明の実施の形態】
［１．分散データ管理システムの全体像］
本発明は、ネットワークで接続された複数のマシンに備えられたデータベースを、適切且つ効率良く管理するための分散データ管理システムに関するものである。
本発明の詳細については後述するが、ここでは本発明の分散データ管理システム（以下、本システムという）について概説する。すなわち、本システムは、データベース（レキシコンセット）とトランザクションを扱うものであって、アプリケーション（＝ユーザ）からデータベースの内容の参照・検索・更新の一群の操作依頼をトランザクションとして受け付け、そのトランザクションを適切に実行し、必要（要求）に応じて実行完了通知および実行結果をアプリケーションに通知するものである。
【００３５】
図１は、本発明に係る分散データ管理システムの構成を示す図である。すなわち、本システムは、図１に示すように、複数のコンピュータＡ，Ｂ，Ｃ……（各ホストと呼ぶ）を通信ネットワークで接続することによって構成されている。また、各ホストＡ，Ｂ，Ｃの主記憶領域には、それぞれデータベース１ａ、１ｂ、１ｃとこのデータベースにアクセスするためのトランザクション関数２ａ、２ｂ、２ｃが配置されている。
【００３６】
また、各ホストでは１または複数個のアプリケーションが実行されるが、本システムが複数のホストから構成される場合、異なるホストでは異なるアプリケーションが実行されることが多い。すなわち、アプリケーションＸ，Ｙ，Ｚは本システムの外部にあって、各ホストごとにそのデータベースにアクセスして必要な処理を行う。この場合、各アプリケーションＸ，Ｙ，Ｚは、各ホストに設けられた処理部３ａ、３ｂ、３ｃを介して、本システムに予め登録されているトランザクション関数２ａ、２ｂ、２ｃに参照・更新などの処理を依頼し、その結果を受けてデータベースへのアクセス以外にプログラムの実行に必要となる処理を行う。通常、アプリケーションでは画面への表示や印刷などのフロントエンド処理を行う。
【００３７】
（データベース）
また、本システムのデータベース１ａ、１ｂ、１ｃは、１つ以上の部分（レキシコン）から構成されている。このレキシコンは、レキシコンセットのデータの部分に選択的にアクセスしたり、属性を付与するための単位であって、名称（レキシコン名）等でユニークに識別される。本システムの実行環境においては、図２に示すように、ユニスペースが複数のレキシコンセットを含むことができるので、レキシコンセットもまた名称（レキシコンセット名）等で識別する。さらに、同一の物理的マシン上に共通のネットワークを使用して複数のユニスペース、すなわち異なるレキシコンセットの組を管理する複数のシステムとして本システムを実施することもあり得るので、ユニスペースもまた名称（ユニスペース名）等で区別する。
【００３８】
そして、各ホストのデータベースに格納されているレキシコンセットは、いずれかのホスト上にそのオリジナルデータが保有され、他のホストにはそのコピーであるレプリカデータが保有されている。例えば、図１においては、ホストＡ（コンピュータＡ）には、データＢのオリジナルデータが保有され、ホストＣ（コンピュータＣ）には、データＡのオリジナルデータが保有されている。また、ホストＢ（コンピュータＢ）には、データＡ及びデータＢのレプリカデータが保有されている。また、本システムにおいては、データの更新処理は、オリジナルデータに対してのみ実行でき、レプリカデータでは、データの更新処理を行うことはできない。
【００３９】
（トランザクション）
アプリケーションからの一度の依頼によって実施されるデータ参照及び更新の処理単位を「トランザクション」と呼ぶ。各々のトランザクションには、具体的な処理内容を記述した「トランザクション関数」が対応する。すなわち、図１に示したトランザクション関数（ＴＲ関数）Ａ，Ｂは、各マシンのデータベースにアクセスして、アプリケーション共通で必要となる処理を実現する関数である。すなわち、本システムにおいては、各アプリケーションＸ，Ｙ，Ｚは、直接データベースにアクセスして処理を行うわけではなく、トランザクション関数を介してデータベースにアクセスするように構成されている。
【００４０】
また、トランザクションには、各種の属性を付与するため識別子（トランザクション名等）が含まれている。この識別子に対して、例えば実行すべきトランザクション関数を対応付けたりする。この識別子は、付与すべき属性の種類に応じて必要な数を設定すればよい。
【００４１】
また、トランザクションが操作の対象とするのは、１つのレキシコンセットとする。本システムでは、ユニスペースが複数のレキシコンセットを含むことができるので、トランザクションには、操作対象のレキシコンセットを明記する。このレキシコンセット名を上記識別子の１つと考えても良い。もちろん、他の識別子から操作対象レキシコンセットを判別する手段を設けることもでき、レキシコンセット名の明記は必須ではない。
【００４２】
そして、本システムにおいては、アプリケーションからのデータ操作の依頼をトランザクションを単位として処理する。従って、オリジナルデータに対する更新処理も更新ＴＲを単位として実行され、レプリカサイトにおける更新内容（レプリケーションデータ）のレプリカデータに対する反映処理も、原因となった更新ＴＲを単位として行われる。
【００４３】
（本システムの主たる目的）
本システムの主たる目的は、データベース（レキシコンセット）を複数のマシン上で同一内容に保つことを意図している。すなわち、各マシンは同一内容のデータベースのコピーを保持しており、１つのマシンでそのデータベースに対して更新が加えられた場合には、通信ネットワークを経由して各マシンに更新情報（内容）を伝達し、各マシンのデータベースに更新内容を速やかに反映させることによってこの目的を達成しようとするものである。本明細書においては、この機能を「レプリケーション」と称する。
【００４４】
なお、本明細書においては、データベースを更新する権利を持つマシンをそのデータベースのオリジナルサイト、そのデータをオリジナルデータと呼ぶ。また、それ以外のマシンでそのデータベースのコピーを保有するものをレプリカサイト、そのデータをレプリカデータと呼ぶ。
【００４５】
また、本システムは、データベースを更新するトランザクション（更新ＴＲ）を上記オリジナルサイトで実行する機能を備え、前記レプリケーションと併せて、複数のコピーからなるデータベースを、各マシンのアプリケーションからは論理的に１つのデータベースに見えるように運用する。すなわち、各マシンのアプリケーションはオリジナルサイトがどのマシンかを気にする必要がない。本明細書においては、このようなシステム構成を「リモート／ローカル構造」と呼ぶ。
【００４６】
さらに、本システムにおいては、トランザクションの実行及びレプリケーションデータの反映が一単位完了するまでは、そのデータベース（レキンコンセット）を操作対象とする他のトランザクションの処理を行わない（もちろん他のレプリケーションデータの反映も行なわない）。それらの実行及び反映、また、そのデータベース（レキンコンセット）を操作対象とする他のトランザクションの実行またはレプリケーションデータの反映が進行中の場合は、それらの完了を待って開始される。すなわち、（１つのマシンの）１つのデータベース（レキンコンセント）に関するトランザクションの実行及びレプリケーションデータの反映は、トランザクション単位でシリアルに処理される。それゆえ、トランザクション及びその実行を依頼したアプリケーションが他のトランザクションの実行途中のデータベースの内容にアクセスすることはない。
【００４７】
なお、更新操作を行なわず、データの検索・参照のみを行なうトランザクションを、更新トランザクションに対して参照トランザクションと呼ぶ。本システムでは、レプリケーション機能によって、オリジナルデータとレプリカデータの一致がトランザクション単位で速やかに図られるので、参照トランザクションは、そのトランザクションを依頼されたマシン（ローカルマシン）のレプリカデータを操作対象としても何ら不都合を生じない。
【００４８】
また、通信ネットワークはオリジナルサイトがレプリケーションをレプリカサイトに伝達してレプリケーション機能を実現するための媒体であると同時に、レプリカサイトで発行（依頼）された更新トランザクションをオリジナルサイトに転送するための媒体でもある。この更新トランザクションをオリジナルサイトのみで実行する機能は、具体的には通信ネットワークを経由してレプリカサイトで発行された更新トランザクションをオリジナルサイトに転送することによって実現される。
【００４９】
［２．用語の説明］
各実施形態について説明する前に、本明細書中で用いられる種々の用語について説明する。
ユニスペースとは、図２に示すように、本システムが対象とするデータベース（レキシコンセット）を複数含む形態をいう。また、ユニスペースは、データ及びデータアクセス（参照・更新）のサービスを区別するための識別子となるので、ユニスペース名が付与される。
【００５０】
レキシコンセットとは、ユニスペースを構成する共有データに定められた部分集合のことである。このレキシコンセット毎に各マシンにそのデータを配置するか否かを指定することができる。本システムにおける種々の処理は、このレキシコンセット単位でなされる。
【００５１】
トランザクションとは、アプリケーションプログラムの要求に応じて、共有データを参照したり、更新する操作をいう。トランザクションが一度に操作対象とすることができるデータの集合は、ひとつのレキシコンセットのみである。
【００５２】
ローカルサイト：アプリケーションから見た自サイトのこと
リモートサイト：アプリケーションから見た他のサイトのこと
オリジナルサイト：オリジナルデータを持っているサイトのこと
レプリカサイト：レプリカデータ（コピー）を持っているサイトのこと
【００５３】
ローカル参照：トランザクション操作が、共有データの「参照」だけの場合で、完全にローカルな主記憶データへのアクセスとして処理され、ネットワークのトラフィックは一切発生しない処理をいう。
ローカル更新：トランザクションを発行したアプリケーションプログラムが存在するサイトがオリジナルサイトの場合の更新処理をいう。つまり、自サイトでデータ更新をすることができ、更新後、他のサイトにその更新データをマルチキャスト送信することにより、常に各ホストで同一のデータを利用できるようにする機能をいう。
【００５４】
リモート更新：トランザクションを発行したアプリケーションプログラムが存在するサイトがレプリカサイトの場合の更新処理をいう。つまり、自サイトのデータはレプリカデータなので、データ更新をすることができず、そのトランザクションをオリジナルサイトに転送し、オリジナルサイトでデータ更新後、その更新データをレプリケーション受信することにより、常に各ホストで同一のデータを利用できるようにする機能をいう。
なお、自サイトがレプリカサイトであり、且つ、トランザクションを発行したアプリケーションプログラムが存在しない場合には、オリジナルサイトからレプリケーションされた更新データを、自サイトに反映させることにより、常に各ホストで同一のデータを利用できるように構成されている。
【００５５】
レプリケーションとは、更新トランザクションによるデータの変更を他のマシンへマルチキャストで送信する機能である。
リトリーブとは、ネットワーク経由で、すでに運用中の他のマシンからレキシコンセットのデータを取り寄せて、自サイトで運用を開始するまでの処理をいう。
【００５６】
［３．各実施形態とコンピュータ］
本発明の各実施形態はコンピュータ上に実現され、実施形態の各機能は、所定の手順（プログラム）がこのコンピュータを制御することで実現される。
本明細書における各「手段」は、実施形態の各機能に対応する概念的なもので、必ずしも特定のハードウェアやソフトウェア・ルーチンに１対１には対応しない。同一のハードウェア要素が、場合によって異なった手段を構成する。例えば、コンピュータは、ある命令を実行するときにある手段となり、別の命令を実行するときは別の手段となりうる。また、一つの手段が、わずか１命令によって実現さる場合もあれば、多数の命令によって実現される場合もある。したがって、本明細書では、以下、実施形態の各機能を有する仮想的回路ブロック（手段）を想定して実施形態を説明する。また、本実施形態における各手順の各ステップは、その性質に反しない限り、実行順序を変更し、複数同時に実行し、また、実行ごとに異なった順序で実行してもよい。このような順序の変更は、例えば、ユーザが実行可能な処理を選択するなどメニュー形式のインターフェース手法によって実現することができる。
【００５７】
［４．第１実施形態］
本実施形態は、本発明に係る分散データ管理システム（以下、本システムという）の特徴的な機能である「レプリケーション」に関するものである。ここで、レプリケーション機能とは、更新トランザクションによるデータの変更を他のマシンへマルチキャストで送信する機能である。すなわち、オリジナルサイトで更新トランザクションを実行し、更新分のみをマルチキャストでレプリカサイトへ送信し、レプリカサイトではそれを受信し、レプリカデータへ反映することにより、ネットワーク上のすべてのマシンにおけるデータの同一性を保持するものである。
【００５８】
［４−１．第１実施形態の構成］
図３は、本システムが適用されるネットワーク構成の一例を示したものである。すなわち、図３は、２つのＬＡＮがルーターＲを介してＷＡＮにより接続された状態を示す概念的なネットワーク構成図であり、各ＬＡＮには複数のパーソナルコンピュータ（ＰＣ）が接続されている。なお、本システムを適用する具体的なネットワーク構成は自由であり、ＷＡＮは必須ではなく、各ＬＡＮに各種サーバーを設けることも自由である。
【００５９】
図４は、本システムの第１実施形態であるレプリケーションを実現するために、各マシンに備えられた分散データ管理装置の構成を示す機能ブロック図である。なお、この分散データ管理装置は、上記「全体像の説明」で示した図１における処理部に対応するものである。
【００６０】
すなわち、本実施形態の分散データ管理装置１０は、アプリケーションからのトランザクションの実行依頼を受け付けるトランザクション受付部１０１と、自サイトにおけるトランザクションの実行を制御するトランザクション実行制御部１０２と、トランザクションを実行するためのトランザクション関数を呼び出してトランザクションを実行するトランザクション実行部１０５と、後述するレプリケーションデータを自サイトのデータに反映させるレプリケーション処理部１０６と、データ受信部１０７及びデータ送信部１０８を備えている。
【００６１】
なお、上記トランザクション受付部１０１においては、トランザクションの実行依頼を受け付ける毎に「受付ＩＤ」が発行される。この受付ＩＤは、（受付マシン、受付シリアル番号）の組からなり、あらゆるトランザクションはこの受付ＩＤによって、「そのトランザクションは、どのサイトで、何番目に受け付けたトランザクションであるか」を一意的に識別することができるようになっている。
【００６２】
また、前記データ送信部１０８は、後述するオリジナルサイトへのリモートＴＲの送信、他のサイトへのレプリケーションの送信を行う部分であり、データ受信部１０７は、レプリカサイトからのリモートＴＲの受信、他のサイトからのレプリケーションの受信を行う部分である。
【００６３】
また、本実施形態の分散データ管理装置１０には、オリジナルデータあるいはレプリカデータであるレキシコンセットを格納するデータ格納部１０９と、トランザクション名／そのトランザクションの処理対象となるレキシコンセット名／そのレキシコンセットのオリジナルサイト名／そのトランザクションの属性（参照・更新）／そのトランザクションに対応するトランザクション関数名を対応づけて示したトランザクション登録表１１０（図５）と、自サイトがレプリカサイトである場合に用いられるレプリケーション待ちＴＲ表１１１（図６）が備えられている。
そして、上記のような構成を有する分散データ管理装置１０を備えた各ホストにおいて、アプリケーション１１２によりトランザクションの実行が依頼されると、以下に述べるような処理がなされる。
【００６４】
［４−２．第１実施形態の作用］
まず、本システムで実行されるトランザクションには、データを参照するだけの「参照」と、データが変更される「更新」の２種類の処理がある。また、そのトランザクションを実行するホストにも「ローカルサイト…自サイトのこと」と「リモートサイト…他のサイトのこと」の２種類がある。本システムにおいては、すべてのホストがその主記憶上に同じデータを持っているが、オリジナルデータを持っているサイト（オリジナルサイト）と、そのレプリカ（コピー）を持っているサイト（レプリカサイト）とがある。データの更新はオリジナルデータを持っているオリジナルサイトでしかできない。そして、その変更部分をネットワーク上のすべてのレプリカサイトにレプリケーションして、常に各ホストで同一のデータを利用できるように構成されている。
【００６５】
一方、「参照」処理は、データを参照するだけでその書き換えを行うことがないので、そのホストにあるデータがオリジナルデータであるか、レプリカデータであるかを問わず、各サイトで実行できる。
以下、これらの各トランザクションについて、図７から図１２に示すフローチャートに従って具体的に説明する。
【００６６】
（１）ローカル参照処理
ローカル参照処理は、図７に示したような手順で実行される。まず、トランザクション受付部１０１がアプリケーションよりデータ参照ＴＲを実行すべきとの依頼を受け付けると（Ｓ７０１）、受付ＩＤを発行する。そして、この依頼に従い、トランザクション実行制御部１０２は図５に示すようなトランザクション登録表１１０を検索し（Ｓ７０２）、トランザクションを実行するサイトと、実行に当たって必要なトランザクション関数を決定する（Ｓ７０３）。次いで、トランザクション実行制御部１０２の指示に従い、トランザクション実行部１０５において、トランザクション関数の呼び出しが行われ（Ｓ７０４）、このトランザクション関数を利用してトランザクションの実行、すなわちデータ参照処理が実行される（Ｓ７０５）。このようにしてトランザクション実行部１０５によってデータ参照処理が実行された後は、トランザクション実行制御部１０２はその実行結果をアプリケーション１１２に通知する（Ｓ７０６）。
【００６７】
（２）ローカル更新処理
本システムにおいては、すべてのホストがその主記憶上に同じデータを保有しているが、各サイトにはオリジナルデータを持っている、ネットワーク上で唯一のオリジナルサイトと、その他のレプリカ（コピー）を持っているレプリカサイトがある。そして、データの更新処理はオリジナルデータを持っているオリジナルサイトでしか行わない。ここで説明するローカル更新処理は、トランザクションの実行依頼を受けた自サイト（ローカルサイト）がオリジナルサイトの場合に行われる処理である。
【００６８】
図８に示したように、まず、オリジナルサイトにおいて、トランザクション受付部１０１が更新ＴＲを実行すべきとのアプリケーションからの依頼を受け付けると（Ｓ８０１）、受付ＩＤを発行する。そして、この依頼に従い、トランザクション実行制御部１０２は図５に示したトランザクション登録表１１０を検索し（Ｓ８０２）、自サイトが更新ＴＲを実行し得るオリジナルサイトであるか否かを判定すると共に、自サイトがオリジナルデータの更新処理を実行するに当たって必要なトランザクション関数を決定する（Ｓ８０３）。次いで、トランザクション実行制御部１０２の指示に従い、トランザクション実行部１０５において、トランザクション関数の呼び出しが行われ（Ｓ８０４）、このトランザクション関数を利用してオリジナルサイトにおけるデータ更新処理が実行される（Ｓ８０５）。
【００６９】
このようにしてトランザクション実行部１０５によって自サイトにおけるデータ更新処理が実行された後、データ送信部１０８を介して更新データ（レプリケーション対象データ）を各レプリカサイトに対してマルチキャスト送信する（Ｓ８０７）。また、トランザクション実行制御部１０２は、そのデータ更新の実行結果をトランザクション受付部１０１を介して依頼元であるアプリケーション１１２に通知する（Ｓ８０８）。
【００７０】
なお、更新データをデータ受信部１０７に受信したレプリカサイトがあれば、そのレプリカサイトでは、これをトランザクション実行制御部１０２に伝達し、トランザクション実行制御部１０２はレプリケーション処理部１０６に指示してこれをレプリカデータに反映させ、レプリカデータをオリジナルデータに一致させることにことにより、すべてのホストが主記憶上に同じデータを保有しているという状態を速やかに回復する。
【００７１】
（３）リモート更新処理
更新ＴＲの実行依頼を受けた自サイトがレプリカサイトの場合、すなわち、自サイトのデータはレプリカデータであるためデータ更新をすることができない場合は、そのトランザクションをオリジナルサイトに転送し、オリジナルサイトでデータの更新を行った後、その更新データを自サイトにレプリケーションしてもらうことになる。
【００７２】
このリモート更新処理においては、各ホストによって処理が異なる。すなわち、レプリカサイトである自サイトにアプリケーションプログラムが存在し、このアプリケーションプログラムからのデータ更新ＴＲを受け付け・実行する場合（リモート更新…その１）、自サイトがオリジナルサイトであり、トランザクションの実行依頼を受けた他のレプリカサイトからオリジナルデータの更新を依頼された場合（リモート更新…その２）、自サイトはレプリカサイトであり、且つデータ更新処理（トランザクションの実行）を依頼されていない場合（リモート更新…その３）の３種類の状況でそれぞれ異なる処理がなされる。
【００７３】
（３−１）リモート更新（その１）
まず、レプリカサイトである自サイトにアプリケーションプログラムが存在し、このアプリケーションプログラムからのデータ更新ＴＲを受け付けた場合は、自サイトが保有するデータはレプリカデータであるので、これを直接更新することはできない。そこで、オリジナルサイトに対してそのオリジナルデータの更新処理を依頼し、その後、その更新データを自サイトに反映させるためのレプリケーションを実行する。
【００７４】
すなわち、図９に示したように、本レプリカサイトにおいて、トランザクション受付部１０１がアプリケーションプログラムよりデータ更新ＴＲの実行依頼を受け付けると（Ｓ９０１）、受付ＩＤを発行する。そして、この依頼に従い、トランザクション実行制御部１０２は図５に示すトランザクション登録表１１０を検索し（Ｓ９０２）、トランザクションを実行することのできるオリジナルサイトと、実行に当たって必要なトランザクション関数を決定する（Ｓ９０３）。次に、トランザクション実行制御部１０２は、このトランザクションを図６に示すレプリケーション待ちＴＲ表１１１に登録し（Ｓ９０４）、さらにこのデータ更新ＴＲの指令をデータ送信部１０８を介してトランザクション登録表１１０から検索したオリジナルサイトに転送する（Ｓ９０５）。
【００７５】
オリジナルサイトにおいて、上記（２）ローカル更新処理において述べた場合と同様にしてデータ更新ＴＲが実行され、更新後のデータが各レプリカサイトに送信される（Ｓ９０６）。このとき、本レプリカサイトにおいては、オリジナルサイトからのレプリケーションを受信し（Ｓ９０７）、図６に示すレプリケーション待ちＴＲ表１１１を受付ＩＤをもとに検索して（Ｓ９０８）、このレプリケーション待ちＴＲ表に登録されているトランザクションについて、受信したレプリケーションの内容を反映したデータ更新を行う（Ｓ９０９）。このデータ更新処理は、データ受信部１０７が受信した更新データに基づいて、レプリケーション処理部１０６がレプリカデータの一部（差分）あるいは全部を書き換えることにより行われる。
このようにしてレプリケーション処理部１０６によってデータ更新処理が実行された後は、トランザクション実行制御部１０２はその実行結果をデータ更新を依頼されたアプリケーション１１２に通知する（Ｓ９１０）。
【００７６】
（３−２）リモート更新（その２）
自サイトがオリジナルサイトであり、トランザクションの実行依頼を受けた他のサイトからオリジナルデータの更新を依頼された場合は、オリジナルデータの更新をした後、更新データを他のすべてのサイトにレプリケーションする。
【００７７】
すなわち、図１０に示したように、更新対象となるオリジナルデータを所有するオリジナルサイトにおいては、データ受信部１０７がレプリカサイトから転送されたデータ更新ＴＲを受信すると（Ｓ１００１）、トランザクション実行制御部１０２は図５に示すトランザクション登録表１１０を検索して（Ｓ１００２）、自サイトがオリジナルデータを所有するサイトであるか否か、すなわちそのトランザクションの実行サイトであるか否かを判定すると共に、自サイトがオリジナルサイトであった場合には、そのトランザクションの実行に必要なトランザクション関数を決定する（Ｓ１００３）。
【００７８】
次いで、トランザクション実行部１０５は、トランザクション登録表１１０に基づいて決定されたトランザクション関数を呼び出し（Ｓ１００４）、この関数を利用してオリジナルデータに対してデータ更新ＴＲを実行する（Ｓ１００５）。このようにしてオリジナルデータの更新処理がなされた後は、更新されたレプリケーション対象データをすべてのレプリカサイトに反映すべく、データ送信部１０８から各レプリカサイトに対してマルチキャスト送信する（Ｓ１００６）。
【００７９】
（３−３）リモート更新（その３）
アプリケーションプログラムが存在しないレプリカサイトでのデータ更新処理、すなわち、自サイトはレプリカサイトであり、且つ、トランザクションの実行依頼もされていない場合の処理は、前記リモート更新（その１）において実行されたオリジナルサイトでのデータ更新処理を、オリジナルサイトからレプリケーションして自サイトが所有するレプリカデータに反映させるだけである。
【００８０】
すなわち、図１１に示したように、データ受信部１０７がオリジナルサイトからのレプリケーションを受信すると（Ｓ１１０１）、トランザクション実行制御部１０２は、自サイトのレプリケーション待ちＴＲ表を、レプリケーションに記載された受付ＩＤをもとに検索する（Ｓ１１０２）。この場合、このレプリカサイトでは、アプリケーションからのデータ更新処理の実行依頼を受け付けていないため、レプリケーション待ちＴＲ表には登録されているトランザクションがないので（Ｓ１１０３）、トランザクション実行制御部１０２は、レプリケーション処理部１０６により、受信したレプリケーションの内容を反映させるように自己の所有するレプリカデータを更新する（Ｓ１１０４）。この結果、すべてのレプリカサイトのデータがオリジナルサイトのデータと等価になる。
【００８１】
（３−４）全体のフローチャート
上記データ参照ＴＲ及び各サイトにおけるデータ更新ＴＲの個々の処理内容は上述した通りであるが、次に、各トランザクションが、各サイトにおいてどのように判別され、処理されるかについて、その全体像を図１２によって説明する。
【００８２】
まず、オリジナルサイトかレプリカサイトかを問わず、あるサイトがアプリケーションプログラムからトランザクションの実行を依頼されると（Ｓ１２０１）、トランザクション受付部１０１が、トランザクションの実行依頼を受付ける（Ｓ１２０２）と共に、受付ＩＤを発行する。トランザクション実行制御部１０２は、このトランザクションが更新ＴＲか否かを判定し（Ｓ１２０３）、更新ＴＲでない場合、すなわち依頼されたトランザクションが参照ＴＲである場合には（Ｓ１２０３の“ＮＯ”）、トランザクション登録表１１０を検索して（Ｓ１２０４）、自サイトで実行できるトランザクションであるか否か、また、そのトランザクションを実行するためにどのような関数が必要であるかを検索する。
その結果得られた情報に従い、参照ＴＲを実行するために必要なトランザクション関数の呼び出しを行い（Ｓ１２０５）、この関数を利用してデータ参照ＴＲを実行する（Ｓ１２０６）。その後、データ参照ＴＲの実行結果を、アプリケーションプログラム１１２に通知する（Ｓ１２０７）。
【００８３】
次に、前記ステップＳ１２０３において、受け付けられたトランザクションがデータの更新ＴＲであると判定された場合には（Ｓ１２０３の“ＹＥＳ”）、データ更新を受け付けた自サイトがオリジナルサイトか否かを判定する（Ｓ１２０８）。自サイトがオリジナルサイトである場合には（Ｓ１２０８の“ＹＥＳ”）、トランザクション登録表１１０を参照してオリジナルサイトにおけるデータ更新のために必要な関数を検索し（Ｓ１２０９）、この検索結果に基づいてデータ更新ＴＲに必要なトランザクション関数の呼び出しを行う（Ｓ１２１０）。
【００８４】
その後、これらの関数を利用して、オリジナルデータの更新処理を行い（Ｓ１２１１）、さらにその更新結果を各レプリカサイトに反映すべく、レプリケーションの送信を行う（Ｓ１２１２）。また、データ更新の結果を、依頼元である自サイトのアプリケーションプログラムに通知する（Ｓ１２０７）。
【００８５】
一方、ステップＳ１２０３において、データ更新ＴＲを受け付けたサイトがオリジナルサイトでない場合、すなわち、自サイトがレプリカサイトである場合には、受け付けたトランザクションをレプリケーション待ちＴＲ表に登録し（Ｓ１２１３）、オリジナルサイトである他サイトにそこが保有するオリジナルデータの更新処理を転送する（Ｓ１２１４）。オリジナルサイトにおいては、自己のアプリケーションプログラムからデータ更新ＴＲを受け付けた場合と同様にして、データ更新ＴＲを実行する（Ｓ１２１５）。
【００８６】
このオリジナルサイトにおけるデータ更新ＴＲが終了すると、更新データが各レプリカサイトに送信されるので、データ更新ＴＲを受付けたレプリカサイトでもオリジナルサイトからのレプリケーションデータが受信される（Ｓ１２１６）。そこで、このレプリカサイトにおいては、前記レプリケーション待ちＴＲ表に基づいて、この受信データがアプリケーションプログラムから要求されているレプリカデータの更新データであることが判るので、この更新データに従いレプリカデータの更新処理を行うと共に（Ｓ１２１７）、その更新結果をトランザクションを受け付けたアプリケーションプログラムに通知する（Ｓ１２０７）。
【００８７】
（３−５）具体例
ここで、サイトＡからサイトＢにリモート更新ＴＲを出した場合について、より具体的に説明する。
（１）サイトＡでトランザクションを受け付け、例えば、受付ＩＤ（Ａ、１０）を発行する。この例ではリモートＴＲなので、受付ＩＤ（Ａ、１０）のトランザクションを「レプリケーション待ちＴＲ表」に登録する。
（２）リモートＴＲをオリジナルサイトに転送する。
（３）サイトＢがリモートＴＲ（Ａ、１０）を受信する。このトランザクションによる更新は、オリジナルのレキシコンセットに対する例えば９９回目の更新であった場合、レプリケーションログに対して更新ＩＤ（Ａ、１０、９９）を発行する。このレプリケーションログをマルチキャスト送信する。
（４）サイトＡがレプリケーションログ（Ａ、１０、９９）を受信すると、先頭の（Ａ、１０）をもとに「レプリケーション待ちＴＲ表」を検索して、登録されているトランザクションを見つけ出し、そのレプリケーションデータを反映した後、アプリケーションに終了を通知する。
【００８８】
［４−３．第１実施形態の効果］
本実施形態によれば、以下のような効果が得られる。
（１）等価な共有データを保有するサイトを、オリジナル／レプリカに区別することでデータ更新の一貫性を保証することができる。
（２）トランザクションの事前登録時に参照／更新を宣言させることで、参照時にはネットワークＩ／Ｏが一切生じない高速な共有データへのアクセスを実現することができる。また、トランザクション処理がオリジナルサイトに集中することを避け、負荷の分散を図ることが可能である。
ＤＢＭＳに格納するデータは「変更頻度の少ない多量のデータ」と「頻繁に変化する少量のデータ」とに分離できる場合が多いので、前者に対して「参照ＴＲ」を利用することで、効果的にシステムを高速化すると共に負荷分散を実現することができる。
【００８９】
（３）アプリケーションに対しては、データのオリジナル／レプリカの違いを隠蔽しつつ共有データへのトランザクション処理（データ参照・更新）のサービスを提供することができる。
すなわち、共有データのオリジナル／レプリカ属性をシステムが自動判別して処理することにより、クライアント／サーバ相当の処理（オリジナルデータの集中管理）をアプリケーションに対して隠蔽することができる。すなわち、本実施形態の分散データ管理装置１０が稼働しているサイトにおいては、アプリケーションは、更新ＴＲを実行すべき（オリジナル）サイトを自ら決定する手間、及びそのサイトと自ら通信する手間を省くことができる。さらに重要な効果は、オリジナルサイトが変更された場合でも、分散データ管理装置１０のトランザクション登録表を変更するだけで、アプリケーションの動作はなんら変更する必要がない。
【００９０】
（４）リモート更新時はネットワークＩ／Ｏ（リモートサイトの返事）を待たずに、複数のトランザクションをパラレルに処理することができる。
すなわち、１つのリモートＴＲの終了を待って、他のアプリケーションが要求するトランザクション処理を中断することがないので、トランザクション処理効率が大幅に向上する上に、特定のリモートＴＲの終了を待つアプリケーションにとっては、レプリカデータが更新されたタイミングでトランザクションが終了するので、ローカルＴＲの場合と全く違いがない。
【００９１】
これに対して、アプリケーションが更新の場合のみ、従来技術のＲＰＣ（Remote Procedure Call）のような手段で、直接オリジナルサイトにトランザクションの実行を依頼すると、アプリケーションがトランザクションの実行完了通知を受け取るタイミングと、自サイトのレプリカデータにそのトランザクションの更新データが反映されるタイミングとは、必ずしも一致しない。そのため、自サイトのデータの内容とアプリケーションが認識する（自らが依頼した）トランザクションの実行（完了）状況との整合が、ローカル更新処理の場合とは異なってしまう。すなわち、本実施形態によれば、高いトランザクション処理のスループットを実現しつつ、アプリケーションに対してシステムの非一様性を隠蔽することができる。
【００９２】
（５）レプリケーションデータの反映は、更新ＴＲのレプリカサイトにおける再実行とは異なり、レプリカサイトにおいて更新ＴＲの管理（プログラムの保有及び実行）を省略する余地を生む。また、レプリケーションデータの反映の方が更新ＴＲの実行より計算量が少ないので、レプリカサイトにおけるデータベース更新（維持）の負荷が大幅に緩和される。
（６）更新ＴＲの受付レプリカサイトにおいて、レプリケーションデータの反映に同期してトランザクションの完了を通知することにより、サイトに依存しない一貫したデータアクセス手段を提供することができる。
【００９３】
［５．第２実施形態］
本実施形態は、上記第１実施形態の変形例である。すなわち、ネットワークで接続された複数のマシンにおいて、それぞれのマシン（ホスト）で独自に用いるデータ（レキシコン）をデータ格納部に格納する場合がある。このような各ホストに特有なデータは、たとえそのデータが更新されたとしても、その更新データを他のホストへレプリケーションする必要はない。
【００９４】
そこで、このような各ホストに特有なデータを、レキシコンを定義する際に「Multi ORG Lexicon（マルチオリジナルデータ）」として定義し、一方、ネットワークを介したレプリケーションによりオリジナルデータとレプリカデータの同一性を保持するデータを、「Single ORG Lexicon（シングルオリジナルデータ）」として定義することにより、予め両者を区別しておく。ただし、この場合、自サイトがその「Multi ORG Lexicon」のオリジナルサイトであるかレプリカサイトであるかを問わず、各マシン毎に自由に更新処理を行うことができ、更新データが他のサイトへレプリケーションされないようになっている。
【００９５】
すなわち、本実施形態においては、図１３に示したように、あるマシンにおいて、アプリケーションプログラムからトランザクション（更新ＴＲ）の実行が依頼されると、図４に示したトランザクション実行制御部１０２において、そのトランザクションが処理対象とするレキシコンが「Multi ORG Lexicon」であるか「Single ORG Lexicon」であるかが判断され、「Single ORG Lexicon」であると判断された場合には、上記第１実施形態で説明したと同様の処理が行われる（図１３の上段参照）。一方、「Multi ORG Lexicon」であると判断された場合には、自サイトがオリジナルサイトであるかレプリカサイトであるかを問わず、そのトランザクション処理が実行され、その更新結果は他のサイトにレプリケーションされず、自サイトに留まる（図１３の下段参照）。
【００９６】
上述したように、本実施形態によれば、データベースの特定の部分（Multi ORG Lexicon）に関しては、そのデータが更新されてもレプリケーションデータを生成・伝達しないという扱いを加味することによって、同一トランザクションで、システム全体で同一であるべきデータとサイト毎に扱いが異なるデータを同時に更新することができる。
【００９７】
また、マルチオリジナルデータのみを更新するトランザクションを、参照ＴＲと同様にローカルサイト（自サイト）で実行することで、特定のデータの扱いを各サイトの裁量に委ねることができる。さらに、すべてのデータにレプリケーションを義務づけた場合に生じる無駄なレプリケーションを回避することができる。
【００９８】
［６．第３実施形態］
［６−１．リトリーブ機能の概要］
リトリーブ機能とは、システムの起動時に、オリジナルデータやレプリカデータを設定された通りに利用可能な状態にする機能である。本実施形態の分散データ管理システムにおいては、最新のデータをもつマシン（オリジナルサイトでも、レプリカサイトでもよい）から最新データのスナップショットをネットワーク経由で受け取る。
【００９９】
この場合、最新のデータを受け取る相手先の順序を指定することができ、順位の高いマシンへ送信要求を出す。このとき何らかの障害でそのマシンから最新データが得られない場合、次の順位のマシンへデータ送信を要求する。どのマシンからもデータを受け取れない場合、オリジナルのあるマシンを最終のリトリーブ先とする。オリジナルやレプリカの配置、ネットワークの帯域幅、マシンのスペックなどによってこの順位を決定することで、システム構成に適した設定をとることができる。
【０１００】
このように、最新データのスナップショットをネットワーク経由で受け取ることでデータ構築する処理を「ネットワークリトリーブ」という。すなわち、「ネットワークリトリーブ」とは、ネットワーク経由で、すでに運用中の他のマシンからレキシコンセットのデータを取り寄せて、自サイトで運用を開始するまでの処理の名称である。以下、サイトＡがサイトＢからレキシコンセットのデータをコピーして運用を開始することを「サイトＡがサイトＢからリトリーブする」と呼ぶこととする。
【０１０１】
［６−２．第３実施形態の構成］
図１４は、本システムの第３実施形態であるリトリーブを実現するために、各マシンに備えられた分散データ管理装置の構成を示す機能ブロック図である。なお、この分散データ管理装置は、上記「全体像の説明」で示した図１における処理部に対応するものである。また、本実施形態の分散データ管理装置２０は、図４に示した第１実施形態の分散データ管理装置に以下に述べるモジュールを追加したものであるので、第１実施形態の分散データ管理装置との相違点についてのみ説明する。
【０１０２】
すなわち、本実施形態の分散データ管理装置２０は、図４に示した第１実施形態の分散データ管理装置１０に、スナップショット出力部１２０と、リトリーブ対象となるレキシコンセットのＩＤ番号／そのレキシコンセットの運用状況／そのレキシコンセットの更新番号を対応づけて示したレキシコンセット・ステータス表（図１５）とバッファを備えたレキシコンセット・ステータス表＋バッファ１２１を備えている。
【０１０３】
なお、本実施形態においては、データ送信部１０８は、後述するスナップショットの送信、オリジナルサイトへのスナップショット送信要求（リトリーブ要求）の送信、他のサイトへのレプリケーションの送信を行い、データ受信部１０７は、オリジナルサイトからのスナップショットの受信、他のサイトからのレプリケーションの受信を行う。
【０１０４】
そして、上記のような構成を有する分散データ管理装置２０を備えた各ホストにおいて、アプリケーション１１２によりネットワークリトリーブの実行が依頼されると、以下に述べるような処理がなされる。
【０１０５】
ここで、上記「スナップショット」とは、ある瞬間のレキシコンセットを構築するために必要なデータの名称をいう。また、「レキシコンセットの更新番号」とは、トランザクション実行部１０５において、更新ＴＲが実行されレキシコンセットが更新されるたびに発行されるものであって、レキシコンセットに加えられた変更回数をカウントした番号をいう。従って、オリジナルサイトでは更新トランザクションの処理毎に更新番号が増加し、レプリカサイトではレプリケーション反映処理毎に、更新番号が増加する。そして、更新番号＃Ｎのスナップショットからは、更新番号＃Ｎのレキシコンセットを構築することができる。また、「更新番号＃Ｎのレプリケーションログ」とは、更新番号＃Ｎ−１のレキシコンセットから更新番号＃Ｎのレキシコンセットを得るための差分情報（更新記録）をいう。
【０１０６】
［６−３．第３実施形態の作用］
続いて、「ネットワークリトリーブ」について、図１６および図１７のフローチャートを参照して説明する。なお、図１６は、ネットワークリトリーブを実行するサイトＡ（レプリカサイト）における処理手順を示したものであり、図１７は、オリジナルサイトであるサイトＢにおける処理手順を示したものである。
【０１０７】
（６−３−１）サイトＡにおける処理
まず、サイトＡの初期立ち上げにおいて、図１５に示すようなレキシコンセット・ステータス表に、あるレキシコンセットのリトリーブの実行に着手する旨のエントリを作成して、そのレキシコンセットを「リトリーブ中」とする（Ｓ１６０１）。次に、スナップショットの送信をオリジナルサイトであるサイトＢへ要求する（Ｓ１６０２）。この送信要求に伴いサイトＢがスナップショットの送信を開始すると、サイトＡにおいてはそのスナップショットの受信を開始する（Ｓ１６０３）。
【０１０８】
サイトＢから受信したスナップショットに対応するレキシコンセットについて、レプリケーションがあるか否かを検証し（Ｓ１６０４）、レプリケーションがない場合には（Ｓ１６０４が“ＮＯ”）、スナップショットの受信が完了したか否かを検証する（Ｓ１６０５）。スナップショットの受信が完了していない場合には（Ｓ１６０５が“ＮＯ”）、スナップショットの受信を継続し、再度ステップＳ１６０４に戻って受信したスナップショットについてのレプリケーションの有無を検証する。
【０１０９】
ステップＳ１６０４において、受信したスナップショットに対応するレキシコンセットについて、レプリケーションがある場合には（Ｓ１６０４が“ＹＥＳ”）、そのレプリケーションについてその更新番号がスナップショットの更新番号より大きいか否かを検証する（Ｓ１６０６）。そして、レプリケーションの更新番号がスナップショットの更新番号よりも小さい場合、すなわち、そのレプリケーションが、今受信したスナップショットよりも古いデータである場合には（Ｓ１６０６が“ＮＯ”）、そのレプリケーションデータを破棄する（Ｓ１６０７）。一方、レプリケーションの更新番号がスナップショットの更新番号よりも大きい場合には（Ｓ１６０６が“ＹＥＳ”）、現在リトリーブ中のデータは更新する必要があるので、レプリケーションデータのバッファリングを行なう（Ｓ１６０８）。
【０１１０】
すなわち、リトリーブしているデータよりバージョンの古いデータ（更新番号が小さいデータ）がレプリケーションされた場合には、そのデータは不要なので破棄し、リトリーブしているデータよりバージョンの新しいデータ（更新番号が大きいデータ）がレプリケーションされた場合には、それらをバッファリングして蓄積しておく。
【０１１１】
これらレプリケーションデータの破棄、あるいはバッファリングが終了した後、ステップＳ１６０５に戻り、スナップショットの受信が完了したか否かの検証を行う（Ｓ１６０５）。スナップショットの受信が完了した後は（Ｓ１６０５の“ＹＥＳ”）、受信したスナップショットを利用してデータ構築、すなわちレキシコンセットの構築を行う（Ｓ１６０９）。
【０１１２】
次に、前記ステップＳ１６０８においてバッファリングしておいたレプリケーションデータをバッファから読み出し（Ｓ１６１０）、これに基づいてレプリケーションデータを処理する（Ｓ１６１１）。このようにして、データ構築が完了した後は、レキシコンセット・ステータス表を「リトリーブ完了」にして（Ｓ１６１２）、処理を終了する。
【０１１３】
（６−３−２）スナップショットを受信したサイトＢにおける処理
サイトＡからのリトリーブ要求を受信した（Ｓ１７０１）オリジナルサイトであるサイトＢにおいては、まず、要求されたスナップショットがすでに存在するか否かを検証する（Ｓ１７０２）。すなわち、サイトＡ以外の他のサイトからすでにリトリーブ要求を受信して、その際に主記憶データのスナップショットを作成しており、そのスナップショットがまだ主記憶領域に存在する場合には、サイトＡからのリトリーブ要求時にすでに存在するスナップショットを利用することが可能である。
【０１１４】
そこで、スナップショットが存在するか否かを検証し、スナップショットが存在しない場合には（Ｓ１７０２の“ＮＯ”）、主記憶データのスナップショットを新規に作成し（Ｓ１７０３）、作成したスナップショットを送信キューへ追加する（Ｓ１７０４）。一方、前記ステップＳ１７０２において、要求されたスナップショットがすでに存在する場合には（Ｓ１７０２の“ＹＥＳ”）、すでに送信済みの部分に限り再度送信キューへ追加する（Ｓ１７０５）。このようにして、送信キューに追加されたスナップショットは、所定の送信タイミングにより、リトリーブの要求元であるサイトＡに送信される。
【０１１５】
（６−３−３）具体例
サイトＡがサイトＢからリトリーブする処理を、より具体的に説明する。
（１）サイトＡがサイトＢにスナップショット送信要求を出す。
（２）サイトＢはスナップショットを作成して、サイトＡへ送信を開始する。このときのスナップショット番号を“＃４７”とする。
（３）サイトＡがスナップショット受信を開始する。スナップショット受信には長時間を要するので、この間もレキシコンセットの更新が発生して、レプリケーションを受信することがある。この場合、サイトＡが、スナップショットの番号“＃４７”より大きな番号のレプリケーションを受信した場合は、そのデータをバッファリングして保存しておく。
（４）サイトＡにおいてスナップショットの受信が完了した時点で、レプリケーションバッファには、“＃４８”、“＃４９”……といったレプリケーションログが溜まっている。
“＃４７”のスナップショットを元に、“＃４７”のレキシコンセットを構築した後、バッファリングした“＃４８”、“＃４９”……のレプリケーションを一気に処理することにより、最新のレキシコンセットにキャッチアップすることができる。
【０１１６】
［６−４．第３実施形態の効果］
本実施形態によれば、システム全体を停止させることなく、言い換えれば、レプリケーションが行われている状況下で、新たなサイトにデータベースをコピーすることができる。また、最新のオリジナルデータとの一致を図ることで、システムの動的な拡張が可能となる。
すなわち、スナップショット転送中もトランザクション処理を中断することなく、リトリーブするサイトは最小の時間で時々刻々と変化するレキシコンセットにキャッチアップして運用を開始することができる。
【０１１７】
［７．他の実施形態］
本発明は上述した実施形態に限定されるものではなく、以下に述べるように適宜変更して適用することができる。
すなわち、上記の実施形態においては、「複数のマシン」を物理的に異なるマシンと、通信ネットワークをそれらの間の物理的媒体を含む通信手段として想定したが、これを論理的に異なるマシン、例えば同一マシン内の異なるプロセスを対象として実施しても構わない。その場合には、各（論理）マシンの識別に、異なる手段（例えば、プロセスＩＤ等）を使用すればよい。
【０１１８】
また、上記の実施形態においては、トランザクションの実行をすべてトランザクション関数の呼出しとして説明したが、トランザクションの実行の形態はこれに限られるものではない。例えば、個々のトランザクションには具体的なデータ操作手続の記述が含まれており、本システムが一定の手順に従ってそれを解釈実行するという形態でも構わない。
【０１１９】
さらに、レプリケーションデータを伝達する手段としての通信ネットワークと、トランザクションを転送する手段としての通信ネットワークは、物理的／論理的に同一のものを用いても、異なるものを用いてもよい。多数のレプリカサイトに伝送するには、マルチキャスト／ブロードキャストのネットワークを使用するのが効率的な場合が多いが、本発明を適用する場合、それに限定されるものではない。一方、トランザクションの転送は通常１対１通信で足りるが、実行すべきでないサイトが受信した場合は、そのサイトの判断で実行しない、あるいは破棄する等の処理を行なうという条件で、マルチキャスト／ブロードキャストのネットワ−クを採用することも可能である。
【０１２０】
【発明の効果】
以上述べた様に、本発明によれば、ネットワークで結合された複数のマシン上で協調動作することにより、各マシンの主記憶上の共有データを一貫して維持・更新することができる分散データ管理システム及び分散データ管理方法を提供することができる。
【図面の簡単な説明】
【図１】本発明に係る分散データ管理システムの全体構成を示す図
【図２】ユニスペースの構成を示す模式図
【図３】本発明に係る分散データ管理システムが適用されるネットワーク構成の一例を示す図
【図４】本発明に係る分散データ管理システムの第１実施形態の構成を示すブロック図
【図５】トランザクション登録表の一例を示す図
【図６】レプリケーション待ちＴＲ表の一例を示す図
【図７】ローカル参照処理の手順を示すフローチャート
【図８】ローカル更新処理の手順を示すフローチャート
【図９】リモート更新処理の一態様である、アプリケーションプログラムが存在するレプリカサイトでの処理の手順を示すフローチャート
【図１０】リモート更新処理の一態様である、リモート更新トランザクションの依頼を受けたオリジナルサイトでの処理の手順を示すフローチャート
【図１１】リモート更新処理の一態様である、アプリケーションプログラムが存在しないレプリカサイトでの処理の手順を示すフローチャート
【図１２】トランザクションの実行処理の全体像を示すフローチャート
【図１３】本発明に係る分散データ管理システムの第２実施形態の動作状況を示す模式図
【図１４】本発明に係る分散データ管理システムの第３実施形態の構成を示すブロック図
【図１５】レキシコンセット・ステータス表の一例を示す図
【図１６】ネットワークリトリーブを実行するサイトＡ（レプリカサイト）における処理手順を示すフローチャート
【図１７】ネットワークリトリーブを実行するサイトＢ（オリジナルサイト）における処理手順を示すフローチャート
【符号の説明】
１…データベース
２…ＴＲ関数
３…処理部
１０…分散データ管理装置
１０１…トランザクション受付部
１０２…トランザクション実行制御部
１０５…トランザクション実行部
１０６…レプリケーション処理部
１０７…データ受信部
１０８…データ送信部
１０９…データ格納部
１１０…トランザクション登録表
１１１…レプリケーション待ちＴＲ表
１１２…アプリケーション
２０…分散データ管理装置
１２０…スナップショット出力部
１２１…レキシコンセット・ステータス表＋バッファ
【図１】
0004129353.tif 000002
【図２】
0004129353.tif 000003
【図３】
0004129353.tif 000004
【図４】
0004129353.tif 000005
【図５】
0004129353.tif 000006
【図６】
0004129353.tif 000007
【図７】
0004129353.tif 000008
【図８】
0004129353.tif 000009
【図９】
0004129353.tif 000010
【図１０】
0004129353.tif 000011
【図１１】
0004129353.tif 000012
【図１２】
0004129353.tif 000013
【図１３】
0004129353.tif 000014
【図１４】
0004129353.tif 000015
【図１５】
0004129353.tif 000016
【図１６】
0004129353.tif 000017
【図１７】
0004129353.tif 000018