JP2022036960A - ネットワーク上のデータソースへの照会 - Google Patents

ネットワーク上のデータソースへの照会 Download PDF

Info

Publication number
JP2022036960A
JP2022036960A JP2021185876A JP2021185876A JP2022036960A JP 2022036960 A JP2022036960 A JP 2022036960A JP 2021185876 A JP2021185876 A JP 2021185876A JP 2021185876 A JP2021185876 A JP 2021185876A JP 2022036960 A JP2022036960 A JP 2022036960A
Authority
JP
Japan
Prior art keywords
data
computer program
query
resource
processing system
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
JP2021185876A
Other languages
English (en)
Other versions
JP7322119B2 (ja
Inventor
シェヒター,イアン
Schechter Ian
ジョン アリン,グレン
John Allin Glenn
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ab Initio Technology LLC
Original Assignee
Ab Initio Technology LLC
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 Ab Initio Technology LLC filed Critical Ab Initio Technology LLC
Publication of JP2022036960A publication Critical patent/JP2022036960A/ja
Application granted granted Critical
Publication of JP7322119B2 publication Critical patent/JP7322119B2/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/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
    • 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/25Integrating or interfacing systems involving database management systems
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2452Query translation
    • G06F16/24524Access plan code generation and invalidation; Reuse of access plans
    • 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

Landscapes

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

Abstract

【課題】特定のデータソースに適応でき、時間とともに変化するデータソースを有するネットワーク内で用いることができる柔軟な探索スキームを提供する。【解決手段】リレーショナルデータベースに適用可能なクエリ言語に従って表現されたクエリに基づいてコンピュータプログラムを実行する、データ処理システムによって実施されるコンピュータ実施方法であって、コンピュータプログラムは、有形の非一時的なコンピュータ可読媒体内に記憶されたデータに少なくとも一部基づいて実行され、実行することは、SQLクエリを受信し、SQLクエリは、データ処理システムの外部にあるリソースに関連付けられた識別子を含むことと、SQLクエリに基づいてコンピュータプログラムを生成することと、コンピュータプログラムを実行することとを含み、実行することは、1つまたは複数の命令をリソースへ伝送し、命令はSQLクエリの操作以外の操作を定義すること、および命令に応答してデータをリソースから受信すること、を引き起こす、方法を記載する。【選択図】図1

Description

優先権の主張
本出願は、2015年2月18日に出願された米国特許出願第62/117,588号に対する優先権を主張する、2015年6月26日に出願された、米国特許出願第14/752,094号に対する優先権を主張する。これらの出願の内容全体は本明細書において参照により組み込まれる。
本記載は、例えば、SQLまたは別の種類のクエリ言語を用いた、ネットワーク上のデータソースへの照会に関する。
データソースに対するクエリは、データソースから取得されるべきデータを指定する。クエリはデータソース(例えば、データベース)へ提供されることが可能であり、データソースに関連付けられたデータ処理システム(例えば、データベース管理システム)が、クエリによって指定されたデータを返すことができる。クエリによって指定されたデータソース内のデータを識別するべくクエリを構文解析するために、様々な技法を用いることができる。
態様1は、リレーショナルデータベースに適用可能なクエリ言語に従って表現されたクエリに基づいてコンピュータプログラムを実行する、データ処理システムによって実施されるコンピュータ実施方法であって、コンピュータプログラムは、有形の非一時的なコンピュータ可読媒体内に記憶されたデータに少なくとも一部基づいて実行され、実行することは、SQLクエリを受信し、SQLクエリは、データ処理システムの外部にあるリソースに関連付けられた識別子を含むことと、SQLクエリに基づいてコンピュータプログラムを生成することであって、リソースに関連付けられた構成データを識別することを含み、構成データは、リソースと通信する際に用いられる少なくとも1つの値を指定する、生成することと、構成データに基づいてコンピュータプログラムを実行することと、を含み、コンピュータプログラムの実行は、1つまたは複数の命令をリソースへ伝送し、命令はSQLクエリの操作以外の操作を定義すること、および命令に応答してデータをリソースから受信すること、を引き起こす、方法である。
態様2は、コンピュータプログラムの部分が、リソースがアクセスされる仕方を定義する実行可能命令を含み、実行可能命令は、コンピュータプログラムの部分に提供された構成データに基づいて動作する、態様1の方法である。
態様3は、構成データが、リソースによって用いられるデータフォーマットに対する変更に基づいて更新されることができるカタログ内で指定される、態様1または2の方法である。
態様1は、構成データに基づいてパラメータ値を生成することと、パラメータ値をコンピュータプログラムの部分へ提供し、部分はリソースと通信する能力を有することと、を含み、コンピュータプログラムの実行がパラメータ値に基づく、態様1、2、または3のいずれか1つの方法である。
態様5は、構成データに基づいてパラメータ値を生成することが、パラメータファイルを、コンピュータプログラムの部分によって可読のフォーマットで生成するパラメータジェネレータを実行することを含み、パラメータ値をコンピュータプログラムの部分へ提供することが、パラメータファイルをコンピュータプログラムの部分が利用できるようにすることを含む、態様4の方法である。
態様6は、SQLクエリが、引き数を含むSELECT文を含み、引き数の少なくとも一部分は、リソースに関連付けられた識別子に対応する、態様1~5のいずれか1つの方法である。
態様7は、コンピュータプログラムが、SQLクエリの操作を表すコンポーネントを含む、態様1~6のいずれか1つの方法である。
態様8は、コンピュータプログラムがデータフローグラフであり、コンピュータプログラムの部分がデータフローグラフの部分グラフである、態様1~6のいずれか1つの方法である。
態様9は、リソースが、リソースによって公開されたアプリケーションプログラミングインターフェース(API)を用いてアクセスされる、態様1~8のいずれか1つの方法である。
態様10は、SQLクエリを受信したことに応答してAPIの関数を実行させることを含み、APIの関数はリソースにおいて実行可能であり、リソースへ伝送された命令がAPIの関数を実行させる、態様9の方法である。
態様11は、外部リソースから受信されたデータをデータベーステーブルの形式でフォーマットすることを含む、態様1~10のいずれか1つの方法である。
態様12は、リソースがリレーショナルデータベース管理システムでない、態様1~11のいずれか1つの方法である。
態様13は、命令が、SQLクエリに応答して結果を返さないリソースのファシリティへ伝送される、態様1~12のいずれか1つの方法である。
態様14は、命令に応答してリソースから受信されたデータが、SQLクエリによって指定されたデータを含む、態様1~13のいずれか1つの方法である。
態様15は、命令に応答してリソースから受信されたデータ内のレコードおよびフィールドを識別することを含み、レコードおよびフィールドは、データ処理システムの外部にあるリソースに関連付けられたレコードフォーマットに基づいて識別される、態様1~14のいずれか1つの方法である。
他の諸態様は、対応する装置、システム、およびコンピュータ可読記憶デバイスを含むことができる。
諸態様は以下の利点のうちの1つまたは複数を含むことができる。データ処理システムは、データ処理システムの外部のリソース(例えば、インターネット上で利用可能なもの)を参照し、リレーショナルデータベース管理システムではないクエリを実行することができる。
ネットワーク(例えば、インターネットなどの大規模ネットワーク)を通じて分散したデータは、たとえ、ネットワーク内のデータソースがデータベース言語に応答することができない場合、またはリレーショナルデータベースでない場合であっても、データベースプログラミング言語(例えば、SQL)を用いることによって効率的にアクセス可能にすることができる。これは、特定のデータソースに特に適応させることができ、それにより、時間とともに変化するデータソースを有するネットワーク内で用いることができる柔軟な探索スキームを提供し得る。その結果、これは、分散ネットワークを、(例えば、データソースの数を拡大もしくは縮小することによって、またはデータソースを交換もしくは変更することによって)より急速に発展させ、その一方で、発展させたネットワークの現在のデータソース内に記憶されたデータへのアクセスを維持することを可能にし得る。
本発明の他の特徴および利点は、以下の説明および請求項から明らかになるであろう。
クエリを処理することができるデータ処理システムを示す図である。 データ処理システムの要素を示す図である。 データ処理システムの要素を示す図である。 データ処理システムの要素を示す図である。 クエリを実行するためのユーザインターフェースを示す図である。 データフローグラフを示す図である。 データフローグラフの部分グラフを示す図である。 コンポーネントの実行可能コードを示す図である。 外部リソースのカタログの内容を示す図である。 外部リソースのカタログの内容を示す図である。 外部リソースのカタログの内容を示す図である。 クエリを実行することに関連付けられたプロセスのためのフローチャートである。 クエリを実行することに関連付けられたプロセスのためのフローチャートである。 クエリを実行することに関連付けられたプロセスのためのフローチャートである。 クエリを実行することに関連付けられたプロセスのためのフローチャートである。
データ処理システムはクエリ(SQLクエリなど)をデータフローグラフなどのコンピュータプログラムに変換することができる。コンピュータプログラムは、実行されると、クエリによって指定された操作と等価の操作(例えば、データ処理操作)を実施するコンポーネントを含む。
図1は、クエリ102を処理し、クエリ102によって指定された結果104を生成することができるデータ処理システム100を示す。結果104は、元のクエリ102によって参照された外部リソース108から受信されたデータ106に基づく。データ処理システム100は、データ処理システム100がクエリ102に基づいて生成し、外部リソース108へ送信する命令110に応答してデータ106を受信する。
クエリ102は、クエリによって指定されたデータを取得するために用いられる。1つの種類のクエリ102は構造化クエリ言語(SQL)クエリである。本説明はSQLクエリを一例として用いることになるが、ここで説明される諸技法は多次元式(MDX)クエリなどの他の種類のクエリとともに用いることもできるであろう。
SQLクエリ(SQL文とも呼ばれる)は、構造化クエリ言語(SQL)によって定義されたコマンドおよび構文を用いる。概して、クエリは、クエリ内で示された1つまたは複数のデータセット内のデータのサブセットを指定する文である。指定されたサブセットは、クエリを処理するシステムによって、クエリを発行したシステムへ返されることが可能である。クエリによって指定され、クエリに応答して返されるデータは概して、クエリによって示されたデータセット内に記憶されている全データの一部分である。SQLクエリの一例は、「SELECT last_name FROM current_customers」であり得るであろう。このSQLクエリは操作、SELECTを含む。操作、SELECTは、クエリを実行するシステムに、SELECT操作の引き数に従ってデータを取得するように命令する。SQLの構文内において、引き数は、データベーステーブルなどのデータのセットのである、「current_customers」、およびデータベーステーブルの列である、「last_name」である。システムがクエリを解釈し、クエリの操作を実行すると、システムはクエリに応答してlast_name列のデータ(例えば、last_name列内に含まれているデータの各部分)を返すことになる。SQLは、2008年4月7日に発行された、Alex KriegelおよびBoris Trukhnovによる「SQL Bible, 2nd Edition」、ISBN978-0470229064に詳細に説明されている。この文献は、本明細書において参照により組み込まれる。
クエリに応答してデータを返すリソースの典型的な例はリレーショナルデータベースである。リレーショナルデータベースは、1つまたは複数のデータベーステーブル、ならびにSQLクエリを解釈すること、データをテーブルから読み出すこと、データをテーブルに書き込むこと、およびその他の種類のデータ処理機能を実施することなどのデータ処理操作を管理するシステムの集合である。データベーステーブルは、a)レコードを各々表す行、およびb)行内に記憶されたデータのカテゴリを各々表す列の形で配列されたデータの集合である。例えば、「current_customers」と呼ばれるデータベーステーブルは、事業の現在の顧客を各々表す行を有してもよく、顧客の氏名、顧客の住所、顧客によって購入された一番最近の製品等などのデータのカテゴリを表す列を有してもよい。
リレーショナルデータベーステーブルは、データを、属性に各々対応するデータの要素で構成された、タプルの形式で記憶する一種のデータベーステーブルである。タプルはリレーショナルデータベース内の行の形式を採ることができ、属性はリレーショナルデータベース内の列の形式を採ることができる。それゆえ、各タプルは、データベーステーブルの属性のうちの1つに各々対応するデータの要素(時として、属性値と呼ばれる)を含む。さらに、複数のタプルのグループ化は時として関係と呼ばれる。
リレーショナルデータベース管理システム(RDBMS)は、リレーショナルデータベース内に記憶されたデータを作成および変更することを対象とする命令を処理するシステムである。RDBMSは、クエリを解釈し、クエリによって指定されたデータを返すための機能性を含む。クエリを解釈することと、クエリによって指定されたデータを返すこととの組み合わせは、時として、クエリを実行することと称される。例えば、いくつかのRDBMSの実装形態は、a)SQLクエリを構文解析し、b)構造化クエリ言語によって定義された操作を識別し、c)コマンドの引き数を識別し、d)引き数に従って操作を実施する(例えば、実行する)エンジンを含む。
上述されたように、SQLクエリ「SELECT last_name FROM current_customersは操作、SELECTを含み、この操作はRDBMSに、SELECT操作の引き数に従ってデータを取得するように命令する。引き数は、RDBMSによって管理されているデータベーステーブルである、「current_customers」、およびデータベーステーブルの列である、「last_name」である。RDBMSがクエリを解釈し、クエリの操作を実行すると、RDBMSはクエリに応答してlast_name列のデータ(例えば、last_name列内に含まれているデータの各部分)を返すことになる。RDBMSのいくつかの実装形態では、クエリプランナと呼ばれるモジュールが、実施されるべき操作を識別することになる。このように、SQLは、リレーショナルデータベースに適用可能な、例えば、RDBMSによって維持されているデータに適用可能なクエリ言語である。
外部リソース108はデータ処理システム100の外部にある。(データ処理システム100のいくつかの構成要素は図2A~図2Cに詳細に示される)。例えば、外部リソース108は、ネットワーク(例えば、インターネット)を用いて通信するファシリティとすることができる。データ処理システム100は、データをネットワークへ送信すること、およびデータをネットワークから受信することによって、外部リソース108と通信する。外部リソース108は、記憶媒体、例えば、有形の非一時的なコンピュータ可読媒体上に記憶されたデータベーステーブル、データファイル、またはその他のデータ構造などのデータのセットを含んでもよい。
データ処理システム100は、たとえ、クエリ102によって指定された外部リソース108がRBDMSを含まない場合でも、クエリ102によって指定された結果104を生成する能力を有する。言い換えれば、外部リソース108はRDBMSであるか、またはその構成要素の間にRDBMSを含む必要がない。外部リソース108のいくつかの例はRDBMSを含むことになり、その一方で、外部リソース108の他の例はRDBMSを含まないことになる。
使用時に、データ処理システム100はクエリ102に基づいてコンピュータプログラム108(時として、データ処理プログラムと呼ばれる)を生成する。例えば、コンピュータプログラム108は、クエリを入力として受け取り、データフローグラフを出力として作成するエンジン(例えば、データ処理システム100のサブシステムを形成するエンジン)を用いて生成されることが可能である。ここではデータフローグラフが一例として用いられているが、コンピュータプログラムは、プログラムコードによって表された命令を実施するために実行されることが可能であるプログラムコードを含む任意の種類のプログラムとすることができる。
このように、図1に示されるコンピュータプログラム108などのコンピュータプログラムは、実行されると、例えば、RDBMSなどのデータベース管理システムによる、対応するクエリ102の実行と同じ出力を作成することができる。それゆえ、クエリ102は、SQLなどのクエリ言語を用いて書くことができる。しかし、対応するデータ処理操作を実施するシステム、例えば、データ処理システム100のサブシステムは、クエリ102を実行したシステム(例えば、RDBMS)によって実施されるであろう操作と等価である操作を実施するために、コンピュータプログラム108を実行することができる。(概して、RDBMSは、コンピュータプログラム108を実行する能力を有する機能性を有しない)。2つの操作は等価であるという時、2つの操作は、同じ入力データを提供されると、実質的に同じ出力データを作成することを意味する。一例として、2つの操作は、同じ入力データを提供されると、全く同じ出力データを作成してもよい。一例として、同じ入力データを提供された2つの操作は、データのフォーマッティングが異なるのみである出力データを作成してもよく、例えば、1つの操作はコンマ区切りの出力データを作成してもよく、等価な操作は、そうでない場合にはコンマ区切りの出力データと同一であるタブ区切りの出力データを作成してもよい。
データ処理システム100は、たとえ、クエリ102がRDBMS以外のデータソースへの参照112を含む場合でも、クエリ102によって指定された結果104を生成することができる。例えば、クエリ102は、RDBMSでない外部リソース108を参照してもよい。外部リソース108はRDBMSでないため、外部リソース108は、クエリ、例えば、SQLクエリを解釈するための機能性に関連付けられていない。いくつかの実装形態では、データ処理システム100が外部リソース108のデータのレコードフォーマットへのアクセスを有する場合には、データ処理システム100はクエリを、外部リソース108から受信されたデータに適用することができる。レコードフォーマット(時として、スキーマと呼ばれる)はデータの本体の編成の記述である。
外部リソース108は、データ処理システム100の外部にあるデータの任意のソースとすることができる。データ処理システム100の外部にあるによって、リソースはデータ処理システム100の構成要素のうちの1つでないことを意味する。(データ処理システム100の構成要素のいくつかの例は図2A~図2Cに詳細に示される)。例えば、外部リソース108は、ネットワーク114(例えば、ここでは「雲」によって表されている、インターネット)を用いて通信するファシリティとすることができる。データ処理システム100は、データをネットワーク114へ送信すること、およびデータをネットワーク114から受信することによって、外部リソース108と通信する。いくつかの例では、外部リソース108は、TCP/IPまたはUDP/IPなどのインターネットベースのプロトコルを用いて通信するウェブサイトまたは別のファシリティとすることができる。
いくつかの実装形態では、外部リソース108は、ネットワーク114には不可視であるRDBMSを含んでもよい。これによって、外部リソース108は、外部リソース108のデータを記憶するリレーショナルデータベース管理システムを含んでもよいが、リレーショナルデータベース管理システムは、限られた場合(例えば、システムアドミニストレータがクエリを提出することを可能にするシステムアドミニストレータインターフェースを経由するなどの場合)を除いて、ネットワーク114を経由して到達するSQLクエリなどのクエリを受け付けないことを意味する。例えば、外部リソース108が、インターネット上で利用可能なウェブサイトである場合には、このとき、外部リソース108は、データを記憶する「後置型」リレーショナルデータベースを有してもよい。本例では、リレーショナルデータベースは、ウェブブラウザインターフェース、モバイルアプリケーション、または外部リソース108の多くの、またはほとんどのユーザによって利用されているその他のアクセス技法からのSQLクエリを受け付けない。その代わりに、外部リソース108のデータは、ハイパーテキスト転送プロトコル(HTTP)要求などの、SQLクエリを含まない技法、またはアプリケーションプログラミングインターフェース(API、後述される)を経由して提出された命令、あるいは別の技法を経由して主にアクセスされる。
外部リソース108はクエリ102を解釈しないため、データ処理システム100は、外部リソース108によって解釈されることが可能である、外部リソース108へ伝送するべき命令110を決定する。命令110は元のクエリ102の形式以外の形式のものである。例えば、元のクエリ102がSQLクエリである場合には、命令110はSQLクエリでない(例えば、命令110はSQLコマンドまたは引き数を含まない)。データ処理システム100は、クエリ102に基づいて、および外部リソース108を記述する他の情報に基づいて、いかなる命令110を外部リソース108へ送信するべきであるかを決定することができる。いくつかの実装形態では、データ処理システム100は、クエリ102を解釈し、クエリ102によって指定された結果104を生成するために用いられるモジュールを有する。いくつかの実装形態では、データ処理システム100は、クエリ102を実施する操作に対応する操作を含むコンピュータプログラムを生成し、実行されると、命令110を外部リソース108へ送信する。
図2A~図2Cは、外部リソース108を参照するクエリ102を実行するために用いることができるデータ処理システム100の要素を示す。図2Aを参照すると、クエリ102がデータ処理システム100によって受信されると、クエリ102はコンピュータプログラム生成エンジン120へ提供される。コンピュータプログラム生成エンジン120は、実行されると、クエリ102に対応する操作を実施するコンピュータプログラム132を生成する。例えば、クエリ102は、SQLクエリ、例えば、構造化クエリ言語によって定義された1つまたは複数のコマンド、ならびに操作に関連付けられた引き数を含むクエリであってもよい。本例では、コンピュータプログラム132は、SQLクエリを実施する操作と等価である実行可能な機能性を含む。コンピュータプログラム132が(例えば、実行エンジン140によって)実行されると、コンピュータプログラム132は、SQLクエリ内で定義された同じ引き数に基づいて実行する。
データ処理システム100は、操作を実施するためにRDBMSの機能性、例えば、RDBMSのクエリ解釈機能性に頼らない技法を用いて、クエリ102を実施する操作(時として、クエリ102を実行することと称されるプロセス)を実施することができる。その代わりに、クエリは、コンピュータプログラム132を実行することによって実施されることが可能である。コンピュータプログラム132が生成され、構成されると、リレーショナルデータベースのクエリ解釈機能性は、クエリ102に基づいて出力を生成するために用いられない。さらに、データ処理システム100は、たとえ、クエリ102内で識別されたデータソースが、クエリ102の形式のクエリを用いて動作するデータベースでない場合でも、クエリ102を実行することができる。例えば、外部リソース108は、SQLの形式で指定された命令を受け付けるように構成されていなくてもよい。クエリ102がSQLクエリであり、外部リソース108を参照する場合には、このとき、データ処理システム100はクエリ102を受信し、それに応答して、コンピュータプログラム132が構成され、実行されると、コンピュータプログラム132の出力がクエリ102の実行の出力と等価になるように、いかなる操作が実施されるべきであるかを決定することができる。
このように、SQLクエリを用いて、データをリレーショナルデータベースシステム以外のシステムから取得することができる。SQLは、クエリを指定するために用いられる共通言語であるため、多くのユーザはSQLクエリの書き方を知っており、多くのレガシーシステムは、SQLクエリを自動的に生成するように構成されている。ここで説明されている諸技法は、ユーザおよびレガシーシステムがSQLクエリを書くか、または生成することを可能にし、SQLクエリは、データを、SQLクエリを解釈するための機能性を有しない外部リソースから取得するために実施されることが可能である。さらに、データは、外部リソースから、SQLクエリを実行するリレーショナルデータベースへデータをコピーするのではなく、データ処理システム100によって外部リソースから取得されることが可能である。
いくつかの実装形態では、コンピュータプログラム132はデータフローグラフを含む。データフローグラフは、入力データに対して実施されるべき操作を表すコンポーネント、およびデータの流れを表すコンポーネント(時として、ノードと呼ばれる)の間のリンクを含むコンピュータプログラムである。コンポーネントによって表された操作は、入力データを処理することによって、入力データに基づいて出力データを生成する。コンポーネントが他のコンポーネントにリンクされている場合には、コンポーネントは入力データを他のコンポーネントへ提供し、出力データを他のコンポーネントから受信することができる。この場合、2つのコンポーネントの間の各リンクはコンポーネントの一方から他方のコンポーネントへのデータの流れを表す。グラフのコンポーネントのサブセット(例えば、グラフの1つまたは複数のコンポーネント)は時として、グラフの部分グラフと呼ばれる。
データフローグラフがグラフベースの処理システムによって実行されると、コンポーネントの各々が実行され、例えば、コンピュータプログラム、またはコンピュータプログラムの部分が実行され、コンポーネントによって表された操作を実施する。実行時に、データフローグラフは入力データを受信し、入力データは処理され(例えば、データフローグラフのコンポーネントの操作によって操作を受ける)、出力データを生成する。
データフローグラフのコンポーネントのいくつかまたは全ては、コンポーネントに関連付けられた操作を実施するための実行可能プログラムコードを呼び出すための情報に各々関連付けられている。いくつかの実装形態では、データフローグラフを表すデータ構造は、実行可能コードを参照するデータを含むことができる。データ構造は、データフローグラフをインスタンス化するために用いることができる。これによって、データ構造は、データフローグラフに関連付けられた操作を実施するコードを実行するために用いることができることを意味する。例えば、コンポーネントは、コンポーネントに関連付けられた操作、例えば、データを処理し、出力することを実施するためのコンピュータ実行可能命令を含むコンピュータ可読記憶装置内に記憶されたコンピュータプログラムへの参照に関連付けられていてもよい。
いくつかの例では、データフローグラフのいくつかまたは全てのコンポーネントは、データをプログラムコードが利用できるようにするための情報に各々関連付けられている。例えば、コンポーネントは、データを、コンポーネントに関連付けられた実行可能プログラムへ送出するために呼び出すことができる関数コールに関連付けられていてもよく、またはコンポーネントは、コンポーネントに関連付けられた実行可能プログラムへ送出されたデータを受信することができるネットワークポートに関連付けられていてもよく、またはコンポーネントは、データを、コンポーネントに関連付けられた実行可能プログラムへ送出するための別の技法に関連付けられていてもよい。このように、各コンポーネントはデータを受信し、処理し、出力することができる。
いくつかの例では、データフローグラフはパラメータ化可能である。これによって、データフローグラフは、データフローグラフが実行のために準備される際に、パラメータの値を用いて構成されることが可能であることを意味する。パラメータ値を提供されたデータフローグラフのインスタンスは時として、データフローグラフのパラメータ化インスタンスと呼ばれる。パラメータは、パラメータが属するプログラムの挙動を変更するために変更されることが可能であるデータの一種である。例えば、パラメータの値は、プログラムが入力データを処理し、出力データを作成する仕方を変更するために、プログラムへ提供されることが可能である。データフローグラフの場合には、データフローグラフの各コンポーネントは1つまたは複数のパラメータに関連付けられていてもよい。同様に、パラメータのうちの1つまたは複数は単一のコンポーネントに関連付けられているか、または複数のコンポーネントに関連付けられていてもよい。
グラフベースのシステムの一例が、「Managing Parameters for Graph-Based Applications」と題する米国特許出願公開第2007/0011668号に詳細に記載されている。この特許出願は本明細書において参照により組み込まれる。グラフベースの計算を実行するためのシステムが、「Executing Computations Expressed as Graphs」と題する米国特許第5,966,072号に記載されている。この特許は本明細書において参照により組み込まれる。さらに、データフローグラフのコンポーネントはクエリ102の操作に置き換えることができる。この置き換えに係る諸技法が、「Managing Data Queries」と題する米国特許出願公開第2011/0179014(A1)号、および同じく「Managing Data Queries」と題する米国特許出願公開第2012/0284255(A1)号にさらに記載されている。これらの特許出願は本明細書において参照により組み込まれる。いくつかの実装形態では、データフローグラフはクエリ102から作成することができる。
図2Bを参照すると、いくつかの例では、コンピュータプログラム132は、実行されると、外部リソース108と通信する部分134を含む。例えば、部分134は、データを外部リソース108へ伝送し、および/またはデータを外部リソース108から受信するように構成された実行可能機能性(例えば、実行可能プログラムコード)を含んでもよい。134が実行されると(例えば、部分134のプログラムコードが実行エンジンによって解釈され、実施されると)、コンピュータプログラム134はデータを外部リソース108へ伝送し、および/またはデータを外部リソース108から受信する。いくつかの実装形態では、部分134(およびコンピュータプログラム132の他の部分)は、データ処理システム100に提供されており、外部リソース108の識別に基づいて取得されるプログラムコードを含んでもよい。例えば、アプリケーション開発者(図示されていない)は、部分134のプログラムコードを、外部リソースの技術的要求に適合するように書いていてもよい。いくつかの実装形態では、技術的要求は、後述される、アプリケーションプログラミングインターフェース(API)を含む。いくつかの実装形態では、部分134はデータフローグラフのコンポーネント、またはデータフローグラフの部分グラフである。
いくつかの実装形態では、コンピュータプログラム生成エンジン120は、コンピュータプログラムの1つまたは複数の既存の部分にアクセスし、部分を組み立ててコンピュータプログラム132を形成することによって、コンピュータプログラム132を生成する。例えば、コンピュータプログラム生成エンジン120は、既存のコンポーネント、例えば、実行可能プログラムコードの既存の部分を記憶しているコンポーネントライブラリ126へのアクセスを有してもよい。例えば、既存のコンポーネントは、データフローグラフ内に含めるために適したコンポーネントであってもよく、またはデータフローグラフ内に含めるために適した別のグラフ(例えば、部分グラフ)であってもよい。
いくつかの実装形態では、コンポーネントライブラリ126は、特定の種類の外部リソース108に各々対応する既存のコンポーネントを含んでもよい。例えば、コンポーネントライブラリ126は、クエリ102内の参照112によって示された外部リソース108に対応するコンポーネント124を含んでもよい。いくつかの例では、コンポーネント124は、開発者によって、データ処理システム100が、参照112に対応する外部リソース108にアクセスすることを可能にする目的のために開発されていてもよい。コンポーネント124は、外部リソース108の識別に基づいてコンポーネントライブラリ126から選定されることが可能である。
コンピュータプログラム生成エンジン120が1つまたは複数のコンポーネント124を(例えば、コンポーネントライブラリ126から)受信すると、コンピュータプログラム生成エンジン120はまた、コンポーネント124またはコンポーネント群を構成する。その際に、コンピュータプログラム生成エンジン120は、構成された部分を有するコンピュータプログラム132を生成する。例えば、構成されたコンピュータプログラム132は、外部リソース108と通信するための実行可能機能性を含むコンポーネント124またはコンポーネント群に対応する、構成された部分134を含む。
いくつかの実装形態では、構成された部分134は、コンピュータプログラム生成エンジン120によって受信された特性136に基づいて構成されることが可能である。特性136は、外部リソース108の特徴を記述するデータを含む。このデータは、コンピュータプログラム132によって、どのようにデータを外部リソース108へ送信し、そこから受信するのかを決定するために用いられる。いくつかの例では、外部リソース108はデータを特定のフォーマットで送信および受信してもよい。これらの例では、特性136は、外部リソース108へ送信され、そこから受信されるべきデータのフォーマットの仕様を含むことができる。いくつかの例では、外部リソース108はユーザ名および/またはパスワードなどの認証情報の使用を必要としてもよい。これらの例では、特性136は識別子の仕様を含むことができる。いくつかの例では、外部リソース108は特定のアドレスまたはその他のロケーションにおいてアクセス可能であってもよい。例えば、外部リソース108は、特定のIP(インターネットプロトコル)アドレス、または特定のサーバ名、または別の種類のアドレスにおいてアクセス可能であってもよい。これらの例では、特性136はアドレス情報を含むことができる。
特性136は、例えば、外部リソース108の動作の変化に応答して、更新されることが可能であるソースから受信されることが可能である。例えば、特性136は、データ処理システム100が通信する能力を有する外部リソース108に対応する特性を表すデータを含むカタログ122内に記憶されていてもよい。カタログ122は、データベース、単層ファイル、または任意の他の種類のデータ記憶機構とすることができる。いくつかの実装形態では、カタログ122は複数のエンティティによって同時に読み出されること、および書き込まれることが可能である。例えば、カタログ122は、並行したデータ読み出し操作および書き込み操作を管理するための機能性を有するデータベースまたはその他のデータ記憶技法として実装することができるであろう。並行したデータ読み出し操作および書き込み操作を管理するための機能性の一例は、データの一部分がいつ書き込まれるのかを示すロックまたはセマフォの使用である。用いられ得るであろう1つの種類のロッキング機能性は、1つまたは複数のロックが獲得され、読み出し操作または書き込み操作が実施され、その後、ロックが解除される、2相ロッキングである。並行したデータ読み出し操作および書き込み操作を管理することによって、単一のカタログ122が生成エンジン120の多くのインスタンスによって用いられることが可能である。さらに、単一のカタログ122が多くの種類の外部リソース108のための特性136を記憶することができる。たとえ、特性136が頻繁にアクセスされるほど(例えば、カタログ136内に記憶された少なくともいくつかの特性が毎秒数回以上読み出されるか、または書き込まれるほど)、カタログ122によってサポートされている外部リソース108の数が十分に大きい場合でも、外部リソース108に関連付けられた特性136はいずれも随時更新されることが可能である。
いくつかの例では、外部リソース108の動作が変化した場合には、外部リソース108と通信するための実行可能コード(例えば、実行可能コンポーネント124の一部を構成する実行可能コード)は変更される必要はなく、特性のみが更新される。例えば、外部リソース108は、それが出力データを他のシステムへ提供する仕方を変更してもよい。特性136は、コンピュータプログラム生成エンジン120が、構成されたコンピュータプログラム132の部分134を、構成された部分134が、データを、外部リソース108から受信されることになるフォーマットで受け付けるように構成されることになるように構成することを可能にする。さらに、構成されたコンピュータプログラム132は、外部リソースへ送信されるべき命令110を生成することができ、外部リソース108によって解釈されると、外部リソース108に、命令110に応答してデータ106を返信させることになる。命令110は、構成された部分134によって、特性136によって指定された命令のフォーマットに基づいてフォーマットされることが可能である。いくつかの実装形態では、命令のフォーマットは、カタログ122内に記憶されたデータから導出される。
いくつかの実装形態では、カタログ122は、データ処理システム100が通信する能力を有する外部リソース108のデータ106のレコードフォーマットについての情報を含む。例えば、コンピュータプログラム132は、カタログ122内に記憶されたレコードフォーマット128を用いて、対応する外部リソース108から受信されたデータ106を解釈することができる。いくつかの例では、カタログ122内に記憶されたレコードフォーマット128は、外部リソース108から受信されたデータ106の構造を指定する。レコードフォーマットは、データがレコードに編成され、それにより、各レコードが複数のフィールドを有する、データの構造を指定してもよい。コンピュータプログラム132はレコードフォーマット128を用いて、外部リソース108から受信されたデータ106内のレコードおよびフィールドを識別することができる。いくつかの例では、コンピュータプログラム132はレコードフォーマット128を用いてデータ106を解釈し、例えば、データのレコードおよびフィールドを異なるフォーマット(例えば、コンピュータプログラム132の出力において用いられるべきフォーマット)に変形することができる。
いくつかの実装形態では、コンピュータプログラム132はカタログ122のレコードフォーマット128を用いて、データを、SQLクエリの結果に期待される形式に対応する形式で出力することができる。いくつかの例では、リレーショナルデータベース管理システムは、例えば、SQLクエリに応答して、データをレコードおよびフィールドの形式で返す。それゆえ、コンピュータプログラム132が外部リソース108からのデータ106内のレコードおよびフィールドも識別することができる場合には、コンピュータプログラム132はSQLクエリに応答して出力をレコードおよびフィールドの形式で提供することができる。これは、たとえ、外部リソース108から受信されたデータ106が、リレーショナルデータベースから通例受信されるデータの形式、例えば、データベーステーブル、を採らない場合でも、実施されることが可能である。
いくつかの実装形態では、コンピュータプログラム132はパラメータを用いて構成することができる。例えば、パラメータは、プログラムの挙動を変更するために変更されることが可能である値であってもよい。具体例として、パラメータは「filename」であってもよく、パラメータの値はファイルシステム内のファイルのロケーションとすることができる。パラメータの値は、プログラムを、異なるファイルにアクセスするように構成するために、異なるファイルのロケーションに変更されることが可能である。同じプログラムの2つのインスタンス(例えば、同じ実行可能プログラムコードのインスタンス)が、同じプログラムの2つのインスタンスの挙動を変更することになる、異なるパラメータ値を用いて構成されることが可能である。
図2Cを参照すると、コンピュータプログラム生成エンジン120は特性を用いて、構成されたコンピュータプログラム132の部分134を構成するために用いられるパラメータ値138を生成することができる。いくつかの例では、コンピュータプログラム132は、特性136の各々に対応するパラメータを有してもよい。例えば、コンピュータプログラム132は、コンピュータプログラム132がデータ106をいかなるフォーマットで受信することになるのかを決定するために用いられる「record_format」と呼ばれるパラメータを有してもよい。コンピュータプログラム生成エンジン120は、外部リソース108のための特性136の一部として受信されたレコードフォーマットに基づいて「record_format」パラメータのためのパラメータ値138を生成することができる。別の例として、コンピュータプログラム132は、外部リソース108に接続する際にユーザ名を供給するために用いられる「username」と呼ばれるパラメータを有してもよい。コンピュータプログラム生成エンジン120は、外部リソース108のための特性136の一部として受信されたユーザ名データに基づいて「username」パラメータのためのパラメータ値138を生成することができる。
いくつかの実装形態では、パラメータ値138は、コンピュータプログラム132によって可読のフォーマットによるパラメータファイルの形式でコンピュータプログラム132へ提供される。例えば、パラメータファイルはデータ操作言語(DML)でフォーマットされてもよい。
いくつかの実装形態では、コンピュータプログラム132は、外部リソース108に関連付けられた実行可能コードに基づいて生成される。例えば、カタログ122は、実行可能コードが(例えば、特性136などの構成データを用いて)構成されると、その後、実行可能コードを用いて外部リソース108と通信することができる、実行可能コードのロケーションを指定してもよい。このように、実行可能コードが、例えば、実行可能コードを変更することを許可されたシステムアドミニストレータまたはその他のエンティティによって、更新された場合には、カタログ122は、更新された実行可能コードのロケーションを記憶する。コンピュータプログラム生成エンジン120がコンピュータプログラム132を生成すると、コンピュータプログラム生成エンジン120はカタログにアクセスし、実行可能コードの最新バージョンのロケーションを決定することができる。
コンピュータプログラム132が生成されると、実行エンジン140がコンピュータプログラム132を受信する。次に、実行エンジン140はコンピュータプログラム132を実行し、例えば、コンピュータプログラム132に関連付けられたプログラムコードによって指定された命令を実施する。実行されると、コンピュータプログラム132(例えば、コンピュータプログラムの構成された部分134)は命令110を生成し、命令110を外部リソース108へ伝送する。いくつかの実装形態では、外部リソース108は、命令を外部リソース108へ送信し、データを外部リソース108から受信するために用いられるAPI142(アプリケーションプログラミングインターフェース)を公開する。概して、API142は、コンピュータプログラム132が外部リソース108と対話することを可能にする任意のファシリティとすることができる。例えば、API142は、外部リソース108が受信して実施するように構成されている命令の種類を指定してもよい。APIによって通例指定される命令の一例は関数コールである。関数は実行可能プログラムコードの一部分である。関数コールを用いる際に、コンピュータプログラム132は、命令110の一部として、関数の名前、および関数に渡されるべき(例えば、関数の実行可能プログラムコードによって用いられる)引き数を伝送する。命令110は、多くの関数コール、またはその他の種類の命令、あるいはその両方を含んでもよい。
いくつかの実装形態では、コンピュータプログラム132がデータフローグラフである場合には、実行エンジン140は、時として、グラフオペレーティングシステムと呼ばれる、専用オペレーティングシステムを含む。グラフオペレーティングシステムは、データフローグラフの個々のコンポーネントの基礎をなす操作を実行する能力を有するコンピュータプログラムである。例えば、データフローグラフのコンポーネントが、データ処理システムによって実施されるべき操作を表す場合には、グラフオペレーティングシステムは、データ処理システムに、操作を実施するように命令するタスクを課される。
命令110を外部リソース108へ送信した後に、コンピュータプログラム132は命令110に応答してデータ106を外部リソースから受信する。次に、実行エンジン140は、受信されたデータ106をクエリ102の結果104にフォーマットする。このように、データ処理システム100はクエリ102を実行し、クエリによって指定された結果104を生成することができる。
いくつかの実装形態では、外部リソース108は、データ106を、データを属性-値の対の形式で指定するJSON(JavaScriptオブジェクト表記法)、またはデータを、データのためのカテゴリを示すタグによって区切って指定するXML(拡張可能マーク付け言語)などのフォーマットで提供する。いくつかの実装形態では、データ106のためのレコードフォーマット128は、外部リソース108に関連付けられた他のデータとともにカタログ122内に記憶されており、JSONまたはXMLデータを解釈するために用いることができる。
コンピュータプログラム132が実行エンジン140によって実行されると、コンピュータプログラム132(例えば、結果104)は、クエリ102を実行するが、構成されたコンピュータプログラム132を実行しない(実行エンジン140以外の)システムの出力と等価である。このように、コンピュータプログラム132は、クエリ102に対応するコンピュータプログラムの一例である。いくつかの実装形態では、コンピュータプログラム132は結果104をデータベーステーブル144の形式でフォーマットする。このように、データ処理システム100は、クエリ102、例えば、SQLクエリなどのデータベースクエリ)を実行し、RDBMSなどのシステムがクエリ102を実行し、クエリによって指定された結果を提供すれば提供されるであろう同じ種類の出力を提供することができる。
さらに、SQLクエリが、データベーステーブル内に記憶されたデータを取得するために通例用いられるが、ここで示されるクエリ102は、いくつかの可能な形式のうちの任意のもので記憶されたデータを取得するために用いることができる。外部リソース108から受信されたデータ106は、データベーステーブル(例えば、リレーショナルデータベーステーブル)以外の形式、例えば、単層ファイル、によるものであってもよい。単層ファイルは、データ要素間の構造的関係を含まないデータファイルである。単層ファイルのデータは、レコードおよびフィールドの形式で表される能力を有してもよい。いくつかの例では、外部リソース108から受信されたデータ106は、外部リソース108にネイティブのフォーマットによるものであってもよい。これによって、データ106は、外部リソース108によって、データを記憶および処理するために用いられるフォーマットによるものであってもよいことを意味する。
図3は、クエリを実行するためのユーザインターフェース300を示す。このユーザインターフェース300は、図1および図2に示されるデータ処理システム100に関連付けられている。このユーザインターフェース300は、ユーザ(図示されていない)がSQLクエリ302をユーザインターフェース300のテキストボックス304内に入力することを可能にする。SQLクエリ302は、‘SELECT’コマンド306、およびデータソースのための識別子である引き数308を含む。ここでは、引き数308は「web.wikipedia」である。引き数「web.wikipedia」は外部リソース(例えば、図1に示される外部リソース108)に関連付けられている。
いくつかの例では、データ処理システム100は、識別子のリスト、および各識別子に関連付けられた外部リソースのリストを記憶してもよい。多数の技法を、識別子を外部リソースに関連付けるために用いることができるであろう。いくつかの例では、図2B~図2Cを参照すると、カタログ122が、外部リソースに各々対応する、識別子のリストを記憶していてもよい。例えば、各識別子は、データ処理システム100に提出されたクエリ102内に含まれる参照112に対応してもよい。例えば、参照112は、図3においてクエリ300内に示される引き数308「web.wikipedia」であってもよい。このように、参照112をクエリ102から抽出し、カタログ122内の対応する外部リソースを検索するために用いることができる。さらに、カタログは各識別子を特性136のそれぞれのセットに関連付けていてもよい。カタログ122は各識別子をコンポーネントライブラリ126内の1つまたは複数のコンポーネントへの参照に関連付けていてもよい。このように、外部リソースへの参照を用いて、カタログ122内において、特性の対応するセット、および対応するコンポーネント(例えば、図2B~図2Cに示されるとおりのコンポーネント124)への参照を識別することができる。別の例として、コンポーネントライブラリ126が識別子を記憶していてもよく、例えば、各コンポーネント124のための識別子を記憶していてもよく、それにより、識別子(外部リソースの名前など)を用いて、1つまたは複数の対応するコンポーネント(例えば、図2B~図2Cに示されるとおりのコンポーネント124)を識別することができる。
図3に示されるように、「web.wikipedia」は、ハイパーテキスト転送プロトコル(HTTP)を介してインターネット上で利用可能なウィキペディアと呼ばれるウェブサイトを参照する識別子である。ユーザがクエリ実行ボタン310をクリックすると、ユーザインターフェース300はデータ処理システム100(図1)にSQLクエリ302を実行させる。
SQLクエリ302が実行されると、実行の結果312がユーザインターフェース300内に示される。本例では、結果312はデータベーステーブルの形式で表示される。結果312は、データの要素を含む行314および列316を含む。引き数308に関連付けられた外部リソースはリレーショナルデータベースでないが、データ処理システム100は、クエリ302が、外部リソース(ここでは、ウィキペディア)をデータソースとして用いて実行されることを可能にし、結果312が、データベーステーブルとしてフォーマットされることを可能にする。例えば、結果312は、ウィキペディアによって返されたデータ内のレコードおよびフィールドを識別することによって、データベーステーブルとしてフォーマットすることができる。識別は、ウィキペディアに関連付けられたレコードフォーマット128(図2B~図2C)を用いることによって実施することができる。ここで、クエリ302は、結果312によって満足されなければならない基準を示す‘where’コマンド318含んでいた。コマンド318は、結果がテキスト内に用語「SQL」を含まなければならないことを示す「subject = ‘SQL’」の引き数320(この種の引き数は時として、述語と呼ばれる)を有する。それゆえ、結果312は全て用語「SQL」を含む。
図4Aは、クエリ302の実行に応答して生成されたデータフローグラフ400を示す。データフローグラフ400は、図2A~図2Cに示される、構成されたコンピュータプログラム132の一例である。いくつかの実装形態では、データフローグラフ400は、他のコンポーネントを含む別のデータフローグラフの部分グラフであってもよい。クエリ302が実行されると、データ処理システム(図1および図2)はデータフローグラフ400を生成し、構成する。さらに、実行エンジン140(図2A~図2C)はデータフローグラフ400を実行し、図3に示される結果312を生成する。データフローグラフ400は、外部リソース108(図1)を表すコンポーネント402、および外部リソース108への入力を表すコンポーネント404を含む。ここでは、コンポーネント402はウィキペディアを表す。例えば、コンポーネント402、404はともに、図2B~図2Cに示される、構成された部分134の一例であってもよい。データフローグラフ400が(例えば、グラフオペレーティングシステムによって)実行されると、コンポーネント402は命令(例えば、図1および図2に示される命令110)を外部リソース108へ伝送する。命令は、入力コンポーネント404から受信された入力データに基づく。例えば、ウィキペディアは、ハイパーテキスト転送プロトコル(HTTP)を介して提出された平文クエリを実行する探索クエリ関数を公開してもよい。本例では、コンポーネント402は、平文探索クエリをウィキペディアへ伝送するように構成されている。例えば、SQLクエリ302は「subject = ‘SQL’」の引き数320を含んでいた。ここでは、入力コンポーネント404は、用語「SQL」を、ウィキペディアと通信するコンポーネント402へ提供するように構成されることが可能である。その結果、コンポーネント402は、(例えば、入力コンポーネント404から受信された)用語「SQL」を平文探索クエリの一部として伝送するように構成される。平文探索クエリに応答して、コンポーネント402はHTTPを介して、ハイパーテキストマーク付け言語(HTML)に従ってフォーマットされていてもよい、結果を受信する。コンポーネント402はまた、受信されたHTMLデータを構文解析し、構文解析されたデータをデータベーステーブル、例えば、図3に示される結果312などの形式にフォーマットするように構成される。
ウィキペディアと通信するために、コンポーネント402、404は、ウィキペディアに固有の特性(例えば、図2B~図2Cに示される特性136)を用いて構成される。例えば、特性136は、ウィキペディアが探索結果を提供するフォーマット、例えば、探索結果において用いられる特定のHTMLフォーマッティングを記述する情報を含んでもよい。このように、ウィキペディアがその出力のフォーマットを変更した場合には、(例えば、図2B~図2Cに示されるカタログ122内に記憶された)特性136は、更新されたフォーマットを反映するように更新されることが可能である(例えば、カタログ122のアドミニストレータユーザによって更新される)。ウィキペディアと通信するコンポーネント402が構成されると、特性136の最も直近のバージョンにアクセスし、利用することができる。
コンポーネント402、404は、特性に基づくパラメータ値を用いて構成される。一例として、コンポーネント404は、「input_text」と呼ばれるパラメータを有してもよく、そのため、コンポーネント404は、テキスト文字列「SQL」を「input_text」パラメータのための値として用いるように構成されることが可能である。このように、SQLクエリ内で定義された引き数320によって定義された基準が、ウィキペディアに照会する際に用いられる。
いくつかの実装形態では、ウィキペディアなどの外部リソースと通信するコンポーネント402は複数の実行可能コンポーネントで構成される。いくつかの例では、コンポーネント402は、1つまたは複数のネットワークリソースとのネットワーク接続を確立するための実行可能命令を含む1つまたは複数のコンポーネントを含んでもよい。例えば、ネットワークリソースは、ウィキペディアから発出したデータを提供することができるサーバであってもよい。
いくつかの例では、コンポーネント402は、外部リソースから受信されたデータを構文解析するための実行可能命令を含む1つまたは複数のコンポーネントを含んでもよい。例えば、ウィキペディアから受信されたデータは、SQLクエリ302に応答するデータ、ならびにマーク付けデータ(例えば、XMLタグなどのタグ)、受信されたデータのサイズもしくは文字セットを記述するデータなどのメタデータ、またはクエリに応答しないその他のデータなどの、他の種類のデータの両方を含んでもよい。外部リソースから受信されたデータを構文解析するための実行可能命令を含むコンポーネントは、外部リソースから受信されたデータを処理し、クエリに応答するデータを、クエリに応答しないデータから分離することができる。クエリに応答しないデータは破棄されるか、または別の目的のために用いられてもよい。例えば、受信されたデータのサイズを記述するデータは、予想された量のデータが外部リソースから受信されたことを決定するために用いることができる。
いくつかの例では、コンポーネント402は、外部リソースから受信されたデータをフォーマットするための実行可能命令を含む1つまたは複数のコンポーネントを含んでもよい。例えば、コンポーネント402は、特定の仕方でフォーマットされた出力データを(例えば、データフローグラフ400の他の部分へ)提供してもよい。出力データは、例えば、複数のテキスト行、またはアレイの複数の要素、あるいは別の種類のフォーマットとしてフォーマットされることが可能であろう。いくつかの実装形態では、外部リソースから受信されたデータをフォーマットするための実行可能命令を含むコンポーネントは、構文解析されたデータ(例えば、外部リソースから受信されたデータを構文解析するための実行可能命令を含むコンポーネントによって構文解析されたデータ)を受信し、構文解析されたデータを、データフローグラフ400の出力データのために指定されたフォーマットでフォーマットすることができる。例えば、データフローグラフ400の出力データのために指定されたフォーマットはデータベーステーブルのフォーマットであってもよい。
複数のコンポーネントで構成された1つの種類のコンポーネントは部分グラフと呼ばれる。図4Bは、ウィキペディアと通信するコンポーネント402を構成するコンポーネント412a~gを含む部分グラフ410の一例を示す。コンポーネント412a~gは、ウィキペディアと通信するために必要な計算操作の一部分を実施する実行可能機能性を各々含む。例えば、1つのコンポーネント412aは、ネットワーク上のサーバ、例えば、ハイパーテキスト転送プロトコル(HTTP)を用いるサーバと通信するための実行可能コードを含む「ウェブサービス呼び出し」コンポーネントである。「ウェブサービス呼び出し」コンポーネント412aは要求をサーバへ伝送し、要求に応答してデータを受信する。いくつかの実装形態では、「ウェブサービス呼び出し」コンポーネント412aはシンプルオブジェクトアクセスプロトコル(SOAP)要求を外部リソースへ伝送する。いくつかの実装形態では、「ウェブサービス呼び出し」コンポーネント412aは外部リソースのアプリケーションプログラミングインターフェース(API)にアクセスする。
「ウェブサービス呼び出し」コンポーネント412aは、要求内に含めて伝送されるべきデータを指定する入力を受信する。
複製コンポーネント412bおよび再フォーマットコンポーネント412cは、「ウェブサービス呼び出し」コンポーネント412aによって伝送されるべきデータを準備する。例えば、複製コンポーネント412bはデータを、図4Aに示される入力コンポーネント404から受信してもよい。いくつかの実装形態では、再フォーマットコンポーネント412cは、次に、外部リソースへ伝送するのに不適当であるデータを削除することができる。例えば、データの一部は、外部リソースへ伝送するのに不適当である場合があり、例えば、データの一部は、外部リソースの探索機能性へ伝送されることが可能である探索語であり得るであろう。いくつかの例では、データの一部は、外部リソースへ伝送するのに適当でないデータであり得るであろう。例えば、外部リソースは、元のクエリ(例えば、図1に示されるクエリ102)に応答するようにデータを処理するための機能性を欠く場合がある。一例として、データの一部は正規表現であってもよく、外部リソースは、外部リソースの探索機能性によって受信された正規表現を評価するための機能性を欠く場合がある。
第2の再フォーマットコンポーネント412dが、外部リソースから受信されたデータのフォーマットを変更し、例えば、「ウェブサービス呼び出し」コンポーネント412aによって出力として提供されたデータを構文解析してフォーマットする。例えば、「ウェブサービス呼び出し」コンポーネント412aから受信されたデータはXMLデータなどのタグ付きデータであってもよい。再フォーマットコンポーネント412dは、タグによって区切られたデータを抽出し、抽出されたデータを、XMLタグを用いないフォーマットで出力することができる。再フォーマットコンポーネント412dはまた、出力データ内に必要ないデータを削除してもよい。例えば、破棄されるデータは、XMLタグ、またはXMLタグによって区切られているが、クエリに応答しないデータであってもよい。いくつかの実装形態では、再フォーマットコンポーネント412dは、データを再フォーマットする前に、レコードフォーマット128(図2B~図2C)を用いて、「ウェブサービス呼び出し」コンポーネント412aから受信されたデータの構造を解釈し、例えば、「ウェブサービス呼び出し」コンポーネント412aから受信されたデータ内のレコードおよびフィールドを識別する。
複製コンポーネント412bはまた、データを第3の再フォーマットコンポーネント412eへ提供することができる。いくつかの実装形態では、この再フォーマットコンポーネント412eは、第1の再フォーマットコンポーネント412cによる削除であった外部リソースへ伝送するのに不適当であるデータを識別する。ここで、外部リソースへ伝送するのに不適当であるデータは、再フォーマットコンポーネント412eによって、2つのコンポーネントから受信されたデータを組み合わせる結合コンポーネント412fへ提供されることが可能である。
第2の再フォーマットコンポーネント412dもまた、その出力を結合コンポーネント412fへ提供する。それゆえ、結合コンポーネント412fは、第2の再フォーマットコンポーネント412dおよび第3の再フォーマットコンポーネント412eからの入力を表す出力を提供する。
フィルタコンポーネント412gが結合コンポーネント412fの出力を受信する。フィルタコンポーネント412gは、クエリ(例えば、図1に示されるクエリ102)に応答しないデータを削除する。一例として、「ウェブサービス呼び出し」コンポーネント412aがクエリの1つまたは複数の要素(例えば、部分)を提供されなかったがゆえに、「ウェブサービス呼び出し」コンポーネント412aは、元のクエリに応答しないデータを出力する場合がある。クエリの1つまたは複数の要素は、「ウェブサービス呼び出し」コンポーネント412aによって表された外部リソースへ提供するのに適当でない場合がある、正規表現であってもよい。ここで、フィルタコンポーネント412gは、正規表現(例えば、第3の再フォーマットコンポーネント412eによって結合コンポーネント412fへ出力され、第1の再フォーマットコンポーネント412cによって、「ウェブサービス呼び出し」コンポーネント412aへ提供された出力から削除されたとおりのもの)を受信することができるであろう。フィルタコンポーネント412gは、正規表現に基づいて「ウェブサービス呼び出し」コンポーネント412aから最初に受信されたデータをフィルタリングすることができる。ここでは正規表現の例が用いられているが、フィルタコンポーネント412gは、クエリの他の種類の要素、または他の種類の基準、例えば、クエリ内で指定されていない基準に基づいてデータをフィルタリングすることができるであろう。
図4Bに示される部分グラフ410のコンポーネントの各々は、部分グラフ410が実行されると実施されるそれ自身の実行可能コードを有する。例えば、図4Cは、図4Bに示されるウェブサービス呼び出しコンポーネント412を構成する実行可能コード440の一例を示す。実行可能コード440は、外部リソースへの要求をフォーマットするためのコード442、外部リソースからの出力を構文解析するためのコード444、要求を外部リソースへ伝送するためのコード446、および外部リソースからの出力を他のコンポーネントへ提供するためのコード448を含む。
図2B~図2Cに関して上述されたように、カタログ122は、データ処理システム100が通信する能力を有する外部リソース108に対応するデータを含む。カタログ108内に記憶されたデータ、例えば、特性136は、コンピュータプログラム132を構成するために用いられる。
図5Aに示されるように、いくつかの実装形態では、ユーザインターフェース500を、カタログ122内に記憶されたデータを見て編集するために用いることができる。ユーザインターフェース500は、ユーザ(例えば、カタログ122のアドミニストレータ)がカタログ内のエントリ502のためのデータを見て編集することを可能にする。カタログのエントリ502は、特定の外部リソース、例えば、ウィキペディアに関連するデータを記憶する。ここではユーザインターフェース500およびエントリ502の一例が示されているが、他の様式のカタログは他の様式のエントリを有してもよく、他の様式のエントリは異なる種類のデータを含んでもよい。
このエントリ502はエントリについての一般情報504aなどのデータを含む。エントリ502はまた、後述されるように、外部リソースから受信されたデータのフォーマットを指定する、エントリ502に関連付けられた外部リソースのレコードフォーマット504bを含むことができる。エントリ502はまた、後述されるように、このエントリ502に関連付けられた外部リソースに照会するために用いることができるデータのための名前を指定するエントリのためのインデックス504cを含むことができる。例えば、エントリ502はまた、エントリのためのキー504dを含むことができる。キーは、データをレコードの形式で記憶する、リレーショナルデータベースなどの、データソースのために用いられる。その属性のためのレコードの記憶された値が一意的であるキー属性。エントリ502はまた、エントリのためのパラメータ504eを含むことができる。いくつかの実装形態では、図2Cを参照すると、パラメータ、例えば、パラメータ138が、コンピュータプログラム132を構成するために用いられる。いくつかの実装形態では、パラメータ504eは、このエントリ502に関連付けられた外部リソースの特徴を記述するデータを含む、図2B~図2Cに示される特性136のためのデータ値を含む。例えば、パラメータ504eは、外部リソース108への許可されたアクセスを得るために用いられる認証情報(例えば、ユーザ名およびパスワード)などの構成データを含んでもよい。エントリはまた、いかなるエンティティ(例えば、カタログ122のアドミニストレータなどのユーザインターフェース500のいかなるユーザ)がエントリ502にアクセスし、および/またはそれを変更することができるのかを示す、エントリ502のための権限504fを含むことができる。エントリはまた、このエントリ502に関連付けられた外部リソース108についての統計データ、例えば、外部リソース108において利用可能なデータ量などの統計データを指定する、エントリ502のための統計504gを含むことができる。
図5Aに示されるように、エントリの一般情報504aは、記憶された実行可能コードのパスへの参照506を含む。いくつかの実装形態では、図1を参照すると、記憶された実行可能コードは、外部リソース108と通信するコンピュータプログラム132の部分134である。参照506は、生成エンジン120によって、記憶された実行可能コードにアクセスし、記憶された実行可能コードを用いてコンピュータプログラム132を生成するために用いられることが可能である。
図5Bに示されるように、エントリ502はまた、エントリ502に関連付けられた外部リソースのレコードフォーマット504bを含むことができる。レコードフォーマット504bは、図2B~図2Cに示されるレコードフォーマット128の一例であってもよい。レコードフォーマット504bは、外部リソースから受信されるデータのフォーマットを指定する。検討のために、レコードフォーマット504bは埋め込みレコードフォーマット508およびフィールド510を含むことができる。フィールド510は、外部リソースへ伝送され、そこから受信されるデータのための名前を指定する。例えば、ここでは、フィールド510は、ウィキペディアへ伝送されるデータのための名前である「サブジェクト」(例えば、百科事典へのクエリ内で用いられるサブジェクト)、およびウィキペディアから受信されるデータのための名前である「行」(例えば、サブジェクトに対応する百科事典エントリの行)である。埋め込みレコードフォーマット508は、外部リソースへ提供され、そこから受信されるデータについてのフォーマット情報を指定する。例えば、この埋め込みレコードフォーマット508は、「サブジェクト」および「行」フィールドは、特定の種類のユニコード文字符号化である、UTF-8を用いてフォーマットされることを示す。
図5Cに示されるように、エントリ502はまた、このエントリ502に関連付けられた外部リソースに照会するために用いることができるデータのための名前を指定するエントリのためのインデックス504cを含むことができる。例えば、このエントリ502は、「サブジェクト」と呼ばれるインデックス514を有する。それゆえ、外部リソースは、「サブジェクト」のためのデータ値を受信し、データ値に応答してデータを返すように構成されている。例えば、ウィキペディアは、各エントリに関連付けられた「サブジェクト」フィールド内にデータ値が現れた百科事典エントリを返すように構成されていてもよい。
図6Aは、クエリを実行するための手続き600を表すフローチャートを示す。手続き600は、例えば、図1に示されるデータ処理システム100のコンポーネントによって実施されることが可能である。
手続きはSQLクエリを受信する602。例えば、SQLクエリは、図1に示されるクエリ102の一例とすることができる。SQLクエリは、データ処理システムの外部にあるリソースに関連付けられた識別子を含む。さらに、このリソースはリレーショナルデータベース管理システムでない。リソースは、図1に示される外部リソース108とすることができる。識別子の一例は、図3に示される引き数308である。
手続きはSQLクエリに基づいてコンピュータプログラムを生成する604。コンピュータプログラムは、図2A~図2Cに示されるコンピュータプログラム132とすることができる。いくつかの例では、コンピュータプログラムは、SQLクエリの操作を表すコンポーネントを含む。いくつかの例では、コンピュータプログラムはデータフローグラフであり、外部リソースと通信するコンピュータプログラムの部分はデータフローグラフのコンポーネントまたは部分グラフである。データフローグラフ400の一例が図4Aに示されている。いくつかの実装形態では、図6Bに示される手続き610を、例えば、コンピュータプログラムの生成の間にコンピュータプログラムの1つまたは複数の部分を構成するために、コンピュータプログラムの生成の間に実施することができる。いくつかの実装形態では、図6Dに示される手続き630を、コンピュータプログラムをインスタンス化するために用いることができるデータ構造、例えば、データフローグラフを生成するために実施することができる。
手続きは、例えば、コンピュータプログラムを構成するために用いられるパラメータ値に基づいて、コンピュータプログラムを実行する606。例えば、コンピュータプログラムは、図2A~図2Cに示される実行エンジン140によって実行されてもよい。いくつかの実装形態では、コンピュータプログラムの実行は、図5Cに示される手続き620に対応する。
図6Bは、コンピュータプログラムを生成する際にコンピュータプログラムの一部分を構成するために用いられる手続き610を表すフローチャートを示す。いくつかの実装形態では、手続き610は、図6Aに示されるとおりのコンピュータプログラムを生成する604ためのステップを表す。手続き610は、例えば、コンピュータプログラム生成エンジン120などの、図1に示されるデータ処理システム100のコンポーネントによって実施されることが可能である。いくつかの実装形態では、コンピュータプログラムは、複数の部分を組み立てることによって生成される。各部分は、コンピュータプログラムが組み立てられている間に構成されてもよい。この手続き610は、組み立てられているコンピュータプログラムの一部分を構成するために用いることができる。
手続きは、外部リソースに関連付けられた構成データを識別する614。例えば、外部リソースは、図1および図2に示される外部リソース108とすることができる。構成データは、コンピュータプログラムによって、外部リソースにアクセスし、データを外部リソースから受信するために用いられる情報を指定する。いくつかの実装形態では、構成データは、リソースから受信されるべきデータのフォーマット、例えば、図2B~図2Cに示されるレコードフォーマット128を指定する。いくつかの実装形態では、構成データは、ネットワーク上のリソースにアクセスするために用いられるデータを指定する。例えば、構成データは、外部リソースのデータへの許可されたアクセスを入手するために用いられる、ユーザ名およびパスワードなどの、認証情報を含むことができ、ならびに/あるいは構成データは、ホスト名またはユニフォームリソースロケータ(URL)などのネットワークアドレスを含むことができ、ならびに/あるいは構成データは他の種類のデータを含むことができる。例えば、いくつかの例では、構成データは、図2B~図2Cに示される特性136の一例とすることができる。構成データは、リソースによって用いられるデータフォーマットに対する変更に基づいて更新されることができるカタログ内で指定される。
手続きは構成データに基づいてパラメータ値を生成する616。例えば、パラメータ値は、図2Cに示されるパラメータ値138であってもよい。いくつかの実装形態では、パラメータジェネレータがデータを受信し、パラメータファイルを、コンピュータプログラムによって可読なフォーマットで生成する。次に、パラメータファイルはコンピュータプログラムへ提供される。例えば、パラメータジェネレータは、図1に示されるコンピュータプログラム生成エンジン120の一部分とすることができる。パラメータジェネレータによって受信されるデータは、図2B~図2Cに示される特性136のデータとすることができる。例えば、パラメータジェネレータは特性136を構文解析してパラメータ値138を決定してもよい。
手続きはパラメータ値をコンピュータプログラムの一部分へ提供する516。部分は、リソースと通信する能力を有する。例えば、コンピュータプログラムの部分は、図2B~図2Cに示される構成された部分134であってもよい。コンピュータプログラムの部分は、リソースがアクセスされる仕方を定義する実行可能命令を含む。さらに、実行可能命令は、コンピュータプログラムの部分へ提供されたパラメータに基づいて動作する。
手続き610は、生成されているコンピュータプログラムの任意の部分のために実施することができる。コンピュータプログラムの全ての部分が構成されると、コンピュータプログラムは実行準備が完了する。
図6Cは、クエリに対応するコンピュータプログラムを実行するための手続き620を表すフローチャートを示す。いくつかの実装形態では、手続きは、図6Aに示されるとおりのコンピュータプログラムを実行する606ためのステップを表す。手続き620は、例えば、コンピュータプログラム実行エンジン140などの、図1に示されるデータ処理システム100のコンポーネントによって実施されることが可能である。コンピュータプログラムは、図2A~図2Cに示されるコンピュータプログラム132とすることができる。例えば、手続き620は、コンピュータプログラム実行エンジン140がコンピュータプログラム132を受信し、コンピュータプログラム132の実行可能コードに対応する操作を実施すると、開始されることが可能である。
コンピュータプログラムの実行は1つまたは複数の命令を外部リソースへ伝送させる622。例えば、外部リソースは、図1および図2に示される外部リソース108とすることができる。命令は、コンピュータプログラムに対応するSQLクエリの操作以外の操作を定義する。例えば、命令は、図1に示される命令110であってもよい。いくつかの例では、命令は、SQLクエリに応答して結果を返さない外部リソースのファシリティへ伝送される。例えば、命令は、SQLクエリを入力として受信し、SQLクエリを評価し、SQLクエリによって指定されたデータに応答する外部リソースのファシリティへ伝送されない。このように、いくつかの例では、命令はSQLコマンドまたは引き数などのSQL命令を含まない。いくつかの実装形態では、リソースは、リソースによって公開されたアプリケーションプログラミングインターフェース(API)を用いてアクセスされる。API142の一例が図2Cに示されている。
コンピュータプログラムの実行は命令に応答してデータをリソースから受信させる624。例えば、データは、図1に示される結果104とすることができる。結果は、データベーステーブル、例えば、図1に示されるデータベーステーブル144の形式でフォーマットされてもよい。命令に応答してリソースから受信されたデータは、SQLクエリによって指定されたデータを含む。このように、受信されたデータは、仮にリソースがSQLクエリを提供され、それに応答して、外部リソースが、SQLクエリによって指定されたデータを返すとした場合に、外部リソースから受信されたであろうデータと同じになる。
図6Dは、クエリに対応するデータフローグラフをインスタンス化するコンピュータ内のデータ構造を生成するための手続き630を表すフローチャートを示す。例えば、データフローグラフは、図2A~図2Cに示されるコンピュータプログラム132とすることができる。クエリに対応するデータフローグラフ400の一例が図4Aに示されている。
クエリに基づくクエリプランナへの要求が生成される632。クエリプランナは、クエリを実行するために実施することができるステップを表すデータを生成するシステムである。クエリプランナはしばしば、データを、RDBMSによって実施されることが可能であるステップの形式で生成する。
クエリプランナによって要求に基づいて生成されたクエリプランが受信される634。クエリプランは、リレーショナルデータベースを管理するシステム、例えば、RDBMSによって実施されるべき1つまたは複数のステップの記述を表すデータである。
データソースが、例えば、クエリに基づいて、識別される636。データソースは、外部リソース、例えば、図1および図2に示される外部リソース108とすることができる。識別は、クエリ内で表されている参照、例えば、図1に示される参照112に基づいて行うことができるであろう。いくつかの例では、データソースはクエリ内の引き数に基づいて識別される。
リレーショナルデータベースを管理するシステム以外の実行システムが識別される638。実行システムは、データフローグラフを実行するシステムとすることができる。例えば、実行システムは、図2A~図2Cに示される実行エンジン140とすることができる。対照的に、リレーショナルデータベースを管理するシステムの一例はRDBMSである。
データフローグラフをインスタンス化するデータ構造が生成される640。図2A~図2Cに関して上述されたように、データフローグラフは、入力データに対して実施されるべき操作を表すコンポーネント、およびデータの流れを表すコンポーネント(時として、ノードと呼ばれる)の間のリンクを含むコンピュータプログラムである。
データ構造は、実行されるべき少なくとも1つの操作を表すノードを含む。ノードは、実行システムによって、操作を実施するための実行可能プログラムコードを呼び出すために使用可能な情報に関連付けられている。ノードはまた、実行システムによって、データをプログラムコードが利用できるようにするために使用可能な情報にも関連付けられている。データフローグラフの少なくとも1つのリンクは、ノードの操作の出力データがデータフローグラフの別のノードの操作への入力データとして提供されることを表す。
操作は、クエリプランによって記述されたステップに基づいて選定される。いくつかの実装形態では、操作は、データソースにおいて利用可能なデータにアクセスすることを含む。例えば、図4Aに示されるグラフ400のコンポーネント402は、データフローグラフを実行するシステムの外部のデータソースにおいて利用可能なデータにアクセスするノードの一例である。
生成された640データフローグラフが実行されると、データフローグラフに基づくプログラムコードが、識別された実行システム上で実行されることが可能である。さらに、データがデータソースから受信されることが可能である。例えば、データは、図6Cに示されるように受信されることが可能である624。
手続き600、610、620、630のいくつかの実装形態では、APIが用いられる。APIが用いられるときには、手続き600は、SQLクエリを受信したことに応答してAPIの関数を実行させることを含む。APIの関数は外部リソースにおいて実行可能である。さらに、(例えば、図5Cに示される手続き620において)リソースへ伝送された命令はAPIの関数を実行させる。このように、SQLクエリを、リレーショナルデータベース管理システムでなく、SQLクエリを解釈しないリソースに照会するために用いることができる。
図1に示される生成エンジン120および/または実行エンジン140は、例えば、1つまたは複数の汎用コンピュータ上において、UNIXオペレーティングシステムのバージョンなどの、好適なオペレーティングシステムの制御の下でホストされてもよい。例えば、これは、複数の中央処理装置(CPU)またはプロセッサコア、局所的なもの(例えば、対称型マルチプロセッシング(SMP)コンピュータなどのマルチプロセッサシステム)、または局所的に分散したもの(例えば、クラスタとして結合された複数のプロセッサ、または超並列処理(MPP)システム、あるいは遠隔的なもの、または遠隔的に分散したもの(例えば、ローカルエリアネットワーク(LAN)および/またはワイドエリアネットワーク(WAN)を介して結合された複数のプロセッサ)のいずれか、あるいはそれらの任意の組み合わせを用いたコンピュータシステムの構成を含む、複数ノード並列コンピューティング環境を含むことができる。
図3に示されるユーザインターフェース300は開発環境の一部であってもよい。開発環境は、いくつかの実装形態では、アプリケーションをデータフローグラフとして開発するためのシステムである。このシステムに従って作成されたデータフローグラフは、グラフコンポーネントによって表された個々のプロセス内へ情報を入れ、そこから出すための方法、プロセス間で情報を移動させるための方法、およびプロセスのための実行順序を定義するための方法を提供する。このシステムは、任意の利用可能な方法からプロセス間通信方法を選定するアルゴリズムを含む(例えば、グラフのリンクに係る通信経路は、TCP/IPまたはUNIXドメインソケットを用いるか、あるいはプロセス間でデータを渡すための共有メモリを用いることができる)。
上述された諸技法は、好適なソフトウェアを実行するコンピューティングシステムを用いて実装することができる。例えば、ソフトウェアは、少なくとも1つのプロセッサ、(揮発性および/または不揮発性メモリおよび/または記憶要素を含む)少なくとも1つのデータ記憶システム、(少なくとも1つの入力デバイスもしくはポートを用いて入力を受信するため、および少なくとも1つの出力デバイスもしくはポートを用いて出力を提供するための)少なくとも1つのユーザインターフェースを各々含む、(分散型、クライアント/サーバ型、またはグリッド型などの様々なアーキテクチャのものであってもよい)1つまたは複数のプログラムされた、またはプログラム可能なコンピューティングシステム上で実行する1つまたは複数のコンピュータプログラム内の手続きを含んでもよい。ソフトウェアは、例えば、データフローグラフの設計、構成、および実行に関連するサービスを提供する、より大きなプログラムの1つまたは複数のモジュールを含んでもよい。プログラムのモジュール(例えば、データフローグラフの要素)は、データリポジトリ内に記憶されたデータモデルに適合するデータ構造またはその他の編成データとして実装されることが可能である。
ソフトウェアは、CD-ROM、または(例えば、汎用もしくは専用コンピューティングシステムもしくはデバイスによって可読の)その他のコンピュータ可読媒体などの、有形の非一時的な媒体上に提供されるか、あるいはネットワークの通信媒体を通じて、ソフトウェアが実行されるコンピューティングシステムの有形の非一時的な媒体へ(例えば、伝搬信号内に符号化されて)配信されてもよい。処理の一部または全ては、専用コンピュータ上で、あるいはコプロセッサまたはフィールドプログラマブルゲートアレイ(FPGA)または専用の特定用途向け集積回路(ASIC)などの、専用ハードウェアを用いて実施されてもよい。処理は、ソフトウェアによって指定された計算の異なる部分が異なるコンピューティング要素によって実施される分散式で実施されてもよい。このようなコンピュータプログラムは各々、好ましくは、記憶デバイス媒体がコンピュータによって、本明細書において説明されている処理を実施するために読み出されると、コンピュータを構成し、動作させるために、汎用または専用プログラム可能コンピュータによってアクセス可能な記憶デバイスのコンピュータ可読記憶媒体(例えば、ソリッドステートメモリもしくは媒体、または磁気的もしくは光学的媒体)上に記憶されるか、またはそれにダウンロードされる。本発明のシステムはまた、コンピュータプログラムを用いて構成された、有形の非一時的な媒体として実装されると考えられてもよく、このように構成された媒体は、コンピュータを、本明細書において説明されている処理ステップのうちの1つまたは複数を実施するための特定の既定の仕方で動作させる。
本発明の多数の実施形態が説明された。しかし、上述の説明は、本発明の範囲を限定することではなく、本発明を例示することが意図されていることを理解されたい。本発明の範囲は添付の請求項の範囲によって定義される。
したがって、他の実施形態もまた、添付の請求項の範囲内に含まれる。例えば、様々な変更が、本発明の範囲から逸脱することなくなされ得る。追加的に、上述されたステップのいくつかは順序に依存しなくてもよく、それゆえ、説明されているものと異なる順序で実施されることが可能である。

Claims (19)

  1. リレーショナルデータベースに適用可能なクエリ言語に従って表現されたクエリに基づいてコンピュータプログラムを実行する、データ処理システムによって実施されるコンピュータ実施方法であって、前記コンピュータプログラムは、有形の非一時的なコンピュータ可読媒体内に記憶されたデータに少なくとも一部基づいて実行され、前記実行することは、
    SQLクエリを受信し、前記SQLクエリは、前記データ処理システムの外部にあるリソースに関連付けられた識別子を含むことと、
    前記SQLクエリに基づいてコンピュータプログラムを生成することであって、前記生成することは、
    前記リソースに関連付けられた構成データを識別し、前記構成データは、前記リソースと通信する際に用いられる少なくとも1つの値を指定すること、
    を含む、生成することと、
    前記構成データに基づいて前記コンピュータプログラムを実行することとを含み、前記コンピュータプログラムの前記実行は、
    1つまたは複数の命令を前記リソースへ伝送し、前記命令は前記SQLクエリの操作以外の操作を定義すること、および
    前記命令に応答してデータを前記リソースから受信すること、
    を引き起こす、方法。
  2. 前記コンピュータプログラムの部分が、前記リソースがアクセスされる仕方を定義する実行可能命令を含み、前記実行可能命令は前記コンピュータプログラムの前記部分に提供された前記構成データに基づいて動作する、請求項1に記載の方法。
  3. 前記構成データが、前記リソースによって用いられるデータフォーマットに対する変更に基づいて更新されることができるカタログ内で指定される、請求項1に記載の方法。
  4. 前記構成データに基づいてパラメータ値を生成することと、
    前記パラメータ値を前記コンピュータプログラムの部分へ提供し、前記部分は前記リソースと通信する能力を有することと、
    を含み、
    前記コンピュータプログラムの前記実行が前記パラメータ値に基づく、請求項1に記載の方法。
  5. 前記構成データに基づいてパラメータ値を生成することが、パラメータファイルを、前記コンピュータプログラムの前記部分によって可読のフォーマットで生成するパラメータジェネレータを実行することを含み、
    前記パラメータ値を前記コンピュータプログラムの前記部分へ提供することが、前記パラメータファイルを前記コンピュータプログラムの前記部分が利用できるようにすることを含む、請求項4に記載の方法。
  6. 前記SQLクエリが、引き数を含むSELECT文を含み、前記引き数の少なくとも一部分は、前記リソースに関連付けられた前記識別子に対応する、請求項1に記載の方法。
  7. 前記コンピュータプログラムが、前記SQLクエリの操作を表すコンポーネントを含む、請求項1に記載の方法。
  8. 前記コンピュータプログラムがデータフローグラフであり、前記コンピュータプログラムの前記部分が前記データフローグラフの部分グラフである、請求項1に記載の方法。
  9. 前記リソースが、前記リソースによって公開されたアプリケーションプログラミングインターフェース(API)を用いてアクセスされる、請求項1に記載の方法。
  10. 前記SQLクエリを受信したことに応答して前記APIの関数を実行させることを含み、
    前記APIの前記関数は前記リソースにおいて実行可能であり、前記リソースへ伝送された前記命令が前記APIの前記関数を実行させる、請求項9に記載の方法。
  11. 前記外部リソースから受信された前記データをデータベーステーブルの形式でフォーマットすることを含む、請求項1に記載の方法。
  12. 前記リソースがリレーショナルデータベース管理システムでない、請求項1に記載の方法。
  13. 前記命令が、SQLクエリに応答して結果を返さない前記リソースのファシリティへ伝送される、請求項1に記載の方法。
  14. 前記命令に応答して前記リソースから受信された前記データが、前記SQLクエリによって指定されたデータを含む、請求項1に記載の方法。
  15. 前記命令に応答して前記リソースから受信された前記データ内のレコードおよびフィールドを識別することを含み、前記レコードおよびフィールドは、前記データ処理システムの外部にある前記リソースに関連付けられたレコードフォーマットに基づいて識別される、請求項1に記載の方法。
  16. 前記SQLクエリに基づいて前記コンピュータプログラムを生成することが、
    前記SQLクエリに基づいてデータソースを識別すること、
    リレーショナルデータベースを管理するシステム以外の実行システムを識別すること、
    前記クエリに基づいてクエリプランナへの要求を生成すること、
    前記要求を前記クエリプランナへ提供すること、
    前記要求に基づいて前記クエリプランナによって生成されたクエリプランを受信し、前記クエリプランは、リレーショナルデータベースを管理するシステムによって実施されるべき1つまたは複数のステップの記述を含むこと、
    データフローグラフをインスタンス化するデータ構造を生成することであって、前記データフローグラフは、
    実行されるべき少なくとも1つの操作を表す第1のノードであって、
    前記第1のノードは、実行システムによって、前記操作を実施するための実行可能プログラムコードを呼び出すために使用可能な情報に関連付けられており、
    前記第1のノードは、実行システムによって、データを前記プログラムコードが利用できるようにするために使用可能な情報に関連付けられており、
    前記操作は、前記クエリプランによって記述されたステップに基づいて選定される、
    第1のノード、および
    前記第1のノードの操作の出力データが、前記データフローグラフの第2のノードの操作への入力データとして提供されることを表す少なくとも1つのリンク、
    を含む、生成すること、
    を含む、請求項1に記載の方法。
  17. リレーショナルデータベースに適用可能なクエリ言語に従って表現されたクエリに基づいてコンピュータプログラムを実行する能力を有するデータ処理システムであって、前記コンピュータプログラムは、有形の非一時的なコンピュータ可読媒体内に記憶されたデータに少なくとも一部基づいて実行され、前記データ処理システムは、
    SQLクエリを受信し、前記SQLクエリは、前記データ処理システムの外部にあるリソースに関連付けられた識別子を含むことと、
    前記SQLクエリに基づいてコンピュータプログラムを生成することであって、
    前記リソースに関連付けられた構成データを識別し、前記構成データは、前記リソースと通信する際に用いられる少なくとも1つの値を指定すること、
    を含む、生成することと、
    前記構成データに基づいて前記コンピュータプログラムを実行することとを含む操作を実施するように構成され、前記コンピュータプログラムの前記実行は、
    1つまたは複数の命令を前記リソースへ伝送し、前記命令は前記SQLクエリの操作以外の操作を定義すること、および
    前記命令に応答してデータを前記リソースから受信すること、
    を引き起こす、データ処理システム。
  18. データ処理システムが、リレーショナルデータベースに適用可能なクエリ言語に従って表現されたクエリに基づいてコンピュータプログラムを実行することを可能にする命令を記憶する非一時的なコンピュータ可読記憶デバイスであって、前記コンピュータプログラムは、有形の非一時的なコンピュータ可読媒体内に記憶されたデータに少なくとも一部基づいて実行され、前記命令は、前記データ処理システムに、
    SQLクエリを受信し、前記SQLクエリは、前記データ処理システムの外部にあるリソースに関連付けられた識別子を含むことと、
    前記SQLクエリに基づいてコンピュータプログラムを生成することであって、
    前記リソースに関連付けられた構成データを識別し、前記構成データは、前記リソースと通信する際に用いられる少なくとも1つの値を指定すること、
    を含む、生成することと、
    前記構成データに基づいて前記コンピュータプログラムを実行することとを含む操作を実施させ、前記コンピュータプログラムの前記実行は、
    1つまたは複数の命令を前記リソースへ伝送し、前記命令は前記SQLクエリの操作以外の操作を定義すること、および
    前記命令に応答してデータを前記リソースから受信すること、
    を引き起こす、非一時的なコンピュータ可読記憶デバイス。
  19. リレーショナルデータベースに適用可能なクエリ言語に従って表現されたクエリに基づいてコンピュータプログラムを実行する能力を有するデータ処理システムであって、前記コンピュータプログラムは、有形の非一時的なコンピュータ可読媒体内に記憶されたデータに少なくとも一部基づいて実行され、前記データ処理システムは、
    SQLクエリを受信するための手段であって、前記SQLクエリは、前記データ処理システムの外部にあるリソースに関連付けられた識別子を含む、受信するための手段と、
    前記SQLクエリに基づいてコンピュータプログラムを生成するための手段であって、前記リソースに関連付けられた構成データを識別することを含み、前記構成データは、前記リソースと通信する際に用いられる少なくとも1つの値を指定する、生成するための手段と、
    前記構成データに基づいて前記コンピュータプログラムを実行するための手段とを含み、前記コンピュータプログラムの前記実行は、
    1つまたは複数の命令を前記リソースへ伝送し、前記命令は前記SQLクエリの操作以外の操作を定義すること、および
    前記命令に応答してデータを前記リソースから受信すること、
    を引き起こす、データ処理システム。
JP2021185876A 2015-02-18 2021-11-15 ネットワーク上のデータソースへの照会 Active JP7322119B2 (ja)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201562117588P 2015-02-18 2015-02-18
US62/117,588 2015-02-18
US14/752,094 2015-06-26
US14/752,094 US10417281B2 (en) 2015-02-18 2015-06-26 Querying a data source on a network
JP2017543965A JP7036597B2 (ja) 2015-02-18 2016-02-16 ネットワーク上のデータソースへの照会
PCT/US2016/018028 WO2016133880A1 (en) 2015-02-18 2016-02-16 Querying a data source on a network

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2017543965A Division JP7036597B2 (ja) 2015-02-18 2016-02-16 ネットワーク上のデータソースへの照会

Publications (2)

Publication Number Publication Date
JP2022036960A true JP2022036960A (ja) 2022-03-08
JP7322119B2 JP7322119B2 (ja) 2023-08-07

Family

ID=56621081

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2017543965A Active JP7036597B2 (ja) 2015-02-18 2016-02-16 ネットワーク上のデータソースへの照会
JP2021185876A Active JP7322119B2 (ja) 2015-02-18 2021-11-15 ネットワーク上のデータソースへの照会

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2017543965A Active JP7036597B2 (ja) 2015-02-18 2016-02-16 ネットワーク上のデータソースへの照会

Country Status (10)

Country Link
US (2) US10417281B2 (ja)
EP (2) EP3259686B1 (ja)
JP (2) JP7036597B2 (ja)
KR (1) KR102239127B1 (ja)
CN (1) CN107257973B (ja)
AU (1) AU2016220252B2 (ja)
CA (1) CA2975538C (ja)
HK (1) HK1246425B (ja)
SG (2) SG10201903485WA (ja)
WO (1) WO2016133880A1 (ja)

Families Citing this family (16)

* 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
US10235780B2 (en) * 2015-12-18 2019-03-19 Dropbox, Inc. Integrated data exploration, modeling and visualization
US10645087B2 (en) * 2017-06-06 2020-05-05 Amgen Inc. Centralized authenticating abstraction layer with adaptive assembly line pathways
CN110162408B (zh) * 2018-02-11 2023-09-05 斑马智行网络(香港)有限公司 一种数据处理方法、装置、设备和机器可读介质
US11012500B2 (en) * 2018-07-27 2021-05-18 Vmware, Inc. Secure multi-directional data pipeline for data distribution systems
CN109491882B (zh) * 2018-11-06 2021-10-29 郑州云海信息技术有限公司 一种机箱数据处理方法、系统、设备机箱及可读存储介质
CN113168147B (zh) * 2018-12-29 2024-07-09 阿里巴巴集团控股有限公司 使用硬件加速高效地扫描数据库的系统和方法
WO2020164718A1 (en) * 2019-02-14 2020-08-20 Huawei Technologies Co., Ltd. System and method for enhancing processing of a query to a relational database with software-based near-data processing (ndp) technology
CN109947790A (zh) * 2019-03-19 2019-06-28 优刻得科技股份有限公司 云资源管理的方法、装置、和非易失性存储介质
CN110083650B (zh) * 2019-04-25 2023-06-30 中电科嘉兴新型智慧城市科技发展有限公司 一种基于元数据自发现的数据查询接口自动生成方法
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
CN110688397B (zh) * 2019-07-30 2022-05-17 民生科技有限责任公司 一种基于sql的分布式数据统一访问系统及方法
US11461324B2 (en) * 2019-08-29 2022-10-04 Oracle International Corporation First futamura projection in the context of SQL expression evaluation
US11347572B2 (en) 2019-09-26 2022-05-31 Vmware, Inc. Methods and apparatus for data pipelines between cloud computing platforms
US11681672B2 (en) * 2021-03-30 2023-06-20 International Business Machines Corporation Virtual database resource usage
US12099508B2 (en) 2022-09-20 2024-09-24 Oracle International Corporation Producing natively compiled query plans by recompiling existing C code through partial evaluation

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0765032A (ja) * 1993-08-27 1995-03-10 Toshiba Corp データベース言語変換機能を持つ情報処理システム
JP2005538435A (ja) * 2002-07-11 2005-12-15 ユアアミーゴ・プロプライエタリー・リミテッド リンク生成システム
JP2008165447A (ja) * 2006-12-27 2008-07-17 Ntt Data Corp データアクセス装置、データアクセス方法、及び、コンピュータプログラム
US20090055370A1 (en) * 2008-10-10 2009-02-26 Business.Com System and method for data warehousing and analytics on a distributed file system
JP2013517574A (ja) * 2010-01-15 2013-05-16 アビニシオ テクノロジー エルエルシー データクエリの管理
JP2014519080A (ja) * 2011-05-02 2014-08-07 アビニシオ テクノロジー エルエルシー データクエリの管理

Family Cites Families (168)

* 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 株式会社日立製作所 並列化コンパイル方法
JPH0267682A (ja) * 1988-09-02 1990-03-07 Hitachi Ltd データベースシステム
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
FR2696853B1 (fr) 1992-10-12 1994-12-23 Bull Sa Procédé d'aide à l'optimisation d'une requête d'un système de gestion, de base de données relationnel et procédé d'analyse syntaxique en résultant.
JPH05257709A (ja) 1992-03-16 1993-10-08 Hitachi Ltd 並列化判別方法およびそれを用いた並列化支援方法
US5412806A (en) * 1992-08-20 1995-05-02 Hewlett-Packard Company Calibration of logical cost formulae for queries in a heterogeneous DBMS using synthetic database
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
US6311265B1 (en) 1996-03-25 2001-10-30 Torrent Systems, Inc. Apparatuses and methods for programming parallel computers
US5909681A (en) 1996-03-25 1999-06-01 Torrent Systems, Inc. Computer system and computerized method for partitioning data for parallel processing
JPH09319757A (ja) * 1996-05-29 1997-12-12 N T T Data Tsushin Kk 情報検索システム
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
JP4533974B2 (ja) * 1996-08-01 2010-09-01 康 清木 異種データベース統合システム
JPH1091494A (ja) * 1996-09-19 1998-04-10 Hitachi Ltd データベース操作プログラムの変換方法および変換装置
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
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
US6339769B1 (en) 1998-09-14 2002-01-15 International Business Machines Corporation Query optimization by transparently altering properties of relational tables using materialized views
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
JP3795289B2 (ja) 2000-02-07 2006-07-12 日本電信電話株式会社 データベースの実行制御装置
US6947934B1 (en) 2000-02-16 2005-09-20 International Business Machines Corporation Aggregate predicates and search in a database management system
JP4483034B2 (ja) 2000-06-06 2010-06-16 株式会社日立製作所 異種データソース統合アクセス方法
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
JP4543563B2 (ja) 2001-02-28 2010-09-15 株式会社日立製作所 統合データベースシステムにおける問合せ最適化方法
US7418441B2 (en) * 2001-02-28 2008-08-26 International Business Machines Corporation Data loading from a remote data source record by record
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
US7805411B2 (en) 2003-09-06 2010-09-28 Oracle International Corporation Auto-tuning SQL statements
US9183256B2 (en) 2003-09-19 2015-11-10 Ibm International Group B.V. 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
US7310637B2 (en) 2004-05-05 2007-12-18 International Business Machines Corporation Dynamic database access via standard query language and abstraction technology
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
US20060047696A1 (en) 2004-08-24 2006-03-02 Microsoft Corporation Partially materialized views
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
CA2519604C (en) * 2005-06-23 2011-07-12 Cognos Incorporated Master-detail provider and method of providing master-detail functionality
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
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
CA2653514A1 (en) 2006-06-01 2007-12-06 Mediareif Moestl & Reif Kommunikations-Und Informationstechnologien Oeg Method for controlling a relational database system
AU2007286155B2 (en) 2006-08-10 2013-12-12 Ab Initio Technology Llc. Distributing services in graph-based computations
JP4872529B2 (ja) 2006-08-22 2012-02-08 株式会社日立製作所 リバースエンジニアリング支援方法
WO2008024917A2 (en) * 2006-08-23 2008-02-28 Innovative Solution, Inc. Efficient search result update mechanism
TWI348139B (en) 2006-08-24 2011-09-01 Wintek Corp A lcd scan lines driving method
JP2008084028A (ja) 2006-09-27 2008-04-10 Toshiba Corp データベース検索システムおよびデータベース検索方法
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
US8954482B2 (en) 2007-09-20 2015-02-10 Ab Initio Technology Llc Managing data flows in graph-based computations
US7673065B2 (en) 2007-10-20 2010-03-02 Oracle International Corporation Support for sharing computation between aggregations in a data stream management system
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
US8429601B2 (en) 2007-11-29 2013-04-23 Red Hat, Inc. Code completion for object relational mapping query language (OQL) queries
US20090198703A1 (en) 2008-01-31 2009-08-06 Hewlett-Packard Development Company, L.P. Intelligent data storage system
JP5643654B2 (ja) 2008-02-26 2014-12-17 アビニシオ テクノロジー エルエルシー データ関連性のグラフ表現
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
EP2261885A4 (en) * 2008-04-11 2011-08-24 Sharp Kk DISPLAY DEVICE AND DISPLAY DEVICE CONTROL METHOD
US7974967B2 (en) 2008-04-15 2011-07-05 Sap Ag Hybrid database system using runtime reconfigurable hardware
WO2009127639A1 (en) 2008-04-16 2009-10-22 International Business Machines Corporation Query processing visualization system and method of visualizing query processing
US20100057695A1 (en) 2008-08-28 2010-03-04 Microsoft Corporation Post-processing search results on a client computer
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
CN102317911B (zh) 2009-02-13 2016-04-06 起元技术有限责任公司 管理任务执行
JP4659888B2 (ja) 2009-02-13 2011-03-30 株式会社日立製作所 データベース処理システム、計算機及びデータベース処理方法
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
KR20150042297A (ko) 2010-06-15 2015-04-20 아브 이니티오 테크놀로지 엘엘시 동적으로 로딩하는 그래프 기반 계산
JP5536568B2 (ja) 2010-07-01 2014-07-02 インターナショナル・ビジネス・マシーンズ・コーポレーション トランザクションを集約して処理する方法、システム、およびプログラム
JP5199317B2 (ja) 2010-08-25 2013-05-15 株式会社日立製作所 データベース処理方法、データベース処理システム及びデータベースサーバ
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
US8898145B2 (en) 2011-06-15 2014-11-25 Microsoft Corporation Query optimization techniques for business intelligence systems
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
US8635206B2 (en) 2011-06-30 2014-01-21 International Business Machines Corporation Database query optimization
JP5357286B2 (ja) 2011-09-21 2013-12-04 前田建設工業株式会社 情報処理装置、情報処理方法、およびプログラム
US9177022B2 (en) * 2011-11-02 2015-11-03 Microsoft Technology Licensing, Llc User pipeline configuration for rule-based query transformation, generation and result display
US9183302B1 (en) * 2012-03-23 2015-11-10 The Mathworks, Inc. Creating a technical computing environment (TCE)-based search engine
JP5835084B2 (ja) 2012-05-02 2015-12-24 富士通株式会社 クエリ統合方法、クエリ統合プログラム、および統合コンポーネント生成装置
US9182957B2 (en) 2012-07-10 2015-11-10 Loring Craymer Method and system for automated improvement of parallelism in program compilation
JP6338579B2 (ja) 2012-07-24 2018-06-06 アビニシオ テクノロジー エルエルシー データモデルにおけるエンティティのマッピング
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

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0765032A (ja) * 1993-08-27 1995-03-10 Toshiba Corp データベース言語変換機能を持つ情報処理システム
JP2005538435A (ja) * 2002-07-11 2005-12-15 ユアアミーゴ・プロプライエタリー・リミテッド リンク生成システム
JP2008165447A (ja) * 2006-12-27 2008-07-17 Ntt Data Corp データアクセス装置、データアクセス方法、及び、コンピュータプログラム
US20090055370A1 (en) * 2008-10-10 2009-02-26 Business.Com System and method for data warehousing and analytics on a distributed file system
JP2013517574A (ja) * 2010-01-15 2013-05-16 アビニシオ テクノロジー エルエルシー データクエリの管理
JP2014519080A (ja) * 2011-05-02 2014-08-07 アビニシオ テクノロジー エルエルシー データクエリの管理

Also Published As

Publication number Publication date
HK1246425B (zh) 2020-05-15
SG10201903485WA (en) 2019-05-30
CA2975538C (en) 2023-08-29
SG11201705731TA (en) 2017-08-30
EP3553670B1 (en) 2021-04-07
KR20170118116A (ko) 2017-10-24
CA2975538A1 (en) 2016-08-25
WO2016133880A1 (en) 2016-08-25
AU2016220252B2 (en) 2021-02-25
US10417281B2 (en) 2019-09-17
AU2016220252A1 (en) 2017-08-03
CN107257973B (zh) 2022-03-04
US20160239582A1 (en) 2016-08-18
US20190370290A1 (en) 2019-12-05
EP3553670A1 (en) 2019-10-16
KR102239127B1 (ko) 2021-04-09
EP3259686B1 (en) 2019-07-24
US11308161B2 (en) 2022-04-19
CN107257973A (zh) 2017-10-17
EP3259686A1 (en) 2017-12-27
JP2018514012A (ja) 2018-05-31
JP7036597B2 (ja) 2022-03-15
JP7322119B2 (ja) 2023-08-07

Similar Documents

Publication Publication Date Title
JP7322119B2 (ja) ネットワーク上のデータソースへの照会
CA3025404C (en) Defining application programming interfaces (apis) using object schemas
US20200183932A1 (en) Optimizing write operations in object schema-based application programming interfaces (apis)
CA3025493C (en) Optimizing read and write operations in object schema-based application programming interfaces (apis)
CA3025479C (en) Extending object-schema-based application programming interfaces (apis)

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211213

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211213

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221226

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230126

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20230424

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230623

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230726

R150 Certificate of patent or registration of utility model

Ref document number: 7322119

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150