(57)【特許請求の範囲】
【請求項１】
複数の計算機がネットワークを介して仮想的にメモリを共有するシステムにおけるデータ転送制御方法において，
各計算機が前記メモリにアクセスする際のロック制御をページ単位で行い，
各計算機の前記メモリへのアクセスに伴って必要になる計算機間のデータ転送を，アクセス要求があったページを含む所定数のページからなるバルクページ単位で行う
ことを特徴とする分散共有メモリのデータ転送制御方法。
【請求項２】
請求項１記載の分散共有メモリのデータ転送制御方法において，
前記メモリに対するロックモードとして，リードロック，ライトロックの他に，予約ロックのモードを有し，
実際にアクセス対象となるデータページのみにリードまたはライトロックを行い，同一バルクページ内の他のページには予約ロックを行い，
あるプロセスがすでに予約ロック済みのページにアクセスする場合，予約ロックをリードまたはライトロックに変更するという通知を，データを管理する計算機へ送り，
すでに自ら予約ロックしていたページは，リードロックへの変更を許し，また他のプロセスによってリードロックされていないことを条件としてライトロックへの変更を許し，
すでに他のプロセスによって予約ロックされたページに対してライトロックする場合には，すでに他のプロセスによって獲得されていた予約ロックを取り消すとともに，他のプロセスの計算機が保持する該当ページの複製を消去する
ことを特徴とする分散共有メモリのデータ転送制御方法。
【請求項３】
複数の計算機がネットワークを介して仮想的にメモリを共有する計算機システムにおいて，
前記計算機は，前記メモリにアクセスする際にページ単位でロック制御を行う手段と，
アクセス要求があったページを含む所定数のページからなるバルクページ単位で計算機間のデータ転送を行う手段とを備える
ことを特徴とする分散共有メモリを持つ計算機システム。
【請求項４】
請求項３記載の分散共有メモリを持つ計算機システムにおいて，
マクロもしくは関数またはプログラム起動時のパラメータにより，プロセスごとに前記バルクページの単位となるページ数を指定する手段を有する
ことを特徴とする分散共有メモリを持つ計算機システム。
【請求項５】
請求項３記載の分散共有メモリを持つ計算機システムにおいて，
前記計算機は，各ページごとにライトロック，リードロックおよび予約ロックの状態に関する情報を管理するページ管理手段を持つとともに，
前記ライトロック，リードロックまたは予約ロックに対して，前記バルクページ単位のデータ転送により，アクセス要求元のプロセスの計算機に該当ページの複製を作成する手段と，
すでに他のプロセスによって予約ロックされたページに対してライトロックする場合に，他のプロセスの予約ロックを取り消し，前記バルクページ単位で転送された該当ページの複製を消去する手段を持つ
ことを特徴とする分散共有メモリを持つ計算機システム。
【請求項６】
請求項３記載の分散共有メモリを持つ計算機システムにおいて，
前記ロック制御を行う手段は，
前記メモリに対するロックモードとして，リードロック，ライトロックの他に，予約ロックのモードを有し，
同一ページに対するリードロックと予約ロックの重複ロックを許し，
すでに他のプロセスによってライトロックされたページには，予約ロックを不可とし，
すでに自ら予約ロックしていたページは，リードロックへの変更を許し，また他のプロセスによってリードロックされていないことを条件としてライトロックへの変更を許し，
すでに他のプロセスによって予約ロックされたページに対してライトロックする場合には，すでに他のプロセスによって獲得されていた予約ロックを取り消すとともに，他のプロセスの計算機が保持する該当ページの複製を消去するようにし，
前記データ転送されたバルクページにおいて現にアクセスするページにはリードロックまたはライトロックをかけ，他のページには前記予約ロックをかける
ことを特徴とする分散共有メモリを持つ計算機システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は，計算機網上に実現された分散データベース管理システム等においてデータを効率よく扱うことを可能にした分散共有メモリのデータ転送制御方法および分散共有メモリを持つ計算機システムに関する。
【０００２】
マルチメディアデータ等の大きなサイズを持ったデータを扱う場合や，ファストイーサネット，ＡＴＭなど大容量のネットワークを利用する場合に特に適する。
【０００３】
【従来の技術】
図１５は，一般的な従来の計算機網を示す。
例えば図１５に示すように，複数の計算機１０１〜１０４がネットワーク１００で接続された計算機システムが用いられている。各々の計算機はディスク記憶装置１１１〜１１４を持ち，ディスク記憶装置１１１〜１１４にはデータベースが格納される。データベースは複数のディスク記憶装置に分散されていてもよいし，１つのディスク記憶装置に集められていてもよい。データベースの利用者は，計算機網上の任意の計算機１０１〜１０４から，ネットワーク１００を介して，任意のディスク記憶装置１１１〜１１４に格納されたデータベースにアクセスする。
【０００４】
分散データベース管理システムと分散共有メモリとは密接な関係がある。分散共有メモリ（または分散共有仮想メモリともいう）とは，計算機網を構成する複数の計算機によって共有されたメモリ空間のことである。具体的には，計算機網上の各計算機に分散共有仮想メモリの複製が作成され，互いの通信により各複製のメモリイメージの同一性が維持される（このことをメモリコヒーレンスという）。
【０００５】
このシステムでは，オペレーティングシステム（ＯＳ）が提供するメモリマップドファイルの機能を利用することで，ディスク記憶装置にファイルとして格納されたデータベース（データベースファイル）を，分散共有仮想メモリにマップすることが可能である。
【０００６】
図１６は，図１５に示すシステムでのデータベースへのアクセス説明図である。
図１６のように，あるアプリケーションプログラム１５２が，ネットワーク１００を介して遠隔のデータベース１４１にアクセスする場合，両方の計算機１０１，１０２の仮想メモリ空間１３１，１３２中に，分散共有仮想メモリ１２１，１２２が作成される。そして，一方の分散共有仮想メモリ１２１はデータベースファイルにマップされ，もう一方の分散共有仮想メモリ１２２はアプリケーションプログラム１５２から利用される。
【０００７】
ここでは，データベースファイルが格納されたディスク記憶装置１１１に接続された計算機１０１をデータベースサイト，アプリケーションプログラム１５２が実行されるサイトをアプリケーションサイトと呼ぶことにする。
【０００８】
データベースサイトおよびアプリケーションサイト上で，メモリコヒーレンスを行うための特別なプロセスを常に実行し，このプロセスが実行されていることをアプリケーションプログラムから意識させないようにすることが可能である。このようにすると，分散共有仮想メモリ１２２へのアクセスは，ネットワーク１００を意識せずに，通常のメモリアクセスと同様に行うことができる。すなわち，分散共有仮想メモリ１２２を利用することで，データベース１４１へのアクセスを通常のメモリアクセスと同様に行うことができる。このことは，計算機網上に実現された分散データベースのアプリケーションプログラム１５２の開発が容易に行えることを意味する。
【０００９】
以上のように，メモリコヒーレンス用プロセスとアプリケーションプログラムとの分離により，アプリケーションプログラム開発を容易に行えるようにすることが，本システムにおいてベースとなる考え方である。
【００１０】
このようなシステムでは，相互に関係のない複数のアプリケーションプログラムが同時にデータベースにアクセスを行うことがあるので，互いの干渉を防ぐために一種の排他制御が必要である。そのための代表的な方式には，リードロックとライトロックの組み合わせによるロック方式があり，リレーショナルデータベース等のデータベースの排他制御に広く用いられている。
【００１１】
ロック方式は，あるアプリケーションプログラムが，あるデータにアクセスする前に，そのデータに対応したロックの獲得を義務づけるものである。アプリケーションプログラムは，データを読み込む前にリードロックを獲得しなければならず，データを更新する前にライトロックを獲得しなければならない。
【００１２】
一般に，分散共有メモリにおけるロックの単位は，計算機システムにおいてあらかじめ定められた４ＫＢまたは８ＫＢというような大きさのページである。すでにリードロックされているページに対し，他のアプリケーションプログラムが再度リードロックをすることは可能であるが，ライトロックされているページにはリードロックをすることはできない。また，すでに他のアプリケーションプログラムにリードロックまたはライトロックされているページに対しては，ライトロックをすることはできない。
【００１３】
分散共有仮想メモリ１２２内に，分散共有仮想メモリ１２１の複製が作成されていない場合，アプリケーションプログラム１５２からのデータアクセスに応じて，自動的に複製が作成される。これはメモリコヒーレンス用プログラムによって行われる。そのデータ転送単位は，ロックの単位に合わせて，ページである。
【００１４】
【発明が解決しようとする課題】
最近，マルチメディアデータなど，アクセス対象となるデータのサイズの大きいものが多く用いられるようになってきている。しかし，従来の分散共有メモリ・システムのように，データを転送する単位がページであると，ページサイズより大きいデータを転送する場合に，そのデータ転送のメッセージ数が増えることになる。そうすると，１回のメッセージ通信のために固定的にかかる時間が，メッセージ通信の回数分だけ増加することになる。
【００１５】
メッセージ通信の回数を減らすために，１回で転送するデータの大きさをページよりも大きくした場合，分散共有システムにおいては，各計算機においてデータの内容を一致させておく必要があるので，ロックの単位もデータ転送の単位に合わせて大きくする必要があると考えられていた。ところが，ロックの単位が大きくなると，複数のアプリケーションプログラム間でのロック制御に伴う排他制御が働く機会が増えるので，並列実行性が損なわれ，アプリケーションプログラムのレスポンスタイムの劣化，システム全体としての性能の低下を招いてしまうという問題が生じる。
【００１６】
本発明は上記問題点の解決を図り，分散共有メモリを持つ計算機システムにおいて，効率的なデータ転送を可能にするとともに，アプリケーションプログラムの並列実行性を損なわないようにすることを目的とする。
【００１７】
【課題を解決するための手段】
図１は本発明の概要説明図である。
図中，１，１’はプロセッサとメモリを持つ計算機，２，２’はアプリケーションプログラム（ＡＰ），３，３’は計算機１，１’が共有する分散共有仮想メモリ，４，４’は分散共有仮想メモリ３，３’のデータへのアクセスの競合を制御するためのロック制御手段，５，５’はページ単位のロック情報を管理するページロックテーブル，６，６’はバルクページ単位で計算機１，１’間のデータ転送を行うデータ転送手段，７はネットワークを表す。
【００１８】
本発明は，各計算機１，１’が分散共有仮想メモリ３，３’にアクセスする際のロック制御をページ単位で行うロック制御手段４，４’と，各計算機１，１’が分散共有仮想メモリ３，３’へのアクセスに伴って必要になる計算機間のデータ転送を，アクセス要求があったページを含む所定数のページからなるバルクページ単位で行うデータ転送手段６，６’とを持つことを主要な特徴とする。
【００１９】
ここで，バルクページとは，ページをある個数ずつまとめたものである。ページには０から順に番号がついており，バルクページを構成するページ数をＮとすると，あるページＭが属するバルクページの番号は，Ｍ／Ｎを超えない最大の整数である。図１（Ｂ）はＮ＝３の場合の例を示している。
【００２０】
なお，バルクページを第０ページから順に定義するのではなく，アクセス要求があったページを先頭にして，そこから所定数のページ群をバルクページとして定義するようにしてもよい。
【００２１】
データ転送の単位をバルクページとすることで，ページ単位でデータを転送する場合よりもメッセージ数を削減でき，システム全体としての性能が向上する。一方，ロック制御は従来と同様にページ単位で行われるので，ロック獲得待ちなどが増えることによってアプリケーションプログラム２，２’の実行性能が悪くなることはない。
【００２２】
バルクページの単位となるページ数は，アプリケーションプログラム２，２’のプロセスごとに，システムが提供するマクロもしくは関数またはプログラム起動時のパラメータにより指定することができる。
【００２３】
これによって，アプリケーションプログラム２，２’が扱う例えば画像データ，音声データ，テキストデータというようなデータの属性に応じて，最適なページ数をバルクページとして定めることができる。
【００２４】
また，本発明では，ロックをページ単位で行い，データ転送をバルクページ単位で行うことを実現するための一手法として，リードロックとライトロックの組み合わせによるロック方式に拡張を行い，リードロック，ライトロックに加えて第３のロックモードとして「予約ロック」モードを導入する。
【００２５】
本発明では，例えば図１５および図１６のようなシステムにおいて，データベースアクセス時には，メモリコヒーレンス・プロセスによって，データベースのデータの複製がアプリケーションサイトに作成されるが，計算機網上でのデータの複製の作成において，「あるデータに対して，予約ロック，リードロックまたはライトロックが行われているならば，そのロックを行ったアプリケーションサイトに，そのデータの複製が作成されており，逆も成立する」という原則が導入される。以上の原則を守るため，予約ロックの獲得は，次の規則に従って行われる。
【００２６】
１．すでに他のアプリケーションプログラムによってライトロックされたページには，予約ロックはできない。
２．まだロックされていないページあるいはすでに他のアプリケーションプログラムによってリードロックまたは予約ロックされたページには，予約ロック可能であり，この場合は，アプリケーションサイトに該当ページの複製が作成される。
【００２７】
さらに，すでに予約ロックされたページに対しては次の規則を用いる。
１．すでに，自ら予約ロックしていたページは，リードロックに変更可能である。
【００２８】
２．すでに，自ら予約ロックしていたページは，他のアプリケーションプログラムによってリードロックされていない限りライトロックに変更可能である。
３．すでに他のアプリケーションプログラムによって予約ロックされたページには，リードロック可能である。この場合，すでに自ら予約ロックしていたのでなければ，アプリケーションサイトに該当ページの複製が作成される。
【００２９】
４．すでに他のアプリケーションプログラムによって予約ロックされたページには，ライトロックも可能であるが，この場合，すでに他のアプリケーションプログラムによって取得されていた予約ロックを取り消すとともに，そのアプリケーションサイトの該当ページの複製も消去する。
【００３０】
これらロックモードの管理は，データベースサイトおよびアプリケーションサイトに１つずつ作成されたページロックテーブル５，５’を用いて行う。ページロックテーブル５，５’は，各ページごとにロックの種類とそのロックを行ったプロセスのＩＤを格納するデータ構造を持つ記憶手段である。データベースシステムは計算機網上に実現されているから，ページロックテーブル５，５’も計算機網上に分散されることになる。
【００３１】
図２は本発明の作用説明図である。図２において，点線は転送されたデータ，実線はアプリケーションプログラムがアクセス中のデータを表している。
アプリケーションプログラムは，アクセスしようとするデータが自計算機内にない場合，データを要求し，そのデータが到着するまで待たなければならない。図２のＴ１がデータの到着を持つための処理の中断時間である。その中断の後，処理を再開し，転送されたデータにアクセスする。この中断時間Ｔ１の総和を短くすることが性能の向上につながる。
【００３２】
一般にネットワークの伝送時間は，メッセージサイズｘに対する一次式ａｘ＋ｂで近似できる。ａはある単位長さのデータを送るのに要する時間の逆数，ｂは１回のメッセージ通信のために固定的にかかる時間である。Ｎページのデータをページ単位で送る場合，伝送時間はＮ（ａｘ＋ｂ）となるのに対し，Ｎページのデータを１バルクページとして送る場合，伝送時間はＮ（ａｘ）＋ｂで済む。すなわち，データ転送をバルクページ単位とすることにより，ページ単位で転送するときよりも，アプリケーションの待ち時間を（Ｎ−１）ｂだけ減らすことが可能になる。
【００３３】
【発明の実施の形態】
以下，本発明を分散データベース管理システムに適用した場合の実施の形態を説明する。
【００３４】
メモリコヒーレンスの実現には，すでにいくつかの方法があるが，本実施の形態におけるメモリコヒーレンスは，「必要になったら通信を行う」という方針に基づいている。すなわち，最初，アプリケーションサイトの分散共有仮想メモリの中身は空であり，必要に応じて必要な分だけのデータ転送が，アプリケーションサイトに対して行われるという方針である。
【００３５】
アプリケーションサイトは，データアクセスの前にデータ要求を発し，その返事としてデータがアプリケーションサイトに供給される。このようにデータが必要になった時点で，データ要求とデータ供給の一連のメッセージがネットワークを介してやりとりされる。
【００３６】
従来，このようなシステムでのメモリコヒーレンスにおけるデータ転送の単位は，「ページ」を基本としていた。ページとは，一般に４０９６バイトあるいは８１９２バイトの，オペレーティングシステムにより規定される長さである。すなわち，あるデータＡがアクセスされた場合，このデータＡを含むページ全体が転送される。このように，データ転送は機械的に区切られた単位で行われ，アプリケーションプログラムがアクセスするデータの構造には関係なく行われる。
【００３７】
もし，アプリケーションプログラムのデータ構造を意識したデータ転送を行わせるとしたなら，アプリケーションプログラムの側からメモリコヒーレンス・プロセスへ何らかの指示を行わなければならず，効率が低下し，アプリケーションプログラムも複雑になってしまう。従って，データ転送の基本単位をページとすることは妥当であったといえる。しかし，特にマルチメディアデータ等の大きなサイズのデータを扱う場合には，前述したように効率上の問題がある。
【００３８】
本発明の核となるアイデアは，データ転送を複数のページをまとめて一度に行うことで，従来のようにデータ転送を１ページごとに行う場合と比べて，メッセージ数を大きく削減し，結果として分散データベース管理システムの性能向上を達成することである。
【００３９】
アプリケーションプログラムのデータアクセスにおいて，データ要求とデータ供給のメッセージとのやりとりが行われるが，データ転送の単位をバルクページのように大きくすることで，ページ単位の場合よりもメッセージ数を削減でき，全体としての性能が向上する。
【００４０】
以上のようにデータ転送の単位をバルクページとする一方，ロックの単位はページのままとして，効率のよい制御を実現する。
図３は本発明の実施の形態におけるロック制御説明図である。
【００４１】
本実施の形態では，リードロックとライトロックの組み合わせによるロック方式に拡張を行い，リードロック，ライトロックに加えて第３のロックモードとして「予約ロック」モードを導入する。
【００４２】
あるページに対するリード／予約／ライトのロック要求に対し，そのページの現在の状態がロックなしの場合には，ロック可となる。また，現在の状態がリードロックまたは予約ロックの場合に，新たなリードロック，予約ロックの重複ロックも許可される。一方，すでにライトロックされているページには，リード／予約／ライトのいずれのロックも禁止される。
【００４３】
リードロックと予約ロックの違いは，現在の状態がリードロックである場合に，新たなライトロック要求は，リードロックが終了するまで待たされ，現在の状態が予約ロックだけである場合には，新たなライトロック要求は許可されることである。この場合，先の予約ロックは取り消され，またその予約ロックしたアプリケーションサイトの該当ページの複製が消去される。
【００４４】
図４は，以上のロックモードをページ単位で管理するためのページロックテーブルの構造を示す。
データベースサイトおよびアプリケーションサイトは，それぞれ図４に示すような構造のページロックテーブルによって，分散共有仮想メモリのロックモードを管理する。ページロックテーブルは，データベースファイルのページ数だけのエントリを持ち，各ページごとにロックの種類とそのロックを行ったプロセスの情報を格納している。
【００４５】
あるページに対してライトロックを行えるアプリケーションプログラムは高々１つであり，ページロックテーブルにおけるライトロックの欄には，ライトロックしているプロセスＩＤまたは計算機名（アプリケーションサイト名）が格納される。予約ロックおよびリードロックを行えるアプリケーションプログラムは複数個あるため，予約ロックおよびリードロックを行っているアプリケーションプログラムの情報は，該当ページのエントリからポイントされるリスト構造で格納される。
【００４６】
アプリケーションサイトにおけるページロックテーブルとデータベースサイトにおけるページロックテーブルの管理情報は次のように異なる。
アプリケーションサイトのページロックテーブルでは，それが置かれているアプリケーションサイトで実行中のアプリケーションプログラムのプロセスＩＤが該当するページのエントリに格納される。
【００４７】
一方，データベースサイトにおけるページロックテーブルには，そのデータベースにアクセス中の全アプリケーションプログラムについての情報が格納され，それには計算機網を構成するすべての計算機上のアプリケーションプログラムに関する情報が含まれる。各エントリには，ロックの種類ごとに，そのロックを行っているアプリケーションプログラムのプロセスＩＤ，または，そのアプリケーションプログラムが実行中の計算機名（アプリケーションサイト名）が格納される。アプリケーションプログラムのプロセスＩＤを格納するのは，データベースサイトにおいてアプリケーションプログラムが動作している場合であり，アプリケーションサイト名を格納するのは，そのアプリケーションプログラムが動作している計算機がデータベースサイトではない場合である。
【００４８】
図５はリードロック獲得処理の例を示す。
アプリケーションプログラムがあるデータをリードする前には，図５に示す処理を行う。まず，ステップＳ１では，ページロックテーブルを参照し，すでに自らによってロックされているかどうかを判定する。自らが予約ロックしている場合にはロックモードをリードロックに変更し（ステップＳ２），処理を続行する。自分が予約ロックをしていない場合，すでに他のアプリケーションプログラムによってライトロックされているかどうかを判定し（ステップＳ３），ライトロックされていればロック獲得失敗とする（ステップＳ４）。
【００４９】
ライトロックされていない場合，ロックモードをリードロックに設定し（ステップＳ５），バルクページ転送を行う（Ｓ６）。
ロックの獲得に失敗したときは，それは，他のアプリケーションプログラムがロックを保持していることが原因であるから，原因となったアプリケーションプログラムの終了を待って，再度，ロックの獲得および変更を行う。
【００５０】
ロックの獲得に成功した場合の処理は２つに分かれる。そのページが，自らによって何らロックされていなかった場合には，同時にバルクページ転送が行われるが，このとき同一バルクページ内の他のページについては，可能な限り多くの予約ロックの獲得を行い，予約ロックの獲得を行ったページについてのみ転送を行う。そのページが，すでに予約ロックを含め何らかのロックが自らになされていた場合，そのページを含むバルクページの転送はすでに済んでいることになるから，ロックモードの変更のみで処理は終了する。
【００５１】
図６は，リード時におけるメッセージ通信の例を示す図である。
あるアプリケーションプログラムが，ロックされていないページをリードする場合，内部的には図６のように２往復のメッセージ通信が行われる。メッセージの最初の１往復はリードロックに関するものであり，次の１往復は実際のページデータ転送に関するものである。
【００５２】
まず，アプリケーションサイトは，データベースサイトに「リードロック可能か」を問い合わせるロック要求メッセージを送る。これを受け取ったデータベースサイトは，リードロック可能な場合は直ちにロック許可を返し，リードロックできない場合はリードロック可能になるのを待って，ロック許可を返す。次のページデータ転送メッセージも，データベースサイトに送られる。
【００５３】
アプリケーションプログラムがすでに予約ロック済みのページをリードする場合，「ロックモードをリードロックに変更する」というメッセージが，アプリケーションサイトからデータベースサイトに送られる。この間アプリケーションプログラムの実行は中断しない。
【００５４】
以上はリードロックの例であるが，ライトロックについてもほぼ同様である。アプリケーションプログラムがあるページをライトする場合には，まず，ロック要求のメッセージがデータベースサイトに送られ，ロック許可のメッセージが返される。次に，そのページについてすでに自らによってロックされていなかった場合に限り，データベースサイトにページデータ要求メッセージが送られる。
【００５５】
あるアプリケーションプログラムＡがあるページをライトする場合，すでに他のアプリケーションプログラムＢによって予約ロックされているときには，ロック要求メッセージはＡのアプリケーションサイトからデータベースサイトを経由してＢのアプリケーションサイトに回送される。ロック可能かどうかはＢのアプリケーションサイトで判断され，ロック許可はデータベースサイトを再び経由してＡのアプリケーションサイトに届く。この時，ロックが許可されたならば，Ｂのアプリケーションサイトにおける該当ページの複製は消去され，Ｂの該当ページに対する予約ロックも取り消される。
【００５６】
リード時とライト時のアプリケーションサイトでの処理およびデータベースサイトでの処理を，図７〜図１０に従ってさらに詳しく説明する。
図７は，リード時におけるアプリケーションサイトでの処理の例を示す。
【００５７】
アプリケーションプログラムからのリード要求に対して，ステップＳ１０では，ページロックテーブルから該当ページの情報を読み出す。ステップＳ１１の判定により，すでに自らによって予約ロックされていれば，ステップＳ１２へ進み，予約ロックされていなければステップＳ１３へ進む。ステップＳ１２では，ページロックテーブルの該当ページのロックモードをリードロックに変更し，「ロックモードをリードロックに変更する」というメッセージをデータベースサイトへ送り，処理を終了する。
【００５８】
ステップ１３では，データベースサイトにリードロック要求を送り，ロック許可を持つ。ステップＳ１４では，ロック許可とともに送られてきた情報をもとに，バルクページ転送要求を行い，結果を待つ。バルクページ転送が終わると，ステップＳ１５では，バルクページ転送の結果，ページデータが送られてきたページについて，ページロックテーブルに予約ロックを登録し，該当ページに対しては，リードロックを登録する。以下，このページに対してのリード処理が可能になる。
【００５９】
図８は，ライト時におけるアプリケーションサイトでの処理の例を示す。
アプリケーションプログラムからのライト要求に対して，ステップＳ２０では，データベースサイトにライトロック要求メッセージを送り，結果を持つ。ステップＳ２１では，ページロックテーブルから該当ページの情報を読み出し，ステップＳ２２によって，すでに自らによって予約ロックまたはリードロックされているかどうかを判定する。ロックされている場合，ステップＳ２３によって，ページロックテーブルの該当ページのロックモードをライトロックに変更し，処理を終了する。
【００６０】
自らによって予約ロックもリードロックもしていない場合，ステップＳ２４によって，ロック許可とともに送られてきた情報をもとに，バルクページ転送要求を行い，結果を待つ。次に，ステップＳ２５では，バルクページ転送の結果，ページデータが送られてきたページについて，ページロックテーブルにロックモードとして予約モードを登録し，該当ページに対しては，ライトロックを登録する。以下，このページに対してのライト処理が可能になる。
【００６１】
図９は，リード時におけるデータベースサイトでの処理の例を示す。
アプリケーションサイトからのリードロック要求に対して，ステップＳ３０では，ページロックテーブルから該当ページの情報を読み出す。ステップＳ３１の判定により，すでに他のアプリケーションプログラムによってライトロックされていれば，ステップＳ３２へ進み，ライトロックされていなければステップＳ３３へ進む。ステップＳ３２では，ライトロックしているアプリケーションプログラムのライトロック解放を待つ。
【００６２】
次のステップＳ３３では，ページロックテーブルの該当ページのロックモードとしてリードロックを登録し，続くステップＳ３４では，ページロックテーブルから，該当ページを含むバルクページ内のページのうちライトロックされていないページを探し，予約ロックを登録する。同時に，その結果をロック許可とともに要求元のアプリケーションサイトに通知し，処理を終了する。
【００６３】
図１０は，ライト時におけるデータベースサイトでの処理の例を示す。
アプリケーションサイトからのライトロック要求に対して，ステップＳ４０では，ページロックテーブルから該当ページの情報を読み出す。ステップＳ４１の判定により，すでに他のアプリケーションプログラムによってリード／予約／ライトロックされていれば，ステップＳ４２へ進み，ライトロックされていなければステップＳ４３へ進む。ステップＳ４２では，リード／ライトロックしているアプリケーションプログラムのリード／ライトロックの解放を待つ。ロックが予約ロックの場合には，その予約ロックを取り消し，予約ロックをしたアプリケーションサイトに該当ページの消去通知を行う。
【００６４】
次のステップＳ４３では，ページロックテーブルの該当ページのロックモードとしてライトロックを登録し，続くステップＳ４４では，ページロックテーブルから，該当ページを含むバルクページ内のページのうちライトロックされていないページを探し，予約ロックを登録する。同時に，その結果をロック許可とともに要求元のアプリケーションサイトに通知し，処理を終了する。
【００６５】
【実施例】
図１１は，本発明の実施例に係るシステム構成の例を示す。
図中，１Ａ〜１Ｄは各々プロセッサとメモリとを有する計算機，２Ａ〜２Ｄはアプリケーションプログラム，１１Ａ〜１１Ｄはアプリケーションプログラム２Ａ〜２Ｄに対してデータベースへのアクセス機能を提供するデータベースサーバ，７は各計算機１Ａ〜１Ｄを接続するネットワーク，８Ａ〜８Ｄはデータベースあるいは他の計算機から送られてきたデータベースの複製，９Ａ〜９Ｄはデータベース８Ａ〜８Ｄを格納するディスク記憶装置を表す。
【００６６】
計算機網を構成する各計算機１Ａ〜１Ｄには，データベースサーバ１１Ａ〜１１Ｄが一つずつ配置される。各データベースサーバ１１Ａ〜１１Ｄは，互いに通信を行い，本発明の機能を実現する。アプリケーションプログラム２Ａ〜２Ｄは，同一計算機内のデータベースサーバ１１Ａ〜１１Ｄとのみ通信を行う。すなわち，アプリケーションプログラム２Ａ〜２Ｄは，同一計算機内のデータベースサーバ１１Ａ〜１１Ｄによって供給されるデータベース８Ａ〜８Ｄにアクセスを行うが，データベースサーバ間で通信や各種処理が行われていることは意識しない。
【００６７】
図１２は，計算機の詳細ブロック図であり，図１１に示す計算機１Ａ〜１Ｄのうちの２台を計算機１，計算機１’として示している。
データベースサーバ１１（データベースサーバ１１’も同様）は，アプリケーションプログラム２とデータベースサーバ１１間の通信のためのアプリケーションインタフェース１２，データベースへのアクセスを制御し，データベース領域１６を管理するデータベース制御部１３，ロック制御を行うロック制御部１４，他のデータベースサーバとの通信を行う通信制御部１５，データベースのデータを展開するための分散共有仮想メモリによるデータベース領域１６，ページ単位のロック情報を管理するページロックテーブル１７を持つ。
【００６８】
以下，図１２に示す各処理部の動作を，計算機１’のアプリケーションプログラム２’が離れた計算機１のデータベース８内のデータを読み出す場合を例にとって説明する。
【００６９】
図１３はデータベースオープン時の処理，図１４は最初のリードロックにおける処理を示している。
〔データベースオープン時の処理〕
計算機１’（Ａとする）上のアプリケーションプログラム２’（プロセス番号を５００とする）が，離れた計算機１（Ｂとする）のディスク記憶装置９内にあるデータベース８（ファイル名をＸとする）を利用したい場合，そのアプリケーションプログラム２’は，Ａのデータベース制御部１３’に，“データベースオープン”の要求を行う必要がある。
【００７０】
このデータベースオープンの要求では，図１３（Ａ）に示すように，アプリケーションプログラム２’から
“ｄｂ＿ｏｐｅｎ（Ｂ，Ｘ，ｙｅｓ，１００）”
という要求がアプリケーションインタフェース１２’へ送られる。ここで，データベースを持つ計算機名としてＢ，データベースのファイル名としてＸ，バルクページ転送を行う指示としてｙｅｓ（従来と同様にページ転送を行わせる場合にはｎｏを指定する），バルクページ転送のページ数として１００が指定されている。
【００７１】
アプリケーションインタフェース１２’は，このデータベースオープンの要求メッセージに，アプリケーションプログラム２’のプロセス番号５００を付加してデータベース制御部１３’に伝える。データベース制御部１３’は，そのメッセージにＡの計算機からの要求であることを付加し，ＡおよびＢの通信制御部１５’，１５を利用して，直ちにＢのデータベース制御部１３へ送る。
【００７２】
データベース制御部１３は，データベースオープン処理（従来のデータベースオープン処理と同様）を行い，問題がなければ，ＯＫのメッセージをＢおよびＡの通信制御部１５，１５’を利用してデータベース制御部１３’に返す。データベース制御部１３’は，必要なデータベースオープン処理を行い，アプリケーションインタフェース１２’を介して，アプリケーションプログラム２’にデータベースオープンがＯＫであることを通知する。
【００７３】
以上の結果，データベース制御部１３，１３’によるデータベースオープン処理によって，図１３（Ｂ），（Ｃ）に示すように，データベース領域１６，１６’にデータベースファイルのための領域が確保される。
【００７４】
ここでは，領域の確保が行われるだけで，実際のデータベースファイルの読み込み，転送が行われるわけではない。必要になった時点で適当な量だけ読み込み，転送を行うというのが，本発明におけるベースとなる考え方である。一般にデータベースファイルのサイズは巨大であり，アプリケーションプログラム２’が実際に利用するのはその一部であるため，この考え方は合理的である。
【００７５】
〔ロック要求（１）の処理〕
アプリケーションプログラムは，データを利用する前に，そのデータを含むページのロック要求を行わなければならない。ロック要求には，リードロック要求とライトロック要求があり，データを読み込む前にはリードロック要求を，データを書き込む前にはライトロック要求を行うことが義務づけられている。
【００７６】
ここでは，Ａのアプリケーションプログラム２’が，データベースオープンの後，ページ１内のデータを読み込みたいものとする。この場合，アプリケーションプログラム２’は，図１４（Ａ）に示すように，
“ｒｅａｄ＿ｌｏｃｋ（１）”
というリードロック要求をアプリケーションインタフェース１２’に伝える。アプリケーションインタフェース１２’は，このリードロック要求のメッセージに，アプリケーションプログラム２’のプロセス番号５００を付加してデータベース制御部１３’に伝え，データベース制御部１３’はこの要求をロック制御部１４’に伝える。
【００７７】
さらにこのリードロック要求は，ＡおよびＢの通信制御部１５’，１５を利用して，Ｂのロック制御部１４へ伝えられ，Ｂのロック制御部１４は，リードロック要求を認めてよいかどうかの判断を行う。この例では，ページ１のロックはまだ行われていないから，リードロック要求を認める（一般に，ライトロックされていないページにはリードロック要求が認められる）。
【００７８】
このとき，Ｂでは，ページロックテーブル１７の書き換えが行われる。ページロックテーブル１７は，前述のようにページの数だけの欄を持った一種の表である。ここでは，図１４（Ｂ）に示すように，ページロックテーブル１７のページ１の欄に「リードロック」が記録され，ページロックテーブル１７のページ２からページ１００の欄に「予約ロック」が記録される。同時にロックの所有者（計算機名Ａとプロセス番号５００）の情報も記録される。
【００７９】
Ｂのページロックテーブル１７の書き換え後，Ｂでロックが認められたということが，通信制御部１５，１５’を介してＡに通知される。その後，Ａのデータベース制御部１３’は，データ要求をＢのデータベース制御部１３に対して行う。この結果，Ｂのデータベース制御部１５は，データベース８からデータベース領域１６に，ページ１からページ１００までのデータを読み出して，これらのデータを通信制御部１５，１５’を利用してＡへ送る。送られたデータは，Ａのデータベース領域１６’に格納され，データ転送の終了後，Ａのページロックテーブル１７’も，図１４（Ｃ）に示すように，Ｂのページロックテーブル１７と同様に書き換えられる。
【００８０】
〔データアクセス（１）の処理〕
アプリケーションプログラム２’がロックを獲得したページは，すでにデータベースサーバ１１’により，データベース領域１６’内にデータそのものも転送されている。すなわち，アプリケーションプログラム２’は，ロックを獲得したページに関しては，自由にデータベース領域１６’を利用可能である。以上のようにして，Ａ上のアプリケーションプログラム２’は，Ｂのデータベース８のデータを利用することができる。
【００８１】
〔ロック要求（２）の処理〕
次に，Ａ上のアプリケーションプログラム２’が，ページ２内のデータを読み込みたいものとする。この場合，このアプリケーションプログラム２は，“ｒｅａｄ＿ｌｏｃｋ（２）”の要求を出し，Ａのロック制御部１４’に「ページ２のリードロック要求」を行う。
【００８２】
前述した処理により，Ａのページロックテーブル１７’には，「ページ２にはすでに予約ロックが認められている」という情報が記録されており，Ａのロック制御部１４’は，直ちにアプリケーションプログラム２’にロック許可を与える。同時にページロックテーブル１７’の書き換えを行い，Ｂのロック制御部１４に対してもページロックテーブル１７の書き換えを要求する。
【００８３】
結果として，ＡおよびＢでは，ページ２の部分のページロックテーブル１７，１７’の書き換えが行われ，ページ２のロックは，予約ロックからリードロックに変更される。
【００８４】
先ほどのページ１のロック要求では，ロック要求がＡからＢへ送られ，Ｂのロック制御部１４においてロック許可が判断されていたのに対して，今回のページ２のロック要求では，Ａのロック制御部１４’だけでロック許可が判断される点が特徴である。すなわち，最初のページ１のロック要求では，計算機Ａ，Ｂ間の通信の間，アプリケーションプログラム２’は待たされるが，ページ２のロック要求では，計算機Ａ，Ｂ間の通信によってアプリケーションプログラム２’が待たされることはなく，アプリケーションプログラム２’の待ち時間が短くて済む。
【００８５】
〔データアクセス（２）の処理〕
アプリケーションプログラム２’は，ロック要求（２）の後，ページ２に対するデータアクセスをページ１と同様に行うことができる。
【００８６】
〔ロック解放の処理〕
アプリケーションプログラム２’が終了するときには，終了の合図として，データベースサーバ１１’に「ロック解放」と「データベースクローズ」を通知する。この場合，Ａ上のアプリケーションプログラム２’が「ロック解放」要求を，Ａのロック制御部１４’へ送ると，その「ロック解放」要求は，Ｂにも通知され，結果として，ＡおよびＢのページロックテーブル１７’，１７が元の値に戻される。
【００８７】
〔データベースクローズ時の処理〕
Ａ上のアプリケーションプログラム２’が「データベースクローズ」要求を，Ａのデータベース制御部１３’へ送ると，その「データベースクローズ」要求は，Ｂのデータベース制御部１３にも通知され，結果としてＡおよびＢのデータベース領域１６’，１６は解放される。
【００８８】
以上のように，アプリケーションプログラムは，「データベースオープン」，「ロック要求」，「データアクセス」，「ロック解放」，「データベースクローズ」という，一般のデータベース利用におけるのと同様の手順によりデータベースを利用し，最初にバルクページのページ数を指定する以外は，バルクページ単位のデータ転送制御が行われていることを意識する必要がない。すなわち，バルクページ単位のデータ転送制御は，データベースサーバの側で行うことにより，アプリケーションプログラムに負担をかけないようになっている。バルクページのページ数として，システムのディフォルト値を用いる場合には，ページ数の指定も不要である。
【００８９】
予約ロックされたページは，他からのリードおよびライトロックが可能である。上記の例では，Ａ上のアプリケーションプログラムの実行中は，ページ２からページ１００までは予約ロックされているが，ページ２から１００までの部分は，他のアプリケーションプログラムから何ら支障なく利用可能である。
【００９０】
仮に，上記の例において，Ａ上のアプリケーションプログラム２’の実行中に，他のアプリケーションプログラムがページ６０をライトした場合の動作は次のとおりである。
【００９１】
１．ＡおよびＢのページロックテーブル１７’１７について，ページ６０の部分が予約ロックからライトロックに書き換わる。
２．ページ６０のロックは，ライトロックを要求した他のアプリケーションプログラムに与えられるため，Ａ上のアプリケーションプログラム２’がこのページ６０のデータにアクセスする場合には，改めてＢのロック制御部１４にロック要求が送られなければならない。
【００９２】
以上のロック制御を用いたバルクページ単位のデータ転送制御は，あるデータを送るのに必要な時間に対して，１回のメッセージ通信のために固定的にかかる時間（レーテンシ）が比較的大きいようなネットワークに特に有効である。例えば，次のような場合が挙げられる。
【００９３】
１．ＡＴＭネットワークやファストイーサネット
これらのネットワークでは，あるデータを送るのに要する時間が非常に小さい。
【００９４】
２．長距離のネットワーク
長距離のネットワークでは，伝送時間が光の進行速度に縛られるため，レーテンシが大きくなってしまう。
【００９５】
３．ルータを含む実用規模のネットワーク
ルータを含む実用規模のネットワークでは，ルータにおいて遅延が発生するため，結果としてレーテンシが大きくなってしまう。
【００９６】
本方式は，アプリケーションプログラムが必要とするデータを含むバルクページを全て送るため，転送単位がページ単位よりも粗くなっていることから，転送すべきデータ量は増えるという欠点はあるものの，以下に示す理由から，ほとんどの場合支障にはならない。
【００９７】
一般に，アプリケーションプログラムがアクセスするデータは，データベースのある部分に集中するという性質がある。すなわち，アプリケーションプログラムは，データベースのデータ全てではなく一部分をアクセスするに過ぎないが，アプリケーションプログラムがアクセスするデータの集合はデータベース全体に散らばっていることは少なく，むしろある部分を核とした数ヵ所の集まりとなることが一般的である。
【００９８】
このような場合，バルクページを単位として転送することによるデータ量の増大はそれほど大きくはならない。特にマルチメディアのような，ページサイズに比べて非常に大きなサイズを持ったデータから構成されるデータベースの場合，これらデータはデータベースファイル上で連続する領域に格納されるため，バルクページ転送によるデータ量の増大は性能に影響しないと言える。例えば，ビデオやオーディオなどのマルチメディアデータへの順再生を行う場合など，シーケンシャルアクセスを行う場合に，バルクページのページ数をＮとすると，メッセージ数がおよそ１／Ｎに削減でき，転送するデータ量も少ししか増えない。
【００９９】
【発明の効果】
以上説明したように，本発明によれば，データ転送のためのメッセージ数の削減によって，１）システム全体の性能向上，２）アプリケーションプログラムのレスポンスタイムの向上の２つの効果があり，特に後者の効果が大きい。
【０１００】
まず，メッセージの送受信ごとに何らかの負荷がシステムにかかることから，メッセージ数を削減することでシステム全体の性能が向上するといえる。
次に，データ要求とデータ供給の一連のメッセージの間，アプリケーションプログラムは何もせずにデータの到着を待たなければならないから，メッセージ数を削減することでこの待ち時間を減らすことができ，結果としてアプリケーションプログラムのレスポンスタイムが向上することになる。
【図面の簡単な説明】
【図１】本発明の概要説明図である。
【図２】本発明の作用説明図である。
【図３】本発明の実施の形態におけるロック制御説明図である。
【図４】ページロックテーブルの構造を示す図である。
【図５】リードロック獲得処理の例を示す図である。
【図６】リード時におけるメッセージ通信の例を示す図である。
【図７】リード時におけるアプリケーションサイトでの処理の例を示す図である。
【図８】ライト時におけるアプリケーションサイトでの処理の例を示す図である。
【図９】リード時におけるデータベースサイトでの処理の例を示す図である。
【図１０】ライト時におけるデータベースサイトでの処理の例を示す図である。
【図１１】本発明の実施例に係るシステム構成の例を示す図である。
【図１２】本発明の実施例に係る計算機の詳細ブロック図である。
【図１３】本発明の実施例によるデータベースオープン時の処理を説明する図である。
【図１４】本発明の実施例による最初のリードロックにおける処理を説明する図である。
【図１５】一般的な従来の計算機網を示す図である。
【図１６】図１５に示すシステムでのデータベースへのアクセス説明図である。
【符号の説明】
１，１’  計算機
２，２’  アプリケーションプログラム（ＡＰ）
３，３’  分散共有仮想メモリ
４，４’  ロック制御手段
５，５’  ページロックテーブル
６，６’  データ転送手段
７        ネットワーク
【図１】
0003819517.tif 000002
【図２】
0003819517.tif 000003
【図３】
0003819517.tif 000004
【図４】
0003819517.tif 000005
【図５】
0003819517.tif 000006
【図６】
0003819517.tif 000007
【図７】
0003819517.tif 000008
【図８】
0003819517.tif 000009
【図９】
0003819517.tif 000010
【図１０】
0003819517.tif 000011
【図１１】
0003819517.tif 000012
【図１２】
0003819517.tif 000013
【図１３】
0003819517.tif 000014
【図１４】
0003819517.tif 000015
【図１５】
0003819517.tif 000016
【図１６】
0003819517.tif 000017