(57)【要約】  構造化照会言語（ＳＱＬ）クエリーの実行をモニタするための技術。技術は、ＳＱＬクエリーを取得することと、ＳＱＬクエリーに対するクエリープランを生成することであって、クエリープランが、データ処理システムによって行われる複数の動作を含み、複数の動作が、第１の動作及び第２の動作を少なくとも含む、生成することと、複数のＧＵＩ要素を含むグラフィカルユーザインタフェース（ＧＵＩ）を表示することであって、複数のＧＵＩ要素が、第１の動作を表す第１のＧＵＩ要素及び第２の動作を表す第２のＧＵＩ要素を含む、表示することと、ＳＱＬクエリーの実行の間、ＳＱＬクエリーに対する追跡情報を集約することであって、第１の動作に対する第１の追跡情報及び第２の動作に対する第２の追跡情報を集約することを含む、集約することと、第１のＧＵＩ要素と関連付けられた第１の追跡情報の少なくとも幾つか及び第２のＧＵＩ要素と関連付けられた第２の追跡情報の少なくとも幾つかをＧＵＩに表示することとを含む。
2021506043.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つのコンピュータハードウェアプロセッサと、
プロセッサ実行可能命令を保存する少なくとも１つの非一時的コンピュータ可読ストレージ媒体と
を備えるデータ処理システムであって、前記プロセッサ実行可能命令が、前記少なくとも１つのコンピュータハードウェアプロセッサによって実行されると、
連合構造化照会言語（ＳＱＬ）クエリーを取得することと、
前記連合ＳＱＬクエリーに対するクエリープランを生成することであって、前記クエリープランが、データ処理システムによって行われる複数のデータ処理動作を含み、前記複数のデータ処理動作が、第１のデータ処理動作及び第２のデータ処理動作を少なくとも含む、生成することと、
複数のＧＵＩ要素を含むグラフィカルユーザインタフェース（ＧＵＩ）を表示することであって、前記複数のＧＵＩ要素が、前記第１のデータ処理動作を表す第１のＧＵＩ要素及び前記第２のデータ処理動作を表す第２のＧＵＩ要素を含む、表示することと、
前記連合ＳＱＬクエリーの実行の間、
前記連合ＳＱＬクエリーに対する追跡情報を集約することであって、前記第１のデータ処理動作に対する第１の追跡情報及び前記第２のデータ処理動作に対する第２の追跡情報を集約することを含む、集約することと、
前記第１のＧＵＩ要素と関連付けられた前記第１の追跡情報の少なくとも幾つか及び前記第２のＧＵＩ要素と関連付けられた前記第２の追跡情報の少なくとも幾つかを前記ＧＵＩに表示することと
を前記少なくとも１つのコンピュータハードウェアプロセッサに行わせる、データ処理システム。
【請求項２】
前記連合ＳＱＬクエリーを実行することが、第１のタイプの第１のデータソースからデータレコードを読み取ること及び／又は第１のタイプの第１のデータソースにデータレコードを書き込むことと、前記第１のタイプとは異なる第２のタイプの第２のデータソースからデータレコードを読み取ること及び／又は前記第１のタイプとは異なる第２のタイプの第２のデータソースにデータレコードを書き込むこととを含む、請求項１に記載のデータ処理システム。
【請求項３】
前記複数の動作が、第１のタイプの第１のデータソース内のデータレコードにアクセスするための少なくとも１つのデータ処理動作と、前記第１のタイプとは異なる第２のタイプの第２のデータソース内のデータレコードにアクセスするための少なくとも別のデータ処理動作とを含む、請求項１又は２に記載のデータ処理システム。
【請求項４】
前記第１のタイプの前記第１のデータソースが、フラットファイルデータソース、マルチファイルデータソース、Ｈａｄｏｏｐデータソース、Ｏｒａｃｌｅデータソース、Ｔｅｒａｄａｔａデータソース、ＤＢ２データソース、ＳＱＬ  Ｓｅｒｖｅｒデータソース、Ｉｎｆｏｒｍｉｘデータソース、ＭｏｎｇｏＤＢデータソース、ＳＡＰデータソース、ＳＡＳデータソース又はメタデータデータソースである、請求項３に記載のデータ処理システム。
【請求項５】
前記グラフィカルユーザインタフェースが非表形式である、請求項１〜４の何れか一項に記載のデータ処理システム。
【請求項６】
前記ＧＵＩを表示することが、
前記第１のデータ処理動作と関連付けられたグラフの第１のノードを表すために前記第１のＧＵＩ要素を生成することと、
前記第２のデータ処理動作と関連付けられたグラフの第２のノードを表すために前記第２のＧＵＩ要素を生成することと
によって少なくとも部分的に、前記グラフのグラフィカル表現を生成することを含む、請求項１〜５の何れか一項に記載のデータ処理システム。
【請求項７】
グラフの前記グラフィカル表現を生成することが、前記ＳＱＬクエリーを実行するためのデータフローグラフであるデータフローグラフのグラフィカル表現を生成することを含む、請求項６に記載のデータ処理システム。
【請求項８】
前記データフローグラフの前記グラフィカル表現を生成することが、前記データフローグラフの前記第１のノードと前記データフローグラフの前記第２のノードとの間のエッジを表す第３のＧＵＩ要素を生成することをさらに含む、請求項７に記載のデータ処理システム。
【請求項９】
前記プロセッサ実行可能命令が、
前記クエリープランに基づいて、前記データフローグラフを表す少なくとも１つのデータ構造を生成することであって、前記データフローグラフが、前記第１のノード及び前記第２のノードを含む複数のノードと、前記複数のノードを接続する複数のエッジとを含み、前記複数のノードの各々が、前記複数のデータ処理動作のそれぞれのデータ処理動作に相当し、前記複数のエッジが、前記複数のノードのノード間のデータのフローを表す、生成すること
を前記少なくとも１つのコンピュータハードウェアプロセッサにさらに行わせる、請求項７又は８に記載のデータ処理システム。
【請求項１０】
前記第１の動作に対する前記第１の追跡情報を集約することが、前記第１のデータ処理動作を介して処理されたデータレコードの数を追跡することを含み、前記ＧＵＩを介して、前記第１の追跡情報の少なくとも幾つかを表示することが、前記第１のＧＵＩ要素と関連付けて、前記第１のデータ処理動作を介して処理されたデータレコードの前記数を表示することを含む、請求項６〜９の何れか一項に記載のデータ処理システム。
【請求項１１】
前記第１のＧＵＩ要素と関連付けて、前記第１のデータ処理動作を介して処理されたデータレコードの前記数を表示することが、前記第１のノードの出力端部側に、前記第１のデータ処理動作を介して処理されたデータレコードの前記数を表示することを含む、請求項１０に記載のデータ処理システム。
【請求項１２】
前記第２のデータ処理動作に対する前記第２の追跡情報を集約することが、前記第２のデータ処理動作を介して処理されたデータレコードの数を追跡することを含み、前記ＧＵＩを介して、前記第２の追跡情報の少なくとも幾つかを表示することが、前記第２のＧＵＩ要素と関連付けて、前記第２のデータ処理動作を介して処理されたデータレコードの前記数を表示することを含む、請求項１１に記載のデータ処理システム。
【請求項１３】
前記第１の動作に対する第１の追跡情報を集約することが、前記第１のデータ処理動作を介して処理されたデータレコードの数、前記第１のデータ処理動作を行うために用いられた並列性の度合い、前記第１のデータ処理動作を行うために使用された１つ又は複数のコンピューティングデバイスを識別する情報、前記第１のデータ処理動作を行うために使用された処理資源の量、前記第１のデータ処理動作を行うために使用されたメモリの量、前記第１のデータ処理動作を行うために要した時間の総量、前記第１のデータ処理動作を行うコンピューティングデバイス上の処理負荷間のスキューの尺度、前記第１のデータ処理動作のパラメータ、前記第１のデータ処理動作が完了したかどうかを示す情報からなる群から選択される追跡情報を集約することを含む、請求項１〜１２の何れか一項に記載のデータ処理システム。
【請求項１４】
前記第１のデータ処理動作に対する第１の追跡情報を集約することが、前記第１のデータ処理動作の１つ又は複数のパラメータを識別することを含み、前記追跡情報の少なくとも幾つかを表示することが、前記識別された１つ又は複数のパラメータのうちの少なくとも１つのパラメータの少なくとも１つの値を表示することを含む、請求項１〜１３の何れか一項に記載のデータ処理システム。
【請求項１５】
前記プロセッサ実行可能命令が、
データ処理システムによって実行されている１つ又は複数のＳＱＬクエリーのリストを表示する第２のＧＵＩを表示することであって、前記１つ又は複数のＳＱＬクエリーが、前記ＳＱＬクエリーを含む、表示することと、
前記第２のＧＵＩを介する前記ＳＱＬクエリーのユーザ選択に応答して、前記複数のＧＵＩ要素を含む前記ＧＵＩを生成することであって、前記複数のＧＵＩ要素が、前記第１のデータ処理動作を表す前記第１のＧＵＩ要素及び前記第２のデータ処理動作を表す前記第２のＧＵＩ要素を含む、生成することと
を前記少なくとも１つのコンピュータハードウェアプロセッサにさらに行わせる、請求項１〜１４の何れか一項に記載のデータ処理システム。
【請求項１６】
前記プロセッサ実行可能命令が、
データ処理システムによって実行されている１つ又は複数のＳＱＬクエリーのリストを表示する第２のＧＵＩを表示することであって、前記１つ又は複数のＳＱＬクエリーが、前記ＳＱＬクエリーを含む、表示することと、
前記第２のＧＵＩを介する前記ＳＱＬクエリーのユーザ選択に応答して、前記ＳＱＬクエリーの実行を停止することと
を前記少なくとも１つのコンピュータハードウェアプロセッサにさらに行わせる、請求項１〜１５の何れか一項に記載のデータ処理システム。
【請求項１７】
前記表示することが、前記表示された前記第１の追跡情報の少なくとも幾つかをリフレッシュすることをさらに含む、請求項１〜１６の何れか一項に記載のデータ処理システム。
【請求項１８】
プロセッサ実行可能命令を保存する少なくとも１つの非一時的コンピュータ可読ストレージ媒体であって、前記プロセッサ実行可能命令が、少なくとも１つのコンピュータハードウェアプロセッサによって実行されると、
連合構造化照会言語（ＳＱＬ）クエリーを取得することと、
前記連合ＳＱＬクエリーに対するクエリープランを生成することであって、前記クエリープランが、データ処理システムによって行われる複数のデータ処理動作を含み、前記複数のデータ処理動作が、第１のデータ処理動作及び第２のデータ処理動作を少なくとも含む、生成することと、
複数のＧＵＩ要素を含むグラフィカルユーザインタフェース（ＧＵＩ）を表示することであって、前記複数のＧＵＩ要素が、前記第１のデータ処理動作を表す第１のＧＵＩ要素及び前記第２のデータ処理動作を表す第２のＧＵＩ要素を含む、表示することと、
前記連合ＳＱＬクエリーの実行の間、
前記連合ＳＱＬクエリーに対する追跡情報を集約することであって、前記第１のデータ処理動作に対する第１の追跡情報及び前記第２のデータ処理動作に対する第２の追跡情報を集約することを含む、集約することと、
前記第１のＧＵＩ要素と関連付けられた前記第１の追跡情報の少なくとも幾つか及び前記第２のＧＵＩ要素と関連付けられた前記第２の追跡情報の少なくとも幾つかを前記ＧＵＩに表示することと
を前記少なくとも１つのコンピュータハードウェアプロセッサに行わせる、非一時的コンピュータ可読ストレージ媒体。
【請求項１９】
少なくとも１つのコンピュータハードウェアプロセッサによって行われる方法であって、
連合構造化照会言語（ＳＱＬ）クエリーを取得することと、
前記連合ＳＱＬクエリーに対するクエリープランを生成することであって、前記クエリープランが、データ処理システムによって行われる複数のデータ処理動作を含み、前記複数のデータ処理動作が、第１のデータ処理動作及び第２のデータ処理動作を少なくとも含む、生成することと、
複数のＧＵＩ要素を含むグラフィカルユーザインタフェース（ＧＵＩ）を表示することであって、前記複数のＧＵＩ要素が、前記第１のデータ処理動作を表す第１のＧＵＩ要素及び前記第２のデータ処理動作を表す第２のＧＵＩ要素を含む、表示することと、
前記連合ＳＱＬクエリーの実行の間、
前記連合ＳＱＬクエリーに対する追跡情報を集約することであって、前記第１のデータ処理動作に対する第１の追跡情報及び前記第２のデータ処理動作に対する第２の追跡情報を集約することを含む、集約することと、
前記第１のＧＵＩ要素と関連付けられた前記第１の追跡情報の少なくとも幾つか及び前記第２のＧＵＩ要素と関連付けられた前記第２の追跡情報の少なくとも幾つかを前記ＧＵＩに表示することと
を含む、方法。
【請求項２０】
プロセッサ実行可能命令を保存する少なくとも１つの非一時的コンピュータ可読ストレージ媒体であって、前記プロセッサ実行可能命令が、
連合構造化照会言語（ＳＱＬ）クエリーを取得するための手段と、
前記連合ＳＱＬクエリーに対するクエリープランを生成するための手段であって、前記クエリープランが、データ処理システムによって行われる複数のデータ処理動作を含み、前記複数のデータ処理動作が、第１のデータ処理動作及び第２のデータ処理動作を少なくとも含む、手段と、
複数のＧＵＩ要素を含むグラフィカルユーザインタフェース（ＧＵＩ）を表示するための手段であって、前記複数のＧＵＩ要素が、前記第１のデータ処理動作を表す第１のＧＵＩ要素及び前記第２のデータ処理動作を表す第２のＧＵＩ要素を含む、手段と、
前記連合ＳＱＬクエリーの実行の間、
前記連合ＳＱＬクエリーに対する追跡情報を集約するための手段であって、前記第１のデータ処理動作に対する第１の追跡情報及び前記第２のデータ処理動作に対する第２の追跡情報を集約することを含む、手段と、
前記第１のＧＵＩ要素と関連付けられた前記第１の追跡情報の少なくとも幾つか及び前記第２のＧＵＩ要素と関連付けられた前記第２の追跡情報の少なくとも幾つかを前記ＧＵＩに表示するための手段と
を備える、非一時的コンピュータ可読ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
この出願は、米国特許法第１２０条に基づいて、本明細書に全体として参照により援用される、２０１７年１２月８日に出願された、「構造化照会言語（ＳＱＬ）クエリーの実行をモニタするためのシステム及び方法」というタイトルの米国特許出願第１５／８３５，８２３号明細書の便益を主張するものであり、同特許出願の一部継続出願である。
【背景技術】
【０００２】
データ処理システムは、１つ又は複数のコンピュータプログラムを使用して、データを処理し得る。データ処理システムによって利用されるコンピュータプログラムの１つ又は複数は、データフローグラフとして展開され得る。データフローグラフは、入力データに対して行われるデータ処理動作、及びデータのフローを表すコンポーネント間のリンクを表す、「ノード」又は「節点」と呼ばれるコンポーネントを含み得る。データフローグラフのノードは、各入力データセットを表す１つ又は複数の入力ノード、各出力データセットを表す１つ又は複数の出力ノード、及びデータに対して行われるデータ処理動作を表す１つ又は複数のノードを含み得る。データフローグラフによってエンコードされる計算を実行するための技術が、それぞれ本明細書に全体として援用される、「グラフとして表現される計算の実行（Ｅｘｅｃｕｔｉｎｇ  Ｃｏｍｐｕｔａｔｉｏｎｓ  Ｅｘｐｒｅｓｓｅｄ  ａｓ  Ｇｒａｐｈｓ）」というタイトルの米国特許第５，９６６，０７２号明細書、及び「グラフベース計算のパラメータ管理（Ｍａｎａｇｉｎｇ  Ｐａｒａｍｅｔｅｒｓ  ｆｏｒ  Ｇｒａｐｈ−Ｂａｓｅｄ  Ｃｏｍｐｕｔａｔｉｏｎｓ）」というタイトルの米国特許第７，７１６，６３０号明細書に記載されている。
【発明の概要】
【課題を解決するための手段】
【０００３】
幾つかの実施形態は、少なくとも１つのコンピュータハードウェアプロセッサと、プロセッサ実行可能命令を保存する少なくとも１つの非一時的コンピュータ可読ストレージ媒体とを備えるデータ処理システムであって、プロセッサ実行可能命令が、少なくとも１つのコンピュータハードウェアプロセッサによって実行されると、連合構造化照会言語（ＳＱＬ）クエリーを取得することと、連合ＳＱＬクエリーに対するクエリープランを生成することであって、クエリープランが、データ処理システムによって行われる複数のデータ処理動作を含み、複数のデータ処理動作が、第１のデータ処理動作及び第２のデータ処理動作を少なくとも含む、生成することと、複数のＧＵＩ要素を含むグラフィカルユーザインタフェース（ＧＵＩ）を表示することであって、複数のＧＵＩ要素が、第１のデータ処理動作を表す第１のＧＵＩ要素及び第２のデータ処理動作を表す第２のＧＵＩ要素を含む、表示することと、連合ＳＱＬクエリーの実行の間、連合ＳＱＬクエリーに対する追跡情報を集約することであって、第１のデータ処理動作に対する第１の追跡情報及び第２のデータ処理動作に対する第２の追跡情報を集約することを含む、集約することと、第１のＧＵＩ要素と関連付けられた第１の追跡情報の少なくとも幾つか及び第２のＧＵＩ要素と関連付けられた第２の追跡情報の少なくとも幾つかをＧＵＩに表示することとを少なくとも１つのコンピュータハードウェアプロセッサに行わせる、データ処理システムに向けられる。
【０００４】
幾つかの実施形態は、プロセッサ実行可能命令を保存する少なくとも１つの非一時的コンピュータ可読ストレージ媒体であって、プロセッサ実行可能命令が、少なくとも１つのコンピュータハードウェアプロセッサによって実行されると、連合構造化照会言語（ＳＱＬ）クエリーを取得することと、連合ＳＱＬクエリーに対するクエリープランを生成することであって、クエリープランが、データ処理システムによって行われる複数のデータ処理動作を含み、複数のデータ処理動作が、第１のデータ処理動作及び第２のデータ処理動作を少なくとも含む、生成することと、複数のＧＵＩ要素を含むグラフィカルユーザインタフェース（ＧＵＩ）を表示することであって、複数のＧＵＩ要素が、第１のデータ処理動作を表す第１のＧＵＩ要素及び第２のデータ処理動作を表す第２のＧＵＩ要素を含む、表示することと、連合ＳＱＬクエリーの実行の間、連合ＳＱＬクエリーに対する追跡情報を集約することであって、第１のデータ処理動作に対する第１の追跡情報及び第２のデータ処理動作に対する第２の追跡情報を集約することを含む、集約することと、第１のＧＵＩ要素と関連付けられた第１の追跡情報の少なくとも幾つか及び第２のＧＵＩ要素と関連付けられた第２の追跡情報の少なくとも幾つかをＧＵＩに表示することとを少なくとも１つのコンピュータハードウェアプロセッサに行わせる、非一時的コンピュータ可読ストレージ媒体に向けられる。
【０００５】
幾つかの実施形態は、少なくとも１つのコンピュータハードウェアプロセッサによって行われる方法であって、連合構造化照会言語（ＳＱＬ）クエリーを取得することと、連合ＳＱＬクエリーに対するクエリープランを生成することであって、クエリープランが、データ処理システムによって行われる複数の処理動作を含み、複数の処理動作が、第１のデータ処理動作及び第２のデータ処理動作を少なくとも含む、生成することと、複数のＧＵＩ要素を含むグラフィカルユーザインタフェース（ＧＵＩ）を表示することであって、複数のＧＵＩ要素が、第１のデータ処理動作を表す第１のＧＵＩ要素及び第２のデータ処理動作を表す第２のＧＵＩ要素を含む、表示することと、連合ＳＱＬクエリーの実行の間、連合ＳＱＬクエリーに対する追跡情報を集約することであって、第１のデータ処理動作に対する第１の追跡情報及び第２のデータ処理動作に対する第２の追跡情報を集約することを含む、集約することと、第１のＧＵＩ要素と関連付けられた第１の追跡情報の少なくとも幾つか及び第２のＧＵＩ要素と関連付けられた第２の追跡情報の少なくとも幾つかをＧＵＩに表示することとを含む、方法に向けられる。
【０００６】
幾つかの実施形態は、プロセッサ実行可能命令を保存する少なくとも１つの非一時的コンピュータ可読ストレージ媒体であって、プロセッサ実行可能命令が、連合構造化照会言語（ＳＱＬ）クエリーを取得するための手段と、連合ＳＱＬクエリーに対するクエリープランを生成するための手段であって、クエリープランが、データ処理システムによって行われる複数のデータ処理動作を含み、複数のデータ処理動作が、第１のデータ処理動作及び第２のデータ処理動作を少なくとも含む、手段と、複数のＧＵＩ要素を含むグラフィカルユーザインタフェース（ＧＵＩ）を表示するための手段であって、複数のＧＵＩ要素が、第１のデータ処理動作を表す第１のＧＵＩ要素及び第２のデータ処理動作を表す第２のＧＵＩ要素を含む、手段と、連合ＳＱＬクエリーの実行の間、連合ＳＱＬクエリーに対する追跡情報を集約するための手段であって、第１のデータ処理動作に対する第１の追跡情報及び第２のデータ処理動作に対する第２の追跡情報を集約することを含む、手段と、第１のＧＵＩ要素と関連付けられた第１の追跡情報の少なくとも幾つか及び第２のＧＵＩ要素と関連付けられた第２の追跡情報の少なくとも幾つかをＧＵＩに表示するための手段とを備える、非一時的コンピュータ可読ストレージ媒体に向けられる。
【０００７】
本発明のいかなる実施形態にも一般的に適用可能であるように、ユーザに表示される追跡情報は、ＳＱＬクエリーの実行と同時に表示することができ、すなわち、ユーザに表示される情報は、システムによってＳＱＬクエリーが実行されている間に表示される。
【０００８】
本発明のいかなる実施形態にも一般的に適用可能であるように、ＳＱＬクエリーのデータ処理動作についての追跡情報は、そのデータ処理動作の一部として処理されたデータレコードの所定のセットに対する特定のデータ処理動作の実行の進捗状況及び／又は特定のデータ処理動作を取り扱うために利用可能な計算資源を示す情報であり得る。
【０００９】
幾つかの実施形態（先行する実施形態の何れも含む）では、連合ＳＱＬクエリーを実行することは、第１のタイプの第１のデータソースからデータレコードを読み取ること及び／又は第１のタイプの第１のデータソースにデータレコードを書き込むことと、第１のタイプとは異なる第２のタイプの第２のデータソースからデータレコードを読み取ること及び／又は第１のタイプとは異なる第２のタイプの第２のデータソースにデータレコードを書き込むこととを含む。
【００１０】
幾つかの実施形態（先行する実施形態の何れも含む）では、複数の動作は、第１のタイプの第１のデータソース内のデータレコードにアクセスするための少なくとも１つのデータ処理動作と、第１のタイプとは異なる第２のタイプの第２のデータソース内のデータレコードにアクセスするための少なくとも別のデータ処理動作とを含む。
【００１１】
幾つかの実施形態（先行する実施形態の何れも含む）では、第１のタイプの第１のデータソースは、フラットファイルデータソース、マルチファイルデータソース、Ｈａｄｏｏｐデータソース、Ｏｒａｃｌｅデータソース、Ｔｅｒａｄａｔａデータソース、ＤＢ２データソース、ＳＱＬ  Ｓｅｒｖｅｒデータソース、Ｉｎｆｏｒｍｉｘデータソース、ＭｏｎｇｏＤＢデータソース、ＳＡＰデータソース、ＳＡＳデータソース又はメタデータデータソースである。
【００１２】
幾つかの実施形態（先行する実施形態の何れも含む）では、グラフィカルユーザインタフェースが非表形式である、先行する節の何れかに記載のデータ処理システム。
【００１３】
幾つかの実施形態（先行する実施形態の何れも含む）では、ＧＵＩを表示することが、第１のデータ処理動作と関連付けられたグラフの第１のノードを表すために第１のＧＵＩ要素を生成することと、第２のデータ処理動作と関連付けられたグラフの第２のノードを表すために第２のＧＵＩ要素を生成することとによって少なくとも部分的に、グラフのグラフィカル表現を生成することを含む、先行する節の何れかに記載のデータ処理システム。
【００１４】
幾つかの実施形態（先行する実施形態の何れも含む）では、グラフのグラフィカル表現を生成することは、ＳＱＬクエリーを実行するためのデータフローグラフであるデータフローグラフのグラフィカル表現を生成することを含む。
【００１５】
幾つかの実施形態（先行する実施形態の何れも含む）では、データフローグラフのグラフィカル表現を生成することは、データフローグラフの第１のノードとデータフローグラフの第２のノードとの間のエッジを表す第３のＧＵＩ要素を生成することをさらに含む。
【００１６】
幾つかの実施形態（先行する実施形態の何れも含む）では、プロセッサ実行可能命令は、クエリープランに基づいて、データフローグラフを表す少なくとも１つのデータ構造を生成することであって、データフローグラフが、第１のノード及び第２のノードを含む複数のノードと、複数のノードを接続する複数のエッジとを含み、複数のノードの各々が、複数のデータ処理動作のそれぞれのデータ処理動作に相当し、複数のエッジが、複数のノードのノード間のデータのフローを表す、生成することを少なくとも１つのコンピュータハードウェアプロセッサにさらに行わせる。
【００１７】
幾つかの実施形態（先行する実施形態の何れも含む）では、第１の動作に対する第１の追跡情報を集約することは、第１のデータ処理動作を介して処理されたデータレコードの数を追跡することを含み、ＧＵＩを介して、第１の追跡情報の少なくとも幾つかを表示することは、第１のＧＵＩ要素と関連付けて、第１のデータ処理動作を介して処理されたデータレコードの数を表示することを含む。
【００１８】
幾つかの実施形態（先行する実施形態の何れも含む）では、第１のＧＵＩ要素と関連付けて、第１のデータ処理動作を介して処理されたデータレコードの数を表示することは、第１のノードの出力端部側に、第１のデータ処理動作を介して処理されたデータレコードの数を表示することを含む。
【００１９】
幾つかの実施形態（先行する実施形態の何れも含む）では、第２のデータ処理動作に対する第２の追跡情報を集約することは、第２のデータ処理動作を介して処理されたデータレコードの数を追跡することを含み、ＧＵＩを介して、第２の追跡情報の少なくとも幾つかを表示することは、第２のＧＵＩ要素と関連付けて、第２のデータ処理動作を介して処理されたデータレコードの数を表示することを含む。
【００２０】
幾つかの実施形態（先行する実施形態の何れも含む）では、第１の動作に対する第１の追跡情報を集約することは、第１のデータ処理動作を介して処理されたデータレコードの数、第１のデータ処理動作を行うために用いられた並列性の度合い、第１のデータ処理動作を行うために使用された１つ又は複数のコンピューティングデバイスを識別する情報、第１のデータ処理動作を行うために使用された処理資源の量、第１のデータ処理動作を行うために使用されたメモリの量、第１のデータ処理動作を行うために要した時間の総量、第１のデータ処理動作を行うコンピューティングデバイス上の処理負荷間のスキューの尺度、第１のデータ処理動作のパラメータ、第１のデータ処理動作が完了したかどうかを示す情報からなる群から選択される追跡情報を集約することを含む。
【００２１】
幾つかの実施形態（先行する実施形態の何れも含む）では、第１のデータ処理動作に対する第１の追跡情報を集約することは、第１のデータ処理動作の１つ又は複数のパラメータを識別することを含み、追跡情報の少なくとも幾つかを表示することは、識別された１つ又は複数のパラメータのうちの少なくとも１つのパラメータの少なくとも１つの値を表示することを含む。
【００２２】
幾つかの実施形態（先行する実施形態の何れも含む）では、プロセッサ実行可能命令は、データ処理システムによって実行されている１つ又は複数のＳＱＬクエリーのリストを表示する第２のＧＵＩを表示することであって、１つ又は複数のＳＱＬクエリーが、ＳＱＬクエリーを含む、表示することと、第２のＧＵＩを介するＳＱＬクエリーのユーザ選択に応答して、複数のＧＵＩ要素を含むＧＵＩを生成することであって、複数のＧＵＩ要素が、第１のデータ処理動作を表す第１のＧＵＩ要素及び第２のデータ処理動作を表す第２のＧＵＩ要素を含む、生成することとを少なくとも１つのコンピュータハードウェアプロセッサにさらに行わせる。
【００２３】
幾つかの実施形態（先行する実施形態の何れも含む）では、プロセッサ実行可能命令は、データ処理システムによって実行されている１つ又は複数のＳＱＬクエリーのリストを表示する第２のＧＵＩを表示することであって、１つ又は複数のＳＱＬクエリーが、ＳＱＬクエリーを含む、表示することと、第２のＧＵＩを介するＳＱＬクエリーのユーザ選択に応答して、ＳＱＬクエリーの実行を停止することとを少なくとも１つのコンピュータハードウェアプロセッサにさらに行わせる。
【００２４】
幾つかの実施形態（先行する実施形態の何れも含む）では、表示することは、表示された第１の追跡情報の少なくとも幾つかをリフレッシュすることをさらに含む。
【００２５】
上記は、添付の特許請求の範囲によって定義される本発明の非限定的概要である。
【００２６】
以下の図面を参照して、様々な態様及び実施形態を説明する。これらの図面は、必ずしも一定の縮尺で描かれていないことが理解されるものとする。複数の図面に現れるアイテムは、それらが現れる全ての図面において、同じ又は類似の参照番号で示される。
【図面の簡単な説明】
【００２７】
【図１】本明細書に記載する技術の幾つかの実施形態による、説明のためのデータ処理システムの図である。
【図２】本明細書に記載する技術の幾つかの実施形態による、データ処理システムにおける構造化照会言語（ＳＱＬ）クエリーなどのアクティブクエリーについての情報を示す説明のためのグラフィカルユーザインタフェース（ＧＵＩ）の図である。
【図３】本明細書に記載する技術の幾つかの実施形態による、入力ＳＱＬクエリーから生成されたデータフローグラフのノードによって表される複数のデータ処理動作に対する追跡情報を示す説明のためのＧＵＩの図である。
【図４Ａ】本明細書に記載する技術の幾つかの実施形態による、データ処理システムにおけるアクティブクエリーについての情報を示す別の説明のためのＧＵＩの図である。
【図４Ｂ】本明細書に記載する技術の幾つかの実施形態による、入力ＳＱＬクエリーから生成されたデータフローグラフのノードによって表される複数のデータ処理動作に対する追跡情報を示すことによって、入力ＳＱＬクエリーに対する追跡情報を示す別の説明のためのＧＵＩの図である。
【図５Ａ】本明細書に記載する技術の幾つかの実施形態による、入力ＳＱＬクエリーから自動生成された説明のためのデータフローグラフの図である。
【図５Ｂ】本明細書に記載する技術の幾つかの実施形態による、図５Ａのデータフローグラフのノードによって表される複数のデータ処理動作に対する追跡情報を示す説明のためのＧＵＩの図である。
【図５Ｃ】本明細書に記載する技術の幾つかの実施形態による、入力ＳＱＬクエリーから生成されたデータフローグラフのデータ処理動作に対する説明のための追跡情報の図である。
【図５Ｄ】本明細書に記載する技術の幾つかの実施形態による、図５Ｃに示されるデータ処理動作と関連付けられたパラメータの図である。
【図６】本明細書に記載する技術の幾つかの実施形態による、ＳＱＬクエリーを追跡するための説明のためのプロセス６００のフローチャートである。
【図７】本明細書に記載する技術の幾つかの実施形態の実施に使用することができる、説明のためのコンピューティングシステム環境のブロック図である。
【発明を実施するための形態】
【００２８】
本明細書に記載する技術の態様は、構造化照会言語（ＳＱＬ）クエリーを実行するための従来の技術を改良することによって、データ処理システムの速度及びスループットを向上させることに関係する。
【００２９】
本発明者らは、従来のデータ処理システムがその上で実行されているＳＱＬクエリーについての情報をほとんど提供しないことを理解した。例えば、幾つかの従来のデータ処理システムは、ＳＱＬクエリーが実行されているという表示しか提供せず、ユーザは、ＳＱＬクエリーが完了したかどうか及びいつ完了するのかについての確認を待たなければならない。ユーザは、ＳＱＬクエリーが完了するまでどれほど時間がかかるのか又は果たしてそもそもＳＱＬクエリーが完了するのかを知るすべがないため、これは、ユーザにとって非常に苛立たしいことである。別の例として、幾つかの従来のデータ処理システムは、ＳＱＬクエリーの実行の間にデータベースのどの行にアクセスしたかをＳＱＬクエリーの完了後にユーザが確かめられるようになっている。この手法は、ＳＱＬクエリーの実行の間に情報を提供することはない。ＳＱＬクエリーの完了後に提供される情報では、この情報はＳＱＬクエリーの実行の間に利用可能ではなく、その結果、ユーザは、長時間を要し得るＳＱＬクエリーの完了を待たずにＳＱＬクエリーを停止すること及び／又は調整することができないため、その利用が限定される。別の例として、幾つかの従来のデータ処理システムは、実行されている各ＳＱＬクエリーによってどれほどの処理能力が消費されたかについての表示を提供する。しかし、そのようなシステムは、クエリーの完了に向けてどれほど進捗したかについての認識を与えない。例えば、ＳＱＬクエリーの実行を開始してから１時間経過したことが分かっていても、クエリーの実行の完了までにさらにどれほどの時間が必要かを示すことにはならない。
【００３０】
これらの従来のデータ処理システムの何れも、ＳＱＬクエリーの実行に長時間かかる理由についての診断情報をＳＱＬクエリーの実行の間に提供することはない。本発明者らは、実行の間にそのような情報をユーザに提供することにより、従来のデータ処理システムの性能を改良できることを認識した。それに従って、幾つかの実施形態は、ＳＱＬクエリーを実行している間にデータ処理システムがＳＱＬクエリーについての詳細な情報をユーザに提供できるようにする技術を提供する。例えば、ＳＱＬクエリーの実行の間、データ処理システムは、ＳＱＬクエリーに関する各データ処理動作によってどれほどの数のレコードが処理されたかについての表示をユーザに提供することができる。この方法では、ユーザは、入力表からどれほどの数の行が処理されたかのみならず、これらのレコードのうちの幾つが任意の所定の時間にＳＱＬクエリーのクエリープランの各段階に進んだかも確かめることができる。
【００３１】
実行しているＳＱＬクエリーについての詳細な追跡情報の提供の結果、ユーザは、クエリーに対して意図する時間よりはるかに長い時間をかけさせ得るようなＳＱＬクエリーの問題（例えば、バグ）があるかどうかを確かめることができ、その上、ＳＱＬクエリーを実行している間にこの動作を行うことができる。同様に、ユーザは、ＳＱＬクエリーを最適化するために実行計画又は方法にボトルネックがあるかどうかを確かめることができる。それに加えて、ユーザは、クエリーの実行の間に起こる流出の量などの他の状態情報を確かめることができる。それに従って、ユーザは、バグ又は他の問題を有するＳＱＬクエリーを停止すること、ＳＱＬクエリーを最適化すること、改良された方法でＳＱＬクエリーを書き直すことができ、それらは全て、ＳＱＬクエリーを実行する従来のデータ処理システムの速度、資源利用（例えば、ＣＰＵ、メモリ、ネットワーク資源）及びスループットを向上させる。
【００３２】
それに加えて、本明細書に記載する技術により、データ処理システムは、連合ＳＱＬクエリーに対する詳細な追跡情報を提供することができ、連合ＳＱＬクエリーは、異なるタイプのデータベースシステムからデータレコードを読み取る及び／又は異なるタイプのデータベースシステムにデータレコードを書き込むＳＱＬクエリーである。従来のデータ処理システムは、連合ＳＱＬクエリーに対するいかなる追跡情報も提供しない。
【００３３】
本明細書に記載する技術の幾つかの実施形態は、ＳＱＬクエリーを実行するための従来のデータ処理システム及び技術の上述の欠点の幾つかに対処する。しかし、全ての実施形態が、これらの欠点の１つ１つに対処するわけではなく、幾つかの実施形態は、これらの何れにも対処しない場合がある。そのため、本明細書に記載する技術の態様は、ＳＱＬクエリーを実行するための従来のデータ処理システム及び技術の上述の欠点の全て又は何れかに対処することに限定されないことを理解されたい。
【００３４】
それに従って、幾つかの実施形態は、（１）構造化照会言語（ＳＱＬ）クエリーを取得することと、（２）ＳＱＬクエリーに対するクエリープランを生成することであって、クエリープランが、データ処理システムによって行われる複数の動作を含み、複数の動作が、第１の動作及び第２の動作を少なくとも含む、生成することと、（３）複数のＧＵＩ要素を含むグラフィカルユーザインタフェース（ＧＵＩ）を生成することであって、複数のＧＵＩ要素が、第１の動作を表す第１のＧＵＩ要素及び第２の動作を表す第２のＧＵＩ要素を含む、生成することと、（４）ＳＱＬクエリーの実行の間、ＳＱＬクエリーに対する追跡情報を集約することであって、第１の動作に対する第１の追跡情報及び第２の動作に対する第２の追跡情報を集約することを含む、集約することと、第１のＧＵＩ要素と関連付けられた第１の追跡情報の少なくとも幾つか及び第２のＧＵＩ要素と関連付けられた第２の追跡情報の少なくとも幾つかをＧＵＩに表示することとを行うように構成されたデータ処理システムを提供する。
【００３５】
幾つかの実施形態では、生成されたＧＵＩは、ＳＱＬクエリーを実行するためのデータフローグラフを含む。データフローグラフは、（１）第１のデータ処理動作を表すための第１のノード、（２）第２のデータ処理動作を表すための第２のノード、及び、（３）第１のノードから第２のノードへの有向リンク（データレコードが第２のデータ処理動作を使用して処理される前に第１のデータ処理動作を使用して処理されることを示す）を含むように、クエリープランから生成することができる。幾つかの実施形態では、ＧＵＩは、非表形式である（すなわち、表ではない）。
【００３６】
幾つかの実施形態では、データフローグラフを生成することは、クエリープランに基づいて、データフローグラフを表す少なくとも１つのデータ構造を生成することであって、データフローグラフが、第１のノード及び第２のノードを含む複数のノードと、複数のノードを接続する複数のエッジとを含み、複数のノードの各々が、複数の動作のそれぞれの動作に相当し、複数のエッジが、複数のノードのノード間のデータのフローを表す、生成することを含み得る。
【００３７】
幾つかの実施形態では、第１の動作に対する第１の追跡情報を集約することは、データフローグラフのノードによって表される１つ又は複数のデータ処理動作の各々を使用して処理されたデータレコードの数を追跡することを含む。各データ処理動作に対し、データ処理動作を介して処理された数値データレコードは、グラフィカルユーザインタフェースを介して表示することができる（例えば、データ処理動作を表すデータフローグラフのノードの最も近くに）。
【００３８】
データ処理動作に対する追跡情報の例は、限定されることはないが、第１の動作を介して処理されたデータレコードの数、第１の動作を行うために用いられた並列性の度合い、第１の動作を行うために使用された１つ又は複数のコンピューティングデバイスを識別する情報、第１の動作を行うために使用された処理資源の量、第１の動作を行うために使用されたメモリの量、第１の動作を行うために使用された時間量（例えば、第１のデータ処理動作を行うために要した時間の総量（好ましくは、クエリーを完了するために処理された全てのレコードに対するもの））、第１の動作を行うコンピューティングデバイス上の処理負荷間のスキューの尺度、第１の動作のパラメータ、第１の動作が完了したかどうかを示す情報を含む。
【００３９】
幾つかの実施形態では、クエリープランの複数の動作は、第１のタイプの第１のデータソース内のデータレコードにアクセスするための少なくとも１つの動作と、第１のタイプとは異なる第２のタイプの第２のデータソース内のデータレコードにアクセスするための少なくとも別の動作とを含む。第１のタイプの第１のデータソースは、フラットファイルデータソース、マルチファイルデータソース、Ｈａｄｏｏｐデータソース、Ｏｒａｃｌｅデータソース、Ｔｅｒａｄａｔａデータソース、ＤＢ２データソース、ＳＱＬ  Ｓｅｒｖｅｒデータソース、Ｉｎｆｏｒｍｉｘデータソース、ＭｏｎｇｏＤＢデータソース、ＳＡＰデータソース又はメタデータデータソースであり得る。幾つかの実施形態では、データソースは、データベース表とは異なるものであり得る。
【００４０】
上記で紹介される及び以下でより詳細に述べる技術は、特定の実施様式に限定されないため、それらの技術は、多数のやり方の何れで実施されてもよいことを理解されたい。実施の詳細の例は、本明細書では、単なる説明目的で提供する。その上、本明細書に記載する技術の態様は、特定の技術又は技術の組み合わせの使用に限定されないため、本明細書で開示される技術は、個々に又は任意の適宜の組み合わせで使用されてもよい。
【００４１】
図１は、本明細書に記載する技術の幾つかの実施形態による、説明のためのデータ処理システム１００の図である。図１に示されるように、データ処理システム１００は、クエリー入力モジュール１０４、クエリープランジェネレータ１０６、データフローグラフジェネレータ１０８、クエリー追跡モジュール１１０及びグラフ実行エンジン１１５を含む。
【００４２】
データ処理システム１００は、データ記憶装置１０２−１、１０２−２、．．．、１０２−ｎにアクセスする（例えば、データ記憶装置１０２−１、１０２−２、．．．、１０２−ｎからデータを読み取る及び／又はデータ記憶装置１０２−１、１０２−２、．．．、１０２−ｎにデータを書き込む）ように構成される。データ記憶装置１０２−１、１０２−２、．．．、１０２−ｎの各々は、１つ又は複数のデータセットを保存することができる。データ記憶装置は、任意の適宜のやり方で任意の適宜のタイプのデータを保存することができる。データ記憶装置は、データベースシステム（例えば、リレーショナルデータベースシステム）を使用して又は他の任意の適宜のやり方で、フラットテキストファイルとして、スプレッドシートとして、データを保存することができる。幾つかの例では、データ記憶装置は、トランザクションデータを保存することができる。例えば、データ記憶装置は、クレジットカード決済、通話記録データ又は銀行取引データを保存することができる。本明細書に記載する技術の態様はこの点において限定されないため、データ処理システム１００は、任意の適宜のタイプの任意の適宜の数のデータ記憶装置にアクセスするように構成できることを理解されたい。データ処理システム１００がデータを読み取るように構成することができるデータ記憶装置は、データソースと呼ぶことができる。データ処理システム１００がデータを書き込むように構成することができるデータ記憶装置は、データシンクと呼ぶことができる。
【００４３】
幾つかの実施形態では、データ記憶装置１０２−１、１０２−２、．．．、１０２−ｎは、同じタイプのもの（例えば、全てがリレーショナルデータベースであり得る）でも、異なるタイプのもの（例えば、あるものはリレーショナルデータベースであり得、あるものはファイルにデータを保存するデータ記憶装置であり得る）でもよい。本明細書に記載する技術の態様はこの点において限定されないため、データ記憶装置は、ＳＱＬ  Ｓｅｒｖｅｒデータ記憶装置、ＯＲＡＣＬＥデータ記憶装置、ＴＥＲＡＤＡＴＡデータ記憶装置、フラットファイルデータ記憶装置、マルチファイルデータ記憶装置、ＨＡＤＯＯＰデータ記憶装置、ＤＢ２データ記憶装置、Ｍｉｃｒｏｓｏｆｔ  ＳＱＬ  ＳＥＲＶＥＲデータ記憶装置、ＩＮＦＯＲＭＩＸデータ記憶装置、ＳＡＰデータ記憶装置、ＭｏｎｇｏＤＢデータ記憶装置、メタデータデータ記憶装置及び／又は他の任意の適宜のタイプのデータ記憶装置であり得る。
【００４４】
幾つかの実施形態では、クエリー入力モジュール１０４は、入力ＳＱＬクエリーを受信するように構成することができる。幾つかの実施形態では、クエリー入力モジュール１０４は、ユーザから入力ＳＱＬクエリーを受信するように構成することができる。例えば、クエリー入力モジュール１０４は、ユーザがＳＱＬクエリーを入力できるようにするためのグラフィカルユーザインタフェースを生成するように構成することができる。別の例として、クエリー入力モジュール１０４は、グラフィカルユーザインタフェース（必ずしもクエリー入力モジュール１０４自体によって生成されたとは限らないもの）を通じて、ユーザによって提供された情報を受信するように構成することができる。幾つかの実施形態では、クエリー入力モジュール１０４は、別のコンピュータプログラムから入力ＳＱＬクエリーを受信するように構成することができる。例えば、クエリー入力モジュール１０４は、入力ＳＱＬクエリーを提供できるようにするためのアプリケーションプログラミングインタフェース（ＡＰＩ）を露出することも、ＳＱＬクエリーにアクセスするという通知に応答してＳＱＬクエリーにアクセスすることも、他の任意の適宜のやり方で他のコンピュータプログラムから入力ＳＱＬクエリーを受信することもできる。
【００４５】
クエリー入力モジュール１０４によって受信されるＳＱＬクエリーは、単一のデータ記憶装置からデータを読み取ること及び／又は単一のデータ記憶装置にデータを書き込むことを伴い得る。或いは、クエリー入力モジュール１０４によって受信されるＳＱＬクエリーは、複数のデータ記憶装置からデータを読み取ること及び／又は複数のデータ記憶装置にデータを書き込むことを伴い得る。データ記憶装置が異なるタイプのものである場合は、ＳＱＬクエリーは、連合ＳＱＬクエリーと呼ぶことができる。
【００４６】
幾つかの実施形態では、クエリープランジェネレータ１０６は、クエリー入力モジュール１０４によって受信されたＳＱＬクエリーからクエリープランを生成するように構成される。生成されたクエリープランは、ＳＱＬクエリーが実行された場合、行われる予定の１つ又は複数のデータ処理動作を識別することができる。生成されたクエリープランは、識別されたデータ処理動作が実行される順番をさらに指定することができる。従って、生成されたクエリープランは、クエリー入力モジュール１０４によって受信されたＳＱＬクエリーを実行するために行われる予定のデータ処理動作のシーケンスを表し得る。クエリープランジェネレータ１０６は、任意の適宜のやり方でクエリープランを生成するように構成することができる。例えば、幾つかの実施形態では、クエリープランジェネレータ１０６は、本明細書に全体として参照により援用される、「データクエリー管理（Ｍａｎａｇｉｎｇ  Ｄａｔａ  Ｑｕｅｒｉｅｓ）」というタイトルの米国特許第９，１１６，９５５号明細書に記載のクエリープランを生成するための技術の何れも実施することができる。
【００４７】
幾つかの実施形態では、データフローグラフジェネレータ１０８は、クエリープランジェネレータ１０６によって生成されたクエリープランからデータフローグラフを生成するように構成される。データフローグラフジェネレータ１０８は、任意の適宜のやり方で、クエリープランからデータフローグラフを生成するように構成することができる。例えば、幾つかの実施形態では、データフローグラフジェネレータ１０８は、本明細書に全体として参照により援用される、「データクエリー管理（Ｍａｎａｇｉｎｇ  Ｄａｔａ  Ｑｕｅｒｉｅｓ）」というタイトルの米国特許第９，１１６，９５５号明細書に記載のデータフローグラフを生成するための技術の何れも実施することができる。
【００４８】
幾つかの実施形態では、データフローグラフは、クエリープランにおいて識別されたデータ処理動作の少なくともサブセット（例えば、幾つか又は全て）の各々に対するノードを含むようにデータフローグラフを生成することによって少なくとも部分的に、クエリープランから生成することができる。その後、クエリープランにおいて指定されたデータ処理動作の順番を使用して、データフローグラフのノードを接続するリンクを生成することができる。例えば、第２のデータ処理動作の前に第１のデータ処理動作が行われることを生成されたクエリープランが示す際は、生成されたデータフローグラフは、第１のノード（第１のデータ処理動作を表す）と、第２のノード（第２のデータ処理動作を表す）と、第１のノードから第２のノードへのパスを指定する１つ又は複数のリンクとを有し得る。
【００４９】
幾つかの実施形態では、クエリープランからデータフローグラフを生成することは、入力及び／又は出力データソースを表すグラフに１つ又は複数のノードを追加することを含む。例えば、データフローグラフを生成することは、ＳＱＬクエリーの実行の間にデータレコードを読み取る予定のデータソースの各々に対する入力ノードを追加することを含み得る。入力ノードの各々は、それぞれのデータソースと関連付けられたパラメータ値と共に構成することができる。これらの値は、データソース内のデータレコードにどのようにアクセスするかを示すことができる。別の例として、データフローグラフを生成することは、ＳＱＬクエリーの実行の間にデータレコードを書き込む予定のデータシンクの各々に対する出力ノードを追加することを含み得る。出力ノードの各々は、それぞれのデータシンクと関連付けられたパラメータ値と共に構成することができる。これらの値は、データソースにどのようにデータレコードを書き込むかを示すことができる。
【００５０】
幾つかの実施形態では、データフローグラフを生成することは、データフローグラフのデータ処理動作を行うための処理レイアウトを決定することを含み得る。データ処理動作の処理レイアウトは、データ処理動作を行うためにどれほどの数のコンピューティングデバイスを使用するかを指定することや、データ処理動作を行うために使用する特定のコンピューティングデバイスを識別することができる。例えば、データフローグラフを生成することは、１つ又は複数のノードの各々に対し、単一のデバイス（例えば、単一のプロセッサ、単一の仮想マシンなど）を使用してデータ処理動作を行うか又は複数のデバイス（例えば、複数のプロセッサ、複数の仮想マシンなど）を使用してデータ処理動作を行うか、及び、どのデバイスを使用すべきかを決定することを含み得る。幾つかの実施形態では、異なる度合いの並列性は、異なるノードに割り当てることができる。従って、異なる処理レイアウトは、クエリー入力モジュール１０４によって取得されたＳＱＬクエリーから生成されたデータフローグラフの実行の間に行われる予定の異なるデータ処理動作に割り当てることができることを理解されたい。
【００５１】
幾つかの実施形態では、グラフ実行エンジン１１５は、例えば、データフローグラフジェネレータ１０８によるデータフローグラフの何れも含む、１つ又は複数のデータフローグラフを実行するように構成される。グラフ実行エンジンは、共働システム又はデータフローグラフを実行するための他の任意の適宜の実行環境を含み得る。データフローグラフを開発して実行するための環境の態様は、各々が本明細書に全体として参照により援用される、「グラフとして表現される計算の実行（Ｅｘｅｃｕｔｉｎｇ  Ｃｏｍｐｕｔａｔｉｏｎｓ  Ｅｘｐｒｅｓｓｅｄ  ａｓ  Ｇｒａｐｈｓ）」というタイトルの米国特許第５，９６６，０７２号明細書及び「グラフベース計算のパラメータ管理（Ｍａｎａｇｉｎｇ  Ｐａｒａｍｅｔｅｒｓ  ｆｏｒ  Ｇｒａｐｈ−Ｂａｓｅｄ  Ｃｏｍｐｕｔａｔｉｏｎｓ）」というタイトルの米国特許第７，７１６，６３０号明細書に記載されている。
【００５２】
クエリー追跡モジュール１１０は、その実行の間にＳＱＬクエリーについての追跡情報を集約するように構成される。追跡情報の例を本明細書で提供する。例えば、幾つかの実施形態では、クエリー追跡モジュール１１０は、受信されたＳＱＬクエリーから生成された（例えば、クエリープランナ１０６及びデータフローグラフジェネレータ１０８を使用して）データフローグラフの実行の間に追跡情報を集約するように構成することができる。幾つかの実施形態では、グラフ実行エンジン１１５は、データフローグラフの１つ又は複数のデータ処理動作の各々の実行をモニタするように構成することができ、実行の間に情報を収集し、その情報から追跡データを取得することができる。収集された情報が追跡データの少なくとも幾つかを直接含むこと及び／又は収集された情報から追跡データの少なくとも幾つかを導出することができる。制限ではなく例として、グラフ実行エンジンは、特定のデータ処理動作によって処理されたデータレコードの数、データ処理動作によって利用された処理能力及び／若しくはメモリの量、並びに／又は他の任意の適宜の追跡情報を記録することができ、それらの例を本明細書で提供する。これを受けて、この収集された情報が集約された追跡情報の少なくとも幾つかを含むこと及び／又はこの収集された情報から追跡情報の少なくとも幾つかを導出することができる。
【００５３】
図２は、データ処理システムのアクティブクエリーについての情報を示す説明のためのグラフィカルユーザインタフェース（ＧＵＩ）２００の図である。ＧＵＩ  ２００は、データ処理システムの１つ又は複数の（例えば、全ての）アクティブクエリーの各々の実行についての要約情報を提供することができる。図２に示されるように、ＧＵＩ  ２００は、データ処理システムにおいてアクティブな各クエリーに対する行を有する表２０１を含む。アクティブクエリーは、その実行が始まった（但し、未だ完了していない）クエリーであり得る。
【００５４】
図２に示されるように、例えば、表２０１は、行２０２、２０４、２０６を含み、各行は、それぞれのアクティブクエリーに対する情報を含む。各アクティブクエリーに対し、対応する行の情報は、クエリー識別子（例えば、行２０２の「ＱＩＤ  １」）、ユーザ識別子（例えば、行２０２の「ＵＩＤ  １」）、アクティブクエリーの実行が始まった時刻を示す情報（例えば、行２０２の「１１：００：０３」）、アクティブクエリーの実行が始まってから経過した時間を示す情報（例えば、行２０２の「０：５９：５７」）、アクティブクエリーの実行の間にこれまで処理されたレコード（例えば、表の行）の数を示す情報（例えば、行２０２の「５０６，２３９」）及びアクティブクエリーの状態を示す情報（例えば、行２０２の「実行中」及び行２０４の「休止」）を含む。しかし、本明細書に記載する技術の態様はこの点において限定されないため、表２０１は、表２０１に示される情報に加えて又はその代わりに、各アクティブクエリーについての他の任意の適宜の情報を含み得ることを理解されたい。また、図２の説明のための実施形態では、アクティブクエリーについての情報は表の一部として示されているが、他の実施形態では、この情報の少なくとも幾つかを非表形式で（例えば、グラフ、チャート、視覚化、リストなどを使用して）表示できることも理解されたい。
【００５５】
図２に示されるように、ＧＵＩ  ２００は、ＧＵＩ  ２００のユーザがデータ処理システムにおいてアクティブな１つ又は複数のクエリーに対する１つ又は複数の行為を行えるようにする制御要素をさらに提供する。例えば、ＧＵＩ  ２００は、ユーザがアクティブクエリーの実行を停止できるようにするため（例えば、予想より長くクエリーが実行されている場合、クエリーによって処理されたレコードの数が予想数より大きい場合など）のＧＵＩ制御要素２０８を提供する。例えば、ユーザは、アクティブクエリーを選択し（例えば、表２０１の行を選択することによって）、選択したアクティブクエリーの実行を停止するためにＧＵＩ制御要素２０８（この説明のための例では、「クエリー停止」とラベル付けされたボタンであるが、他の任意の適宜のタイプのＧＵＩ要素でもよい）を選択することができる。幾つかの実施形態では、選択したアクティブクエリーの実行を停止することにより、その実行を後に再開できるようにアクティブクエリーの実行を休止させることができる。他の実施形態では、選択したアクティブクエリーの実行を停止することにより、クエリーを再開できないようにそのアクティブクエリーの実行を終了させることができる。
【００５６】
別の例として、ＧＵＩ  ２００は、アクティブクエリーについての情報をリフレッシュすることをユーザが要求できるようにするためのＧＵＩ制御要素２１０を提供する。例えば、ＧＵＩ制御要素２１０のユーザ選択に応答して、表２０１において、どれほどの時間アクティブクエリーを実行しているのか及びどれほどの数のレコードが処理されたかを示す情報を更新することができる。
【００５７】
別の例として、ＧＵＩ  ２００は、特定のアクティブクエリーについてのさらなる情報を提供することをユーザが要求できるようにするためのＧＵＩ制御要素２１２を提供する。例えば、幾つかの実施形態では、ユーザは、アクティブクエリーを選択し（例えば、表２０１の行を選択することによって又は他の任意の適宜のやり方で）、ＧＵＩ制御要素２１２（この説明のための例では、「追跡」とラベル付けされたボタンであるが、ボタン以外の任意の適宜のタイプのＧＵＩ要素でもよい）を選択することができ、それに応答して、選択したアクティブクエリーに対するより詳細な追跡情報を示す別のＧＵＩを生成し、ユーザに提示することができる。幾つかの実施形態では、より詳細な情報は、非表形式グラフィカルユーザインタフェースで提供することができ、その説明のための例を図３に示し、以下で述べる。
【００５８】
本明細書に記載する技術の態様はこの点において限定されないため、ＧＵＩ  ２００は、制御要素２０８、２１０、２１２に加えて又はその代わりに、１つ又は複数の他の制御要素を有し得ることを理解されたい。
【００５９】
図３は、入力ＳＱＬクエリーから生成されたデータフローグラフのノードによって表される複数のデータ処理動作に対する追跡情報を示す説明のためのＧＵＩ  ３００の図である。データフローグラフは、図１を参照して記載するように、データ処理システム１００によって入力ＳＱＬクエリーから生成することができる。
【００６０】
本明細書に記載するように、データフローグラフは、複数のノードを含み得、複数のノードは、（ａ）１つ又は複数のそれぞれのデータソースを表す１つ又は複数の入力ノード（例えば、１つ又は複数の入力データセット）、（ｂ）１つ又は複数のそれぞれのデータシンクを表す１つ又は複数の出力ノード（例えば、１つ又は複数の出力データセット）、及び／又は（ｃ）データに対して行うことができるデータ処理動作を表す１つ又は複数のノードを含む。データフローグラフのノード間の有向リンク又はエッジは、ノード間のデータのフローを表す。
【００６１】
図３に示されるように、データフローグラフは、それぞれのデータソースを表す入力ノード３０２、３０４と、データシンクを表す出力ノード３１４と、フィルタリング動作を表すノード３０６、３０８と、ソート動作を表すノード３１０と、結合動作を表すノード３１２とを含む。それに従って、幾つかの実施形態では、ノード３０２によって表されるデータソースから取得されたレコードは、フィルタリングされ、ソートされ、ノード３０４によって表されるデータソースから取得されたフィルタリング済みのレコードと結合される。結合動作の結果として生成されたレコードは、出力ノード３１４によって表されるデータシンクに出力することができる。
【００６２】
入力ノード３０２、３０４によって表されるデータソースは、任意の適宜のタイプのものでよい。幾つかの実施形態では、入力ノード３０２、３０４によって表されるデータソースは、同じタイプのデータソースであり得る（例えば、両方ともＳＱＬ  Ｓｅｒｖｅｒデータソースであり得る）。他の実施形態では、入力ＳＱＬクエリーが連合クエリーである際は、入力ノード３０２、３０４によって表されるデータソースは、異なるタイプのものであり得る（例えば、あるデータソースはＯＲＡＣＬＥデータソースであり得、他のデータソースはＴＥＲＡＤＡＴＡデータソースであり得る）。幾つかの実施形態では、出力ノード３１４は、入力ノード３０２、３０４によって表されるデータソースの一方又は両方と同じタイプのデータシンクを表し得る。他の実施形態では、出力ノード３１４によって表されるデータシンクは、全く異なるタイプのものであり得る（例えば、データソースはＤＢ２データソースであり得、データシンクはＭｏｎｇｏＤＢデータシンクであり得る）。
【００６３】
幾つかの実施形態では、本明細書に記載する技術の態様はこの点において限定されないため、データソース／シンクは、フラットファイルデータソース／シンク、マルチファイルデータソース／シンク、ＨＡＤＯＯＰデータソース／シンク、ＯＲＡＣＬＥデータソース／シンク、ＴＥＲＡＤＡＴＡデータソース／シンク、ＤＢ２データソース／シンク、Ｍｉｃｒｏｓｏｆｔ  ＳＱＬ  ＳＥＲＶＥＲデータソース／シンク、ＩＮＦＯＲＭＩＸデータソース／シンク、ＭｏｎｇｏＤＢデータソース／シンク、ＳＡＰデータソース／シンク、メタデータデータソース／シンク及び／又は他の任意の適宜のタイプのデータソース若しくはデータシンクであり得る。
【００６４】
図３に示されるように、ＧＵＩ  ３００は、データフローグラフの生成元であるＳＱＬクエリーに対する様々なタイプの追跡情報を示す。例えば、ＳＱＬクエリーから生成されたデータフローグラフの実行の間、ＧＵＩ  ３００は、グラフのノードによって表される各データ処理動作によって処理されたデータレコードの数を示す。一例として、ＧＵＩ  ３００に示される追跡情報は、（１）入力ノード３０２によって表されるデータソースから３５，０００個のレコードが読み取られたことを示す情報３１６、（２）これらの３５，０００個のレコードのうち１０，０００個がフィルタリングされたことを示す情報３１８、（３）入力ノード３０４によって表されるデータソースから５，０００個のレコードが読み取られたことを示す情報３２０、（４）これらの５，０００個のレコードのうち２５０個がフィルタリングされたことを示す情報３２２、及び、（５）結合動作の結果、これまでに７５，３２３個のレコードが生成されたことを示す情報３２４を含む。
【００６５】
幾つかの実施形態では、データ処理動作によって処理されたレコードの数を示す追跡情報は、データ処理動作の完了にどれほど近いかに関する表示を提供することができる。例えば、情報３２０、３２２は、これまでに、ノード３０８によって表されるフィルタリング動作によって、５，０００個のデータレコードのうち２５０個しか処理されていないことを示す。
【００６６】
幾つかの実施形態では、データ処理動作によって処理されたレコードの数を示す追跡情報は、実行されているクエリーに問題（例えば、ボトルネック又は他の非効率性）があるという表示を提供することができる。追跡情報は、そのような問題の存在を特定することを助けるのみならず、問題の対処法を示唆することもできる。例えば、図３に示されるように、情報３２４は、７５，３２３個のレコードが結合動作から出力されていることを示す（結合動作では、一方の入力からは１０，０００個のレコードしか受信しておらず、そして他方の入力からは２５０個のレコードしか受信していない）。この情報は、結合動作がボトルネックを提示していることのみならず、問題の解決法も示唆している（例えば、多数の出力レコードは、恐らくは、意図されていた内部結合というよりむしろ、外部結合が行われていることを示唆するため）。
【００６７】
幾つかの実施形態では、特定のデータ処理動作によって処理されたレコードの数を示す情報（例えば、情報３２４）は、データ処理動作を表すデータフローグラフノード（例えば、ノード３１２）と関連付けて示すことができる。例えば、処理されたレコードの数は、ノードの出力端部側（例えば、ノードを出たエッジの近く、上方、下方）に示すことができる。別の例として、本明細書に記載する技術の態様はこの点において限定されないため、処理されたレコードの数は、ノードの入力端部側、ノード内、ノードの上方又はノードの下方に示すことができる。
【００６８】
ＧＵＩ  ３００に示すことができるＳＱＬクエリーに対する追跡情報の別の例は、１つ又は複数のデータ処理動作の各々が完了したか否かを示す情報である。例えば、図３に示されるように、チェックマーク３２５、３２７は、ノード３０６、３０８によって表されるフィルタリング動作が完了したことを示す。これに対して、シンボル３２６、３２８は、ソート及び結合動作が未だ完了していないというそれぞれの表示を提供する。
【００６９】
ＧＵＩ  ３００に示すことができるＳＱＬクエリーに対する追跡情報の別の例は、データフローグラフのノードによって表される１つ又は複数のデータ処理動作の各々についての情報である。幾つかの実施形態では、そのような情報は、ユーザが特定のデータ処理動作についてのさらなる追跡情報の閲覧を希望することを示す入力をユーザが提供すること（例えば、データ処理動作を表すノードをクリックすることによって、データ処理動作を表すノード上にカーソルを置くことによって又は他の任意の適宜のやり方で）に応答して明示することができる。
【００７０】
データ処理動作についての情報の例は、限定されることはないが、データ処理動作を介して既に処理されたデータレコードの数、データ処理動作を行うために用いられた並列性の度合い（例えば、データ処理動作を行うために使用された物理的及び／又は仮想デバイスの数）、データ処理動作を行うために使用された１つ又は複数の物理的及び／又は仮想デバイスを識別する情報、データ処理動作を行うために使用された処理資源の量（例えば、ＣＰＵ使用量）、データ処理動作を行うために使用されたメモリ（揮発性及び／又は不揮発性メモリ）の量、データ処理動作を行うために使用された時間量（例えば、第１のデータ処理動作を行うために要した時間の総量（好ましくは、クエリーを完了するために処理された全てのレコードに対するもの））、データ処理動作を行う物理的及び／又は仮想コンピューティングデバイス上の処理負荷間のスキューの尺度、データ処理動作のパラメータ（例えば、結合動作が行われているキー、ソート動作が行われているキーなど）、データ処理動作が完了するまでの残り時間の目安を示す情報、並びに、データ処理動作が完了したかどうかを示す情報を含む。
【００７１】
図４Ａは、本明細書に記載する技術の幾つかの実施形態による、データ処理システムにおけるアクティブクエリーについての情報を示す別の説明のためのＧＵＩ  ４００の図である。ＧＵＩ  ４００は、１つ又は複数のＳＱＬクエリーを入力すること、入力ＳＱＬクエリーに基づいて生成されたデータフローグラフを閲覧すること、データ処理システムによって実行されているアクティブクエリーについての要約情報を閲覧すること、及び、その実行の間に入力ＳＱＬクエリーに対する追跡情報にアクセスすることをユーザが行えるようにする。
【００７２】
図４Ａに示されるように、ＧＵＩ  ４００は、入力部分４０２を含み、ユーザは、入力部分４０２を使用して、ＳＱＬクエリーをデータ処理システムに入力することができる。本明細書に記載する技術の態様はこの点において限定されないため、ユーザは、タイプすることによって、カットアンドペーストすることによって、口述することによって及び／又は他の任意の適宜のやり方で、ＳＱＬクエリーを入力部分４０２に提供することができる。図４Ａでは、説明のためのＳＱＬクエリー４０４は、入力部分４０２に入力されているものとして示されている。ユーザは、ＧＵＩ制御要素４０６を選択して、入力したＳＱＬクエリー４０４の実行を開始することができる。ユーザは、ＧＵＩ制御要素４０８を選択して、入力したＳＱＬクエリー４０４から生成された（例えば、図１を参照して記載するように、クエリープランジェネレータ１０６及びデータフローグラフジェネレータ１０８を使用して生成された）データフローグラフを閲覧することができる。ユーザは、ＧＵＩ制御要素４１０を選択して、入力したＳＱＬクエリー４０４から生成されたグラフを保存することができる。ユーザは、ＧＵＩ制御要素４１２を選択して、入力したＳＱＬクエリー４０４をクリアすることができる。
【００７３】
また、ＧＵＩ  ４００は、データ処理システムのアクティブクエリーについての情報を示す部分も含む。例えば、図４Ａに示されるように、アクティブクエリータブ４１５は、データ処理システムにおいてアクティブな各クエリーに対する情報を示す行を有する表４１７を含む。例えば、表４１７は、それぞれのアクティブクエリーに対する情報を含む行４１４を含み、その情報は、クエリー識別子（行４１４の第１列）、ユーザ識別子（行４１４の第２列）、アクティブクエリーの実行が始まった時刻を示す情報（行４１４の第３列）、アクティブクエリーの実行の間にこれまで処理されたレコードの数を示す情報（行４１４の第４列）及びアクティブクエリーの状態を示す情報（行４１４の第５列）を含む。本明細書に記載する技術の態様はこの点において限定されないため、表４１７は、表４１７に示される情報に加えて又はその代わりに、各アクティブクエリーについての他の任意の適宜の情報を含み得る。図４Ａの説明のための実施形態では、アクティブクエリーについての情報は表の一部として示されているが、他の実施形態では、この情報の少なくとも幾つかを非表形式で（例えば、グラフ、チャート、視覚化、リストなどを使用して）表示することができる。図４Ａには単一の行しか示されていないが、本明細書に記載する技術の態様はこの点において限定されないため、表４１７は、任意の適宜の数の行を含み得る。
【００７４】
図４Ａに示されるように、ＧＵＩ  ４００は、ＧＵＩ  ４００のユーザがデータ処理システムにおいてアクティブな１つ又は複数のクエリーに対する１つ又は複数の行為を行えるようにする制御要素をさらに提供する。例えば、ＧＵＩ  ４００は、ユーザがアクティブクエリーの実行を停止できるようにするため（例えば、予想より長くクエリーが実行されている場合、クエリーによって処理されたレコードの数が予想数より大きい場合など）のＧＵＩ制御要素４１８を提供する。別の例として、ＧＵＩ  ４００は、アクティブクエリーについての情報をリフレッシュすることをユーザが要求できるようにするためのＧＵＩ制御要素４２０を提供する。例えば、ＧＵＩ制御要素４２０のユーザ選択に応答して、表４１７において、どれほどの時間アクティブクエリーを実行しているのか及びどれほどの数のレコードが処理されたかを示す情報を更新することができる。さらなる別の例として、ＧＵＩ  ４００は、特定のアクティブクエリーについてのさらなる情報を提供することをユーザが要求できるようにするためのＧＵＩ制御要素４１６を提供する。例えば、幾つかの実施形態では、ユーザは、アクティブクエリーを選択し（例えば、表４１７の行を選択することによって又は他の任意の適宜のやり方で）、ＧＵＩ制御要素４１６（この説明のための例では、「追跡」とラベル付けされたボタンであるが、ボタン以外の任意の適宜のタイプのＧＵＩ要素でもよい）を選択することができ、それに応答して、選択したアクティブクエリーに対するより詳細な追跡情報を示す別のＧＵＩを生成し、ユーザに提示することができる。幾つかの実施形態では、より詳細な情報は、非表形式グラフィカルユーザインタフェースで提供することができ、その説明のための例を図４Ｂに示し、以下で述べる。本明細書に記載する技術の態様はこの点において限定されないため、ＧＵＩ  ４００は、制御要素４１６、４１８、４２０に加えて又はその代わりに、１つ又は複数の他の制御要素を有し得る。
【００７５】
ＧＵＩ  ４００は、図４Ａに示されるＧＵＩ制御要素に加えて又はその代わりに、１つ又は複数の他のＧＵＩ制御要素を含み得ることを理解されたい。また、図４Ａの例に示されるＧＵＩ制御要素はボタンであるが、本明細書に記載する技術の態様はこの点において限定されないため、ＧＵＩ制御要素は、他の任意の適宜のタイプのもの（例えば、ラジオボタン、チェックボックス、テキストフィールドなど）でもよいことも理解されたい。
【００７６】
図４Ｂは、本明細書に記載する技術の幾つかの実施形態による、入力ＳＱＬクエリーから生成されたデータフローグラフのノードによって表される複数のデータ処理動作に対する追跡情報を示すことによって、入力ＳＱＬクエリーに対する追跡情報を示す別の説明のためのＧＵＩ  ４５０の図である。この例では、図４Ｂに示される追跡情報は、図４Ａに示されるＧＵＩ  ４００の表４１７の行４１４に要約情報が示されるアクティブクエリーに対するものである。
【００７７】
図４Ｂに示されるように、データフローグラフは、それぞれのデータソースを表す入力ノード４５２、４５６と、データシンクを表す出力ノード４６８と、再パーティション動作を表すノード４５４と、ソート動作を表すノード４５８と、結合データ処理動作を表すノード４６０と、シリアル化データ処理動作を表すノード４６２と、ＴＣＰ接続を使用して公開予定のデータレコードを準備するための出力関連の処理を表すノード４６４、４６６とを含む。
【００７８】
入力ノード４５２、４５４によって表されるデータソースは、任意の適宜のタイプのものでよい。幾つかの実施形態では、入力ノード４５２、４５４によって表されるデータソースは、同じタイプのデータソースであり得る（例えば、両方ともＳＱＬ  Ｓｅｒｖｅｒデータソースであり得る）。他の実施形態では、入力ＳＱＬクエリーが連合クエリーである際は、入力ノード４５２、４５４によって表されるデータソースは、異なるタイプのものであり得る（例えば、あるデータソースはＯＲＡＣＬＥデータソースであり得、他のデータソースはＴＥＲＡＤＡＴＡデータソースであり得る）。幾つかの実施形態では、出力ノード４６８は、入力ノード４５２、４５４によって表されるデータソースの一方又は両方と同じタイプのデータシンクを表し得る。他の実施形態では、出力ノード４６８によって表されるデータシンクは、全く異なるタイプのものであり得る（例えば、データソースはＤＢ２データソースであり得、データシンクはＭｏｎｇｏＤＢデータシンクであり得る）。
【００７９】
図４Ｂに示されるように、ＧＵＩ  ４５０は、データフローグラフの生成元であるＳＱＬクエリーに対する様々なタイプの追跡情報を示す。例えば、ＳＱＬクエリーから生成されたデータフローグラフの実行の間、ＧＵＩ  ４５０は、グラフのノードによって表される各データ処理動作によって処理されたデータレコードの数を示す。一例として、ＧＵＩ  ３５０に示される追跡情報は、（１）入力ノード４５２によって表されるデータソースから１００万個のレコードが読み取られたことを示す情報、（２）これらのレコードの全てが再パーティショニング動作を通過したことを示す情報、（３）７，２９９個のレコードがソートデータ処理動作によって処理されたことを示す情報、（４）入力ノード４５６によって表されるデータソースから７４０個のレコードが読み取られたことを示す情報、（５）入力ノード４６０によって表される結合動作によって４，１１２個のレコードが処理されたことを示す情報、及び、（６）ノード４６４、４６６、４６８によって表される動作によって、２５４１個、３２１４個、２７９０個のレコードがそれぞれ処理されたことを示す情報を含む。それに加えて、ノード４５４に示されるチェックマークは、ノード４５４によって表されるデータ処理（再パーティショニング）動作がデータレコードの全てに適用されたことを示し、「プレイ」シンボル（右向きの三角形）は、ノード４５８〜４６８によって表される動作に対する処理が未だ完了していないことを示す。
【００８０】
図５Ａは、本明細書に記載する技術の幾つかの実施形態による、入力ＳＱＬクエリーから自動生成された説明のためのデータフローグラフ５００の図である。データフローグラフ５００は、入力ＳＱＬクエリーから生成することができ、例えば、本明細書に記載する技術の態様はこの点において限定されないため、クエリープランジェネレータ（例えば、クエリープランジェネレータ１０６）を使用して、入力クエリーからクエリープランを生成し、その後、データフローグラフジェネレータ（例えば、データフロージェネレータ１０８）を使用して、生成したクエリープランからデータフローグラフ５００を生成することによって、又は、他の任意の適宜のやり方で、生成することができる。
【００８１】
図５Ａに示されるように、データフローグラフ５００は、それぞれのデータソース（例えば、クレジットカード決済のデータベース）を表す入力ノード５０２、５０６と、ネットワーク上で（例えば、転送制御プロトコル（ＴＣＰ）を使用して）データレコードを出力するためのノード５１６、５１８と、データレコードから１つ又は複数の列が除去される列削除動作を表すノード５０４と、放送動作を表すノード５０６と、結合データ処理動作を表すノード５１０と、部分計数動作を表すノード５１２と、計数データ処理動作を表すノード５１４とを含む。グラフ５００がレコードを読み取るデータソース及び／又はグラフ５００がレコードを書き込むデータシンクは、任意の適宜のタイプのものでよく、その例を本明細書で提供する。
【００８２】
図５Ｂは、本明細書に記載する技術の幾つかの実施形態による、図５Ａのデータフローグラフ５００のノードによって表される複数のデータ処理動作に対する追跡情報を示す説明のためのＧＵＩの図である。図５Ｂは、データフローグラフ５００のサブグラフ５２０を示し、追跡情報が重ね合されている。例えば、図５Ｂに示されるように、ＧＵＩでは、データフローグラフ５００の実行の間の、サブグラフ５２０のノードによって表されるデータ処理動作の少なくとも幾つかによって処理されたデータレコードの数が示されている。一例として、図５Ｂに示される追跡情報は、（１）ノード５０４によって表される列削除動作を使用して、９１７，５０４個のレコードが処理されたことを示す情報５０５、（２）入力ノード５０８によって表されるデータソースから１２８，４９８個のレコードがアクセスされたことを示す情報５０９ａ、（３）ノード５０６によって表される放送動作を使用して、１，０４８，５７６個のレコードが処理されたことを示す情報５０９ｂ、及び、（４）及びノード５１０によって表される結合動作の結果、１３９，０３２，８３１個のレコードが出力されたことを示す情報５１１（結合動作が効率的に実施されなかったことを示し得る）を含む。
【００８３】
本明細書に記載するように、ＳＱＬクエリーに対する追跡情報は、ＳＱＬクエリーから生成されたデータフローグラフの様々なデータ処理動作によって処理されたデータレコードの数のみに限定されない。追跡情報は、データフローグラフの１つ又は複数のデータ処理動作の各々についての他の任意の適宜の情報を含み得る。例えば、データ処理動作に対する追跡情報は、制限ではなく例として、（１）データ処理動作を行うために用いられた並列性の度合いを示す情報、（２）データ処理動作を行うために使用された１つ又は複数のコンピューティングデバイスを識別する情報、（３）データ処理動作を行うために使用された処理資源の量（例えば、使用された処理資源の総量、１レコードあたり若しくは閾値数のレコードあたりの使用された処理資源の量の平均、及び／又は、他の任意の適宜の統計）を示す情報、（３）データ処理動作を行うために使用されたメモリの量（例えば、使用されたメモリの総量、１レコードあたり若しくは閾値数のレコードあたりの使用されたメモリの量の平均、及び／又は、他の任意の適宜の統計）を示す情報、（４）データ処理動作を行うために使用された時間量（例えば、経過した時間の総量、１レコードあたり若しくは閾値数のレコードあたりのデータ処理動作を適用するために使用された時間の量の平均、及び／又は、他の任意の適宜の統計）を示す情報、（５）データ処理動作を行うコンピューティングデバイス上の処理負荷間のスキューの尺度を示す情報、（６）データ処理動作を使用してレコード（又は閾値数の若しくは指定量のレコード）が処理されたレートを示す情報、（７）データ処理動作の１つ又は複数のパラメータの値を示す情報、並びに、（８）第１の動作が完了したかどうかを示す情報を含み得る。
【００８４】
本明細書で述べるように、幾つかの実施形態では、ＳＱＬクエリーに対する追跡情報は、ＳＱＬクエリーから生成されたデータフローグラフの１つ又は複数のデータ処理動作の各々に対する追跡情報を含む。幾つかの実施形態では、データ処理動作に対する追跡情報の少なくとも幾つかは、データフローグラフと共に示すことができる。例えば、図５Ｂに示されるように、データフローグラフのデータ処理動作によって処理されたレコードの数は、データ処理動作を表すデータフローグラフのノードの最も近くに示すことができる。幾つかの実施形態では、データ処理動作に対する追跡情報の少なくとも幾つかは、ユーザが追加の追跡情報の閲覧を希望することを示すユーザ入力に応答して示すことができる。例えば、幾つかの実施形態では、ユーザは、データ処理動作を選択することができ、その選択に応答して、データ処理動作に対する追跡情報の少なくとも幾つかを示すことができる。本明細書に記載する技術の態様はこの点において限定されないため、ユーザは、データ処理動作を表すノードをクリックすることによって、ノード上にマウスポインタ（例えば、事象上にマウス）を置くことによって、キーボード入力を提供することによって及び／又は他の任意の適宜のやり方で、データ処理動作を選択することができる。
【００８５】
例えば、図５Ｃに示されるように、ユーザは、結合データ処理動作を表すノード５１０を選択することができ、ユーザの選択に応答して、結合情報に対する追加の追跡情報が示される。図５Ｃの例では、図５Ｃに対して示される追跡情報は、処理されたレコードの数、利用されたメモリの総量、利用された処理資源の総量、１秒あたりの処理されたレコードの数の平均、１秒あたりのレコードのキロバイト数（ｋＢ）を処理する時間の量の平均を示す情報、及び、ユーザがクリックすることにより結合動作の様々なパラメータの値を閲覧できるようにするためのリンク（その説明のための例を図５Ｄに示す）を含む。
【００８６】
図５Ｄは、本明細書に記載する技術の幾つかの実施形態による、図５Ｃに示される結合データ処理動作と関連付けられたパラメータの少なくとも幾つかに対する値の表５５０である。例えば、表５５０は、結合データ処理動作がソート済みの入力を受信するように構成されること（表５５０の第２行を参照）、結合動作が内部結合であること（第４行を参照）、結合動作が、データがソートされていることをチェックするというよりむしろ、想定することになっていること（第１３行を参照）及び他のパラメータ値を示す。
【００８７】
図６は、本明細書に記載する技術の幾つかの実施形態による、ＳＱＬクエリーを追跡するための説明のためのプロセス６００のフローチャートである。プロセス６００は、任意の適宜のデータ処理システム（例えば、図１を参照して記載したデータ処理システム１００を含む）を使用して実行することができる。
【００８８】
プロセス６００は、ＳＱＬクエリーが受信されるアクト６０２から始まる。幾つかの実施形態では、ＳＱＬクエリーは、ユーザがデータ処理システムへの入力としてＳＱＬクエリーを提供した結果としてプロセス６００を実行するデータ処理システムによって受信することができる。ユーザは、グラフィカルユーザインタフェース（例えば、図４Ａに示されるような）又は他の任意の適宜のインタフェースを通じて、ＳＱＬクエリーを入力することができる。他の実施形態では、ＳＱＬクエリーは、別のコンピュータプログラムによって、データ処理システムに提供され得る。例えば、ＳＱＬクエリーは、データ処理システムに１つ又は複数のＳＱＬクエリー（各ＳＱＬクエリーは、ユーザによって指定されている場合、又は自動生成されている場合がある）を実行させるように構成されたコンピュータプログラムによって提供され得る。ＳＱＬクエリーは、任意の適宜のタイプのものでよく、及び任意の適宜のフォーマットで提供され得る（本明細書に記載の技術の態様は、この点において限定されない）。
【００８９】
次に、プロセス６００は、アクト６０２で受信されたＳＱＬクエリーからクエリープランが生成されるアクト６０４へと進む。生成されたクエリープランは、ＳＱＬクエリーが実行された場合に行われる１つ又は複数のデータ処理動作を識別し得る。生成されたクエリープランはさらに、識別されたデータ処理動作が実行される順序を指定し得る。そのため、生成されたクエリープランは、アクト６０２で受信したＳＱＬクエリーを実行するために行うデータ処理動作のシーケンスを表し得る。生成されるクエリープランは、任意の適宜のタイプのクエリープランジェネレータ（例えば、クエリープランジェネレータ１０６）を使用して生成することができる。クエリープランを生成するための幾つかの例示的技術が、本明細書に全体として援用される、「データクエリー管理」というタイトルの米国特許第９，１１６，９５５号明細書に記載されている。
【００９０】
次に、プロセス６００は、アクト６０２で受信されたＳＱＬクエリーを使用してアクト６０４で生成されたクエリープランからデータフローグラフが生成されるアクト６０６へと進む。幾つかの実施形態では、データフローグラフが、クエリープラン（これ自体は、受信したＳＱＬクエリーを用いて生成されたものである）から生成され得る。幾つかの実施形態では、データフローグラフは、少なくとも部分的に、クエリープランにおいて識別されたデータ処理動作の少なくともサブセット（例えば、一部又は全て）のそれぞれのノードを含むようにデータフローグラフを生成することによって、クエリープランから生成され得る。幾つかの実施形態では、クエリープランにおける単一のノードは、データフローグラフにおける複数のノードの包含をもたらし得る。続いて、クエリープランで指定されたデータ処理動作の順序を使用して、データフローグラフにおけるノードを結び付けるリンクを生成し得る。例えば、生成されたクエリープランが、第２のデータ処理動作の前に、第１のデータ処理動作が行われることを示す場合、生成されたデータフローグラフは、第１のノード（第１のデータ処理動作を表す）及び第２のノード（第２のデータ処理動作を表す）と、第１のノードから第２のノードへの経路を指定する１つ又は複数のリンクとを有し得る。
【００９１】
幾つかの実施形態では、クエリープランからデータフローグラフを生成することは、入力及び／又は出力データソースを表すグラフに対して、１つ又は複数のノードを追加することを含む。例えば、データフローグラフの生成は、ＳＱＬクエリーの実行中にデータレコードが読み取られるデータソースのそれぞれに対して入力ノードを追加することを含み得る。各入力ノードは、それぞれのデータソースと関連付けられたパラメータ値を用いて構成され得る。これらの値は、データソース中のデータレコードにアクセスする方法を示し得る。別の例として、データフローグラフの生成は、ＳＱＬクエリーの実行中にデータレコードが書き込まれるデータシンクのそれぞれに対して出力ノードを追加することを含み得る。各出力ノードは、それぞれのデータシンクと関連付けられたパラメータ値を用いて構成され得る。これらの値は、データレコードをデータソースに書き込む方法を示し得る。
【００９２】
幾つかの実施形態では、データフローグラフを生成することは、データフローグラフのデータ処理動作を行うための処理レイアウトを決定することを含み得る。データ処理動作に対する処理レイアウトは、データ処理動作を行うためにどれほどの数のコンピューティングデバイスを使用するかを指定することや、データ処理動作を行うために使用する特定のコンピューティングデバイスを識別することができる。例えば、データフローグラフを生成することは、１つ又は複数のノードの各々に対し、単一のデバイス（例えば、単一のプロセッサ、単一の仮想マシンなど）を使用してデータ処理動作を行うか又は複数のデバイス（例えば、複数のプロセッサ、複数の仮想マシンなど）を使用してデータ処理動作を行うか、及び、どのデバイスを使用すべきかを決定することを含み得る。幾つかの実施形態では、異なる度合いの並列性は、異なるノードに割り当てることができる。従って、異なる処理レイアウトは、アクト６０２で取得されたＳＱＬクエリーから生成されたデータフローグラフの実行の間に行われる予定の異なるデータ処理動作に割り当てることができることを理解されたい。
【００９３】
アクト６０６で生成されたデータフローグラフは、アクト６０４で生成されたクエリープランとは異なることを理解されたい。データフローグラフはグラフ実行エンジン（例えば、グラフ実行エンジン１１５）によって実行することができるが、クエリープランはグラフ実行エンジンによって実行することはできない（すなわち、クエリープランは、データフローグラフを生成するために使用される中間表現であり、データフローグラフは、ＳＱＬクエリーを実行するために、グラフ実行エンジンによって実行される）。クエリープランは、実行可能ではなく、リレーショナルデータベース管理システムの状況下でさえ、実行戦略を生成するために、さらに処理される必要がある。これに対して、データフローグラフは、ＳＱＬクエリーを実行するために、グラフ実行エンジンによって実行可能である。加えて、リレーショナルデータベースシステムによるさらなる処理後でさえ、結果として生じる実行戦略は、他のタイプのデータソース及び／又はデータシンクに対する、データの読み取り及び／又は書き込みを可能にしないが、データフローグラフは、この点において限定されない。
【００９４】
幾つかの実施形態では、アクト６０６で生成されたデータフローグラフは、アクト６０４で生成されたクエリープランに存在しないデータ処理動作を表すノードを含み得る。逆に、幾つかの実施形態では、アクト６０６で生成されたデータフローグラフは、アクト６０４で生成されたクエリープランに存在するデータ処理動作を表すノードを含まないことがあり得る。そのような状況は、クエリープランからデータフローグラフを生成するプロセス中に行われ得る様々な最適化が原因で起こり得る。幾つかの実施形態では、アクト６０６で生成されたデータフローグラフは、データベースコンピュータシステム（例えば、リレーショナルデータベース管理システム）上で行われるデータベース動作以外のデータ処理動作を表すノードを含み得る。
【００９５】
幾つかの実施形態では、クエリープラン及びデータフローグラフは、異なるタイプのデータ構造で具現化され得る。例えば、幾つかの実施形態では、クエリープランは、各ノードが単一の親ノードを有する有向グラフ（例えば、例えば二分木などの木）で具現化されてもよく、一方、データフローグラフは、複数の親ノードを有する少なくとも１つのノードを有し得る有向非巡回グラフで具現化され得る。
【００９６】
次に、プロセス６００は、ＳＱＬクエリーの実行が開始されるアクト６０８へと進む。幾つかの実施形態では、ＳＱＬクエリーの実行は、アクト６０６でグラフ実行エンジン（例えば、グラフ実行エンジン１１５）を使用して生成されたデータフローグラフを実行し始めることによって開始することができる。幾つかの実施形態では、アクト６０６で生成されたデータフローグラフは、生成され次第、ユーザ入力なしで、実行することができる。他の実施形態では、アクト６０６で生成されたデータフローグラフは、生成し得ても、その実行はそのような実行コマンドを受けた場合にのみ開始することができ、コマンドは、インタフェースを通じて（例えば、図４Ａに示されるＧＵＩを通じて）ユーザによって提供することも、別のコンピュータプログラムによって（例えば、ＡＰＩ呼び出しを通じて）提供することもできる。
【００９７】
次に、プロセス６００は、実行されているＳＱＬクエリーに対する追跡情報が集約されるアクト６１０へと進む。このアクト６１０は、任意の適宜のやり方で行うことができる。例えば、アクト６０６で生成されたデータフローグラフを実行するグラフ実行エンジンは、データフローグラフの１つ又は複数のデータ処理動作の各々の実行をモニタするように構成することができ、実行の間に情報を収集し、その情報から追跡データを取得することができる。収集された情報が追跡データの少なくとも幾つかを直接含むこと及び／又は収集された情報から追跡データの少なくとも幾つかを導出することができる。制限ではなく例として、グラフ実行エンジンは、特定のデータ処理動作によって処理されたデータレコードの数、データ処理動作によって利用された処理能力及び／若しくはメモリの量、並びに／又は他の任意の適宜の追跡情報を記録することができ、それらの例を本明細書で提供する。これを受けて、この収集された情報が集約されている追跡情報の少なくとも幾つかを含むこと及び／又はこの収集された情報から追跡情報の少なくとも幾つかを導出することができる。
【００９８】
次に、プロセス６００は、ＳＱＬクエリーに対する追跡情報を表示するためのＧＵＩを生成し、ＳＱＬクエリーに対する追跡情報を表示するために使用することができるアクト６１２及び６１４へと進む。幾つかの実施形態では、ＧＵＩは、アクト６０６でＳＱＬクエリーから生成されたデータフローグラフの視覚表現を含み得る。そのようなＧＵＩの例は、図３、４Ｂ及び５Ａ〜５Ｃに示す。ＧＵＩは、追跡情報の少なくとも幾つかをデータフローグラフと同じ画面上に表示することができる。例えば、ＧＵＩは、データ処理動作の各々によって処理されたデータレコードの数を表示することができる。別の例として、ＧＵＩは、データ処理動作のパラメータに対する１つ又は複数の値を表示することができる。幾つかの実施形態では、ＧＵＩは、追加の追跡情報を表示することができる（自動的に又はそのようなユーザ指示に応答して）。この例は、図５Ｃ及び５Ｄを参照することを含めて、本明細書に記載する。
【００９９】
次に、プロセス６００は、追跡データの集約を続けるかどうかに関する決定が行われるアクト６１６へと進む。この決定は、任意の適宜のやり方で行うことができる。例えば、幾つかの実施形態では、データフローグラフの実行が完了しているか、取り消されているか又は休止している（例えば、ユーザ又は別のコンピュータプログラムから実行休止指示を受信することに応答して）場合は、追跡データの集約を続けないという決定を行うことができ、プロセス６００は完了する。他方では、データフローグラフの実行が進行中である（例えば、完了も、取消しも、休止も行われていない）場合は、追跡情報の集約を続けるという決定を行うことができ、プロセス６００はアクト６１０に戻る。
【０１００】
プロセス６００は、説明のためのものであり、バリエーションが存在することを理解されたい。例えば、幾つかの実施形態では、後続の使用のために追跡情報を集約して保存するが、追跡情報を表示するためのＧＵＩが生成されないことや、生成されても表示されないことがあり得る。そのような実施形態では、アクト６１０、６１２、６１４の何れか１つ、何れか２つ又は全てを省略することができる。幾つかの実施形態では、プロセス６００のアクト６０２〜６０８をあるソフトウェアプログラムによって行い、アクト６１０〜６１４を異なるコンピュータプログラムによって行うことができる。
【０１０１】
図７は、本明細書に記載する技術を実施することができる適宜のコンピューティングシステム環境７００の一例を図示する。コンピューティングシステム環境７００は、適宜のコンピューティング環境の一例にすぎず、本明細書に記載する技術の使用又は機能性の範囲に関して何ら制限を示唆することを意図したものではない。コンピューティング環境７００は、例示的動作環境７００に図示されるコンポーネントの何れか１つ又は組み合わせに関する依存性又は要件を有すると解釈されるべきものでもない。
【０１０２】
本明細書に記載する技術は、多数の他の汎用又は専用コンピューティングシステムの環境又は構成と共に使用可能である。本明細書に記載する技術と共に使用するのに適し得る周知のコンピューティングシステム、環境、及び／又は構成の例には、限定されることはないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルド又はラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル大衆消費電子製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記のシステム又はデバイスの何れかを含む分散コンピューティング環境などが含まれる。
【０１０３】
コンピューティング環境は、プログラムモジュールなどのコンピュータ実行可能命令を実行することができる。一般に、プログラムモジュールには、特定のタスクを行う、又は特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。本明細書に記載する技術は、通信ネットワークを通してリンクされるリモート処理デバイスによってタスクが行われる分散コンピューティング環境において実行されてもよい。分散コンピューティング環境では、プログラムモジュールは、メモリストレージデバイスを含むローカル及びリモートコンピュータストレージ媒体の両方に位置していてもよい。
【０１０４】
図７を参照して、本明細書に記載する技術を実施する例示的システムは、コンピュータ７１０の形態の汎用コンピューティングデバイスを含む。コンピュータ７１０のコンポーネントは、限定されないが、処理装置７２０、システムメモリ７３０、及びシステムメモリを含む様々なシステムコンポーネントを処理装置７２０に結合するシステムバス７２１を含んでもよい。システムバス７２１は、様々なバスアーキテクチャの何れかを使用した、メモリバス又はメモリコントローラ、周辺バス、及びローカルバスを含む幾つかのタイプのバス構造の何れかであってもよい。例として、及び限定ではなく、このようなアーキテクチャには、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ電子装置規格化協会（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）（ＶＥＳＡ）ローカルバス、及びメザニンバスとしても知られるペリフェラルコンポーネントインターコネクト（ＰＣＩ）バスが含まれる。
【０１０５】
コンピュータ７１０は、一般的に、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ７１０によってアクセスすることができる任意の入手可能な媒体でよく、及び揮発性及び不揮発性両方の媒体、リムーバブル及び非リムーバブル媒体を含む。例として、及び限定ではなく、コンピュータ可読媒体は、コンピュータストレージ媒体及び通信媒体を含んでもよい。コンピュータストレージ媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータなどの情報のストレージのための任意の方法又は技術で実施される、揮発性及び不揮発性、リムーバブル及び非リムーバブル媒体を含む。コンピュータストレージ媒体には、限定されないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ又は他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）又は他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ又は他の磁気ストレージデバイス、又は所望の情報を保存するために使用することができ、且つコンピュータ７１０によってアクセスすることができるその他の媒体が含まれる。通信媒体は、一般的に、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータを搬送波又は他のトランスポート機構などの変調データ信号で具現化し、及びあらゆる情報配信媒体を含む。「変調データ信号」という用語は、それの特性集合の１つ又は複数を有する、又は信号の情報をエンコードするように変更された信号を意味する。例として、及び限定ではなく、通信媒体には、有線ネットワーク又は直接有線接続などの有線媒体、及び音響、ＲＦ、赤外線、及び他の無線媒体などの無線媒体が含まれる。上記の何れかの組み合わせも、コンピュータ可読媒体の範囲内に含まれるものとする。
【０１０６】
システムメモリ７３０は、読み出し専用メモリ（ＲＯＭ）７３１及びランダムアクセスメモリ（ＲＡＭ）７３２などの揮発性及び／又は不揮発性メモリの形態のコンピュータストレージ媒体を含む。起動時などに、コンピュータ７１０内の素子間で情報を転送することを助ける基本ルーチンを含有した、基本入出力システム７３３（ＢＩＯＳ）は、一般的に、ＲＯＭ７３１内に保存される。ＲＡＭ７３２は、一般的に、即座に利用できる、及び／又は処理装置７２０によって現在操作されているデータ及び／又はプログラムモジュールを含有する。例として、及び限定ではなく、図７は、オペレーティングシステム７３４、アプリケーションプログラム７３５、他のプログラムモジュール７３６、及びプログラムデータ７３７を図示する。
【０１０７】
コンピュータ７１０は、他のリムーバブル／非リムーバブル、揮発性／不揮発性コンピュータストレージ媒体も含むことができる。単なる例として、図７は、非リムーバブル、不揮発性磁気媒体に対する読み取り又は書き込みを行うハードディスクドライブ７４１、フラッシュメモリなどのリムーバブル、不揮発性メモリ７５２に対する読み取り又は書き込みを行うフラッシュドライブ７５１、及びＣＤ−ＲＯＭ又は他の光学媒体などのリムーバブル、不揮発性光ディスク７５６に対する読み取り又は書き込みを行う光ディスクドライブ７５５を図示する。例示的動作環境において使用することができる他のリムーバブル／非リムーバブル、揮発性／不揮発性コンピュータストレージ媒体には、限定されないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、固体ＲＡＭ、固体ＲＯＭなどが含まれる。ハードディスクドライブ７４１は、一般的に、インタフェース７４０などの非リムーバブルメモリインタフェースを通してシステムバス７２１に接続され、及び磁気ディスクドライブ７５１及び光ディスクドライブ７５５は、一般的に、インタフェース７５０などのリムーバブルメモリインタフェースによってシステムバス７２１に接続される。
【０１０８】
上述した、及び図７に図示したドライブ及びそれらに関連付けられたコンピュータストレージ媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、及びコンピュータ７１０の他のデータのストレージを提供する。図７においては、例えば、ハードディスクドライブ７４１は、オペレーティングシステム７４４、アプリケーションプログラム７４５、他のプログラムモジュール７４６、及びプログラムデータ７４７を保存するものとして図示される。これらのコンポーネントは、オペレーティングシステム７３４、アプリケーションプログラム７３５、他のプログラムモジュール７３６、及びプログラムデータ７３７と同じであってもよいし、或いは異なっていてもよいことに留意されたい。オペレーティングシステム７４４、アプリケーションプログラム７４５、他のプログラムモジュール７４６、及びプログラムデータ７４７は、少なくとも、それらが異なるコピーであることを図示するために、ここでは、異なる番号が付与されている。ユーザは、キーボード７６２及び一般にマウス、トラックボール、又はタッチパッドと呼ばれるポインティングデバイス７６１などの入力デバイスによって、コンピュータ７１０にコマンド及び情報を入力することができる。他の入力デバイス（不図示）には、マイクロホン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどが含まれ得る。これら及び他の入力デバイスは、システムバスに結合されたユーザ入力インタフェース７６０によって、処理装置７２０に接続されることが多いが、パラレルポート、ゲームポート、又はユニバーサルシリアルバス（ＵＳＢ）などの他のインタフェース及びバス構造によって接続されてもよい。モニタ７９１又は他のタイプのディスプレイデバイスも、ビデオインタフェース７９０などのインタフェースを介して、システムバス７２１に接続される。モニタに加えて、コンピュータは、出力周辺インタフェース７９５を通して接続することができる、スピーカ７９７及びプリンタ７９６などの他の周辺出力デバイスも含むことができる。
【０１０９】
コンピュータ７１０は、リモートコンピュータ７８０などの１つ又は複数のリモートコンピュータへの論理接続を用いたネットワーク化環境で動作することができる。リモートコンピュータ７８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、又は他の共通ネットワークノードでもよく、及び一般的に、図７ではメモリストレージデバイス７８１のみが図示されているが、コンピュータ７１０に関連して上記した素子の多く又は全てを含む。図７に描かれる論理接続は、ローカルエリアネットワーク（ＬＡＮ）７７１及び広域ネットワーク（ＷＡＮ）７７３を含むが、他のネットワークも含んでよい。このようなネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、及びインターネットにおいて、ありふれたものである。
【０１１０】
ＬＡＮネットワーキング環境で使用される場合、コンピュータ７１０は、ネットワークインタフェース又はアダプタ７７０を通してＬＡＮ７７１に接続される。ＷＡＮネットワーキング環境で使用される場合、コンピュータ７１０は、一般的に、モデム７７２、又はインターネットなどのＷＡＮ７７３上で通信を確立するための他の手段を含む。内部又は外部のものでもよいモデム７７２は、ユーザ入力インタフェース７６０又は他の適宜の機構を介して、システムバス７２１に接続されてもよい。ネットワーク化環境において、コンピュータ７１０に関連して描かれたプログラムモジュール、又はそれらの一部は、リモートメモリストレージデバイスに保存されてもよい。例として、及び限定ではなく、図７は、メモリデバイス７８１に常駐しているとして、リモートアプリケーションプログラム７８５を図示する。示されるネットワーク接続は、例示的なものであり、及びコンピュータ間で通信リンクを確立する他の手段が使用されてもよいことが理解されるだろう。
【０１１１】
本発明の少なくとも１つの実施形態の幾つかの態様を上記のように記載したが、様々な変更、修正、及び改良が、当業者には容易に思い付くことが理解されるものとする。
【０１１２】
このような変更、修正、及び改良は、本開示の一部であることが意図され、及び本発明の精神及び範囲内であることが意図される。さらに、本発明の利点が示されるが、本明細書に記載の技術の全ての実施形態が、全ての記載した利点を含むわけではないことが理解されるものとする。幾つかの実施形態は、本明細書において有利であると記載された何れの特徴も実施しない場合があり、場合によっては、記載された特徴の１つ又は複数が、さらなる実施形態を得るために実施されてもよい。従って、上記の記載及び図面は、単なる例である。
【０１１３】
本明細書に記載の技術の上記実施形態は、多数のやり方の何れで実施されてもよい。例えば、これらの実施形態は、ハードウェア、ソフトウェア、又はそれらの組み合わせを用いて実施されてもよい。ソフトウェアで実施される場合には、ソフトウェアコードは、単一のコンピュータにおいて提供されていようと、複数のコンピュータ間で分散されていようと、任意の適宜のプロセッサ又は一群のプロセッサ上で実行することができる。このようなプロセッサは、集積回路として実施されてもよく、業界において、ＣＰＵチップ、ＧＰＵチップ、マイクロプロセッサ、マイクロコントローラ、又はコプロセッサなどの名称で知られている市販の集積回路コンポーネントを含む集積回路コンポーネントにおいて、１つ又は複数のプロセッサを有する。代替的に、プロセッサは、ＡＳＩＣなどのカスタム回路、又はプログラマブル論理デバイスの構成に起因するセミカスタム回路において実施されてもよい。又さらなる代替手段として、プロセッサは、市販、セミカスタム、或いはカスタムであろうと、より大きな回路又は半導体デバイスの一部であってもよい。ある具体例として、幾つかの市販のマイクロプロセッサは、複数のコアの１つ又はサブセットがプロセッサを構成することができるように、複数のコアを有する。しかし、プロセッサは、任意の適宜のフォーマットの回路を使用して実施することができる。
【０１１４】
さらに、コンピュータは、ラックマウント式コンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、又はタブレットコンピュータなどの多数の形態の何れかで具現化されてもよいことが理解されるものとする。追加的に、コンピュータは、携帯情報端末（ＰＤＡ）、スマートフォン、又は任意のその他の適宜のポータブル又は固定電子デバイスを含む、一般にコンピュータとは見なされないが、適宜の処理能力を備えたデバイスに組み込まれてもよい。
【０１１５】
又、コンピュータは、１つ又は複数の入力デバイス及び出力デバイスを有していてもよい。これらのデバイスは、特に、ユーザインタフェースを提示するために使用することができる。ユーザインタフェースを提供するために使用することができる出力デバイスの例には、出力の視覚的表現のためのプリンタ又はディスプレイスクリーン、及び出力の可聴表現のためのスピーカ又は他の音生成デバイスが含まれる。ユーザインタフェースに使用することができる入力デバイスの例には、キーボード、並びにマウス、タッチパッド、及びデジタイザタブレットなどのポインティングデバイスが含まれる。別の例として、コンピュータは、音声認識により、又は他の可聴フォーマットで入力情報を受信してもよい。
【０１１６】
このようなコンピュータは、企業ネットワーク又はインターネットなどのローカルエリアネットワーク又は広域ネットワークとして含む、任意の適宜の形態の１つ又は複数のネットワークによって相互接続することができる。このようなネットワークは、任意の適宜の技術に基づいてもよく、及び任意の適宜のプロトコルに従って動作してもよく、及び無線ネットワーク、有線ネットワーク、又は光ファイバネットワークを含んでもよい。
【０１１７】
又、本明細書に概要が述べられる様々な方法又はプロセスは、様々なオペレーティングシステム又はプラットフォームの何れか１つを用いる１つ又は複数のプロセッサに対して実行可能なソフトウェアとして符号化されてもよい。追加的に、このようなソフトウェアは、多数の適宜のプログラミング言語及び／又はプログラミング又はスクリプト作成ツールの何れかを使用して書かれてもよく、及びフレームワーク又は仮想マシンに対して実行される実行可能マシン語コード又は中間コードとしてコンパイルされてもよい。
【０１１８】
この点において、本発明は、１つ又は複数のコンピュータ又は他のプロセッサに対して実行されると、上述の本発明の様々な実施形態を実施する方法を行う１つ又は複数のプログラムでエンコードされたコンピュータ可読ストレージ媒体（又は複数のコンピュータ可読媒体）（例えば、コンピュータメモリ、１つ又は複数のフロッピーディスク、コンパクトディスク（ＣＤ）、光ディスク、デジタルビデオディスク（ＤＶＤ）、磁気テープ、フラッシュメモリ、フィールドプログラマブルゲートアレイ又は他の半導体デバイスにおける回路構成、又は他の有形コンピュータストレージ媒体）として具現化されてもよい。上記の例から明らかなように、コンピュータ可読ストレージ媒体は、非一時的な形態でコンピュータ実行可能命令を提供するのに十分な時間の間、情報を保持することができる。このような１つ又は複数のコンピュータ可読ストレージ媒体は、それ（ら）に保存された１つ又は複数のプログラムを、上述のような本発明の様々な態様を実施するために、１つ又は複数の異なるコンピュータ又は他のプロセッサにロードすることができるように、可搬であってもよい。本明細書においては、「コンピュータ可読ストレージ媒体」という用語は、製品（すなわち、製造物）又はマシンであると見なすことができる非一時的コンピュータ可読媒体のみを網羅する。代替的又は追加的に、本発明は、伝搬信号などの、コンピュータ可読ストレージ媒体以外のコンピュータ可読媒体として具現化されてもよい。
【０１１９】
「プログラム」又は「ソフトウェア」という用語は、本明細書では、上述のような本発明の様々な態様を実施するようにコンピュータ又は他のプロセッサをプログラムするために使用することができる、あらゆるタイプのコンピュータコード又はコンピュータ実行可能命令のセットを指すために総称的に使用される。追加的に、本実施形態のある態様によれば、実行されると、本発明の方法を行う１つ又は複数のコンピュータプログラムは、単一のコンピュータ又はプロセッサに常駐する必要はなく、本発明の様々な態様を実施するために、多数の異なるコンピュータ又はプロセッサ間で、モジュラー方式で分散されてもよいことが理解されるものとする。
【０１２０】
コンピュータ実行可能命令は、１つ又は複数のコンピュータ又は他のデバイスによって実行される、プログラムモジュールなどの多くの形態のものでもよい。一般に、プログラムモジュールには、特定のタスクを行う、又は特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。一般的に、プログラムモジュールの機能性は、様々な実施形態において、要望通りに組み合わせられてもよいし、或いは分散されてもよい。
【０１２１】
又、データ構造は、任意の適宜の形態でコンピュータ可読媒体に保存されてもよい。図示を簡単にするために、データ構造は、データ構造内の場所によって関連したフィールドを有して示される場合がある。このような関係は、同様に、フィールドのストレージにフィールド間の関係を伝達するコンピュータ可読媒体内の場所を割り当てることによって、達成することができる。但し、ポインタ、タグ、又はデータ要素間の関係を確立する他の機構の使用によることを含む、任意の適宜の機構を使用して、データ構造のフィールドにおける情報間の関係を確立してもよい。
【０１２２】
本発明の様々な態様は、単独で、組み合わせて、又は上記に記載した実施形態において具体的に述べられていない様々な配置で使用されてもよく、従って、その適用において、上記の説明に記載された、又は図面に図示されたコンポーネントの詳細及び配置に限定されない。例えば、ある実施形態に記載した態様は、任意の様式で、他の実施形態に記載した態様と組み合わせることができる。
【０１２３】
又、本発明は、一例を提供した方法として具現化されてもよい。この方法の一部として行われるアクトは、任意の適宜のやり方で、順序付けが行われてもよい。従って、アクトが、図示されたものとは異なる順序で（これは、説明のための実施形態では、逐次的なアクトとして示されたとしても、幾つかのアクトを同時に行うことを含んでもよい）行われる実施形態が構築されてもよい。
【０１２４】
さらに、幾つかの行為は、「ユーザ」によって行われると記載される。「ユーザ」は、一人の個人である必要はなく、及び幾つかの実施形態では、「ユーザ」に帰する行為は、複数の個人から成るチーム及び／又はコンピュータ支援ツール又は他の機構と組み合わせた個人によって行われてもよいことが理解されるものとする。
【０１２５】
クレーム要素を修飾する、クレームにおける「第１の」、「第２の」、「第３の」などの序数用語の使用は、それ自体は、１つのクレーム要素の別のクレーム要素に対する優先、先行、又は順序、又は方法のアクトが行われる時間的順序を暗示せず、ある名称を有する１つのクレーム要素を、同じ名称（序数用語の使用を除き）を有する別の要素と区別するための単なるラベルとして使用することにより、これらのクレーム要素が区別される。
【０１２６】
又、本明細書において使用される表現及び用語は、説明目的のものであり、及び限定として見なされるものではない。本明細書における、「含む（ｉｎｃｌｕｄｉｎｇ）」、「含む（ｃｏｍｐｒｉｓｉｎｇ）」、又は「有する（ｈａｖｉｎｇ）」、「含有する（ｃｏｎｔａｉｎｉｎｇ）」、「関与する（ｉｎｖｏｌｖｉｎｇ）」、及びそれらのバリエーションの使用は、その後にリストされるアイテム及びそれらの均等物、並びに追加のアイテムを網羅することを意味する。
【図１】
2021506043.tif 000003
【図２】
2021506043.tif 000004
【図３】
2021506043.tif 000005
【図４Ａ】
2021506043.tif 000006
【図４Ｂ】
2021506043.tif 000007
【図５Ａ】
2021506043.tif 000008
【図５Ｂ】
2021506043.tif 000009
【図５Ｃ】
2021506043.tif 000010
【図５Ｄ】
2021506043.tif 000011
【図６】
2021506043.tif 000012
【図７】
2021506043.tif 000013
【国際調査報告】
2021506043.tif 000014
2021506043.tif 000015
2021506043.tif 000016