(57)【特許請求の範囲】
【請求項１】
コンピュータによって実施される、データソースからのデータに対する動作方法であって、前記データは前記データソースの有形かつ非一過性のコンピュータ可読媒体に格納され、前記動作はリレーショナルデータベースに適用可能なクエリ言語に従って表現されたクエリに基づくものであり、前記動作はリレーショナルデータベースを管理するシステム以外の実行システム上で前記クエリを実行することを含み、前記動作することは、
クエリを受信することと、
前記クエリに基づいてデータソースを識別することと、
リレーショナルデータベースを管理するシステム以外の実行システムを識別することと、
前記クエリに基づいてクエリプランナーに対するリクエストを生成することと、
前記リクエストを前記クエリプランナーに提供することと、
前記リクエストに基づいて前記クエリプランナーによって生成されたクエリプランを受信することであって、前記クエリプランは、リレーショナルデータベースを管理するシステムによって行われるべき１つまたは複数のステップの記述を含むことと、
データフローグラフをインスタンス化するデータ構造を生成することであって、前記データフローグラフは、
実行すべき少なくとも１つの操作を表す第１のノードであって、
前記第１のノードは、実行可能なプログラムコードを呼び出して前記操作を行うために実行システムが使用することのできる情報と関連付けられ、
前記第１のノードは、データを前記プログラムコードに対して使用可能とするために実行システムが使用することのできる情報と関連付けられ、かつ
前記操作は、前記クエリプランによって記述されたステップに基づいて選択される、第１のノードと、
前記第１のノードの操作の出力データを表す少なくとも１つのリンクであって、前記第１のノードの操作の前記出力データは、前記データフローグラフの第２のノードの操作に対する入力データとして提供される、少なくとも１つのリンクと、を含むことと、
前記データソースからデータを受信することと、
前記識別された実行システム上で、前記データフローグラフに基づいてプログラムコードを実行することと、を含む、
方法。
【請求項２】
前記データフローグラフは、前記クエリプランによって記述されたいずれかのステップに基づいて選択された操作以外の実行すべき操作を表す第３のノードを含む、請求項１に記載の方法。
【請求項３】
前記データフローグラフに基づいて前記プログラムコードを実行することは、前記データフローグラフのノードと第２のデータフローグラフのノードとの間のリンクをインスタンス化することを含み、前記第２のデータフローグラフは、前記クエリプランによって記述されたいずれかのステップに基づいて選択された操作以外の実行すべき操作を表す少なくとも１つのノードを含む、請求項１に記載の方法。
【請求項４】
前記データソースは、リレーショナルデータベーステーブルを含む、請求項１に記載の方法。
【請求項５】
前記データソースは、リレーショナルデータベーステーブル以外のデータ部分を含む、請求項１に記載の方法。
【請求項６】
前記データソースは、フラットファイルを含む、請求項１に記載の方法。
【請求項７】
前記クエリは、ＳＱＬクエリを含む、請求項１に記載の方法。
【請求項８】
前記データフローグラフに基づく前記プログラムコードから、前記クエリの結果を受信することを含む、請求項１に記載の方法。
【請求項９】
前記クエリプランのジェネレータは、クエリオプティマイザを含む、請求項１に記載の方法。
【請求項１０】
前記クエリプランは、前記クエリにおけるパラメータのデータ型を含む、請求項１に記載の方法。
【請求項１１】
前記クエリは、実行可能な機能への参照を含み、前記データフローグラフは、前記実行可能な機能を表すノードを含む、請求項１に記載の方法。
【請求項１２】
前記クエリに基づいてクエリプランナーに対するリクエストを生成することは、
前記データソースを反映したフォーマットされたデータ編成を含み、かつ前記データソースのデータを含まない、前記データソースの構造表現を作成することと、
前記クエリプランナーに対する前記リクエストに、前記構造表現を含めることと、を含む、請求項１に記載の方法。
【請求項１３】
前記データ構造は、前記識別された実行システムによって生成される、請求項１に記載の方法。
【請求項１４】
前記データ構造は、前記識別された実行システム以外のシステムによって生成される、請求項１に記載の方法。
【請求項１５】
１つまたは複数のプロセッサを含む、データソースからのデータに対する動作システムであって、前記データは前記データソースの有形かつ非一過性のコンピュータ可読媒体に格納され、前記動作はリレーショナルデータベースに適用可能なクエリ言語に従って表現されたクエリに基づくものであり、前記動作はリレーショナルデータベースを管理するシステム以外の実行システム上で前記クエリを実行することを含み、前記システムは、
コンピュータシステムであって、
クエリを受信することと、
前記クエリに基づいてデータソースを識別することと、
リレーショナルデータベースを管理するシステム以外の実行システムを識別することと、
前記クエリに基づいてクエリプランナーに対するリクエストを生成することと、
前記リクエストを前記クエリプランナーに提供することと、
前記リクエストに基づいて前記クエリプランナーによって生成されたクエリプランを受信することであって、前記クエリプランは、リレーショナルデータベースを管理するシステムによって行われるべき１つまたは複数のステップの記述を含むことと、
データフローグラフをインスタンス化するデータ構造を生成することであって、前記データフローグラフは、
実行すべき少なくとも１つの操作を表す第１のノードであって、
前記第１のノードは、実行可能なプログラムコードを呼び出して前記操作を行うために実行システムが使用することのできる情報と関連付けられ、
前記第１のノードは、データを前記プログラムコードに対して使用可能とするために実行システムが使用することのできる情報と関連付けられ、かつ
前記操作は、前記クエリプランによって記述されたステップに基づいて選択される、第１のノードと、
前記第１のノードの操作の出力データを表す少なくとも１つのリンクであって、前記第１のノードの操作の出力データは、前記データフローグラフの第２のノードの操作に対する入力データとして提供される、少なくとも１つのリンクと、を含むことと、
前記データソースからデータを受信することと、
前記識別された実行システムに対し、前記データフローグラフに基づく前記プログラムコードを提供することと、
を行うように構成されたコンピュータシステムと、
前記プログラムコードを受信し、かつ前記プログラムコードを実行するように構成された実行システムと、を含む、
システム。
【請求項１６】
データソースからのデータに対する動作をコンピュータに行わせるための命令を含むコンピュータプログラムを格納したコンピュータ可読記憶デバイスであって、前記データは前記データソースの有形かつ非一過性のコンピュータ可読媒体に格納され、前記動作はリレーショナルデータベースに適用可能なクエリ言語に従って表現されたクエリに基づくものであり、前記動作はリレーショナルデータベースを管理するシステム以外の実行システム上で前記クエリを実行することを含み、前記動作することは、
クエリを受信することと、
前記クエリに基づいてデータソースを識別することと、
リレーショナルデータベースを管理するシステム以外の実行システムを識別することと、
前記クエリに基づいてクエリプランナーに対するリクエストを生成することと、
前記リクエストを前記クエリプランナーに提供することと、
前記リクエストに基づいて前記クエリプランナーによって生成されたクエリプランを受信することであって、前記クエリプランは、リレーショナルデータベースを管理するシステムによって行われるべき１つまたは複数のステップの記述を含むことと、
データフローグラフをインスタンス化するデータ構造を生成することであって、前記データフローグラフは、
実行すべき少なくとも１つの操作を表す第１のノードであって、
前記第１のノードは、実行可能なプログラムコードを呼び出して前記操作を行うために実行システムが使用することのできる情報と関連付けられ、
前記第１のノードは、データを前記プログラムコードに対して使用可能とするために実行システムが使用することのできる情報と関連付けられ、かつ
前記操作は、前記クエリプランによって記述されたステップに基づいて選択される、第１のノードと、
前記第１のノードの操作の出力データを表す少なくとも１つのリンクであって、前記第１のノードの操作の出力データは、前記データフローグラフの第２のノードの操作に対する入力データとして提供される、少なくとも１つのリンクと、を含むことと、
前記データソースからデータを受信することと、
前記識別された実行システムに対し、前記データフローグラフに基づく前記プログラムコードを提供することと、を含む、
コンピュータ可読記憶デバイス。
【請求項１７】
１つまたは複数のプロセッサを含む、データソースからのデータに対する動作システムであって、前記データは前記データソースの有形かつ非一過性のコンピュータ可読媒体に格納され、前記動作はリレーショナルデータベースに適用可能なクエリ言語に従って表現されたクエリに基づくものであり、前記動作はリレーショナルデータベースを管理するシステム以外の実行システム上で前記クエリを実行することを含み、前記システムは、
クエリを受信することと、
前記クエリに基づいてデータソースを識別することと、
リレーショナルデータベースを管理するシステム以外の実行システムを識別することと、
前記クエリに基づいてクエリプランナーに対するリクエストを生成することと、
前記リクエストを前記クエリプランナーに提供することと、
前記リクエストに基づいて前記クエリプランナーによって生成されたクエリプランを受信することであって、前記クエリプランは、リレーショナルデータベースを管理するシステムによって行われるべき１つまたは複数のステップの記述を含むことと、
データフローグラフをインスタンス化するデータ構造を生成することであって、前記データフローグラフは、
実行すべき少なくとも１つの操作を表す第１のノードであって、
前記第１のノードは、実行可能なプログラムコードを呼び出して前記操作を行うために実行システムが使用することのできる情報と関連付けられ、
前記第１のノードは、データを前記プログラムコードに対して使用可能とするために実行システムが使用することのできる情報と関連付けられ、かつ
前記操作は、前記クエリプランによって記述されたステップに基づいて選択される、第１のノードと、
前記第１のノードの操作の出力データを表す少なくとも１つのリンクであって、前記第１のノードの操作の出力データは、前記データフローグラフの第２のノードの操作に対する入力データとして提供される、少なくとも１つのリンクと、を含むことと、
前記データソースからデータを受信することと、
前記識別された実行システムに対し、前記データフローグラフに基づく前記プログラムコードを提供することと、
を行う手段と、
前記プログラムコードを受信し、かつ前記プログラムコードを実行する手段と、を含む、
システム。
【請求項１８】
前記データフローグラフは、前記クエリプランによって記述されたいずれかのステップに基づいて選択された操作以外の実行すべき操作を表す第３のノードを含む、請求項１５に記載のシステム。
【請求項１９】
前記データフローグラフに基づいて前記プログラムコードを実行することは、前記データフローグラフのノードと第２のデータフローグラフのノードとの間のリンクをインスタンス化することを含み、前記第２のデータフローグラフは、前記クエリプランによって記述されたいずれかのステップに基づいて選択された操作以外の実行すべき操作を表す少なくとも１つのノードを含む、請求項１５に記載のシステム。
【請求項２０】
前記データソースは、リレーショナルデータベーステーブルを含む、請求項１５に記載のシステム。
【請求項２１】
前記データソースは、リレーショナルデータベーステーブル以外のデータ部分を含む、請求項１５に記載のシステム。
【請求項２２】
前記データソースは、フラットファイルを含む、請求項１５に記載のシステム。
【請求項２３】
前記クエリは、ＳＱＬクエリを含む、請求項１５に記載のシステム。
【請求項２４】
前記コンピュータシステムは、前記データフローグラフに基づく前記プログラムコードから、前記クエリの結果を受信するように構成される、請求項１５に記載のシステム。
【請求項２５】
前記クエリプランのジェネレータは、クエリオプティマイザを含む、請求項１５に記載のシステム。
【請求項２６】
前記クエリプランは、前記クエリにおけるパラメータのデータ型を含む、請求項１５に記載のシステム。
【請求項２７】
前記クエリは、実行可能な機能への参照を含み、前記データフローグラフは、前記実行可能な機能を表すノードを含む、請求項１５に記載のシステム。
【請求項２８】
前記クエリに基づいてクエリプランナーに対するリクエストを生成することは、
前記データソースを反映したフォーマットされたデータ編成を含み、かつ前記データソースのデータを含まない、前記データソースの構造表現を作成することと、
前記クエリプランナーに対する前記リクエストに、前記構造表現を含めることと、を含む、請求項１５に記載のシステム。
【請求項２９】
前記データ構造は、前記識別された実行システムによって生成される、請求項１５に記載のシステム。
【請求項３０】
前記データ構造は、前記識別された実行システム以外のシステムによって生成される、請求項１５に記載のシステム。
【請求項３１】
前記データフローグラフは、前記クエリプランによって記述されたいずれかのステップに基づいて選択された操作以外の実行すべき操作を表す第３のノードを含む、請求項１６に記載のコンピュータ可読記憶デバイス。
【請求項３２】
前記データフローグラフに基づいて前記プログラムコードを実行することは、前記データフローグラフのノードと第２のデータフローグラフのノードとの間のリンクをインスタンス化することを含み、前記第２のデータフローグラフは、前記クエリプランによって記述されたいずれかのステップに基づいて選択された操作以外の実行すべき操作を表す少なくとも１つのノードを含む、請求項１６に記載のコンピュータ可読記憶デバイス。
【請求項３３】
前記データソースは、リレーショナルデータベーステーブルを含む、請求項１６に記載のコンピュータ可読記憶デバイス。
【請求項３４】
前記データソースは、リレーショナルデータベーステーブル以外のデータ部分を含む、請求項１６に記載のコンピュータ可読記憶デバイス。
【請求項３５】
前記データソースは、フラットファイルを含む、請求項１６に記載のコンピュータ可読記憶デバイス。
【請求項３６】
前記クエリは、ＳＱＬクエリを含む、請求項１６に記載のコンピュータ可読記憶デバイス。
【請求項３７】
前記実行することは、前記データフローグラフに基づく前記プログラムコードから、前記クエリの結果を受信することを含む、請求項１６に記載のコンピュータ可読記憶デバイス。
【請求項３８】
前記クエリプランのジェネレータは、クエリオプティマイザを含む、請求項１６に記載のコンピュータ可読記憶デバイス。
【請求項３９】
前記クエリプランは、前記クエリにおけるパラメータのデータ型を含む、請求項１６に記載のコンピュータ可読記憶デバイス。
【請求項４０】
前記クエリは、実行可能な機能への参照を含み、前記データフローグラフは、前記実行可能な機能を表すノードを含む、請求項１６に記載のコンピュータ可読記憶デバイス。
【請求項４１】
前記クエリに基づいてクエリプランナーに対するリクエストを生成することは、
前記データソースを反映したフォーマットされたデータ編成を含み、かつ前記データソースのデータを含まない、前記データソースの構造表現を作成することと、
前記クエリプランナーに対する前記リクエストに、前記構造表現を含めることと、を含む、請求項１６に記載のコンピュータ可読記憶デバイス。
【請求項４２】
前記データ構造は、前記識別された実行システムによって生成される、請求項１６に記載のコンピュータ可読記憶デバイス。
【請求項４３】
前記データ構造は、前記識別された実行システム以外のシステムによって生成される、請求項１６に記載のコンピュータ可読記憶デバイス。
【請求項４４】
前記データフローグラフは、前記クエリプランによって記述されたいずれかのステップに基づいて選択された操作以外の実行すべき操作を表す第３のノードを含む、請求項１７に記載のシステム。
【請求項４５】
前記データフローグラフに基づいて前記プログラムコードを実行することは、前記データフローグラフのノードと第２のデータフローグラフのノードとの間のリンクをインスタンス化することを含み、前記第２のデータフローグラフは、前記クエリプランによって記述されたいずれかのステップに基づいて選択された操作以外の実行すべき操作を表す少なくとも１つのノードを含む、請求項１７に記載のシステム。
【請求項４６】
前記データソースは、リレーショナルデータベーステーブルを含む、請求項１７に記載のシステム。
【請求項４７】
前記データソースは、リレーショナルデータベーステーブル以外のデータ部分を含む、請求項１７に記載のシステム。
【請求項４８】
前記データソースは、フラットファイルを含む、請求項１７に記載のシステム。
【請求項４９】
前記クエリは、ＳＱＬクエリを含む、請求項１７に記載のシステム。
【請求項５０】
前記データフローグラフに基づく前記プログラムコードから、前記クエリの結果を受信する手段を含む、請求項１７に記載のシステム。
【請求項５１】
前記クエリプランのジェネレータは、クエリオプティマイザを含む、請求項１７に記載のシステム。
【請求項５２】
前記クエリプランは、前記クエリにおけるパラメータのデータ型を含む、請求項１７に記載のシステム。
【請求項５３】
前記クエリは、実行可能な機能への参照を含み、前記データフローグラフは、前記実行可能な機能を表すノードを含む、請求項１７に記載のシステム。
【請求項５４】
前記クエリに基づいてクエリプランナーに対するリクエストを生成することは、
前記データソースを反映したフォーマットされたデータ編成を含み、かつ前記データソースのデータを含まない、前記データソースの構造表現を作成することと、
前記クエリプランナーに対する前記リクエストに、前記構造表現を含めることと、を含む、請求項１７に記載のシステム。
【請求項５５】
前記データ構造は、前記識別された実行システムによって生成される、請求項１７に記載のシステム。
【請求項５６】
前記データ構造は、前記識別された実行システム以外のシステムによって生成される、請求項１７に記載のシステム。 
【発明の詳細な説明】
【技術分野】
【０００１】
本記載は、データクエリの管理に関する。
【背景技術】
【０００２】
データは、データベースに記憶され、データベーステーブルなどの様々な形態で構成され得る。また、データベーステーブルは、共通するテーマや目的を持ったデータの集合を含み得る。データベーステーブルの構成は、データベーススキームによって定義され、複数（multiple）のデータベーステーブルは、類似した又は同一の構成を有し得る。さらに、データベース及びその関連するデータベーステーブルの内容は、データが調整され、付加され、又は削除されることに伴い、時間とともに変化し得る。様々な技術は、データベースとデータをやり取りし、データベース内のデータを操作するために、用いられ得る。
【発明の概要】
【課題を解決するための手段】
【０００３】
一態様において、概して、データ管理システムによる使用のためのデータベースクエリを用意する方法は、データベースクエリを受信することと、データ記憶からの（データ要素が投入されたデータベーステーブルなどの）データソースに関する情報を受信することと、前記データベーステーブルを反映したフォーマット済みデータ編成を含み前記データベーステーブルの前記データ要素を含まない、前記データベーステーブルの構造表現を作成すること（producing）と、前記構造表現及び前記データベースクエリを、前記データベーステーブルの前記データベースクエリを実行するための操作（operations）を表すクエリプランを作成することのできるプランジェネレータに、提供すること、を含む。
【０００４】
各態様は、１つ又は複数の以下の特徴を含み得る。
【０００５】
前記データベースクエリは、ＳＱＬクエリを含む。
【０００６】
前記データベーステーブルの前記構造表現を作成することは、データベーステーブルのデータ構造からデータ型を決定することと、前記データ型を前記構造表現の対応するデータ構造に割り当てることを含む。
【０００７】
前記データベーステーブルの前記構造表現を作成することは、前記データベーステーブルの前記データ要素のデータ記憶サイズを決定することと、前記算出されたデータ記憶サイズを前記構造表現に割り当てることを含む。
【０００８】
前記データベーステーブルに関する情報を受信することは、データソースレジストリに基づいて前記データベーステーブルを識別することを含む。
【０００９】
前記データソースレジストリは、データフォーマット、キー、及びデータソースのインデックスを含む。
【００１０】
一態様によれば、概して、データベースクエリを表すデータフローグラフを生成する方法は、プランジェネレータから、データベーステーブルのデータベースクエリを実行する操作を表すクエリプランを受信することと、前記クエリプランからデータフローグラフを作成することと、を含み、前記データフローグラフは、前記クエリプランが表す少なくとも１つの操作を表している少なくとも１つのノードを含み、かつ、前記クエリプランに関連付けられた少なくとも１つのデータフローを表している少なくとも１つのリンクを含む。
【００１１】
各態様は、１つ又は複数の以下の特徴を含み得る。
【００１２】
前記データベースクエリは、ＳＱＬクエリを含む。
【００１３】
前記データフローグラフは、少なくとも一つの入力データセットからデータの流れを受信する少なくとも１つのノードと、少なくとも１つの出力データセットにデータの流れを提供する少なくとも一つのノードとを含む。
【００１４】
前記方法は、さらに、前記データベーステーブルを前記データフローグラフに提供することと、前記データフローグラフを実行することを含む。
【００１５】
前記方法は、さらに、前記データフローグラフから前記データベースクエリの出力を受信することを含む。
【００１６】
前記プランジェネレータは、クエリオプティマイザを含む。
【００１７】
データフローグラフの仕様を生成することは、前記クエリプランのクエリ操作を前記データフローグラフの各コンポーネントにマッピングすることを含む。
【００１８】
前記クエリプランは、前記データベースクエリのパラメータのデータ型を含む。
【００１９】
前記データベースクエリは実行可能な機能への参照を含み、データフローグラフの前記仕様は、前記実行可能な機能を表すコンポーネントを含む。
【００２０】
一態様によれば、概して、データベースクエリを表すデータフローグラフを生成する方法は、ＳＱＬクエリを受信することと、データ記憶から、データ要素が投入されたデータベーステーブルに関する情報を受信することと、前記データベーステーブルを反映したフォーマット済みデータ編成を含みかつ前記データベーステーブルの前記データを含まない、前記データベーステーブルの構造表現を作成することと、前記構造表現及び前記ＳＱＬクエリを、前記データベーステーブルの前記ＳＱＬクエリを実行するための操作を表すクエリプランを作成できるプランジェネレータに、提供することと、前記プランジェネレータからクエリプランを受信することと、前記クエリプランからデータフローグラフを作成することとを含み、前記データフローグラフは、前記クエリプランが示す少なくとも１つの操作を表している少なくとも１つのノードを含み、かつ、前記クエリプランに関連付けられた少なくとも１つのデータフローを表している少なくとも１つのリンクを含む。
【００２１】
一態様によれば、概して、データ管理システムによる使用のためのデータベースクエリを用意するシステムは、データ要素が投入された前記データベーステーブルに関する情報を収容するデータストレージと、コンピュータシステムとを含み、前記コンピュータシステムは、データベースクエリを受信し、前記データベーステーブルを反映したフォーマットされたデータ編成を含み前記データベーステーブルの前記データ要素を含まない、前記データベーステーブルの構造表現を作成し、前記構造表現及びデータベースクエリを、前記データベーステーブルの前記データベースクエリを実行するための操作を表すクエリプランを作成できるプランジェネレータに、提供するように構成されている。
【００２２】
一態様によれば、概して、データベースクエリを表すデータフローグラフを生成するシステムは、コンピュータシステムを含み、前記コンピュータシステムは、プランジェネレータから、データベーステーブルのデータベースクエリを実行する操作を表すクエリプランを受信し、前記クエリプランからデータフローグラフを作成するように構成され、前記データフローグラフは、前記クエリプランが表す少なくとも１つの操作を表している少なくとも１つのノードを含み、かつ、前記クエリプランに関連付けられた少なくとも１つのデータフローを表している少なくとも１つのリンクを含む。
【００２３】
一態様によれば、概して、データ管理システムによる使用のためのデータベースクエリを用意するシステムは、データ要素が投入されたデータベーステーブルに関する情報を記憶する手段と、データベースクエリを処理する手段とを含み、前記処理は、データベースクエリを受信することと、前記データベーステーブルを反映したフォーマットされたデータ編成を含み前記データベーステーブルの前記データ要素を含まない、前記データベーステーブルの構造表現を作成することと、前記構造表現及び前記データベースクエリを、前記データベーステーブルの前記データベースクエリを実行するための操作を表すクエリプランを作成できるプランジェネレータに、提供することを含む。
【００２４】
一態様によれば、概して、データベースクエリを表すデータフローグラフを生成するシステムは、クエリプランを処理する手段を含み、前記処理は、プランジェネレータから、データベーステーブルのデータベースクエリを実行する操作を表すクエリプランを受信することと、前記クエリプランからデータフローグラフを作成することと、を含み、前記データフローグラフは、前記クエリプランが表す少なくとも１つの操作を表している少なくとも１つのノードを含み、かつ、前記クエリプランに関連付けられた少なくとも１つのデータフローを表している少なくとも１つのリンクを含む。
【００２５】
一態様によれば、概して、データ管理システムによる使用のためのデータベースクエリを用意するコンピュータプログラムを記憶するコンピュータ可読媒体は、コンピュータに、データベースクエリを受信させ、データ記憶から、データ要素が投入されたデータベーステーブルに関する情報を受信させ、前記データベーステーブルを反映したフォーマットされたデータ編成を含み前記データベーステーブルの前記データ要素を含まない、前記データベーステーブルの構造表現を作成させ、前記構造表現及び前記データベースクエリを、前記データベーステーブルの前記データベースクエリ実行のための操作を表すクエリプランを作成できるプランジェネレータに、提供させるための命令を含む。
【００２６】
一態様によれば、概して、データベースクエリを表すデータフローグラフを生成するコンピュータプログラムを記憶するコンピュータ可読媒体は、コンピュータに、プランジェネレータから、データベーステーブルのデータベースクエリを実行する操作を表すクエリプランを受信させ、前記クエリプランからデータフローグラフを作成させるための命令を含み、前記データフローグラフは、前記クエリプランが表す少なくとも１つの操作を表している少なくとも１つのノードを含み、かつ、前記クエリプランに関連付けられた少なくとも１つのデータフローを表している少なくとも１つのリンクを含むことを特徴とする。
【図面の簡単な説明】
【００２７】
【図１】図１は、データフローグラフのブロック図である。
【図２】図２は、データベースクエリ及びデータフローグラフを示す図である。
【図３】図３は、データベースシステム及び関連するコンポーネントの概要を示す図である。
【図４】図４は、データフローグラフの実行を示す図である。
【図５】図５は、データベーステーブル及びデータベーステーブルの構造表現を示す図である。
【図６】図６は、実行可能な機能をそれぞれ含む、データベースクエリ及びデータフローグラフを示す図である。
【図７】図７は、データベースシステムの操作を示すフローチャートである。
【図８】図８は、データベースシステムの操作を示すフローチャートである。
【発明を実施するための形態】
【００２８】
１．データベース、クエリ、グラフ
データ管理システムは、１つ又は複数のデータソースに記憶されたデータを取り扱う。このようなデータソースは、データベーステーブルなどの１つ又は複数の形態をとることができ、これらの形態は、行及び列といったデータ構造に編成されたデータの集まりであり得る。ある構成では、各行がデータの記録を表し、各列が各行内のフィールドを表している。
【００２９】
データベースに含まれる情報は、データベースクエリを使用して、アクセスされ、処理（例えば、修正）され得る。データベースクエリとは、データベースの内容の部分集合と、その部分集合のデータに対してとる処置について記述した命令の集合である。例えば、幾つかのデータベースシステムは、構造化照会言語（ＳＱＬ）のような専用のデータベースクエリ言語で記述されたデータベースクエリを実行する。これらのデータベースシステムでは、ＳＱＬクエリが、データベースの内容を操作するための主要な道具となる。
【００３０】
幾つかの実装では、データベースクエリ及び他の計算が、グラフ表示上、データベース管理システムに関連付けられている。例えば、データは、データフローとして呼ばれる、操作の集まりを通して、表現され得る。ある構成において、データフローは、グラフの各頂点に関連付けられた計算の成分を持つ、有向グラフによって提供され、コンポーネント間のデータフローはグラフのリンク（円弧、接線）に対応している。グラフは、モジュールエンティティであり、他のモジュールグラフに接続され又は組み合わされ得る。各グラフは、１つ又は複数の他のグラフで構成され、特定のグラフはさらに大きなグラフのコンポーネントであり得る。グラフィカルな開発環境（ＧＤＥ）は、実行可能なグラフを指定してグラフコンポーネントのパラメータを定義するためのユーザインタフェースを提供する。このようなグラフに基づく計算を実施するシステムが、米国特許第５９６６０７２号の「ＥＸＥＣＵＴＩＮＧ  ＣＯＭＰＵＴＡＴＩＯＮＳ  ＥＸＰＲＥＳＳＥＤ  ＡＳ  ＧＲＡＰＨＳ（グラフとして表された計算の実行）」に記載されており、その全体を参照により本明細書に援用する。
【００３１】
図１を参照すると、データフローグラフ１０１の一例は、データフローグラフ１０１の実行可能なコンポーネント１０４ａ〜１０４ｊによって処理されるべきデータの集まりを提供する入力コンポーネント１０２を含む。ある例では、入力コンポーネント１０２は、データベースシステムに関連付けられたデータレコード又はトランザクション処理システムに関連付けられたトランザクションを備え得るデータソースである。このデータレコードは、例えば、データベーステーブルなどの様々な形式で記憶され得る。各実行可能コンポーネント１０４ａ〜１０４ｊは、データフローグラフ１０１全体で定義される計算の一部に関連付けられている。ワーク要素（例えば、データの集まり又はデータベーステーブルからの個々のデータレコード）は、あるコンポーネントの１つ又は複数の入力ポートに入り、出力ワーク要素（場合によっては、入力ワーク要素又は処理済みの入力ワーク要素）は、典型的には、コンポーネントの１つ又は複数の出力ポートから出る。データフローグラフ１０１において、コンポーネント１０４ｅ、１０４ｇ、及び１０４ｊからの出力ワーク要素は、出力データコンポーネント１０２ａ〜１０２ｃに記憶される。
【００３２】
幾つかのグラフベースデータベースシステムは、データベースクエリを処理するために使用され得る。例えば、あるデータベースクエリは、例えば、データフローにおける処理のために、データベーステーブルの内容のうち識別された部分集合を抽出するように、１つ又は複数のデータベーステーブルに対して適用され得る。幾つかの実装では、グラフベースデータベースシステムは、データフローグラフの形式でで、データベースクエリを受け取り実行する。他のデータベースシステムは、他のタイプのデータベースクエリを使用してもよい。
【００３３】
幾つかのケースでは、１つ又は複数のデータベーステーブルは、ＳＱＬを使用する別の種類のデータベースシステムからグラフベースデータベースシステムへ移動され得る。他方のデータベースシステムは、既に記述され、グラフベースデータベースシステムと互換性を持たないＳＱＬクエリを、多数有していてもよい。幾つかの実装では、これらのＳＱＬクエリは、グラフベースデータベースシステムと互換性のあるデータベースクエリに変換され得る。
【００３４】
図２は、ＳＱＬで記述されたデータベースクエリ２００の一例を示している。例示されたデータベースクエリ２００は、グラフベースデータベース管理システムによって管理されるデータベーステーブル２０２及び２０４に対して動作することを意図して作られている。このグラフベースデータベース管理システムは、データベーステーブル２０２及び２０４のデータを認識し得るが、これは、各データベーステーブルが、グラフベースデータベース管理システム固有のフォーマットで記述されているためである。このデータベーステーブル２０２及び２０４は、他のデータベーステーブル、例えば、ＳＱＬクエリを認識しデータフローグラフを使用しないデータベースシステムを起源にしたデータベーステーブル、から得られたデータを含んでいてもよい。
【００３５】
しかしながら、グラフベースデータベース管理システムは、ＳＱＬクエリを処理する内蔵型の機能性を有せず、従って、グラフベースデータベースクエリは、ＳＱＬデータベースクエリ２００をエミュレートするようにs作成され得る。グラフベースデータベースクエリは、グラフベースデータベースシステムにより認識可能である。例えば、データベースクエリ２００は、ＳＱＬクエリからデータフローグラフ２０８に変換され得る（２０６）。データフローグラフ２０８は、データベーステーブル２０２及び２０４を入力として受け付けることにより、データベーステーブル２０２及び２０４に対して動作し、データベースクエリ２００の実行結果を出力として提供する。
【００３６】
２．クエリプラン
幾つかのデータベースシステムは、クエリプラン（エクスプレインプランと呼ばれることもある）に基づくＳＱＬクエリのようなデータベースクエリを遂行する。クエリプランとは、データベースクエリが実行される場合に行われるデータベース操作を記述したものである。クエリプランは、これらデータベース操作の他の構成や異なる操作の集合が同じ結果を成し遂げる場合であったら、データベース操作のある一つの可能な構成を記述したものでも良い。
【００３７】
このようなクエリプランを提供するために、データベースシステムは、クエリプランジェネレータ（クエリプランナーと呼ばれることもある）を含み得る。例えば、クエリプランジェネレータは、データベースクエリの実行中に、クエリプランを作成（produce）し得るし、クエリプランジェネレータは、クエリの実行に関する決定が下される前に、クエリプランを生成（generate）し得る。
【００３８】
幾つかの構成では、データベース操作は、等価な出力がなお提供されている間に、様々な順番で実行され得る。そのため、クエリプランジェネレータは、最適なクエリプランを確定する機能性を有していてもよい。例えば、最適なクエリプランとして、最小の時間でデータベースクエリを実行したり、データ記憶空間のような最小量のデータベースリソースを使用し、又は、データベースシステムによって識別された制約内で、データベースクエリを実現するための、データベース操作の構成を記述したクエリプランが考えられる。最適なクエリプランを確定するクエリプランジェネレータの機能性は、想定可能な多数のクエリプランを採点したりランク付けする機能性を含んで良く、さらに、想定可能なクエリプランを、最適あるいは効率的な構成に再編成する機能性が含まれていても良い。
【００３９】
単一のデータベースクエリは、複数回実行され、各実行は、最適な固有のクエリプランを有し得る。例えば、あるデータベーステーブル内のデータは、あるデータベースクエリの二つの実行の間で変化し得る。本例では、データベースクエリの第１の実行用に生成されたクエリプランに記述された操作は、データベースクエリの第１の実行中よりも、第２の実行中の方が、幾分、実行時間を必要とする。この場合、操作の別の構成は、データベースクエリの第２の実行に一層適したものかも知れない。例えば、同じ操作から成る異なる構成や、異なる操作から成るある構成にすることが挙げられる。データベースクエリの第２の実行用に最適化されたクエリプランは、データベーステーブルの一時的な状態を考慮しながら、その実行のために生成され得る。
【００４０】
３．システム概要
クエリプランジェネレータは、ＳＱＬクエリのような別の種類のデータベースクエリをエミュレートする、グラフベースデータベースクエリを作成する際に使用され得る。図３は、データベース管理コンピュータシステム３０４上で実行するためのデータベースクエリ３０２を用意するデータベースクエリ管理システム３００を示している。図示されているデータベース管理コンピュータシステム３０４は、データフローグラフとして実装されたデータベース操作を取り扱うグラフ実行エンジン３０６を含む。データベースクエリ管理システム３００はまた、データフローグラフにより行われるべき操作の記述からデータフローグラフ３１２を構築できるグラフ生成エンジン３１０を有するグラフ生成コンピュータシステム３０８を含む。例えば、操作の記述は、クエリプラン３１４であり得る。
【００４１】
データベースクエリ管理システム３００はまた、クエリプランジェネレータ３１８を実行するクエリプランニングコンピュータシステム３１６を含む。クエリプランジェネレータ３１８は、データベースクエリからクエリプランを作成する任意のクエリプランジェネレータであってもよく、データフローグラフやグラフ生成に関連した任意の機能を有するように設計される必要はない。さらに、データベースクエリ管理システム３００はまた、データストレージ（例えば、ハードドライブ、光ディスク等）にデータベース３２２を有し、さらに単一又は複数のデータベーステーブル３２４ａ、３２４ｂ、３２４ｃを含む、データベースコンピュータシステム３２０も含む。
【００４２】
データベース管理コンピュータシステム３０４、グラフ生成コンピュータシステム３０８、クエリプランニングコンピュータシステム３１６、及び、データベースコンピュータシステム３２０に対して、別々のコンピュータシステムが示されているが、これらのコンピュータシステムのうち２台以上のコンピュータシステムは、同一のコンピュータシステムであっても良く、あるいは、同一のコンピュータシステムのコンポーネントであっても良い。これらのコンピュータシステムは、いずれも、各実行可能コンポーネントを実行するための少なくとも１つのプロセッサと少なくとも１つのデータ記憶システムを有している。各コンピュータシステムは、ローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、インターネットのようなネットワーク、又は、別の種類のコンピュータネットワーク等のコンピュータネットワークを用いて、相互に接続することができる。
【００４３】
１つ又は複数のデータベースクエリ３０２からのデータフローグラフ３１２の作成を示すために、データフローグラフの実行前に、データベースクエリ及びデータベーステーブル３２６は、グラフ生成コンピュータシステム３０８によって受信及び処理される。グラフ生成コンピュータシステム３０８は、データベースコンピュータシステム３２０から、データベーステーブル３２６を受信する。
【００４４】
データベーステーブル３２６は、任意の形態を幾つも取り得る。例えば、データベーステーブル３２６は、リレーショナルデータベーステーブル、部分データベーステーブル、フラットファイル、別の種類のデータファイル、又は、データファイルの集まりであるかも知れない。幾つかの例では、データベーステーブル３２６は、例えば、データベーステーブルに関するメタデータなどのデータベーステーブルに関する情報や、データベーステーブルの記述の形で受信され得る。
【００４５】
幾つかの実装では、データベーステーブル３２６は、データベースコンピュータシステム３２０に関連付けられ、さもなければ、グラフ生成コンピュータシステム３０８へアクセス可能なデータレジストリによって識別され得る。データレジストリは、ルックアップファイルカタログの形式でもよく、その場合、例えば、データベーステーブル３２６に関連付けられたデータファイルの場所や、データベーステーブルに関連付けられたプライマリーキー及びインデックス情報を含んでいてもよい。データレジストリはまた、それぞれ異なる種類のデータベーステーブルに対する各データフォーマットの情報を提供し得る。さらに、データレジストリはまた、データフローグラフ３１２がどのようにしてデータベーステーブルにアクセスできるのかという情報を提供し得る。
【００４６】
グラフ生成コンピュータシステム３０８はまた、データベーステーブル３２６に適用されるデータベースクエリ３０２を受信する。例えば、データベースクエリは、ＳＱＬクエリであることも考えられる。データベースクエリ３０２は、任意数の想定されるソースから受信され得る。例えば、データベースクエリ３０２は、ユーザ３３０がデータベースクエリを入力したユーザインタフェース３２８から受信されても良い。幾つかの例では、データベースクエリ３０２は、データ記憶から受信されたり、データベースクエリは、インターネットのようなコンピュータネットワークから受信されたり、あるいは、データベースクエリは、別の予め受信されたデータベースクエリに基づいて生成される。
【００４７】
幾つかの実装では、グラフ生成コンピュータシステム３０８は、（矢印３３２で示すように、）データベーステーブル３２６の情報から作成された、データベーステーブル３２６のあるバージョンを、クエリプランニングコンピュータシステム３１６に提供する。例えば、クエリプランニングコンピュータシステム３１６に提供される上記データベーステーブル３２６のバージョンは、該データベーステーブルよりもサイズが小さくそのため処理を行う計算資源が少なくてすむデータベーステーブルの構造表現３３４であり得る。データベーステーブル３２６の構造表現３３４は、データベーステーブルに関する情報を含んでいるが、データベーステーブルのデータの一部又は全部を含んでいない。例えば、データベーステーブル３２６の構造表現３３４は、データベーステーブルの列、行、又はフィールドのような、データベーステーブルのフォーマットを反映したフォーマットを含み得る。データベーステーブル３２６の構造表現３３４はまた、データベーステーブルの各要素のデータ記憶サイズや、データベーステーブルの各要素のデータ型といった、データに関する情報を含み得る。
【００４８】
グラフ生成コンピュータシステムは、（矢印３３２で示すように）データベースクエリ３０２及びデータベーステーブル３２６の構造表現３３４を、クエリプランニングコンピュータシステム３１６に提供する。クエリプランニングコンピュータシステム３１６は、データベーステーブル３２６上でのデータベースクエリ３０２の実行に最適化されたクエリプランを作成する、クエリプランジェネレータ３１８を実行する。データベーステーブル３２６の構造表現３３４は、データベーステーブル３２６自身によって供給されるような、クエリプランジェネレータ３１８によって使用される同じ情報、例えば、データサイズ、データ型等の、データベーステーブルに含まれるデータに関する情報を供給する。幾つかの実装では、データベーステーブル３２６の構造表現３３４は、データルックアップ及び検索を最適化するために用いられるデータ要素のインデックスを含む。クエリプランジェネレータ３１８は、このインデックスを用いて、インデックス付きのデータベーステーブル３２６からデータ要素を識別し検索する速度を算出することができる。
【００４９】
グラフ生成コンピュータシステム３０８は、クエリプランニングコンピュータシステム３１６からクエリプラン３１４を受信する。クエリプラン３１４は、データベーステーブル３２６上でのデータベースクエリ３０２の実行に使用可能なデータベース操作の構成を記述する。例えば、クエリプラン３１４における操作は、データフローグラフ３１２のノードに対応し得る。クエリプラン３１４はまた、クエリプランにおける操作で用いられるデータ型に関する情報を含み得る。例えば、クエリプランにおける操作は、パラメータを持ち得るし、パラメータのデータ型が、クエリプランに記述され得る。
【００５０】
クエリプラン３１４が作成されると、クエリプラン３１４は、グラフ生成エンジン３１０によるデータフローグラフ３１２の作成のために、グラフ生成コンピュータシステム３０８に提供される。グラフ生成エンジン３１０は、クエリプラン３１４に対応するデータフローグラフ３１２を出力する。幾つかの実装では、データフローグラフ３１２は、クエリプランに記述されている操作を表すノードと、操作間のデータの流れを表すノードリンクとを有している。データフローグラフ３１２は、実行用にデータベースクエリを用意する各インスタンスに対して生成され得るので、グラフ生成エンジン３１０は、データベースクエリを実行するためのリアルタイム要求に迅速に応答するように、データフローグラフを生成することができる。幾つかの実装では、グラフ生成エンジン３１０は、１秒未満で、クエリプランからデータフローグラフを生成することができる。
【００５１】
グラフ生成コンピュータシステム３０８は、（矢印３３６で示すように）グラフ生成エンジン３１６によって生成されたデータフローグラフ３１２を、データベース管理コンピュータシステム３０４に提供する。幾つかの実装では、グラフ生成コンピュータシステム３０８はまた、データベース管理コンピュータシステムによる使用のためのデータベーステーブル３２６を用意するとともに、用意されたデータベーステーブル３３８を提供する。例えば、グラフ生成コンピュータシステム３０８は、データベーステーブル３２６を、グラフ生成コンピュータシステム３０８によって使用されるフォーマットから、データベース管理コンピュータシステム３０４によって使用されるフォーマットに変換するかも知れない。
【００５２】
データフローグラフ３１２がデータベース管理コンピュータシステム３０４に提供されると、実行に向けてデータフローグラフ３１２が用意される。図４に示すように、データベース管理コンピュータシステム３０４は、データフローグラフ３１２の操作を実行し、データベースクエリの結果４０２を作成するために、データベーステーブル３２６を使用し得る。データベース管理コンピュータシステム３０４は、データベーステーブル３２６を、データフローグラフ３１２の１つ又は複数のノード４０４ａ、４０４ｂ、４０４ｃに提供し、グラフ実行エンジン３０６を用いてデータフローグラフを実行する。グラフ実行エンジン３０６は、基本的なデータベースクエリを実行するためのデータベース操作に対応する、データフローグラフ３１２のノード４０４ａ、４０４ｂ、４０４ｃによって表される操作を行う。さらに、各ノード間のリンク４０８ａ、４０８ｂ、４０８ｃは、データベーステーブルの処理に伴う各データベース操作間のデータの流れを表す。データフローグラフ３１２は、データベースクエリの結果４０２を出力する。
【００５３】
４．構造表現
図５は、データベーステーブル５００及びデータベーステーブルの構造表現５０２（データベーステーブルからのデータを全く含まない）の一例を示している。データベーステーブル５００は、類似した又は異なるタイプのデータを含み得る列５０４ａ〜５０４ｉを有している。データベーステーブル５００はまた、それぞれ、各列に対応するフィールドを含む行５０８ａ〜５０８ｅも有している。行の各フィールドは、対応する列のデータ型（例えば、文字列、整数、浮動小数点数等）のデータ要素５１０ａ、５１０ｂ、５１０ｃを含んでいる。さらに、各行５０８ａ〜５０８ｅは、固有のデータ記憶サイズ５１２ａ〜５１２ｅを有する。例えば、データ記憶サイズ５１２ａ〜５１２ｅは、行がメモリのようなデータストレージに存在している場合に、その行のデータ要素によって使用される記憶領域量であっても良い。
【００５４】
（図３に示すように、グラフ生成コンピュータシステム３０８によって作成される）データベーステーブル５００の構造表現５０２は、元の列５０４ａ〜５０４ｉと同じデータ型を含みつつ、データベーステーブルと同一の列５１４ａ〜５１４ｉを有している。データベーステーブル５００の構造表現５０２はまた、データベーステーブルの行５０８ａ〜５０８ｅに対応する行５１８ａ〜５１８を有している。しかしながら、行５１８ａ〜５１８ｅは、データベーステーブル５００からのデータ要素５１０ａ、５１０ｂ、５１０ｃを含んでいない。各行５１８ａ〜５１８ｅは、データ記憶サイズ値５２０ａ〜５２０ｅに関連付けられている。データベーステーブル５００のある行のデータ記憶サイズ５１２ａ〜５１２ｅは、個々のデータ要素５１０ａ、５１０ｂ、５１０ｃのデータ記憶サイズから算出することができる一方で、各行５１８ａ〜５１８ｅのデータ記憶サイズ値５２０ａ〜５２０ｅ自体は、データベーステーブルの構造表現５０２の各行と供に記憶されるデータ要素であり得る。データベーステーブル５００の構造表現５０２の総データ記憶サイズは、データベーステーブルの総データ記憶サイズに占める割合がごくわずかになることもあるが、それは、データベーステーブルの構造表現のフィールド５２２ａ、５２２ｂ、５２２ｃには、データベーステーブルのフィールドからのデータ要素５１０ａ、５１０ｂ、５１０ｃがないからである。幾つかの実装では、データベーステーブル５００の構造表現５０２が、データベーステーブルからのデータ要素の一部を保持することもあり、例えば、データベーステーブルの構造表現は、キー値５２４及び５２６に対応するデータ要素や、データベーステーブルの構造、編成、又はフォーマットに使用される他のデータ要素を保持し得る。幾つかの実装では、データベーステーブル５００の構造表現５０２は、データ検索に用いられる情報を提供するインデックス又は別のデータ構造を含み得る。幾つかの実装では、データベーステーブル５００の構造表現５０２は、データベーステーブルに含まれるデータに関する他の統計を含み得る。
【００５５】
５．機能呼び出し
図６に示すように、幾つかの実装では、カスタムグラフ機能６０２は、データベースクエリ６０４に埋め込まれうる。例えば、カスタムグラフ機能６０２は、データフローグラフの実行中にデータフローグラフ６０６を行える操作を表すかも知れない。カスタムグラフ機能６０２は、データベースクエリ６０４のコンテキストの中で、任意の機能性を持たないかも知れないし、生成されたデータフローグラフ６０６に渡されるようにデータベースクエリに配置される。例えば、カスタムグラフ機能６０２は、データフローグラフへの変換のためであるが既存のデータベースクエリの一部を入れ替え又は増補（augment）のために用意するように、データベースクエリ６０４に追加されるかも知れない。さらに、クエリプランジェネレータは、カスタムグラフ機能６０２の機能性に関する情報を有しないかも知れない。カスタムグラフ機能６０２は、データベースクエリ６０４の言語において、等価機能を持たない機能であり得る。幾つかの実装では、クエリプランジェネレータは、カスタムグラフ機能６０２に対する入力データ型又は出力データ型を認識する。データフローグラフ６０６の生成６０８される場合、カスタムグラフ機能６０２は、データフローグラフのノード６１０として振る舞い得る。
【００５６】
幾つかの実装では、カスタムグラフ機能６０２は、特別な又はカスタマイズされたフォーマットのデータにアクセスするために用いられる機能であっても良く、また、カスタムグラフ機能は、正規表現やパターンマッチング式を実行するために用いられる機能であってもよく、又は、カスタムグラフ機能は、ユーザ、例えば、データベース管理コンピュータシステムのユーザによって実施される機能であっても良い。
【００５７】
６．操作の流れ
図７は、（図３に示す）グラフ生成コンピュータシステム３０８の操作の例を示したフローチャート７００である。ステップ７０２において、グラフ生成コンピュータシステムは、例えば、ユーザインタフェースから又はデータ記憶からデータベースクエリを、受信する。ステップ７０４では、グラフ生成コンピュータシステムは、データベースシステムのデータベースから、データベーステーブルに関する情報を受信する。例えば、グラフ生成コンピュータシステムは、データ記憶からデータベーステーブル自体を受信しても良く、グラフ生成コンピュータシステムは、データベーステーブルに関するメタデータを受信しても良く、又は、グラフ生成コンピュータシステムは、ユーザインタフェースのユーザによって入力されたようなデータベーステーブルに関する情報を受信しても良い。ステップ７０６では、グラフ生成コンピュータシステムは、データベーステーブルを反映したフォーマット済みデータ編成を含みデータベーステーブルのデータがない、データベーステーブルの構造表現を生成する。ステップ７０８では、グラフ生成コンピュータシステムは、データベーステーブルの構造表現及びデータベースクエリを、クエリプランジェネレータによる使用のためにクエリプランニングコンピュータシステムに提供する。ステップ７１０では、グラフ生成コンピュータシステムは、クエリプランジェネレータによって作成されたクエリプランを、クエリプランニングコンピュータシステムから受信する。ステップ７１２では、グラフ生成コンピュータシステムは、クエリプランに記述されている操作に基づくクエリプランからデータフローグラフを生成するために、グラフ生成エンジンを使用する。ステップ７１４では、グラフ生成コンピュータシステムは、（例えば、データ管理システムのグラフ実行エンジンによる）実行のためにデータフローグラフを提供する。
【００５８】
図８は、（図３に示す）グラフ生成コンピュータシステム３０８の操作の例を示したフローチャート８００である。ステップ８０２において、グラフ生成コンピュータシステムは、データベーステーブルに関する情報を受信する。例えば、グラフ生成コンピュータシステムは、ユーザインタフェースから又はデータ記憶から、予め受信したデータベーステーブルを受信しても良く、データベーステーブルを表すメタデータを受信しても良い。ステップ８０４では、グラフ生成コンピュータシステムは、受信したデータベーステーブルの同じ列及び行のフォーマットを有する新規のデータベーステーブルを生成する。ステップ８０６では、グラフ生成コンピュータシステムは、データベーステーブルの各列からデータ型を抽出することにより、受信したデータベーステーブルに関連付けられたデータ型を識別する。ステップ８０８では、グラフ生成コンピュータシステムは、識別されたデータ型を、新規データベーステーブルの列に割り当てる。ステップ８１０では、グラフ生成コンピュータシステムは、受信したデータベーステーブルに関するデータ統計、例えば、受信したデータベーステーブルの各行のデータ要素のデータ記憶サイズを算出する。ステップ８１２では、グラフ生成コンピュータシステムは、算出されたデータ統計を、受信したデータベーステーブルの構造表現となる新規のデータベーステーブルに割り当てる。
【００５９】
上記のデータベースクエリ管理法は、コンピュータ上で実行されるソフトウェアを使用して実現され得る。具体的には、ソフトウェアは、１つ又は複数のプログラムされた又はプログラム可能なコンピュータシステム（分散型、クライアント／サーバー型、グリッド型など、様々なアーキテクチャに基づくもの）上で実行される１つ又は複数のコンピュータプログラムにおいて手順を形成する。上記コンピュータシステムのそれぞれは、少なくとも１つのプロセッサ、少なくとも１つのデータ記憶システム（揮発性及び不揮発性メモリ、及び／又は、記憶素子を含む）、少なくとも１つの入力装置又はポート、並びに、少なくとも１つの出力装置又はポートを含んでいる。上記ソフトウェアは、例えば、計算グラフの設計と構成とに関連する他のサービスを提供する、より大規模なプログラムの１つ又は複数のモジュールを形成していても良い。グラフのノード及び要素は、コンピュータ可読媒体に記憶されたデータ構造として、又は、データレジストリに記憶されたデータモデルに適合する他の編成データとして、実装することができる。
【００６０】
ソフトウェアは、汎用又は専用プログラム可能コンピュータによって読み取り可能なＣＤ−ＲＯＭなどの記憶媒体で提供されても良いし、又は、ソフトウェアが実行されるコンピュータに対してネットワークの通信媒体を経由して配布されても良い（伝播信号にコード化される）。その機能のすべては、専用コンピュータ上か、又はコプロセッサのように、専用ハードウェアを使用して実行される。ソフトウェアは、ソフトウェアによって指定される計算の異なる部分が異なるコンピュータによって実施されるような分散された方法で実装してもよい。記憶媒体又は装置をコンピュータシステムが読み込んで、本明細書に記載された手順を実行するとき、コンピュータを構成し操作するために、そのような各コンピュータプログラムは、好ましくは、汎用又は専用プログラム可能コンピュータで読取り可能な記憶媒体又は装置に記憶又はダウンロードされる（例えば、ソリッドステートメモリもしくは媒体、又は磁気もしくは光媒体）。本発明のシステムは、コンピュータプログラムによって構成され、コンピュータ読取り可能記憶媒体として実装するものと考えてよい。そのように構成された記憶媒体によって、コンピュータシステムを特定かつ所定の方法で動作させて本明細書に記載する機能を実現する。
【００６１】
本発明の多くの実施の形態について説明した。しかしながら、本発明の趣旨と範囲から逸脱することなくさまざまな改変を行えることは言うまでもない。例えば、上記ステップの幾つかは、独立した順序であってもよく、したがって説明とは異なる順序で実施することができる。
【００６２】
上記説明は、付帯する特許請求の範囲によって規定される本発明の範囲を示すことを意図しており、その範囲を制限するものではない。例えば、上記の多くの機能ステップは、全体の処理に実質的に影響を及ぼすことなく、異なる順序で実施してもよい。その他の実施の形態は、後述する特許請求の範囲内にある。
【図２】
0006000415.tif 000002
【図３】
0006000415.tif 000003
【図５】
0006000415.tif 000004
【図７】
0006000415.tif 000005
【図８】
0006000415.tif 000006
【図１】
0006000415.tif 000007
【図４】
0006000415.tif 000008
【図６】
0006000415.tif 000009