(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);
この場合、トランザクション名とトランザクション関数名が関連付けられただけであり、まだトランザクションが実行できる状態ではない。
【００６６】
（６）レキシコン配置の定義（Ｓ０３０７）
データ常駐管理部１３は、レキシコンを配置するホストを定義する。各ホストで実行するトランザクションに必要なレキシコンだけを配置するのが最もリソース節約になる。計算機に余裕があるならば各ホスト同一の配置状況にしてもよい。例えば、レキシコンセット "SampleLexiconSet"の"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)アプリケーションは、共有メモリを開放する（Ｓ０４１３）。
(14)アプリケーションは、一連の処理が終わって本システムへのアクセスが不用になれば本システムからの切断を実行する（Ｓ０４１４）。
(15)アプリケーションは、終了する（ＥＮＤ）。
【００７４】
［６．参照トランザクションと更新トランザクションの実行］
前記のようなトランザクションの実行時において、ユーザアプリケーションから依頼されたトランザクションの種類、すなわち前記図４のステップＳ０４０８におけるデータベースへの参照、検索、更新、削除、追加などアクセス形態によって、本システム内の処理が次のように異なる。
【００７５】
（１）参照トランザクション
トランザクションが、データベースに改変を加えることのない参照トランザクションの場合、トランザクション処理部１２Ｂは、アクセス対象レキシコンに対してトランザクションを実行させる。そして、トランザクションの実行が終わった後、その実行結果をアプリケーションに対して通知する。この参照トランザクションは、データを参照するだけでその書き換えを行うことがないので、そのホストにあるデータがオリジナルデータであるか、レプリカデータであるかを問わず、各サイトで実行できる。
【００７６】
（２）更新トランザクション
更新トランザクションの場合、実行を依頼したホストがオリジナルデータを持つか(以下、オリジナル側)、レプリカデータを持つか(以下、レプリカ側)によって処理が異なる。
まず、オリジナルデータを持つ場合は、参照トランザクションと同様にトランザクション処理部１２Ｂがアクセス対象レキシコンに対してトランザクションを実行させ、実行結果をアプリケーションに通知する。
レプリカデータを持つ場合、トランザクションで直接レキシコンを更新することはできない。そこで、レプリカサイトのトランザクション処理部１２Ｂがネットワークを介して、ベースホストのトランザクション処理部１２Ｂにトランザクションの実行依頼を行う。ベースホストのトランザクション処理部１２Ｂは、ベースホストに格納されているトランザクションを実行し、オリジナルデータのレキシコンを更新する。オリジナルデータが更新されると、レプリカサイトにその更新データがレプリケーションされ、レプリカサイトのデータが更新される。レプリカサイトのデータが更新されると、レプリカサイトのトランザクションはその実行結果をアプリケーションに結果を通知する。
【００７７】
［７．トランザクションに関する設定］
このような本システムを実行するには、次のようなシステム構成を設定することが必要となる。このシステム構成の設定は、一般には、システム管理アプリケーションと呼ばれるプログラムによって行われる。
(1) レキシコンセット名とそのベースホスト(切り替え先候補)
(2) レキシコンセットとそれに含まれるレキシコン
(3) トランザクションライブラリとそれに含まれるトランザクション
(4) トランザクション名とこのトランザクションを実行するために必要なトランザクション関数
(5) トランザクションがアクセスするレキシコンとそのアクセス形態(参照/更新)
(6) レキシコンセットの別名（必要ならば）
(7) レキシコンセットを各ホストに反映させるために行うレプリケーション送信のマルチキャストアドレス（必要ならば）
(8) 各ホストで常駐させるレキシコンセット
(9) 各ホストに配置するレキシコン（常駐させるレキシコンセットに含まれている）
(10)各ホストでロードするトランザクションライブラリとそのDLLファイル名
(11)各レキシコンセットのバックアップホストとそれぞれファイルバックアップの有無
【００７８】
［８．トランザクション管理部１２Ａの構成…図５］
以下、前記のようなトランザクションに関する設定を行うシステムの構成の一実施の形態を図５に示す機能ブロック図に従って説明する。
すなわち、本実施形態のトランザクション管理部１２Ａは、自サイトにおけるトランザクションの登録を管理するトランザクション登録管理部４０１を備えている。このトランザクション登録管理部４０１には、アプリケーションから依頼される各種の処理を実行するためのトランザクションが格納されたトランザクション格納部４０２、用意されている各トランザクションを処理対象のデータベースに合わせてグループ化するライブラリ登録部４０３、レキシコンアクセス形態設定部４０４およびトランザクション−トランザクション関数関連付け部４０５が設けられている。
【００７９】
ライブラリ登録部４０３は、前記図３のステップＳ０３０４，Ｓ０３０５において説明したトランザクションライブラリの定義を行うものであり、一例として、下記に示すようなトランザクション−ライブラリ対応表５０３を作成して、トランザクションの集合をライブラリ５０２として定義すると共に、このライブラリ５０２をその処理対象であるレキシコンセット２に登録するものである。
【表１】
0004050479.tif 000002
【００８０】
レキシコンアクセス形態設定部４０４は、前記図３のステップＳ０３０６において説明したトランザクションのアクセス対象レキシコンとそのアクセス形態を登録するもので、一例として、下記のようなトランザクション−レキシコン対応表５０４を作成する。
【表２】
0004050479.tif 000003
【００８１】
トランザクション−トランザクション関数関連付け部４０５は、前記図３のステップＳ０３０６において説明したトランザクション名とトランザクション関数名を関連付けるもので、一例として下記のようなトランザクション−トランザクション関数対応表５０５を作成する。
【表３】
0004050479.tif 000004
【００８２】
前記トランザクション管理部１２Ａには、トランザクション関数をライブラリ化したＤＬＬファイル４０６と、このＤＬＬファイル４０６をその実行領域にロードするための処理を行うＤＬＬロード部４０７が設けられている。このＤＬＬロード部４０７には、ＤＬＬ格納処理部４０８とライブラリ−ＤＬＬ関連付け部４０９が設けられている。すなわち、ＤＬＬ格納処理部４０８は前記ＤＬＬファイル４０６の内容をトランザクションプログラム格納領域５０８にロードし、ライブラリ−ＤＬＬ関連付け部４０９に格納した位置を通知するものである。
【００８３】
ライブラリ−ＤＬＬ関連付け部４０９は、前記図３のステップＳ０３０８において説明したように、トランザクション関数をライブラリ化したＤＬＬファイル４０６をトランザクションのライブラリ５０２と関連付けて、アクセス対象のレキシコンセット２に登録するものである。すなわち、このライブラリ−ＤＬＬ関連付け部４０９は、トランザクションのライブラリ名と前記ＤＬＬ格納処理部４０８によって得られたＤＬＬファイルの格納位置の関連付けを行い、一例として、下記のようなライブラリ−ＤＬＬ対応表５０９に記録する。
【表４】
0004050479.tif 000005
【００８４】
さらに、前記トランザクション登録管理部４０１には、レキシコンセットの別名を登録するための別名登録部４１０が設けられている。この別名登録部４１０は、前記図３のステップＳ０３０９を実行するものであり、アプリケーションからトランザクションの実行を依頼する際に、レキシコンセットの別名を指定して実行できるようにするものである。
【００８５】
［９．トランザクション登録管理部の作用…図６］
以下、これらの各トランザクションの設定処理について、図６に示すフローチャートに従って具体的に説明する。
【００８６】
まず、システム管理アプリケーションから、システム管理用トランザクションの実行依頼を発行すると、この実行依頼をトランザクション受付部３が受領して、トランザクション登録管理部４０１を起動する。そして、この登録管理部４０１において、まず、ユーザアプリケーションの実行時に使用するトランザクションをトランザクション格納部４０２に格納されている複数のトランザクション中から選択して、これをライブラリ５０２としてグループ化する（Ｓ０６０１）。そして、このようにしてグループ化されたトランザクションのライブラリ５０２を、ユーザアプリケーションがアクセスする対象であるレキシコンセット２に登録する（Ｓ０６０２）。この時点で、前記トランザクション−ライブラリ対応表５０３が作成されるもので、この対応表５０３には、例えば、各トランザクションTR1，TR2……がどのライブラリLibraryA，LibraryBに属しており、そのライブラリLibraryA，LibraryBがどのレキシコンセットLexiconSetA，LexiconSetBに登録されているかが記録される。
この場合、コンピュータ上で使用されるユーザアプリケーションの種類によって、必要とされるトランザクションが異なることが考えられるので、種々のアプリケーションに応じた複数のライブラリ５０２を用意し、これを各アプリケーションがアクセスするデータベース（レキシコンセット）に対して登録することにより、アプリケーション毎に必要とするトランザクションをあらかじめ用意することが可能となる。
【００８７】
次に、前記ライブラリ５０２に登録されているトランザクションを一つ選択し（Ｓ０６０３）、このトランザクションとそのアクセス対象レキシコンについてアクセス形態を設定する（Ｓ０６０４）。すなわち、本実施の形態においては、ライブラリそのものは、アクセス対象のレキシコンセットに登録するのであるが、ライブラリに含まれている個々のトランザクションについては、実際にその処理対象となるレキシコンに対して登録する。例えば、前記の各表中のトランザクションTR1を選択した場合、そのアクセス対象であるレキシコンLexicon1と、このレキシコンLexicon1に対するアクセス形態「参照」が登録される。
【００８８】
続いて、このトランザクションTR1と１対１に対応するトランザクション関数TRFunc1との関連づけを行い（Ｓ０６０５）、これらをレキシコンセットLexiconSetAに登録する（Ｓ０６０６）。これによって、前記トランザクション−レキシコン対応表５０４およびトランザクション−トランザクション関数対応表５０５（表のトランザクションTR1部分）が作成される。このようにして、すべてのトランザクションについて登録終了か否かを検証し（Ｓ０６０７）、すべてのトランザクションについて登録が終了した時点で、前記対応表５０４および５０５が完成する。
【００８９】
なお、本システムにおいては、トランザクションとトランザクション関数は１対１に対応付けられるのであるが、アプリケーションが実行する処理はアプリケーションを使用するユーザ側の観点によって区分されるため、データ処理の観点で見た場合、多くは複数の処理で構成されている。そこで、アプリケーションが必要とする各種の処理についての共通部分を整理することにより、データ処理に適したトランザクションとそれに対応するトランザクション関数を設定することができる。
たとえば、ユーザ側から見た処理Ａがデータ側アクセスの観点からはａとｂとｃという処理で構成されていて、他の処理Ｂがａとｄとｅという処理で構成されているなら、（処理ａ）と（処理ｂ＋処理ｃ）、（処理ｄ＋処理ｅ）、という３つの処理単位で構成し、これらの処理単位をトランザクションｘ，ｙ，ｚとすれば、前記の処理Ａはトランザクションｘ＋ｙ、処理Ｂはトランザクションｘ＋ｚで実現できる。そこで、本システムにおいて、前記の各トランザクショントランザクションｘ，ｙ，ｚをトランザクション関数として登録すると、この単位で再利用が可能になる。
【００９０】
前記のようにしてトランザクションとトランザクション関数との関連付けが終了した後は、ＤＬＬロード部４０７のＤＬＬ格納処理部４０８により、トランザクションプログラム格納領域５０８に前記ＤＬＬファイルをロードし（Ｓ０６０８）、さらにトランザクションプログラム格納領域５０８におけるＤＬＬファイルの格納位置とトランザクションのライブラリの関連付けを行う（Ｓ０６０９）。
すなわち、このＤＬＬファイルをロードする時点でトランザクション関数名との関連付けができているトランザクションのみがトランザクション関数ポインタとリンクされる。トランザクション関数名と関連付けられていないトランザクションは関数ポインタとリンクされない。トランザクションライブラリ内のトランザクション全てに対して、トランザクション関数名の関連付けを見つけ出し、ロードしたＤＬＬファイルからトランザクション関数名を用いてトランザクション関数ポインタを見つけ出してリンクする。
これで、トランザクション関数が本システムにロードされ、トランザクションとトランザクション関数の関連付けが完了する。このようにしてトランザクションを本システムに登録することにより、トランザクション関数は本システム上で実行され、本システム内でデータベースの操作が可能になる。
【００９１】
なお、本システムにおいては、ＤＬＬファイルのロードが済んだ後に、新たにトランザクション名とトランザクション関数名の関連付けを行っても、そのトランザクションはトランザクション関数ポインタとリンクされない。またトランザクション名とトランザクション関数名との関連付けを変更しても、その変更がトランザクション関数ポインタの変更まで及ばない。
その場合は、いったんＤＬＬファイルをアンロードし、トランザクションライブラリ内のすべてのトランザクションのリンクを抹消しておいて、再びＤＬＬファイルをロードすれば、新たなトランザクション名とトランザクション関数名の関連付けによってトランザクションにトランザクション関数ポインタがリンクされる。なぜならば、トランザクション名とトランザクション関数名の関連付けは、トランザクション関数ポインタとのリンクの計画である。リンクの実行はＤＬＬファイルのロードで行われる。計画はロードによって有効になるので、変更した計画を有効にするためには、ロードをやり直さなければならない。
【００９２】
以上の図５および図６に述べたようにして、システム管理アプリケーションにより、トランザクションに関する各種の設定を行った状態においては、図８に示すように、アプリケーションが実行依頼するトランザクションとそれに対応するトランザクション関数、そのトランザクション関数のアクセス対象となるレキシコンセットおよびレキシコン、およびレキシコンセットに対する参照・更新のアクセス形態が設定された状態となる。
【００９３】
このような設定処理がなされた状態において、ユーザアプリケーションが実行され、そこからトランザクションの実行依頼が発行された場合、トランザクション処理部は予め登録されている各種の対応表の内容に応じて、図９、図１０および図１１に示すような処理を行う。
すなわち、図９は、依頼された処理が参照トランザクションの場合を示すものである。この参照トランザクションは、前記のようにデータの改変を伴わないために、データベースがオリジナルレキシコンセットでもレプリカレキシコンセットであっても、直接トランザクションの実行が可能である。
【００９４】
依頼された処理が更新トランザクションの場合には、アプリケーションの配置されたホストが、更新対象のレキシコンセットのベースホストであるかレプリカサイトであるかにより処理が異なる。図１０は、アプリケーションの配置されたホストが、更新対象のレキシコンのベースホストである場合を示す。この場合は、自ホストのレキシコンセット中のレキシコンに対して、直接更新処理を行い、その実行結果を得ることができる。
【００９５】
一方、図１１は、アプリケーションの配置されたホストがレプリカサイトである場合で、この場合には、レプリカのデータを直接更新することはせず、ベースホストに対してオリジナルデータの更新処理を依頼する。そして、このオリジナルデータの更新結果をレプリケーションによってレプリカサイトに反映させるという手法で実行結果を得る。
【００９６】
［１１．別名登録の処理］
前記のように、本実施の形態においては、トランザクションの実行をアプリケーションから依頼するとき、トランザクションの実行対象であるレキシコンセットを指定する。この場合、レキシコンセットの指定方法としてレキシコンセットの定義時の名前（本名）だけでなく、別名を登録することを可能としている。そのため、レキシコンセットに別名を定義しその名前でトランザクション実行を依頼できる。
【００９７】
例えば、本名 LexiconSet_A というレキシコンセットに別名 Online と付ける。一方、本名 LexiconSet_Bというレキシコンセットに Maintainance という別名を付ける。
【表５】
0004050479.tif 000006
【００９８】
このような設定状態において、データを操作するアプリケーションとして、通常運用状態で動作するアプリケーション群Ｘと、データ構築のためのアプリケーションＹがある。通常運用状態で動作するアプリケーション群Ｘではトランザクションの実行を依頼するとき、常にレキシコンセットの指定を Online としている。データ構築のアプリケーション群Ｙではトランザクションの実行を依頼するとき、常にレキシコンセットの指定を Maintainance としている。そして、LexiconSet_AにもLexiconSet_Bにもアプリケーション群Ｘで使用するトランザクションとアプリケーション群Ｙで使用するトランザクションが登録されているとする。
【表６】
0004050479.tif 000007
【００９９】
この時点での別名の付け方により、このときアプリケーション群ＸはLexiconSet_A上で実行される。アプリケーション群ＹはLexiconSet_B上で実行される。
今、LexiconSet_B(Maintainance)でのデータ構築が完了し、新しいデータで通常運用状態で動作するアプリケーション群Ｘを動作させたいならば、別名を交換すればよい。
【表７】
0004050479.tif 000008
【０１００】
別名を交換すると、自然にアプリケーション群ＸのトランザクションはLexiconSet_B上で実行され、アプリケーション群ＹはLexiconSet_Aで実行されるようになる。このようにアプリケーションの変更なく、操作対象のレキシコンセットを変更できる。
【０１０１】
［１２．実施の形態の効果］
以上述べたように、本実施の形態によれば、トランザクションについてあらかじめ各種の設定を行うことが可能になるので、次のような作用効果が発揮される。
【０１０２】
（１）１つのデータベースに「別名」という形で複数の識別子を登録あるいは削除できるので、アプリケーションが発行するトランザクションのデータベース指定識別子を変更することなく、別のデータベースに対するトランザクションとして処理することができる。すなわち、アクセスするデータベースを容易に切り替えることができる。
【０１０３】
（２）レキシコンセット（データベース）全体ではなく、それを構成するレキシコン（部分）ごとに参照／更新をチェックすることによって、レキシコンによってオリジナルサイトが異なる場合やマルチオリジナルデータ（レキシコン）を更新するトランザクションをローカルと判定することができる。
【０１０４】
（３）トランザクションごとではなく、レキシコンセットにライブラリ（複数可）を対応付け、ライブラリにサイト毎にＤＬＬファイルを対応付けることで、サイト毎にＤＬＬファイルの構成内容が異なる場合でも効率的にトランザクション関数名とプログラムのリンクを行うことができる。
【０１０５】
［１３．他の実施の形態］
（１）実施例の説明では、トランザクションの実行をすべてトランザクション関数の呼出として説明したが、トランザクションの実行の形態はこれに限られるものではない。例えば、個々のトランザクションには具体的なデータ操作手続の記述が含まれており、本システムが一定の手順に従ってそれを解釈実行するという形態でも構わない。
【０１０６】
（２）実施例の説明では、「複数のマシン」を物理的に異なるマシンと、通信ネットワークをそれらの間の物理的媒体を含む通信手段として想定したが、これを論理的に異なるマシン、例えば同一マシン内の異なるプロセスを対象として実施しても構わない。その場合には、各（論理）マシンの識別に異なる手段（プロセスＩＤ等）を使用すればよい。また、本システムが管理対象とするデータベース（レキシコンセット）は、１つでも複数でも構わない。
【０１０７】
（３）レプリケ−ションデ−タを伝達する手段としての通信ネットワ−クとトランザクションを転送する手段としての通信ネットワ−クは物理的／論理的に同一のものを用いても異なるものを用いてもよい。多数のレプリカサイトに伝送するにはマルチキャスト／ブロ−ドキャストのネットワ−クを使用するのが効率的な場合が多いが、本発明の実施はそれに限定されるものではない。一方、トランザクションの転送は通常１対１通信で足りるが、実行すべきでないサイトが受信した場合はそのサイトの判断で実行しないあるいは破棄する等の処理を行なうという条件でマルチキャスト／ブロ−ドキャストのネットワ−クを採用することも可能である。
【０１０８】
（４）前記のようにトランザクションには、各種の属性を付与するため識別子（トランザクション名等）が含まれている。この識別子に対して、例えば実行すべきトランザクション関数を対応付けるが、この識別子は付与すべき属性の種類に応じて必要な数を設定すればよい。
トランザクションが操作の対象とするのは、１つのレキシコンセットとする。前記の実施の形態では、ユニスペースが複数のレキシコンセットを含むことができるので、トランザクションには、操作対象のレキシコンセットを明記する。このレキシコンセット名を上記識別子の１つと考えても良い。もちろん、他の識別子から操作対象レキシコンセットを判別する手段を設けた実施の形態も可能で、レキシコンセット名の明記は必須ではない。
【０１０９】
【発明の効果】
以上説明したように、本発明によれば、下記に述べるような優れた効果を発揮するトランザクション型データベースシステムを提供することができる。
【０１１０】
（１）リモート／ローカル構造による柔軟性
本発明で提供している分散システムは、リモート／ローカル構造と呼ばれるシステムのハードウェア構成に依存しない方式である。アプリケーション・ソフトウェアはシステムのハードウェア構成に関する実装を行う必要が無いため、ソフトウェア開発をシステム構築から独立させることができる。そのため、システム構築のためのコーディングは一切不要で、システム構築／設定作業はすべてシステム運用環境を用いて行うことができる。
【０１１１】
リモート／ローカル構造は、アプリケーション・ソフトウェアをコンピュータのハードウェア構成から独立させる。そのため、アプリケーションはシステム物理構造、すなわちハードウェアの物理構成やデータがどのコンピュータ上に実装されているかあるいはデータ整合性など、まったく意識する必要がない。したがって、業務ロジックの設計・実装に専念でき、開発生産性が向上する。このように本発明によれば、アプリケーション開発者は、リモート実行、ローカル実行を意識せずにアプリケーションの開発ができるため、アプリケーションが単純になり、生産性が上がる。
【０１１２】
（２）トランザクション関数による生産性向上
本発明では、アプリケーションからのデータへのアクセスはトランザクション関数を通じて行われる。すなわち、トランザクション関数によってデータのカプセル化を実現している。データのカプセル化は、データ構造の変更がアプリケーションへ波及しないため、データ操作を行うトランザクションを部品化できる。特に、本発明はリモート／ローカル構造のシステム構成を取っているため、トランザクション関数はシステムに関する実装を一切含まない。そのため高い独立性を持つ部品ができ再利用性が一層高まり、トランザクション関数を再利用することで開発生産性が著しく向上する。
【０１１３】
（３）システム停止を伴わない機能変更
本発明のシステム設定は、データ構造の変更やトランザクション関数の追加などの機能については、動的に変更することができる。そのため、これらの機能についてはシステムを停止させることなく機能変更ができるので、システム設定変更の対応が非常に楽である。例えば、トランザクションと対応するトランザクション関数は自由に変えることができるため、アプリケーションはトランザクション名だけを意識すればよい。また、あらかじめトランザクションにデータに対するアクセス権を与えることにより、アプリケーションによるデータの誤操作を防ぐことができる。このようにシステムを停止させずに機能の入れ替えが可能であることは、「保守性の向上」「システム設定変更の容易さ」が効果として挙げられる。
【図面の簡単な説明】
【図１】本発明のトランザクション処理型データベースシステムの全体構成を示す機能ブロック図である。
【図２】図１のデータベースシステムにおける各ホストの構成を示すブロック図である。
【図３】図１のデータベースシステムにおけるシステム構成の設定順序を示すフローチャートである。
【図４】図１のデータベースシステムにおけるアプリケーションとトランザクション関数の実行手順を示すフローチャートである。
【図５】図１のデータベースシステムにおけるトランザクション管理部の構成を示すブロック図である。
【図６】図５のトランザクション管理部の動作を示すフローチャートである。
【図７】アプリケーションによるトランザクション実行依頼時の処理を示すブロック図である。
【図８】システム管理アプリケーションによるトランザクションの各種の設定状態を示すブロック図である。
【図９】参照トランザクションの実行状態を示すブロック図である。
【図１０】ベースホストのオリジナルデータに対する更新トランザクションの実行状態を示すブロック図である。
【図１１】レプリカサイトのレプリカデータに対する更新トランザクションの実行状態を示すブロック図である。
【符号の説明】
１…データベース管理システム
２…レキシコンセット
２１…レキシコン
３…トランザクション受付部
４…送信部
５…受信部
１１…システム構成設定部
１２Ａ…トランザクション管理部
１２Ｂ…トランザクション処理部
１３…データ常駐管理部
１４…レプリケーション処理部
１５…ベースホスト切替部
４０１…トランザクション登録管理部
４０２…トランザクション格納部
４０３…ライブラリ登録部
４０４…レキシコンアクセス形態設定部
４０５…トランザクション−トランザクション関数関連付け部
４０６…ＤＬＬファイル
４０７…ＤＬＬロード部
４０８…ＤＬＬ格納処理部
４０９…ライブラリ−ＤＬＬ関連付け部
４１０…レキシコンセット別名登録部
５０２…ライブラリ
５０３…トランザクション−ライブラリ対応表
５０４…トランザクション−レキシコン対応表
５０５…トランザクション−トランザクション関数対応表
５０８…トランザクションプログラム格納領域
５０９…ライブラリ−ＤＬＬ対応表
【図１】
0004050479.tif 000009
【図２】
0004050479.tif 000010
【図３】
0004050479.tif 000011
【図４】
0004050479.tif 000012
【図５】
0004050479.tif 000013
【図６】
0004050479.tif 000014
【図７】
0004050479.tif 000015
【図８】
0004050479.tif 000016
【図９】
0004050479.tif 000017
【図１０】
0004050479.tif 000018
【図１１】
0004050479.tif 000019