JP2021506043A - 構造化照会言語(sql)クエリーの実行をモニタするためのシステム及び方法 - Google Patents

構造化照会言語(sql)クエリーの実行をモニタするためのシステム及び方法 Download PDF

Info

Publication number
JP2021506043A
JP2021506043A JP2020550038A JP2020550038A JP2021506043A JP 2021506043 A JP2021506043 A JP 2021506043A JP 2020550038 A JP2020550038 A JP 2020550038A JP 2020550038 A JP2020550038 A JP 2020550038A JP 2021506043 A JP2021506043 A JP 2021506043A
Authority
JP
Japan
Prior art keywords
data processing
data
gui
processing operation
query
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.)
Pending
Application number
JP2020550038A
Other languages
English (en)
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 JP2021506043A publication Critical patent/JP2021506043A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/323Visualisation of programs or trace data
    • 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/2455Query execution
    • 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/21Design, administration or maintenance of databases
    • G06F16/217Database tuning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/80Database-specific techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/10Requirements analysis; Specification techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

構造化照会言語(SQL)クエリーの実行をモニタするための技術。技術は、SQLクエリーを取得することと、SQLクエリーに対するクエリープランを生成することであって、クエリープランが、データ処理システムによって行われる複数の動作を含み、複数の動作が、第1の動作及び第2の動作を少なくとも含む、生成することと、複数のGUI要素を含むグラフィカルユーザインタフェース(GUI)を表示することであって、複数のGUI要素が、第1の動作を表す第1のGUI要素及び第2の動作を表す第2のGUI要素を含む、表示することと、SQLクエリーの実行の間、SQLクエリーに対する追跡情報を集約することであって、第1の動作に対する第1の追跡情報及び第2の動作に対する第2の追跡情報を集約することを含む、集約することと、第1のGUI要素と関連付けられた第1の追跡情報の少なくとも幾つか及び第2のGUI要素と関連付けられた第2の追跡情報の少なくとも幾つかをGUIに表示することとを含む。

Description

関連出願の相互参照
この出願は、米国特許法第120条に基づいて、本明細書に全体として参照により援用される、2017年12月8日に出願された、「構造化照会言語(SQL)クエリーの実行をモニタするためのシステム及び方法」というタイトルの米国特許出願第15/835,823号明細書の便益を主張するものであり、同特許出願の一部継続出願である。
データ処理システムは、1つ又は複数のコンピュータプログラムを使用して、データを処理し得る。データ処理システムによって利用されるコンピュータプログラムの1つ又は複数は、データフローグラフとして展開され得る。データフローグラフは、入力データに対して行われるデータ処理動作、及びデータのフローを表すコンポーネント間のリンクを表す、「ノード」又は「節点」と呼ばれるコンポーネントを含み得る。データフローグラフのノードは、各入力データセットを表す1つ又は複数の入力ノード、各出力データセットを表す1つ又は複数の出力ノード、及びデータに対して行われるデータ処理動作を表す1つ又は複数のノードを含み得る。データフローグラフによってエンコードされる計算を実行するための技術が、それぞれ本明細書に全体として援用される、「グラフとして表現される計算の実行(Executing Computations Expressed as Graphs)」というタイトルの米国特許第5,966,072号明細書、及び「グラフベース計算のパラメータ管理(Managing Parameters for Graph−Based Computations)」というタイトルの米国特許第7,716,630号明細書に記載されている。
幾つかの実施形態は、少なくとも1つのコンピュータハードウェアプロセッサと、プロセッサ実行可能命令を保存する少なくとも1つの非一時的コンピュータ可読ストレージ媒体とを備えるデータ処理システムであって、プロセッサ実行可能命令が、少なくとも1つのコンピュータハードウェアプロセッサによって実行されると、連合構造化照会言語(SQL)クエリーを取得することと、連合SQLクエリーに対するクエリープランを生成することであって、クエリープランが、データ処理システムによって行われる複数のデータ処理動作を含み、複数のデータ処理動作が、第1のデータ処理動作及び第2のデータ処理動作を少なくとも含む、生成することと、複数のGUI要素を含むグラフィカルユーザインタフェース(GUI)を表示することであって、複数のGUI要素が、第1のデータ処理動作を表す第1のGUI要素及び第2のデータ処理動作を表す第2のGUI要素を含む、表示することと、連合SQLクエリーの実行の間、連合SQLクエリーに対する追跡情報を集約することであって、第1のデータ処理動作に対する第1の追跡情報及び第2のデータ処理動作に対する第2の追跡情報を集約することを含む、集約することと、第1のGUI要素と関連付けられた第1の追跡情報の少なくとも幾つか及び第2のGUI要素と関連付けられた第2の追跡情報の少なくとも幾つかをGUIに表示することとを少なくとも1つのコンピュータハードウェアプロセッサに行わせる、データ処理システムに向けられる。
幾つかの実施形態は、プロセッサ実行可能命令を保存する少なくとも1つの非一時的コンピュータ可読ストレージ媒体であって、プロセッサ実行可能命令が、少なくとも1つのコンピュータハードウェアプロセッサによって実行されると、連合構造化照会言語(SQL)クエリーを取得することと、連合SQLクエリーに対するクエリープランを生成することであって、クエリープランが、データ処理システムによって行われる複数のデータ処理動作を含み、複数のデータ処理動作が、第1のデータ処理動作及び第2のデータ処理動作を少なくとも含む、生成することと、複数のGUI要素を含むグラフィカルユーザインタフェース(GUI)を表示することであって、複数のGUI要素が、第1のデータ処理動作を表す第1のGUI要素及び第2のデータ処理動作を表す第2のGUI要素を含む、表示することと、連合SQLクエリーの実行の間、連合SQLクエリーに対する追跡情報を集約することであって、第1のデータ処理動作に対する第1の追跡情報及び第2のデータ処理動作に対する第2の追跡情報を集約することを含む、集約することと、第1のGUI要素と関連付けられた第1の追跡情報の少なくとも幾つか及び第2のGUI要素と関連付けられた第2の追跡情報の少なくとも幾つかをGUIに表示することとを少なくとも1つのコンピュータハードウェアプロセッサに行わせる、非一時的コンピュータ可読ストレージ媒体に向けられる。
幾つかの実施形態は、少なくとも1つのコンピュータハードウェアプロセッサによって行われる方法であって、連合構造化照会言語(SQL)クエリーを取得することと、連合SQLクエリーに対するクエリープランを生成することであって、クエリープランが、データ処理システムによって行われる複数の処理動作を含み、複数の処理動作が、第1のデータ処理動作及び第2のデータ処理動作を少なくとも含む、生成することと、複数のGUI要素を含むグラフィカルユーザインタフェース(GUI)を表示することであって、複数のGUI要素が、第1のデータ処理動作を表す第1のGUI要素及び第2のデータ処理動作を表す第2のGUI要素を含む、表示することと、連合SQLクエリーの実行の間、連合SQLクエリーに対する追跡情報を集約することであって、第1のデータ処理動作に対する第1の追跡情報及び第2のデータ処理動作に対する第2の追跡情報を集約することを含む、集約することと、第1のGUI要素と関連付けられた第1の追跡情報の少なくとも幾つか及び第2のGUI要素と関連付けられた第2の追跡情報の少なくとも幾つかをGUIに表示することとを含む、方法に向けられる。
幾つかの実施形態は、プロセッサ実行可能命令を保存する少なくとも1つの非一時的コンピュータ可読ストレージ媒体であって、プロセッサ実行可能命令が、連合構造化照会言語(SQL)クエリーを取得するための手段と、連合SQLクエリーに対するクエリープランを生成するための手段であって、クエリープランが、データ処理システムによって行われる複数のデータ処理動作を含み、複数のデータ処理動作が、第1のデータ処理動作及び第2のデータ処理動作を少なくとも含む、手段と、複数のGUI要素を含むグラフィカルユーザインタフェース(GUI)を表示するための手段であって、複数のGUI要素が、第1のデータ処理動作を表す第1のGUI要素及び第2のデータ処理動作を表す第2のGUI要素を含む、手段と、連合SQLクエリーの実行の間、連合SQLクエリーに対する追跡情報を集約するための手段であって、第1のデータ処理動作に対する第1の追跡情報及び第2のデータ処理動作に対する第2の追跡情報を集約することを含む、手段と、第1のGUI要素と関連付けられた第1の追跡情報の少なくとも幾つか及び第2のGUI要素と関連付けられた第2の追跡情報の少なくとも幾つかをGUIに表示するための手段とを備える、非一時的コンピュータ可読ストレージ媒体に向けられる。
本発明のいかなる実施形態にも一般的に適用可能であるように、ユーザに表示される追跡情報は、SQLクエリーの実行と同時に表示することができ、すなわち、ユーザに表示される情報は、システムによってSQLクエリーが実行されている間に表示される。
本発明のいかなる実施形態にも一般的に適用可能であるように、SQLクエリーのデータ処理動作についての追跡情報は、そのデータ処理動作の一部として処理されたデータレコードの所定のセットに対する特定のデータ処理動作の実行の進捗状況及び/又は特定のデータ処理動作を取り扱うために利用可能な計算資源を示す情報であり得る。
幾つかの実施形態(先行する実施形態の何れも含む)では、連合SQLクエリーを実行することは、第1のタイプの第1のデータソースからデータレコードを読み取ること及び/又は第1のタイプの第1のデータソースにデータレコードを書き込むことと、第1のタイプとは異なる第2のタイプの第2のデータソースからデータレコードを読み取ること及び/又は第1のタイプとは異なる第2のタイプの第2のデータソースにデータレコードを書き込むこととを含む。
幾つかの実施形態(先行する実施形態の何れも含む)では、複数の動作は、第1のタイプの第1のデータソース内のデータレコードにアクセスするための少なくとも1つのデータ処理動作と、第1のタイプとは異なる第2のタイプの第2のデータソース内のデータレコードにアクセスするための少なくとも別のデータ処理動作とを含む。
幾つかの実施形態(先行する実施形態の何れも含む)では、第1のタイプの第1のデータソースは、フラットファイルデータソース、マルチファイルデータソース、Hadoopデータソース、Oracleデータソース、Teradataデータソース、DB2データソース、SQL Serverデータソース、Informixデータソース、MongoDBデータソース、SAPデータソース、SASデータソース又はメタデータデータソースである。
幾つかの実施形態(先行する実施形態の何れも含む)では、グラフィカルユーザインタフェースが非表形式である、先行する節の何れかに記載のデータ処理システム。
幾つかの実施形態(先行する実施形態の何れも含む)では、GUIを表示することが、第1のデータ処理動作と関連付けられたグラフの第1のノードを表すために第1のGUI要素を生成することと、第2のデータ処理動作と関連付けられたグラフの第2のノードを表すために第2のGUI要素を生成することとによって少なくとも部分的に、グラフのグラフィカル表現を生成することを含む、先行する節の何れかに記載のデータ処理システム。
幾つかの実施形態(先行する実施形態の何れも含む)では、グラフのグラフィカル表現を生成することは、SQLクエリーを実行するためのデータフローグラフであるデータフローグラフのグラフィカル表現を生成することを含む。
幾つかの実施形態(先行する実施形態の何れも含む)では、データフローグラフのグラフィカル表現を生成することは、データフローグラフの第1のノードとデータフローグラフの第2のノードとの間のエッジを表す第3のGUI要素を生成することをさらに含む。
幾つかの実施形態(先行する実施形態の何れも含む)では、プロセッサ実行可能命令は、クエリープランに基づいて、データフローグラフを表す少なくとも1つのデータ構造を生成することであって、データフローグラフが、第1のノード及び第2のノードを含む複数のノードと、複数のノードを接続する複数のエッジとを含み、複数のノードの各々が、複数のデータ処理動作のそれぞれのデータ処理動作に相当し、複数のエッジが、複数のノードのノード間のデータのフローを表す、生成することを少なくとも1つのコンピュータハードウェアプロセッサにさらに行わせる。
幾つかの実施形態(先行する実施形態の何れも含む)では、第1の動作に対する第1の追跡情報を集約することは、第1のデータ処理動作を介して処理されたデータレコードの数を追跡することを含み、GUIを介して、第1の追跡情報の少なくとも幾つかを表示することは、第1のGUI要素と関連付けて、第1のデータ処理動作を介して処理されたデータレコードの数を表示することを含む。
幾つかの実施形態(先行する実施形態の何れも含む)では、第1のGUI要素と関連付けて、第1のデータ処理動作を介して処理されたデータレコードの数を表示することは、第1のノードの出力端部側に、第1のデータ処理動作を介して処理されたデータレコードの数を表示することを含む。
幾つかの実施形態(先行する実施形態の何れも含む)では、第2のデータ処理動作に対する第2の追跡情報を集約することは、第2のデータ処理動作を介して処理されたデータレコードの数を追跡することを含み、GUIを介して、第2の追跡情報の少なくとも幾つかを表示することは、第2のGUI要素と関連付けて、第2のデータ処理動作を介して処理されたデータレコードの数を表示することを含む。
幾つかの実施形態(先行する実施形態の何れも含む)では、第1の動作に対する第1の追跡情報を集約することは、第1のデータ処理動作を介して処理されたデータレコードの数、第1のデータ処理動作を行うために用いられた並列性の度合い、第1のデータ処理動作を行うために使用された1つ又は複数のコンピューティングデバイスを識別する情報、第1のデータ処理動作を行うために使用された処理資源の量、第1のデータ処理動作を行うために使用されたメモリの量、第1のデータ処理動作を行うために要した時間の総量、第1のデータ処理動作を行うコンピューティングデバイス上の処理負荷間のスキューの尺度、第1のデータ処理動作のパラメータ、第1のデータ処理動作が完了したかどうかを示す情報からなる群から選択される追跡情報を集約することを含む。
幾つかの実施形態(先行する実施形態の何れも含む)では、第1のデータ処理動作に対する第1の追跡情報を集約することは、第1のデータ処理動作の1つ又は複数のパラメータを識別することを含み、追跡情報の少なくとも幾つかを表示することは、識別された1つ又は複数のパラメータのうちの少なくとも1つのパラメータの少なくとも1つの値を表示することを含む。
幾つかの実施形態(先行する実施形態の何れも含む)では、プロセッサ実行可能命令は、データ処理システムによって実行されている1つ又は複数のSQLクエリーのリストを表示する第2のGUIを表示することであって、1つ又は複数のSQLクエリーが、SQLクエリーを含む、表示することと、第2のGUIを介するSQLクエリーのユーザ選択に応答して、複数のGUI要素を含むGUIを生成することであって、複数のGUI要素が、第1のデータ処理動作を表す第1のGUI要素及び第2のデータ処理動作を表す第2のGUI要素を含む、生成することとを少なくとも1つのコンピュータハードウェアプロセッサにさらに行わせる。
幾つかの実施形態(先行する実施形態の何れも含む)では、プロセッサ実行可能命令は、データ処理システムによって実行されている1つ又は複数のSQLクエリーのリストを表示する第2のGUIを表示することであって、1つ又は複数のSQLクエリーが、SQLクエリーを含む、表示することと、第2のGUIを介するSQLクエリーのユーザ選択に応答して、SQLクエリーの実行を停止することとを少なくとも1つのコンピュータハードウェアプロセッサにさらに行わせる。
幾つかの実施形態(先行する実施形態の何れも含む)では、表示することは、表示された第1の追跡情報の少なくとも幾つかをリフレッシュすることをさらに含む。
上記は、添付の特許請求の範囲によって定義される本発明の非限定的概要である。
以下の図面を参照して、様々な態様及び実施形態を説明する。これらの図面は、必ずしも一定の縮尺で描かれていないことが理解されるものとする。複数の図面に現れるアイテムは、それらが現れる全ての図面において、同じ又は類似の参照番号で示される。
本明細書に記載する技術の幾つかの実施形態による、説明のためのデータ処理システムの図である。 本明細書に記載する技術の幾つかの実施形態による、データ処理システムにおける構造化照会言語(SQL)クエリーなどのアクティブクエリーについての情報を示す説明のためのグラフィカルユーザインタフェース(GUI)の図である。 本明細書に記載する技術の幾つかの実施形態による、入力SQLクエリーから生成されたデータフローグラフのノードによって表される複数のデータ処理動作に対する追跡情報を示す説明のためのGUIの図である。 本明細書に記載する技術の幾つかの実施形態による、データ処理システムにおけるアクティブクエリーについての情報を示す別の説明のためのGUIの図である。 本明細書に記載する技術の幾つかの実施形態による、入力SQLクエリーから生成されたデータフローグラフのノードによって表される複数のデータ処理動作に対する追跡情報を示すことによって、入力SQLクエリーに対する追跡情報を示す別の説明のためのGUIの図である。 本明細書に記載する技術の幾つかの実施形態による、入力SQLクエリーから自動生成された説明のためのデータフローグラフの図である。 本明細書に記載する技術の幾つかの実施形態による、図5Aのデータフローグラフのノードによって表される複数のデータ処理動作に対する追跡情報を示す説明のためのGUIの図である。 本明細書に記載する技術の幾つかの実施形態による、入力SQLクエリーから生成されたデータフローグラフのデータ処理動作に対する説明のための追跡情報の図である。 本明細書に記載する技術の幾つかの実施形態による、図5Cに示されるデータ処理動作と関連付けられたパラメータの図である。 本明細書に記載する技術の幾つかの実施形態による、SQLクエリーを追跡するための説明のためのプロセス600のフローチャートである。 本明細書に記載する技術の幾つかの実施形態の実施に使用することができる、説明のためのコンピューティングシステム環境のブロック図である。
本明細書に記載する技術の態様は、構造化照会言語(SQL)クエリーを実行するための従来の技術を改良することによって、データ処理システムの速度及びスループットを向上させることに関係する。
本発明者らは、従来のデータ処理システムがその上で実行されているSQLクエリーについての情報をほとんど提供しないことを理解した。例えば、幾つかの従来のデータ処理システムは、SQLクエリーが実行されているという表示しか提供せず、ユーザは、SQLクエリーが完了したかどうか及びいつ完了するのかについての確認を待たなければならない。ユーザは、SQLクエリーが完了するまでどれほど時間がかかるのか又は果たしてそもそもSQLクエリーが完了するのかを知るすべがないため、これは、ユーザにとって非常に苛立たしいことである。別の例として、幾つかの従来のデータ処理システムは、SQLクエリーの実行の間にデータベースのどの行にアクセスしたかをSQLクエリーの完了後にユーザが確かめられるようになっている。この手法は、SQLクエリーの実行の間に情報を提供することはない。SQLクエリーの完了後に提供される情報では、この情報はSQLクエリーの実行の間に利用可能ではなく、その結果、ユーザは、長時間を要し得るSQLクエリーの完了を待たずにSQLクエリーを停止すること及び/又は調整することができないため、その利用が限定される。別の例として、幾つかの従来のデータ処理システムは、実行されている各SQLクエリーによってどれほどの処理能力が消費されたかについての表示を提供する。しかし、そのようなシステムは、クエリーの完了に向けてどれほど進捗したかについての認識を与えない。例えば、SQLクエリーの実行を開始してから1時間経過したことが分かっていても、クエリーの実行の完了までにさらにどれほどの時間が必要かを示すことにはならない。
これらの従来のデータ処理システムの何れも、SQLクエリーの実行に長時間かかる理由についての診断情報をSQLクエリーの実行の間に提供することはない。本発明者らは、実行の間にそのような情報をユーザに提供することにより、従来のデータ処理システムの性能を改良できることを認識した。それに従って、幾つかの実施形態は、SQLクエリーを実行している間にデータ処理システムがSQLクエリーについての詳細な情報をユーザに提供できるようにする技術を提供する。例えば、SQLクエリーの実行の間、データ処理システムは、SQLクエリーに関する各データ処理動作によってどれほどの数のレコードが処理されたかについての表示をユーザに提供することができる。この方法では、ユーザは、入力表からどれほどの数の行が処理されたかのみならず、これらのレコードのうちの幾つが任意の所定の時間にSQLクエリーのクエリープランの各段階に進んだかも確かめることができる。
実行しているSQLクエリーについての詳細な追跡情報の提供の結果、ユーザは、クエリーに対して意図する時間よりはるかに長い時間をかけさせ得るようなSQLクエリーの問題(例えば、バグ)があるかどうかを確かめることができ、その上、SQLクエリーを実行している間にこの動作を行うことができる。同様に、ユーザは、SQLクエリーを最適化するために実行計画又は方法にボトルネックがあるかどうかを確かめることができる。それに加えて、ユーザは、クエリーの実行の間に起こる流出の量などの他の状態情報を確かめることができる。それに従って、ユーザは、バグ又は他の問題を有するSQLクエリーを停止すること、SQLクエリーを最適化すること、改良された方法でSQLクエリーを書き直すことができ、それらは全て、SQLクエリーを実行する従来のデータ処理システムの速度、資源利用(例えば、CPU、メモリ、ネットワーク資源)及びスループットを向上させる。
それに加えて、本明細書に記載する技術により、データ処理システムは、連合SQLクエリーに対する詳細な追跡情報を提供することができ、連合SQLクエリーは、異なるタイプのデータベースシステムからデータレコードを読み取る及び/又は異なるタイプのデータベースシステムにデータレコードを書き込むSQLクエリーである。従来のデータ処理システムは、連合SQLクエリーに対するいかなる追跡情報も提供しない。
本明細書に記載する技術の幾つかの実施形態は、SQLクエリーを実行するための従来のデータ処理システム及び技術の上述の欠点の幾つかに対処する。しかし、全ての実施形態が、これらの欠点の1つ1つに対処するわけではなく、幾つかの実施形態は、これらの何れにも対処しない場合がある。そのため、本明細書に記載する技術の態様は、SQLクエリーを実行するための従来のデータ処理システム及び技術の上述の欠点の全て又は何れかに対処することに限定されないことを理解されたい。
それに従って、幾つかの実施形態は、(1)構造化照会言語(SQL)クエリーを取得することと、(2)SQLクエリーに対するクエリープランを生成することであって、クエリープランが、データ処理システムによって行われる複数の動作を含み、複数の動作が、第1の動作及び第2の動作を少なくとも含む、生成することと、(3)複数のGUI要素を含むグラフィカルユーザインタフェース(GUI)を生成することであって、複数のGUI要素が、第1の動作を表す第1のGUI要素及び第2の動作を表す第2のGUI要素を含む、生成することと、(4)SQLクエリーの実行の間、SQLクエリーに対する追跡情報を集約することであって、第1の動作に対する第1の追跡情報及び第2の動作に対する第2の追跡情報を集約することを含む、集約することと、第1のGUI要素と関連付けられた第1の追跡情報の少なくとも幾つか及び第2のGUI要素と関連付けられた第2の追跡情報の少なくとも幾つかをGUIに表示することとを行うように構成されたデータ処理システムを提供する。
幾つかの実施形態では、生成されたGUIは、SQLクエリーを実行するためのデータフローグラフを含む。データフローグラフは、(1)第1のデータ処理動作を表すための第1のノード、(2)第2のデータ処理動作を表すための第2のノード、及び、(3)第1のノードから第2のノードへの有向リンク(データレコードが第2のデータ処理動作を使用して処理される前に第1のデータ処理動作を使用して処理されることを示す)を含むように、クエリープランから生成することができる。幾つかの実施形態では、GUIは、非表形式である(すなわち、表ではない)。
幾つかの実施形態では、データフローグラフを生成することは、クエリープランに基づいて、データフローグラフを表す少なくとも1つのデータ構造を生成することであって、データフローグラフが、第1のノード及び第2のノードを含む複数のノードと、複数のノードを接続する複数のエッジとを含み、複数のノードの各々が、複数の動作のそれぞれの動作に相当し、複数のエッジが、複数のノードのノード間のデータのフローを表す、生成することを含み得る。
幾つかの実施形態では、第1の動作に対する第1の追跡情報を集約することは、データフローグラフのノードによって表される1つ又は複数のデータ処理動作の各々を使用して処理されたデータレコードの数を追跡することを含む。各データ処理動作に対し、データ処理動作を介して処理された数値データレコードは、グラフィカルユーザインタフェースを介して表示することができる(例えば、データ処理動作を表すデータフローグラフのノードの最も近くに)。
データ処理動作に対する追跡情報の例は、限定されることはないが、第1の動作を介して処理されたデータレコードの数、第1の動作を行うために用いられた並列性の度合い、第1の動作を行うために使用された1つ又は複数のコンピューティングデバイスを識別する情報、第1の動作を行うために使用された処理資源の量、第1の動作を行うために使用されたメモリの量、第1の動作を行うために使用された時間量(例えば、第1のデータ処理動作を行うために要した時間の総量(好ましくは、クエリーを完了するために処理された全てのレコードに対するもの))、第1の動作を行うコンピューティングデバイス上の処理負荷間のスキューの尺度、第1の動作のパラメータ、第1の動作が完了したかどうかを示す情報を含む。
幾つかの実施形態では、クエリープランの複数の動作は、第1のタイプの第1のデータソース内のデータレコードにアクセスするための少なくとも1つの動作と、第1のタイプとは異なる第2のタイプの第2のデータソース内のデータレコードにアクセスするための少なくとも別の動作とを含む。第1のタイプの第1のデータソースは、フラットファイルデータソース、マルチファイルデータソース、Hadoopデータソース、Oracleデータソース、Teradataデータソース、DB2データソース、SQL Serverデータソース、Informixデータソース、MongoDBデータソース、SAPデータソース又はメタデータデータソースであり得る。幾つかの実施形態では、データソースは、データベース表とは異なるものであり得る。
上記で紹介される及び以下でより詳細に述べる技術は、特定の実施様式に限定されないため、それらの技術は、多数のやり方の何れで実施されてもよいことを理解されたい。実施の詳細の例は、本明細書では、単なる説明目的で提供する。その上、本明細書に記載する技術の態様は、特定の技術又は技術の組み合わせの使用に限定されないため、本明細書で開示される技術は、個々に又は任意の適宜の組み合わせで使用されてもよい。
図1は、本明細書に記載する技術の幾つかの実施形態による、説明のためのデータ処理システム100の図である。図1に示されるように、データ処理システム100は、クエリー入力モジュール104、クエリープランジェネレータ106、データフローグラフジェネレータ108、クエリー追跡モジュール110及びグラフ実行エンジン115を含む。
データ処理システム100は、データ記憶装置102−1、102−2、...、102−nにアクセスする(例えば、データ記憶装置102−1、102−2、...、102−nからデータを読み取る及び/又はデータ記憶装置102−1、102−2、...、102−nにデータを書き込む)ように構成される。データ記憶装置102−1、102−2、...、102−nの各々は、1つ又は複数のデータセットを保存することができる。データ記憶装置は、任意の適宜のやり方で任意の適宜のタイプのデータを保存することができる。データ記憶装置は、データベースシステム(例えば、リレーショナルデータベースシステム)を使用して又は他の任意の適宜のやり方で、フラットテキストファイルとして、スプレッドシートとして、データを保存することができる。幾つかの例では、データ記憶装置は、トランザクションデータを保存することができる。例えば、データ記憶装置は、クレジットカード決済、通話記録データ又は銀行取引データを保存することができる。本明細書に記載する技術の態様はこの点において限定されないため、データ処理システム100は、任意の適宜のタイプの任意の適宜の数のデータ記憶装置にアクセスするように構成できることを理解されたい。データ処理システム100がデータを読み取るように構成することができるデータ記憶装置は、データソースと呼ぶことができる。データ処理システム100がデータを書き込むように構成することができるデータ記憶装置は、データシンクと呼ぶことができる。
幾つかの実施形態では、データ記憶装置102−1、102−2、...、102−nは、同じタイプのもの(例えば、全てがリレーショナルデータベースであり得る)でも、異なるタイプのもの(例えば、あるものはリレーショナルデータベースであり得、あるものはファイルにデータを保存するデータ記憶装置であり得る)でもよい。本明細書に記載する技術の態様はこの点において限定されないため、データ記憶装置は、SQL Serverデータ記憶装置、ORACLEデータ記憶装置、TERADATAデータ記憶装置、フラットファイルデータ記憶装置、マルチファイルデータ記憶装置、HADOOPデータ記憶装置、DB2データ記憶装置、Microsoft SQL SERVERデータ記憶装置、INFORMIXデータ記憶装置、SAPデータ記憶装置、MongoDBデータ記憶装置、メタデータデータ記憶装置及び/又は他の任意の適宜のタイプのデータ記憶装置であり得る。
幾つかの実施形態では、クエリー入力モジュール104は、入力SQLクエリーを受信するように構成することができる。幾つかの実施形態では、クエリー入力モジュール104は、ユーザから入力SQLクエリーを受信するように構成することができる。例えば、クエリー入力モジュール104は、ユーザがSQLクエリーを入力できるようにするためのグラフィカルユーザインタフェースを生成するように構成することができる。別の例として、クエリー入力モジュール104は、グラフィカルユーザインタフェース(必ずしもクエリー入力モジュール104自体によって生成されたとは限らないもの)を通じて、ユーザによって提供された情報を受信するように構成することができる。幾つかの実施形態では、クエリー入力モジュール104は、別のコンピュータプログラムから入力SQLクエリーを受信するように構成することができる。例えば、クエリー入力モジュール104は、入力SQLクエリーを提供できるようにするためのアプリケーションプログラミングインタフェース(API)を露出することも、SQLクエリーにアクセスするという通知に応答してSQLクエリーにアクセスすることも、他の任意の適宜のやり方で他のコンピュータプログラムから入力SQLクエリーを受信することもできる。
クエリー入力モジュール104によって受信されるSQLクエリーは、単一のデータ記憶装置からデータを読み取ること及び/又は単一のデータ記憶装置にデータを書き込むことを伴い得る。或いは、クエリー入力モジュール104によって受信されるSQLクエリーは、複数のデータ記憶装置からデータを読み取ること及び/又は複数のデータ記憶装置にデータを書き込むことを伴い得る。データ記憶装置が異なるタイプのものである場合は、SQLクエリーは、連合SQLクエリーと呼ぶことができる。
幾つかの実施形態では、クエリープランジェネレータ106は、クエリー入力モジュール104によって受信されたSQLクエリーからクエリープランを生成するように構成される。生成されたクエリープランは、SQLクエリーが実行された場合、行われる予定の1つ又は複数のデータ処理動作を識別することができる。生成されたクエリープランは、識別されたデータ処理動作が実行される順番をさらに指定することができる。従って、生成されたクエリープランは、クエリー入力モジュール104によって受信されたSQLクエリーを実行するために行われる予定のデータ処理動作のシーケンスを表し得る。クエリープランジェネレータ106は、任意の適宜のやり方でクエリープランを生成するように構成することができる。例えば、幾つかの実施形態では、クエリープランジェネレータ106は、本明細書に全体として参照により援用される、「データクエリー管理(Managing Data Queries)」というタイトルの米国特許第9,116,955号明細書に記載のクエリープランを生成するための技術の何れも実施することができる。
幾つかの実施形態では、データフローグラフジェネレータ108は、クエリープランジェネレータ106によって生成されたクエリープランからデータフローグラフを生成するように構成される。データフローグラフジェネレータ108は、任意の適宜のやり方で、クエリープランからデータフローグラフを生成するように構成することができる。例えば、幾つかの実施形態では、データフローグラフジェネレータ108は、本明細書に全体として参照により援用される、「データクエリー管理(Managing Data Queries)」というタイトルの米国特許第9,116,955号明細書に記載のデータフローグラフを生成するための技術の何れも実施することができる。
幾つかの実施形態では、データフローグラフは、クエリープランにおいて識別されたデータ処理動作の少なくともサブセット(例えば、幾つか又は全て)の各々に対するノードを含むようにデータフローグラフを生成することによって少なくとも部分的に、クエリープランから生成することができる。その後、クエリープランにおいて指定されたデータ処理動作の順番を使用して、データフローグラフのノードを接続するリンクを生成することができる。例えば、第2のデータ処理動作の前に第1のデータ処理動作が行われることを生成されたクエリープランが示す際は、生成されたデータフローグラフは、第1のノード(第1のデータ処理動作を表す)と、第2のノード(第2のデータ処理動作を表す)と、第1のノードから第2のノードへのパスを指定する1つ又は複数のリンクとを有し得る。
幾つかの実施形態では、クエリープランからデータフローグラフを生成することは、入力及び/又は出力データソースを表すグラフに1つ又は複数のノードを追加することを含む。例えば、データフローグラフを生成することは、SQLクエリーの実行の間にデータレコードを読み取る予定のデータソースの各々に対する入力ノードを追加することを含み得る。入力ノードの各々は、それぞれのデータソースと関連付けられたパラメータ値と共に構成することができる。これらの値は、データソース内のデータレコードにどのようにアクセスするかを示すことができる。別の例として、データフローグラフを生成することは、SQLクエリーの実行の間にデータレコードを書き込む予定のデータシンクの各々に対する出力ノードを追加することを含み得る。出力ノードの各々は、それぞれのデータシンクと関連付けられたパラメータ値と共に構成することができる。これらの値は、データソースにどのようにデータレコードを書き込むかを示すことができる。
幾つかの実施形態では、データフローグラフを生成することは、データフローグラフのデータ処理動作を行うための処理レイアウトを決定することを含み得る。データ処理動作の処理レイアウトは、データ処理動作を行うためにどれほどの数のコンピューティングデバイスを使用するかを指定することや、データ処理動作を行うために使用する特定のコンピューティングデバイスを識別することができる。例えば、データフローグラフを生成することは、1つ又は複数のノードの各々に対し、単一のデバイス(例えば、単一のプロセッサ、単一の仮想マシンなど)を使用してデータ処理動作を行うか又は複数のデバイス(例えば、複数のプロセッサ、複数の仮想マシンなど)を使用してデータ処理動作を行うか、及び、どのデバイスを使用すべきかを決定することを含み得る。幾つかの実施形態では、異なる度合いの並列性は、異なるノードに割り当てることができる。従って、異なる処理レイアウトは、クエリー入力モジュール104によって取得されたSQLクエリーから生成されたデータフローグラフの実行の間に行われる予定の異なるデータ処理動作に割り当てることができることを理解されたい。
幾つかの実施形態では、グラフ実行エンジン115は、例えば、データフローグラフジェネレータ108によるデータフローグラフの何れも含む、1つ又は複数のデータフローグラフを実行するように構成される。グラフ実行エンジンは、共働システム又はデータフローグラフを実行するための他の任意の適宜の実行環境を含み得る。データフローグラフを開発して実行するための環境の態様は、各々が本明細書に全体として参照により援用される、「グラフとして表現される計算の実行(Executing Computations Expressed as Graphs)」というタイトルの米国特許第5,966,072号明細書及び「グラフベース計算のパラメータ管理(Managing Parameters for Graph−Based Computations)」というタイトルの米国特許第7,716,630号明細書に記載されている。
クエリー追跡モジュール110は、その実行の間にSQLクエリーについての追跡情報を集約するように構成される。追跡情報の例を本明細書で提供する。例えば、幾つかの実施形態では、クエリー追跡モジュール110は、受信されたSQLクエリーから生成された(例えば、クエリープランナ106及びデータフローグラフジェネレータ108を使用して)データフローグラフの実行の間に追跡情報を集約するように構成することができる。幾つかの実施形態では、グラフ実行エンジン115は、データフローグラフの1つ又は複数のデータ処理動作の各々の実行をモニタするように構成することができ、実行の間に情報を収集し、その情報から追跡データを取得することができる。収集された情報が追跡データの少なくとも幾つかを直接含むこと及び/又は収集された情報から追跡データの少なくとも幾つかを導出することができる。制限ではなく例として、グラフ実行エンジンは、特定のデータ処理動作によって処理されたデータレコードの数、データ処理動作によって利用された処理能力及び/若しくはメモリの量、並びに/又は他の任意の適宜の追跡情報を記録することができ、それらの例を本明細書で提供する。これを受けて、この収集された情報が集約された追跡情報の少なくとも幾つかを含むこと及び/又はこの収集された情報から追跡情報の少なくとも幾つかを導出することができる。
図2は、データ処理システムのアクティブクエリーについての情報を示す説明のためのグラフィカルユーザインタフェース(GUI)200の図である。GUI 200は、データ処理システムの1つ又は複数の(例えば、全ての)アクティブクエリーの各々の実行についての要約情報を提供することができる。図2に示されるように、GUI 200は、データ処理システムにおいてアクティブな各クエリーに対する行を有する表201を含む。アクティブクエリーは、その実行が始まった(但し、未だ完了していない)クエリーであり得る。
図2に示されるように、例えば、表201は、行202、204、206を含み、各行は、それぞれのアクティブクエリーに対する情報を含む。各アクティブクエリーに対し、対応する行の情報は、クエリー識別子(例えば、行202の「QID 1」)、ユーザ識別子(例えば、行202の「UID 1」)、アクティブクエリーの実行が始まった時刻を示す情報(例えば、行202の「11:00:03」)、アクティブクエリーの実行が始まってから経過した時間を示す情報(例えば、行202の「0:59:57」)、アクティブクエリーの実行の間にこれまで処理されたレコード(例えば、表の行)の数を示す情報(例えば、行202の「506,239」)及びアクティブクエリーの状態を示す情報(例えば、行202の「実行中」及び行204の「休止」)を含む。しかし、本明細書に記載する技術の態様はこの点において限定されないため、表201は、表201に示される情報に加えて又はその代わりに、各アクティブクエリーについての他の任意の適宜の情報を含み得ることを理解されたい。また、図2の説明のための実施形態では、アクティブクエリーについての情報は表の一部として示されているが、他の実施形態では、この情報の少なくとも幾つかを非表形式で(例えば、グラフ、チャート、視覚化、リストなどを使用して)表示できることも理解されたい。
図2に示されるように、GUI 200は、GUI 200のユーザがデータ処理システムにおいてアクティブな1つ又は複数のクエリーに対する1つ又は複数の行為を行えるようにする制御要素をさらに提供する。例えば、GUI 200は、ユーザがアクティブクエリーの実行を停止できるようにするため(例えば、予想より長くクエリーが実行されている場合、クエリーによって処理されたレコードの数が予想数より大きい場合など)のGUI制御要素208を提供する。例えば、ユーザは、アクティブクエリーを選択し(例えば、表201の行を選択することによって)、選択したアクティブクエリーの実行を停止するためにGUI制御要素208(この説明のための例では、「クエリー停止」とラベル付けされたボタンであるが、他の任意の適宜のタイプのGUI要素でもよい)を選択することができる。幾つかの実施形態では、選択したアクティブクエリーの実行を停止することにより、その実行を後に再開できるようにアクティブクエリーの実行を休止させることができる。他の実施形態では、選択したアクティブクエリーの実行を停止することにより、クエリーを再開できないようにそのアクティブクエリーの実行を終了させることができる。
別の例として、GUI 200は、アクティブクエリーについての情報をリフレッシュすることをユーザが要求できるようにするためのGUI制御要素210を提供する。例えば、GUI制御要素210のユーザ選択に応答して、表201において、どれほどの時間アクティブクエリーを実行しているのか及びどれほどの数のレコードが処理されたかを示す情報を更新することができる。
別の例として、GUI 200は、特定のアクティブクエリーについてのさらなる情報を提供することをユーザが要求できるようにするためのGUI制御要素212を提供する。例えば、幾つかの実施形態では、ユーザは、アクティブクエリーを選択し(例えば、表201の行を選択することによって又は他の任意の適宜のやり方で)、GUI制御要素212(この説明のための例では、「追跡」とラベル付けされたボタンであるが、ボタン以外の任意の適宜のタイプのGUI要素でもよい)を選択することができ、それに応答して、選択したアクティブクエリーに対するより詳細な追跡情報を示す別のGUIを生成し、ユーザに提示することができる。幾つかの実施形態では、より詳細な情報は、非表形式グラフィカルユーザインタフェースで提供することができ、その説明のための例を図3に示し、以下で述べる。
本明細書に記載する技術の態様はこの点において限定されないため、GUI 200は、制御要素208、210、212に加えて又はその代わりに、1つ又は複数の他の制御要素を有し得ることを理解されたい。
図3は、入力SQLクエリーから生成されたデータフローグラフのノードによって表される複数のデータ処理動作に対する追跡情報を示す説明のためのGUI 300の図である。データフローグラフは、図1を参照して記載するように、データ処理システム100によって入力SQLクエリーから生成することができる。
本明細書に記載するように、データフローグラフは、複数のノードを含み得、複数のノードは、(a)1つ又は複数のそれぞれのデータソースを表す1つ又は複数の入力ノード(例えば、1つ又は複数の入力データセット)、(b)1つ又は複数のそれぞれのデータシンクを表す1つ又は複数の出力ノード(例えば、1つ又は複数の出力データセット)、及び/又は(c)データに対して行うことができるデータ処理動作を表す1つ又は複数のノードを含む。データフローグラフのノード間の有向リンク又はエッジは、ノード間のデータのフローを表す。
図3に示されるように、データフローグラフは、それぞれのデータソースを表す入力ノード302、304と、データシンクを表す出力ノード314と、フィルタリング動作を表すノード306、308と、ソート動作を表すノード310と、結合動作を表すノード312とを含む。それに従って、幾つかの実施形態では、ノード302によって表されるデータソースから取得されたレコードは、フィルタリングされ、ソートされ、ノード304によって表されるデータソースから取得されたフィルタリング済みのレコードと結合される。結合動作の結果として生成されたレコードは、出力ノード314によって表されるデータシンクに出力することができる。
入力ノード302、304によって表されるデータソースは、任意の適宜のタイプのものでよい。幾つかの実施形態では、入力ノード302、304によって表されるデータソースは、同じタイプのデータソースであり得る(例えば、両方ともSQL Serverデータソースであり得る)。他の実施形態では、入力SQLクエリーが連合クエリーである際は、入力ノード302、304によって表されるデータソースは、異なるタイプのものであり得る(例えば、あるデータソースはORACLEデータソースであり得、他のデータソースはTERADATAデータソースであり得る)。幾つかの実施形態では、出力ノード314は、入力ノード302、304によって表されるデータソースの一方又は両方と同じタイプのデータシンクを表し得る。他の実施形態では、出力ノード314によって表されるデータシンクは、全く異なるタイプのものであり得る(例えば、データソースはDB2データソースであり得、データシンクはMongoDBデータシンクであり得る)。
幾つかの実施形態では、本明細書に記載する技術の態様はこの点において限定されないため、データソース/シンクは、フラットファイルデータソース/シンク、マルチファイルデータソース/シンク、HADOOPデータソース/シンク、ORACLEデータソース/シンク、TERADATAデータソース/シンク、DB2データソース/シンク、Microsoft SQL SERVERデータソース/シンク、INFORMIXデータソース/シンク、MongoDBデータソース/シンク、SAPデータソース/シンク、メタデータデータソース/シンク及び/又は他の任意の適宜のタイプのデータソース若しくはデータシンクであり得る。
図3に示されるように、GUI 300は、データフローグラフの生成元であるSQLクエリーに対する様々なタイプの追跡情報を示す。例えば、SQLクエリーから生成されたデータフローグラフの実行の間、GUI 300は、グラフのノードによって表される各データ処理動作によって処理されたデータレコードの数を示す。一例として、GUI 300に示される追跡情報は、(1)入力ノード302によって表されるデータソースから35,000個のレコードが読み取られたことを示す情報316、(2)これらの35,000個のレコードのうち10,000個がフィルタリングされたことを示す情報318、(3)入力ノード304によって表されるデータソースから5,000個のレコードが読み取られたことを示す情報320、(4)これらの5,000個のレコードのうち250個がフィルタリングされたことを示す情報322、及び、(5)結合動作の結果、これまでに75,323個のレコードが生成されたことを示す情報324を含む。
幾つかの実施形態では、データ処理動作によって処理されたレコードの数を示す追跡情報は、データ処理動作の完了にどれほど近いかに関する表示を提供することができる。例えば、情報320、322は、これまでに、ノード308によって表されるフィルタリング動作によって、5,000個のデータレコードのうち250個しか処理されていないことを示す。
幾つかの実施形態では、データ処理動作によって処理されたレコードの数を示す追跡情報は、実行されているクエリーに問題(例えば、ボトルネック又は他の非効率性)があるという表示を提供することができる。追跡情報は、そのような問題の存在を特定することを助けるのみならず、問題の対処法を示唆することもできる。例えば、図3に示されるように、情報324は、75,323個のレコードが結合動作から出力されていることを示す(結合動作では、一方の入力からは10,000個のレコードしか受信しておらず、そして他方の入力からは250個のレコードしか受信していない)。この情報は、結合動作がボトルネックを提示していることのみならず、問題の解決法も示唆している(例えば、多数の出力レコードは、恐らくは、意図されていた内部結合というよりむしろ、外部結合が行われていることを示唆するため)。
幾つかの実施形態では、特定のデータ処理動作によって処理されたレコードの数を示す情報(例えば、情報324)は、データ処理動作を表すデータフローグラフノード(例えば、ノード312)と関連付けて示すことができる。例えば、処理されたレコードの数は、ノードの出力端部側(例えば、ノードを出たエッジの近く、上方、下方)に示すことができる。別の例として、本明細書に記載する技術の態様はこの点において限定されないため、処理されたレコードの数は、ノードの入力端部側、ノード内、ノードの上方又はノードの下方に示すことができる。
GUI 300に示すことができるSQLクエリーに対する追跡情報の別の例は、1つ又は複数のデータ処理動作の各々が完了したか否かを示す情報である。例えば、図3に示されるように、チェックマーク325、327は、ノード306、308によって表されるフィルタリング動作が完了したことを示す。これに対して、シンボル326、328は、ソート及び結合動作が未だ完了していないというそれぞれの表示を提供する。
GUI 300に示すことができるSQLクエリーに対する追跡情報の別の例は、データフローグラフのノードによって表される1つ又は複数のデータ処理動作の各々についての情報である。幾つかの実施形態では、そのような情報は、ユーザが特定のデータ処理動作についてのさらなる追跡情報の閲覧を希望することを示す入力をユーザが提供すること(例えば、データ処理動作を表すノードをクリックすることによって、データ処理動作を表すノード上にカーソルを置くことによって又は他の任意の適宜のやり方で)に応答して明示することができる。
データ処理動作についての情報の例は、限定されることはないが、データ処理動作を介して既に処理されたデータレコードの数、データ処理動作を行うために用いられた並列性の度合い(例えば、データ処理動作を行うために使用された物理的及び/又は仮想デバイスの数)、データ処理動作を行うために使用された1つ又は複数の物理的及び/又は仮想デバイスを識別する情報、データ処理動作を行うために使用された処理資源の量(例えば、CPU使用量)、データ処理動作を行うために使用されたメモリ(揮発性及び/又は不揮発性メモリ)の量、データ処理動作を行うために使用された時間量(例えば、第1のデータ処理動作を行うために要した時間の総量(好ましくは、クエリーを完了するために処理された全てのレコードに対するもの))、データ処理動作を行う物理的及び/又は仮想コンピューティングデバイス上の処理負荷間のスキューの尺度、データ処理動作のパラメータ(例えば、結合動作が行われているキー、ソート動作が行われているキーなど)、データ処理動作が完了するまでの残り時間の目安を示す情報、並びに、データ処理動作が完了したかどうかを示す情報を含む。
図4Aは、本明細書に記載する技術の幾つかの実施形態による、データ処理システムにおけるアクティブクエリーについての情報を示す別の説明のためのGUI 400の図である。GUI 400は、1つ又は複数のSQLクエリーを入力すること、入力SQLクエリーに基づいて生成されたデータフローグラフを閲覧すること、データ処理システムによって実行されているアクティブクエリーについての要約情報を閲覧すること、及び、その実行の間に入力SQLクエリーに対する追跡情報にアクセスすることをユーザが行えるようにする。
図4Aに示されるように、GUI 400は、入力部分402を含み、ユーザは、入力部分402を使用して、SQLクエリーをデータ処理システムに入力することができる。本明細書に記載する技術の態様はこの点において限定されないため、ユーザは、タイプすることによって、カットアンドペーストすることによって、口述することによって及び/又は他の任意の適宜のやり方で、SQLクエリーを入力部分402に提供することができる。図4Aでは、説明のためのSQLクエリー404は、入力部分402に入力されているものとして示されている。ユーザは、GUI制御要素406を選択して、入力したSQLクエリー404の実行を開始することができる。ユーザは、GUI制御要素408を選択して、入力したSQLクエリー404から生成された(例えば、図1を参照して記載するように、クエリープランジェネレータ106及びデータフローグラフジェネレータ108を使用して生成された)データフローグラフを閲覧することができる。ユーザは、GUI制御要素410を選択して、入力したSQLクエリー404から生成されたグラフを保存することができる。ユーザは、GUI制御要素412を選択して、入力したSQLクエリー404をクリアすることができる。
また、GUI 400は、データ処理システムのアクティブクエリーについての情報を示す部分も含む。例えば、図4Aに示されるように、アクティブクエリータブ415は、データ処理システムにおいてアクティブな各クエリーに対する情報を示す行を有する表417を含む。例えば、表417は、それぞれのアクティブクエリーに対する情報を含む行414を含み、その情報は、クエリー識別子(行414の第1列)、ユーザ識別子(行414の第2列)、アクティブクエリーの実行が始まった時刻を示す情報(行414の第3列)、アクティブクエリーの実行の間にこれまで処理されたレコードの数を示す情報(行414の第4列)及びアクティブクエリーの状態を示す情報(行414の第5列)を含む。本明細書に記載する技術の態様はこの点において限定されないため、表417は、表417に示される情報に加えて又はその代わりに、各アクティブクエリーについての他の任意の適宜の情報を含み得る。図4Aの説明のための実施形態では、アクティブクエリーについての情報は表の一部として示されているが、他の実施形態では、この情報の少なくとも幾つかを非表形式で(例えば、グラフ、チャート、視覚化、リストなどを使用して)表示することができる。図4Aには単一の行しか示されていないが、本明細書に記載する技術の態様はこの点において限定されないため、表417は、任意の適宜の数の行を含み得る。
図4Aに示されるように、GUI 400は、GUI 400のユーザがデータ処理システムにおいてアクティブな1つ又は複数のクエリーに対する1つ又は複数の行為を行えるようにする制御要素をさらに提供する。例えば、GUI 400は、ユーザがアクティブクエリーの実行を停止できるようにするため(例えば、予想より長くクエリーが実行されている場合、クエリーによって処理されたレコードの数が予想数より大きい場合など)のGUI制御要素418を提供する。別の例として、GUI 400は、アクティブクエリーについての情報をリフレッシュすることをユーザが要求できるようにするためのGUI制御要素420を提供する。例えば、GUI制御要素420のユーザ選択に応答して、表417において、どれほどの時間アクティブクエリーを実行しているのか及びどれほどの数のレコードが処理されたかを示す情報を更新することができる。さらなる別の例として、GUI 400は、特定のアクティブクエリーについてのさらなる情報を提供することをユーザが要求できるようにするためのGUI制御要素416を提供する。例えば、幾つかの実施形態では、ユーザは、アクティブクエリーを選択し(例えば、表417の行を選択することによって又は他の任意の適宜のやり方で)、GUI制御要素416(この説明のための例では、「追跡」とラベル付けされたボタンであるが、ボタン以外の任意の適宜のタイプのGUI要素でもよい)を選択することができ、それに応答して、選択したアクティブクエリーに対するより詳細な追跡情報を示す別のGUIを生成し、ユーザに提示することができる。幾つかの実施形態では、より詳細な情報は、非表形式グラフィカルユーザインタフェースで提供することができ、その説明のための例を図4Bに示し、以下で述べる。本明細書に記載する技術の態様はこの点において限定されないため、GUI 400は、制御要素416、418、420に加えて又はその代わりに、1つ又は複数の他の制御要素を有し得る。
GUI 400は、図4Aに示されるGUI制御要素に加えて又はその代わりに、1つ又は複数の他のGUI制御要素を含み得ることを理解されたい。また、図4Aの例に示されるGUI制御要素はボタンであるが、本明細書に記載する技術の態様はこの点において限定されないため、GUI制御要素は、他の任意の適宜のタイプのもの(例えば、ラジオボタン、チェックボックス、テキストフィールドなど)でもよいことも理解されたい。
図4Bは、本明細書に記載する技術の幾つかの実施形態による、入力SQLクエリーから生成されたデータフローグラフのノードによって表される複数のデータ処理動作に対する追跡情報を示すことによって、入力SQLクエリーに対する追跡情報を示す別の説明のためのGUI 450の図である。この例では、図4Bに示される追跡情報は、図4Aに示されるGUI 400の表417の行414に要約情報が示されるアクティブクエリーに対するものである。
図4Bに示されるように、データフローグラフは、それぞれのデータソースを表す入力ノード452、456と、データシンクを表す出力ノード468と、再パーティション動作を表すノード454と、ソート動作を表すノード458と、結合データ処理動作を表すノード460と、シリアル化データ処理動作を表すノード462と、TCP接続を使用して公開予定のデータレコードを準備するための出力関連の処理を表すノード464、466とを含む。
入力ノード452、454によって表されるデータソースは、任意の適宜のタイプのものでよい。幾つかの実施形態では、入力ノード452、454によって表されるデータソースは、同じタイプのデータソースであり得る(例えば、両方ともSQL Serverデータソースであり得る)。他の実施形態では、入力SQLクエリーが連合クエリーである際は、入力ノード452、454によって表されるデータソースは、異なるタイプのものであり得る(例えば、あるデータソースはORACLEデータソースであり得、他のデータソースはTERADATAデータソースであり得る)。幾つかの実施形態では、出力ノード468は、入力ノード452、454によって表されるデータソースの一方又は両方と同じタイプのデータシンクを表し得る。他の実施形態では、出力ノード468によって表されるデータシンクは、全く異なるタイプのものであり得る(例えば、データソースはDB2データソースであり得、データシンクはMongoDBデータシンクであり得る)。
図4Bに示されるように、GUI 450は、データフローグラフの生成元であるSQLクエリーに対する様々なタイプの追跡情報を示す。例えば、SQLクエリーから生成されたデータフローグラフの実行の間、GUI 450は、グラフのノードによって表される各データ処理動作によって処理されたデータレコードの数を示す。一例として、GUI 350に示される追跡情報は、(1)入力ノード452によって表されるデータソースから100万個のレコードが読み取られたことを示す情報、(2)これらのレコードの全てが再パーティショニング動作を通過したことを示す情報、(3)7,299個のレコードがソートデータ処理動作によって処理されたことを示す情報、(4)入力ノード456によって表されるデータソースから740個のレコードが読み取られたことを示す情報、(5)入力ノード460によって表される結合動作によって4,112個のレコードが処理されたことを示す情報、及び、(6)ノード464、466、468によって表される動作によって、2541個、3214個、2790個のレコードがそれぞれ処理されたことを示す情報を含む。それに加えて、ノード454に示されるチェックマークは、ノード454によって表されるデータ処理(再パーティショニング)動作がデータレコードの全てに適用されたことを示し、「プレイ」シンボル(右向きの三角形)は、ノード458〜468によって表される動作に対する処理が未だ完了していないことを示す。
図5Aは、本明細書に記載する技術の幾つかの実施形態による、入力SQLクエリーから自動生成された説明のためのデータフローグラフ500の図である。データフローグラフ500は、入力SQLクエリーから生成することができ、例えば、本明細書に記載する技術の態様はこの点において限定されないため、クエリープランジェネレータ(例えば、クエリープランジェネレータ106)を使用して、入力クエリーからクエリープランを生成し、その後、データフローグラフジェネレータ(例えば、データフロージェネレータ108)を使用して、生成したクエリープランからデータフローグラフ500を生成することによって、又は、他の任意の適宜のやり方で、生成することができる。
図5Aに示されるように、データフローグラフ500は、それぞれのデータソース(例えば、クレジットカード決済のデータベース)を表す入力ノード502、506と、ネットワーク上で(例えば、転送制御プロトコル(TCP)を使用して)データレコードを出力するためのノード516、518と、データレコードから1つ又は複数の列が除去される列削除動作を表すノード504と、放送動作を表すノード506と、結合データ処理動作を表すノード510と、部分計数動作を表すノード512と、計数データ処理動作を表すノード514とを含む。グラフ500がレコードを読み取るデータソース及び/又はグラフ500がレコードを書き込むデータシンクは、任意の適宜のタイプのものでよく、その例を本明細書で提供する。
図5Bは、本明細書に記載する技術の幾つかの実施形態による、図5Aのデータフローグラフ500のノードによって表される複数のデータ処理動作に対する追跡情報を示す説明のためのGUIの図である。図5Bは、データフローグラフ500のサブグラフ520を示し、追跡情報が重ね合されている。例えば、図5Bに示されるように、GUIでは、データフローグラフ500の実行の間の、サブグラフ520のノードによって表されるデータ処理動作の少なくとも幾つかによって処理されたデータレコードの数が示されている。一例として、図5Bに示される追跡情報は、(1)ノード504によって表される列削除動作を使用して、917,504個のレコードが処理されたことを示す情報505、(2)入力ノード508によって表されるデータソースから128,498個のレコードがアクセスされたことを示す情報509a、(3)ノード506によって表される放送動作を使用して、1,048,576個のレコードが処理されたことを示す情報509b、及び、(4)及びノード510によって表される結合動作の結果、139,032,831個のレコードが出力されたことを示す情報511(結合動作が効率的に実施されなかったことを示し得る)を含む。
本明細書に記載するように、SQLクエリーに対する追跡情報は、SQLクエリーから生成されたデータフローグラフの様々なデータ処理動作によって処理されたデータレコードの数のみに限定されない。追跡情報は、データフローグラフの1つ又は複数のデータ処理動作の各々についての他の任意の適宜の情報を含み得る。例えば、データ処理動作に対する追跡情報は、制限ではなく例として、(1)データ処理動作を行うために用いられた並列性の度合いを示す情報、(2)データ処理動作を行うために使用された1つ又は複数のコンピューティングデバイスを識別する情報、(3)データ処理動作を行うために使用された処理資源の量(例えば、使用された処理資源の総量、1レコードあたり若しくは閾値数のレコードあたりの使用された処理資源の量の平均、及び/又は、他の任意の適宜の統計)を示す情報、(3)データ処理動作を行うために使用されたメモリの量(例えば、使用されたメモリの総量、1レコードあたり若しくは閾値数のレコードあたりの使用されたメモリの量の平均、及び/又は、他の任意の適宜の統計)を示す情報、(4)データ処理動作を行うために使用された時間量(例えば、経過した時間の総量、1レコードあたり若しくは閾値数のレコードあたりのデータ処理動作を適用するために使用された時間の量の平均、及び/又は、他の任意の適宜の統計)を示す情報、(5)データ処理動作を行うコンピューティングデバイス上の処理負荷間のスキューの尺度を示す情報、(6)データ処理動作を使用してレコード(又は閾値数の若しくは指定量のレコード)が処理されたレートを示す情報、(7)データ処理動作の1つ又は複数のパラメータの値を示す情報、並びに、(8)第1の動作が完了したかどうかを示す情報を含み得る。
本明細書で述べるように、幾つかの実施形態では、SQLクエリーに対する追跡情報は、SQLクエリーから生成されたデータフローグラフの1つ又は複数のデータ処理動作の各々に対する追跡情報を含む。幾つかの実施形態では、データ処理動作に対する追跡情報の少なくとも幾つかは、データフローグラフと共に示すことができる。例えば、図5Bに示されるように、データフローグラフのデータ処理動作によって処理されたレコードの数は、データ処理動作を表すデータフローグラフのノードの最も近くに示すことができる。幾つかの実施形態では、データ処理動作に対する追跡情報の少なくとも幾つかは、ユーザが追加の追跡情報の閲覧を希望することを示すユーザ入力に応答して示すことができる。例えば、幾つかの実施形態では、ユーザは、データ処理動作を選択することができ、その選択に応答して、データ処理動作に対する追跡情報の少なくとも幾つかを示すことができる。本明細書に記載する技術の態様はこの点において限定されないため、ユーザは、データ処理動作を表すノードをクリックすることによって、ノード上にマウスポインタ(例えば、事象上にマウス)を置くことによって、キーボード入力を提供することによって及び/又は他の任意の適宜のやり方で、データ処理動作を選択することができる。
例えば、図5Cに示されるように、ユーザは、結合データ処理動作を表すノード510を選択することができ、ユーザの選択に応答して、結合情報に対する追加の追跡情報が示される。図5Cの例では、図5Cに対して示される追跡情報は、処理されたレコードの数、利用されたメモリの総量、利用された処理資源の総量、1秒あたりの処理されたレコードの数の平均、1秒あたりのレコードのキロバイト数(kB)を処理する時間の量の平均を示す情報、及び、ユーザがクリックすることにより結合動作の様々なパラメータの値を閲覧できるようにするためのリンク(その説明のための例を図5Dに示す)を含む。
図5Dは、本明細書に記載する技術の幾つかの実施形態による、図5Cに示される結合データ処理動作と関連付けられたパラメータの少なくとも幾つかに対する値の表550である。例えば、表550は、結合データ処理動作がソート済みの入力を受信するように構成されること(表550の第2行を参照)、結合動作が内部結合であること(第4行を参照)、結合動作が、データがソートされていることをチェックするというよりむしろ、想定することになっていること(第13行を参照)及び他のパラメータ値を示す。
図6は、本明細書に記載する技術の幾つかの実施形態による、SQLクエリーを追跡するための説明のためのプロセス600のフローチャートである。プロセス600は、任意の適宜のデータ処理システム(例えば、図1を参照して記載したデータ処理システム100を含む)を使用して実行することができる。
プロセス600は、SQLクエリーが受信されるアクト602から始まる。幾つかの実施形態では、SQLクエリーは、ユーザがデータ処理システムへの入力としてSQLクエリーを提供した結果としてプロセス600を実行するデータ処理システムによって受信することができる。ユーザは、グラフィカルユーザインタフェース(例えば、図4Aに示されるような)又は他の任意の適宜のインタフェースを通じて、SQLクエリーを入力することができる。他の実施形態では、SQLクエリーは、別のコンピュータプログラムによって、データ処理システムに提供され得る。例えば、SQLクエリーは、データ処理システムに1つ又は複数のSQLクエリー(各SQLクエリーは、ユーザによって指定されている場合、又は自動生成されている場合がある)を実行させるように構成されたコンピュータプログラムによって提供され得る。SQLクエリーは、任意の適宜のタイプのものでよく、及び任意の適宜のフォーマットで提供され得る(本明細書に記載の技術の態様は、この点において限定されない)。
次に、プロセス600は、アクト602で受信されたSQLクエリーからクエリープランが生成されるアクト604へと進む。生成されたクエリープランは、SQLクエリーが実行された場合に行われる1つ又は複数のデータ処理動作を識別し得る。生成されたクエリープランはさらに、識別されたデータ処理動作が実行される順序を指定し得る。そのため、生成されたクエリープランは、アクト602で受信したSQLクエリーを実行するために行うデータ処理動作のシーケンスを表し得る。生成されるクエリープランは、任意の適宜のタイプのクエリープランジェネレータ(例えば、クエリープランジェネレータ106)を使用して生成することができる。クエリープランを生成するための幾つかの例示的技術が、本明細書に全体として援用される、「データクエリー管理」というタイトルの米国特許第9,116,955号明細書に記載されている。
次に、プロセス600は、アクト602で受信されたSQLクエリーを使用してアクト604で生成されたクエリープランからデータフローグラフが生成されるアクト606へと進む。幾つかの実施形態では、データフローグラフが、クエリープラン(これ自体は、受信したSQLクエリーを用いて生成されたものである)から生成され得る。幾つかの実施形態では、データフローグラフは、少なくとも部分的に、クエリープランにおいて識別されたデータ処理動作の少なくともサブセット(例えば、一部又は全て)のそれぞれのノードを含むようにデータフローグラフを生成することによって、クエリープランから生成され得る。幾つかの実施形態では、クエリープランにおける単一のノードは、データフローグラフにおける複数のノードの包含をもたらし得る。続いて、クエリープランで指定されたデータ処理動作の順序を使用して、データフローグラフにおけるノードを結び付けるリンクを生成し得る。例えば、生成されたクエリープランが、第2のデータ処理動作の前に、第1のデータ処理動作が行われることを示す場合、生成されたデータフローグラフは、第1のノード(第1のデータ処理動作を表す)及び第2のノード(第2のデータ処理動作を表す)と、第1のノードから第2のノードへの経路を指定する1つ又は複数のリンクとを有し得る。
幾つかの実施形態では、クエリープランからデータフローグラフを生成することは、入力及び/又は出力データソースを表すグラフに対して、1つ又は複数のノードを追加することを含む。例えば、データフローグラフの生成は、SQLクエリーの実行中にデータレコードが読み取られるデータソースのそれぞれに対して入力ノードを追加することを含み得る。各入力ノードは、それぞれのデータソースと関連付けられたパラメータ値を用いて構成され得る。これらの値は、データソース中のデータレコードにアクセスする方法を示し得る。別の例として、データフローグラフの生成は、SQLクエリーの実行中にデータレコードが書き込まれるデータシンクのそれぞれに対して出力ノードを追加することを含み得る。各出力ノードは、それぞれのデータシンクと関連付けられたパラメータ値を用いて構成され得る。これらの値は、データレコードをデータソースに書き込む方法を示し得る。
幾つかの実施形態では、データフローグラフを生成することは、データフローグラフのデータ処理動作を行うための処理レイアウトを決定することを含み得る。データ処理動作に対する処理レイアウトは、データ処理動作を行うためにどれほどの数のコンピューティングデバイスを使用するかを指定することや、データ処理動作を行うために使用する特定のコンピューティングデバイスを識別することができる。例えば、データフローグラフを生成することは、1つ又は複数のノードの各々に対し、単一のデバイス(例えば、単一のプロセッサ、単一の仮想マシンなど)を使用してデータ処理動作を行うか又は複数のデバイス(例えば、複数のプロセッサ、複数の仮想マシンなど)を使用してデータ処理動作を行うか、及び、どのデバイスを使用すべきかを決定することを含み得る。幾つかの実施形態では、異なる度合いの並列性は、異なるノードに割り当てることができる。従って、異なる処理レイアウトは、アクト602で取得されたSQLクエリーから生成されたデータフローグラフの実行の間に行われる予定の異なるデータ処理動作に割り当てることができることを理解されたい。
アクト606で生成されたデータフローグラフは、アクト604で生成されたクエリープランとは異なることを理解されたい。データフローグラフはグラフ実行エンジン(例えば、グラフ実行エンジン115)によって実行することができるが、クエリープランはグラフ実行エンジンによって実行することはできない(すなわち、クエリープランは、データフローグラフを生成するために使用される中間表現であり、データフローグラフは、SQLクエリーを実行するために、グラフ実行エンジンによって実行される)。クエリープランは、実行可能ではなく、リレーショナルデータベース管理システムの状況下でさえ、実行戦略を生成するために、さらに処理される必要がある。これに対して、データフローグラフは、SQLクエリーを実行するために、グラフ実行エンジンによって実行可能である。加えて、リレーショナルデータベースシステムによるさらなる処理後でさえ、結果として生じる実行戦略は、他のタイプのデータソース及び/又はデータシンクに対する、データの読み取り及び/又は書き込みを可能にしないが、データフローグラフは、この点において限定されない。
幾つかの実施形態では、アクト606で生成されたデータフローグラフは、アクト604で生成されたクエリープランに存在しないデータ処理動作を表すノードを含み得る。逆に、幾つかの実施形態では、アクト606で生成されたデータフローグラフは、アクト604で生成されたクエリープランに存在するデータ処理動作を表すノードを含まないことがあり得る。そのような状況は、クエリープランからデータフローグラフを生成するプロセス中に行われ得る様々な最適化が原因で起こり得る。幾つかの実施形態では、アクト606で生成されたデータフローグラフは、データベースコンピュータシステム(例えば、リレーショナルデータベース管理システム)上で行われるデータベース動作以外のデータ処理動作を表すノードを含み得る。
幾つかの実施形態では、クエリープラン及びデータフローグラフは、異なるタイプのデータ構造で具現化され得る。例えば、幾つかの実施形態では、クエリープランは、各ノードが単一の親ノードを有する有向グラフ(例えば、例えば二分木などの木)で具現化されてもよく、一方、データフローグラフは、複数の親ノードを有する少なくとも1つのノードを有し得る有向非巡回グラフで具現化され得る。
次に、プロセス600は、SQLクエリーの実行が開始されるアクト608へと進む。幾つかの実施形態では、SQLクエリーの実行は、アクト606でグラフ実行エンジン(例えば、グラフ実行エンジン115)を使用して生成されたデータフローグラフを実行し始めることによって開始することができる。幾つかの実施形態では、アクト606で生成されたデータフローグラフは、生成され次第、ユーザ入力なしで、実行することができる。他の実施形態では、アクト606で生成されたデータフローグラフは、生成し得ても、その実行はそのような実行コマンドを受けた場合にのみ開始することができ、コマンドは、インタフェースを通じて(例えば、図4Aに示されるGUIを通じて)ユーザによって提供することも、別のコンピュータプログラムによって(例えば、API呼び出しを通じて)提供することもできる。
次に、プロセス600は、実行されているSQLクエリーに対する追跡情報が集約されるアクト610へと進む。このアクト610は、任意の適宜のやり方で行うことができる。例えば、アクト606で生成されたデータフローグラフを実行するグラフ実行エンジンは、データフローグラフの1つ又は複数のデータ処理動作の各々の実行をモニタするように構成することができ、実行の間に情報を収集し、その情報から追跡データを取得することができる。収集された情報が追跡データの少なくとも幾つかを直接含むこと及び/又は収集された情報から追跡データの少なくとも幾つかを導出することができる。制限ではなく例として、グラフ実行エンジンは、特定のデータ処理動作によって処理されたデータレコードの数、データ処理動作によって利用された処理能力及び/若しくはメモリの量、並びに/又は他の任意の適宜の追跡情報を記録することができ、それらの例を本明細書で提供する。これを受けて、この収集された情報が集約されている追跡情報の少なくとも幾つかを含むこと及び/又はこの収集された情報から追跡情報の少なくとも幾つかを導出することができる。
次に、プロセス600は、SQLクエリーに対する追跡情報を表示するためのGUIを生成し、SQLクエリーに対する追跡情報を表示するために使用することができるアクト612及び614へと進む。幾つかの実施形態では、GUIは、アクト606でSQLクエリーから生成されたデータフローグラフの視覚表現を含み得る。そのようなGUIの例は、図3、4B及び5A〜5Cに示す。GUIは、追跡情報の少なくとも幾つかをデータフローグラフと同じ画面上に表示することができる。例えば、GUIは、データ処理動作の各々によって処理されたデータレコードの数を表示することができる。別の例として、GUIは、データ処理動作のパラメータに対する1つ又は複数の値を表示することができる。幾つかの実施形態では、GUIは、追加の追跡情報を表示することができる(自動的に又はそのようなユーザ指示に応答して)。この例は、図5C及び5Dを参照することを含めて、本明細書に記載する。
次に、プロセス600は、追跡データの集約を続けるかどうかに関する決定が行われるアクト616へと進む。この決定は、任意の適宜のやり方で行うことができる。例えば、幾つかの実施形態では、データフローグラフの実行が完了しているか、取り消されているか又は休止している(例えば、ユーザ又は別のコンピュータプログラムから実行休止指示を受信することに応答して)場合は、追跡データの集約を続けないという決定を行うことができ、プロセス600は完了する。他方では、データフローグラフの実行が進行中である(例えば、完了も、取消しも、休止も行われていない)場合は、追跡情報の集約を続けるという決定を行うことができ、プロセス600はアクト610に戻る。
プロセス600は、説明のためのものであり、バリエーションが存在することを理解されたい。例えば、幾つかの実施形態では、後続の使用のために追跡情報を集約して保存するが、追跡情報を表示するためのGUIが生成されないことや、生成されても表示されないことがあり得る。そのような実施形態では、アクト610、612、614の何れか1つ、何れか2つ又は全てを省略することができる。幾つかの実施形態では、プロセス600のアクト602〜608をあるソフトウェアプログラムによって行い、アクト610〜614を異なるコンピュータプログラムによって行うことができる。
図7は、本明細書に記載する技術を実施することができる適宜のコンピューティングシステム環境700の一例を図示する。コンピューティングシステム環境700は、適宜のコンピューティング環境の一例にすぎず、本明細書に記載する技術の使用又は機能性の範囲に関して何ら制限を示唆することを意図したものではない。コンピューティング環境700は、例示的動作環境700に図示されるコンポーネントの何れか1つ又は組み合わせに関する依存性又は要件を有すると解釈されるべきものでもない。
本明細書に記載する技術は、多数の他の汎用又は専用コンピューティングシステムの環境又は構成と共に使用可能である。本明細書に記載する技術と共に使用するのに適し得る周知のコンピューティングシステム、環境、及び/又は構成の例には、限定されることはないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルド又はラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル大衆消費電子製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記のシステム又はデバイスの何れかを含む分散コンピューティング環境などが含まれる。
コンピューティング環境は、プログラムモジュールなどのコンピュータ実行可能命令を実行することができる。一般に、プログラムモジュールには、特定のタスクを行う、又は特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。本明細書に記載する技術は、通信ネットワークを通してリンクされるリモート処理デバイスによってタスクが行われる分散コンピューティング環境において実行されてもよい。分散コンピューティング環境では、プログラムモジュールは、メモリストレージデバイスを含むローカル及びリモートコンピュータストレージ媒体の両方に位置していてもよい。
図7を参照して、本明細書に記載する技術を実施する例示的システムは、コンピュータ710の形態の汎用コンピューティングデバイスを含む。コンピュータ710のコンポーネントは、限定されないが、処理装置720、システムメモリ730、及びシステムメモリを含む様々なシステムコンポーネントを処理装置720に結合するシステムバス721を含んでもよい。システムバス721は、様々なバスアーキテクチャの何れかを使用した、メモリバス又はメモリコントローラ、周辺バス、及びローカルバスを含む幾つかのタイプのバス構造の何れかであってもよい。例として、及び限定ではなく、このようなアーキテクチャには、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ電子装置規格化協会(Video Electronics Standards Association)(VESA)ローカルバス、及びメザニンバスとしても知られるペリフェラルコンポーネントインターコネクト(PCI)バスが含まれる。
コンピュータ710は、一般的に、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ710によってアクセスすることができる任意の入手可能な媒体でよく、及び揮発性及び不揮発性両方の媒体、リムーバブル及び非リムーバブル媒体を含む。例として、及び限定ではなく、コンピュータ可読媒体は、コンピュータストレージ媒体及び通信媒体を含んでもよい。コンピュータストレージ媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータなどの情報のストレージのための任意の方法又は技術で実施される、揮発性及び不揮発性、リムーバブル及び非リムーバブル媒体を含む。コンピュータストレージ媒体には、限定されないが、RAM、ROM、EEPROM、フラッシュメモリ又は他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)又は他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ又は他の磁気ストレージデバイス、又は所望の情報を保存するために使用することができ、且つコンピュータ710によってアクセスすることができるその他の媒体が含まれる。通信媒体は、一般的に、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータを搬送波又は他のトランスポート機構などの変調データ信号で具現化し、及びあらゆる情報配信媒体を含む。「変調データ信号」という用語は、それの特性集合の1つ又は複数を有する、又は信号の情報をエンコードするように変更された信号を意味する。例として、及び限定ではなく、通信媒体には、有線ネットワーク又は直接有線接続などの有線媒体、及び音響、RF、赤外線、及び他の無線媒体などの無線媒体が含まれる。上記の何れかの組み合わせも、コンピュータ可読媒体の範囲内に含まれるものとする。
システムメモリ730は、読み出し専用メモリ(ROM)731及びランダムアクセスメモリ(RAM)732などの揮発性及び/又は不揮発性メモリの形態のコンピュータストレージ媒体を含む。起動時などに、コンピュータ710内の素子間で情報を転送することを助ける基本ルーチンを含有した、基本入出力システム733(BIOS)は、一般的に、ROM731内に保存される。RAM732は、一般的に、即座に利用できる、及び/又は処理装置720によって現在操作されているデータ及び/又はプログラムモジュールを含有する。例として、及び限定ではなく、図7は、オペレーティングシステム734、アプリケーションプログラム735、他のプログラムモジュール736、及びプログラムデータ737を図示する。
コンピュータ710は、他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピュータストレージ媒体も含むことができる。単なる例として、図7は、非リムーバブル、不揮発性磁気媒体に対する読み取り又は書き込みを行うハードディスクドライブ741、フラッシュメモリなどのリムーバブル、不揮発性メモリ752に対する読み取り又は書き込みを行うフラッシュドライブ751、及びCD−ROM又は他の光学媒体などのリムーバブル、不揮発性光ディスク756に対する読み取り又は書き込みを行う光ディスクドライブ755を図示する。例示的動作環境において使用することができる他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピュータストレージ媒体には、限定されないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、固体RAM、固体ROMなどが含まれる。ハードディスクドライブ741は、一般的に、インタフェース740などの非リムーバブルメモリインタフェースを通してシステムバス721に接続され、及び磁気ディスクドライブ751及び光ディスクドライブ755は、一般的に、インタフェース750などのリムーバブルメモリインタフェースによってシステムバス721に接続される。
上述した、及び図7に図示したドライブ及びそれらに関連付けられたコンピュータストレージ媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、及びコンピュータ710の他のデータのストレージを提供する。図7においては、例えば、ハードディスクドライブ741は、オペレーティングシステム744、アプリケーションプログラム745、他のプログラムモジュール746、及びプログラムデータ747を保存するものとして図示される。これらのコンポーネントは、オペレーティングシステム734、アプリケーションプログラム735、他のプログラムモジュール736、及びプログラムデータ737と同じであってもよいし、或いは異なっていてもよいことに留意されたい。オペレーティングシステム744、アプリケーションプログラム745、他のプログラムモジュール746、及びプログラムデータ747は、少なくとも、それらが異なるコピーであることを図示するために、ここでは、異なる番号が付与されている。ユーザは、キーボード762及び一般にマウス、トラックボール、又はタッチパッドと呼ばれるポインティングデバイス761などの入力デバイスによって、コンピュータ710にコマンド及び情報を入力することができる。他の入力デバイス(不図示)には、マイクロホン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどが含まれ得る。これら及び他の入力デバイスは、システムバスに結合されたユーザ入力インタフェース760によって、処理装置720に接続されることが多いが、パラレルポート、ゲームポート、又はユニバーサルシリアルバス(USB)などの他のインタフェース及びバス構造によって接続されてもよい。モニタ791又は他のタイプのディスプレイデバイスも、ビデオインタフェース790などのインタフェースを介して、システムバス721に接続される。モニタに加えて、コンピュータは、出力周辺インタフェース795を通して接続することができる、スピーカ797及びプリンタ796などの他の周辺出力デバイスも含むことができる。
コンピュータ710は、リモートコンピュータ780などの1つ又は複数のリモートコンピュータへの論理接続を用いたネットワーク化環境で動作することができる。リモートコンピュータ780は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、又は他の共通ネットワークノードでもよく、及び一般的に、図7ではメモリストレージデバイス781のみが図示されているが、コンピュータ710に関連して上記した素子の多く又は全てを含む。図7に描かれる論理接続は、ローカルエリアネットワーク(LAN)771及び広域ネットワーク(WAN)773を含むが、他のネットワークも含んでよい。このようなネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、及びインターネットにおいて、ありふれたものである。
LANネットワーキング環境で使用される場合、コンピュータ710は、ネットワークインタフェース又はアダプタ770を通してLAN771に接続される。WANネットワーキング環境で使用される場合、コンピュータ710は、一般的に、モデム772、又はインターネットなどのWAN773上で通信を確立するための他の手段を含む。内部又は外部のものでもよいモデム772は、ユーザ入力インタフェース760又は他の適宜の機構を介して、システムバス721に接続されてもよい。ネットワーク化環境において、コンピュータ710に関連して描かれたプログラムモジュール、又はそれらの一部は、リモートメモリストレージデバイスに保存されてもよい。例として、及び限定ではなく、図7は、メモリデバイス781に常駐しているとして、リモートアプリケーションプログラム785を図示する。示されるネットワーク接続は、例示的なものであり、及びコンピュータ間で通信リンクを確立する他の手段が使用されてもよいことが理解されるだろう。
本発明の少なくとも1つの実施形態の幾つかの態様を上記のように記載したが、様々な変更、修正、及び改良が、当業者には容易に思い付くことが理解されるものとする。
このような変更、修正、及び改良は、本開示の一部であることが意図され、及び本発明の精神及び範囲内であることが意図される。さらに、本発明の利点が示されるが、本明細書に記載の技術の全ての実施形態が、全ての記載した利点を含むわけではないことが理解されるものとする。幾つかの実施形態は、本明細書において有利であると記載された何れの特徴も実施しない場合があり、場合によっては、記載された特徴の1つ又は複数が、さらなる実施形態を得るために実施されてもよい。従って、上記の記載及び図面は、単なる例である。
本明細書に記載の技術の上記実施形態は、多数のやり方の何れで実施されてもよい。例えば、これらの実施形態は、ハードウェア、ソフトウェア、又はそれらの組み合わせを用いて実施されてもよい。ソフトウェアで実施される場合には、ソフトウェアコードは、単一のコンピュータにおいて提供されていようと、複数のコンピュータ間で分散されていようと、任意の適宜のプロセッサ又は一群のプロセッサ上で実行することができる。このようなプロセッサは、集積回路として実施されてもよく、業界において、CPUチップ、GPUチップ、マイクロプロセッサ、マイクロコントローラ、又はコプロセッサなどの名称で知られている市販の集積回路コンポーネントを含む集積回路コンポーネントにおいて、1つ又は複数のプロセッサを有する。代替的に、プロセッサは、ASICなどのカスタム回路、又はプログラマブル論理デバイスの構成に起因するセミカスタム回路において実施されてもよい。又さらなる代替手段として、プロセッサは、市販、セミカスタム、或いはカスタムであろうと、より大きな回路又は半導体デバイスの一部であってもよい。ある具体例として、幾つかの市販のマイクロプロセッサは、複数のコアの1つ又はサブセットがプロセッサを構成することができるように、複数のコアを有する。しかし、プロセッサは、任意の適宜のフォーマットの回路を使用して実施することができる。
さらに、コンピュータは、ラックマウント式コンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、又はタブレットコンピュータなどの多数の形態の何れかで具現化されてもよいことが理解されるものとする。追加的に、コンピュータは、携帯情報端末(PDA)、スマートフォン、又は任意のその他の適宜のポータブル又は固定電子デバイスを含む、一般にコンピュータとは見なされないが、適宜の処理能力を備えたデバイスに組み込まれてもよい。
又、コンピュータは、1つ又は複数の入力デバイス及び出力デバイスを有していてもよい。これらのデバイスは、特に、ユーザインタフェースを提示するために使用することができる。ユーザインタフェースを提供するために使用することができる出力デバイスの例には、出力の視覚的表現のためのプリンタ又はディスプレイスクリーン、及び出力の可聴表現のためのスピーカ又は他の音生成デバイスが含まれる。ユーザインタフェースに使用することができる入力デバイスの例には、キーボード、並びにマウス、タッチパッド、及びデジタイザタブレットなどのポインティングデバイスが含まれる。別の例として、コンピュータは、音声認識により、又は他の可聴フォーマットで入力情報を受信してもよい。
このようなコンピュータは、企業ネットワーク又はインターネットなどのローカルエリアネットワーク又は広域ネットワークとして含む、任意の適宜の形態の1つ又は複数のネットワークによって相互接続することができる。このようなネットワークは、任意の適宜の技術に基づいてもよく、及び任意の適宜のプロトコルに従って動作してもよく、及び無線ネットワーク、有線ネットワーク、又は光ファイバネットワークを含んでもよい。
又、本明細書に概要が述べられる様々な方法又はプロセスは、様々なオペレーティングシステム又はプラットフォームの何れか1つを用いる1つ又は複数のプロセッサに対して実行可能なソフトウェアとして符号化されてもよい。追加的に、このようなソフトウェアは、多数の適宜のプログラミング言語及び/又はプログラミング又はスクリプト作成ツールの何れかを使用して書かれてもよく、及びフレームワーク又は仮想マシンに対して実行される実行可能マシン語コード又は中間コードとしてコンパイルされてもよい。
この点において、本発明は、1つ又は複数のコンピュータ又は他のプロセッサに対して実行されると、上述の本発明の様々な実施形態を実施する方法を行う1つ又は複数のプログラムでエンコードされたコンピュータ可読ストレージ媒体(又は複数のコンピュータ可読媒体)(例えば、コンピュータメモリ、1つ又は複数のフロッピーディスク、コンパクトディスク(CD)、光ディスク、デジタルビデオディスク(DVD)、磁気テープ、フラッシュメモリ、フィールドプログラマブルゲートアレイ又は他の半導体デバイスにおける回路構成、又は他の有形コンピュータストレージ媒体)として具現化されてもよい。上記の例から明らかなように、コンピュータ可読ストレージ媒体は、非一時的な形態でコンピュータ実行可能命令を提供するのに十分な時間の間、情報を保持することができる。このような1つ又は複数のコンピュータ可読ストレージ媒体は、それ(ら)に保存された1つ又は複数のプログラムを、上述のような本発明の様々な態様を実施するために、1つ又は複数の異なるコンピュータ又は他のプロセッサにロードすることができるように、可搬であってもよい。本明細書においては、「コンピュータ可読ストレージ媒体」という用語は、製品(すなわち、製造物)又はマシンであると見なすことができる非一時的コンピュータ可読媒体のみを網羅する。代替的又は追加的に、本発明は、伝搬信号などの、コンピュータ可読ストレージ媒体以外のコンピュータ可読媒体として具現化されてもよい。
「プログラム」又は「ソフトウェア」という用語は、本明細書では、上述のような本発明の様々な態様を実施するようにコンピュータ又は他のプロセッサをプログラムするために使用することができる、あらゆるタイプのコンピュータコード又はコンピュータ実行可能命令のセットを指すために総称的に使用される。追加的に、本実施形態のある態様によれば、実行されると、本発明の方法を行う1つ又は複数のコンピュータプログラムは、単一のコンピュータ又はプロセッサに常駐する必要はなく、本発明の様々な態様を実施するために、多数の異なるコンピュータ又はプロセッサ間で、モジュラー方式で分散されてもよいことが理解されるものとする。
コンピュータ実行可能命令は、1つ又は複数のコンピュータ又は他のデバイスによって実行される、プログラムモジュールなどの多くの形態のものでもよい。一般に、プログラムモジュールには、特定のタスクを行う、又は特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。一般的に、プログラムモジュールの機能性は、様々な実施形態において、要望通りに組み合わせられてもよいし、或いは分散されてもよい。
又、データ構造は、任意の適宜の形態でコンピュータ可読媒体に保存されてもよい。図示を簡単にするために、データ構造は、データ構造内の場所によって関連したフィールドを有して示される場合がある。このような関係は、同様に、フィールドのストレージにフィールド間の関係を伝達するコンピュータ可読媒体内の場所を割り当てることによって、達成することができる。但し、ポインタ、タグ、又はデータ要素間の関係を確立する他の機構の使用によることを含む、任意の適宜の機構を使用して、データ構造のフィールドにおける情報間の関係を確立してもよい。
本発明の様々な態様は、単独で、組み合わせて、又は上記に記載した実施形態において具体的に述べられていない様々な配置で使用されてもよく、従って、その適用において、上記の説明に記載された、又は図面に図示されたコンポーネントの詳細及び配置に限定されない。例えば、ある実施形態に記載した態様は、任意の様式で、他の実施形態に記載した態様と組み合わせることができる。
又、本発明は、一例を提供した方法として具現化されてもよい。この方法の一部として行われるアクトは、任意の適宜のやり方で、順序付けが行われてもよい。従って、アクトが、図示されたものとは異なる順序で(これは、説明のための実施形態では、逐次的なアクトとして示されたとしても、幾つかのアクトを同時に行うことを含んでもよい)行われる実施形態が構築されてもよい。
さらに、幾つかの行為は、「ユーザ」によって行われると記載される。「ユーザ」は、一人の個人である必要はなく、及び幾つかの実施形態では、「ユーザ」に帰する行為は、複数の個人から成るチーム及び/又はコンピュータ支援ツール又は他の機構と組み合わせた個人によって行われてもよいことが理解されるものとする。
クレーム要素を修飾する、クレームにおける「第1の」、「第2の」、「第3の」などの序数用語の使用は、それ自体は、1つのクレーム要素の別のクレーム要素に対する優先、先行、又は順序、又は方法のアクトが行われる時間的順序を暗示せず、ある名称を有する1つのクレーム要素を、同じ名称(序数用語の使用を除き)を有する別の要素と区別するための単なるラベルとして使用することにより、これらのクレーム要素が区別される。
又、本明細書において使用される表現及び用語は、説明目的のものであり、及び限定として見なされるものではない。本明細書における、「含む(including)」、「含む(comprising)」、又は「有する(having)」、「含有する(containing)」、「関与する(involving)」、及びそれらのバリエーションの使用は、その後にリストされるアイテム及びそれらの均等物、並びに追加のアイテムを網羅することを意味する。

Claims (20)

  1. 少なくとも1つのコンピュータハードウェアプロセッサと、
    プロセッサ実行可能命令を保存する少なくとも1つの非一時的コンピュータ可読ストレージ媒体と
    を備えるデータ処理システムであって、前記プロセッサ実行可能命令が、前記少なくとも1つのコンピュータハードウェアプロセッサによって実行されると、
    連合構造化照会言語(SQL)クエリーを取得することと、
    前記連合SQLクエリーに対するクエリープランを生成することであって、前記クエリープランが、データ処理システムによって行われる複数のデータ処理動作を含み、前記複数のデータ処理動作が、第1のデータ処理動作及び第2のデータ処理動作を少なくとも含む、生成することと、
    複数のGUI要素を含むグラフィカルユーザインタフェース(GUI)を表示することであって、前記複数のGUI要素が、前記第1のデータ処理動作を表す第1のGUI要素及び前記第2のデータ処理動作を表す第2のGUI要素を含む、表示することと、
    前記連合SQLクエリーの実行の間、
    前記連合SQLクエリーに対する追跡情報を集約することであって、前記第1のデータ処理動作に対する第1の追跡情報及び前記第2のデータ処理動作に対する第2の追跡情報を集約することを含む、集約することと、
    前記第1のGUI要素と関連付けられた前記第1の追跡情報の少なくとも幾つか及び前記第2のGUI要素と関連付けられた前記第2の追跡情報の少なくとも幾つかを前記GUIに表示することと
    を前記少なくとも1つのコンピュータハードウェアプロセッサに行わせる、データ処理システム。
  2. 前記連合SQLクエリーを実行することが、第1のタイプの第1のデータソースからデータレコードを読み取ること及び/又は第1のタイプの第1のデータソースにデータレコードを書き込むことと、前記第1のタイプとは異なる第2のタイプの第2のデータソースからデータレコードを読み取ること及び/又は前記第1のタイプとは異なる第2のタイプの第2のデータソースにデータレコードを書き込むこととを含む、請求項1に記載のデータ処理システム。
  3. 前記複数の動作が、第1のタイプの第1のデータソース内のデータレコードにアクセスするための少なくとも1つのデータ処理動作と、前記第1のタイプとは異なる第2のタイプの第2のデータソース内のデータレコードにアクセスするための少なくとも別のデータ処理動作とを含む、請求項1又は2に記載のデータ処理システム。
  4. 前記第1のタイプの前記第1のデータソースが、フラットファイルデータソース、マルチファイルデータソース、Hadoopデータソース、Oracleデータソース、Teradataデータソース、DB2データソース、SQL Serverデータソース、Informixデータソース、MongoDBデータソース、SAPデータソース、SASデータソース又はメタデータデータソースである、請求項3に記載のデータ処理システム。
  5. 前記グラフィカルユーザインタフェースが非表形式である、請求項1〜4の何れか一項に記載のデータ処理システム。
  6. 前記GUIを表示することが、
    前記第1のデータ処理動作と関連付けられたグラフの第1のノードを表すために前記第1のGUI要素を生成することと、
    前記第2のデータ処理動作と関連付けられたグラフの第2のノードを表すために前記第2のGUI要素を生成することと
    によって少なくとも部分的に、前記グラフのグラフィカル表現を生成することを含む、請求項1〜5の何れか一項に記載のデータ処理システム。
  7. グラフの前記グラフィカル表現を生成することが、前記SQLクエリーを実行するためのデータフローグラフであるデータフローグラフのグラフィカル表現を生成することを含む、請求項6に記載のデータ処理システム。
  8. 前記データフローグラフの前記グラフィカル表現を生成することが、前記データフローグラフの前記第1のノードと前記データフローグラフの前記第2のノードとの間のエッジを表す第3のGUI要素を生成することをさらに含む、請求項7に記載のデータ処理システム。
  9. 前記プロセッサ実行可能命令が、
    前記クエリープランに基づいて、前記データフローグラフを表す少なくとも1つのデータ構造を生成することであって、前記データフローグラフが、前記第1のノード及び前記第2のノードを含む複数のノードと、前記複数のノードを接続する複数のエッジとを含み、前記複数のノードの各々が、前記複数のデータ処理動作のそれぞれのデータ処理動作に相当し、前記複数のエッジが、前記複数のノードのノード間のデータのフローを表す、生成すること
    を前記少なくとも1つのコンピュータハードウェアプロセッサにさらに行わせる、請求項7又は8に記載のデータ処理システム。
  10. 前記第1の動作に対する前記第1の追跡情報を集約することが、前記第1のデータ処理動作を介して処理されたデータレコードの数を追跡することを含み、前記GUIを介して、前記第1の追跡情報の少なくとも幾つかを表示することが、前記第1のGUI要素と関連付けて、前記第1のデータ処理動作を介して処理されたデータレコードの前記数を表示することを含む、請求項6〜9の何れか一項に記載のデータ処理システム。
  11. 前記第1のGUI要素と関連付けて、前記第1のデータ処理動作を介して処理されたデータレコードの前記数を表示することが、前記第1のノードの出力端部側に、前記第1のデータ処理動作を介して処理されたデータレコードの前記数を表示することを含む、請求項10に記載のデータ処理システム。
  12. 前記第2のデータ処理動作に対する前記第2の追跡情報を集約することが、前記第2のデータ処理動作を介して処理されたデータレコードの数を追跡することを含み、前記GUIを介して、前記第2の追跡情報の少なくとも幾つかを表示することが、前記第2のGUI要素と関連付けて、前記第2のデータ処理動作を介して処理されたデータレコードの前記数を表示することを含む、請求項11に記載のデータ処理システム。
  13. 前記第1の動作に対する第1の追跡情報を集約することが、前記第1のデータ処理動作を介して処理されたデータレコードの数、前記第1のデータ処理動作を行うために用いられた並列性の度合い、前記第1のデータ処理動作を行うために使用された1つ又は複数のコンピューティングデバイスを識別する情報、前記第1のデータ処理動作を行うために使用された処理資源の量、前記第1のデータ処理動作を行うために使用されたメモリの量、前記第1のデータ処理動作を行うために要した時間の総量、前記第1のデータ処理動作を行うコンピューティングデバイス上の処理負荷間のスキューの尺度、前記第1のデータ処理動作のパラメータ、前記第1のデータ処理動作が完了したかどうかを示す情報からなる群から選択される追跡情報を集約することを含む、請求項1〜12の何れか一項に記載のデータ処理システム。
  14. 前記第1のデータ処理動作に対する第1の追跡情報を集約することが、前記第1のデータ処理動作の1つ又は複数のパラメータを識別することを含み、前記追跡情報の少なくとも幾つかを表示することが、前記識別された1つ又は複数のパラメータのうちの少なくとも1つのパラメータの少なくとも1つの値を表示することを含む、請求項1〜13の何れか一項に記載のデータ処理システム。
  15. 前記プロセッサ実行可能命令が、
    データ処理システムによって実行されている1つ又は複数のSQLクエリーのリストを表示する第2のGUIを表示することであって、前記1つ又は複数のSQLクエリーが、前記SQLクエリーを含む、表示することと、
    前記第2のGUIを介する前記SQLクエリーのユーザ選択に応答して、前記複数のGUI要素を含む前記GUIを生成することであって、前記複数のGUI要素が、前記第1のデータ処理動作を表す前記第1のGUI要素及び前記第2のデータ処理動作を表す前記第2のGUI要素を含む、生成することと
    を前記少なくとも1つのコンピュータハードウェアプロセッサにさらに行わせる、請求項1〜14の何れか一項に記載のデータ処理システム。
  16. 前記プロセッサ実行可能命令が、
    データ処理システムによって実行されている1つ又は複数のSQLクエリーのリストを表示する第2のGUIを表示することであって、前記1つ又は複数のSQLクエリーが、前記SQLクエリーを含む、表示することと、
    前記第2のGUIを介する前記SQLクエリーのユーザ選択に応答して、前記SQLクエリーの実行を停止することと
    を前記少なくとも1つのコンピュータハードウェアプロセッサにさらに行わせる、請求項1〜15の何れか一項に記載のデータ処理システム。
  17. 前記表示することが、前記表示された前記第1の追跡情報の少なくとも幾つかをリフレッシュすることをさらに含む、請求項1〜16の何れか一項に記載のデータ処理システム。
  18. プロセッサ実行可能命令を保存する少なくとも1つの非一時的コンピュータ可読ストレージ媒体であって、前記プロセッサ実行可能命令が、少なくとも1つのコンピュータハードウェアプロセッサによって実行されると、
    連合構造化照会言語(SQL)クエリーを取得することと、
    前記連合SQLクエリーに対するクエリープランを生成することであって、前記クエリープランが、データ処理システムによって行われる複数のデータ処理動作を含み、前記複数のデータ処理動作が、第1のデータ処理動作及び第2のデータ処理動作を少なくとも含む、生成することと、
    複数のGUI要素を含むグラフィカルユーザインタフェース(GUI)を表示することであって、前記複数のGUI要素が、前記第1のデータ処理動作を表す第1のGUI要素及び前記第2のデータ処理動作を表す第2のGUI要素を含む、表示することと、
    前記連合SQLクエリーの実行の間、
    前記連合SQLクエリーに対する追跡情報を集約することであって、前記第1のデータ処理動作に対する第1の追跡情報及び前記第2のデータ処理動作に対する第2の追跡情報を集約することを含む、集約することと、
    前記第1のGUI要素と関連付けられた前記第1の追跡情報の少なくとも幾つか及び前記第2のGUI要素と関連付けられた前記第2の追跡情報の少なくとも幾つかを前記GUIに表示することと
    を前記少なくとも1つのコンピュータハードウェアプロセッサに行わせる、非一時的コンピュータ可読ストレージ媒体。
  19. 少なくとも1つのコンピュータハードウェアプロセッサによって行われる方法であって、
    連合構造化照会言語(SQL)クエリーを取得することと、
    前記連合SQLクエリーに対するクエリープランを生成することであって、前記クエリープランが、データ処理システムによって行われる複数のデータ処理動作を含み、前記複数のデータ処理動作が、第1のデータ処理動作及び第2のデータ処理動作を少なくとも含む、生成することと、
    複数のGUI要素を含むグラフィカルユーザインタフェース(GUI)を表示することであって、前記複数のGUI要素が、前記第1のデータ処理動作を表す第1のGUI要素及び前記第2のデータ処理動作を表す第2のGUI要素を含む、表示することと、
    前記連合SQLクエリーの実行の間、
    前記連合SQLクエリーに対する追跡情報を集約することであって、前記第1のデータ処理動作に対する第1の追跡情報及び前記第2のデータ処理動作に対する第2の追跡情報を集約することを含む、集約することと、
    前記第1のGUI要素と関連付けられた前記第1の追跡情報の少なくとも幾つか及び前記第2のGUI要素と関連付けられた前記第2の追跡情報の少なくとも幾つかを前記GUIに表示することと
    を含む、方法。
  20. プロセッサ実行可能命令を保存する少なくとも1つの非一時的コンピュータ可読ストレージ媒体であって、前記プロセッサ実行可能命令が、
    連合構造化照会言語(SQL)クエリーを取得するための手段と、
    前記連合SQLクエリーに対するクエリープランを生成するための手段であって、前記クエリープランが、データ処理システムによって行われる複数のデータ処理動作を含み、前記複数のデータ処理動作が、第1のデータ処理動作及び第2のデータ処理動作を少なくとも含む、手段と、
    複数のGUI要素を含むグラフィカルユーザインタフェース(GUI)を表示するための手段であって、前記複数のGUI要素が、前記第1のデータ処理動作を表す第1のGUI要素及び前記第2のデータ処理動作を表す第2のGUI要素を含む、手段と、
    前記連合SQLクエリーの実行の間、
    前記連合SQLクエリーに対する追跡情報を集約するための手段であって、前記第1のデータ処理動作に対する第1の追跡情報及び前記第2のデータ処理動作に対する第2の追跡情報を集約することを含む、手段と、
    前記第1のGUI要素と関連付けられた前記第1の追跡情報の少なくとも幾つか及び前記第2のGUI要素と関連付けられた前記第2の追跡情報の少なくとも幾つかを前記GUIに表示するための手段と
    を備える、非一時的コンピュータ可読ストレージ媒体。
JP2020550038A 2017-12-08 2018-12-06 構造化照会言語(sql)クエリーの実行をモニタするためのシステム及び方法 Pending JP2021506043A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/835,823 2017-12-08
US15/835,823 US11188434B2 (en) 2017-12-08 2017-12-08 Systems and methods for monitoring execution of structured query language (SQL) queries
PCT/US2018/064217 WO2019113293A1 (en) 2017-12-08 2018-12-06 Systems and methods for monitoring execution of structured query language (sql) queries

Publications (1)

Publication Number Publication Date
JP2021506043A true JP2021506043A (ja) 2021-02-18

Family

ID=64949441

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020550038A Pending JP2021506043A (ja) 2017-12-08 2018-12-06 構造化照会言語(sql)クエリーの実行をモニタするためのシステム及び方法

Country Status (8)

Country Link
US (1) US11188434B2 (ja)
EP (1) EP3721338A1 (ja)
JP (1) JP2021506043A (ja)
CN (1) CN111492344B (ja)
AU (1) AU2018380147B2 (ja)
CA (1) CA3082186A1 (ja)
SG (1) SG11202005197QA (ja)
WO (1) WO2019113293A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112018001789T5 (de) 2017-03-29 2019-12-19 Ab Initio Technology Llc Systeme und verfahren zum durchführen von datenverarbeitungsoperationen unter verwendung von parallelität variabler grade
US12032631B2 (en) 2018-05-30 2024-07-09 Ab Initio Technology Llc Systems and methods for dataflow graph optimization
TW202042242A (zh) * 2019-05-07 2020-11-16 大陸商深圳大心電子科技有限公司 資料讀取方法、儲存控制器與儲存裝置
CN111290929B (zh) * 2020-02-10 2023-06-27 珠海图思科软件有限公司 一种等价sql语句性能的测试方法、计算机装置及计算机可读存储介质
US11645284B2 (en) 2020-03-16 2023-05-09 International Business Machines Corporation Distributed join filters in a dynamic distributed data processing service
JP2024505238A (ja) 2021-01-31 2024-02-05 アビニシオ テクノロジー エルエルシー 論理データセットグループの操作を伴うデータ処理システム

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060095406A1 (en) * 2004-10-29 2006-05-04 International Business Machines Corporation Displaying explain data for a SQL query of a database
US20080140622A1 (en) * 2006-12-12 2008-06-12 Bestgen Robert J Displaying Explain Data for a SQL Query of a Database
US20090077013A1 (en) * 2007-09-19 2009-03-19 International Business Machines Corporation Methods, systems, and computer program products for user-driven targeted query re-optimizations using delta values
US20120284255A1 (en) * 2011-05-02 2012-11-08 Ian Schechter Managing data queries
JP2015045996A (ja) * 2013-08-28 2015-03-12 Kddi株式会社 分散クエリ処理装置、処理方法及び処理プログラム

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
US6438741B1 (en) 1998-09-28 2002-08-20 Compaq Computer Corporation System and method for eliminating compile time explosion in a top down rule based system using selective sampling
JP2003256221A (ja) 2002-02-28 2003-09-10 Fujitsu Ltd 並列プロセス実行方法、及びマルチプロセッサ型コンピュータ
US7249141B2 (en) 2003-04-30 2007-07-24 Microsoft Corporation Automated layout of relational databases
US7155612B2 (en) 2003-04-30 2006-12-26 International Business Machines Corporation Desktop database data administration tool with row level security
US7716630B2 (en) 2005-06-27 2010-05-11 Ab Initio Technology Llc Managing parameters for graph-based computations
US7870556B2 (en) 2006-05-16 2011-01-11 Ab Initio Technology Llc Managing computing resources in graph-based computations
US7979578B2 (en) 2009-09-02 2011-07-12 International Business Machines Corporation Dynamic and evolutionary placement in an event-driven component-oriented network data processing system
US9208141B2 (en) * 2010-02-05 2015-12-08 Oracle International Corporation Generating and displaying active reports
US8356027B2 (en) 2010-10-07 2013-01-15 Sap Ag Hybrid query execution plan generation and cost model evaluation
US8195643B2 (en) 2010-10-28 2012-06-05 Sap Ag Database calculation engine
US8838579B2 (en) 2012-04-26 2014-09-16 Sap Ag Data flow graph optimization using adaptive rule chaining
US8856766B2 (en) 2012-05-11 2014-10-07 International Business Machines Corporation Generating layouts for graphs of data flow applications
CN103713958B (zh) * 2012-09-28 2016-12-21 国际商业机器公司 在不同语言的机器间同步图形用户界面操作的方法和设备
US10515118B2 (en) 2013-06-24 2019-12-24 Micro Focus Llc Processing a data flow graph of a hybrid flow
US20150039587A1 (en) * 2013-07-31 2015-02-05 Oracle International Corporation Generic sql enhancement to query any semi-structured data and techniques to efficiently support such enhancements
US9990398B2 (en) 2013-09-20 2018-06-05 Oracle International Corporation Inferring dimensional metadata from content of a query
US20170083573A1 (en) 2015-07-29 2017-03-23 Algebraix Data Corp. Multi-query optimization
US10657134B2 (en) * 2015-08-05 2020-05-19 Ab Initio Technology Llc Selecting queries for execution on a stream of real-time data
US10133778B2 (en) 2015-11-20 2018-11-20 Sap Se Query optimization using join cardinality
US10877816B2 (en) 2016-04-20 2020-12-29 Samsung Electronics Co., Ltd. Optimal task scheduler
US10437821B2 (en) 2016-10-26 2019-10-08 Sap Se Optimization of split queries
US10528599B1 (en) 2016-12-16 2020-01-07 Amazon Technologies, Inc. Tiered data processing for distributed data
US9798527B1 (en) 2017-01-06 2017-10-24 Google Inc. Loop and library fusion
DE112018001789T5 (de) 2017-03-29 2019-12-19 Ab Initio Technology Llc Systeme und verfahren zum durchführen von datenverarbeitungsoperationen unter verwendung von parallelität variabler grade
US12032631B2 (en) 2018-05-30 2024-07-09 Ab Initio Technology Llc Systems and methods for dataflow graph optimization

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060095406A1 (en) * 2004-10-29 2006-05-04 International Business Machines Corporation Displaying explain data for a SQL query of a database
US20080140622A1 (en) * 2006-12-12 2008-06-12 Bestgen Robert J Displaying Explain Data for a SQL Query of a Database
US20090077013A1 (en) * 2007-09-19 2009-03-19 International Business Machines Corporation Methods, systems, and computer program products for user-driven targeted query re-optimizations using delta values
US20120284255A1 (en) * 2011-05-02 2012-11-08 Ian Schechter Managing data queries
JP2014519080A (ja) * 2011-05-02 2014-08-07 アビニシオ テクノロジー エルエルシー データクエリの管理
JP2015045996A (ja) * 2013-08-28 2015-03-12 Kddi株式会社 分散クエリ処理装置、処理方法及び処理プログラム

Also Published As

Publication number Publication date
CN111492344A (zh) 2020-08-04
US20190179723A1 (en) 2019-06-13
SG11202005197QA (en) 2020-07-29
US11188434B2 (en) 2021-11-30
CA3082186A1 (en) 2019-06-13
AU2018380147A1 (en) 2020-05-21
CN111492344B (zh) 2023-10-24
AU2018380147B2 (en) 2024-05-02
WO2019113293A1 (en) 2019-06-13
EP3721338A1 (en) 2020-10-14

Similar Documents

Publication Publication Date Title
JP2021506043A (ja) 構造化照会言語(sql)クエリーの実行をモニタするためのシステム及び方法
JP7487115B2 (ja) データフローグラフ最適化のシステム及び方法
US10963810B2 (en) Efficient duplicate detection for machine learning data sets
CA2953826C (en) Machine learning service
US10452992B2 (en) Interactive interfaces for machine learning model evaluations
JP7216654B2 (ja) 可変レベル並列性を用いたデータ処理動作を行うためのシステム及び方法
US11275735B2 (en) Materialized graph views for efficient graph analysis
JP5990192B2 (ja) データストアにおけるクエリーデータのフィルタリング
US11874839B2 (en) Adaptive big data service
US20240029327A1 (en) Multi-dimensional data insight interaction
US20170212930A1 (en) Hybrid architecture for processing graph-based queries
US20230394369A1 (en) Tracking provenance in data science scripts
Kimball The evolving role of the enterprise data warehouse in the era of big data analytics
US20230093911A1 (en) Systems and methods for performing data processing operations using variable level parallelism
US20220300513A1 (en) Asynchronous query optimization using spare hosts
JP2020514907A (ja) プロセス定義およびプロセス実行トラッキングのためのユーザインターフェイスおよびランタイム環境
US11500933B2 (en) Techniques to generate and store graph models from structured and unstructured data in a cloud-based graph database system
US20230289154A1 (en) System and method for semantic aware data science
WO2023144629A1 (en) Methods and systems for semantics based generation of connections between separate data sets
US20180101622A1 (en) Perform graph traversal with graph query language
CN116737216A (zh) 技术资源的管理方法、装置、设备、存储介质和程序产品

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211105

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230206

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20230411

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230804

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20231120

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240321

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20240326

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20240418

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20240712