JP2017535869A - 和結合型操作を含むクエリの処理 - Google Patents

和結合型操作を含むクエリの処理 Download PDF

Info

Publication number
JP2017535869A
JP2017535869A JP2017525332A JP2017525332A JP2017535869A JP 2017535869 A JP2017535869 A JP 2017535869A JP 2017525332 A JP2017525332 A JP 2017525332A JP 2017525332 A JP2017525332 A JP 2017525332A JP 2017535869 A JP2017535869 A JP 2017535869A
Authority
JP
Japan
Prior art keywords
data
data set
computer program
query
union
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.)
Granted
Application number
JP2017525332A
Other languages
English (en)
Other versions
JP6787889B2 (ja
JP2017535869A5 (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 JP2017535869A publication Critical patent/JP2017535869A/ja
Publication of JP2017535869A5 publication Critical patent/JP2017535869A5/ja
Application granted granted Critical
Publication of JP6787889B2 publication Critical patent/JP6787889B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • G06F16/24544Join order 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/2433Query languages
    • G06F16/244Grouping and aggregation
    • 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
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code

Landscapes

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

Abstract

とりわけ、SQLクエリに基づいてコンピュータプログラムを生成する方法は、第1のデータソースに記憶されている第1のデータセットへの参照を含み、第1のデータソースとは異なる第2のデータソースに記憶されている第2のデータセットへの参照を含むSQLクエリを受信することと、SQLクエリが2つ以上のコマンドを含み、当該コマンドが第1の和結合型操作と第1の集約操作とを含むと判断することと、第1の和結合型操作が第1のデータセットからのデータの少なくとも一部分に適用され、第2のデータセットからのデータの少なくとも一部分に適用されることをSQLクエリが記述していると判断することと、第1の集約操作が第1の和結合型操作の結果として得られるデータに適用されることをSQLクエリが記述していると判断することと、コンピュータプログラムを生成することとを含む。【選択図】 図2

Description

優先権主張
本出願は、2015年6月22日に出願された米国特許出願第14/746188号に対する優先権を主張するものであり、同出願は2014年11月14日に出願された米国特許出願第62/079922号に対する優先権を主張するものであり、両出願の内容全体が参照により本明細書に取り入れられる。
本明細書は、和結合型操作(union−type operation)を含むクエリ(query)の処理に関する。
データソース(data source)に対するクエリはそのデータソースから取り出すべきデータを指定するものである。クエリはデータソース(例えば、データベース)に対して提供することができ、データソースに関連するデータ処理システム(例えば、データベース管理システム)はそのクエリによって指定されたデータを返すことができる。クエリを構文解析して、そのクエリによって指定されたデータソース内のデータを識別するために、様々な技法を使用することができる。
態様1は、SQLクエリに基づいてコンピュータプログラムを生成する方法であって、第1のデータソースに記憶されている第1のデータセットへの参照を含み、第1のデータソースとは異なる第2のデータソースに記憶されている第2のデータセットへの参照を含むSQLクエリを受信することと、SQLクエリが2つ以上のコマンドを含み、当該コマンドが第1の和結合型操作と第1の集約操作(aggregation operation)とを含むと判断することと、第1の和結合型操作が第1のデータセットからのデータの少なくとも一部分に適用され、第2のデータセットからのデータの少なくとも一部分に適用されることをSQLクエリが記述していると判断することと、第1の集約操作が第1の和結合型操作の結果として得られるデータに適用されることをSQLクエリが記述していると判断することと、SQLクエリに基づいて第1のシステム上でコンピュータプログラムを生成することであって、当該コンピュータプログラムが、第1のデータセットからのデータの一部分について第2の集約操作を実行するよう第2のシステムに指示する命令を送信し、データの第1の部分の要約である特定のデータセットを第2のシステムから受信し、当該特定のデータセットと、第2のデータセットからのデータの一部分の要約とについて第2の和結合型操作を実行するために構成されることとを含む方法である。
態様2は、当該コンピュータプログラムが、第2のデータセットからのデータの一部分について第2の集約操作を実行するよう第3のシステムに指示する命令を送信し、データの第2の部分の要約である特定のデータセットを第3のシステムから受信するためにさらに構成される、態様1の方法である。
態様3は、当該コンピュータプログラムが、データの第1の部分の要約とデータの第2の部分の要約であるデータセットに適用されるSQLクエリの和結合型操作を表す第1のコンポーネントであって、当該要約のそれぞれがそれぞれのデータの対応する部分より少ないレコードを含む第1のコンポーネントと、第1のデータセットを表す第2のコンポーネントであって、実行された時に当該命令を送信させる第2のコンポーネントとを含む、態様1又は2の方法である。
態様4は、第2のデータセットを表す第3のコンポーネントと、第3の集約操作を表す第4のコンポーネントとを含み、第3のコンポーネントの出力が第4のコンポーネントに流れ、第4のコンポーネントの出力が第1のコンポーネントに流れる、態様3の方法である。
態様5は、第2のコンポーネントの出力が、データの第1の部分の要約である特定のデータセットを含む、態様3又は4の方法である。
態様6は、第1のデータソースを表すコンポーネントが命令を送信し、第1のシステムがコンピュータプログラムを実行するシステムにデータを送信させる前に命令が遂行される、態様3、4、又は5の方法である。
態様7は、命令が、第2の集約操作に対応するコマンドを含むSQL文を含む、態様1乃至6のいずれかの方法である。
態様8は、SQLクエリに基づいてコンピュータプログラムを生成することが、SQLクエリに基づいてクエリプラン(query plan)を生成することと、第1のデータソースからのデータに適用される第2の集約操作をクエリプランに追加することと、第1のシステムが第2の集約操作を遂行するための機能性を含むと判断することと、第1のデータセットを表すクエリプランの一部分に、第2の集約操作を遂行するための命令を付加することと、クエリプランに基づいてコンピュータプログラムを生成することとを含む、態様1乃至7のいずれかの方法である。
態様9は、第1の集約操作が、最小値操作、最大値操作、合計操作、又はカウント操作であり、第2の集約操作が第1の集約操作と同じタイプの集約操作である、態様1乃至8のいずれかの方法である。
態様10は、第1の集約操作が平均操作であり、第2の集約操作が合計操作又はカウント操作である、態様1乃至9のいずれかの方法である。
態様11は、第1の集約操作に基づいて第2の集約操作を決定することを含む、態様1乃至10のいずれかの方法である。
態様12は、第1の集約操作に基づいて第2の集約操作を決定することが、遂行された時に第1の集約操作の出力と同等の出力を生成する一連の操作を決定することと、当該一連の操作から第2の集約操作を選択することとを含む、態様11の方法である。
態様13は、第1の和結合型操作が第2の和結合型操作と同じタイプのものである、態様1乃至12のいずれかの方法である。
態様14は、第1のシステムがグラフベースの処理システムを含み、第2のシステムがリレーショナルデータベース管理システムを含む、態様1乃至13のいずれかの方法である。
これらの諸態様のうちの1つ以上は、単独又は組み合わせて、コンピュータシステムによって実行された時に当該態様の操作を遂行する機械可読命令を含むコンピュータプログラムプロダクトを記憶する、システム又は装置としてあるいはコンピュータ可読記憶装置として表すことができる。一例として、コンピュータ可読記憶装置は、コンピュータシステムによって実行された時に第1乃至第13の態様のうちのいずれか1つによる操作を遂行する機械可読命令を含むコンピュータプログラムプロダクトを記憶することができる。もう1つの例として、1つ以上のプロセッサを含むコンピュータシステムは、当該1つ以上のプロセッサによって実行された時に第1乃至第13の態様のうちのいずれか1つによる操作を遂行する機械可読命令を含むコンピュータプログラムプロダクトを記憶するコンピュータ可読記憶装置を含むことができる。
諸態様は以下の利点のうちの1つ以上を含むことができる。データ処理システムは、データソースから転送されるデータの量を削減するために集約操作をプッシュダウンする。クエリに対応するコンピュータプログラムは、例えば、コンポーネントを除去することにより簡略化することができる。
本発明のその他の特徴及び利点は、以下の説明及び特許請求の範囲から明らかになるであろう。
クエリを処理できるデータ処理システムを示している。 データ処理システムの諸要素を示している。 クエリプランを示している。 クエリプランを示している。 コンピュータプログラムを示している。 コンピュータプログラムを示している。 フローチャートである。 フローチャートである。
データ処理システムは、クエリ(SQLクエリなど)をデータフローグラフなどのコンピュータプログラムに変換することができる。データフローグラフは、実行された時にクエリの操作と同等の操作(例えば、データ処理操作)を遂行するコンポーネントを含む。クエリからコンピュータプログラムを生成するシステムは、いくつかの操作がデータソース(例えば、データベースシステム)によって実行できると判断することができる。例えば、コンピュータプログラムの1つのコンポーネントは、そのコンポーネントによって表された1つ以上の操作を実行するようデータソースに指示することにより、データソースに「プッシュダウン」することができ、それによりそのコンポーネントをコンピュータプログラムから削除することができる。例えば、コンピュータプログラムは、データソースで実行された時にその操作を遂行するSQL文をデータソースに送信することにより、操作を実行するようデータソースに指示することができる。
SQLクエリ(SQL文ともいう)は、構造化照会言語(SQL)によって定義されたコマンド及び構文を使用する。一般に、クエリは、そのクエリに示されている1つ以上のデータセット内のデータのサブセットを指定する文である。指定されたサブセットは、そのクエリを処理するシステムによって、そのクエリを発行したシステムに返すことができる。クエリによって指定され、そのクエリに応答して返されるデータは一般に、そのクエリによって示されるデータセット内に記憶されている全データの一部分である。SQLクエリの一例は、「SELECT last_name FROM current_customers」にすることができる。このSQLクエリはSELECTという操作を含み、これはSELECT操作の引数に応じてデータを取り出すよう、クエリを実行するシステムに指示するものである。SQLの構文では、引数は、データベーステーブルなどのデータセットである「current_customers」及びデータベーステーブルの列である「last_name」である。システムがクエリを解釈し、クエリの操作を実行すると、システムはクエリに応答してlast_name列のデータ(例えば、last_ame列に含まれるデータの各部分)を返すことになる。SQLについては、2008年4月7日に出版されたAlex Kriegel及びBoris Trukhnovによる「SQL Bible, 2nd Edition」(ISBN 978−0470229064)に詳細に記載されており、同書は参照により本明細書に取り入れられる。
時には、クエリは、2つ以上のデータソースからのレコードの組み合わせについて実行される操作を含むことができる。例えば、クエリは和結合型操作を含むことができる。和結合型操作は、2つ以上のデータソースからのレコードを含むデータセットを生成し、そのデータセットを出力として提供する。言い換えれば、和結合型操作は、2つ以上のソースからのデータを単一のデータセットに結合する。「union」という用語(例えば、SQLにおけるUNIONコマンド)は典型的に、その出力を提供する前に両方のデータソースにおいて重複するデータ要素を除去する和結合型操作を指し、「union all」(例えば、SQLにおけるUNION ALLコマンド)は典型的に、その出力を提供する前に両方のデータソースにおいて重複するデータ要素を除去しない和結合型操作を指す。例えば、2つのデータセットのそれぞれが電話番号を含み、両方のデータセットが「555−1212」という電話番号を表すデータ要素を含む場合、「union」操作は電話番号「555−1212」を表す1つのデータ要素のみを出力し、「union all」操作は電話番号「555−1212」を表す2つのデータ要素を出力することになる。
クエリは、和結合型操作の後に集約操作(例えば、SUM、COUNT、AVG、MIN、又はMAXなどの操作)も含むことができる。集約操作は、時には集合関数又は要約操作と呼ばれ、出力データが典型的に入力データよりかなり小さいサイズになるように入力データを要約する出力データを提供する。クエリが和結合型操作の後に集約操作を含む場合、集約操作を遂行するためにデータソースから受信したデータの要約のみが必要になるので、コンピュータプログラムを生成するシステムは和結合型操作の前に集約操作を置くことができる。さらに、和結合型操作の前に置かれた集約操作は、データソースのいずれか又は全部が集約操作を本来サポートするものと判断された場合、それぞれの関連データソース内にプッシュダウンすることができる。コンピュータプログラムは、そうでなければデータソースのうちのいくつか又は全部から受信されると思われるデータの要約のみを受信するので、これは典型的にデータソースから転送されるデータの量を削減する。
実世界の一例として、電話会社は60日間遡って通話の記録を記憶する場合がある。この会社は、最後の7日間の通話記録を含むデータストアと、残りの53日間の記録を含むもう1つのデータストアを有する可能性がある。60日間すべての記録について実行されたクエリは和結合型操作を含む可能性があり、集約操作は一方又は両方のデータストアにプッシュダウンすることができる。さらに、最後の7日間の通話記録を含むデータストアはリレーショナルデータベースにすることができ、残りの53日間の記録を含むデータストアはリレーショナルデータベース以外のタイプのデータストア、例えばフラットファイルにすることができる。集約操作は、依然として最後の7日間の通話記録を含むリレーショナルデータベースにプッシュダウンすることができる。
図1は、クエリ102を処理して、クエリ102によって指定された結果104を生成することができるデータ処理システム100を示している。結果104は、クエリ102によって参照されるデータソース110、120から受信したデータ106に基づくものである。データ処理システム100は、クエリ102に基づいてデータ処理システム100が生成する命令114、124に応答してデータ106を受信する。
クエリ102は、そのクエリによって指定されたものと判断されたデータを取り出すために使用される。
1つのタイプのクエリ102は構造化照会言語(SQL)クエリである。SQLクエリ(SQL文ともいう)は、構造化照会言語によって定義されたコマンド及び構文を使用する。クエリに応答してデータを返すリソースの典型的な一例はリレーショナルデータベースである。リレーショナルデータベースは、1つ以上のデータベーステーブルと、SQLクエリの解釈、テーブルからのデータの読み取り、テーブルへのデータの書き込み、その他の種類のデータ処理機能の実行などのデータ処理操作を管理するシステムとの集合である。データベーステーブルは、a)それぞれが1つのレコードを表す行と、b)それぞれが行内に記憶されているデータのカテゴリを表す列とに配置されたデータの集合である。例えば、「current_customers」というデータベーステーブルは、それぞれがある事業の現在の顧客を表す行を有することができ、顧客の名前、顧客の住所、顧客が最後に購入した製品などのデータのカテゴリを表す列を有することができる。
データソース110、120はデータ処理システム100の外部にある。データ処理システム100の外部ということは、そのリソースがデータ処理システム100のコンポーネントの1つではないことを意味する。(データ処理システム100のいくつかのコンポーネントは図2に詳細に示されている。)例えば、データソース110、120は、ネットワーク(例えば、インターネット)を使用して通信する設備にすることができる。データ処理システム100は、ネットワークにデータを送信し、ネットワークからデータを受信することにより、データソース110、120と通信する。
同図に示されているように、データ処理システム100は、複数のデータソース110、120への参照101、103を含むクエリ102を受信することができる。データソース110、120はそれぞれ、1つ以上のデータセットを含む。例えば、データソース110、120は、記憶媒体、例えば、有形で非一時的なコンピュータ可読媒体上に記憶されているデータベーステーブル、データファイル、又はその他のデータ構造などのデータセットを含むことができる。
さらに、データソースは典型的に、そのデータソースに関連するシステムによって管理される。例えば、データソースがデータベーステーブル(又はデータベーステーブルの集合)を含むリレーショナルデータベースである場合、そのリレーショナルデータベースはリレーショナルデータベース管理システム(RDBMS)によって管理することができる。参照101、103はデータソースを識別する任意の情報にすることができる。いくつかの例では、参照101、103はデータソース110、120の英数字「名」である。
リレーショナルデータベース管理システム(RDBMS)は、リレーショナルデータベースに記憶されているデータの作成及び修正に向けられた命令を処理するシステムである。RDBMSは、クエリを解釈し、クエリによって指定されたデータを返すための機能性を含む。クエリを解釈することと、クエリによって指定されたデータを返すことの組み合わせは、時にはクエリを実行することと呼ばれる。例えば、いくつかのRDBMS実施形態は、a)SQLクエリを構文解析し、b)構造化照会言語によって定義された操作を識別し、c)コマンドの引数を識別し、d)引数に応じて操作を遂行する(例えば、実行する)エンジンを含む。
上記のように、SQLクエリ「SELECT last_name FROM current_customers」は操作SELECTを含み、これはSELECT操作の引数に応じてデータを取り出すようRDBMSに指示する。引数は、RDBMSによって管理されるデータベーステーブルである「current_customers」及びデータベーステーブルの列である「last_name」である。RDBMSがクエリを解釈し、クエリの操作を実行すると、RDBMSはクエリに応答してlast_name列のデータ(例えば、last_name列に含まれるデータの各部分)を返すことになる。
データ処理システム100は、クエリ102に基づいてコンピュータプログラム108(時にはデータ処理プログラムという)を生成する。例えば、コンピュータプログラム108は、クエリを入力として取り、データフローグラフを出力として生成するエンジン(例えば、データ処理システム100のサブシステムを形成するエンジン)を使用して生成することができる。ここでは一例としてデータフローグラフを使用するが、コンピュータプログラムは、プログラムコードによって表される命令を遂行するために実行できるプログラムコードを含む任意の種類のプログラムにすることができる。
このようにして、図1に示されているコンピュータプログラム108などのコンピュータプログラムは、実行された時に、例えばRDBMSなどのデータベース管理システムにより、対応するクエリ102の実行と同じ出力を生成することができる。従って、クエリ102は、SQLなどの照会言語を使用して作成することができる。しかしながら、対応するデータ処理操作を遂行するシステム、例えばデータ処理システム100のサブシステムは、クエリ102を実行したが、コンピュータプログラム108を実行しなかったシステム(例えば、RDBMS)によって実行されると思われる操作と同等の操作を実行するために、コンピュータプログラム108を実行することができる。2つの操作が同等であるという場合、同じ入力データを提供された時に2つの操作が実質的に同じ出力データを生成することを意味する。一例として、2つの操作は、同じ入力データを提供された時に正確に同じ出力データを生成する可能性がある。一例として、同じ入力データを提供された2つの操作はデータフォーマットのみが異なる出力データを生成する可能性があり、例えば、1つの操作はコンマで区切られた出力データを生成する可能性があり、同等の操作は、それ以外はコンマで区切られた出力データと同一である、タブで区切られた出力データを生成する可能性がある。
いくつかの例では、クエリ102の操作のうちのいくつかはコンピュータプログラム108によって遂行することができ、クエリ102の操作のうちのいくつかはデータソース110、120にプッシュダウンすることができる。これにより、データ処理システム100は、データソース110、120を管理するシステム112、122のうちの1つ以上によって実行できるクエリ102内の操作を識別することを意味する。次に、データ処理システム100は、システム112、122によって実行された時に、データ処理システム100によって識別された操作と同等の操作をシステム112、122に実行させる命令114、124を生成することができる。コンピュータプログラム108は、コンピュータプログラム108が実行された時に命令114、124をシステム112、122に送信するように構成することができる。命令114、124は、システム112、122によって実行できる任意のフォーマットの命令にすることができる。
いくつかの例では、データソース110、120のそれぞれの能力は、データソース110、120の既知の特徴に基づいてデータ処理システム100に知られている。例えば、データ処理システム100がSQL文を使用してデータソース110のうちの1つと通信する場合、データソース110がSQL文を処理できることはデータ処理システム100にすでに知られている。この情報により、データ処理システム100は、SQL文として表し、従って、データソース110にプッシュダウンすることができるその他の操作を識別することができる。
いくつかの例では、プッシュダウンされる操作は集約操作105である。集約操作105はデータを取り入れて、データの要約を生成するので、集約操作105は典型的にその入力データに比べて少量の出力データを生成する。この理由で、一般に、データソース110、120を管理するシステム112、122によって、集約操作105に対応する操作を遂行することはより効率的である。このようにして、データ処理システム100はデータソース110、120のそれぞれから要約データ116、126を受信するだけである。要約データ116、126は典型的に、集約操作105に対応する操作がデータ処理システム100上で実行しているコンピュータプログラム108によって実行された場合にデータソース110、120から転送されると思われるデータ106より少量のデータになる。さらに、集約操作は一般にSQL文又はSQL文の一部分として表すことができ、従って、これはSQL文を処理できるシステム(例えば、RDBMS)にプッシュダウンすることができる操作の一例である。このようにして、それぞれのデータソース110、120から返されるデータ106は、データの一部分(例えば、クエリ102によって指定されるようにデータベーステーブルの一部分又はデータのその他の本体の一部分)そのものではなく、それぞれのデータソースに記憶されているデータの一部分の要約になる。
集約操作105は、和結合型操作がクエリ102内の集約操作105に先行する場合でもプッシュダウンすることができ、これについては図3及び図4に詳細に示されている。
図2は、クエリ102を解釈し、クエリ102に対応するコンピュータプログラム108を生成するために使用できるデータ処理システム100の諸要素を示している。
クエリ102は、クエリ102に対応するクエリプラン132を生成するクエリプランナ(query planner)130によって受信される。例えば、データ処理システム100はクエリプランナ130にクエリ102を提供することができる。クエリプランは、クエリが実行される場合に実行できる操作(例えば、データ処理操作)の記述である。例えば、この操作は、例えばデータベース管理システムによって遂行されるデータベース操作である可能性がある。また、この操作は他の形を取ることもできる。データベース操作は時にはデータベース機能又はデータベースタスクともいう。
クエリプランは、その他の配置の操作又は異なるセットの操作が同じ結果を達成すると思われる場合でも、1つの可能な配置の操作について記述する可能性がある。クエリプランナは、クエリに関する情報及びクエリによって使用されるデータソースに関する情報に基づいてクエリプランを生成できるシステムである。
いくつかの配置では、操作は、依然として同等の出力を提供しながら、様々な順序で実行することができる。このため、クエリプランナは、最適クエリプランを決定する機能性を有することができる。例えば、最適クエリプランは、最小量の時間でクエリを実行するため、データ記憶空間などの最小量のデータベースリソースを使用するため、又はそれ以外にデータベースシステムによって識別された制約の範囲内でクエリを達成するための操作の配置を記述するクエリプランにすることができる。最適クエリプランを決定するためのクエリプランナの機能性は、多くの可能なクエリプランにスコア又はランクを付ける機能性を含むことができ、最適又は効率的な構成になるように可能なクエリプランを再配置する機能性も含むことができる。
単一クエリは複数回実行することができ、それぞれの実行は固有の最適クエリプランを有することができる。例えば、データベーステーブル内のデータは1つのクエリを2回実行する間に変化する可能性がある。この例では、クエリの1回目の実行のために生成されたクエリプランに記載されている操作は、そのクエリの2回目の実行中に、1回目の実行中より長いか又は短い実行時間を必要とする可能性がある。この場合、例えば、同じ操作を異なる配置にするか又は異なる操作の配置にするなど、異なる操作配置にする方がクエリの2回目の実行により適している可能性がある。クエリの2回目の実行のために最適化されたクエリプランは、データベーステーブルの瞬間的な状態を考慮に入れて、その実行のために生成することができる。
クエリプラン132はコンピュータプログラム生成エンジン140によって受信される。コンピュータプログラム生成エンジン140は、実行された時に、クエリ102に対応する操作を遂行するコンピュータプログラム108を生成する。例えば、クエリ102は、構造化照会言語によって定義された1つ以上の操作と、その操作に関連する引数とを含む。この例では、コンピュータプログラム108は、SQLクエリの操作と同等の実行可能機能性を含み、コンピュータプログラム108が実行されると、コンピュータプログラム108は同じ引数に基づいて実行される。
コンピュータプログラム生成エンジン140は、クエリプラン132を分析し、コンピュータプログラム108が生成される前にクエリプラン132によって表される操作を変更しなければならないかどうかを判断する。コンピュータプログラム108はクエリプラン132に基づいて生成されるので、コンピュータプログラム生成エンジン140は、分析の結果を使用して、コンピュータプログラム108の生成に移行する前にクエリプラン132を修正することができる。例えば、クエリプラン132は集約操作が後に続く和結合型操作を含むことができる。そうである場合、コンピュータプログラム生成エンジン140は、和結合型操作の前に集約操作を置くようにクエリプラン132を修正することができる。これは、図3及び図4にさらに詳細に示されている。
コンピュータプログラム生成エンジン140がコンピュータプログラムを生成する場合、集約操作はデータソースから直接受信したデータについて実行されるので(例えば、そのデータは集約操作の前にいかなる操作も受けない)、コンピュータプログラム生成エンジン140はデータソースへのプッシュダウンのための候補として集約操作を識別することができる。次に、コンピュータプログラム生成エンジン140は、データソース110、120を管理するシステム112、122のいずれか一方又は両方が集約操作と同等の操作を実行できるかどうかを判断することができる。第1のシステム112が集約操作と同等の操作を実行できる場合、コンピュータプログラム生成エンジン140は、集約操作と同等の操作を実行し、要約データをコンピュータプログラムに返すよう第1のシステム112に指示する命令114を第1のシステム112に送信するようにコンピュータプログラム108を構成する。第2のシステム122が集約操作と同等の操作を実行できる場合、コンピュータプログラム生成エンジン140は、集約操作と同等の操作を実行し、要約データをコンピュータプログラムに返すよう第2のシステム122に指示する命令124を第2のシステム122に送信するようにコンピュータプログラム108を構成する。
いくつかの実施形態では、コンピュータプログラム108はデータフローグラフ142を含む。データフローグラフは、入力データについて実行すべき操作を表すコンポーネントと、データの流れを表すコンポーネント間のリンク(時にはノードと呼ばれる)とを含むコンピュータプログラムである。コンポーネントによって表される操作は、入力データを処理することにより、入力データに基づいた出力データを生成する。コンポーネントは、そのコンポーネントが他のコンポーネントにリンクされている場合、他のコンポーネントに入力データを提供し、他のコンポーネントから出力データを受信することができ、2つのコンポーネント間のそれぞれのリンクは一方のコンポーネントからもう一方のコンポーネントへのデータの流れを表す。グラフのコンポーネントのサブセット(例えば、グラフの1つ以上のコンポーネント)は時にはグラフのサブグラフという。データフローグラフがグラフベースの処理システムによって実行される場合、コンポーネントのそれぞれが実行され、例えば、コンピュータプログラム又はコンピュータプログラムの一部分が実行され、そのコンポーネントによって表される操作を遂行する。実行中に、データフローグラフは、出力データを生成するために処理される(例えば、データフローグラフのコンポーネントの操作によって操作される)入力データを受信する。いくつかの例では、データフローグラフのいくつか又はすべてのコンポーネントはそれぞれ、そのコンポーネントに関連する操作を実行するために実行可能プログラムコードを呼び出すための情報に関連付けられる。例えば、あるコンポーネントは、そのコンポーネントに関連する操作を遂行するための、例えば、データを処理して出力するためのコンピュータで実行可能な命令を含むコンピュータ可読記憶域に記憶されているコンピュータプログラムへの参照に関連付けることができる。いくつかの例では、データフローグラフのいくつか又はすべてのコンポーネントはそれぞれ、データをプログラムコードにとって使用可能な状態にするための情報に関連付けられる。例えば、あるコンポーネントは、そのコンポーネントに関連する実行可能プログラムにデータを引き渡すために呼び出すことができる関数呼び出しに関連付けることができるか、そのコンポーネントに関連する実行可能プログラムに引き渡されるデータを受信できるネットワークポートに関連付けることができるか、あるいはそのコンポーネントに関連する実行可能プログラムにデータを引き渡すための他の技法に関連付けることができる。このようにして、それぞれのコンポーネントはデータを受信し、処理し、出力することができる。
グラフベースのシステムの一例は、「Managing Parameters for Graph−Based Applications」という名称の米国特許出願公報第2007/0011668号に詳細に記載されており、同出願は参照により本明細書に取り入れられる。グラフベースの計算を実行するためのシステムは、「Executing Computations Expressed as Graphs」という名称の米国特許第5966072号に記載されており、同特許は参照により本明細書に取り入れられる。さらに、データフローグラフのコンポーネントはクエリ102の操作の代わりに使用することができる。この代用による技法は、「Managing Data Queries」という名称の米国特許出願公報第2011/0179014A1号及び同じく「Managing Data Queries」という名称の米国特許出願公報第2012/0284255A1号にさらに記載されており、これらの出願は参照により本明細書に取り入れられる。いくつかの実施形態では、データフローグラフはクエリ102から生成することができる。
いくつかの実施形態では、コンピュータプログラム108はパラメータで構成することができる。例えば、パラメータは、プログラムの挙動を変更するように変更可能な値にすることができる。特定の例として、パラメータは「ファイル名」にすることができ、そのパラメータの値はファイルシステム内のファイルの位置にすることができる。パラメータの値は、異なるファイルにアクセスするようにプログラムを構成するために、異なるファイルの位置に変更することができる。同じプログラムの2つのインスタンスは異なるパラメータ値で構成することができ、その値は同じプログラムの2つのインスタンスの挙動を変更することになる。
実行エンジン150はコンピュータプログラム108を受信する。次に、実行エンジン150はコンピュータプログラム108を実行し、例えば、コンピュータプログラム108に関連するプログラムコードによって指定された命令を遂行する。実行された時にコンピュータプログラム108は、命令114、124を生成し、データソース110、120を管理するシステム112、122にその命令114、124を送信する。
いくつかの実施形態では、例えば、コンピュータプログラム108がデータフローグラフである場合、実行エンジン150は、時にはグラフオペレーティングシステムと呼ばれる専用オペレーティングシステムを含む。グラフオペレーティングシステムは、データフローグラフの個々のコンポーネントの基礎となる操作を実行できるコンピュータプログラムである。例えば、データフローグラフのあるコンポーネントがデータ処理システムによって遂行すべき操作を表す場合、グラフオペレーティングシステムは、その操作を遂行するようデータ処理システムに指示することが課せられる。
データソース110、120を管理するシステム112、122に命令114、124を送信した後、コンピュータプログラム108はデータソース110、120から要約データ116、126を受信する。次に、実行エンジン150はコンピュータプログラム108の実行時に要約データ116、126を使用して、クエリ102の結果104を生成する。このようにして、データ処理システム100は、クエリ102を実行し、そのクエリによって指定された結果104を生成することができる。
図3は、SQLで作成されたクエリ200と、そのクエリを表すクエリプラン210の図表現を示している。例えば、クエリ200は図1及び図2に示されているクエリ102の一例にすることができ、クエリプラン210は図2に示されているクエリプラン132の一例にすることができる。クエリ200は、「Boston」及び「New York」という2つのデータソース(例えば、リレーショナルデータベーステーブル)内で見つかった「price」という列の最大値を計算するために使用される。2つのデータソースはクエリ200内の引数202、204によって識別される。また、クエリ200は実行すべき「GROUP BY hotel_chain」という操作も要求し、この操作は、出力の列のうちの1つ、即ちここではhotel_chain列に応じて出力のデータをグループ分けする。実世界の一例として、このクエリは、ボストンのホテルのデータベースとニューヨークのホテルのデータベースの両方に記録されているホテルの客室の最高価格(「最大値」)を求めるために使用することができる。このクエリが実行されると、2つのデータソースからのデータが合体(例えば、結合)され、ホテルチェーンでグループ分けされる。次に、それぞれのホテルチェーンごとにホテルの客室の最高価格が識別され、返される。
クエリプラン210は2つのデータソース212、214の識別を含み、そのそれぞれは和結合型操作216によって結合されるデータを提供する。例えば、和結合型操作216は、SQLクエリ200に指定されている操作次第で、「union」又は「union all」と同等なものにすることができる。ここでは、「union」操作(例えば、UNIONコマンド)がSQLクエリ200に指定されている。
和結合型操作216の出力はGROUP BY操作217に提供され、そこで、例えばhotel_chain列でデータをグループ分けすることによってデータが処理される。処理されたデータはロールアップ操作218に渡され、そこで入力データの最大値が決定される。この最大値がクエリ200の結果になる。
図4は、もう1つのバージョンのクエリプラン210aを示している。このバージョンのクエリプラン210aは、例えば図2に示されているコンピュータプログラム生成エンジン140によって修正されている。(いくつかの例では、この修正は、クエリプラン132が生成エンジン140に提供される前にクエリプランナ130で実行される。)このバージョンのクエリプラン210aでは、ロールアップ操作218aは第1のデータソース212と和結合型操作216との間に置かれ、もう1つのロールアップ操作218bは第2のデータソース214と和結合型操作216との間に置かれている。クエリプラン210aのこの配置は、図3に示されている配置のクエリプラン210と同じ出力を生成する。さらに、データソース212、214のいずれか一方がロールアップ操作218a、218bと同等の操作を遂行できる場合、それぞれのロールアップ操作218a、218bは対応するデータソース212、214にプッシュダウンすることができる。
このバージョンのクエリプラン210aは、和結合型操作の後に追加のロールアップ操作219を含む。ロールアップ操作218a、218bはそれぞれ「最大値」(最大値)操作を表すので、和結合型操作の出力の最大値は、和結合型操作によって出力される2つの値(例えば、ロールアップ操作218a、218bによって返される2つの値)の間の最大値を識別するように決定しなければならない。従って、ロールアップ操作218が図3に示されている和結合型操作216及びGROUP BY操作217の出力について操作するように、ロールアップ操作219は和結合型操作216及びGROUP BY操作217の出力について操作する。しかしながら、図4に示されているこのロールアップ操作219は、図3に示されているこの位置のロールアップ操作218と比べて非常に少量のデータを操作する。
図4に示されているクエリプラン210aは、集約操作の特性に基づいて生成することができる。例えば、MIN(最小データ値)、MAX(最大データ値)、SUM(データ値の合計)、COUNT(レコード数)、及びAVG(データ値の平均)を含む、集約操作のいくつかの特性は以下の通りである。これらの特性のそれぞれは、集約操作を含む式及び順番に実行される複数の集約操作を含む同等の式を表す。これらの特性のうちのいくつかは、分配特性の適用を含み、関数fの場合、式f(X,Y)は式f(f(X),f(Y))と同等である。一般に、集約操作はこれらの特性に応じて一連の集約操作に変換することができ、次にその一連の操作のうちのいくつかはデータソースを管理するシステムに「プッシュダウン」することができる。
特性1: AGG(X UNION ALL Y)=AGG(AGG(X) UNION ALL AGG(Y)) [ここで、AGGはMIN、MAX、又はSUMのうちの1つである]
特性2: COUNT(X UNION ALL Y)=SUM(COUNT(X) UNION ALL COUNT (Y))
特性3: AVG(X UNION ALL Y)=SUM(X UNION ALL Y)/COUNT(X UNION ALL Y)=SUM(SUM(X) UNION ALL SUM(Y))/SUM(COUNT(X) UNION ALL COUNT(Y))
特性4: AGG(X UNION Y)=AGG(AGG(X) UNION AGG(Y)) [ここで、AGGはMIN又はMAXのうちの1つである]
以下の擬似コードは、それぞれが和結合型操作に続く1つ以上の集約操作をプッシュダウンするためにクエリプランを修正するための技法を表している。
有効範囲及びサブクエリの範囲テーブルを備えたクエリプランが与えられ、それぞれのサブクエリがターゲット入力式のターゲットリストを定義する場合:
クエリプラン内のそれぞれのサブクエリを最上位からトラバースする。
それぞれのサブクエリについて、以下のチェック及び変形を実行する:
クエリが空でない和結合パラメータを備えたサブクエリタイプの範囲テーブルを1つだけ有するかどうかをチェックする。そうではない場合、次のサブクエリに進む。
クエリターゲットリスト内のそれぞれのターゲット入力について:
ターゲット入力が集約コマンドを有するかどうかをチェックする。そうではない場合、次のターゲット入力に進む。
(SUM,COUNT,AVG)及びUNION ALL内の集約コマンド)又は(MIN,MAX)及びUNION内の集約コマンド)かどうかをチェックする。そうではない場合、次のサブクエリに進む。
クエリ範囲テーブル内のサブクエリを変形する。
サブクエリ内のそれぞれの範囲テーブルについて:
新しいサブクエリを作成し、範囲テーブルを新しいサブクエリの範囲テーブルリストにコピーする。
クエリターゲットリスト及びグループ句を新しいサブクエリのターゲットリスト及びグループ句にコピーする。
ターゲットリストがAVG関数を有するかどうかをチェックする。そうである場合、それぞれのAVG()関数に関するSUM()関数及びCOUNT()関数をターゲットリストに追加する。
範囲テーブルを新しいサブクエリで置換する。
クエリターゲットリスト内のそれぞれのターゲット入力について:
ターゲットリストがAVG関数を有するかどうかをチェックする。それぞれのAVG()関数を、対応する新たに形成されたSUM()/COUNT()で置換する。
図5は、クエリプラン210aから生成されたコンピュータプログラム300を示している。このコンピュータプログラム300は、図1及び図2に示されているコンピュータプログラム108の一例にすることができる。このコンピュータプログラム300は、データの流れを表すリンクによって接続されたコンポーネントを含むデータフローグラフであり、同じく図2に示されているデータフローグラフ132の一例にすることができる。
コンピュータプログラム300は、実行可能コード(例えば、1つ以上の実行可能操作)を表すコンポーネントを有する。コンピュータプログラム300は、第1のデータソース212の出力データを表すコンポーネント302と、第2のデータソース214の出力データを表すコンポーネント304とを有する。2つのコンポーネント302、304は、和結合型操作216を表すコンポーネント306にリンクされる。いくつかの実施形態では、コンポーネント306は、複数のコンポーネントの組み合わせ、例えばサブグラフにすることができる。このコンポーネント306は、ロールアップ操作219及びGROUP BY操作217を一緒に表すコンポーネント308にリンクされる。コンピュータプログラム300が実行されると、コンピュータプログラム300の出力は、図3に示されているSQLで作成されたクエリ200を実行するシステムの出力と同等である。
データソースの出力データを表すコンポーネント302、304のそれぞれは、それぞれの対応するデータソースに命令を送信するように構成されている。例えば、ボストンデータソース212の出力データを表すコンポーネント302は、ボストンデータソース212を管理するシステム(例えば、ボストンデータソース212に記憶されているデータセットを管理するシステム)に送信された時に、図4に示されているロールアップ操作218aによって表される要約操作と同等の操作を実行する命令で構成されている。この操作は、いずれかのデータがコンピュータプログラム300によって受信される前に遂行される。いくつかの実施形態では、コンポーネント302は、ボストンデータソース212を管理するシステムにSQLクエリを送信することができる。ここでは、SQLクエリは、ボストンデータソース212に記憶されているデータベーステーブルの「price」列の最大値を指定することができる。命令は、例えば、「SELECT max(price), hotel_chain FROM Boston GROUP BY hotel_chain」というSQL文にすることができる。このようにして、ロールアップ操作218aはボストンデータソース212にプッシュダウンされている。
この例では、ボストンデータソース212及びニューヨークデータソース214の両方に集約操作がプッシュダウンされている。従って、ボストンデータソース212及びニューヨークデータソース214を管理するシステムは、集約操作と同等の操作を実行できるものと判断されている。いくつかの実施形態では、この判断は図2に示されているコンピュータプログラム生成エンジン140によって行われ、コンピュータプログラム生成エンジン140はコンピュータプログラム300を生成する時にこの判断を使用する。いくつかの実施形態では、この判断は図2に示されているクエリプランナ130によって行われ、クエリプラン132は集約操作のプッシュダウンを取り入れるようにクエリプランナ130によって修正される。これらの実施形態では、コンピュータプログラム生成エンジン140は、クエリプラン132からコンピュータプログラム300を生成することができ、クエリプラン132で識別されたデータソースを管理するシステムの能力を評価する必要はない。
いくつかの例では、データソースのうちの少なくとも1つは集約操作と同等の操作を実行できない可能性がある。図6は、クエリプラン210aから生成されたコンピュータプログラム300aの一例を示している。この例では、ボストンデータソース212を管理するシステムは集約操作と同等の操作を実行できるものと判断されている。しかしながら、ニューヨークデータソース214を管理するシステムは集約操作と同等の操作を実行できないものと判断されている。従って、このコンピュータプログラム300aでは、ニューヨークデータソース214の出力を表すコンポーネント304は、和結合型操作を表すコンポーネント306にリンクされたロールアップコンポーネント305にリンクされる。ここでは、MAX操作をニューヨークデータソース214にプッシュダウンすることができないので、操作は代わりにロールアップコンポーネント305で実行される。ボストンデータソース214の出力を表すコンポーネント302は、クエリプラン210からの集約操作218aと同等の操作を遂行するための命令をボストンデータソース214に送信するように構成され、従って、ボストンデータソース214の出力を表すコンポーネント302は和結合型操作を表すコンポーネント306にリンクされる。このようにして、他のデータソースが操作をサポートしない場合でも、集約操作を何らかのデータソースにプッシュダウンすることができる。
図7は、SQLクエリに基づいてコンピュータプログラムを生成するための手順400を表すフローチャートを示している。手順400は、例えば、図1に示されているデータ処理システム100のコンポーネントによって遂行することができる。
この手順は402でSQLクエリを受信する。例えば、SQLクエリは図1に示されているクエリ102の一例にすることができる。いくつかの例では、SQLクエリは、データ処理システムの外部にある1つ以上のデータセットへの参照を含む。例えば、クエリは、第1のデータソースに記憶されている第1のデータセットへの参照と、第1のデータソースとは異なる第2のデータソースに記憶されている第2のデータセットへの参照とを有することができる。例えば、データソースは、リレーショナルデータベース(例えば、リレーショナルデータベーステーブルを記憶する)、データ記憶域上でアクセス可能なフラットファイル、ネットワークを介してアクセス可能なデータストリーム、HDFS(Hadoop分散ファイルシステム)ファイル、又はその他の種類のデータソースにすることができる。図1に示されているデータソース110、120はデータソースの例であり、データセットはデータソース110、120に記憶されているデータにすることができる。参照の例は図3に示されている引数202、204である。
この手順は404で、SQLクエリが2つ以上のコマンドを含み、そのコマンドが第1の和結合型操作と第1の集約操作とを含むと判断する。いくつかの実施形態では、和結合型操作は、第1のデータソースから受信したデータに基づいてデータの第1の部分に適用され、第2のデータソースから受信したデータに基づいてデータの第2の部分にも適用される。SQLクエリの一例は図3に示されているSQLクエリ200である。いくつかの実施形態では、SQLクエリは、SQLクエリから生成されたクエリプランに基づいて和結合型操作と第1の集約操作とを含むものと判断される。
この手順は406で、第1の和結合型操作が第1のデータセットからのデータの少なくとも一部分に適用され、第2のデータセットからのデータの少なくとも一部分に適用されることをSQLクエリが記述していると判断する。例えば、プロセスは、SQLクエリを構文解析して、和結合型操作(例えば、UNION又はUNION ALL)を識別し、データの一部分に対応する引数(例えば、データの一部分を含むデータソースを指定する引数)を識別することができる。
この手順は408で、第1の集約操作が第1の和結合型操作の結果として得られるデータに適用されることをSQLクエリが記述していると判断する。例えば、この手順は、SQLクエリを構文解析して第1の集約操作を識別することができ、例えば、和結合型操作は第1の集約操作への引数として提供される。
いくつかの実施形態では、この手順は第1の集約操作に基づいて第2の集約操作を決定する。例えば、この手順は、遂行された時に第1の集約操作の出力と同等の出力を生成する一連の操作を決定し、その一連の操作から第2の集約操作を選択することができる。一例として、第1の集約操作は最小値操作、最大値操作、合計操作、又はカウント操作にすることができ、第2の集約操作は第1の集約操作と同じタイプの集約操作にすることができる。もう1つの例として、第1の集約操作は平均操作にすることができ、第2の集約操作は合計操作又はカウント操作にすることができる。これらの例では、第2の集約操作は上記の特性1〜4のうちの1つに応じて選択される。
いくつかの実施形態では、この手順は、第2の集約操作が第1のデータソースを管理するシステムによって実行できると判断する。例えば、データソースを管理するシステムが、SQL文を実行できるRDBMSである場合、このシステムは、集約操作がSQL文の一部として表される場合にその集約操作を実行することができる。RDBMS112、122の例は図1に示されている。
この手順は410で、SQLクエリに基づいてコンピュータプログラムを生成する。いくつかの実施形態では、コンピュータプログラムは、第1のシステム、例えば、図1に示されているデータ処理システム100によって生成される。このプログラムの実行は、以下の図8に示されている手順500に対応することができる。いくつかの実施形態では、これは、SQLクエリに基づいてクエリプランを生成することと、第1のデータソースからのデータに適用される第2の集約操作をクエリプランに追加することと、第1のデータソースに関連する第1のシステムが第2の集約操作を遂行するための機能性を含むと判断することと、第2の集約操作を遂行するための命令を、第1のデータソースを表すクエリプランの一部分に付加することと、クエリプランに基づいてコンピュータプログラムを生成することとを含む。次に、このプログラムを実行することができる。
いくつかの実施形態では、手順400の410で生成されたコンピュータプログラムは、SQLクエリの和結合型操作を表す第1のコンポーネントを含む。第1のコンポーネントは、データの第1の部分の要約及びデータの第2の部分の要約に適用され、それぞれの要約はデータのそれぞれ対応する部分より少ないレコードを含む。コンピュータプログラムは第1のデータソースを表す第2のコンポーネントも含むことができ、第2のコンポーネントは、実行された時に、第1のシステムによる実行のために命令を送信させる。この命令は、第2の集約操作に対応するコマンドを含むSQL文を含むことができる。さらに、この命令は、第1のシステムがコンピュータプログラムを実行するシステムにデータを送信させる前に遂行される。
この例では、第2のコンポーネントの出力は、第1のデータソースからのデータの第1の部分の要約を含むことができる。また、コンピュータプログラムは、第2のデータソースを表す第3のコンポーネントと、第3の集約操作を表す第4のコンポーネントも含むことができ、第3のコンポーネントの出力は第4のコンポーネントに流れ、第4のコンポーネントの出力は第1のコンポーネントに流れる。例えば、第3の集約操作は、図6に示されているコンポーネント305によって表すことができる。さらに、第1のコンポーネントの出力は、例えば、図6に示されているコンポーネント308によって表されるように、他の集約操作に流れる場合もある。
いくつかの実施形態では、コンピュータプログラムは、第2のデータセットからのデータの一部分について第2の集約操作を実行するよう第3のシステムに指示する命令も送信し、データの第2の部分の要約である特定のデータセットを第3のシステムから受信する。これは、例えば、第2のデータソースを管理するシステムが第2の集約操作を実行できるという判断が行われた時に行うことができる。
図8は、SQLクエリの実行に関する操作を実行するための手順500を表すフローチャートを示している。手順500は、例えば、図1に示されているデータ処理システム100のコンポーネントなどの第1のシステムによって遂行することができる。例えば、手順500は、実行エンジン150がSQLクエリから生成されたコンピュータプログラムの少なくとも一部を実行する時に、図2に示されている実行エンジン150によって遂行することができる。コンピュータプログラムは、図1〜図2に示されているコンピュータプログラム108及び図7の410で生成されたコンピュータプログラムにすることができる。さらに、SQLクエリは図1及び図2に示されているクエリ102にすることができる。
この手順は502で、第1のデータセットからのデータの一部分について第2の集約操作を実行するよう第2のシステムに指示する命令を送信する。例えば、第2のシステムは、図1に示されているシステム112、122のうちの1つにすることができる。命令はSQL文の形にすることができる。例えば、命令は図1に示されている命令114、124にすることができる。
この手順は504で、データの第1の部分の要約である特定のデータセットを第2のシステムから受信する。例えば、このデータの一部分は、コンピュータプログラムが生成されたSQLクエリで参照されたデータの一部分にすることができる。
この手順は506で、特定のデータセット及び第2のデータセットからのデータの一部分の要約について第2の和結合型操作を実行する。例えば、データの第2の部分は、コンピュータプログラムが生成されたSQLクエリで参照されたデータの他の一部分にすることができる。いくつかの実施形態では、第2の和結合型操作は第1の和結合型操作と同じタイプのものである。上記のように、1つのタイプの和結合型操作は「union」であり、もう1つは「union all」である。例えば、第1の和結合型操作が「union all」操作であり、第2の和結合型操作も「union all」操作である場合、2つの操作は同じタイプのものである。
このようにして、コンピュータプログラムは、例えば、SQLクエリがリレーショナルデータベースシステム又はSQLクエリを評価(例えば、実行)するその他のシステムである場合と同様に、SQLクエリの出力と同等の出力を生成する。しかしながら、操作はデータソースに「プッシュダウン」されるので、コンピュータプログラムは、その操作がコンピュータプログラムそのものによって遂行された場合より効率的に動作することができる。
図2に示されているクエリプランナ130、生成エンジン140、及び/又は実行エンジン150は、例えば、UNIX(登録商標)オペレーティングシステムのあるバージョンなど、適切なオペレーティングシステムの制御下にある1つ以上の汎用コンピュータ上で処理される。例えば、これは、ローカル(例えば、対称型マルチプロセッシング(SMP)コンピュータなどのマルチプロセッサシステム)又はローカル分散型(例えば、クラスタとして結合された複数プロセッサ又は超並列処理(MPP)システム)あるいはリモート又はリモート分散型(例えば、ローカルエリアネットワーク(LAN)及び/又は広域ネットワーク(WAN)を介して結合された複数プロセッサ)あるいはこれらの任意の組み合わせなど、複数の中央演算処理装置(CPU)又はプロセッサコアを使用するコンピュータシステムの構成を含む複数ノードの並列コンピューティング環境を含むことができる。
図5及び図6に示されているコンピュータプログラム300、300aは開発環境において表示される場合がある。開発環境は、いくつかの実施形態では、データフローグラフとしてアプリケーションを開発するためのシステムである。このシステムにより作成されるデータフローグラフは、グラフコンポーネントによって表される個々のプロセス内に及び個々のプロセスから情報を取得するため、プロセス間で情報を移動するため、及びプロセスの実行順序を定義するための方法を提供する。このシステムは、任意の使用可能な方法からプロセス間通信方法を選択するアルゴリズムを含む(例えば、グラフのリンクに応じた通信経路は、TCP/IP又はUNIXドメインソケットを使用するかあるいはプロセス間でデータを渡すために共有メモリを使用することができる)。
上記の技法は、適切なソフトウェアを実行するコンピューティングシステムを使用して実現することができる。例えば、ソフトウェアは、それぞれが少なくとも1つのプロセッサと少なくとも1つのデータ記憶システム(揮発性及び/又は不揮発性メモリ及び/又は記憶素子を含む)と少なくとも1つのユーザインターフェース(少なくとも1つの入力装置又はポートを使用して入力を受け取り、少なくとも1つの出力装置又はポートを使用して出力を提供するためのもの)とを含む、1つ以上のプログラム式又はプログラム可能コンピューティングシステム(分散、クライアント/サーバ、又はグリッドなどの様々なアーキテクチャのものにすることができる)上で実行される1つ以上のコンピュータプログラムに手順を含むことができる。ソフトウェアは、例えば、データフローグラフの設計、構成、及び実行に関するサービスを提供する、より大きいプログラムの1つ以上のモジュールを含むことができる。プログラムのモジュール(例えば、データフローグラフの要素)は、データリポジトリに記憶されているデータモデルに適合するデータ構造又はその他の編成済みデータとして実現することができる。
ソフトウェアは、CD−ROM又はその他のコンピュータ可読媒体などの有形で非一時的な媒体(例えば、汎用又は専用コンピューティングシステム又は装置によって読み取り可能)上で提供するか、あるいは、ネットワークの通信媒体により、それが実行されるコンピューティングシステムの有形で非一時的な媒体に引き渡す(例えば、伝搬信号にコード化する)ことができる。処理の一部又は全部は、専用コンピュータ上で実行するか、あるいは、コプロセッサ又はフィールドプログラマブルゲートアレイ(FPGA)又は専用の特定用途向け集積回路(ASIC)などの専用ハードウェアを使用して実行することができる。処理は、ソフトウェアによって指定された計算の異なる部分が異なる計算要素によって実行されるという分散方式で実現することができる。このようなコンピュータプログラムはそれぞれ、好ましくは、本明細書に記載されている処理を実行するためにコンピュータによって記憶装置媒体が読み取られた時にコンピュータを構成し操作するために、汎用又は専用プログラマブルコンピュータによってアクセス可能な記憶装置のコンピュータ可読記憶媒体(例えば、ソリッドステートメモリ又はメディアあるいは磁気又は光メディア)上に記憶されるか又はそれにダウンロードされる。また、本発明のシステムは、コンピュータプログラムで構成された有形で非一時的な媒体として実現されるものと見なすこともでき、このように構成された媒体は、本明細書に記載されている処理ステップのうちの1つ以上を実行するために特定の定義済み方式でコンピュータを動作させる。
本発明のいくつかの実施形態について説明してきた。それにもかかわらず、上記の説明は、例証するためのものであり、以下の特許請求の範囲の範囲によって定義されている本発明の範囲を制限するためのものではないことを理解するべきである。従って、その他の実施形態も以下の特許請求の範囲の範囲内にある。例えば、本発明の範囲を逸脱せずに様々な変更を行うことができる。さらに、上記のステップのいくつかは順序に依存しない可能性があり、従って、記載されているものとは異なる順序で実行することができる。

Claims (17)

  1. SQLクエリに基づいてコンピュータプログラムを生成する方法であって、
    第1のデータソースに記憶されている第1のデータセットへの参照を含み、前記第1のデータソースとは異なる第2のデータソースに記憶されている第2のデータセットへの参照を含むSQLクエリを受信することと、
    前記SQLクエリが2つ以上のコマンドを含み、前記コマンドが第1の和結合型操作と第1の集約操作とを含むと判断することと、
    前記第1の和結合型操作が前記第1のデータセットからのデータの少なくとも一部分に適用され、前記第2のデータセットからのデータの少なくとも一部分に適用されることを前記SQLクエリが記述していると判断することと、
    前記第1の集約操作が前記第1の和結合型操作の結果として得られるデータに適用されることを前記SQLクエリが記述していると判断することと、
    前記SQLクエリに基づいて第1のシステム上でコンピュータプログラムを生成することであって、前記コンピュータプログラムが、
    前記第1のデータセットからのデータの一部分について第2の集約操作を実行するよう第2のシステムに指示する命令を送信し、
    前記データの第1の部分の要約である特定のデータセットを前記第2のシステムから受信し、
    前記特定のデータセットと、前記第2のデータセットからのデータの一部分の要約とについて第2の和結合型操作を実行する
    ために構成されることと、
    を含む、方法。
  2. 前記第1のシステムがグラフベースの処理システムを含み、前記第2のシステムがリレーショナルデータベース管理システムを含む、請求項1に記載の方法。
  3. 前記コンピュータプログラムが、
    前記第2のデータセットからのデータの一部分について第2の集約操作を実行するよう第3のシステムに指示する命令を送信し、
    前記データの第2の部分の要約である特定のデータセットを前記第3のシステムから受信する
    ためにさらに構成される、請求項1に記載の方法。
  4. 前記コンピュータプログラムが、
    前記データの第1の部分の要約と前記データの第2の部分の要約である前記データセットに適用される前記SQLクエリの前記和結合型操作を表す第1のコンポーネントであって、前記要約のそれぞれがそれぞれのデータの対応する部分より少ないレコードを含む第1のコンポーネントと、
    前記第1のデータセットを表す第2のコンポーネントであって、実行された時に前記命令を送信させる第2のコンポーネントと、
    を含む、請求項1に記載の方法。
  5. 前記第2のデータセットを表す第3のコンポーネントと、第3の集約操作を表す第4のコンポーネントとを含み、前記第3のコンポーネントの出力が前記第4のコンポーネントに流れ、前記第4のコンポーネントの出力が前記第1のコンポーネントに流れる、請求項4に記載の方法。
  6. 前記第2のコンポーネントの前記出力が、前記データの第1の部分の前記要約である前記特定のデータセットを含む、請求項4に記載の方法。
  7. 前記第1のデータソースを表す前記コンポーネントが前記命令を送信し、前記第1のシステムが前記コンピュータプログラムを実行するシステムにデータを送信させる前に前記命令が遂行される、請求項4に記載の方法。
  8. 前記命令が、前記第2の集約操作に対応するコマンドを含むSQL文を含む、請求項1に記載の方法。
  9. 前記SQLクエリに基づいて前記コンピュータプログラムを生成することが、
    前記SQLクエリに基づいてクエリプランを生成することと、
    前記第1のデータソースからのデータに適用される前記第2の集約操作を前記クエリプランに追加することと、
    前記第1のシステムが前記第2の集約操作を遂行するための機能性を含むと判断することと、
    前記第1のデータセットを表す前記クエリプランの一部分に、前記第2の集約操作を遂行するための命令を付加することと、
    前記クエリプランに基づいて前記コンピュータプログラムを生成することと、
    を含む、請求項1に記載の方法。
  10. 前記第1の集約操作が、最小値操作、最大値操作、合計操作、又はカウント操作であり、前記第2の集約操作が前記第1の集約操作と同じタイプの集約操作である、請求項1に記載の方法。
  11. 前記第1の集約操作が平均操作であり、前記第2の集約操作が合計操作又はカウント操作である、請求項1に記載の方法。
  12. 前記第1の集約操作に基づいて前記第2の集約操作を決定することを含む、請求項1に記載の方法。
  13. 第1の集約操作に基づいて前記第2の集約操作を決定することが、
    遂行された時に前記第1の集約操作の出力と同等の出力を生成する一連の操作を決定することと、
    前記一連の操作から前記第2の集約操作を選択することと、
    を含む、請求項12に記載の方法。
  14. 前記第1の和結合型操作が前記第2の和結合型操作と同じタイプのものである、請求項1に記載の方法。
  15. SQLクエリに基づいてコンピュータプログラムを生成するためのシステムであって、
    1つ以上のプロセッサであって、
    第1のデータソースに記憶されている第1のデータセットへの参照を含み、前記第1のデータソースとは異なる第2のデータソースに記憶されている第2のデータセットへの参照を含むSQLクエリを受信し、
    前記SQLクエリが2つ以上のコマンドを含み、前記コマンドが第1の和結合型操作と第1の集約操作とを含むと判断し、
    前記第1の和結合型操作が前記第1のデータセットからのデータの少なくとも一部分に適用され、前記第2のデータセットからのデータの少なくとも一部分に適用されることを前記SQLクエリが記述していると判断し、
    前記第1の集約操作が前記第1の和結合型操作の結果として得られるデータに適用されることを前記SQLクエリが記述していると判断し、
    前記SQLクエリに基づいて第1のシステム上でコンピュータプログラムを生成し、前記コンピュータプログラムが、
    前記第1のデータセットからのデータの一部分について第2の集約操作を実行するよう第2のシステムに指示する命令を送信し、
    前記データの第1の部分の要約である特定のデータセットを前記第2のシステムから受信し、
    前記特定のデータセットと、前記第2のデータセットからのデータの一部分の要約とについて第2の和結合型操作を実行する
    ために構成される、
    ために構成される1つ以上のプロセッサを含む、システム。
  16. 実行された時に、SQLクエリに基づいてコンピュータプログラムを生成するための操作をコンピュータシステムに遂行させる実行可能コードを記憶するコンピュータ可読媒体であって、
    第1のデータソースに記憶されている第1のデータセットへの参照を含み、前記第1のデータソースとは異なる第2のデータソースに記憶されている第2のデータセットへの参照を含むSQLクエリを受信することと、
    前記SQLクエリが2つ以上のコマンドを含み、前記コマンドが第1の和結合型操作と第1の集約操作とを含むと判断することと、
    前記第1の和結合型操作が前記第1のデータセットからのデータの少なくとも一部分に適用され、前記第2のデータセットからのデータの少なくとも一部分に適用されることを前記SQLクエリが記述していると判断することと、
    前記第1の集約操作が前記第1の和結合型操作の結果として得られるデータに適用されることを前記SQLクエリが記述していると判断することと、
    前記SQLクエリに基づいて第1のシステム上でコンピュータプログラムを生成することであって、前記コンピュータプログラムが、
    前記第1のデータセットからのデータの一部分について第2の集約操作を実行するよう第2のシステムに指示する命令を送信し、
    前記データの第1の部分の要約である特定のデータセットを前記第2のシステムから受信し、
    前記特定のデータセットと、前記第2のデータセットからのデータの一部分の要約とについて第2の和結合型操作を実行する
    ために構成されることと、
    を含む、コンピュータ可読媒体。
  17. SQLクエリに基づいてコンピュータプログラムを生成するためのシステムであって、
    第1のデータソースに記憶されている第1のデータセットへの参照を含み、前記第1のデータソースとは異なる第2のデータソースに記憶されている第2のデータセットへの参照を含むSQLクエリを受信するための手段と、
    前記SQLクエリが2つ以上のコマンドを含み、前記コマンドが第1の和結合型操作と第1の集約操作とを含むと判断するための手段と、
    前記第1の和結合型操作が前記第1のデータセットからのデータの少なくとも一部分に適用され、前記第2のデータセットからのデータの少なくとも一部分に適用されることを前記SQLクエリが記述していると判断するための手段と、
    前記第1の集約操作が前記第1の和結合型操作の結果として得られるデータに適用されることを前記SQLクエリが記述していると判断するための手段と、
    前記SQLクエリに基づいて第1のシステム上でコンピュータプログラムを生成するための手段であって、前記コンピュータプログラムが、
    前記第1のデータセットからのデータの一部分について第2の集約操作を実行するよう第2のシステムに指示する命令を送信し、
    前記データの第1の部分の要約である特定のデータセットを前記第2のシステムから受信し、
    前記特定のデータセットと、前記第2のデータセットからのデータの一部分の要約とについて第2の和結合型操作を実行する
    ために構成される手段と、
    を含む、システム。
JP2017525332A 2014-11-14 2015-11-10 和結合型操作を含むクエリの処理 Active JP6787889B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462079922P 2014-11-14 2014-11-14
US62/079,922 2014-11-14
US14/746,188 2015-06-22
US14/746,188 US10437819B2 (en) 2014-11-14 2015-06-22 Processing queries containing a union-type operation
PCT/US2015/059976 WO2016077362A1 (en) 2014-11-14 2015-11-10 Processing queries containing a union-type operation

Publications (3)

Publication Number Publication Date
JP2017535869A true JP2017535869A (ja) 2017-11-30
JP2017535869A5 JP2017535869A5 (ja) 2018-12-20
JP6787889B2 JP6787889B2 (ja) 2020-11-18

Family

ID=54602073

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017525332A Active JP6787889B2 (ja) 2014-11-14 2015-11-10 和結合型操作を含むクエリの処理

Country Status (9)

Country Link
US (1) US10437819B2 (ja)
EP (1) EP3218823B1 (ja)
JP (1) JP6787889B2 (ja)
KR (1) KR102041168B1 (ja)
CN (1) CN107003868B (ja)
AU (1) AU2015346525C1 (ja)
CA (1) CA2967328C (ja)
SG (2) SG11201703343YA (ja)
WO (1) WO2016077362A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10970280B2 (en) * 2015-10-07 2021-04-06 International Business Machines Corporation Query plan based on a data storage relationship
US10628416B2 (en) * 2016-05-31 2020-04-21 International Business Machines Corporation Enhanced database query processing
US10558668B2 (en) 2016-07-01 2020-02-11 International Business Machines Corporation Result set output criteria
US20180137667A1 (en) * 2016-11-14 2018-05-17 Oracle International Corporation Graph Visualization Tools With Summary Visualization For Very Large Labeled Graphs
US10585575B2 (en) 2017-05-31 2020-03-10 Oracle International Corporation Visualizing UI tool for graph construction and exploration with alternative action timelines
US11475000B2 (en) * 2017-11-30 2022-10-18 International Business Machines Corporation Aggregation in dynamic and distributed computing systems
US11120082B2 (en) 2018-04-18 2021-09-14 Oracle International Corporation Efficient, in-memory, relational representation for heterogeneous graphs
US10810192B2 (en) * 2018-09-18 2020-10-20 Sigma Computing, Inc. Generating a database query to dynamically aggregate rows of a data set
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
CN111694887B (zh) * 2020-06-12 2023-07-04 最美天气(上海)科技有限公司 一种数据适应性存储调度***及方法
KR102200010B1 (ko) * 2020-08-06 2021-01-08 (주)시큐레이어 이기종 데이터 소스 간 연관 분석의 결과를 제공하는 방법 및 장치
US11494373B2 (en) * 2021-02-09 2022-11-08 Oracle International Corporation Nested query modification tool

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012014502A (ja) * 2010-07-01 2012-01-19 Internatl Business Mach Corp <Ibm> トランザクションを集約して処理する方法、システム、およびプログラム
US20130006965A1 (en) * 2011-06-30 2013-01-03 International Business Machines Corporation Database Query Optimization
JP2013080449A (ja) * 2011-09-21 2013-05-02 Maeda Corp 情報処理装置、情報処理方法、およびプログラム
JP2013232165A (ja) * 2012-05-02 2013-11-14 Fujitsu Ltd クエリ統合方法、クエリ統合プログラム、および統合コンポーネント生成装置
CN103608812A (zh) * 2011-06-15 2014-02-26 微软公司 业务智能***的查询优化技术
JP2014519080A (ja) * 2011-05-02 2014-08-07 アビニシオ テクノロジー エルエルシー データクエリの管理

Family Cites Families (133)

* 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
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ä
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
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
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 日本アイ・ビー・エム株式会社 集約演算実行方法及びコンピュータ・システム
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
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
US20050119999A1 (en) 2003-09-06 2005-06-02 Oracle International Corporation Automatic learning optimizer
US7702610B2 (en) 2003-09-19 2010-04-20 Netezza Corporation Performing sequence analysis as a multipart plan storing intermediate results as a relation
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
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
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
US7716630B2 (en) 2005-06-27 2010-05-11 Ab Initio Technology Llc Managing parameters for graph-based computations
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
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
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
CN101501678B (zh) 2006-08-10 2013-10-16 起元科技有限公司 在基于图的计算中分配服务
JP4872529B2 (ja) 2006-08-22 2012-02-08 株式会社日立製作所 リバースエンジニアリング支援方法
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
US20100005077A1 (en) 2008-07-07 2010-01-07 Kickfire, Inc. Methods and systems for generating query plans that are compatible for execution in hardware
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
CN101884024B (zh) 2007-09-20 2016-03-30 起元技术有限责任公司 在基于图的计算中管理数据流
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 国际商业机器公司 用于优化针对垂直存储式数据库的查询的方法和设备
US20090198703A1 (en) 2008-01-31 2009-08-06 Hewlett-Packard Development Company, L.P. Intelligent data storage system
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
US20100295833A1 (en) 2008-04-11 2010-11-25 Masaaki Nishio Display device and method of driving display device
US7974967B2 (en) 2008-04-15 2011-07-05 Sap Ag Hybrid database system using runtime reconfigurable hardware
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
US8666966B2 (en) 2009-01-30 2014-03-04 Hewlett-Packard Development Company, L.P. Providing parallel result streams for database queries
WO2010093879A1 (en) 2009-02-13 2010-08-19 Ab Initio Technology Llc Managing task execution
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
US9665620B2 (en) 2010-01-15 2017-05-30 Ab Initio Technology Llc Managing data queries
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
CN103069385B (zh) 2010-06-15 2016-12-28 起元技术有限责任公司 用于动态加载基于图的计算的***和方法
US8326821B2 (en) 2010-08-25 2012-12-04 International Business Machines Corporation Transforming relational queries into stream processing
US9128983B2 (en) 2010-10-13 2015-09-08 Aol Inc. Systems and methods for query optimization
US8850574B1 (en) 2011-02-28 2014-09-30 Google Inc. Safe self-modifying code
US20120246158A1 (en) 2011-03-25 2012-09-27 Microsoft Corporation Co-range partition for query plan optimization and data-parallel programming model
US8782081B2 (en) 2011-05-11 2014-07-15 Google Inc. Query template definition and transformation
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
US9098547B1 (en) 2012-03-23 2015-08-04 The Mathworks, Inc. Generation of results to a search query with 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
EP2973051A4 (en) * 2013-03-15 2016-11-16 Amazon Tech Inc EVOLUTIVE ANALYSIS PLATFORM FOR SEMI-STRUCTURED DATA
US9633104B2 (en) * 2013-05-03 2017-04-25 Sas Institute Inc. Methods and systems to operate on group-by sets with high cardinality
CN104123374B (zh) * 2014-07-28 2017-09-29 北京京东尚科信息技术有限公司 分布式数据库中聚合查询的方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012014502A (ja) * 2010-07-01 2012-01-19 Internatl Business Mach Corp <Ibm> トランザクションを集約して処理する方法、システム、およびプログラム
JP2014519080A (ja) * 2011-05-02 2014-08-07 アビニシオ テクノロジー エルエルシー データクエリの管理
CN103608812A (zh) * 2011-06-15 2014-02-26 微软公司 业务智能***的查询优化技术
US20130006965A1 (en) * 2011-06-30 2013-01-03 International Business Machines Corporation Database Query Optimization
JP2013080449A (ja) * 2011-09-21 2013-05-02 Maeda Corp 情報処理装置、情報処理方法、およびプログラム
JP2013232165A (ja) * 2012-05-02 2013-11-14 Fujitsu Ltd クエリ統合方法、クエリ統合プログラム、および統合コンポーネント生成装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
中山 陽太郎: "PostgreSQLを活用した仮想データ統合基盤の実現", 技報 UNISYS TECHNOLOGY REVIEW VOL.31 NO.4, vol. 第31巻,第4号, JPN6019031906, 31 March 2012 (2012-03-31), pages 25 - 37, ISSN: 0004262544 *

Also Published As

Publication number Publication date
US10437819B2 (en) 2019-10-08
JP6787889B2 (ja) 2020-11-18
KR102041168B1 (ko) 2019-11-06
US20160140166A1 (en) 2016-05-19
CN107003868B (zh) 2021-05-11
KR20170083569A (ko) 2017-07-18
SG11201703343YA (en) 2017-05-30
WO2016077362A1 (en) 2016-05-19
AU2015346525A1 (en) 2017-05-18
CA2967328A1 (en) 2016-05-19
AU2015346525B2 (en) 2019-02-28
CA2967328C (en) 2020-06-02
SG10201810036QA (en) 2018-12-28
EP3218823B1 (en) 2019-06-12
AU2015346525C1 (en) 2019-07-04
CN107003868A (zh) 2017-08-01
EP3218823A1 (en) 2017-09-20

Similar Documents

Publication Publication Date Title
JP6983990B2 (ja) 複数ソースからのデータの処理
JP6578333B2 (ja) データクエリの管理
JP6787889B2 (ja) 和結合型操作を含むクエリの処理
US10521427B2 (en) Managing data queries
US11243958B2 (en) Implementing contract-based polymorphic and parallelizable SQL user-defined scalar and aggregate functions

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181107

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181107

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190820

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190816

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20191031

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200515

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20200722

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200908

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: 20200916

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20200923

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201029

R150 Certificate of patent or registration of utility model

Ref document number: 6787889

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250