(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6000415
(24)【登録日】2016年9月9日
(45)【発行日】2016年9月28日
(54)【発明の名称】データクエリの管理
(51)【国際特許分類】
G06F 17/30 20060101AFI20160915BHJP
【FI】
G06F17/30 330A
G06F17/30 340D
【請求項の数】56
【外国語出願】
【全頁数】21
(21)【出願番号】特願2015-137280(P2015-137280)
(22)【出願日】2015年7月8日
(62)【分割の表示】特願2012-549105(P2012-549105)の分割
【原出願日】2011年1月14日
(65)【公開番号】特開2015-212968(P2015-212968A)
(43)【公開日】2015年11月26日
【審査請求日】2015年7月9日
(31)【優先権主張番号】12/688,316
(32)【優先日】2010年1月15日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】509123208
【氏名又は名称】アビニシオ テクノロジー エルエルシー
(74)【代理人】
【識別番号】100079108
【弁理士】
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【弁理士】
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【弁理士】
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【弁理士】
【氏名又は名称】内藤 和彦
(72)【発明者】
【氏名】シェヒター,イアン
(72)【発明者】
【氏名】アリン,グレン,ジョン
(72)【発明者】
【氏名】ホーリー,ジョセフ,スケフィントン,ザ サード
【審査官】
田中 秀樹
(56)【参考文献】
【文献】
特開2001−273327(JP,A)
【文献】
米国特許第05956704(US,A)
【文献】
特表2003−505766(JP,A)
【文献】
米国特許出願公開第2002/0120618(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/30
G06F 12/00
(57)【特許請求の範囲】
【請求項1】
コンピュータによって実施される、データソースからのデータに対する動作方法であって、前記データは前記データソースの有形かつ非一過性のコンピュータ可読媒体に格納され、前記動作はリレーショナルデータベースに適用可能なクエリ言語に従って表現されたクエリに基づくものであり、前記動作はリレーショナルデータベースを管理するシステム以外の実行システム上で前記クエリを実行することを含み、前記動作することは、
クエリを受信することと、
前記クエリに基づいてデータソースを識別することと、
リレーショナルデータベースを管理するシステム以外の実行システムを識別することと、
前記クエリに基づいてクエリプランナーに対するリクエストを生成することと、
前記リクエストを前記クエリプランナーに提供することと、
前記リクエストに基づいて前記クエリプランナーによって生成されたクエリプランを受信することであって、前記クエリプランは、リレーショナルデータベースを管理するシステムによって行われるべき1つまたは複数のステップの記述を含むことと、
データフローグラフをインスタンス化するデータ構造を生成することであって、前記データフローグラフは、
実行すべき少なくとも1つの操作を表す第1のノードであって、
前記第1のノードは、実行可能なプログラムコードを呼び出して前記操作を行うために実行システムが使用することのできる情報と関連付けられ、
前記第1のノードは、データを前記プログラムコードに対して使用可能とするために実行システムが使用することのできる情報と関連付けられ、かつ
前記操作は、前記クエリプランによって記述されたステップに基づいて選択される、第1のノードと、
前記第1のノードの操作の出力データを表す少なくとも1つのリンクであって、前記第1のノードの操作の前記出力データは、前記データフローグラフの第2のノードの操作に対する入力データとして提供される、少なくとも1つのリンクと、を含むことと、
前記データソースからデータを受信することと、
前記識別された実行システム上で、前記データフローグラフに基づいてプログラムコードを実行することと、を含む、
方法。
【請求項2】
前記データフローグラフは、前記クエリプランによって記述されたいずれかのステップに基づいて選択された操作以外の実行すべき操作を表す第3のノードを含む、請求項1に記載の方法。
【請求項3】
前記データフローグラフに基づいて前記プログラムコードを実行することは、前記データフローグラフのノードと第2のデータフローグラフのノードとの間のリンクをインスタンス化することを含み、前記第2のデータフローグラフは、前記クエリプランによって記述されたいずれかのステップに基づいて選択された操作以外の実行すべき操作を表す少なくとも1つのノードを含む、請求項1に記載の方法。
【請求項4】
前記データソースは、リレーショナルデータベーステーブルを含む、請求項1に記載の方法。
【請求項5】
前記データソースは、リレーショナルデータベーステーブル以外のデータ部分を含む、請求項1に記載の方法。
【請求項6】
前記データソースは、フラットファイルを含む、請求項1に記載の方法。
【請求項7】
前記クエリは、SQLクエリを含む、請求項1に記載の方法。
【請求項8】
前記データフローグラフに基づく前記プログラムコードから、前記クエリの結果を受信することを含む、請求項1に記載の方法。
【請求項9】
前記クエリプランのジェネレータは、クエリオプティマイザを含む、請求項1に記載の方法。
【請求項10】
前記クエリプランは、前記クエリにおけるパラメータのデータ型を含む、請求項1に記載の方法。
【請求項11】
前記クエリは、実行可能な機能への参照を含み、前記データフローグラフは、前記実行可能な機能を表すノードを含む、請求項1に記載の方法。
【請求項12】
前記クエリに基づいてクエリプランナーに対するリクエストを生成することは、
前記データソースを反映したフォーマットされたデータ編成を含み、かつ前記データソースのデータを含まない、前記データソースの構造表現を作成することと、
前記クエリプランナーに対する前記リクエストに、前記構造表現を含めることと、を含む、請求項1に記載の方法。
【請求項13】
前記データ構造は、前記識別された実行システムによって生成される、請求項1に記載の方法。
【請求項14】
前記データ構造は、前記識別された実行システム以外のシステムによって生成される、請求項1に記載の方法。
【請求項15】
1つまたは複数のプロセッサを含む、データソースからのデータに対する動作システムであって、前記データは前記データソースの有形かつ非一過性のコンピュータ可読媒体に格納され、前記動作はリレーショナルデータベースに適用可能なクエリ言語に従って表現されたクエリに基づくものであり、前記動作はリレーショナルデータベースを管理するシステム以外の実行システム上で前記クエリを実行することを含み、前記システムは、
コンピュータシステムであって、
クエリを受信することと、
前記クエリに基づいてデータソースを識別することと、
リレーショナルデータベースを管理するシステム以外の実行システムを識別することと、
前記クエリに基づいてクエリプランナーに対するリクエストを生成することと、
前記リクエストを前記クエリプランナーに提供することと、
前記リクエストに基づいて前記クエリプランナーによって生成されたクエリプランを受信することであって、前記クエリプランは、リレーショナルデータベースを管理するシステムによって行われるべき1つまたは複数のステップの記述を含むことと、
データフローグラフをインスタンス化するデータ構造を生成することであって、前記データフローグラフは、
実行すべき少なくとも1つの操作を表す第1のノードであって、
前記第1のノードは、実行可能なプログラムコードを呼び出して前記操作を行うために実行システムが使用することのできる情報と関連付けられ、
前記第1のノードは、データを前記プログラムコードに対して使用可能とするために実行システムが使用することのできる情報と関連付けられ、かつ
前記操作は、前記クエリプランによって記述されたステップに基づいて選択される、第1のノードと、
前記第1のノードの操作の出力データを表す少なくとも1つのリンクであって、前記第1のノードの操作の出力データは、前記データフローグラフの第2のノードの操作に対する入力データとして提供される、少なくとも1つのリンクと、を含むことと、
前記データソースからデータを受信することと、
前記識別された実行システムに対し、前記データフローグラフに基づく前記プログラムコードを提供することと、
を行うように構成されたコンピュータシステムと、
前記プログラムコードを受信し、かつ前記プログラムコードを実行するように構成された実行システムと、を含む、
システム。
【請求項16】
データソースからのデータに対する動作をコンピュータに行わせるための命令を含むコンピュータプログラムを格納したコンピュータ可読記憶デバイスであって、前記データは前記データソースの有形かつ非一過性のコンピュータ可読媒体に格納され、前記動作はリレーショナルデータベースに適用可能なクエリ言語に従って表現されたクエリに基づくものであり、前記動作はリレーショナルデータベースを管理するシステム以外の実行システム上で前記クエリを実行することを含み、前記動作することは、
クエリを受信することと、
前記クエリに基づいてデータソースを識別することと、
リレーショナルデータベースを管理するシステム以外の実行システムを識別することと、
前記クエリに基づいてクエリプランナーに対するリクエストを生成することと、
前記リクエストを前記クエリプランナーに提供することと、
前記リクエストに基づいて前記クエリプランナーによって生成されたクエリプランを受信することであって、前記クエリプランは、リレーショナルデータベースを管理するシステムによって行われるべき1つまたは複数のステップの記述を含むことと、
データフローグラフをインスタンス化するデータ構造を生成することであって、前記データフローグラフは、
実行すべき少なくとも1つの操作を表す第1のノードであって、
前記第1のノードは、実行可能なプログラムコードを呼び出して前記操作を行うために実行システムが使用することのできる情報と関連付けられ、
前記第1のノードは、データを前記プログラムコードに対して使用可能とするために実行システムが使用することのできる情報と関連付けられ、かつ
前記操作は、前記クエリプランによって記述されたステップに基づいて選択される、第1のノードと、
前記第1のノードの操作の出力データを表す少なくとも1つのリンクであって、前記第1のノードの操作の出力データは、前記データフローグラフの第2のノードの操作に対する入力データとして提供される、少なくとも1つのリンクと、を含むことと、
前記データソースからデータを受信することと、
前記識別された実行システムに対し、前記データフローグラフに基づく前記プログラムコードを提供することと、を含む、
コンピュータ可読記憶デバイス。
【請求項17】
1つまたは複数のプロセッサを含む、データソースからのデータに対する動作システムであって、前記データは前記データソースの有形かつ非一過性のコンピュータ可読媒体に格納され、前記動作はリレーショナルデータベースに適用可能なクエリ言語に従って表現されたクエリに基づくものであり、前記動作はリレーショナルデータベースを管理するシステム以外の実行システム上で前記クエリを実行することを含み、前記システムは、
クエリを受信することと、
前記クエリに基づいてデータソースを識別することと、
リレーショナルデータベースを管理するシステム以外の実行システムを識別することと、
前記クエリに基づいてクエリプランナーに対するリクエストを生成することと、
前記リクエストを前記クエリプランナーに提供することと、
前記リクエストに基づいて前記クエリプランナーによって生成されたクエリプランを受信することであって、前記クエリプランは、リレーショナルデータベースを管理するシステムによって行われるべき1つまたは複数のステップの記述を含むことと、
データフローグラフをインスタンス化するデータ構造を生成することであって、前記データフローグラフは、
実行すべき少なくとも1つの操作を表す第1のノードであって、
前記第1のノードは、実行可能なプログラムコードを呼び出して前記操作を行うために実行システムが使用することのできる情報と関連付けられ、
前記第1のノードは、データを前記プログラムコードに対して使用可能とするために実行システムが使用することのできる情報と関連付けられ、かつ
前記操作は、前記クエリプランによって記述されたステップに基づいて選択される、第1のノードと、
前記第1のノードの操作の出力データを表す少なくとも1つのリンクであって、前記第1のノードの操作の出力データは、前記データフローグラフの第2のノードの操作に対する入力データとして提供される、少なくとも1つのリンクと、を含むことと、
前記データソースからデータを受信することと、
前記識別された実行システムに対し、前記データフローグラフに基づく前記プログラムコードを提供することと、
を行う手段と、
前記プログラムコードを受信し、かつ前記プログラムコードを実行する手段と、を含む、
システム。
【請求項18】
前記データフローグラフは、前記クエリプランによって記述されたいずれかのステップに基づいて選択された操作以外の実行すべき操作を表す第3のノードを含む、請求項15に記載のシステム。
【請求項19】
前記データフローグラフに基づいて前記プログラムコードを実行することは、前記データフローグラフのノードと第2のデータフローグラフのノードとの間のリンクをインスタンス化することを含み、前記第2のデータフローグラフは、前記クエリプランによって記述されたいずれかのステップに基づいて選択された操作以外の実行すべき操作を表す少なくとも1つのノードを含む、請求項15に記載のシステム。
【請求項20】
前記データソースは、リレーショナルデータベーステーブルを含む、請求項15に記載のシステム。
【請求項21】
前記データソースは、リレーショナルデータベーステーブル以外のデータ部分を含む、請求項15に記載のシステム。
【請求項22】
前記データソースは、フラットファイルを含む、請求項15に記載のシステム。
【請求項23】
前記クエリは、SQLクエリを含む、請求項15に記載のシステム。
【請求項24】
前記コンピュータシステムは、前記データフローグラフに基づく前記プログラムコードから、前記クエリの結果を受信するように構成される、請求項15に記載のシステム。
【請求項25】
前記クエリプランのジェネレータは、クエリオプティマイザを含む、請求項15に記載のシステム。
【請求項26】
前記クエリプランは、前記クエリにおけるパラメータのデータ型を含む、請求項15に記載のシステム。
【請求項27】
前記クエリは、実行可能な機能への参照を含み、前記データフローグラフは、前記実行可能な機能を表すノードを含む、請求項15に記載のシステム。
【請求項28】
前記クエリに基づいてクエリプランナーに対するリクエストを生成することは、
前記データソースを反映したフォーマットされたデータ編成を含み、かつ前記データソースのデータを含まない、前記データソースの構造表現を作成することと、
前記クエリプランナーに対する前記リクエストに、前記構造表現を含めることと、を含む、請求項15に記載のシステム。
【請求項29】
前記データ構造は、前記識別された実行システムによって生成される、請求項15に記載のシステム。
【請求項30】
前記データ構造は、前記識別された実行システム以外のシステムによって生成される、請求項15に記載のシステム。
【請求項31】
前記データフローグラフは、前記クエリプランによって記述されたいずれかのステップに基づいて選択された操作以外の実行すべき操作を表す第3のノードを含む、請求項16に記載のコンピュータ可読記憶デバイス。
【請求項32】
前記データフローグラフに基づいて前記プログラムコードを実行することは、前記データフローグラフのノードと第2のデータフローグラフのノードとの間のリンクをインスタンス化することを含み、前記第2のデータフローグラフは、前記クエリプランによって記述されたいずれかのステップに基づいて選択された操作以外の実行すべき操作を表す少なくとも1つのノードを含む、請求項16に記載のコンピュータ可読記憶デバイス。
【請求項33】
前記データソースは、リレーショナルデータベーステーブルを含む、請求項16に記載のコンピュータ可読記憶デバイス。
【請求項34】
前記データソースは、リレーショナルデータベーステーブル以外のデータ部分を含む、請求項16に記載のコンピュータ可読記憶デバイス。
【請求項35】
前記データソースは、フラットファイルを含む、請求項16に記載のコンピュータ可読記憶デバイス。
【請求項36】
前記クエリは、SQLクエリを含む、請求項16に記載のコンピュータ可読記憶デバイス。
【請求項37】
前記実行することは、前記データフローグラフに基づく前記プログラムコードから、前記クエリの結果を受信することを含む、請求項16に記載のコンピュータ可読記憶デバイス。
【請求項38】
前記クエリプランのジェネレータは、クエリオプティマイザを含む、請求項16に記載のコンピュータ可読記憶デバイス。
【請求項39】
前記クエリプランは、前記クエリにおけるパラメータのデータ型を含む、請求項16に記載のコンピュータ可読記憶デバイス。
【請求項40】
前記クエリは、実行可能な機能への参照を含み、前記データフローグラフは、前記実行可能な機能を表すノードを含む、請求項16に記載のコンピュータ可読記憶デバイス。
【請求項41】
前記クエリに基づいてクエリプランナーに対するリクエストを生成することは、
前記データソースを反映したフォーマットされたデータ編成を含み、かつ前記データソースのデータを含まない、前記データソースの構造表現を作成することと、
前記クエリプランナーに対する前記リクエストに、前記構造表現を含めることと、を含む、請求項16に記載のコンピュータ可読記憶デバイス。
【請求項42】
前記データ構造は、前記識別された実行システムによって生成される、請求項16に記載のコンピュータ可読記憶デバイス。
【請求項43】
前記データ構造は、前記識別された実行システム以外のシステムによって生成される、請求項16に記載のコンピュータ可読記憶デバイス。
【請求項44】
前記データフローグラフは、前記クエリプランによって記述されたいずれかのステップに基づいて選択された操作以外の実行すべき操作を表す第3のノードを含む、請求項17に記載のシステム。
【請求項45】
前記データフローグラフに基づいて前記プログラムコードを実行することは、前記データフローグラフのノードと第2のデータフローグラフのノードとの間のリンクをインスタンス化することを含み、前記第2のデータフローグラフは、前記クエリプランによって記述されたいずれかのステップに基づいて選択された操作以外の実行すべき操作を表す少なくとも1つのノードを含む、請求項17に記載のシステム。
【請求項46】
前記データソースは、リレーショナルデータベーステーブルを含む、請求項17に記載のシステム。
【請求項47】
前記データソースは、リレーショナルデータベーステーブル以外のデータ部分を含む、請求項17に記載のシステム。
【請求項48】
前記データソースは、フラットファイルを含む、請求項17に記載のシステム。
【請求項49】
前記クエリは、SQLクエリを含む、請求項17に記載のシステム。
【請求項50】
前記データフローグラフに基づく前記プログラムコードから、前記クエリの結果を受信する手段を含む、請求項17に記載のシステム。
【請求項51】
前記クエリプランのジェネレータは、クエリオプティマイザを含む、請求項17に記載のシステム。
【請求項52】
前記クエリプランは、前記クエリにおけるパラメータのデータ型を含む、請求項17に記載のシステム。
【請求項53】
前記クエリは、実行可能な機能への参照を含み、前記データフローグラフは、前記実行可能な機能を表すノードを含む、請求項17に記載のシステム。
【請求項54】
前記クエリに基づいてクエリプランナーに対するリクエストを生成することは、
前記データソースを反映したフォーマットされたデータ編成を含み、かつ前記データソースのデータを含まない、前記データソースの構造表現を作成することと、
前記クエリプランナーに対する前記リクエストに、前記構造表現を含めることと、を含む、請求項17に記載のシステム。
【請求項55】
前記データ構造は、前記識別された実行システムによって生成される、請求項17に記載のシステム。
【請求項56】
前記データ構造は、前記識別された実行システム以外のシステムによって生成される、請求項17に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本記載は、データクエリの管理に関する。
【背景技術】
【0002】
データは、データベースに記憶され、データベーステーブルなどの様々な形態で構成され得る。また、データベーステーブルは、共通するテーマや目的を持ったデータの集合を含み得る。データベーステーブルの構成は、データベーススキームによって定義され、複数(multiple)のデータベーステーブルは、類似した又は同一の構成を有し得る。さらに、データベース及びその関連するデータベーステーブルの内容は、データが調整され、付加され、又は削除されることに伴い、時間とともに変化し得る。様々な技術は、データベースとデータをやり取りし、データベース内のデータを操作するために、用いられ得る。
【発明の概要】
【課題を解決するための手段】
【0003】
一態様において、概して、データ管理システムによる使用のためのデータベースクエリを用意する方法は、データベースクエリを受信することと、データ記憶からの(データ要素が投入されたデータベーステーブルなどの)データソースに関する情報を受信することと、前記データベーステーブルを反映したフォーマット済みデータ編成を含み前記データベーステーブルの前記データ要素を含まない、前記データベーステーブルの構造表現を作成すること(producing)と、前記構造表現及び前記データベースクエリを、前記データベーステーブルの前記データベースクエリを実行するための操作(operations)を表すクエリプランを作成することのできるプランジェネレータに、提供すること、を含む。
【0004】
各態様は、1つ又は複数の以下の特徴を含み得る。
【0005】
前記データベースクエリは、SQLクエリを含む。
【0006】
前記データベーステーブルの前記構造表現を作成することは、データベーステーブルのデータ構造からデータ型を決定することと、前記データ型を前記構造表現の対応するデータ構造に割り当てることを含む。
【0007】
前記データベーステーブルの前記構造表現を作成することは、前記データベーステーブルの前記データ要素のデータ記憶サイズを決定することと、前記算出されたデータ記憶サイズを前記構造表現に割り当てることを含む。
【0008】
前記データベーステーブルに関する情報を受信することは、データソースレジストリに基づいて前記データベーステーブルを識別することを含む。
【0009】
前記データソースレジストリは、データフォーマット、キー、及びデータソースのインデックスを含む。
【0010】
一態様によれば、概して、データベースクエリを表すデータフローグラフを生成する方法は、プランジェネレータから、データベーステーブルのデータベースクエリを実行する操作を表すクエリプランを受信することと、前記クエリプランからデータフローグラフを作成することと、を含み、前記データフローグラフは、前記クエリプランが表す少なくとも1つの操作を表している少なくとも1つのノードを含み、かつ、前記クエリプランに関連付けられた少なくとも1つのデータフローを表している少なくとも1つのリンクを含む。
【0011】
各態様は、1つ又は複数の以下の特徴を含み得る。
【0012】
前記データベースクエリは、SQLクエリを含む。
【0013】
前記データフローグラフは、少なくとも一つの入力データセットからデータの流れを受信する少なくとも1つのノードと、少なくとも1つの出力データセットにデータの流れを提供する少なくとも一つのノードとを含む。
【0014】
前記方法は、さらに、前記データベーステーブルを前記データフローグラフに提供することと、前記データフローグラフを実行することを含む。
【0015】
前記方法は、さらに、前記データフローグラフから前記データベースクエリの出力を受信することを含む。
【0016】
前記プランジェネレータは、クエリオプティマイザを含む。
【0017】
データフローグラフの仕様を生成することは、前記クエリプランのクエリ操作を前記データフローグラフの各コンポーネントにマッピングすることを含む。
【0018】
前記クエリプランは、前記データベースクエリのパラメータのデータ型を含む。
【0019】
前記データベースクエリは実行可能な機能への参照を含み、データフローグラフの前記仕様は、前記実行可能な機能を表すコンポーネントを含む。
【0020】
一態様によれば、概して、データベースクエリを表すデータフローグラフを生成する方法は、SQLクエリを受信することと、データ記憶から、データ要素が投入されたデータベーステーブルに関する情報を受信することと、前記データベーステーブルを反映したフォーマット済みデータ編成を含みかつ前記データベーステーブルの前記データを含まない、前記データベーステーブルの構造表現を作成することと、前記構造表現及び前記SQLクエリを、前記データベーステーブルの前記SQLクエリを実行するための操作を表すクエリプランを作成できるプランジェネレータに、提供することと、前記プランジェネレータからクエリプランを受信することと、前記クエリプランからデータフローグラフを作成することとを含み、前記データフローグラフは、前記クエリプランが示す少なくとも1つの操作を表している少なくとも1つのノードを含み、かつ、前記クエリプランに関連付けられた少なくとも1つのデータフローを表している少なくとも1つのリンクを含む。
【0021】
一態様によれば、概して、データ管理システムによる使用のためのデータベースクエリを用意するシステムは、データ要素が投入された前記データベーステーブルに関する情報を収容するデータストレージと、コンピュータシステムとを含み、前記コンピュータシステムは、データベースクエリを受信し、前記データベーステーブルを反映したフォーマットされたデータ編成を含み前記データベーステーブルの前記データ要素を含まない、前記データベーステーブルの構造表現を作成し、前記構造表現及びデータベースクエリを、前記データベーステーブルの前記データベースクエリを実行するための操作を表すクエリプランを作成できるプランジェネレータに、提供するように構成されている。
【0022】
一態様によれば、概して、データベースクエリを表すデータフローグラフを生成するシステムは、コンピュータシステムを含み、前記コンピュータシステムは、プランジェネレータから、データベーステーブルのデータベースクエリを実行する操作を表すクエリプランを受信し、前記クエリプランからデータフローグラフを作成するように構成され、前記データフローグラフは、前記クエリプランが表す少なくとも1つの操作を表している少なくとも1つのノードを含み、かつ、前記クエリプランに関連付けられた少なくとも1つのデータフローを表している少なくとも1つのリンクを含む。
【0023】
一態様によれば、概して、データ管理システムによる使用のためのデータベースクエリを用意するシステムは、データ要素が投入されたデータベーステーブルに関する情報を記憶する手段と、データベースクエリを処理する手段とを含み、前記処理は、データベースクエリを受信することと、前記データベーステーブルを反映したフォーマットされたデータ編成を含み前記データベーステーブルの前記データ要素を含まない、前記データベーステーブルの構造表現を作成することと、前記構造表現及び前記データベースクエリを、前記データベーステーブルの前記データベースクエリを実行するための操作を表すクエリプランを作成できるプランジェネレータに、提供することを含む。
【0024】
一態様によれば、概して、データベースクエリを表すデータフローグラフを生成するシステムは、クエリプランを処理する手段を含み、前記処理は、プランジェネレータから、データベーステーブルのデータベースクエリを実行する操作を表すクエリプランを受信することと、前記クエリプランからデータフローグラフを作成することと、を含み、前記データフローグラフは、前記クエリプランが表す少なくとも1つの操作を表している少なくとも1つのノードを含み、かつ、前記クエリプランに関連付けられた少なくとも1つのデータフローを表している少なくとも1つのリンクを含む。
【0025】
一態様によれば、概して、データ管理システムによる使用のためのデータベースクエリを用意するコンピュータプログラムを記憶するコンピュータ可読媒体は、コンピュータに、データベースクエリを受信させ、データ記憶から、データ要素が投入されたデータベーステーブルに関する情報を受信させ、前記データベーステーブルを反映したフォーマットされたデータ編成を含み前記データベーステーブルの前記データ要素を含まない、前記データベーステーブルの構造表現を作成させ、前記構造表現及び前記データベースクエリを、前記データベーステーブルの前記データベースクエリ実行のための操作を表すクエリプランを作成できるプランジェネレータに、提供させるための命令を含む。
【0026】
一態様によれば、概して、データベースクエリを表すデータフローグラフを生成するコンピュータプログラムを記憶するコンピュータ可読媒体は、コンピュータに、プランジェネレータから、データベーステーブルのデータベースクエリを実行する操作を表すクエリプランを受信させ、前記クエリプランからデータフローグラフを作成させるための命令を含み、前記データフローグラフは、前記クエリプランが表す少なくとも1つの操作を表している少なくとも1つのノードを含み、かつ、前記クエリプランに関連付けられた少なくとも1つのデータフローを表している少なくとも1つのリンクを含むことを特徴とする。
【図面の簡単な説明】
【0027】
【
図1】
図1は、データフローグラフのブロック図である。
【
図2】
図2は、データベースクエリ及びデータフローグラフを示す図である。
【
図3】
図3は、データベースシステム及び関連するコンポーネントの概要を示す図である。
【
図4】
図4は、データフローグラフの実行を示す図である。
【
図5】
図5は、データベーステーブル及びデータベーステーブルの構造表現を示す図である。
【
図6】
図6は、実行可能な機能をそれぞれ含む、データベースクエリ及びデータフローグラフを示す図である。
【
図7】
図7は、データベースシステムの操作を示すフローチャートである。
【
図8】
図8は、データベースシステムの操作を示すフローチャートである。
【発明を実施するための形態】
【0028】
1.データベース、クエリ、グラフ
データ管理システムは、1つ又は複数のデータソースに記憶されたデータを取り扱う。このようなデータソースは、データベーステーブルなどの1つ又は複数の形態をとることができ、これらの形態は、行及び列といったデータ構造に編成されたデータの集まりであり得る。ある構成では、各行がデータの記録を表し、各列が各行内のフィールドを表している。
【0029】
データベースに含まれる情報は、データベースクエリを使用して、アクセスされ、処理(例えば、修正)され得る。データベースクエリとは、データベースの内容の部分集合と、その部分集合のデータに対してとる処置について記述した命令の集合である。例えば、幾つかのデータベースシステムは、構造化照会言語(SQL)のような専用のデータベースクエリ言語で記述されたデータベースクエリを実行する。これらのデータベースシステムでは、SQLクエリが、データベースの内容を操作するための主要な道具となる。
【0030】
幾つかの実装では、データベースクエリ及び他の計算が、グラフ表示上、データベース管理システムに関連付けられている。例えば、データは、データフローとして呼ばれる、操作の集まりを通して、表現され得る。ある構成において、データフローは、グラフの各頂点に関連付けられた計算の成分を持つ、有向グラフによって提供され、コンポーネント間のデータフローはグラフのリンク(円弧、接線)に対応している。グラフは、モジュールエンティティであり、他のモジュールグラフに接続され又は組み合わされ得る。各グラフは、1つ又は複数の他のグラフで構成され、特定のグラフはさらに大きなグラフのコンポーネントであり得る。グラフィカルな開発環境(GDE)は、実行可能なグラフを指定してグラフコンポーネントのパラメータを定義するためのユーザインタフェースを提供する。このようなグラフに基づく計算を実施するシステムが、米国特許第5966072号の「EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS(グラフとして表された計算の実行)」に記載されており、その全体を参照により本明細書に援用する。
【0031】
図1を参照すると、データフローグラフ101の一例は、データフローグラフ101の実行可能なコンポーネント104a〜104jによって処理されるべきデータの集まりを提供する入力コンポーネント102を含む。ある例では、入力コンポーネント102は、データベースシステムに関連付けられたデータレコード又はトランザクション処理システムに関連付けられたトランザクションを備え得るデータソースである。このデータレコードは、例えば、データベーステーブルなどの様々な形式で記憶され得る。各実行可能コンポーネント104a〜104jは、データフローグラフ101全体で定義される計算の一部に関連付けられている。ワーク要素(例えば、データの集まり又はデータベーステーブルからの個々のデータレコード)は、あるコンポーネントの1つ又は複数の入力ポートに入り、出力ワーク要素(場合によっては、入力ワーク要素又は処理済みの入力ワーク要素)は、典型的には、コンポーネントの1つ又は複数の出力ポートから出る。データフローグラフ101において、コンポーネント104e、104g、及び104jからの出力ワーク要素は、出力データコンポーネント102a〜102cに記憶される。
【0032】
幾つかのグラフベースデータベースシステムは、データベースクエリを処理するために使用され得る。例えば、あるデータベースクエリは、例えば、データフローにおける処理のために、データベーステーブルの内容のうち識別された部分集合を抽出するように、1つ又は複数のデータベーステーブルに対して適用され得る。幾つかの実装では、グラフベースデータベースシステムは、データフローグラフの形式でで、データベースクエリを受け取り実行する。他のデータベースシステムは、他のタイプのデータベースクエリを使用してもよい。
【0033】
幾つかのケースでは、1つ又は複数のデータベーステーブルは、SQLを使用する別の種類のデータベースシステムからグラフベースデータベースシステムへ移動され得る。他方のデータベースシステムは、既に記述され、グラフベースデータベースシステムと互換性を持たないSQLクエリを、多数有していてもよい。幾つかの実装では、これらのSQLクエリは、グラフベースデータベースシステムと互換性のあるデータベースクエリに変換され得る。
【0034】
図2は、SQLで記述されたデータベースクエリ200の一例を示している。例示されたデータベースクエリ200は、グラフベースデータベース管理システムによって管理されるデータベーステーブル202及び204に対して動作することを意図して作られている。このグラフベースデータベース管理システムは、データベーステーブル202及び204のデータを認識し得るが、これは、各データベーステーブルが、グラフベースデータベース管理システム固有のフォーマットで記述されているためである。このデータベーステーブル202及び204は、他のデータベーステーブル、例えば、SQLクエリを認識しデータフローグラフを使用しないデータベースシステムを起源にしたデータベーステーブル、から得られたデータを含んでいてもよい。
【0035】
しかしながら、グラフベースデータベース管理システムは、SQLクエリを処理する内蔵型の機能性を有せず、従って、グラフベースデータベースクエリは、SQLデータベースクエリ200をエミュレートするようにs作成され得る。グラフベースデータベースクエリは、グラフベースデータベースシステムにより認識可能である。例えば、データベースクエリ200は、SQLクエリからデータフローグラフ208に変換され得る(206)。データフローグラフ208は、データベーステーブル202及び204を入力として受け付けることにより、データベーステーブル202及び204に対して動作し、データベースクエリ200の実行結果を出力として提供する。
【0036】
2.クエリプラン
幾つかのデータベースシステムは、クエリプラン(エクスプレインプランと呼ばれることもある)に基づくSQLクエリのようなデータベースクエリを遂行する。クエリプランとは、データベースクエリが実行される場合に行われるデータベース操作を記述したものである。クエリプランは、これらデータベース操作の他の構成や異なる操作の集合が同じ結果を成し遂げる場合であったら、データベース操作のある一つの可能な構成を記述したものでも良い。
【0037】
このようなクエリプランを提供するために、データベースシステムは、クエリプランジェネレータ(クエリプランナーと呼ばれることもある)を含み得る。例えば、クエリプランジェネレータは、データベースクエリの実行中に、クエリプランを作成(produce)し得るし、クエリプランジェネレータは、クエリの実行に関する決定が下される前に、クエリプランを生成(generate)し得る。
【0038】
幾つかの構成では、データベース操作は、等価な出力がなお提供されている間に、様々な順番で実行され得る。そのため、クエリプランジェネレータは、最適なクエリプランを確定する機能性を有していてもよい。例えば、最適なクエリプランとして、最小の時間でデータベースクエリを実行したり、データ記憶空間のような最小量のデータベースリソースを使用し、又は、データベースシステムによって識別された制約内で、データベースクエリを実現するための、データベース操作の構成を記述したクエリプランが考えられる。最適なクエリプランを確定するクエリプランジェネレータの機能性は、想定可能な多数のクエリプランを採点したりランク付けする機能性を含んで良く、さらに、想定可能なクエリプランを、最適あるいは効率的な構成に再編成する機能性が含まれていても良い。
【0039】
単一のデータベースクエリは、複数回実行され、各実行は、最適な固有のクエリプランを有し得る。例えば、あるデータベーステーブル内のデータは、あるデータベースクエリの二つの実行の間で変化し得る。本例では、データベースクエリの第1の実行用に生成されたクエリプランに記述された操作は、データベースクエリの第1の実行中よりも、第2の実行中の方が、幾分、実行時間を必要とする。この場合、操作の別の構成は、データベースクエリの第2の実行に一層適したものかも知れない。例えば、同じ操作から成る異なる構成や、異なる操作から成るある構成にすることが挙げられる。データベースクエリの第2の実行用に最適化されたクエリプランは、データベーステーブルの一時的な状態を考慮しながら、その実行のために生成され得る。
【0040】
3.システム概要
クエリプランジェネレータは、SQLクエリのような別の種類のデータベースクエリをエミュレートする、グラフベースデータベースクエリを作成する際に使用され得る。
図3は、データベース管理コンピュータシステム304上で実行するためのデータベースクエリ302を用意するデータベースクエリ管理システム300を示している。図示されているデータベース管理コンピュータシステム304は、データフローグラフとして実装されたデータベース操作を取り扱うグラフ実行エンジン306を含む。データベースクエリ管理システム300はまた、データフローグラフにより行われるべき操作の記述からデータフローグラフ312を構築できるグラフ生成エンジン310を有するグラフ生成コンピュータシステム308を含む。例えば、操作の記述は、クエリプラン314であり得る。
【0041】
データベースクエリ管理システム300はまた、クエリプランジェネレータ318を実行するクエリプランニングコンピュータシステム316を含む。クエリプランジェネレータ318は、データベースクエリからクエリプランを作成する任意のクエリプランジェネレータであってもよく、データフローグラフやグラフ生成に関連した任意の機能を有するように設計される必要はない。さらに、データベースクエリ管理システム300はまた、データストレージ(例えば、ハードドライブ、光ディスク等)にデータベース322を有し、さらに単一又は複数のデータベーステーブル324a、324b、324cを含む、データベースコンピュータシステム320も含む。
【0042】
データベース管理コンピュータシステム304、グラフ生成コンピュータシステム308、クエリプランニングコンピュータシステム316、及び、データベースコンピュータシステム320に対して、別々のコンピュータシステムが示されているが、これらのコンピュータシステムのうち2台以上のコンピュータシステムは、同一のコンピュータシステムであっても良く、あるいは、同一のコンピュータシステムのコンポーネントであっても良い。これらのコンピュータシステムは、いずれも、各実行可能コンポーネントを実行するための少なくとも1つのプロセッサと少なくとも1つのデータ記憶システムを有している。各コンピュータシステムは、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、インターネットのようなネットワーク、又は、別の種類のコンピュータネットワーク等のコンピュータネットワークを用いて、相互に接続することができる。
【0043】
1つ又は複数のデータベースクエリ302からのデータフローグラフ312の作成を示すために、データフローグラフの実行前に、データベースクエリ及びデータベーステーブル326は、グラフ生成コンピュータシステム308によって受信及び処理される。グラフ生成コンピュータシステム308は、データベースコンピュータシステム320から、データベーステーブル326を受信する。
【0044】
データベーステーブル326は、任意の形態を幾つも取り得る。例えば、データベーステーブル326は、リレーショナルデータベーステーブル、部分データベーステーブル、フラットファイル、別の種類のデータファイル、又は、データファイルの集まりであるかも知れない。幾つかの例では、データベーステーブル326は、例えば、データベーステーブルに関するメタデータなどのデータベーステーブルに関する情報や、データベーステーブルの記述の形で受信され得る。
【0045】
幾つかの実装では、データベーステーブル326は、データベースコンピュータシステム320に関連付けられ、さもなければ、グラフ生成コンピュータシステム308へアクセス可能なデータレジストリによって識別され得る。データレジストリは、ルックアップファイルカタログの形式でもよく、その場合、例えば、データベーステーブル326に関連付けられたデータファイルの場所や、データベーステーブルに関連付けられたプライマリーキー及びインデックス情報を含んでいてもよい。データレジストリはまた、それぞれ異なる種類のデータベーステーブルに対する各データフォーマットの情報を提供し得る。さらに、データレジストリはまた、データフローグラフ312がどのようにしてデータベーステーブルにアクセスできるのかという情報を提供し得る。
【0046】
グラフ生成コンピュータシステム308はまた、データベーステーブル326に適用されるデータベースクエリ302を受信する。例えば、データベースクエリは、SQLクエリであることも考えられる。データベースクエリ302は、任意数の想定されるソースから受信され得る。例えば、データベースクエリ302は、ユーザ330がデータベースクエリを入力したユーザインタフェース328から受信されても良い。幾つかの例では、データベースクエリ302は、データ記憶から受信されたり、データベースクエリは、インターネットのようなコンピュータネットワークから受信されたり、あるいは、データベースクエリは、別の予め受信されたデータベースクエリに基づいて生成される。
【0047】
幾つかの実装では、グラフ生成コンピュータシステム308は、(矢印332で示すように、)データベーステーブル326の情報から作成された、データベーステーブル326のあるバージョンを、クエリプランニングコンピュータシステム316に提供する。例えば、クエリプランニングコンピュータシステム316に提供される上記データベーステーブル326のバージョンは、該データベーステーブルよりもサイズが小さくそのため処理を行う計算資源が少なくてすむデータベーステーブルの構造表現334であり得る。データベーステーブル326の構造表現334は、データベーステーブルに関する情報を含んでいるが、データベーステーブルのデータの一部又は全部を含んでいない。例えば、データベーステーブル326の構造表現334は、データベーステーブルの列、行、又はフィールドのような、データベーステーブルのフォーマットを反映したフォーマットを含み得る。データベーステーブル326の構造表現334はまた、データベーステーブルの各要素のデータ記憶サイズや、データベーステーブルの各要素のデータ型といった、データに関する情報を含み得る。
【0048】
グラフ生成コンピュータシステムは、(矢印332で示すように)データベースクエリ302及びデータベーステーブル326の構造表現334を、クエリプランニングコンピュータシステム316に提供する。クエリプランニングコンピュータシステム316は、データベーステーブル326上でのデータベースクエリ302の実行に最適化されたクエリプランを作成する、クエリプランジェネレータ318を実行する。データベーステーブル326の構造表現334は、データベーステーブル326自身によって供給されるような、クエリプランジェネレータ318によって使用される同じ情報、例えば、データサイズ、データ型等の、データベーステーブルに含まれるデータに関する情報を供給する。幾つかの実装では、データベーステーブル326の構造表現334は、データルックアップ及び検索を最適化するために用いられるデータ要素のインデックスを含む。クエリプランジェネレータ318は、このインデックスを用いて、インデックス付きのデータベーステーブル326からデータ要素を識別し検索する速度を算出することができる。
【0049】
グラフ生成コンピュータシステム308は、クエリプランニングコンピュータシステム316からクエリプラン314を受信する。クエリプラン314は、データベーステーブル326上でのデータベースクエリ302の実行に使用可能なデータベース操作の構成を記述する。例えば、クエリプラン314における操作は、データフローグラフ312のノードに対応し得る。クエリプラン314はまた、クエリプランにおける操作で用いられるデータ型に関する情報を含み得る。例えば、クエリプランにおける操作は、パラメータを持ち得るし、パラメータのデータ型が、クエリプランに記述され得る。
【0050】
クエリプラン314が作成されると、クエリプラン314は、グラフ生成エンジン310によるデータフローグラフ312の作成のために、グラフ生成コンピュータシステム308に提供される。グラフ生成エンジン310は、クエリプラン314に対応するデータフローグラフ312を出力する。幾つかの実装では、データフローグラフ312は、クエリプランに記述されている操作を表すノードと、操作間のデータの流れを表すノードリンクとを有している。データフローグラフ312は、実行用にデータベースクエリを用意する各インスタンスに対して生成され得るので、グラフ生成エンジン310は、データベースクエリを実行するためのリアルタイム要求に迅速に応答するように、データフローグラフを生成することができる。幾つかの実装では、グラフ生成エンジン310は、1秒未満で、クエリプランからデータフローグラフを生成することができる。
【0051】
グラフ生成コンピュータシステム308は、(矢印336で示すように)グラフ生成エンジン316によって生成されたデータフローグラフ312を、データベース管理コンピュータシステム304に提供する。幾つかの実装では、グラフ生成コンピュータシステム308はまた、データベース管理コンピュータシステムによる使用のためのデータベーステーブル326を用意するとともに、用意されたデータベーステーブル338を提供する。例えば、グラフ生成コンピュータシステム308は、データベーステーブル326を、グラフ生成コンピュータシステム308によって使用されるフォーマットから、データベース管理コンピュータシステム304によって使用されるフォーマットに変換するかも知れない。
【0052】
データフローグラフ312がデータベース管理コンピュータシステム304に提供されると、実行に向けてデータフローグラフ312が用意される。
図4に示すように、データベース管理コンピュータシステム304は、データフローグラフ312の操作を実行し、データベースクエリの結果402を作成するために、データベーステーブル326を使用し得る。データベース管理コンピュータシステム304は、データベーステーブル326を、データフローグラフ312の1つ又は複数のノード404a、404b、404cに提供し、グラフ実行エンジン306を用いてデータフローグラフを実行する。グラフ実行エンジン306は、基本的なデータベースクエリを実行するためのデータベース操作に対応する、データフローグラフ312のノード404a、404b、404cによって表される操作を行う。さらに、各ノード間のリンク408a、408b、408cは、データベーステーブルの処理に伴う各データベース操作間のデータの流れを表す。データフローグラフ312は、データベースクエリの結果402を出力する。
【0053】
4.構造表現
図5は、データベーステーブル500及びデータベーステーブルの構造表現502(データベーステーブルからのデータを全く含まない)の一例を示している。データベーステーブル500は、類似した又は異なるタイプのデータを含み得る列504a〜504iを有している。データベーステーブル500はまた、それぞれ、各列に対応するフィールドを含む行508a〜508eも有している。行の各フィールドは、対応する列のデータ型(例えば、文字列、整数、浮動小数点数等)のデータ要素510a、510b、510cを含んでいる。さらに、各行508a〜508eは、固有のデータ記憶サイズ512a〜512eを有する。例えば、データ記憶サイズ512a〜512eは、行がメモリのようなデータストレージに存在している場合に、その行のデータ要素によって使用される記憶領域量であっても良い。
【0054】
(
図3に示すように、グラフ生成コンピュータシステム308によって作成される)データベーステーブル500の構造表現502は、元の列504a〜504iと同じデータ型を含みつつ、データベーステーブルと同一の列514a〜514iを有している。データベーステーブル500の構造表現502はまた、データベーステーブルの行508a〜508eに対応する行518a〜518を有している。しかしながら、行518a〜518eは、データベーステーブル500からのデータ要素510a、510b、510cを含んでいない。各行518a〜518eは、データ記憶サイズ値520a〜520eに関連付けられている。データベーステーブル500のある行のデータ記憶サイズ512a〜512eは、個々のデータ要素510a、510b、510cのデータ記憶サイズから算出することができる一方で、各行518a〜518eのデータ記憶サイズ値520a〜520e自体は、データベーステーブルの構造表現502の各行と供に記憶されるデータ要素であり得る。データベーステーブル500の構造表現502の総データ記憶サイズは、データベーステーブルの総データ記憶サイズに占める割合がごくわずかになることもあるが、それは、データベーステーブルの構造表現のフィールド522a、522b、522cには、データベーステーブルのフィールドからのデータ要素510a、510b、510cがないからである。幾つかの実装では、データベーステーブル500の構造表現502が、データベーステーブルからのデータ要素の一部を保持することもあり、例えば、データベーステーブルの構造表現は、キー値524及び526に対応するデータ要素や、データベーステーブルの構造、編成、又はフォーマットに使用される他のデータ要素を保持し得る。幾つかの実装では、データベーステーブル500の構造表現502は、データ検索に用いられる情報を提供するインデックス又は別のデータ構造を含み得る。幾つかの実装では、データベーステーブル500の構造表現502は、データベーステーブルに含まれるデータに関する他の統計を含み得る。
【0055】
5.機能呼び出し
図6に示すように、幾つかの実装では、カスタムグラフ機能602は、データベースクエリ604に埋め込まれうる。例えば、カスタムグラフ機能602は、データフローグラフの実行中にデータフローグラフ606を行える操作を表すかも知れない。カスタムグラフ機能602は、データベースクエリ604のコンテキストの中で、任意の機能性を持たないかも知れないし、生成されたデータフローグラフ606に渡されるようにデータベースクエリに配置される。例えば、カスタムグラフ機能602は、データフローグラフへの変換のためであるが既存のデータベースクエリの一部を入れ替え又は増補(augment)のために用意するように、データベースクエリ604に追加されるかも知れない。さらに、クエリプランジェネレータは、カスタムグラフ機能602の機能性に関する情報を有しないかも知れない。カスタムグラフ機能602は、データベースクエリ604の言語において、等価機能を持たない機能であり得る。幾つかの実装では、クエリプランジェネレータは、カスタムグラフ機能602に対する入力データ型又は出力データ型を認識する。データフローグラフ606の生成608される場合、カスタムグラフ機能602は、データフローグラフのノード610として振る舞い得る。
【0056】
幾つかの実装では、カスタムグラフ機能602は、特別な又はカスタマイズされたフォーマットのデータにアクセスするために用いられる機能であっても良く、また、カスタムグラフ機能は、正規表現やパターンマッチング式を実行するために用いられる機能であってもよく、又は、カスタムグラフ機能は、ユーザ、例えば、データベース管理コンピュータシステムのユーザによって実施される機能であっても良い。
【0057】
6.操作の流れ
図7は、(
図3に示す)グラフ生成コンピュータシステム308の操作の例を示したフローチャート700である。ステップ702において、グラフ生成コンピュータシステムは、例えば、ユーザインタフェースから又はデータ記憶からデータベースクエリを、受信する。ステップ704では、グラフ生成コンピュータシステムは、データベースシステムのデータベースから、データベーステーブルに関する情報を受信する。例えば、グラフ生成コンピュータシステムは、データ記憶からデータベーステーブル自体を受信しても良く、グラフ生成コンピュータシステムは、データベーステーブルに関するメタデータを受信しても良く、又は、グラフ生成コンピュータシステムは、ユーザインタフェースのユーザによって入力されたようなデータベーステーブルに関する情報を受信しても良い。ステップ706では、グラフ生成コンピュータシステムは、データベーステーブルを反映したフォーマット済みデータ編成を含みデータベーステーブルのデータがない、データベーステーブルの構造表現を生成する。ステップ708では、グラフ生成コンピュータシステムは、データベーステーブルの構造表現及びデータベースクエリを、クエリプランジェネレータによる使用のためにクエリプランニングコンピュータシステムに提供する。ステップ710では、グラフ生成コンピュータシステムは、クエリプランジェネレータによって作成されたクエリプランを、クエリプランニングコンピュータシステムから受信する。ステップ712では、グラフ生成コンピュータシステムは、クエリプランに記述されている操作に基づくクエリプランからデータフローグラフを生成するために、グラフ生成エンジンを使用する。ステップ714では、グラフ生成コンピュータシステムは、(例えば、データ管理システムのグラフ実行エンジンによる)実行のためにデータフローグラフを提供する。
【0058】
図8は、(
図3に示す)グラフ生成コンピュータシステム308の操作の例を示したフローチャート800である。ステップ802において、グラフ生成コンピュータシステムは、データベーステーブルに関する情報を受信する。例えば、グラフ生成コンピュータシステムは、ユーザインタフェースから又はデータ記憶から、予め受信したデータベーステーブルを受信しても良く、データベーステーブルを表すメタデータを受信しても良い。ステップ804では、グラフ生成コンピュータシステムは、受信したデータベーステーブルの同じ列及び行のフォーマットを有する新規のデータベーステーブルを生成する。ステップ806では、グラフ生成コンピュータシステムは、データベーステーブルの各列からデータ型を抽出することにより、受信したデータベーステーブルに関連付けられたデータ型を識別する。ステップ808では、グラフ生成コンピュータシステムは、識別されたデータ型を、新規データベーステーブルの列に割り当てる。ステップ810では、グラフ生成コンピュータシステムは、受信したデータベーステーブルに関するデータ統計、例えば、受信したデータベーステーブルの各行のデータ要素のデータ記憶サイズを算出する。ステップ812では、グラフ生成コンピュータシステムは、算出されたデータ統計を、受信したデータベーステーブルの構造表現となる新規のデータベーステーブルに割り当てる。
【0059】
上記のデータベースクエリ管理法は、コンピュータ上で実行されるソフトウェアを使用して実現され得る。具体的には、ソフトウェアは、1つ又は複数のプログラムされた又はプログラム可能なコンピュータシステム(分散型、クライアント/サーバー型、グリッド型など、様々なアーキテクチャに基づくもの)上で実行される1つ又は複数のコンピュータプログラムにおいて手順を形成する。上記コンピュータシステムのそれぞれは、少なくとも1つのプロセッサ、少なくとも1つのデータ記憶システム(揮発性及び不揮発性メモリ、及び/又は、記憶素子を含む)、少なくとも1つの入力装置又はポート、並びに、少なくとも1つの出力装置又はポートを含んでいる。上記ソフトウェアは、例えば、計算グラフの設計と構成とに関連する他のサービスを提供する、より大規模なプログラムの1つ又は複数のモジュールを形成していても良い。グラフのノード及び要素は、コンピュータ可読媒体に記憶されたデータ構造として、又は、データレジストリに記憶されたデータモデルに適合する他の編成データとして、実装することができる。
【0060】
ソフトウェアは、汎用又は専用プログラム可能コンピュータによって読み取り可能なCD−ROMなどの記憶媒体で提供されても良いし、又は、ソフトウェアが実行されるコンピュータに対してネットワークの通信媒体を経由して配布されても良い(伝播信号にコード化される)。その機能のすべては、専用コンピュータ上か、又はコプロセッサのように、専用ハードウェアを使用して実行される。ソフトウェアは、ソフトウェアによって指定される計算の異なる部分が異なるコンピュータによって実施されるような分散された方法で実装してもよい。記憶媒体又は装置をコンピュータシステムが読み込んで、本明細書に記載された手順を実行するとき、コンピュータを構成し操作するために、そのような各コンピュータプログラムは、好ましくは、汎用又は専用プログラム可能コンピュータで読取り可能な記憶媒体又は装置に記憶又はダウンロードされる(例えば、ソリッドステートメモリもしくは媒体、又は磁気もしくは光媒体)。本発明のシステムは、コンピュータプログラムによって構成され、コンピュータ読取り可能記憶媒体として実装するものと考えてよい。そのように構成された記憶媒体によって、コンピュータシステムを特定かつ所定の方法で動作させて本明細書に記載する機能を実現する。
【0061】
本発明の多くの実施の形態について説明した。しかしながら、本発明の趣旨と範囲から逸脱することなくさまざまな改変を行えることは言うまでもない。例えば、上記ステップの幾つかは、独立した順序であってもよく、したがって説明とは異なる順序で実施することができる。
【0062】
上記説明は、付帯する特許請求の範囲によって規定される本発明の範囲を示すことを意図しており、その範囲を制限するものではない。例えば、上記の多くの機能ステップは、全体の処理に実質的に影響を及ぼすことなく、異なる順序で実施してもよい。その他の実施の形態は、後述する特許請求の範囲内にある。