(57)【要約】【課題】本発明は、データベース・クエリのワークフローの計算集中的な部分を送出して付属の高パフォーマンス並列コンピューティング・プラットフォーム上で実行するシステムおよび方法に関する。【解決手段】必要なデータおよび結果を、データベース・プラットフォームと、ワークロードが実行される高パフォーマンス・コンピューティング・プラットフォームとの間で移動させるためのパフォーマンス・オーバーヘッドは、いくつかの方法によって償却され、これは例えば以下のことによる：    ・計算集中的な計算を高速化するために、並列コンピューティング・プラットフォーム上での細粒度並列処理および優れたハードウェア・パフォーマンスを生かすこと、    ・同じデータに対するタイム・ラグのある一連のクエリを、さらなるデータ転送オーバーヘッドなしで処理可能なように、こうしたクエリの間でデータ・セットをキャッシュするべく、並列コンピューティング・プラットフォーム上でインメモリ・データ構造を用いること、    ・同じターゲット・データ・セットに対する複数の独立したクエリを、高パフォーマンス・コンピューティング・プラットフォームの独立した並列パーティションを用いて同時に処理可能なように、並列コンピューティング・プラットフォーム内でデータを複製すること。  本発明の特定の実施形態は、イーサネット・ローカル・エリア・ネットワークを介して並列スーパーコンピュータに接続されたデータベース・システム上でスミス−ウォーターマン・アルゴリズムを用いる、遺伝子およびタンパク質の配列照合を伴うバイオインフォマティクス・アプリケーションを展開するために用いられた。【選択図】図１
2010539594.tif 000002
【特許請求の範囲】
【請求項１】
（ｉ）高パフォーマンス並列コンピューティング（ＨＰＣ）プラットフォームと、
（ｉｉ）汎用データベース・プラットフォームと、
（ｉｉｉ）前記データベース・プラットフォーム上の１つ以上のクエリのワークフローの一部を構成する、計算集中的なユーザ定義ワークロードおよび対応するデータ・ビューを、前記ＨＰＣプラットフォーム上で実行されるよう送出する手段と、同時に、
（ｉｖ）前記ＨＰＣプラットフォーム上で実行された前記ワークロードからの複数結果を前記データベースのクエリの最終的な結果セットに組み入れるために、これらの結果を前記データベース・プラットフォームへ返す手段と、
を含むコンピュータ・システム。
【請求項２】
前記高パフォーマンス並列コンピューティング・システムは、前記送出される計算集中的なワークロードを、前記ワークロードが単一のクエリ、または類似もしくは関連する一連のクエリ、または独立した同時のクエリのセットから成る場合に効率の高い形で実行可能なように、処理ユニットおよび高速メモリの点でより大きなコンピュータ計算リソースを展開することができる、請求項１に記載のシステム。
【請求項３】
前記高パフォーマンス並列コンピューティング・システムは、共有メモリまたは分散型メモリ・メッセージ・パッシング・アプリケーションの並列実行をサポートし、その結果、データベースに組み込まれたユーザ定義プログラムに関して通常は直接サポートされていないプログラミング・モデルをサポートする、請求項２に記載のシステム。
【請求項４】
前記高パフォーマンス並列コンピューティング・システムは、その大きなメモリ利用可能性を、より高速なコンピュータ計算処理のためにテーブル・データを（これをディスク・システムから読み取るのとは対照的に）インメモリ構造内にキャッシュするため、ならびに、新たなクエリ呼び出しそれぞれに関して、前記データベース・サーバと、前記高パフォーマンス並列コンピュータ・システムとの間でデータをさらにやり取りする必要なく、同じデータ・テーブルに対する一連のクエリによって生じる一連の計算集中的なワークロードを効率的に実行可能にするために、利用することができる、請求項２に記載のシステム。
【請求項５】
前記高パフォーマンス並列コンピューティング・システムは、前記データベース・サーバ上の独立した同時の並列クエリの対応するセットから発生する、独立した同時の計算集中的ワークロードのセットを、同じデータ・テーブルのさらなるコピーを得るために前記データベース・サーバに戻る必要性が原因で必要となる大きな通信オーバーヘッドなしで効率的に実行できるように、前記データベースのデータの高速レプリカを作成することができる、請求項２に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全般的に、データベース処理のパフォーマンス向上に関し、特に、クエリ・ワークフローの計算集中的な（ｃｏｍｐｕｔｅ−ｉｎｔｅｎｓｉｖｅ）部分を送出して付属の高パフォーマンス並列コンピュータ（ＨＰＣ：ｈｉｇｈ−ｐｅｒｆｏｒｍａｎｃｅ  ｐａｒａｌｌｅｌ  ｃｏｍｐｕｔｅｒ）システム上で実行することによって、計算集中的なデータベース・クエリを高速化するシステムおよび方法に関する。
【背景技術】
【０００２】
本発明は、クエリ・ワークフローの、関連した計算集中的な部分を送出して、付属の高パフォーマンス並列コンピュータ（ＨＰＣ）システム上で実行することによって、データベース・クエリを高速化するシステムおよび方法に関する。
【０００３】
本発明は、取引処理、オンライン解析およびデータ・ウェアハウジングのアプリケーションに従来用いられてきた商用データベースが、テキスト、イメージおよびマルチメディアなどの様々な複合データ型（ｃｏｍｐｌｅｘ  ｄａｔａ  ｔｙｐｅｓ）の格納、クエリ、分析に用いられることが増えているということへの注目が動機となっている。商用データベースは、科学機器からの生のイベント・ストリームを処理するため、または高パフォーマンス・コンピュータ・シミュレーションからの未処理の結果セットを格納するためにも、用いられることが増えている（Ｊ．ベクラ（Ｂｅｃｌａ）およびＤ．Ｌ．ウォン（Ｗｏｎｇ）、「Ｌｅｓｓｏｎｓ  Ｌｅａｒｎｅｄ  Ｆｒｏｍ  Ｍａｎａｇｉｎｇ  ａ  Ｐｅｔａｂｙｔｅ」、Ｃｏｎｆｅｒｅｎｃｅ  Ｏｎ  Ｉｎｎｏｖａｔｉｖｅ  Ｄａｔａ  Ｓｙｓｔｅｍｓ  Ｒｅｓｅａｒｃｈ、アシロマール（Ａｓｉｌｏｍａｒ）ＣＡ（２００５年）を参照のこと）。
【０００４】
複合データ型としてデータベース内に格納されたこの生データを用いる関連した分析は、単純なアーカイブおよび読み出しの範囲を超えて、高レベルのセマンティック・クエリおよび探索、コンテンツ・ベースの索引付け、高度なデータ・モデリング、データ・マイニング解析、およびコンピュータ支援設計など、このデータを有する様々な外部アプリケーションにわたって広く有用な、いくらかの計算集中的な演算およびデータ変換を含むことが多い。この計算集中的な演算およびデータ変換は、データベース・エクステンダ（ｄａｔａｂａｓｅ  ｅｘｔｅｎｄｅｒ）内の組み込みプログラムとして実装することができ、この組み込みプログラムは、生の複合データ型の、高度な外部アプリケーションに適した表現への必要な変換を提供する、こうした複合データ型に関するユーザ定義ストアド・プロシージャまたはユーザ定義関数の集合から成る。結果として、この組み込みのデータベース・エクステンダ（当業者により実装可能である）は、この変換を呼び出すために、外部アプリケーション開発者が熟知している集合指向の、すなわちＳＱＬベースの構文法およびクエリ・インターフェースを用いて、こうした複合データ型をそのアプリケーションにおいて用いるための関連性のある機能性および変換を、外部アプリケーションの開発者に提供する。さらに、生データのより圧縮された表現が提供されることが理由で、またはクライアント・アプリケーションへのデータ送信の前にデータベース・サーバ自体で生データの十分なプレフィルタリングが行われることで、組み込みのユーザ定義プログラムを用いると、データベース・サーバからの生データを、ネットワークをわたってクライアント・アプリケーションへ移動させるオーバーヘッドが軽減されることが多い。最後に、組み込みのユーザ定義プログラムは、外部アプリケーションでのコピーも共有も必要とされない、生データに対する「オブジェクトのような」インターフェースを提供することによって、データベース内で生データのプライバシ、完全性および一貫性を確保し易くする。
【０００５】
しかし、上記の利点はあるものの、計算集中的なユーザ定義プログラムをデータベース・サーバ上で実行するための関連の処理要件は極めて多きくなる可能性があり、現在この側面は、従来のデータベース・パフォーマンス・ベンチマークにおいても、汎用データベース・サーバ・システムのハードウェア・プラットフォームの設計およびサイジングにおいても、まれにしか対処されていない。
【０００６】
大規模商用データベース・システムは、典型的に、共有メモリ・マルチプロセッサまたはネットワーク・クラスタ化コンピュータ・プラットフォーム上でホストされる。こうしたプラットフォームでは、内在する並列処理は通常、クエリ・オプティマイザによって生成される並列クエリ・プランの実行を調整するデータベース・コントローラ・ソフトウェアにのみ公開されており、それに伴い、この内在する並列処理は典型的に、いかなるアプリケーション・ソフトウェアにも組み込みのユーザ定義プログラムにも公開されない。場合によっては、ユーザ定義関数の実行は、クエリ・オプティマイザによって生成される並列クエリ・プランに暗黙的にピギーバックして、クエリ実行のスケジューリングのマルチスレッディングまたはデータ分割並列処理を活用することができる。しかし、多くの場合商用データベースは、デフォルトの制限を加えるか、または多数の種類のユーザ定義関数のこのような暗黙的並列実行を明示的に無効にしさえする。例えば、並列実行に関するデフォルトの制限は、繰り返しの関数呼び出しの間に情報を格納するためにスクラッチパッド・メモリを用いるユーザ定義関数、ファイル入出力動作などの外部アクションを実行するユーザ定義関数、もしくは非決定性実行を伴うユーザ定義関数（すなわち、関数が同じ入力に対して異なる出力値を返す可能性があるものであり、乱数発生器が例である）に対して、または、各関数呼び出しにおいて複数行の値を返すユーザ定義テーブル関数に対して適用されることが多い（特定の商用データベースにおけるこうしたデフォルトの制限の詳細な説明については、Ｄ．チェンバリン（Ｃｈａｍｂｅｒｌｉｎ）、「Ａ  Ｃｏｍｐｌｅｔｅ  Ｇｕｉｄｅ  ｔｏ  ＤＢ２  Ｕｎｉｖｅｒｓａｌ  Ｄａｔａｂａｓｅ」、モルガン・カウフマン（Ｍｏｒｇａｎ−Ｋａｕｆｍａｎ）、サンフランシスコ（Ｓａｎ  Ｆｒａｎｃｉｓｃｏ）、１９９８年の第６章を参照のこと）。さらに、こうしたデフォルトの制限は、暗黙的並列実行において「安全な」シリアル・セマンティクスが保たれる特定の場合にはプログラマによってオーバーライド可能であるが、こうしたユーザ定義プログラムの実行に使用可能な並列処理のレベルは、たとえアプリケーションがはるかに高いレベルの粒度で並列処理を利用することができるとしても、共有メモリ・プラットフォーム上のスレッドの最大数または分散型クラスタ・プラットフォームにおけるデータ・パーティションもしくはプロセッサの最大数を指定するデータベース・プラットフォームの事前設定パラメータによって制限される。さらに、こうしたデータベース設定パラメータが、基礎をなすハードウェア・プラットフォームによりサポートされる最大値にセットされることもあるとはいえ、この範囲内でも、個々のデータベース・アプリケーションそれぞれに最適な並列粒度は、並列調整のレベル、同期化、ロード・バランス、および各アプリケーション内でのデータ移動を含む複数ファクタの複雑な相互作用によって決まるものであり、データベース・サーバ上で実行されるすべてのアプリケーションに最適な単一のグローバル・セッティングがある見込みはない。最後にこのシナリオでは、単一のアプリケーションに関してでさえ���、既存のハードウェア並列処理によって課される制限を超えてデータベース・パフォーマンスを改善するためには、データベース・プラットフォーム全体の全般的かつ高価な改良が必要となる。
【０００７】
したがって、要約すれば、既存の商用データベース・システムは、内在する制御またはデータ並列処理を、クエリ処理エンジンおよびデータベース・コントローラにしか公開しない。こうしたデータベース・システムは、汎用の並列ユーザ定義ストアド・プロシージャおよびユーザ定義関数を書くため、または個々のアプリケーションのスケーラブル・パフォーマンスをケース・バイ・ケースで、データベース・プラットフォームの事前設定された限界の範囲内で、もしくはそれを逸脱して調整するための、特定のアプリケーション・プログラミング・インターフェース（ＡＰＩ：ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍｍｉｎｇ  ｉｎｔｅｒｆａｃｅ）を提供しない。
【０００８】
より一般的なデータベース・サーバ・プラットフォーム内での専用ハードウェア・アクセラレータの使用に基づいて、データベースのクエリ処理パフォーマンスを改善する提案が多数されてきた。例えば、Ｋ．Ｃ．リー（Ｌｅｅ）、Ｔ．Ｍ．ヒッキー（Ｈｉｃｋｅｙ）およびＶ．Ｗ．マク（Ｍａｋ）、「ＶＬＳＩ  Ａｃｃｅｌｅｒａｔｏｒｓ  ｆｏｒ  Ｌａｒｇｅ  Ｄａｔａｂａｓｅ  Ｓｙｓｔｅｍｓ」、ＩＥＥＥ  Ｍｉｃｒｏ、第１１巻、ｐ．８〜２０（１９９１年）は、データベース・クエリ・ワークロード（ｄａｔａｂａｓｅ  ｑｕｅｒｙ  ｗｏｒｋｌｏａｄ）からプロファイリング統計を収集して最もコストの高い演算を特定し、この特定の演算（連想探索および集約演算が含まれた）を処理するためにディスク・ストレージ・インターフェースとＣＰＵとの間のデータ経路において専用ＶＬＳＩハードウェア・フィルタを用いることを提案した。同様のアイデアが、Ｐ．フォードメイ（Ｆａｕｄｅｍａｙ）およびＭ．ムヒリ（Ｍｈｉｒｉ）、「Ａｎ  Ａｓｓｏｃｉａｔｉｖｅ  Ａｃｃｅｌｅｒａｔｏｒ  ｆｏｒ  Ｌａｒｇｅ  Ｄａｔａｂａｓｅｓ」、ＩＥＥＥ  Ｍｉｃｒｏ、第１１巻、ｐ．２２〜３４ならびにＭ．アブデルグエルフィ（Ａｂｄｅｌｇｕｅｒｆｉ）およびＡ．Ｋ．スード（Ｓｏｏｄ）、「Ａ  Ｆｉｎｅ−Ｇｒａｉｎ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ｆｏｒ  Ｒｅｌａｔｉｏｎａｌ  Ｄａｔａｂａｓｅ  Ａｇｇｒｅｇａｔｉｏｎ  Ｏｐｅｒａｔｉｏｎｓ」、ＩＥＥＥ  Ｍｉｃｒｏ、第１１巻、ｐ．３５〜４３において主張されている。テキスト指向データベース・アプリケーション、特にストリングおよびパターン照合に対するハードウェア・アクセラレータの使用が、Ｖ．Ｗ．マク（Ｍａｋ）、Ｋ．Ｃ．リー（Ｌｅｅ）およびＯ．フリーデル（Ｆｒｉｅｄｅｒ）、「Ｅｘｐｌｏｉｔｉｎｇ  Ｐａｒａｌｌｅｌｉｓｍ  ｉｎ  Ｐａｔｔｅｒｎ  Ｍａｔｃｈｉｎｇ：Ａｎ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｒｅｔｒｉｅｖａｌ  Ａｐｐｌｉｃａｔｉｏｎ」、ＡＣＭ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｓｙｓｔｅｍｓ、第９巻、ｐ．５２〜７４、１９９１年に記載されている。この手法のより最近の展開は、「アクティブ・ディスク」技術であり、これは、ディスク・コントローラ・インターフェースにて特別設計の回路に取って代わることが増えている汎用マイクロプロセッサを利用するものである（Ｅ．リーデル（Ｒｉｅｄｅｌ）、Ｃ．ファルートソス（Ｆａｌｏｕｔｓｏｓ）、Ｇ．Ａ．ギブソン（Ｇｉｂｓｏｎ）およびＤ．ネーグル（Ｎａｇｌｅ）、「Ａｃｔｉｖｅ  Ｄｉｓｋｓ  ｆｏｒ  Ｌａｒｇｅ−Ｓｃａｌｅ  Ｄａｔａ  Ｐｒｏｃｅｓｓｉｎｇ」、ＩＥＥＥ  Ｃｏｍｐｕｔｅｒ、第３４巻、ｐ．６８〜７４、２００１年）。この手法では、クエリ処理ワークロード（通常はデータベース・サーバのメインＣＰＵ上で実行されると考えられる）の一部が、ディスク・コントローラ・インターフェースのこうした個々のマイクロプロセッサにオフロードされる。この手法は、商用データベースで典型的に用いられるマルチディスク・システムのストレージ・インターフェースにて、はるかに高度な並列処理を活用し、データベース・クエリに関してストレージ・システム・インターコネクトを介してメインＣＰＵへ送信されるデータ量の十分なプレフィルタリングおよび削減を実現する。この方法でオフロード可能なワークロードの性質には制限があり、特に個々のディスク・コントローラが互いに通信しないことから、オフロードされるタスクは、その個別のデータ・ストリームに対する単純なデータ・フィルタリングおよび変換演算に限られる。要約すれば、組み込みのハードウェア・アクセラレータの使用は、単純なデータ型に対する単純な述語処理には非常に効果的となり得るが、それでも全体的な手法として、並列同期化および通信を必要とするより複雑な演算向けの柔軟性およびプログラム可能性を有しない。
【０００９】
上記の説明では、計算集中的な並列ユーザ定義プログラムを、パフォーマンスが制限されたデータベース・サーバではなく、分離した別個のＨＰＣプラットフォームで実行することができる発明の必要性を証明した。前述のように、非常に長い計算ではＨＰＣプラットフォーム上のコンピュータ計算のパフォーマンス・ゲインがデータベース・サーバとＨＰＣプラットフォームとの間のデータ移動のオーバーヘッドを大きく相殺または償却し得るとはいえ、こうしたデータ転送オーバーヘッドは、この手法での主要なパフォーマンス制限となる。この手法に対する１つの懸念は、一般的なデータベース・ユーザが、ＨＰＣプラットフォーム上で必要なプログラムを実行するために何らかの専門技能を必要とするかもしれないということである。さらにこの手法では、ユーザが、自動化されていないその場限りの手法を用いて、外部ＨＰＣプラットフォーム上の、必要な計算集中的演算を明示的にスケジュールしなければならないため、こうした並列ユーザ定義プログラムを用いるＳＱＬフレームワークの中で、複合データベース・クエリを構成することが難しい。
【００１０】
したがって、本発明は、この外部ＨＰＣプラットフォームを、データベース・プラットフォームに対するバック・エンド計算サーバとして用いることに基づく（その結果、前の段落に記載したフロント・エンド構成とは違い、アプリケーションのエンド・ユーザは、クエリ実行プロセスにおいてこのＨＰＣプラットフォームの使用から実質的に分離される）。これによって、データおよび結果をデータベース・サーバとバック・エンドＨＰＣプラットフォームとの間で移動させるパフォーマンス・ペナルティがなくなることはないが、様々なデータ・キャッシング戦略を用いて、熟練したプログラマによる、データ移動および管理が明示的に管理および最適化される等価なフロント・エンド・クライアント実装のパフォーマンスと同じレベルのパフォーマンスをこの手法において確保することができる。さらに、本発明におけるデータ移動は、データベース・サーバおよびバック・エンド並列コンピュータ・システムから成る、厳重に制御されたシステム環境において起こり、これによって、データの完全性および一貫性を確保するデータベース論理の導入、またはデータベース・サーバとバック・エンドＨＰＣプラットフォームとの間のデータ転送パフォーマンスを改善できる専用ハードウェアおよびプロトコルの使用が容易になる。本発明において必要とされるのは、バック・エンドＨＰＣシステムにコンピュータ計算サービスをプログラミングおよびインストールするための「開発者」技能であり、その結果、それが終われば、クライアント・アプリケーションまたはエンド・ユーザに関する限り、全体的なクエリ実行は、等価な組み込みユーザ定義プログラムがまさにデータベース・サーバ自体で実行されたかのように行われる。要約すれば、必要なデータ移動、計算集中的な演算のオフロード、および結果の返送を含む、クエリの実行に必要な様々なステップがすべて、明示的なユーザ・スケジューリングも同期化もなしで、自動化された形で行われる。したがって、本発明でとられる手法は、オフロードされるユーザ定義プログラムを用いるにもかかわらず、通常のＳＱＬクエリ処理フレームワーク内で複合データベース・クエリを構成できるという重要な能力に影響を与えることはない（この一例が、以下に記載されている本発明の特定の実施形態において説明される）。
【００１１】
本発明の適用性は、いくつかの応用分野において見いだすことができるが、特に、バイオインフォマティクスおよびライフサイエンスの領域を考慮しており、以下に記載される本発明の特定の実施形態はそこから選ばれている。
【００１２】
ここで考慮されるこの特定の実施形態は、ＤＮＡおよびタンパク質配列データベースにおける配列類似性およびアラインメントに用いられるアルゴリズムにおけるものである。近年、遺伝子およびタンパク質配列データの量が急速に増大しており、このデータが現在、商用リレーショナル・データベース、ならびに様々なフォーマットを用いるプロプラエタリの非リレーショナル・データベースを含む、様々なデータ・リポジトリに格納されているところである。バイオインフォマティクスで絶対必要なタスクは、配列類似性または相同性を検出するために、新たな配列または配列フラグメントを既存の配列リポジトリ内の配列のサブセットと比較することである。結果として生じる一致は、新たな配列に関するさらなる生物学的調査およびゲノム調査用の情報を提供するために、他の科学的データおよび極めてよく一致する配列のメタデータ（コンホメーションおよび構造細部、実験データ、機能アノテーションなど）と組み合わされる。このプロセスのステップの多くは、情報統合および情報集約を必要とするため、この配列データおよびメタデータ、ならびに配列照合アルゴリズムの全体がＳＱＬクエリ・インターフェースからアクセス可能であれば、このタスクは大幅に容易化される。これ（抽出／変換／ロード手法と呼ばれることが多い）を実現するための１つの手法は、関連した複数配列ライブラリを、元のデータ・フォーマットから商用リレーショナル・データベースにインポートすることであり、元の配列ライブラリおよびメタデータが格納されている各プロプライエタリ・データ・フォーマットに対し特別なローダ・スクリプトが必要となる。Ｌ．Ｍ．ハース（Ｈａａｓ）、Ｐ．Ｍ．シュワルツ（Ｓｃｈｗａｒｚ）、Ｐ．コダリ（Ｋｏｄａｌｉ）、Ｅ．コトラー（Ｋｏｔｌｅｒ）、Ｊ．Ｅ．ライス（Ｒｉｃｅ）およびＷ．Ｃ．スウォープ（Ｓｗｏｐｅ）、「ＤｉｓｃｏｖｅｒｙＬｉｎｋ：Ａ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｉｎｔｅｇｒａｔｅｄ  Ａｃｃｅｓｓｓ  ｔｏ  Ｌｉｆｅ  Ｓｃｉｅｎｃｅｓ  Ｄａｔａ  Ｓｅｒｖｉｃｅｓ」、ＩＢＭ  Ｓｙｓｔｅｍｓ  Ｊｏｕｒｎａｌ、第４０巻、ｐ．４８９〜５１１、２００１年に記載されている別の手法は、配列データをその元のデータ・リポジトリに保持するが、代わりに、この異種のデータ・ソースのセットの要約または連合ビューがプライマリ・フロント・エンド・データベース・サーバに提供され、このプライマリ・フロント・エンド・データベース上の組み込みのラッパ関数のセットが、プライマリ・データベースとバック・エンド異種データ・ソースのセットとの間でやり取りされる入力クエリとクエリ結果との必要な対応付けを提供する。
【００１３】
この２つの一般的な選択肢は、データベース・サーバにおいてＳＱＬクエリ・インターフェースを様々な生物学的配列照合アルゴリズムの呼び出しに用いるためにも使用可能である。例えば、こうしたアルゴリズムは、Ｓ．Ｍ．スティーブンス（Ｓｔｅｐｈｅｎｓ）、Ｊ．Ｙ．チェン（Ｃｈｅｎ）、Ｍ．Ｇ．デビッドソン（Ｄａｖｉｄｓｏｎ）、Ｓ．トマス（Ｔｈｏｍａｓ）およびＢ．Ｍ．トルテ（Ｔｒｕｔｅ）、「Ｏｒａｃｌｅ  Ｄａｔａｂａｓｅ  １０ｇ：ａ  ｐｌａｔｆｏｒｍ  ｆｏｒ  ＢＬＡＳＴ  ｓｅａｒｃｈ  ａｎｄ  Ｒｅｇｕｌａｒ  Ｅｘｐｒｅｓｓｉｏｎ  ｐａｔｔｅｒｎ  ｍａｔｃｈｉｎｇ  ｉｎ  ｌｉｆｅ  ｓｃｉｅｎｃｅｓ」、Ｎｕｃｌｅｉｃ  Ａｃｉｄｓ  Ｒｅｓｅａｒｃｈ、第３３巻、Ｄａｔａｂａｓｅ  ｉｓｓｕｅ、ｐ．Ｄ６７５〜Ｄ６７９、２００５年に特定のＢＬＡＳＴアルゴリズムについて記載されているように、組み込みのユーザ定義プログラムとして実装可能であろう。あるいは、上述のデータベース・ラッパ手法が、Ｂ．エックマン（Ｅｃｋｍａｎ）およびＤ．デル・プレーテ（Ｄｅｌ  Ｐｒｅｔｅ）、「Ｅｆｆｉｃｉｅｎｔ  Ａｃｃｅｓｓ  ｔｏ  ＢＬＡＳＴ  Ｕｓｉｎｇ  ＩＢＭ  ＤＢ２  Ｉｎｆｏｒｍａｔｉｏｎ  Ｉｎｔｅｇｒａｔｏｒ」、ＩＢＭ  Ｈｅａｌｔｈｃａｒｅ  ａｎｄ  Ｌｉｆｅ  Ｓｃｉｅｎｃｅ  Ｐｕｂｌｉｃａｔｉｏｎ、２００４年により説明されているように、別個のＢＬＡＳＴサーバ上で必要な計算を開始して、結果をデータベース・サーバ上のテーブルに再び対応付けるよう拡大されることが可能である。この２つの手法は、実装の細部ではかなり大きく異なるが、本質的に、いくつかの重要な能力、すなわち、生物学的配列データおよびメタデータを含む１つ以上のデータ・ソースに対するアクセスおよびクエリを行うためにデータベースＳＱＬクエリ・インターフェースを用いる能力、およびＢＬＡＳＴなどの配列照合アルゴリズムをこうしたデータベース・クエリに統合する能力を提供する。こうした能力は、配列メタデータを含む述語を用いて配列の初期の探索空間をフィルタリングすること、および照合アルゴリズムから返された最上位の配列を、関連した他のデータ・リポジトリにある当該配列についての情報に結合することによって配列照合結果の後処理を行うことなどの複合クエリを生成する能力をアプリケーション開発者に与える。このようにして、配列照合アルゴリズムの組み込みの実装によって、配列データから新たな科学的発見をするプロセスを自動化、強化および加速するアプリケーションの能力が提供される。しかし、上述の２つの手法はどちらも、商用データベースにおいてこうした配列照合アルゴリズムの並列実装をサポートするようには一般的に開発されていない。
【００１４】
生物学的配列照合およびアラインメントの並列アルゴリズムの開発には、重要な従来技術がある。これは、専用アクセラレータから、マルチスレッド対称型マルチプロセッシング・システム、分散型メモリ・コンピュータにまで及ぶ、様々なＨＰＣプラットフォームに実装されてきた。
【００１５】
拡張性の観点から、分散型メモリ・プラットフォームが最も興味深いものであり、この場合、生物学的配列照合アルゴリズムにおいて並列処理を活用するには、２つの主要な手法がある。
【００１６】
データベース・セグメンテーションと呼ばれる第１の手法は、複数計算ノードのセットにわたって配列のターゲット・ライブラリを分割する（配列ライブラリの個々のパーティションそれぞれがノード・メモリ内に収まるよう、十分な計算ノードを用いることが好ましい）。この手法の並列拡張性は、最終的に、ライブラリ配列データを分配し、計算ノードのより大きなセットにわたって結果を収集するデータ移動オーバーヘッドによって制限される。この分散型メモリ並列手法を実装するのに必要なパフォーマンス最適化の研究は、Ａ．Ｅ．ダーリング（Ｄａｒｌｉｎｇ）、Ｌ．ケアリー（Ｃａｒｅｙ）、Ｗ．フェン（Ｆｅｎｇ）、「Ｔｈｅ  Ｄｅｓｉｇｎ，Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ａｎｄ  Ｅｖａｌｕａｔｉｏｎ  ｏｆ  ｍｐｉＢＬＡＳＴ」、Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  Ｃｌｕｓｔｅｒｗｏｒｌｄ  ｃｏｎｆｅｒｅｎｃｅ（２００３年）で確認することができ、Ｈ．リン（Ｌｉｎ）、Ｘ．マ（Ｍａ）、Ｐ．チャンドラモハン（Ｃｈａｎｄｒａｍｏｈａｎ）、Ａ．ガイスト（Ｇｅｉｓｔ）およびＮ．サマトヴァ（Ｓａｍａｔｏｖａ）、「Ｅｆｆｉｃｉｅｎｔ  ｄａｔａ  ａｃｃｅｓｓ  ｆｏｒ  ｐａｒａｌｌｅｌ  ｂｌａｓｔ」、Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｐａｒａｌｌｅｌ  ａｎｄ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｙｍｐｏｓｉｕｍ、２００５年には、並列ディスクＩ／Ｏパフォーマンスを最適化する拡張について記載されている。
【００１７】
クエリ・セグメンテーションと呼ばれる第２の手法は、類似しているが独立した一組のクエリがある場合に、各クエリをターゲット配列ライブラリに対して並行して同時実行するよう使用可能である。したがって、このターゲット配列ライブラリは、Ｒ．Ｃ．ブラウン（Ｂｒａｕｎ）、Ｋ．Ｔ．ペドレッティ（Ｐｅｄｒｅｔｔｉ）、Ｔ．Ｌ．カサヴァント（Ｃａｓａｖａｎｔ）、Ｔ．Ｅ．シュイーツ（Ｓｃｈｅｅｔｚ）、Ｃ．Ｌ．バーケット（Ｂｉｒｋｅｔｔ）およびＣ．Ａ．ロバーツ（Ｒｏｂｅｒｔｓ）、「Ｔｈｒｅｅ  Ｃｏｍｐｌｅｍｅｍｔａｒｙ  Ａｐｐｒｏａｃｈｅｓ  ｔｏ  Ｐａｒａｌｌｅｌｉｚａｔｉｏｎ  ｏｆ  Ｌｏｃａｌ  ＢＬＡＳＴ  Ｓｅｒｖｉｃｅ  ｏｎ  Ｗｏｒｋｓｔａｔｉｏｎ  Ｃｌｕｓｔｅｒｓ」、Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ５ｔｈ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｐａｒａｌｌｅｌ  Ｃｏｍｐｕｔｉｎｇ  Ｔｅｃｈｎｏｌｏｇｉｅｓ（ＰＡＣＴ）、Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ（ＬＮＣＳ）、第１６６２巻、ｐ．２７１〜２８２、１９９９年に記載されているように、分散型メモリ・プラットフォームの複数ノードにわたって複製されるとよい。この手法は、ターゲット配列ライブラリ全体を格納するには十分でない場合がある個々のノードのメモリによって制限されるが、Ｈ．ラングワラ（Ｒａｎｇｗａｌａ）、Ｅ．ランツ（Ｌａｎｔｚ）、Ｒ．ムッセルマン（Ｍｕｓｓｅｌｍａｎ）、Ｋ．ピノー（Ｐｉｎｎｏｗ）、Ｂ．スミス（Ｓｍｉｔｈ）およびＢ．ウォレンフェルト（Ｗａｌｌｅｎｆｅｌｔ）、「Ｍａｓｓｉｖｅｌｙ  Ｐａｒａｌｌｅｌ  ＢＬＡＳＴ  ｆｏｒ  ｔｈｅ  Ｂｌｕｅ  Ｇｅｎｅ／Ｌ」、Ｈｉｇｈ  Ａｖａｉｌａｂｉｌｉｔｙ  ａｎｄ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｃｏｍｐｕｔｉｎｇ  Ｗｏｒｋｓｈｏｐ、Ｓａｎｔａ  Ｆｅ  ＮＭ（２００５年）に記載されているように、この特定の問題は、データベース・セグメンテーションとクエリ・セグメンテーションとの組み合わせを用いることで克服可能であり、これは、何千ものプロセッサを有する分散型メモリ並列コンピュータには、最も効果的かつ拡張可能な手法である。
【先行技術文献】
【非特許文献】
【００１８】
【非特許文献１】Ｋ．Ｃ．リー、Ｔ．Ｍ．ヒッキーおよびＶ．Ｗ．マク、「ＶＬＳＩ  Ａｃｃｅｌｅｒａｔｏｒｓ  ｆｏｒ  Ｌａｒｇｅ  Ｄａｔａｂａｓｅ  Ｓｙｓｔｅｍｓ」、ＩＥＥＥ  Ｍｉｃｒｏ、第１１巻、ｐ．８〜２０（１９９１年）
【非特許文献２】Ｐ．フォードメイおよびＭ．ムヒリ、「Ａｎ  Ａｓｓｏｃｉａｔｉｖｅ  Ａｃｃｅｌｅｒａｔｏｒ  ｆｏｒ  Ｌａｒｇｅ  Ｄａｔａｂａｓｅｓ」、ＩＥＥＥ  Ｍｉｃｒｏ、第１１巻、ｐ．２２〜３４
【非特許文献３】Ｍ．アブデルグエルフィおよびＡ．Ｋ．スード、「Ａ  Ｆｉｎｅ−Ｇｒａｉｎ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ｆｏｒ  Ｒｅｌａｔｉｏｎａｌ  Ｄａｔａｂａｓｅ  Ａｇｇｒｅｇａｔｉｏｎ  Ｏｐｅｒａｔｉｏｎｓ」、ＩＥＥＥ  Ｍｉｃｒｏ、第１１巻、ｐ．３５〜４３
【非特許文献４】Ｖ．Ｗ．マク、Ｋ．Ｃ．リーおよびＯ．フリーデル、「Ｅｘｐｌｏｉｔｉｎｇ  Ｐａｒａｌｌｅｌｉｓｍ  ｉｎ  Ｐａｔｔｅｒｎ  Ｍａｔｃｈｉｎｇ：Ａｎ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｒｅｔｒｉｅｖａｌ  Ａｐｐｌｉｃａｔｉｏｎ」、ＡＣＭ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｓｙｓｔｅｍｓ、第９巻、ｐ．５２〜７４、１９９１年
【非特許文献５】Ｅ．リーデル、Ｃ．ファルートソス、Ｇ．Ａ．ギブソンおよびＤ．ネーグル、「Ａｃｔｉｖｅ  Ｄｉｓｋｓ  ｆｏｒ  Ｌａｒｇｅ−Ｓｃａｌｅ  Ｄａｔａ  Ｐｒｏｃｅｓｓｉｎｇ」、ＩＥＥＥ  Ｃｏｍｐｕｔｅｒ、第３４巻、ｐ．６８〜７４、２００１年
【非特許文献６】Ｌ．Ｍ．ハース、Ｐ．Ｍ．シュワルツ、Ｐ．コダリ、Ｅ．コトラー、Ｊ．Ｅ．ライスおよびＷ．Ｃ．スウォープ、「ＤｉｓｃｏｖｅｒｙＬｉｎｋ：Ａ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｉｎｔｅｇｒａｔｅｄ  Ａｃｃｅｓｓｓ  ｔｏ  Ｌｉｆｅ  Ｓｃｉｅｎｃｅｓ  Ｄａｔａ  Ｓｅｒｖｉｃｅｓ」、ＩＢＭ  Ｓｙｓｔｅｍｓ  Ｊｏｕｒｎａｌ、第４０巻、ｐ．４８９〜５１１、２００１年
【非特許文献７】Ｓ．Ｍ．スティーブンス、Ｊ．Ｙ．チェン、Ｍ．Ｇ．デビッドソン、Ｓ．トマスおよびＢ．Ｍ．トルテ、「Ｏｒａｃｌｅ  Ｄａｔａｂａｓｅ  １０ｇ：ａ  ｐｌａｔｆｏｒｍ  ｆｏｒ  ＢＬＡＳＴ  ｓｅａｒｃｈ  ａｎｄ  Ｒｅｇｕｌａｒ  Ｅｘｐｒｅｓｓｉｏｎ  ｐａｔｔｅｒｎ  ｍａｔｃｈｉｎｇ  ｉｎ  ｌｉｆｅ  ｓｃｉｅｎｃｅｓ」、Ｎｕｃｌｅｉｃ  Ａｃｉｄｓ  Ｒｅｓｅａｒｃｈ、第３３巻、Ｄａｔａｂａｓｅ  ｉｓｓｕｅ、ｐ．Ｄ６７５〜Ｄ６７９、２００５年
【非特許文献８】Ｂ．エックマンおよびＤ．デル・プレーテ、「Ｅｆｆｉｃｉｅｎｔ  Ａｃｃｅｓｓ  ｔｏ  ＢＬＡＳＴ  Ｕｓｉｎｇ  ＩＢＭ  ＤＢ２  Ｉｎｆｏｒｍａｔｉｏｎ  Ｉｎｔｅｇｒａｔｏｒ」、ＩＢＭ  Ｈｅａｌｔｈｃａｒｅ  ａｎｄ  Ｌｉｆｅ  Ｓｃｉｅｎｃｅ  Ｐｕｂｌｉｃａｔｉｏｎ、２００４年
【非特許文献９】Ａ．Ｅ．ダーリング、Ｌ．ケアリー、Ｗ．フェン、「Ｔｈｅ  Ｄｅｓｉｇｎ，Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  ａｎｄ  Ｅｖａｌｕａｔｉｏｎ  ｏｆ  ｍｐｉＢＬＡＳＴ」、Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  Ｃｌｕｓｔｅｒｗｏｒｌｄ  ｃｏｎｆｅｒｅｎｃｅ（２００３年）
【非特許文献１０】Ｈ．リン、Ｘ．マ、Ｐ．チャンドラモハン、Ａ．ガイストおよびＮ．サマトヴァ、「Ｅｆｆｉｃｉｅｎｔ  ｄａｔａ  ａｃｃｅｓｓ  ｆｏｒ  ｐａｒａｌｌｅｌ  ｂｌａｓｔ」、Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｐａｒａｌｌｅｌ  ａｎｄ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｙｍｐｏｓｉｕｍ、２００５年
【非特許文献１１】Ｒ．Ｃ．ブラウン、Ｋ．Ｔ．ペドレッティ、Ｔ．Ｌ．カサヴァント、Ｔ．Ｅ．シュイーツ、Ｃ．Ｌ．バーケットおよびＣ．Ａ．ロバーツ、「Ｔｈｒｅｅ  Ｃｏｍｐｌｅｍｅｍｔａｒｙ  Ａｐｐｒｏａｃｈｅｓ  ｔｏ  Ｐａｒａｌｌｅｌｉｚａｔｉｏｎ  ｏｆ  Ｌｏｃａｌ  ＢＬＡＳＴ  Ｓｅｒｖｉｃｅ  ｏｎ  Ｗｏｒｋｓｔａｔｉｏｎ  Ｃｌｕｓｔｅｒｓ」、Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ５ｔｈ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｐａｒａｌｌｅｌ  Ｃｏｍｐｕｔｉｎｇ  Ｔｅｃｈｎｏｌｏｇｉｅｓ（ＰＡＣＴ）、Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ（ＬＮＣＳ）、第１６６２巻、ｐ．２７１〜２８２、１９９９年
【非特許文献１２】Ｈ．ラングワラ、Ｅ．ランツ、Ｒ．ムッセルマン、Ｋ．ピノー、Ｂ．スミスおよびＢ．ウォレンフェルト、「Ｍａｓｓｉｖｅｌｙ  Ｐａｒａｌｌｅｌ  ＢＬＡＳＴ  ｆｏｒ  ｔｈｅ  Ｂｌｕｅ  Ｇｅｎｅ／Ｌ」、Ｈｉｇｈ  Ａｖａｉｌａｂｉｌｉｔｙ  ａｎｄ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｃｏｍｐｕｔｉｎｇ  Ｗｏｒｋｓｈｏｐ、Ｓａｎｔａ  Ｆｅ  ＮＭ（２００５年）
【発明の概要】
【発明が解決しようとする課題】
【００１９】
本発明者らの知る限り、ＢＬＡＳＴの（または他の配列照合アルゴリズムの）並列実装には、より大きなクエリ・ワークフローのデータ統合および処理のサポートにこうしたアルゴリズムを用いることができるように、ＳＱＬクエリ・インターフェースからこうしたアルゴリズムを用いることの問題点を考慮しているものはない。前に記載したように、こうした並列プログラムは、一般にはデータベース・プログラミングおよびランタイム環境においてサポートされていないメッセージ・パッシングおよび他の並列プログラミング構造体を大量使用するため、商用リレーショナル・データベースの組み込みのユーザ定義プログラムとして直接実装するのも難しい。
【００２０】
ＢＬＡＳＴアルゴリズムはコンピュータ計算の複雑性が低い（照合される２つの入力配列ストリングのサイズにほぼ比例する）が、ニードルマン−ブンシュ（Ｎｅｅｄｌｅｍａｎ−Ｗｕｎｓｃｈ）アルゴリズム、スミス−ウォーターマン（Ｓｍｉｔｈ−Ｗａｔｅｒｍａｎ）アルゴリズム、最尤照合、および系統的照合（Ｐｈｙｌｏｇｅｎｅｔｉｃ  ｍａｔｃｈｉｎｇ）など、入力のサイズの２次またはそれ以上の複雑性を有する他の探索および照合アルゴリズムが、バイオインフォマティクスにはある（すなわち、その複雑性は少なくとも、２つの入力配列ストリングのサイズの積のオーダーのものとなる；Ｗ．Ｒ．ピアソン（Ｐｅａｒｓｏｎ）、「Ｐｒｏｔｅｉｎ  Ｓｅｑｕｅｎｃｅ  ｃｏｍｐａｒｉｓｏｎ  ａｎｄ  Ｐｒｏｔｅｉｎ  ｅｖｏｌｕｔｉｏｎ」、Ｉｎｔｅｌｌｉｇｅｎｔ  Ｓｙｓｔｅｍｓ  ｉｎ  Ｍｏｌｅｃｕｌａｒ  Ｂｉｏｌｏｇｙ、２００１年を参照のこと）。こうしたアルゴリズムの計算要件は、ＢＬＡＳＴアルゴリズムよりもはるかに大きく、その結果、こうしたアルゴリズムの組み込みのユーザ定義プログラムは、他のワークロードも同時に処理しているデータベース・サーバにおいて大きくパフォーマンス制限されることになるであろう。しかし、こうしたアルゴリズムに関して、データベース・サーバから外部ＨＰＣプラットフォームへのデータ転送によるオーバーヘッドは、等価なＢＬＡＳＴ実装と比べて、全体的な実行時間のうちに占める部分が小さくなる。したがって、特に、インメモリ・データ構造（ｉｎ−ｍｅｍｏｒｙ  ｄａｔａ  ｓｔｒｕｃｔｕｒｅ）および細粒度並列処理など、バック・エンドＨＰＣプラットフォーム上で最適化を用いることによって実行時間が大幅に削減されるため、本発明はこの場合に特に適している。
【００２１】
本発明の対象となり得るライフサイエンスでの応用のもう１つのセットは、代謝経路、反応ネットワーク、遺伝子制御ネットワーク、およびタンパク質−薬剤相互作用などの様々な生物学的ネットワークにおける関係の研究である、システム生物学の分野である。こうした関係の多くは、グラフ構造として格納され、生物学的に興味深いクエリをこうしたグラフにかけることができ、このグラフは、ユーザ定義の複合データ型としてデータベースに格納されても、あるいはより単純なデータ型（ノード、エッジおよびプロパティ情報から成る）のセットの集約としてオン・ザ・フライでマテリアライズされてもよい。こうしたグラフ・データ型に関する類似性、探索および推論のグラフ演算の集合を伴う、こうしたデータ型のシステム生物学グラフ・データベース・エクステンダについて、Ｂ．Ａ．エックマン（Ｅｃｋｍａｎ）およびＰ．Ｇ．ブラウン（Ｂｒｏｗｎ）、「Ｇｒａｐｈ  ｄａｔａ  ｍａｎａｇｅｍｅｎｔ  ｆｏｒ  ｍｏｌｅｃｕｌａｒ  ａｎｄ  ｃｅｌｌ  ｂｉｏｌｏｇｙ」、ＩＢＭ  Ｊｏｕｒｎａｌ  ｏｆ  Ｒｅｓｅａｒｃｈ  ａｎｄ  Ｄｅｖｅｌｏｐｍｅｎｔ、第５０巻、ｐ．５４５〜５６０、２００６年に記載されており、グラフ同形性、部分グラフ照合、連結成分、最短経路、全域木などのような標準的なグラフ演算の多くが、このデータベース・エクステンダにおいてユーザ定義関数として実装されている。本発明は、こうしたユーザ定義関数の一部を、極度に大きなグラフおよびコンピュータ計算コストの高いグラフ・アルゴリズムに関して、付属のＨＰＣプラットフォームにオフロードすることによってクエリ・パフォーマンスを改善するよう用いることができる。
【００２２】
商用リレーショナル・データベースは、複合データ型を、組み込みのユーザ定義プログラムを用いて格納、クエリおよび分析するために用いられることが増えているが、本発明者らは、既存の商用データベース・プラットフォームでコンピュータ計算コストの高いユーザ定義プログラムを実行するにはパフォーマンスを抑制するものが多数あるということに気づいた。
【課題を解決するための手段】
【００２３】
したがって、本発明は、非常に多数のデータベース・クエリからの計算集中的な部分を１つ以上、別個の独立した並列高パフォーマンス・コンピューティング・システム上で実行する新規のシステムおよび方法に関する。データベース・クエリを発行するアプリケーション・エンド・ユーザの観点からは、データベース・サーバから付属のＨＰＣプラットフォームへのこのワークロードの送出、および遠隔実行全体が、このワークロードがまさにデータベース・サーバ自体で等価なユーザ定義プログラムによって実行されたかのように、しかし遠隔実行が原因でよりよい並列パフォーマンスで、実行される。したがって概要としては、本発明は、以下を含むコンピュータ・システムを開示する：
商用データベース・プラットフォーム、
付属の高パフォーマンス・コンピューティング（ＨＰＣ）プラットフォーム
および
クエリ・ワークロードの計算集中的なセクションおよび対応するターゲット・データ・テーブルを、データベース・プラットフォームから付属のＨＰＣプラットフォームへ送出し、このワークロードをこのＨＰＣプラットフォーム上で実行し、さらに結果をデータベース・システムへ返す、複数コンポーネントのセットを備えたシステムであって、この結果は、元のユーザ・クエリの最終的な結果セットに組み入れられる、該システム。
【００２４】
データベースおよびＨＰＣプラットフォームは、その通例のシステムおよびソフトウェア・スタックを備えた標準の「オフ・ザ・シェルフ」製品であり、本発明におけるクエリの送出、遠隔実行および結果収集のフレームワークによって統合される。
【００２５】
このフレームワークは、クエリ実行の計算集中的なセクションをＨＰＣプラットフォーム上にウェブ・サービス・インターフェースを介して直接呼び出す「ショート・カット」能力も提供する。テストおよび開発中に、ならびに何らかのウェブ・サービス・ベースのアプリケーションにおいて、明示的にデータベース・クエリ・インターフェースを経る必要なく、データベースにあるデータに対してＨＰＣベースのアプリケーションを開始するこのウェブ・サービス機能性を直接使用する必要性があるかもしれないということに、本発明者らは気づいた。しかし、このウェブ・サービス呼び出しインターフェースは、遠隔実行が或るデータベース・クエリ・ワークフローにおいて中間ステップとして機能する複合クエリ処理に使用できる、データベース・サーバ上のＳＱＬクエリ・インターフェースの利点は提供しない。
【００２６】
本発明の詳細は、その構造および動作の両方について、添付の図面を参照することで最もよく理解することができる。図面において、同じ参照番号は同様の部分を指す。
【図面の簡単な説明】
【００２７】
【図１】提案される本発明を概略的に示し、クライアント・アプリケーションが、１つ以上のＳＱＬクエリを発行し、クエリ・ワークロードの計算集中的な部分が送出されて、付属の高パフォーマンス並列コンピュータ（ＨＰＣ）上で実行され、クライアント・アプリケーションに返される最終的な結果セットに最終的に組み入れられるよう結果がデータベースへ返送される。
【図２】本発明の特定の実施形態をもたらすために用いられるとよい本発明の様々なコンポーネントを示し、これらのコンポーネントは、データベース・サーバ、並列コンピュータのホスト・ノード、および並列コンピュータ自体へ様々な形で展開される。
【図３】クエリ実行の段階Ｉに含まれるステップを示し、オフロードされる必要なデータベース・クエリを実行する役割を果たすアプリケーション・サービスが、並列コンピュータ内の複数計算ノードのセット（アプリケーション・サービス・ノードと呼ばれる）にインストールされる。
【図４】クエリ実行の段階ＩＩに含まれるステップを示し、クエリにおいて用いられるターゲット・データ・ライブラリが、段階Ｉからの複数アプリケーション・サービス・ノードのサブセットにコピーされる（ノードのこのサブセットは以下アクティブ・クエリ・パーティションと呼ばれる）。
【図５】クエリ実行の段階ＩＩＩに含まれるステップを示し、関連したクエリ・パラメータが、段階ＩＩからの適切なアクティブ・クエリ・パーティションへ渡され、結果が収集され、呼び出し元のデータベース関数またはデータベース・サーバ内の結果テーブルへ返される。
【図６】以下で考察する本発明の詳細な実施形態における、データベース・サーバに格納されアクティブ・クエリ・パーティションにコピーされている配列の特定のターゲット・ライブラリに対して、所与の配列を照合する（遠隔並列コンピュータ上でスミス−ウォーターマン・アルゴリズムの並列化を用いて）ためにデータベース・サーバへ発行されるクエリ・リクエストの例を示し、遠隔実行の後に返される結果も共に示されている。
【発明を実施するための形態】
【００２８】
本発明は、全般的に、データベース・サーバから付属の高パフォーマンス並列コンピュータへ、計算集中的なユーザ定義演算をオフロードすることに関する。以下の説明は、当業者が本発明を準備し、用いることができるように公開され、特許出願およびその要件との関連で提供される。そこに記載される好適な実施形態ならびに包括的な原理および機能に対する様々な変更が、当業者には容易に明白となるであろう。したがって、本発明は、示される実施形態に限定されるものではなく、そこに記載される原理および機能と一致する最も広い範囲を与えられるべきである。
【００２９】
以下、本発明の機能を詳細に説明するために、添付の図面と併せて以下の説明を参照する。
【００３０】
図１（番号１０〜１６）は、提案される本発明の高レベル概略図であり、ステップ１において、クライアント・アプリケーションが、１つ以上の計算集中的な演算を含むＳＱＬクエリを発行する。クエリ・ワークロードのうち、通常はデータベース・サーバ上の組み込みのユーザ定義プログラムとして実装されると考えられる、コンピュータ計算の集中する部分の一部または全部が、そうされずにステップ２においてオフロードされて、付属の高パフォーマンス並列コンピュータ上で実行される。ステップ３で、このオフロードされたコンピュータ計算それぞれの結果セットが、任意のさらなる処理のためにデータベースへ返送される。この処理は、最終的にステップ４でクライアント・アプリケーションへ返される結果セットに統合するために必要となり得る任意の処理を含む。本発明の本質的な２つの側面が、図１に示されている。第１に、計算集中的なワークロードを付属の並列コンピュータにオフロードすることで、単一のクエリ呼び出しに関して、または同じターゲット・データベース・テーブルに対する複数の関連したクエリ呼び出しに関して、データベース・サーバ上でのクエリ・パフォーマンスおよびクエリ応答時間を改善することができる。第２に、このパフォーマンス改善が得られるプロセス全体は、バック・エンド並列コンピュータでのユーザ定義プログラムの実行が、このユーザ定義プログラムがデータベース・サーバ自体で実行されたかのように同じセマンティクスおよび信頼性で行われるため、クライアント・アプリケーションの大きな手直しを必要としない。一方、本発明は、このオフロードされる遠隔実行の特定の側面をデータベース・サーバ上のＳＱＬインターフェースを用いてカスタマイズおよび最適化する能力を、クライアント・アプリケーションに提供する。
【００３１】
図２（番号１８〜２２）は、本発明の一般的または特定の実施形態の一部とするとよい様々なコンポーネントを概略的に示す。これらのコンポーネントは、後にオフロードされるコンピュータ計算の実行へ向けて付属の並列コンピュータの準備を整えるために付属の並列コンピュータ上のサービスを初期化し、リクエストされたときにこうしたコンピュータ計算をスケジューリングし、結果を収集してデータベース・サーバへ返送するために用いられる。典型的には、こうした個々のコンポーネントは、並列コンピュータ自体に展開されるか、またはそうでなく、高パフォーマンス並列コンピュータ・システムの１つ以上のフロント・エンド・ホスト・コンピュータに展開される。本発明におけるコンポーネントの別のセットは、データベース・サーバ自体に展開され、必要に応じてウェブ・サービスまたはＪＤＢＣ（Ｊａｖａ  Ｄａｔａｂａｓｅ  Ｃｏｎｎｅｃｔｉｖｉｔｙ：Ｊａｖａデータベース・コネクティビティ）などの標準プロトコルを用いてバック・エンド並列コンピュータ上の対応するサービスを呼び出す、ユーザ定義プログラム・スタブから成る。さらに、データベース・サーバは、所与のクエリ・ワークフローの中間または最終結果を格納するのに用いられるとよい様々な一時テーブルを提供する。ＨＰＣ並列プラットフォーム自体において、本発明の主要コンポーネントは、各並列計算ノード上で実行され、当該ノード上の、並列タスクを実行する実際のサービスをカプセル化する、サービス・ラッパである。このサービス・ラッパは、全体的なスケジューリングおよび同期化を実行するために、フロント・エンド・ホスト上の他のコンポーネントと通信する役割を果たす。サービス・ラッパはさらに、各サブ・パーティション内の必要なテーブルの行（または当該データベース・テーブル行それぞれのフィールド値のサブセット）を読み出す単純なプログラミング・インターフェースを用いて内在するノード・サービスが効率的にアクセスできる形式で、適切なターゲット・データベース・テーブルの別個のサブ・パーティション、またはマテリアライズド・ビューを格納する。
【００３２】
ここに記載したように、フロント・エンド・ホスト・コンピュータは、本発明の重要なコンポーネントの多くを含み、これには次が含まれる：
―アプリケーション・サービスを、並列マシンのノードの必要なサブセットにロードする役割を果たす、サービス展開モジュール。
―アクティブ・パーティション、すなわちアプリケーション・サービスが展開された並列コンピュータ・ノードのセットについての状態を保持するサービス・ノード・ディスパッチャ・コンポーネント。
―サービス・ノード・ディスパッチャと連動して、特定のサービス呼び出しに関して並列マシン上のノードのサブセットを要求し、ターゲット・データベース・テーブルまたはマテリアライズド・ビューが変更されていなければ、同じクエリ・パーティション上に後のクエリを再び送出することができる（その結果、ターゲット・テーブル・データをデータベースから並列コンピュータへ再びコピーするオーバーヘッドを回避する）、クエリ・ディスパッチャ・コンポーネント。
―並列マシン上の個々の計算ノードから結果を集める結果コレクタ・コンポーネント。この結果は、データベース・サーバ上の呼び出し元のサービス関数へ返されてもよく、または、データベース・サーバ上の事前指定されている一時テーブルに挿入されてもよい。
―多くの並列ＨＰＣプラットフォームはインタラクティブなデータベース・アクセス用にいかなるプロトコルもプログラミングＡＰＩもサポートしないことから、本発明の特定の実施形態において有用なものである、データベース・リレー・コンポーネント。この場合に、このデータベース・リレー・コンポーネントが、データベース・サーバと並列コンピュータ・ノードとの間のデータ転送を管理し、データベース・サーバへ、およびデータベース・サーバからのデータ転送に用いられるＩ／Ｏプロトコルと、並列コンピュータ・ノードへ、および並列コンピュータ・ノードからのデータ転送に用いられるプロトコルとの間に介在する。
【００３３】
図３〜５（番号４６〜６０）は、本発明で必要なステップの順序を示し、各図面は、オフロードされる並列クエリ実行における連続的な段階に対応する。ここで、段階Ｉは、アプリケーションの展開を指し、段階ＩＩは、データ初期化を指し、段階ＩＩＩは、ＨＰＣプラットフォーム上にオフロードされたタスクの実行および結果のデータベース・サーバへの返送を指す。
【００３４】
図３（番号２４〜３２）は、展開段階すなわち段階Ｉを表し、ステップ１で、アプリケーション・サービスという特定の技術に精通している者が、以下にさらに記載する包括的なサービスをアプリケーション・サービスにカプセル化するサービス・ラッパ内に組み込まれた所望のアプリケーション・サービスの、特定のソフトウェア実装を提供する。ステップ２で、このアプリケーション・サービスが（サービス・ラッパと共に）、並列コンピュータ上の個々の計算ノードの集合で実行するのに適した並列ライブラリおよびランタイムを用いて、並列コンピュータ上の個々のノード・プログラムのバイナリにコンパイルされる。ステップ３で、サービス・ノード・ディスパッチャ・コンポーネントが初期化され前の何らかのインスタンス化から実行されていないことを確かめた後に、このコンポーネントが並列コンピュータ・ホスト上で始動させられる。なお、ステップ１〜３は、このアプリケーションの特定の経験と、並列コンピュータ上でこのアプリケーションを実行するための特定技能とを有する当業者によって実行される。ステップ４で、データベース・サーバから、そのアプリケーション・ワークフロー実行の一部として特定のリクエストが受信され、並列コンピュータ・ホスト上のプログラム・ローダが、並列コンピュータ上の計算ノードの特定の集合上でアプリケーション・サービスを起動する（これは通常、ＭＰＩベースのアプリケーションのＭＰＩＲＵＮなど、並列バイナリ用のプラットフォーム特有ローダであり、ｈｔｔｐ：／／ｗｗｗ−ｕｎｉｘ．ｍｃｓ．ａｎｌ．ｇｏｖ／ｍｐｉを参照されたい）。アプリケーション・サービスがこの計算ノードにロードされるとき、制御は、ノードをホスト・コンピュータ上のサービス・ノード・ディスパッチャに登録するためのメッセージを開始するサービス・ラッパに移される。サービス・ノード・ディスパッチャは、このように展開される特定のアプリケーション・サービスそれぞれに関して、利用可能な計算ノードの、ディレクトリとおよび関連のカウントとを保持する。
【００３５】
図４（番号３４〜４４）は、アプリケーション・サービスのデータ初期化段階すなわち段階ＩＩを表し、ステップ１で、次の段階ＩＩＩで後のクエリ・リクエストが実行されることになるターゲット・テーブルをロードすることの、クエリ・パーティション・ディスパッチャ・コンポーネントに対するリクエストが、データベース・サーバから受信される。このターゲット・テーブルは、データベース・サーバ自体から、またはｆｔｐサーバなどの他の何らかの外部データ・ソースから、様々なソース・データベース・テーブルを組み合わせることによって得られてもよく、続いてこのターゲット・テーブルが、アプリケーション・サービスが初期化され実行されているノードのパーティションのサブセットにロードされる。ステップ２で、このテーブルをロードされていて、新たなクエリまたは複数クエリのセットを処理できるレディ状態の既存のパーティションがあるかどうかを、クエリ・パーティション・ディスパッチャが確認する。そのようなパーティションが見つかったが別のクエリがそこで実行されているため利用可能でない場合には、そのパーティションに既にロードされているターゲット・テーブル・データを用いて、もう１つのアクティブ・クエリ・パーティションのクローンをつくることができる（その結果、このデータを求めて元のデータベースに逆戻りするという、通信オーバーヘッドを高めることが行われず、すべてのデータ転送がＨＰＣプラットフォーム・システム自体の中で高速で行われる）。そうでなく、そのようなパーティションが見つからなければ、ステップ３にあるように、クエリ・パーティション・ディスパッチャは、空いているアプリケーション・サービス・ノードの別のサブセットを割り当てるようサービス・ノード・ディスパッチャと交渉し、新たなアクティブ・クエリ・パーティションを作成する。次に、ステップ４で、このアクティブ・クエリ・パーティションの個々のアプリケーション・サービス・ノード上のサービス・ラッパが、必要なデータの重複がないが漏れもない行パーティションをデータ・サーバからコピーするように別個のデータ転送リクエストを開始し、ステップ５にあるようにデータベース・リレー・コンポーネントを用い、それによりステップ６にあるように、データ・パーティションがローカル・データ・キャッシュ（アプリケーション・サービスのサービス・ラッパにあるインメモリ・データ・キャッシュ内が好ましい）に格納される。具体的に言うと、並列コンピュータまたは並列コンピュータ・ホスト上で実行されているとよいデータベース・リレー・コンポーネントが、ステップ５および６で、並列コンピュータのノードとリレー・ホストとの間（ＭＰＩメッセージ・パッシング、またはＵＮＩＸソケット・タイプの通信プロトコルに基づいていてもよい）のデータ転送および通信プロトコル、およびステップ７では、リレー・ホストとデータベース・サーバとの間（データベース・アクセスのＪＤＢＣプロトコルに基づいていてもよい）のデータ転送および通信プロトコルを仲介するために用いられる。したがって、計算ノード上のアプリケーション・サービス・ラッパは、所要のＳＱＬクエリ関数をデータベース・リレー・コンポーネントへ送り、データベース・リレー・コンポーネントは、クエリを完了して、結果セットを、アプリケーション・サービス・ラッパに保持されているデータ・キャッシュに格納するのに適切な表現で計算ノードへ返送する。その後、このデータは、以下に記載されている、後のクエリ実行段階の間にこのローカル・データ・キャッシュから読み取られるだけでよく、アプリケーション・サービスは、このための特定のＡＰを用いてこのデータにアクセスする。
【００３６】
図６（番号６２）は、クエリ実行段階すなわち段階ＩＩＩを表し、ステップ１で、クエリ・リクエストが、データベース・サーバ上で実行されるユーザ定義関数によって開始される。このクエリ・リクエストは、クエリ実行の特定のターゲット・テーブルを含む、並列コンピュータのノード上で実行されているアプリケーション・サービスが必要とする入力パラメータ値すべてをカプセル化するものである。このクエリ・リクエストの終点は、並列コンピュータのフロント・エンド・ホスト上で実行されているアプリケーション・サービス・ホスト・コンポーネントである。次に、ステップ２で、このアプリケーション・サービス・ホストが、このクエリ・リクエストを、クエリ・パーティション・ディスパッチャに保持されているキューのセットにステップ２で挿入する（上記の段階ＩＩで特定のターゲット・テーブルに割り当ておよび指定された各パーティションに対し、個別のキューが保持される）。最終的に、クエリ・パーティション・ディスパッチャは、ステップ３で、このクエリ・リクエストを適切なパーティションへ出し、ステップ４でジョブの完了を待ち、オプションで、ジョブ状態コードを生成して、アプリケーション実行リクエストを発行しているデータベース・サーバ内のユーザ定義関数へ返す。クエリ・ストリング自体は、アクティブ・クエリ・パーティションにおいて各ノードのアプリケーション・サービスのサービス・ラッパに割り当てられているメモリ・バッファにコピーされる。クエリの結果は、このパーティション内の各ノードにて、アプリケーション・サービスのサービス・ラッパ内の結果キャッシュに格納され、ステップ５で、並列コンピュータ・ホスト上の結果コレクタ・コンポーネント内に集められ、その後に、集められた結果データが、ステップ６に示されているように、データベース・サーバ上の元のユーザ定義関数に返される。遠隔実行を呼び出す元のユーザ定義関数は、テーブル・ユーザ定義関数であるか、またはテーブル・ユーザ定義関数に組み込まれているため、その結果、こうした結果は、複合ＳＱＬクエリ・ワークフローの一部としてさらに処理可能であり、すなわち、結果列値に基づいてＯＲＤＥＲ  ＢＹもしくはＧＲＯＵＰ  ＢＹ演算を実行すること、またはこの結果テーブルを、クエリ実行の全体的なワークフローによる要求に応じて他のデータ・テーブルに結合することができる。あるいは、各ノード上のアプリケーション・サービス・ラッパは、ステップ７および８に示されているように、段階ＩＩにあるようなデータベース通信リレーを用いて、結果を直接、元のデータベース上の特定の結果テーブルに挿入することもできる（この手法は、遠隔実行の元のユーザ定義テーブル関数が、そのリターン・テーブル値を生成するためにこの結果テーブルにアクセスすることを許可されていればデフォルトとすることができるが、一部のデータベース・プラットフォームでは、そのようなユーザ定義テーブル関数は、典型的にはデータベース・テーブルへのアクセスをブロックされている）。
【００３７】
本発明の詳細な実施形態
詳細な実施形態として、バイオインフォマティクス配列照合アプリケーションについて記載するが、これは、データベース内のユーザ定義プログラムとして実装され得る計算集中的なアルゴリズムのよい例を提供し、したがって本発明の利益を享受することができる。具体的に言うと、ＦＡＳＴＡパッケージ（ｈｔｔｐ：／／ｈｅｌｉｘ．ｎｉｈ．ｇｏｖ／ｄｏｃｓ／ｇｃｇ／ｓｓｅａｒｃｈ．ｈｔｍｌから入手可能）のＳＳＥＡＲＣＨプログラムについて考察するが、これは、スミス−ウォーターマン・アルゴリズム（Ｔ．Ｆ．スミス（Ｓｍｉｔｈ）およびＭ．Ｓ．ウォーターマン（Ｗａｔｅｒｍａｎ）、「Ｃｏｍｐａｒｉｓｏｎ  ｏｆ  Ｂｉｏ−ｓｅｑｕｅｎｃｅｓ」、Ａｄｖａｎｃｅｓ  ｉｎ  Ａｐｐｌｉｅｄ  Ｍａｔｈｅｍａｔｉｃｓ、第２巻、ｐ．４８２〜４８９（１９８１年））を、Ｗ．Ｒ．ピアソン（Ｐｅａｒｓｏｎ）、「Ｃｏｍｐａｒｉｓｏｎ  ｏｆ  ｍｅｔｈｏｄｓ  ｆｏｒ  ｓｅａｒｃｈｉｎｇ  ｐｒｏｔｅｉｎ  ｓｅｑｕｅｎｃｅ  ｄａｔａｂａｓｅｓ」、Ｐｒｏｔｅｉｎ  Ｓｃｉｅｎｃｅ、第４巻、ｐ．１１４５〜１１６０（１９９５年）において実装されているように提供する。他の配列照合アルゴリズム（前に説明したＢＬＡＳＴなど）に比べて、こちらの方が計算集中的なアルゴリズムであるが、高感度な類似性照合結果をもたらし、比較テストでは遠縁のペアの配列においても一致を回復するために使用可能である。
【００３８】
詳細な実施形態において用いられる商用データベース・サーバ・プラットフォームは、２ＧＢのＲＡＭストレージを備え１０００Ｍｂｉｔイーサネット（Ｒ）インターフェースを備え、デュアル・プロセッサ、Ｘｅｏｎ  ２．４ＧＨｚ  ＣＰＵで実行されるＩＢＭ（ＩＢＭ社の登録商標）ＤＢ２（ＩＢＭ社の登録商標）バージョン９．１（ｈｔｔｐ：／／ｗｗｗ．ｉｂｍ．ｃｏｍ／ｓｏｆｔｗａｒｅ／ｄａｔａ／ｄｂ２）である。
【００３９】
クエリ・ワークロードの計算集中的な部分の遠隔実行に用いられるＨＰＣプラットフォームは、１０２４の計算ノードから成る単一ラックのＩＢＭ  Ｂｌｕｅ  Ｇｅｎｅ／Ｌ（ＩＢＭ社の登録商標）ｅ−ｓｅｒｖｅｒ（ＩＢＭ社の登録商標）プラットフォーム（ｈｔｔｐ：／／ｗｗｗ．ｒｅｓｅａｒｃｈ．ｉｂｍ．ｃｏｍ／ｂｌｕｅｇｅｎｅ）から成り、各計算ノードが７００ＭＨｚで動作する２つのＰｏｗｅｒＰＣ（ＩＢＭ社の登録商標）４４０プロセッサから成り、ノードごとに５１２ＭＢのＲＡＭストレージを備える。ＩＢＭ  Ｂｌｕｅ  Ｇｅｎｅ／Ｌのプログラムは、典型的に、ＭＰＩメッセージ・パッシング・ライブラリを用いて書かれるが、ここでのＢｌｕｅ  Ｇｅｎｅ／Ｌプラットフォームの特定用途は、いかなる通信ライブラリも必要としない。とはいえ、本発明によってそのようなライブラリの使用が妨げられることはない。当業者によって、全般的な手法を、他の並列コンピュータに適応させることが可能であり、例えば、他のプラットフォームで実装および評価されている、ＳＳＥＡＲＣＨアルゴリズムのマルチスレッドまたは共有メモリ・バージョンも、本発明の他の特定の実施形態を得るために使用可能である（例えば、Ｙ．チェン（Ｃｈｅｎ）、Ｊ．マク（Ｍａｋ）、Ｃ．スカウラタナノンド（Ｓｋａｗｒａｔａｎａｎｏｎｄ）およびＴ−Ｈ．Ｋ．ツェン（Ｔｚｅｎｇ）、「Ｓｃａｌａｂｉｌｉｔｙ  Ｃｏｍｐａｒｉｓｏｎ  ｏｆ  Ｂｉｏｉｎｆｏｒｍａｔｉｃｓ  ｆｏｒ  Ａｐｐｌｉｃａｔｉｏｎｓ  ｏｎ  ＡＩＸ  ａｎｄ  Ｌｉｎｕｘ  ｏｎ  ＩＢＭ  ｅ−ｓｅｒｖｅｒ  ｐＳｅｒｉｅｓ  ６９０」、ｈｔｔｐ：／／ｗｗｗ．ｒｅｄｂｏｏｋｓ．ｉｂｍ．ｃｏｍ／ａｂｓｔｒａｃｔｓ／ｒｅｄｐ３８０３．ｈｔｍｌ、ＩＢＭ  Ｒｅｄｂｏｏｋ、２００４年）。
【００４０】
本発明を実現するよう、データベース・プラットフォームとＨＰＣプラットフォームとの他の組み合わせを構成する際に、特定の技術的問題が生じ得るが、これは当業者によって解決可能である。この組み合わせがＩＢＭ  ＤＢ２データベース・プラットフォームと、ＩＢＭ  Ｂｌｕｅ  Ｇｅｎｅ／Ｌ並列コンピュータ・プラットフォームである場合（ならびに本発明者らが認識している商用データベースと並列コンピュータ・プラットフォームとの他の等価な組み合わせに関して）、今のところ、データベース・サーバと、並列コンピュータ上の個々の計算ノードとの間の通信に対するＡＰＩまたはプログラミング・サポートはない。ＩＢＭ  Ｂｌｕｅ  Ｇｅｎｅ／Ｌについては、個々の計算ノードは、完全スタンドアロンのオペレーティング・システムにおいて利用可能なサービスのサブセットを提供するだけのディスクレス・システムである。したがって、完全なＬｉｎｕｘ（Ｒ）オペレーティング・システムを実行し、ローカル・エリア・ネットワークを介してＢｌｕｅ  Ｇｅｎｅ／Ｌシステムに接続されている別個のＩＢＭ  Ｐ−ｓｅｒｉｅｓサーバが、以下を含む本発明の様々なコンポーネントをホストするために用いられる：
１）クエリ処理アプリケーションに利用可能なＢｌｕｅ  Ｇｅｎｅ／Ｌ計算ノード・パーティションのレジストリを含むスケジューラ・コンポーネント、
２）クエリ・ワークフローの様々なコンポーネントを実行するためにデータベース・サーバから開始されるＳＯＡＰベースのウェブ・サービス・コールをサポートするウェブ・サーバ・コンポーネント、
３）Ｂｌｕｅ  Ｇｅｎｅ／Ｌコンピュータの計算ノード上で予約およびアプリケーションの起動を行うジョブ送信インターフェース・コンポーネント、
４）個々のＢｌｕｅ  Ｇｅｎｅ／Ｌ計算ノードへの１つ以上のソケット接続を保持するデータベース・リレー・コンポーネントであって、こうしたソケット接続上で計算ノードから中継される様々なデータベース・コマンドを実行し、こうしたデータベース・コマンドの結果セットまたは完了コードを、データベース・クエリ・リクエストを開始する元の計算ノードへ伝達する役割を果たす、データベース・リレー・コンポーネント。
【００４１】
関連したＦＡＳＴＡ配列データベースが、単純なスキーマを用いてＤＢ２リレーショナル・データベースにインポートされた。それによって、各配列データベース（例えばショウジョウバエ）について、列［ｉｄ（整数），名前（文字列），説明（文字列），配列（ｃｌｏｂ）］から成るテーブルにデータがそれぞれ格納される。ここで、ｉｄフィールドは、連続したレコード番号であり、名前（ＮＣＢＩ識別子である）および説明フィールドは、ＦＡＳＴＡデータベースを構文解析してこれらを対応するＤＢ２テーブルに挿入するスクリプトを用いて、ＦＡＳＴＡフォーマットの各配列のヘッダから取られる。１４３３１行あるショウジョウバエ・データベース（ショウジョウバエ・ヌクレオチド・データベースのタンパク質コード配列翻訳から成る）が、本願明細書に記載される結果に用いられた。
【００４２】
スミス−ウォーターマン・アルゴリズム実装は、ＦＡＳＴＡパッケージ（ｈｔｔｐ：／／ｈｅｌｉｘ．ｎｉｈ．ｇｏｖ／ｄｏｃｓ／ｇｃｇ／ｓｓｅａｒｃｈ．ｈｔｍｌから）のＳＳＥＡＲＣＨプログラムであり、これを並列コンピュータ上のアプリケーション・サービスとして実装するためにこのレガシー・コードに対して加えられた変更は、極めて微少なものであった。メイン・エントリ・ポイントが、ノード・サービス・ラッパを、アプリケーション・スケジューラに接続できるように必要なポートおよびアドレスを用いて始動させるよう変更された（図３のステップ３に示されているように）。その結果、このノード・アプリケーション・サービス・ラッパ（ターゲット・ライブラリ配列の分割された適切なサブセット、および対応するクエリ結果セットを維持するスクラッチ・メモリ、ならびに入力クエリ配列用のメモリ・バッファを含む）は、アプリケーション・サービス・クライアントをアプリケーション・スケジューラに登録し、ターゲット・ライブラリ配列のバッファ更新を実行し、新たなクエリ・リクエストそれぞれに関してこのターゲット・ライブラリに対しＳＳＥＡＲＣＨアルゴリズムを実行する役割を果たす。ＦＡＳＴＡパッケージは、既に、ターゲット・ライブラリ配列を読み出すためのファイルおよびデータベース・フォーマットの広範囲なリストをサポートしており、その結果、ノード・サービス・ラッパのスクラッチ・メモリのデータにアクセスするアクセス機能を、さらに別の入力ソースとして容易に追加することができる。
【００４３】
したがって、要約すれば、この特定の実施形態を可能にするためにＦＡＳＴＡパッケージ・アプリケーションに加えて必要であった一般的なコンポーネントには、計算ノード・サービス・ラッパ機能性、ノード・サービス・ラッパ・スクラッチ・メモリのアクセス機能、およびデータベース・リレー・コンポーネントがあった。こうしたコンポーネントはすべて、ＦＡＳＴＡパッケージのＳＳＥＡＲＣＨに似た広い種類のアプリケーション・サービスによる再利用を提供する。
【００４４】
この特定の実施形態に基づくＳＱＬクエリの例が、図６に示されている。このクエリは、ターゲット配列ライブラリ、照合される入力配列の記述子ストリング、入力配列自体、および所望の上位一致数を含むパラメータ・リストを備えるＤＢ２ユーザ定義テーブル関数ｓｓｅａｒｃｈ＿ｃａｌｌを開始する。示されているようにＳＱＬクエリ・インターフェースから呼び出されると、照合および順位付けがＢｌｕｅ  Ｇｅｎｅ／Ｌ計算ノード上で実行され、結果が図２に示されているように返される。特許の最終版で、高速化およびパフォーマンス測定が提供される。
【００４５】
示された実施形態に従って本発明について説明してきたが、当業者であれば当然のことながら、この実施形態には変形があり得、そうした変形は、本発明の意図および範囲内に入ることになる。したがって、当業者によって、添付の特許請求の範囲の意図および範囲から逸脱することなく、多数の変更が加えられてよい。
【図１】
2010539594.tif 000003
【図２】
2010539594.tif 000004
【図３】
2010539594.tif 000005
【図４】
2010539594.tif 000006
【図５】
2010539594.tif 000007
【図６】
2010539594.tif 000008
【手続補正書】
【提出日】平成22年7月22日(2010.7.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数並列計算ノードを構成する高パフォーマンス並列コンピューティング（ＨＰＣ）プラットフォームと、
汎用リレーショナル・データベース・プラットフォームと、
前記リレーショナル・データベース・プラットフォーム上の１つ以上のクエリのワークフローの一部を構成する、計算集中的なユーザ定義ワークロードおよび対応するデータ・ビューを、前記ＨＰＣプラットフォーム上で実行されるよう送出する手段であって、前記送出は、前記ＨＰＣへのデータ・ビュー転送を同期された形で実行するのに最適な数の接続を用いる、前記手段と、
並列タスクを前記複数ノードの間で実行する、並列計算ノード上の実際のサービスをカプセル化する手段であって、繰り返しの複数クエリが実行されるデータ・ビューの別個のサブ・パーティションを格納する関連のメモリ・ストレージ・デバイスを含む、前記手段と、
前記ＨＰＣプラットフォーム上で実行された前記ワークロードからの複数結果を前記データベースのクエリの最終的な結果セットに組み入れるために、これらの結果を前記リレーショナル・データベース・プラットフォームへ同時に返す手段と、
を含むコンピュータ・システム。
【請求項２】
前記高パフォーマンス並列コンピューティング・システムは、前記送出される計算集中的なワークロードを、前記ワークロードが単一のクエリ、または類似もしくは関連する一連のクエリ、または独立した同時のクエリのセットから成る場合に効率の高い形で実行可能なように、処理ユニットおよび高速メモリの点でより大きなコンピュータ計算リソースを展開することができる、請求項１に記載のシステム。
【請求項３】
前記高パフォーマンス並列コンピューティング・システムは、共有メモリまたは分散型メモリ・メッセージ・パッシング・アプリケーションの並列実行をサポートし、その結果、データベースに組み込まれたユーザ定義プログラムに関して通常は直接サポートされていないプログラミング・モデルをサポートする、請求項２に記載のシステム。
【請求項４】
新たなクエリ呼び出しそれぞれに関して、前記データベース・サーバと、前記高パフォーマンス並列コンピュータ・システムとの間でデータをさらにやり取りする必要なく、同じデータ・テーブルに対する一連のクエリによって生じる一連の計算集中的なワークロードが効率的に実行されるように、前記高パフォーマンス並列コンピューティング・システムのノードの前記関連のメモリ・ストレージ・デバイスは、より高速なコンピュータ計算処理のためにテーブル・データをキャッシュするインメモリ構造を含む、請求項２に記載のシステム。
【請求項５】
前記高パフォーマンス並列コンピューティング・システムは、前記データベース・サーバ上の独立した同時の並列クエリの対応するセットから発生する、独立した同時の計算集中的ワークロードのセットを、同じデータ・テーブルのさらなるコピーを得るために前記データベース・サーバに戻る必要性が原因で必要となる大きな通信オーバーヘッドなしで効率的に実行できるように、前記データベースのデータの高速レプリカを作成することができる、請求項２に記載のシステム。
【国際調査報告】
2010539594.tif 000009