(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-07-29
(45)【発行日】2025-08-06
(54)【発明の名称】サーバレス・マルチテナント・クラウド・サービスに対するシャドー実験
(51)【国際特許分類】
G06F 16/21 20190101AFI20250730BHJP
G06F 9/50 20060101ALI20250730BHJP
【FI】
G06F16/21
G06F9/50 120Z
(21)【出願番号】P 2023507272
(86)(22)【出願日】2021-08-02
(86)【国際出願番号】 IB2021057031
(87)【国際公開番号】W WO2022029593
(87)【国際公開日】2022-02-10
【審査請求日】2024-01-23
(32)【優先日】2020-08-04
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】モーラー、グレゴール
(72)【発明者】
【氏名】ケート、オリバー
(72)【発明者】
【氏名】クスマウル、ティモ
(72)【発明者】
【氏名】ハイデ、マイケル
(72)【発明者】
【氏名】シュタインバッハ、トルステン
(72)【発明者】
【氏名】エッカート、アレクサンダー
(72)【発明者】
【氏名】ヴィタル、サチン リンガダハリ
(72)【発明者】
【氏名】ベーレント、マイケル
(72)【発明者】
【氏名】コーラー、マヌエラ
【審査官】早川 学
(56)【参考文献】
【文献】特開平10-214213(JP,A)
【文献】特開2005-327138(JP,A)
【文献】特開平07-244675(JP,A)
【文献】米国特許出願公開第2020/0125545(US,A1)
【文献】中国特許出願公開第103853786(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
G06F 9/50
(57)【特許請求の範囲】
【請求項1】
コンピュータの情報処理による、マルチテナント・クラウド・サービスにおけるクエリ実行のためのコンピュータ実装方法であって、前記コンピュータ実装方法が、
1つまたは複数のプロセッサによって、サービス・クエリに対するカテゴリ・クラスを決定することと、
1つまたは複数のプロセッサによって、前記決定されたカテゴリ・クラスのうちの1つから選択された数のサービス・クエリをシャドー・クエリ・エンジンに実行のために送信することであって、前記カテゴリにより分類されたサービス・クエリのそれぞれのサービス・クエリが、前記シャドー・クエリ・エンジンに対する構成パラメータ値の異なるセットを含む、前記送信することと、
1つまたは複数のプロセッサによって、前記シャドー・クエリ・エンジンで実行され
る1つのカテゴリ・クラスの前記選択された数のサービス・クエリに対するメタデータを記録することであって、前記メタデータがパフォーマンス・データと、クエリ・カテゴリ・クラスと、関連構成パラメータ値の少なくとも1つの値とを含む、前記記録することと、
1つまたは複数のプロセッサによって、前記パフォーマンス・データと、前記クエリ・カテゴリ・クラスと、前記関連構成パラメータ値の少なくとも1つの値との間の相関を決定することと、
1つまたは複数のプロセッサによって、前記決定された相関から、前記1つのカテゴリ・クラスの前記選択された数のサービス・クエリを実行するための最適構成パラメータを含む最適構成パラメータ値を決定することと
を含む、コンピュータ実装方法。
【請求項2】
1つまたは複数のプロセッサによって、前記最適構成パラメータ値に基づく構成を、前記シャドー・クエリ・エンジンにおける同じカテゴリ・クラスのサービス・クエリの拡張セットに適用することと、
1つまたは複数のプロセッサによって、前記適用された構成を検証することと、
ポジティブな検証結果に応答して、1つまたは複数のプロセッサによって、前記最適構成パラメータ値を有する前記構成を用いて、前記シャドー・クエリ・エンジンと同一の特徴を有するクエリ・エンジンの前記同じカテゴリ・クラスの将来のクエリを実行することと
をさらに含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記
最適構成パラメータ
値が、メモリ・サイズ、バッファ・サイズ、シリアライゼーション・オプション、圧縮パラメータ値、ネットワーク化パラメータ値、スケジューリング固有値、および実行オプション値からなる群より選択される少なくとも1つを含む、請求項1または2に記載のコンピュータ実装方法。
【請求項4】
前記サービス・クエリの各々がデータベース・クエリに関係する、請求項1~3のいずれか一項に記載のコンピュータ実装方法。
【請求項5】
前記1つのカテゴリ・クラスの前記選択された数のサービス・クエリが、ユーザの1つのグループから生じる、請求項1~4のいずれか一項に記載のコンピュータ実装方法。
【請求項6】
前記サービス・クエリの拡張セットがユーザの2つ以上のグループから生じる、請求項2に記載のコンピュータ実装方法。
【請求項7】
前記カテゴリ・クラスがデータ定義動作に関係する、請求項1~6のうち一項に記載のコンピュータ実装方法。
【請求項8】
1つまたは複数のプロセッサによって、オーバープロビジョニング・クラウド・コンピューティング環境におけるスペア・クエリ・エンジンのセットから前記シャドー・クエリ・エンジンを選択することをさらに含む、請求項7に記載のコンピュータ実装方法。
【請求項9】
前記最適構成パラメータ値が、待ち時間、スループット、およびリソース使用からなる群より選択される少なくとも1つの動作制限を反映する、請求項1~8のいずれか一項に記載のコンピュータ実装方法。
【請求項10】
1つまたは複数のプロセッサによって、前記クエリ・エンジンに対する履歴クエリのセットに機械学習ベースのシステムを適用することによって前記カテゴリ・クラスを決定することをさらに含む、請求項1~9のいずれか一項に記載のコンピュータ実装方法。
【請求項11】
マルチテナント・クラウド・サービスにおけるクエリ実行のためのコンピュータ・プログラムであって、前記コンピュータ・プログラムは、コンピュータ・システムに対して、請求項1~10のいずれか1項に記載のコンピュータ実装方法を実行させる、コンピュータ・プログラム。
【請求項12】
マルチテナント・クラウド・サービスにおけるクエリ実行のためのコンピュータ・システムであって、前記コンピュータ・システムが、
サービス・クエリに対するカテゴリ・クラスを決定すること、
前記決定されたカテゴリ・クラスのうちの1つから選択された数のサービス・クエリをシャドー・クエリ・エンジンに実行のために送信するためのプログラム命令であって、前記カテゴリにより分類されたサービス・クエリのそれぞれのサービス・クエリが、前記シャドー・クエリ・エンジンに対する構成パラメータ値の異なるセットを含む、前記送信すること、
前記シャドー・クエリ・エンジンで実行され
る1つのカテゴリ・クラスの前記選択された数のサービス・クエリに対するメタデータを記録するため、前記メタデータがパフォーマンス・データと、クエリ・カテゴリ・クラスと、関連構成パラメータ値の少なくとも1つの値とを含む、前記記録すること、
前記パフォーマンス・データと、前記クエリ・カテゴリ・クラスと、前記関連構成パラメータ値の少なくとも1つの値との間の相関を決定すること、
前記決定された相関から、前記1つのカテゴリ・クラスの前記選択された数のサービス・クエリを実行するための最適構成パラメータを含む最適構成パラメータ値を決定すること
を含む動作を実行する、コンピュータ・システム。
【請求項13】
前記最適構成パラメータ値に基づく構成を、前記シャドー・クエリ・エンジンにおける同じカテゴリ・クラスのサービス・クエリの拡張セットに適用することと、
前記適用された構成を検証することと、
ポジティブな検証結果に応答して、前記最適構成パラメータ値を有する前記構成を用いて、前記シャドー・クエリ・エンジンと同一の特徴を有するクエリ・エンジンの前記同じカテゴリ・クラスの将来のクエリを実行することと
をさらに含む、請求項12に記載のコンピュータ・システム。
【請求項14】
前記
最適構成パラメータ
値が、メモリ・サイズ、バッファ・サイズ、シリアライゼーション・オプション、圧縮パラメータ値、ネットワーク化パラメータ値、スケジューリング固有値、および実行オプション値からなる群より選択される少なくとも1つを含む、請求項12または
13に記載のコンピュータ・システム。
【請求項15】
前記サービス・クエリの各々がデータベース・クエリに関係する、請求項12~14のうち一項に記載のコンピュータ・システム。
【請求項16】
前記1つのカテゴリ・クラスの前記選択された数のサービス・クエリが、ユーザの1つのグループから生じる、請求項12~15のうち一項に記載のコンピュータ・システム。
【請求項17】
前記最適構成パラメータ値が、待ち時間、スループット、およびリソース使用からなる群より選択される少なくとも1つの動作制限を反映する、請求項12~16のうち一項に記載のコンピュータ・システム。
【請求項18】
請求項11に記載のコンピュータ・プログラムを記録した、コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は一般的にクエリ最適化の分野に関し、より具体的にはマルチテナント・クラウド・サービスにおけるクエリ実行の最適化に関する。
【背景技術】
【0002】
情報検索(IR:Information retrieval)は、情報システム・リソースのコレクションから情報ニーズに関係するリソースを得るアクティビティである。検索は、全文インデックス作成またはその他のコンテンツ・ベースのインデックス作成に基づき得る。情報検索は、文書内の情報の検索、文書自体の検索に加えて、データを記述するメタデータの検索、およびテキスト、画像、または音声のデータベースの検索の科学である。情報検索プロセスは、ユーザがシステムにクエリを入力したときに開始される。クエリは、たとえばウェブ・サーチ・エンジンにおける検索文字列などの、情報ニーズの公式ステートメントである。情報検索において、クエリはコレクション内の単一のオブジェクトを一意に識別しない。代わりに、いくつかのオブジェクトが、おそらくは異なる程度の関連性を伴ってクエリにマッチすることがある。
【0003】
クラウド・サービスは、会社独自のオンプレミス・サーバから提供されるのではなく、クラウド・コンピューティング・プロバイダのサーバからインターネットを介してオンデマンドでユーザに利用可能にされる任意のサービスである。クラウド・サービスは、アプリケーション、リソース、およびサービスへの容易でスケーラブルなアクセスを提供するように設計されており、クラウド・サービス・プロバイダによって完全に管理される。クラウド・ストレージはコンピュータ・データ・ストレージのモデルであり、そこではデジタル・データが論理プールに記憶されている。物理ストレージは(ときには複数の場所の)複数のサーバにわたっており、物理的環境は通常ホスティング会社が所有および管理している。これらのクラウド・ストレージ・プロバイダは、データを利用可能かつアクセス可能に保ち、物理的環境が保護されて動作し続けるようにすることを担う。人々および組織はプロバイダから記憶容量を購入またはリースして、ユーザ、組織、またはアプリケーションのデータを記憶させる。
【発明の概要】
【0004】
本発明の態様は、マルチテナント・クラウド・サービスにおけるクエリ実行のための方法、コンピュータ・プログラム製品、およびシステムを開示する。この方法は、サービス・クエリに対するカテゴリ・クラスを決定する1つまたは複数のプロセッサを含む。この方法は、決定されたカテゴリ・クラスのうちの1つから選択された数のサービス・クエリをシャドー・クエリ・エンジンに実行のために送信する1つまたは複数のプロセッサをさらに含む。カテゴリにより分類されたサービス・クエリのそれぞれのサービス・クエリは、シャドー・クエリ・エンジンに対する構成パラメータ値の異なるセットを含む。この方法は、前記シャドー・クエリ・エンジンで実行される1つのカテゴリ・クラスの選択された数のサービス・クエリに対するメタデータを記録する1つまたは複数のプロセッサをさらに含む。メタデータはパフォーマンス・データと、クエリ・カテゴリ・クラスと、関連構成パラメータ値の少なくとも1つの値とを含む。この方法は、パフォーマンス・データと、クエリ・カテゴリ・クラスと、関連構成パラメータ値の少なくとも1つの値との間の相関を決定する1つまたは複数のプロセッサをさらに含む。この方法は、決定された相関から、1つのカテゴリ・クラスの選択された数のサービス・クエリを実行するための最適構成パラメータを含む最適構成パラメータ値を決定する1つまたは複数のプロセッサをさらに含む。
【0005】
別の実施形態において、この方法は、最適構成パラメータ値に基づく構成を、シャドー・クエリ・エンジンにおける同じカテゴリ・クラスのサービス・クエリの拡張セットに適用する1つまたは複数のプロセッサをさらに含む。この方法は、適用された構成を検証する1つまたは複数のプロセッサをさらに含む。ポジティブな検証結果に応答して、この方法は、最適構成パラメータ値を有する構成を用いて、シャドー・クエリ・エンジンと同一の特徴を有するクエリ・エンジンの同じカテゴリ・クラスの将来のクエリを実行する1つまたは複数のプロセッサをさらに含む。
【0006】
なお、本発明の実施形態は異なる主題を参照して説明される。特に、いくつかの実施形態は方法タイプの請求項を参照して説明されるのに対し、他の実施形態は装置タイプの請求項を参照して説明される。しかし、当業者は上記および以下の説明から、別様に通知されない限り、1つのタイプの主題に属する特徴の任意の組み合わせに加えて、異なる主題に関する特徴、特に方法タイプの請求項の特徴と装置タイプの請求項の特徴との任意の組み合わせもこの文書において開示されるものと考えられることを推測するだろう。
【0007】
本発明の上記で定義された態様およびさらなる態様は、以後に記載される実施形態の例から明らかであり、実施形態の例を参照して説明されるが、本発明はそれに限定されない。以下の図面を参照して、本発明の好ましい実施形態を単なる例として説明することとする。
【図面の簡単な説明】
【0008】
【
図1】本発明の実施形態による、マルチテナント・クラウド・サービスにおけるクエリ実行の最適化のための本発明のコンピュータ実装方法の実施形態を示すブロック図である。
【
図2】本発明の実施形態による、アプリケーション・プログラムとクエリ・エンジンとの間の一般的なセットアップを示すブロック図である。
【
図3】本発明の実施形態による、主要な構成要素を示す、提案される本発明のコンセプトの実施形態を示すブロック図である。
【
図4】本発明の実施形態による、マルチテナント・クラウド・サービスにおけるクエリ実行の最適化のためのクエリ最適化システムの実施形態を示すブロック図である。
【
図5】本発明の実施形態による、
図4によるクエリ最適化システムを含むコンピュータ・システムの実施形態を示す図である。
【
図6】本発明の実施形態によるクラウド・コンピューティング環境を示す図である。
【
図7】本発明の実施形態による抽象化モデル・レイヤを示す図である。
【発明を実施するための形態】
【0009】
この説明のコンテキストにおいては、以下の慣例、用語、もしくは表現、またはその組み合わせが用いられてもよい。
【0010】
「マルチテナント・クラウド・サービス」という用語は、実行のために呼び出されたときにデータを受信し、通常はクラウド・コンピューティング環境における呼び出したシステムに結果を送り返すプログラムを示してもよい。クラウド・コンピューティング環境の詳細な説明が以下に見出され得る。いずれの場合にも、マルチテナント・クラウド・サービスは複数のユーザに対して利用可能にされてもよい。
【0011】
「サービス・クエリ」という用語は、第1のサービス(すなわち、第1の実行される部分プログラム)から別のサービス(すなわち、たとえばクエリ・エンジン・サービスなどの別の実行される部分プログラム)への呼び出しを示してもよく、それは第2のサービスがアクセス可能なデータに対するクエリのためのパラメータ値を含む。クエリを実行した後、第2のサービスは呼び出したサービス(すなわち、第1のサービス)に検索データを戻してもよい。しかしこの一般的な規則は、シャドー・クエリ・エンジンが呼び出された場合に破られることがある。ここでは、関連サービスに対する構成パラメータに関する最適化プロセスのためだけにクエリが実行されてもよい。(シャドー・クエリ・エンジンの代わりに)(メイン)クエリ・エンジンへのサービス呼び出しを開始した元のサービスに検索データを送り返す必要はない。
【0012】
「シャドー・クエリ・エンジン」という用語は、生産的に使用されるクエリ・エンジンか、またはデータベースもしくは別のデータ・ストレージからのデータ検索のためのクエリ・サービスと同様に機能するマルチテナント・クラウド・コンピューティング環境中のサービスとして通常実現されるプログラムを示してもよい。特に、動作的に使用中の通常のクエリ・エンジンと同じタイプの構成および実行パラメータによって呼び出されたときに、シャドー・クエリ・エンジンが構成可能であってもよい。よってシャドー・クエリ・エンジンは、動作的に使用中のクエリ・エンジンのコピーと考えられてもよい。特定の実施形態において、クエリ・エンジンおよびシャドー・クエリ・エンジンは、ハードウェアにおいて少なくとも部分的に(または完全に)実現されてもよい。
【0013】
「オーバープロビジョニング・クラウド・コンピューティング環境」という用語は、クラウド・コンピューティング環境が多数のユーザおよびテナントによって通常要求され得るものよりも多くのコンピューティングおよびサービス・リソースを提供するように実現および構成されてもよいことを示してもよい。1つまたは複数のテナントのピーク要求時間に応答時間の低下を起こさないように、過剰な容量が必要とされることがある。
【0014】
「機械学習ベースのシステム」という用語は、人工知能のパラダイムの教示によって動作するシステムまたはサービスを示してもよい。このシステムは手続き型の命令に従うようにプログラムされておらず、十分に受容および理解されたコンセプトによる実験アプローチによる学習に基づいて、入来するデータにどのように応答するかを学習する。それによって、本明細書で提案されるコンセプトの実施形態の一部として、教師付き、半教師付き、および教師なし学習コンセプトが使用されてもよい。この学習コンセプトは、特に履歴クエリをクエリのクラスに分類するための目下の分類タスクに適用されてもよい。たとえば、使用するクラスの最大数は、機械学習サービスに対する出発パラメータとなり得る。
【0015】
「Spark」という用語、特にApache(登録商標)財団(Foundation)のApache Spark(商標)は、公知のオープンソース分散型汎用目的クラスタ・コンピューティング・フレームワークを示してもよい。Spark(商標)は、暗黙的なデータ並列性およびフォールト・トレランスを有するクラスタ全体をプログラムするためのインターフェースを提供する。
【0016】
「クラウド・コンピューティング」という用語およびそれと同等の「クラウド・サービス環境」という用語は、このコンテキストにおいて、最小限の管理努力またはサービス・プロバイダのインタラクションによって迅速にプロビジョニングおよびリリースされ得る構成可能なコンピューティング・リソース(例えば、ネットワーク、サーバ、ストレージ、アプリケーション、およびサービス)の共有プールへの便利なオンデマンド・ネットワーク・アクセスを可能にするためのモデルとして解釈されてもよい。クラウド・モデルは可用性を促進し、少なくとも5つの必須の特性と、3つのサービス・モデルと、4つの配置モデルとからなる。
【0017】
なお、クラウド・ソフトウェアは、ステートレス性(例外を有する)、低結合性、モジュラリティ、およびセマンティックな相互運用性に焦点を合わせたサービス指向型であることによって、クラウド・パラダイムを十分に利用する。
【0018】
マルチテナント・クラウド・サービスにおけるクエリ実行の最適化のための、提案されるコンピュータ実装方法は、複数の利点、寄与、および技術効果を提供してもよい。
【0019】
企業のストレージ・システムにおける構造化、半構造化、および非構造化データの量が増加し続けていることによって、効果的なデータ管理およびデータ検索ツールに対する要求が増加し続けていることを本発明の実施形態は認識している。よって、既存のデータ・レイクから価値を生成するために、より一層多くのデータを分析し、組み合わせて検索する必要がある。したがって、増加する複数のデータベースと、データに対するクエリの不釣り合いに大きな増加とが結果としてもたらされる。非常にしばしば、企業データは少なくとも部分的にクラウド・ストレージ・システムに記憶されて、クラウド・コンピューティング環境で動作するサービスによってアクセスされる。しかし、社内に配置されても、クラウド・サービスとして配置されても、データ検索アプリケーションおよびサービスはより一層多くの計算リソースを必要とする。
【0020】
したがって、プログラマは効率的なデータ検索およびクエリ技術を探し求めるようになっており、クエリ・エンジンがクエリ・サービスとしてしばしば配置される大きなクラウド・コンピューティング環境にもそれが当てはまることを、本発明の実施形態はさらに認識している。特にリレーショナル・データベースは、行または列指向のいずれも、数十年にわたってクエリ・パフォーマンスのために最適化されてきた。現在は、データベース・クエリの応答時間を減少させるために、インメモリ・コンピューティングおよび増加し続けるキャッシング・システムが用いられている。よって、同量のクエリに対して必要とされる計算リソースを低減させることを助ける、さらに良好なクエリ技術の余地があり、必要ともされている。
【0021】
本発明の実施形態は、通常はサービスに基づくマルチテナント・クラウド・コンピューティング環境におけるクエリ・エンジンに対する構成パラメータ設定の持続的な最適化を可能にしてもよい。本発明の実施形態の例は、マルチテナント・クラスタ・システムにおいてピーク要求を乗り切るために通常利用可能であるが、通常のリソース消費期間中には用いられないスペア容量を用いて、妥当なリソース・コストで多数の構成変形を持続的に調査できる。
【0022】
したがって、本発明の実施形態は、異なる構成の挙動を変更し得るやり方を知ることなく複雑なシステムを最適化でき、これは既存の顧客のワークロードを損なわず、かつ通常配置されるクエリ・エンジンの典型的な応答時間およびリソース消費に負の影響を与えることもなく達成され得る。
【0023】
別の利点は、シャドー・クエリ・エンジンによるシャドー実行が同期して行われてもよいし、遅延されてもよい(すなわち、履歴クエリに基づいて最適化が行われてもよい)ことであり得る。しかしこうした場合には、遅延実行は、アクセス・トークン終了への対処および入力データ・セットの変更を含むことがある。
【0024】
以下に、関連するシステムにも適用可能なこの方法の追加の実施形態を説明する。この方法の1つの許容される実施形態によると、構成パラメータ、またはより正確には構成パラメータ値は、メモリ・サイズ、バッファ・サイズ、シリアライゼーション・オプション、圧縮パラメータ値、ネットワーク化パラメータ値、スケジューリング固有値、および実行オプション値の群より選択される少なくとも1つを含んでもよい。構成パラメータに関係する値はSpark(商標)固有のものであってもよく、最適化プロセスの後に、多様なチューニング・パラメータ値がシャドー・クエリ・エンジンおよび実際に使用されるクエリ・エンジンの機能に影響を与えることを可能にしてもよい。
【0025】
この方法の実施形態によると、サービス・クエリの各々はデータベース・クエリに関係していてもよい。多様なデータベースが使用されてもよい。たとえばリレーショナル・データベース、オブジェクト指向型データベース、半構造化データベース、コンテンツ管理システム、テキスト・サーチ・エンジン、非SQLデータベース(構造化クエリ言語(structured query language))、およびたとえばApache Solr(商標)(公知のオープンソース・サーチ・エンジン)、または別の公知のオープンソース・サーチ・エンジンなどのサービスである。よって、本明細書において提案されるコンセプトは、本発明のさまざまな実施形態に従って、自身の実行環境のパラメータ設定に影響されるほぼすべてのデータベースに適用されてもよい。
【0026】
この方法の有利な実施形態によると、ユーザの1つのグループから、1つのカテゴリ・クラスの選択された数のサービス・クエリが生じてもよい。ユーザの1つのグループは、マルチユーザ・クラウド・コンピューティング環境における1つのテナントに関係していてもよい。単一のテナントには同等のクエリが関係すると想定すると、クエリ最適化はテナントまたは顧客固有のものであってもよい。別の実施形態において、選択された数のサービス・クエリは、アプリケーションのグループのうちの選択されたアプリケーション、たとえば企業リソース管理システム、顧客関係管理システム、またはサプライ・チェーン管理システムなどに関係していてもよい。したがって、クエリ最適化はアプリケーションまたはアプリケーション・グループ固有のものであってもよい。
【0027】
この方法の別の有利な実施形態によると、サービス・クエリの拡張セットはユーザの2つ以上のグループから生じてもよい。よって、1つのテナントからのクエリ例から達成された最適化を他のテナントにも使用してもよく、すなわちユーザまたはアプリケーション・システムの他のグループにも使用してもよい。したがって、最適化した構成パラメータを決定するために同量のシステム・リソースを必要とすることなく、1人のユーザに対して到達されたクエリ最適化を他の顧客にも使用してもよい。
【0028】
この方法の実施形態の一例によると、カテゴリ・クラスは一般的にデータ定義動作に関係していてもよい。特に、データ定義動作はSQLステートメント、空間クエリ、時系列クエリ、データ結合動作、書込みアクセス、データ削除動作、およびアグリゲーション動作、ユニオン動作、データ・グループ化動作、順序付けステートメントまたは文字列動作であってもよいが、それに限定されない。さらに、この方法は任意のタイプのデータベースにおける任意のタイプのクエリに適用可能であってもよい。
【0029】
この方法の別の有利な実施形態によると、シャドー・クエリ・エンジンは、オーバープロビジョニング・クラウド・コンピューティング環境におけるスペア・クエリ・エンジンのセットから選択されてもよい。したがって、生産システムのパフォーマンス低下が測定できてもよく、アクティブ・ユーザには任意の応答時間の悪化が分からなくてもよい。通常、クラウド環境サービスの構築目的である柔軟性および弾力性を達成するために、クラウド・コンピューティング環境においていくつかの追加のリソースが利用可能であってもよい。
【0030】
この方法の実施形態の別の一例によると、最適構成パラメータ値は、待ち時間、スループット、リソース使用、およびその組み合わせの群より選択される少なくとも1つの動作制限を反映していてもよい(すなわち、その関数であってもよい)。よって、最適化に関する異なる優先順位がシステム管理者によって選択されてもよい。
【0031】
この方法の1つのオプションの実施形態によると、クエリ・エンジンに対する履歴クエリのセットに機械学習ベースのシステムを適用することによって、カテゴリ・クラスを決定してもよい。こうした特徴の目標は、良好な区別可能なクラスを識別することであってもよい。こうした分類タスクのために、教師付き、半教師付き、および教師なしの機械学習システムが使用されてもよい。
【0032】
この方法のさらなる実施形態によると、マルチテナント・クラウド・サービスはSpark(商標)ベースのコンピューティング環境であってもよい。Spark(商標)技術(例えば、任意のバージョンのApache(登録商標)Spark(商標))に基づくクラウド・コンピューティング環境は現在非常に一般的であり、よってこうしたクラウド・コンピューティング環境のユーザの大きなコミュニティが、本明細書で提案されるコンセプトの適用によって利益を得るだろう。しかし、本発明のコンセプトはApache Spark(商標)に限定されず、他のクラウド・コンピューティング・フレームワークにおいても実現されてもよい。
【0033】
以下に図面の詳細な説明が与えられる。図面におけるすべての命令は概略的なものである。最初に、本発明のさまざまな実施形態による、マルチテナント・クラウド・サービスにおけるクエリ実行の最適化のための本発明のコンピュータ実装方法の実施形態のブロック図が与えられる。その後、本発明のさまざまな実施形態による、マルチテナント・クラウド・サービスにおけるクエリ実行の最適化のためのクエリ最適化システムのさらなる実施形態および実施形態が説明される。
【0034】
図1は、本発明の実施形態による、マルチテナント・クラウド・サービスにおけるクエリ実行の最適化のためのコンピュータ実装方法100の実施形態の一例のブロック図を示す。
【0035】
ステップ102において、コンピュータ実装方法100は、サービス・クエリに対するカテゴリ・クラスを決定することを含む。次いでステップ104において、コンピュータ実装方法100は、クエリの実行のために、(特に、重複分離実験の)カテゴリ・クラスのうちの1つの選択された数のサービス・クエリをシャドー・クエリ・エンジンに送信することを含む。たとえば、カテゴリにより分類されたサービス・クエリの各々は、シャドー・クエリ・エンジンに対する構成パラメータ値の異なるセットを含む。カテゴリ・クラスのうちの1つの選択された数のサービス・クエリは、予め定められた期間に実行のために送信されるクエリの総数と比較すると同程度に低い。この期間は、クエリの結果を必要とする基礎的なアプリケーションのコンテキストにおいて選択されてもよい。この期間は数秒間から1時間(例えば、1秒、10秒、100秒、1分、10分、1時間)であり得るが、選択された時間内の合計クエリの約10%の範囲内であってもよい。加えて、シャドー・クエリ・エンジンは、クエリを実行するときに実際に使用されるクエリ・エンジンと特徴の点で等しいものとする。
【0036】
別の実施形態において、シャドー・クエリ・エンジンによって実行されるときにクラスの各クエリが異なる構成パラメータを使用する代わりに、シャドー・クエリ・エンジンが異なる構成パラメータを有する同じクエリも実行してもよく、これは次のステップでデータ・ボリュームが記録および分析されることを促進できる。他の実施形態においては、両方の代替形の混合が実行可能なオプションとみなされる。
【0037】
ステップ106において、コンピュータ実装方法100は、シャドー・クエリ・エンジンで実行される1つのカテゴリ・クラスの選択された数のサービス・クエリに対するメタデータを記録することをさらに含む。これによって、メタデータはパフォーマンス・データ、クエリ・カテゴリ・クラス、および関連構成パラメータ値の少なくとも1つの値を含む群から選択される少なくとも1つを含む。したがって、コンピュータ実装方法100は、シャドー・クエリ・エンジンの特徴および実際の機能を記述するデータを収集できる。
【0038】
ステップ108において、コンピュータ実装方法100は、相関を決定することも含む。さまざまな実施形態において、コンピュータ実装方法100は、パフォーマンス・データと、クエリ・カテゴリ・クラスと、関連構成パラメータ値の少なくとも1つの値との間の相関を決定する。次いでステップ110において、コンピュータ実装方法100は、相関から最適構成パラメータ値を決定することを含む。さまざまな実施形態において、最適構成パラメータ値は、カテゴリ・クラスのうちの1つの選択された数のサービス・クエリの実行のための最適構成パラメータを含む。
【0039】
ステップ112において、コンピュータ実装方法100は、実行のための初期の最適構成パラメータ値を有する構成をシャドー・クエリ・エンジンにおける同じクラスのサービス・クエリの拡張セットに適用して構成を検証することを含む。拡張セットは(マルチユーザ・クラウド・コンピューティング環境における1つのテナントの1人のユーザのみに由来し得る選択された数のクエリとは対照的に)、同じテナントの別々のユーザまたは異なるテナントのクエリの混合から生じ得る。実施形態の一例において、コンピュータ実装方法100は、本発明の実施形態による
図1のプロセスの第2の段階としてステップ112を開始する。
【0040】
ステップ114において、コンピュータ実装方法100は、(ステップ112からの)ポジティブな検証結果の際に、最適構成パラメータ値を有する構成を、(シャドー・クエリ・エンジンと対照的な)一次またはアクティブ・クエリ・エンジンの同じカテゴリ・クラスの将来のクエリの実行に使用することを含む。実施形態例において、クエリ・エンジンとシャドー・クエリ・エンジンとは同一の特徴を有する。この方法の結果として、クラウド・コンピューティング環境のアイドル時間中にシャドー・クエリ・エンジンによって決定された構成パラメータ設定に基づいて、アクティブ・クエリ・エンジンに対する最適化された実行パラメータ値設定を実現できる。
【0041】
図2は、本発明の実施形態による、アプリケーション・プログラム204とクエリ・エンジン210との間の一般的なセットアップ200のブロック図を示す。アプリケーション・プログラム204はユーザ・インターフェース202を有してもよい。ユーザ・インターフェース202は、異なるクラス206、208としてシンボル化されたクエリを継続的に生成でき、そのクエリは実行のためにクエリ・エンジン210に送信され、クエリの結果はデータ経路214によってシンボル化されるとおりにアプリケーション・プログラム204に戻される。
【0042】
さまざまな実施形態において、記載される機能は、複数のテナントおよびユーザにサービスするクラウド・コンピューティング環境におけるサービスとして実現される。追加の実施形態の一例において、調査実行環境(すなわち、構成もしくはリソースまたはその両方)は、テナントまたはユーザごとに維持され得ない。クエリ・エンジン210は、たとえばSpark(商標)コンピューティング・フレームワークを用いて実現されるものなどの、任意のタイプのエンジンであってもよい。別の態様においては、適切なクエリ・モデルに基づいてテナントによって異なるクエリ・エンジンが使用され得る。この態様においては、異なるシャドー・クエリ・エンジンも使用され得る。よって、定義されるシステムは、クエリ要求スパイクに反応するために何らかのオーバープロビジョニングを使用する。したがって、システムは通常、顧客(すなわち、テナント)にプロビジョニングされないことがあるいくらかのスペア容量を有してもよい。
【0043】
さらなる実施形態において、クエリ・エンジンは異なる構成パラメータ値設定(例えば、メモリ・サイズ、シリアライゼーション・オプションなど)によって呼び出されてもよく、これはクエリ・エンジン(単数または複数)のインスタンス(単数または複数)の実行特性(例えば、待ち時間、スループットなど)に影響し得る。いくつかのクエリは、メモリ不足などのエラーが起こり得るために特定の構成のみによって実行されてもよい。加えて、構成パラメータ設定はクエリ・サービスによって決定され、ユーザおよびさらなるテナントは決定しない。さらに、特定のクラスのクエリは、所与のシステム容量に対する最高のユーザ体験のために、異なる構成パラメータ設定を必要とする。
【0044】
よって本発明の実施形態は、最適化の問題を解決する必要性を認識している。新たに到着するクエリを実行するために、持続的に最適構成パラメータ値を選択する必要がある。システムが「アイドル」状態で提供されるように、構成値の適切なセットを選択する必要がある。よって本発明の実施形態は、変化の大きな空間を伴う複雑な最適化の問題を解決および探索する必要性を認識している。加えて、クエリ・エンジンを実行するチームは、クエリ・エンジンの内部に限定的な洞察しか有さないことがある。本発明の実施形態は、典型的な公知の解決策が、構成パラメータの固定された平均化セットを使用するオペレータの経験に依拠することを認識している。さらに、1つのクラスのクエリの選択されたセット212が(
図2の表現において)丸で囲まれており、これは
図3で役割を果たしている。
【0045】
図3は、本発明の実施形態による主要な構成要素を示す、提案される本発明のコンセプトの実施形態の一例300のブロック図を示す。
図2から繰り返されるのはクエリのクラス208であり、これに構成パラメータ値の選択されたセット304が関係付けられる。1つのクエリ・クラスのクエリの選択されたセット212を実行するシャドー・クエリ・エンジン302も示される。実施形態の例において、クエリ・エンジン302は特にユーザに隠されており、ユーザに結果を戻すための生産的環境にはない。実施形態の別の一例において、クエリの結果はさらなる処理に使用されないため、その結果はさらなる役割を果たさない。
【0046】
しかし、クエリ実行のメタデータ308は特定の記憶領域306に記録され、クエリおよび構成パラメータ値の選択されたセット304と関連付けて設定される。本発明の実施形態は、ここで相関ユニット310をアクティブにして、クエリのクラス、構成パラメータ値の選択されたセット、および結果として得られるパフォーマンス・データ、たとえばメモリの使用、応答時間、スループットなどに対する相関を決定できる。相関分析に基づいて、次いで本発明の実施形態は、シャドー・クエリ・エンジン302に対する構成パラメータ値の最適セット312を決定できる。
【0047】
決定314において、本発明の実施形態は、最適セット312がすでに選択されたクラスのクエリの拡張セットに基づいているかどうかをチェックできる。最適セット312が選択されたクラスのクエリの拡張セットに基づいていないとき(決定314、NO分岐)、次いでプロセスは最初に戻って、同じクラスの履歴クエリの拡張セット208によって、前述のアクティビティの流れを繰り返す。この第2の段階において、本発明の実施形態は、シャドー・クエリ・エンジン302に対して決定された最適構成パラメータ値がクエリの選択されたセット212に関して同じであり続けるかどうかを、テストおよび決定できる。シャドー・クエリ・エンジン302に対して決定された最適構成パラメータ値がクエリの選択されたセット212に関して同じであり続けないときは、クエリの選択されたセット212の別のセットが選択される。したがって本発明の実施形態は、クエリの選択されたクラスに対するシャドー・クエリ・エンジン302に対する最適構成パラメータ値セット312を決定するまで、最適化プロセスを繰り返し続け得る。履歴クエリの拡張セット208は、複数のテナントもしくはユーザまたはその両方から選択されてもよい。
【0048】
よって、最適構成パラメータ値セット312がそのクラスの履歴クエリの拡張セット208に基づくことが見出された場合は、本発明の実施形態はその最適構成パラメータ設定値のセットをクエリ・エンジン210(
図2)に送信して、選択されたクラスの将来のクエリに対する構成パラメータ値として使用できる(決定314、YES分岐)。
【0049】
クエリの他の(例えば、すべての)クラスについて、このプロセスが繰り返される。これによって、本発明の実施形態はクラウド・コンピューティング環境のスペック容量を使用できる。さまざまな実施形態において、最適化プロセスは、クラウド・コンピューティングがスペア容量を有する時間にのみ行われ、クラウド・コンピューティング・リソースの使用ピーク時間には行われなくてもよい。
【0050】
サンプリング(すなわち、クエリの選択されたセット212における選択された数のクエリの選択)は、専用の予め定められた距離関数に基づくクエリの機械学習(ML:machine-learning)ベースのクラスタ化に基づき得るという事実には言及する価値がある。ターゲット・クラスは、クエリ・パーサから導出される、クエリで用いられる構成もしくはオペレータまたはその両方(例えば、アグリゲーション、地理空間的接合など)に基づき得る。加えて、(例えば、nより多い/少ないパーティションに分配される)クエリの分類において、クエリに対する入力として使用されるデータの特徴が接続されてもよく、その特徴は、特定のソースに由来すること、または予め定められたデータ・シンク(例えば、Kafka(登録商標)、すなわちストリーム処理のためのApache Kafka(登録商標)からの読取り)ベースのデータをターゲットにすることの空間データを含み、COS(すなわち、クラウド・オブジェクト・ストア(Cloud Object Store))に書込まれる。しかし、任意のその他のデータ・ソース/シンクの組み合わせも可能である。
【0051】
図4は、本発明の実施形態による、マルチテナント・クラウド・サービスにおけるクエリ実行の最適化のためのクエリ最適化システム400の実施形態のブロック図を示す。クエリ最適化システム400は、サービス・クエリに対するカテゴリ・クラスを決定するために適合された第1の決定手段、特に第1の決定ユニット402を含む。クエリ最適化システム400はさらに、カテゴリ・クラスのうちの1つの選択された数のサービス・クエリをシャドー・クエリ・エンジンに実行のために送信するために適合された送信器手段、特に送信器404を含む。本発明のさまざまな実施形態によると、これによって、カテゴリにより分類されたサービス・クエリの各々は、シャドー・クエリ・エンジンに対する構成パラメータ値の異なるセットを含む。
【0052】
加えてクエリ最適化システム400は、シャドー・クエリ・エンジンで実行される1つのカテゴリ・クラスの選択された数のサービス・クエリに対するメタデータを記録するために適合された記録手段、特にレコーダ406を含む。実施形態の例において、メタデータは、パフォーマンス・データ、クエリ・カテゴリ・クラス、および関連構成パラメータ値の少なくとも1つの値を含む群から選択される少なくとも1つ、ならびに相関を決定するために適合された決定手段、特に第2の決定ユニット408を含む。たとえば、パフォーマンス・データ、クエリ・カテゴリ・クラス、および関連構成パラメータ値の少なくとも1つの値、ならびに決定手段の間の少なくとも1つの相関である。特に第3の決定ユニット410は、この相関から、カテゴリ・クラスのうちの1つの選択された数のサービス・クエリを実行するための最適構成パラメータを含む最適構成パラメータ値を決定するために適合される。
【0053】
さらにクエリ最適化システム400は、実行のための最適構成パラメータ値を有する構成をシャドー・クエリ・エンジンにおける同じクラスのサービス・クエリの拡張セットに適用して構成を検証するために適合されたアプリケーション手段、特にアプリケーション・モジュール412も含む。送信器手段(すなわち、送信器404)は、ポジティブな検証結果が見出されたときに、その最適構成パラメータ値を有する構成をクエリ・エンジンの同じカテゴリ・クラスの将来のクエリの実行に使用するためにも適合される。これによって、さまざまな実施形態において、クエリ・エンジンとシャドー・クエリ・エンジンとは同一の特徴を有し得る。
【0054】
なお、クエリ最適化システム400のユニットおよびモジュールは、信号交換のために通信的に連絡しているものとする。特に、第1の決定ユニット402と、送信器404と、レコーダ406と、第2の決定ユニット408と、第3の決定ユニット410と、アプリケーション・モジュール412とは、こうしたやり方で通信的に接続される。代替的に、ユニットおよびモジュールは、システム内部バス・システム414を介して通信的に連絡していてもよい。
【0055】
本発明の実施形態は、プラットフォームがプログラム・コードの記憶もしくは実行またはその両方に好適であるかにかかわらず、実質的に任意のタイプのコンピュータと共に実装されてもよい。
図5は、本発明のさまざまな実施形態による、提案される方法に関係するプログラム・コードを実行するために好適なコンピュータ・システム500(例えば、マルチテナント・クラウド・コンピューティング・クラスタにおける多くのノードのうちの少なくとも1つ)を例として示す。
【0056】
コンピュータ・システム500が上記に示された任意の機能の実現もしくは実行またはその両方をできるかどうかにかかわらず、コンピュータ・システム500は好適なコンピュータ・システムの単なる一例であり、本明細書に記載される本発明の実施形態の使用または機能の範囲に関するいかなる限定を示唆することも意図されていない。コンピュータ・システム500内には、多数の他の汎用目的または特定目的のコンピュータ・システム環境または構成と共に動作するコンポーネントが存在する。コンピュータ・システム/サーバ500と共に用いるために好適であり得る周知のコンピュータ・システム、環境、もしくは構成、またはその組み合わせの例は、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラマブル家電機器、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記のシステムまたはデバイスのいずれかを含む分散型クラウド・コンピューティング環境などを含むが、それに限定されない。コンピュータ・システム/サーバ500は、コンピュータ・システム500によって実行されるたとえばプログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的なコンテキストで記載されてもよい。一般的にプログラム・モジュールは、特定のタスクを行うか、または特定の抽象データ型を実現するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、およびデータ構造などを含んでもよい。コンピュータ・システム/サーバ500は、通信ネットワークを通じてリンクされたリモート処理デバイスによってタスクが行われる分散型クラウド・コンピューティング環境において実施されてもよい。分散型クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含むローカルおよびリモート・コンピュータ・システム記憶媒体の両方に位置してもよい。
【0057】
図5に示されるとおり、コンピュータ・システム/サーバ500は汎用目的のコンピュータ・デバイスの形で示される。コンピュータ・システム/サーバ500のコンポーネントは、1つまたは複数のプロセッサまたは処理ユニット502、システム・メモリ504、およびシステム・メモリ504を含むさまざまなシステム・コンポーネントをプロセッサ502に結合するバス506を含んでもよいが、それに限定されない。バス506は、メモリ・バスまたはメモリ・コントローラ、ペリフェラル・バス、アクセラレーテッド・グラフィクス・ポート、およびプロセッサ、またはさまざまなバス・アーキテクチャのいずれかを用いたローカル・バスを含むいくつかのタイプのバス構造のいずれか1つまたは複数を表す。限定ではなく例として、こうしたアーキテクチャはインダストリ・スタンダード・アーキテクチャ(ISA:Industry Standard Architecture)バス、マイクロ・チャネル・アーキテクチャ(MCA:Micro Channel Architecture)バス、拡張ISA(EISA:Enhanced ISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA:Video Electronics Standards Association)ローカル・バス、およびペリフェラル・コンポーネント・インターコネクト(PCI:Peripheral Component Interconnects)バスを含む。コンピュータ・システム/サーバ500は通常、さまざまなコンピュータ・システム可読媒体を含む。こうした媒体はコンピュータ・システム/サーバ500によってアクセス可能な任意の利用可能な媒体であってもよく、それは揮発性および不揮発性媒体、取り外し可能および取り外し不可能媒体の両方を含む。
【0058】
システム・メモリ504は、たとえばランダム・アクセス・メモリ(RAM:random access memory)508もしくはキャッシュ・メモリ510またはその両方などの、揮発性メモリの形のコンピュータ・システム可読媒体を含んでもよい。コンピュータ・システム/サーバ500はさらに、他の取り外し可能/取り外し不可能な、揮発性/不揮発性コンピュータ・システム記憶媒体を含んでもよい。単なる例として、取り外し不可能な不揮発性磁気媒体(図示されず、通常「ハード・ドライブ」と呼ばれる)からの読取りおよびそこへの書込みのために、ストレージ・システム512が提供されてもよい。示されていないが、取り外し可能な不揮発性磁気ディスク(例えば、「フレキシブル・ディスク」)からの読取りおよびそこへの書込みのための磁気ディスク・ドライブ、およびたとえばCD-ROM、DVD-ROM、またはその他の光媒体などの取り外し可能な不揮発性光ディスクからの読取りまたはそこへの書込みのための光ディスク・ドライブが提供されてもよい。こうした場合には、各々が1つまたは複数のデータ媒体インターフェースによってバス506に接続され得る。以下にさらに示されて説明されることとなるとおり、メモリ504は、本発明の実施形態の機能を実行するように構成されたプログラム・モジュールのセット(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含んでもよい。
【0059】
プログラム・モジュール516のセット(少なくとも1つ)を有するプログラム/ユーティリティは、限定ではなく例としてメモリ504に記憶されてもよく、加えてオペレーティング・システム、1つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データに記憶されてもよい。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、その他のプログラム・モジュール、およびプログラム・データ、またはその何らかの組み合わせの各々は、ネットワーク化環境の実現を含んでもよい。プログラム・モジュール516は一般的に、本明細書に記載されるとおりの本発明の実施形態の機能もしくは方法またはその両方を実行する。
【0060】
加えて、コンピュータ・システム/サーバ500は、たとえばキーボード、ポインティング・デバイス、ディスプレイ520などの1つまたは複数の外部デバイス518;ユーザがコンピュータ・システム/サーバ500と対話することを可能にする1つまたは複数のデバイス;またはコンピュータ・システム/サーバ500が1つまたは複数の他のコンピュータ・デバイスと通信することを可能にする任意のデバイス(例えば、ネットワーク・カード、モデムなど)、あるいはその組み合わせと通信してもよい。こうした通信は、入力/出力(I/O:Input/Output)インターフェース514を介して起こり得る。さらに、コンピュータ・システム/サーバ500はネットワーク・アダプタ522を介して、たとえばローカル・エリア・ネットワーク(LAN:local area network)、一般的な広域ネットワーク(WAN:wide area network)、もしくは公共ネットワーク(例えば、インターネット)、またはその組み合わせなどの1つまたは複数のネットワークと通信してもよい。示されるとおり、ネットワーク・アダプタ522は、バス506を介してコンピュータ・システム/サーバ500のその他のコンポーネントと通信してもよい。示されていないが、コンピュータ・システム/サーバ500と共に他のハードウェアもしくはソフトウェア・コンポーネントまたはその両方が用いられ得ることが理解されるべきである。その例はマイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイバル・ストレージ・システムなどを含むが、それに限定されない。
【0061】
加えて、マルチテナント・クラウド・サービスにおけるクエリ実行の最適化のためのクエリ最適化システム400が、バス・システム506に取り付けられてもよい。
【0062】
この開示はクラウド・コンピューティングの詳細な説明を含むが、本明細書に記述される教示の実施はクラウド・コンピューティング環境に限定されないことが理解されるべきである。むしろ、本発明の実施形態は、現在公知であるか、または後に開発される任意のその他のタイプのコンピューティング環境と共に実施され得る。
【0063】
クラウド・コンピューティングは、最小限の管理努力またはサービスのプロバイダとのインタラクションによって迅速にプロビジョニングおよびリリースされ得る構成可能なコンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンド・ネットワーク・アクセスを可能にするためのサービス配信のモデルである。このクラウド・モデルは少なくとも5つの特性と、少なくとも3つのサービス・モデルと、少なくとも4つの配置モデルとを含んでもよい。
【0064】
特性は次のとおりである。
【0065】
オンデマンド・セルフサービス。クラウド消費者は、たとえばサーバ時間およびネットワーク・ストレージなどのコンピューティング機能を、必要に応じて自動的に、サービスのプロバイダとの人的インタラクションを必要とせずに一方的にプロビジョニングできる。広範なネットワーク・アクセス。機能はネットワークを通じて利用可能であり、さまざまなシンまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による使用を容易にする標準的な機構を通じてアクセスされる。
【0066】
リソース・プール。マルチテナント・モデルを用いて複数の消費者にサービスするために、プロバイダのコンピューティング・リソースはプールされ、要求に従って異なる物理および仮想リソースが動的に割り当ておよび再割り当てされる。消費者は一般的に、提供されるリソースの正確な場所に対する制御も知識も有さないが、より高い抽象化レベルにおける場所(例えば、国、州、またはデータセンタ)を特定できてもよいという点で、場所独立性の意味が存在する。
【0067】
迅速な順応性。機能は、素早くスケール・アウトするために場合によっては自動的に、迅速かつ順応的にプロビジョニングされ、かつ素早くスケール・インするために迅速にリリースされ得る。消費者にとって、プロビジョニングのために利用可能な機能はしばしば無制限にみえ、任意のときに任意の量を購入できる。
【0068】
従量制サービス。クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウント)に対して適切な何らかの抽象化レベルにおいて計測機能を利用することによって、リソースの使用を自動的に制御および最適化する。リソースの使用をモニタ、制御、および報告して、使用されるサービスのプロバイダおよび消費者の両方に対する透明性を提供できる。
【0069】
サービス・モデルは次のとおりである。
【0070】
サービスとしてのソフトウェア(SaaS:Software as a Service)。消費者に提供される機能は、クラウド・インフラストラクチャにおいて動作するプロバイダのアプリケーションの使用である。アプリケーションは、さまざまなクライアント・デバイスからたとえばウェブ・ブラウザ(例えば、ウェブ・ベースのeメール)などのシン・クライアント・インターフェースを通じてアクセス可能である。消費者はネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能さえも含む基礎的なクラウド・インフラストラクチャを管理または制御することはなく、例外となり得るのは限られたユーザ特有のアプリケーション構成設定である。
【0071】
サービスとしてのプラットフォーム(PaaS:Platform as a Service)。消費者に提供される機能は、プロバイダによってサポートされるプログラミング言語およびツールを用いて作成された、消費者が作成または取得したアプリケーションのクラウド・インフラストラクチャへの配置である。消費者はネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基礎的なクラウド・インフラストラクチャを管理または制御することはないが、配置されたアプリケーションおよびおそらくはアプリケーション・ホスティング環境構成に対する制御を有する。
【0072】
サービスとしてのインフラストラクチャ(IaaS:Infrastructure as a Service)。消費者に提供される機能は、オペレーティング・システムおよびアプリケーションを含み得る、消費者が任意のソフトウェアを配置および実行することが可能な処理、ストレージ、ネットワーク、およびその他の基本的なコンピューティング・リソースのプロビジョニングである。消費者は基礎的なクラウド・インフラストラクチャを管理または制御することはないが、オペレーティング・システム、ストレージ、配置されたアプリケーションに対する制御、およびおそらくはネットワーク形成コンポーネント(例えば、ホスト・ファイアウォール)の選択に対する限られた制御を有する。
【0073】
配置モデルは次のとおりである。
【0074】
プライベート・クラウド。このクラウド・インフラストラクチャは、ある組織に対してのみ操作される。これはその組織またはサード・パーティによって管理されてもよく、オンプレミスまたはオフプレミスに存在してもよい。コミュニティ・クラウド。このクラウド・インフラストラクチャは複数の組織によって共有され、共通する関心事項(例えば、任務、セキュリティ要件、ポリシー、およびコンプライアンスの検討)を有する特定のコミュニティをサポートする。これはそれらの組織またはサード・パーティによって管理されてもよく、オンプレミスまたはオフプレミスに存在してもよい。
【0075】
パブリック・クラウド。このクラウド・インフラストラクチャは、一般人または大規模な産業グループに対して利用可能にされ、クラウド・サービスを販売する組織が所有している。
【0076】
ハイブリッド・クラウド。このクラウド・インフラストラクチャは2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の複合体であり、それらのクラウドは独自のエンティティに留まるが、データおよびアプリケーション・ポータビリティを可能にする標準または独自の技術(例えば、クラウド間のロード・バランシングのためのクラウド・バースティング)によって共に結合される。
【0077】
クラウド・コンピューティング環境はサービス指向型であり、ステートレス性、低結合性、モジュラリティ、およびセマンティックな相互運用性に焦点を合わせている。クラウド・コンピューティングの中心には、相互接続されたノードのネットワークを含むインフラストラクチャがある。
【0078】
ここで
図6を参照すると、例示的なクラウド・コンピューティング環境50が示されている。示されるとおり、クラウド・コンピューティング環境50は1つまたは複数のクラウド・コンピューティング・ノード10を含み、たとえばパーソナル・デジタル・アシスタント(PDA:personal digital assistant)もしくは携帯電話54A、デスクトップ・コンピュータ54B、ラップトップ・コンピュータ54C、または自動車のコンピュータ・システム54N、あるいはその組み合わせなどの、クラウド消費者によって用いられるローカル・コンピュータ・デバイスが、このクラウド・コンピューティング・ノード10によって通信してもよい。ノード10は互いに通信してもよい。これらのノードは、たとえば上述したプライベート、コミュニティ、パブリック、もしくはハイブリッド・クラウド、またはその組み合わせなどの1つまたは複数のネットワークにおいて、物理的または仮想的にグループ化(図示せず)されてもよい。このことは、クラウド・コンピューティング環境50がインフラストラクチャ、プラットフォーム、もしくはソフトウェア、またはその組み合わせを、クラウド消費者がそれに対するリソースをローカル・コンピュータ・デバイスにおいて維持する必要のないサービスとして提供することを可能にする。
図6に示されるコンピュータ・デバイス54A~Nのタイプは単なる例示であることが意図されており、コンピューティング・ノード10およびクラウド・コンピューティング環境50は、任意のタイプのネットワークもしくはネットワーク・アドレス可能接続(例えば、ウェブ・ブラウザを使用するもの)またはその両方を通じて、任意のタイプのコンピュータ・デバイスと通信できることが理解される。
【0079】
ここで
図7を参照すると、クラウド・コンピューティング環境50(
図6)によって提供される機能的抽象化レイヤのセットが示されている。
図7に示されるコンポーネント、レイヤ、および機能は単なる例示であることが意図されており、本発明の実施形態はそれらに限定されないことが予め理解されるべきである。示されるとおり、以下のレイヤおよび対応する機能が提供される。
【0080】
ハードウェアおよびソフトウェア・レイヤ60は、ハードウェアおよびソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例は、メインフレーム61、RISC(縮小命令セット・コンピュータ(Reduced Instruction Set Computer))アーキテクチャ・ベースのサーバ62、サーバ63、ブレード・サーバ64、ストレージ・デバイス65、ならびにネットワークおよびネットワーク形成コンポーネント66を含む。いくつかの実施形態において、ソフトウェア・コンポーネントは、ネットワーク・アプリケーション・サーバ・ソフトウェア67およびデータベース・ソフトウェア68を含む。
【0081】
仮想化レイヤ70は抽象化レイヤを提供し、この抽象化レイヤから仮想エンティティの以下の例が提供されてもよい。仮想サーバ71、仮想ストレージ72、仮想プライベート・ネットワークを含む仮想ネットワーク73、仮想アプリケーションおよびオペレーティング・システム74、ならびに仮想クライアント75。
【0082】
一例において、管理レイヤ80は以下に記載される機能を提供してもよい。リソース・プロビジョニング81は、クラウド・コンピューティング環境内でタスクを行うために使用されるコンピューティング・リソースおよびその他のリソースの動的調達を提供する。計測および価格決定82は、クラウド・コンピューティング環境内でリソースが使用される際のコスト追跡と、これらのリソースの消費に対する請求書またはインボイスの送付とを提供する。一例において、これらのリソースはアプリケーション・ソフトウェア・ライセンスを含んでもよい。セキュリティは、クラウド消費者およびタスクに対するアイデンティティ検証、ならびにデータおよびその他のリソースの保護を提供する。ユーザ・ポータル83は、消費者およびシステム管理者に対するクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理84は、要求されるサービス・レベルが満たされるようにクラウド・コンピューティング・リソースの割り当ておよび管理を提供する。サービス・レベル・アグリーメント(SLA:Service Level Agreement)計画および実現85は、SLAによって将来の要求が予測されるクラウド・コンピューティング・リソースに対する事前の取り決めおよびその調達を提供する。
【0083】
ワークロード・レイヤ90は、クラウド・コンピューティング環境が使用され得る機能の例を提供する。このレイヤから提供され得るワークロードおよび機能の例は、マッピングおよびナビゲーション91、ソフトウェア開発およびライフサイクル管理92、仮想教室の教育配信93、データ分析処理94、トランザクション処理95、およびソフトウェア96を含む。本発明のさまざまな実施形態において、ソフトウェア96は、たとえば
図4のクエリ最適化システム400などのクエリ最適化システムを表す。
【0084】
本明細書に記載されるプログラムは、本発明の特定の実施形態においてそれらのプログラムが実施されるアプリケーションに基づいて識別される。しかし当然のことながら、本明細書における任意の特定のプログラム体系は単に便宜のために用いられるものであり、よって本発明は、こうした体系によって識別されるか、もしくは意味されるか、またはその両方である任意の特定のアプリケーションにおける使用のみに限定されるべきではない。
【0085】
本発明は、任意の可能な技術的詳細レベルの統合におけるシステム、方法、もしくはコンピュータ・プログラム製品、またはその組み合わせであってもよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(または複数の媒体)を含んでもよい。
【0086】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および記憶できる有形デバイスであり得る。コンピュータ可読記憶媒体は、たとえば電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、または前述の任意の好適な組み合わせなどであってもよいが、それに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストは以下を含む。ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM:read-only memory)、消去可能プログラマブル・リード・オンリ・メモリ(erasable programmable read-only memory)(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ(CD-ROM:compact disc read-only memory)、デジタル多用途ディスク(DVD:digital versatile disk)、メモリ・スティック、フレキシブル・ディスク、機械的にコード化されたデバイス、たとえばパンチ・カードまたは記録された命令を有する溝の中の隆起構造体など、および前述の任意の好適な組み合わせ。本明細書において用いられるコンピュータ可読記憶媒体は、たとえば電波もしくはその他の自由に伝播する電磁波、導波路もしくはその他の伝送媒体を通じて伝播する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを通じて伝送される電気信号など、それ自体が一時的信号のものであると解釈されるべきではない。
【0087】
本明細書に記載されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスにダウンロードされ得るか、またはたとえばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、もしくはワイヤレス・ネットワーク、またはその組み合わせなどのネットワークを介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードされ得る。ネットワークは銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、もしくはエッジ・サーバ、またはその組み合わせを含んでもよい。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信して、そのコンピュータ可読プログラム命令をそれぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するために転送する。
【0088】
本発明の動作を実行するためのコンピュータ可読プログラム命令はアセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路に対する構成データ、または1つもしくは複数のプログラミング言語の任意の組み合わせで書かれたソース・コードもしくはオブジェクト・コードであってもよく、このプログラミング言語はオブジェクト指向プログラミング言語、たとえばSmalltalk、またはC++など、および手続き型プログラミング言語、たとえば「C」プログラミング言語または類似のプログラミング言語などを含む。コンピュータ可読プログラム命令は、すべてがユーザのコンピュータで実行されてもよいし、スタンド・アロン・ソフトウェア・パッケージとして部分的にユーザのコンピュータで実行されてもよいし、一部がユーザのコンピュータで、一部がリモート・コンピュータで実行されてもよいし、すべてがリモート・コンピュータまたはサーバで実行されてもよい。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続されてもよいし、(たとえば、インターネット・サービス・プロバイダを用いてインターネットを通じて)外部コンピュータへの接続が行われてもよい。いくつかの実施形態において、たとえばプログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA:field-programmable gate arrays)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic arrays)などを含む電子回路は、本発明の態様を行うために電子回路をパーソナライズするためのコンピュータ可読プログラム命令の状態情報を使用することによって、コンピュータ可読プログラム命令を実行してもよい。
【0089】
本明細書においては、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品の流れ図もしくはブロック図またはその両方を参照して、本発明の態様を説明している。流れ図もしくはブロック図またはその両方の各ブロック、および流れ図もしくはブロック図またはその両方におけるブロックの組み合わせは、コンピュータ可読プログラム命令によって実現され得ることが理解されるだろう。
【0090】
これらのコンピュータ可読プログラム命令は、コンピュータか、またはマシンを生成するためのその他のプログラマブル・データ処理装置のプロセッサに提供されることによって、そのコンピュータまたはその他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、流れ図もしくはブロック図またはその両方の単数または複数のブロックにおいて指定される機能/動作を実現するための手段を生じてもよい。これらのコンピュータ可読プログラム命令は、コンピュータ、プログラマブル・データ処理装置、もしくはその他のデバイス、またはその組み合わせに特定の方式で機能するように指示できるコンピュータ可読記憶媒体にも記憶されることによって、命令が記憶されたコンピュータ可読記憶媒体が、流れ図もしくはブロック図またはその両方の単数または複数のブロックにおいて指定される機能/動作の態様を実現する命令を含む製造物を含んでもよい。
【0091】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにもロードされて、コンピュータに実施されるプロセスを生成するためにコンピュータ、他のプログラマブル装置、または他のデバイスにおいて一連の動作ステップを行わせることによって、そのコンピュータ、他のプログラマブル装置、または他のデバイスにおいて実行される命令が、流れ図もしくはブロック図またはその両方の単数または複数のブロックにおいて指定される機能/動作を実現してもよい。
【0092】
図面における流れ図およびブロック図は、本発明のさまざまな実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実施のアーキテクチャ、機能、および動作を示すものである。これに関して、流れ図またはブロック図の各ブロックは、指定される論理機能(単数または複数)を実現するための1つまたは複数の実行可能命令を含むモジュール、セグメント、または命令の一部を表してもよい。いくつかの代替的実施において、ブロック内に示される機能は、図面に示されるものとは異なる順序で起こってもよい。たとえば、連続して示される2つのブロックは、実際には1つのステップとして達成されてもよく、同時に実行されても、部分的もしくは全体的に時間が重複する方式で実質的に同時に実行されてもよく、または関与する機能に依存して、これらのブロックがときに逆の順序で実行されてもよい。加えて、ブロック図もしくは流れ図またはその両方の各ブロック、およびブロック図もしくは流れ図またはその両方のブロックの組み合わせは、指定された機能または動作を行うか、特定目的のハードウェアおよびコンピュータ命令の組み合わせを実行する特定目的のハードウェア・ベースのシステムによって実現され得ることが注目されるだろう。
【0093】
本発明のさまざまな実施形態の説明は例示の目的のために提供されたものであるが、開示される実施形態に対して網羅的または限定的になることは意図されていない。本発明の範囲および思想から逸脱することなく、当業者には多くの修正および変更が明らかになるだろう。本明細書において用いられる用語は、実施形態の原理、市場に見出される技術に対する実際の適用または技術的改善点を最もよく説明するため、または本明細書に開示される実施形態を他の当業者が理解できるようにするために選択されたものである。