(57)【要約】  複数のノードにおいて計算を統合するために、外部関数を登録し、データベースマネジメントシステムから並列で呼び出すことのできるプログラマチックインターフェースについて説明する。一実施形態において、各ノードは、データベースシステムから受信したコマンドに応えて計算を行うプログラムをスタートさせるよう構成された処理を実行する。データベースシステムにおいてクエリを受信したことに応え、複数のコマンドが処理に送信され、各対応する処理において同時に計算を行う。結果は各処理から受信され、ステートメントの実行は受信された結果に基づいて終了される。
2007513426.tif 000002
【特許請求の範囲】
【請求項１】
各ノードにおいて、データベースシステムから受信したコマンドに応えて計算を行うプログラムをスタートさせるよう構成された対応する処理を実行することと、
データベースシステムにおいて、計算を行う外部ルーチンを特定するステートメントを受信することと；ステートメントを受信することに応えて、
計算を行う複数のコマンドを、前記各対応する処理に同時に送ることと、
前記各処理から結果を受信することと、
前記各処理から受信した結果に基づいて、ステートメントの処理を終了することと、から構成される複数のノードに配置された複数のデータコンテナ上で計算を統合する方法。
【請求項２】
計算を行う外部ルーチンを特定するデータベースシステムにおいてステートメントを受信することと、
ステートメントを受信することに応えて、
計算を行う複数のコマンドを、コマンドに応えて計算を行う複数の各プログラムをスタートするよう構成された、複数の各処理に送信することと、
前記各処理から結果を受信することと、
前記各処理から受信した結果に基づいて、ステートメントの処理を終了することと、から構成される複数のノードに配置された複数のデータコンテナ上で計算を統合する方法。
【請求項３】
計算を行うことのできる複数のノードからノードのコホートを決定することからさらに構成され、複数の各処理はノードのコホートに対応することを特徴とする、請求項２に記載の方法。
【請求項４】
複数のノードは、ノードのコホートに含まれない少なくとも１つのノードを含むことを特徴とする、請求項３に記載の方法。
【請求項５】
前記決定することは、各ノードにサポートされる並列度に基づくことを特徴とする、請求項３に記載の方法。
【請求項６】
プログラムとデータコンテナの間の関連付けを特定するレジストリにアクセスすることからさらに構成され、
前記決定することは、プログラムとデータコンテナの間の関連付けに基づくことを特徴とする、請求項３に記載の方法。
【請求項７】
データコンテナに対する各属性を特定するレジストリにアクセスすることからさらに構成され、
前記決定することは、データコンテナに対する各属性をステートメントのパラメータに適合させることに基づくことを特徴とする、請求項３に記載の方法。
【請求項８】
プログラムおよびデータコンテナに関連付けられた分割関数を特定するレジストリにアクセスすることからさらに構成され、
前記決定することは、プログラムおよびデータコンテナに関連付けられた分割関数を実行した結果に基づくことを特徴とする、請求項３に記載の方法。
【請求項９】
少なくともいくつかのプログラムを並列で実行することを特徴とする、請求項２に記載の方法。
【請求項１０】
計算を統合するための指示を持つコンピュータ読み取り可能な媒体で、前記指示は、請求項１に記載の方法を行う１以上の処理装置による実行があり次第、配置される。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
本発明はデータベースシステムに関し、より具体的には、異種コンピュータシステムにわたる複雑計算に関する。
【背景技術】
【０００２】
発明の背景
科学計算における共通のシナリオは、多様な異なるフォーマットで格納されたデータにアクセスし、処理する複数の異種環境にわたり、複雑計算を実行することである。たとえば、１つの複雑計算は、遺伝子の配列およびそれらの引用の多様なデータベース内の遺伝物質のＤＮＡ適合を検索するものである。異種環境は、異なる、そしてしばしば互換性のないハードウェア、オペレーティングシステム、およびアプリケーションソフトウェアの組み合わせを含む。一般的に、これらの異なるシステムは、特定のニーズに応えるため個々に購入され、企業は、複数のコンピュータシステムに散在する情報を有するであろう。システム業者は、競争相手の販売に勝る競争力を備えようとするため、異なるシステムは、ほぼ本質的に互換性がない。構造化照会言語（ＳＱＬ）基準およびリレーショナルモデルに基づくリレーショナルデータベースマネジメントシステム（ＤＢＭＳ）でさえ、ＳＱＬ実施、データベース定義、および通信機構の差異のために、互換性がない。したがって、複雑計算を実行するための異種システムを組みあわせる仕事は困難である。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
複雑計算を、複数の異種環境にわたって実行する場合、データベースマネジメントシステムは、計算で用いられるデータのいくつかのソースと同じく、しばしば計算結果の最終的なレポジトリとして用いられる。しかし、さらに他の異種システム、すなわちデータベースマネジメントシステムを環境に統合することは、複雑計算を実行する既に困難なタスクに、さらなる複雑さを提起する。
【０００４】
たとえば、このような複雑計算を管理するあるアプローチが、多段式処理として知られており、そこでは複雑計算は複数のステップに分散され、各ステップはユーザーによって提示され、同種プラットフォーム上で、全体として独立的に行われる。各計算の結果は、別々のステップで組み合わせられ、結果データベースにロードされる。計算ステップの統合は、手動で行われるか、何らかの形状のワークフローエンジンを用いて行われるかし、完全な計算結果は一括モードで実行された後にのみ得られ、インタラクティブではない。したがって、多段式処理アプローチにおいて、データベースシステムとの統合は質が悪くインタラクティブでないものであり、本質的に、データベースシステムを、前回実行された一連のデータの結果の事後ユーザーインターフェースへと制限するものである。さらに、計算の実行の統合を堅固で拡張可能な方法とするのは困難である。
【０００５】
よりインタラクティブなアプローチは、ユーザーによって提示されるデータベースクエリの特定の統合ステップをコード化することである。ユーザーが具体的にコード化したクエリをデータベースシステムに提示する場合、クエリは実行され、データベースシステムをして複雑計算の多様なサブコンポーネントを起動させ、結果同士を組み合わせさせる。このアプローチでクエリをコード化することは、開発者が各異種システムおよびその上で実行されるべき計算の部分の詳細な知識を有することおよび、データベース外部の部分の実行を管理することを要求する。このアプローチの範囲は一般的なものではなく、特定の計算のみを扱うものである。
【０００６】
その他のアプローチは、並列クエリ、クラスタリング、および、単一のクエリを複数の（異種）データベースインスタンスにわたって実行できるようにするいくつかのデータベースシステムの二相コミット機構を利用するものである。このアプローチにおいて、互換性のないシステムに存在するデータは１以上のデータベースに移動させられ、計算を行っていたアルゴリズムはデータベース内の関数に書き換えられる。しかし、この移動-書き換えアプローチは高価かつ時間消費型で、各ノードが、データベース管理およびアプリケーション開発リソースと同じく、データベースインスタンス、データベースマネジメントシステムソフトウェアを実行できるように、ハードウェアへの投資を要求する。また、データベース内で実行されるアルゴリズムを書き換えるのは、実現可能ではない。
【０００７】
したがって、複数の異種データベースシステムにわたって複雑計算を行うための、堅固、拡張可能、インタラクティブ、および高価でないアプローチが必要とされる。
【課題を解決するための手段】
【０００８】
発明の概要
本発明の、外部関数を登録し、データベースマネジメントシステムから並列に呼び出すことのできるプログラマチックインターフェースによって、これらおよびその他の必要性が検討される。したがって、本発明の一態様は、それぞれデータベースシステムから受信されたコマンドに応えて計算を行うプログラムをスタートするよう構成された処理を実行する複数のノードで、計算を統合する方法に関する。データベースシステムでクエリを受信することに応じて、複数のコマンドが処理に送信され、各対応する処理に同時に計算を行う。結果は各処理から受信され、ステートメントの実行は受信された結果に基づいて終了される。
【０００９】
本発明の他の態様は、複数のノードに配置された複数のデータコンテナ上で計算を統合する方法およびソフトウェアを対象とする。ステートメントもしくはクエリを、計算を行う外部ルーチンを特定するデータベースシステムで受信することに応えて、計算を行うコマンドは、計算を行うプログラムをスタートするよう構成された処理に送信される。結果はそれぞれの処理から受信され、ステートメントの実行は、受信された結果に基づいて終了される。一実施形態において、計算を行うノードのコホートは、並列度や利用可能なスレッド数などの多様な基準に基づいて決定される。
【００１０】
本発明のさらにその他の態様、特徴、および有利な点は、本発明を実施するための考えられる最良の形態を含む、多数の特定の実施形態および実施を説明するだけで、以下の詳細な説明から容易に明らかになる。本発明はまた、その他の異なる実施形態でも可能であり、いくつかの詳細は、本発明の精神および範囲から逸脱することなく、多様な自明の意味で変更できる。したがって、図面および説明は、事実上説明的なものであり、限定的なものではないと見なされるべきである。
【発明を実施するための最良の形態】
【００１１】
添付の図面の図中で、本発明は一例として示されており、限定するものとして示されているわけではない。同一の参照番号は同様の要素を言及する。
【００１２】
好適な実施形態の説明
複雑計算のためのシステム、方法、およびソフトウェアが説明される。以下の記載において、説明の目的で、本発明の充分な理解をもたらすために多数の具体的な詳細が説明される。しかし、当業者にとって、本発明は、これら具体的な詳細を伴うことなく、または同等の配置とともに実行されてよいことは明白である。その他の場合、本発明を不必要に不明瞭にすることを防ぐべく、ブロック図に既知の構造および装置が示される。
【００１３】
データベースマネジメントシステムにおいて、データは、それぞれレコードを含む１以上のデータコンテナに格納され、各レコード内のデータは１以上のフィールドとして組織される。リレーショナルデータベースシステムにおいて、データコンテナはテーブルと呼ばれ、レコードはローと呼ばれ、フィールドはカラムと呼ばれる。オブジェクト指向のデータベースにおいて、データコンテナはオブジェクトクラスと呼ばれ、レコードはオブジェクトと呼ばれ、フィールドは属性と呼ばれる。その他のデータベース構造はその他の用語を用いてもよい。
【００１４】
本発明を実施するシステムは、特定のタイプのデータコンテナまたはデータベース構造に限定されるものではない。しかし、説明の目的で、ここに用いられる用語および実施例は、通常はリレーショナルデータベースと関連するものとする。したがって、「テーブル」、「ロー」および「カラム」の用語はここではそれぞれ、データコンテナ、レコード、およびフィールドを呼ぶものとする。
【００１５】
（システム概観）
図１は、複雑計算を行うべく本発明の一実施形態が配置されるところの異種環境１００を示す概略図である。特に、異種環境１００はデータベースマネジメントシステム（ＤＢＭＳ）プラットフォーム１０１および異種プラットフォーム１０３を含む。プラットフォーム１０３は、ハードウェア、オペレーティングシステム、およびアプリケーションソフトウェアの組み合わせが、ＤＢＭＳプラットフォーム１０１のハードウェア、オペレーティングシステム、およびアプリケーションソフトウェアと異なるまたは互換性がない場合に、異種であると考えられてよい。配置環境によって、本発明の実施形態は１以上の追加の異種プラットフォーム１０５を含んでよい。ここではプラットフォーム１０３および１０５は異種として説明されるが、１以上のプラットフォーム１０３および１０５がＤＢＭＳプラットフォーム１０１と同種であって、なお本発明のその他の特徴からもたらされる利点のいくつかを実現してもよい。したがって、本発明は同種もしくは同種／異種混合の環境において有利である。
【００１６】
ＢＭＳプラットフォーム１０１は、ユーザーインターフェース、もしくは複数の異種プラットフォーム１０３および１０５にわたって複雑計算を行うアプリケーションプラグラムを提供し、異種プラットフォーム１０３および１０５の間の複雑計算を統合し、異種プラットフォーム１０３および１０５からの複雑計算の結果のレポジトリとして機能する。一実施形態において、ＤＢＭＳプラットフォーム１０１は、ユーザー、もしくは複雑計算を特定するアプリケーションプログラムからクエリを受け取るデータベースサーバ１０７と、複雑計算に関与するその他のデータと同じく複雑計算の結果を格納するリレーショナルデータベース１０９と、分散した複雑計算を統合するプログラミングインターフェースレジストリ１１１と、プログラミングインターフェースレジストリ１１１内の情報に基づきプログラミングインターフェースによって作成されるスタブプログラム１１３とを含む。プログラミングインターフェースレジストリ１１１およびスタブプログラム１１３は、以下により詳細に説明される。
【００１７】
スタブプログラム１１３は、ネットワーク接続、もしくは異種プラットフォーム１０５上で実行する対応するデーモン（図示されない）と同じく異種プラットフォーム１０３上で実行するデーモン１１５へのその他の通信リンクを開くべく構成される。一般性を喪失することなく、また説明の都合上、異種プラットフォーム１０３および１０５のシステム構成は、もっぱら異種プラットフォーム１０３についてのみ説明される。デーモン１１５は、スタブプログラム１１３からの通信によって起動されるまで継続的にアイドリングする、バックグラウンドの処理であることが好ましい。デーモン１１５は、起動されると、１以上の計算プログラム１１７の実行をスタートし、引数を渡し、ストップするよう構成
される。１以上の計算プログラム１１７は、複雑計算を行うべく異質のデータベース１１９と相互作用してよく、リレーショナルデータベース１０９への格納およびユーザーもしくはアプリケーションプラグラムへの提示のため、最終的にデータベースサーバ１０７に結果を返してよい。
【００１８】
スタブプログラム１１３およびデーモン１１５は、１以上の異種プラットフォーム１０３および１０５上の１以上の計算プログラム１１７を、並列度を実現するよう一斉に起動するべく構成されることが好ましい。この構成において、データベースサーバ１０３は、スタブプログラム１１３を介して、デーモン１１５に、１以上の計算プログラム１１７を適切な引数でスタートするよう、もしくは既に実行中の計算プログラム１１７に引数を渡すよう、もしくは既に実行中の計算プログラム１１７を終了するよう命令する。デーモン１１７は、要求された各計算プログラム１１７を順にノンブロッキング方式でスタートし、要求された全ての計算プログラム１１７がスタートすると、計算プログラム１１７が終了するのを待機する。各計算プログラム１１７が終了すると、結果がＤＢＭＳプラットフォーム１０１の要求処理に返される。一実施形態において、デーモン１１５は、実行中の計算プログラム１１７に、ノンブロッキング方式で、すなわち計算プログラム１１７からの結果を待つことなく、引数を渡す。データベースサーバ１０７は、先立つ要求の一部として実行中の、１以上の計算プログラム１１７の実行をストップする要求を送信することができる。両方の要求が同一ソースからのものであることが確認されると、デーモン１１５は要求された計算プログラム１１７を終了することができる。
【００１９】
さらに、デーモン１１５に登録された各計算プログラム１１７は、デフォルトの並列度（たとえば並列実行スレッド数）を有してよい。このデフォルトは、データベースサーバ１０７から、異なるスレッド数で計算プログラム１１７をスタートするよう要求されることにより、無効にされることがある。この実施形態において、各デーモン１１５は有効なスレッドのプールを保持し、計算プログラム１１７をスレッドに添付してスレッドにビジーとマークすることで計算プログラム１１７をスタートする各スレッドのステータス（ビジー、フリー）を追跡する。プールされた全てのスレッドがビジーである場合、設定可能な閾値に達するまで新たなスレッドが作成される。デーモン１１５はデータベースサーバ１０７をそのスレッドプールのステータス、たとえば全スレッド数、ビジースレッド数などについて更新し続けるので、データベースサーバ１０３は、他の異種プラットフォーム１０５との並列起動を管理できる。
【００２０】
したがって、データベースクエリが、各ターゲットの異種プラットフォーム１０３および１０５上で複数かつ好ましくは並列の計算プログラム１１７を管理するデーモン１１５に、ランタイムを呼び出させるようにする、ＤＢＭＳプラットフォーム１０１内のプログラマチックインターフェースが提供される。これらデーモン１１５は、データベースサーバ１０７に代わって、非データベースプログラム１１７の実行を管理する。スタブプログラム１１３を作成するプログラミングインターフェースと計算プログラム１１７を実行するデーモン１１７のどちらも一般的なものであってよく、したがってアプリケーション開発者は、複雑計算を行うためのデータベースクエリを書くために、分散型コンピュータシステム１０１の構成を知る必要がない。さらに、複雑計算を統合するプログラミングインターフェースレジストリ１１７のセットアップは、データベース管理者によるワンタイムオペレーションであってよい。結果として、複数の異種コンピュータシステムにわたって複雑計算を行うのに、堅固かつ拡張可能で使いやすいシステムが達成される。
【００２１】
（プログラミングインターフェースレジストリ）
一実施形態において、ＤＢＭＳプラットフォーム１０１において実行中のアプリケーションは、異種プラットフォーム１０３および１０５の能力、および異種プラットフォーム１０３および１０５内に常駐し異種プラットフォーム１０３および１０５間の複雑計算を
統合するのに充分な計算プログラム１１７の能力を示す情報を含む、プログラミングインターフェースレジストリ１１１にアクセスするノンブロッキング方式プログラミングインターフェースを用いる、他のプラットフォーム１０３および１０５上の並列プログラム１１７を呼び出せる。この情報は、前もってデータベース管理者によって入力されているのが好ましいが、情報のうちいくらかは、クエリでインタラクティブに得られる。たとえば、プログラミングインターフェースレジストリ１１１内の情報は、ＤＢＭＳプラットフォーム１０１に対して有効な異種プラットフォーム１０３および１０５を識別し、計算プログラム１１７をデータベースサーバ１０７内のプログラマチックインターフェースのためにこれらのプラットフォーム１０３および１０５と関連付けるために用いられてもよく、データベースサーバはプログラム１１７の各デーモン１１５に、デーモンの対応するプラットフォーム１０３および１０５上で実行されてよいことを通知できる。
【００２２】
プログラミングインターフェースレジストリ１１１内のレジストレーションデータは以下のことを指示できる。すなわち、計算プログラム１１７の名前、それぞれ計算プログラム１１７を実行できる異種環境１００内の各コンピュータ１０３、計算プログラム１１７を呼び出すプログラム引数（数字、データタイプ、位置）、このコンピュータ１０３上のこの計算プログラム１１７を実行できるところのデータセット、および計算プログラム１１７の実行した結果がいかに返されたか（通常はレコードのコレクション）である。その他の、より管理的なタイプのプログラミングレジストリ１１１内の情報は、次のものを含むことができる。すなわち、計算プログラム１１７が毎回再起動される必要があるか、または実行を続け、呼び出し毎に新しい引数を受け入れられるかどうかの指示、部分的な結果でも容認できるか（計算プログラム１１７に対する要求を実行するコンピュータ１０３および１０５の適切なサブセットが有効な結果を返すことができなかった場合、結果は部分的であると考えられる）、および計算プログラム１１７に対するデフォルトおよび最大の並列度である。
【００２３】
プログラミングインターフェースレジストリ１１１はまた、異種環境１０１内の各コンピュータ１０３に関するデータを含む。この情報は、次のものを含むことができる。すなわち、各コンピュータ１０３および１０５の名前、ＤＢＭＳプラットフォーム１０１と異種プラットフォーム１０３間の通信リンクを作成するための連結データ（ＩＰアドレス、認証情報）、異種プラットフォーム１０３からの確認に対するタイムアウト間隔、イムアウトインターフェースからの確認の受信失敗後のリトライ数、ハートビート間隔（コンピュータ１０３上のデーモン１１５からのステータスメッセージ間の時間）、および、異種プラットフォーム１０３に対するコンピュータの不具合を示す、失われたハートビート数である。また、並列呼び出しは、プログラミングインターフェースレジストリ１１１内のスレッドプールステータスおよび最大の許容サイズ情報を用いて、さらに統合されることができる。
【００２４】
登録の際、手続き型スタブ１１３が、たとえば、プログラミングインターフェースレジストリ１１１をセットアップするのに用いられるプログラミングインターフェースプログラムによって、プログラミングインターフェースレジストリ１１１に登録された各計算プログラム１１７について作成される。データベースサーバ１０３でサポートされるプログラミング言語にコード化されたスタブプログラム１１３は、計算プログラム１１７への呼び出しインターフェースを提供する。スタブプログラム１１３のパラメータは、リターンタイプ（データベースローのコレクション）に加え、計算プログラム１１７に対する引数、操作されるところのデータ範囲、所望の並列度を含んでよい。
【００２５】
したがって、ＳＱＬクエリの関数として実行され、一連の結果を返してよいプログラムはどれでも、異種環境１００で並列に実行することができ、コンピュータクラスターと見なされる。結果が一連のローと定義される場合、関数は、ＳＱＬクエリのＦＲＯＭ節で、
一連のローを返すテーブル関数として用いられる。一方、関数が一連のロー（たとえば、整数のコレクション）を返さない場合、その関数はまた、ＳＥＬＥＣＴリストもしくはオブジェクトタイプのためのユーザー定義のメソッドで用いられてよい。
【００２６】
テーブル関数は、物理的データベースのようにクエリされたり、ＰＬ／ＳＱＬ可変コレクションに割り当てられたりする、ローのコレクションもしくはベクトル／アレイを作り出す関数である。構文的には、テーブル関数はクエリのＦＲＯＭ節のデータベーステーブル名と同じように、もしくはクエリのＳＥＬＥＣＴリスト内のカラム名と同じように用いられてよい。テーブル関数はローのコレクションを入力としてみなすことができる。テーブル関数の実行は並列処理にされてよく、返されたローは、中間段階なしに次の処理に直接ストリームされる。ある実施において、テーブル関数により返されたコレクションからのローは連続送信型であってよい、すなわち、テーブル関数の入力の処理の終了の一括処理で一度に返される代わりに、ローが作られるにつれ反復して返されてよい。したがって、テーブル関数のストリーミング、連続送信、並列実行は、テーブル関数のマルチスレッド並列実行を可能にすることにより、処理間の中間段階を除去することにより、そしてクエリ応答時間を改良することにより、パフォーマンスを向上させることができる。非連続送信型テーブル関数では、テーブル関数により返されたコレクションの全体は、クエリが単一の結果ローを返すより前に、構成され、サーバに返される。連続送信は、ローが作られるにつれ反復して返されることを可能にする。このことはまた、オブジェクトキャッシュがコレクションの全体を実体化する必要がないため、テーブル関数が必要とするメモリを減らす。コレクションの全体がテーブルもしくはメモリに組織されるのを待ってコレクション全体を返すのに代わり、ローが作成されるにつれ、テーブル関数により返されたコレクションから結果ローを反復して提供する。
【００２７】
一実施形態において、簡単にするために、異種環境１０１で実行する関数はリーフレベルの関数であり、集約（ＭＡＸ、ＭＩＮ、ＤＩＳＴＩＮＣＴなど）はデータベースサーバ１０３によって行われる。もしあれば、データベースサーバ１０３によって行われる集約により、計算プログラム１１７から連続送信されたローは、コンシューマーローソースに直ちに返されてもよく、データベースサーバ１０７内の集約のためにバッファされてもよい。
【００２８】
（操作の概観）
複数の異種システムにわたって複雑計算を統合する本発明の一実施形態の操作が図２に説明される。ステップ２０１において、データベースサーバ１０７はクエリ、もしくはプログラミングレジストリインターフェースにリストされる外部ルーチンへの呼び出しを含むデータベースステートメントを受け取り、ステートメント内の呼び出しを操作するスレッドを生じる。構造化照会言語（ＳＱＬ）の典型的なクエリは以下のようなものであってよい。
【００２９】
【数１】
2007513426.tif 000003
【００３０】
このステートメントは、外部関数「ｄｎａ＿ｍａｔｃｈ」を異種環境内のコンピュータシステムにわたって実行した結果から形成されるテーブル「ｓｔ」と、引用テーブル「ｃ」との、２つのソースに参加操作を行うことで、一連の引用名（すなわち、カラム「ｃｉｔａｔｉｏｎ＿ｎａｍｅ」）を要求するクエリである。「ｄｎａ＿ｍａｔｃｈ」外部関数
は、多様なコンピュータシステム１０３上で実行できるプログラム１１７であり、ゲノムデータベース１１９の遺伝子配列データベースにアクセスし、編集距離内の引数のヌクレオチドの結果に適合するゲノムデータベース１１９内の全てのＤＮＡ配列に対し、シーケンス識別子（「ｓｅｑｕｅｎｃｅ＿ｉｄ」）を返す。ヌクレオチドは、ＤＮＡに対してはアデニン（Ａ）、グアニン（Ｇ）、チミン（Ｔ）、シトシン（Ｃ）であり、ＲＮＡに対しては、アデニン（Ａ）、グアニン（Ｇ）、ウラシル（Ｕ）、シトシン（Ｃ）である。この実施例において異種環境１００は、それぞれ異なるデータベースとインターフェースに対処する必要のある、多様な遺伝子配列の独占データベースを有する異種コンピュータシステム１０３および１０５を含む。引用テーブル「ｃ」は、ほとんどのユーザーには不明瞭なシーケンス識別子（「ｓｅｑｕｅｎｃｅ＿ｉｄ」＝「ｓｅｑ＿ｉｄ」）を、よりユーザーに理解しやすい対応するシーケンスのソース引用に関連付ける。所望の並列度は、上に示すように、クエリでは空白のままでよく、この場合並列度は、プログラミングインターフェースレジストリ１１１で既にセットアップされているデフォルトになる。
【００３１】
ステップ２０３において、呼び出しが解析され、外部ルーチンに対する引数が、数、タイプ、および位置に関して正確であるかを検証する。この検証は、プログラミングインターフェースレジストリ１１１に格納される関数シグネチャーにアクセスすることによって行われてよく、外部ルーチンに渡される引数の数と、各位置における各パラメータのタイプを特定する。たとえば、プログラミングインターフェースレジストリ１１１に格納される「ｄｎａ＿ｍａｔｃｈ」関数の関数シグネチャーは、ある表現において、次のように与えられてよい。
【００３２】
【数２】
2007513426.tif 000004
【００３３】
このシグネチャーにおいて、「ｄｎａ＿ｍａｔｃｈ」は、「ストリング」タイプの「パターン」と呼ばれる１引数を正確に取る外部関数である。「ｄｎａ＿ｍａｔｃｈ」は、１カラムテーブルとして表される一連のシーケンス識別子を返すように特定される。引数が正確でない場合（たとえば、２つの引数が「ｄｎａ＿ｍａｔｃｈ」に渡される場合、もしくは数が「ｄｎａ＿ｍａｔｃｈ」に渡される場合）、起動は有効にされず、エラーは呼び出しアプリケーションに戻される。
【００３４】
検証にパスすると、実行は、コンピュータ１０１、１０３および１０５の「コホート」（「ノード」と呼ばれる）およびスレッドが、呼び出し内の特定された複雑計算を行うよう外部呼び出しを最終的に実行するため決定される、ステップ２０５に進む。本発明から外れることなく、このコホートを決定する多様な方法がある。一実施形態において、局所性を向上するよう、コホートは、（ａ）要求される並列度（スタブ関数１１３のパラメータで特定されるか、もしくはレジストリのデフォルトにされる）、（ｂ）ノードにおける異質のデータベース１１９が要求に応じられるか否か、（ｃ）数の多い利用可能なスレッドが数の少ない利用可能なスレッドよりも好まれるところの、各ノードのスレッドプール内のスレッドの利用可能性、および、（ｄ）どのノードが先に含まれるか、の影響を受ける最も少ないコンピュータ数になるよう決定される。
【００３５】
ステップ２０７において、スタブプログラム１１３を実行するスレッドは、プログラム１１７をコホートメンバー上で、  好ましくはコホート内の各コンピュータが可能な限り多い並列スレッドをサポートした状態で、たとえば利用可能なスレッドを上限とする既に実行されている仕事量を前提として、実行するよう要求する。これらの要求は、コホート内の各コンピュータ上のデーモン１１５に対して行われる。スタブ内で参照されるプログ
ラム１１７が各要求のために再起動する必要がなければ、要求は新しい一連の引数を渡すだけでよい。
【００３６】
要求を送信した後、スレッドは、要求が各ターゲットのデーモン１１５に受信されたことの確認を待機する。要求が、プログラミングインターフェースレジストリ１１１のタイムアウト間隔に定義されているようにタイムアウトした場合、要求はプログラミングインターフェースレジストリ１１１に特定された回数再送信される。再送信しても成功せず、部分的な結果が容認されない場合（同じくプログラミングインターフェースレジストリ１１１内の値によって管理される）、呼び出しの実行は中止され、制御はアプリケーションに戻る。呼び出しが中止された場合、成功裡に到達したコホートコンピュータのため、プログラム終了要求がデーモン１１５に送信される。
【００３７】
全てのデーモン１１５が成功裡に要求を受信した場合、もしくは部分的な結果を作成するのに十分なデーモンがある場合、ステップ２０９において、スレッドは、要求を受信した全てのノードから結果を集めるのを待機する。ノードのハートビートが機能しない場合（プログラミングインターフェースレジストリ１１１に特定されるように）、スレッドは、ノードからの結果を待機することを中止する。部分的な結果が容認され、なお得られる場合には（すなわち、有効な結果をなお返すコンピュータが残っている場合には）、スレッドは待機を続ける。そうでなければ、残りの要求は中止され、制御はアプリケーヨンに戻る。
【００３８】
最後に、ステップ２１１において、スレッドが待機するところの全ての要求が結果を返すと、結果はスタブに定められるフォーマットに処理され、アプリケーションに戻される。ある実施において、１度に１ローの結果はアプリケーションに連続送信される。
【００３９】
（ノードとコンテナ間の１対１マッピング）
図２に関して説明されるアプローチは、強力かつ柔軟であり、多様な異なる呼び出し方針を処理することができる。たとえば、最も単純な事例のひとつは、ノードと、リレーショナルデータベース１０９外部の各関数のデータとの間に１対１マッピングのある環境である。すなわち、各ノード１０３および１０５は、プログラミングインターフェースレジストリ１１１に、ファイルシステム内（たとえば、スレッドが初期化されている場合は環境設定ファイルを介して）の特定の場所の、特定のデータ本体もしくはデータコンテナにアクセスするようコード化された関数を実行可能であるものとして登録されている。この場合、スタブ関数１１３は、ＳＱＬクエリで供給される引数で関数を実行するよう登録された全てのノードのデーモン１１５に、コマンドを送信する。具体的には、コンピュータクラスター上で並列実行される関数は、所与のパターンを検索し、所定の編集距離内にパターンを含む一連のシーケンス番号をローとして返す関数である。
【００４０】
【数３】
2007513426.tif 000005
【００４１】
パターン「ＡＣＧＴＡＴ」を含むシーケンスに対する全ての引用を決定するには、この実施例において、ユーザーは次のクエリをデータベースサーバ１０７に発行する。
【００４２】
【数４】
2007513426.tif 000006
【００４３】
それに応じて、データベースサーバ１０３は、プログラミングインターフェースレジストリ１１１内の「ｄｎａ＿ｍａｔｃｈ  ｆｕｎｃｔｉｏｎ」に登録された全てのノードに、「ＡＣＧＴＡＴ」をパラメータとして、リモートプロシージャコール（ＲＰＣ）を発行するスタブ１１３を呼び出す。計算プログラム１１７の「ｄｎａ＿ｍａｔｃｈ」関数のそれぞれの実施は、シーケンスをそのファイルシステム１１９内に配置すること、および引用テーブルと結合されるシーケンス識別子を戻すことに関与する。
【００４４】
（ノードとデータコンテナ間の非全単射マッピング）
先の事例はノードとデータコンテナ間の、１対１もしくは全単射マッピングを特徴とした。しかし、一実施形態は、非全単射マッピングもしくは「ｍ」ノードと「ｎ」データコンテナ間の「ｍ−ｔｏ−ｎ」マッピングをサポートできる。非全単射マッピングは、いくつかのノードが、たとえばＮＦＳ（ネットワークファイルシェアリング）を介して、同一のデータコンテナのうちの少なくともいくつかへのアクセスをシェアする場合に可能である。この場合、追加的な潜在パラメータが、計算プログラム１１７を実行する各スレッドに渡され、スレッドが処理を必要としていることをデータコンテナに知らせる。データベースサーバ１０７はデータコンテナの構造を解釈できる必要はなく、データベースサーバ１０７はいかにデータコンテナを特定するか（たとえば、ファイルシステム１１９内のパス名で）、またいかに各関数についてノードをコンテナにマッピングするかを知る必要がある。このようなマッピングテーブルは、表１に示すように、プログラミングレジストリ１１１、リレーショナルデータベース１０９、または他の場所に格納されてよい。
【００４５】
【表１】
2007513426.tif 000007
【００４６】
表１のマッピングの各ローは、外部関数（たとえば、「ｄｎａ＿ｍａｔｃｈ」もしくは「ｐｒｏｔｅｉｎ＿ｍａｔｃｈ」）を、外部関数を実行できるノード（たとえば、Ｄｌｓｕｎ１、Ｄｌｓｕｎ２、またはＤｌｓｕｎ３）、およびノードが扱うことができるデータコンテナに関連付ける。したがって、Ｄｌｓｕｎ１は１つのデータコンテナに対し１つの関数しか扱えないが（Ｘ：／ｄｉｓｋ０２／ｓｅｑｕｅｎｃｅ．ｄａｔ上の「ｄｎａ＿ｍａｔｃｈ」）、ノードＤｌｓｕｎ１は、２つの異なるコンテナに対して「ｄｎａ＿ｍａｔｃｈ」の呼び出しを、そして他の２つの異なるコンテナに対して「ｐｒｏｔｅｉｎ＿ｍａｔｃｈ」の呼び出しを扱うことができる。外部関数、たとえば、「ｄｎａ＿ｍａｔｃｈ」が呼び出されると、処理される必要のある一連のデータコンテナが決定され（たとえば、Ｘ：／ｄｉｓｋ０１／ｓｅｑｕｅｎｃｅ．ｄａｔとＸ：／ｄｉｓｋ０２／ｓｅｑｕｅｎｃｅ．ｄａｔ）、データコンテナに割り当てられたノードが、ノード上の負荷、所望の並列度、キャッシュの局所性（スレッドがキャッシュした任意のデータを再利用できるよう、同一の関数を数回、同一のノード上で実行することが望ましい）などの基準に基づきコホートに選択される。
【００４７】
（属性による枝刈り）
現段階では、データベースサーバ１０７は、関数を実行するにあたり、データコンテナを「枝刈り」していない、すなわち、要求を満たすために実際に検索される必要のあるデータコンテナの数を減らしていない。いくつかのコンテナは、クエリに応答するためにアクセスされる必要はなく、データコンテナ上の不経済な検索やその他の操作を防ぐことが望ましい。この実施例において、枝刈りは外部関数の実施者によってなされてよい。たとえば、外部関数に対する引数は、ファイルヘッダを見ることで、あるデータコンテナがローを返さないことを素早く（たとえばＯ（１）時間）決定するのに用いられてよい。たとえば、ｄｎａ＿ｍａｔｃｈがＥ．ｃｏｌｉのシーケンス上でのみ求められている場合、Ｅ．ｃｏｌｉ引数はクエリで以下のように特定される。
【００４８】
【数５】
2007513426.tif 000008
【００４９】
表１に与えられたセットアップ、ノードＤｌｓｕｎ１上の「ｄｎａ＿ｍａｔｃｈ」関数が、ｄｎａ＿ｍａｔｃｈ（コンテキスト、「ｘ／ｄｉｓｋ０１／ｓｅｑｕｅｎｃｅ．ｄａｔ」、「ＡＣＧＴＡＴ」、「Ｅ．ｃｏｌｉ」）として呼び出されてよいと仮定すると、「ｄｎａ＿ｍａｔｃｈ」関数は、データコンテナに対する「ｘ：／ｄｉｓｋ０１／ｓｅｑｕｅｎｃｅ．ｄａ」ファイルのヘッダが、シーケンスがどれもＥ．ｃｏｌｉに対するものでないことを示すならば、すぐに戻る。しかし、データベースサーバ１０７が、デーモン１１５にノード上に関数を呼び出すコマンドを送るより前に、データコンテナを除去することが望ましい。１つの解決法は、各データコンテナを、データベースサーバ１０７がＳＱＬクエリに依存するコンテナを除去するのに用いることができる、いくつかのユーザー定義の属性に関連付けることである。たとえば、コンテナマッピングに対するこの関数は、表２に示される「ｓｅｑｕｅｎｃｅ＿ｔｙｐｅ」と呼ばれる追加の属性を用いることができる。
【００５０】
【表２】
2007513426.tif 000009
【００５１】
この実施例において、コンテナは、以下のクエリのＷＨＥＲＥ節内の追加の述語によって枝刈りされる。
【００５２】
【数６】
2007513426.tif 000010
【００５３】
このフィルタリング機構により、すべてのＳＱＬオペレータは属性タイプによりサポートされる。
【００５４】
（パラメータのフィルタリング）
属性レベルフィルタリング機構が充分に柔軟でないことがあり得る。このような場合には、ユーザー定義の分割関数が各関数に関連付けられてよい。この関数は、デーモン１１５を呼び出す前に呼び出され、クエリに応答するためにアクセスされる必要がある一連のデータコンテナを決定する。分割関数はデータベースサーバ１０７のコンテキスト内で実行し、並列化される必要はない。分割関数のシグネチャーは、これが一連のコンテナを返すこと以外は、実行される関数と同一である。たとえば、
【００５５】
【数７】
2007513426.tif 000011
【００５６】
パラメータの第１のリストは、関数自身のパラメータと同一であり（この特定の実施例においては、唯一のパラメータ「ｐａｔｔｅｒｎ」しかない）、属性名および値は、ＷＨＥＲＥ節内で特定された値に依存するデータベースサーバ１０７によって成立する。ユーザーが与えた「ｄｎａ＿ｍａｔｃｈ＿ｐａｒｔｉｔｉｏｎ」関数は、属性名および属性値を用いてコンテナをＯＵＴパラメータとしてポピュレートし、次にそれらはコホートを決定するべくスタブプログラム１１３によって用いられ、各デーモン１１５を呼び出す。
【００５７】
（ＷＨＥＲＥ節条件）
データコンテナ枝刈りに必要なものに加え、ＷＨＥＲＥ節条件を並列関数に渡すことがさらに望ましい。たとえば、ユーザーは、ＳＱＬのＷＨＥＲＥ条件に「編集距離」を補うことを望んでよい。このＷＨＥＲＥ節はコンテナを枝刈りするのには用いられないが、一連の結果にフィルターをかける時、もしくはそれ自身の実行中に用いられるべく、並列関数に渡される。したがって、検索を他のテーブルに記録されたｅｄｉｔ＿ｄｉｓｔａｎｃｅに限定するためには、次のクエリが用いられてよい。
【００５８】
【数８】
2007513426.tif 000012
【００５９】
「ｓｅｑｕｅｎｃｅ＿ｔｙｐｅ」および「ｓｅｑｕｅｎｃｅ＿ｄａｔｅ」は、上のパラメータ枝刈りの事例で説明したように、データコンテナ枝刈り条件であり、並列外部関数には渡されない。一方「ｅｄｉｔ＿ｄｉｓｔａｎｃｅ」条件は、潜在ＷＨＥＲＥ節コンテキストとして、外部関数に渡される。これらＷＨＥＲＥ節条件はスカラーデータタイプに限定されるのが望ましい。そうでなければ、もしＷＨＥＲＥ節が他のローソースとの接合に含まれるならば、データベースサーバ１０７はＷＨＥＲＥ節基準を外部関数に連続送信する必要があり、並列外部関数の実施を著しく複雑なものにする。さらに、ＷＨＥＲＥ節コンテキストは、外部関数が一連のローをＦＲＯＭ節内のテーブル関数として返す場合にのみ、並列外部関数に渡される。
【００６０】
（物理的ノード内の複数のスレッド）
上記で説明された分割方法は、物理的ノード内の複数のスレッドに適合するよう、容易に拡張される。物理的ノードが所与の関数に対してＮスレッド数まで実行することができる場合、ノードは、スレッド間の作業を分割する時に、Ｎ論理ノードとして、もしくは仮想処理装置として扱われてよい。コホート内通信（すなわち、関数を実行するリーフレベルスレッド間の通信）がないか、データベースコントロール外のコホート内通信がないか、であるため、データベースサーバ１０７は同一の物理的ノード上にスレッドを配置するよう試みる必要がない。スレッドおよびノードの選択は、データコンテナへのアクセス、物理的ノード上の負荷などの、上で説明されたその他のパラメータに基づく。
【００６１】
（ハードウェア概観）
図３は、本発明による実施形態が実施されるところのコンピュータシステム３００を説明する。コンピュータシステム３００は、バス３０１もしくはその他の情報を通信する通信機構と、バス３０１に連結され情報を処理する処理装置３０３を含む。コンピュータシステム３００はまた、バス３０１に連結されて処理装置３０３に実行されるべき情報や指示を格納する、ランダムアクセスメモリ（ＲＡＭ）やその他のダイナミック記憶装置などのメインメモリ３０５を含む。メインメモリ３０５はまた、一時的な変数もしくはその他の処理装置３０３による指示の実行中の中間情報を格納するのにも用いられる。コンピュータシステム３００はさらに、読み取り専用メモリ（ＲＯＭ）３０７もしくはその他の、バス３０１に連結されて処理装置３０３に対する静的情報および指示を格納する、静的記憶装置を含んでよい。磁気ディスクもしくは光ディスクなどの記憶装置３０９は、バス３０１に連結され、情報および指示を絶え間なく格納する。
【００６２】
コンピュータシステム３００は、バス３０１を介して、ブラウン管（ＣＲＴ）、液晶ディスプレイ、動的マトリクスディスプレイ、またはプラズマディスプレイなどのディスプレイ３１１に連結され、コンピュータのユーザーに対する情報を示している。英数字やその他のキーを含むキーボードなどの入力装置３１３がバス３０１に連結されて、処理装置３０３に対して情報およびコマンド選択を通信する。その他のタイプのユーザー入力装置は、マウス、トラックボール、カーソル方向キーなどのカーソルコントロール３１５であり、方向情報およびコマンド選択を処理装置３０３に通信し、ディスプレイ３１１上のカーソル動作をコントロールする。
【００６３】
本発明の一実施形態によれば、複数のノードにわたる複雑計算の統合は、メインメモリ３０５に含まれる指示の配置を実行する処理装置３０３に応えて、コンピュータシステム３００によって提供される。これらの指示は、記憶装置３０９などその他のコンピュータ読み取り可能な媒体から、メインメモリ３０５に読み込まれることができる。メインメモリ３０５に含まれる指示の配置の実行は、処理装置３０３をして、ここに説明される処理ステップを行わせる。多重処理配置内の１以上の処理装置は、メインメモリ３０５内に含まれる指示を実行するのに用いられてもよい。代替的な実施形態において、ハードワイヤードの回路は、ソフトウェア指示の代わりに、もしくは一緒に用いられて、本発明の実施形態を実施してもよい。その他の実施例において、その論理ゲートの機能性および接続形態がランタイムでカスタマイズ可能であるところの、フィールドプログラマブルゲートアレー（ＦＰＧＡｓ）などの再構成可能なハードウェアが、通常はメモリルックアップテーブルをプログラムすることで用いられてもよい。したがって、本発明の実施形態は、ハードウェア回路およびソフトウェアのある特定の組み合わせに限定されるものではない。
【００６４】
コンピュータシステム３００はまた、バス３０１に連結される通信インターフェース３１７を含む。通信インターフェース３１７は、ローカルネットワーク３２１に接続されたネットワークリンク３１９に両方向データ通信結合を提供する。たとえば、通信インター
フェース３１７はデジタルサブスクライバライン（ＤＳＬ）カードもしくはモデム、総合デジタル通信網（ＩＳＤＮ）カード、ケーブルモデム、電話モデム、または任意のその他の、対応するタイプの通信線にデータ通信接続を提供する通信インターフェースであってよい。その他の実施例として、通信インターフェース３１７は、データ通信接続を互換性のあるＬＡＮに提供するローカルエリアネットワーク（ＬＡＮ）カード（たとえば、イーサネット（登録商標）もしくは非同期転送モデル（ＡＴＭ）ネットワークに対して）でよい。ワイヤレスリンクもまた実施されてよい。これらの任意の実施において、通信インターフェース３１７は、多様なタイプの情報を表すデジタルデータストリームを運ぶ、電気、電磁気、または光学の信号を送受信する。さらに、通信インターフェース３１７は、ユニバーサルシリアルバス（ＵＳＢ）インターフェース、ＰＣＭＣＩＡ（ＰＣメモリーカード国際協会）インターフェースなどの周辺インターフェース装置を含んでよい。図３では単一の通信インターフェース３１７が示されているが、複数の通信インターフェースもまた用いることができる。
【００６５】
ネットワークリンク３１９は一般的に、他のデータ装置との１以上のネットワークを介してデータ通信を提供する。たとえば、ネットワークリンク３１９はローカルネットワーク３２１を介して、ネットワーク３２５（たとえば、ワイドエリアネットワーク（ＷＡＮ）もしくは現在一般的に「インターネット」と呼ばれるグローバルパケットデータ通信ネットワーク）への、もしくはサービス提供者により操作されるデータ装置への接続性を有するホストコンピュータ３２３への通信を提供してもよい。ローカルネットワーク３２１およびネットワーク３２５はどちらも電気、電磁気、もしくは光学の信号を用いて情報および指示を伝達する。多様なネットワークを通る信号、ネットワークリンク３１９上の、および通信インターフェース３１７を通る、デジタルデータをコンピュータシステム３００に通信する信号は、情報および指示を運ぶ搬送波の典型的な形状である。
【００６６】
コンピュータシステム３００は、メッセージを送信し、ネットワーク、ネットワークリンク３１９、および通信インターフェース３１７を介して、プログラムコードを含むデータを受信することができる。インターネットの実施例において、サーバ（図示されない）は、本発明の一実施形態を実施するべく、ネットワーク３２５、ローカルネットワーク３２１および通信ターフェース３１７を介して、アプリケーションプログラムに属する要求されたコードを伝えるかもしれない。処理装置３０３は、伝えられたコードが受信されると同時にそれを実行し、および／もしくはコードを記憶装置３０９、もしくは後ほど実行するべくその他の不揮発性記憶装置に格納してよい。このように、コンピュータシステム３００は、搬送波の形状でアプリケーションコードを取得できる。
【００６７】
ここで用いられる「コンピュータ読み取り可能な媒体」の用語は、処理装置３０５に実行するための指示を提供するのに参加する任意の媒体を呼ぶものである。このような媒体は、不揮発性媒体、揮発性媒体および伝送媒体を含む多くの形状を取ることができるが、これに限定されるものではない。不揮発性媒体は、たとえば、記憶装置３０９などの光学もしくは磁気ディスクを含む。揮発性媒体は、メインメモリ３０５などのダイナミックメモリを含む。伝送媒体は、バス３０１を構成する線を含む、同軸ケーブル、銅線、および光ファイバーを含む。伝送媒体はまた、無線周波（ＲＦ）および赤外線の（ＩＲ）データ通信で発生するような、音響の光学波もしくは電磁波の形状を取ることができる。コンピュータ読み取り可能な媒体の共通の形は、たとえば、フロッピー（登録商標）ディスク、フレキシブルディスク、ハードディスク、磁気テープ、任意のその他の磁気媒体、ＣＤ-ＲＯＭ、ＣＤＲＷ、ＤＶＤ、任意のその他の光学媒体、パンチカード、紙テープ、光学マークシート、穴パターンもしくはその他の光学的に認識可能な印を有する任意のその他の物理媒体、ＲＡＭ、ＰＲＯＭ、およびＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、任意のその他のメモリチップもしくはカートリッジ、搬送波、もしくはコンピュータがそこから読み取り可能な任意のその他の媒体を含む。
【００６８】
コンピュータ読み取り可能な媒体の多様な形状は、処理装置に実行するための指示を提供することに関与してよい。たとえば、本発明の少なくとも一部を実行するための指示は、最初は、リモートコンピュータの磁気ディスク上にあってよい。このようなシナリオにおいて、リモートコンピュータは指示をメインメモリにロードし、モデムを用いて電話線を介してそれを送信する。ローカルコンピュータシステムのモデムは、電話線上のデータを受信し、赤外線送信機を用いてデータを赤外線信号に変換し、赤外線信号を、パーソナルデジタルアシスタント（ＰＤＡ）もしくはラップトップなどの、ポータブルコンピュータデバイスに転送する。ポータブルコンピュータデバイス上の赤外線検知器は、赤外線信号が持つ情報および指示を受信し、データをバス上に配置する。バスはデータをメインメモリに搬送し、そこから処理装置が指示を取り出し実行する。メインメモリに受信された指示は、処理装置による実行の前もしくは後に、記憶装置に任意で格納されてもよい。
【００６９】
本発明は多数の実施形態および実施に関連付けて説明されたが、本発明はこれらに限定されるものではなく、添付の請求の範囲の範囲内で、多様な明白な改良および同等の配置を網羅するものである。
【図面の簡単な説明】
【００７０】
【図１】本発明の一実施形態を配置することができる異種環境を示す図である。
【図２】本発明の一実施形態の操作を示すフローチャートである。
【図３】本発明の一実施形態を実施するのに用いられるコンピュータシステムを示す図である。
【図１】
2007513426.tif 000013
【図２】
2007513426.tif 000014
【図３】
2007513426.tif 000015
【手続補正書】
【提出日】平成18年9月11日(2006.9.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のノードの各ノードにおいて、データベースシステムから受信したコマンドに応えて計算を行うプログラムをスタートさせるよう構成された対応する処理を実行し、各プログラムは複数のノードの前記各ノードの任意のデータベースシステムの外部で実行することと、
データベースシステムにおいて、データベースシステム内のデータベースサーバにサポートされるデータベース言語に適合するステートメントを受信し、ステートメントは計算を行う外部ルーチンを特定し、前記ステートメントは複数のノードのどのノードが計算を行うことに参加するかを指示しないことと、
ステートメントを受信することに応えて、
計算を行う複数のコマンドを、前記各対応する処理に同時に送ることと、
前記各対応する処理から結果を受信することと、
前記各対応する処理から受信した結果に基づいて、ステートメントの処理を終了することと、から構成される、複数のノードで計算を統合する方法。
【請求項２】
データベースシステムにおいて、データベースシステム内のデータベースサーバにサポートされるデータベース言語に適合するステートメントを受信し、ステートメントは計算を行う外部ルーチンを特定し、前記ステートメントは複数のノードのどのノードが計算を行うことに参加するかを指示しないことと、
ステートメントを受信することに応えて、
計算を行う複数のコマンドを、コマンドに応えて計算を行う複数の各プログラムをスタートするよう構成された複数の各処理に送信し、各処理のそれぞれは前記各プログラムと同一のノードの任意のデータベースシステムの外部で実行することと、
前記各処理のそれぞれから結果を受信することと、
前記各処理のそれぞれから受信した結果に基づいて、ステートメントの処理を終了することと、から構成される、複数のノードで計算を統合する方法。
【請求項３】
計算を行うことのできる複数のノードからノードのコホートを決定することからさらに構成され、複数の各処理はノードのコホートに対応することを特徴とする、請求項２に記
載の方法。
【請求項４】
複数のノードは、ノードのコホートに含まれない少なくとも１つのノードを含むことを特徴とする、請求項３に記載の方法。
【請求項５】
前記決定することは、複数のノードの各ノードにサポートされる並列度に基づくことを特徴とする、請求項３に記載の方法。
【請求項６】
前記複数のノードの各ノードで実行される各処理のそれぞれは、前記データベースシステムから受信されたコマンドに応えて計算を行うプログラムをスタートするよう構成されることを特徴とし、
プログラムとデータコンテナの間の関連付けを特定するレジストリにアクセスすることからさらに構成され、
前記決定することは、プログラムとデータコンテナの間の関連付けに基づくことを特徴とする、請求項３に記載の方法。
【請求項７】
データコンテナに対する各属性を特定するレジストリにアクセスすることからさらに構成され、
前記決定することは、データコンテナに対する各属性をステートメントのパラメータに適合させることに基づくことを特徴とする、請求項３に記載の方法。
【請求項８】
プログラムおよびデータコンテナに関連付けられた分割関数を特定するレジストリにアクセスすることからさらに構成され、
前記決定することは、プログラムおよびデータコンテナに関連付けられた分割関数を実行した結果に基づくことを特徴とする、請求項３に記載の方法。
【請求項９】
同時に送信し、結果を受信し、処理を終了するステップは、前記データベースシステムによって行われることを特徴とする、請求項１に記載の方法。
【請求項１０】
前記複数のノードのうち少なくとも１つは、前記データベースシステムと異なるタイプのハードウェア、オペレーションシステムソフトウェア、もしくはアプリケーションソフトウェアを用いて実施されることを特徴とする、請求項１に記載の方法。
【請求項１１】
前記複数のノードの各ノードで実行される対応する処理は、前記データベースシステムから受信されたコマンドに応えて計算を行うプログラムをスタートするよう構成されたことを特徴とする、請求項１に記載の方法。
【請求項１２】
前記各対応する処理は、プログラムに、データコンテナ上で計算を行うよう指示することを特徴とする、請求項１に記載の方法。
【請求項１３】
複数のコマンドを送信し、結果を受信し、処理を終了するステップは、前記データベースシステムによって行われることを特徴とする、請求項２に記載の方法。
【請求項１４】
複数の各処理のそれぞれは複数のノードのうちの１つで実行し、前記複数のノードの少なくとも１つは、前記データベースシステムとは異なるタイプのハードウェア、オペレーションシステムソフトウェア、もしくはアプリケーションソフトウェアを用いて実施されることを特徴とする、請求項２に記載の方法。
【請求項１５】
各処理のそれぞれは、前記コマンドに応えて計算を行うプログラムをスタートするよう構成されたことを特徴とする、請求項２に記載の方法。
【請求項１６】
前記各処理のそれぞれは、プログラムに、データコンテナ上で計算を行うよう指示することを特徴とする、請求項２に記載の方法。
【請求項１７】
各処理のそれぞれによってスタートされる、少なくともいくつかのプログラムが、並列に実行することを特徴とする、請求項１５に記載の方法。
【請求項１８】
計算を統合する指示を持つコンピュータ読み取り可能な媒体で、前記指示は、請求項１から１７のいずれかに記載の方法を行う１以上の処理装置による実行があり次第、配置される。
【国際調査報告】
2007513426.tif 000016
2007513426.tif 000017