(57)【特許請求の範囲】
【請求項１】
ネットワークを介して接続された複数のコンピュータの主記憶領域上にそれぞれデータベースを配置し、ある特定のコンピュータに格納されたデータをオリジナルデータとし、このオリジナルデータを有するコンピュータをベースホストとすると共に、ある特定のコンピュータとは異なる他のコンピュータには、前記ベースホストに格納されているオリジナルデータと同一のレプリカデータを格納し、このレプリカデータを格納したコンピュータをレプリカホストとした分散処理型データベース管理システムにおいて、
あるホストの起動時において、そのホストに配置すべきデータを、そのデータのオリジナルデータが格納されたベースホストまたはオリジナルデータと同一のレプリカデータが格納されたレプリカホストから取得し、その取得したデータを主記憶領域に常駐させ、
前記データベースが、データの処理単位であるレキシコンと、このレキシコンを１つあるいは複数有するレキシコンセットによって構成され、前記オリジナルデータのリトリーブ処理がレキシコンセットを単位として行われるものであり、
前記ネットワークを介して接続された複数のコンピュータの１つにおいて、各ホストに常駐させるべきレキシコンセットとレキシコンと、このレキシコンセットのオリジナルが格納されたベースホストと、レキシコンセットを常駐させるべき各ホストからリトリーブ要求を送り付ける要求送信先ホストのリストを各ホスト毎に設定し、これらの設定されたデータをシステム管理レキシコンセットのオリジナルとしてシステム管理レキシコンセットのベースホストに配置し、各ホストの起動時には、このシステム管理レキシコンセットを、そのベースホストまたはシステム管理レキシコンセットのオリジナルと同一のレプリカデータを格納するレプリカホストから他のホストに対してリトリーブ送信し、
システム管理レキシコンセットに登録されているリトリーブ要求先ホストに従って要求先ホストを決定し、その要求先ホストに対してリトリーブ要求を発信し、このリトリーブ要求に対して、リトリーブ要求先ホストからリトリーブ応答があるか否かを検証し、どこからも応答のない場合は、リトリーブ要求の発信元ホストがシステム管理レキシコンセットのベースホストであるか否かを検証し、リトリーブ要求の発信元ホストがシステム管理レキシコンセットのベースホストである場合には、自ホストにデータがある場合にはそのデータを常駐させ、なければ空のシステム管理レキシコンセットを作成することを特徴とする分散処理型データベース管理システム。
【請求項２】
自ホストに前記データのオリジナルが配置され、システムの起動時において、このオリジナルデータを自ホストの主記憶領域に常駐させることを特徴とする請求項１に記載の分散処理型データベース管理システム。
【請求項３】
自ホストとは異なる他のホストであるベースホストに前記データのオリジナルが配置され、オリジナルデータと同一のレプリカデータが自ホストとは異なるレプリカホストに配置され、システムの起動時において、前記ベースホストまたはレプリカホストから、そのレプリカデータを自ホストに対してリトリーブ送信し、このリトリーブされたデータを自ホストの主記憶領域に常駐させることを特徴とする請求項１に記載の分散処理型データベース管理システム。
【請求項４】
前記リトリーブ処理が、すでにデータを格納しているベースホストまたはレプリカホストからレプリカホストに対してレキシコンセットを単位として実行され、レプリカホストにおいては、リトリーブされたレキシコンセット中の予め定められたレキシコンに対して常駐処理がなされることを特徴とする請求項１ないし請求項３のいずれかに記載の分散処理型データベース管理システム。
【請求項５】
各ホスト上にすべてのデータが常駐された後、常駐状態にあるデータの改変がなされた場合に、前記ベースホストのオリジナルデータと、レプリカホストのレプリカデータとの同一性を確保するためのレプリケーション処理部を設けたことを特徴とする請求項１に記載の分散処理型データベース管理システム。
【請求項６】
予め設定されたデータが各ホストに常駐されて各ホストが稼働状態にある場合に、前記システム管理レキシコンセットのベースホストにおいて、このシステム管理レキシコンセットのデータを更新し、この更新されたシステム管理レキシコンセットのデータを各ホストにレプリケーション送信することにより、各ホストにおける常駐対象データを追加することを特徴とする請求項５に記載の分散処理型データベース管理システム。
【請求項７】
予め設定されたデータが各ホストに常駐されて各ホストが稼働状態にある場合に、前記システム管理レキシコンセットのベースホストと異なるホストにおいて、このホストからシステム管理レキシコンセットのデータをリモートで変更し、このシステム管理レキシコンセットのベースホストから他のホストに対してレプリケーション送信して、各ホストにおける常駐対象レキシコンセット及びレキシコンに関する情報を一元化することを特徴とする請求項５に記載の分散処理型データベース管理システム。
【請求項８】
前記ネットワークを介して接続された複数のコンピュータが予め、レキシコンセットを常駐させるべきホストと、このレキシコンセットのオリジナルが格納されたベースホストと、常駐させるべきホストからのリトリーブ要求を発信する要求先ホストリストとを設定するデータ常駐状態設定部を備え、
このデータ常駐状態設定部の設定に従い、リトリーブ要求先ホストリストに従ってリトリーブ要求を発信し、応答したホスト（ベースまたはレプリカ）から要求元ホストに対してデータを送信するリトリーブデータ管理部を備えたことを特徴とする請求項１ないし請求項７のいずれか１項に記載の分散処理型データベース管理システム。
【請求項９】
前記データ常駐状態設定部には、アクセス対象とするレキシコンセット名、そのレキシコンセットを配置させる常駐ホスト名、およびそのレキシコンセットを常駐させるときに使用するリトリーブホスト名を設定するレキシコンセット常駐設定部と、各ホストに配置するレキシコンをそのレキシコンセットと共に設定するレキシコンセット常駐計画設定部と、前記レキシコンセット常駐計画設定部による設定内容に従って、各ホストにおいて、あるレキシコンが現在常駐しているか否かの状況を確認するレキシコンセット常駐状況設定部が設けられていることを特徴とする請求項８に記載の分散処理型データベース管理システム。
【請求項１０】
各ホスト上にすべてのデータが常駐された後、常駐状態にあるデータの改変がなされた場合に、前記ベースホストのオリジナルデータと、レプリカホストのレプリカデータとの同一性を確保するためのレプリケーション処理部を設けたことを特徴とする請求項８または請求項９に記載の分散処理型データベース管理システム。
【請求項１１】
前記データ常駐状態設定部が、予め設定されたデータが各ホストに常駐されて各ホストが稼働状態にある場合に、前記システム管理レキシコンセットのベースホストにおいて、このシステム管理レキシコンセットのデータを更新し、この更新されたシステム管理レキシコンセットのデータを前記レプリケーション処理部より各ホストにレプリケーション送信することを特徴とする請求項１０に記載の分散処理型データベース管理システム。
【請求項１２】
前記データ常駐状態設定部が、予め設定されたデータが各ホストに常駐されて各ホストが稼働状態にある場合に、前記システム管理レキシコンセットのベースホストと異なるホストにおいて、このホストが所有するシステム管理レキシコンセットのデータを更新し、この更新されたシステム管理レキシコンセットのデータを前記レプリケーション処理部よりシステム管理レキシコンセットのベースホストにレプリケーション送信し、前記レプリケーション処理部が、このシステム管理レキシコンセットのベースホストから他のホストに対してレプリケーション送信して、各ホストにおける常駐対象レキシコンセット及びレキシコンに関する情報を一元化することを特徴とする請求項１０に記載の分散処理型データベース管理システム。
【請求項１３】
ネットワークを介して接続された複数のコンピュータの主記憶領域上にそれぞれデータベースを配置し、ある特定のコンピュータに格納されたデータをオリジナルデータとし、このオリジナルデータを有するコンピュータをベースホストとすると共に、ある特定のコンピュータとは異なる他のコンピュータには、前記ベースホストに格納されているオリジナルデータと同一のレプリカデータを格納し、このレプリカデータを格納したコンピュータをレプリカホストとした分散処理型データベース管理システムをネットワーク上のコンピュータに実現する分散処理型データベース管理プログラムにおいて、
あるホストの起動時において、そのホストに配置すべきデータを、そのデータのオリジナルデータが格納されたベースホストまたはオリジナルデータと同一のレプリカデータが格納されたレプリカホストから取得し、その取得したデータを主記憶領域に常駐させ、
前記データベースが、データの処理単位であるレキシコンと、このレキシコンを１つあるいは複数有するレキシコンセットによって構成され、前記オリジナルデータのリトリーブ処理がレキシコンセットを単位として行わせる処理と、
前記ネットワークを介して接続された複数のコンピュータの１つにおいて、各ホストに常駐させるべきレキシコンセットとレキシコンと、このレキシコンセットのオリジナルが格納されたベースホストと、レキシコンセットを常駐させるべき各ホストからリトリーブ要求を送り付ける要求送信先ホストのリストを各ホスト毎に設定し、これらの設定されたデータをシステム管理レキシコンセットのオリジナルとしてシステム管理レキシコンセットのベースホストに配置し、各ホストの起動時には、このシステム管理レキシコンセットを、そのベースホストまたはシステム管理レキシコンセットのオリジナルと同一のレプリカデータを格納するレプリカホストから他のホストに対してリトリーブ送信する処理と、
システム管理レキシコンセットに登録されているリトリーブ要求先ホストに従って要求先ホストを決定し、その要求先ホストに対してリトリーブ要求を発信し、このリトリーブ要求に対して、リトリーブ要求先ホストからリトリーブ応答があるか否かを検証し、どこからも応答のない場合は、リトリーブ要求の発信元ホストがシステム管理レキシコンセットのベースホストであるか否かを検証し、リトリーブ要求の発信元ホストがシステム管理レキシコンセットのベースホストである場合には、自ホストにデータがある場合にはそのデータを常駐させ、なければ空のシステム管理レキシコンセットを作成する処理を実行させることを特徴とする分散処理型データベース管理プログラム。
【請求項１４】
前記ホスト毎に設定する処理が、アクセス対象とするレキシコンセット名、そのレキシコンセットを配置させる常駐ホスト名、およびそのレキシコンセットを常駐させるときに使用するリトリーブホスト名を設定するステップと、各ホストに配置するレキシコンをそのレキシコンセットと共に設定するステップと、前記の設定内容に従って、各ホストにおいて、あるレキシコンが現在常駐しているか否かの状況を確認するステップから構成されていることを特徴とする請求項１３に記載の分散処理型データベース管理プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータの主記憶上に実現されたデータベースシステムに関するものであって、特に、データベースの管理に加えて、トランザクション管理とバックアップ、障害回復、負荷分散などの分散システム管理などの諸機能を持ち、インターネット／イントラネット上に構築されるアプリケーションシステムをサポートするのに適したデータ分散処理型データベース管理システムに係る。
【０００２】
【従来の技術】
ネットワークに分散したマシン間における共有データをリアルタイムに監視・制御するデータベースシステムでは、大量のデータを高速に処理（検索・更新）する必要があるので、それらのデータへのアクセス手段を提供するデータ管理システムの性能がデータベースシステムの性能を決定する。このようなデータ管理システムの性能向上を図るためには、通常ハードディスク等の外部記憶装置に格納されているデータのすべてを主記憶上に配置して管理することが考えられる。特に、昨今の主記憶容量の増加により、現在のハードウェア環境でも全データを主記憶上に常駐させることは可能となってきている。
【０００３】
【発明が解決しようとする課題】
しかしながら、従来の外部記憶装置を前提にしたデータ管理システムを単に主記憶でキャッシングするだけでは、リアルタイムアプリケーションが必要とする性能を達成することはできない。その理由としては、(a) アプリケーションとデータ管理システムとの間で大量のデータ転送操作が必須となる、(b) 外部記憶装置を前提として設計されたアルゴリズムを各マシンの主記憶上で実行してもそれほど性能が向上しないという２点が挙げられる。さらに、外部記憶装置を前提として設計されたアルゴリズムでは、データ管理システムが提供できる機能が限られているため、多少高速化されてもアプリケーションの開発負荷は軽減されない。
【０００４】
また、近年、２４時間・３６５日稼動のシステム等、高い信頼性を要求するものが多くなっている。このようなシステムにおいては、システムダウンはいかなることがあっても許されない。そのために多重系のシステム構成を取ることが多い。また、このような機能をサポートするためのミドルウェア（ＭＷ）やハードウェア（ＨＷ）はアプリケーション・ソフトウェアでコントロールしなくてはならない。その結果、上記のような機能とデータ構造のアクセスを同時に実現しなくてはならず、多重系でシステムの信頼性を高めても、アプリケーションが複雑になるだけでなく、バグが残りやすくなり、アプリケーションの品質が低下する要因となっている。そのため、データベース管理システムの設定とデータの高信頼化機能を簡単に実装できる手段の開発が切望されていた。
【０００５】
【発明が解決しようとする課題】
以上述べたように、従来のデータベースシステムは、高速性、信頼性および高機能性について不十分なものであって、より具体的には、次のような問題点があった。
【０００６】
（１）機能変更によるシステム停止
システムの開発途中に機能の改造、拡張が発生した場合、当初のデータ構造では対応できない状況が起こりうる。もしそのような状況になった場合はデータベースを変更して対応するが、データベースを変更する際にはシステムを停止しないといけない。しかし、システムが稼動し始めてから機能の変更が起きた場合、システムを停止すると莫大なコストがかかってしまう。また、システムを止めないと機能変更ができないのは保守性の低下を意味する。
【０００７】
（２）構造変更の困難性
システムのライフサイクル中に機能の改造や拡張が発生することはよくある。システム設計時には予想もつかなかったような機能の追加が発生し、当初のデータ構造では対応できない状況が起きてしまうことがある。このような場合、データベースを変更して対応することにより、つぎはぎのデータ構造になりがちであり、このようなデータ構造になると保守性が著しく下がってしまい、生産性や性能が劣化してしまう。
【０００８】
（３）大規模システム開発時における生産性の低下
大規模システムの開発では、同時期に多くの開発者がアプリケーションの開発に携わることになる。データ構造は多くのアプリケーション共通に設計され、個々のアプリケーション固有の特性を配慮されないことが多い。そのためアプリケーション開発者にとってはとても使いにくいデータ構造になることが多い。大規模開発のためのデータ構造開発方法を含む開発スタイルがないため、後戻りや無駄な処理が発生し生産性が悪くなってしまう。
【０００９】
（４）ローカル／リモート処理の困難性
リモートのマシンに対して処理（トランザクション）を行う際、従来のデータベース管理システムではRPC（Remote Procedure Call）を使う必要がある。しかし、このような手法によると、リモートのマシンに対してトランザクションを実行する時は、アプリケーションでの処理手順が変わり、通常の実行より手間がかかる。
【００１０】
本発明は、上記のような従来技術の問題点を解決するために提案されたものであり、その目的は、システム構築が容易で、機能変更等にも柔軟に対応することができる分散処理型データベース管理システムを提供することにある。
本発明の他の目的は、ネットワークで結合された複数のマシンの主記憶上で保有する共有データを、高精度に管理することができるデータベース管理システム及びこの管理システムにおける各種の設定を容易に実行することのできる分散処理型データベース管理システムを提供することにある。
【００１１】
すなわち、複数のサイトに同一内容のデータベースが存在するという状況は分散処理型のデータベースが基本的な機能を発揮する前提である。この前提を構成する方法として、本発明においては、「リトリーブ」という手段を使用して既にデータベースを保有しているサイトからデータの一部または全部を新たな（例えばそれまで停止していて起動した）サイトにコピーして本システムに参加させるという方法を採用する。この方法はシステム全体を停止させることなくシステムに参加するサイト（データベース）を追加できるという効果があり、さらにリトリーブ要求先を複数指定しておいてそれらのうちの可能なサイトからデータを得るので、新たなサイトがシステムに参加する（最新のデータ内容を得ることができる）可能性をシステム管理者（ユーザー）の裁量で高めることができる。
【００１２】
しかも、リトリーブ要求先の指定情報も対象（リトリーブ元）サイトがシステムに参加しているか否かにかかわらず、システムを停止させることなく、設定／変更することができる。したがってシステムを停止させることなく、それまで全く本システムの構成対象になっていなかったサイトを本システムに参加させると同時に、実際に初期データをロードする際の確実性を制御することができるので、システムのオンライン（随時）拡張性が高められる。
【００１３】
【課題を解決するための手段】
上記目的を達成するため、請求項１記載の発明は、ネットワークを介して接続された複数のコンピュータの主記憶領域上にそれぞれデータベースを配置し、ある特定のコンピュータに格納されたデータをオリジナルデータとし、このオリジナルデータを有するコンピュータをベースホストとすると共に、ある特定のコンピュータとは異なる他のコンピュータには、前記ベースホストに格納されているオリジナルデータと同一のレプリカデータを格納し、このレプリカデータを格納したコンピュータをレプリカホストとした分散処理型データベース管理システムにおいて、
あるホストの起動時において、そのホストが必要とするデータを、そのデータのオリジナルデータが格納されたベースホスト、またはオリジナルデータと同一のレプリカデータが格納されたレプリカホストから取得し、その取得したデータを主記憶領域に常駐させることを特徴とする。
このような構成を有する請求項１の発明によれば、システムの起動時において、常にオリジナルデータと同一のデータを、そのデータを利用するホストに常駐させることが可能になり、ネットワーク上に配置された各ホスト間で利用するデータの整合性が確保される。
【００１４】
請求項２の発明は、自ホストに前記データのオリジナルが配置され、システムの起動時において、このオリジナルデータを自ホストの主記憶領域に常駐させることを特徴とする。
このような構成を有する請求項２の発明によれば、自己がデータのオリジナルを有する場合には、そのデータをそのまま自己の主記憶領域に常駐させることで、自ホストに配置されたオリジナルデータに直接アクセスすることが可能になる。
【００１５】
請求項３の発明は、自ホストとは異なる他のホストであるベースホストに前記データのオリジナルが配置され、オリジナルデータと同一のレプリカデータが自ホストとは異なるレプリカホストに配置され、システムの起動時において、前記ベースホストまたはレプリカホストから、そのレプリカデータを自ホストに対してリトリーブ送信し、このリトリーブされたデータを自ホストの主記憶領域に常駐させることを特徴とする。
このような構成を有する請求項３の発明によれば、自ホストの他からリトリーブされたレプリカデータを自ホストに常駐させることにより、常にベースホスト上のオリジナルデータと同一内容のデータを自己の主記憶領域に常駐させて利用することが可能になり、ネットワーク上の各ホストが、オリジナルデータの所在を意識することなく、自ホストのデータとして利用できる。
【００１６】
また、前記請求項１の発明は、前記データベースが、データの処理単位であるレキシコンと、このレキシコンを１つあるいは複数有するレキシコンセットによって構成され、前記オリジナルデータのリトリーブ処理がレキシコンセットを単位として行われることを特徴とする。
このような構成によれば、各ホスト毎に使用するデータが異なる場合であっても、各ホストに対するデータのリトリーブ処理をレキシコンセットを単位として行うため、個々のデータ（レキシコン）毎にリトリーブ処理を行う場合に比較して、その処理単位がまとまり、リトリーブ処理が容易に実行できる。
【００１７】
請求項４の発明は、前記リトリーブ処理が、ベースホストからレプリカホストに対してレキシコンセットを単位として実行され、レプリカホストにおいては、リトリーブされたレキシコンセット中の予め定められたレキシコンに対して常駐処理がなされることを特徴とする。このような構成を有する請求項４の発明によれば、リトリーブ処理はデータをグループ化した処理単位であるレキシコンセットを対象として行い、データの常駐そのものは、各ホストで必要とするレキシコンのみを対象とするので、データ常駐に必要な主記憶領域の効率的な使用が可能となる。
【００１８】
また、前記請求項１の発明は、前記ネットワークを介して接続された複数のコンピュータの１つにおいて、各ホストに常駐させるべきレキシコンセットとレキシコンと、このレキシコンセットのオリジナルが格納されたベースホストと、レキシコンセットを常駐させるべき各ホストからリトリーブ要求を送り付ける要求送信先ホストのリストを各ホスト毎に設定し、これらの設定されたデータをシステム管理レキシコンセットのオリジナルとしてシステム管理レキシコンセットのベースホストに配置し、各ホストの起動時には、このシステム管理レキシコンセットを、そのベースホストまたはシステム管理レキシコンセットのオリジナルと同一のレプリカデータを格納するレプリカホストから他のホストに対してリトリーブ送信することを特徴とする。なお、請求項１３及び請求項１４の発明は、このような構成に対応するデータベース管理プログラムに関するものである。
このような構成によれば、データ常駐およびリトリーブに必要なデータをシステム管理レキシコンセットとして、予めそのベースホストに配置し、これを他のホストにリトリーブ送信することにより、各ホストを起動した場合に、共通のシステム管理レキシコンセットが配置されることになり、各ホストにおけるデータ常駐処理が均等に実施されることになり、どのホストでも他のシステムの状況が把握できて、システムの整合性が確保される。
【００１９】
また、前記請求項１の発明は、システム管理レキシコンセットに登録されているリトリーブ要求先ホストに従って要求先ホストを決定し、その要求先ホストに対してリトリーブ要求を発信し、このリトリーブ要求に対して、リトリーブ要求先ホストからリトリーブ応答があるか否かを検証し、どこからも応答のない場合は、リトリーブ要求の発信元ホストがシステム管理レキシコンセットのベースホストであるか否かを検証し、リトリーブ要求の発信元ホストがシステム管理レキシコンセットのベースホストである場合には、自ホストにデータがあれば自ホストの有するデータをその主記憶領域に常駐させ、自ホストにデータがなければ空のレキシコンセットを作成することを特徴とする。
【００２０】
このような構成によれば、どのホストを立ち上げた場合であっても、リトリーブ要求にどこからも応答がなかった場合、ベースホストかどうか判断し、ベースホストの場合、自ホスト内でデータの常駐をさせて解決するようになるので、データベース管理システムでの重要なベースホストの起動を確実にできる。
【００２１】
請求項５の発明は、各ホスト上にすべてのデータが常駐された後、常駐状態にあるデータの改変がなされた場合に、前記ベースホストのオリジナルデータと、レプリカホストのレプリカデータとの同一性を確保するためのレプリケーション処理部を設けたことを特徴とする。このような構成を有する請求項５の発明によれば、各ホスト上にデータが常駐された後でも、各ホスト上で常駐させたデータの同一性を確保することが可能である。
【００２２】
請求項６の発明は、予め設定されたデータが各ホストに常駐されて各ホストが稼働状態にある場合に、前記システム管理レキシコンセットのベースホストにおいて、このシステム管理レキシコンセットのデータを更新し、この更新されたシステム管理レキシコンセットのデータを各ホストにレプリケーション送信することにより、各ホストにおける常駐対象データを追加することを特徴とする。このような構成を有する請求項６の発明によれば、各ホストの稼働後に常駐対象となるデータの追加・削除・変更があった場合に、これをシステム管理レキシコンセットのベースホストから各ホストに反映させることが可能になる。
【００２３】
請求項７の発明は、予め設定されたデータが各ホストに常駐されて各ホストが稼働状態にある場合に、前記システム管理レキシコンセットのベースホストと異なるホストにおいて、このホストからシステム管理レキシコンセットのデータをリモート実行で更新し、このシステム管理レキシコンセットのベースホストから他のホストに対してレプリケーション送信して、各ホストにおける常駐対象レキシコンセット及びレキシコンに関する情報を一元化することを特徴とする。このような構成を有する請求項７の発明によれば、各ホストの稼働後に常駐対象となるデータの追加・削除・変更があった場合に、これをシステム管理レキシコンセットのベースホストから各ホストに反映させることが可能になる。
【００２４】
請求項８の発明は、前記ネットワークを介して接続された複数のコンピュータが、予め、レキシコンセットを常駐させるべきホストと、このレキシコンセットのオリジナルが格納されたベースホストと、常駐させるべきホストからのリトリーブ要求を発信する要求先ホストリストとを設定するデータ常駐状態設定部を備え、このデータ常駐状態設定部の設定に従い、リトリーブ要求先ホストリストに従ってリトリーブ要求を発信し、応答したホスト（ベースまたはレプリカ）から要求元ホストに対してデータを送信するリトリーブデータ管理部を備えたことを特徴とする。
【００２６】
このような構成を有する請求項８の発明によれば、データ常駐状態設定部とリトリーブデータ管理部とによって、予めデータの常駐先や常駐すべきデータの内容、更には各ホストに対する常駐常駐データのオリジナルの所在を設定しておくことができ、これらの設定内容に従って、システム起動時に各ホストに対するデータの常駐を円滑に実施できる。
【００２７】
請求項９の発明は、前記データ常駐状態設定部には、アクセス対象とするレキシコンセット名、そのレキシコンセットを配置させる常駐ホスト名、およびそのレキシコンセットを常駐させるときに使用するリトリーブホスト名を設定するレキシコンセット常駐設定部と、各ホストに配置するレキシコンをそのレキシコンセットと共に設定するレキシコンセット常駐計画設定部と、前記レキシコンセット常駐計画設定部による設定内容に従って、各ホストにおいて、あるレキシコンが現在常駐しているか否かの状況を確認するレキシコンセット常駐状況設定部が設けられていることを特徴とする。
【００２９】
このような構成を有する請求項９の発明によれば、各設定部により、常駐すべきデータやそのリトリーブ先、更には各ホストにおけるデータの常駐状況などを、そのレキシコンセットおよびレキシコンを対象として詳細に設定・確認することが可能である。
【００３０】
請求項１０の発明は、各ホスト上にすべてのデータが常駐された後、常駐状態にあるデータの改変がなされた場合に、前記ベースホストのオリジナルデータと、レプリカホストのレプリカデータとの同一性を確保するためのレプリケーション処理部を設けたことを特徴とする。このような構成を有する請求項１０の発明によれば、各ホスト上にデータが常駐された後でも、各ホスト上で常駐させたデータの同一性を確保することが可能である。
【００３１】
請求項１１の発明は、前記データ常駐状態設定部が、予め設定されたデータが各ホストに常駐されて各ホストが稼働状態にある場合に、前記システム管理レキシコンセットのベースホストにおいて、このシステム管理レキシコンセットのデータを更新し、この更新されたシステム管理レキシコンセットのデータを前記レプリケーション処理部より各ホストにレプリケーション送信することを特徴とする。このような構成を有する請求項１１の発明によれば、各ホストの稼働後に常駐対象となるデータの追加・削除・変更があった場合に、これをシステム管理レキシコンセットのベースホストから各ホストに反映させることが可能になる。
【００３２】
請求項１２の発明は、前記データ常駐状態設定部が、予め設定されたデータが各ホストに常駐されて各ホストが稼働状態にある場合に、前記システム管理レキシコンセットのベースホストと異なるホストにおいて、このホストが所有するシステム管理レキシコンセットのデータを更新し、この更新されたシステム管理レキシコンセットのデータを前記レプリケーション処理部よりシステム管理レキシコンセットのベースホストにレプリケーション送信し、前記レプリケーション処理部が、このシステム管理レキシコンセットのベースホストから他のホストに対してレプリケーション送信して、各ホストにおける常駐対象レキシコンセット及びレキシコンに関する情報を一元化することを特徴とする。このような構成を有する請求項１２の発明によれば、各ホストの稼働後に常駐対象となるデータの追加・削除・変更があった場合に、これをシステム管理レキシコンセットのベースホストから各ホストに反映させることが可能になる。
【００３３】
【発明の実施の形態】
次に、本発明の実施の形態について図面を参照して具体的に説明する。なお、本実施の形態のうち情報処理に関する部分は、典型的には、コンピュータをソフトウェアで制御することで実現される。この場合のソフトウェアは、コンピュータのハードウェアを物理的に活用することで本発明の作用効果を実現するもので、また、従来技術との共通部分には従来技術も適用される。但し、この場合のハードウェアやソフトウェアの種類や構成、ソフトウェアで処理する範囲などは各種変更可能であるため、以下の説明では、本発明及び実施形態の各機能を実現する仮想的回路ブロックを用いる。
【００３４】
［１．分散データ管理システムの全体像］
本発明は、ネットワークで接続された複数のマシンに備えられたデータベースを、適切且つ効率良く管理するための分散データ管理システムに関するものである。
【００３５】
本発明の詳細については後述するが、ここでは本発明の分散データ管理システム（以下、本システムという）について概説する。すなわち、本システムは、データベース（レキシコンセット）とトランザクションを扱うものであって、アプリケーション（＝ユーザ）からデータベースの内容の参照・検索・更新の一群の操作依頼をトランザクションとして受け付け、そのトランザクションを適切に実行し、必要（要求）に応じて実行完了通知および実行結果をアプリケーションに通知するものである。
【００３６】
図１は、本発明に係る分散データ管理システムの構成を示す図である。すなわち、本システムは、図１に示すように、複数のコンピュータＡ，Ｂ，Ｃ……（各ホストと呼ぶ）を通信ネットワークで接続することによって構成されている。また、各ホストＡ，Ｂ，Ｃの主記憶領域には、それぞれデータベース１ａ、１ｂ、１ｃとこのデータベースにアクセスするためのトランザクション関数２ａ、２ｂ、２ｃが配置されている。
【００３７】
各ホストでは１または複数個のアプリケーションが実行されるが、本システムが複数のホストから構成される場合、異なるホストでは異なるアプリケーションが実行されることが多い。すなわち、アプリケーションＸ，Ｙ，Ｚは本システムの外部にあって、各ホストごとにそのデータベースにアクセスして必要な処理を行う。この場合、各アプリケーションＸ，Ｙ，Ｚは、各ホストに設けられた処理部３ａ、３ｂ、３ｃを介して、本システムに予め登録されているトランザクション関数２ａ、２ｂ、２ｃに参照・更新などの処理を依頼し、その結果を受けてデータベースへのアクセス以外にプログラムの実行に必要となる処理を行う。通常、アプリケーションでは画面への表示や印刷などのフロントエンド処理を行う。
【００３８】
（データベース）
また、本システムのデータベース１ａ、１ｂ、１ｃは、１つ以上の部分（レキシコン）から構成されている。このレキシコンは、レキシコンセットのデータの部分に選択的にアクセスしたり、属性を付与するための単位であって、名称（レキシコン名）等でユニークに識別される。本システムの実行環境においては、図２に示すように、ユニスペースが複数のレキシコンセットを含むことができるので、レキシコンセットもまた名称（レキシコンセット名）等で識別する。さらに、同一の物理的マシン上に共通のネットワークを使用して複数のユニスペース、すなわち異なるレキシコンセットの組を管理する複数のシステムとして本システムを実施することもあり得るので、ユニスペースもまた名称（ユニスペース名）等で区別する。
【００３９】
そして、各ホストのデータベースに格納されているレキシコンセットは、いずれかのホスト上にそのオリジナルデータが保有され、他のホストにはそのコピーであるレプリカデータが保有されている。例えば、図１においては、ホストＡ（コンピュータＡ）には、データＢのオリジナルデータが保有され、ホストＣ（コンピュータＣ）には、データＡのオリジナルデータが保有されている。また、ホストＢ（コンピュータＢ）には、データＡ及びデータＢのレプリカデータが保有されている。また、本システムにおいては、データの更新処理は、オリジナルデータに対してのみ実行でき、レプリカデータでは、データの更新処理を行うことはできない。
【００４０】
（トランザクション）
トランザクションが行うべき操作を抽象化／一般化した手続を「トランザクション関数」と呼ぶ。すなわち、図１に示したトランザクション関数（ＴＲ関数）Ａ，Ｂは、各マシンのデータベースにアクセスして、アプリケーション共通で必要となる処理を実現する関数である。すなわち、本システムにおいては、各アプリケーションＸ，Ｙ，Ｚは、直接データベースにアクセスして処理を行うわけではなく、トランザクション関数を介してデータベースにアクセスするように構成されている。
【００４１】
トランザクションには、各種の属性を付与するため識別子（トランザクション名等）が含まれている。この識別子に対して、例えば実行すべきトランザクション関数を対応付けたりする。この識別子は、付与すべき属性の種類に応じて必要な数を設定すればよい。
【００４２】
トランザクションが操作の対象とするのは、１つのレキシコンセットとする。本システムでは、ユニスペースが複数のレキシコンセットを含むことができるので、トランザクションには、操作対象のレキシコンセットを明記する。このレキシコンセット名を上記識別子の１つと考えても良い。もちろん、他の識別子から操作対象レキシコンセットを判別する手段を設けることもでき、レキシコンセット名の明記は必須ではない。
【００４３】
そして、本システムにおいては、アプリケーションからのデータ操作の依頼をトランザクションを単位として処理する。従って、オリジナルデータに対する更新処理も更新ＴＲを単位として実行され、レプリカサイトにおける更新内容（レプリケーションデータ）のレプリカデータに対する反映処理も、原因となった更新ＴＲを単位として行われる。
【００４４】
（本システムの主たる目的）
本システムの主たる目的は、データベース（レキシコンセット）を複数のマシン上で同一内容に保つことを意図している。すなわち、各マシンは同一内容のデータベースのコピーを保持しており、１つのマシンでそのデータベースに対して更新が加えられた場合には、通信ネットワークを経由して各マシンに更新情報（内容）を伝達し、各マシンのデータベースに更新内容を速やかに反映させることによってこの目的を達成しようとするものである。本明細書においては、この機能を「レプリケーション」と称する。
【００４５】
なお、本明細書においては、データベースを更新する権利を持つマシンをそのデータベースのオリジナルサイト、そのデータをオリジナルデータと呼ぶ。また、それ以外のマシンでそのデータベースのコピーを保有するものをレプリカサイト、そのデータをレプリカデータと呼ぶ。
【００４６】
また、本システムは、データベースを更新するトランザクション（更新ＴＲ）を上記オリジナルサイトで実行する機能を備え、前記レプリケーションと併せて、複数のコピーからなるデータベースを、各マシンのアプリケーションからは論理的に１つのデータベースに見えるように運用する。すなわち、各マシンのアプリケーションはオリジナルサイトがどのマシンかを気にする必要がない。本明細書においては、このようなシステム構成を「リモート／ローカル構造」と呼ぶ。
【００４７】
さらに、本システムにおいては、トランザクションの実行及びレプリケーションデータの反映が一単位完了するまでは、そのデータベース（レキンコンセット）を操作対象とする他のトランザクションの処理を行わない（もちろん他のレプリケーションデータの反映も行なわない）。それらの実行及び反映、また、そのデータベース（レキンコンセット）を操作対象とする他のトランザクションの実行またはレプリケーションデータの反映が進行中の場合は、それらの完了を待って開始される。すなわち、（１つのマシンの）１つのデータベース（レキンコンセント）に関するトランザクションの実行及びレプリケーションデータの反映は、トランザクション単位でシリアルに処理される。それゆえ、トランザクション及びその実行を依頼したアプリケーションが他のトランザクションの実行途中のデータベースの内容にアクセスすることはない。
【００４８】
なお、更新操作を行なわず、データの検索・参照のみを行なうトランザクションを、更新トランザクションに対して参照トランザクションと呼ぶ。本システムでは、レプリケーション機能によって、オリジナルデータとレプリカデータの一致がトランザクション単位で速やかに図られるので、参照トランザクションは、そのトランザクションを依頼されたマシン（ローカルマシン）のレプリカデータを操作対象としても何ら不都合を生じない。
【００４９】
また、通信ネットワークはオリジナルサイトがレプリケーションをレプリカサイトに伝達してレプリケーション機能を実現するための手段であると同時に、レプリカサイトで発行（依頼）された更新トランザクションをオリジナルサイトに転送するための手段でもある。この更新トランザクションをオリジナルサイトのみで実行する機能は、具体的には通信ネットワークを経由してレプリカサイトで発行された更新トランザクションをオリジナルサイトに転送することによって実現される。
［２．用語の説明］
各実施形態について説明する前に、本明細書中で用いられる種々の用語について説明する。
【００５０】
（１）ユニスペース（共有単位領域／データベース実行単位領域）
本システムは、ネットワークで結合された複数のマシン（ホスト）上で協調動作することで、主記憶上の共有データを一貫して維持・更新するためのものであり、本システムにおいて、ユニスペースとは、このシステムを構成する複数のマシン（ホスト）間で共有されるデータおよびデータアクセス（参照・更新）のサービスを区別するための識別子である。この識別子は、サーバ同士が通信する際のグループを識別する際に使用する。また、アプリケーションが各サーバに対して共有データへのアクセスのサービスを要求する際にも利用する。なお、ユニスペースの識別子は、ユニスペースの名前をあらわすアスキー文字列とグループ間通信に利用するＩＰマルチキャストアドレスの組で構成されている。
【００５１】
（２）レキシコンセット
ユニスペースを構成する共有データに部分集合を定めてレキシコンセットと呼ぶ。主記憶領域を構成する各マシンに対して、レキシコンセット毎にデータを配置するか否かの指定が可能である。本システムでは、主記憶データをファイルにバックアップ保存することが可能であるが、この際もレキシコンセット単位となる。
【００５２】
レキシコンセット内には、データベースとして共有データへの高速アクセスを可能にするインデックス機能がある。以下に基本となるデータ構造を記する。
(a) レキシコン（LEXICON）：レキシコンセットの部分集合。レキシコンセットに属する。
(b) セル（CELL）：データを格納する配列。タイプ（データ型）、キャパシティ（配列の長さ）、カウント（ソート時のキーとしての有効長）属性を持つ。レキシコンに属する。
(c) コンテキスト（CONTEXT）：セルに直線的な関係を与えるデータ（セルの配列）。キャパシティ属性を持つ。レキシコンに属する。
(d) ロー（ROW）：コンテキストの一部に対してソートキーを指定するデータ。ローレングス、キーレングスの属性を持つ。コンテキストに属する。
(e) ファサード（FACADE）：ローをソートして検索を可能にするデータ。インデックス機能の中心となるもの。レキシコンに属する。
【００５３】
（３）トランザクション
トランザクションとは、ユニスペース・サービスに参加しているアプリケーションの要求に応じて共有データを一貫して参照および更新する操作を意味する。トランザクションが一度に操作対象とすることが出来るデータの集合は、ひとつのレキシコンセットのみである。
本システムでは、トランザクションを用いて共有データを更新する際は、オリジナルデータが存在する特定のサイト（以下、ベースホスト又はオリジナルサイトと呼ぶ）で更新後、同じユニスペースを構成する他サイトに更新結果（以下、レプリケーションと呼ぶ）をマルチキャストすることでデータの一貫性を保持している。なお、このベースホストはレキシコンセット毎に指定することができる。
アプリケーションの発行するトランザクションを、本システムでは、(a) ローカル参照、(b) ローカル更新、(c) リモート更新の３つに区別する。
【００５４】
(a)ローカル参照
トランザクション操作が共有データの参照だけの場合で、完全にローカルな主記憶データへのアクセスとして処理され、ネットワークのトラフィックは一切発生しない。言い換えれば、トランザクションの実行によりデータが参照されるだけで、なんら変更されないので、自サイトがオリジナルサイトであるかレプリカサイトであるかを問わず、常に自サイトの主記憶データにアクセスすることにより、トランザクションの実行処理がなされる。
【００５５】
(b) ローカル更新
トランザクションを発行したアプリケーションが存在するサイトがオリジナルサイトの場合。つまり、自サイトでデータ更新をすることができ、更新後、他のサイトにその更新データをマルチキャスト送信することにより、常に各ホストで同一のデータを利用できるようにする機能をいう。
【００５６】
(c) リモート更新
トランザクションを発行したアプリケーションが存在するサイトがレプリカサイトの場合。つまり、自サイトのデータはレプリカデータなので、データ更新をすることができず、そのトランザクションをオリジナルサイトに転送し、オリジナルサイトでデータ更新後、その更新データをレプリケーション受信することにより、常に各ホストで同一のデータを利用できるようにする機能をいう。
なお、自サイトがレプリカサイトであり、且つ、トランザクションを発行したアプリケーションが存在しない場合には、オリジナルサイトからレプリケーションされた更新データを、自サイトに反映させることにより、常に各ホストで同一のデータを利用できるように構成されている。
【００５７】
前記(b) のローカル更新と(c) のリモート更新の区別は、ベースホストがトランザクション受付サイトと同じであるか否かに依存して区別される。(b) のローカル更新の場合はローカルな主記憶データを更新したタイミング、(c) のリモート更新の場合はトランザクションをベースホストに転送し共有データを更新後、レプリケーションを受信してローカルデータを更新したタイミングで終了する。あくまでもこのローカル更新とリモート更新の区別は本システム内で行われるので、アプリケーションがこれについて意識することはない。
【００５８】
（５）リトリーブ
リトリーブとは、システムの起動時またはレキシコンセットデータを主記憶上に格納するときに、オリジナルデータやレプリカデータを設定された通りに利用可能な状態にする機能である。自ホストの他から（オリジナルでもレプリカでもよい）レキシコンセットデータのすべてをネットワーク経由で受け取る。
【００５９】
また、リトリーブ要求を送る相手先のホストのリストを指定することができる。あるルールに従ってホストリストの中のホストに対して送信要求を出す。オリジナルやレプリカの配置、ネットワークの帯域幅、マシンのスペックなどによってホストリストを決定することで、システム構成に適した設定をとることができる。
なお、一般には、データはネットワークを通じて各ホストに配置されるが、システムの起動時においては、ネットワークからのリトリーブに失敗した時はファイルからのロードも可能であり、また、ネットワークリトリーブをする前にファイルからのロードを行うことも可能である。
【００６０】
（６）レプリケーション
レプリケーションとは、更新トランザクションによるデータの変更を他のマシンへマルチキャストで送信する機能である。オリジナルで更新トランザクションを実行し、更新分のみをマルチキャストでレプリカへ送信する。レプリカ側はそれを受信し、レプリカデータへ反映する。
【００６１】
（７）バックアップ
バックアップとは、２次記憶装置へレキシコンセットの内容を保存する機能である。２次記憶へバックアップするかどうかはオプションで指定できるので（適宜指定することができるように構成されているので）、要求するスループットや信頼性向上などに柔軟に対応したシステム構成をとることができる。
バックアップ機能で保存されたデータは、起動時や障害回復時のリトリーブ機能で使用される。２次記憶装置へのバックアップ処理は、トランザクション処理と非同期で処理されるため、トランザクション処理のスループットを低下させることはなく、主記憶データ管理の高速性を維持できる。
【００６２】
（８）ネットワークを構成するサイト等に関する用語
ローカルサイト：自サイトのこと
リモートサイト：他のサイトのこと
オリジナルサイト：オリジナルデータを持っているサイト
レプリカサイト：レプリカデータ（コピー）を持っているサイト
【００６３】
［３．各ホストの構成…図２］
次に、各ホストの構成を図２によって説明する。
前記の全体構成図で説明したように、各ホストの主記憶領域には、それぞれデータベース管理システム１が配置されている。この管理システム１は、複数の処理部あるいは設定部と、これらの処理や設定を反映させるためのレキシコンセット２と呼ばれるデータベースを備えている。また、システム管理アプリケーションや業務アプリケーションとの接点（窓口）となるトランザクション受付部３および各ホストをネットワークに接続するための送信部および受信部４，５を備えている。
【００６４】
この管理システムが備えている複数の処理部および設定部としては、次のものが用意されている。
（１）システム構成設定部１１
このシステム構成設定部１１は、ベースホスト設定部１１１、バックアップホスト設定部１１２、レキシコン定義部１１３およびマルチキャストアドレス設定部１１４を備えている。
このうち、ベースホスト設定部１１１は、複数のホストのいずれかにオリジナルデータをおくか、すなわち、あるレキシコンセットのベース（オリジナル）をネットワーク上のどのホストに置くかを定義する。バックアップホスト設定部１１２は、本システムが稼動中、各ベースホストについて、１つ以上のバックアップホストが存在するように配置する。レキシコン定義部１１３は、ベースホスト設定部１１１によって定義されたレキシコンセットについて、そのレキシコンに属するレキシコンを決定する。マルチキャストアドレス設定部１１４は、各レキシコンセットについて、システム起動時のパラメータとしてデフォルトのマルチキャストアドレスを設定したり、デフォルトと異なるマルチキャストアドレスを設定する。
【００６５】
（２）トランザクション管理部１２Ａ
トランザクション管理部１２Ａは、アプリケーションが利用するトランザクションと、このトランザクションによって実行されるトランザクション関数を定義したり、このトランザクション関数がアクセスするレキシコンセットとの関係を定義する。また、トランザクションを利用してレキシコンセット内のデータの参照・更新・検索などの処理を行う。
【００６６】
（３）トランザクション処理部１２Ｂ
トランザクション処理部１２Ｂは、前記トランザクション管理部１２Ａの設定に従い、アプリケーションからのトランザクションの実行依頼があった場合に、そのトランザクションに対応するトランザクション関数を選択して、このトランザクション関数を用いてレキシコンセット内のデータの参照・更新・検索などの処理を行う。
【００６７】
（４）データ常駐管理部１３
このデータ常駐管理部１３は、各ホストにどのレキシコンセットを常駐させるか、すなわち、各ホストの業務アプリケーションがどのレキシコンセットのデータにアクセス可能かを、あらかじめ設定する処理を行う。また、システムの稼働時には、必要なデータをベースホストから各レプリカサイト呼び出すリトリーブ処理や、新たなレキシコンセットを所定のホストに追加常駐させたり、常駐を解放したりする常駐状態の変更処理も行う。このデータ常駐管理部１３の構成については、図５に詳述する。
【００６８】
（５）レプリケーション処理部１４
このレプリケーション処理部１４は、システム構成設定部においてあらかじめ設定されたベースホストとレプリカサイトとの間で、データの同一性を確保するためのレプリケーション処理を行う。すなわち、業務アプリケーションが行うデータに対するアクセスは、トランザクションを介して行われるが、このトランザクションには前記用語の説明で述べたように、データを参照するだけの「参照」と、データが変更される「更新」の２種類の処理がある。また、そのＴＲを実行するホストにも「ローカルサイト…自サイトのこと」と「リモートサイト…他のサイトのこと」の２種類がある。そこで、このレプリケーション処理部１４は、これらの種類に応じて、前記用語の説明で述べた次の処理を行う。
(a) ローカル参照処理
(b) ローカル更新処理
(c) リモート更新処理
【００６９】
（６）ベースホスト切替処理部１５
前記システム構成設定部１１で設定したように、各レキシコンセットについては、そのベースホストがあらかじめ設定され、それに従ってシステムが稼働されている。ところが、ネットワーク上に接続されている各ホストの故障、保守点検、ネットワーク障害などの理由から、レキシコンセットのベースホストを他のホストへ切り替えることが必要となる場合がある。この場合、ネットワーク上に接続されている各ホストには、次の３種類の立場がある。すなわち、(a) 現在Baseホストであるホスト（旧Baseホスト）、(b) 次にBaseホストになる予定のホスト（新Baseホスト）、(c) 上記２種以外のホスト（他のホスト）である。
このベースホスト切替処理部１５は、前記の３種のホストにおいては、旧ベースホストから新ベースホストあるいは他のホストへのオリジナルデータのレプリケーション、および切替後のベースホストがどのホストであるかを各ホスト間に周知させるための処理を行う。
【００７０】
［４．システム構成の設定…図３］
前記図２示したような各ホストについて、本実施の形態では、次ぎのように各種の設定を行う。この設定は、システム管理アプリケーションから実行を依頼されたデータ管理システム設定トランザクションが、各設定部や処理部にアクセスすることにより行われる。
すなわち、本システムは、各ホストの主記憶領域（本実施の形態では、ユニスペース／Unispaceと呼ぶ）上にレキシコンセットと呼ばれるデータ及びこのデータに対して様々な処理を行うためのトランザクションに関するデータのすべてを配置するものであるから、以降の例では、主記憶領域が予め正しく初期化されていることを前提とする。
【００７１】
本システムを稼働するには、このように初期化完了された主記憶領域に対しては、各データを割り当て、各データに対する種々の設定を行うのであるが、そのために、専用のシステム管理アプリケーションが使用される。
トランザクションの登録もアプリケーションから行うものであるが、トランザクションの実行依頼を行うアプリケーションとトランザクションの登録を行うアプリケーションでは異なったアプリケーションを使用しているため、アプリケーションの種類は異なったものである。そこで、本実施の形態では、トランザクションの登録等のシステム設定を行うアプリケーションのことを、「システム管理アプリケーション」と呼び、トランザクションの実行依頼を行うアプリケーションを「ユーザ実行アプリケーション」と呼ぶ。
【００７２】
（１）レキシコンセットの定義（Ｓ０３０１）
ユーザは、設計時に決めたレキシコンセットを定義する必要がある。すなわち、システム管理アプリケーションから発行したトランザクションを、トランザクション受付部３が受け付け、このトランザクション受付部３からの指令により、図２のシステム構成設定部１１に設けられたベースホスト設定部１１１がレキシコンセットのベースホストを指定する。以下の例は、Unispaceと呼ばれる主記憶領域に対して、定義するレキシコンセットの「本名」と、このレキシコンセットのベース（オリジナル）をネットワーク上のどのホストに置くかを定義している。すなわち、"SampleLexiconSet"というレキシコンセットをベースホスト"host_1"で定義する。
DefineLexiconSet(&us,"SampleLexiconSet","host_1");
ただし、この状態では、レキシコンセットが定義されただけで、実体であるデータはどこにもない。
【００７３】
（２）バックアップホストの定義（Ｓ０３０２）
すなわち、システム構成設定部１１に設けられたバックアップホスト設定部１１２により、ユーザは、各レキシコンセットのバックアップホストを１つ以上定義するもので、その際、本システムが稼動している限り常に1つ以上のバックアップホストが存在するように配置する。また、バックアップホスト設定部１１２により、各バックアップホストにおいてファイルのバックアップを取るか否か決める。例えば、SampleLexiconSetのBackupホストとしてhost1、host2とし、host1ではファイルBackupし、host2ではファイルBackupしない場合は以下の通りである。
SetLexiconSetBackupHost(&us,"SampleLexiconSet","host1",TRUE);
SetLexiconSetBackupHost(&us,"SampleLexiconSet","host2",FALSE);
【００７４】
（３）レキシコンの定義（Ｓ０３０３）
次に、レキシコン定義部１１３により、前記のように定義されたレキシコンセットの中にそのレキシコンセットに属するレキシコンを定義する。この場合、本実施の形態では、定義するレキシコンには、それが属するレキシコンセットと共に、そのレキシコンがシングルオリジナルかマルチオリジナルかのタイプも合わせて定義する。ここで、シングルオリジナルのレキシコンはレキシコンセットのベースホストでのみ更新操作(cell/contextの作成/変更 etc)が可能である。ベースホスト以外のホストでは、レキシコンの内容はベースホストでの更新操作の結果がレプリケーションされて反映される。マルチオリジナルのレキシコンでは、どこのホストでも更新操作が可能である。更新操作の結果はレプリケーションされず、更新結果はローカルにとどまる。
すなわち、"SampleLexiconSet"の中に２つのレキシコン"Lexicon_1"、"Lexicon_2"を定義する。"Lexicon1"をシングルオリジナルとし、"Lexicon2"をマルチオリジナルとする。
DefineLexiconInLexiconSet(&us,"SampleLexiconSet","Lexicon1",SingleORG);
DefineLexiconInLexiconSet(&us,"SampleLexiconSet","Lexicon2",MultiORG);
【００７５】
（４）トランザクションライブラリの定義（Ｓ０３０４，Ｓ０３０５）
本システムにおいて、トランザクション関数とトランザクションは１対１に対応しており、トランザクション処理部１２は、トランザクションの集合をライブラリとして定義し、このランザクションライブラリをレキシコンセットに登録する。
例えば、トランザクションライブラリ"TRLIB"をレキシコンセット "SampleLexiconSet"に定義する。ライブラリは3つのトランザクション "tr1","tr2","tr3"からなる場合。
char *TrNames[3];
TrNames[0]="tr1"; TrNames[1]="tr2"; TrNames[2]="tr3";
DefineTransactionLibrary(&us,"SampleLexiconSet","TRLIB",3,TrNames);
このようにしてトランザクションが定義されたが、実行できるトランザクションの実体はまだない。
【００７６】
（５）トランザクション名とトランザクション関数名の関連付け（Ｓ０３０６）また、トランザクション処理部１２は、トランザクション名とトランザクション関数名を関連付ける。同時に、トランザクションのアクセス対象レキシコンとアクセス形態を決定し、トランザクションと関連付けてレキシコンセットに登録する。この時点で、トランザクションがどのレキシコンに対してアクセスされるか設定される。ここで、アクセス形態とは、参照または更新を示す。参照の場合は、トランザクションはレキシコンの内容の参照のみが許され、レキシコンの内容を書き換えることは不可能である。更新の場合は、レキシコンの内容を参照することも、内容を書き換えることも可能である。
例えば、３つのトランザクション "tr1","tr2","tr3"がそれぞれトランザクション関数 "tr1all", "tr2srh", "tr3upd"に関連付けられ、"tr1"はレキシコン "Lexicon1","Lexicon2"を更新し、"tr2"は"Lexicon1"のみ参照し、"tr3"は"Lexicon1"を更新し、"Lexicon2"を参照する場合は以下の通りである。
char *lex[2];
int mode[2];
lex[0]="Lexicon1"; lex[1]="Lexicon2";
mode[0]=TRUE; mode[1]=TRUE;
AttachTransactionToFunction(&us,"SampleLexiconSet","tr1","tr1all",2,lex,mode);
lex[0]="Lexicon1";
mode[0]=FALSE;
AttachTransactionToFunction(&us,"SampleLexiconSet","tr2","tr2srh",1,lex,mode);
lex[0]="Lexicon1"; lex[1]="Lexicon2";
mode[0]=TRUE; mode[1]=FALSE;
AttachTransactionToFunction(&us,"SampleLexiconSet","tr3","tr3upd",2,lex,mode);
この場合、トランザクション名とトランザクション関数名が関連付けられただけであり、まだトランザクションが実行できる状態ではない。
【００７７】
（６）レキシコン配置の定義（Ｓ０３０７）
データ常駐管理部１３は、レキシコンを配置するホストを定義する。各ホストで実行するトランザクションに必要なレキシコンだけを配置するのが最もリソース節約になる。計算機に余裕があるならば各ホスト同一の配置状況にするのを勧める。例えば、レキシコンセット "SampleLexiconSe"の"Lexicon1"と"Lexicon2"をホスト "host1"に配置する場合波、以下の通りである。。
DefineHostOfLexiconResidence(&us,"SampleLexiconSet","Lexicon1","host1");
DefineHostOfLexiconResidence(&us,"SampleLexiconSet","Lexicon2","host1");
この状態では、レキシコンを配置するホストを定義しただけであり、実際にレキシコンのデータが配置されたり、またはレキシコンのデータを格納する主記憶領域が確保されない。実際にデータが配置され主記憶領域が確保されるのはレキシコンセットデータの常駐を行ったときである。
【００７８】
（７）トランザクションライブラリとDLLファイルのロード（Ｓ０３０８）
次に、トランザクション処理部１２は、トランザクション関数をライブラリ化したDLLファイルをトランザクションのライブラリと関連付けて、レキシコンセットが格納されている本システムが起動しているホストにロードする。ロードする時点でトランザクション関数名との関連付けができているトランザクションのみトランザクション関数ポインタとリンクされる。トランザクションライブラリ内のトランザクション全てに対して、トランザクション関数名の関連付けを見つけ出し、ロードしたDLLファイルからトランザクション関数名を用いてトランザクション関数ポインタを見つけ出してリンクする。例えば、トランザクションライブラリ "TRLIB"に対して、ホスト "host1" でDLLファイル"c:\gigabase\trfunc.dll"をロードする場合は以下の通りである。なお、ファイルタイプはDLLである。
LoadTransactionLibraryFile(&us,"SampleLexiconSet","TRLIB","host1","c:\gigabase\trfunc.dll",DLL);
【００７９】
ここで初めてトランザクションと関数ポインタがリンクされたが、実際にトランザクションが実行できるためには実行するトランザクションのレキシコンセットが実行するホストにおいて常駐されていなければならない。
これで、トランザクション関数が本システムにロードされ、トランザクションとトランザクション関数の関連付けが完了した。このようにしてトランザクションを本システムに登録することにより、トランザクション関数は本システム上で実行され、本システム内でデータベースの操作が可能になる。
【００８０】
（８）レキシコンセット別名の定義（Ｓ０３０９）
さらに、トランザクション処理部１２では、トランザクションの実行をアプリケーションから投げる際、レキシコンセットの別名を指定して実行できる。レキシコンセットの別名でトランザクションを実行したい場合は、トランザクションの実行より予め別名を定義する。例えば、レキシコンセット "SampleLexiconSet"に別名"ALIAS"を定義する場合は以下の通りである。
DefineLexiconSetAlias(&us,"SampleLexiconSet","ALIAS");
アプリケーションからトランザクションの実行を投げる場合、"SampleLexiconSet"だけでなく"ALIAS"でも投げられる。なお、本実施の形態では、システム管理アプリケーションではレキシコンセット別名を使用できないように構成する。
【００８１】
（９）マルチキャストアドレスの設定（Ｓ０３１０）
本設定を行わなければ、ユーザ定義のレキシコンセットに関する通信は、システム起動パラメータで設定されたデフォルトのマルチキャストアドレスで行われる。そこで、システム構成設定部１１におけるマルチキャストアドレス設定部１１４により、この設定を行うとデフォルトと異なるマルチキャストアドレスで通信を行うようになる。デフォルトマルチキャストアドレスと異なるマルチキャストアドレスでレキシコンセットの通信を行う場合は、設定する。
設定したマルチキャストアドレスでレキシコンセットデータの通信を行わせるには、本設定を行ってからレキシコンセットデータの常駐を行わなければならない。あるホストにおいてマルチキャストアドレスを設定する前にレキシコンセットデータの常駐済みの場合、既にデータの送受信を行っているためマルチキャストアドレスは変更されない。この場合はいったんレキシコンセットデータを非常駐として再び常駐させ直せば、設定したマルチキャストアドレスが有効になる。例えば、"SampleLexiconSet"にマルチキャストアドレス 232.122.32.93 を設定する場合は、以下の通りである。
unsigned int maddr;
maddr=(232＜＜24)+(122＜16)+(32＜＜8)+93;
SetMulticastAddressForLexiconSet(&us,"SampleLexiconSet",maddr);
【００８２】
（１１）レキシコンセットの常駐（Ｓ０３１１）
ユーザはデータ常駐管理部１３により、各ホストにおいてレキシコンセットの常駐を行うことで、データを主記憶領域にロードしトランザクション関数を実行できるようになる。本設定をするとき、どこからレキシコンセットのデータを取ってくるか指定しなければならない。これがリトリーブ要求先ホストである。
レキシコンセットを常駐させたいホストにおいて本システムが起動していない場合、実際のレキシコンセットデータの常駐動作であるリトリーブは動かず、常駐情報が定義されるだけである。この場合,実際にリトリーブが動くのは、次に本システムが起動されたときである。
【００８３】
すなわち、レキシコンセットの常駐動作では、本システムが起動済みであると、データのリトリーブを行う。レキシコンセットデータのリトリーブが済むと、その時点でリンク済みであるTRが実行できるようになる。レキシコンセットデータのリトリーブが済むと、設定されているならばマルチキャストアドレスが使用できるようになる。また、レキシコンセットのリトリーブが動くとき、その時点でそのホストで配置が定義されているレキシコンだけが主記憶上にデータが格納される。
例えば、レキシコンセット "SampleLexiconSet"をホスト"host1"に配置する場合。そのときリトリーブ要求先ホストを " host2","host3"とする。
char *rethost[2];
rethost[0]="host2"; rethost[1]="host3";
LoadLexiconSetData(&us,"SampleLexiconSet","host1",2,rethost);
【００８４】
［５．アプリケーションとトランザクション関数の実行手順…図４］
アプリケーションからトランザクション関数が呼び出されて一連の処理を実行する処理フローを図４および図７に示す。
(1) アプリケーションは、最初に本システムへの接続を行う（Ｓ０４０１）。
(2) アプリケーションは、本システムとのデータのやり取りをするための共有メモリを確保する（Ｓ０４０２）。
(3) アプリケーションは、トランザクション関数へ渡す入力パラメータを共有メモリへセットする（Ｓ０４０３）。
(4) アプリケーションは、トランザクションの実行依頼を本システムへ出す（Ｓ０４０４）。
(5) アプリケーションは、トランザクション関数の処理が終了するまで実行待ちに入る（Ｓ０４０５）。
(6) 本システムは、アプリケーションからトランザクションの実行依頼を受けると、指定されたトランザクション関数を起動する（Ｓ０４０６）。すなわち、図７に示すように、アプリケーションが、自己が実行しようとすると処理に対応するトランザクションの実行依頼を行うと、そのトランザクションに１対１に対応したトランザクション関数が選択され、そのトランザクション関数が起動される。
(7) トランザクション関数は、起動されると最初にアプリケーションからの処理に必要なパラメータを共有メモリから取り出す（Ｓ０４０７）。
(8) トランザクション関数は、次に、データベースへ参照、検索、更新、削除、追加などのアクセスを行う。このデータを使ってトランザクション関数の処理を行い、出力として必要なデータを作成する（Ｓ０４０８）。この場合、トランザクション関数は、システム管理アプリケーションにより予め登録されているレキシコンセットのレキシコンに対して、必要な処理を行う。
(9) トランザクション関数は、作成したデータを共有メモリにセットする（Ｓ０４０９）。
(10)トランザクション関数は、処理を終了する（Ｓ０４１０）。
(11)本システムは、トランザクション関数の処理が終了すると、トランザクションの終了通知をアプリケーションへ伝える（Ｓ０４１１）。
(12)アプリケーションは、終了通知を受け取ると、トランザクション関数の処理結果を共有メモリから読み出す（Ｓ０４１２）。
(13)アプリケーションは、共有メモリを開放する（Ｓ０４１３）。
(1４)アプリケーションは、一連の処理が終わって本システムへのアクセスが不用になれば本システムからの切断を実行する（Ｓ０４１４）。
(15)アプリケーションは、終了する（ＥＮＤ）。
【００８５】
［６．参照トランザクションと更新トランザクションの実行］
前記のようなトランザクションの実行時において、ユーザアプリケーションから依頼されたトランザクションの種類、すなわち前記図３のステップＳ０４０８におけるデータベースへの参照、検索、更新、削除、追加などアクセス形態によって、本システム内の処理が次のように異なる。
【００８６】
（１）参照トランザクション
トランザクションが、データベースに改変を加えることのない参照トランザクションの場合、トランザクション処理部１２はアクセス対象レキシコンに対してトランザクションを実行させる。そして、トランザクションの実行が終わった後、その実行結果をアプリケーションに対して通知する。この参照トランザクションは、データを参照するだけでその書き換えを行うことがないので、そのホストにあるデータがオリジナルデータであるか、レプリカデータであるかを問わず、各サイトで実行できる。
【００８７】
（２）更新トランザクション
更新トランザクションの場合、実行を依頼したホストがオリジナルデータを持つか(以下、オリジナル側)、レプリカデータを持つか(以下、レプリカ側)によって処理が異なる。
まず、オリジナルデータを持つ場合は、参照トランザクションと同様にトランザクション処理部１２がアクセス対象レキシコンに対してトランザクションを実行させ、実行結果をアプリケーションに通知する。
レプリカデータを持つ場合、トランザクションで直接レキシコンを更新することはできない。そこで、レプリカサイトのトランザクション処理部１２がネットワークを介して、ベースホストのトランザクション処理部１２にトランザクションの実行依頼を行う。ベースホストのトランザクション処理部１２は、ベースホストに格納されているトランザクションを実行し、オリジナルデータのレキシコンを更新する。オリジナルデータが更新されると、レプリカサイトにその更新データがレプリケーションされ、レプリカサイトのデータが更新される。レプリカサイトのデータが更新されると、レプリカサイトのトランザクションはその実行結果をアプリケーションに結果を通知する。
【００８８】
［７．トランザクションに関する設定］
このような本システムを実行するには、次のようなシステム構成を設定することが必要となる。このシステム構成の設定は、一般には、システム管理アプリケーションと呼ばれるプログラムによって行われる。
(1) レキシコンセット名とそのベースホスト(切り替え先候補)
(2) レキシコンセットとそれに含まれるレキシコン
(3) トランザクションライブラリとそれに含まれるトランザクション
(4) トランザクション名とこのトランザクションを実行するために必要なトランザクション関数
(5) トランザクションがアクセスするレキシコンとそのアクセス形態(参照/更新)
(6) レキシコンセットの別名（必要ならば）
(7) レキシコンセットを各ホストに反映させるために行うレプリケーション送信のマルチキャストアドレス（必要ならば）
(8) 各ホストで常駐させるレキシコンセット
(9) 各ホストに配置するレキシコン（常駐させるレキシコンセットに含まれている）
(10)各ホストでロードするトランザクションライブラリとそのDLLファイル名
(11)各レキシコンセットのバックアップホストとそれぞれファイルバックアップの有無
【００８９】
［８．データ常駐管理部］
［８−１．データ常駐管理部の構成…図５］
以下、前記のようなデータの常駐処理に関する設定を行うデータ常駐管理部１３の一実施の形態を図５に示す機能ブロック図に従って説明する。
【００９０】
すなわち、本実施形態のデータ常駐管理部１３は、前記図２の各ホストの構成の欄で説明したように、トランザクション受付部３を介してシステム管理アプリケーションＳＹＳ＿ＡＰから依頼されたデータ管理システム設定トランザクションの処理に従って、ネットワークを構成する各ホストにおけるデータ常駐に関する種々の設定を行うものである。このデータ常駐管理部１３には、各ホストにおけるデータの常駐状態を設定するための常駐状態設定部４０１と、前記常駐状態設定部４０１の設定内容に基づいて常駐すべきデータをそのベースホストからリトリーブするためのリトリーブデータ管理部４０５とが設けられている。
【００９１】
前記常駐状態設定部４０１には、レキシコンセット名とそのレキシコンセットを配置するホスト名（常駐ホスト名）を列挙したレキシコンセット−常駐ホスト対応表５０１（表Ａ）、及びレキシコンセット名とそのレキシコンセットを配置させるホスト名（常駐ホスト名）とそのレキシコンセットを常駐させるときに使用するリトリーブホストを列挙したリトリーブ要求先ホスト対応表５０２（表Ｂ）を作成するレキシコンセット常駐設定部４０２が設けられている。このリトリーブ要求先ホスト対応表５０２により、同一ホストをリトリーブ先としてリストに登録しているレキシコンセット名を列挙することができる。なお、レキシコンセット−常駐ホスト対応表５０１とリトリーブ要求先ホスト対応表５０２の一例を下記に示す。
【００９２】
【表１】
0004131781.tif 000002
【表２】
0004131781.tif 000003
【００９３】
また、前記常駐状態設定部４０１には、レキシコン−常駐ホスト対応表５０３（表Ｃ）を作成するレキシコンセット常駐計画設定部４０３と、このレキシコン−常駐ホスト対応表５０３（表Ｃ）に基づいて各ホストが独自に作成するレキシコン常駐状況表５０４（表Ｄ）を作成するためのレキシコンセット常駐状況設定部４０４が設けられている。なお、このレキシコン−常駐ホスト対応表５０３（表Ｃ）とレキシコン常駐状況表５０４（表Ｄ）の一例を下記に示す。
【表３】
0004131781.tif 000004
【表４】
0004131781.tif 000005
【００９４】
前記表Ｃは、あるホストにデータ配置するレキシコンをレキシコンセット名、レキシコン名の組で列挙したものであり、いわば常駐計画表として機能する。また、表Ｄは、常駐計画を示したレキシコン−常駐ホスト対応表を参照して各ホスト毎に作成される表であって、各ホストにおいて、あるレキシコンが現在「常駐」しているか否かの状況を示すものである。なお、前記の表Ａから表Ｃは、システム管理レキシコンセットのベースホストにおいて、システム管理レキシコンセットの一部として作成され、各ホストの起動時には、リトリーブ要求先ホストリストに従ってリトリーブ要求を出してリトリーブ受信する。
【００９５】
また、本実施形態のデータ常駐管理部１３には、自ホストにおいて「常駐する」との設定がなされている各レキシコンセットについて、そのレキシコンセットを他のホストからリトリーブしてもらうためのリトリーブ要求を送信するために、前記表Ｂを参照して各レキシコンセット毎にリトリーブ要求先を決定するリトリーブ要求先決定部６０１と、そのリトリーブ要求先に対してリトリーブ要求を発信するリトリーブ要求送信部６０２とが設けられている。また、リトリーブ要求先ホストから送られたリトリーブデータを受信するリトリーブデータ受信部６０３が設けられている。これらのリトリーブ要求送信部６０２とリトリーブデータ受信部６０３とは、各ホストに配置されたデータベース管理システム１の送信部５と受信部６とに接続され、ネットワークを介して他のホストに送信される。
【００９６】
本実施形態のデータ常駐管理部１３には、前記のようにリトリーブデータ管理部４０５が備えられ、このリトリーブデータ管理部４０５には、前記リトリーブデータ受信部６０３が受信したレキシコンセットの各レキシコンが自ホストに常駐させるべきものであるか否かを判定する常駐レキシコン判定部４０６と、自ホストに常駐させるレキシコンであると判定した場合に主記憶領域を割り当てる主記憶領域割当部４０７が設けられている。
【００９７】
［８−２．データ常駐管理部の作用］
前記のような構成を有するデータ常駐管理部１３を備えた各ホストにおいて、システム管理アプリケーションＳＹＳ＿ＡＰによりデータ管理システム設定トランザクションの実行が依頼されると、以下に述べるような処理がなされる。
【００９８】
［８−２−１．各ユーザにおける本システム初期起動時の処理］…図６，図７
先ず、起動ホストのリトリーブ要求先決定部６０１が、システム管理レキシコンセットに登録されているリトリーブ要求先ホスト対応表５０２（表Ｂ）に従って要求先ホストを決定し、リトリーブ要求送信部６０２を介して、その要求先ホストに対してリトリーブ要求を発信する（Ｓ０６０１）。
【００９９】
このリトリーブ要求に対して、リトリーブ要求先ホストからリトリーブ応答があるか否かを検証し（Ｓ０６０２）、応答のない場合（Ｓ０６０２の"ＮＯ"）は、現起動ホストはシステム管理レキシコンセットのベースホストであるか否かを検証する（Ｓ０６０３）。すなわち、現起動ホストがベースホストである場合には、他のホストからのリトリーブ要求の応答がなくとも起動可能なので、応答のない場合の可能性として、現起動ホストがベースホストであるか否かの検証を行う。
【０１００】
ステップＳ０６０３において、現起動ホストがベースホストでない場合（Ｓ０６０３の"ＮＯ"）は、他のホストがベースホストであるにもかかわらず、リトリーブ応答がないわけであるから、何らかの異常があって初期起動が失敗した状態であるため（Ｓ０６０４）、処理を終了する。一方、現起動ホストがベースホストであるためリトリーブ応答がない場合には（Ｓ０６０３の"ＹＥＳ"）、初期起動は成功するが、その場合、表Ａ〜表Ｃは空の状態である（Ｓ０６０５）。
【０１０１】
一方、前記ステップＳ０６０２において、リトリーブ要求先ホストからリトリーブ応答があった場合には（Ｓ０６２の"ＹＥＳ"）、システム管理レキシコンセットのリトリーブを受信し（Ｓ０６０６）、これを主記憶領域割当部４０７により主記憶領域に割り当てる（Ｓ０６０７）。このリトリーブの受信と主記憶領域に対する割り当ては、システム管理レキシコンセットのリトリーブを全部受信するまで繰り返される（Ｓ０６０８の"ＮＯ"）。
【０１０２】
この状態においては、システム管理レキシコンセットのみが現起動ホストに常駐した状態であり、アプリケーションプログラムが使用するデータに関するレキシコンセット（一般レキシコンセット）は、まだ常駐されていない。しかし、どのホストにどのレキシコンセットを常駐させるかを示すレキシコンセット−常駐ホスト対応表５０１（表Ａ）、リトリーブ要求先ホスト対応表５０２（表Ｂ）、及び常駐させるレキシコンセット中のどのレキシコンを常駐させるかを示すレキシコン−常駐ホスト対応表５０３（表Ｃ）については、システム管理レキシコンセットとしてリトリーブされている。
【０１０３】
上記のステップＳ０６０６〜Ｓ０６０８の処理を繰り返すことにより、すべてのシステム管理レキシコンセットのリトリーブ受信が完了した後（Ｓ０６０８の"ＹＥＳ"）、各ホストにおけるレキシコンの常駐状況を示すレキシコン常駐状況表５０４（表Ｄ）を作成する（Ｓ０６０９）。なお、このレキシコン常駐状況表５０４は、表中の各レキシコンが、現在そのホストに実際に常駐しているかどうかを示すものであって、表の内容はホスト毎に異なるものであり、現起動ホストにおいては常駐しているレキシコンはまだ一つも存在しないので、レキシコン常駐状況表５０４（表Ｄ）の内容はすべて×（常駐なし）になる。
【０１０４】
次に、自ホスト（現起動ホスト）は、自己に常駐させるレキシコンセットを対応表５０１に従って検索する（Ｓ０６１０）。例えば、自ホストがレキシコンセット−常駐ホスト対応表５０１（表Ａ）中のhost1である場合は、LexiconSet_AとLexiconSet_Bとが常駐させるレキシコンセットである。この対応表５０１（表Ａ）中に常駐させるレキシコンセットがない場合には（Ｓ０６１１の"ＮＯ"）初期起動は完了するが、初期起動成功という観点では正常であっても、レキシコンセットがないためユーザＴＲの実行は不可能である（Ｓ０６１２）。ただし、後述するように、自ホストにおいて、ユーザデータ用の一般レキシコンセットの常駐を追加・修正することが可能である。
【０１０５】
ステップＳ０６１１において、対応表５０１（表Ａ）に従い常駐させる一般レキシコンセットがある場合には（Ｓ０６１１の"ＹＥＳ"）、該当するレキシコンセットを常駐させる処理を行う。すなわち、ステップＳ０６１３において、一般レキシコンセットの常駐が完了したか否かを検証するが、システム管理レキシコンセットのみが常駐している状態においては、まだ常駐しているユーザデータ用の一般レキシコンセットは存在しないので、その常駐は完了していない（Ｓ０６１３は"ＮＯ"）。
【０１０６】
そして、ステップＳ０６１５以下の処理を繰り返すことにより、対応表５０１（表Ａ）に記載されたすべてのユーザデータ用レキシコンセットについて常駐が完了した状態（Ｓ０６１３の"ＹＥＳ"）において、初期起動が完了し、これらのレキシコンセットに含まれたデータに対してアプリケーションプログラムがユーザトランザクションを実行することが可能な状態となり（Ｓ０６１４）、データ常駐処理を終了する。
【０１０７】
以下、全レキシコンセットの常駐が完了していない状態（Ｓ０６１３の"ＮＯ"）における、各レキシコンセットの常駐処理について説明する。先ず、レキシコンセット−常駐ホスト対応表５０１（表Ａ）中の常駐対象レキシコンセットの中から、最初に常駐させるレキシコンセットを選択して、そのレキシコンセットに含まれる各レキシコンについて、レキシコン常駐計画を示すレキシコン−常駐ホスト対応表５０３（表Ｃ）を参照して、レキシコン常駐状況表５０４（表Ｄ）に○印を付ける（Ｓ０６１５）。すなわち、レキシコン−常駐ホスト対応表５０３（表Ｃ）は、各レキシコンセットに含まれているレキシコンをどのホストにおいて常駐させる予定があるかを記録したものであって、この対応表５０３（表Ｃ）を参照することにより、自己のホストにおいては、どのレキシコンを常駐させるべきか否かをレキシコン常駐状況表５０４（表Ｄ）に記録する。例えば、レキシコン−常駐ホスト対応表５０３ＶＤにおいて、自ホストがhost1である場合、LexiconSet_Aのlex1とlex2、LexiconSet_BのlexPを常駐させる必要があるが、まず最初にLexiconSet_Aの常駐処理を行う場合には、レキシコン常駐状況表５０４中のLexiconSet_Aのlex1とlex2に該当する部分に○を付ける。
【０１０８】
次に、リトリーブ要求先ホスト対応表５０２（表Ｂ）からhost1のLexiconSet_Aのリトリーブ要求先ホスト（host2．host3．host4）を検索し（Ｓ０６１６）、各要求先ホストに対してリトリーブ要求を発信する（Ｓ０６１７）。この場合、リトリーブ要求の出し方と応答の受け方は、方法が提供されていれば、どのような方法でも良い。例えば、どの要求先ホストにリトリーブ要求を出すかは、予めその順番を定めておいても良いし、すべての要求先ホストに一斉にリトリーブ要求を送信しても良い。このリトリーブ要求に対して、すべての要求先ホスト（host2．host3．host4）からリトリーブ応答がなかった場合は（Ｓ０６１８の"ＮＯ"）、常駐対象レキシコンセットを中身が空の状態で構築し（Ｓ０６１９）、ステップＳ０６２５に進み最初のレキシコンセット（LexiconSet_A）についてのリトリーブ処理を完了する。
【０１０９】
一方、いずれかの要求先ホストからリトリーブ応答があった場合には（Ｓ０６１８の"ＹＥＳ"）、そのリトリーブデータ（LexiconSet_A）を受信し（Ｓ０６２０）、受信データ中に含まれるレキシコンが、レキシコン常駐状況表５０４（表Ｄ）に登録された（○をつけた）常駐させるレキシコンデータか否かを検証する（Ｓ０６２１）。受信データが常駐させるレキシコンでない場合には、そのデータを破棄し（Ｓ０６２２）、常駐させるデータである場合には、主記憶領域割当部４０７により主記憶領域を割り当てる（Ｓ０６２３）。
【０１１０】
このようにして、受信したリトリーブデータを常駐させた後は、常駐対象レキシコンセットのリトリーブの全受信が完了したか否かを検証し（Ｓ０６２４）、全受信が完了していない場合には（Ｓ０６２４の"ＮＯ"）ステップＳ０６２０に戻り、次のリトリーブデータの受信とその常駐処理を繰り返す。全受信が完了した場合には（Ｓ０６２４の"ＹＥＳ"）、常駐対象レキシコンセットのリトリーブが完了したものとして（Ｓ０６２５)、前記ステップＳ０６１３に戻る。
【０１１１】
上記のようにして、host1の最初の常駐対象レキシコンセット（LexiconSet_A）の常駐が完了した後は、対応表５０１（表Ａ）に登録されている次の常駐対象レキシコンセット（LexiconSet_B）に関してステップＳ０６１５以下の処理を繰り返し、対応表５０１（表Ａ）に記載されたすべてのレキシコンセットについて、常駐処理を行う。そのようにして、すべてのレキシコンセットについて常駐処理が終了すると（Ｓ０６１３の"ＹＥＳ"）、自ホストにおける初期起動が完了する（Ｓ０６１４）。
【０１１２】
［８−２−２．システム管理レキシコンセットのベースホストにおける追加設定の処理］…図８
ところで、本システムにおいては、前記のように各ホストの初期起動が成功し、各ホストが稼働状態にある場合に、各ホストにおける常駐対象レキシコンセットを追加することが可能である。この追加設定は、システム管理レキシコンセットのベースホストにおいて実行することも、また、次項で述べるように、追加対象レキシコンセットの常駐先ホストにおいても実行可能である。
【０１１３】
以下、システム管理レキシコンセットのベースホストにおける追加設定の処理について、図８を参照して説明する。
まず、システム管理レキシコンセットのベースホストにおいて、あるホストに追加して常駐させるレキシコンセット名とその常駐ホスト名を対応表５０１（表Ａ）に追加する（Ｓ０８０１）と共に、対応表５０１（表Ａ）に追加した常駐ホストがレキシコンセットを取得するためのリトリーブ要求先ホストをリトリーブ要求先ホスト対応表５０２（表Ｂ）に追加する（Ｓ０８０２）。
【０１１４】
この状態で、ベースホストは、対応表５０１（表Ｂ）に追加設定した常駐先ホストで本システムが起動しているか否かを検証し（Ｓ０８０３）、常駐先ホストでシステムが起動している場合には、レプリケーション送信で、常駐先ホストの対応表５０１（表Ａ）、リトリーブ要求先ホスト対応表５０２（表Ｂ）に、ベースホストで追加した対応表５０１（表Ａ），５０２（表Ｂ）の内容を追加する（Ｓ０８０４）。
【０１１５】
この場合、レキシコン−常駐ホスト対応表５０３（表Ｃ）については、予めベースホスト側で作成してレプリケーション送信で各ホスト（常駐先ホストを含む）にも作成される。さらに、常駐先ホストにおいて、レキシコン−常駐ホスト対応表５０３（表Ｃ）に基づいて、追加対象レキシコンセットのレキシコンについて、レキシコン常駐状況表５０４（表Ｄ）に○印を付ける。
【０１１６】
続いて、ベースホストからの関数レプリケーションにより、常駐先ホストにおいてリトリーブ要求を起こさせる。すなわち、常駐先ホストは、図７のステップＳ０６１６及びＳ０６１７と同様にして、リトリーブ要求先ホスト対応表５０２（表Ｂ）に登録されたリトリーブ要求先ホストに対して、追加して常駐すべきレキシコンセットのリトリーブ要求を起こす（Ｓ０８０５）。そして、図７のＳ０６１８以下の処理を行い、追加されたレキシコンセットの常駐処理を行う。
【０１１７】
次に、システム管理レキシコンセットのベースホストは、常駐先ホストのモードをチェックし（Ｓ０８０６）、常駐先ホストでリトリーブが完了しているか否かを検証する（Ｓ０８０７）。常駐先ホストでリトリーブが完了していない場合には（Ｓ０８０７の"ＮＯ"）、リトリーブ完了通知があるまで待機する（Ｓ０８０８）。一方、常駐先ホストでリトリーブが完了した場合には（Ｓ０８０７の"ＹＥＳ"）、追加対象レキシコンセットやそれに含まれる追加対象レキシコンの常駐が完了したと判断し、常駐先ホストにおいてデータ常駐が成功したとして（Ｓ０８０９）、ベースホストにおける処理を終了する。なお、一定の時間が経過してもリトリーブ完了通知がこない場合には、リトリーブ完了を待たずにステップＳ０８０９に進むこともできる。
【０１１８】
［８−２−３．常駐先ホストにおける追加設定の処理］…図９、図１０
次に、常駐先ホストがシステム管理レキシコンセットのベースホストと異なる場合の、常駐先ホストにおける常駐対象レキシコンセットの追加設定処理を説明する。
【０１１９】
まず、常駐先ホストにおいて、アプリケーションプログラムから常駐対象レキシコンセットの追加設定の実行依頼を受付けると（Ｓ０９０１）、常駐先ホストにおいては、追加するレキシコンセット名と常駐ホスト名（自ホスト名）を自己の所有しているレキシコンセット−常駐ホスト対応表５０１（表Ａ）に追加する（Ｓ０９０２）。また、追加した常駐対象レキシコンセットのリトリーブ要求先のホストリストをリトリーブ要求先ホスト対応表５０２（表Ｂ）に追加する（Ｓ０９０３）。なお、この対応表５０１（表Ａ）及び対応表５０２（表Ｂ）の追加は、リモートトランザクションにより、システム管理レキシコンセットのベースホストの対応表５０１（表Ａ）及び対応表５０２（表Ｂ）の上で追加され、その結果のレプリケーション送信によるものである。また、レキシコン−常駐ホスト対応表５０３（表Ｃ）は、予めどのホストでどのレキシコンを配置するかを計画したものとして用意されている。
【０１２０】
また、このようにして用意された対応表５０１（表Ａ）〜５０３（表Ｃ）については、システム管理レキシコンセットのベースホストから他のホストに対してレプリケーション送信することにより、各ホストにおける常駐対象レキシコンセット及びレキシコンに関する情報を一元化しておくことができる。
【０１２１】
上記のようにして、対応表５０１（表Ａ）〜５０３（表Ｃ）が用意された後は、ステップＳ０９０４に記載のように、レキシコンの常駐計画を示すレキシコン−常駐ホスト対応表５０３（表Ｃ）から、常駐させるべきレキシコン名を読み出し（Ｓ０９０４）、そのレキシコンについてのレキシコン常駐状況を示すレキシコン常駐状況表５０４（表Ｄ）に○印を付ける（Ｓ０９０５）。次に、対応表５０２（表Ｂ）から、追加した常駐対象レキシコンセットのリトリーブ要求先ホストを検索し（Ｓ０９０６）、各要求先ホストに対してリトリーブ要求を送信する（Ｓ０９０７，Ｓ０９０８）。このリトリーブ要求に対して、リトリーブ応答がなかった場合は（Ｓ０９０９の"ＮＯ"）、リトリーブを完了して（Ｓ０９１５）、追加の常駐処理は失敗したものとする。
【０１２２】
一方、いずれかの要求先ホストからリトリーブ応答があった場合には（Ｓ０９０９の"ＹＥＳ"）、そのリトリーブデータを受信し（Ｓ０９１０）、受信データ中に含まれるレキシコンが、レキシコン常駐状況表５０４（表Ｄ）に登録された（○をつけた）常駐させるレキシコンデータか否かを検証する（Ｓ０９１１）。受信データが常駐させるレキシコンでない場合には、そのデータを破棄し（Ｓ０９１２）、常駐させるデータである場合には、そのデータを主記憶領域割当部４０７により主記憶領域を割り当てる（Ｓ０９１３）。
【０１２３】
このようにして、受信したリトリーブデータを常駐させた後は、常駐対象レキシコンセットのリトリーブの全受信が完了したか否かを検証し（Ｓ０９１４）、完了していない場合には（Ｓ０９１４の"ＮＯ"）ステップＳ０９１０に戻り、次のリトリーブデータの受信とその常駐処理を繰り返す。このようにして、全受信が完了した場合には（Ｓ０９１４の"ＹＥＳ"）、常駐対象レキシコンセットのリトリーブを完了し（Ｓ０９１５)、リトリーブモードを通常のアプリケーションプログラム処理モードに変更して、アプリケーションプログラムに対してリトリーブ終了通知トランザクションを発行する（Ｓ０９１６）。
【０１２４】
［８−２−４．常駐レキシコンの変更時における処理］…図１１
本実施形態のデータ常駐管理部１３によれば、前記のような常駐レキシコンの追加以外に、常駐対象レキシコンセット及びそれに含まれたレキシコンの常駐状態を変更することも可能である。
【０１２５】
以下、ホストhost1で、レキシコンセットLexiconSet_Bに常駐するレキシコンlexQを追加する場合を想定して、その場合の処理を図１１により説明する。
まず、対応表５０１（表Ａ）から常駐対象レキシコンセットの対象ホストの行（対応表５０１のLexiconSet_B、host1の行）を削除すると共に（Ｓ１１０１）、対応表５０２（表Ｂ）から対象レキシコンセットの対象ホストの行（LexiconSet_B、host1の行）を削除する（Ｓ１１０２）。なお、この対応表５０１（表Ａ）及び対応表５０２（表Ｂ）の削除は、リモートトランザクションにより、システム管理レキシコンセットのベースホストの対応表５０１（表Ａ）及び対応表５０２（表Ｂ）の上で削除され、その結果のレプリケーション送信によるものである。
【０１２６】
次に、常駐対象LexiconSet_Bのデータをホストの主記憶上から消し（Ｓ１１０３）、レキシコン−常駐ホスト対応表５０３（表Ｃ）の上で、常駐レキシコンの追加・削除・変更（レキシコン−常駐ホスト対応表５０３にLexiconSet_B、lexQ、host1のデータを追加）を行う（Ｓ１１０４）。
【０１２７】
このようにして、新たなレキシコン−常駐ホスト対応表５０３（表Ｃ）の作成と、変更前の常駐対象レキシコンセットが主記憶上から削除された後に、改めて対応表５０１（表Ａ）及び対応表５０２（表Ｂ）に対して、常駐対象レキシコンセットと常駐先ホスト及びリトリーブホストの追加登録を行うことにより、前記図Ｃに示した常駐先ホストにおける追加設定の場合と同様の処理がなされる（Ｓ１１０５）。
【０１２８】
［８−３．第１実施形態の効果］
以上のような構成を有する本実施の形態によれば、次のような効果が発揮される。
（１）システムの起動時において、ベースホストからリトリーブされたレプリカデータを自ホストに常駐させることにより、常にベースホスト上のオリジナルデータと同一内容のデータを自己の主記憶領域に常駐させて利用することが可能になり、ネットワーク上の各ホストが、オリジナルデータの所在を意識することなく、自ホストのデータとして利用できる。
【０１２９】
（２）各ホスト毎に使用するデータが異なる場合であっても、各ホストに対するデータのリトリーブ処理をレキシコンセットを単位として行うため、個々のデータ（レキシコン）毎にリトリーブ処理を行う場合に比較して、その処理単位がまとまり、リトリーブ処理が容易に実行できる。一方、リトリーブ処理はデータをグループ化した処理単位であるレキシコンセットを対象として行い、データの常駐そのものは、アプリケーションが使用するレキシコンのみを対象とするので、データ常駐に必要な主記憶領域の効率的な仕様が可能となる。
【０１３０】
（３）データ常駐およびリトリーブに必要なデータをシステム管理レキシコンセットとして、予めそのベースホストに配置し、これを他のホストリトリーブ送信することにより、各ホストを起動した場合に、共通のシステム管理レキシコンセットが配置されることになり、各ホストにおけるデータ常駐処理が均等に実施されることになり、システムの整合性が確保される。
【０１３１】
（４）各ホストの稼働後に常駐対象となるデータの追加・削除・変更があった場合に、これをシステム管理レキシコンセットのベースホストから各ホストに反映させることが可能になり、各ホスト上にデータが常駐された後でも、各ホスト上で常駐させたデータの同一性を確保することが可能である。
【０１３２】
（５）データ常駐状態設定部とリトリーブデータ管理部とによって、予めデータの常駐先や常駐すべきデータの内容、更には各ホストに対する常駐常駐データのオリジナルの所在を設定しておくことができ、これらの設定内容に従って、システム起動時に各ホストに対するデータの常駐を円滑に実施できる。
【０１３３】
（６）本実施形態のデータ常駐管理部１３が適用される分散ネットワークシステムは、システムのハードウェア構成に依存しないリモート／ローカル構造を採用することにより、アプリケーション・ソフトウェアをコンピュータのハードウェア構成から独立させることができる。そのため、アプリケーションはシステムの物理構造、すなわちハードウェアの物理構成や、データがどのコンピュータ上に実装されているか、あるいはデータの整合性がとれているかといった点をまったく意識する必要がない。これにより、種々のシステム開発に従事するユーザは、業務ロジックの設計・実装に専念することができるので、システム開発の生産性が大幅に向上する。
【０１３４】
［９．他の実施の形態］
（１）前記実施の形態では、リトリーブ処理をレキシコンセットを単位として行い、常駐処理をレキシコンセット中のレキシコンを単位として行ったが、リトリーブ処理と常駐処理をレキシコンセット毎に行っても、レキシコン毎に行うこともできる。
【０１３５】
（２）システム管理レキシコンセットのベースホストは、特定のコンピュータに固定されている必要はなく、各ホストにシステム管理アプリケーションを配置しておき、権限のあるシステム管理者が所望のホストからシステム管理レキシコンセットの改変を行うこともできる。その場合、最新のシステム管理レキシコンセットを既に起動中のホストにレプリケーションしたり、あるいはその後初期起動した他のホストにリトリーブしたりすることにより、最新のシステム管理レキシコンセットが作成されたホストをシステム管理レキシコンセットのベースホストとすることができる。
【０１３６】
（３）実施例の説明では、データ常駐に関する各種の設定をシステム管理アプリケーションから発行するシステム設定用トランザクションに従って行い、このトランザクションの実行をすべてトランザクション関数の呼出としているが、トランザクションの実行の形態はこれに限られるものではない。例えば、個々のトランザクションには具体的なデータ操作手続の記述が含まれており、本システムが一定の手順に従ってそれを解釈実行するという形態でも構わない。
【０１３７】
（４）前記のようにトランザクションには、各種の属性を付与するため識別子（トランザクション名等）が含まれている。この識別子に対して、例えば実行すべきトランザクション関数を対応付けるが、この識別子は付与すべき属性の種類に応じて必要な数を設定すればよい。
トランザクションが操作の対象とするのは、１つのレキシコンセットとする。前記の実施の形態では、ユニスペースが複数のレキシコンセットを含むことができるので、トランザクションには、操作対象のレキシコンセットを明記する。このレキシコンセット名を上記識別子の１つと考えても良い。もちろん、他の識別子から操作対象レキシコンセットを判別する手段を設けた実施の形態も可能で、レキシコンセット名の明記は必須ではない。
【０１３８】
（５）実施例の説明では、「複数のマシン」を物理的に異なるマシンと、通信ネットワークをそれらの間の物理的媒体を含む通信手段として想定したが、これを論理的に異なるマシン、例えば同一マシン内の異なるプロセスを対象として実施しても構わない。その場合には、各（論理）マシンの識別に異なる手段（プロセスＩＤ等）を使用すればよい。また、本システムが管理対象とするデータベース（レキシコンセット）は、１つでも複数でも構わない。
【０１３９】
（６）レプリケ−ションデ−タを伝達する手段としての通信ネットワ−クとトランザクションを転送する手段としての通信ネットワ−クは物理的／論理的に同一のものを用いても異なるものを用いてもよい。多数のレプリカホストに伝送するにはマルチキャスト／ブロ−ドキャストのネットワ−クを使用するのが効率的な場合が多いが、本発明の実施はそれに限定されるものではない。一方、トランザクションの転送は通常１対１通信で足りるが、実行すべきでないサイトが受信した場合はそのサイトの判断で実行しないあるいは破棄する等の処理を行うという条件でマルチキャスト／ブロ−ドキャストのネットワ−クを採用することも可能である。
【０１４０】
【発明の効果】
以上説明したように、本発明によれば、下記に述べるような優れた効果を発揮する分散処理型データベース管理システムを提供することができる。
【０１４１】
（１）リモート／ローカル構造による柔軟性
本発明で提供している分散システムは、リモート／ローカル構造と呼ばれるシステムのハードウェア構成に依存しない方式である。アプリケーション・ソフトウェアはシステムのハードウェア構成に関する実装を行う必要が無いため、ソフトウェア開発をシステム構築から独立させることができる。そのため、システム構築のためのコーディングは一切不要で、システム構築／設定作業はすべてシステム運用環境を用いて行うことができる。
【０１４２】
（２）ネットワークを活用した多様な信頼性強化
本発明の特徴的機能としては、システムの多重化機能とデータのリカバリ機能がある。これらの機能により、初期化や障害発生時にバックアップファイルから再ロードして速やかなシステムリカバリ処理が可能となる。
すなわち、各ホストに常駐させるデータを、システム管理レキシコンセットのベースホストで設定することができるので、ネットワークを構成する各マシン上のデータ管理を一ヶ所で集中して行うことができる。
【０１４３】
また、各ホストにおいてすべてのデータを常駐させる必要はなく、そのホストで用いるデータのみを常駐させるように設定することにより、各ホストの主記憶領域を有効に使用することができる。さらに、常駐データの設定変更は、システム管理レキシコンセットのベースホストのみならず、常駐先ホストにおいても可能であるので、各ホストにおいて処理するトランザクションが変更されても、迅速に対応することができる。
【０１４４】
（３）システム停止を伴わない機能変更
本実施形態のデータ管理システム設定装置においては、自ホストに常駐するデータを適宜変更することができるので、データ構造の変更に対して動的に対応することができる。また、これらの変更は、システムを停止させることなく適宜実行することができるので、システム設定変更の処理が非常に容易なものとなる。
【図面の簡単な説明】
【図１】本発明の分散処理型データベース管理システムの全体構成を示す機能ブロック図である。
【図２】図１のデータベース管理システムにおける各ホストの構成を示すブロック図である。
【図３】図１のデータベース管理システムにおけるシステム構成の設定順序を示すフローチャートである。
【図４】図１のデータベース管理システムにおけるアプリケーションとトランザクション関数の実行手順を示すフローチャートである。
【図５】図１のデータベース管理システムにおけるデータ常駐管理部１３の構成を示すブロック図である。
【図６】各ユーザにおける本システム初期起動時の処理の流れ（前半）を示すフローチャートである。
【図７】各ユーザにおける本システム初期起動時の処理の流れ（後半）を示すフローチャートである。
【図８】システム管理レキシコンセットのベースホストにおける追加設定の処理の流れを示すフローチャートである。
【図９】常駐先ホストがシステム管理レキシコンセットのベースホストと異なる場合の、常駐先ホストにおける常駐対象レキシコンセットの追加設定処理の流れ（前半）を示すフローチャートである。
【図１０】常駐先ホストがシステム管理レキシコンセットのベースホストと異なる場合の、常駐先ホストにおける常駐対象レキシコンセットの追加設定処理の流れ（後半）を示すフローチャートである。
【図１１】常駐レキシコンの変更時における処理の流れを示すフローチャートである。
【符号の説明】
１…データベース管理システム
２…レキシコンセット
２１…レキシコン
３…トランザクション受付部
４…送信部
５…受信部
１１…システム構成設定部
１２Ａ…トランザクション管理部
１２Ｂ…トランザクション処理部
１３…データ常駐管理部
１４…レプリケーション処理部
１５…ベースホスト切替部
４０１…常駐状態設定部
４０２…レキシコンセット常駐設定部
４０３…レキシコンセット常駐計画設定部
４０４…レキシコンセット常駐状況設定部
４０５…リトリーブデータ管理部
４０６…常駐レキシコン判定部
４０７…主記憶領域割当部
５０１…レキシコンセット−常駐ホスト対応表（表Ａ）
５０２…リトリーブ要求先ホスト対応表（表Ｂ）
５０３…レキシコン−常駐ホスト対応表（表Ｃ）
５０４…レキシコン常駐状況表（表Ｄ）
６０１…リトリーブ要求先決定部
６０２…リトリーブ要求送信部
６０３…リトリーブデータ受信部
【図１】
0004131781.tif 000006
【図２】
0004131781.tif 000007
【図３】
0004131781.tif 000008
【図４】
0004131781.tif 000009
【図５】
0004131781.tif 000010
【図６】
0004131781.tif 000011
【図７】
0004131781.tif 000012
【図８】
0004131781.tif 000013
【図９】
0004131781.tif 000014
【図１０】
0004131781.tif 000015
【図１１】
0004131781.tif 000016