JP5675840B2 - クエリー管理 - Google Patents

クエリー管理 Download PDF

Info

Publication number
JP5675840B2
JP5675840B2 JP2012546227A JP2012546227A JP5675840B2 JP 5675840 B2 JP5675840 B2 JP 5675840B2 JP 2012546227 A JP2012546227 A JP 2012546227A JP 2012546227 A JP2012546227 A JP 2012546227A JP 5675840 B2 JP5675840 B2 JP 5675840B2
Authority
JP
Japan
Prior art keywords
query
interval
data
engine
storage medium
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2012546227A
Other languages
English (en)
Other versions
JP2013516008A5 (ja
JP2013516008A (ja
Inventor
スタンフィル,クレイグ,ダブリュー.
マクリーン,ジョン
Original Assignee
アビニシオ テクノロジー エルエルシー
アビニシオ テクノロジー エルエルシー
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アビニシオ テクノロジー エルエルシー, アビニシオ テクノロジー エルエルシー filed Critical アビニシオ テクノロジー エルエルシー
Publication of JP2013516008A publication Critical patent/JP2013516008A/ja
Publication of JP2013516008A5 publication Critical patent/JP2013516008A5/ja
Application granted granted Critical
Publication of JP5675840B2 publication Critical patent/JP5675840B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

関連出願の相互参照
本出願は、参照により本明細書に組み込まれる2009年12月23日出願の米国特許出願第61/289778号に対する優先権を主張するものである。
本明細書はクエリー(queries)の管理に関する。
いくつかのデータ記憶システム(例えば、データベース)は、多数のクエリーの処理をサポートするような何らかの方法で、記憶された大量のデータを記憶する。例えば、いくつかのシステムは、並列記憶装置、並列クエリー処理エンジン、又はその両方の使用による並列処理能力を備える。
ある一つの態様では、一般に、1つ又は複数のデータ・ソースについて実行されるクエリーを管理するための方法は、少なくとも第1のクエリーを記憶媒体に記憶することと、処理のために第1のクエリーを選択することと、第1のクエリー間隔に対して1つ又は複数のデータ・ソース内のデータの第1の部分についての第1のクエリーを処理するようにクエリーエンジンに指示することと、データの第1の部分についての第1のクエリーの処理に基づいてクエリーエンジンから結果データを受信することと、第1のクエリー間隔後に第1のクエリーの状態を記憶媒体に保存することと、第1のクエリー間隔後の第2のクエリー間隔の間に第2のクエリーを処理するようにクエリーエンジンに指示することと、第2のクエリー間隔後の第3のクエリー間隔の間に1つ又は複数のデータ・ソース内のデータの第2の部分についての第1のクエリーを処理するようにクエリーエンジンに指示することを含む。
諸態様は以下の特徴のうちの1つ又は複数を含むことができる。
この方法は、第1のクエリーに関連する優先順位を記憶媒体に記憶することと、処理のために第1のクエリーを選択する前に第1のクエリーに関連する優先順位を変更することをさらに含み、処理のために第1のクエリーを選択することが部分的に優先順位に基づいてクエリーを選択することを含む。
第1のクエリー間隔は所定の時間量によって定義される。
第1のクエリーの優先順位は、1つ又は複数のデータ・ソース内のデータのうちのどのくらいの量が、第1のクエリー間隔に対して第1のクエリーが実行されるデータの第1の部分に含まれるか、に影響する。
第1のクエリーを記憶することは、第1のクエリーを提供したリクエスタに通知される前に使用可能になるべき結果データの数量の通知しきい値を記憶することを含む。
この方法は、結果データの数量が通知しきい値を超えた時にリクエスタに通知することをさらに含み、第1のクエリーの状態を保存することがクエリーエンジンから受信した結果データの数量を記憶することを含む。
この方法は、リクエスタからの要求次第で結果データを返すことと、リクエスタに返された結果データの数量を記憶媒体に記憶することをさらに含む。
クエリーを選択することは、クエリーエンジンから受信した結果データの数量とリクエスタに返された結果データの数量に基づくものである。
第1のクエリーの状態を保存することは、第1のクエリーを中断するようクエリーエンジンに指示することと、第1のクエリーが中断された後に第1のクエリーの状態を保存することを含む。
第2のデータ部分に関する第1のクエリーを処理するようクエリーエンジンに指示することは、第1のクエリーの保存状態をロードすることと、第1のクエリーを再開するようクエリーエンジンに指示することを含む。
第1のクエリーの状態を保存することは、二次索引(secondary index)へのオフセットを保存することを含む。
二次索引はブロック圧縮索引付きファイル(block compressed indexed file)である。
この方法は、第1のクエリーを複数の副クエリーに分割することと、その副クエリーのうちの少なくともいくつかを同時に処理するようクエリーエンジンに指示することをさらに含む。
第1のクエリー間隔が始まった後で第2のクエリーが受信され、記憶媒体に記憶される。
第1のクエリー間隔が始まる前に第2のクエリーが受信され、記憶媒体に記憶される。
他の態様では、一般に、コンピュータ可読媒体は、1つ又は複数のデータ・ソースについて実行されるクエリーを管理するためのコンピュータ・プログラムを記憶する。このコンピュータ・プログラムは、少なくとも第1のクエリーを記憶媒体に記憶することと、処理のために第1のクエリーを選択することと、第1のクエリー間隔に対して1つ又は複数のデータ・ソース内のデータの第1の部分についての第1のクエリーを処理するようにクエリーエンジンに指示することと、データの第1の部分についての第1のクエリーの処理に基づいてクエリーエンジンから結果データを受信することと、第1のクエリー間隔後に第1のクエリーの状態を記憶媒体に保存することと、第1のクエリー間隔後の第2のクエリー間隔の間に第2のクエリーを処理するようにクエリーエンジンに指示することと、第2のクエリー間隔後の第3のクエリー間隔の間に1つ又は複数のデータ・ソース内のデータの第2の部分についての第1のクエリーを処理するようにクエリーエンジンに指示することをコンピュータに実行させるための命令を含む。
他の態様では、一般に、1つ又は複数のデータ・ソースについて実行されるクエリーを管理するためのシステムが提供される。このシステムは、少なくとも第1のクエリーを記憶する記憶媒体を含む。このシステムは、1つ又は複数のデータ・ソース内のデータに関するクエリーを処理するように構成されたクエリーエンジンを含む。また、このシステムは、処理のために第1のクエリーを選択し、第1のクエリー間隔に対して1つ又は複数のデータ・ソース内のデータの第1の部分についての第1のクエリーを処理するようにクエリーエンジンに指示し、第1のデータ部分についての第1のクエリーの処理に基づいてクエリーエンジンから結果データを受信し、第1のクエリー間隔後に第1のクエリーの状態を記憶媒体に保存し、第1のクエリー間隔後の第2のクエリー間隔の間に第2のクエリーを処理するようにクエリーエンジンに指示し、第2のクエリー間隔後の第3のクエリー間隔の間に1つ又は複数のデータ・ソース内のデータの第2の部分についての第1のクエリーを処理するようクエリーエンジンに指示するように構成されたサーバも含む。
他の態様では、一般に、1つ又は複数のデータ・ソースについて実行されるクエリーを管理するためのシステムが提供される。このシステムは、少なくとも第1のクエリーを記憶する記憶媒体を含む。このシステムは、1つ又は複数のデータ・ソース内のデータについてのクエリーを処理するように構成されたクエリーエンジンを含む。このシステムは記憶媒体内のクエリーを管理するための手段を含み、その管理は、第1のクエリー間隔に対して1つ又は複数のデータ・ソース内のデータの第1の部分についての第1のクエリーを処理するようにクエリーエンジンに指示することと、データの第1の部分についての第1のクエリーの処理に基づいてクエリーエンジンから結果データを受信することと、第1のクエリー間隔後に第1のクエリーを記憶媒体に保存することと、第1のクエリー間隔後の第2のクエリー間隔の間に第2のクエリーを処理するようにクエリーエンジンに指示することと、第2のクエリー間隔後の第3のクエリー間隔の間に1つ又は複数のデータ・ソース内のデータの第2の部分についての第1のクエリーを処理するようクエリーエンジンに指示することを含む。
諸態様は以下の利点のうちの1つ又は複数を含むことができる。
部分的にクエリーに関連する優先順位に基づいてクエリーを選択すると、並列クエリー処理システムにおいて効率的な処理が可能になる。クエリーの各部分を部分的に処理し、次に中断することができる複数の間隔に時間をスライスすると、いくつかのクエリーをより速やかに処理することができ、特に優先順位の高いクエリーの場合、システム内の潜在的なバックログが低減される。
本発明のその他の特徴及び利点は、以下の説明並びに特許請求の範囲から明らかになるであろう。
クエリー処理を描写する概略図である。 クエリー処理を描写する概略図である。 データ記憶システムのブロック図である。 索引付き圧縮データ記憶装置の概略図である。 クエリーの処理に関連する時間間隔を示す図である。 クエリーの処理に関連する時間間隔を示す図である。 クエリーの処理に関連する時間間隔を示す図である。 クエリーの処理に関連する時間間隔を示す図である。 クエリーの処理に関連する時間間隔を示す図である。 クエリーの処理に関連する時間間隔を示す図である。 クエリーの処理に関連する時間間隔を示す図である。 クエリーの処理に関連する時間間隔を示す図である。 スライスされたクエリー処理の概略図である。 索引付き圧縮データ記憶装置のクエリー処理を示す概略図である。 クエリーを管理するためのプロセスのフローチャートである。 クエリーを管理するためのプロセスのフローチャートである。
1 概要
図1を参照すると、いくつかの問題が分散クエリー管理において発生し得る。例えば、先入れ先出し法でデータ記憶システムのクエリーエンジンにクエリーが引き渡されると、システムはバックログになる可能性がある。いくつかのケースでは、引き渡されたクエリーは、あまりリソースを必要とせずに迅速に実行される短いクエリー102、104、108、112、118と、実行するのにより長い時間を必要とし、大量のシステム・リソースを使用する長いクエリー110、114、116と、短いクエリーと長いクエリーの間のどこかに入るクエリーとを含む可能性がある。特定のクエリーが実行される前にそのクエリーが要求するシステム・リソースの量をあらかじめ決めることは実用的ではない可能性がある。図1は、複数のクエリーエンジンを使用してクエリーを処理するためのシステムの一例を示している。クエリーは、非同期的に受信されて、待ち行列101に記憶され、データ記憶システムのクエリーサーバ100上で実行されるクエリーエンジンによって処理される機会を待つ。この例では、初めに、長いクエリー116が処理のために第1のクエリーエンジン120に割り当てられ、短いクエリー118が処理のために第2のクエリーエンジン122に割り当てられる。図2を参照すると、短い時間の後に短いクエリー118は完了した可能性があり、次に並んでいるクエリーである長いクエリー114が空いているクエリーエンジン122に割り当てられる。この時点で残りのクエリー102、104、108、110、112は、長いクエリー116、114のうちの一方が処理を完了し、クエリーエンジン内の処理リソースを解放するまで待つ。この現象は短いクエリーの待ち時間を増やすものであり、迅速応答が期待されているクエリーにおいて受け入れがたい遅延を引き起こす可能性がある。
図3を参照すると、データ記憶システム300は、クエリーを実行するための要求を受信するために、フロントエンド・サービス302、例えば、ウェブ・サービスを提供するように構成される。仲介サーバ304は複数のクエリーエンジン312によるクエリー実行をスケジュールする。各クエリーは割り当てられた期間に対して実行が許可され、その期間は、例えば、時間(例えば、CPUクロックによって測定されたもの)、持続時間、処理された行数、又は検索された行数によって測定され得る。クエリーエンジン312は、1つ又は複数のデータ・ソース310A、310B、310Cからのデータにアクセスし、処理セット314を生成するためにクエリーを処理する。データ・ソースを提供する記憶装置は、例えば、仲介サーバ304を実現するコンピュータに接続された記憶媒体上に記憶されていて、システム300にとってローカルなもの(例えば、ハードディスク・ドライブ)である場合もあれば、リモート接続により通信接続しているリモート・システム上でホストとして処理され、仲介サーバ304にとってリモートなもの(例えば、メインフレーム)である場合もある。
仲介サーバ304は結果セット314を管理する。仲介サーバ304は、クエリーに関する追加情報、例えば、クエリーの優先順位、要求された行数、クエリーから返された行数、リクエスタに返された行数、クエリーがどのように使用されるかを示す表示要素(indication)、一度に必要な行数、クエリーがクエリーエンジンによって最後に実行された時間、及び状況標識を記憶することができる。状況標識は、クエリーが待っていること、実行していること、中断されていること、割り込まれていること、又は完了したことを示すことができる。いくつかの編成(arrangements)では、クエリー状態は、クエリー処理中に発生したエラー条件の存在も示すことができる。待ち状態にあるクエリーは、現在実行されていないが、実行する資格のあるものである。実行状態にあるクエリーは、クエリーエンジンによって現在処理されている。中断状態にあるクエリーは、クライアントによって現在要求されている行数を仲介サーバがすでに返したので、実行する資格のないものである。割り込み状態にあるクエリーは、優先順位がより高いクエリーによって先取りされたので、実行する資格のないものである。完了状態にあるクエリーは実行を完了したものである。いくつかの編成では、追加の状況がサポートされる。
仲介サーバ304は、クエリー結果が処理の準備ができていることをいつ、どのようにリクエスタに通知しなければならないかを同定する情報も記憶し得る。いくつかの編成では、複数のクエリーエンジンが単一クエリーの種々の部分について独立して動作し得る。各クエリーエンジンは仲介データベースを独立に更新する。トリガ・イベントが発生した時、例えば、結合されたクエリーエンジンが要求された行数を返した時に、通知イベントがトリガされる。
いくつかの実装例では、仲介サーバは仲介論理モジュール306と仲介データベース308とを含む。いくつかの実装例では、仲介論理モジュール306は、個々のクエリーエンジン312、フロントエンド・サービス302に組み込まれる場合もあれば、複数のサービスに分割される場合もある。クエリーエンジン312は、結果セット314で使用可能な行数について仲介データベース308を更新し得る。
いくつかの実装例では、図4を参照すると、データ・ソース310は、索引付き圧縮データ記憶装置402を含む。索引付き圧縮データ記憶装置は、例えば、ファイル内に記憶された複数の圧縮データ・ブロック404を含む。それぞれの圧縮データ・ブロックは、その圧縮データ・ブロック内のデータの位置特定を可能にする、少なくとも1つの索引406に関連付けられている。いくつかの実装例では、第1のキー(例えば、一次キー)に基づいてサーチ可能な一次索引が提供され、その他のキー(例えば、外部キー)に基づいてサーチ可能な1つ又は複数の二次索引が提供される。索引のうちのいくつかは、それぞれのキー値が固有のものであるサロゲート・キーで構成することができ、その他の索引は、キーの値がデータ・セット内で固有のものではない可能性がある自然キーに基づくものである。いくつかの実装例では、自然索引を結合して、単一連結索引を作成することができる。索引付き圧縮データ記憶技法及びシステムについては、参照により本明細書に組み込まれる米国特許出願公報第2008/0104149A1号により詳細に記載されている。
2 クエリースライシング
図5Aを参照すると、一連のクエリーA502、B504、C506、及びD508が、異なるクエリーに関係付けられた時間間隔を示す図に示されている。クエリーが引き渡された順序で実行される場合、クエリーAは間隔502の間に実行されて完了し、次にクエリーBは間隔504の間に実行されて完了し、次に間隔506の間のクエリーCと間隔508の間のクエリーDが続く。これらの条件下では、クエリーAは時間510で完了するまで結果を返さず、クエリーBは時間512で完了するまで結果を返さず、クエリーCは時間514で完了するまで結果を返さず、クエリーDは時間516で完了するまで結果を返さないであろう。クエリーDは短いクエリーであるが、たまたま他の長いクエリーの後ろに位置していたので結果を返すのに長い時間を要する。
仲介サーバ304のいくつかの実装例では、クエリーを完了まで必然的に順次実行する代わりに、仲介サーバは1つのクエリーを複数の異なる小さい部分に分割する。クエリーエンジン304は、特定の間隔の間にクエリーを実行するよう指示される。この間隔は、期間、返すべき行数、処理された行数、又はその他の何らかの基準に基づいて定義することができる。この手法を使用して、図5Bを参照すると、クエリーAは間隔528の間に実行され、クエリーBは間隔530の間に実行され、クエリーCは間隔532の間に実行され、クエリーDは間隔534の間に実行され(完了する)、次にクエリーAは第2の間隔の間にもう一度実行される。いくつかのケースでは、1つのクエリーが処理されるそれぞれの間隔後にそのクエリーをサブミットしたプロセスに対し、そのクエリーによるいくつかの結果が返される可能性がある。例えば、クエリーAによるいくつかの結果は時間520後に返され、クエリーB、C、及びDによるいくつかの結果は、それぞれ時間522、524、526後に返される可能性がある。これらのクエリーを小さい実行間隔に分割することにより、システム300は、他のクエリーが実行される前にクエリーが完了するのを待たなければならない場合より速やかにより多くのクエリーに関するいくつかの結果を生成することができる。さらに、他のクエリーを遅延させるというトレードオフにより、いくつかのクエリーは、本来完了したと思われる時期より速やかに完了することができる。この例では、クエリーDは時間526で完了し、クエリーCは時間540で完了し、クエリーAは時間542で完了し、クエリーBは時間544で完了する。従って、この例では、長いクエリーA及びBを遅延させるという犠牲を払って、短いクエリーC及びDの方がより速やかに完了する。
クエリーの分割方法の決定は、システムに望ましい動作特性に依存しうる。例えば、時間に基づいてクエリーを分割することは、それぞれのクエリーが特定の量の作業を実行できることを保証する可能性があるが、その作業がどのくらいの長さの暦時間を費やせるかという保証はなく、1つの実行間隔でどのくらいの行数が返されるかについても保証はない。対照的に、いくつかの行が返されるまでクエリーを実行できるようにすることにより、いくつかの結果を生成するためにどのくらいの数の実行間隔が必要になるかが決定されるが、1つの間隔がどのくらい長く持続するかについての保証はない。いくつかの行が処理されるまでクエリーを実行できるようにすることは、システムに、クエリーを完了するのにどのくらいの数の実行間隔が必要になるかを同定することを可能にするが、特定の数の行を返すのにどのくらいのサイクル数が必要であるか又は具体的に特定の実行サイクルがどのくらいの長さの時間を要するかを知らせることはない。
クエリーを処理するための時間は、単一クエリーのみが処理されている場合でも複数の実行間隔(又は「クエリー間隔」)に分割することができる。あるクエリー間隔の終わりに、新しいクエリーが到着している場合、処理されているクエリーは中断され、次のクエリー間隔を使用して新しいクエリーを処理する。代わって、そのクエリー間隔の終わりに新しいクエリーが到着していない場合、処理されているクエリーは追加のクエリー時間の間に処理を続行することができる。例えば、図6Aの例では、クエリーBはクエリーAの処理中の時間610に到着し、図6Bの例では、クエリーA又はクエリーBのいずれかの処理が始まる前に両方のクエリーA及びBが到着する。
図6Aの例では、クエリーAは間隔602の間に実行され、クエリーAが間隔602の終わりに完了していない場合、システムは、追加のクエリー間隔の間にクエリーAを処理しなければならないかどうか又は他のクエリーが処理を待っているかどうかを判断するためにチェックする。クエリーBは間隔602の終わりにまだ到着していないので、クエリーAはクエリー間隔604の間に処理される。同様に、クエリーAは次のクエリー間隔606の間にも処理される。しかし、クエリー間隔606の終わりに、システムは、時間610に到着したクエリーBを間隔608の間に処理しなければならないと判断する。次に、それぞれが完了するまで(この例では、クエリーAは時間612に完了し、クエリーBは時間614に完了する)交互の間隔においてクエリーA及びBが処理される。図6Bの例では、クエリーAは間隔620の間に実行され、クエリーAが間隔620の終わりに完了していない場合、システムは、追加のクエリー間隔の間にクエリーAを処理しなければならないかどうか又は他のクエリーが処理を待っているかどうかを判断するためにチェックする。クエリーBは間隔620の終わり以前にすでに到着しているので、クエリーBはクエリー間隔622の間に処理される。次に、それぞれが完了するまで交互の間隔においてクエリーA及びBが処理される。
クエリー間隔の終わりにクエリーを中断することは、クエリーの状態を仲介データベースに保存することを含む。ある編成では、1つの間隔後に仲介データベース内でクエリー状態を「中断」又は他の状態に更新し、そのクエリーが実行する資格のないものであることを示すことができる。所定の間隔後に、クエリーの状況を「待ち」に更新し、そのクエリーをもう一度実行できるようにすることができる。他の編成では、仲介サーバは自動的に所定の間隔後に直ちにクエリーをスケジュールする。
3 クエリーの優先順位付け及び再優先順位付け
仲介データベースは個々のクエリーに関係付けられた優先順位を記憶し得る。この優先順位は、クエリーが実行される頻度及び方法に影響し得る。図7Aを参照すると、優先順位の高いクエリーAには、クエリーB(間隔704の間に処理される)又は優先順位が低いクエリーC(間隔706の間に処理される)より大きい実行間隔702が提供され得る。この例では、優先順位の高いクエリーAにはクエリーBに提供される実行間隔704より大きい実行間隔702が提供され、クエリーBには優先順位の低いクエリーCに提供される実行間隔706より大きい実行間隔704が提供される。或いは、図7Bを参照すると、優先順位の高いクエリーAには標準的な優先順位のクエリーB(間隔710の間に処理される)より高い頻度の実行間隔708が提供され、標準的な優先順位のクエリーBには優先順位の低いクエリーC(間隔712の間に処理される)より高い頻度の実行間隔が提供され得る。図7Cを参照すると、ある状況では、クエリーAには、クエリーAが(間隔714後に)実行を完了するまで他のクエリーB及びCの処理が中断されるように十分高い優先順位が提供され、実行を完了した時点で、それぞれ間隔716と718の間で交互に、中断されたクエリーB及びCの実行が再開される。
また、仲介データベースは、クエリーが実行している間、クエリーに再優先順位付けを可能にする。例えば、図7Dを参照すると、優先順位の高いクエリーAは(間隔720の間)、通常の優先順位のクエリーB(間隔722の間)及び優先順位の低いクエリーC(間隔724の間)とともに、仲介データベースによってスケジュールされる。時間726で、優先順位の高いクエリーAは通常の優先順位レベルに再優先順位付けされる。その時点で、仲介データベースは、新しい優先順位付けに基づいてクエリーのスケジューリングを調整する。再優先順位付け後に前進すると、次に、通常の優先順位のクエリーAには通常の優先順位のクエリーBに提供される間隔722と同様のサイズの実行間隔728が提供される。
再優先順位付けは、要求しているプロセスによってなされた判断により生じる場合もあれば、それ自体の基準に基づいて仲介サーバ内で生じる場合もある。例えば、仲介サーバにはクエリーを完了するための期限が設けられる可能性があり、期限が近づくにつれて、サーバは適時完了を保証するためにクエリーの優先順位を高め得る。いくつかのケースでは、仲介サーバが優先順位のより高いトラフィックをチェックできるようにするために、単一のより大きい実行間隔の代わりに、複数のより小さい実行間隔がクエリーに提供され得る。その他のケースでは、仲介サーバは、優先順位のより高いクエリーが実行できるようにするために、実行中のクエリーの実行間隔に割り込むことができる。
いくつかのケースでは、クエリーは、前のクエリーの実行前又は実行中のいずれかの実行に先立って次の間隔に入る次のクエリーとともに、スケジューリングされ得る。いくつかのケースでは、実行のためにスケジュールされるべき次のクエリーは、選択基準に基づいて実行直前に選択され得る。
4 並列クエリー処理
多くのシステムにとって、複数のクエリーを一度に実行することが有利であり得る。例えば、単一システム上で実行されている2つのクエリーは、1つのシステム上で実行される単一クエリーよりも改善されたパフォーマンスを実現(experience)しうる。これは、例えば、第2のクエリーが異なるリソースを使用している間に一方のクエリーが1つのコンピューティング・リソースを使用できるために生じ得る。一度に両方のクエリーを実行することによって、スループットは改善される。いくつかの実装例では、図8を参照すると、優先順位の高いクエリー802は、複数のクエリースライス804、806、808、810、812に分割される。各スライスは、個別のクエリーエンジン814、816、818、820、822によって処理され得る。
優先順位の高いクエリー802は、上記のように処理すべき行数に基づいてスライスされ得る。クエリーを完了するためにどのくらいの数の実行間隔が必要になるかを判断するために、パーティション化情報は、クエリーのターゲットである索引付き圧縮データ記憶装置の二次索引と比較され得る。これは、それぞれのクエリースライスによって索引付き圧縮データ記憶装置のどの部分が処理されるかを同定することにもなる。例えば、図9を参照すると、索引付き圧縮ファイル902は複数のデータ・ブロック904、906、908、910を含み、各データ・ブロックは複数のデータ・レコードを含む。索引付き圧縮ファイル902は、データ・ブロックを参照する索引912に関係付けられる。いくつかの編成では、この索引は、それぞれのデータ・ブロックに関する1つの索引レコード922を含む可能性があり、他の編成では、索引912はデータ・ブロックより少ない索引レコード922を含み得る。いくつかの編成では、各索引レコード922はデータ・ブロック904、906、908、910を参照し、他の編成では、各索引レコード922はデータ・ブロックの第1のデータ・レコードを参照する。仲介サーバは、索引912を検討し、索引レコードに基づいてクエリー実行間隔(又は「クエリースライス」)を決定する。この例では、クエリーエンジンは、索引912に基づいて4つのクエリースライス914、916、918、920を作成することを選択する。1つのクエリースライス914は、ブロック1:904から始まるデータ・レコードを処理し、ブロック10(図示せず)の終わりで終了し、クエリースライス916は、ブロック11:906から始まるデータを処理し、ブロック20(図示せず)の終わりで終了し、クエリースライス918は、ブロック21:908から処理を開始し、ブロック30(図示せず)の終わりで終了し、最後にクエリースライス920は、ブロック31:910から処理を開始し、索引付き圧縮ファイル902の終わりで処理を終了する。この例では、仲介サーバは、索引912内の索引レコード922の数によってのみ制限される、任意の数のクエリースライスを作成することを選ぶことができる。
図8を参照すると、クエリーの各スライスは、クエリーエンジン814、816、818、820、822のそれぞれ異なる1つによって同時に処理され得る。例えば、クエリースライス804はクエリーエンジン814によって処理され、クエリースライス806は実質的に同時にクエリーエンジン816によって処理される。同時に、クエリースライス808はクエリーエンジン818によって処理され、クエリースライス810はクエリーエンジン820によって処理され、クエリー812はクエリーエンジン822によって処理される。各クエリーエンジンは、そのクエリーパーティションに関する結果セットを生成する。すべての結果セットが生成されると、結果セットは、クエリー全体に対する完全な結果セットを形成するように、結合されうる。この方法を使用すると、優先順位の高いクエリーは、通常、その動作を完了するのに要する時間の一部で完了することができる。
5 コールバック
あらかじめ指定された基準によって定義されたトリガが満たされると、システムは通知を行う。図3を参照すると、新しいクエリーがフロントエンド・サービス302にサブミットされる場合、このサブミットは、条件が満たされた時に(フロントエンド・サービス302を介して)リクエスタに通知するよう仲介サーバ304に要求する情報を含み得る。ある編成では、この条件は、特定の数の結果データ要素がリクエスタによってアクセスできる状態になった時の通知であり得る。例えば、リクエスタは、100個の結果レコードの準備ができた時に通知され得る。いくつかケースでは、リクエスタは、通知の前に準備ができなければならない結果データ要素の数を指定し得る。他のケースでは、リクエスタは、リクエスタが通知を受ける前に満たさなければならない他の基準を提供し得る。例えば、リクエスタは、クエリーが中断された時又はすべての処理が完了した時に通知を受けたいと希望する可能性がある。いくつかのケースでは、トリガ基準は、仲介データベース308内で追跡された状態情報に制限されるかも知れない。他のケースでは、トリガ基準は制限がないかも知れない。トリガは、いくつかの異なる方法で仲介サーバ304に提供され得る。例えば、トリガは、それぞれのクエリー間隔後に仲介サーバ304が実行するスクリプトとして、又は所定のアプリケーション・プログラミング・インターフェース(API)に適合するコンパイル済みクラスとして、提供され得る。いくつかのケースでは、例えば、100個の結果レコードが発見されたという条件など、その条件が一度しか発生しない可能性がある。他の編成では、例えば、100個の追加の結果レコードが発見されるごとに通知を求める要求など、その条件が再発する可能性もある。
いくつかのケースでは、トリガ条件のサブミットはアクション定義も含み得る。このアクションは、トリガとともに仲介データベース308に記憶され得る。アクションは、条件が満たされた時に仲介サーバ304がどのように応答するかを定義するものである。アクションは、例えば、通知、要約など、所定の1組の可能なアクションのうちの1つにすることができる。アクションは、仲介サーバ304上で実行されるスクリプトにすることができる。例えば、1つのアクションは、返された結果をクエリーパラメータとして使用して、追加のクエリーをシステムにサブミットすることができる。また、アクションは、事前確立されたAPIに適合するコンパイル済みクラスとして提供することができる。
6 クエリーの中断
いくつかの実装例では、仲介サーバ304はクエリーの処理を中断することができる。仲介サーバは、そのクエリーに中断というマークを付けることができ、そのクエリーが再開されるまでいかなる処理も行われない。クエリーの中断とともに、クエリーサーバはクエリーの状態を保存し得る。この状態はクエリーのプロセスの表示要素である。例えば、この状態は索引付き圧縮データ・ストアへのオフセットになる場合もあれば、B木内で最後に処理されたノードを含む場合もある。
いくつかのケースでは、仲介サーバはそれ自体のイニシアチブについてのクエリーを中断することを選択しうる。これは、例えば、1つのクエリーがいくつかのレコードを結果セット内に生成し、リクエスタに引き渡されるのを待っている結果セット内の行数がしきい値を超えた時に生じ得る。
例えば、クエリーをサブミットするリクエスタは、固定数の行の引き渡しを後で要求し得る(例えば、ユーザ・インターフェースが画面を埋め尽くす(populate)ために25行分のデータの「ページ」を要求するならば、システムはクエリーから25行分のデータを要求する。)。その後、ユーザがより多くのクエリー結果を見ることを希望していることを示した場合、システムはクエリー結果の次の「ページ」又は26〜50の結果を要求することができる。仲介データベースは、クエリーから返された結果の数と、ユーザに返された結果の数を追跡する。例えば、クエリーは300行を返した可能性があるが、25行がリクエスタに送信された可能性がある。クエリーから返された行数がマージン(例えば、25、50、75、又は100行)によってリクエスタに送信された行数を超える場合、仲介データベースはそのクエリーの処理を中断し得る。これは、仲介データベース内でそのクエリーに中断というマークを付けることによるか、又はそのクエリーの次の実行をスケジュールする前のチェックを介して、成し遂げられる。
いくつかのケースでは、しきい値はシステム300によって定義され、他のケースでは、そのクエリーがどのように使用されるかに依存して各クエリーについて個別にしきい値が定義され得る。例えば、固定数の項目を有するWebページ上にデータ・リストを表示するためにその結果が使用されるクエリーは、4ページ分のデータが待っている時に、中断し得る。対照的に、そのクエリーによって返されるすべてのデータの要約レポート、例えば、月末レポートを作成するためにその結果が使用されるクエリーは、けっして中断し得ない。いくつかのケースでは、しきい値は、リクエスタに通知する前に収集するための行数から推測され得る。
いくつかのケースでは、クエリーは、仲介データベース内のそのクエリーの状態情報を更新することによって、明示的に中断され得る。例えば、優先順位のより高いクエリーを実行できるようにするために、クエリーに中断というマークが付され得る。他のケースでは、仲介サーバのスケジューリング・アルゴリズムは、中断されたクエリーの状態を有するクエリーがスケジュールされないようになっているので、クエリーは、暗黙的に中断され得る。クエリーの中断は、クエリーがサブミットされ、その後、そのクエリーが完了する前に呼び出しプログラムが終了する時にリソースの浪費を最小限にするという追加の利点を有する。仲介サーバは、リクエスタが定義済み期間の間に結果にアクセスしなかった場合にクエリー及び結果セットを削除することを選ぶことができる。
7 仲介サーバの処理
図10を参照すると、フローチャート1000は、外部要求なしにクエリーの処理を中断すべきかどうかに関する判断を含む、仲介サーバ304の動作の模範的な編成を表している。
動作は、実行のためにクエリーを選択すること1002を含む。一例では、クエリーは、仲介サーバによって確立された所定のスケジュールの一部として選択され得る。他の例では、クエリーは、クエリーの優先順位及びクエリーが最後に実行された時間を含み得る何らかの基準に基づいて選択され得る。ある編成では、仲介サーバは実行を待っている(例えば、待ち状態にある)クエリーについて繰り返す。クエリーのそれぞれはクエリーエンジン上で実行するようにスケジュールされる。待っているすべてのクエリーが実行されると、仲介サーバは、依然として実行を待っているクエリーについてプロセスを繰り返す。他の編成では、仲介サーバは、実行のために最も長い間隔の間、待っていたクエリーを選択する。他の編成では、仲介サーバは、実行のために優先順位が最も高いクエリーを選択する。
動作はまた、クエリーエンジン上でクエリーを実行すること1004を含む。一例では、選択されたクエリーはクエリーエンジンに割り当てることができ、そのクエリーエンジンはデータ・レコードに対してクエリーを実行し、結果セットを更新し、返された行数を仲介サーバに通知する。
動作はまた、引き渡されるのを待っている行数のチェック1006を含む。引き渡されるのを待っている行数が通知しきい値を超える場合、仲介サーバはリクエスタへのコールバック1008を実行する。
動作はまた、リクエスタがアクセスするのを待っている行数が中断しきい値を超えるかどうかのチェック1010を含み、その場合、1012でクエリーが中断される。クエリーが中断されるかどうかにかかわらず、仲介サーバは次に処理するクエリーの選択に移行する。
図11を参照すると、フローチャート1100は、例えば、結果がアクセスできる状態になっていることをコールバックがリクエスタに通知した後に、クエリーによって返された結果セットの一部にリクエスタがアクセスしたことに応じて、仲介サーバ304の動作の模範的な編成を表している。
動作は、リクエスタがクエリーからの結果を要求すること1102を含む。いくつかの編成では、リクエスタは、返すべき行数の指示、例えば、25行を返すよう求める要求を送信し得る。他の編成では、リクエスタは特定の範囲の結果を返すよう要求し得る。例えば、リクエスタは、50〜126の結果を返すよう要求し得る。さらに他の編成では、リクエスタは収集したすべての結果を返すことを要求し得る。
動作はまた、結果を返し、レコードを更新すること1104を含む。要求に応答して、仲介サーバは要求された行へのアクセスを提供し得る。いくつかの編成では、仲介サーバはまた、そのクエリーが依然として追加の結果を処理しているという表示要素をリクエスタに送信し得る。他の編成では、仲介サーバは、追加の結果が即時引き渡しに使用可能であるという表示要素も提供し得る。
動作はまた、そのクエリーが現在中断されているかどうかを判断するためのチェック1106を含む。クエリーが中断されている場合、制御は次の動作1108に移行する。そうではない場合、プロセスは完了する。
動作はまた、引き渡しを待っている行数が中断しきい値未満であるかどうかを判断するためのチェック1108を含む。そうである場合、クエリーは1110で再開され、仲介サーバによる処理のためにスケジュールされ得る。
上記のクエリー管理手法は、コンピュータ上で実行するためにソフトウェアを使用して実現することができる。例えば、このソフトウェアは、1つ又は複数のプログラム式又はプログラム可能コンピュータ・システム(分散、クライアント/サーバ、又はグリッドなどの様々なアーキテクチャのものにすることができる)上で実行される1つ又は複数のコンピュータ・プログラム内の手順を形成し、それぞれのコンピュータ・システムは少なくとも1つのプロセッサと、少なくとも1つのデータ記憶システム(揮発性及び不揮発性メモリ及び/又は記憶素子を含む)、少なくとも1つの入力装置又はポート、並びに少なくとも1つの出力装置又はポートを含む。このソフトウェアは、例えば、計算グラフの設計及び構成に関連するその他のサービスを提供する、より大きいプログラムの1つ又は複数のモジュールを形成することができる。グラフのノード及び要素は、コンピュータ可読媒体に記憶されたデータ構造又はデータ・リポジトリに記憶されたデータ・モデルに適合するその他の組織化されたデータとして実現することができる。
このソフトウェアは、汎用又は特殊目的プログラム可能コンピュータによって読み取り可能なCD−ROMなどの記憶媒体上で提供するか、或いはそれが実行されるコンピュータへのネットワークの通信媒体により配布する(伝搬信号にコード化する)ことができる。すべての機能は、特殊目的コンピュータ上で又はコプロセッサなどの特殊目的ハードウェアを使用して実行することができる。このソフトウェアは、ソフトウェアによって指定された計算の異なる部分が異なるコンピュータによって実行されるという分散方法で実現することができる。それぞれのこのようなコンピュータ・プログラムは、好ましくは、汎用又は特殊目的プログラム可能コンピュータによって読み取り可能なストレージ・メディア又はデバイス(例えば、ソリッドステート・メモリ又はメディア或いは磁気又は光メディア)上に記憶されるか又はそれにダウンロードされ、本明細書に記載された手順を実行するためにそのストレージ・メディア又はデバイスがコンピュータ・システムによって読み取られた時にそのコンピュータを構成し操作する。また、本発明のシステムは、コンピュータ・プログラムとともに構成されたコンピュータ可読記憶媒体として実現されるものと見なすことができ、このように構成された記憶媒体は本明細書に記載された機能を実行するためにコンピュータ・システムを具体的かつ定義済みの方法で動作させる。
本発明のいくつかの実施形態について説明してきた。それにもかかわらず、本発明の精神及び範囲を逸脱せずに様々な変更が可能であることが理解されるであろう。例えば、上記の諸ステップのうちのいくつかは順序とは無関係なものにすることができ、従って、上記のものとは異なる順序で実行することができる。
上記の説明は本発明を例示するためのものであって、本発明の範囲を限定するためのものではなく、本発明は特許請求の範囲の範囲によって定義されることを理解されたい。例えば、上記の機能ステップのうちのいくつかは、処理全体に実質的に影響せずに異なる順序で実行することができる。その他の諸実施形態は特許請求の範囲の範囲内である。

Claims (60)

  1. 1つ又は複数のデータ・ソースについて実行されるクエリーを管理するための方法であって、
    少なくとも第1のクエリーを記憶媒体に記憶することと、
    処理のために前記第1のクエリーを選択することと、
    第1のクエリー間隔に対して前記1つ又は複数のデータ・ソースにおけるデータの第1の部分についての前記第1のクエリーを処理するようにクエリーエンジンに指示することと、
    前記データの第1の部分についての前記第1のクエリーの処理に基づいて前記クエリーエンジンから第1の結果データを受信することと、
    前記第1のクエリー間隔後に前記第1のクエリーの状態を前記記憶媒体に保存することと、
    前記第1のクエリー間隔後の第2のクエリー間隔の間に第2のクエリーを処理するように前記クエリーエンジンに指示することと、
    前記第1のクエリーに関連付けられた優先順位を変更することと、
    前記第2のクエリーの処理に基づいて前記クエリーエンジンから第2の結果データを受信することと、
    前記第2のクエリーが中断され、前記クエリーエンジンによって処理されないように、前記第1のクエリーに関連付けられた前記優先順位に基づいて前記第2のクエリーを中断することを決定することと、
    前記第2のクエリー間隔後の第3のクエリー間隔の間に前記1つ又は複数のデータ・ソース内の第2のデータ部分についての前記第1のクエリーを処理するように前記クエリーエンジンに指示すること
    を含む、方法。
  2. 前記第1のクエリーに関係付けられた前記優先順位を前記記憶媒体に記憶することをさらに含み、
    前記第1のクエリーに関係付けられた前記優先順位を変更することは、処理のために前記第1のクエリーを選択する前に行われ、
    処理のために前記第1のクエリーを選択することが部分的に前記優先順位に基づいて前記クエリーを選択することを含む、請求項1記載の方法。
  3. 前記第1のクエリー間隔が所定の時間量によって定義される、請求項1記載の方法。
  4. 前記第1のクエリーに関連付けられた前記優先順位は、前記1つ又は複数のデータ・ソース内の前記データのうちのどのくらいの量が、前記第1のクエリー間隔に対して前記第1のクエリーが実行される前記データの第1の部分に含まれるか、に影響する、請求項3記載の方法。
  5. 前記第1のクエリーを記憶することが、前記第1のクエリーを提供したリクエスタに通知される前に使用可能になるべき前記第1の結果データの量の通知しきい値を記憶することを含む、請求項1記載の方法。
  6. 前記第1の結果データの前記量が前記通知しきい値を超えた時に前記リクエスタに通知することをさらに含み、前記第1のクエリーの前記状態を保存することが前記クエリーエンジンから受信した前記第1の結果データの前記量を記憶することを含む、請求項5記載の方法。
  7. 前記リクエスタからの要求による前記第1の結果データを返すことと、前記リクエスタに返された前記第1の結果データの前記量を前記記憶媒体に記憶すること、をさらに含む、請求項6記載の方法。
  8. 前記第1のクエリーを選択することが、前記クエリーエンジンから受信した前記第1の結果データの前記量と前記リクエスタに返された前記第1の結果データの前記量に基づくものである、請求項7記載の方法。
  9. 前記第1のクエリーの前記状態を保存することが、
    前記第1のクエリーを中断するよう前記クエリーエンジンに指示することと、
    前記第1のクエリーが中断された後に前記第1のクエリーの状態を保存すること、
    を含む、請求項1記載の方法。
  10. 前記第2のデータ部分に関する前記第1のクエリーを処理するように前記クエリーエンジンに指示することが、
    前記第1のクエリーの前記保存状態をロードすることと、
    前記第1のクエリーを再開するように前記クエリーエンジンに指示すること、
    を含む、請求項9記載の方法。
  11. 前記第1のクエリーの前記状態を保存することが、二次索引へのオフセットを保存することを含む、請求項9記載の方法。
  12. 前記二次索引がブロック圧縮索引付きファイルの索引である、請求項11記載の方法。
  13. 前記第1のクエリーを複数の副クエリーに分割することと、前記副クエリーのうちの少なくともいくつかを同時に処理するよう前記クエリーエンジンに指示すること、をさらに含む、請求項1記載の方法。
  14. 前記第1のクエリー間隔が始まった後で前記第2のクエリーが受信され、前記記憶媒体に記憶される、請求項1記載の方法。
  15. 前記第1のクエリー間隔が始まる前に前記第2のクエリーが受信され、前記記憶媒体に記憶される、請求項1記載の方法。
  16. 1つ又は複数のデータ・ソースについて実行されるクエリーを管理するためのコンピュータ・プログラムを記憶するコンピュータ可読記憶媒体であって、前記コンピュータ・プログラムが、
    少なくとも第1のクエリーを記憶媒体に記憶することと、
    処理のために前記第1のクエリーを選択することと、
    第1のクエリー間隔に対して前記1つ又は複数のデータ・ソース内のデータの第1の部分についての前記第1のクエリーを処理するようにクエリーエンジンに指示することと、
    前記データの第1の部分についての前記第1のクエリーの処理に基づいて前記クエリーエンジンから第1の結果データを受信することと、
    前記第1のクエリー間隔後に前記第1のクエリーの状態を前記記憶媒体に保存することと、
    前記第1のクエリー間隔後の第2のクエリー間隔の間に第2のクエリーを処理するように前記クエリーエンジンに指示することと、
    前記第1のクエリーに関連付けられた優先順位を変更することと、
    前記第2のクエリーの処理に基づいて前記クエリーエンジンから第2の結果データを受信することと、
    前記第2のクエリーが中断され、前記クエリーエンジンによって処理されないように、前記第1のクエリーに関連付けられた前記優先順位に基づいて前記第2のクエリーを中断することを決定することと、
    前記第2のクエリー間隔後の第3のクエリー間隔の間に前記1つ又は複数のデータ・ソース内の第2のデータ部分についての前記第1のクエリーを処理するように前記クエリーエンジンに指示することと、
    をコンピュータに実行させるための命令を含む、コンピュータ可読記憶媒体。
  17. 1つ又は複数のデータ・ソースについて実行されるクエリーを管理するためのシステムであって、前記システムが、
    少なくとも第1のクエリーを記憶する記憶媒体と、
    前記1つ又は複数のデータ・ソース内のデータに関するクエリーを処理するように構成されたクエリーエンジンと、
    サーバであって、
    処理のために前記第1のクエリーを選択し、
    第1のクエリー間隔に対して前記1つ又は複数のデータ・ソース内のデータの第1の部分についての前記第1のクエリーを処理するように前記クエリーエンジンに指示し、
    前記データの第1の部分についての前記第1のクエリーの処理に基づいて前記クエリーエンジンから第1の結果データを受信し、
    前記第1のクエリー間隔後に前記第1のクエリーの状態を前記記憶媒体に保存し、
    前記第1のクエリー間隔後の第2のクエリー間隔の間に第2のクエリーを処理するように前記クエリーエンジンに指示し、
    前記第1のクエリーに関連付けられた優先順位を変更し、
    前記第2のクエリーの処理に基づいて前記クエリーエンジンから第2の結果データを受信し、
    前記第2のクエリーが中断され、前記クエリーエンジンによって処理されないように、前記第1のクエリーに関連付けられた前記優先順位に基づいて前記第2のクエリーを中断することを決定し、
    前記第2のクエリー間隔後の第3のクエリー間隔の間に前記1つ又は複数のデータ・ソース内の第2のデータ部分についての前記第1のクエリーを処理するように前記クエリーエンジンに指示する、
    ように構成されたサーバと、
    を含む、システム。
  18. 前記コンピュータ・プログラムが、
    前記第1のクエリーに関係付けられた前記優先順位を前記記憶媒体に記憶すること
    をコンピュータに実行させる命令をさらに含み、
    前記第1のクエリーに関係付けられた前記優先順位を変更することは、処理のために前記第1のクエリーを選択する前に行われ、
    処理のために前記第1のクエリーを選択することが部分的に前記優先順位に基づいて前記クエリーを選択することを含む、請求項16記載のコンピュータ可読記憶媒体。
  19. 前記第1のクエリー間隔が所定の時間量によって定義される、請求項16記載のコンピュータ可読記憶媒体。
  20. 前記第1のクエリーに関連付けられた前記優先順位は、前記1つ又は複数のデータ・ソース内の前記データのうちのどのくらいの量が、前記第1のクエリー間隔に対して前記第1のクエリーが実行される前記データの第1の部分に含まれるか、に影響する、請求項19記載のコンピュータ可読記憶媒体。
  21. 前記第1のクエリーを記憶することが、前記第1のクエリーを提供したリクエスタに通知される前に使用可能になるべき前記第1の結果データの量の通知しきい値を記憶することを含む、請求項16記載のコンピュータ可読記憶媒体。
  22. 前記コンピュータ・プログラムが、前記第1の結果データの前記量が前記通知しきい値を超えた時に前記リクエスタに通知することをコンピュータに実行させる命令をさらに含み、前記第1のクエリーの前記状態を保存することが前記クエリーエンジンから受信した前記第1の結果データの前記量を記憶することを含む、請求項21記載のコンピュータ可読記憶媒体。
  23. 前記コンピュータ・プログラムが、前記リクエスタからの要求に対して前記第1の結果データを返すことと、前記リクエスタに返された前記第1の結果データの前記量を前記記憶媒体に記憶することと、をコンピュータに実行させる命令を含む、請求項22記載のコンピュータ可読記憶媒体。
  24. 前記第1のクエリーを選択することが、前記クエリーエンジンから受信した前記第1の結果データの前記量と前記リクエスタに返された前記第1の結果データの前記量とに基づく、請求項23記載のコンピュータ可読記憶媒体。
  25. 前記第1のクエリーの前記状態を保存することが、
    前記第1のクエリーを中断するよう前記クエリーエンジンに指示することと、
    前記第1のクエリーが中断された後に前記第1のクエリーの状態を保存すること、
    を含む、請求項16記載のコンピュータ可読記憶媒体。
  26. 前記第2のデータ部分に関する前記第1のクエリーを処理するように前記クエリーエンジンに指示することが、
    前記第1のクエリーの前記保存状態をロードすることと、
    前記第1のクエリーを再開するように前記クエリーエンジンに指示することと、
    を含む、請求項25記載のコンピュータ可読記憶媒体。
  27. 前記第1のクエリーの前記状態を保存することが、二次索引へのオフセットを保存することを含む、請求項25記載のコンピュータ可読記憶媒体。
  28. 前記二次索引がブロック圧縮索引付きファイルの索引である、請求項27記載のコンピュータ可読記憶媒体。
  29. 前記コンピュータ・プログラムが、前記第1のクエリーを複数の副クエリーに分割することと、前記副クエリーのうちの少なくともいくつかを同時に処理するよう前記クエリーエンジンに指示すること、をコンピュータに実行させる命令を含む、請求項16記載のコンピュータ可読記憶媒体。
  30. 前記第1のクエリー間隔が始まった後で前記第2のクエリーが受信され、前記記憶媒体に記憶される、請求項16記載のコンピュータ可読記憶媒体。
  31. 前記第1のクエリー間隔が始まる前に前記第2のクエリーが受信され、前記記憶媒体に記憶される、請求項16記載のコンピュータ可読記憶媒体。
  32. 前記サーバは、
    前記第1のクエリーに関係付けられた前記優先順位を前記記憶媒体に記憶し、
    処理のために前記第1のクエリーを選択する前に前記第1のクエリーに関係付けられた前記優先順位を変更し、
    処理のために前記第1のクエリーを選択することが部分的に前記優先順位に基づいて前記クエリーを選択することを含む、
    ようにさらに構成されている、請求項17記載のシステム。
  33. 前記第1のクエリー間隔が所定の時間量によって定義される、請求項17記載のシステム。
  34. 前記第1のクエリーに関連付けられた前記優先順位は、前記1つ又は複数のデータ・ソース内の前記データのうちのどのくらいの量が、前記第1のクエリー間隔に対して前記第1のクエリーが実行される前記データの第1の部分に含まれるか、に影響する、請求項33記載のシステム。
  35. 前記第1のクエリーを記憶することが、前記第1のクエリーを提供したリクエスタに通知される前に使用可能になるべき前記第1の結果データの量の通知しきい値を記憶することを含む、請求項17記載のシステム。
  36. 前記サーバは、前記第1の結果データの前記量が前記通知しきい値を超えた時に前記リクエスタに通知するようにさらに構成され、前記第1のクエリーの前記状態を保存することが前記クエリーエンジンから受信した前記第1の結果データの前記量を記憶することを含む、請求項35記載のシステム。
  37. 前記サーバは、前記リクエスタからの要求に対して前記第1の結果データを返し、前記リクエスタに返された前記第1の結果データの前記量を前記記憶媒体に記憶するようにさらに構成されている、請求項36記載のシステム。
  38. 前記第1のクエリーを選択することが、前記クエリーエンジンから受信した前記第1の結果データの前記量と前記リクエスタに返された前記第1の結果データの前記量に基づくものである、請求項37記載のシステム。
  39. 前記第1のクエリーの前記状態を保存することが、
    前記第1のクエリーを中断するよう前記クエリーエンジンに指示することと、
    前記第1のクエリーが中断された後に前記第1のクエリーの状態を保存すること、
    を含む、請求項17記載のシステム。
  40. 前記第2のデータ部分に関する前記第1のクエリーを処理するように前記クエリーエンジンに指示することが、
    前記第1のクエリーの前記保存状態をロードすることと、
    前記第1のクエリーを再開するように前記クエリーエンジンに指示すること、
    を含む、請求項39記載のシステム。
  41. 前記第1のクエリーの前記状態を保存することが、二次索引へのオフセットを保存することを含む、請求項39記載のシステム。
  42. 前記二次索引がブロック圧縮索引付きファイルの索引である、請求項41記載のシステム。
  43. 前記サーバは、前記第1のクエリーを複数の副クエリーに分割し、前記副クエリーのうちの少なくともいくつかを同時に処理するよう前記クエリーエンジンに指示するようにさらに構成されている、請求項17記載のシステム。
  44. 前記第1のクエリー間隔が始まった後で前記第2のクエリーが受信され、前記記憶媒体に記憶される、請求項17記載のシステム。
  45. 前記第1のクエリー間隔が始まる前に前記第2のクエリーが受信され、前記記憶媒体に記憶される、請求項17記載のシステム。
  46. 1つ又は複数のデータ・ソースについて実行されるクエリーを管理するためのシステムであって、
    少なくとも第1のクエリーを記憶する手段と、
    処理のために前記第1のクエリーを選択する手段と、
    第1のクエリー間隔に対して前記1つ又は複数のデータ・ソース内のデータの第1の部分についての前記第1のクエリーを処理するようにクエリーエンジンに指示する手段と、
    前記データの第1の部分についての前記第1のクエリーの処理に基づいて前記クエリーエンジンから第1の結果データを受信する手段と、
    前記第1のクエリー間隔後に前記第1のクエリーの状態を前記記憶媒体に保存する手段と、
    前記第1のクエリー間隔後の第2のクエリー間隔の間に第2のクエリーを処理するように前記クエリーエンジンに指示する手段と、
    前記第1のクエリーに関連付けられた優先順位を変更する手段と、
    前記第2のクエリーの処理に基づいて前記クエリーエンジンから第2の結果データを受信する手段と、
    前記第2のクエリーが中断され、前記クエリーエンジンによって処理されないように、前記第1のクエリーに関連付けられた前記優先順位に基づいて前記第2のクエリーを中断することを決定する手段と、
    前記第2のクエリー間隔後の第3のクエリー間隔の間に前記1つ又は複数のデータ・ソース内の第2のデータ部分についての前記第1のクエリーを処理するように前記クエリーエンジンに指示する手段と
    を含む、システム。
  47. 前記第1のクエリーに関係付けられた前記優先順位を前記記憶媒体に記憶する手段をさらに含み、
    前記第1のクエリーに関係付けられた前記優先順位の前記変更は、処理のために前記第1のクエリーを選択する前に行われ、
    処理のために前記第1のクエリーを選択することが部分的に前記優先順位に基づいて前記クエリーを選択することを含む、請求項46記載のシステム。
  48. 前記第1のクエリー間隔が所定の時間量によって定義される、請求項46記載のシステム。
  49. 前記第1のクエリーに関連付けられた前記優先順位は、前記1つ又は複数のデータ・ソース内の前記データのうちのどのくらいの量が、前記第1のクエリー間隔に対して前記第1のクエリーが実行される前記データの第1の部分に含まれるか、に影響する、請求項48記載のシステム。
  50. 前記第1のクエリーを記憶することが、前記第1のクエリーを提供したリクエスタに通知される前に使用可能になるべき前記第1の結果データの量の通知しきい値を記憶することを含む、請求項46記載のシステム。
  51. 前記第1の結果データの前記量が前記通知しきい値を超えた時に前記リクエスタに通知する手段をさらに含み、
    前記第1のクエリーの前記状態を保存することが前記クエリーエンジンから受信した前記第1の結果データの前記量を記憶することを含む、請求項50記載のシステム。
  52. 前記リクエスタからの要求に対して前記第1の結果データを返し、前記リクエスタに返された前記第1の結果データの前記量を前記記憶媒体に記憶する手段をさらに含む、請求項51記載のシステム。
  53. 前記第1のクエリーを選択することが、前記クエリーエンジンから受信した前記第1の結果データの前記量と前記リクエスタに返された前記第1の結果データの前記量に基づくものである、請求項52記載のシステム。
  54. 前記第1のクエリーの前記状態を保存することが、
    前記第1のクエリーを中断するよう前記クエリーエンジンに指示することと、
    前記第1のクエリーが中断された後に前記第1のクエリーの状態を保存すること、
    を含む、請求項46記載のシステム。
  55. 前記第2のデータ部分に関する前記第1のクエリーを処理するように前記クエリーエンジンに指示することが、
    前記第1のクエリーの前記保存状態をロードすることと、
    前記第1のクエリーを再開するように前記クエリーエンジンに指示すること、
    を含む、請求項54記載のシステム。
  56. 前記第1のクエリーの前記状態を保存することが、二次索引へのオフセットを保存することを含む、請求項54記載のシステム。
  57. 前記二次索引がブロック圧縮索引付きファイルの索引である、請求項56記載のシステム。
  58. 前記第1のクエリーを複数の副クエリーに分割し、前記副クエリーのうちの少なくともいくつかを同時に処理するよう前記クエリーエンジンに指示する手段をさらに含む、請求項46記載のシステム。
  59. 前記第1のクエリー間隔が始まった後で前記第2のクエリーが受信され、前記記憶媒体に記憶される、請求項46記載のシステム。
  60. 前記第1のクエリー間隔が始まる前に前記第2のクエリーが受信され、前記記憶媒体に記憶される、請求項46記載のシステム。
JP2012546227A 2009-12-23 2010-12-23 クエリー管理 Active JP5675840B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US28977809P 2009-12-23 2009-12-23
US61/289,778 2009-12-23
PCT/US2010/061979 WO2011079251A1 (en) 2009-12-23 2010-12-23 Managing queries

Publications (3)

Publication Number Publication Date
JP2013516008A JP2013516008A (ja) 2013-05-09
JP2013516008A5 JP2013516008A5 (ja) 2014-02-13
JP5675840B2 true JP5675840B2 (ja) 2015-02-25

Family

ID=43513581

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012546227A Active JP5675840B2 (ja) 2009-12-23 2010-12-23 クエリー管理

Country Status (8)

Country Link
US (1) US10459915B2 (ja)
EP (1) EP2517124A1 (ja)
JP (1) JP5675840B2 (ja)
KR (2) KR20150042876A (ja)
CN (1) CN102687144B (ja)
AU (1) AU2010336363B2 (ja)
CA (1) CA2785398C (ja)
WO (1) WO2011079251A1 (ja)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7725453B1 (en) 2006-12-29 2010-05-25 Google Inc. Custom search index
US10061562B2 (en) 2012-09-29 2018-08-28 Pivotal Software, Inc. Random number generator in a parallel processing database
US8874602B2 (en) * 2012-09-29 2014-10-28 Pivotal Software, Inc. Random number generator in a MPP database
US9984083B1 (en) * 2013-02-25 2018-05-29 EMC IP Holding Company LLC Pluggable storage system for parallel query engines across non-native file systems
US9454573B1 (en) 2013-02-25 2016-09-27 Emc Corporation Parallel processing database system with a shared metadata store
US20150074084A1 (en) * 2013-09-12 2015-03-12 Neustar, Inc. Method and system for performing query processing in a key-value store
WO2016004594A2 (en) 2014-07-09 2016-01-14 Splunk Inc. Managing datasets produced by alert-triggering search queries
US9679015B2 (en) * 2014-09-03 2017-06-13 Bank Of America Corporation Script converter
US10241828B2 (en) 2015-04-03 2019-03-26 Oath Inc. Method and system for scheduling transactions in a data system
CN106294451B (zh) * 2015-05-28 2020-01-14 阿里巴巴集团控股有限公司 一种数据处理中显示处理进度的方法及其装置
US10360267B2 (en) * 2015-06-10 2019-07-23 Futurewei Technologies, Inc. Query plan and operation-aware communication buffer management
US20180246987A1 (en) * 2015-09-04 2018-08-30 Entit Software Llc Graph database management
WO2017044119A1 (en) 2015-09-11 2017-03-16 Hewlett Packard Enterprise Development Lp Graph database and relational database mapping
CN106570022B (zh) * 2015-10-10 2020-06-23 菜鸟智能物流控股有限公司 一种跨数据源查询方法、装置及系统
CN106888135B (zh) * 2015-12-15 2020-03-24 阿里巴巴集团控股有限公司 一种任务状态的查询方法和装置
US10198474B2 (en) * 2016-01-19 2019-02-05 Quest Software Inc. Delaying one or more searches to cause multiple searches to load and evaluate segments together
KR101883991B1 (ko) * 2016-02-12 2018-07-31 경희대학교 산학협력단 데이터 중개 장치 그리고 이를 이용한 데이터 중개 방법
US10318346B1 (en) 2016-09-23 2019-06-11 Amazon Technologies, Inc. Prioritized scheduling of data store access requests
JP7086661B2 (ja) * 2018-03-20 2022-06-20 ヤフー株式会社 情報処理システム、情報処理方法、およびプログラム
CN108549683B (zh) * 2018-04-03 2022-04-22 联想(北京)有限公司 数据查询方法以及系统
US11755658B2 (en) * 2018-06-12 2023-09-12 Nuvolo Technologies Corporation Intelligent buffering of queries from a mobile application
US10922316B2 (en) 2018-06-13 2021-02-16 Amazon Technologies, Inc. Using computing resources to perform database queries according to a dynamically determined query size
US12013856B2 (en) 2018-08-13 2024-06-18 Amazon Technologies, Inc. Burst performance of database queries according to query size
US11194815B1 (en) * 2019-02-11 2021-12-07 Amazon Technologies, Inc. Constrained query execution
US11327970B1 (en) 2019-03-25 2022-05-10 Amazon Technologies, Inc. Context dependent execution time prediction for redirecting queries
US11308100B2 (en) 2019-06-25 2022-04-19 Amazon Technologies, Inc. Dynamically assigning queries to secondary query processing resources
US10990879B2 (en) 2019-09-06 2021-04-27 Digital Asset Capital, Inc. Graph expansion and outcome determination for graph-defined program states
US11132403B2 (en) * 2019-09-06 2021-09-28 Digital Asset Capital, Inc. Graph-manipulation based domain-specific execution environment
US11204922B2 (en) * 2020-01-13 2021-12-21 Google Llc Optimal query scheduling for resource utilization optimization
AU2021202904A1 (en) * 2020-05-15 2021-12-02 Vail Systems, Inc. A data management system using attributed data slices
US11537616B1 (en) 2020-06-29 2022-12-27 Amazon Technologies, Inc. Predicting query performance for prioritizing query execution
US11687833B2 (en) * 2020-08-27 2023-06-27 Google Llc Data management forecasting from distributed tracing
US11762860B1 (en) 2020-12-10 2023-09-19 Amazon Technologies, Inc. Dynamic concurrency level management for database queries
KR102605930B1 (ko) * 2022-07-21 2023-11-30 스마트마인드 주식회사 데이터베이스 상에서 정형 데이터와 비정형 데이터를 처리하는 방법 및 이러한 방법을 제공하는 데이터 처리 플랫폼
US20240143674A1 (en) * 2022-10-27 2024-05-02 Onetrust Llc Processing and publishing scanned data for detecting entities in a set of domains via a parallel pipeline
KR102668905B1 (ko) * 2023-07-10 2024-05-24 스마트마인드 주식회사 서버 마이그레이션 방법 및 이러한 방법을 수행하는 장치
US12117980B1 (en) * 2023-09-11 2024-10-15 Oracle International Corporation Auto recognition of big data computation engine for optimized query runs on cloud platforms

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08292956A (ja) * 1995-04-20 1996-11-05 Mitsubishi Electric Corp データベース管理装置及びデータベース管理方法
JPH08314965A (ja) * 1995-05-19 1996-11-29 Toshiba Corp 文書検索装置
US6956941B1 (en) * 2000-04-12 2005-10-18 Austin Logistics Incorporated Method and system for scheduling inbound inquiries
GB2361555A (en) * 2000-04-17 2001-10-24 Apama Inc Method of evaluating queries against received event information
US7143080B2 (en) * 2001-12-27 2006-11-28 Tedesco Michael A Method, system and apparatus for separately processing database queries
US7155459B2 (en) 2002-06-28 2006-12-26 Miccrosoft Corporation Time-bound database tuning
US20040172385A1 (en) * 2003-02-27 2004-09-02 Vikram Dayal Database query and content transmission governor
US7472112B2 (en) 2003-06-23 2008-12-30 Microsoft Corporation Distributed query engine pipeline method and system
WO2005072877A1 (en) * 2004-01-30 2005-08-11 Mmd Design & Consultancy Limited Rotating mineral breaker
JP4379374B2 (ja) * 2005-02-21 2009-12-09 ブラザー工業株式会社 コンテンツ提供システム、及び、プログラム
US8239383B2 (en) * 2006-06-15 2012-08-07 International Business Machines Corporation System and method for managing execution of queries against database samples
EP2038739A4 (en) * 2006-06-26 2012-05-30 Datallegro Inc LOAD MANAGER FOR RELATIONAL DATABASE MANAGEMENT SYSTEMS
US7536383B2 (en) * 2006-08-04 2009-05-19 Apple Inc. Method and apparatus for searching metadata
US7792819B2 (en) 2006-08-31 2010-09-07 International Business Machines Corporation Priority reduction for fast partitions during query execution
US8229902B2 (en) * 2006-11-01 2012-07-24 Ab Initio Technology Llc Managing storage of individually accessible data units
US20080133608A1 (en) * 2006-12-05 2008-06-05 Douglas Brown System for and method of managing workloads in a database system
US20090083238A1 (en) * 2007-09-21 2009-03-26 Microsoft Corporation Stop-and-restart style execution for long running decision support queries
WO2011019586A1 (en) * 2009-08-12 2011-02-17 4Raytheon Company Method and system for querying an ontology model

Also Published As

Publication number Publication date
CN102687144A (zh) 2012-09-19
AU2010336363A1 (en) 2012-06-14
US10459915B2 (en) 2019-10-29
KR20150042876A (ko) 2015-04-21
JP2013516008A (ja) 2013-05-09
WO2011079251A9 (en) 2012-07-12
AU2010336363A9 (en) 2016-03-03
EP2517124A1 (en) 2012-10-31
CA2785398C (en) 2020-12-29
CN102687144B (zh) 2017-02-15
CA2785398A1 (en) 2011-06-30
AU2010336363B2 (en) 2016-03-03
KR101721892B1 (ko) 2017-04-10
WO2011079251A1 (en) 2011-06-30
US20110153662A1 (en) 2011-06-23
KR20120109533A (ko) 2012-10-08

Similar Documents

Publication Publication Date Title
JP5675840B2 (ja) クエリー管理
US11593404B2 (en) Multi-cluster warehouse
US10831387B1 (en) Snapshot reservations in a distributed storage system
Cho et al. Natjam: Design and evaluation of eviction policies for supporting priorities and deadlines in mapreduce clusters
US7827167B2 (en) Database management system and method including a query executor for generating multiple tasks
US8924981B1 (en) Calculating priority indicators for requests in a queue
Luo et al. On performance stability in LSM-based storage systems (extended version)
US8516488B1 (en) Adjusting a resource estimate in response to progress of execution of a request
US8966493B1 (en) Managing execution of multiple requests in a job using overall deadline for the job
US10817380B2 (en) Implementing affinity and anti-affinity constraints in a bundled application
US8745032B1 (en) Rejecting a request in a database system
US20090320022A1 (en) File System Object Node Management
WO2020057369A1 (zh) 一种查询计划的获取方法、数据查询方法及装置
US10824640B1 (en) Framework for scheduling concurrent replication cycles
US7721287B2 (en) Organizing transmission of repository data
US20230010652A1 (en) Systems and methods for automatic index creation in database deployment
Saranya et al. Scheduling of Intermittent Query Processing.
JP2016184272A (ja) データベース管理システム、そのバッファリング方法およびコンピュータ・プログラム
Park et al. CMU-PDL-17-107 November 2017
Hussain et al. Parallel Query in RAC: by Riyaj Shamsudeen

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131220

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131220

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140523

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140616

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140911

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140919

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141016

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20141203

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141224

R150 Certificate of patent or registration of utility model

Ref document number: 5675840

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250