(57)【要約】  カタログオブジェクトをクローン化するための例示的なシステム及び方法を開示する。一具体例では、方法は、データセットに関連する元のカタログオブジェクトを識別し、データ自体をコピーすることなく元のカタログオブジェクトの複製コピーを作成する。この方法は、複製カタログオブジェクトを使用してデータセットへのアクセスを可能にし、複製カタログオブジェクトとは独立して元のカタログオブジェクトに関連するデータを変更することをサポートする。元のカタログオブジェクトに関連するデータの変更が完了したときに、複製カタログオブジェクトを削除することができる。【選択図】図１
2019522844.tif 000002
【特許請求の範囲】
【請求項１】
データベース内のオブジェクトをクローン化するためのシステムであって、
データセットに関連する元のオブジェクトを識別する手段と、
データ自体をコピーすることなく、同じデータセットに関連する前記元のオブジェクトの複製コピーを作成する手段と、
複製されたオブジェクトとは独立して、前記元のオブジェクトに関連するデータの変更を可能にする手段と、
前記元のオブジェクトに関連するデータの変更が完了したときに、前記複製されたオブジェクトを削除する手段と、
を備えることを特徴とするシステム。
【請求項２】
前記元のオブジェクトの複製コピーを作成する手段は、前記データセットに関連するメタデータを前記複製されたオブジェクトにコピーすることを含むことを特徴とする請求項１に記載のシステム。
【請求項３】
前記メタデータは、前記データセットに保存されているデータのインベントリを含むことを特徴とする請求項２に記載のシステム。
【請求項４】
前記メタデータは、前記データセットに含まれる実際のデータへのアクセスを必要とすることなく、前記データセットに関する情報を識別することを特徴とする請求項２に記載のシステム。
【請求項５】
前記元のオブジェクトは、データ保存システム内のデータの論理グループを表すことを特徴とする請求項１に記載のシステム。
【請求項６】
前記元のオブジェクトは、テーブル、データベース、スキーマ、アカウント、制約、ファイルフォーマット、機能、役割、シーケンス、ステージ、列、ユーザ、ボリューム、又はカタログオブジェクトのうちの１つを含むことを特徴とする請求項１に記載のシステム。
【請求項７】
前記元のオブジェクトに関連する変更データは、前記複製されたオブジェクトにとって不可視であることを特徴とする請求項１に記載のシステム。
【請求項８】
前記複製されたオブジェクトに関連する変更データは、前記元のオブジェクトにとって不可視であることを特徴とする請求項１に記載のシステム。
【請求項９】
データベース内のオブジェクトをクローン化するためのシステムであって、前記システムが、
データセットに関連する元のオブジェクトを保存するように構成されたストレージプラットフォームと、
リソースマネージャと、
を備え、
前記リソースマネージャが、
データ自体をコピーすることなく、同じデータセットに関連する前記元のオブジェクトの複製コピーを作成し、
複製されたオブジェクトとは独立して、前記元のオブジェクトに関連するデータの変更を可能にし、
前記元のオブジェクトに関連するデータの変更が完了したときに、前記複製されたオブジェクトを削除するように構成されている、
ことを特徴とするシステム。
【請求項１０】
前記リソースマネージャはさらに、前記データセットに関連するメタデータを前記複製されたオブジェクトにコピーするように構成されていることを特徴とする請求項９に記載のシステム。
【請求項１１】
前記メタデータは、前記データセットに保存されているデータのインベントリを含むことを特徴とする請求項１０に記載のシステム。
【請求項１２】
前記メタデータは、前記データセットに含まれる実際のデータへのアクセスを必要とすることなく、前記データセットに関する情報を識別することを特徴とする請求項１０に記載のシステム。
【請求項１３】
前記元のオブジェクトは、データ保存システム内のデータの論理グループを表すことを特徴とする請求項９に記載のシステム。
【請求項１４】
前記元のオブジェクトは、テーブル、データベース、スキーマ、アカウント、制約、ファイルフォーマット、機能、役割、シーケンス、ステージ、列、ユーザ、ボリューム、又はカタログオブジェクトのうちの１つを含むことを特徴とする請求項９に記載のシステム。
【請求項１５】
前記元のオブジェクトに関連する変更データは、前記複製されたオブジェクトにとって不可視であることを特徴とする請求項９に記載のシステム。
【請求項１６】
前記複製されたオブジェクトに関連する変更データは、前記元のオブジェクトにとって不可視であることを特徴とする請求項９に記載のシステム。
【請求項１７】
データセットに関連する元のオブジェクトを識別すること、
１つ以上のプロセッサを使用して、データ自体をコピーすることなく、同じデータセットに関連する前記元のオブジェクトの複製コピーを作成すること、
複製されたオブジェクトを使用して前記データセットへのアクセスを可能にすること、
前記複製されたオブジェクトとは独立して、前記元のオブジェクトに関連するデータを変更すること、及び
前記元のオブジェクトに関連するデータの変更が完了したときに、前記複製されたオブジェクトを削除すること、
を含むことを特徴とする方法。
【請求項１８】
前記元のオブジェクトの複製コピーを作成することは、前記データセットに関連するメタデータを前記複製されたオブジェクトにコピーすることを含むことを特徴とする請求項１７に記載の方法。
【請求項１９】
前記メタデータは、前記データセットに保存されているデータのインベントリを含むことを特徴とする請求項１８に記載の方法。
【請求項２０】
前記メタデータは、前記データセットに含まれる実際のデータへのアクセスを必要とすることなく、前記データセットに関する情報を識別することを特徴とする請求項１８に記載の方法。
【請求項２１】
前記元のオブジェクトは、データ保存システム内のデータの論理グループを表すことを特徴とする請求項１７に記載の方法。
【請求項２２】
前記元のオブジェクトは、テーブル、データベース、スキーマ、アカウント、制約、ファイルフォーマット、機能、役割、シーケンス、ステージ、列、ユーザ、ボリューム、又はカタログオブジェクトのうちの１つを含むことを特徴とする請求項１７に記載の方法。
【請求項２３】
前記複製されたオブジェクトは、読取専用であることを特徴とする請求項１７に記載の方法。
【請求項２４】
前記元のオブジェクトに関連する変更データは、前記複製されたオブジェクトにとって不可視であることを特徴とする請求項１７に記載の方法。
【請求項２５】
前記複製されたオブジェクトに関連する変更データは、前記元のオブジェクトにとって不可視であることを特徴とする請求項１７に記載の方法。
【請求項２６】
前記元のオブジェクトから削除されたデータは、前記複製されたオブジェクトにとって可視のままであることを特徴とする請求項１７に記載の方法。
【請求項２７】
前記複製されたオブジェクトから削除されたデータは、前記元のオブジェクトにとって可視のままであることを特徴とする請求項１７に記載の方法。
【請求項２８】
前記元のオブジェクトに関連する挿入されたデータは、前記複製されたオブジェクトにとって不可視であることを特徴とする請求項１７に記載の方法。
【請求項２９】
前記複製されたオブジェクトに関連する挿入されたデータは、前記元のオブジェクトにとって不可視であることを特徴とする請求項１７に記載の方法。
【請求項３０】
前記元のオブジェクトに関連するデータの変更が完了したときに、前記元のオブジェクトを削除することを更に含むことを特徴とする請求項１７に記載の方法。
【請求項３１】
前記複製されたオブジェクトは、全ての世代の子の複製された階層を含むことを特徴とする請求項１７に記載の方法。
【発明の詳細な説明】
【関連出願】
【０００１】
本出願は、２０１４年１０月２０日に出願された米国特許出願第１４ ／ ５１８，８８４号、発明の名称「Resource management systems and methods」の一部継続出願であり、この文献の開示は、全体が参照により本明細書に援用される。また、上記の米国特許出願は、２０１４年２月１９日に出願された米国仮特許出願第６１ ／ ９４１，９８６号、発明の名称「Apparatus and method for enterprise data warehouse data processing on cloud infrastructure」の優先権を主張しており、この文献の開示は、全体が参照により本明細書に援用される。
【技術分野】
【０００２】
本開示は、データの保存及び検索をサポートするシステムおよび方法に関する。
【背景技術】
【０００３】
現在、多くの既存のデータ保存及び検索システムが利用可能である。例えば、共有ディスクシステムでは、データクラスタ内の全ての処理ノードからアクセス可能な共有ストレージデバイスに全てのデータが保存される。このタイプのシステムでは、データクラスタ内の全ての処理ノードが一貫したバージョンのデータにアクセスできるように、全てのデータ変更が共有ストレージデバイスに書き込まれる。共有ディスクシステムにおいて処理ノードの数が増加すると、共有ストレージデバイス（及び処理ノードと共有ストレージデバイスとの間の通信リンク）がボトルネックとなり、データの読取及びデータの書込動作が遅くなる。このボトルネックは、処理ノードが追加されると更に深刻化する。したがって、既存の共有ディスクシステムでは、このボトルネックの問題のために、スケーラビリティに限界がある。
【０００４】
「共有なしアーキテクチャ（shared-nothing architecture）」と呼ばれる他のデータ保存及び検索システムも知られている。このアーキテクチャでは、データが複数の処理ノードに分散され、各ノードがデータベース全体にデータのサブセットを保存する。新しい処理ノードが追加又は削除された場合、共有なしアーキテクチャでは、複数の処理ノード間でデータを並べ替える必要がある。このデータの並べ替えは時間がかかり、データの並べ替え中に実行されるデータの読出／書込処理に支障が生じる可能性がある。また、特定のノードに対するデータの類似性により、一般的なデータのデータクラスタに「ホットスポット」が生じる可能性がある。更に、各処理ノードは、保存機能も実行するため、このアーキテクチャは、データを保存するために少なくとも１つの処理ノードを必要とする。したがって、全ての処理ノードが削除された場合、共有なしアーキテクチャは、データを保存できない。更に、共有なしアーキテクチャでは、データが多くの異なる処理ノードに亘って分散しているため、データの管理が複雑である。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本明細書に記述するシステム及び方法は、上述した既存のシステムの制約を軽減し、データ保存及びデータ検索の改善された手法を提供する。
【０００６】
本明細書に記述するシステム及び方法は、既存のシステムが直面する問題を発生させることなく、データを保存及び検索するための新しいプラットフォームを提供する。例えば、この新しいプラットフォームは、共有なしアーキテクチャで要求されているようなデータファイルの並べ替えを必要とすることなく、新しいノードの追加をサポートする。更に、共有ディスクシステムで一般的なボトルネックを発生させることなく、ノードをプラットフォームに追加できる。この新しいプラットフォームは、一部のノードがメンテナンスのためにオフラインになっている場合や障害が発生した場合でも、データの読取及び書込動作に常に使用できる。ここに開示するプラットフォームは、データストレージリソースを演算リソースから分離するため、専用の演算リソースを使用する必要なく、データを保存できる。これは、全ての演算リソースが削除されるとデータを保存できない非共有アーキテクチャに対する改善点である。すなわち、この新しいプラットフォームでは、演算リソースが使用できない又は他のタスクを実行している場合でもデータを保存し続けることができる。
【課題を解決するための手段】
【０００７】
以下により詳細に説明するように、ここに開示するシステム及び方法は、データベースウェアハウスに保存されている大量のデータのコピーをサポートする。ここでは、クローン化技術（cloning technique）を使用して、データ自体を実際にコピーすることなく、データのコピーに関連する新しいオブジェクトを作成する。このクローン化技術により、大量のデータを更新し、特定のデータセットを試す処理が単純化される。具体的には、ここに開示するシステム及び方法は、データセットに関連する元のカタログオブジェクトを識別し、データ自体をコピーすることなく元のカタログオブジェクトの複製コピーを作成できる。このシステムにより、複製カタログオブジェクトを使用して、データ保存システム内のデータセットにアクセスすることができる。元のカタログオブジェクトに関連するデータは、複製カタログオブジェクトとは独立して変更することができる。元のカタログオブジェクトに関連するデータが変更された後、このシステムは、複製カタログオブジェクトを削除でき、又は元のカタログオブジェクトを削除できる。本明細書で説明するように、例示的なカタログオブジェクトは、スキーマ、テーブル、ビュー、列、制約、シーケンス、機能、ファイルフォーマット、ステージ等のデータベースオブジェクトを定義するメタデータを含むデータベースインスタンスを含む。他の例示的なカタログオブジェクトは、任意の種類のデータ又はデータ構造を含むことができる。様々なシステム及び方法の説明において、「カタログオブジェクト」は「スキーマオブジェクト」とも呼ばれる。
【０００８】
以下の図を参照して、本開示の非限定的かつ非排他的な実施形態を記述する。別段の指定がない限り、各図における同様の参照符号は、同様の部分を指示している。
【図面の簡単な説明】
【０００９】
【図１】本明細書に記述するシステム及び方法の例示的な実施形態を示すブロック図である。
【図２】リソースマネージャの一実施形態を示すブロック図である。
【図３】実行プラットフォームの一実施形態を示すブロック図である。
【図４】複数のユーザが複数の仮想ウェアハウスを介して複数のデータベースにアクセスする例示的な動作環境を示すブロック図である。
【図５】複数のユーザが負荷バランサ及び仮想ウェアハウスグループに含まれる複数の仮想ウェアハウスを介して複数のデータベースにアクセスする、別の例示的な動作環境を示すブロック図である。
【図６】複数の分散仮想ウェアハウス及び仮想ウェアハウスグループを有する他の例示的な動作環境を示すブロック図である。
【図７】データ保存及び検索動作を管理するための方法の一実施形態を示すフローチャートである。
【図８】カタログオブジェクトをクローン化するための方法の一実施形態を示すフローチャートである。
【図９】一時的複製カタログオブジェクトを作成する方法の一実施形態を示すフローチャートである。
【図１０】複数のファイルにアクセスする元のテーブルオブジェクト及びクローン化されたテーブルオブジェクトの一実施形態を示す図である。
【図１１】例示的な演算デバイスを示すブロック図である。
【発明を実施するための形態】
【００１０】
以下の説明では、説明の一部を構成する添付の図面を参照し、図面は、本開示を実施できる特定の例示的な実施形態を例示的に示している。これらの実施形態は、当業者が本明細書に開示された概念を実施できるよう十分に詳細に記載されており、本開示の範囲から逸脱することなく、開示された様々な実施形態を修正し、他の実施形態を利用してもよいことは明らかである。したがって、以下の詳細な説明は、限定的な意味で解釈されるべきではない。
【００１１】
本明細書を通して、「一実施形態」、「実施形態」、「一例」又は「例」という用語は、その実施形態又は実施例に関連して説明した特定の特徴、構造又は特性が本開示の少なくとも１つの実施形態に含まれることを意味する。したがって、本明細書の様々な部分における「一実施形態において」、「実施形態では」、「一例」又は「例」等の句は、必ずしも全て同じ実施形態又は実施例を指すものではない。更に、本明細書に添付される図面は当業者への説明を目的としており、図面は必ずしも一定の縮尺で描かれているわけではない。
【００１２】
本開示に基づく実施形態は、装置、方法又はコンピュータプログラム製品として具現化できる。したがって、本開示は、完全にハードウェアで構成される実施形態、完全にソフトウェア（ファームウェア、常駐ソフトウェア、マイクロコード等を含む。）で構成される実施形態、又は本明細書において総称的に「回路」、「モジュール」又は「システム」と呼ぶソフトウェア及びハードウェアの態様を組み合わせた実施形態の形式で実現してもよい。更に、本開示の実施形態は、媒体に組み込まれたコンピュータ使用可能プログラムコードを有する任意の有形の媒体に組み込まれたコンピュータプログラム製品の形式で実現することもできる。
【００１３】
１つ又は複数のコンピュータ使用可能媒体又はコンピュータ可読媒体の任意の組合せを利用できる。例えば、コンピュータ可読媒体は、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ（random access memory：ＲＡＭ）デバイス、リードオンリーメモリ（read-only memory：ＲＯＭ）デバイス、消去可能プログラマブル読出専用メモリ（erasable programmable read-only memory：ＥＰＲＯＭ又はフラッシュメモリ）デバイス、携帯用コンパクトディスク読出専用メモリ（compact disc read-only memory：ＣＤ−ＲＯＭ）、光記憶デバイス、及び磁気記憶デバイスのうちの１つ又は複数を含むことができる。本開示の動作を実行するためのコンピュータプログラムコードは、１つ又は複数のプログラミング言語の任意の組み合わせで書くことができる。このようなコードは、ソースコードから、コードが実行されることになるデバイス又はコンピュータに適したコンピュータ可読アセンブリ言語又はマシンコードにコンパイルしてもよい。
【００１４】
実施形態は、クラウドコンピューティング環境において実施してもよい。この説明及び特許請求の範囲において、「クラウドコンピューティング」は、構成可能な演算リソース（例えば、ネットワーク、サーバ、ストレージ、アプリケーション、及びサービス）の共有プールへのユビキタスで便利なオンデマンドネットワークアクセスを可能にするためのモデルと定義でき、これは、仮想化によって迅速にセットアップされ、最小限の管理作業又はサービスプロバイダとのインタラクションによってリリースされ、必要に応じてスケーリングされる。クラウドモデルは、様々な特性（例えば、オンデマンドセルフサービス、ブロードネットワークアクセス、リソースプーリング、迅速な弾力性、及び測定されたサービス）、サービスモデル（例えば、サービスとしてのソフトウェア（Software as a Service：ＳａａＳ）、サービスとしてのプラットフォーム（Platform as a Service：ＰａａＳ）、及びサービスとしてのインフラストラクチャ（Infrastructure as a Service：ＩａａＳ））、及び展開モデル（例えば、プライベートクラウド、コミュニティクラウド、パブリッククラウド、及びハイブリッドクラウド）を有することができる。
【００１５】
添付の図面のフローチャート及びブロック図は、本開示の様々な実施形態に基づくシステム、方法、及びコンピュータプログラム製品の可能な具体例のアーキテクチャ、機能、及び動作を示す。これに関して、フローチャート又はブロック図の各ブロックは、指定された論理機能を実装するための１つ又は複数の実行可能命令を含むモジュール、セグメント、又はコードの一部を表すことができる。なお、ブロック図及び／又はフローチャートの各ブロック、並びにブロック図及び／又はフローチャート内のブロックの組み合わせは、指定された機能又は動作を実行する専用ハードウェアベースのシステム、又は専用ハードウェアとコンピュータの命令の組み合わせによって実施してもよい。また、これらのコンピュータプログラム命令は、コンピュータ又は他のプログラム可能データ処理装置に特定の方式で機能するように指示できるコンピュータ可読媒体に保存でき、すなわち、コンピュータ可読媒体に保存された命令は、フローチャート及び／又はブロック図ブロック又は複数のブロック図で指定された機能／動作を実施する命令手段を含む製品を実現する。
【００１６】
本明細書に開示するシステム及び方法は、新しいデータ処理プラットフォームを使用して柔軟かつスケーラブルなデータウェアハウスを提供する。幾つかの実施形態では、ここに開示するシステム及び方法は、クラウドベースのストレージリソース、演算リソース等をサポートするクラウドインフラストラクチャを利用する。例示的なクラウドベースのストレージリソースは、低コストでオンデマンドで利用可能な大きなストレージ容量を提供する。更に、これらのクラウドベースのストレージリソースは、フォールトトレラント（fault tolerant）かつ高度にスケーラブルであってもよく、これは、プライベートデータストレージシステムにおいて達成するには高コストになる可能性がある。例示的なクラウドベースの演算リソースは、オンデマンドで利用可能であり、リソースの実際の使用レベルに基づいて価格設定してもよい。クラウドインフラストラクチャは、通常、速やかに動的に展開、再設定、及び廃止される。
【００１７】
ここに開示するシステム及び方法において、データ保存システムは、ＳＱＬ（Structured Query Language：構造化照会言語）ベースのリレーショナルデータベースを利用する。なお、これらのシステム及び方法は、任意のデータ保存アーキテクチャを使用し、任意の言語を使用してデータ保存及び検索プラットフォーム内でデータを保存及び検索する、任意の種類のデータ保存及び検索プラットフォーム、及び任意の種類のデータベースに適用可能である。本明細書において、システム及び方法は、更に、異なる顧客／クライアント間及び同じ顧客／クライアント内の異なるユーザ間で演算リソース及びデータの分離をサポートするマルチテナントシステムを提供する。
【００１８】
図１は、新しいデータ処理プラットフォーム１００の例示的な実施形態を示すブロック図である。図１に示すように、リソースマネージャ１０２は、複数のユーザ１０４、１０６、１０８に接続されている。特定の具体例では、リソースマネージャ１０２は、データ処理プラットフォーム１００へのアクセスを望む任意の数のユーザをサポートできる。ユーザ１０４〜１０８は、例えば、データ保存及び検索要求を提供するエンドユーザ、本明細書に開示するシステム及び方法を管理するシステム管理者、並びにリソースマネージャ１０２とインタラクトする他のコンポーネント／デバイスを含むことができる。リソースマネージャ１０２は、データ処理プラットフォーム１００内の全てのシステム及び構成要素の動作をサポートする様々なサービス及び機能を提供する。本明細書におけるリソースマネージャ１０２は、本明細書で説明する様々な機能を実行する「グローバルサービスシステム」と呼ばれることもある。
【００１９】
リソースマネージャ１０２は、データ処理プラットフォーム１００全体に保存されているデータ全体に関連するメタデータ１１０にも接続されている。幾つかの実施形態では、メタデータ１１０は、遠隔データ保存システムに保存されているデータのカタログ、及びローカルキャッシュから利用可能なデータを含む。特定の実施形態では、遠隔データ保存システムに保存されているデータのカタログは、遠隔データ保存システムに保存されているデータの要約を含む。更に、メタデータ１１０は、データが遠隔データ保存システム及びローカルキャッシュ内でどのように編成されるかに関する情報を含むことができる。メタデータ１１０により、システム及びサービスは、ストレージデバイスから実際のデータをロード又はアクセスすることなくデータの一部にアクセスする必要があるかどうかを判定することができる。
【００２０】
リソースマネージャ１０２は、更に、実行プラットフォーム１１２に接続されており、実行プラットフォーム１１２は、以下で更に詳細に説明するように、様々なデータ保存及びデータ検索タスクを実行する複数の演算リソースを提供する。実行プラットフォーム１１２は、ストレージプラットフォーム１１４の一部である複数のデータストレージデバイス１１６、１１８、１２０に接続されている。図１には３つのデータストレージデバイス１１６、１１８、１２０が図示されているが、実行プラットフォーム１１２は、任意の数のデータストレージデバイスと通信できる。幾つかの実施形態では、データストレージデバイス１１６、１１８、１２０は、１つ以上の地理的位置に配置されたクラウドベースのストレージデバイスである。例えば、データストレージデバイス１１６、１１８、１２０は、パブリッククラウドインフラストラクチャ又はプライベートクラウドインフラストラクチャの一部であってもよい。データストレージデバイス１１６、１１８、１２０は、ハードディスクドライブ（hard disk drive：ＨＤＤ）、ソリッドステートドライブ（solid state drive：ＳＳＤ）、ストレージクラスタ、ＡｍａｚｏｎＳ３ストレージシステム、又は他の任意のデータストレージ技術であってもよい。更に、ストレージプラットフォーム１１４は、分散ファイルシステム（例えば、Ｈａｄｏｏｐ分散ファイルシステム（Hadoop Distributed File System；ＨＤＦＳ））、オブジェクトストレージシステム等を含むことができる。
【００２１】
特定の実施形態では、リソースマネージャ１０２と、ユーザ１０４〜１０８、メタデータ１１０、及び実行プラットフォーム１１２との間の通信リンクは、１つ以上のデータ通信ネットワークを介して実現される。同様に、実行プラットフォーム１１２と、ストレージプラットフォーム１１４内のデータストレージデバイス１１６〜１２０との間の通信リンクは、１つ以上のデータ通信ネットワークを介して実現される。これらのデータ通信ネットワークは、任意の通信プロトコル及び任意の種類の通信媒体を利用できる。幾つかの実施形態では、データ通信ネットワークは、互いに接続された２つ以上のデータ通信ネットワーク（又はサブネットワーク）の組み合わせである。他の実施形態では、これらの通信リンクは、任意の種類の通信媒体及び任意の通信プロトコルを使用して実現される。
【００２２】
図１に示すように、データストレージデバイス１１６、１１８、１２０は、実行プラットフォーム１１２に関連する演算リソースから分離されている。このアーキテクチャは、データ保存／検索のニーズの変化、並びにデータ処理プラットフォーム１００にアクセスするユーザ及びシステムのニーズの変化に基づいて、データ処理プラットフォーム１００に対する動的な変更をサポートする。このような動的な変更のサポートにより、データ処理プラットフォーム１００内のシステム及びコンポーネントに対する要求の変化に応じて、データ処理プラットフォーム１００を迅速に拡張することが可能になる。データストレージデバイスから演算リソースを分離することにより、対応する大量の演算リソースを必要とすることなく、大量のデータの保存がサポートされる。同様に、このリソースの分離により、利用可能なデータストレージリソースを対応させて増加させる必要なく、特定の時間に利用される演算リソースの大幅な増加をサポートできる。
【００２３】
図１では、リソースマネージャ１０２、メタデータ１１０、実行プラットフォーム１１２、及びストレージプラットフォーム１１４を個々のコンポーネントとして示している。しかしながら、リソースマネージャ１０２、メタデータ１１０、実行プラットフォーム１１２、及びストレージプラットフォーム１１４のそれぞれは、分散システム（例えば、複数の地理的位置にある複数のシステム／プラットフォームに亘って分散されたシステム）として実現してもよい。更に、リソースマネージャ１０２、メタデータ１１０、実行プラットフォーム１１２、及びストレージプラットフォーム１１４のそれぞれは、ユーザ１０４〜１０８から受け取る要求の変化及びデータ処理プラットフォーム１００のニーズの変化に応じて、（互いに独立して）拡張又は縮小できる。したがって、ここに開示する実施形態では、データ処理プラットフォーム１００は、動的であり、現在のデータ処理のニーズを満たすための定期的な変更をサポートする。
【００２４】
通常の動作において、データ処理プラットフォーム１００は、ユーザ１０４〜１０８のいずれかから受信した複数のクエリ（又は要求）を処理する。これらのクエリは、リソースマネージャ１０２が管理し、リソースマネージャ１０２は、いつ、どのようにクエリを実行するかを判定する。例えば、リソースマネージャ１０２は、クエリを処理するためにどのデータが必要であるかを判定し、更に実行プラットフォーム１１２内のどのノードがクエリを処理するために最適であるかを判定できる。一部のノードは、クエリの処理に必要なデータを既にキャッシュしている可能性があるため、クエリを処理するための最適な候補になる。メタデータ１１０は、実行プラットフォーム１１２内のどのノードがクエリを処理するために必要なデータの少なくとも一部を既にキャッシュしているかを判定する際にリソースマネージャ１０２を支援する。実行プラットフォーム１１２内の１つ以上のノードは、ノードによってキャッシュされたデータ、及び必要に応じてストレージプラットフォーム１１４から検索されたデータを使用してクエリを処理する。この検索速度は、通常、ストレージプラットフォーム１１４からデータを検索するより遥かに速いので、実行プラットフォーム１１２内のキャッシュから可能な限り多くのデータを検索することが望ましい。
【００２５】
図１に示すように、データ処理プラットフォーム１００は、実行プラットフォーム１１２をストレージプラットフォーム１１４から分離する。この構成では、実行プラットフォーム１１２内の処理リソース及びキャッシュリソースは、ストレージプラットフォーム１１４内のデータストレージリソース１１６〜１２０とは独立して動作する。したがって、演算リソース及びキャッシュリソースは、特定のデータストレージリソース１１６〜１２０に限定されない。これに代えて、全ての演算リソース及び全てのキャッシュリソースは、ストレージプラットフォーム１１４内の任意のデータストレージリソースからデータを検索し、及びそこにデータを保存できる。更に、データ処理プラットフォーム１００は、ストレージプラットフォーム１１４への如何なる変更も必要とすることなく、実行プラットフォーム１１２への新しい演算リソース及びキャッシュリソースの追加をサポートする。同様に、データ処理プラットフォーム１００は、実行プラットフォーム１１２内のノードに対する如何なる変更も必要とすることなく、ストレージプラットフォーム１１４へのデータストレージリソースの追加をサポートする。
【００２６】
図２は、リソースマネージャ１０２の一実施形態を示すブロック図である。図２に示すように、リソースマネージャ１０２は、データストレージデバイス２０６に接続されたアクセスマネージャ２０２及びキーマネージャ２０４を含む。アクセスマネージャ２０２は、本明細書に開示するシステムに対する認証及び許可タスクを処理する。キーマネージャ２０４は、認証及び許可タスク中に使用されるキーの保存及び認証を管理する。例えば、アクセスマネージャ２０２及びキーマネージャ２０４は、リモートストレージデバイス（例えば、ストレージプラットフォーム１１４内のデータストレージデバイス）に保存されているデータにアクセスするために使用されるキーを管理する。本明細書で使用するリモートストレージデバイスとは「永続的ストレージデバイス」と呼ばれることもある。要求処理サービス２０８は、受信したデータ保存要求及びデータ検索要求（例えば、データベースクエリ）を管理する。例えば、要求処理サービス２０８は、受信したデータ保存要求又はデータ検索要求を処理するために必要なデータを判定できる。必要なデータは、（以下により詳細に説明するように）実行プラットフォーム１１２内のキャッシュ、又はストレージプラットフォーム１１４内のデータストレージデバイスに保存されていてもよい。管理コンソールサービス２１０は、管理者及び他のシステムマネージャによる様々なシステム及びプロセスへのアクセスをサポートする。更に、管理コンソールサービス２１０は、ユーザ１０４〜１０８から要求を受信して、クエリを発行し、システム上の作業負荷を監視してもよい。幾つかの実施形態では、特定のユーザは、これらの特定のクエリがシステムに課す作業負荷を監視するための要求を発行することができる。
【００２７】
また、リソースマネージャ１０２は、ＳＱＬコンパイラ（SQL compiler）２１２、ＳＱＬオプティマイザ（SQL optimizer）２１４及びＳＱＬエクゼキュータ（SQL executor）２１６を含む。ＳＱＬコンパイラ２１２は、ＳＱＬクエリを解析し、クエリに対する実行コードを生成する。ＳＱＬオプティマイザ２１４は、処理する必要があるデータに基づいてクエリを実行するための最良の方法を判定する。また、ＳＱＬオプティマイザ２１４は、様々なデータ剪定処理及び他のデータ最適化技術を用いて、ＳＱＬクエリを実行する速度及び効率を向上させる。ＳＱＬエクゼキュータ２１６は、リソースマネージャ１０２が受信したクエリに対するクエリコードを実行する。
【００２８】
クエリスケジューラ及びコーディネータ２１８は、受信したクエリを、コンパイル、最適化、及び実行プラットフォーム１１２へのディスパッチのために適切なサービス又はシステムに送信する。例えば、クエリに優先順位を付し、その優先順位に基づいてクエリを処理してもよい。幾つかの実施形態では、クエリスケジューラ及びコーディネータ２１８は、特定のクエリを処理するために実行プラットフォーム１１２内の特定のノードを識別し又は割り当てる。仮想ウェアハウスマネージャ２２０は、実行プラットフォーム１１２に実装された複数の仮想ウェアハウスの動作を管理する。後述するように、各仮想ウェアハウスは、それぞれキャッシュ及びプロセッサを含む複数の実行ノードを含む。
【００２９】
更に、リソースマネージャ１０２は、構成及びメタデータマネージャ２２２を含み、構成及びメタデータマネージャ２２２は、リモートデータストレージデバイス及びローカルキャッシュ（すなわち、実行プラットフォーム１１２内のキャッシュ）に保存されているデータに関する情報を管理する。以下により詳細に説明するように、構成及びメタデータマネージャ２２２は、メタデータを使用して、特定のクエリを処理するために、どのデータファイルにアクセスしてデータを検索する必要があるかを判定する。モニタ及び作業負荷アナライザ２２４は、リソースマネージャ１０２が実行するプロセスを監視し、実行プラットフォーム１１２内の実行ノード及び仮想ウェアハウスに亘るタスク（例えば、作業負荷）の分散を管理する。また、モニタ及び作業負荷アナライザ２２４は、必要に応じて、データ処理プラットフォーム１００全体に亘る作業負荷の変化に基づいてタスクを再分配する。構成及びメタデータマネージャ２２２並びにモニタ及び作業負荷アナライザ２２４は、データストレージデバイス２２６に接続されている。図２のデータストレージデバイス２０６、２２６は、データ処理プラットフォーム１００内の任意のデータストレージデバイスを表している。例えば、データストレージデバイス２０６、２２６は、実行プラットフォーム１１２内のキャッシュ、ストレージプラットフォーム１１４内のストレージデバイス、又は他の任意のストレージデバイスを表すことができる。
【００３０】
また、リソースマネージャ１０２は、トランザクション管理及びアクセス制御モジュール２２８を含み、トランザクション管理及びアクセス制御モジュール２２８は、データ保存要求及びデータアクセス要求の処理に関連する様々なタスク及び他の活動を管理する。例えば、トランザクション管理及びアクセス制御モジュール２２８は、複数のユーザ又はシステムによるデータへの一貫した同期アクセスを提供する。複数のユーザ／システムが同じデータに同時にアクセスする可能性があるため、各ユーザ／システムが現在のバージョンのデータを使用していることを確実にするために、データの変更を同期させる必要がある。トランザクション管理及びアクセス制御モジュール２２８は、リソースマネージャ１０２内の単一の集中ロケーションにおいて、様々なデータ処理活動を制御する。幾つかの実施形態では、トランザクション管理及びアクセス制御モジュール２２８は、ＳＱＬエクゼキュータ２１６とインタラクトして、ＳＱＬエクゼキュータ２１６によって実行されている様々なタスクの管理をサポートする。
【００３１】
図３は、実行プラットフォーム１１２の一実施形態を示すブロック図である。図３に示すように、実行プラットフォーム１１２は、複数の仮想ウェアハウス３０２、３０４、３０６を含む。各仮想ウェアハウスは、それぞれデータキャッシュとプロセッサを含む複数の実行ノードを含む。仮想ウェアハウス３０２、３０４、３０６は、複数の実行ノードを使用することによって複数のクエリ（及び他のタスク）を並行して実行できる。ここに説明するように、実行プラットフォーム１１２は、システム及びユーザの現在の処理ニーズに基づいて、新しい仮想ウェアハウスを追加し、及び既存の仮想ウェアハウスをリアルタイムで削除できる。この柔軟性により、実行プラットフォーム１１２は、不要な演算リソースを確保し続けることを強制されることなく、必要に応じて大量の演算リソースを迅速に展開できる。全ての仮想ウェアハウスは、任意のデータストレージデバイス（例えば、ストレージプラットフォーム１１４内の任意のストレージデバイス）からのデータにアクセスできる。
【００３２】
図３に示す各仮想ウェアハウス３０２〜３０６は、３つの実行ノードを含むが、特定の仮想ウェアハウスは、任意の数の実行ノードを含むことができる。更に、仮想ウェアハウス内の実行ノードの数は動的であり、追加の要求があれば新しい実行ノードが作成され、不要になると既存の実行ノードが削除される。
【００３３】
各仮想ウェアハウス３０２〜３０６は、図１に示すデータストレージデバイス１１６〜１２０のいずれにもアクセスできる。したがって、仮想ウェアハウス３０２〜３０６は、必ずしも特定のデータストレージデバイス１１６〜１２０に割り当てる必要はなく、これに代えて、任意のデータストレージデバイス１１６〜１２０からのデータにアクセスできる。同様に、図３に示す各実行ノードは、任意のデータストレージデバイス１１６〜１２０からのデータにアクセスできる。幾つかの実施形態では、特定の仮想ウェアハウス又は特定の実行ノードを一時的に特定のデータストレージデバイスに割り当ててもよいが、仮想ウェアハウス又は実行ノードは、後に、他の任意のデータストレージデバイスからのデータにアクセスしてもよい。
【００３４】
図３に示すように、仮想ウェアハウス３０２は、３つの実行ノード３０８、３１０、３１２を含む。実行ノード３０８は、キャッシュ３１４及びプロセッサ３１６を含む。実行ノード３１０は、キャッシュ３１８及びプロセッサ３２０を含む。実行ノード３１２は、キャッシュ３２２及びプロセッサ３２４を含む。各実行ノード３０８〜３１２は、１つ以上のデータ保存及び／又はデータ検索タスクの処理に関連付けられている。例えば、特定の仮想ウェアハウスは、特定のユーザ又は顧客に関連するデータ保存及びデータ検索タスクを処理できる。他の具体例では、特定の仮想ウェアハウスは、特定のデータ保存システム又は特定のカテゴリのデータに関連するデータ保存及びデータ検索タスクを処理できる。
【００３５】
上述の仮想ウェアハウス３０２と同様に、仮想ウェアハウス３０４は、３つの実行ノード３２６、３２８、３３０を含む。実行ノード３２６は、キャッシュ３３２及びプロセッサ３３４を含む。実行ノード３２８は、キャッシュ３３６及びプロセッサ３３８を含む。実行ノード３３０は、キャッシュ３４０及びプロセッサ３４２を含む。更に、仮想ウェアハウス３０６は３つの実行ノード３４４、３４６、３４８を含む。実行ノード３４４は、キャッシュ３５０及びプロセッサ３５２を含む。実行ノード３４６は、キャッシュ３５４及びプロセッサ３５６を含む。実行ノード３４８は、キャッシュ３５８及びプロセッサ３６０を含む。
【００３６】
幾つかの実施形態では、図３に示す実行ノードは、実行ノードがキャッシングしているデータに関して、ステートレスである。例えば、これらの実行ノードは、実行ノードについての状態情報、又は特定の実行ノードがキャッシングしているデータを保存又は他の方法で維持しない。したがって、実行ノードに障害が発生した場合、障害が発生したノードを別のノードに透過的に置き換えることができる。障害が発生した実行ノードに関連する状態情報が存在しないため、新しい（置換）実行ノードは、特定の状態を再作成することなく、障害が発生したノードを簡単に置き換えることができる。
【００３７】
図３に示す実行ノードは、それぞれ１つのデータキャッシュと１つのプロセッサを含むが、他の実施形態の実行ノードは、任意の数のプロセッサと任意の数のキャッシュとを含むことができる。更に、キャッシュは、異なる実行ノード間でサイズが異なっていてもよい。図３に示すキャッシュは、ローカル実行ノード内に、ストレージプラットフォーム１１４（図１）内の１つ以上のデータストレージデバイスから検索されたデータを保存する。したがって、キャッシュは、リモートストレージシステムからデータを一貫して検索するプラットフォームで発生するボトルネックの問題を軽減又は解消する。ここに開示するシステム及び方法は、リモートストレージデバイスからのデータに繰り返しアクセスする代わりに、実行ノード内のキャッシュからのデータにアクセスし、これは非常に高速であり、上述のボトルネック問題を回避できる。幾つかの実施形態では、キャッシュは、キャッシュされたデータへの高速アクセスを提供する高速メモリデバイスを使用して実施される。各キャッシュは、ストレージプラットフォーム１１４内の任意のストレージデバイスからのデータを保存できる。
【００３８】
更に、キャッシュリソース及び演算リソースは、実行ノード間で異なっていてもよい。例えば、１つの実行ノードが大きな演算リソースと最小限のキャッシュリソースを含む場合、この実行ノードは、大きな演算リソースを必要とするタスクに有用である。別の実行ノードが大きなキャッシュリソースと最小限の演算リソースとを含む場合、この実行ノードは、大量のデータのキャッシュを必要とするタスクに有用である。更に別の実行ノードが高速入出力動作を提供するキャッシュリソースを含む場合、この実行ノードは、大量のデータの高速スキャンを必要とするタスクに有用である。幾つかの実施形態では、特定の実行ノードに関連するキャッシュリソース及び演算リソースは、実行ノードによって実行されることが予想されるタスクに基づいて、実行ノードが作成されるときに判定される。
【００３９】
更に、特定の実行ノードに関連するキャッシュリソース及び演算リソースは、実行ノードが実行するタスクの変化に基づいて経時的に変化することがある。例えば、特定の実行ノードが実行するタスクがよりプロセッサ集約的になった場合、この実行ノードにより多くの処理リソースを割り当ててもよい。同様に、実行ノードが実行するタスクがより大きなキャッシュ容量を必要とする場合、この実行ノードにより多くのキャッシュリソースを割り当ててもよい。
【００４０】
仮想ウェアハウス３０２〜３０６は、同じ実行プラットフォーム１１２に関連付けられているが、仮想ウェアハウスは、複数の地理的位置にある複数の演算システムを使用して実現してもよい。例えば、仮想ウェアハウス３０２は、第１の地理的位置にある演算システムによって実現することができ、仮想ウェアハウス３０４、３０６は、第２の地理的位置にある別の演算システムによって実現してもよい。幾つかの実施形態では、これらの異なる演算システムは、１つ以上の異なるエンティティによって維持されるクラウドベースの演算システムである。
【００４１】
更に、図３では、各仮想ウェアハウスは複数の実行ノードを有するものとして図示されている。各仮想ウェアハウスに関連する複数の実行ノードは、複数の地理的位置にある複数の演算システムを使用して実現できる。例えば、仮想ウェアハウス３０２の特定のインスタンスは、特定の地理的位置の１つの演算プラットフォーム上で実行ノード３０８、３１０を実現し、別の地理的位置の異なる演算プラットフォーム上で実行ノード３１２を実現する。実行ノードを実装するための特定の演算システムの選択は、様々な要因、例えば、特定の実行ノードに必要なリソースのレベル（処理リソース要件及びキャッシュ要件等）、特定の演算システムで利用可能なリソース、地理的位置内又は地理的位置間のネットワークの通信機能、及びどの演算システムが既に仮想ウェアハウス内の他の実行ノードを実現しているか等に依存することができる。
【００４２】
実行プラットフォーム１１２も、フォールトトレラントである。例えば、１つの仮想ウェアハウスに障害が発生した場合、その仮想ウェアハウスは、地理的に異なる場所にある別の仮想ウェアハウスと迅速に置き換えられる。
【００４３】
特定の実行プラットフォーム１１２は、任意の数の仮想ウェアハウス３０２〜３０６を含むことができる。更に、特定の実行プラットフォーム内の仮想ウェアハウスの数は動的であり、追加の処理リソース及び／又はキャッシングリソースが必要になったときに新しい仮想ウェアハウスが作成される。同様に、仮想ウェアハウスに関連するリソースが不要になると、既存の仮想ウェアハウスを削除できる。
【００４４】
幾つかの実施形態では、仮想ウェアハウス３０２、３０４、３０６は、ストレージプラットフォーム１１４内の同じデータについて動作できるが、各仮想ウェアハウスは、独立した処理リソースとキャッシュリソースを備える独自の実行ノードを有する。この構成により、要求間の干渉を受けることなく、異なる仮想ウェアハウス上の要求を独立して処理できる。この独立した処理は、仮想ウェアハウスを動的に追加及び削除する機能と連携して、既存のユーザによって観察される性能に影響を与えることなく、新規ユーザのための新規処理能力の追加をサポートする。
【００４５】
図４は、複数のユーザが複数の仮想ウェアハウスを介して複数のデータベースにアクセスする例示的な動作環境４００を示すブロック図である。環境４００では、複数のユーザ４０２、４０４、４０６が、複数の仮想ウェアハウス４０８、４１０、４１２を介して複数のデータベース４１４、４１６、４１８、４２０、４２２、４２４にアクセスする。図４には示していないが、ユーザ４０２、４０４、４０６は、リソースマネージャ１０２（図１）を介して仮想ウェアハウス４０８、４１０、４１２にアクセスしてもよい。特定の実施形態では、データベース４１４〜４２４は、ストレージプラットフォーム１１４（図１）に含まれており、実行プラットフォーム１１２に実装された任意の仮想ウェアハウスによってアクセス可能である。幾つかの実施形態において、ユーザ４０２〜４０６は、インターネット等のデータ通信ネットワークを使用して仮想ウェアハウス４０８〜４１２のうちの１つにアクセスする。幾つかの具体例では、各ユーザ４０２〜４０６は、特定の時点で作業するための特定の仮想ウェアハウス４０８〜４１２を指定する。図４の例では、ユーザ４０２は、仮想ウェアハウス４０８とインタラクトし、ユーザ４０４は、仮想ウェアハウス４１０とインタラクトし、ユーザ４０６は、仮想ウェアハウス４１２とインタラクトする。すなわち、ユーザ４０２は、仮想ウェアハウス４０８を介してデータ検索及びデータ保存要求を提出する。同様に、ユーザ４０４、４０６は、それぞれ仮想ウェアハウス４１０、４１２を介してデータ検索要求及びデータ保存要求を提出する。
【００４６】
各仮想ウェアハウス４０８〜４１２は、全データベース４１４〜４２４のサブセットと通信するように構成されている。例えば、環境４００では、仮想ウェアハウス４０８は、データベース４１４、４１６、４２２と通信するように構成されている。同様に、仮想ウェアハウス４１０は、データベース４１６、４１８、４２０、４２４と通信するように構成されている。そして、仮想ウェアハウス４１２は、データベース４１６、４２２、４２４と通信するように構成されている。他の実施形態では、１つ以上の仮想ウェアハウス４０８〜４１２が全てのデータベース４１４〜４２４と通信する。図４に示す構成により、個々のユーザは、単一の仮想ウェアハウスを介して全てのデータ検索及びデータ保管要求を送信できる。この仮想ウェアハウスは、仮想ウェアハウス内のいずれかの実行ノード内のキャッシュデータを使用してデータ検索及びデータ保管タスクを処理し、あるいは適切なデータベースから必要なデータを検索（及びキャッシュ）する。仮想ウェアハウス間のマッピングは、ハードウェアマッピングではなく論理マッピングである。この論理マッピングは、リソースアクセス管理設定及びセキュリティに関連するアクセス制御パラメータに基づいている。論理マッピングは、仮想ウェアハウス又はストレージリソースの再設定を必要とすることなく簡単に変更できる。
【００４７】
環境４００は、データベース４１４〜４２４の特定のサブセットと通信するように構成された仮想ウェアハウス４０８〜４１２を示しているが、その構成は動的である。例えば、仮想ウェアハウス４０８は、仮想ウェアハウス４０８が実行するタスクの変更に基づいてデータベース４１４〜４２４の異なるサブセットと通信するように再構成することができる。例えば、仮想ウェアハウス４０８がデータベース４１８からのデータにアクセスする要求を受信すると、仮想ウェアハウス４０８は、データベース４１８とも通信するように再構成することができる。後に仮想ウェアハウス４０８がデータベース４１８からのデータにアクセスする必要がなくなった場合、仮想ウェアハウス４０８は、データベース４１８との通信を削除するように再構成することができる。
【００４８】
図５は、複数のユーザが負荷バランサ及び仮想ウェアハウスグループに含まれる複数の仮想ウェアハウスを介して複数のデータベースにアクセスする別の例示的な動作環境５００を示すブロック図である。環境５００は環境４００（図４）と同様であるが、仮想ウェアハウスリソースマネージャ５０８と仮想ウェアハウスグループ５１６内に配置された複数の仮想ウェアハウス５１０、５１２、５１４を更に含む。仮想ウェアハウスリソースマネージャ５０８は、リソースマネージャ１０２に含まれていてもよい。具体的には、複数のユーザ５０２、５０４、５０６は、仮想ウェアハウスリソースマネージャ５０８及び仮想ウェアハウスグループ５１６を介して複数のデータベース５１８、５２０、５２２、５２４、５２６、５２８にアクセスする。幾つかの実施形態では、ユーザ５０２〜５０６は、インターネット等のデータ通信ネットワークを使用して仮想ウェアハウスリソースマネージャ５０８にアクセスする。図５には図示していないが、ユーザ５０２、５０４、５０６は、リソースマネージャ１０２（図１）を介して仮想ウェアハウスリソースマネージャ５０８にアクセスしてもよい。幾つかの実施形態では、仮想ウェアハウスリソースマネージャ５０８は、リソースマネージャ１０２内に実装される。
【００４９】
ユーザ５０２〜５０６は、仮想ウェアハウスリソースマネージャ５０８にデータ検索及びデータ保存要求を提出してもよく、仮想ウェアハウスリソースマネージャ５０８は、データ検索及びデータ保存要求を仮想ウェアハウスグループ５１６内の適切な仮想ウェアハウス５１０〜５１４にルーティングする。幾つかの具体例では、仮想ウェアハウスリソースマネージャ５０８は、仮想ウェアハウス５１０〜５１４へのユーザ５０２〜５０６の動的割り当てを提供する。データ検索又はデータ保存要求を提出する際、ユーザ５０２〜５０６は、要求を処理する特定の仮想ウェアハウス５１０〜５１４を指定せずに、要求を処理するために仮想ウェアハウスグループ５１６を指定することができる。この構成により、仮想ウェアハウスリソースマネージャ５０８は、効率、利用可能なリソース、及び仮想ウェアハウス５１０〜５１４内のキャッシュデータの利用可能性に基づいて、仮想ウェアハウス５１０〜５１４に亘って複数の要求を分散させることができる。データ処理要求をどのようにルーティングするかを判定する際、仮想ウェアハウスリソースマネージャ５０８は、利用可能なリソース、現在のリソース負荷、現在のユーザ数等を考慮する。
【００５０】
幾つかの実施形態では、フォールトトレランスシステムが仮想ウェアハウスの故障に応じて新しい仮想ウェアハウスを作成する。新しい仮想ウェアハウスは、同じ仮想ウェアハウスグループに作成される場合もあれば、異なる地理的位置にある異なる仮想ウェアハウスグループに作成される場合もある。
【００５１】
各仮想ウェアハウス５１０〜５１４は、全データベース５１８〜５２８のサブセットと通信するように構成されている。例えば、環境５００では、仮想ウェアハウス５１０は、データベース５１８、５２０、５２６と通信するように構成されている。同様に、仮想ウェアハウス５１２は、データベース５２０、５２２、５２４、５２８と通信するように構成されている。そして、仮想ウェアハウス５１４は、データベース５２０、５２６、５２８と通信するように構成されている。他の実施形態では、仮想ウェアハウス５１０〜５１４は、データベース５１８〜５２８のうちのいずれか（又は全て）と通信できる。
【００５２】
環境５００には、１つの仮想ウェアハウスグループ５１６が図示されているが、他の実施形態は、それぞれ任意の数の仮想ウェアハウスに関連する任意の数の仮想ウェアハウスグループを含むことができる。特定の環境内の仮想ウェアハウスグループの数は動的であり、環境内のユーザ及び他のシステムのニーズの変化に基づいて変更してもよい。
【００５３】
図６は、複数の分散仮想ウェアハウス及び仮想ウェアハウスグループを有する他の例示的な動作環境６００を示すブロック図である。環境６００は、データ通信ネットワーク６０２を介して仮想ウェアハウスグループ６０４、６０６と通信するリソースマネージャ１０２を含む。ウェアハウスグループ６０４は２つの仮想ウェアハウス６０８、６１０を含み、ウェアハウスグループ６０６は別の２つの仮想ウェアハウス６１４、６１６を含む。また、リソースマネージャ１０２は、データ通信ネットワーク６０２を介して、（仮想ウェアハウスグループの一部ではない）仮想ウェアハウス６１２と通信する。
【００５４】
仮想ウェアハウスグループ６０４、６０６並びに仮想ウェアハウス６１２は、データ通信ネットワーク６１８を介してデータベース６２０、６２２、６２４と通信する。幾つかの実施形態では、データ通信ネットワーク６０２、６１８は同じネットワークである。環境６００により、リソースマネージャ１０２は、複数の仮想ウェアハウス６０８〜６１６に亘ってユーザデータの保存及び検索要求を調整して、データベース６２０〜６２４にデータを保存し、検索を行うことができる。仮想ウェアハウスグループ６０４、６０６は、同じ地理的領域に配置してもよく、地理的に分離してもよい。更に、仮想ウェアハウスグループ６０４、６０６は、同じエンティティによって実現してもよく、異なるエンティティによって実現してもよい。
【００５５】
本明細書に開示するシステム及び方法により、データを演算（又は処理）リソースとは別のサービスとして保存し、アクセスすることができる。実行プラットフォームから演算リソースが割り当てられていなくても、遠隔データソースからのデータのリロードを必要とすることなく、仮想ウェアハウスでデータが利用できる。すなわち、データは、そのデータに関連する演算リソースの割当とは独立して利用可能である。ここに開示するシステム及び方法は、如何なる種類のデータにも有用である。特定の実施形態では、データは構造化され最適化されたフォーマットで保存される。また、データ保存／アクセスサービスを演算サービスから分離することにより、異なるユーザ間及び異なるグループ間でのデータの共有が単純化される。ここに説明したように、各仮想ウェアハウスは、他の仮想ウェアハウスが同時に同じデータにアクセスしていても、アクセス許可を有する任意のデータにアクセスできる。このアーキテクチャは、ローカルキャッシュに実際のデータを保存せずにクエリを実行することをサポートする。ここに開示するシステム及び方法は、システムのユーザに対して透過的な手法で、必要に応じて、リモートストレージデバイスからローカルキャッシュにデータを移動する透過的な動的データ移動が可能である。更に、このアーキテクチャは、データストレージサービスを演算サービスから分離することにより、任意の仮想ウェアハウスが任意のデータにアクセスできるため、事前のデータ移動なしにデータ共有をサポートする。
【００５６】
図７は、データ保存及び検索動作を管理するための方法７００の一実施形態を示すフローチャートである。まず、方法７００は、７０２において、ユーザからステートメント、要求、又はクエリを受信する。ステートメントは、データ関連の動作を実行するための要求又はコマンドである。例示的なステートメントは、データ検索要求、データ保存要求、データ転送要求、データクエリ等を含む。幾つかの実施形態では、ステートメントは、ＳＱＬステートメントとして実施される。リソースマネージャが、７０４において、受信したステートメントを管理するためにクエリコーディネータを作成する。クエリコーディネータは、例えば、実行プラットフォーム及び１つ以上のデータストレージデバイスとのインタラクションを含む、受信したステートメントを処理するために必要な様々なタスクを管理する。幾つかの実施形態では、クエリコーディネータは、受信したステートメントを管理するために特別に作成された一時的なルーチンである。
【００５７】
方法７００は、７０６において、リソースマネージャが受信したステートメントを処理するために必要な複数のタスクを判定する。複数のタスクは、例えば、実行ノード内のキャッシュからのデータへのアクセス、リモートストレージデバイスからのデータの検索、キャッシュ内のデータの更新、リモートストレージデバイスへのデータの保存等を含むことができる。また、リソースマネージャが、７０８において、実行プラットフォーム内の実行ノードに複数のタスクを分配する。ここに説明するように、実行プラットフォーム内の実行ノードは、仮想ウェアハウス内に実装される。７１０において、各実行ノードが割り当てられたタスクを実行し、タスク結果をリソースマネージャに返信する。幾つかの実施形態では、実行ノードは、タスク結果をクエリコーディネータに返信する。リソースマネージャが、７１２において、複数のタスク結果を受信し、ステートメント結果を作成し、７１４において、ステートメント結果をユーザに通信する。幾つかの実施形態では、クエリコーディネータは、ステートメント結果がユーザに通信された後に削除される。
【００５８】
幾つかの具体例では、同じファイルが複数の実行ノードによって同時にキャッシュされる。このファイルの複数キャッシングは、複数の実行ノードに亘る負荷分散（例えば、データ処理タスクの分散）を補助する。更に、複数の実行ノードにファイルをキャッシュすることにより、大量のデータが同じ通信リンクを通過しようとしているときの潜在的なボトルネックを回避できる。この具体例は、異なる実行ノードによる同じデータの並列処理もサポートする。
【００５９】
本明細書に開示するシステム及び方法は、共有ディスクシステム及び非共有アーキテクチャの両方の利点を利用する。ここに開示するデータ保存及び検索プラットフォームは、一旦、データがローカルにキャッシュされると、非共有アーキテクチャのようにスケーラブルである。また、このプラットフォームは、共有ディスクアーキテクチャの全ての利点、すなわち、（例えば、０からＮまでといった）如何なる制約もなく、並びにデータの明示的なリシャッフリングを必要とすることなく、処理ノードを追加及び削除できるという利点を有する。
【００６０】
従来のデータ管理システムでは、データウェアハウス内で大量のデータをコピーすることは時間がかかり、同じデータの複数のコピーを維持し処理するためにかなりのリソースが必要であった。更に、これらの従来のシステムでは、データがコピーされている間にデータの不一致が存在し、変更は、データセットの１つに適用される。
【００６１】
一方、ここに開示するカタログオブジェクトをクローン化するシステム及び方法は、迅速に有効化され、元のカタログオブジェクトから独立している新しいカタログオブジェクトを生成する。後述するように、新しいカタログオブジェクトはカタログオブジェクトに関連するデータを複製することなく作成される。すなわち、データを複製する代わりに、カタログオブジェクトに関連するメタデータのみがコピーされ、これは、データ自体をコピーするよりも遥かに高速である。例えば、カタログオブジェクトに関連するメタデータのみをコピーすることは、全てのデータをコピーするよりも数桁高速である。例示的な状況では、１ＭＢの実際のデータの代わりに１ＫＢのメタデータがコピーされる。
【００６２】
本明細書で使用するテーブルとは、データの論理グループであり、スキーマはテーブルのセットである。カタログオブジェクトの例は、例えば、テーブル、データベース、スキーマ、アカウント、制約、ファイルフォーマット、機能、役割、シーケンス、ステージ、列、ユーザ、及びボリュームを含む。以下の階層は、本明細書に開示するシステム及び方法と共に使用されるオブジェクトの例示的な階層を表す。
【００６３】
アカウント−データベース−スキーマ−テーブル／ビュー／シーケンス−列／制約
【００６４】
アカウント−データベース−スキーマ−機能／ファイルフォーマット／ステージ
【００６５】
アカウント−ユーザ
【００６６】
アカウント−役割
【００６７】
アカウント−ボリューム
【００６８】
アカウント−ウェアハウス
【００６９】
幾つかの実施形態では、これらのカタログオブジェクトは、ＳＱＬ規格によって定義されている。ここに説明するように、テーブルは、複数の行と列を含む。スキーマには任意の数のテーブルが含まれ、データベースには任意の数のスキーマが含まれている。本明細書に開示するシステム及び方法は、テーブル、スキーマ及びデータベースをクローン化することができる。幾つかの具体例では、実行されているデータ動作に応じて、個々のテーブルをクローン化し、他の具体例では、データベース全体をクローン化することができる。更に、クローン化動作では、ルートカタログオブジェクトの下で全ての世代の子をクローン化できる。クローン化された上位オブジェクトは、元のオブジェクトから独立しているため、元の上位オブジェクトとその階層に影響を与えることなく、新しい子カタログオブジェクトをクローン化オブジェクトに追加できる（又はクローン化された子カタログオブジェクトをクローン化オブジェクトから削除できる）。
【００７０】
カタログオブジェクトのクローンを作成すると、データの追加コピーを作成することなく、同じ種類の新しいカタログオブジェクトを速やかに作成できる。例えば、データベースをクローン化すると、クローン化プロセスでは、新しいデータベースオブジェクトとそのデータベースオブジェクトの下にある全てのテーブル、スキーマ、及びその他のカタログオブジェクトが作成されるが、データベースに含まれるデータはコピーされない。クローン化プロセスが完了すると、クローン化されたカタログオブジェクトと元のカタログオブジェクトを互いに独立して変更できる。更に、カタログオブジェクトの各コピー及び元のカタログオブジェクトにオブジェクトを追加し、並びにそこからオブジェクトを削除することができる。
【００７１】
図８は、カタログオブジェクトをクローン化するための方法の一実施形態を示すフローチャートである。まず、方法８００は、８０２において、クローン化すべきデータベースを識別する。このデータベースは、幾つのスキーマを含んでいてもよい。方法８００は、８０４において、データベースに関連する複数のスキーマを識別し、８０６において、識別されたスキーマのうちの１つを選択する。次に、方法は、８０８において、選択されたスキーマに関連する複数のテーブル及び他のカタログオブジェクトを識別する。８１０では、識別されたテーブルのうちの１つを選択し、８１２では、選択されたテーブルに関連する全てのメタデータを識別する。幾つかの実施形態において、このメタデータは、データベースに保存されているデータの要約を含む。ここに説明するように、メタデータは、データベース、テーブル、又は他のストレージメカニズムにおいてデータがどのように編成されているかに関する情報を含むことができる。このメタデータにより、ここに開示するシステム及び方法は、ストレージデバイスから実際のデータをロードし又はこれらにアクセスすることなく、保存されているデータに関する情報を判定できる。
【００７２】
方法８００は、８１４において、選択されたテーブルに関連するメタデータをコピーすることによって、選択されたテーブルをクローン化する。このメタデータのコピーは、メタデータに関連する全てのデータをコピーするのに必要な時間と比べて、速やかに実行される。８１４においてテーブルをクローン化した後、方法は、８１６において、クローン化の必要がある追加のテーブルが選択されたスキーマ内にあるかを判定する。クローン化すべき追加のテーブルが残っている場合、方法８００は、８１０に戻ってスキーマ内の次のテーブルを選択する。選択されたスキーマ内の全てのテーブルがクローン化されている場合、方法は、８１８において、識別されたデータベース内にクローン化すべき追加のスキーマがあるかを判定する。クローン化すべき追加のスキーマが残っている場合、方法８００は、８０６に戻ってデータベース内の次のスキーマを選択する。この再帰的な動作により、識別されたデータベースの全てのスキーマ内の全てのテーブルが確実にクローン化される。識別されたデータベース内の全てのスキーマがクローン化された後、８２０において、クローン化されたデータベースとは独立して、元のデータベース、そのスキーマ、テーブル、及び他の子カタログオブジェクトを変更することができる。
【００７３】
幾つかの実施形態では、クローン化されたテーブル内のデータは、現在のデータアクセス要求に使用され、元のテーブル内のデータは変更される。元のテーブルの変更が完了すると、クローン化されたテーブルは削除され、全てのデータアクセス要求は、元のテーブルを使用して処理される。これらの実施形態では、実際の基礎となるデータをコピーせずにメタデータをコピーすることにより、データ変更プロセスの速度が大幅に向上し、データ変更手順の実行に必要な追加の演算リソース及び保存リソースが削減される。幾つかの具体例では、データ変更手順は、トランザクション管理及びアクセス制御モジュール２２８（図２）によって管理される。更に、幾つかの実施形態では、メタデータは、構成及びメタデータマネージャ２２２によって管理され、これを介してアクセスされる。
【００７４】
図９は、一時的複製カタログオブジェクトを作成するための方法９００の一実施形態を示すフローチャートである。まず、方法９００は、９０２において、データセットに関連する元のカタログオブジェクトを識別する。幾つかの実施形態では、元のカタログオブジェクトは、データ保存システム内のデータの論理グループを表す。元のカタログオブジェクトは、テーブル、データベース、スキーマ、アカウント、制約、ファイルフォーマット、機能、役割、シーケンス、ステージ、列、ユーザ、ボリューム、又は他のカタログオブジェクトのうちの１つ以上を含むことができる。９０４では、データ自体をコピーすることなく、元のカタログオブジェクトの複製コピーを作成する。幾つかの実施形態では、元のカタログオブジェクトの複製コピーを作成することは、データセットに関連するメタデータを複製カタログオブジェクトにコピーすることを含む。このメタデータは、データセットに保存されているデータのインベントリを含み、これにより、データセットに含まれる実際のデータへのアクセスを必要とすることなく、データセットに関する情報を識別できる。特定の具体例では、複製カタログオブジェクトは読取専用である。幾つかの実施形態では、複製カタログオブジェクトは、全ての世代の子の複製階層を含む。
【００７５】
この方法では、９０６において、複製カタログオブジェクトを使用してデータセットへのアクセスを可能にし、９０８において、複製カタログオブジェクトとは独立して、元のカタログオブジェクトに関連するデータを変更することができる。幾つかの実施形態では、元のカタログオブジェクトに関連する変更データは、複製カタログオブジェクトにとって不可視である。更に、複製カタログオブジェクトに関連する変更データは、元のカタログオブジェクトにとって不可視であってもよい。他の実施形態では、元のカタログオブジェクトから削除されたデータは、複製カタログオブジェクトにとって可視のままであり、複製カタログオブジェクトから削除されたデータは、元のカタログオブジェクトにとって可視のままである。特定の具体例では、元のカタログオブジェクトに関連する挿入データは、複製カタログオブジェクトにとって不可視であり、複製カタログオブジェクトに関連する挿入データは、元のカタログオブジェクトにとって不可視である。元のカタログオブジェクトに関連するデータの変更が完了した後、９１０において、複製カタログオブジェクトを削除する。データ自体をコピーせずに複製カタログオブジェクトを作成することにより、全ての関連データを含む元のカタログオブジェクトの完全なコピーを作成する場合と比較して、時間、帯域幅、及び演算リソースを大幅に節約できる。
【００７６】
図１０(Ａ)〜(Ｄ)はテーブルのクローン化を図示している。図１０(Ａ)〜(Ｄ)に示す実施形態では、各テーブルは、複数のファイルの集合を含む。後述するように、一旦ファイルが書き込まれると、これを更新又は変更することはできない。ファイルへの変更が必要な場合、ファイルは、削除され、変更を含む別のファイルに置き換えられる。特定のファイルが使用されていない場合、このファイルは、削除してもよい。上述のメタデータは、テーブルとそのテーブルに関連するファイルとの間の関係に関する情報を含むことができる。テーブルとファイルとの間のこの関係は、ファイルのマッピングとも呼ばれる。
【００７７】
図１０(Ａ)は、ｉ個のファイルを有する例示的なテーブルＴ１（Ｆ１、Ｆ２…Ｆｉとラベル付けされている。）を示す。図１０(Ｂ)は、クローン化されたテーブルＴ２を作成するためのテーブルＴ１のクローン化の結果を示す。この実施形態では、クローン化プロセスは、テーブルＴ１からクローン化されたテーブルＴ２にメタデータをコピーする。ここに説明するように、メタデータをコピーすることは、基礎となるデータを全てコピーすることよりも遥かに高速である。図１０(Ｂ)は、クローン化プロセスの直後に、テーブルＴ１とテーブルＴ２の両方が同じファイルに関連付けられていることを示している。
【００７８】
クローン化されたテーブルＴ２が作成された後、他のテーブルとは独立して、新しいファイルをテーブルＴ１又はテーブルＴ２に追加できる。更に、他のテーブルとは独立して、テーブルＴ１又はＴ２からファイルを削除することもできる。例えば、図１０(Ｃ)は、テーブルＴ１がファイルＦ２を削除し、新しいファイルＦｊを追加した後のテーブルとファイルの関係を示している。削除されたファイルＦ２は、テーブルＴ２にとって可視のままであるが、新しいファイルＦｊは、テーブルＴ２にとって不可視である。図１０(Ｄ)では、テーブルＴ２は、ファイルＦ１を削除し、新しいファイルＦｋを追加している。ファイルＦ１は、テーブルＴ１にとって可視のままであるが、新しいファイルＦｋは、テーブルＴ１にとって不可視である。
【００７９】
図１０(Ａ)〜(Ｄ)は、テーブルのクローン化を図示しているが、代替の実施形態では、同様の手法でカタログオブジェクト、スキーマ及びデータベースをクローン化することができる。特定の実施形態では、データベース内に存在する全てのスキーマのマップと共に、スキーマ内に存在する全てのテーブルのマップが維持される。クローン化の後、２つのスキーマ（又は２つのデータベース）は、互いに独立して変更できる。
【００８０】
ここに開示するクローン化システム及び方法により、新しいデータ又は試験的データの定期的なロード（及び解析）が改善される。更に、これらのシステム及び方法は、必要な追加の演算リソース又はデータストレージリソースを最小限に抑制しながら、新しいデータの迅速な更新をサポートする。
【００８１】
図１１は、演算デバイス１１００の一例を示すブロック図である。幾つかの実施形態では、演算デバイス１１００は、本明細書で説明するシステム及び構成要素のうちの１つ以上を実装するために使用される。例えば、演算デバイス１１００により、ユーザ又は管理者は、リソースマネージャ１０２にアクセスできる。更に、演算デバイス１１００は、本明細書に開示するシステム及び構成要素のいずれともインタラクトすることができる。したがって、演算デバイス１１００は、ここに説明するような様々な手順及びタスクを実行するために使用できる。演算デバイス１１００は、サーバ、クライアント、又は他の任意の演算エンティティとして機能できる。演算デバイス１１００は、デスクトップコンピュータ、ノートブックコンピュータ、サーバコンピュータ、ハンドヘルドコンピュータ、タブレット等のような多種多様な演算デバイスのうちのいずれかであってもよい。
【００８２】
演算デバイス１１００は、１つ以上のプロセッサ１１０２、１つ以上のメモリデバイス１１０４、１つ以上のインタフェース１１０６、１つ以上の大容量ストレージデバイス１１０８、及び１つ以上の入出力（Ｉ／Ｏ）デバイス１１１０を含み、これらは全てバス１１１２に接続されている。プロセッサ１１０２は、メモリデバイス１１０４及び／又は大容量ストレージデバイス１１０８に保存された命令を実行する１つ以上のプロセッサ又はコントローラを含む。また、プロセッサ１１０２は、キャッシュメモリ等の様々な種類のコンピュータ可読媒体を含むことができる。
【００８３】
メモリデバイス１１０４は、揮発性メモリ（例えば、ランダムアクセスメモリ（random access memory：ＲＡＭ））及び／又は不揮発性メモリ（例えば、読出専用メモリ（read-only memory：ＲＯＭ））等の様々なコンピュータ可読媒体を含む。また、メモリデバイス１１０４は、フラッシュメモリ等の書換可能なＲＯＭを含むことができる。
【００８４】
大容量ストレージデバイス１１０８は、磁気テープ、磁気ディスク、光ディスク、ソリッドステートメモリ（例えばフラッシュメモリ）等の様々なコンピュータ可読媒体を含む。大容量ストレージデバイス１１０８は、様々なコンピュータ可読媒体からの読取及び／又は様々なコンピュータ可読媒体への書込を可能にするために、様々なドライブを含むこともできる。大容量ストレージデバイス１１０８は、取り外し可能媒体及び／又は固定式媒体を含む。
【００８５】
Ｉ／Ｏデバイス１１１０は、データ及び／又は他の情報を演算デバイス１１００に入力し、又はそこから読み出すことを可能にする様々なデバイスを含む。例示的なＩ／Ｏデバイス１１１０は、カーソル制御デバイス、キーボード、キーパッド、マイクロフォン、モニタ又は他の表示デバイス、スピーカ、プリンタ、ネットワークインタフェースカード、モデム、レンズ、ＣＣＤ又は他の画像補足デバイス等を含む。
【００８６】
インタフェース１１０６は、演算デバイス１１００が他のシステム、デバイス、又はコンピューティング環境とインタラクトすることを可能にする様々なインタフェースを含む。例示的なインタフェース１１０６は、ローカルエリアネットワーク（local area network：ＬＡＮ）、ワイドエリアネットワーク（wide area network：ＷＡＮ）、無線ネットワーク、及びインターネットへのインタフェース等、任意の数の異なるネットワークインタフェースを含む。
【００８７】
バス１１１２は、プロセッサ１１０２、メモリデバイス１１０４、インタフェース１１０６、大容量ストレージデバイス１１０８、及びＩ／Ｏデバイス１１１０、並びにバス１１１２に接続された他のデバイスまたは構成要素が互いに通信することを可能にする。バス１１１２は、システムバス、ＰＣＩバス、ＩＥＥＥ１３９４バス、ＵＳＢバス等の幾つかのタイプのバス構造のうちの１つ以上を表す。
【００８８】
本明細書では、例示の目的で、プログラム及び他の実行可能プログラム構成要素を個別のブロックとして示しているが、これらのプログラム及び構成要素は、演算デバイス１１００の異なるストレージ構成要素に様々な時点で存在でき、プロセッサ１１０２によって実行される。或いは、本明細書に開示するシステム及び手順は、ハードウェア、若しくはハードウェア、ソフトウェア、及び／又はファームウェアの組み合わせによって実現してもよい。例えば、ここに説明した１つ以上のシステム及び手順を実行するように、１つ以上の特定用途向け集積回路（application specific integrated circuit：ＡＳＩＣ）をプログラムしてもよい。
【００８９】
特定の好ましい実施形態に関して本開示を説明したが、本開示の利益を考慮すると、必ずしもここに開示した利益及び特徴の全てを提供しない実施形態を含む他の実施形態も本開示の範囲内であることは、当業者にとって明らかである。本開示の範囲から逸脱することなく、他の実施形態を利用できることも明らかである。
【符号の説明】
【００９０】
１００  データ処理プラットフォーム
１０２  リソースマネージャ
１０４  ユーザ
１０６  ユーザ
１０８  ユーザ
１１０  メタデータ
１１２  実行プラットフォーム
１１４  ストレージプラットフォーム
１１６  データストレージデバイス
１１８  データストレージデバイス
１２０  データストレージデバイス
２０２  アクセスマネージャ
２０４  キーマネージャ
２０６  データストレージデバイス
２０８  要求処理サービス
２１０  管理コンソールサービス
２１２  ＳＱＬコンパイラ
２１４  ＳＱＬオプティマイザ
２１６  ＳＱＬエクゼキュータ
２１８  クエリスケジューラ及びコーディネータ
２２０  仮想ウェアハウスマネージャ
２２２  構成及びメタデータマネージャ
２２４  モニタ及び作業負荷アナライザ
２２６  データストレージデバイス
２２８  トランザクション管理及びアクセス制御モジュール
３０２  仮想ウェアハウス
３０４  仮想ウェアハウス
３０６  仮想ウェアハウス
３０８  実行ノード
３１０  実行ノード
３１２  実行ノード
３１４  キャッシュ
３１６  プロセッサ
３１８  キャッシュ
３２０  プロセッサ
３２２  キャッシュ
３２４  プロセッサ
３２６  実行ノード
３２８  実行ノード
３３０  実行ノード
３３２  キャッシュ
３３４  プロセッサ
３３６  キャッシュ
３３８  プロセッサ
３４０  キャッシュ
３４２  プロセッサ
３４４  実行ノード
３４６  実行ノード
３４８  実行ノード
３５０  キャッシュ
３５２  プロセッサ
３５４  キャッシュ
３５６  プロセッサ
３５８  キャッシュ
３６０  プロセッサ
４０２  ユーザ
４０４  ユーザ
４０６  ユーザ
４０８  仮想ウェアハウス
４１０  仮想ウェアハウス
４１２  仮想ウェアハウス
４１４  データベース
４１６  データベース
４１８  データベース
４２０  データベース
４２２  データベース
４２４  データベース
５０２  ユーザ
５０４  ユーザ
５０６  ユーザ
５０８  仮想ウェアハウスリソースマネージャ
５１０  仮想ウェアハウス
５１２  仮想ウェアハウス
５１４  仮想ウェアハウス
５１６  仮想ウェアハウスグループ
５１８  データベース
５２０  データベース
５２２  データベース
５２４  データベース
５２６  データベース
５２８  データベース
６０２  データ通信ネットワーク
６０４  仮想ウェアハウスグループ
６０６  仮想ウェアハウスグループ
６０８  仮想ウェアハウス
６１０  仮想ウェアハウス
６１２  仮想ウェアハウス
６１４  仮想ウェアハウス
６１６  仮想ウェアハウス
６１８  データ通信ネットワーク
６２０  データベース
６２２  データベース
６２４  データベース
７００  データ保存及び検索動作を管理するための方法
８００  カタログオブジェクトをクローン化するための方法
９００  一時的複製カタログオブジェクトを作成するための方法
１１００  演算デバイス
１１０２  プロセッサ
１１０４  メモリデバイス
１１０６  インタフェース
１１０８  大容量ストレージデバイス
１１１０  入出力（Ｉ／Ｏ）デバイス
１１１２  バス
【図１】
2019522844.tif 000003
【図２】
2019522844.tif 000004
【図３】
2019522844.tif 000005
【図４】
2019522844.tif 000006
【図５】
2019522844.tif 000007
【図６】
2019522844.tif 000008
【図７】
2019522844.tif 000009
【図８】
2019522844.tif 000010
【図９】
2019522844.tif 000011
【図１０】
2019522844.tif 000012
【図１１】
2019522844.tif 000013
【国際調査報告】
2019522844.tif 000014