JP6133274B2 - データクエリの管理 - Google Patents

データクエリの管理 Download PDF

Info

Publication number
JP6133274B2
JP6133274B2 JP2014509333A JP2014509333A JP6133274B2 JP 6133274 B2 JP6133274 B2 JP 6133274B2 JP 2014509333 A JP2014509333 A JP 2014509333A JP 2014509333 A JP2014509333 A JP 2014509333A JP 6133274 B2 JP6133274 B2 JP 6133274B2
Authority
JP
Japan
Prior art keywords
data
query
data source
flow graph
node
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014509333A
Other languages
English (en)
Other versions
JP2014519080A (ja
JP2014519080A5 (ja
Inventor
シェヒター,イアン
ジョン アリン,グレン
ジョン アリン,グレン
Original Assignee
アビニシオ テクノロジー エルエルシー
アビニシオ テクノロジー エルエルシー
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アビニシオ テクノロジー エルエルシー, アビニシオ テクノロジー エルエルシー filed Critical アビニシオ テクノロジー エルエルシー
Publication of JP2014519080A publication Critical patent/JP2014519080A/ja
Publication of JP2014519080A5 publication Critical patent/JP2014519080A5/ja
Application granted granted Critical
Publication of JP6133274B2 publication Critical patent/JP6133274B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • 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/242Query formulation
    • G06F16/2428Query predicate definition using graphical user interfaces, including menus and forms
    • 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/2452Query translation
    • G06F16/24526Internal representations for queries
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • 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/25Integrating or interfacing systems involving database management systems
    • G06F16/256Integrating or interfacing systems involving database management systems in federated or virtual databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Operations Research (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Fuzzy Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

背景
この説明は、データクエリの管理に関する。
データは、データベースに格納して、データベース表などのさまざまな形式で構成することができる。データベース表は、共通のテーマまたは目的を有するデータセットを含み得る。データベース表の構成は、データベーススキームによって定義することができ、複数のデータベース表は、同様のまたは同一の構成を有し得る。さらに、データベースおよびその関連データベース表のコンテンツは、データの調整、追加または削除とともに経時的に変化し得る。さまざまな技法は、データベースへのおよびデータベースからのデータの転送ならびにデータベース内のデータの操作に使用することができる。
要約
一態様では、一般に、データベースクエリを表すデータフローグラフを生成する方法は、プランジェネレータからクエリプランを受信する工程であって、クエリプランは、データソースを表す少なくとも1つの入力に対してデータベースクエリを実行するためのオペレーションを表す、工程と、クエリプランからデータフローグラフを生成する工程であって、データフローグラフは、クエリプランによって表される少なくとも1つのオペレーションを表す少なくとも1つのノードを含み、クエリプランと関連付けられた少なくとも1つのデータフローを表す少なくとも1つのリンクを含む、工程と、データソースを表す少なくとも1つの入力の少なくとも1つの特性に基づいて、データフローグラフの1つまたは複数のコンポーネントを変更する工程とを含む。
態様は、以下の特徴の1つまたは複数を含み得る。データフローグラフの1つまたは複数のコンポーネントを変更する工程は、データフローグラフの少なくとも1つのコンポーネントを除去する工程を含む。グラフのコンポーネントは、クエリプランによって表されるオペレーションに対応する。少なくとも1つのオペレーションは、少なくとも1つの入力によって表されるデータソースと関連付けられた実行可能な機能性によって実行することが可能である。少なくとも1つの入力の特性は、入力によって表されるデータソースと関連付けられた実行可能な機能性を含む。実行可能な機能性は、ソート機能性を含む。データフローグラフの1つまたは複数のコンポーネントを変更する工程は、第1の入力に適用可能な第1のオペレーションを表す第1のコンポーネントおよび第2の入力に適用可能な第2のオペレーションを表す第2のコンポーネントを単一のコンポーネントにマージする工程であって、単一のコンポーネントは、第1のオペレーションおよび第2のオペレーションと同等の単一のオペレーションを表し、単一のオペレーションは、第1の入力および第2の入力に適用可能である、工程を含む。データフローグラフの1つまたは複数のコンポーネントを変更する工程は、第1のデータソースを表す第1の入力コンポーネントおよび第2のデータソースを表す第2の入力コンポーネントを単一の入力コンポーネントにマージする工程であって、単一の入力コンポーネントは、第1のデータソースおよび第2のデータソースのデータにアクセスするオペレーションを含む、工程を含む。データフローグラフの1つまたは複数のコンポーネントを変更する工程は、第1の入力に適用可能な第1のオペレーションを表す第1のコンポーネントを除去し、第2のコンポーネントを第1の入力に適用する工程であって、第2のコンポーネントは、第1のオペレーションと同じ機能性に相当する第2のオペレーションを表し、第2のオペレーションは、第2の入力に適用可能である、工程を含む。また、本方法は、少なくとも1つのデータソースを表すコンポーネントと関連付けられたデータベースと関連付けられた機能性を特定する工程と、特定する工程に基づいて、データベースにデータベースクエリを提供するようコンポーネントを構成する工程も含む。データセットを表す少なくとも1つの入力は、データファイル、データベース表、第2のデータフローグラフの出力およびネットワークソケットの少なくとも1つを含む。データフローグラフの出力は、データファイル、データベース表、第2のデータフローグラフおよびネットワークソケットの少なくとも1つに割り当てられる。データベースクエリは、SQLクエリを含む。データフローグラフは、プランジェネレータからの出力を受信するよう構成されたコンポーネントを含む。
別の態様では、一般に、コンピュータ可読媒体は、データベースクエリを表すデータフローグラフを生成するためのコンピュータプログラムを格納し、コンピュータプログラムは、コンピュータに、プランジェネレータからクエリプランを受信させるための命令であって、クエリプランは、データソースを表す少なくとも1つの入力に対してデータベースクエリを実行するためのオペレーションを表す、命令と、クエリプランからデータフローグラフを生成させるための命令であって、データフローグラフは、クエリプランによって表される少なくとも1つのオペレーションを表す少なくとも1つのノードを含み、クエリプランと関連付けられた少なくとも1つのデータフローを表す少なくとも1つのリンクを含む、命令と、データソースを表す少なくとも1つの入力の少なくとも1つの特性に基づいて、データフローグラフの1つまたは複数のコンポーネントを変更させるための命令とを含む。
別の態様では、一般に、データベースクエリを表すデータフローグラフを生成するためのシステムは、プランジェネレータからクエリプランを受信するための手段であって、クエリプランは、データソースを表す少なくとも1つの入力に対してデータベースクエリを実行するためのオペレーションを表す、手段と、クエリプランからデータフローグラフを生成するための手段であって、データフローグラフは、クエリプランによって表される少なくとも1つのオペレーションを表す少なくとも1つのノードを含み、クエリプランと関連付けられた少なくとも1つのデータフローを表す少なくとも1つのリンクを含む、手段と、データソースを表す少なくとも1つの入力の少なくとも1つの特性に基づいて、データフローグラフの1つまたは複数のコンポーネントを変更するための手段とを含む。
別の態様では、一般に、データベースクエリを表すデータフローグラフを生成するためのシステムは、コンピュータシステムであって、プランジェネレータからクエリプランを受信するよう構成され、クエリプランは、データソースを表す少なくとも1つの入力に対してデータベースクエリを実行するためのオペレーションを表し、クエリプランからデータフローグラフを生成するよう構成され、データフローグラフは、クエリプランによって表される少なくとも1つのオペレーションを表す少なくとも1つのノードを含み、クエリプランと関連付けられた少なくとも1つのデータフローを表す少なくとも1つのリンクを含み、データソースを表す少なくとも1つの入力の少なくとも1つの特性に基づいて、データフローグラフの1つまたは複数のコンポーネントを変更するよう構成された、コンピュータシステムを含む。
別の態様では、一般に、データベースクエリを表すデータフローグラフを生成するためのシステムは、クエリプランを提供するプランジェネレータと連通するインターフェースであって、クエリプランは、データソースを表す少なくとも1つの入力に対してデータベースクエリを実行するためのオペレーションを表す、インターフェースと、プランジェネレータによって提供されたクエリプランからデータフローグラフを生成するよう構成され、データフローグラフは、クエリプランによって表される少なくとも1つのオペレーションを表す少なくとも1つのノードを含み、クエリプランと関連付けられた少なくとも1つのデータフローを表す少なくとも1つのリンクを含み、データソースを表す少なくとも1つの入力の少なくとも1つの特性に基づいて、データフローグラフの1つまたは複数のコンポーネントを変更するよう構成された、プロセッサとを含む。
図面の説明
データフローグラフのブロック図である。 データベースクエリおよびデータフローグラフを示す。 データベースシステムおよび関連コンポーネントの概観である。 データフローグラフの実行を表す。 データベース表およびデータベース表の構造表現である。 それぞれが実行可能な関数を含む、データベースクエリおよびデータフローグラフを示す。 データベースシステムおよび関連コンポーネントの概観である。 クエリプランおよびデータフローグラフを示す。 データベースクエリユーザインターフェースを示す。 クエリプランおよびデータフローグラフを示す。 クエリプランおよびデータフローグラフを示す。 データベースシステムのオペレーション用のフローチャートである。
説明
1.データベース、クエリおよびグラフ
データベース管理システムは、1つまたは複数のデータベースに格納されたデータを取り扱う。そのようなデータを格納するため、データベースストレージは、データベース表などの1つまたは複数の形式を取ることができ、データベース表は、行および列などのデータ構造に組織化されたデータの集合体であり得る。一構成概念では、各行はデータの記録を表し、各列は各行内のフィールドを表す。
データベースに含まれる情報は、データベースクエリを使用して、アクセスして処理する(例えば、修正する)ことができる。データベースクエリは、データベースコンテンツのサブセットおよびそのサブセット内のデータを取得するための動作について記述する命令のセットである。例えば、いくつかのデータベースシステムは、構造化照会言語(SQL)などの専用データベースクエリ言語で記述されるデータベースクエリを実行する。これらのデータベースシステムでは、SQLクエリは、データベースのコンテンツを操作するための主要な手段である。
ある実装形態では、データベースクエリおよび他のコンピューテーションは、グラフ表示でデータベース管理システムと関連付けられる。例えば、データは、オペレーションの集合体を通過するものとして表すことができ、これは、データフローと呼ばれる。一構成では、データフローは、有向グラフを通じて提供することができ、コンピューテーションのコンポーネントはグラフの頂点と関連付けられ、コンポーネント間のデータフローはグラフのリンク(弧、辺)に相当する。グラフは、モジュール方式の実体であり、他のモジュール方式のグラフと接続することも、組み合わせることもできる。各グラフは、1つまたは複数の他のグラフで構成することができ、特定のグラフは、より大きなグラフのコンポーネントであり得る。グラフィカル開発環境(GDE)は、実行可能なグラフを指定して、グラフコンポーネントのためのパラメータを定義するためのユーザインターフェースを提供する。そのようなグラフベースのコンピューテーションを実装するシステムについては、その全体が参照により本明細書に組み込まれる、米国特許第5,966,072号「EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS」で説明されている。
図1を参照すると、データフローグラフ101(例示的なユーザインターフェースで表されるような)の例は、データフローグラフ101の実行可能なコンポーネント104a〜104jによって処理されるデータの集合体を提供する入力コンポーネント102を含む。ある例において、入力コンポーネント102は、データベースシステムと関連付けられたデータ記録、またはトランザクション処理システムと関連付けられたトランザクションを含み得るデータソースである。データ記録は、例えば、データベース表などのさまざまな形式で格納することができる。各実行可能なコンポーネント104a〜104jは、データフローグラフ101全体によって定義されたコンピューテーションの一部と関連付けられる。作業要素(例えば、データの集合体またはデータベース表からの個別のデータ記録)は、コンポーネントの1つ以上の複数の入力ポートに入り、出力作業要素(ある事例では、入力作業要素であり、または入力作業要素の処理されたバージョンである)は、通常、コンポーネントの1つ以上の複数の出力ポートを出る。データフローグラフ101では、コンポーネント104e、104gおよび104jからの出力作業要素は、出力データコンポーネント102a〜102cに格納される。
例えば、入力コンポーネント102および出力データコンポーネント102a〜102cはそれぞれ、データファイル、データベース表、第2のデータフローグラフの出力、ネットワークソケットまたは別のデータソースのいずれか1つへのアクセスを提供することができる。
あるグラフベースのデータベースシステムは、データベースクエリの処理に使用される。例えば、データベースクエリを1つまたは複数のデータベース表に適用して、例えば、データフローにおける処理のために、データベース表コンテンツの特定されたサブセットを抽出することができる。ある実装形態において、グラフベースのデータベースシステムは、データフローグラフの形式でデータベースクエリを受け入れて実行する。他のデータベースシステムは、他のタイプのデータベースクエリを使用することができる。
ある事例において、1つまたは複数のデータベース表は、SQLを使用する別の種類のデータベースシステムからグラフベースのデータベースシステムに移動される。他のデータベースシステムでは、グラフベースのデータベースシステムとは互換性がない多くのSQLクエリが既に記述されている場合がある。ある実装形態において、SQLクエリは、グラフベースのデータベースシステムと互換性があるデータベースクエリに変換することができる。
図2は、SQLで記述されたデータベースクエリ200の一例を示す。この例示的なデータベースクエリ200は、グラフベースのデータベース管理システムによって管理されるデータベース表202、204に対して動作することを意図する。データベース表は、グラフベースのデータベース管理システムに固有の形式であるため、グラフベースのデータベース管理システムは、データベース表202、204内のデータを認識することができる。データベース表202、204は、例えば、SQLクエリを認識し、かつ、データフローグラフを使用しないデータベースシステムを発生源とするデータベース表など、他のデータベース表から得られたデータを含む場合がある。
しかし、グラフベースのデータベース管理システムは、SQLクエリを処理するための組み込み機能性(built-in functionality)を有さない場合があるため、グラフベースのデータベースクエリを生成して、SQLデータベースクエリ200をエミュレートすることができる。グラフベースのデータベースクエリは、グラフベースのデータベースシステムによって認識可能である。例えば、データベースクエリ200は、SQLクエリからデータフローグラフ208に変換することができる(206)(本明細書に記載される技法を使用して)。データフローグラフ208は、入力としてデータベース表202、204を受け入れることによってデータベース表202、204に対して動作し、出力としてデータベースクエリ200の実行結果を提供する。
2.クエリプラン
あるデータベースシステムは、クエリプラン(時折、説明プランとも呼ばれる)に基づいて、SQLクエリなどのデータベースクエリを実行する。クエリプランは、データベースクエリが実行される場合に実行することができるデータベースオペレーションの記述である。クエリプランは、たとえオペレーションの他の構成またはオペレーションの異なるセットが同じ結果を達成したとしても、データベースオペレーションの可能な一構成について記述する可能性がある。
そのようなクエリプランを提供するため、データベースシステムは、クエリプランジェネレータ(時折、クエリプランナとも呼ばれる)を含み得る。例えば、クエリプランジェネレータは、データベースクエリが実行されている際にクエリプランを生成することができ、または、クエリプランジェネレータは、クエリの実行について何らかの決定が行われる前にクエリプランを生成することができる。
ある構成において、データベースオペレーションは、依然として同様の出力を提供しながら、さまざまな順番で実行することができる。そのため、クエリプランジェネレータは、最適なクエリプランを決定する機能性を有し得る。例えば、最適なクエリプランは、最小限の時間量で、もしくはデータ格納スペースなどの最小限のデータベースリソース量を使用してデータベースクエリを実行するため、または、そうでない場合は、データベースシステムによって特定されている制約内でデータベースクエリを達成するためのデータベースオペレーションの構成について記述するクエリプランであり得る。最適なクエリプランを決定するためのクエリプランジェネレータの機能性は、多くの可能なクエリプランのスコア付けまたはランク付けを行う機能性を含んでもよく、また、可能なクエリプランを最適なまたは効率的な構成に再構成する機能性も含んでもよい。
単一のデータベースクエリは、複数回実行することができ、各実行は、ユニークな最適なクエリプランを有し得る。例えば、データベース表内のデータは、データベースクエリの2つの実行間で変化し得る。この例において、データベースクエリの第1の実行に対して生成されたクエリプランにおいて記述されるオペレーションは、データベースクエリの第2の実行の間は、第1の実行の間より多くのまたは少ない実行回数を必要とし得る。この場合、オペレーションの異なる構成、例えば、同じオペレーションの異なる構成または異なるオペレーションの構成が、データベースクエリの第2の実行に対して、より適したものであり得る。データベースクエリの第2の実行に対して最適化されたクエリプランは、データベース表の瞬間の状態を考慮に入れた上で、その実行に対して生成することができる。
3.システムの概観
クエリプランジェネレータは、SQLクエリなどの別の種類のデータベースクエリをエミュレートするグラフベースのデータベースクエリを生成する際に使用することができる。図3は、データベース管理コンピュータシステム304上で実行するために、データベースクエリ302を準備するためのデータベースクエリ管理システム300を示す。図示されるデータベース管理コンピュータシステム304は、データフローグラフとして実装されたデータベースオペレーションを取り扱うグラフ実行エンジン306を含む。また、データベースクエリ管理システム300は、データフローグラフによって実行されるオペレーションの記述からデータフローグラフ312を構築することができるグラフ生成エンジン310を有するグラフ生成コンピュータシステム308も含む。例えば、オペレーションの記述は、クエリプラン314であり得る。グラフ生成コンピュータシステム308は、以下の「連合クエリ」について説明する第6項でさらに詳細に説明されるように、データソースを表す入力の1つまたは複数の特性に基づいて、データフローグラフのコンポーネントを変更する能力で構成される。
また、データベースクエリ管理システム300は、クエリプランジェネレータ318を実行するクエリ計画コンピュータシステム316も含む。クエリプランジェネレータ318は、データベースクエリからクエリプランを生成する任意のクエリプランジェネレータとすることができ、データフローグラフまたはグラフ生成に関連する機能性を考慮して設計される必要はない。さらに、データベースクエリ管理システム300は、データストレージ(例えば、ハードドライブ、光ディスクなど)にデータベース322を有し、1つまたは複数のデータベース表324a、324b、324cを含むデータベースコンピュータシステム320も含む。
データベース管理コンピュータシステム304、グラフ生成コンピュータシステム308、クエリ計画コンピュータシステム316およびデータベースコンピュータシステム320に対して別々のコンピュータシステムが示されているが、これらのコンピュータシステムの2つ以上は、同じコンピュータシステムまたは同じコンピュータシステムのコンポーネントであってもよい。すべてのコンピュータシステムは、それらのそれぞれの実行可能なコンポーネントを実行するための少なくとも1つのプロセッサと、少なくとも1つのデータ格納システムとを有する。コンピュータシステムは、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、インターネットなどのネットワーク、または、別の種類のコンピュータネットワークなどのコンピュータネットワークを使用して、互いに接続することができる。
1つまたは複数のデータベースクエリ302からデータフローグラフ312を生成するデモンストレーションを行うため、データフローグラフの実行前に、グラフ生成コンピュータシステム308によってデータベースクエリおよびデータベース表326が受信されて処理される。グラフ生成コンピュータシステム308は、データベースコンピュータシステム320からデータベース表326を受信する。
データベース表326は、いくつかの形式のうちのいずれかの形式を取ることができる。例えば、データベース表326は、関係型データベース表、部分的なデータベース表、フラットファイル、または、別の種類のデータファイルもしくはデータファイルの集合体であり得る。ある例において、データベース表326は、データベース表についての情報、例えば、データベース表についてのメタデータまたはデータベース表の記述の形式で受信することができる。
ある実装形態において、データベース表326は、データベースコンピュータシステム320と関連付けられるか、または、そうでない場合は、グラフ生成コンピュータシステム308へのアクセスが可能なデータ登録によって特定することができる。データ登録は、例えば、データベース表326と関連付けられたデータファイル位置と、データベース表と関連付けられた主キーおよびインデックス情報とを含み得るルックアップファイルカタログの形式であり得る。また、データ登録は、異なるタイプのデータベース表に対するデータフォーマットについての情報も提供することができる。さらに、データ登録は、どのようにデータフローグラフ312がデータベース表にアクセスできるかについての情報も提供することができる。
また、グラフ生成コンピュータシステム308は、データベース表326に適用するデータベースクエリ302も受信する。例えば、データベースクエリは、SQLクエリであり得る。データベースクエリ302は、任意の数の可能なソースから受信することができる。例えば、データベースクエリ302は、ユーザ330がデータベースクエリを入力したユーザインターフェース328から受信することができる。ある例において、データベースクエリ302は、データ格納システムから受信されるか、データベースクエリは、インターネットなどのコンピュータネットワークから受信されるか、または、データベースクエリは、別の以前に受信されたデータベースクエリに基づいて生成される。
ある実装形態において、グラフ生成コンピュータシステム308は、データベース表326についての情報から生成されたデータベース表326のバージョンをクエリ計画コンピュータシステム316に提供する(矢印332で表されるように)。例えば、クエリ計画コンピュータシステム316に提供されたデータベース表326のバージョンは、データベース表よりもサイズが小さく、したがって、処理のためにより少ないコンピュータリソースを必要とするデータベース表の構造表現334であり得る。データベース表326の構造表現334は、データベース表についての情報を含み得るが、データベース表の一部またはすべてのデータが欠けている。例えば、データベース表326の構造表現334は、データベース表の列、行またはフィールドなどのデータベース表のフォーマットを反映するフォーマットを含み得る。また、データベース表326の構造表現334は、データベース表の要素のデータ格納サイズまたはデータベース表の要素のデータタイプなどのデータについての情報も含み得る。
グラフ生成コンピュータシステムは、データベースクエリ302およびデータベース表326の構造表現334をクエリ計画コンピュータシステム316に提供する(矢印332で表されるように)。クエリ計画コンピュータシステム316は、クエリプランジェネレータ318を実行し、クエリプランジェネレータ318は、データベース表326上でのデータベースクエリ302の実行用に最適化されたクエリプランを生成する。データベース表326の構造表現334は、データベース表326自体によって供給されるものと同じ、クエリプランジェネレータ318によって使用される情報、例えば、データサイズ、データタイプおよびデータベース表に含まれるデータについての他の情報を供給する。ある実装形態において、データベース表326の構造表現334は、データルックアップおよび検索の最適化に使用されるデータ要素のインデックスを含む。クエリプランジェネレータ318は、インデックスを使用して、インデックス付きのデータベース表326からのデータ要素の識別および検索速度を計算することができる。
グラフ生成コンピュータシステム308は、クエリ計画コンピュータシステム316からクエリプラン314を受信する。クエリプラン314は、データベース表326上でのデータベースクエリ302の実行に使用することができるデータベースオペレーションの構成について記述する。例えば、クエリプラン314におけるオペレーションは、データフローグラフ312のノードに対応し得る。また、クエリプラン314は、クエリプランにおけるオペレーションによって使用されるデータタイプについての情報も含み得る。例えば、クエリプランにおけるオペレーションは、パラメータを含むことができ、パラメータのデータタイプは、クエリプラン内に記述されることができる。
生成された時点で、クエリプラン314は、グラフ生成エンジン310によるデータフローグラフ312の生成のためにグラフ生成コンピュータシステム308に提供される。グラフ生成エンジン310は、クエリプラン314に対応するデータフローグラフ312を出力する。ある実装形態において、データフローグラフ312は、クエリプランで記述されるオペレーションを表すノードと、オペレーション間のデータのフローを表すノードリンクとを有する。実行用にデータベースクエリを準備する各インスタンスに対してデータフローグラフ312を生成することができるため、グラフ生成エンジン310は、データベースクエリを実行するためのリアルタイム要求への応答に対して十分素早くデータフローグラフを生成することができる。ある実装形態において、グラフ生成エンジン310は、1秒以内にクエリプランからデータフローグラフを生成することができる。
グラフ生成コンピュータシステム308は、グラフ生成エンジン310によって生成されたデータフローグラフ312をデータベース管理コンピュータシステム304に提供する(矢印336で表されるように)。ある実装形態において、グラフ生成コンピュータシステム308は、データベース管理コンピュータシステムで使用するためのデータベース表326を準備し、準備したデータベース表338を提供することも行う。例えば、グラフ生成コンピュータシステム308は、グラフ生成コンピュータシステム308で使用されるフォーマットからデータベース管理コンピュータシステム304で使用されるフォーマットにデータベース表326を変換し得る。
データベース管理コンピュータシステム304に提供された時点で、実行のためのデータフローグラフ312の準備が整う。図4に示されるように、データベース管理コンピュータシステム304は、データベースクエリの結果402を生成するため、データフローグラフ312のオペレーションを実行し、データベース表326を使用することができる。データベース管理コンピュータシステム304は、データフローグラフ312の1つまたは複数のノード404a、404b、404cにデータベース表326を提供し、グラフ実行エンジン306を使用してデータフローグラフを実行する。グラフ実行エンジン306は、データフローグラフ312のノード404a、404b、404cによって表されるオペレーションを実行し、これらのオペレーションは、基本的なデータベースクエリを実行するためのデータベースオペレーションに相当する。さらに、ノード間のリンク408a、408b、408cは、データベース表が処理される際のデータベースオペレーション間のデータのフローを表す。データフローグラフ312は、データベースクエリの結果402を出力する。
4.構造表現
図5は、データベース表500およびデータベース表の構造表現502(データベース表からのデータのいずれも含まない)の一例を示す。データベース表500は、同様のまたは異なるタイプのデータを含み得る列504a〜504iを有する。また、データベース表500は、それぞれが各列に対応するフィールドを含む行508a〜508eも有する。行の各フィールドは、対応する列のデータタイプ(例えば、文字列、整数、浮動小数点数など)のデータ要素510a、510b、510cを含む。さらに、各行508a〜508eは、固有のデータ格納サイズ512a〜512eを有する。例えば、データ格納サイズ512a〜512eは、メモリなどのデータストレージ内に行が存在する際に、その行のデータ要素によって使用される格納スペース量であり得る。
データベース表500の構造表現502(図3に示されるように、グラフ生成コンピュータシステム308によって生成される)は、データベース表と同一の列514a〜514iを有し、元の列504a〜504iと同じデータタイプを含む。また、データベース表500の構造表現502は、データベース表の行508a〜508eに相当する行518a〜518eも有する。しかし、行518a〜518eは、データベース表500からのデータ要素510a、510b、510cを含まない。各行518a〜518eは、データ格納サイズ値520a〜520eと関連付けられる。データベース表500の行のデータ格納サイズ512a〜512eは、個別のデータ要素510a、510b、510cのデータ格納サイズから計算することができるが、各行518a〜518eのデータ格納サイズ値520a〜520eは、それ自体が、データベース表の構造表現502の各行と並んで格納されるデータ要素であり得る。データベース表の構造表現のフィールド522a、522b、522cは、データベース表のフィールドからのデータ要素510a、510b、510cが欠けているため、データベース表500の構造表現502のデータ格納サイズの合計値は、データベース表のデータ格納サイズの合計値のごく一部であり得る。ある実装形態において、データベース表500の構造表現502は、データベース表からの何らかのデータ要素を保持することができ、例えば、データベース表の構造表現は、キー値524、526に相当するデータ要素またはデータベース表の構造、組織もしくはフォーマットに使用される他のデータ要素を保持することができる。ある実装形態において、データベース表500の構造表現502は、データの検索に使用される情報を提供するインデックスまたは別のデータ構造を含み得る。ある実装形態において、データベース表500の構造表現502は、データベース表に含まれるデータについての他の統計を含み得る。
5.関数呼び出し
図6に示されるように、ある実装形態では、カスタムグラフ関数602をデータベースクエリ604に埋め込むことができる。例えば、カスタムグラフ関数602は、データフローグラフの実行の間にデータフローグラフ606が行うことができるオペレーションを表し得る。カスタムグラフ関数602は、データベースクエリ604の文脈中におけるいかなる機能性も有さない場合があり、生成されるデータフローグラフ606に渡されるデータベースクエリに配置される。例えば、カスタムグラフ関数602は、データベースクエリ604に追加され、データフローグラフへの変換に対してそれを準備することができるが、既存のデータベースクエリの一部を置き換えるかまたは増加させる。さらに、クエリプランジェネレータは、カスタムグラフ関数602の機能性についての情報を有さない場合がある。カスタムグラフ関数602は、データベースクエリ604の言語における同等の機能を有さない関数であり得る。ある実装形態において、クエリプランジェネレータは、カスタムグラフ関数602に対する入力データタイプまたは出力データタイプを知っている場合がある。データフローグラフ606が生成される(608)と、カスタムグラフ関数602は、データフローグラフのノード610として機能し得る。
ある実装形態において、カスタムグラフ関数602は、特別なもしくはカスタマイズされたフォーマットでのデータへのアクセスに使用される関数であり得るか、カスタムグラフ関数は、正規表現もしくはパターンマッチング表現の実行に使用される関数であり得るか、または、カスタムグラフ関数は、ユーザ、例えば、データベース管理コンピュータシステムのユーザによって実装される関数であり得る。
6.連合クエリ
ある実装形態において、クエリプランジェネレータ(例えば、図3に示されるクエリプランジェネレータ318)は、複数のデータソースおよび/または複数のタイプのデータソースから取得された入力データに対して動作するように構築されたデータベースクエリに対して動作することができる。例えば、データベースクエリは、複数のデータベース表に対して動作するように構築することができ、データベース表は、異なるタイプのデータベースに属し、異なる内部の機能性を有し得る。また、データベースクエリは、複数のデータファイル、複数のネットワークソケット、他のデータフローグラフの複数の出力、または、これらのタイプのデータソースの任意の組合せもしくはデータベースクエリを使用してアクセスすることができる他のタイプのデータソースの任意の組合せなど、他のデータソースでアクセス可能なデータに対して動作するように構築することもできる。グラフ生成エンジンがクエリプランからデータフローグラフを生成すると、結果として得られたデータフローグラフは、データソースの数およびそれぞれのタイプに応じて、それぞれのデータソースの特性に基づいてデータソースを表す各入力へのアクセスに対して最適化することができる。
図7は、グラフ生成エンジン908とグラフオプティマイザ704とを含むグラフ生成コンピュータシステム706を示す。グラフ生成コンピュータシステム706は、1つまたは複数のデータベース表726a、726bを受信する。例えば、グラフ生成コンピュータシステム706は、1つまたは複数のデータベースコンピュータシステム、例えば、データ格納システム(例えば、ハードドライブ、光ディスクなど)にデータベース722を有するデータベースコンピュータシステム720からデータベース表726a、726bを受信することができる。また、グラフ生成コンピュータシステム706は、データベース表726a、726bに適用するデータベースクエリ702も受信する。例えば、データベースクエリ702は、ユーザインターフェースから受信することができるか、データベースクエリ702は、データ格納システムから受信することができるか、データベースクエリは、インターネットなどのコンピュータネットワークから受信することができるか、または、データベースクエリは、別の以前に受信されたデータベースクエリに基づいて生成することができる。
グラフ生成コンピュータシステム706は、データベース表726a、726bのバージョン734a、734bをクエリ計画コンピュータシステム746に提供する(矢印732で表されるように)。いくつかの実装形態では、データベース表726a、726bのバージョン734a、734bは、データベース表726a、726b自体である。いくつかの例では、データベース表726a、726bのバージョン734a、734bは、データベース表726a、726bの構造表現である。例えば、データベース表726a、726bのバージョン734a、734bは、図5に示されるデータベース表500の構造表現502と同じ様式でフォーマットされた構造表現であり得る。
グラフ生成コンピュータシステム706は、データベースクエリ702およびデータベース表726a、726bのバージョン734a、734bをクエリ計画コンピュータシステム746に提供する(矢印732で表されるように)。クエリ計画コンピュータシステム746は、クエリプランジェネレータ748を実行し、クエリプランジェネレータ748は、データベース表726a、726b上でのデータベースクエリ702の実行用のクエリプラン714を生成する。ある実装形態では、データベース表726a、726bのバージョン734a、734bがデータベース表726a、726bの構造表現であれば、構造表現は、データベース表726a、726b自体によって供給されるものと同じ、クエリプランジェネレータ748によって使用される情報を供給する。
グラフ生成コンピュータシステム706は、クエリ計画コンピュータシステム746からクエリプラン714を受信する。図3に示されるクエリプラン314と同様に、このクエリプラン714は、データベース表726a、726b上でのデータベースクエリ702の実行に使用することができるデータベースオペレーションの構成について記述する。グラフ生成コンピュータシステム706は、クエリプラン714を入力として使用して、グラフ生成エンジン908を実行する。グラフ生成エンジン908は、クエリプラン714のコンテンツに基づいてデータフローグラフ716を生成する。ある実装形態において、データフローグラフ716は、クエリプラン714で記述されるオペレーションを表すノードと、オペレーション間のデータのフローを表すノードリンクとを有する。
データフローグラフ716は、グラフオプティマイザ704によって最適化されたデータフローグラフ718に変換することができる。ある実装形態において、データフローグラフ716は、コンピュータシステム(例えば、データベース管理コンピュータシステム744)によって実行して、クエリプラン714によって定義されたオペレーションに相当するオペレーションを行うことができる。データフローグラフ716によって行われたいくつかのオペレーションは冗長なものであってもよく、除去することも、他のオペレーションと統合することもできる。例えば、データフローグラフ716は、コンポーネントのグループが実行するものと同じオペレーションを実行する単一のコンポーネントにマージすることができるコンポーネントのグループを含み得る。グラフオプティマイザ704は、データフローグラフ716を分析し、最適化を実行してデータフローグラフを変更し、例えば、冗長コンポーネントの除去、コンポーネントのマージ、および、そうでなければ、データフローグラフ716のコンポーネントの数の削減を行い、最適化されたデータフローグラフ718を生成する。最適化されたデータフローグラフ718が生成された後、最適化されたデータフローグラフ718は、実行のためにデータベース管理コンピュータシステム744に提供することができる。
ある実装形態において、データフローグラフ716および/または最適化されたデータフローグラフ718は、クエリプランジェネレータ748の出力(例えば、クエリプラン714)をデータフローグラフ716の他のコンポーネントに提供するよう構成されたコンポーネントを含む。例えば、データフローグラフ716または最適化されたデータフローグラフ718は、実行の間(「即座に(on the fly)」)、データベースクエリ702を受信することができ、したがって、データフローグラフ716または最適化されたデータフローグラフ718のコンポーネントも同様に、実行の間、クエリプランジェネレータ748からデータベースクエリ702に対応するクエリプラン714を要求することができる。クエリプランジェネレータ748の出力を提供するコンポーネントは、次いで、データフローグラフ718の他のコンポーネントにクエリプラン714を提供することができる。
ある実装形態において、グラフオプティマイザ704は、最適化されたデータフローグラフ718を生成する際に、データフローグラフ716のコンポーネントの数を増加することができる。例えば、データフローグラフ716は、複雑なコンポーネントがより効率的なコンポーネントのグループに置き換えられた場合に実行されると、より速くまたはより効率的に動作することができる。
ある実装形態において、グラフ生成コンピュータシステム706は、クエリプラン714に対して動作するクエリプランオプティマイザを含み、クエリプラン714は、データフローグラフに変換される前に最適化される。
図8は、クエリプラン806から生成されたデータフローグラフ802および最適化されたデータフローグラフ804の一例を示す。クエリプラン806は、以下のSQLクエリを表す。

select count(*) as num_transactions,
sum(transaction_amt) as total,
account_id
from federated_transactions
group by account_id
order by account_id
このSQLクエリは、federated_transactionsと呼ばれるデータベース表から記録を選択し、それらをグループ分けし、順番付けを行う。クエリプラン806は、クエリを実行するために実行することができる3つのオペレーションについて記述する。クエリプラン806のオペレーションは、データ選択オペレーション810、ソートオペレーション812およびグループ集計オペレーション814と呼ばれるデータ要約オペレーションである。これらのオペレーションは、大体がオペレーションに対応するコンポーネントを有するデータフローグラフ802に変換することができる。データフローグラフ802は、データ選択コンポーネント820、ソートコンポーネント822、ロールアップコンポーネント824と呼ばれるデータ要約コンポーネントおよび出力コンポーネント826を有する。
データ選択コンポーネント820は、データソースを表す。例えば、データ選択コンポーネント820は、データベース表、第2のデータフローグラフの出力、ネットワークソケットまたは別のデータソースであり得る。
出力コンポーネント826は、データの送信先を表す。例えば、出力コンポーネント826は、データファイル、データベース表、第2のデータフローグラフへの入力、ネットワークソケットまたは出力データの別の送信先のいずれか1つであり得る。
データ選択コンポーネント820は、実行可能な機能性を有するデータソースを表し得る。例えば、データ選択コンポーネント820は、データベースクエリを実行することができ、上記で示されるSQLクエリなどの実行されたデータベースクエリに基づいてデータを返すデータベースのデータベース表を表し得る。データフローグラフ802は、データベース表を格納するデータベースと関連付けられた機能性へのアクセスを有し得る。例えば、データフローグラフ802は、実行可能な機能性と関連付けられたオペレーションを実行するためにデータベースに要求を送信することができるコンポーネントを有し得る。
ある実装形態において、SQLクエリは、データベースに属するデータに対して動作する。例えば、データ選択コンポーネント820によって表されたfederated_transactionsデータベース表は、ソートコンポーネント822およびロールアップコンポーネント824によって実行されるものと同じ機能を実行することができるデータベースに属し得る。最適化されたデータフローグラフ804は、この組み込み機能性を利用するクエリプラン806から生成することができる。最適化されたデータフローグラフ804は、ロールアップ機能性を含むデータ選択コンポーネント830および出力コンポーネント832の2つのコンポーネントのみを有する。
最適化されたデータフローグラフ804は、クエリプラン806から直接生成されるデータフローグラフ802より少ないコンポーネントを有してもよく、また、最適化されたデータフローグラフ804は、より効率的に動作してもよい。例えば、図示される例では、データフローグラフ802は、federated_transactionsデータベース表から796,096個の記録を選択し、ロールアップオペレーションが完了した時点で、この数は、3,754個の記録まで削減される。最適化されたデータフローグラフ804は、796,096個の記録のすべてを選択して処理する工程を行う必要はないが、その理由は、最適化されたデータフローグラフ804は、既にソートされ、要約された3,754個の記録を取得するためである。
ある実装形態において、最適化は、最適化されたデータフローグラフ804によって機能性が利用されているデータソースに適したクエリにクエリプラン806の一部を変換し直すことによって実行することができる。図9は、最適化されたデータフローグラフ804のデータ選択コンポーネント830と関連付けられたユーザインターフェース940の一例を示す。ユーザインターフェース940により、データ選択コンポーネント830は、SQLクエリ942を用いて構成することができる。データ選択コンポーネント830と関連付けられたデータフローグラフ804が実行されると、SQLクエリ942は、データ選択コンポーネント830によって表されるデータソースに伝達され、データ選択コンポーネント830と関連付けられたデータベース機能性によって実行される。例えば、データ選択コンポーネント830がデータベースコンピュータシステム720(図7)によって格納されたデータベース722と関連付けられれば、SQLクエリ942は、実行のためにデータベースコンピュータシステム720に伝達することができる。このように、データ選択コンポーネント830は、SQLクエリ942を使用して、データベース722と関連付けられた機能性にアクセスすることができる。
入力として複数のデータソースを有するクエリプランを表すデータフローグラフは、複数の入力の特性に基づいて最適化することができる。図10は、最適化されたデータフローグラフ1030への変換を受けるクエリプラン1010を示す。クエリプラン1010は、連合クエリを表し、入力として2つのデータベース表1012、1014を有する。クエリプランは、データフローグラフ1020に変換することができる(1016)。例えば、図7に示されるグラフ生成エンジン908が変換を実行することができる。
データフローグラフ1020は、データベース表の1つ1012を表すデータ選択コンポーネント1022と、他のデータベース表1014を表すデータコンポーネント1026とを含む。データ選択コンポーネント1022は、ロールアップコンポーネント1024にデータを出力し、データコンポーネント1026は、第2のロールアップコンポーネント1028にデータを出力する。データ選択コンポーネント1022は、データフローグラフ1020内でロールアップコンポーネント1024が実行するものと同じオペレーションの実行に使用することができる内部の機能性を有する。例えば、データ選択コンポーネント1022は、実行可能な機能性を有するデータベースシステムを表してもよく、それが提供するデータに対してそれ自体のオペレーションを実行することができる。例えば、データ選択コンポーネント1022は、図7に示されるデータベース722などのデータベース上でアクセス可能なデータベース表を表し得る。
データコンポーネント1026は、データフローグラフ1020内でロールアップコンポーネント1028が実行するものと同じオペレーションの実行に使用することができる機能性を有さない。例えば、データコンポーネント1026は、実行可能な機能性を含まないデータファイルなどの実体であり得る。
データフローグラフ1020は、最適化されたデータフローグラフ1030に変換することができ(1018)(例えば、図7に示されるグラフオプティマイザ704などのグラフオプティマイザによって)、最適化されたデータフローグラフ1030では、データ選択コンポーネント1022およびデータコンポーネント1026の内部の機能性に基づいて、コンポーネントの一部が除去されている。データ選択コンポーネント1022は、ロールアップ機能性を含むため、データ選択コンポーネント1022およびその関連ロールアップコンポーネント1024を組み合わされたデータ選択コンポーネント1032にマージして、そうでなければロールアップコンポーネント1024によって実行されるロールアップオペレーションを組み込むことができる。組み合わされたデータ選択コンポーネント1032には、最適化されたデータフローグラフ1030にデータを提供する前にロールアップオペレーションを実行するように組み合わされたデータ選択コンポーネント1032に指示するデータベースクエリを提供することができる。例えば、組み合わされたデータ選択コンポーネント1032には、図8に示されるSQLクエリ942などのデータベースクエリを提供することができる。データコンポーネント1026はそうでなければロールアップコンポーネント1028によって重複して行われる内部のロールアップ機能性を有さないため、データコンポーネント1026と関連付けられたロールアップコンポーネント1028は、最適化されたデータフローグラフ1030に残存する。
図11は、最適化されたデータフローグラフ1130への変換を受けるクエリプラン1110を示す。クエリプラン1110は、連合クエリを表し、入力として2つのデータベース表1112、1114を有する。クエリプランは、データフローグラフ1120に変換することができる(1116)。例えば、図7に示されるグラフ生成エンジン908が変換を実行することができる。
データフローグラフ1120は、クエリプラン1110のオペレーションに対応するコンポーネントを含む。このデータフローグラフ1120は、クエリプラン1110のデータベース表1112、1114を表すデータソースコンポーネント1122、1124を含み、また、データソースコンポーネント1122、1124によって提供されるデータに対して動作して、データベース表1112、1114のデータを単一のデータソースに組み合わせる結合コンポーネント1126も含む。
データベース表1112、1114は、同じデータベース、例えば、図7に示されるデータベース722に属し得る。データベース722は、単一のデータソース、例えば、結合オペレーションの結果としての単一のデータベース表として、2つのデータベース表1112、1114のデータを提供することができる機能性を有し得る。グラフオプティマイザ、例えば、図7に示されるグラフオプティマイザ704は、データベース表1112、1114と関連付けられたデータベース722の機能性を特定し、データフローグラフ1120のコンポーネントの数を削減することによってデータフローグラフ1120を簡易化できるかどうかを決定することができる。グラフオプティマイザ704は、データベース722がデータベース表1112、1114に対する結合オペレーションを実行し、データベース722が2つのデータベース表1112、1114に対する結合オペレーションを実行する際にデータベース722によって提供されたデータを表すマージされたデータソースコンポーネント1132を含む最適化されたデータフローグラフ1130を生成できることを決定することができる。結合コンポーネント1126によって表される機能性はデータベース722が代わりに実行するため、最適化されたデータフローグラフ1130は、結合コンポーネント1126を含まない。
図12は、グラフ生成コンピュータシステム706(図7に示される)の例示的なオペレーションを示すフローチャート1200である。工程1202では、グラフ生成コンピュータシステムは、クエリプラン、例えば、クエリ計画コンピュータシステムのクエリプランジェネレータによって生成されたクエリプランを受信する。クエリプランは、データソースを表す少なくとも1つの入力に対してデータベースクエリを実行するためのオペレーションを表す。工程1204では、グラフ生成コンピュータシステムは、グラフ生成エンジンを使用して、クエリプランで記述されたオペレーションに基づいて、クエリプランからデータフローグラフを生成する。結果として得られたデータフローグラフは、クエリプランによって表される少なくとも1つのオペレーションを表す少なくとも1つのノードを含み、クエリプランと関連付けられた少なくとも1つのデータフローを表す少なくとも1つのリンクを含む。工程1206では、グラフ生成コンピュータシステムは、データソースを表す入力の特性に基づいて、データフローグラフのコンポーネントを変更する。コンポーネントを変更して、データフローグラフを最適化する、例えば、データフローグラフのコンポーネントの数を削減することができる。
上記で説明されるデータベースクエリ管理手法は、コンピュータ上で実行するためのソフトウェアを使用して実装することができる。例えば、ソフトウェアは、1つまたは複数のプログラムされたまたはプログラム可能なコンピュータシステム(それは、分散型、クライアント/サーバまたはグリッドなどのさまざまなアーキテクチャのものである)上で実行する1つまたは複数のコンピュータプログラムの手順を形成し、コンピュータシステムはそれぞれ、少なくとも1つのプロセッサと、少なくとも1つのデータ格納システム(揮発性および不揮発性メモリならびに/または格納要素を含む)と、少なくとも1つの入力デバイスまたはポートと、少なくとも1つの出力デバイスまたはポートとを含む。ソフトウェアは、例えば、コンピューテーショングラフの設計および構成に関連する他のサービスを提供する大規模なプログラムの1つまたは複数のモジュールを形成することができる。グラフのノードおよび要素は、コンピュータ可読媒体に格納されたデータ構造、または、データリポジトリに格納されたデータモデルに適合する他の組織化されたデータとして実装することができる。
ソフトウェアは、汎用もしくは特殊用途のプログラム可能なコンピュータによる読み取りが可能なCD−ROMなどの記憶媒体上で提供されても、ネットワークの通信媒体上で、ソフトウェアが実行されるコンピュータに送達されてもよい(伝播信号で符号化される)。機能のすべては、特殊用途のコンピュータ上か、または、コプロセッサなどの特殊用途のハードウェアを使用して実行することができる。ソフトウェアは、ソフトウェアによって指定されるコンピューテーションの異なる部分は異なるコンピュータによって実行される分散様式で実装することができる。それぞれのそのようなコンピュータプログラムは、好ましくは、汎用もしくは特殊用途のプログラム可能なコンピュータによる読み取りが可能な記憶媒体もしくはデバイス(例えば、ソリッドステートメモリもしくは媒体、または、磁気もしくは光媒体)上に格納されるか、または、同記憶媒体もしくはデバイスにダウンロードされるが、それは、コンピュータシステムで記憶媒体もしくはデバイスを読み取り、本明細書に記載される手順を実行する際にコンピュータを構成および動作するためである。また、本発明のシステムは、コンピュータ可読記憶媒体として実装され、コンピュータプログラムを用いて構成されるものと考慮され得、そのように構成された記憶媒体は、特定の事前に定義された様式でコンピュータシステムを動作させ、本明細書に記載される機能を実行する。
本発明の多くの実施形態について説明してきた。それにもかかわらず、本発明の精神および範囲から逸脱することなく、さまざまな変更を行うことができることが理解されよう。例えば、上記で説明された工程のいくつかは、順番に依存しないものであり得、したがって、説明されている順番とは異なる順番で実行することができる。
前述の説明は、例示を意図するものであり、本発明の範囲を限定するものではなく、本発明の範囲は、添付の特許請求の範囲によって定義されることを理解されたい。例えば、上記で説明された多くの機能工程は、処理全体に実質的に影響を与えることなく、異なる順番で実行することができる。他の実施形態は、以下の特許請求の範囲内にある。

Claims (79)

  1. データソースからのデータに対する動作方法であって、前記データは前記データソースの有形かつ非一過性のコンピュータ可読媒体に格納され、前記動作は関係型データベースに適用可能なクエリ言語に従って表現されたクエリに基づくものであり、前記動作は関係型データベースを管理するシステム以外の実行システム上で前記クエリを実行することを含み、前記実行することは、
    クエリを受信することと、
    前記クエリに基づいてデータソースを特定することであって、前記データソースは前記データソースを管理するシステムと関連付けられている、特定することと、
    関係型データベースを管理するシステム以外の実行システムを特定することと、
    前記クエリに基づいてクエリプランナに対するリクエストを生成することと、
    前記リクエストを前記クエリプランナに提供することと、
    前記リクエストに基づいて前記クエリプランナによって生成されたクエリプランを受信することであって、前記クエリプランは、関係型データベースを管理するシステムによって行われる1つまたは複数のステップの記述を含む、受信することと、
    前記クエリプランに基づいて、データフローグラフをインスタンス化するデータ構造を生成することと、
    前記データソースからデータを受信することと、
    前記特定された実行システム上で、前記データフローグラフに基づいてプログラムコードを実行することと、を含み、
    前記データフローグラフは、
    少なくとも1つの実行すべきオペレーションを表す第1のノードであって、
    前記第1のノードは、実行可能なプログラムコードを呼び出して前記オペレーションを行うために実行システムが使用することのできる情報と関連付けられ、
    前記第1のノードは、データを前記プログラムコードに対して使用可能とするために実行システムが使用することのできる情報と関連付けられ、かつ
    前記オペレーションは、前記クエリプランによって記述された第1のステップに基づいて選択される、第1のノードと、
    実行可能なプログラムコードを呼び出すために実行システムが使用することのできる情報と関連付けられた第2のノードであって、前記実行可能なプログラムコードは、前記クエリプランによって記述された第2のステップに基づいて選択される少なくとも1つのオペレーションを行うためのリクエストが前記データソースを管理する前記システムに送信されるようにする、第2のノードと、を含む、
    方法。
  2. 前記データフローグラフは、前記データフローグラフの第3のノードのオペレーションに対して入力データとして提供される、前記第1のノードのオペレーションの出力データを表す少なくとも1つのリンクを含む、請求項1に記載の方法。
  3. 前記クエリプランによって記述された前記第2のステップに基づいて選択された前記少なくとも1つのオペレーションを行うことを含む、請求項1に記載の方法。
  4. 第1のデータフローグラフをインスタンス化する前記データ構造を生成することは、前記クエリプランの一部を、前記データソースを管理する前記システムに送信するために適したクエリに変換することを含む、請求項1に記載の方法。
  5. 前記第2のノードは、前記データソースからの前記データを受信するために実行システムが使用することのできる情報と関連付けられる、請求項1に記載の方法。
  6. 前記データフローグラフは、前記クエリプランによって記述されたいずれかのステップに基づいて選択されるオペレーション以外の実行すべきオペレーションを表す第3のノードを含む、請求項1に記載の方法。
  7. 前記データフローグラフに基づいて前記プログラムコードを実行することは、前記データフローグラフのノードと、第2のデータフローグラフのノードとの間のリンクをインスタンス化することを含み、前記第2のデータフローグラフは、前記クエリプランによって記述されたいずれかのステップに基づいて選択されるオペレーション以外の実行すべきオペレーションを表す少なくとも1つのノードを含む、請求項1に記載の方法。
  8. 前記データソースは、関係型データベース表を含む、請求項1に記載の方法。
  9. 前記データソースは、関係型データベース表以外のデータの一部を含む、請求項1に記載の方法。
  10. 前記データソースは、フラットファイルを含む、請求項1に記載の方法。
  11. 前記クエリは、SQLクエリを含む、請求項1に記載の方法。
  12. 前記データフローグラフに基づく前記プログラムコードの出力として、前記クエリの結果を受信することを含む、請求項1に記載の方法。
  13. 前記クエリプランのジェネレータは、クエリオプティマイザを含む、請求項1に記載の方法。
  14. 前記クエリプランは、前記クエリ内のパラメータのデータタイプを含む、請求項1に記載の方法。
  15. 前記クエリは、実行可能な関数への参照を含み、前記データフローグラフは、前記実行可能な関数を表すノードを含む、請求項1に記載の方法。
  16. 前記クエリに基づいてクエリプランナに対するリクエストを生成することは、
    前記データソースを反映するフォーマットされたデータ編成を含み、かつ前記データソースのデータが存在しない、前記データソースの構造表現を生成することと、
    前記クエリプランナに対する前記リクエストに、前記構造表現を含めることと、を含む、請求項1に記載の方法。
  17. 前記データフローグラフは、前記特定された実行システムによって生成される、請求項1に記載の方法。
  18. 前記データフローグラフは、前記特定された実行システム及び前記関係型データベース以外のシステムによって生成される、請求項1に記載の方法。
  19. データソースからのデータに対する動作システムであって、前記データは前記データソースの有形かつ非一過性のコンピュータ可読媒体に格納され、前記動作は関係型データベースに適用可能なクエリ言語に従って表現されたクエリに基づくものであり、前記システムは、
    クエリを受信することと、
    前記クエリに基づいてデータソースを特定することであって、前記データソースは前記データソースを管理するシステムと関連付けられている、特定することと、
    関係型データベースを管理するシステム以外の実行システムを特定することと、
    前記クエリに基づいてクエリプランナに対するリクエストを生成することと、
    前記リクエストを前記クエリプランナに提供することと、
    前記リクエストに基づいて前記クエリプランナによって生成されたクエリプランを受信することであって、前記クエリプランは、関係型データベースを管理するシステムによって行われる1つまたは複数のステップの記述を含む、受信することと、
    前記クエリプランに基づいて、データフローグラフをインスタンス化するデータ構造を生成することと、
    前記データソースからデータを受信することと、
    前記特定された実行システム上で、前記データフローグラフに基づいてプログラムコードを実行することと、を行うためのオペレーションを実行するように構成され、
    前記データフローグラフは、
    少なくとも1つの実行すべきオペレーションを表す第1のノードであって、
    前記第1のノードは、実行可能なプログラムコードを呼び出して前記オペレーションを行うために実行システムが使用することのできる情報と関連付けられ、
    前記第1のノードは、データを前記プログラムコードに対して使用可能とするために実行システムが使用することのできる情報と関連付けられ、かつ
    前記オペレーションは、前記クエリプランによって記述された第1のステップに基づいて選択される、第1のノードと、
    実行可能なプログラムコードを呼び出すために実行システムが使用することのできる情報と関連付けられた第2のノードであって、前記実行可能なプログラムコードは、前記クエリプランによって記述された第2のステップに基づいて選択される少なくとも1つのオペレーションを行うためのリクエストが前記データソースを管理する前記システムに送信されるようにする、第2のノードと、を含む、
    システム。
  20. 前記オペレーションは、前記クエリプランによって記述された前記第2のステップに基づいて選択された前記少なくとも1つのオペレーションを行うことを含む、請求項19に記載のシステム。
  21. 第1のデータフローグラフをインスタンス化する前記データ構造を生成することは、前記クエリプランの一部を、前記データソースを管理する前記システムに送信するために適したクエリに変換することを含む、請求項19に記載のシステム。
  22. 前記第2のノードは、前記データソースからの前記データを受信するために実行システムが使用することのできる情報と関連付けられる、請求項19に記載のシステム。
  23. 前記データソースは、関係型データベース表を含む、請求項19に記載のシステム。
  24. 前記データソースは、関係型データベース表以外のデータの一部を含む、請求項19に記載のシステム。
  25. 前記オペレーションは、前記データフローグラフに基づく前記プログラムコードの出力として、前記クエリの結果を受信することを含む、請求項19に記載のシステム。
  26. データソースからのデータに対する動作のためのコンピュータ実行可能な命令を含む非一過性のコンピュータ可読媒体であって、前記データは前記データソースの有形かつ非一過性のコンピュータ可読媒体に格納され、前記動作は関係型データベースに適用可能なクエリ言語に従って表現されたクエリに基づくものであり、前記動作は関係型データベースを管理するシステム以外の実行システム上で前記クエリを実行することを含み、前記実行可能な命令は、
    クエリを受信することと、
    前記クエリに基づいてデータソースを特定することであって、前記データソースは前記データソースを管理するシステムと関連付けられている、特定することと、
    関係型データベースを管理するシステム以外の実行システムを特定することと、
    前記クエリに基づいてクエリプランナに対するリクエストを生成することと、
    前記リクエストを前記クエリプランナに提供することと、
    前記リクエストに基づいて前記クエリプランナによって生成されたクエリプランを受信することであって、前記クエリプランは、関係型データベースを管理するシステムによって行われる1つまたは複数のステップの記述を含む、受信することと、
    前記クエリプランに基づいて、データフローグラフをインスタンス化するデータ構造を生成することと、
    前記データソースからデータを受信することと、
    前記特定された実行システム上で、前記データフローグラフに基づいてプログラムコードを実行することと、を含むステップをコンピュータに実行させ、
    前記データフローグラフは、
    少なくとも1つの実行すべきオペレーションを表す第1のノードであって、
    前記第1のノードは、実行可能なプログラムコードを呼び出して前記オペレーションを行うために実行システムが使用することのできる情報と関連付けられ、
    前記第1のノードは、データを前記プログラムコードに対して使用可能とするために実行システムが使用することのできる情報と関連付けられ、かつ
    前記オペレーションは、前記クエリプランによって記述された第1のステップに基づいて選択される、第1のノードと、
    実行可能なプログラムコードを呼び出すために実行システムが使用することのできる情報と関連付けられた第2のノードであって、前記実行可能なプログラムコードは、前記クエリプランによって記述された第2のステップに基づいて選択される少なくとも1つのオペレーションを行うためのリクエストが前記データソースを管理する前記システムに送信されるようにする、第2のノードと、を含む、
    コンピュータ可読媒体。
  27. 前記オペレーションは、前記クエリプランによって記述された前記第2のステップに基づいて選択された前記少なくとも1つのオペレーションを行うことを含む、請求項26に記載のコンピュータ可読媒体。
  28. 第1のデータフローグラフをインスタンス化する前記データ構造を生成することは、前記クエリプランの一部を、前記データソースを管理する前記システムに送信するために適したクエリに変換することを含む、請求項26に記載のコンピュータ可読媒体。
  29. 前記第2のノードは、前記データソースからの前記データを受信するために実行システムが使用することのできる情報と関連付けられる、請求項26に記載のコンピュータ可読媒体。
  30. 前記データソースは、関係型データベース表を含む、請求項26に記載のコンピュータ可読媒体。
  31. 前記データソースは、関係型データベース表以外のデータの一部を含む、請求項26に記載のコンピュータ可読媒体。
  32. 前記オペレーションは、前記データフローグラフに基づく前記プログラムコードの出力として、前記クエリの結果を受信することを含む、請求項26に記載のコンピュータ可読媒体。
  33. データソースからのデータに対する動作システムであって、前記データは前記データソースの有形で非一過性のコンピュータ可読媒体に格納され、前記動作は関係型データベースに適用可能なクエリ言語に従って表現されたクエリに基づくものであり、前記システムは、
    クエリを受信する手段と、
    前記クエリに基づいてデータソースを特定する手段であって、前記データソースは前記データソースを管理するシステムと関連付けられている、手段と、
    関係型データベースを管理するシステム以外の実行システムを特定する手段と、
    前記クエリに基づいてクエリプランナに対するリクエストを生成する手段と、
    前記リクエストを前記クエリプランナに提供する手段と、
    前記リクエストに基づいて前記クエリプランナによって生成されたクエリプランを受信する手段であって、前記クエリプランは、関係型データベースを管理するシステムによって行われる1つまたは複数のステップの記述を含む、手段と、
    前記クエリプランに基づいて、データフローグラフをインスタンス化するデータ構造を生成する手段と、
    前記データソースからデータを受信する手段と、
    前記特定された実行システム上で、前記データフローグラフに基づいてプログラムコードを実行する手段と、を含み、
    前記データフローグラフは、
    少なくとも1つの実行すべきオペレーションを表す第1のノードであって、
    前記第1のノードは、実行可能なプログラムコードを呼び出して前記オペレーションを行うために実行システムが使用することのできる情報と関連付けられ、
    前記第1のノードは、データを前記プログラムコードに対して使用可能とするために実行システムが使用することのできる情報と関連付けられ、かつ
    前記オペレーションは、前記クエリプランによって記述された第1のステップに基づいて選択される、第1のノードと、
    実行可能なプログラムコードを呼び出すために実行システムが使用することのできる情報と関連付けられた第2のノードであって、前記実行可能なプログラムコードは、前記クエリプランによって記述された第2のステップに基づいて選択される少なくとも1つのオペレーションを行うためのリクエストが前記データソースを管理する前記システムに送信されるようにする、第2のノードと、を含む、
    システム。
  34. 前記クエリプランによって記述された前記第2のステップに基づいて選択された前記少なくとも1つのオペレーションを行う手段を含む、請求項33に記載のシステム。
  35. 第1のデータフローグラフをインスタンス化する前記データ構造を生成する手段は、前記クエリプランの一部を、前記データソースを管理する前記システムに送信するために適したクエリに変換することを含む、請求項33に記載のシステム。
  36. 前記第2のノードは、前記データソースからの前記データを受信するために実行システムが使用することのできる情報と関連付けられる、請求項33に記載のシステム。
  37. 前記データソースは、関係型データベース表を含む、請求項33に記載のシステム。
  38. 前記データソースは、関係型データベース表以外のデータの一部を含む、請求項33に記載のシステム。
  39. 前記データフローグラフに基づく前記プログラムコードの出力として、前記クエリの結果を受信する手段を含む、請求項33に記載のシステム。
  40. 少なくとも2つデータソースからのデータに対する動作方法であって、前記データは前記データソースそれぞれの有形かつ非一過性のコンピュータ可読媒体に格納され、前記動作は関係型データベースに適用可能なクエリ言語に従って表現されたクエリに基づくものであり、前記動作は関係型データベースを管理するシステム以外の実行システム上で前記クエリを実行することを含み、前記実行することは、
    クエリを受信することと、
    前記クエリに基づいて第1のデータソースを特定することと、
    前記クエリに基づいて、前記第1のデータソースの少なくともいくつかのデータ処理機能と異なる少なくともいくつかのデータ処理機能と関連付けられた第2のデータソースを特定することと、
    関係型データベースを管理するシステム以外の実行システムを特定することと、
    前記クエリに基づいてクエリプランナに対するリクエストを生成することと、
    前記リクエストを前記クエリプランナに提供することと、
    前記リクエストに基づいて前記クエリプランナによって生成されたクエリプランを受信することであって、前記クエリプランは、関係型データベースを管理するシステムによる実施のための1つまたは複数のステップの記述を含む、受信することと、
    実行のための少なくとも1つのデータ処理オペレーションを含むデータフローグラフを生成することであって、前記少なくとも1つのデータ処理オペレーションは、データ選択オペレーション、ソートオペレーション、データ要約オペレーション、又は組み合わせオペレーションのうち、少なくとも1つを含み、前記少なくとも1つのデータ処理オペレーションは、前記クエリプランによって記述された特定のステップに基づいて選択され、前記特定のステップは、データ選択オペレーション、ソートオペレーション、データ要約オペレーション、又は組み合わせオペレーションのうちの前記少なくとも1つに対応する、ことと、
    前記第1のデータソースおよび前記第2のデータソースからデータを受信することと、
    前記特定された実行システム上で、前記データフローグラフに基づいてプログラムコードを実行することと、を含む、
    方法。
  41. 前記データフローグラフは、
    少なくとも1つの実行すべきオペレーションを表す第1のノードであって、
    前記第1のノードは、実行可能なプログラムコードを呼び出して前記オペレーションを行うために実行システムが使用することのできる情報と関連付けられ、
    前記第1のノードは、データを前記プログラムコードに対して使用可能とするために実行システムが使用することのできる情報と関連付けられ、かつ
    前記オペレーションは、前記クエリプランによって記述された第1のステップに基づいて選択される、第1のノードと、
    前記データフローグラフの第2のノードのオペレーションに対する入力データとして提供される、前記第1のノードのオペレーションの出力データを表す少なくとも1つのリンクと、を含む、請求項40に記載の方法。
  42. 前記データフローグラフは、前記第1のデータソースからの前記データを受信するために実行システムが使用することのできる情報と関連付けられた第3のノードと、前記第2のデータソースからの前記データを受信するために実行システムが使用することのできる情報と関連付けられた第4のノードと、を含む、請求項41に記載の方法。
  43. 前記第3のノードは、実行可能なプログラムコードを呼び出すために実行システムが使用することのできる情報と関連付けられ、前記実行可能なプログラムコードは、前記クエリプランによって記述された第2のステップに基づいて選択される少なくとも1つのオペレーションを行うためのリクエストが前記第1のデータソースを管理するシステムに送信されるようにする、請求項42に記載の方法。
  44. 前記クエリプランによって記述された前記第2のステップに基づいて選択された前記少なくとも1つのオペレーションを行うことを含む、請求項43に記載の方法。
  45. 前記クエリプランによって記述された前記第2のステップに基づいて選択された前記少なくとも1つのオペレーションを行うことを含む、請求項43に記載の方法。
  46. 前記データフローグラフに基づいて前記プログラムコードを実行することは、前記データフローグラフのノードと、第2のデータフローグラフのノードとの間のリンクをインスタンス化することを含み、前記第2のデータフローグラフは、前記クエリプランによって記述されたいずれかのステップに基づいて選択されるオペレーション以外の実行すべきオペレーションを表す少なくとも1つのノードを含む、請求項41に記載の方法。
  47. 前記クエリは、実行可能な関数への参照を含み、前記データフローグラフは、前記実行可能な関数を表すノードを含む、請求項41に記載の方法。
  48. 前記第1のデータソースは、関係型データベース表を含む、請求項40に記載の方法。
  49. 前記第2のデータソースは、関係型データベース表以外のデータの一部を含む、請求項48に記載の方法。
  50. 前記第2のデータソースは、フラットファイルを含む、請求項48に記載の方法。
  51. 前記クエリは、SQLクエリを含む、請求項40に記載の方法。
  52. 前記プログラムコードの出力として、前記クエリの結果を受信することを含む、請求項40に記載の方法。
  53. 前記クエリプランのジェネレータは、クエリオプティマイザを含む、請求項40に記載の方法。
  54. 前記クエリプランは、前記クエリ内のパラメータのデータタイプを含む、請求項40に記載の方法。
  55. 前記第1のデータソースは、前記第1のデータソースが格納するデータに対するオペレーションを行うための実行可能な機能性と関連付けられ、前記第2のデータソースは、前記第2のデータソースが格納するデータに対するオペレーションを行うための実行可能な機能性と関連付けられない、請求項40に記載の方法。
  56. 前記クエリに基づいてクエリプランナに対するリクエストを生成することは、
    前記第1のデータソースを反映するフォーマットされたデータ編成を含み、かつ前記第1のデータソースのデータが存在しない、前記第1のデータソースの構造表現を生成することと、
    前記クエリプランナに対する前記リクエストに、前記構造表現を含めることと、を含む、請求項40に記載の方法。
  57. 前記データフローグラフは、前記特定された実行システムによって生成される、請求項40に記載の方法。
  58. 前記データフローグラフは、前記特定された実行システム及び前記関係型データベース以外のシステムによって生成される、請求項40に記載の方法。
  59. 少なくとも2つデータソースからのデータに対する動作システムであって、前記データは前記データソースそれぞれの有形かつ非一過性のコンピュータ可読媒体に格納され、前記動作は関係型データベースに適用可能なクエリ言語に従って表現されたクエリに基づくものであり、前記システムは、
    クエリを受信することと、
    前記クエリに基づいて第1のデータソースを特定することと、
    前記クエリに基づいて、前記第1のデータソースの少なくともいくつかのデータ処理機能と異なる少なくともいくつかのデータ処理機能と関連付けられた第2のデータソースを特定することと、
    関係型データベースを管理するシステム以外の実行システムを特定することと、
    前記クエリに基づいてクエリプランナに対するリクエストを生成することと、
    前記リクエストを前記クエリプランナに提供することと、
    前記リクエストに基づいて前記クエリプランナによって生成されたクエリプランを受信することであって、前記クエリプランは、関係型データベースを管理するシステムによる実施のための1つまたは複数のステップの記述を含む、受信することと、
    実行のための少なくとも1つのデータ処理オペレーションを含むデータフローグラフを生成することであって、前記少なくとも1つのデータ処理オペレーションは、データ選択オペレーション、ソートオペレーション、データ要約オペレーション、又は組み合わせオペレーションのうち、少なくとも1つを含み、前記少なくとも1つのデータ処理オペレーションは、前記クエリプランによって記述された特定のステップに基づいて選択され、前記特定のステップは、データ選択オペレーション、ソートオペレーション、データ要約オペレーション、又は組み合わせオペレーションのうちの前記少なくとも1つに対応する、ことと、
    前記第1のデータソースおよび前記第2のデータソースからデータを受信することと、
    前記特定された実行システム上で、前記データフローグラフに基づいてプログラムコードを実行することと、を行うためのオペレーションを実行するように構成される、
    システム。
  60. 前記第1のデータソースは、関係型データベース表を含む、請求項59に記載のシステム。
  61. 前記第2のデータソースは、関係型データベース表以外のデータの一部を含む、請求項60に記載のシステム。
  62. 前記第2のデータソースは、フラットファイルを含む、請求項60に記載のシステム。
  63. 前記クエリは、SQLクエリを含む、請求項59に記載のシステム。
  64. 前記オペレーションは、前記プログラムコードの出力として、前記クエリの結果を受信することを含む、請求項59に記載のシステム。
  65. 前記第1のデータソースは、前記第1のデータソースが格納するデータに対するオペレーションを行うための実行可能な機能性と関連付けられ、前記第2のデータソースは、前記第2のデータソースが格納するデータに対するオペレーションを行うための実行可能な機能性と関連付けられない、請求項59に記載のシステム。
  66. 少なくとも2つデータソースからのデータに対する動作システムであって、前記データは前記データソースそれぞれの有形かつ非一過性のコンピュータ可読媒体に格納され、前記動作は関係型データベースに適用可能なクエリ言語に従って表現されたクエリに基づくものであり、前記システムは、
    クエリを受信する手段と、
    前記クエリに基づいて第1のデータソースを特定する手段と、
    前記クエリに基づいて、前記第1のデータソースの少なくともいくつかのデータ処理機能と異なる少なくともいくつかのデータ処理機能と関連付けられた第2のデータソースを特定する手段と、
    関係型データベースを管理するシステム以外の実行システムを特定する手段と、
    前記クエリに基づいてクエリプランナに対するリクエストを生成する手段と、
    前記リクエストを前記クエリプランナに提供する手段と、
    前記リクエストに基づいて前記クエリプランナによって生成されたクエリプランを受信する手段であって、前記クエリプランは、関係型データベースを管理するシステムによる実施のための1つまたは複数のステップの記述を含む、手段と、
    実行のための少なくとも1つのデータ処理オペレーションを含むデータフローグラフを生成する手段であって、前記少なくとも1つのデータ処理オペレーションは、データ選択オペレーション、ソートオペレーション、データ要約オペレーション、又は組み合わせオペレーションのうち、少なくとも1つを含み、前記少なくとも1つのデータ処理オペレーションは、前記クエリプランによって記述された特定のステップに基づいて選択され、前記特定のステップは、データ選択オペレーション、ソートオペレーション、データ要約オペレーション、又は組み合わせオペレーションのうちの前記少なくとも1つに対応する、手段と、
    前記第1のデータソースおよび前記第2のデータソースからデータを受信する手段と、
    前記特定された実行システム上で、前記データフローグラフに基づいてプログラムコードを実行する手段と、を含む、
    システム。
  67. 前記第1のデータソースは、関係型データベース表を含む、請求項66に記載のシステム。
  68. 前記第2のデータソースは、関係型データベース表以外のデータの一部を含む、請求項67に記載のシステム。
  69. 前記第2のデータソースは、フラットファイルを含む、請求項67に記載のシステム。
  70. 前記クエリは、SQLクエリを含む、請求項66に記載のシステム。
  71. 前記プログラムコードの出力として、前記クエリの結果を受信する手段を含む、請求項66に記載のシステム。
  72. 前記第1のデータソースは、前記第1のデータソースが格納するデータに対するオペレーションを行うための実行可能な機能性と関連付けられ、前記第2のデータソースは、前記第2のデータソースが格納するデータに対するオペレーションを行うための実行可能な機能性と関連付けられない、請求項66に記載のシステム。
  73. 少なくとも2つデータソースからのデータに対する動作のためのコンピュータ実行可能な命令を含む非一過性のコンピュータ可読媒体であって、前記データは前記データソースそれぞれの有形かつ非一過性のコンピュータ可読媒体に格納され、前記動作は関係型データベースに適用可能なクエリ言語に従って表現されたクエリに基づくものであり、前記動作は関係型データベースを管理するシステム以外の実行システム上で前記クエリを実行することを含み、前記実行可能な命令は、
    クエリを受信することと、
    前記クエリに基づいて第1のデータソースを特定することと、
    前記クエリに基づいて、前記第1のデータソースの少なくともいくつかのデータ処理機能と異なる少なくともいくつかのデータ処理機能と関連付けられた第2のデータソースを特定することと、
    関係型データベースを管理するシステム以外の実行システムを特定することと、
    前記クエリに基づいてクエリプランナに対するリクエストを生成することと、
    前記リクエストを前記クエリプランナに提供することと、
    前記リクエストに基づいて前記クエリプランナによって生成されたクエリプランを受信することであって、前記クエリプランは、関係型データベースを管理するシステムによる実施のための1つまたは複数のステップの記述を含む、受信することと、
    実行のための少なくとも1つのデータ処理オペレーションを含むデータフローグラフを生成することであって、前記少なくとも1つのデータ処理オペレーションは、データ選択オペレーション、ソートオペレーション、データ要約オペレーション、又は組み合わせオペレーションのうち、少なくとも1つを含み、前記少なくとも1つのデータ処理オペレーションは、前記クエリプランによって記述された特定のステップに基づいて選択され、前記特定のステップは、データ選択オペレーション、ソートオペレーション、データ要約オペレーション、又は組み合わせオペレーションのうちの前記少なくとも1つに対応する、ことと、
    前記第1のデータソースおよび前記第2のデータソースからデータを受信することと、
    前記特定された実行システム上で、前記データフローグラフに基づいてプログラムコードを実行することと、を含むステップをコンピュータに実行させる、
    コンピュータ可読媒体。
  74. 前記データフローグラフは、
    少なくとも1つの実行すべきオペレーションを表す第1のノードであって、
    前記第1のノードは、実行可能なプログラムコードを呼び出して前記オペレーションを行うために実行システムが使用することのできる情報と関連付けられ、
    前記第1のノードは、データを前記プログラムコードに対して使用可能とするために実行システムが使用することのできる情報と関連付けられ、かつ
    前記オペレーションは、前記クエリプランによって記述された第1のステップに基づいて選択される、第1のノードと、
    前記データフローグラフの第2のノードのオペレーションに対する入力データとして提供される、前記第1のノードのオペレーションの出力データを表す少なくとも1つのリンクと、を含む、請求項73に記載のコンピュータ可読媒体。
  75. 前記第1のデータソースは、関係型データベース表を含む、請求項73に記載のコンピュータ可読媒体。
  76. 前記第2のデータソースは、関係型データベース表以外のデータの一部を含む、請求項75に記載のコンピュータ可読媒体。
  77. 前記第2のデータソースは、フラットファイルを含む、請求項75に記載のコンピュータ可読媒体。
  78. 前記オペレーションは、前記プログラムコードの出力として、前記クエリの結果を受信することを含む、請求項73に記載のコンピュータ可読媒体。
  79. 前記第1のデータソースは、前記第1のデータソースが格納するデータに対するオペレーションを行うための実行可能な機能性と関連付けられ、前記第2のデータソースは、前記第2のデータソースが格納するデータに対するオペレーションを行うための実行可能な機能性と関連付けられない、請求項73に記載のコンピュータ可読媒体。
JP2014509333A 2011-05-02 2012-04-30 データクエリの管理 Active JP6133274B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/098,823 US9116955B2 (en) 2011-05-02 2011-05-02 Managing data queries
US13/098,823 2011-05-02
PCT/US2012/035762 WO2012151149A2 (en) 2011-05-02 2012-04-30 Managing data queries

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2017082509A Division JP6364107B2 (ja) 2011-05-02 2017-04-19 データクエリの管理

Publications (3)

Publication Number Publication Date
JP2014519080A JP2014519080A (ja) 2014-08-07
JP2014519080A5 JP2014519080A5 (ja) 2015-06-18
JP6133274B2 true JP6133274B2 (ja) 2017-05-24

Family

ID=46124726

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2014509333A Active JP6133274B2 (ja) 2011-05-02 2012-04-30 データクエリの管理
JP2017082509A Active JP6364107B2 (ja) 2011-05-02 2017-04-19 データクエリの管理

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2017082509A Active JP6364107B2 (ja) 2011-05-02 2017-04-19 データクエリの管理

Country Status (8)

Country Link
US (3) US9116955B2 (ja)
EP (2) EP2705446A2 (ja)
JP (2) JP6133274B2 (ja)
KR (1) KR101915591B1 (ja)
CN (2) CN107622103B (ja)
AU (1) AU2012250970B2 (ja)
CA (3) CA3022050C (ja)
WO (1) WO2012151149A2 (ja)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9665620B2 (en) 2010-01-15 2017-05-30 Ab Initio Technology Llc Managing data queries
US9116955B2 (en) 2011-05-02 2015-08-25 Ab Initio Technology Llc Managing data queries
AU2013295864B2 (en) 2012-07-24 2017-09-14 Ab Initio Technology Llc Mapping entities in data models
US9880815B2 (en) * 2013-01-22 2018-01-30 Aptitude Software Limited SQL visualizer
US9659043B2 (en) * 2013-02-07 2017-05-23 Enigma Technologies, Inc. Data system and method
US20140280042A1 (en) * 2013-03-13 2014-09-18 Sap Ag Query processing system including data classification
CA2932763C (en) 2013-12-05 2022-07-12 Ab Initio Technology Llc Managing interfaces for dataflow graphs composed of sub-graphs
JP6488317B2 (ja) 2014-03-14 2019-03-20 アビニシオ テクノロジー エルエルシー キー指定される実体の属性のマッピング
US9607073B2 (en) * 2014-04-17 2017-03-28 Ab Initio Technology Llc Processing data from multiple sources
US9805080B2 (en) 2014-08-22 2017-10-31 Xcalar, Inc. Data driven relational algorithm formation for execution against big data
US10108744B2 (en) * 2014-10-07 2018-10-23 Oracle International Corporation Administrative tool and physical execution plan interface for plug-in architecture of business intelligence platform using data source cartridges
US10296630B2 (en) 2014-10-10 2019-05-21 Salesforce.Com, Inc. Graph representation of data extraction for use with a data repository
US10437819B2 (en) * 2014-11-14 2019-10-08 Ab Initio Technology Llc Processing queries containing a union-type operation
US10417281B2 (en) * 2015-02-18 2019-09-17 Ab Initio Technology Llc Querying a data source on a network
CN110149801A (zh) * 2015-05-05 2019-08-20 华为技术有限公司 用于在处理系统中进行数据流图转换的系统和方法
US10657134B2 (en) * 2015-08-05 2020-05-19 Ab Initio Technology Llc Selecting queries for execution on a stream of real-time data
US9330138B1 (en) 2015-09-18 2016-05-03 Linkedin Corporation Translating queries into graph queries using primitives
US9378239B1 (en) * 2015-09-18 2016-06-28 Linkedin Corporation Verifying graph-based queries
US9378303B1 (en) 2015-09-18 2016-06-28 Linkedin Corporation Representing compound relationships in a graph database
US9535963B1 (en) * 2015-09-18 2017-01-03 Linkedin Corporation Graph-based queries
US9378241B1 (en) * 2015-09-18 2016-06-28 Linkedin Corporation Concatenated queries based on graph-query results
US10942922B2 (en) 2015-09-28 2021-03-09 Microsoft Technology Licensing, Llc Generation of data flow from syntax tree
US9514247B1 (en) 2015-10-28 2016-12-06 Linkedin Corporation Message passing in a distributed graph database
US10210236B2 (en) 2015-11-23 2019-02-19 Ab Initio Technology Llc Storing and retrieving data of a data cube
US10671669B2 (en) 2015-12-21 2020-06-02 Ab Initio Technology Llc Sub-graph interface generation
WO2017131623A1 (en) * 2016-01-26 2017-08-03 Hewlett Packard Enterprise Development Lp Performing operations on a graph
US10180992B2 (en) 2016-03-01 2019-01-15 Microsoft Technology Licensing, Llc Atomic updating of graph database index structures
WO2017223464A1 (en) 2016-06-23 2017-12-28 Schneider Electric USA, Inc. Contextual-characteristic data driven sequential federated query methods for distributed systems
US10789295B2 (en) 2016-09-28 2020-09-29 Microsoft Technology Licensing, Llc Pattern-based searching of log-based representations of graph databases
US10754859B2 (en) 2016-10-28 2020-08-25 Microsoft Technology Licensing, Llc Encoding edges in graph databases
US11016973B2 (en) * 2016-11-29 2021-05-25 Sap Se Query plan execution engine
US10445321B2 (en) 2017-02-21 2019-10-15 Microsoft Technology Licensing, Llc Multi-tenant distribution of graph database caches
WO2018183676A1 (en) * 2017-03-29 2018-10-04 Ab Initio Technology Llc Systems and methods for performing data processing operations using variable level parallelism
US10540364B2 (en) 2017-05-02 2020-01-21 Home Box Office, Inc. Data delivery architecture for transforming client response data
US11055352B1 (en) * 2017-06-08 2021-07-06 Amazon Technologies, Inc. Engine independent query plan optimization
US10671671B2 (en) 2017-06-09 2020-06-02 Microsoft Technology Licensing, Llc Supporting tuples in log-based representations of graph databases
US10445370B2 (en) 2017-06-09 2019-10-15 Microsoft Technology Licensing, Llc Compound indexes for graph databases
US10628492B2 (en) 2017-07-20 2020-04-21 Microsoft Technology Licensing, Llc Distributed graph database writes
US11188434B2 (en) * 2017-12-08 2021-11-30 Ab Initio Technology Llc Systems and methods for monitoring execution of structured query language (SQL) queries
US11423031B2 (en) 2018-02-22 2022-08-23 Microsoft Technology Licensing, Llc Standing query creation using store query
WO2019176011A1 (ja) * 2018-03-14 2019-09-19 日本電気株式会社 検索文活用装置および検索文活用方法
US10983997B2 (en) 2018-03-28 2021-04-20 Microsoft Technology Licensing, Llc Path query evaluation in graph databases
US20190370407A1 (en) * 2018-05-30 2019-12-05 Ab Initio Technology Llc Systems and methods for dataflow graph optimization
US10922145B2 (en) 2018-09-04 2021-02-16 Target Brands, Inc. Scheduling software jobs having dependencies
JP7242343B2 (ja) * 2019-02-25 2023-03-20 Kddi株式会社 分析装置及び分析方法
US11093223B2 (en) 2019-07-18 2021-08-17 Ab Initio Technology Llc Automatically converting a program written in a procedural programming language into a dataflow graph and related systems and methods
US11567995B2 (en) 2019-07-26 2023-01-31 Microsoft Technology Licensing, Llc Branch threading in graph databases
US11113267B2 (en) 2019-09-30 2021-09-07 Microsoft Technology Licensing, Llc Enforcing path consistency in graph database path query evaluation
KR102177064B1 (ko) 2019-11-18 2020-11-10 재단법인대구경북과학기술원 다항 조인 연산자를 이용한 쿼리 처리 방법 및 그 장치
BR112022014874A2 (pt) * 2020-01-28 2022-09-20 Ab Initio Technology Llc Editor para gerar gráficos computacionais
US20210318851A1 (en) * 2020-04-09 2021-10-14 Virtualitics, Inc. Systems and Methods for Dataset Merging using Flow Structures
KR102141640B1 (ko) * 2020-04-13 2020-08-05 주식회사 데이터월드 실시간 네트워크 데이터 관리 방법 및 이를 실행하는 서버
WO2022165321A1 (en) 2021-01-31 2022-08-04 Ab Initio Technology Llc Data processing system with manipulation of logical dataset groups
US20230073887A1 (en) * 2021-09-09 2023-03-09 Microsoft Technology Licensing, Llc Standing query to reactive database
WO2023056003A1 (en) 2021-09-30 2023-04-06 Ab Initio Technology Llc Systems and methods for performing data processing operations using variable level parallelism
US20240143590A1 (en) * 2022-10-28 2024-05-02 Microsoft Technology Licensing, Llc Distribution of federated graph queries using schemas

Family Cites Families (149)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4586137A (en) 1982-10-18 1986-04-29 Dresser Industries, Inc. Method for generating variable well logging data composites
JPH01108638A (ja) 1987-10-21 1989-04-25 Hitachi Ltd 並列化コンパイル方式
JP2738692B2 (ja) 1988-01-29 1998-04-08 株式会社日立製作所 並列化コンパイル方法
US5072371A (en) 1989-03-01 1991-12-10 The United States Of America As Represented By The United States Department Of Energy Method for simultaneous overlapped communications between neighboring processors in a multiple
US5121494A (en) 1989-10-05 1992-06-09 Ibm Corporation Joining two database relations on a common field in a parallel relational database field
US5367619A (en) 1990-04-27 1994-11-22 Eaton Corporation Electronic data entry system employing an expert system to facilitate generation of electronic data forms with complex interrelationships between fields and subforms
JPH0816429B2 (ja) 1990-10-16 1996-02-21 トステム株式会社 シャッターの非常時脱出機構
US5347639A (en) 1991-07-15 1994-09-13 International Business Machines Corporation Self-parallelizing computer system and method
US5632022A (en) 1991-11-13 1997-05-20 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Encyclopedia of software components
US5313584A (en) 1991-11-25 1994-05-17 Unisys Corporation Multiple I/O processor system
JPH05257709A (ja) 1992-03-16 1993-10-08 Hitachi Ltd 並列化判別方法およびそれを用いた並列化支援方法
US5432940A (en) 1992-11-02 1995-07-11 Borland International, Inc. System and methods for improved computer-based training
US5574898A (en) 1993-01-08 1996-11-12 Atria Software, Inc. Dynamic software version auditor which monitors a process to provide a list of objects that are accessed
US5446915A (en) 1993-05-25 1995-08-29 Intel Corporation Parallel processing system virtual connection method and apparatus with protection and flow control
US5475842A (en) 1993-08-11 1995-12-12 Xerox Corporation Method of compilation optimization using an N-dimensional template for relocated and replicated alignment of arrays in data-parallel programs for reduced data communication during execution
US5600833A (en) 1993-09-17 1997-02-04 Digital Equipment Corp. Attribute portion based document retrieval system with system query language interface
JP4050339B2 (ja) 1994-04-28 2008-02-20 株式会社東芝 並行プログラム作成支援装置及び並行プログラム作成方法並びに並行プログラム実行装置
US5588150A (en) 1994-09-29 1996-12-24 International Business Machines Corporation Push down optimization in a distributed, multi-database system
US5768564A (en) 1994-10-07 1998-06-16 Tandem Computers Incorporated Method and apparatus for translating source code from one high-level computer language to another
FI98690C (fi) 1994-10-18 1997-07-25 Nokia Telecommunications Oy Menetelmä alueryhmäpuhelun muodostamiseksi matkaviestinjärjestelmässä ja matkaviestinjärjestelmä
US5734886A (en) 1994-11-16 1998-03-31 Lucent Technologies Inc. Database dependency resolution method and system for identifying related data files
FI98973C (fi) 1994-11-22 1997-09-10 Nokia Telecommunications Oy Menetelmä ryhmätietojen ylläpitämiseksi matkaviestinjärjestelmässä ja matkaviestinjärjestelmä
US5546576A (en) * 1995-02-17 1996-08-13 International Business Machines Corporation Query optimizer system that detects and prevents mutating table violations of database integrity in a query before execution plan generation
US5619692A (en) 1995-02-17 1997-04-08 International Business Machines Corporation Semantic optimization of query order requirements using order detection by normalization in a query compiler system
FI100215B (fi) 1995-03-17 1997-10-15 Nokia Telecommunications Oy Matkaviestijärjestelmän tilaajatietojen päivittäminen
US5706509A (en) 1995-04-28 1998-01-06 Intel Corporation Application independent record level synchronization
US5678044A (en) 1995-06-02 1997-10-14 Electronic Data Systems Corporation System and method for improved rehosting of software systems
US5682537A (en) 1995-08-31 1997-10-28 Unisys Corporation Object lock management system with improved local lock management and global deadlock detection in a parallel data processing system
US5819021A (en) 1995-12-11 1998-10-06 Ab Initio Software Corporation Overpartitioning system and method for increasing checkpoints in component-based parallel applications
US5712971A (en) 1995-12-11 1998-01-27 Ab Initio Software Corporation Methods and systems for reconstructing the state of a computation
US5909681A (en) 1996-03-25 1999-06-01 Torrent Systems, Inc. Computer system and computerized method for partitioning data for parallel processing
US6311265B1 (en) 1996-03-25 2001-10-30 Torrent Systems, Inc. Apparatuses and methods for programming parallel computers
US5799149A (en) 1996-06-17 1998-08-25 International Business Machines Corporation System partitioning for massively parallel processors
US5870743A (en) 1996-06-24 1999-02-09 Oracle Corporation Method and apparatus for parallelizing operations that create a table
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
JPH10232875A (ja) 1997-02-19 1998-09-02 Hitachi Ltd データベース管理方法および並列データベース管理システム
US6330008B1 (en) 1997-02-24 2001-12-11 Torrent Systems, Inc. Apparatuses and methods for monitoring performance of parallel computing
US5999729A (en) 1997-03-06 1999-12-07 Continuum Software, Inc. System and method for developing computer programs for execution on parallel processing systems
US5956074A (en) 1997-03-11 1999-09-21 Sclafani; Peter J. Cable television return display unit
JP3155991B2 (ja) 1997-04-09 2001-04-16 日本アイ・ビー・エム株式会社 集約演算実行方法及びコンピュータ・システム
US5956704A (en) 1997-06-05 1999-09-21 Oracle Corporation Method and apparatus for parallelizing operations that insert data into an existing data container
US6092062A (en) 1997-06-30 2000-07-18 International Business Machines Corporation Relational database query optimization to perform query evaluation plan, pruning based on the partition properties
US5943666A (en) * 1997-09-15 1999-08-24 International Business Machines Corporation Method and apparatus for optimizing queries across heterogeneous databases
US6077313A (en) 1997-10-22 2000-06-20 Microsoft Corporation Type partitioned dataflow analyses
US6295518B1 (en) 1997-12-09 2001-09-25 Mci Communications Corporation System and method for emulating telecommunications network devices
US6266804B1 (en) 1997-12-23 2001-07-24 Ab Initio Software Corporation Method for analyzing capacity of parallel processing systems
US6625593B1 (en) * 1998-06-29 2003-09-23 International Business Machines Corporation Parallel query optimization strategies for replicated and partitioned tables
US6205465B1 (en) 1998-07-22 2001-03-20 Cisco Technology, Inc. Component extensible parallel execution of multiple threads assembled from program components specified with partial inter-component sequence information
US6453464B1 (en) 1998-09-03 2002-09-17 Legacyj. Corp., Inc. Method and apparatus for converting COBOL to Java
US6378126B2 (en) 1998-09-29 2002-04-23 International Business Machines Corporation Compilation of embedded language statements in a source code program
JP2000148699A (ja) 1998-11-06 2000-05-30 Nec Corp ネットワークマネージメントシステム
JP4406944B2 (ja) 1998-11-11 2010-02-03 株式会社日立製作所 計算機システム及び問合せに対する処理分散システム
US7047232B1 (en) 1999-01-13 2006-05-16 Ab Initio Software Corporation Parallelizing applications of script-driven tools
US7080062B1 (en) 1999-05-18 2006-07-18 International Business Machines Corporation Optimizing database queries using query execution plans derived from automatic summary table determining cost based queries
US6560593B1 (en) 1999-07-20 2003-05-06 Computer Associates Think, Inc. Method and apparatus for viewing the effect of changes to an index for a database table on an optimization plan for a database query
JP4552242B2 (ja) 1999-10-06 2010-09-29 株式会社日立製作所 仮想表インタフェースと該インタフェースを用いた問合せ処理システム及び方法
US6615203B1 (en) 1999-12-17 2003-09-02 International Business Machines Corporation Method, computer program product, and system for pushdown analysis during query plan generation
US6947934B1 (en) 2000-02-16 2005-09-20 International Business Machines Corporation Aggregate predicates and search in a database management system
US7164422B1 (en) 2000-07-28 2007-01-16 Ab Initio Software Corporation Parameterized graphs with conditional components
US6785668B1 (en) 2000-11-28 2004-08-31 Sas Institute Inc. System and method for data flow analysis of complex data filters
US8412746B2 (en) 2001-05-25 2013-04-02 International Business Machines Corporation Method and system for federated querying of data sources
US6877000B2 (en) 2001-08-22 2005-04-05 International Business Machines Corporation Tool for converting SQL queries into portable ODBC
US6725212B2 (en) 2001-08-31 2004-04-20 International Business Machines Corporation Platform-independent method and system for graphically presenting the evaluation of a query in a database management system
JP2003099441A (ja) 2001-09-21 2003-04-04 Hitachi Ltd データ検索手順探索方法
US6915290B2 (en) * 2001-12-11 2005-07-05 International Business Machines Corporation Database query optimization apparatus and method that represents queries as graphs
US7409474B2 (en) * 2002-06-27 2008-08-05 Broadcom Corporation Method and system for rate adaptation
US7167850B2 (en) 2002-10-10 2007-01-23 Ab Initio Software Corporation Startup and control of graph-based computation
US7953891B2 (en) 2003-03-18 2011-05-31 Microsoft Corporation Systems and methods for scheduling data flow execution based on an arbitrary graph describing the desired data flow
CA2429910A1 (en) 2003-05-27 2004-11-27 Cognos Incorporated System and method of query transformation
US7249120B2 (en) 2003-06-27 2007-07-24 Microsoft Corporation Method and apparatus for selecting candidate statistics to estimate the selectivity value of the conditional selectivity expression in optimize queries based on a set of predicates that each reference a set of relational database tables
US20050038788A1 (en) 2003-08-14 2005-02-17 International Business Machines Corporation Annotation security to prevent the divulgence of sensitive information
US20050177557A1 (en) 2003-09-06 2005-08-11 Oracle International Corporation Automatic prevention of run-away query execution
WO2005028627A2 (en) * 2003-09-19 2005-03-31 Netezza Corporation Performing sequence analysis as a relational join
US7165063B2 (en) 2003-11-19 2007-01-16 International Business Machines Corporation Context quantifier transformation in XML query rewrite
US7133861B2 (en) 2003-12-04 2006-11-07 International Business Machines Corporation Query access plan rebuilds
US7676453B2 (en) * 2004-04-22 2010-03-09 Oracle International Corporation Partial query caching
US7930432B2 (en) 2004-05-24 2011-04-19 Microsoft Corporation Systems and methods for distributing a workplan for data flow execution based on an arbitrary graph describing the desired data flow
CN100518079C (zh) * 2004-09-30 2009-07-22 北京航空航天大学 分布式性能数据采集方法
US7899833B2 (en) 2004-11-02 2011-03-01 Ab Initio Technology Llc Managing related data objects
US7461052B2 (en) 2004-12-06 2008-12-02 International Business Machines Corporation Abstract query plan
US7890532B2 (en) 2004-12-15 2011-02-15 Microsoft Corporation Complex data access
US7359922B2 (en) 2004-12-22 2008-04-15 Ianywhere Solutions, Inc. Database system and methodology for generalized order optimization
US20060265362A1 (en) 2005-05-18 2006-11-23 Content Analyst Company, Llc Federated queries and combined text and relational data
US7856523B2 (en) * 2005-06-01 2010-12-21 Microsoft Corporation Random Access Memory (RAM) based Content Addressable Memory (CAM) management
US8935273B2 (en) * 2005-06-23 2015-01-13 International Business Machines Corporation Method of processing and decomposing a multidimensional query against a relational data source
US7584205B2 (en) 2005-06-27 2009-09-01 Ab Initio Technology Llc Aggregating data with complex operations
US7877350B2 (en) 2005-06-27 2011-01-25 Ab Initio Technology Llc Managing metadata for graph-based computations
CA2519001A1 (en) * 2005-09-13 2007-03-13 Cognos Incorporated System and method of data agnostic business intelligence query
CA2519010A1 (en) * 2005-09-13 2007-03-13 Cognos Incorporated Query framework system and method
US20070067274A1 (en) 2005-09-16 2007-03-22 International Business Machines Corporation Hybrid push-down/pull-up of unions with expensive operations in a federated query processor
WO2007061430A1 (en) 2005-11-22 2007-05-31 Bea Systems, Inc. System and method for translating sql queries into xml query language
US7464084B2 (en) 2006-01-30 2008-12-09 International Business Machines Corporation Method for performing an inexact query transformation in a heterogeneous environment
US7945562B2 (en) 2006-03-15 2011-05-17 Oracle International Corporation Join predicate push-down optimizations
US7870556B2 (en) 2006-05-16 2011-01-11 Ab Initio Technology Llc Managing computing resources in graph-based computations
CN101501687B (zh) 2006-06-01 2013-02-13 梅迪尔雷夫默斯特尔和雷夫通信与信息技术Oeg公司 控制关系数据库系统的方法
WO2008021953A2 (en) 2006-08-10 2008-02-21 Ab Initio Software Llc Distributing services in graph-based computations
JP4872529B2 (ja) 2006-08-22 2012-02-08 株式会社日立製作所 リバースエンジニアリング支援方法
TWI348139B (en) 2006-08-24 2011-09-01 Wintek Corp A lcd scan lines driving method
JP2008158664A (ja) 2006-12-21 2008-07-10 Sony Corp 通信システム、サーバ、通信端末及び通信方法
US8069129B2 (en) 2007-04-10 2011-11-29 Ab Initio Technology Llc Editing and compiling business rules
US8122088B2 (en) 2007-06-28 2012-02-21 International Business Machines Corporation Adding personal note capabilities to text exchange clients
US9424315B2 (en) * 2007-08-27 2016-08-23 Teradata Us, Inc. Methods and systems for run-time scheduling database operations that are executed in hardware
US20100005077A1 (en) * 2008-07-07 2010-01-07 Kickfire, Inc. Methods and systems for generating query plans that are compatible for execution in hardware
JP5453273B2 (ja) 2007-09-20 2014-03-26 アビニシオ テクノロジー エルエルシー グラフベース計算におけるデータフロー管理
US8527976B2 (en) * 2007-11-14 2013-09-03 Nec Laboratories America, Inc. System and method for generating error traces for concurrency bugs
CN101436192B (zh) 2007-11-16 2011-03-16 国际商业机器公司 用于优化针对垂直存储式数据库的查询的方法和设备
US9165032B2 (en) * 2007-11-21 2015-10-20 Hewlett-Packard Development Company, L.P. Allocation of resources for concurrent query execution via adaptive segmentation
US20090198703A1 (en) * 2008-01-31 2009-08-06 Hewlett-Packard Development Company, L.P. Intelligent data storage system
US9760612B2 (en) * 2008-02-26 2017-09-12 Ab Initio Technology, Llc Graphic representations of data relationships
US7933916B2 (en) 2008-02-28 2011-04-26 Microsoft Corporation Querying nonSQL data stores with a SQL-style language
US8537160B2 (en) 2008-03-05 2013-09-17 Microsoft Corporation Generating distributed dataflow graphs
JP2009217405A (ja) 2008-03-07 2009-09-24 Nec Corp ジョブネットワーク自動生成方式及びプログラム
US8538985B2 (en) 2008-03-11 2013-09-17 International Business Machines Corporation Efficient processing of queries in federated database systems
JP5053434B2 (ja) 2008-04-11 2012-10-17 シャープ株式会社 表示装置および表示装置の駆動方法
US7974967B2 (en) 2008-04-15 2011-07-05 Sap Ag Hybrid database system using runtime reconfigurable hardware
KR20100135789A (ko) * 2008-04-16 2010-12-27 인터내셔널 비지네스 머신즈 코포레이션 질의 처리 시각화 시스템 및 방법과 컴퓨터 프로그램 제품
US20100057695A1 (en) 2008-08-28 2010-03-04 Microsoft Corporation Post-processing search results on a client computer
US7917463B2 (en) 2008-10-10 2011-03-29 Business.Com, Inc. System and method for data warehousing and analytics on a distributed file system
US20100121868A1 (en) 2008-11-07 2010-05-13 Yann Le Biannic Converting a database query to a multi-dimensional expression query
US9218209B2 (en) * 2008-12-31 2015-12-22 Pivotal Software, Inc. Apparatus and method for parallel processing of a query
US8666966B2 (en) 2009-01-30 2014-03-04 Hewlett-Packard Development Company, L.P. Providing parallel result streams for database queries
JP4659888B2 (ja) * 2009-02-13 2011-03-30 株式会社日立製作所 データベース処理システム、計算機及びデータベース処理方法
KR101730513B1 (ko) 2009-02-13 2017-04-26 아브 이니티오 테크놀로지 엘엘시 태스크 실행 관리
US20100241893A1 (en) * 2009-03-18 2010-09-23 Eric Friedman Interpretation and execution of a customizable database request using an extensible computer process and an available computing environment
US8392398B2 (en) 2009-07-29 2013-03-05 International Business Machines Corporation Query optimization over graph data streams
US9477778B2 (en) 2009-08-21 2016-10-25 Oracle International Corporation XML query optimization with order analysis of XML schema
US9064047B2 (en) 2009-09-24 2015-06-23 International Business Machines Corporation Parallel processing of ETL jobs involving extensible markup language documents
US8620903B2 (en) * 2009-11-04 2013-12-31 Nec Laboratories America, Inc. Database distribution system and methods for scale-out applications
US8688683B2 (en) 2009-11-30 2014-04-01 Business Objects Software Ltd. Query plan reformulation
US8555263B2 (en) 2010-01-20 2013-10-08 Aetna Inc. System and method for code automation
US8204903B2 (en) 2010-02-16 2012-06-19 Microsoft Corporation Expressing and executing semantic queries within a relational database
US9286370B2 (en) 2010-02-24 2016-03-15 International Business Machines Corporation Viewing a dimensional cube as a virtual data source
US8555265B2 (en) 2010-05-04 2013-10-08 Google Inc. Parallel processing of data
US9495427B2 (en) * 2010-06-04 2016-11-15 Yale University Processing of data using a database system in communication with a data processing framework
WO2011159759A1 (en) 2010-06-15 2011-12-22 Ab Initio Technology Llc Dynamically loading graph-based computations
US8326821B2 (en) 2010-08-25 2012-12-04 International Business Machines Corporation Transforming relational queries into stream processing
JP5199317B2 (ja) * 2010-08-25 2013-05-15 株式会社日立製作所 データベース処理方法、データベース処理システム及びデータベースサーバ
US9128983B2 (en) 2010-10-13 2015-09-08 Aol Inc. Systems and methods for query optimization
US20120246158A1 (en) * 2011-03-25 2012-09-27 Microsoft Corporation Co-range partition for query plan optimization and data-parallel programming model
US9116955B2 (en) 2011-05-02 2015-08-25 Ab Initio Technology Llc Managing data queries
US8782081B2 (en) 2011-05-11 2014-07-15 Google Inc. Query template definition and transformation
US9177021B2 (en) * 2011-06-09 2015-11-03 International Business Machines Corporation Relational query planning for non-relational data sources
US9449030B2 (en) 2011-06-30 2016-09-20 International Business Machines Corporation Method for native program to inherit same transaction content when invoked by primary program running in separate environment
US9177022B2 (en) 2011-11-02 2015-11-03 Microsoft Technology Licensing, Llc User pipeline configuration for rule-based query transformation, generation and result display
US9317551B1 (en) 2012-03-23 2016-04-19 The Mathworks, Inc. Transforming a search query into a format understood by a technical computing environment (TCE)-based search engine
US9182957B2 (en) 2012-07-10 2015-11-10 Loring Craymer Method and system for automated improvement of parallelism in program compilation
AU2013295864B2 (en) 2012-07-24 2017-09-14 Ab Initio Technology Llc Mapping entities in data models
US9135301B2 (en) 2013-03-14 2015-09-15 Oracle International Corporation Pushdown of sorting and set operations (union, intersection, minus) to a large number of low-power cores in a heterogeneous system
US9633104B2 (en) 2013-05-03 2017-04-25 Sas Institute Inc. Methods and systems to operate on group-by sets with high cardinality

Also Published As

Publication number Publication date
US20170132281A1 (en) 2017-05-11
CN103562910A (zh) 2014-02-05
JP2014519080A (ja) 2014-08-07
WO2012151149A3 (en) 2013-06-20
KR20140014123A (ko) 2014-02-05
CA2828914A1 (en) 2012-11-08
AU2012250970B2 (en) 2015-08-13
US9576028B2 (en) 2017-02-21
CA3022073C (en) 2019-11-26
US9116955B2 (en) 2015-08-25
CA2828914C (en) 2019-09-24
JP2017130236A (ja) 2017-07-27
KR101915591B1 (ko) 2019-01-07
WO2012151149A2 (en) 2012-11-08
US20120284255A1 (en) 2012-11-08
CA3022050C (en) 2023-11-14
CA3022073A1 (en) 2012-11-08
CN103562910B (zh) 2017-09-22
CN107622103B (zh) 2021-12-28
JP6364107B2 (ja) 2018-07-25
EP2705446A2 (en) 2014-03-12
EP4216069A1 (en) 2023-07-26
CN107622103A (zh) 2018-01-23
WO2012151149A4 (en) 2013-08-08
US10521427B2 (en) 2019-12-31
CA3022050A1 (en) 2012-11-08
US20150169687A1 (en) 2015-06-18
AU2012250970A1 (en) 2013-05-02

Similar Documents

Publication Publication Date Title
JP6364107B2 (ja) データクエリの管理
JP6578333B2 (ja) データクエリの管理
AU2017202899B2 (en) Managing data queries

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150427

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150427

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160324

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160622

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160823

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160912

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170223

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20170324

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170419

R150 Certificate of patent or registration of utility model

Ref document number: 6133274

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250