IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ スノーフレーク コンピューティング インク.の特許一覧

<>
  • 特開-マルチクラスタウェアハウス 図1
  • 特開-マルチクラスタウェアハウス 図2
  • 特開-マルチクラスタウェアハウス 図3
  • 特開-マルチクラスタウェアハウス 図4
  • 特開-マルチクラスタウェアハウス 図5
  • 特開-マルチクラスタウェアハウス 図6
  • 特開-マルチクラスタウェアハウス 図7
  • 特開-マルチクラスタウェアハウス 図8
  • 特開-マルチクラスタウェアハウス 図9
  • 特開-マルチクラスタウェアハウス 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024096963
(43)【公開日】2024-07-17
(54)【発明の名称】マルチクラスタウェアハウス
(51)【国際特許分類】
   G06F 9/50 20060101AFI20240709BHJP
【FI】
G06F9/50 120Z
【審査請求】有
【請求項の数】15
【出願形態】OL
(21)【出願番号】P 2024067497
(22)【出願日】2024-04-18
(62)【分割の表示】P 2022031749の分割
【原出願日】2017-04-28
(31)【優先権主張番号】62/328,943
(32)【優先日】2016-04-28
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】516245999
【氏名又は名称】スノーフレーク インク.
(74)【代理人】
【識別番号】100121083
【弁理士】
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【弁理士】
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100074099
【弁理士】
【氏名又は名称】大菅 義之
(72)【発明者】
【氏名】ファンケ, フローリアン アンドレアス
(72)【発明者】
【氏名】ポヴィネック, ピーター
(72)【発明者】
【氏名】クルアネス, ティエリー
(72)【発明者】
【氏名】ダジュヴィル, ブノワット
(57)【要約】
【課題】マルチクラスタウェアハウスのための方法は、仮想ウェアハウスの一部として複数の計算クラスタを割り当てることを含む。
【解決手段】計算クラスタは、1つ以上のクラウド格納リソース中の1つ以上のデータベースに対してアクセスしクエリを実行するために使用される。方法は、複数の計算クラスタの各々に仮想ウェアハウスに対するクエリを提供することを含む。仮想ウェアハウスの複数の計算クラスタの各々は、コンピューティング負荷が異なるクラスタに分散するように複数のクエリを受信する。方法はまた、複数の計算クラスタの作業量に基づいて、必要に応じて、動的に、仮想ウェアハウスに計算クラスタを追加し、仮想ウェアハウスから計算クラスタを除去することを含む。
【選択図】図1
【特許請求の範囲】
【請求項1】
実行プラットフォームとは別の格納プラットフォーム上に配置された1つ以上のクラウド格納リソース内の1つ以上のデータベースにアクセスしクエリを実施するための仮想ウェアハウスの一部として複数の計算クラスタを割り当てるための手段であって、前記複数の計算クラスタは、前記1つ以上のクラウド格納リソースとは別に割り当てられ、前記複数の計算クラスタの各々は、前記格納プラットフォーム上に格納されたデータをキャッシ ュするためのキャッシュメモリを含む1つ以上の実行ノードを含む、前記手段と、
前記複数の計算クラスタの各々に対する実行時に計算された同時実行性の程度と、顧客によって入力された目標の同時実行性の程度との比較に基づいて、前記複数の計算クラスタの現在の作業量を判定するための手段と、
現在配置された1つ以上の計算クラスタが、性能メトリックを満たしつつクエリの内の1つ以上及び前記現在の作業量を処理できる否かに基づいて、動的に前記仮想ウェアハウスに第1の計算クラスタを追加し、前記仮想ウェアハウスから第2の計算クラスタを非アクティブ化するための手段であって、前記性能メトリックは前記クエリに対する最大待機時間を含み、前記第1の計算クラスタを追加する又は前記第2の計算クラスタを非アクティブ化するための前記手段は、前記1つ以上のクラウド格納リソースを増加又は減少させることがなく、前記第2の計算クラスタを非アクティブ化することは、
追加のクエリが前記第2の計算クラスタに提供されることを阻止することと、
前記第2の計算クラスタが現在のスケジューリングされたクエリを完了することを可能にすることと、
前記現在のスケジューリングされたクエリが完了すると、前記第2の計算クラスタに対応する1つ以上のリソースを解放すること
を含む、前記手段と
を含む、システム。
【請求項2】
動的に前記仮想ウェアハウスに前記第1の計算クラスタを追加し、前記仮想ウェアハウスから前記第2の計算クラスタを非アクティブ化するための前記手段は、
現在割り当てられている1つ以上の計算クラスタが、前記性能メトリックを満たしつつ、前記現在の作業量と組み合わせて前記クエリを処理できないと判定することに応答して、前記第1の計算クラスタの起動をトリガーするための手段と、
前記現在の作業量が前記性能メトリックを満たしつつ、前記複数の計算クラスタよりも1つ少ない数でサービス可能か否かを判定するための手段と
の内の1つ以上を含み、
前記第2の計算クラスタを非アクティブ化することは、前記現在の作業量が前記性能メトリックを満たしつつ、前記複数の計算クラスタよりも1つ少ない計算クラスタでサービス可能であると判定することに更に応答する、
請求項1に記載のシステム。
【請求項3】
前記仮想ウェアハウスに対するクエリを前記複数の計算クラスタの各々に提供するための手段を更に含み、クエリを提供するための前記手段は、
前記クエリが発信されるセッションに基づいてクエリをルーティングするための手段、又は
クエリを実行するために、クラスタリソースの可用性に基づいて前記クエリをルーティングするための手段
の内の1つ以上を含む、請求項1に記載のシステム。
【請求項4】
実行プラットフォームとは別の格納プラットフォーム上に配置された1つ以上のクラウド格納リソース内の1つ以上のデータベースにアクセスしてクエリを実施するための仮想ウェアハウスの一部として前記実行プラットフォーム上に複数の計算クラスタを割り当てることであって、前記複数の計算クラスタは、前記1つ以上のクラウド格納リソースとは別に割り当てられ、前記複数の計算クラスタの各々は、前記格納プラットフォーム上に格納されたデータをキャッシュするためのキャッシュメモリを含む1つ以上の実行ノードを含むことと、
前記複数の計算クラスタの各々に対する実行時に計算された同時実行性の程度と、顧客によって入力された目標の同時実行性の程度との比較に基づいて、前記複数の計算クラスタの現在の作業量を判定することと、
現在割り当てられている1つ以上の計算クラスタが、性能メトリックを満たしつつ、クエリの内の1つ以上及び前記現在の作業量を処理できるか否かに少なくとも部分的に基づいて、動的に前記仮想ウェアハウスに第1の計算クラスタを追加し、又は前記仮想ウェアハウスから第2の計算クラスタを非アクティブ化することであって、前記性能メトリックは前記クエリに対する最大待機時間を含み、前記第1の計算クラスタを追加する又は前記第2の計算クラスタを非アクティブ化することは、前記1つ以上のクラウド格納リソースを増加又は減少させることがなく、前記第2の計算クラスタを非アクティブ化することは、
追加のクエリが前記第2の計算クラスタに提供されることを阻止することと、
前記第2の計算クラスタが現在のスケジューリングされたクエリを完了することを可能にすることと、
前記現在のスケジューリングされたクエリが完了すると、前記第2の計算クラスタに対応する1つ以上のリソースを解放すること
を含むこと
を含む、方法。
【請求項5】
前記複数の計算クラスタに対する前記作業量を判定することであって、前記作業量を判定することは、前記複数の計算クラスタの各々に対するプロセッサリソース、又は前記複数の計算クラスタの各々に対するメモリリソースの内の1つ以上の可用性を判定することを含むことと、
前記性能メトリックが各クエリに対して満たされるように、前記計算クラスタに向けられた各クエリに対して前記クエリが処理できるか否かを判定すること
の内の1つ以上を更に含む、請求項4に記載の方法。
【請求項6】
前記作業量に基づいて前記仮想ウェアハウスに前記第1の計算クラスタを動的に追加することは、
クエリが、前記クエリに対する性能メトリックを満たしつつ処理できるか否かを判定することと、
現在の作業量と組み合わせて前記クエリが、現在割り当てられている1つ以上の計算クラスタが前記性能メトリックを満たすようにすることができないと判定することに応答して、前記第1の計算クラスタの起動をトリガーすること
を含む、請求項4に記載の方法。
【請求項7】
前記性能メトリックは、前記クエリに対する最大待機時間を定義するサービスレベルアグリーメントを更に含む、請求項6に記載の方法。
【請求項8】
前記作業量に基づいて前記第2の計算クラスタを非アクティブ化することは、現在の作業量が、性能メトリックを満たしつつ前記複数の計算クラスタよりも1つ少ない計算クラスタでサービス可能か否かを判定することを含む、請求項4に記載の方法。
【請求項9】
前記現在の作業量が前記複数の計算クラスタよりも1つ少ない計算クラスタでサービス可能か否かを判定することは、前記現在の時間に至るまでの期間に対する履歴作業量が、前記性能メトリックを満たしつつ前記複数の計算クラスタよりも1つ少ない計算クラスタでサービス可能であったか否かを判定することを更に含む、請求項8に記載の方法。
【請求項10】
前記第2の計算クラスタを非アクティブ化することは、
前記期間に対する前記履歴作業量が前記複数の計算クラスタよりも1つ少ない計算クラスタでサービス可能であったと判定することに応答して、前記第2の計算クラスタを非アクティブ化すること、又は
前記複数の計算クラスタを割り当てることは、異なるアベイラビリティーゾーンに少なくとも2つの計算クラスタを割り当てること
を更に含む、請求項9に記載の方法。
【請求項11】
前記複数の計算クラスタの各々に前記仮想ウェアハウスに対するクエリを提供することは、
前記クエリが発信されるセッションに基づいてクエリをルーティングすること、又は
前記複数の計算クラスタの各々の作業量に基づいてクエリをルーティングすることの内の1つ以上を含む、請求項4に記載の方法。
【請求項12】
データ処理装置によって実行される場合に、
実行プラットフォームとは別の格納プラットフォーム上に配置された1つ以上のクラウド格納リソース内の1つ以上のデータベースにアクセスしクエリを実施するための仮想ウェアハウスの一部として前記実行プラットフォーム上に複数の計算クラスタを割り当てることであって、前記複数の計算クラスタは、前記1つ以上のクラウド格納リソースとは別に割り当てられ、前記複数の計算クラスタの各々は、前記格納プラットフォーム上に格納されたデータをキャッシュするためのキャッシュメモリを含む1つ以上の実行ノードを含むことと、
前記複数の計算クラスタの各々に対する実行時に計算された同時実行性の程度と、顧客によって入力された目標の同時実行性の程度との比較に基づいて、前記複数の計算クラスタの現在の作業量を判定することと、
現在割り当てられている1つ以上の計算クラスタが、性能メトリックを満たしつつ、クエリの内の1つ以上及び現在の作業量を処理できるか否かに少なくとも部分的に基づいて、動的に前記仮想ウェアハウスに第1の計算クラスタを追加し、及び前記仮想ウェアハウスから第2の計算クラスタを非アクティブ化することであって、前記性能メトリックは前記クエリに対する最大待機時間を含み、前記第1の計算クラスタを追加する又は前記第2の計算クラスタを非アクティブ化することは、前記1つ以上のクラウド格納リソースを増加又は減少させることがなく、前記第2の計算クラスタを非アクティブ化することは、
追加のクエリが前記第2の計算クラスタに提供されることを阻止することと、
前記第2の計算クラスタが現在のスケジューリングされたクエリを完了することを可能にすることと、
前記現在のスケジューリングされたクエリが完了すると、前記第2の計算クラスタに対応する1つ以上のリソースを解放すること
を含むこと
を含む動作を前記データ処理装置に実施させる命令を格納する非一時的可読格納媒体。
【請求項13】
前記動作は、
前記1つ以上のクラウド格納リソースを増加又は減少させることなく、前記計算クラスタの数をスケールアップ及びスケールダウンできるように、前記1つ以上のクラウド格納リソースから独立して前記複数の計算クラスタを割り当てること、
前記複数の計算クラスタの各々に対するプロセッサリソース、前記複数の計算クラスタの各々に対するメモリリソースの内の1つ以上の可用性を判定すること、若しくは特定のクエリを処理するために必要な最小限のリソースを予測することによって、前記複数の計算クラスタに対する前記作業量を判定すること、又は
クエリが前記クエリに対する性能メトリックを満たしつつ処理できるか否かを判定し、現在の作業量と組み合わせて前記クエリが、現在割り当てられている1つ以上の計算クラスタが前記性能メトリックを満たすようにできないと判定することに応答して、第1の計算クラスタの起動をトリガーすることによって、前記作業量に基づいて前記仮想ウェアハウスに前記第1の計算クラスタを動的に追加すること
を更に含む、請求項12に記載の非一時的可読格納媒体。
【請求項14】
前記動作は、
前記作業量が前記複数の計算クラスタよりも1つ少ない計算クラスタでサービス可能であると判定すること
を更に含む、請求項12に記載の非一時的可読格納媒体。
【請求項15】
前記動作は、
前記現在の作業量が前記複数の計算クラスタよりも1つ少ない計算クラスタでサービス可能か否かを判定することは、前記現在の時間に至るまでの期間に対する履歴作業量が、前記性能メトリックを満たしつつ、前記複数の計算クラスタよりも1つ少ない計算クラスタでサービス可能であったか否かを判定することを更に含むこと、及び
前記第2の計算クラスタを非アクティブ化することは、前記期間に対する前記履歴作業量が前記複数の計算クラスタよりも1つ少ない計算クラスタでサービス可能であったと判定することに応答して非アクティブ化することを含むこと、又は
前記複数の計算クラスタの各々に前記仮想ウェアハウスに対するクエリを提供することは、前記クエリが発信されるセッションに基づいてクエリをルーティングすることを含むこと、
を更に含む、請求項14に記載の非一時的可読格納媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、2016年4月28日に出願された名称“マルチクラスタウェアハウス”の米国仮出願番号62/328,943の優先権を主張し、その全体が参照により本明細書に組み込まれる。
【0002】
本開示は、マルチクラスタウェアハウスのためのシステム、方法、及びデバイスに関する。
【背景技術】
【0003】
コンピューティングの利用においては、データの格納及びアクセスのためにデータベースが広く使用される。データベースは、クエリを使用して読み出され得、変更され得、又は削除され得るデータを含む又は参照する1つ以上のテーブルを含み得る。データベースは、1つ以上のテーブル内に小さな又は極めて大きなデータセットを格納することができる。このデータはウェブサイト又はアプリケーションプログラムインタフェース(API)介する等して、団体の様々なユーザによりアクセスされ得、又は公的ユーザに提供するために使用され得る。コンピューティング及び格納のリソース、及びそれらの基礎をなすアーキテクチャの両方は、所望のデータベースの性能を達成するのに大きな役割を果たし得る。
【0004】
本開示の非限定的で非網羅的な実施形態が以下の図面を参照しながら記述され、特段の定めがない限り様々な図を通じて同様の参照数字が同様の部分に付される。
【図面の簡単な説明】
【0005】
図1】本明細書に記述されるシステム及び方法の例示的実施形態に従った処理プラットフォームを図示するブロック図である。
図2】一実施形態に従った、リソースマネージャのコンポーネントを説明するブロック図である。
図3】一実施形態に従った、マルチクラスタウェアハウスのスケジューリングを図示するブロック図である。
図4】一実施形態に従った、単一の実行プラットフォーム上に提供され得る複数のウェアハウスを図示するブロック図である。
図5】一実施形態に従った、分散された多数の仮想ウェアハウスを有するシステムを説明するブロック図である。
図6】一実施形態に従った、マルチクラスタウェアハウスのための方法を説明する概略的フローチャート図である。
図7】一実施形態に従った、マルチクラスタウェアハウス中のコンピュータクラスタを動的に追加するための方法を説明する概略的フローチャート図である。
図8】一実施形態に従った、マルチクラスタウェアハウス中のコンピュータクラスタを動的に除去するための方法を説明する概略的フローチャート図である。
図9】一実施形態に従った、マルチクラスタウェアハウスのための方法を説明する概略的フローチャート図である。
図10】本明細書に開示される処理及びシステムの少なくとも1つの実施形態と一致する例示的コンピューティングデバイスを図示するブロック図である。
【発明を実施するための形態】
【0006】
本開示は、マルチクラスタウェアハウスを提供及び管理するためのシステム、方法、及びデバイスに向けられる。ウェアハウスは、分析クエリの取り扱いにおいて接続又は協働される幾つかのサーバである。幾つかのウェアハウスでは、計算及び格納のリソースは相互に接続及び割り当てられる。本明細書に開示される少なくとも幾つかの実施形態では、計算リソースは、独立して割り当てられ、格納リソースとは別に拡大縮小が可能である。幾つかのケースでは、ウェアハウスは、サービスを提供するために一体となって働き得る1つ以上のクラスタ及び/又は1つ以上のサーバノードのクラスタを含む。出願人は、マルチクラスタウェアハウスのためのアーキテクチャ、方法、アルゴリズム、及びシステムを開発し、本明細書に提示する。
【0007】
一実施形態に従うと、マルチクラスタウェアハウスのための方法は、仮想ウェアハウスの一部として複数の計算クラスタを割り当てることを含む。計算クラスタは、1つ以上のクラウド格納リソース中の1つ以上のデータベースに対してアクセスしクエリを実行するために使用され得る。方法は、仮想ウェアハウスに対するクエリを複数の計算クラスタの各々に提供することを含む。例えば、仮想ウェアハウスの複数の計算クラスタの各々は、コンピューティング負荷が異なるクラスタに分散するように複数のクエリを受信し得る。方法はまた、複数の計算クラスタの作業量に基づいて、必要に応じて、動的に、仮想ウェアハウスに計算クラスタを追加し、仮想ウェアハウスから計算クラスタを除去することを含み得る。
【0008】
マルチクラスタウェアハウスは、同時実行性及び可用性(availability)において顕著な向上を提供し得る。例えば、ウェアハウスは、一般的に、サイズが該ウェアハウスのサイズである単一のクラスタのみを含む。例えば、大きなウェアハウスは、8つのサーバノードの単一のクラスタを含み得る。マルチクラスタウェアハウスは、多数のクラスタを有する単一のウェアハウスの創造を可能にし得る。ウェアハウス内の各クラスタは8つのサーバノードを含み得る。したがって、マルチクラスタウェアハウスは、同じサイズの単一のクラスタウェアハウスにより提供される同時実行レベルの3倍を支持し得る。このアーキテクチャは、本明細書で更に論じられるように、コンピューティングリソースの拡大縮小を可能にもしつつ、単一のウェアハウスに対して高レベルの同時実行性を可能にし得る。
【0009】
異なるアベイラビリティゾーン(availability zone)中に異なるクラスタを設置することによって、マルチクラスタウェアハウスにおいて可用性の向上も達成され得る。例えば、各ウェアハウスクラスタは(異なるAmazon(登録商標)のアベイラビリティゾーン内等の)クラウドプロバイダの異なるアベイラビリティゾーン中に割り当てられるので、マルチクラスタウェアハウスは、誤り回復力の向上を提供する。それ故、マルチクラスタウェアハウスは、単一のクラスタウェアハウスと比較して高い可用性を有する。更に、クエリは、メモリ又はローカルなディスクベースのストレージ中に(例えば、キャッシュ中に)関連するデータセグメントが既に存在する最適クラスタにルーティングされ得る。例えば、マルチクラスタウェアハウスのための方法は、クエリが起きたセッションに基づいてクエリをルーティングすることを含み得る。同じセッションからのクエリを同じクラスタに提供することによって、クエリに必要とされるデータがメモリ中に既に存在し且つクラウド格納リソースからデータを検索する必要性を省き得る可能性を増加させる。同時実行性及び可用性の向上によって、ユーザは、その他の従来の単一のクラスタデータベースアーキテクチャでは達成することが困難又は不可能であろう応答時間及び可用性の向上を経験し得る。
【0010】
同時実行性及び可用性の向上に加えて、計算リソースの自動的な拡大縮小の顕著な変更が可能である。例えば、少なくとも幾つかの実施形態は、クラウドストレージとは別の計算リソースの割り当てを提供する。したがって、マルチクラスタウェアハウスは、変化しない又はクエリの作業量と比べて非常に遅く変化しているデータに対してクエリを依然行いつつ、大きな作業量の変動に適応するために計算クラスタの数を拡大又は縮小し得る。
【0011】
ウェアハウスが作業量を処理できず、クエリを待機(queue)させなければならない(或いは、許容される時間の長さよりも長くクエリを待機させる)場合に新たな又はサスペンドしたクラスタの自動的なレジューム又は開始が実行され得る。クラスタ上の総リソース消費が閾値を越えているため、クエリは待機させられ得る。例えば、リソース消費は、メモリ負荷とコンピューティング又は処理負荷とに対するパラメータを含み得る。一実施形態では、パラメータは、新たなクラスタがレジューム又は供給されるべき前にクエリがどのくらいの長さを待機し得るかに対して制御する。新たなクラスタがレジュームされると直ぐに、クエリは、新たなクラスタ上で実行されるようにスケジューリングされ得る。これは、新たなクエリと既に待機したクエリとに適用される。
【0012】
一実施形態では、マルチクラスタウェアハウスのための方法は、作業量に基づいて仮想ウェアハウスに計算クラスタを動的に追加することを含み得る。方法は、クエリに対する性能メトリックに合致しつつクエリが処理され得るか否かを判定することを含み得る。現在の作業量と組み合わせたクエリが、現在割り当てられた1つ以上の計算クラスタを性能メトリックに合致するようにできない場合、方法は、新たな計算クラスタの起動を誘発することを含み得る。幾つかの実施形態では、新たなクラスタは、必要とされる性能メトリックよりも単一のクエリが少なくならないことを確保するのに十分速く割り当てられ得る。
【0013】
マルチクラスタウェアハウスのアクティブクラスタの自動的なサスペンド又は廃止は、作業量のリソース消費が十分低いために、該クラスタのサスペンドが過去に実行された何れのクエリもN分待機(又は閾値時間よりも長く待機)させなかったであろう場合に実行され得る。クエリの待機又はクエリに対する待機時間は、使用され得る性能メトリックの一例に過ぎない。一実施形態では、マルチクラスタウェアハウスのための方法は、作業量に基づいて計算クラスタを除去することを含み得る。方法は、性能メトリックに合致しつつ複数の計算クラスタよりも少数の計算クラスタにより現在の作業量がサービス可能であるか否かを判定することを含み得る。方法は、複数の計算クラスタよりも少数の計算クラスタにより作業量がサービス可能であるとの判定に応答して、複数の計算クラスタの内の少なくとも1つの計算クラスタを廃止(又はサスペンド)することを含み得る。
【0014】
一実施形態に従えば、クラスタの自動的な供給又は除去と、ウェアハウス内の異なるクラスタへのクエリのルーティングとは、サービスとして、強力で柔軟なマルチクラスタウェアハウスの一部に使用され得る。
【0015】
本開示の実施形態と一致するシステム及び方法の詳細な記述が以下に提供される。幾つかの実施形態が記述されるが、この開示は、何れかの1つの実施形態に限定されないが、代わりに、多数の代替物、変形物、及び均等物を包含することを理解すべきである。また、本明細書に開示される実施形態の理解を通じて提供するために多数の具体的詳細が以下の説明で記述されるが、幾つかの実施形態はそれらの幾つか又は全ての詳細なしに実施され得る、更に、明確にする目的のため、関連する技術で周知の幾つかの技術項目は、開示を不必要に不明確にすることを避けるために詳細には記述されていない。
【0016】
図に向けると、図1は、一実施形態に従った、マルチクラスタウェアハウスを提供及び/又は管理するための処理プラットフォーム100を説明するブロック図である。処理プラットフォーム100は、多数のユーザ104、106、及び108によりアクセス可能なリソースマネージャ102を含む。リソースマネージャ102は、本明細書ではデータベースサービスマネージャとも称され得る。幾つかの実装では、リソースマネージャ102は、処理プラットフォーム100のデータ又はサービスへのアクセスを要望する任意の数のユーザを支持し得る。ユーザ104~108は、例えば、データの格納及び検索のクエリ及びリクエストを提供するエンドユーザ、本明細書に記述されるシステム及び方法を管理するシステム管理者、データベースと相互作用するソフトウェアアプリケーション、及びリソースマネージャ102と相互作用するその他のコンポーネント/デバイスを含み得る。
【0017】
リソースマネージャ102は、処理プラットフォーム100内のシステム及びコンポーネントの動作を支持する様々なサービス及び機能を提供し得る。リソースマネージャ102は、データ処理プラットフォーム100を通じて格納されたデータと関連付けられるメタデータ110を格納するためのアクセスを有する。リソースマネージャ102は、ユーザクエリを最適化するためにメタデータ110を使用し得る。幾つかの実施形態では、メタデータ110は、遠隔データ格納システム中に格納されたデータとローカルキャッシュ(例えば、実行プラットフォーム112の1つ以上のクラスタ内のキャッシュ)から入手可能なデータとの概要を含む。また、メタデータ110は、遠隔データ格納システム及びローカルキャッシュ中にデータを整理する方法に関する情報を含み得る。メタデータ110は、格納デバイスから実データをロード又はアクセスすることなくデータを処理する必要があるか否かをシステム及びサービスが判定できるようにする。
【0018】
データ処理プラットフォーム100の一部として、メタデータ110は、データ操作言語(DML)を使用してデータを変更させる場合に収集され得、それは、任意のDMLステートメントを通じて変更させ得る。データの操作の一例は、データを選択すること、更新すること、変更すること、併合すること、及びテーブル中に挿入することを含み得るが、これらに制限されない。処理プラットフォーム100の一部として、ファイルが作り出され得、ファイル毎及びコラムベース毎にメタデータ110が収集され得、その後、メタデータ110はメタデータストア中に保存され得る。メタデータ110のこの収集は、データ採取中に実行され得、又はメタデータ110の収集は、データが採取又はロードされた後に別のプロセスとして実行され得る。実装では、メタデータ110は、複数のディスティンクト値、複数のヌル値、並びに最小値及び最大値をファイル毎に含み得る。実装では、メタデータは、ストリング長情報及びストリング中の文字範囲を更に含み得る。
【0019】
リソースマネージャ102は更に、実行プラットフォーム112と通信し、それは、以下により詳細を論じるように、様々なデータ格納及びデータ検索の動作を実行する多数のコンピューティングリソースを提供する。実行プラットフォーム112は、特定のウェアハウスにユーザ104~108により提供されるクエリ作業量に基づいて特定のウェアハウスに対して動的に割り当て又はサスペンドされ得る1つ以上の計算クラスタを含み得る。実行プラットフォーム112は、格納プラットフォーム114の一部である1つ以上のデータ格納デバイス116、118、及び120と通信する。3つのデータ格納デバイス116、118、及び120が図1に示されるが、実行プラットフォーム112は、任意の数のデータ格納デバイスと通信可能である。幾つかの実施形態では、データ格納デバイス116、118、及び120は、1つ以上の地理的位置に配置されたクラウドベースの格納デバイスである。例えば、データ格納デバイス116、118、及び120は、公的なクラウド基盤又は私的なクラウド基盤の一部であり得、又は任意のその他の種類の分散格納システムであり得る。データ格納デバイス116、118、及び120は、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)、ストレージクラスタ、又は任意のその他のデータ格納技術を含み得る。また、格納プラットフォーム114は、(Hadoop分散ファイルシステム(HDFS)等の)分散ファイルシステム、及びオブジェクト格納システム等を含み得る。
【0020】
幾つかの実施形態では、リソースマネージャ102とユーザ104~108、メタデータ110、及び実行プラットフォーム112との間の通信リンクは、1つ以上のデータ通信ネットワークを介して実装され、ユーザリクエストが最適化され得るように様々なタスクを割り当てられ得る。同様に、実行プラットフォーム112と格納プラットフォーム114中のデータ格納デバイス116~120との間の通信リンクは、1つ以上のデータ通信ネットワークを介して実装される。これらのデータ通信ネットワークは、任意の通信プロトコルと任意の種類の通信媒体とを利用し得る。幾つかの実施形態では、データ通信ネットワークは、相互に結合された2つ以上のデータ通信ネットワーク(又はサブネットワーク)の組み合わせである。別の実施形態では、これらの通信リンクは、任意の種類の通信媒体と通信プロトコルとを使用して実装される。
【0021】
図1に示されるように、データ格納デバイス116、118、及び120は、実行プラットフォーム112と関連付けられたコンピューティングリソースから分離される。このアーキテクチャは、データ処理プラットフォーム100にアクセスするユーザ及びシステムのデータの格納/検索要請、コンピューティング要請、及び変更要請の変化に基づいて、データ処理プラットフォーム100への動的変更を支持する。動的変更の支持は、データ処理プラットフォーム100内のシステム及びコンポーネントの要求の変化に応じてデータ処理プラットフォーム100が即座に拡大縮小できるようにする。データ格納デバイスからのコンピューティングリソースの分離は、対応する大量のコンピューティングリソースを要求することなく大量のデータの格納を支持する。同様に、このリソースの分離は、利用可能なデータ格納リソースの対応する増加を要求することなく、特定時間に利用されるコンピューティングリソースの顕著な増加を支持する。
【0022】
リソースマネージャ102、メタデータ110、実行プラットフォーム112、及び格納プラットフォーム114は、個々のコンポーネントとして図1に示される。しかしながら、リソースマネージャ102、メタデータ110、実行プラットフォーム112、及び格納プラットフォーム114の各々は、(例えば、多数の地理的位置に多数のシステム/プラットフォームに渡って分散された)分散システムとして実装され得、又は1つ以上のシステムに結合され得る。また、リソースマネージャ102、メタデータ110用のストレージ、実行プラットフォーム112、及び格納プラットフォーム114の各々は、ユーザ104~108から受信されたリクエストの変化又はデータ処理プラットフォーム100の変更要請に基づいて(相互に無関係に)拡大又は縮小され得る。したがって、記述される実施形態では、データ処理プラットフォーム100は、動的であり、現在のデータ処理の要請に合致するように規則的な変更を支持する。
【0023】
実行プラットフォーム112は、処理プラットフォーム100の計算又は処理の負荷を共有し得る複数の計算クラスタ122、124、126を含む。一実施形態では、顧客は、(ウェアハウスの実行中及びそのサスペンド中の両方において)ウェアハウスを作り出す又はその構成を変更する場合にレンジを指定する(例えば、minClusterCount及びmaxClusterCount等の値を指定する)ことによってアクティブな(すなわち、実行している)クラスタの数を制御し得る。顧客は、ウェアハウスがその実行の度に実行する正確な数を有するように指定すること、例えば、最小クラスタカウントを最大クラスタカウントと同数にすることによって、アクティブなクラスタの正確な数を指定し得る。最小クラスタカウントよりも大きい最大クラスタカウントをユーザが指定する場合、リソースマネージャ102は、スループット基準を満足し費用面で効果的であるように作業量に基づいて現在のアクティブなクラスタの数を自動的に管理し得る。それ故、ウェアハウスが実行している場合はいつも、少なくとも最小クラスタカウント(minClusterCount)のクラスタがアクティブにされ、せいぜい最大クラスタカウント(maxClusterCount)のクラスタがアクティブにされる。リソースマネージャ102は、メモリ負荷及び同時実行性レベルの観点から指定された性能基準が与えられた現在の作業量を処理するために幾つのクラスタが必要とされるかを判定し得る。
【0024】
図2は、一実施形態に従った、リソースマネージャ102のコンポーネントを示すブロック図を説明する。リソースマネージャ102は、データ格納デバイス206に結合されたアクセスマネージャ202及びキーマネージャ204を含む。アクセスマネージャ202は、本明細書に記述されるシステムに対する認証及び承認タスクを処理する。キーマネージャ204は、認証及び承認タスク中に使用されるキーの格納及び承認を管理する。リクエスト処理サービス208は、受信されたデータ格納リクエスト及びデータ検索リクエストを管理する。管理コンソールサービス210は、管理者及びその他のシステムマネージャによる様々なシステム及び処理へのアクセスを支持する。
【0025】
リソースマネージャ102はSQLコンパイラ212、SQLオプティマイザ214、及びSQLエクゼキュータ216をも含む。SQLコンパイラ212は、SQLクエリをパースし、該クエリに対する実行コードを生成する。SQLオプティマイザ214は、処理される必要があるデータに基づいて、クエリを実行するための最良な方法を判定する。SQLエクゼキュータ216は、リソースマネージャ102により受信されたクエリに対するクエリコードを実行する、クエリスケジューラ及びコーディネータ218は、編集、最適化、及び実行プラットフォーム112へのディスパッチのために、受信されたクエリを最適なサービス又はシステムへ送信する。仮想ウェアハウスマネージャ220は、実行プラットフォーム112に実装される、マルチクラスタウェアハウスを含む多数の仮想ウェアハウスの動作を管理する。
【0026】
また、リソースマネージャ102は、コンフィグレーション及びメタデータマネージャ222を含み、それは、遠隔データ格納デバイス中に及びローカルキャッシュ中に格納されたデータに関する情報を管理する。モニタ及び作業量アナライザ224は、リソースマネージャ102により実行された処理を監督し、実行プラットフォーム112中の仮想ウェアハウス及び実行ノードに渡るタスク(例えば、作業量)の分散を管理する。コンフィグレーション及びメタデータマネージャ222、並びにモニタ及び作業量アナライザ224は、データ格納デバイス226に結合される。
【0027】
リソースマネージャ102は、トランザクション管理及びアクセス制御モジュール228をも含み、それは、データ格納リクエスト及びデータアクセスリクエストの処理と関連付けられる様々なタスク及びその他のアクティビティを管理する。例えば、トランザクション管理及びアクセス制御モジュール228は、多数のユーザ又はシステムによるデータへの一貫し且つ同期したアクセスを提供する。多数のユーザ/システムは同じデータに同時にアクセスし得るので、各ユーザ/システムがデータの現在のバージョンで作業することを確保するために、データへの変更は同期されなければならない。トランザクション管理及びアクセス制御モジュール228は、リソースマネージャ102の一か所に集中した位置での様々なデータ処理アクティビティの制御を提供する。
【0028】
仮想ウェアハウスマネージャ220を更に参照しながら、マルチクラスタウェアハウス中の自動的クラスタレジューム及び自動的クラスタサスペンドが論じられる。一実施形態では、仮想ウェアハウスマネージャ220は、自動的クラスタレジュームを実行する。(例えば、実行プラットフォーム112内の)マルチクラスタウェアハウスが自動的レジュームに対してマーキングされる場合、該ウェアハウスに対する第1のクラスタは、SQLステートメントがスケジューリングされ該ウェアハウス中の全てのクラスタがサスペンド状態にある場合に自動的にレジュームされる。しかしながら、残りのクラスタを自動的にレジュームするとの決定は、作業量に基づいて実行される。これは、activeClusterCount<maxClusterCountであると思われ、すなわち、アクティブ/レジュームされ得るが現在サスペンドされているクラスタを有する。
【0029】
作業量の考慮は少なくとも2つのことを含む。第一に、作業量の考慮はメモリの使用を含み得る。全てのクラスタがそれらの最大メモリ容量にあるために、クエリがスケジューリング及び待機される場合、仮想ウェアハウスマネージャ220は、待機が回避され得又は短縮され得るように1つ以上のクラスタをレジュームする。クラスタのレジュームには例えば分単位の少しの時間がかかり得るので、新たなクラスタがレジュームされる必要がある場合に待機が依然として生じ得る。しかしながら、仮想ウェアハウスマネージャ220はまた、新たなクラスタの開始中にクエリがフリーなプール上に置かれ得るように、幾つかのフリーなサーバのフリーなプールが存在することを確認し得る。また、仮想ウェアハウスマネージャ220は、新たなクラスタの供給を決定する前にクエリが自身で解決さ れるか否かを確認するために一定期間待機し得る。
【0030】
第二に、作業量の考慮は、クラスタについての同時実行度、又は処理/コンピューティング負荷を含み得る。全てのアクティブクラスタ上での同時実行度が高い場合、仮想ウェアハウスマネージャ220は、クエリをスケジューリングするための十分なメモリがたとえあったとしても別のクラスタを開始し得る。ここで、同時実行度は、並列度(DOP)に基づいてアクティブクラスタ毎に計算され得る。具体的には、同時実行度は、全DOPで実行しているクエリの数であり得る。例えば、これは、最大DOP(MAX_DOP)と実行クエリの数との積で全実行クエリに対するDOPを除算することで計算され得る。幾つかの軽量のクエリは最大よりも小さいDOPで実行しているので、これは分数又は非整数であり得る。一実施形態では、同時実行度を制御するために、ウェアハウスパラメータが指定され得る。例えば、同時実行度(concurrency_level_target)はデフォルトでは値8に設定され得る。このパラメータは、顧客がその問題に幾ら費やすのか、及びウェアハウスが共有される場合に(スタンドアローンなクエリ性能と比較して)クエリ性能がどの程度劣化することを厭わないかにその値は実際には依存するので、顧客に晒され得る。
【0031】
一実施形態では、仮想ウェアハウスマネージャ220は、自動的クラスタサスペンドを実行する。一実施形態では、(例えば、auto_suspendパラメータに基づいた)インアクティブの一定秒後に、全ウェアハウスはシャットダウンし得る。これとは別に、ウェアハウスが2つ以上のアクティブクラスタを有する場合、1つ以上のクラスタは、例えば分単位で測定される所定時間よりも長い間、ウェアハウスがその容量の下で実行していた場合にサスペンドされ得る。例えば、3つのアクティブクラスタを有するウェアハウスを考える。所定時間よりも長い間、ウェアハウスが負荷を受ける、すなわち、最大同時実行度を超えて何ら待機することなく又は進むことなく現時点で所定時間のエンジンで発行された全てのSQLステートメントを実行できている場合、1つ以上のクラスタはサスペンドされる。ウェアハウスは、負荷を受ける間、現在アクティブな全てのクラスタを活用することに留意されたい。クラスタは、シャットダウンするための一定時間、インアクティブにされる必要がない。自動的クラスタサスペンドに対する確認は、残り5分、残り10分、残り30分、残り1時間等、定期的に実行され得る。一実施形態では、自動的クラスタに対する確認は、所定時間とは異なる間隔で実行され得る。例えば、負荷の下で残り10分にあったか否かの確認は、顧客が時間単位で請求され得るように各時間変化で実行され得る。
【0032】
クエリスケジューラ及びコーディネータ218を更に参照すると、クエリのスケジューリングは、作業量、クエリの類似性、及びその他の要因に基づいて実行され得る。クエリスケジューラ及びコーディネータ218は、作業量に基づいて、クエリを特定のクラスタへ転送し得る。例えば、クエリスケジューラ及びコーディネータ218は、処理タスクを拡散するため、及びクエリの実行時間及びユーザエクスペリエンスを向上するために各クラスタ上の作業量をほぼ等しく維持するように試み得る。クエリの類似性は、関連するクエリ、特に、同じデータに関連するクエリが同じクラスタへ送信されるように使用され得る。例えば、クエリスケジューラ及びコーディネータ218は、同じセッション識別子を有するクエリを同じクラスタへ送信し得る。クエリの類似性に基づいてクエリを転送することは、実行予定のクエリに対するデータが特定のクラスタのローカルキャッシュ中に既に存在することをクエリスケジューラ及びコーディネータ218が確保できるようにし得る。これは、応答時間、作業量、及びデータ検索を著しく削減し得る。
【0033】
図3は、マルチクラスタウェアハウス302とマルチクラスタウェアハウス302上のクエリ304のスケジューリングとを説明する概略的ブロック図である。ウェアハウス302は、複数のサーバノードを夫々含む複数のクラスタ(クラスタ1、クラスタ2、クラスタN)を含む。一実施形態では、クラスタの各々は、同じ数のサーバを含むが、異なる実施形態ではこれは異なってもよい。一実施形態では、クラスタ中の各サーバは、同じアベイラビリティゾーンに属するが、異なるクラスタは、異なるアベイラビリティゾーンに配置され得る。ウェアハウスの可用性の概念は、ウェアハウスの全体的な可用性の割合に基づき得る。例えば、ウェアハウス302内の特定のクラスタに対する可用性は、クラスタサイズと比較して(例えば、動作可能な状態で)利用可能であるサーバの割合であり得る。しかしながら、該割合がクエリを実行するために必要とされる最小(例えば、50%)を下回る場合、該クラスタに対して可用性が0%と判定され得、ウェアハウス302、又はウェアハウス302中の幾つかのサーバが修復されるまでクエリが何ら割り当てられないことがある。本明細書で論じられるように、ウェアハウス302中のクラスタの数は、作業量又はクラスタのサーバ故障(failure)等に基づいて動的に調整され得る。
【0034】
一実施形態において、クエリスケジューラ及びコーディネータ218は、各クエリ(例えば、SQLステートメント又はSQLステートメントの一部)をその計画されたリソース消費に基づいて重み付けする。例えば、幾つかのクエリは、その他のクエリが実行のために著しくより多くの処理リソースを取り得る間に、実行のために著しくより多くのメモリを取り得る。同様に、幾つかのクエリは、メモリ及び処理の両方について高い又は低い消費を有する。リソースマネージャ102は、予測又は計画される消費が何であるかを判定し得、続いて、異なるクラスタ間で作業量を最も効果的に均衡化するためにクエリをどこに配置するかを判定可能であり得る。例えば、高消費のクエリは、低消費の多数のクエリと同じくらいのリソースを使用し得る。
【0035】
一実施形態では、クエリスケジューラ及びコーディネータ218は、ウェアハウス302の1つ以上のクラスタ上にクエリをスケジューリングし得、又は作業量が高すぎる若しくは可用性が低すぎる場合にクエリを待機し得る。例えば、クエリスケジューラ及びコーディネータ218は、ウェアハウス302のアクティブな(すなわち、サスペンドされていない)クラスタ上にクエリ304(例えば、SQLステートメント)をスケジューリングするようにまず試み得る。多数のアクティブクラスタが存在する場合、クエリスケジューラ及びコーディネータ218は、利用可能ではない、又はメモリが申し込まれ過ぎ得るためにクエリ304が実行しないであろうクラスタのセットを除外し得る。前述したように、クラスタは、ノードのサーバの50%未満が利用可能ではない(例えば、故障している)場合にデフォルトにより利用可能ではないと判定され得る。多数の可能なクラスタが残っている場合、クエリスケジューラ及びコーディネータ218は、最低負荷のクラスタを選び得る。最低負荷のクラスタは、一実施形態では、該クラスタ上で実行する全てのジョブのDOPの合計で定義される。最低負荷のクラスタはまた、該クラスタに対する全てのメモリの必要性の合計に基づき得る。負荷と等しいクラスタが多数存在する場合、クエリスケジューラ及びコーディネータ218は、同じセッションからのクエリが同じクラスタ上で実行できるように特定のクエリ304に対するセッションIDをタイブレーカとして使用し得る。ウェアハウス302中のクラスタに割り当てられているクエリ304は、実行クエリ306として示される。
【0036】
特定のクエリをスケジューリングするためのクラスタが存在しない場合、クエリスケジューラ及びコーディネータ218は、該クエリをグローバルキュー中に待機し得る。グローバリーに待機されたクエリ304は、待機クエリ308として示される。待機クエリ308は、ウェアハウス302のクラスタの1つが解放され、又は利用可能になるまで待機されたままであり得る。割り当てられるクラスタ中の1つ以上のサーバは、幾つかの実行クエリ306がクラスタの修復を待って待機しなければならない場合に、故障の疑いとしてマークされ得ることに留意されたい。
【0037】
図4は、一実施形態に従った、単一の実行プラットフォーム112上でアクティブであり得又は動作し得る複数のウェアハウスの実施形態を図示するブロック図である。多数の仮想ウェアハウス402、404、406が示され、各仮想ウェアハウスは複数のクラスタ408を含む。各クラスタ408は、プロセッサ412及びキャッシュ414(例えば、メモリ)を夫々含む多数の実行ノード410を含む。3つの仮想ウェアハウス402~406が示されるが、仮想ウェアハウスの数は動的に変更し得る。同様に、各ウェアハウス402~406中のクラスタ408の数、及び各クラスタ中の実行ノード410の数は異なる実施形態では変更し得、また、相互に対して無制限に変更し得る。更に、要求が変化した場合に新たなクラスタ408及び実行ノード410が作り出され又は除去され得るように、仮想ウェアハウス中のクラスタ408の数及びクラスタ中の実行ノード410の数は動的であり得る。
【0038】
各仮想ウェアハウス402~406は、図1に示した任意のデータ格納デバイス116~120をアクセス可能である。したがって、仮想ウェアハウス402~406は、特定のデータ格納デバイス116~120に割り当てられる必要がなく、代わりに、任意のデータ格納デバイス116~120からデータをアクセスし得る。同様に、クラスタ408及び実行ノード410の各々は、任意のデータ格納デバイス116~120からデータをアクセスし得る。幾つかの実施形態では、特定の仮想ウェアハウス又は特定の実行ノードは、特定のデータ格納デバイスに一時的に割り当てられ得るが、該仮想ウェアハウス又は実行ノードは、任意のその他のデータ格納デバイスからデータを後にアクセスし得る。
【0039】
説明される実行ノード410は、1つのキャッシュと1つのプロセッサとを夫々含むが、別の実施形態は、任意の数のプロセッサと任意の数のキャッシュとを含む実行ノードを含み得る。また、キャッシュは、異なる実行ノード410間でサイズを変更し得る。キャッシュ414は、ローカル実行ノードにおいて、格納プラットフォーム114(図1)中の1つ以上のデータ格納デバイスから検索されたデータを格納する。したがって、キャッシュは、遠隔格納システムからデータを一貫して検索するプラットフォームに生じるボトルネックの問題を削減又は取り除く。遠隔格納デバイスからデータを繰り返しアクセスすることに代えて、本明細書に記載されるシステム及び方法は、著しく速く且つ上で論じたボトルネックの問題を避ける実行ノード中のキャッシュからデータをアクセスする。幾つかの実施形態では、キャッシュは、キャッシュされたデータへの速いアクセスを提供する高速メモリデバイスを使用して実装される。各キャッシュは、格納プラットフォーム114中の任意の格納デバイスからのデータを格納することができる。
【0040】
更に、キャッシュリソース及びコンピューティングリソースは異なる実行ノード間で変更し得る。例えば、ある実行ノードは、顕著なコンピューティングリソースと最小のキャッシュリソースとを含み得、顕著なコンピューティングリソースを必要とするタスクに実行ノードを役立たせる。別の実行ノードは、顕著なキャッシュリソースと最小のコンピューティングリソースとを含み得、大量のデータのキャッシングを必要とするタスクにこの実行ノードを役立たせる。幾つかの実施形態では、特定の実行ノードと関連付けられるキャッシュリソース及びコンピューティングリソースは、実行ノードにより実行される予想タスクに基づいて、実行ノードが作り出される時に決定される。
【0041】
また、特定の実行ノードと関連付けられるキャッシュリソース及びコンピューティングリソースは、実行ノードにより実行されるタスクの変化に基づいて時間と共に変化し得る。例えば、実行ノードにより実行されるタスクがプロセッサにより多くの負担をかける場合、該特定の実行ノードにはより多くのプロセッサが割り当てられ得る。同様に、実行ノードにより実行されるタスクがより大きなキャッシュ容量を必要とする場合、該実行ノードにはより多くのキャッシュリソースが割り当てられ得る。
【0042】
仮想ウェアハウス402~406は同じ実行プラットフォーム112と関連付けられるが、仮想ウェアハウスは、多数の地理的位置に多数のコンピューティングシステムを使用して実装され得る。例えば、仮想ウェアハウス402は、第1の地理的位置にコンピューティングシステムにより実装され得るが、仮想ウェアハウス404及び406は、第2の地理的位置に別のコンピューティングシステムにより実装される。幾つかの実施形態では、これらの異なるコンピューティングシステムは、1つ以上の異なるエンティティにより維持されるクラウドベースのコンピューティングシステムである。
【0043】
また、各仮想ウェアハウスは、多数のクラスタ408を有するものとして図4に示される。各仮想ウェアハウスと関連付けられたクラスタ408は、多数の地理的位置に又は異なるアベイラビリティゾーン内に多数のコンピューティングシステムを使用して実装され得る。例えば、仮想ウェアハウス402の特定のインスタンスは、特定の地理的位置のあるコンピューティングプラットフォーム上に実行ノード410と共にクラスタ408を実装し、別の地理的位置の異なるコンピューティングプラットフォームにその他のクラスタ408及び実行ノード410を実装する。仮想ウェアハウス402~406はまたフォールトトレラントである。例えば、ある仮想ウェアハウス又は実行ノード410では、該仮想ウェアハウス又は実行ノードは、同じ又は異なる地理的位置で即座に修復される。
【0044】
特定の実行プラットフォーム112は、任意の数の仮想ウェアハウス402~406を含み得る。また、特定の実行プラットフォーム中の仮想ウェアハウスの数は、追加の処理及び/又はキャッシュリソースが必要である場合に新たな仮想ウェアハウスが作り出されるように動的である。同様に、既存の仮想ウェアハウスは、該仮想ウェアハウスと関連付けられたリソースがもはや必要でない場合に削除され得る。
【0045】
図5は、多数の分散された仮想ウェアハウス及び実行プラットフォーム群を有する別の例示的動作環境500を示すブロック図を説明する。環境500は、実行プラットフォーム群1 504及び実行プラットフォーム群2 506とデータ通信ネットワーク502を通じて通信するリソースマネージャ102を含む。実行プラットフォーム群1 504は、2つのクラスタ、具体的には、第1の仮想ウェアハウス508に対するクラスタAと第2の仮想ウェアハウス510に対するクラスタAとを含む。実行プラットフォーム群2 506は2つの追加のクラスタ、具体的には、第1の仮想ウェアハウス514に対するクラスタBと第2の仮想ウェアハウス516に対するクラスタBとを含む。リソースマネージャ102は、(実行プラットフォーム群504、506の何れの一部でもない)第1の仮想ウェアハウス512のクラスタCともデータ通信ネットワーク502を通じて通信する。
【0046】
実行プラットフォーム群504及び506と第1の仮想ウェアハウス512に対するクラスタCとは、データ通信ネットワーク518を通じてデータベース520、522、及び524と通信する。幾つかの実施形態では、データ通信ネットワーク502及び518は、同じネットワーク、又は1つ以上の重複するネットワークの組み合わせである。環境500は、データベース520~524中にデータを格納又は検索するための、多数のウェアハウスの多数のクラスタ508~516に渡るユーザデータ格納及び検索リクエストをリソースマネージャ102が調整できるようにする。実行プラットフォーム群504及び506と第1の仮想ウェアハウス512に対するクラスタCとは、同じ又は異なる地理的領域に配置され得、又は同じ又は異なるアベイラビリティゾーンに配置され得る。また、実行プラットフォーム群504及び506は、同じエンティティにより、又は異なるエ ンティティにより実装され得る。
【0047】
本明細書に記述されるシステム及び方法は、コンピューティング(又は処理)リソースとは別のサービスとしてデータが格納及びアクセスされ得るようにする。たとえ実行プラットフォームからコンピューティングリソースが何ら要求されていなかったとしても、遠隔データ源からのデータのリロードを必要とすることなくデータは仮想ウェアハウスに入手可能である。記述されるシステム及び方法は、何れの種類のデータでも有用である。特定の実施形態では、データは、構造化された最適なフォーマット中に格納される。コンピューティングサービスからのデータ格納/アクセスサービスの分離も、異なるユーザ及び群の間でのデータの共有を簡易化する。本明細書で論じられるように、各仮想ウェアハウスは、その他の仮想ウェアハウスが同じデータにアクセスしている同時であっても、アクセス許可を有する任意のデータにアクセスし得る。このアーキテクチャは、ローカルキャッシュ中に格納された何れの実データなしにクエリを実行することを支持する。本明細書に記述されるシステム及び方法は、トランスペアレントな動的データ移動を可能にし、それは、システムのユーザにトランスペアレントな方法で、遠隔格納デバイスからローカルキャッシュへデータを必要に応じて移動する。更に、コンピューティングサービスからのデータ格納サービスの分離に起因して何れの仮想ウェアハウスも何れのデータにアクセスできるので、このアーキテクチャは、従来のデータ移動なしにデータの共有を支持する。
【0048】
更に、環境500は、多数の地理的位置又はアベイラビリティゾーンに渡る単一の仮想ウェアハウスの拡散を可能にする。例えば、クラスタ508、512、及び514は、同じ仮想ウェアハウス(第1の仮想ウェアハウス)に全て属するが、異なる地理的領域又はアベイラビリティゾーンに配置され得る。停電又は故障は地理的領域又はアベイラビリティゾーンに渡って起き得るため、フォールトトレラントの向上が実現され得る。例えば、あるアベイラビリティゾーンの問題が異なるアベイラビリティゾーンへ拡散する可能性が僅かにあるか全くないように、アベイラビリティゾーンは、クラウドサービス(計算又は格納)プロバイダによって実装されることがある。したがって、同じウェアハウス内にあるが異なるアベイラビリティゾーンにあるクラスタは、何ら利用可能な実行又は計算ノードなくウェアハウスが残される可能性を顕著に減少させ得る。
【0049】
一実施形態では、本明細書に開示されるマルチクラスタウェアハウスの実施形態は、特殊なデータ定義言語(DDL)を使用し得る。以下は、マルチクラスタウェアハウスのDDLの一部であり得るコマンド又は命令の幾つかの例である。
□ create warehouse single_cluster size=xlarge; // this will create a single cluster warehouse
□ create warehouse multi_cluster size=xlarge max_cluster_count=3 min_cluster_count=1;
// this will create an x-large 3 cluster warehouse. Only one cluster will be sta rted by default
□ create warehouse multi_cluster size=xlarge max_cluster_count=3 min_cluster_count=2; // this will create an x-large warehouse with 2 clusters initially resumed
□ create warehouse multi_cluster size=xlarge max_cluster_count=3 min_cluster_count=3; // this will create an x-large warehouse with all clusters resumed
□ Note that the resource manager would try to make use of all availability zones, one per cluster. The availability zone to use for each cluster may be implemented by an infrastructure management system
□ alter warehouse <warehouse_name> set warehouse_size=<size>: allows one to change the size of the warehouse. If this warehouse is started, all clusters in the warehouse will be resized. The code to implement this instruction may include a resize operation for each cluster.
□ alter warehouse <warehouse_name> set max_cluster_count=<count> this will add or remove clusters from an existing warehouse. Internally clusters may be numbered so this operation will either add new clusters at the end of the range or remove clusters starting from the end of the range. If new clusters are created, they will be created in a suspended state. If clusters are removed and these clusters are active, they will first be inactivated (quiesced) to allow running queries to terminate.
□ drop warehouse <warehouse_name> drop warehouse and all associated clusters. Clusters will be inactivated (quiesced) before dropping them.
【0050】
図に戻ると、図6は、マルチクラスタウェアハウスのための例示的方法600を説明する概略的フローチャート図である。方法600は、図1の処理プラットフォーム100又は図1図2、若しくは図5のリソースマネージャ等の処理プラットフォーム又はリソースマネージャにより実行され得る。
【0051】
方法600が始まり、システムは、1つ以上のクラウド格納リソース中の1つ以上のデータベースに対してアクセスしクエリを実行するために、仮想ウェアハウスの一部として複数の計算クラスタを割り当てる(602)。一実施形態では、1つ以上のクラウド格納リソースの増加又は減少なしに計算クラスタの数が拡大又は縮小し得るように、複数の計算クラスタは、1つ以上のクラウド格納リソースとは無関係にシステムにより割り当てられる。システムは、複数の計算クラスタの各々に仮想ウェアハウスに対するクエリを提供する(604)。例えば、仮想ウェアハウスの複数の計算クラスタの各々に複数のクエリが提供され得る。システムは、複数の計算クラスタの作業量に基づいて、必要に応じて、動的に、仮想ウェアハウスに計算クラスタを追加し、仮想ウェアハウスから計算クラスタを除去する(606)。方法600はまた、複数の計算クラスタに対する作業量を判定することを含み得る。システムは、複数の計算クラスタの各々に対する1つ以上のプロセッサリソースと複数の計算クラスタの各々に対するメモリリソースとの可用性を判定することによって作業量を判定し得る。
【0052】
方法600は、ウェアハウス等の単一のエンティティがクエリの数に依存して拡大又は縮小できるように、データベースシステム又はデバイスによって実装され得る。具体的には、ウェアハウスの同時実行性(又は計算及びメモリの負荷)の変化が起こるように、リソースマネージャ又はその他のシステムは、ウェアハウスが拡大又は縮小できるようにし得る。
【0053】
図7は、マルチクラスタウェアハウス中の計算クラスタを動的に追加するための例示的方法700を説明する概略的フローチャート図である。方法700は、図1の処理プラットフォーム100又は図1図2、若しくは図5のリソースマネージャ等の処理プラットフォーム又はリソースマネージャによって実行され得る。方法700は、図6の方法600と組み合わせて、又は方法600とは別に実行され得る。
【0054】
方法700が始まり、システムは、クエリに対する性能メトリックに合致しながらクエリが処理されるか否かを判定する(702)。一実施形態では、方法700は、クエリ毎に性能メトリックが合致するように、計算クラスタに向けられたクエリ毎にクエリが処理され得るか否かを判定すること(702)を含む。性能メトリックは、顧客に容認されるサービスレベルアグリーメント(SLA)を含み得る。例えば、SLAは、クエリが特定時間(例えば、10秒)内にスケジューリングされることを必要とし得る。これは、任意のクエリが最大時間(例えば、10秒)を超えてグローバル待機で待機されることを制限し得る。SLAは、サービスプロバイダとしてのウェアハウスと顧客との間で予め合意され得る。SLAが何かに基づいて異なる価格帯が提示され得、又はデータベースに対するクエリのアクセス及び実行においてユーザが最小遅延を経験することを保証するためにシステムがより多くのリソースを使用することをSLAは規定し得る。
【0055】
現在割り当てられた1つ以上の計算クラスタが性能メトリックに合致するように現在の作業量と組み合わさったクエリができないとの判定に応答して、システムは新たな計算クラスタの起動を誘発する(704)。一実施形態では、現在のアクティブクラスタの数が所定の最大計算クラスタ数未満である場合にのみ、システムは起動を誘発し得る(704)。
【0056】
図8は、マルチクラスタウェアハウス中の計算クラスタを動的に除去するための例示的方法800を説明する概略的フローチャート図である。方法800は、図1の処理プラットフォーム100又は図1図2、若しくは図5のリソースマネージャ等の処理プラットフォーム又はリソースマネージャによって実行され得る。方法800は、図6及び図7の方法600又は700の内の1つ以上と組み合わせて、又は方法600又は700の1つ以上とは別に実行され得る。
【0057】
方法800が開始し、システムは、性能メトリックに合致しつつ複数の計算クラスタよりも少数の計算クラスタによって現在の作業量がサービス可能であるか否かを判定する(802)。一実施形態では、複数の計算クラスタよりも少数の計算クラスタによって現在の作業量がサービス可能であるか否かを判定すること(802)は、性能メトリックに合致しながら複数のクラスタよりも少数の計算クラスタによって現時点に至る期間の履歴的作業量がサービス可能であったか否かを判定することを含み得る。例えば、最良のクラスタが仮想ウェアハウスから除去された場合、仮想ウェアハウスは、性能メトリックに合致しつつ全てのクエリを処理可能であっただろうか。
【0058】
システムは、複数の計算クラスタよりも少数の計算クラスタにより作業量がサービス可能であるとの判定に応答して、複数の計算クラスタの内の少なくとも1つの計算クラスタを廃止する(804)(又はインアクティブにする)。システムは、アクティブクラスタの現在の数が所定の最小計算クラスタ数よりも少ない場合にのみ計算クラスタを廃止し得(804)又は除去し得る。一実施形態では、少なくとも1つの計算クラスタを廃止すること(804)は、複数の計算クラスタよりも少数の計算クラスタによってその期間の履歴的作業量がサービス可能であったとの判定に応答して廃止することを含み得る。
【0059】
一実施形態では、少なくとも1つの計算クラスタを廃止すること(804)は、少なくとも1つの計算クラスタに追加のクエリを提供又はスケジューリングすることを阻止するために、クラスタを静止させることを含む。廃止すること(804)はまた、現在割り当てられたクエリを少なくとも1つの計算クラスタが完了できるようにすることと、既にスケジューリングされた又はアクティブなクエリが完了すると、少なくとも1つの計算クラスタに対応する1つ以上のリソースを解放することを含み得る。
【0060】
図9は、マルチクラスタウェアハウスのための例示的方法900を説明する概略的フローチャート図である。方法900は、図1の処理プラットフォーム100又は図1図2、若しくは図5のリソースマネージャ等の処理プラットフォーム又はリソースマネージャによって実行され得る。方法900は、図6図7、及び図8の方法600、700、又は800の内の1つ以上と組み合わせて、又は方法600、700、又は800の1つ以上とは別に実行され得る。
【0061】
方法900が開始し、システムは、1つ以上のクラウド格納リソース中の1つ以上のデータベースに対してアクセスしクエリを実行するために、仮想ウェアハウスの一部として複数の計算クラスタを割り当てる(902)。システムは、仮想ウェアハウスに対するクエリを複数の計算クラスタの各々へ転送する(904)。該複数のクエリは、仮想ウェアハウスの複数の計算クラスタの各々に提供され得る。一実施形態では、仮想ウェアハウスに対するクエリを複数の計算クラスタの各々へ転送すること(904)は、同じセッションからのクエリがデフォルトにより同じ計算クラスタにルーティングされるように、クエリが起きたセッションに基づいてクエリをルーティングすること(906)を含む。各クラスタは、クラスタが処理するデータベースのフラグメントを持続する能力を有する。すなわち、各クラスタ(又はクラスタ中の各計算ノード)は、クラスタ上のクエリを処理しつつ現在アクセスしている全てのテーブルのキャッシュを維持し得る。したがって、リソースマネージャ又はスケジューラは、(例えば、同じセッション識別子を有する)同じクエリのストリームからのクエリを、キャッシングの効果を利用できるように同じクラスタへ動かす。幾つかのケースでは、特定のセッションを処理しているクラスタが別のクラスタよりも利用可能なリソースが非常に少ない場合、同じセッション識別子を有するクエリは、異なるクラスタ上で終わり得る。
【0062】
一実施形態では、システムは、複数の計算クラスタの各々の作業量に基づいてクエリをルーティングし得る(906)。例えば、クラスタが新たなクエリを受け入れられない場合、システムは、同じセッションに対応するクエリを異なるクラスタが処理していなかったとしても該異なるクラスタにクエリを提供し得る。一実施形態では、システムは、異なるアベイラビリティゾーン中の少なくとも2つの計算クラスタにクエリを提供し得る(904)。
【0063】
図10は、例示的コンピューティングデバイス1000を図示するブロック図である。幾つかの実施形態では、コンピューティングデバイス1000は、本明細書で論じられる1つ以上のシステム及びコンポーネントを実装するために使用される。例えば、コンピューティングデバイス1000は、ユーザ又は管理者がリソースマネージャ102をアクセスできるようにし得る。別の実施形態として、本明細書で論じられるコンポーネント、システム、又はプラットフォームは1つ以上のコンピューティングデバイス1000を含み得る。更に、コンピューティングデバイス1000は、本明細書に記述されるシステム及びコンポーネントの何れかと相互作用し得る。したがって、コンピューティングデバイス1000は、本明細書で論じられるプロシージャ及びタスク等、様々なプロシージャ及びタスクを実行するために使用され得る。コンピューティングデバイス1000は、サーバ、クライアント、又は任意のその他のコンピューティングエンティティとして機能し得る。コンピューティングデバイス1000は、デスクトップコンピュータ、ノートブックコンピュータ、サーバコンピュータ、携帯型コンピュータ、及びタブレット等の多種多様な任意のコンピューティングデバイスであり得る。
【0064】
コンピューティングデバイス1000は、1つ以上のプロセッサ1002、1つ以上のメモリデバイス1004、1つ以上のインタフェース1006、1つ以上の大容量格納デバイス1008、及び1つ以上の入出力デバイス1010を含み、それらは全てバス1012に結合される。プロセッサ1002は、メモリデバイス1004及び/又は大容量格納デバイス1008中に格納された命令を実行する1つ以上のプロセッサ又はコントローラを含む。プロセッサ1002は、キャッシュメモリ等の様々な種類のコンピュータ可読媒体をも含み得る。
【0065】
メモリデバイス1004は、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM))及び/又は不揮発性メモリ(例えば、リードオンリーメモリ(ROM))等の様々なコンピュータ可読媒体を含む。メモリデバイス1004は、フラッシュメモリ等の再書き込み可能なROMをも含み得る。
【0066】
大容量格納デバイス1008は、磁気テープ、磁気ディスク、光ディスク、及び固体メモリ(例えば、フラッシュメモリ)等の様々なコンピュータ可読媒体を含む。様々なコンピュータ可読媒体から読み出すこと、及び/又は様々なコンピュータ可読媒体に書き込むことを可能にするために、大容量格納デバイス1008には様々なドライブも含まれ得る。大容量格納デバイス1008は、取り外し可能媒体及び/又は固定型媒体を含む。
【0067】
入出力デバイス1010は、データ及び/又はその他の情報をコンピューティングデバイス1000に入力でき又はコンピューティングデバイス1000から検索できるようにする様々なデバイスを含む。例示的入出力デバイス1010は、カーソル制御デバイス、キーボード、キーパッド、マイク、モニタ若しくはその他の表示デバイス、スピーカ、プリンタ、ネットワークインタフェースカード、モデム、レンズ、及びCCD若しくはその他の画像取得デバイス等を含む。
【0068】
インタフェース1006は、コンピューティングデバイス1000がその他のシステム、デバイス、又はコンピューティング環境と相互作用できるようにする様々なインタフェースを含む。例示的インタフェース1006は、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、無線ネットワーク、及びインターネットへのインタフェース等の任意の数の異なるネットワークインタフェースを含む。
【0069】
バス1012は、プロセッサ1002、メモリデバイス1004、インタフェース1006、大容量格納デバイス1008、及び入出力デバイス1010が互いに通信すると共に、バス1012と結合されたその他のデバイス又はコンポーネントと通信することを可能にする。バス1012は、システムバス、PCIバス、IEEE1394バス、及びUSBバス等の様々な種類のバス構造体の1つ以上を表す。
(例)
【0070】
以下の例は、更なる実施形態に関連する。
【0071】
例1は、マルチクラスタウェアハウスのための、コンピュータに実装される方法である。方法は、1つ以上のクラウド格納リソース中の1つ以上のデータベースに対してアクセスしクエリを実行するために仮想ウェアハウスの一部として複数の計算クラスタを割り当てることを含む。方法は、仮想ウェアハウスに対するクエリを複数の計算クラスタの各々に提供することを含み、ここで、複数のクエリは、仮想ウェアハウスの複数の計算クラスタの各々に提供される。方法は、複数の計算クラスタの作業量に基づいて、必要に応じて、動的に、仮想ウェアハウスに計算クラスタを追加すること及び仮想ウェアハウスから計算クラスタを除去することを含む。
【0072】
例2では、例1の複数の計算クラスタは、1つ以上のクラウド格納リソースを増加又は減少させることなく計算クラスタの数を拡大又は縮小し得るように、1つ以上のクラウド格納リソースとは無関係に割り当てられる。
【0073】
例3では、例1~例2の何れかの方法は、複数の計算クラスタに対する作業量を判定することを更に含む。作業量を判定することは、複数の計算クラスタの各々に対する1つ以上のプロセッサリソースと複数の計算クラスタの各々に対するメモリリソースとの可用性を判定することを含む。
【0074】
例4では、例1~例3の何れかにおいて計算クラスタを動的に追加することは、クエリに対する性能メトリックに合致しながらクエリが処理され得るかを判定することと、現在の作業量と組み合わさるクエリが、現在割り当てられた1つ以上のクラスタが性能メトリックに合致するようにできないとの判定に応答して、新たな計算クラスタの起動を誘発することを含む。
【0075】
例5では、例4の方法は、クエリ毎に性能メトリックが合致するように計算クラスタに向けられたクエリ毎にクエリが処理され得るか否かを判定することを含む。
【0076】
例6では、例4~例5の何れかにおける性能メトリックは、顧客に容認されるサービスレベルアグリーメントを含む。
【0077】
例7では、例4~例6の何れかにおける性能メトリックは、クエリが待機される最大期間を含む。
【0078】
例8では、例1~例7の何れかにおいて計算クラスタを動的に追加することは、所定の最大計算クラスタ数になるまで計算クラスタを追加することを含む。
【0079】
例9では、例1~例8の何れかにおいて計算クラスタを動的に除去することは、所定の最小計算クラスタ数になるまで計算クラスタを除去することを含む。
【0080】
例10では、例1~9の何れかにおいて計算クラスタを除去することは、性能メトリックに合致しつつ複数の計算クラスタよりも少数の計算クラスタによって現在の作業量がサービス可能であるか否かを判定することと、複数の計算クラスタよりも少数の計算クラスタによって作業量がサービス可能であるとの判定に応答して複数の計算クラスタの内の少なくとも1つの計算クラスタを廃止することを含む。
【0081】
例11では、例10において少なくとも1つの計算クラスタを廃止することは、少なくとも1つの計算クラスタへの追加のクエリの提供を阻止することと、現在割り当てられたクエリを少なくとも1つの計算クラスタが完了できるようにすることと、現在割り当てられたクエリが完了すると、少なくとも1つの計算クラスタに対応する1つ以上のリソースを解放することを含む。
【0082】
例12では、例10~例11の何れかにおいて現在の作業量が複数の計算クラスタよりも少数の計算クラスタによってサービス可能であるか否かを判定することは、性能メトリックに合致しながら複数のクラスタよりも少数の計算クラスタによって現時点に至る期間の履歴的作業量がサービス可能であったか否かを判定することを含む。少なくとも1つの計算クラスタを廃止することは、複数の計算クラスタよりも少数の計算クラスタによってその期間の履歴的作業量がサービス可能であったとの判定に応答して廃止することを含む。
【0083】
例13では、例1~例12の何れかにおいて仮想ウェアハウスに対するクエリを複数の計算クラスタの各々に提供することは、クエリが起きたセッションに基づいてクエリをルーティングすることを含む。
【0084】
例14では、例1~例13の何れかにおいて仮想ウェアハウスに対するクエリを複数の計算クラスタの各々に提供することは、複数の計算クラスタの各々の作業量に基づいてクエリをルーティングすることを含む。
【0085】
例15では、例1~例14の何れかにおいて複数の計算クラスタを割り当てることは、異なるアベイラビリティゾーン中の少なくとも2つの計算クラスタを割り当てることを含む。
【0086】
例16は、例1~15の何れかのような方法を実行するための手段を含む装置である。
【0087】
例17は、実行する場合に、例1~例16の何れかの方法を実装し、又は例1~例16の何れかの装置を実現する機械可読命令を含む機械可読ストレージである。
【0088】
本明細書のフロー図及びブロック図は、本開示の様々な実施形態に従ったシステム、方法、及びコンピュータプログラム製品の可能的実装のアーキテクチャ、機能、及び動作を説明する。これに関して、フロー図又はブロック図の各ブロックは、指定された論理的機能を実装するための1つ以上の実行可能な命令を含むコードのモジュール、セグメント、又は一部を表し得る。ブロック図及び/又はフロー図の各ブロック、並びにブロック図及び/又はフロー図の中のブロックの組み合わせは、特定の機能又は行為を実行する専用のハードウェアベースのシステム、又は専用ハードウェアとコンピュータ命令との組み合わせにより実装され得ることも留意すべきである。これらのコンピュータプログラム命令はまた、フロー図及び/又はブロック図の1つ以上のブロックで指定される機能/行為を実装する命令手段を含む製造物をコンピュータ可読媒体中に格納された命令が生み出すように、特定の方法で機能するようにコンピュータ又はその他のプログラム可能データ処理装置に指示し得るコンピュータ可読媒体中に格納され得る。
【0089】
本明細書に記述されるシステム及び方法は、新たなデータ処理プラットフォーム、方法、システム、及びアルゴリズムを使用して、自在かつ拡大縮小可能なデータウェアハウスを提供する。幾つかの実施形態では、記述されるシステム及び方法は、クラウドベースの格納リソース及びコンピューティングリソース等を支持するクラウド基盤を活用する。例示的なクラウドベースの格納リソースは、低コストでオンデマンドで利用可能な顕著な格納容量を提供する。更に、これらのクラウドベースの格納リソースは、フォールトトレラントで高度に拡大縮小可能であり得、それらは、私的なデータ格納システムで達成するのにはコストがかかり得る。例示的なクラウドベースのコンピューティングリソースは、オンデマンドで利用可能であり、リソースの実際の使用レベルに基づいて価格設定され得る。典型的には、クラウド基盤は、速やかに、動的に発展し、設定され、且つ廃止される。
【0090】
記述されるシステム及び方法では、データ格納システムは、SQL(構造化クエリ言語)ベースの関連データベースを利用する。しかしながら、これらのシステム及び方法は、任意のデータ格納アーキテクチャを使用して、且つデータベース内でデータを格納及び検索するための任意の言語を使用して、任意の種類のデータベースに適用可能である。本明細書に記述されるシステム及び方法は、異なる顧客/クライアント間及び同じ顧客/クライアント内の異なるユーザ間でコンピューティングリソース及びデータの分離を支持するマルチテナントシステムをも提供し得る。
【0091】
様々な技術、又は幾つかの態様若しくはその一部は、フロッピーディスク、CD-ROM、ハードドライブ、非一時的コンピュータ可読格納媒体、又は任意のその他の機械可読格納媒体等の有形媒体中に具体化されたプログラムコード(例えば、命令)の形を取り得、ここで、プログラムコードがコンピュータ等の機械にロードされ実行される場合に、該機械は様々な技術を行うための装置になる。プログラム可能コンピュータ上のプログラム実行コードのケースでは、コンピューティングデバイスは、プロセッサ、プロセッサにより読み出し可能な格納媒体(揮発性及び不揮発性のメモリ並びに/又は格納素子を含む)、少なくとも1つの入力デバイス、及び少なくとも1つの出力デバイスを含み得る。揮発性及び不揮発性のメモリ並びに/又は格納素子は、RAM、EPROM、フラッシュドライブ、光ドライブ、磁気ハードドライブ、又は電子データを格納するための別の媒体であり得る。本明細書に記述される様々な技術を実装又は利用し得る1つ以上のプログラムは、アプリケーションプログラミングインタフェース(API)及び再利用可能制御等を使用し得る。そうしたプログラムは、コンピュータシステムと通信するための高水準な手続き又はオブジェクト指向のプログラミング言語で実装され得る。しかしながら、プログラムは、必要に応じてアセンブリ又は機械言語で実装され得る。何れのケースでも、言語は、コンパイル又は翻訳された言語であり得、ハードウェア実装と結合され得る。
【0092】
この明細書に記述される機能部の多くは1つ以上のコンポーネントとして実装され得、それは、それらの実装独立をより具体的に強調するために使用される用語であることを理解すべきである。例えば、コンポーネントは、カスタム超大規模集積(VLSI)回路若しくはゲートアレイを含むハードウェア回路、論理チップ等の既製品半導体、トランジスタ、又はその他の個別部品として実装され得る。コンポーネントはまた、フィールドプログラマブルゲートアレイ、プログラム可能アレイ論理、又はプログラム可能論理デバイス等のプログラム可能ハードウェアデバイスに実装され得る。
【0093】
コンポーネントはまた、様々な種類のプロセッサによる実行用のソフトウェアに実装され得る。実行可能コードの識別コンポーネントは、例えば、コンピュータ命令の1つ以上の物理的又は論理的ブロックを含み得、それは、例えば、オブジェクト、手順、又は機能として組織化され得る。それにもかかわらず、識別コンポーネントの実行可能性は、相互に物理的に配置される必要がないが、論理的に相互に結合される場合に、コンポーネントを含み且つ該コンポーネントの規定された目的を実現する異なる位置に格納された異種の命令を含み得る。
【0094】
実際、実行可能コードのコンポーネントは、単一の命令又は多数の命令であり得、異なるプログラムの中で幾つかの異なるコードセグメントに渡る分散もされ得る。同様に、運用データは、コンポーネント内に本明細書で識別及び説明され得、任意の適切な形式で具体化され得、任意の適切な種類のデータ構造体内に組織化され得る。運用データは、単一のデータセットとして収集され得、又は異なる格納デバイスに渡ることを含む異なる位置に渡って分散され得、少なくとも部分的には、単にシステム又はネットワーク上の電子信号として存在し得る。コンポーネントは、パッシブ又はアクティブであり得、所望の機能を実行するように動作可能なエージェントを含む。
【0095】
この明細書を通じて“例”との言及は、該例と併せて記述される特定のフィーチャ、構造体、又は特徴が本開示の少なくとも1つの実施形態に含まれることを意味する。したがって、この明細書を通じた様々な位置における句“例では”の出現は、必ずしも全てが同じ実施形態に言及しない。
【0096】
本明細書で使用されるように、複数の項目、構造的要素、組成上の要素、及び/又は材料は、便宜上、共通のリストで提示され得る。しかしながら、これらのリストは、リストの各要素が別々のユニークな要素として独立して識別されるように解釈されるべきである。したがって、そうしたリストの個々の要素は、正反対に示すことなく共通のグループ内のその提示に基づいて、単に同じリストの任意のその他の要素の事実上の均等物として何ら解釈されるべきではない。また、本開示の様々な実施形態及び例は、それらの様々なコンポーネントに対する代替案と共に本明細書に言及され得る。そうした実施形態、例、及び代替案は、相互の事実上の均等物として解釈されるべきではないが、本開示の別々の自律的な表現として解釈されるべきことを理解される。
【0097】
明確にするために幾つかの詳細が前述されたが、その原理から逸脱することなく幾つかの変更及び修正がなされるであろう。本明細書に記述された処理及び装置の両方を実装する多くの別な方法があることに留意すべきである。したがって、本実施形態は、例証であって非限定的に考慮されるべきである。
【0098】
本開示の基礎となる原理から逸脱することなく上述した実施形態の詳細に多くの変更がなされ得ることを当業者は認めるであろう。本開示の範囲は、それ故、以下の請求項によ ってのみ決定されるべきである。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10