(57)【特許請求の範囲】
【請求項１】
データベース動作を行なうための方法であって、前記方法は、第１の機械において行なわれる以下のステップを含む：
直接メモリアクセス使用可能チャネルを用いて、第２の機械とデータを交換するためにメモリの第１のセグメントを割当てるステップを含み、前記第１の機械および前記第２の機械のうち少なくとも一方はデータベースサーバであり、
メモリの前記第１のセグメントを割当てるステップは、前記第２の機械とデータを交換するために用いられる複数のバッファを識別するステップを含み、前記方法はさらに、
前記第１の機械および前記第２の機械が前記直接メモリアクセス使用可能チャネルを用いて通信し得ることを検証するステップと、
前記第１の機械および前記第２の機械が前記直接メモリアクセス使用可能チャネルを用いて通信し得ると判断することに応答して、
前記第２の機械から前記第１の機械へのデータの転送を含むデータベース動作を行なう際に、前記第２の機械が前記第２の機械上のメモリの第２のセグメントに前記データの一部を書込むことに応答して、メモリの前記第１のセグメントに前記データの前記一部をバッファリングするステップを実行するステップとを含み、
メモリの前記第１のセグメントにおいて受取った前記データの前記一部をバッファリングするステップは、（ａ）前記複数のバッファの１つまたはそれ以上のバッファにおいて前記第２の機械から受取ったデータの前記部分をバッファリングするステップと、（ｂ）追加データを受取るために、前記第１の機械上の前記１つまたはそれ以上のバッファにおいて、各バッファが利用可能になると前記第２の機械に通知を送るステップとを含み、前記方法はさらに、
前記第１の機械または前記第２の機械が前記直接メモリアクセス使用可能チャネルを使用できないと判断することに応答して、前記直接メモリアクセス使用可能チャネルの代わりにインターネットプロトコル使用可能チャネルを用いて、前記第１の機械において前記第２の機械から前記データを受取るステップを含み、
前記第１の機械および前記第２の機械が前記直接メモリアクセス使用可能チャネルを用いて通信し得ることを検証するステップは、
前記直接メモリアクセス使用可能チャネルを介してテストメッセージを前記第２の機械に送信するステップと、
前記第２の機械に、前記直接メモリアクセス使用可能チャネルを介して、テストメッセージを前記第１の機械に向けて送信させるステップと、
前記直接メモリアクセス使用可能チャネルを使用するための、前記第２の機械のリソースについての情報と、前記直接メモリアクセス使用可能チャネルを使用するための、前記第１の機械のリソースについての情報とを比較するステップと、
の少なくともいずれかを含む、方法。
【請求項２】
前記第２の機械にメモリの前記第１のセグメントに対する第１のアドレスを与えるステップをさらに含み、
メモリの前記第１のセグメントにデータをバッファリングする前記ステップは、
前記第２の機械によって前記直接メモリアクセス使用可能チャネルによって送られたデータをメモリの前記第１のセグメントに受取るステップを含む、請求項１に記載の方法。
【請求項３】
前記データベース動作を行なう際に、前記第１の機械においてメモリの前記第１のセグメント中の前記データを読取るプロセスをさらに含む、請求項２に記載の方法。
【請求項４】
メモリの前記第１のセグメントにおける前記第２の機械から受取ったデータを伴う１つまたはそれ以上の構造化照会言語コマンドを実行するステップを含む、前記データをバッファリングしながら前記第１の機械において１つまたはそれ以上のデータベース動作を行なうステップをさらに含む、請求項１に記載の方法。
【請求項５】
前記第２の機械からメモリの前記第２のセグメントに対する第２のアドレスを受取るステップをさらに含み、メモリの前記第２のセグメントは前記第１の機械とデータを交換するために前記第２の機械において割当てられる、請求項１に記載の方法。
【請求項６】
前記第２の機械がメモリの前記第２のセグメントに前記データを書込むようにするために、前記第２の機械に前記データを読取るための要求を送るステップをさらに含む、請求項５に記載の方法。
【請求項７】
前記データをバッファリングした後にメモリの前記第１のセグメントから前記データを読取るステップをさらに含む、請求項６に記載の方法。
【請求項８】
前記データを読取るための要求を送るステップは、前記インターネットプロトコル使用可能チャネルによって行なわれる、請求項６に記載の方法。
【請求項９】
前記データがメモリの前記第１のセグメントから読出された結果としてメモリの前記第１のセグメントが空であるという前記第１の機械におけるローカル通告を与えるステップをさらに含む、請求項７に記載の方法。
【請求項１０】
前記第１の機械および前記第２の機械が前記直接メモリアクセス使用可能チャネルを用いて通信し得ることを検証するステップは、前記直接メモリアクセス使用可能チャネルによって前記第２の機械にテストメッセージを送るステップを含む、請求項１に記載の方法。
【請求項１１】
前記第１の機械および前記第２の機械が前記直接メモリアクセス使用可能チャネルを用いて通信し得ることを検証するステップは、前記第２の機械により前記直接メモリアクセス使用可能チャネルを介して前記第１の機械に送信されたテストメッセージを受信するステップを含む、請求項１に記載の方法。
【請求項１２】
前記第１の機械および前記第２の機械が前記直接メモリアクセス使用可能チャネルを用いて通信し得ることを検証するステップは、前記直接メモリアクセス使用可能チャネルを用いるための前記第２の機械におけるリソースに関する情報を、前記直接メモリアクセス使用可能チャネルを用いるための前記第１の機械におけるリソースと比較するステップを含む、請求項１に記載の方法。
【請求項１３】
前記第２の機械がメモリの前記第１のセグメントに前記データを非同期的に送ることを可能にするステップをさらに含む、請求項２に記載の方法。
【請求項１４】
前記第２の機械がメモリの前記第１のセグメントに前記データを同期的に送ることを可能にするステップをさらに含む、請求項２に記載の方法。
【請求項１５】
前記第２の機械が前記データを前記メモリの前記第２のセグメントに書込むようにするために前記第２の機械に遠隔手順呼出を送るステップをさらに含む、請求項１に記載の方法。
【請求項１６】
遠隔手順呼出を送るステップは、前記インターネットプロトコル使用可能チャネルによって前記遠隔手順呼出を送るステップを含む、請求項１に記載の方法。
【請求項１７】
遠隔手順呼出に応答するステップは、前記インターネットプロトコル使用可能チャネルによって前記遠隔手順呼出を受取り、前記インターネットプロトコル使用可能チャネルによって前記遠隔手順呼出に応答するステップを含む、請求項１に記載の方法。
【請求項１８】
データベース動作を行なうための方法であって、前記方法は、第１の機械において行なわれる以下のステップを含む：
直接メモリアクセス使用可能チャネルを用いて、第２の機械とデータを交換するためにメモリの第１のセグメントを割当てるステップを含み、前記第１の機械および前記第２の機械のうち少なくとも一方はデータベースサーバであり、
前記第２の機械に対してメモリの前記第１のセグメントを割当てるステップは、前記第２の機械に対する第１の複数のバッファを識別するステップを含み、前記第１の複数のバッファ中の各バッファは前記第２の機械における第２の複数のバッファ中のバッファに対応し、前記方法はさらに、
前記第１の機械および前記第２の機械が前記直接メモリアクセス使用可能チャネルを用いて通信し得ることを検証するステップと、
前記第１の機械および前記第２の機械が前記直接メモリアクセス使用可能チャネルを用いて通信し得ると判断することに応答して、
前記第１の機械から前記第２の機械へのデータの転送を含むデータベース動作を行なう際に、前記データの一部がメモリの第２のセグメント中にバッファリングされるようにするために前記データの前記一部をメモリの前記第１のセグメントに書込むステップを実行するステップとを含み、メモリの前記第２のセグメントは前記第１の機械とデータを交換するために前記第２の機械上に割当てられ、
前記データの前記一部がメモリの第２のセグメント中にバッファリングされるようにするために前記データの前記一部をメモリの前記第１のセグメントに書込むステップは、前記第１の複数のバッファを用いて前記データの前記一部を前記第２の複数のバッファ中の１つまたはそれ以上のバッファに送るステップを含み、前記方法はさらに、
前記第１の機械または前記第２の機械が前記直接メモリアクセス使用可能チャネルを使用できないと判断することに応答して、前記第１の機械がインターネットプロトコル（ＩＰ）使用可能チャネルを用いて前記データを前記第２の機械に送るステップを含み、
前記第１の機械および前記第２の機械が前記直接メモリアクセス使用可能チャネルを用いて通信し得ることを検証するステップは、
前記直接メモリアクセス使用可能チャネルを介してテストメッセージを前記第２の機械に送信するステップと、
前記第２の機械に、前記直接メモリアクセス使用可能チャネルを介して、テストメッセージを前記第１の機械に向けて送信させるステップと、
前記直接メモリアクセス使用可能チャネルを使用するための、前記第２の機械のリソースについての情報と、前記直接メモリアクセス使用可能チャネルを使用するための、前記第１の機械のリソースについての情報とを比較するステップと、
の少なくともいずれかを含む、方法。
【請求項１９】
前記第１の複数のバッファを用いてデータの一部を前記第２の複数のバッファ中の前記１つまたはそれ以上のバッファに送るステップは、
前記第１の複数のバッファ中の第１のバッファを用いて前記データの第１の部分を前記第２の複数のバッファ中の対応する第１のバッファに送るステップと、
前記第２の機械から、前記第２の複数のバッファ中の対応する第１のバッファは、より多くのデータを受取る準備ができたという通知を受取るステップとを含む、請求項１８に記載の方法。
【請求項２０】
前記通知を受取ることに応答して、前記第１の複数のバッファ中の前記第１のバッファを用いて前記データの別の部分を前記第２の複数のバッファ中の前記対応する第１のバッファに送るステップをさらに含む、請求項１９に記載の方法。
【請求項２１】
前記第２の機械から通知を受取るステップは、前記第２の機械が前記データの前記第１の部分を用いた結果として前記第２の複数のバッファ中の前記対応する第１のバッファが空になることに応答して前記通知を受取るステップを含む、請求項２０に記載の方法。
【請求項２２】
前記第１の機械および前記第２の機械が前記直接メモリアクセス使用可能チャネルを用いて通信し得ることを検証するステップは、前記直接メモリアクセス使用可能チャネルによって前記第２の機械にテストメッセージを送るステップを含む、請求項１８に記載の方法。
【請求項２３】
前記第１の機械および前記第２の機械が前記直接メモリアクセス使用可能チャネルを用いて通信し得ることを検証するステップは、前記直接メモリアクセス使用可能チャネルを用いるための前記第２の機械上のリソースに関する情報を、前記直接メモリアクセス使用可能チャネルを用いるための前記第１の機械上のリソースと比較するステップを含む、請求項２２に記載の方法。
【請求項２４】
前記第２の機械から遠隔手順呼出を受取り、前記遠隔手順呼出を受取ったことに応答してメモリの前記第１のセグメントに前記データを書込むステップをさらに含む、請求項１８に記載の方法。
【請求項２５】
前記第２の機械から遠隔手順呼出を受取るステップは、前記インターネットプロトコル使用可能チャネルによって前記遠隔手順呼出を受取るステップを含む、請求項２４に記載の方法。
【請求項２６】
データが前記第２の機械に対して送られるようにするために前記データをメモリの前記第１のセグメントに書込むステップは、前記データを前記第２の機械に対して送らせながら前記データをメモリの前記第１のセグメントに非同期的に書込むステップを含む、請求項１８に記載の方法。
【請求項２７】
データが前記第２の機械に対して送られるようにするために前記データをメモリの前記第１のセグメントに書込むステップは、前記データを前記第２の機械に対して送らせながら前記データをメモリの前記第１のセグメントに同期的に書込むステップを含む、請求項１８に記載の方法。
【請求項２８】
データベース動作を行なうための方法であって、前記方法は、第１の機械において行なわれる以下のステップ：
第２の機械からデータを受取るためにメモリの第１のセグメントを割当てるステップと、
前記第１の機械および前記第２の機械が前記直接メモリアクセス使用可能チャネルを用いて通信し得ることを検証するステップと、
前記第２の機械から前記第１の機械へのデータの転送を含むデータベース動作を行なう際に、直接メモリアクセス使用可能チャネルによって前記第２の機械からの前記データをメモリの前記第１のセグメントに受取るステップと、
前記データがメモリの前記第１のセグメントから読出された結果としてメモリの前記第１のセグメントが空であるという前記第１の機械におけるローカル通告を与えるステップとを含み、
前記第１の機械および前記第２の機械が前記直接メモリアクセス使用可能チャネルを用いて通信し得ることを検証するステップは、
前記直接メモリアクセス使用可能チャネルを介してテストメッセージを前記第２の機械に送信するステップと、
前記第２の機械に、前記直接メモリアクセス使用可能チャネルを介して、テストメッセージを前記第１の機械に向けて送信させるステップと、
前記直接メモリアクセス使用可能チャネルを使用するための、前記第２の機械のリソースについての情報と、前記直接メモリアクセス使用可能チャネルを使用するための、前記第１の機械のリソースについての情報とを比較するステップと、
の少なくともいずれかを含む、方法。
【請求項２９】
メモリの前記第１のセグメントに対する第１のアドレスを前記第２の機械に与えることによって、前記第２の機械が前記データを送ることを可能にするステップをさらに含む、請求項２８に記載の方法。
【請求項３０】
前記第２の機械からの前記データをバッファリングするステップと、
前記データをバッファリングしながら前記第１の機械において１つまたはそれ以上のデータベース動作を行なうステップとをさらに含む、請求項２８に記載の方法。
【請求項３１】
前記第２の機械が前記データを送ることを可能にするステップは、前記第２の機械が前記第１の機械に対して割当てられた前記第２の機械上の第２のメモリからデータを送ることを可能にするステップを含み、前記方法はさらに、前記１つまたはそれ以上のデータベース動作を行ないながら前記第１の機械から前記第２の機械にデータを転送するために、メモリの第２のセグメントに対して前記第２の機械から第２のアドレスを受取るステップを含む、請求項３０に記載の方法。
【請求項３２】
前記第２の機械が前記データを送ることを可能にするステップは、第２のコンピュータからより多くのデータを受取るためにメモリの前記第１のセグメントが利用可能になると前記第２の機械に通知を送るステップをさらに含む、請求項２８に記載の方法。
【請求項３３】
前記第２の機械が前記データを送ることを可能にするステップは、前記第２の機械が前記データをメモリの前記第１のセグメントに非同期的に送ることを可能にするステップを含む、請求項２８に記載の方法。
【請求項３４】
前記第２の機械が前記データを送ることを可能にするステップは、前記第２の機械が前記データをメモリの前記第１のセグメントに同期的に送ることを可能にするステップを含む、請求項２８に記載の方法。
【請求項３５】
１つまたはそれ以上のプロセッサによって実行されるときに、前記１つまたはそれ以上のプロセッサに請求項１から３４のいずれかに記載の方法を実行させる命令の１つまたはそれ以上の連続を保持する、コンピュータ読取可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
この発明は、データベースシステム環境における通信に関する。特に、この発明は、２つまたはそれ以上の機械の間でデータベース動作を行なうための直接メモリアクセスの用法に関する。
【背景技術】
【０００２】
発明の背景
直接メモリアクセス（ＤＭＡ）は、データを中央処理装置を通すことなく１つのメモリセグメントから別のメモリセグメントへ転送するための技術である。ＤＭＡ使用可能チャネルを有するコンピュータは、より在来のインターネットプロトコルチャネルを用いるコンピュータよりもかなり速く装置から装置へデータを転送できる。
【０００３】
ＤＭＡ技術は、異なる高速転送プロトコルおよびアーキテクチャに次第に組込まれてきている。ＤＭＡを機能として用いるアーキテクチャの例には、仮想インターフェイスおよびインフィニバンドがある。こうしたシステムにおけるＤＭＡ機能は、１つの装置におけるメモリ中のデータが、別のノードまたはコンピュータシステムなどの別の外部位置におけるメモリに対して特定的に目標にされ得るようにする。ＤＭＡのすべての利点を得るために、ＤＭＡ機能を組入れるシステムはそれを高速ネットワーク接続装置によって行なう。
【０００４】
ＤＭＡデータ転送は、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）データ転送の特徴であるデータビットオーバーヘッドを除去する。ＴＣＰ／ＩＰプロトコル転送はセグメント化されたバイトストリームを用い、各セグメントはヘッダ情報と、特定のデータセグメントが意図される目標に到達できるようにするための他の特徴とを含む。これに対し、ＤＭＡはデータを個別に送付可能なバイトにセグメント化することなくメモリセグメント中のデータを転送する。ＤＭＡはＴＣＰ／ＩＰに対する有利な対比を与えるが、ＤＭＡをＴＣＰ／ＩＰとともに用いる技術も存在する。こうした技術の１つは、ＴＣＰ／ＩＰによる遠隔ＤＭＡ（ＲＤＭＡ）と呼ばれる。
【０００５】
この発明は、添付の図面において制限のためではなく例として例示され、図面において類似の参照番号は類似の要素を示す。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
発明の詳細な説明
２つまたはそれ以上の機械の間でデータベース動作を行なうために直接メモリアクセスを用いるための方法および装置が記載される。以下の記載においては、説明の目的のために、この発明の完全な理解を与えるために多数の特定の詳細が示される。しかし、これらの特定の詳細なしでもこの発明を行ない得ることが明らかになるであろう。別の例においては、この発明を不必要に曖昧にすることを避けるために、周知の構造および装置はブロック図の形で示される。
【課題を解決するための手段】
【０００７】
概要
この発明の実施例は、データベースシステム環境において直接メモリアクセス（ＤＭＡ
）技術が効果的に実現されることを可能にする。特に、ＤＭＡ通信媒体を用いてデータベースサーバによって行なわれるデータベース動作が行なわれてもよい。ＤＭＡ通信媒体は、２つのコンピュータがそれぞれのコンピュータにおいて透過的な態様で互いにメモリを共有できるようにするチャネルを含む。よって、一方のコンピュータがＤＭＡチャネルの支配下にあるメモリにデータを書込むと、そのデータはプロセッサからの最小限の介在によって他方のコンピュータに転送される。ＤＭＡ通信媒体を用いてデータベース動作、特に大量のデータの転送を含む動作を行なうことにより、ＴＣＰ／ＩＰのようなより在来の通信媒体の使用による場合よりもデータベース動作をかなり速く行なうことが可能になる。
【０００８】
実施例の１つに従うと、データベース動作は、データベース動作を行なうために第２の機械と通信する第１の機械において行なわれてもよい。その機械の少なくとも一方はデータベースサーバである。第１の機械において、メモリの第１のセグメントが第２の機械に対して割当てられる。第２の機械から第１の機械へのデータの転送を含むデータベース動作の実行中に、データはメモリの第１のセグメント中にバッファリングされる。データは、第２の機械が第２の機械において第１の機械に対して割当てられたメモリの第２のセグメントにデータを書込むことに応答してバッファリングされる。
【０００９】
たとえば、データベースサーバはバッファの部分をクライアントに対して割当ててもよい。データベースサーバは、割当てられたメモリ中にクライアントから受取ったデータをバッファリングしてもよい。データは、クライアントにおいて割当てられたメモリにクライアントが同じデータを書込むことに応答してバッファリングされる。データの転送は、ＤＭＡ使用可能チャネルによって行なわれる。データの転送とともに行なわれる動作は、クライアント端末１１０から送られる構造化照会言語コマンドに応答して行なわれてもよい。
【００１０】
実施例の１つにおいて、第１および第２の機械の間でＤＭＡ転送が利用可能でないとき、データは自動的にＴＣＰ／ＩＰ転送プロトコルを用いて転送される。確認ステップが行なわれて、２つの機械間でデータを転送するためにＤＭＡチャネルまたはＴＣＰ／ＩＰチャネルのいずれを用いるべきかどうかが定められてもよい。
【００１１】
実施例において、２つの機械間で記載される通信を繰り返すことによって付加的な機械間のデータ転送を可能にしてもよい。たとえば、クライアント端末がＤＭＡチャネルを通じてデータベースサーバにデータを書込み、データベースサーバはそのデータを別個のＤＭＡチャネルを通じて他のクライアントに分配してもよい。
【発明を実施するための最良の形態】
【００１２】
一般的な機能の説明
図１は、この発明の実施例による、２つの機械間でデータを転送するための基本システムを例示する。記載されるようなシステムは、２つの機械がＤＭＡ転送技術を用いて互いにデータを転送してデータベース動作を行なうことを可能にする。２つの機械のうち少なくとも一方はデータベースサーバを含む。実施例の１つにおいて、２つの機械の一方はクライアント端末１１０であり、２つの機械の他方はデータベース１３２を管理するデータベースサーバ機１２０である。別の実施例において、クライアント端末１１０は別のデータベースサーバ機に対応してもよい。たとえば、データベースサーバ構成要素はクライアントプロセスを実行してデータベースサーバ機１２０と通信してもよい。
【００１３】
クライアント端末１１０は中央処理装置（ＣＰＵ）１１２と、メモリ１１４と、Ｉ／Ｏポート１１８とを含む。データベースサーバ機１２０はＣＰＵ１２２と、メモリ１２４と、Ｉ／Ｏポート１２８とを含む。データベースサーバ機１２０上のデータベース１３２は
、ＣＰＵ１２２によって実行されるサーバ構成要素によって管理されてもよい。
【００１４】
実施例の１つにおいて、クライアント端末１１０およびデータベースサーバ機１２０は、２つまたはそれ以上のチャネルのうちの１つを用いることによって通信してもよい。ＴＣＰ／ＩＰチャネル１３２およびＤＭＡチャネル１３４は、クライアント端末１１０のＩ／Ｏポート１１８をデータベースサーバ機１２０のＩ／Ｏポート１２８に相互接続してもよい。Ｉ／Ｏポート１１８および１２８の各々は、ＤＭＡチャネル１３４を通じて他のコンピュータと通信するよう構成される構成要素または機能を含んでもよい。Ｉ／Ｏポート１１８、１２８と、クライアント端末１１０およびデータベースサーバ機１２０間の高速ネットワーク接続との組合せによってＤＭＡチャネル１３４が形成されてもよい。Ｉ／Ｏポート１１８、１２８は、ＣＰＵ１１２、１２２を用いることなくそれぞれの機械上のメモリの割当セグメントから、およびそこへデータを転送するよう構成される。Ｉ／Ｏポート１１８、１２８もまた、ＴＣＰ／ＩＰチャネル１３２またはＤＭＡチャネル１３４を用いて他のコンピュータと通信するよう構成される。以下に記載されるとおり、この発明の実施例は、ＤＭＡチャネル１３４が利用可能でないか、または妨害される事象においてＴＣＰ／ＩＰチャネル１３２の使用を許可する。
【００１５】
ＤＭＡチャネル１３４を使用するために、クライアント端末はデータベースサーバ機１２０に対してメモリ１１４の第１のメモリセグメント１１６を割当てる。データベースサーバ機１２０はクライアント端末１１０に対して第２のメモリセグメント１２６を割当てる。
【００１６】
ＤＭＡチャネル１３４は、ＴＣＰ／ＩＰチャネル１３２とは異なる物理的構成要素上に設けられてもよい。たとえば、ＤＭＡチャネル１３４はクライアント端末１１０とデータベースサーバ機１２０との間のインフィニバンド接続を含んでもよく、ＴＣＰ／ＩＰチャネル１３２はイーサネット（登録商標）接続などの在来ネットワーク接続上に設けられてもよい。別の実施例において、ＤＭＡチャネルはＴＣＰ／ＩＰチャネル１３２と同じ物理的構成要素上に設けられる。よって、１つの媒体をＤＭＡチャネルまたはＴＣＰ／ＩＰチャネルのいずれかとして用いることができてもよい。
【００１７】
実施例において、クライアント端末１１０およびデータベースサーバ機１２０は、ＤＭＡチャネル１３４が使用できるかどうかを定める必要がある。ＤＭＡチャネル１３４が使用できないときには、ＴＣＰ／ＩＰチャネル１３２が用いられる。ＤＭＡチャネル１３４を確立しかつそれが使用可能かどうかを決定するための予備通信は、ＴＣＰ／ＩＰチャネルによって行なわれる。
【００１８】
実施例の１つにおいて、クライアント端末１１０はデータベースサーバ機１２０に遠隔手順呼出（ＲＰＣ）の信号を送る。データベースサーバ機１２０のＣＰＵ１２２は、ＲＰＣによって識別されるその後の通信のためにＤＭＡチャネル１３４が利用可能であり得ることを認識する。データベースサーバ機１２０はＴＣＰ／ＩＰチャネル１３２を通じてＲＰＣに戻りの信号を送り、ＤＭＡチャネル１３４を用いるべきであることを示す。クライアント端末１１０のＣＰＵ１１２は次いで、データベースサーバ機１２０に対してメモリ１１４の第１のセグメント１１６を割当てる。データベースサーバ機１２０のＣＰＵ１２２は、クライアント端末１１０に対してメモリ１２４の第２のセグメント１２６を割当てる。クライアント端末１１０は、データベースサーバ機１２０に第１のメモリセグメント１１６に対する識別子を含む送信権要求を送る。同様に、データベースサーバ機１２０は、クライアント端末１１０に第２のメモリセグメント１２６に対する識別子を含む送信権要求を送る。
【００１９】
一旦クライアント端末１１０とデータベースサーバ機１２０とにメモリが割当てられる
と、実施例は、クライアント端末１１０およびデータベースサーバ機１２０の一方または両方が検証を行なうことを規定する。その検証は、２つの機械の間のデータ転送のためにＤＭＡチャネルが利用可能かどうかを定めるためのものである。一方または両方の機械で行なわれる検証は、図４に記載されるような技術によって行なわれてもよい。
【００２０】
クライアント端末１１０とデータベースサーバ機１２０との間のデータベース動作を行なうためにＤＭＡチャネル１３４が用いられてもよい。クライアント端末１１０とデータベースサーバ機１２０との間に一旦ＤＭＡチャネル１３４が確立されると、１つの機械から別の機械にデータを読出しまた書込むための動作は、他方の機械に対して割当てられたメモリセグメントに対する書込動作を実行するデータの転送側によって実行されてもよい。読出および書込動作はいずれも、２つの機械のうちの一方がデータを割当てられたローカルメモリに書込み、ＤＭＡチャネル１３４を用いてそのデータをローカルメモリから他方の機械に転送することによって行なわれてもよい。
【００２１】
読出または書込型動作のいずれに対しても、機械がＤＭＡチャネル１３４によって通信できないことが判断されると、ＴＣＰ／ＩＰチャネル１３２が用いられる。ＴＣＰ／ＩＰチャネル１３２はより遅いが、そのチャネルのバックアップとしての使用により、データベース動作を行ない得ることが確実になる。
【００２２】
書込および読出動作を行なうためのデータ転送
図２および図３は、データベース動作を行なうために２つの機械の間でデータを転送するための方法を例示する。ここに記載されるような方法のステップを行なうための例示的な構成要素を提供するために、図１の要素が参照される。
【００２３】
図２は、この発明の実施例による、ＤＭＡデータ転送を用いて２つの機械の間で書込動作を実現するための方法を例示する。例示のために、クライアント端末１１０がデータベースサーバ機１２０にデータを書込む実施例が記載される。たとえば、クライアント端末１１０は挿入（ＩＮＳＥＲＴ）動作を開始して、データベースサーバ機１２０上のデータベースに行としてフォーマットされた大量のデータを転送してもよい。
【００２４】
ステップ２１０において、クライアント端末１１０はデータベースサーバ機１２０にＲＰＣを送り、クライアント端末１１０がデータベースサーバ機１２０へのデータの書込を要求していることを示す。ＲＰＣは、クライアント端末１１０からデータベースサーバ機１２０にデータを転送するために挿入または他の書込動作が行なわれることを示してもよい。データはデータベース１３２向けであっても、または他のクライアントおよび／もしくはデータベースサーバに回送されてもよい。いずれの場合にも、データベースサーバ機１２０は遠隔手順呼出が行なわれたことに応答してクライアント端末１１０に戻りを送る。遠隔手順呼出とその戻りとはどちらもＴＣＰ／ＩＰチャネル１３２を通じて送られる。
【００２５】
ＲＰＣを送った後、ステップ２２０は、各機械が他方の機械に対してメモリセグメントを割当てることを規定する。すなわち、クライアント端末１１０はデータベースサーバ機１２０に対して第１のメモリセグメント１１６を割当てる。データベースサーバ機１２０はクライアント端末１１０に対して第２のメモリセグメント１２６を割当てる。
【００２６】
ステップ２３０は、各機械が他方の機械にその割当てられたメモリに対する識別子を送ることを規定する。このような識別子は送信権要求と呼ばれてもよい。送信権要求は、各機械における割当てられたメモリに対するアドレスを含む。よって、クライアント端末１１０は第１のメモリセグメント１１６に対するアドレスを含む送信権要求をデータベースサーバ機１２０に送る。同様に、データベースサーバ機１２０は第２のメモリセグメント１２６に対するアドレスを含む送信権要求をクライアント端末１１０に送る。実施例の１
つにおいては、送信権要求もＴＣＰ／ＩＰチャネル１３２を通じてクライアント端末１１０とデータベースサーバ機１２０との間で交換される。
【００２７】
クライアント端末１１０からデータベースサーバ機１２０にデータを書込むために、ステップ２４０は、クライアント端末１１０が第１のメモリセグメント１１６に転送されるデータを書込むことを規定する。クライアント端末１１０のＩ／Ｏポート１１８はデータを自動的に第１のメモリセグメント１１６からデータベースサーバ機１２０に移動し、データはそこでＩ／Ｏポート１２８によって受取られる。データはクライアント端末１１０からデータベースサーバ機１２０へ、ＤＭＡチャネル１３４を用いて転送される。
【００２８】
ステップ２５０において、データベースサーバ機１２０がクライアント端末１１０から受取ったデータは、第２のメモリセグメント１２６にバッファリングされる。これは、データベースサーバ機１２０のＩ／Ｏポート１２８が、Ｉ／Ｏポート１１８から受取ったデータを第２のメモリセグメント１２６に移動することによって達成されてもよい。データベースサーバ機１２０のＣＰＵ１２２は次いでそのデータをデータベースに読込む。
【００２９】
ステップ２６０において、データベースサーバ機１２０は、データが第２のメモリセグメント１２６の外に移動される際にクライアント端末１１０に通知を送る。たとえば、ＣＰＵ１２２はデータを第２のメモリセグメント１２６から読出してそのデータをデータベース１３２に移動するか、またはそのデータを他のデータベースサーバおよびクライアント端末に対して利用可能にしてもよい。第２のメモリセグメント１２６が空になると、クライアント端末１１０に通知が出されてもよく、それによってクライアント端末１１０からデータベースサーバ機１２０へ追加のデータを書込むことができる。実施例において、クライアント端末１１０およびデータベースサーバ機１２０はどちらも、それぞれの第１のメモリセグメント１１６および第２のメモリセグメント１２６が空であるときに通知を出す。
【００３０】
通知は数バイトの長さなどの比較的短いメッセージであってもよい。よってそれはＴＣＰ／ＩＰチャネル１３２またはＤＭＡチャネル１３４のいずれによっても送ることができる。しかし、一旦ＤＭＡチャネル１３４が開くと、ＤＭＡチャネル１３４を用いて通知を送る方が簡単かもしれない。通知の大きさが小さいこと、およびＤＭＡチャネル１３４によって送信されるデータは（ヘッダの形などの）オーバーヘッドをほとんど含まないという事実から、通知をデータベースサーバ機１２０からクライアント端末１１０に送られるいくつかの他のメッセージとともにパッケージ化することも比較的容易である。
【００３１】
図３は、この発明の実施例による、ＤＭＡデータ転送を用いて２つの機械の間で読取動作を実現するための方法を例示する。例示のために、図３はクライアント端末１１０からデータベースサーバ機１２０に含まれるデータに対して行なわれる読取動作によって説明される。たとえば、クライアント端末１１０によって更新（ＵＰＤＡＴＥ）または選択（ＳＥＬＥＣＴ）動作が行なわれて、データベース１３２中のデータが見られてもよい。こうした動作が行なわれる速度は、ＤＭＡチャネル１３４を用いることによって促進され得る。
【００３２】
ステップ３１０において、クライアント端末１１０は遠隔手順呼出を送ってデータベースサーバ機１２０からデータを読取る。遠隔手順呼出は、更新、選択またはその他の読出動作を含むかまたは示してもよい。遠隔手順呼出の戻りはデータベースサーバ機１２０によって作成されてもよい。遠隔手順呼出とその戻りとはどちらもＴＣＰ／ＩＰチャネル１３２を通じて送られる。
【００３３】
ステップ３２０において、各機械は他方の機械に対してメモリのセグメントを割当てる
。図２において説明した実施例と同様に、クライアント端末１１０はデータベースサーバ機１２０に対して第１のメモリセグメント１１６を割当ててもよい。データベースサーバ機１２０はクライアント端末１１０に対して第２のメモリセグメント１２６を割当ててもよい。
【００３４】
ステップ３３０は、クライアント端末１１０が第１のメモリセグメント１１６に対するアドレスを含む送信権要求をデータベースサーバ機１２０に送ることを規定する。実施例において、データベースサーバ機１２０も、クライアント端末１１０に対する戻り通信のためにメモリ１２６の第２のセグメントに対する送信権要求をクライアント端末１１０に送ってもよい。送信権要求はＴＣＰ／ＩＰチャネル１３２を用いて交換されてもよい。
【００３５】
読出動作を行なうために、ステップ３４０は、データをクライアント端末１１０上の第１のメモリセグメント１１６に書込ませるために、データベースサーバ機１２０が第２のメモリセグメント１２６にデータを書込むことを規定する。データベースサーバ機１２０がデータを第２のメモリセグメント１２６に書込む際に、データベースサーバ機１２０のＩ／Ｏポート１２８は第２のメモリセグメント１２６中にバッファリングされているデータをクライアント端末１１０に移動する。データはＤＭＡチャネル１３４を越えてクライアント端末１１０からデータベースサーバ機１２０に移動されてもよい。
【００３６】
ステップ３５０において、データは受取られてクライアント端末１１０の第１のメモリセグメント１１６にバッファリングされる。クライアント端末１１０のＩ／Ｏポート１１８はデータを第１のメモリセグメント１１６に移動する。クライアント端末１１０のＣＰＵ１１２は次いで、第１のメモリセグメント１１６から読出動作によって要求されるデータを読取る。
【００３７】
ＤＭＡ通信の確認
クライアント端末１１０とデータベースサーバ機１２０との間で図２および図３によって記載される読出または書込動作が利用可能でないとき、この発明の実施例は、クライアント端末１１０およびデータベースサーバ機１２０がＴＣＰ／ＩＰチャネル１３２を用いてデータベース動作を行なうためにデータを転送することを可能にする。ＤＭＡチャネル１３４の代わりにＴＣＰ／ＩＰチャネルを用いることは、クライアント端末１１０およびデータベースサーバ機１２０のＤＭＡ構成が互換性を有さないか、または何らかの理由で可能でない場合の信頼性あるバックアップを提供する。
【００３８】
図４は、この発明の実施例による、ＤＭＡデータ転送を用いて２つの機械がデータベース動作のためにデータを交換する能力を確認するための方法を例示する。書込または読出動作を行なうための機械間のデータ転送とともに、図４に記載されるような方法が用いられてもよい。よって、図４に記載されるような方法は、図２および図３において記載される方法に対する付加的なステップとして実現されてもよい。
【００３９】
ステップ４１０において、第１の機械は別の機械にＲＰＣを送ることにより、いくつかのデータベース動作を行なう。前述のとおり、遠隔手順呼出は実行される書込または読出動作のいずれを特定してもよい。他方の機械はＲＰＣに対する戻りを送ってもよい。ＲＰＣおよびその戻りはどちらもＴＣＰ／ＩＰチャネルを通じて送られる。
【００４０】
ステップ４２０は、各機械が他方の機械に対してメモリセグメントを割当てることを規定する。他の実施例において記載したとおり、各機械は割当てられたメモリに、機械間で転送されるデータに対する一時的なバッファを与える。
【００４１】
ステップ４３０において、各機械は他方の機械に割当てられたメモリに対する識別子ま
たは送信権要求を送る。識別子は、一方の機械が他方の機械にデータを書込むためのアドレスを与える。識別子はＴＣＰ／ＩＰ接続を越えて交換されてもよい。
【００４２】
ステップ４４０において、２つの機械間でＤＭＡデータ転送を行ない得ることを確認するための判断が行なわれる。たとえば、２つの機械の各々がＤＭＡ使用可能であっても、一方の機械が異なる装置、ソフトウェアおよび／またはプロトコルを用いているために、２つの機械がＤＭＡデータ転送を行なうために互いに互換性がないことがあり得る。
【００４３】
検証判断を行なうためにいくつかの技術が可能である。技術の１つは、各機械が割当てられたメモリを用いて他方の機械にテストメッセージの形のデータを書込むことを試みることを規定する。たとえば、一方の機械が割当てられたメモリを通じて他方の機械にテストメッセージを書込み、そのデータが他方の機械の割当てられたメモリを通じて第２の機械によって受取られ、バッファリングされ、および／または用いられたという他方の機械からの通知を待ってもよい。実施例の１つにおいては、他方の機械にデータを書込む機械のみがテストメッセージを送ればよい。別の実施例においては、両方の機械が互いにテストメッセージを送り合って、他方の機械からの通知を待つ。テストメッセージと通知とはどちらもＤＭＡチャネル１３４によって通信されてもよい。
【００４４】
別の技術は、各機械のソフトウェアを比較してそれらの機械がＤＭＡ転送に対して互換性があるかどうかを定めることによって確認を行なうことを規定する。たとえば、一方の機械が他方の機械にそのソフトウェア情報を含むメッセージを送り、他方の機械が比較を行なって互換性を定めてもよい。実施例において、検証を行なうために用いられる互換性情報はＴＣＰ／ＩＰチャネルによって送られてもよい。互換性情報が遠隔手順呼出およびその戻りとともに与えられることも可能である。こうした比較ステップは、割当てられたメモリを通じてテストメッセージを送るステップに加えて、またはその代わりに行なわれてもよい。
【００４５】
ステップ４４０においてＤＭＡ互換性が確認されるとき、ステップ４５０は、ＤＭＡ接続によって第１の機械と第２の機械との間でデータベース動作が行なわれ得ることを規定する。ステップ４４０においてＤＭＡ互換性が確認されないとき、ステップ４６０はＴＣＰ／ＩＰ接続によって第１の機械と第２の機械との間でデータベース動作が行なわれ得ることを規定する。たとえば図１において、ステップ４４０において妥当性が判断されたときにはＤＭＡチャネル１３４が用いられてもよく、そうでない場合にはＴＣＰ／ＩＰチャネル１３２が用いられる。
【００４６】
データ転送のための多重バッファの使用
図５は、この発明の実施例による、多重バッファを用いて２つの機械間でデータを転送するための基本的なシステムを例示する。図５において、クライアント端末５１０はデータベースサーバ機５２０と通信して、読出および／または書込動作によってデータを転送するための動作を含むデータベース動作を行なう。クライアント端末５１０とデータベースサーバ機５２０とは、ＤＭＡ接続５３４を越えて互換性があると仮定する。ＤＭＡチャネル５３４を越える通信を確立するために、ＴＣＰ／ＩＰ接続５３２も２つの機械を相互接続してもよい。データベースサーバ機５２０は、図５に示さないデータベースを管理する。
【００４７】
クライアント端末５１０はメモリ５１６を有し、その一部がデータベースサーバ機５２０に割当てられてもよい。同様に、データベースサーバ機５２０はメモリ５２４を有し、その一部がクライアント端末５１０に割当てられてもよい。データベースサーバ機５２０はデータベース５３２も管理する。クライアント端末５１０への、およびそこからの通信はＩ／Ｏポート５１８を通じて行なわれてもよい。データベースサーバ機５２０への、お
よびそこからの通信はＩ／Ｏポート５２８を通じて行なわれてもよい。
【００４８】
機械の一方が他方の機械にＴＣＰ／ＩＰ接続５３２を越えてＲＰＣの信号を送る際に、各機械は他方の機械に対してそのメモリの一部を割当てる。クライアント端末５１０はそのメモリ５１４からの第１のメモリセグメント５１６を割当てる。データベースサーバ機５２０はそのメモリ５２４からの第２のメモリセグメント５２６を割当てる。
【００４９】
実施例に従うと、各機械における割当てられたメモリは複数のバッファに分割されてもよい。クライアント端末５１０において、第１のメモリセグメント５１６は第１の複数のバッファ５１５に分割される。データベースサーバ機５２０において、第２のメモリセグメント５２６は第２の複数のバッファ５２５に分割される。バッファ間の関係は、第１の複数のバッファ５１５の各々が第２の複数のバッファ５２５の１つに対応する。よって、クライアント端末５１０またはデータベースサーバ機５２０のいずれかにおけるバッファの１つにデータが書込まれると、そのデータは指定コマンドの実行によって２つの機械の他方における対応するバッファに自動的に書込まれる。代替的には、ユーザからのプロンプトによって指定コマンドが開始されてもよく、それによってデータはＤＭＡチャネル４３５によって転送される。
【００５０】
図５において、バッファ５１５、５２５間の対応は番号によって例示されており、ここでＢＵＦＦ１１はＢＵＦＦ２１に対応し、ＢＵＦＦ１４はＢＵＦＦ２４に対応する。バッファ間の対応はＴＣＰ／ＩＰチャネル５３２を用いて確立されてもよい。たとえば、ＲＰＣ１によってクライアント端末５１０とデータベースサーバ機５２０との間のデータベース動作を開始することによって対応が確立されてもよい。
【００５１】
割当てられたメモリをバッファに分割することによって、データをクライアント端末５１０からデータベースサーバ機５２０に移動できる速度が増す。もし割当てられたメモリに分割が用いられなければ、クライアント端末５１０とデータベースサーバ機５２０との間で追加のデータを交換できるようになる前に、第１のメモリセグメント５１６に保持されるすべてのデータを第２のメモリセグメント５２６に転送する必要がある。したがって、第１のメモリセグメント５１６の大きさが４ｋしかなく、クライアント端末５１０のユーザがデータベースサーバ機５２０に８ｋのデータを書込むことを望んでいるとき、そのデータは第１のメモリセグメント５１６に少なくとも２回局所的に書込まれる必要がある。まず、４ｋを第１のメモリセグメント５１６に書込む必要があり、一旦Ｉ／Ｏポート５１８がそのデータをデータベースサーバ機５２０に移動してから、次の４ｋのデータが第１のメモリセグメント５１６に書込まれてもよい。たとえ第１のメモリセグメント５１６が８ｋのデータを収容するために十分に大きかったとしても、８ｋのデータは１つのかたまりとして移動しなければならないため、データのいくつかは他のデータよりも遅く到着する。
【００５２】
これに対し、図５に記載されるような実施例は、４ｋセグメントのデータの両方を第１のメモリセグメント５１６から同時に転送可能にして、クライアント端末５１０からデータベースサーバ機５２０にデータを送付するための全体の送付時間を向上させる。バッファを用いることで送られるデータのかたまりの大きさが減少するため、各バッファ５１５に保存されるデータすべてを、同量のデータを第１のメモリセグメント５１６から第２のメモリセグメント５２６にバッファを用いることなく転送した場合よりも少ない時間で、対応するバッファ５２５に転送できる。
【００５３】
データベース動作の実行の際にクライアント端末５１０とデータベースサーバ機５２０とがデータを交換し得る態様は以下のとおりである。転送側である一方の機械は、その割当てられたメモリにデータを書込み、そのデータはバッファ間に分配される。データは次
いで受信側の機械における対応するバッファに運ばれる。受信側の機械の各バッファに保存されたデータが用いられると、受信側機械は転送側機械に通知を送る。実施例において、その通知は受信側機械のバッファが空であることを示す。よって、通知は受信側機械の各バッファに対して送られてもよい。通知を受信することで、転送側機械は、そこから通知を受取った受信側機械のバッファに対応するバッファにより多くのデータを書込めることを知る。非同期データ転送が可能である実施例においては、バッファが利用可能になるまでデータは書込動作を行なう機械の割当てられたメモリにおいてキューに入れられてもよい。
【００５４】
図５によって示されるように、クライアント端末５１０がデータベースサーバ機５２０にデータを書込んでいるとき、クライアント端末５１０はそのデータを第１のメモリセグメント５１６に局所的に書込む。第１のメモリセグメント５１６中のデータはバッファ５１５に分配される。クライアント端末５１０のＩ／Ｏポート５１８は、データをバッファ５１５からデータベースサーバ機５２０に移動する。データベースサーバ機５２０のＩ／Ｏポート５２８は、データをバッファ５２５に移動する。この態様で、クライアント端末５１０のバッファ５１５の１つの中のデータが、データベースサーバ機５２０の対応するバッファ５２５に移される。データベースサーバ機５２０がバッファ５１５の１つに保持されるデータをすべて用いるとき、データベースサーバ機５２０はクライアント端末５１０に通知を送る。クライアント端末５１０は、その通知を与えたバッファ５２５に対応する特定のバッファ５１５により多くのデータを置くことができる。通知はバッファ５１５の各々から受取られてもよい。非同期データ転送が可能な実施例においては、バッファ５１５の１つの、データベースサーバ機５２０上の対応するバッファが空であると通知されるまで、クライアント端末５１０はデータベースサーバ機５２０への転送のために待機しているデータをキューに入れてもよい。
【００５５】
たとえば、クライアント端末５１０が、データベースサーバ機によって管理されるデータベース中のデータに対する読出動作を行なっているとき、クライアント端末５１０への転送に対して識別されるデータが第２のメモリセグメント５２６に移される。そのデータはバッファ５１５間で分配され、Ｉ／Ｏポート５２８を通じてクライアント端末５１０に運ばれてもよい。データは次いでクライアント端末５１０上のバッファ５１５に保持されてもよい。クライアント端末５１０は次いでバッファ５１５からデータを読取る。バッファ５１５の１つが利用可能になると、クライアント端末５１０はデータベースサーバ機５２０に通知を送ってそのバッファが空であることを示す。
【００５６】
同期および非同期データ転送
図５によって示されるようなシステムにおいて、データは同期または非同期的に転送されてもよい。同期データ転送において、別の機械に対して割当てられたメモリに局所的に書込まれるデータが割当てられたメモリの大きさを超えるとき、そのデータを書込んでいる機械のプロセッサは活動状態を保って割当てられたメモリをモニタし、割当てられたメモリが利用可能になるとそこに追加データを書込む。データが割当てられたメモリに同期的に書込まれると、そのデータは転送側機械から転送される。
【００５７】
非同期転送において、データは転送側機械のキューに局所的に書込まれる。キューによって、バッファが利用可能になるとデータがそのバッファに書込まれる。モニタしかつキューにデータを書込むために、データを局所的に書込む機械におけるプロセッサの積極的な介入は必要とされない。むしろ、割当てられたメモリを通じて転送する必要のあるすべてのデータが一旦キューに送られ、割当てられたメモリ内で追加データを分配できるようになるまで、キューは割当てられたメモリ（またはその個々のバッファ）に対するデータを保持する。
【００５８】
ハードウェアの概要
図６は、この発明の実施例を実現し得るコンピュータシステム６００を例示するブロック図である。コンピュータシステム６００は、情報を通信するためのバス６０２またはその他の通信機構と、情報を処理するためにバス６０２に結合されるプロセッサ６０４とを含む。コンピュータシステム６００はまた、プロセッサ６０４によって実行される情報および命令を保存するためにバス６０２に結合される、ランダムアクセスメモリ（ＲＡＭ）またはその他の動的記憶装置などの主メモリ６０６を含む。主メモリ６０６はまた、プロセッサ６０４によって実行される命令の実行の際に一時的変数またはその他の中間情報を保存するために用いられてもよい。コンピュータシステム６００は、プロセッサ６０４に対する静的情報および命令を保存するためにバス６０２に結合される読出専用メモリ（ＲＯＭ）６０８またはその他の静的記憶装置をさらに含む。情報および命令を保存するために、磁気ディスクまたは光ディスクなどの記憶装置６１０が設けられて、バス６０２に結合される。
【００５９】
コンピュータシステム６００は、コンピュータユーザに情報を表示するために陰極線管（ＣＲＴ）などのディスプレイ６１２にバス６０２を介して結合されてもよい。プロセッサ６０４に情報およびコマンド選択を通信するために、英数字およびその他のキーを含む入力装置６１４がバス６０２に結合される。別の種類のユーザ入力装置は、プロセッサ６０４に方向情報およびコマンド選択を通信し、かつディスプレイ６１２上のカーソルの動きを制御するための、マウス、トラックボール、またはカーソル方向キーなどのカーソル制御６１６である。この入力装置は典型的に、第１の軸（たとえばｘ）および第２の軸（たとえばｙ）の２軸における自由度２を有して、その装置が平面における位置を特定できるようにする。
【００６０】
この発明は、ここに記載される技術を実現するためのコンピュータシステム６００の用法に関する。この発明の実施例の１つに従うと、これらの技術は、主メモリ６０６に含まれる１つまたはそれ以上の命令の１つまたはそれ以上の連続を実行するプロセッサ６０４に応答してコンピュータシステム６００によって行なわれる。こうした命令は、記憶装置６１０などの別のコンピュータ読取可能媒体から主メモリ６０６に読込まれてもよい。主メモリ６０６に含まれる命令の連続の実行により、プロセッサ６０４はここに記載される処理ステップを行なう。代替的な実施例においては、この発明を実現するためにソフトウェア命令の代わりに、またはそれと組合わせてハードワイヤード回路が用いられてもよい。よってこの発明の実施例は、ハードウェア回路およびソフトウェアのいかなる特定の組合せにも制限されない。
【００６１】
ここで用いられる「コンピュータ読取可能媒体」という用語は、実行のためにプロセッサ６０４に命令を与えることに関わるあらゆる媒体を示す。こうした媒体は、不揮発性媒体、揮発性媒体、および伝送媒体を含むがそれに制限されない多くの形をとってもよい。不揮発性媒体はたとえば、記憶装置６１０などの光または磁気ディスクを含む。揮発性媒体は主メモリ６０６などの動的メモリを含む。伝送媒体は、バス６０２を含むワイヤを含む、同軸ケーブル、銅線および光ファイバを含む。伝送媒体はまた、無線および赤外データ通信の際に生成されるような音波または光波の形をとることもできる。
【００６２】
コンピュータ読取可能媒体の一般的な形はたとえば、フロッピーディスク、フレキシブルディスク、ハードディスク、磁気テープ、またはあらゆるその他の磁気媒体、ＣＤ−ＲＯＭ、あらゆる他の光媒体、パンチカード、紙テープ、孔のパターンを有するあらゆるその他の物理的媒体、ＲＡＭ、ＰＲＯＭ、およびＥＰＲＯＭ、フラッシュ−ＥＰＲＯＭ、あらゆるその他のメモリチップもしくはカートリッジ、以下に説明する搬送波、またはコンピュータが読取ることが可能なあらゆるその他の媒体を含む。
【００６３】
実行のためにプロセッサ６０４に１つまたはそれ以上の命令の１つまたはそれ以上の連続を運ぶステップに、さまざまな形のコンピュータ読取可能媒体が関わっていてもよい。たとえば、命令は最初に遠隔コンピュータの磁気ディスク上に保持されていてもよい。遠隔コンピュータはその動的メモリに命令をロードし、その命令をモデムを用いて電話線で送ることができる。コンピュータシステム６００に対して局所的なモデムは、電話線からデータを受信し、赤外送信機を用いてそのデータを赤外信号に変換できる。赤外検出器は赤外信号中に保持されるデータを受信でき、適切な回路がそのデータをバス６０２に配置できる。バス６０２はデータを主メモリ６０６に運び、プロセッサ６０４はそこから命令を検索して実行する。主メモリ６０６が受取る命令は、プロセッサ６０４による実行の前または後に、記憶装置６１０に任意に保存されてもよい。
【００６４】
コンピュータシステム６００はまた、バス６０２に結合される通信インターフェイス６１８を含む。通信インターフェイス６１８は、ローカルネットワーク６２２に接続されるネットワークリンク６２０に結合する２方向のデータ通信を提供する。たとえば、通信インターフェイス６１８は、対応する種類の電話線へのデータ通信接続を提供する統合サービスデジタル網（ＩＳＤＮ）カードまたはモデムであってもよい。別の例として、通信インターフェイス６１８は、互換性のローカルエリアネットワーク（ＬＡＮ）へのデータ通信接続を提供するＬＡＮカードであってもよい。ワイヤレスリンクが実施されてもよい。このような実施のいずれにおいても、通信インターフェイス６１８は、さまざまな種類の情報を表わすデジタルデータストリームを運ぶ電気、電磁気または光信号を送信および受信する。
【００６５】
ネットワークリンク６２０は典型的に、１つまたはそれ以上のネットワークを通じて他のデータ装置へのデータ通信を提供する。たとえば、ネットワークリンク６２０は、ホストコンピュータ６２４またはインターネットサービスプロバイダ（ＩＳＰ）６２６によって操作されるデータ設備へのローカルネットワーク６２２を通じた接続を提供してもよい。続いてＩＳＰ６２６は、現在一般的に「インターネット」６２８と呼ばれる世界的なパケットデータ通信ネットワークを通じたデータ通信サービスを提供する。ローカルネットワーク６２２およびインターネット６２８はどちらも、デジタルデータストリームを運ぶ電気、電磁気または光信号を用いる。コンピュータシステム６００へ、およびそこからデジタルデータを運ぶ、さまざまなネットワークを通じた信号ならびにネットワークリンク６２０上および通信インターフェイス６１８を通じた信号は、情報を搬送する搬送波の例示的な形である。
【００６６】
コンピュータシステム６００は、ネットワーク、ネットワークリンク６２０および通信インターフェイス６１８を通じて、メッセージを送信してプログラムコードを含むデータを受信できる。インターネットの例において、サーバ６３０は、インターネット６２８、ＩＳＰ６２６、ローカルネットワーク６２２および通信インターフェイス６１８を通じて、アプリケーションプログラムに対する要求されるコードを送信してもよい。
【００６７】
受信されるコードは受信されてすぐにプロセッサ６０４により実行されても、および／または、後の実行のために記憶装置６１０もしくはその他の不揮発性記憶装置に保存されてもよい。この態様で、コンピュータシステム６００は搬送波の形のアプリケーションコードを得てもよい。
【００６８】
前述の明細書において、この発明を特定の実施例を参照しながら説明した。しかし、この発明のより広い趣旨および範囲から逸脱することなくさまざまな変更および修正を行ない得ることが明らかになるであろう。したがってこの明細書および図面は、制限的な意味ではなく例示的にみなされる。
【図面の簡単な説明】
【００６９】
【図１】この発明の実施例による、２つの機械の間でデータを転送するための基本的なシステムを例示する図である。
【図２】この発明の実施例による、ＤＭＡデータ転送を用いて２つの機械の間で書込動作を実現するための方法を例示する図である。
【図３】この発明の実施例による、ＤＭＡデータ転送を用いて２つの機械の間で読出動作を実現するための方法を例示する図である。
【図４】ＤＭＡデータ転送を用いて２つの機械がデータベース動作のためにデータを交換する能力を確認するための方法を例示する図である。
【図５】この発明の実施例による、多重バッファを用いて２つの機械の間でデータを転送するための基本的なシステムを例示する図である。
【図６】この発明の実施例を実現し得るコンピュータシステムを例示するブロック図である。
【図１】
0004624110.tif 000002
【図２】
0004624110.tif 000003
【図３】
0004624110.tif 000004
【図４】
0004624110.tif 000005
【図５】
0004624110.tif 000006
【図６】
0004624110.tif 000007