JP6259465B2 - システム、データベースクエリを実行するための方法及びコンピュータに読み取り可能な記録媒体 - Google Patents

システム、データベースクエリを実行するための方法及びコンピュータに読み取り可能な記録媒体 Download PDF

Info

Publication number
JP6259465B2
JP6259465B2 JP2015545463A JP2015545463A JP6259465B2 JP 6259465 B2 JP6259465 B2 JP 6259465B2 JP 2015545463 A JP2015545463 A JP 2015545463A JP 2015545463 A JP2015545463 A JP 2015545463A JP 6259465 B2 JP6259465 B2 JP 6259465B2
Authority
JP
Japan
Prior art keywords
computing node
query
database query
instructions
plan
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015545463A
Other languages
English (en)
Other versions
JP2016500454A (ja
Inventor
ユー,リアン,ギャン
スマイリー,ジョン,ロバート
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.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
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 Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of JP2016500454A publication Critical patent/JP2016500454A/ja
Application granted granted Critical
Publication of JP6259465B2 publication Critical patent/JP6259465B2/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/24545Selectivity estimation or determination
    • 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
    • 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
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Operations Research (AREA)
  • Mathematical Physics (AREA)
  • Fuzzy Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Navigation (AREA)
  • Control Of Position, Course, Altitude, Or Attitude Of Moving Bodies (AREA)
  • General Factory Administration (AREA)
  • Debugging And Monitoring (AREA)
  • Mobile Radio Communication Systems (AREA)

Description

関連出願の相互参照
本出願は、2012年11月30日に出願された米国特許出願第13/691,213号の利益を主張し、本開示は、その全体が参照により本明細書に組み込まれる。
多くの場合、多数のプロセッサおよび大きなメモリバンクを有する単一サーバではなく、多くの小さなコンピュータを用いて大きなデータベースを実装することが望ましい。これらの小さなコンピュータは、最も強力なサーバとは対照的に比較的安価であり、容易に取得され、容易に交換可能であることにより、コモディティハードウェアと呼ばれることが多い。しかしながら、コモディティハードウェアを使用する利点にもかかわらず、拡張可能かつ効率的な大きなデータベースを作り出すことは、依然として困難な試みである。
コモディティハードウェアで大きなデータベースシステムを実装するための1つの技術は、シャードを利用することを含む。一般論として、シャードは、より大きなコンピュータの問題のごく一部の解決を担うコンピューティングシステムである。例えば、シャードが大規模なデータ管理システムに使用されるとき、表は、行によって水平な区画として既知であるものに分割され得る。各シャードは、区画を管理し、その区画に関係する要求およびコマンドに応答する。この手法は、コストを減少させ、従来のデータベースシステムと比較されるときにより良い性能を有することができる。
しかしながら、シャードベースのシステムは、最適化することが困難であり得る。各シャードは、そのシャードで動作するクエリのための実行計画を生成することができるクエリオプティマイザを有する独立したデータ管理システムを含むことができる。実行計画は、そのシャードでの実行に対して局所的に最適化され得るが、必ずしもすべてのシャードにわたって最適化されない。性能特性と各シャードによって管理されたデータにおける差により、1つのシャードで効率的に動作する計画が、別のもので不十分に動作する可能性がある。
大域的クエリ最適化を利用するシャードベースのシステムの一実施形態を示す。 リーダー指名および比較を用いて大域的に最適化された実行計画を選択するための一実施形態を示す。 順次評価によって大域的に最適化された実行計画を選択するための一実施形態を示す。 投票プロセスによって大域的に最適化された実行計画を選択するための一実施形態を示す。 中央権限によって大域的に最適化された実行計画を選択するための一実施形態を示す。 比較のための実行計画情報を通信するためのデータ構造の一実施形態を示す。 実行計画が実行エンジンによって使用されることを可能にするのに十分な実行計画情報を通信するためのデータ構造の一実施形態を示す。 コスト調整を用いたコスト比較の一実施形態を示す。 実行計画におけるステップの個々の調整を用いたコスト比較の一実施形態を示す。 結果として生じる実行計画が所望の大域的に最適化された実行計画と一致するように、ヒントを使用してクエリを修正する一実施形態を示す。 実行エンジンおよび局所的オプティマイザを有するコンピューティングノードとともに大域的最適化プロセスを利用するためのシステムを使用する一実施形態を示す。
以下の開示は、データベースシステム、状態機械、ワークフローエンジンなどとして動作する複数のシャードにわたって最適化される実行計画の生成を対象とする。様々な実施形態では、各シャードは、シャードで動作する実行エンジンによる実行のために、関連したコスト係数で局所的に最適化された実行計画を生成する。コスト係数は次に、システム全体でその効果を考慮して最適化される計画を選択するように、他の実行計画と関連付けられたコスト係数と調整および比較され得る。コスト係数に対する調整は、とりわけ実行計画を生成したシャードによって収集された統計値、他のシャードによって生成された統計値、およびシャードの相対的な性能特性に基づいてもよい。コスト係数の比較は、中央権限による順次比較、投票、決定などを含む様々な技術によって実施され得る。
図1は、大域的最適化プロセスの一実施形態を示す。1つ以上のクライアントアプリケーションは、インターネット等のネットワーク100を介してシャードベースのシステムに接続される。クライアントアプリケーションは、ネットワーク100を介してシステムにクエリ102を送信する。クエリという用語は、例えば、データを返し、データを変更し、またはコンピューティングプロセスもしくはデバイスの状態を変更させ得るコンピューティング動作を呼び出す任意のタイプの要求またはコマンドを指すように本明細書全体にわたって使用される。クエリ102は、特定のシャード118に方向付けられてもよく、または任意のリダイレクション構成要素104によってそこに経路指定されてもよい。例えば、シャード118で動作する実行エンジン120は、クエリを受信および処理することができる。様々な非限定的実施形態では、実行エンジンは、データベース、状態機械、またはワークフローエンジンであり得る。実行エンジンは、クエリを実行するように命令のセットを実施する。同じクエリを実行することができる任意の数の代替的な命令のセットがあってもよく、各セットが異なるコストを有する。様々な非限定的な例では、コストという用語は、命令または命令のセットを実施するために必要とされる時間、消費されるCPUサイクルの数、ワーキングセット、メモリ容量、キャッシュ容量、記憶デバイスの読み出しおよび書き込み性能などを含むことができる。コストはまた、データセット内の行の数、または重複データの量などの係数によって影響を受け得る。クエリを実行するコストを減少させるために、実行エンジン(時にはクエリオプティマイザとして既知の構成要素を介する)は、クエリを実行する予測コスト、すなわち、推定コストを最小限にするか、または減少させる試みに基づいて、局所的に最適化された実行計画を生成することができる。しかしながら、この計画は、単一のシャードで使用するのに好ましくてもよいが、必ずしもシステム全体が最適化されない。しかしながら、フロントエンドモジュール122は、通信構成要素124を介して計画情報およびクエリ統計値を他のフロントエンドモジュール110および116と共有することができる。通信構成要素124は、シャード間の計画情報の通信を調整するか、または容易にし、大域的最適化経路を決定するように必要に応じて計画情報およびクエリ統計値に調整を提供し、大域的に最適化された計画の選択を可能にする。大域的に最適化されるという用語は、使用が好ましく、かつ必ずしも数学的または確定的に最適な計画を記述しない計画を指すことに留意されたい。
本明細書に記載される他の実施形態は、シャードベースのシステムの性能を最適化するように、アプリケーションがヒントを使用することを可能にする。一実施形態では、システムは、クエリ内でクエリがシャードでどのように実行されるかを変更する命令をシャードに送信することをアプリケーションに含めさせる。別の実施形態では、システムは、クエリを実行するために使用される実行計画を直接制御する命令をアプリケーションに含めさせ得る。
さらなる実施形態は、データベース性能を最適化するためのヒントおよび提案を技術者に提供する。例えば、好ましい実行計画に関するヒントを受信した後、ソフトウェア技師は、クエリオプティマイザに対する提案を含む修正されたクエリを発行するように、アプリケーションプログラムコードを変更し得る。これらの提案は、クエリオプティマイザが好ましい実行計画に従うように、クエリオプティマイザによって生成された計画に影響を与える。
本開示の様々な態様は、ある特定の実施例および実施形態に関して本明細書に記載され、これは、図解することを意図し、本開示を限定することを意図しない。本明細書に提示される主題は、コンピュータ可読記憶媒体などの、コンピュータプロセス、コンピュータ制御装置、コンピューティングシステム、または製造物品として実装され得ることが理解されるべきである。本明細書に記載される主題は、1つ以上のコンピューティングデバイスで実行するプログラムモジュールにおいて一般的に提示されるが、当業者であれば、他の実装形態が他のタイプのプログラムモジュールと組み合わせて実施され得ることを認識するであろう。一般的に、プログラムモジュールとしては、ルーチン、プログラム、構成要素、データ構造、ならびに特定のタスクを実施するか、または特定の抽象データ型を実装する他のタイプの構造が挙げられる。
当業者であれば、本明細書に記載される主題が、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラマブル家庭用電化製品、ミニコンピュータ、メインフレームコンピュータ、ハンドヘルドコンピュータ、携帯情報端末、電子書籍リーダー、携帯電話デバイス、特殊目的のハードウェアデバイス、ネットワーク機器などを含む、本明細書に記載されるものを超える他のコンピュータシステム構成で実践されるか、またはそれらと併用され得ることも理解するであろう。本明細書に記載される実施形態はまた、タスクが、通信ネットワークを通じて結合される遠隔処理デバイスによって実施される分散型コンピューティング環境で実践され得る。分散型コンピューティング環境では、プログラムモジュールは、ローカルおよび遠隔のメモリ記憶デバイスの両方に位置することができる。
本明細書内では、この一部を形成し、かつ図解、特定の実施形態、または実施例として示す添付の図面に対して参照が行われる。本明細書の図面は、一定の比率の縮尺で描かれない。同様の番号は、いくつかの図を通して同様の要素を表す。
大量のデータの管理は、共通のコンピューティング問題である。この問題に対する手法は、大きなデータのセットをより小さなセットに分割することに関係し、これは、比較的安価なコンピューティングデバイスによって管理され得る。各コンピューティングデバイスはまた、それに割り当てられたデータのセットで動作するクエリに応答することに関与し得る。各コンピューティングデバイスによって管理されたデータが共通のレイアウト、またはスキーマを共有する場合、同じクエリまたは意味的に均等な形態のクエリは、コンピューティングデバイスのいずれかまたはすべてに適用され得る。加えて、クエリを解決するための同じ順序のステップは、コンピューティングデバイスのすべてで使用するために選択され得る。実行計画と呼ばれ得るこの順序は、クエリを満たすのに必要とされる動作のセットを記述する。順序は、個々のコンピューティングデバイスへのその影響に基づいて選択され得る。しかしながら、全体的なデータ管理システムの性能は、順序が全体的なデータ管理システムへのその影響(すなわち、応答時間、ワーキングセット、CPUサイクルなどの様々な係数に関するコスト)に基づいて、かついずれか1つのコンピューティングデバイスへのその順序の影響だけでなく選択される場合に改善され得る。
大きなデータ管理システムを設計するとき、1つもしくは2つのより大きく、より高価なデバイスを使用するのではなく、多くのより小さなコンピューティングデバイス間の作業負荷を分割することが多くの場合に望ましい。より小さなコンピューティングシステムは各々、それがシステム全体の断片を表すことにより、シャードと呼ばれ得る。シャードは、ドメインと呼ばれ得るものに分類され、これは、作業負荷を集合的に管理するように組織化されたシャードの群である。シャードは、コモディティハードウェアコンピュータ、仮想マシン、コンピューティングクラスタ、およびコンピューティング機器などの多種多様なコンピューティング環境で実装され得る。これらのコンピューティングデバイスまたは環境のいずれかは、便宜上、コンピューティングノードと呼ばれ得る。
典型的に、各シャードは、独自の専用のプロセッサ、メモリ、および記憶デバイスにアクセスできるデータベースシステム等の完全に独立した実行エンジンを動作する。このタイプの独立したアーキテクチャを利用するシステムは、良好な拡張性を有し、重要な構成要素を共有するシステムと比較してより弾力性がある。独立したアーキテクチャは、ドメイン内の個々のシャードが機能を停止したとしても、システム全体が動作し続けることを可能にする。しかしながら、当業者であれば、純粋な独立したアーキテクチャからの逸脱が時々望ましいときがあり、または必要であることを理解するであろう。例えば、より大きなシステムを構成するシャードはしばしば、共通のネットワーク基盤を共有する。ネットワークはこの場合、単一障害点を表すが、それらはしばしば、記憶サブシステム等のエラーを起こしやすい構成要素と比較して比較的堅牢である。したがって、共通のネットワークの使用は、独立したアーキテクチャの利点の大部分を保持しながら、シャード間の通信を可能にする。
シャードベースのアーキテクチャを用いてデータ管理システムを構築するために多くの可能な手法が利用され得る。1つの手法では、データ表は、行によって区画され、各行の範囲は、特定のシャードに割り当てられる。シャードは、すべての要求を処理して、区画に割り当てられた値の範囲内に入る値を有するデータを取り出すか、または記憶する。この手法は、水平な区画と呼ばれる。一例として、顧客情報を含む表を考慮されたい。顧客の表は、顧客の苗字に基づいて水平に区画され得る。2シャードドメインでは、苗字が「A」〜「M」で始まる顧客は、第1のシャードに割り当てられてもよく、苗字が「N」〜「Z」で始まる顧客は、第2のシャードに割り当てられてもよい。
いくつかの場合、ドメインによって維持されるすべての表は、水平に区画される。しかしながら、多くの他の構成が可能である。いくつかの表は、水平に区画され得るが、他の表は、シャード間で複製される。他の場合、水平に区画された表は、ハードウェア障害に対する保護の手段として複製される。
表が水平に区画されるとき、各シャードは、同一のスキーマを有するが異なるデータのセットを含む表を提供する。換言すれば、各シャードで提供された水平に区画された表は、同じ列のレイアウトを共有するが、異なるデータの行を含む。各シャード上の表が共通のスキーマを共有するため、クエリは、クエリが最終的に実行する1つまたは複数のシャードのどれかに関係なく書き込まれ得る。
共通のスキーマを活用するために、必要とされるデータを含む1つまたは複数のシャードにクエリを経路指定するための手段が提供され、複数のシャードは、要求が2つ以上の水平な区画に及ぶデータに関係する場合に関係し得る。正しいシャードにクエリを経路指定する手法の3つの非限定的な例は、以下の通りである。第1の手法は、クエリを適切なシャードに経路指定する集中型ホストに関係する。集中型システムがクエリを受信するとき、これは、クエリ内に潜在的に関係する区画の範囲を決定する。これは次に、これらの区画を提供し、結果をアセンブルし、かつそれらをクライアントに転送するシャードにクエリを転送することができる。第2の手法では、任意のシャードが要求を受信し、先程記載した同様の様式でそれを処理することができる。アプリケーションは最初に、要求されたデータを含む可能性が最も高い区画を提供するシャードにこの要求を送信する。第3の手法では、アプリケーションは、シャードおよび区画方式の両方を十分に認識し、別個のクエリを各々要求されたシャードに直接送信する。
データ管理システムがクエリを実行するとき、これは、表走査、インデックス走査、およびハッシュ表索引等の一連のステップを実施することができ、これは、クエリに対する結果を生成するために必要とされる内部動作である。集合的に、これらのステップは、クエリを実施するためにデータ管理システムによって取られる経路を記述する。より一般的に、それらは、クエリを実施するために実行エンジンによって取られる命令のセットであり、実行計画という用語によって本明細書で、または計画という用語によって簡潔さのために言及される。データベースにおいて、実行計画は、例えば、アクセス経路またはクエリ計画と呼ばれる。多くの場合、同じクエリのための多くの異なる可能な実行計画がある。各実行計画は、同じ結果を生成することができるが、それらの性能特性は、大きく異なり得る。クエリという用語は、実施されるデータの要求またはコマンドを指すことに留意されたい。さらに、単一のクエリは、多くの異なる形態を有することができ、これらのすべては、同じ実行計画を用いて実行され得る。例えば、同じクエリは、異なる言語、様々なテキスト形式を用いて表されてもよく、あるいは、よくあることだが、コマンドが実行されるまで供給されないパラメータ化された値を含んでもよい。これらの場合のすべてに対して、同じ実行計画は、あらゆる形態のクエリを実行するために使用され得る。
実行計画はまた、状態機械またはワークフロープロセッサ等の他のタイプの実行エンジンによって使用される。例えば、状態機械は、各関連したコストを持つ一連の可能な状態遷移を含むことができる。様々な経路は、状態「A」から状態「Z」に移動するときに横断されてもよく、これらの各々は、異なるコストを有することができる。
特定のシャードでクエリを実行するための好ましい計画を決定するために、クエリオプティマイザとして既知の構成要素は、以下の各々可能な実行計画の予測されたコストを評価する。実行計画における各ステップは、予測(すなわち、推定)コストと関連付けられ、ステップを実行するために必要な時間、または消費するコンピューティングリソースなどの要素を考慮する。実行計画を実施する総予測コストは、その構成要素のステップのコストに基づいて計算され得る。ブランチおよびループは、実行される特定のブランチの可能性を考慮し、かつそれに応じてコスト係数を調整することによって構成され得る。典型的に、総予測コストは、無名スカラー値または時間ベースの推定値として表される。予測コストという用語はまた、推定コストと呼ばれてもよく、必ずしも実際に生じるコストの正確な予測ではないことに留意されたい。
予測コストが既知であると、最適化された実行計画は、最も安価な総コストで実行計画を選択することによって選ばれ得る。コストに加えて他の要素も考慮され得る。例えば、全体的な計画があまり効率的ではない場合であっても、初期の結果のセットを迅速に返す計画を選択することが場合によっては望ましい。
コスト計算の正確性は、様々な統計値を使用することによって改善され得る。これらは、表における行の数、または列における固有値の数などの値を含むことができる。統計値はまた、同じ実行計画の事前の実行に関連した測定値を含むことができる。データは、所定の実行計画を実行するのに費やした総時間など、一般的な性質であってもよく、または表走査を実施することに関係するディスク読み出しの数など、より粒状であってもよい。さらに、統計値は、実行計画のどのブランチが実際には最も一般に実行されるかを反映し、コスト予測の精度を改善することができる。
しかしながら、この手法の有効性は、シャードベースのシステムに限定される。各シャードは独立しており、独自のクエリオプティマイザおよび統計値のセットを有する。したがって、所定のシャードでは、クエリオプティマイザは、局所的に最適化されるが必ずしも大域的に最適化されない実行計画を生成する。大域的に最適化された計画は、各シャードでの所定の実行計画のコスト等の係数、およびそれが各シャードで実行される相対頻度を考慮し全体的なシステム性能を最大化する。しかしながら、局所的に生成された計画の予測コストは、それらが生成されたシステムの特性を反映するだけであるため、誤解を招く恐れがあり得る。
大域的に最適化された実行計画を識別する1つの一般的な手法は、ドメイン内の各シャードで局所的に最適化された計画を生成することと、次に、大域的に最適化されると決定するように各計画のコストを比較することとに関係する。様々な手法は、各計画の予測コストの直接比較を実施すること、または本明細書に開示される比較のための他の実施形態など、コストを比較するために使用され得る。様々な手法はまた、各シャードが局所的に最適化された実行計画を生成するときに、計画に関する情報がどのように共有されるか、および大域的に最適化された計画が他のシャードによってどのように利用されるかなど、大域的に最適化された実行計画を決定する他の態様に関して利用され得る。
一実施形態では、シャードは、リーダーとして指定され、その局所的に最適化された実行計画に関する情報をブロードキャストする。別のシャードがブロードキャスト計画を独自の計画と比較し、独自の計画が優れていると気付く場合、これは、リーダーとして独自の計画を指定し、独自の計画に関する情報をブロードキャストすることができる。このプロセスは、シャードが現在のリーダーの計画より優れている計画を提供することができなくなるまで続く。このプロセスの最後の先導的計画は、大域的に最適化されると見なされる。
図2は、大域的最適化プロセスの一実施形態を示す。一連の動作として示されるが、当業者であれば、様々な実施形態が示される動作を追加、削除、再整理、または修正し得ることを理解するであろう。動作200では、シャードは、リーダーとして現在指定された実行計画に関する情報を受信する。この情報は、図4によって記載されるデータ構造に類似し得る。
動作202では、シャードは最初に、先導的計画を独自の局所的に生成された計画と比較するべきであるかを決定する。いくつかの場合、先導的計画のための情報が受信されるときに局所的計画が生成されていない。このような場合、いくつかの手法が取られ得る。様々な非限定的な例は、新しい計画を直ちに生成すること、または比較なしに先導的計画を受諾することを含む。いくつかの実施形態では、シャードは、いくつかの後の時点で独自の計画を生成し、次いでそれを現在の先導的計画と比較しながら、最初に先導的計画を利用し始めることができる。あるいは、シャードは、比較のための実行計画を決して生成しないように構成されてもよい。
比較が実施されるべきであると動作202が決定する場合、シャードは、現在の先導的計画に対応するクエリのための独自の計画を生成するか、または取り出す。動作204では、2つの計画は次に、本明細書に記載される実行計画を比較するための実施形態を含む様々な手段のうちの1つを用いて比較される。動作206で局所的計画が優れている場合、シャードは、動作210で独自の局所的に生成された計画を使用し始めるか、またはそれを使用し続ける。この計画は、動作212でリーダーとして指定され、この計画に関する情報は、動作214で他のシャードにブロードキャストされる。動作206に戻ると、局所的に生成された計画が優れていなかった場合、シャードは、動作208で独自の計画ではなく先導的計画を採用する。
比較が実施されるべきではないと動作202が決定する場合、シャードは、直ちに先導的計画を使用し始める。この手法は、局所的計画が生成される間にクエリ実行を停止する必要なく、シャードが既存の計画を使用することを可能にするため、有利であり得る。シャードは次に、シャードがそうでなければ動作していないときなど、後の時点で独自の計画を生成することができる。
別の実施形態では、リーダーは、シャードによって生成された実行計画を連続的に評価することによって選択され得る。最初にリーダーとして指定されたシャードは、リーダーの実行計画を独自の計画と比較する第2のシャードに直接、実行計画情報を送信することができる。その計画が優れていると第2のシャードが決定する場合、それは、それ自体をリーダーとして指定し、計画に関する情報を第3のシャードに送信する。そうでなければ、第2のシャードは、元の実行計画情報を第3のシャードに転送する。このプロセスは、各シャードによって保持された実行計画が評価されるまで続き、この順序における最後のシャードは、最終の先導的計画を大域的に最適化された計画として指定する。
図3は、順次評価による大域的最適化の一実施形態を示す。第1のシャードは、生成された第1の計画が大域的に最適化された計画であると仮定することにより、動作300で局所的に最適化された実行計画を生成し、かつ計画に関する情報を第2のシャードに送信する。第2のシャードは、動作302で独自の計画を生成するか、または対応するクエリのための予め生成された計画を取り出す。動作304では、コスト係数は、計画の推定コスト間の確実な比較を可能にするように決定され得る。外部から受信され、かつ局所的に生成された計画は次に、動作304で比較される。第2のシャードは次に、動作306で好ましい計画を次のシャードに転送し、このプロセスは、308ですべてのシャードが実行計画を評価することができ、かつ大域的に最適化された計画が決定されるまで繰り返す。動作310では、シャードは、大域的に最適化された計画を利用して取得および開始する。
さらなる実施形態は、投票プロセスによる大域的クエリ最適化を実施する。各シャードは、様々な係数に基づいて多くの投票を割り当てられてもよく、リーダーとして選択される独自の計画のためにこれらの投票を行ってもよい。シャードに利用可能な投票の数に影響を与え得る係数としては、シャードの実行計画のコスト、それぞれのクエリが実行される頻度、およびシャードのハードウェアの性能特性が挙げられる。
図4は、投票プロセスによって大域的に最適化されたクエリを選択するためのシステムを示す。各シャード400は、様々なサブモジュールが統合され得るフロントエンドモジュール402を含む。当業者であれば、モジュールという用語がメモリ内に記憶され、かつプロセッサによって実行された回路またはソフトウェア命令等の手段を用いることにより実装された機能性の抽象的な単位を指し得ることを理解するであろう。モジュールは、別のプロセス、プログラム、または回路に統合され得る。モジュールはまた、機能性のサブユニットとして別のモジュールに組み込まれ得る。
一実施形態では、投票計算器モジュール404は、フロントエンドモジュール402に統合される。投票計算器モジュール404は、統計モジュール408を参照することによって利用可能な投票の数を決定し、これは次に、データベース410およびシャードのオペレーティングシステム412から統計値を取得することができる。一実施形態では、投票の数は、クエリのコスト、シャードのハードウェアの性能特性、シャードで記憶されたデータの量およびタイプ、ならびにクエリがシャードで実行される相対的頻度のうちの1つ以上を参照してクエリごとで決定される。
投票調整器モジュール420は、投票プロセスを開始する。図4に別々に示されるが、投票調整器モジュールは、フロントエンドモジュール402等の任意のモジュールに統合され得る。そうだとしたら、各シャードは、投票調整器モジュール420を含み得るが、1つのみが任意の所定の時間でアクティブである。
投票プロセスが開始すると、各投票モジュール406は、投票計算器モジュール404から利用可能な投票の数を取得する。投票モジュール406は次に、投票情報を投票調整器モジュール420に送信する。投票情報は、投票が成功すれば、他のシャードが実行計画をその後要求することを可能にするのに十分な情報を含む。この情報は、シャード識別子、実行計画識別子、およびその実行計画に対して行われる投票の数を示す値を含むことができる。前述のように、投票モジュール406が行い得る投票の数は、投票計算器モジュール404によって決定された量によって限定される。
各投票モジュール406がその投票を行うと、投票調整器モジュール420は、大部分の投票でクエリ計画を選択する。いくつかの実施形態では、2つ以上の投票モジュール406は、同じ実行計画に対する投票を行うことができる。そうだとしたら、それらの投票は、ともに追加され、その値は、獲得計画を決定するために使用され得る。
獲得計画を決定した後、投票調整器モジュール420は、各シャードに結果を通知し、計画情報モジュール430を介して計画情報を取得し、かつこの情報を各シャードに転送することによって、計画を用いて開始するためにシャードに十分な情報を提供する。他の実施形態は、シャードに好ましい計画を通知し、かつ好ましい計画の使用を開始するための異なる手段を利用することができる。
大域的に最適化された実行計画はまた、中央権限によって決定され得る。一実施形態では、各シャードは、その実行計画に関する情報を、各計画を評価および比較する中央権限に送信する。中央権限は、大域的に最適化された計画を決定し、かつその計画に関する情報を各シャードにブロードキャストする。
図5は、中央権限を利用することによって大域的に最適化された実行計画を決定する一実施形態を示す。シャード500は、最適化情報520を中央権限510に送信する。最適化情報は、クエリ計画情報、クエリ統計値、およびハードウェア特性情報のうちの1つ以上を含むことができる。実行計画情報は、図6に示されるものに類似するデータ構造によって表され得る。中央権限510は次に、本明細書に記載されるように、実行計画のコストを比較するための様々な実施形態に従って、各計画のコストを比較し、最も安価な計画を選択することができる。
最適化情報520のうちのいくつかは、コスト比較より前の時間に送信され得る。中央権限510は、各シャード500からの係数を積極的に取り出すことができる。あるいは、各シャード500は、様々なトリガー係数に基づいて最適化情報520の態様を送信することができる。様々な実施形態では、関連する要素は、例えば、定期的に、または情報が大幅に変更したときに送信され得る。
様々な実施形態では、通信機構は、実行計画に関する情報を分布させるために利用されなければならない。大域的に最適化された計画の選択が進行中である間、計画に関する限定された量の情報を送信することが好ましくてもよい。したがって、送信された情報は、計画の間の比較に必要とされるものに限定され得る。ブロードキャストまたは2地点間通信など、情報を送信するために様々な手段が利用され得る。大域的に最適化された計画が選択された後、計画が利用されるように、より完全な情報が必要とされ得る。他の手段の中でも、ブロードキャストおよび2地点間通信の両方は、この情報を通信するために利用され得る。しかしながら、比較的より大量のデータが関係していることにより、2地点間通信が好ましくてもよい。
図6は、実行計画を比較するのに有用な情報を含むデータ構造600の一実施形態を示す。様々な実施形態は、シャード間の計画情報を送信するために、この構造または類似の構造を利用することができる。当業者であれば、データ構造を含む要素が単に例示であることを認識するであろう。代替の実施形態は、本明細書に記載される要素を削除、置換、または追加することができる。
ソース識別子602は、実行計画情報のソースを識別し、これは、計画が生成されたシャードであり得る。識別子は、大域的に一意の識別子、ユニフォームリソースロケータ、またはインターネットプロトコルアドレス等のソースを識別するのに役立つ任意のタイプの値であり得る。一実施形態では、送信者が好ましい計画を有すると受信シャードが決定すると、これは、602によって識別されたソースからの計画に関する追加情報を要求することができる。
実行計画識別子604は、実行計画を識別する。これは、大域的に一意の識別子等の実行クエリ計画を識別するのに役立つ任意のタイプの値であってもよく、402によって識別されたソースから識別された実行計画に関する完全な情報を取得する要求で使用され得る。
クエリ識別子606は、計画が適用されるクエリを識別するのに役立つ。これは、大域的に一意の識別子またはクエリ自体のテキストなど、クエリを識別するのに役立つ任意のタイプの値であってもよい。
ドメイン識別子608は、シャードが属するドメインを示す。これに関して、ドメインは、大域的に最適化されたクエリを決定することに関与する一群のシャードを指す。典型的に、ドメインは、所定の表に対して水平な区画のすべてに対応するが、他の配列が有利であり得る。ドメインを構成するシャードは、区画された表を管理することに関係するシャードのすべてを必ずしも含まない。
コスト表示器610は、計画のコストの測定値を提供する。コスト表示器は、単純なスカラー値、スカラー値の1つ以上のベクトル、またはコスト情報を伝達する他の手段であってもよい。一実施形態では、コスト表示器は、実行計画を含むステップのセットにおけるステップに対応する値のベクトルである。
図7は、より完全な実行計画情報を送信するためのデータ構造700の一実施形態を示す。この構造は、シャードが対応するクエリを実行するように実行計画を使用し始めることを可能にするのに十分な情報を含むことを意図する。一般的に、この情報は、計画を比較するのに必要とされる情報より送信するのにコストがかかる。したがって、これは、最適化されると決定された後のみ、実行計画に関する詳細な情報を送信することが好ましくてもよい。
データ構造700は、実行計画のソースの識別子702を含むことができ、これは、大域的に一意の識別子、ユニフォームリソースロケータ、またはインターネットプロトコルアドレス等のソースを識別するのに役立つ任意のタイプの値であり得る。第2の識別子704は、計画自体を識別し、大域的に一意の識別子等の計画を識別するのに役立つ任意のタイプの値であり得る。第3の値706は、計画が適用されるクエリを識別する。これは、大域的に一意の識別子またはクエリ自体のテキストなど、クエリを識別するのに役立つ任意のタイプの値であってもよい。
加えて、データ構造は、実行計画をシャードのクエリオプティマイザにロードするのに十分な実行計画を詳細に表すメタデータ708を含むことができる。これは、実行計画詳細710を含むことができる。いくつかの実施形態では、メタデータは、アプリケーションプログラミングインターフェースを介してデータベースに提供され得る。データベースは、プログラミングインターフェースが呼び出された後、供給された実行計画を用いて対応するクエリを処理する。
2つの実行計画の予測コストを比較するために様々な手段が利用され得る。いくつかの状況では、調整せずにクエリオプティマイザによって提供されたコスト統計を直接比較することが有利であり得る。しかしながら、様々な係数は、未調整コスト比較を誤解させる場合がある。例えば、シャードのうちの1つでの比較的高速のCPU性能は、関連した実行計画がより遅いプロセッサを有するドメイン内のシャードで成績が悪い場合であっても、シャードのクエリオプティマイザによって生成されたコスト推定値を減少させることができる。
一実施形態では、各実行計画のコスト統計は、実行計画を生成したシャードの性能特性に基づいて調整される。スカラーコスト統計は、他のシャードとの比較に好適な調整されたコスト統計を生成するために調整係数を乗じ得る。調整係数は、シャードの全体的な性能特性に基づいてもよい。CPU速度、メモリ容量、記憶デバイス読み出し性能、記憶デバイス書き込み性能、記憶デバイスシークタイム、行カウント、およびデータの重複など、多数の性能およびデータベース測定基準が利用され得る。
図8は、コスト比較をすることができる一実施形態を示す。各シャード800は、関連した未調整コスト802で実行計画を生成する。各シャードは、クエリ統計806と性能特性808とのいくつかの組み合わせに基づいて調整係数804を計算する。技術者による手動調整などの他の係数もまた、計算に使用され得る。典型的に、未調整コスト802は、調整されたコスト810を生成するために調整係数804を乗じるが、他の数学または論理演算が調整されたコスト810を生成するために利用され得る。各実行計画からの調整されたコスト810は次に、結果822を生成するために比較関数820によって比較される。
図9は、アクセス計画の個々の構成要素のコストが関係のある性能特性に基づいて調整される一実施形態を示す。このように、コスト調整は、コスト計算に影響を与える可能性がより高い特性に重みをつけることによってより正確に行われ得る。例えば、完全な表走査は、CPU速度によるものよりシャードのディスクドライブの性能によって影響を与えられる可能性がより高い場合がある。したがって、表走査のコスト係数は、CPUの速度ではなくディスク性能に基づいて主に調整され得る。
実行計画900は、様々な動作タイプ902〜914を含む。各動作タイプは、そのタイプのすべての動作の総コストを反映する関連した未調整コストを有する。各未調整コストは、関連したコスト調整係数930の使用によって調整され、関係のある統計値および性能特性920を参照して決定される。決定に使用された統計値のセットおよび性能特性は、調整係数が関連付けられる動作タイプによって異なり得る。例えば、ハッシュアクセス動作タイプ910と関連付けられる調整係数930は、CPU速度922のみに、または、主に二次的考察としてワーキングセット926とともにCPU速度922に基づいて調整され得る。多くの他のタイプの測定基準も考慮され得る。物理的メモリまたはCPU速度の量などの比較的静的測定値に加えて、動的性能測定基準が収集され、かつ使用され得る。様々な非限定的な例は、ワーキングセット、CPU使用率、平均ディスク待ち行列の長さなどである。実行エンジンによって収集された性能測定基準も考慮され得る。データベースにおいて、様々な非限定的な例としては、キャッシュコヒーレンス測定値、平均ユーザセッション数、および様々なイベントログエントリが挙げられる。
様々な実施形態では、最適化された実行計画は、定期的に再計算される。再計算は、ドメイン内のシャードで条件を変更することにより望ましくありうる。例えば、動作中、シャードは、追加のデータを記憶し、場合により、シャードのドメインにわたって変更されたデータの分布をもたらすことができる。そうだとしたら、かつて大域的に最適化された実行計画であったものは、非効率になり得、かつ大域的に最適化された実行計画の新しい決定が望ましくなる。
大域的に最適化された実行計画の新しい決定は、最初に利用されたものに類似の様式で進行し得る。一実施形態では、各シャードは、独自の局所的に最適化された実行計画を再計算し、かつ大域的に最適化された計画は、本明細書に記載される様々な実施形態に従って選択される。しかしながら、いくつかの場合では、局所的に最適化された計画のサブセットのみを再計算することが望ましくてもよい。一実施形態では、各シャードは、表の大きさ等のいくつかの特性のセットが閾値を超えて変化した場合にのみ、新しい局所的に最適化された計画を決定することができる。
大域的に最適化された実行計画の再計算は、様々なイベントまたは条件によって引き起こされ得る。例えば、これは、1週間に1回など、定期的に引き起こされ得る。あるいは、これは、シャードのうちの1つ以上が動作していないときに適時的に行われてもよい。一実施形態では、シャードがそうでなければ動作していないとき、これは、その局所的に最適化された実行計画を再計算し、局所的に最適化された計画のコストが大幅に変更した場合にのみ、大域的に最適化された計画の再計算を引き起こす。大域的に最適化された計画の再計算のための他のトリガーイベントは、シャードで記憶されたデータの量が大幅に変更したとき、またはシャードのハードウェア構成が変更したときを含む。
シャードベースのアーキテクチャの1つの利点は、追加の容量が必要とされるときに新しいシャードが追加され得ることである。しかしながら、統計値のキャッシュを蓄積し、新しい実行計画を生成する間、新しいシャードは、最適に実施されないこともある。大域的に最適化されると既に決定された実行計画で自動的に投入されることが新しいシャードに有利である。その後、新しいシャードは、局所的に最適化された実行計画を計算することができ、大域的に最適化された実行計画を決定するために本明細書に記載される実施形態は次に、新しいシャードと併せて実施され得る。
いくつかの例では、クライアントアプリケーションは、システム内のシャードにわたって概ね均等に実行されるクエリを発行する。これは、アプリケーションが各シャードに割り当てられた水平な区画にわたって均等に分布されるデータを要求するときに生じる傾向がある。他の場合では、クライアントアプリケーションは、単一区画に向かって大きく歪んだクエリを発行することができる。後者の場合では、全体的なシステム性能は、個々のアプリケーションがその代わりに、実行されたクエリのための大域的に最適化された実行計画をオーバーライドすることを可能にすることによって改善され得る。
他の実施形態では、システムは、クライアントアプリケーションにヒントを供給することができる。ヒントは、実行計画の生成およびクエリ自体の実行に影響を与える提案を含むことができる。例えば、ヒントは、特定のクエリが実行されるとき、完全な表走査がインデックス走査より好ましいことを提案することができる。多くの他のタイプのヒントが可能であり、かつ企図される。クライアントアプリケーションに供給されるヒントは、様々な手段によって決定され得る。一実施形態では、潜在的なヒントは、コスト削減に基づいて評価される。ドメインにわたって繰り返されたクエリ実行のコストを最適化するヒントが、クライアントアプリケーションに利用可能にされる。クライアントは次に、それがクエリを実行するときに供給されたヒントを含むことができる。シャードがクエリを受信すると、これは、ヒントを処理し、ドメインの最適化された性能と一致する様式でクエリを実行する。当業者であれば、先程記載された実施形態が本出願に記載される他の実施形態に加えて、またはその代わりに実践され得ることを認識するであろう。
クライアントアプリケーションは、様々な方法でヒントを受信することができる。ブロードキャストシステムは、1つ以上の関係のあるクライアントアプリケーションにヒントを送信するために利用され得る。この手法は、新しい、または異なるヒントが生成されるときに更新をリブロードキャストすることができる利点を有する。あるいは、各アプリケーションは利用可能なヒントを直接要求することができる。特定のハードウェアおよびソフトウェア環境に好適な追加の実施形態も企図される。
さらなる実施形態では、ヒントは、シャードベースのシステムから技師および他の技術スタッフに供給され得る。一実施形態では、シャードは、その計画が現在選択された大域的に最適化された計画より大幅に安価であることを示すヒントを供給し、大域的に最適化された計画の再計算またはそのオーバーライドが望ましくてもよいことを提案することができる。ヒントは、様々な方法でユーザに送信され得る。非限定的な例としては、対象とするユーザにアクセス可能なハードドライブに記憶されること、電子メールまたはメッセージングを介して送信されること、または後の処理のために列を成して配置されることが挙げられる。
他の実施形態では、システムは、クライアントアプリケーションプログラムの最適化を可能にするソフトウェア技術スタッフによる使用のためにヒントを供給する。ヒントは、技師がクライアントアプリケーションからシャードベースのシステムに送信されたクエリを手動で修正することを提案することができる。例えば、ヒントは、大域的に最適化された実行計画の決定に従って、インデックス走査が特定のクエリに対する完全な表走査より好ましいことを提案することができる。ソフトウェア技師は次に、アプリケーションを修正し、所望の大域的に最適化された計画に適合する可能性がより高いクエリをそれに発行させ得る。他の実施形態では、ヒントはまた、クエリを実行する他の態様を変更するために使用され得る。例えば、ヒントは、クエリが特定のシャードで実行されるべきであるか、または特定のシャードが回避されるべきであるかを、直接的または間接的に示すことができる。ヒントはまた、クエリが複数のシャードにわたって実行を必要とすることを示し、クエリの再構築が望ましいことを人員に提案してもよい。
図10は、この手法の一実施形態を示す。一連の動作として示されるが、当業者であれば、動作の順序が異なる場合があり、かつ動作が追加、修正、または削除され得ることを理解するであろう。
動作1000では、シャードベースのシステムは、クライアントアプリケーションからのクエリを受信および処理する。大域的に最適化された実行計画は次に、動作1002で生成される。しかしながら、シャードにクエリを直接採用させるのではなく、システムは、動作1004で大域的に最適化された実行計画に関する情報を技術スタッフに送信することができる。この情報は、技師がアプリケーションに所望の修正を行うことを可能にするのに十分な実行計画の記述または説明を含むことができる。例えば、これは、最適化された実行計画の命令のセットおよび関連したコストの記述を含むことができる。
動作1006では、システムは、動作1004で提供された情報に従って修正されたクエリを受信する。新しいクエリ計画は次に、動作1008で修正されたクエリに対して生成される。クエリに行われた修正により、新しい実行計画は、所望の大域的に最適化された計画と一致する様式で生成される。さらに説明するために、ヒントは、未修正計画がクエリオプティマイザによって処理されるときにそれがインデックス走査をもたらす場合であっても、大域的に最適化された実行計画がインデックス走査の代わりに完全な表走査を使用することを示すことができる。修正されたクエリは、完全な表走査が好ましいことをクエリオプティマイザに示す命令を含む。したがって、クエリオプティマイザは、完全な表走査を用いて実行計画を生成し、結果として得られたクエリは、所望の大域的に最適化された計画と一致する。新しいクエリが生成された後、クエリは、動作1010で、その計画を用いて実行され得る。
例示の目的のために、本明細書に記載される実施形態のうちのいくつかは、水平に区画されたデータを有するデータ管理システムを指す。しかしながら、当業者であれば、本開示の態様が従来のデータベースに関係しないシステムに適用され得ることを理解するであろう。例としては、これらに限定されないが、状態機械およびワークフローエンジンが挙げられる。図11は、本明細書に記載される大域的最適化技術が適用され得る一実施形態を示す。第1および第2のコンピューティングノード1100は、共通のコマンド1120を受信および処理することができる。コマンドは、それがドメイン内の複数のコンピューティングノードで実行され得、かつ総コストが推定され得る一連のステップに分解され得るならば、任意のタイプであり得る。状態機械およびワークフローエンジンは、これらの基準に適合するコマンドを処理するシステムの例である。双方とも関連した遷移を有する状態のセットからなる。クエリを実施することは、現在の状態からコマンドが実行された状態への遷移のセットを含む。コマンドの完全な状態に達することができるあらゆるシャードは、コマンドを処理することができ、そのようにするコストは、その状態に達するために必要とされるすべての遷移の推定コストに基づいて推定され得る。実行エンジンは、例えば、クエリオプティマイザによって最適化されるか、またはそうでなければ選択された好ましい計画の後に、所望の遷移のセットを生じさせることによってクエリを実施することができる。各シャードによって管理されたデータは、シャードのドメインがセット全体を集合的に管理するように、区画されたデータセットの区画を管理することができる。区画は、データのうちのいくつかまたはさらにはすべてがシャード間で複製されるように重複であり得る。データセットは、任意のタイプのデータを含み、これらに限定されないが、表、ベクトル、配列、グラフなどを含むことができる。
ステップの順序および予測コストは、局所的オプティマイザ1102によって決定される。比較モジュール1130は、実行統計、相対的ハードウェア性能特性、および各システムが共通のコマンドを実行する相対的頻度を参照して、2つの計画の予測コストを比較する。比較の結果は、好ましい実行計画1140であり、これは、好ましい実行計画1140と実行エンジン1104との間の連結矢印によって示されるように、実行エンジン1104によって利用され得る。ヒントをアプリケーションまたは技術支援スタッフに供給することなどとともに、好ましい計画を使用するための他の様々な実施形態も利用され得る。
前節に記載されるプロセス、方法、およびアルゴリズムの各々は、1つ以上のコンピュータまたはコンピュータプロセッサによって実行されたコードモジュールで具現化され、それによって完全または部分的に自動化され得る。コードモジュールは、ハードドライブ、ソリッドステートメモリ、光ディスクなど、任意のタイプの非一時的コンピュータ可読媒体またはコンピュータ記憶デバイスで記憶され得る。プロセスおよびアルゴリズムは、アプリケーション特有の回路に部分的または全体に実装され得る。開示されるプロセスおよびプロセスのステップの結果は、例えば、揮発性または不揮発性ストレージなど、任意のタイプの非一時的コンピュータストレージ内に持続的または別の方法で記憶され得る。
加えて、前述の実施形態のうちの1つ以上は、以下の付記を考慮して理解され得る。
1.第1の実行エンジンを動作させるように構成された第1のコンピューティングノードであって、第1の実行エンジンが、区画されたデータセットの第1の区画を含み、
第1のコンピューティングノードが、第1の実行エンジンでクエリを実行する第1の計画を決定するように動作可能な第1のクエリオプティマイザを動作させるように構成され、クエリが、区画されたデータセットに方向付けられる、第1のコンピューティングノードと、
第2の実行エンジンを動作させるように構成された第2のコンピューティングノードであって、第2の実行エンジンが、区画されたデータセットの第2の区画を含み、
第2のコンピューティングノードが、第2の実行エンジンでクエリを実行する第2の計画を決定するように動作可能な第2のクエリオプティマイザを動作させるように構成される、第2のコンピューティングノードと、
クエリを実行する第1の計画またはクエリを実行する第2の計画が、第1および第2の実行エンジンでクエリを実行するために使用されるべきであるかを決定するように構成されたオプティマイザと、を備える、システム。

2.実行エンジンは、データベースである、付記1に記載のシステム。

3.オプティマイザは、クエリを実行する第1または第2の計画が、クエリを実行する第1の計画を実行する第1のコスト、およびクエリを実行する第2の計画を使用する第2のコストを比較することによって使用されるべきであるかを決定するように構成される、付記1に記載のシステム。

4.オプティマイザは、クエリを実行する第1または第2の計画が第1および第2のコンピューティングノードの特性に基づいて、第1および第2のコストを調整することによって使用されるべきであるかを決定するように構成される、付記3に記載のシステム。

5.第2のコンピューティングノードは、クエリを実行する第1の計画を示す情報を受信するように構成される、付記1に記載のシステム。

6.第2のコンピューティングノードは、オプティマイザの決定に基づいて、クエリを実行する第1の計画を用いてクエリを実行するように構成される、付記1に記載のシステム。

7.クエリは、パラメータ化されたクエリである、付記1に記載のシステム。

8.オプティマイザは、第1の実行計画または第2の実行計画が、クエリの以前の実行および収集された性能測定基準から決定された統計値のうちの1つ以上に基づいて、クエリを実行するために使用されるべきであるかを決定するように構成される、付記1に記載のシステム。

9.データベースクエリを実行するための方法であって、
第1のコンピューティングノードでデータベースクエリを実行するための第1の命令のセットを実行する第1の推定コストを示す情報を受信するステップであって、第1の命令のセットが第1のコンピューティングノードによって決定される様式でデータベースクエリを実施する、ステップと、
第2のコンピューティングノードでデータベースクエリを実行するための第2の命令のセットを実行する第2の推定コストを示す情報を受信することとであって、第2の命令のセットが第2のコンピューティングノードによって決定される様式でデータベースクエリを実施する、ステップ、
第1および第2の推定コストを比較することによって、第1および第2のコンピューティングノードのうちの少なくとも1つでデータベースクエリを実施するために第1または第2の命令のセットを使用するかを決定するステップ、を含む、方法。

10.第1および第2の推定コストを比較することは、第1および第2のコンピューティングノードの性能特性に対して調整することをさらに含む、付記9に記載の方法。

11.性能特性は、プロセッサ速度、記憶デバイス速度、利用可能なメモリ、ワーキングセット、CPU使用率、平均ディスク待ち行列の長さ、キャッシュコヒーレンス測定値、平均ユーザセッション数、およびイベントログエントリのうちの1つ以上を含む、付記10に記載の方法。

12.第1および第2の推定コストを比較することは、第1および第2コンピューティングノードによって管理されたデータの特性に対して調整することを含む、付記9に記載の方法。

13.データの特性は、多くのデータの行およびデータの繰り返しの頻度のうちの1つ以上を含む、付記12に記載の方法。

14.第1および第2の推定コストを比較することは、少なくとも1つの命令の推定コストに対する第1または第2のコンピューティングノードの特性に基づいて、第1または第2の命令のセットのうちの少なくとも1つの命令の推定コストを調整することを含む、付記9に記載の方法。

15.第1のコンピューティングノードは、第1の命令のセットを実行する推定コストを示す情報を第2のコンピューティングノードに送信する、付記9に記載の方法。

16.第1または第2の命令のセットを使用するかを決定することは、第1または第2のコンピューティングノードのうちの少なくとも1つによって実施される、付記9に記載の方法。

17.クエリは、区画された表に方向付けられ、クエリオプティマイザは、第1の命令のセットを決定する、付記9に記載の方法。

18.コストは、計算能力、CPU速度、メモリ容量、キャッシュ容量、記憶デバイス読み出し性能、記憶デバイス書き込み性能、記憶デバイス書き込み性能、記憶デバイスシークタイム、行カウント、およびデータの重複のうちの少なくとも1つの関数である、付記9に記載の方法。

19.第1または第2の命令のセットを使用するかを決定することは、トリガーイベント後に実施される、付記9に記載の方法。

20.トリガーイベントは、周期的イベント、ハードウェアコンポーネントの変更、ハードウェアの構成に対する変更、およびシステムに記憶されたデータの変更のうちの1つ以上を含む、付記19に記載の方法。

21.非一時的コンピュータ可読記憶媒体であって、コンピューティングデバイスによる実行時に、このコンピューティングデバイスに、
クエリを実施する第1のコストの推定値を受信することであって、第1のコストが第1のコンピューティングノード内で第1の命令のセットを実施する推定コストの決定を含む、受信することと、
クエリを実施する第2のコストを推定することであって、第2の推定コストが、第2のコンピューティングノードで第2の命令のセットを実施する推定コストの決定を含む、推定することと、
第1および第2のコンピューティングノードの相対的特性に対して調整した後、第1のコストを第2のコストと比較し、第1の命令のセットが第1および第2のコンピューティングノードでクエリを実施するために好ましいと決定すること、
を少なくとも行わせるコンピュータ命令を記憶した、非一時的コンピュータ可読記憶媒体。

22.コンピューティングデバイスによる実行時に、このコンピューティングデバイスに、
第2のコンピューティングノードでの実行時に、クエリが第1の命令のセットを用いて実施されるように、第1の命令のセットをクエリと関連付けること、を少なくとも行わせる命令を非一時的コンピュータ可読記憶媒体上に記憶した、付記21に記載の非一時的コンピュータ可読記憶媒体。

23.コンピューティングデバイスによる実行時に、このコンピューティングデバイスに、
第3のコンピューティングノードでの実行時に、クエリが第1の命令のセットを用いて実施されるように、第1の命令のセットをクエリと関連付けること、を少なくとも行わせる命令を非一時的コンピュータ可読記憶媒体上に記憶した、付記21に記載の非一時的コンピュータ可読記憶媒体。

24.非一時的コンピュータ可読記憶媒体であって、コンピューティングデバイスによる実行時に、このコンピューティングデバイスに、
クエリオプティマイザから、第1のコンピューティングノードでクエリを実行するための第1の計画を取得することと、
クエリオプティマイザから、第2のコンピューティングノードでクエリを実行するための第2の計画を取得することと、
クエリを実行するための第1および第2の計画を実行する予測コストを比較することと、
この比較に基づいて、クエリを実行するための第1または第2の計画のうちのどちらが好ましいかを決定することと、
クエリを実行するための好ましい第1または第2の計画を示す情報を送信することと、を少なくとも行わせる命令を記憶した、非一時的コンピュータ可読記憶媒体。

25.情報は、クライアントアプリケーションに送信される、付記24に記載の非一時的コンピュータ可読記憶媒体。

26.情報は、ユーザに送信され、この送信は、記憶デバイス、待ち行列、またはメッセージングシステムのうちの1つ以上を含む、付記24に記載の非一時的コンピュータ可読記憶媒体。

27.情報は、クエリを実行するための好ましい第1または第2の計画と一致するクエリを実行するために、クエリオプティマイザに計画を生成させるようにクエリを修正するための提案を含む、付記24に記載の非一時的コンピュータ可読記憶媒体。

28.情報は、クエリを特定のコンピューティングデバイスに経路指定する提案を含む、付記24に記載の非一時的コンピュータ可読記憶媒体。
上述される様々な特徴およびプロセスは、互いに独立して使用されてもよく、または様々な方法で組み合わされてもよい。すべての可能な組み合わせおよび部分的組み合わせは、本開示の範囲内に入ることを意図する。加えて、ある特定の方法またはプロセスブロックは、いくつかの実装形態で省略されてもよい。本明細書に記載される方法およびプロセスはまた、任意の特定の順序に限定されず、それに関するブロックまたは状態は、適切な他の順序で実施され得る。例えば、記載されるブロックまたは状態は、具体的に開示されるもの以外の順序で実施されてもよく、または複数のブロックもしくは状態は、単一のブロックもしくは状態で組み合わせられてもよい。例示的なブロックまたは状態は、連続して、並行して、またはいくつかの他の様式で実施されてもよい。ブロックまたは状態は、開示される例示的な実施形態に追加され、またはそれから削除されてもよい。本明細書に記載される例示的なシステムおよび構成要素は、記載されるものとは異なって構成されてもよい。例えば、要素は、開示される例示的な実施形態と比較して、それに追加され、それから削除され、または再配列されてもよい。
様々な項目は、メモリ内またはメモリ上に記憶されるように図解され、かつこれらの項目またはこれらの部分は、メモリ管理およびデータ整合性のためにメモリと他の記憶デバイスとの間で転送され得ることも理解される。あるいは、他の実施形態では、ソフトウェアモジュールおよび/またはシステムのうちのいくつかまたはすべては、別のデバイス上のメモリ内で実行し、コンピュータ間通信を介して図解されるコンピューティングシステムと通信する。さらに、いくつか実施形態では、システムおよび/またはモジュールのうちのいくつかのまたはすべては、これらに限定されないが、1つ以上の特定用途向け集積回路(ASIC)、標準集積回路、コントローラ(例えば、適切な命令を実行し、かつマイクロコントローラおよび/または埋込み型コントローラを含むことによる)、フィールドプログラマブルゲートアレイ(FPGA)、結合プログラマブル論理デバイス(CPLD)などを含む、少なくとも部分的にファームウェアおよび/またはハードウェア内など、他の方法で実装または提供されてもよい。モジュール、システム、およびデータ構造のうちのいくつかまたはすべてはまた、ハードディスク、メモリ、ネットワーク、または適切なドライブによって、もしくは適切な接続を介して読み出される携帯用媒体物品など、コンピュータ可読媒体に記憶(例えば、ソフトウェア命令または構造化データとして)されてもよい。システム、モジュール、データ構造はまた、無線ベースおよび有線/ケーブルベースの媒体を含む様々なコンピュータ可読伝送媒体上で生成されたデータ信号として伝送されてもよく、様々な形態を(例えば、単一もしくは多重化アナログ信号の一部として、または複数の離散デジタルパケットもしくはフレームとして)取ってもよい。このようなコンピュータプログラム製品はまた、他の実施形態で他の形態を取ってもよい。したがって、本発明は、他のコンピュータシステム構成で実践されてもよい。
本明細書に使用される条件付き用語、数ある中でも、例えば、「することができる(can)」、「することができる(could)」、「してもよい(might)」、「してもよい(may)」などは、別の方法で具体的に記述されないか、または使用されるように文脈内に別の方法で理解されない限り、ある特定の実施形態がある特定の特徴、要素、および/またはステップを含むが、他の実施形態はこれらを含まないことを伝えることを一般的に意図する。したがって、このような条件付き用語は、特徴、要素、および/またはステップが1つ以上の実施形態に何らかの形で必要とされるか、あるいは、これらの特徴、要素、および/もしくはステップが任意の特定の実施形態内に含まれるか、またはそれで実施されるかをオーサ入力もしくはプロンプティングの有無にかかわらず、1つ以上の実施形態が決定する論理を必然的に含むことを意味することを一般的に意図しない。用語「備える」、「含む」、「有する」などは、同義語であり、開放型様式で包括的に使用され、追加の要素、特徴、行為、動作などを排除しない。また、用語「または」は、使用時に、例えば、要素の一覧を結びつけるために、用語「または」は、一覧における1つ、いくつか、またはすべてを意味するように、その包括的意味で(かつその排他的意味ではなく)使用される。
ある特定の例示的な実施形態が記載されたが、これらの実施形態は、単に例示として提示され、本明細書に開示される本発明の範囲を限定することを意図しない。したがって、前述の説明には、任意の特定の特徴、特性、ステップ、モジュール、もしくはブロックが必要であり、または不可欠であることを意味することを意図することはない。実際には、本明細書に記載される新規の方法およびシステムは、様々な他の形態で具現化されてもよく、さらに、本明細書に記載される方法およびシステムの形態で様々な省略、置換、および変更は、本明細書に開示される本発明の趣旨から逸脱することなく行われてもよい。添付の特許請求の範囲およびその均等物は、本明細書に開示される本発明のうちのいくつかの範囲および趣旨内に入るようにこのような形態または修正を包含することを意図する。

Claims (14)

  1. システムにおいて、
    区画されたデータセットの第1の区画に対して、データベースクエリを実行させる第1のコンピューティングノードと、
    前記区画されたデータセットの第2の区画に対して、前記データベースクエリを実行させる第2のコンピューティングノードと、
    前記第1のコンピューティングノード及び前記第2のコンピューティングノードと通信可能な比較モジュールと、を備え、
    前記比較モジュールは、
    前記第1のコンピューティングノードで決定された様式で前記データベースクエリを実施する第1の命令のセットを実行する第1の推定コストを示す情報を受信し、
    前記第2のコンピューティングノードで決定された様式で前記データベースクエリを実施する第2の命令のセットを実行する第2の推定コストを示す情報を受信し、
    前記第1および第2の推定コストを比較することによって、前記第1および第2のコンピューティングノードのいずれかで前記データベースクエリを実施するために前記第1または第2の命令のセットを使用するかを決定する、システム。
  2. 前記比較モジュールは、前記第1のコンピューティングノードの特性に基づき調整した前記第1の推定コストに基づいて、前記第1または第2の命令のセットを使用するかを決定する請求項1に記載のシステム。
  3. 前記第2のコンピューティングノードは、前記データベースクエリを実行する前記第1の命令のセット示す情報を受信するように構成される、請求項1に記載のシステム。
  4. 前記データベースクエリは、パラメータ化されたクエリである、請求項1に記載のシステム。
  5. 前記比較モジュールは、前記第1のコンピューティングノードへの前記データベースクエリの事前の実行で収集された第1統計値と前記第2のコンピューティングノードへの前記データベースクエリの事前の実行で収集された第2統計値との比較に基づいて、前記第1の命令のセットが前記データベースクエリを実行するために使用されるべきであるかを決定する、請求項1に記載のシステム。
  6. 第1のコンピューティングノード、第2のコンピューティングノード並びに第1及び第2のコンピューティングノードと通信可能な比較モジュールを含むシステム内でデータセットのデータベースクエリを実行するための方法であって、比較モジュールは、
    前記第1のコンピューティングノードで前記データベースクエリを実行するため、前記第1のコンピューティングノードによって決定される様式で前記データベースクエリを実施する第1の命令のセットを実行する第1の推定コストを示す情報を受信するステップと、
    前記第2のコンピューティングノードで前記データベースクエリを実行するため、前記第2のコンピューティングノードによって決定される様式で前記データベースクエリを実施する第2の命令のセットを実行する第2の推定コストを示す情報を受信するステップと、
    前記第1および前記第2の推定コストを比較することによって、前記第1のコンピューティングノードで前記データベースクエリを実施するために前記第1の命令のセットを使用するか又は前記第2のコンピューティングノードで前記データベースクエリを実施するために前記第2の命令のセットを使用するかを決定するステップと、を含む方法。
  7. 前記第1および第2の推定コストを比較することは、前記第1および第2のコンピューティングノードの性能特性に対して調整することをさらに含む、請求項6に記載の方法。
  8. 前記性能特性は、プロセッサ速度、記憶デバイス速度、利用可能なメモリ、ワーキングセット、CPU使用率、平均ディスク待ち行列の長さ、キャッシュコヒーレンス測定値、平均ユーザセッション数、およびイベントログエントリのうちの1つ以上を含む、請求項7に記載の方法。
  9. 前記第1および第2の推定コストを比較することは、前記第1および第2コンピューティングノードによって管理されるデータの量およびタイプに対して調整することを含む、請求項6に記載の方法。
  10. 前記データセットは、行及び列に区画された表を含み、
    前記データベースクエリは、前記行または前記列に方向付け、前記第1および第2の推定コストを比較するクエリオプティマイザは、前記第1の命令のセットを決定する、請求項6に記載の方法。
  11. 前記第1および前記第2の推定コストは、計算能力、CPU速度、メモリ容量、キャッシュ容量、記憶デバイス読み出し性能、記憶デバイス書き込み性能、記憶デバイス書き込み性能、記憶デバイスシークタイム、行カウント、およびデータの重複のうちの少なくとも1つの関数である、請求項6に記載の方法。
  12. 前記第1または第2の命令のセットを使用するかを決定することは、トリガーイベント後に実施される、請求項6に記載の方法。
  13. 前記トリガーイベントは、周期的イベント、ハードウェア構成要素の変更、ハードウェアの構成に対する変更、および前記システムに記憶されたデータの変更のうちの1つ以上を含む、請求項12に記載の方法。
  14. 第1のコンピューティングノード及び第2のコンピューティングノードによるデータベースクエリの実行時に、前記第1及び前記第2のコンピューティングノードと通信可能な比較モジュールに下記を実行させる命令を記録したコンピュータに読み取り可能な記憶媒体であって、
    前記第1のコンピューティングノードで決定された様式で前記データベースクエリを実施する第1の命令のセットを実行する第1の推定コストを示す情報を、前記第1のコンピューティングノードから取得することと、
    前記第2のコンピューティングノードで決定された様式で前記データベースクエリを実施する第2の命令のセットを実行する第2の推定コストを示す情報を、前記第2のコンピューティングノードから取得することと、
    前記データベースクエリを実行するための前記第1および第2の命令のセットを実行する予測コストを比較することと、
    前記比較に基づいて、前記データベースクエリを実行するための前記第1または第2の命令のセットのうちのどちらが好ましいかを決定することと、
    データベースクエリを実行するための前記好ましい第1または第2の命令のセットを示す情報を前記第1のコンピューティングノード又は前記第2のコンピューティングノードに送信することと、を前記比較モジュールに実行させる命令を記憶したコンピュータに読み取り可能な記憶媒体。
JP2015545463A 2012-11-30 2013-11-27 システム、データベースクエリを実行するための方法及びコンピュータに読み取り可能な記録媒体 Active JP6259465B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/691,213 2012-11-30
US13/691,213 US9229983B2 (en) 2012-11-30 2012-11-30 System-wide query optimization
PCT/US2013/072365 WO2014085677A2 (en) 2012-11-30 2013-11-27 System-wide query optimization

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2017236169A Division JP6559215B2 (ja) 2012-11-30 2017-12-08 システム、データベースクエリを実行するための方法及びコンピュータに読み取り可能な記録媒体

Publications (2)

Publication Number Publication Date
JP2016500454A JP2016500454A (ja) 2016-01-12
JP6259465B2 true JP6259465B2 (ja) 2018-01-10

Family

ID=50826502

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2015545463A Active JP6259465B2 (ja) 2012-11-30 2013-11-27 システム、データベースクエリを実行するための方法及びコンピュータに読み取り可能な記録媒体
JP2017236169A Active JP6559215B2 (ja) 2012-11-30 2017-12-08 システム、データベースクエリを実行するための方法及びコンピュータに読み取り可能な記録媒体

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2017236169A Active JP6559215B2 (ja) 2012-11-30 2017-12-08 システム、データベースクエリを実行するための方法及びコンピュータに読み取り可能な記録媒体

Country Status (6)

Country Link
US (3) US9229983B2 (ja)
EP (1) EP2926274A4 (ja)
JP (2) JP6259465B2 (ja)
CN (1) CN104871154B (ja)
CA (3) CA2892599C (ja)
WO (1) WO2014085677A2 (ja)

Families Citing this family (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9229983B2 (en) * 2012-11-30 2016-01-05 Amazon Technologies, Inc. System-wide query optimization
US9354813B1 (en) * 2012-12-28 2016-05-31 Emc Corporation Data storage system modeling
US9606999B2 (en) * 2013-03-07 2017-03-28 Sap Se Lock free data transfer
US9514007B2 (en) * 2013-03-15 2016-12-06 Amazon Technologies, Inc. Database system with database engine and separate distributed storage service
WO2014209292A1 (en) * 2013-06-26 2014-12-31 Hewlett-Packard Development Company, L.P. Modifying an analytic flow
US9547711B1 (en) * 2013-07-22 2017-01-17 Google Inc. Shard data based on associated social relationship
US10019478B2 (en) * 2013-09-05 2018-07-10 Futurewei Technologies, Inc. Mechanism for optimizing parallel execution of queries on symmetric resources
US10346897B2 (en) 2014-05-30 2019-07-09 Walmart Apollo, Llc Method and system for smart order management and application level sharding
US10043208B2 (en) 2014-05-30 2018-08-07 Walmart Apollo, Llc Smart order management and database sharding
US10410169B2 (en) 2014-05-30 2019-09-10 Walmart Apollo, Llc Smart inventory management and database sharding
US9659079B2 (en) 2014-05-30 2017-05-23 Wal-Mart Stores, Inc. Shard determination logic for scalable order and inventory management architecture with a sharded transactional database
CN105808618B (zh) * 2014-12-31 2019-10-22 阿里巴巴集团控股有限公司 Feed数据的存储和查询方法及其装置
US10484476B2 (en) * 2015-02-23 2019-11-19 Siemens Aktiengesellschaft Distributed data management systems for embedded controllers
CN106156168B (zh) * 2015-04-16 2019-10-22 华为技术有限公司 在跨分区数据库中查询数据的方法及跨分区查询装置
US9946752B2 (en) 2015-04-27 2018-04-17 Microsoft Technology Licensing, Llc Low-latency query processor
US10353893B2 (en) 2015-05-14 2019-07-16 Deephaven Data Labs Llc Data partitioning and ordering
US10270476B1 (en) 2015-06-16 2019-04-23 Amazon Technologies, Inc. Failure mode-sensitive layered redundancy coding techniques
US9998150B1 (en) 2015-06-16 2018-06-12 Amazon Technologies, Inc. Layered data redundancy coding techniques for layer-local data recovery
US10270475B1 (en) 2015-06-16 2019-04-23 Amazon Technologies, Inc. Layered redundancy coding for encoded parity data
US10298259B1 (en) 2015-06-16 2019-05-21 Amazon Technologies, Inc. Multi-layered data redundancy coding techniques
US10977128B1 (en) 2015-06-16 2021-04-13 Amazon Technologies, Inc. Adaptive data loss mitigation for redundancy coding systems
US10394762B1 (en) 2015-07-01 2019-08-27 Amazon Technologies, Inc. Determining data redundancy in grid encoded data storage systems
US10162704B1 (en) 2015-07-01 2018-12-25 Amazon Technologies, Inc. Grid encoded data storage systems for efficient data repair
US10089176B1 (en) 2015-07-01 2018-10-02 Amazon Technologies, Inc. Incremental updates of grid encoded data storage systems
US10108819B1 (en) 2015-07-01 2018-10-23 Amazon Technologies, Inc. Cross-datacenter extension of grid encoded data storage systems
US9998539B1 (en) 2015-07-01 2018-06-12 Amazon Technologies, Inc. Non-parity in grid encoded data storage systems
US10198311B1 (en) 2015-07-01 2019-02-05 Amazon Technologies, Inc. Cross-datacenter validation of grid encoded data storage systems
US9959167B1 (en) 2015-07-01 2018-05-01 Amazon Technologies, Inc. Rebundling grid encoded data storage systems
US9904589B1 (en) 2015-07-01 2018-02-27 Amazon Technologies, Inc. Incremental media size extension for grid encoded data storage systems
JP6531587B2 (ja) * 2015-09-16 2019-06-19 富士通株式会社 データベースシステム、データベースアクセス方法、データベースアクセスプログラム、及び、情報処理装置
US9928141B1 (en) 2015-09-21 2018-03-27 Amazon Technologies, Inc. Exploiting variable media size in grid encoded data storage systems
US11386060B1 (en) 2015-09-23 2022-07-12 Amazon Technologies, Inc. Techniques for verifiably processing data in distributed computing systems
CN105260136B (zh) * 2015-09-24 2019-04-05 北京百度网讯科技有限公司 数据读写方法及分布式存储系统
US9940474B1 (en) 2015-09-29 2018-04-10 Amazon Technologies, Inc. Techniques and systems for data segregation in data storage systems
US10339116B2 (en) * 2015-10-07 2019-07-02 Oracle International Corporation Composite sharding
US9514247B1 (en) 2015-10-28 2016-12-06 Linkedin Corporation Message passing in a distributed graph database
CN105183614A (zh) * 2015-11-03 2015-12-23 华夏银行股份有限公司 一种数据库故障预测方法及装置
US10216793B2 (en) * 2015-11-03 2019-02-26 Sap Se Optimization of continuous queries in hybrid database and stream processing systems
US20170139991A1 (en) * 2015-11-16 2017-05-18 Linkedin Corporation Dynamic query plan based on skew
US10157205B2 (en) * 2015-11-23 2018-12-18 International Business Machines Corporation Parallel preparation of a query execution plan in a massively parallel processing environment based on global and low-level statistics
US10394789B1 (en) 2015-12-07 2019-08-27 Amazon Technologies, Inc. Techniques and systems for scalable request handling in data processing systems
US9785495B1 (en) 2015-12-14 2017-10-10 Amazon Technologies, Inc. Techniques and systems for detecting anomalous operational data
US10642813B1 (en) 2015-12-14 2020-05-05 Amazon Technologies, Inc. Techniques and systems for storage and processing of operational data
US10248793B1 (en) 2015-12-16 2019-04-02 Amazon Technologies, Inc. Techniques and systems for durable encryption and deletion in data storage systems
US10180912B1 (en) 2015-12-17 2019-01-15 Amazon Technologies, Inc. Techniques and systems for data segregation in redundancy coded data storage systems
US10102065B1 (en) 2015-12-17 2018-10-16 Amazon Technologies, Inc. Localized failure mode decorrelation in redundancy encoded data storage systems
US10235402B1 (en) 2015-12-17 2019-03-19 Amazon Technologies, Inc. Techniques for combining grid-encoded data storage systems
US10324790B1 (en) 2015-12-17 2019-06-18 Amazon Technologies, Inc. Flexible data storage device mapping for data storage systems
US10127105B1 (en) * 2015-12-17 2018-11-13 Amazon Technologies, Inc. Techniques for extending grids in data storage systems
US10180992B2 (en) 2016-03-01 2019-01-15 Microsoft Technology Licensing, Llc Atomic updating of graph database index structures
US10592336B1 (en) 2016-03-24 2020-03-17 Amazon Technologies, Inc. Layered indexing for asynchronous retrieval of redundancy coded data
US10678664B1 (en) 2016-03-28 2020-06-09 Amazon Technologies, Inc. Hybridized storage operation for redundancy coded data storage systems
US10366062B1 (en) 2016-03-28 2019-07-30 Amazon Technologies, Inc. Cycled clustering for redundancy coded data storage systems
US10061668B1 (en) 2016-03-28 2018-08-28 Amazon Technologies, Inc. Local storage clustering for redundancy coded data storage system
US20180060133A1 (en) 2016-09-01 2018-03-01 Amazon Technologies, Inc. Event-driven resource pool management
US11048701B2 (en) 2016-09-13 2021-06-29 International Business Machines Corporation Query optimization in hybrid DBMS
CN107818118B (zh) * 2016-09-14 2019-04-30 北京百度网讯科技有限公司 数据存储方法和装置
US11137980B1 (en) 2016-09-27 2021-10-05 Amazon Technologies, Inc. Monotonic time-based data storage
US10789295B2 (en) 2016-09-28 2020-09-29 Microsoft Technology Licensing, Llc Pattern-based searching of log-based representations of graph databases
US11204895B1 (en) 2016-09-28 2021-12-21 Amazon Technologies, Inc. Data payload clustering for data storage systems
US10747764B1 (en) * 2016-09-28 2020-08-18 Amazon Technologies, Inc. Index-based replica scale-out
US10496327B1 (en) 2016-09-28 2019-12-03 Amazon Technologies, Inc. Command parallelization for data storage systems
US11281624B1 (en) 2016-09-28 2022-03-22 Amazon Technologies, Inc. Client-based batching of data payload
US10810157B1 (en) 2016-09-28 2020-10-20 Amazon Technologies, Inc. Command aggregation for data storage operations
US10437790B1 (en) 2016-09-28 2019-10-08 Amazon Technologies, Inc. Contextual optimization for data storage systems
US11126623B1 (en) 2016-09-28 2021-09-21 Amazon Technologies, Inc. Index-based replica scale-out
US10657097B1 (en) 2016-09-28 2020-05-19 Amazon Technologies, Inc. Data payload aggregation for data storage systems
US10614239B2 (en) 2016-09-30 2020-04-07 Amazon Technologies, Inc. Immutable cryptographically secured ledger-backed databases
US10754859B2 (en) 2016-10-28 2020-08-25 Microsoft Technology Licensing, Llc Encoding edges in graph databases
US10296764B1 (en) 2016-11-18 2019-05-21 Amazon Technologies, Inc. Verifiable cryptographically secured ledgers for human resource systems
US11269888B1 (en) 2016-11-28 2022-03-08 Amazon Technologies, Inc. Archival data storage for structured data
US10860579B2 (en) * 2017-01-30 2020-12-08 Sap Se Query planning and execution with reusable memory stack
US10445321B2 (en) 2017-02-21 2019-10-15 Microsoft Technology Licensing, Llc Multi-tenant distribution of graph database caches
US10628492B2 (en) 2017-07-20 2020-04-21 Microsoft Technology Licensing, Llc Distributed graph database writes
US10887235B2 (en) * 2017-08-24 2021-01-05 Google Llc Method of executing a tuple graph program across a network
US10642582B2 (en) 2017-08-24 2020-05-05 Google Llc System of type inference for tuple graph programs method of executing a tuple graph program across a network
US10002154B1 (en) 2017-08-24 2018-06-19 Illumon Llc Computer data system data source having an update propagation graph with feedback cyclicality
US10949252B1 (en) * 2018-02-13 2021-03-16 Amazon Technologies, Inc. Benchmarking machine learning models via performance feedback
WO2019209674A1 (en) * 2018-04-25 2019-10-31 President And Fellows Of Harvard College Systems and methods for designing data structures and synthesizing costs
US10896066B2 (en) 2018-12-13 2021-01-19 Shopify Inc. Rate limiting in query processing based on computation cost
US20200349161A1 (en) * 2019-04-30 2020-11-05 Microsoft Technology Licensing, Llc Learned resource consumption model for optimizing big data queries
US11567995B2 (en) 2019-07-26 2023-01-31 Microsoft Technology Licensing, Llc Branch threading in graph databases
US11194773B2 (en) 2019-09-12 2021-12-07 Oracle International Corporation Integration of existing databases into a sharding environment
US11556539B2 (en) * 2019-09-16 2023-01-17 Oracle International Corporation Predicting and halting runaway queries
US10860609B1 (en) * 2020-03-25 2020-12-08 Snowflake Inc. Distributed stop operator for query processing
US11429610B2 (en) * 2020-04-01 2022-08-30 Sap Se Scaled-out query execution engine
US20210312724A1 (en) * 2020-04-01 2021-10-07 Autonomic, LLC Cloud-Based Real-Time Vehicle Data Sharing
US11693858B2 (en) 2020-07-17 2023-07-04 International Business Machines Corporation Access path optimization
CN111625696B (zh) * 2020-07-28 2021-01-29 北京升鑫网络科技有限公司 多源数据分析引擎的分布式调度方法、计算节点及系统

Family Cites Families (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2525947B2 (ja) 1990-08-31 1996-08-21 富士通株式会社 グロ―バルインデックス処理方式
US6076174A (en) 1998-02-19 2000-06-13 United States Of America Scheduling framework for a heterogeneous computer network
US6401083B1 (en) * 1999-03-18 2002-06-04 Oracle Corporation Method and mechanism for associating properties with objects and instances
US6363371B1 (en) 1999-06-29 2002-03-26 Microsoft Corporation Identifying essential statistics for query optimization for databases
JP2001331485A (ja) * 2000-05-22 2001-11-30 Mitsubishi Electric Corp 分散データベース演算処理装置
US6917937B1 (en) 2000-11-01 2005-07-12 Sas Institute Inc. Server-side object filtering
US6732085B1 (en) * 2001-05-31 2004-05-04 Oracle International Corporation Method and system for sample size determination for database optimizers
JP4031947B2 (ja) 2002-04-22 2008-01-09 株式会社リコー 異種データベース統合システムにおける問い合わせ最適化処理装置、問い合わせ最適化処理方法、その方法をコンピュータに実行させるプログラムおよびプログラムを記録した記録媒体
US7617203B2 (en) * 2003-08-01 2009-11-10 Yahoo! Inc Listings optimization using a plurality of data sources
US7130838B2 (en) * 2003-09-11 2006-10-31 International Business Machines Corporation Query optimization via a partitioned environment
US7730012B2 (en) * 2004-06-25 2010-06-01 Apple Inc. Methods and systems for managing data
US8346761B2 (en) 2004-08-05 2013-01-01 International Business Machines Corporation Method and system for data mining for automatic query optimization
EP1851662A2 (en) * 2005-02-24 2007-11-07 Xeround Systems Ltd. Method and apparatus for distributed data management in a switching network
US7860858B2 (en) * 2006-01-10 2010-12-28 Teradata Us, Inc. Closed-loop predicate analysis
US20070239661A1 (en) * 2006-03-28 2007-10-11 Sun Microsystems, Inc. Systems and methods for a distributed in-memory database and distributed cache
US7877373B2 (en) * 2006-06-30 2011-01-25 Oracle International Corporation Executing alternative plans for a SQL statement
JP5068062B2 (ja) 2006-10-30 2012-11-07 インターナショナル・ビジネス・マシーンズ・コーポレーション データベースを統合するためのシステム、方法、およびプログラム
US20080195577A1 (en) * 2007-02-09 2008-08-14 Wei Fan Automatically and adaptively determining execution plans for queries with parameter markers
JP2008243075A (ja) * 2007-03-28 2008-10-09 Toshiba Corp 構造化文書管理装置及び方法
US8166021B1 (en) 2007-03-30 2012-04-24 Google Inc. Query phrasification
US7925655B1 (en) * 2007-03-30 2011-04-12 Google Inc. Query scheduling using hierarchical tiers of index servers
US7945576B2 (en) * 2007-05-29 2011-05-17 Microsoft Corporation Location recognition using informative feature vocabulary trees
US8521867B2 (en) * 2007-10-20 2013-08-27 Oracle International Corporation Support for incrementally processing user defined aggregations in a data stream management system
US7882087B2 (en) 2008-01-15 2011-02-01 At&T Intellectual Property I, L.P. Complex dependencies for efficient data warehouse updates
US9189047B2 (en) * 2008-05-08 2015-11-17 International Business Machines Corporation Organizing databases for energy efficiency
US20090287666A1 (en) 2008-05-13 2009-11-19 International Business Machines Corporation Partitioning of measures of an olap cube using static and dynamic criteria
US7970755B2 (en) 2008-07-02 2011-06-28 Oracle Int'l. Corp. Test execution of user SQL in database server code
US8135702B2 (en) * 2008-10-27 2012-03-13 Teradata Us, Inc. Eliminating unnecessary statistics collections for query optimization
US8108382B1 (en) * 2008-12-29 2012-01-31 Teradata Us, Inc. Optimizing the execution of a query in a multi-database system
US8805852B2 (en) 2009-03-02 2014-08-12 International Business Machines Corporation Automatic query execution plan management and performance stabilization for workloads
US8185519B2 (en) 2009-03-14 2012-05-22 Microsoft Corporation Techniques for exact cardinality query optimization
US8380738B2 (en) * 2009-03-17 2013-02-19 Nec Laboratories America, Inc. System and methods for database distribution and querying over key-based scalable storage
US8209664B2 (en) 2009-03-18 2012-06-26 Microsoft Corporation High level programming extensions for distributed data parallel processing
KR101083563B1 (ko) * 2009-04-24 2011-11-14 엔에이치엔비즈니스플랫폼 주식회사 데이터베이스 관리 방법 및 시스템
US8745036B2 (en) * 2009-07-07 2014-06-03 Teradata Us, Inc. System, method, and computer-readable medium for enhancing query execution by an optimizer in a database system
US8392398B2 (en) 2009-07-29 2013-03-05 International Business Machines Corporation Query optimization over graph data streams
US8166022B2 (en) 2009-08-18 2012-04-24 International Business Machines Corporation System, method, and apparatus for parallelizing query optimization
US8326799B2 (en) * 2009-10-09 2012-12-04 Seagate Technology Llc Data distribution in systems with multiple storage entities
JP5507962B2 (ja) * 2009-11-05 2014-05-28 キヤノン株式会社 情報処理装置及びその制御方法、プログラム
US8135667B2 (en) * 2009-12-31 2012-03-13 Teradata Us, Inc. System, method, and computer-readable medium that facilitate in-database analytics with supervised data discretization
EP2531969A4 (en) * 2010-02-01 2013-12-04 Jumptap Inc INTEGRATED ADVERTISING SYSTEM
US10838957B2 (en) 2010-06-17 2020-11-17 Microsoft Technology Licensing, Llc Slicing relational queries using spool operators
US8903805B2 (en) * 2010-08-20 2014-12-02 Oracle International Corporation Method and system for performing query optimization using a hybrid execution plan
US9336271B2 (en) * 2010-10-11 2016-05-10 Hewlett Packard Enterprise Development Lp Optimizing a query
US8429151B2 (en) * 2010-11-22 2013-04-23 Ianywhere Solutions, Inc. Highly adaptable query optimizer search space generation process
US8478743B2 (en) 2010-12-23 2013-07-02 Microsoft Corporation Asynchronous transfer of state information between continuous query plans
US9613092B2 (en) 2010-12-31 2017-04-04 Microsoft Technology Licensing, Llc Allocation of tenants to database services
US8930344B2 (en) * 2011-02-04 2015-01-06 Hewlett-Packard Development Company, L.P. Systems and methods for holding a query
US9036925B2 (en) * 2011-04-14 2015-05-19 Qualcomm Incorporated Robust feature matching for visual search
US20120330924A1 (en) 2011-06-21 2012-12-27 Salesforce.Com, Inc. Method and system for querying an on demand database service
US8805117B2 (en) * 2011-07-19 2014-08-12 Fuji Xerox Co., Ltd. Methods for improving image search in large-scale databases
CN102968420B (zh) * 2011-08-31 2016-05-04 国际商业机器公司 数据库查询的方法和系统
US20130151421A1 (en) * 2011-12-08 2013-06-13 Oracle International Corporation Real-time project progress entry: applying project team member-entered progress immediately to the project plan
US8676772B2 (en) 2011-12-09 2014-03-18 Telduráðgevin Sp/f Systems and methods for improving database performance
US20130151504A1 (en) 2011-12-09 2013-06-13 Microsoft Corporation Query progress estimation
US20130297586A1 (en) * 2012-05-07 2013-11-07 International Business Machines Corporation Optimizing queries using predicate mappers
US8533182B1 (en) * 2012-05-31 2013-09-10 David P. Charboneau Apparatuses, systems, and methods for efficient graph pattern matching and querying
US8745066B2 (en) * 2012-08-13 2014-06-03 Visier Solutions, Inc. Apparatus, systems and methods for dynamic on-demand context sensitive cluster analysis
US9461876B2 (en) 2012-08-29 2016-10-04 Loci System and method for fuzzy concept mapping, voting ontology crowd sourcing, and technology prediction
US9317554B2 (en) * 2012-09-26 2016-04-19 Microsoft Technology Licensing, Llc SQL generation for assert, update and delete relational trees
US9355127B2 (en) * 2012-10-12 2016-05-31 International Business Machines Corporation Functionality of decomposition data skew in asymmetric massively parallel processing databases
US9239741B2 (en) * 2012-10-16 2016-01-19 Futurewei Technologies, Inc. System and method for flexible distributed massively parallel processing (MPP)
US20140114952A1 (en) * 2012-10-23 2014-04-24 Microsoft Corporation Optimizing queries of parallel databases
US9195701B2 (en) * 2012-10-29 2015-11-24 Futurewei Technologies, Inc. System and method for flexible distributed massively parallel processing (MPP) database
US9229983B2 (en) 2012-11-30 2016-01-05 Amazon Technologies, Inc. System-wide query optimization
US10025822B2 (en) 2015-05-29 2018-07-17 Oracle International Corporation Optimizing execution plans for in-memory-aware joins
US20180060133A1 (en) 2016-09-01 2018-03-01 Amazon Technologies, Inc. Event-driven resource pool management
US10783143B2 (en) 2017-10-24 2020-09-22 Oracle International Corporation Computing columnar information during join enumeration

Also Published As

Publication number Publication date
CN104871154B (zh) 2018-12-14
US20140156632A1 (en) 2014-06-05
EP2926274A2 (en) 2015-10-07
CA2892599A1 (en) 2014-06-05
WO2014085677A2 (en) 2014-06-05
US11249997B1 (en) 2022-02-15
CN104871154A (zh) 2015-08-26
JP2016500454A (ja) 2016-01-12
US11113280B1 (en) 2021-09-07
JP2018077868A (ja) 2018-05-17
EP2926274A4 (en) 2016-07-13
CA2990130A1 (en) 2014-06-05
WO2014085677A3 (en) 2014-07-24
CA2990130C (en) 2022-09-13
CA3168966A1 (en) 2014-06-05
CA2892599C (en) 2018-01-02
US9229983B2 (en) 2016-01-05
JP6559215B2 (ja) 2019-08-14

Similar Documents

Publication Publication Date Title
JP6559215B2 (ja) システム、データベースクエリを実行するための方法及びコンピュータに読み取り可能な記録媒体
US20230216914A1 (en) Automated server workload management using machine learning
US9361344B2 (en) System and method for distributed database query engines
US8554944B2 (en) Mechanism for supporting user content feeds
US20130232310A1 (en) Energy efficiency in a distributed storage system
US20200219028A1 (en) Systems, methods, and media for distributing database queries across a metered virtual network
CN106233263A (zh) 缓存系统及方法
US8768979B2 (en) In-memory data grid hash scheme optimization
CN105683928B (zh) 用于数据高速缓存策略的方法、服务器和存储器设备
Li et al. Scalable replica selection based on node service capability for improving data access performance in edge computing environment
Wan et al. SSD-optimized workload placement with adaptive learning and classification in HPC environments
CN110196863B (zh) 数据处理方法、装置、计算设备及存储介质
CA2884091C (en) System and method for load distribution in a network
Semmler et al. Online replication strategies for distributed data stores
Ibrahim et al. Efficient Cache Utilization via Model-aware Data Placement for Recommendation Models
CN105518664A (zh) 管理数据库节点
Hsiao et al. Reducing mapreduce abstraction costs for text-centric applications
Kanbargi et al. Cache utilization for enhancing analyzation of big-data & increasing the performance of hadoop
US20230153303A1 (en) Database Query Optimization Via Parameter-Sensitive Plan Selection
Xue et al. Dual-Scheme Block Management to Trade Off Storage Overhead, Performance and Reliability
Verbowski Optimization strategies for large scale distributed systems
Xiao et al. Co-located Compute and Binary File Storage in Data-Intensive Computing
Chandra et al. Query optimization in web search engines using dynamic frequency modulation
Orazov Data locality aware partitioning schemes for large-scale data stores
Ananthanarayanan Optimizing parallel job performance in data-intensive clusters

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161116

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20170209

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20170209

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170214

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170807

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171101

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171208

R150 Certificate of patent or registration of utility model

Ref document number: 6259465

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250