(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】2019522844
(43)【公表日】20190815
(54)【発明の名称】カタログオブジェクトのクローン化
(51)【国際特許分類】
   G06F 16/172 20190101AFI20190719BHJP
【FI】
   !G06F16/172
【審査請求】未請求
【予備審査請求】未請求
【全頁数】29
(21)【出願番号】2018563493
(86)(22)【出願日】20170601
(85)【翻訳文提出日】20190129
(86)【国際出願番号】US2017035531
(87)【国際公開番号】WO2017210477
(87)【国際公開日】20171207
(31)【優先権主張番号】15/171,859
(32)【優先日】20160602
(33)【優先権主張国】US
(81)【指定国】 AP(BW,GH,GM,KE,LR,LS,MW,MZ,NA,RW,SD,SL,ST,SZ,TZ,UG,ZM,ZW),EA(AM,AZ,BY,KG,KZ,RU,TJ,TM),EP(AL,AT,BE,BG,CH,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GR,HR,HU,IE,IS,IT,LT,LU,LV,MC,MK,MT,NL,NO,PL,PT,RO,RS,SE,SI,SK,SM,TR),OA(BF,BJ,CF,CG,CI,CM,GA,GN,GQ,GW,KM,ML,MR,NE,SN,TD,TG),AE,AG,AL,AM,AO,AT,AU,AZ,BA,BB,BG,BH,BN,BR,BW,BY,BZ,CA,CH,CL,CN,CO,CR,CU,CZ,DE,DJ,DK,DM,DO,DZ,EC,EE,EG,ES,FI,GB,GD,GE,GH,GM,GT,HN,HR,HU,ID,IL,IN,IR,IS,JP,KE,KG,KH,KN,KP,KR,KW,KZ,LA,LC,LK,LR,LS,LU,LY,MA,MD,ME,MG,MK,MN,MW,MX,MY,MZ,NA,NG,NI,NO,NZ,OM,PA,PE,PG,PH,PL,PT,QA,RO,RS,RU,RW,SA,SC,SD,SE,SG,SK,SL,SM,ST,SV,SY,TH,TJ,TM,TN,TR,TT,TZ
(71)【出願人】
【識別番号】516245999
【氏名又は名称】スノーフレーク インク.
【住所又は居所】アメリカ合衆国,カリフォルニア州 94402,サン マテオ, コンカー ドライブ 450
(74)【代理人】
【識別番号】100067736
【弁理士】
【氏名又は名称】小池 晃
(74)【代理人】
【識別番号】100192212
【弁理士】
【氏名又は名称】河野 貴明
(74)【代理人】
【識別番号】100204032
【弁理士】
【氏名又は名称】村上 浩之
(74)【代理人】
【識別番号】100200001
【弁理士】
【氏名又は名称】北原 明彦
(72)【発明者】
【氏名】モティバラ,アシシ
【住所又は居所】アメリカ合衆国 カリフォルニア州 94401, サン マテオ, 101 エス エルスワース アベニュー #350
(72)【発明者】
【氏名】デイジビル,ベノワ
【住所又は居所】アメリカ合衆国 カリフォルニア州 94401, サン マテオ, 101 エス エルスワース アベニュー #350
(57)【要約】
カタログオブジェクトをクローン化するための例示的なシステム及び方法を開示する。一具体例では、方法は、データセットに関連する元のカタログオブジェクトを識別し、データ自体をコピーすることなく元のカタログオブジェクトの複製コピーを作成する。この方法は、複製カタログオブジェクトを使用してデータセットへのアクセスを可能にし、複製カタログオブジェクトとは独立して元のカタログオブジェクトに関連するデータを変更することをサポートする。元のカタログオブジェクトに関連するデータの変更が完了したときに、複製カタログオブジェクトを削除することができる。
【選択図】図1
【特許請求の範囲】
【請求項1】
データベース内のオブジェクトをクローン化するためのシステムであって、
データセットに関連する元のオブジェクトを識別する手段と、
データ自体をコピーすることなく、同じデータセットに関連する前記元のオブジェクトの複製コピーを作成する手段と、
複製されたオブジェクトとは独立して、前記元のオブジェクトに関連するデータの変更を可能にする手段と、
前記元のオブジェクトに関連するデータの変更が完了したときに、前記複製されたオブジェクトを削除する手段と、
を備えることを特徴とするシステム。
【請求項2】
前記元のオブジェクトの複製コピーを作成する手段は、前記データセットに関連するメタデータを前記複製されたオブジェクトにコピーすることを含むことを特徴とする請求項1に記載のシステム。
【請求項3】
前記メタデータは、前記データセットに保存されているデータのインベントリを含むことを特徴とする請求項2に記載のシステム。
【請求項4】
前記メタデータは、前記データセットに含まれる実際のデータへのアクセスを必要とすることなく、前記データセットに関する情報を識別することを特徴とする請求項2に記載のシステム。
【請求項5】
前記元のオブジェクトは、データ保存システム内のデータの論理グループを表すことを特徴とする請求項1に記載のシステム。
【請求項6】
前記元のオブジェクトは、テーブル、データベース、スキーマ、アカウント、制約、ファイルフォーマット、機能、役割、シーケンス、ステージ、列、ユーザ、ボリューム、又はカタログオブジェクトのうちの1つを含むことを特徴とする請求項1に記載のシステム。
【請求項7】
前記元のオブジェクトに関連する変更データは、前記複製されたオブジェクトにとって不可視であることを特徴とする請求項1に記載のシステム。
【請求項8】
前記複製されたオブジェクトに関連する変更データは、前記元のオブジェクトにとって不可視であることを特徴とする請求項1に記載のシステム。
【請求項9】
データベース内のオブジェクトをクローン化するためのシステムであって、前記システムが、
データセットに関連する元のオブジェクトを保存するように構成されたストレージプラットフォームと、
リソースマネージャと、
を備え、
前記リソースマネージャが、
データ自体をコピーすることなく、同じデータセットに関連する前記元のオブジェクトの複製コピーを作成し、
複製されたオブジェクトとは独立して、前記元のオブジェクトに関連するデータの変更を可能にし、
前記元のオブジェクトに関連するデータの変更が完了したときに、前記複製されたオブジェクトを削除するように構成されている、
ことを特徴とするシステム。
【請求項10】
前記リソースマネージャはさらに、前記データセットに関連するメタデータを前記複製されたオブジェクトにコピーするように構成されていることを特徴とする請求項9に記載のシステム。
【請求項11】
前記メタデータは、前記データセットに保存されているデータのインベントリを含むことを特徴とする請求項10に記載のシステム。
【請求項12】
前記メタデータは、前記データセットに含まれる実際のデータへのアクセスを必要とすることなく、前記データセットに関する情報を識別することを特徴とする請求項10に記載のシステム。
【請求項13】
前記元のオブジェクトは、データ保存システム内のデータの論理グループを表すことを特徴とする請求項9に記載のシステム。
【請求項14】
前記元のオブジェクトは、テーブル、データベース、スキーマ、アカウント、制約、ファイルフォーマット、機能、役割、シーケンス、ステージ、列、ユーザ、ボリューム、又はカタログオブジェクトのうちの1つを含むことを特徴とする請求項9に記載のシステム。
【請求項15】
前記元のオブジェクトに関連する変更データは、前記複製されたオブジェクトにとって不可視であることを特徴とする請求項9に記載のシステム。
【請求項16】
前記複製されたオブジェクトに関連する変更データは、前記元のオブジェクトにとって不可視であることを特徴とする請求項9に記載のシステム。
【請求項17】
データセットに関連する元のオブジェクトを識別すること、
1つ以上のプロセッサを使用して、データ自体をコピーすることなく、同じデータセットに関連する前記元のオブジェクトの複製コピーを作成すること、
複製されたオブジェクトを使用して前記データセットへのアクセスを可能にすること、
前記複製されたオブジェクトとは独立して、前記元のオブジェクトに関連するデータを変更すること、及び
前記元のオブジェクトに関連するデータの変更が完了したときに、前記複製されたオブジェクトを削除すること、
を含むことを特徴とする方法。
【請求項18】
前記元のオブジェクトの複製コピーを作成することは、前記データセットに関連するメタデータを前記複製されたオブジェクトにコピーすることを含むことを特徴とする請求項17に記載の方法。
【請求項19】
前記メタデータは、前記データセットに保存されているデータのインベントリを含むことを特徴とする請求項18に記載の方法。
【請求項20】
前記メタデータは、前記データセットに含まれる実際のデータへのアクセスを必要とすることなく、前記データセットに関する情報を識別することを特徴とする請求項18に記載の方法。
【請求項21】
前記元のオブジェクトは、データ保存システム内のデータの論理グループを表すことを特徴とする請求項17に記載の方法。
【請求項22】
前記元のオブジェクトは、テーブル、データベース、スキーマ、アカウント、制約、ファイルフォーマット、機能、役割、シーケンス、ステージ、列、ユーザ、ボリューム、又はカタログオブジェクトのうちの1つを含むことを特徴とする請求項17に記載の方法。
【請求項23】
前記複製されたオブジェクトは、読取専用であることを特徴とする請求項17に記載の方法。
【請求項24】
前記元のオブジェクトに関連する変更データは、前記複製されたオブジェクトにとって不可視であることを特徴とする請求項17に記載の方法。
【請求項25】
前記複製されたオブジェクトに関連する変更データは、前記元のオブジェクトにとって不可視であることを特徴とする請求項17に記載の方法。
【請求項26】
前記元のオブジェクトから削除されたデータは、前記複製されたオブジェクトにとって可視のままであることを特徴とする請求項17に記載の方法。
【請求項27】
前記複製されたオブジェクトから削除されたデータは、前記元のオブジェクトにとって可視のままであることを特徴とする請求項17に記載の方法。
【請求項28】
前記元のオブジェクトに関連する挿入されたデータは、前記複製されたオブジェクトにとって不可視であることを特徴とする請求項17に記載の方法。
【請求項29】
前記複製されたオブジェクトに関連する挿入されたデータは、前記元のオブジェクトにとって不可視であることを特徴とする請求項17に記載の方法。
【請求項30】
前記元のオブジェクトに関連するデータの変更が完了したときに、前記元のオブジェクトを削除することを更に含むことを特徴とする請求項17に記載の方法。
【請求項31】
前記複製されたオブジェクトは、全ての世代の子の複製された階層を含むことを特徴とする請求項17に記載の方法。
【発明の詳細な説明】
【関連出願】
【0001】
本出願は、2014年10月20日に出願された米国特許出願第14 / 518,884号、発明の名称「Resource management systems and methods」の一部継続出願であり、この文献の開示は、全体が参照により本明細書に援用される。また、上記の米国特許出願は、2014年2月19日に出願された米国仮特許出願第61 / 941,986号、発明の名称「Apparatus and method for enterprise data warehouse data processing on cloud infrastructure」の優先権を主張しており、この文献の開示は、全体が参照により本明細書に援用される。
【技術分野】
【0002】
本開示は、データの保存及び検索をサポートするシステムおよび方法に関する。
【背景技術】
【0003】
現在、多くの既存のデータ保存及び検索システムが利用可能である。例えば、共有ディスクシステムでは、データクラスタ内の全ての処理ノードからアクセス可能な共有ストレージデバイスに全てのデータが保存される。このタイプのシステムでは、データクラスタ内の全ての処理ノードが一貫したバージョンのデータにアクセスできるように、全てのデータ変更が共有ストレージデバイスに書き込まれる。共有ディスクシステムにおいて処理ノードの数が増加すると、共有ストレージデバイス(及び処理ノードと共有ストレージデバイスとの間の通信リンク)がボトルネックとなり、データの読取及びデータの書込動作が遅くなる。このボトルネックは、処理ノードが追加されると更に深刻化する。したがって、既存の共有ディスクシステムでは、このボトルネックの問題のために、スケーラビリティに限界がある。
【0004】
「共有なしアーキテクチャ(shared-nothing architecture)」と呼ばれる他のデータ保存及び検索システムも知られている。このアーキテクチャでは、データが複数の処理ノードに分散され、各ノードがデータベース全体にデータのサブセットを保存する。新しい処理ノードが追加又は削除された場合、共有なしアーキテクチャでは、複数の処理ノード間でデータを並べ替える必要がある。このデータの並べ替えは時間がかかり、データの並べ替え中に実行されるデータの読出/書込処理に支障が生じる可能性がある。また、特定のノードに対するデータの類似性により、一般的なデータのデータクラスタに「ホットスポット」が生じる可能性がある。更に、各処理ノードは、保存機能も実行するため、このアーキテクチャは、データを保存するために少なくとも1つの処理ノードを必要とする。したがって、全ての処理ノードが削除された場合、共有なしアーキテクチャは、データを保存できない。更に、共有なしアーキテクチャでは、データが多くの異なる処理ノードに亘って分散しているため、データの管理が複雑である。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本明細書に記述するシステム及び方法は、上述した既存のシステムの制約を軽減し、データ保存及びデータ検索の改善された手法を提供する。
【0006】
本明細書に記述するシステム及び方法は、既存のシステムが直面する問題を発生させることなく、データを保存及び検索するための新しいプラットフォームを提供する。例えば、この新しいプラットフォームは、共有なしアーキテクチャで要求されているようなデータファイルの並べ替えを必要とすることなく、新しいノードの追加をサポートする。更に、共有ディスクシステムで一般的なボトルネックを発生させることなく、ノードをプラットフォームに追加できる。この新しいプラットフォームは、一部のノードがメンテナンスのためにオフラインになっている場合や障害が発生した場合でも、データの読取及び書込動作に常に使用できる。ここに開示するプラットフォームは、データストレージリソースを演算リソースから分離するため、専用の演算リソースを使用する必要なく、データを保存できる。これは、全ての演算リソースが削除されるとデータを保存できない非共有アーキテクチャに対する改善点である。すなわち、この新しいプラットフォームでは、演算リソースが使用できない又は他のタスクを実行している場合でもデータを保存し続けることができる。
【課題を解決するための手段】
【0007】
以下により詳細に説明するように、ここに開示するシステム及び方法は、データベースウェアハウスに保存されている大量のデータのコピーをサポートする。ここでは、クローン化技術(cloning technique)を使用して、データ自体を実際にコピーすることなく、データのコピーに関連する新しいオブジェクトを作成する。このクローン化技術により、大量のデータを更新し、特定のデータセットを試す処理が単純化される。具体的には、ここに開示するシステム及び方法は、データセットに関連する元のカタログオブジェクトを識別し、データ自体をコピーすることなく元のカタログオブジェクトの複製コピーを作成できる。このシステムにより、複製カタログオブジェクトを使用して、データ保存システム内のデータセットにアクセスすることができる。元のカタログオブジェクトに関連するデータは、複製カタログオブジェクトとは独立して変更することができる。元のカタログオブジェクトに関連するデータが変更された後、このシステムは、複製カタログオブジェクトを削除でき、又は元のカタログオブジェクトを削除できる。本明細書で説明するように、例示的なカタログオブジェクトは、スキーマ、テーブル、ビュー、列、制約、シーケンス、機能、ファイルフォーマット、ステージ等のデータベースオブジェクトを定義するメタデータを含むデータベースインスタンスを含む。他の例示的なカタログオブジェクトは、任意の種類のデータ又はデータ構造を含むことができる。様々なシステム及び方法の説明において、「カタログオブジェクト」は「スキーマオブジェクト」とも呼ばれる。
【0008】
以下の図を参照して、本開示の非限定的かつ非排他的な実施形態を記述する。別段の指定がない限り、各図における同様の参照符号は、同様の部分を指示している。
【図面の簡単な説明】
【0009】
【図1】本明細書に記述するシステム及び方法の例示的な実施形態を示すブロック図である。
【図2】リソースマネージャの一実施形態を示すブロック図である。
【図3】実行プラットフォームの一実施形態を示すブロック図である。
【図4】複数のユーザが複数の仮想ウェアハウスを介して複数のデータベースにアクセスする例示的な動作環境を示すブロック図である。
【図5】複数のユーザが負荷バランサ及び仮想ウェアハウスグループに含まれる複数の仮想ウェアハウスを介して複数のデータベースにアクセスする、別の例示的な動作環境を示すブロック図である。
【図6】複数の分散仮想ウェアハウス及び仮想ウェアハウスグループを有する他の例示的な動作環境を示すブロック図である。
【図7】データ保存及び検索動作を管理するための方法の一実施形態を示すフローチャートである。
【図8】カタログオブジェクトをクローン化するための方法の一実施形態を示すフローチャートである。
【図9】一時的複製カタログオブジェクトを作成する方法の一実施形態を示すフローチャートである。
【図10】複数のファイルにアクセスする元のテーブルオブジェクト及びクローン化されたテーブルオブジェクトの一実施形態を示す図である。
【図11】例示的な演算デバイスを示すブロック図である。
【発明を実施するための形態】
【0010】
以下の説明では、説明の一部を構成する添付の図面を参照し、図面は、本開示を実施できる特定の例示的な実施形態を例示的に示している。これらの実施形態は、当業者が本明細書に開示された概念を実施できるよう十分に詳細に記載されており、本開示の範囲から逸脱することなく、開示された様々な実施形態を修正し、他の実施形態を利用してもよいことは明らかである。したがって、以下の詳細な説明は、限定的な意味で解釈されるべきではない。
【0011】
本明細書を通して、「一実施形態」、「実施形態」、「一例」又は「例」という用語は、その実施形態又は実施例に関連して説明した特定の特徴、構造又は特性が本開示の少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書の様々な部分における「一実施形態において」、「実施形態では」、「一例」又は「例」等の句は、必ずしも全て同じ実施形態又は実施例を指すものではない。更に、本明細書に添付される図面は当業者への説明を目的としており、図面は必ずしも一定の縮尺で描かれているわけではない。
【0012】
本開示に基づく実施形態は、装置、方法又はコンピュータプログラム製品として具現化できる。したがって、本開示は、完全にハードウェアで構成される実施形態、完全にソフトウェア(ファームウェア、常駐ソフトウェア、マイクロコード等を含む。)で構成される実施形態、又は本明細書において総称的に「回路」、「モジュール」又は「システム」と呼ぶソフトウェア及びハードウェアの態様を組み合わせた実施形態の形式で実現してもよい。更に、本開示の実施形態は、媒体に組み込まれたコンピュータ使用可能プログラムコードを有する任意の有形の媒体に組み込まれたコンピュータプログラム製品の形式で実現することもできる。
【0013】
1つ又は複数のコンピュータ使用可能媒体又はコンピュータ可読媒体の任意の組合せを利用できる。例えば、コンピュータ可読媒体は、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(random access memory:RAM)デバイス、リードオンリーメモリ(read-only memory:ROM)デバイス、消去可能プログラマブル読出専用メモリ(erasable programmable read-only memory:EPROM又はフラッシュメモリ)デバイス、携帯用コンパクトディスク読出専用メモリ(compact disc read-only memory:CD−ROM)、光記憶デバイス、及び磁気記憶デバイスのうちの1つ又は複数を含むことができる。本開示の動作を実行するためのコンピュータプログラムコードは、1つ又は複数のプログラミング言語の任意の組み合わせで書くことができる。このようなコードは、ソースコードから、コードが実行されることになるデバイス又はコンピュータに適したコンピュータ可読アセンブリ言語又はマシンコードにコンパイルしてもよい。
【0014】
実施形態は、クラウドコンピューティング環境において実施してもよい。この説明及び特許請求の範囲において、「クラウドコンピューティング」は、構成可能な演算リソース(例えば、ネットワーク、サーバ、ストレージ、アプリケーション、及びサービス)の共有プールへのユビキタスで便利なオンデマンドネットワークアクセスを可能にするためのモデルと定義でき、これは、仮想化によって迅速にセットアップされ、最小限の管理作業又はサービスプロバイダとのインタラクションによってリリースされ、必要に応じてスケーリングされる。クラウドモデルは、様々な特性(例えば、オンデマンドセルフサービス、ブロードネットワークアクセス、リソースプーリング、迅速な弾力性、及び測定されたサービス)、サービスモデル(例えば、サービスとしてのソフトウェア(Software as a Service:SaaS)、サービスとしてのプラットフォーム(Platform as a Service:PaaS)、及びサービスとしてのインフラストラクチャ(Infrastructure as a Service:IaaS))、及び展開モデル(例えば、プライベートクラウド、コミュニティクラウド、パブリッククラウド、及びハイブリッドクラウド)を有することができる。
【0015】
添付の図面のフローチャート及びブロック図は、本開示の様々な実施形態に基づくシステム、方法、及びコンピュータプログラム製品の可能な具体例のアーキテクチャ、機能、及び動作を示す。これに関して、フローチャート又はブロック図の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含むモジュール、セグメント、又はコードの一部を表すことができる。なお、ブロック図及び/又はフローチャートの各ブロック、並びにブロック図及び/又はフローチャート内のブロックの組み合わせは、指定された機能又は動作を実行する専用ハードウェアベースのシステム、又は専用ハードウェアとコンピュータの命令の組み合わせによって実施してもよい。また、これらのコンピュータプログラム命令は、コンピュータ又は他のプログラム可能データ処理装置に特定の方式で機能するように指示できるコンピュータ可読媒体に保存でき、すなわち、コンピュータ可読媒体に保存された命令は、フローチャート及び/又はブロック図ブロック又は複数のブロック図で指定された機能/動作を実施する命令手段を含む製品を実現する。
【0016】
本明細書に開示するシステム及び方法は、新しいデータ処理プラットフォームを使用して柔軟かつスケーラブルなデータウェアハウスを提供する。幾つかの実施形態では、ここに開示するシステム及び方法は、クラウドベースのストレージリソース、演算リソース等をサポートするクラウドインフラストラクチャを利用する。例示的なクラウドベースのストレージリソースは、低コストでオンデマンドで利用可能な大きなストレージ容量を提供する。更に、これらのクラウドベースのストレージリソースは、フォールトトレラント(fault tolerant)かつ高度にスケーラブルであってもよく、これは、プライベートデータストレージシステムにおいて達成するには高コストになる可能性がある。例示的なクラウドベースの演算リソースは、オンデマンドで利用可能であり、リソースの実際の使用レベルに基づいて価格設定してもよい。クラウドインフラストラクチャは、通常、速やかに動的に展開、再設定、及び廃止される。
【0017】
ここに開示するシステム及び方法において、データ保存システムは、SQL(Structured Query Language:構造化照会言語)ベースのリレーショナルデータベースを利用する。なお、これらのシステム及び方法は、任意のデータ保存アーキテクチャを使用し、任意の言語を使用してデータ保存及び検索プラットフォーム内でデータを保存及び検索する、任意の種類のデータ保存及び検索プラットフォーム、及び任意の種類のデータベースに適用可能である。本明細書において、システム及び方法は、更に、異なる顧客/クライアント間及び同じ顧客/クライアント内の異なるユーザ間で演算リソース及びデータの分離をサポートするマルチテナントシステムを提供する。
【0018】
図1は、新しいデータ処理プラットフォーム100の例示的な実施形態を示すブロック図である。図1に示すように、リソースマネージャ102は、複数のユーザ104、106、108に接続されている。特定の具体例では、リソースマネージャ102は、データ処理プラットフォーム100へのアクセスを望む任意の数のユーザをサポートできる。ユーザ104〜108は、例えば、データ保存及び検索要求を提供するエンドユーザ、本明細書に開示するシステム及び方法を管理するシステム管理者、並びにリソースマネージャ102とインタラクトする他のコンポーネント/デバイスを含むことができる。リソースマネージャ102は、データ処理プラットフォーム100内の全てのシステム及び構成要素の動作をサポートする様々なサービス及び機能を提供する。本明細書におけるリソースマネージャ102は、本明細書で説明する様々な機能を実行する「グローバルサービスシステム」と呼ばれることもある。
【0019】
リソースマネージャ102は、データ処理プラットフォーム100全体に保存されているデータ全体に関連するメタデータ110にも接続されている。幾つかの実施形態では、メタデータ110は、遠隔データ保存システムに保存されているデータのカタログ、及びローカルキャッシュから利用可能なデータを含む。特定の実施形態では、遠隔データ保存システムに保存されているデータのカタログは、遠隔データ保存システムに保存されているデータの要約を含む。更に、メタデータ110は、データが遠隔データ保存システム及びローカルキャッシュ内でどのように編成されるかに関する情報を含むことができる。メタデータ110により、システム及びサービスは、ストレージデバイスから実際のデータをロード又はアクセスすることなくデータの一部にアクセスする必要があるかどうかを判定することができる。
【0020】
リソースマネージャ102は、更に、実行プラットフォーム112に接続されており、実行プラットフォーム112は、以下で更に詳細に説明するように、様々なデータ保存及びデータ検索タスクを実行する複数の演算リソースを提供する。実行プラットフォーム112は、ストレージプラットフォーム114の一部である複数のデータストレージデバイス116、118、120に接続されている。図1には3つのデータストレージデバイス116、118、120が図示されているが、実行プラットフォーム112は、任意の数のデータストレージデバイスと通信できる。幾つかの実施形態では、データストレージデバイス116、118、120は、1つ以上の地理的位置に配置されたクラウドベースのストレージデバイスである。例えば、データストレージデバイス116、118、120は、パブリッククラウドインフラストラクチャ又はプライベートクラウドインフラストラクチャの一部であってもよい。データストレージデバイス116、118、120は、ハードディスクドライブ(hard disk drive:HDD)、ソリッドステートドライブ(solid state drive:SSD)、ストレージクラスタ、AmazonS3ストレージシステム、又は他の任意のデータストレージ技術であってもよい。更に、ストレージプラットフォーム114は、分散ファイルシステム(例えば、Hadoop分散ファイルシステム(Hadoop Distributed File System;HDFS))、オブジェクトストレージシステム等を含むことができる。
【0021】
特定の実施形態では、リソースマネージャ102と、ユーザ104〜108、メタデータ110、及び実行プラットフォーム112との間の通信リンクは、1つ以上のデータ通信ネットワークを介して実現される。同様に、実行プラットフォーム112と、ストレージプラットフォーム114内のデータストレージデバイス116〜120との間の通信リンクは、1つ以上のデータ通信ネットワークを介して実現される。これらのデータ通信ネットワークは、任意の通信プロトコル及び任意の種類の通信媒体を利用できる。幾つかの実施形態では、データ通信ネットワークは、互いに接続された2つ以上のデータ通信ネットワーク(又はサブネットワーク)の組み合わせである。他の実施形態では、これらの通信リンクは、任意の種類の通信媒体及び任意の通信プロトコルを使用して実現される。
【0022】
図1に示すように、データストレージデバイス116、118、120は、実行プラットフォーム112に関連する演算リソースから分離されている。このアーキテクチャは、データ保存/検索のニーズの変化、並びにデータ処理プラットフォーム100にアクセスするユーザ及びシステムのニーズの変化に基づいて、データ処理プラットフォーム100に対する動的な変更をサポートする。このような動的な変更のサポートにより、データ処理プラットフォーム100内のシステム及びコンポーネントに対する要求の変化に応じて、データ処理プラットフォーム100を迅速に拡張することが可能になる。データストレージデバイスから演算リソースを分離することにより、対応する大量の演算リソースを必要とすることなく、大量のデータの保存がサポートされる。同様に、このリソースの分離により、利用可能なデータストレージリソースを対応させて増加させる必要なく、特定の時間に利用される演算リソースの大幅な増加をサポートできる。
【0023】
図1では、リソースマネージャ102、メタデータ110、実行プラットフォーム112、及びストレージプラットフォーム114を個々のコンポーネントとして示している。しかしながら、リソースマネージャ102、メタデータ110、実行プラットフォーム112、及びストレージプラットフォーム114のそれぞれは、分散システム(例えば、複数の地理的位置にある複数のシステム/プラットフォームに亘って分散されたシステム)として実現してもよい。更に、リソースマネージャ102、メタデータ110、実行プラットフォーム112、及びストレージプラットフォーム114のそれぞれは、ユーザ104〜108から受け取る要求の変化及びデータ処理プラットフォーム100のニーズの変化に応じて、(互いに独立して)拡張又は縮小できる。したがって、ここに開示する実施形態では、データ処理プラットフォーム100は、動的であり、現在のデータ処理のニーズを満たすための定期的な変更をサポートする。
【0024】
通常の動作において、データ処理プラットフォーム100は、ユーザ104〜108のいずれかから受信した複数のクエリ(又は要求)を処理する。これらのクエリは、リソースマネージャ102が管理し、リソースマネージャ102は、いつ、どのようにクエリを実行するかを判定する。例えば、リソースマネージャ102は、クエリを処理するためにどのデータが必要であるかを判定し、更に実行プラットフォーム112内のどのノードがクエリを処理するために最適であるかを判定できる。一部のノードは、クエリの処理に必要なデータを既にキャッシュしている可能性があるため、クエリを処理するための最適な候補になる。メタデータ110は、実行プラットフォーム112内のどのノードがクエリを処理するために必要なデータの少なくとも一部を既にキャッシュしているかを判定する際にリソースマネージャ102を支援する。実行プラットフォーム112内の1つ以上のノードは、ノードによってキャッシュされたデータ、及び必要に応じてストレージプラットフォーム114から検索されたデータを使用してクエリを処理する。この検索速度は、通常、ストレージプラットフォーム114からデータを検索するより遥かに速いので、実行プラットフォーム112内のキャッシュから可能な限り多くのデータを検索することが望ましい。
【0025】
図1に示すように、データ処理プラットフォーム100は、実行プラットフォーム112をストレージプラットフォーム114から分離する。この構成では、実行プラットフォーム112内の処理リソース及びキャッシュリソースは、ストレージプラットフォーム114内のデータストレージリソース116〜120とは独立して動作する。したがって、演算リソース及びキャッシュリソースは、特定のデータストレージリソース116〜120に限定されない。これに代えて、全ての演算リソース及び全てのキャッシュリソースは、ストレージプラットフォーム114内の任意のデータストレージリソースからデータを検索し、及びそこにデータを保存できる。更に、データ処理プラットフォーム100は、ストレージプラットフォーム114への如何なる変更も必要とすることなく、実行プラットフォーム112への新しい演算リソース及びキャッシュリソースの追加をサポートする。同様に、データ処理プラットフォーム100は、実行プラットフォーム112内のノードに対する如何なる変更も必要とすることなく、ストレージプラットフォーム114へのデータストレージリソースの追加をサポートする。
【0026】
図2は、リソースマネージャ102の一実施形態を示すブロック図である。図2に示すように、リソースマネージャ102は、データストレージデバイス206に接続されたアクセスマネージャ202及びキーマネージャ204を含む。アクセスマネージャ202は、本明細書に開示するシステムに対する認証及び許可タスクを処理する。キーマネージャ204は、認証及び許可タスク中に使用されるキーの保存及び認証を管理する。例えば、アクセスマネージャ202及びキーマネージャ204は、リモートストレージデバイス(例えば、ストレージプラットフォーム114内のデータストレージデバイス)に保存されているデータにアクセスするために使用されるキーを管理する。本明細書で使用するリモートストレージデバイスとは「永続的ストレージデバイス」と呼ばれることもある。要求処理サービス208は、受信したデータ保存要求及びデータ検索要求(例えば、データベースクエリ)を管理する。例えば、要求処理サービス208は、受信したデータ保存要求又はデータ検索要求を処理するために必要なデータを判定できる。必要なデータは、(以下により詳細に説明するように)実行プラットフォーム112内のキャッシュ、又はストレージプラットフォーム114内のデータストレージデバイスに保存されていてもよい。管理コンソールサービス210は、管理者及び他のシステムマネージャによる様々なシステム及びプロセスへのアクセスをサポートする。更に、管理コンソールサービス210は、ユーザ104〜108から要求を受信して、クエリを発行し、システム上の作業負荷を監視してもよい。幾つかの実施形態では、特定のユーザは、これらの特定のクエリがシステムに課す作業負荷を監視するための要求を発行することができる。
【0027】
また、リソースマネージャ102は、SQLコンパイラ(SQL compiler)212、SQLオプティマイザ(SQL optimizer)214及びSQLエクゼキュータ(SQL executor)216を含む。SQLコンパイラ212は、SQLクエリを解析し、クエリに対する実行コードを生成する。SQLオプティマイザ214は、処理する必要があるデータに基づいてクエリを実行するための最良の方法を判定する。また、SQLオプティマイザ214は、様々なデータ剪定処理及び他のデータ最適化技術を用いて、SQLクエリを実行する速度及び効率を向上させる。SQLエクゼキュータ216は、リソースマネージャ102が受信したクエリに対するクエリコードを実行する。
【0028】
クエリスケジューラ及びコーディネータ218は、受信したクエリを、コンパイル、最適化、及び実行プラットフォーム112へのディスパッチのために適切なサービス又はシステムに送信する。例えば、クエリに優先順位を付し、その優先順位に基づいてクエリを処理してもよい。幾つかの実施形態では、クエリスケジューラ及びコーディネータ218は、特定のクエリを処理するために実行プラットフォーム112内の特定のノードを識別し又は割り当てる。仮想ウェアハウスマネージャ220は、実行プラットフォーム112に実装された複数の仮想ウェアハウスの動作を管理する。後述するように、各仮想ウェアハウスは、それぞれキャッシュ及びプロセッサを含む複数の実行ノードを含む。
【0029】
更に、リソースマネージャ102は、構成及びメタデータマネージャ222を含み、構成及びメタデータマネージャ222は、リモートデータストレージデバイス及びローカルキャッシュ(すなわち、実行プラットフォーム112内のキャッシュ)に保存されているデータに関する情報を管理する。以下により詳細に説明するように、構成及びメタデータマネージャ222は、メタデータを使用して、特定のクエリを処理するために、どのデータファイルにアクセスしてデータを検索する必要があるかを判定する。モニタ及び作業負荷アナライザ224は、リソースマネージャ102が実行するプロセスを監視し、実行プラットフォーム112内の実行ノード及び仮想ウェアハウスに亘るタスク(例えば、作業負荷)の分散を管理する。また、モニタ及び作業負荷アナライザ224は、必要に応じて、データ処理プラットフォーム100全体に亘る作業負荷の変化に基づいてタスクを再分配する。構成及びメタデータマネージャ222並びにモニタ及び作業負荷アナライザ224は、データストレージデバイス226に接続されている。図2のデータストレージデバイス206、226は、データ処理プラットフォーム100内の任意のデータストレージデバイスを表している。例えば、データストレージデバイス206、226は、実行プラットフォーム112内のキャッシュ、ストレージプラットフォーム114内のストレージデバイス、又は他の任意のストレージデバイスを表すことができる。
【0030】
また、リソースマネージャ102は、トランザクション管理及びアクセス制御モジュール228を含み、トランザクション管理及びアクセス制御モジュール228は、データ保存要求及びデータアクセス要求の処理に関連する様々なタスク及び他の活動を管理する。例えば、トランザクション管理及びアクセス制御モジュール228は、複数のユーザ又はシステムによるデータへの一貫した同期アクセスを提供する。複数のユーザ/システムが同じデータに同時にアクセスする可能性があるため、各ユーザ/システムが現在のバージョンのデータを使用していることを確実にするために、データの変更を同期させる必要がある。トランザクション管理及びアクセス制御モジュール228は、リソースマネージャ102内の単一の集中ロケーションにおいて、様々なデータ処理活動を制御する。幾つかの実施形態では、トランザクション管理及びアクセス制御モジュール228は、SQLエクゼキュータ216とインタラクトして、SQLエクゼキュータ216によって実行されている様々なタスクの管理をサポートする。
【0031】
図3は、実行プラットフォーム112の一実施形態を示すブロック図である。図3に示すように、実行プラットフォーム112は、複数の仮想ウェアハウス302、304、306を含む。各仮想ウェアハウスは、それぞれデータキャッシュとプロセッサを含む複数の実行ノードを含む。仮想ウェアハウス302、304、306は、複数の実行ノードを使用することによって複数のクエリ(及び他のタスク)を並行して実行できる。ここに説明するように、実行プラットフォーム112は、システム及びユーザの現在の処理ニーズに基づいて、新しい仮想ウェアハウスを追加し、及び既存の仮想ウェアハウスをリアルタイムで削除できる。この柔軟性により、実行プラットフォーム112は、不要な演算リソースを確保し続けることを強制されることなく、必要に応じて大量の演算リソースを迅速に展開できる。全ての仮想ウェアハウスは、任意のデータストレージデバイス(例えば、ストレージプラットフォーム114内の任意のストレージデバイス)からのデータにアクセスできる。
【0032】
図3に示す各仮想ウェアハウス302〜306は、3つの実行ノードを含むが、特定の仮想ウェアハウスは、任意の数の実行ノードを含むことができる。更に、仮想ウェアハウス内の実行ノードの数は動的であり、追加の要求があれば新しい実行ノードが作成され、不要になると既存の実行ノードが削除される。
【0033】
各仮想ウェアハウス302〜306は、図1に示すデータストレージデバイス116〜120のいずれにもアクセスできる。したがって、仮想ウェアハウス302〜306は、必ずしも特定のデータストレージデバイス116〜120に割り当てる必要はなく、これに代えて、任意のデータストレージデバイス116〜120からのデータにアクセスできる。同様に、図3に示す各実行ノードは、任意のデータストレージデバイス116〜120からのデータにアクセスできる。幾つかの実施形態では、特定の仮想ウェアハウス又は特定の実行ノードを一時的に特定のデータストレージデバイスに割り当ててもよいが、仮想ウェアハウス又は実行ノードは、後に、他の任意のデータストレージデバイスからのデータにアクセスしてもよい。
【0034】
図3に示すように、仮想ウェアハウス302は、3つの実行ノード308、310、312を含む。実行ノード308は、キャッシュ314及びプロセッサ316を含む。実行ノード310は、キャッシュ318及びプロセッサ320を含む。実行ノード312は、キャッシュ322及びプロセッサ324を含む。各実行ノード308〜312は、1つ以上のデータ保存及び/又はデータ検索タスクの処理に関連付けられている。例えば、特定の仮想ウェアハウスは、特定のユーザ又は顧客に関連するデータ保存及びデータ検索タスクを処理できる。他の具体例では、特定の仮想ウェアハウスは、特定のデータ保存システム又は特定のカテゴリのデータに関連するデータ保存及びデータ検索タスクを処理できる。
【0035】
上述の仮想ウェアハウス302と同様に、仮想ウェアハウス304は、3つの実行ノード326、328、330を含む。実行ノード326は、キャッシュ332及びプロセッサ334を含む。実行ノード328は、キャッシュ336及びプロセッサ338を含む。実行ノード330は、キャッシュ340及びプロセッサ342を含む。更に、仮想ウェアハウス306は3つの実行ノード344、346、348を含む。実行ノード344は、キャッシュ350及びプロセッサ352を含む。実行ノード346は、キャッシュ354及びプロセッサ356を含む。実行ノード348は、キャッシュ358及びプロセッサ360を含む。
【0036】
幾つかの実施形態では、図3に示す実行ノードは、実行ノードがキャッシングしているデータに関して、ステートレスである。例えば、これらの実行ノードは、実行ノードについての状態情報、又は特定の実行ノードがキャッシングしているデータを保存又は他の方法で維持しない。したがって、実行ノードに障害が発生した場合、障害が発生したノードを別のノードに透過的に置き換えることができる。障害が発生した実行ノードに関連する状態情報が存在しないため、新しい(置換)実行ノードは、特定の状態を再作成することなく、障害が発生したノードを簡単に置き換えることができる。
【0037】
図3に示す実行ノードは、それぞれ1つのデータキャッシュと1つのプロセッサを含むが、他の実施形態の実行ノードは、任意の数のプロセッサと任意の数のキャッシュとを含むことができる。更に、キャッシュは、異なる実行ノード間でサイズが異なっていてもよい。図3に示すキャッシュは、ローカル実行ノード内に、ストレージプラットフォーム114(図1)内の1つ以上のデータストレージデバイスから検索されたデータを保存する。したがって、キャッシュは、リモートストレージシステムからデータを一貫して検索するプラットフォームで発生するボトルネックの問題を軽減又は解消する。ここに開示するシステム及び方法は、リモートストレージデバイスからのデータに繰り返しアクセスする代わりに、実行ノード内のキャッシュからのデータにアクセスし、これは非常に高速であり、上述のボトルネック問題を回避できる。幾つかの実施形態では、キャッシュは、キャッシュされたデータへの高速アクセスを提供する高速メモリデバイスを使用して実施される。各キャッシュは、ストレージプラットフォーム114内の任意のストレージデバイスからのデータを保存できる。
【0038】
更に、キャッシュリソース及び演算リソースは、実行ノード間で異なっていてもよい。例えば、1つの実行ノードが大きな演算リソースと最小限のキャッシュリソースを含む場合、この実行ノードは、大きな演算リソースを必要とするタスクに有用である。別の実行ノードが大きなキャッシュリソースと最小限の演算リソースとを含む場合、この実行ノードは、大量のデータのキャッシュを必要とするタスクに有用である。更に別の実行ノードが高速入出力動作を提供するキャッシュリソースを含む場合、この実行ノードは、大量のデータの高速スキャンを必要とするタスクに有用である。幾つかの実施形態では、特定の実行ノードに関連するキャッシュリソース及び演算リソースは、実行ノードによって実行されることが予想されるタスクに基づいて、実行ノードが作成されるときに判定される。
【0039】
更に、特定の実行ノードに関連するキャッシュリソース及び演算リソースは、実行ノードが実行するタスクの変化に基づいて経時的に変化することがある。例えば、特定の実行ノードが実行するタスクがよりプロセッサ集約的になった場合、この実行ノードにより多くの処理リソースを割り当ててもよい。同様に、実行ノードが実行するタスクがより大きなキャッシュ容量を必要とする場合、この実行ノードにより多くのキャッシュリソースを割り当ててもよい。
【0040】
仮想ウェアハウス302〜306は、同じ実行プラットフォーム112に関連付けられているが、仮想ウェアハウスは、複数の地理的位置にある複数の演算システムを使用して実現してもよい。例えば、仮想ウェアハウス302は、第1の地理的位置にある演算システムによって実現することができ、仮想ウェアハウス304、306は、第2の地理的位置にある別の演算システムによって実現してもよい。幾つかの実施形態では、これらの異なる演算システムは、1つ以上の異なるエンティティによって維持されるクラウドベースの演算システムである。
【0041】
更に、図3では、各仮想ウェアハウスは複数の実行ノードを有するものとして図示されている。各仮想ウェアハウスに関連する複数の実行ノードは、複数の地理的位置にある複数の演算システムを使用して実現できる。例えば、仮想ウェアハウス302の特定のインスタンスは、特定の地理的位置の1つの演算プラットフォーム上で実行ノード308、310を実現し、別の地理的位置の異なる演算プラットフォーム上で実行ノード312を実現する。実行ノードを実装するための特定の演算システムの選択は、様々な要因、例えば、特定の実行ノードに必要なリソースのレベル(処理リソース要件及びキャッシュ要件等)、特定の演算システムで利用可能なリソース、地理的位置内又は地理的位置間のネットワークの通信機能、及びどの演算システムが既に仮想ウェアハウス内の他の実行ノードを実現しているか等に依存することができる。
【0042】
実行プラットフォーム112も、フォールトトレラントである。例えば、1つの仮想ウェアハウスに障害が発生した場合、その仮想ウェアハウスは、地理的に異なる場所にある別の仮想ウェアハウスと迅速に置き換えられる。
【0043】
特定の実行プラットフォーム112は、任意の数の仮想ウェアハウス302〜306を含むことができる。更に、特定の実行プラットフォーム内の仮想ウェアハウスの数は動的であり、追加の処理リソース及び/又はキャッシングリソースが必要になったときに新しい仮想ウェアハウスが作成される。同様に、仮想ウェアハウスに関連するリソースが不要になると、既存の仮想ウェアハウスを削除できる。
【0044】
幾つかの実施形態では、仮想ウェアハウス302、304、306は、ストレージプラットフォーム114内の同じデータについて動作できるが、各仮想ウェアハウスは、独立した処理リソースとキャッシュリソースを備える独自の実行ノードを有する。この構成により、要求間の干渉を受けることなく、異なる仮想ウェアハウス上の要求を独立して処理できる。この独立した処理は、仮想ウェアハウスを動的に追加及び削除する機能と連携して、既存のユーザによって観察される性能に影響を与えることなく、新規ユーザのための新規処理能力の追加をサポートする。
【0045】
図4は、複数のユーザが複数の仮想ウェアハウスを介して複数のデータベースにアクセスする例示的な動作環境400を示すブロック図である。環境400では、複数のユーザ402、404、406が、複数の仮想ウェアハウス408、410、412を介して複数のデータベース414、416、418、420、422、424にアクセスする。図4には示していないが、ユーザ402、404、406は、リソースマネージャ102(図1)を介して仮想ウェアハウス408、410、412にアクセスしてもよい。特定の実施形態では、データベース414〜424は、ストレージプラットフォーム114(図1)に含まれており、実行プラットフォーム112に実装された任意の仮想ウェアハウスによってアクセス可能である。幾つかの実施形態において、ユーザ402〜406は、インターネット等のデータ通信ネットワークを使用して仮想ウェアハウス408〜412のうちの1つにアクセスする。幾つかの具体例では、各ユーザ402〜406は、特定の時点で作業するための特定の仮想ウェアハウス408〜412を指定する。図4の例では、ユーザ402は、仮想ウェアハウス408とインタラクトし、ユーザ404は、仮想ウェアハウス410とインタラクトし、ユーザ406は、仮想ウェアハウス412とインタラクトする。すなわち、ユーザ402は、仮想ウェアハウス408を介してデータ検索及びデータ保存要求を提出する。同様に、ユーザ404、406は、それぞれ仮想ウェアハウス410、412を介してデータ検索要求及びデータ保存要求を提出する。
【0046】
各仮想ウェアハウス408〜412は、全データベース414〜424のサブセットと通信するように構成されている。例えば、環境400では、仮想ウェアハウス408は、データベース414、416、422と通信するように構成されている。同様に、仮想ウェアハウス410は、データベース416、418、420、424と通信するように構成されている。そして、仮想ウェアハウス412は、データベース416、422、424と通信するように構成されている。他の実施形態では、1つ以上の仮想ウェアハウス408〜412が全てのデータベース414〜424と通信する。図4に示す構成により、個々のユーザは、単一の仮想ウェアハウスを介して全てのデータ検索及びデータ保管要求を送信できる。この仮想ウェアハウスは、仮想ウェアハウス内のいずれかの実行ノード内のキャッシュデータを使用してデータ検索及びデータ保管タスクを処理し、あるいは適切なデータベースから必要なデータを検索(及びキャッシュ)する。仮想ウェアハウス間のマッピングは、ハードウェアマッピングではなく論理マッピングである。この論理マッピングは、リソースアクセス管理設定及びセキュリティに関連するアクセス制御パラメータに基づいている。論理マッピングは、仮想ウェアハウス又はストレージリソースの再設定を必要とすることなく簡単に変更できる。
【0047】
環境400は、データベース414〜424の特定のサブセットと通信するように構成された仮想ウェアハウス408〜412を示しているが、その構成は動的である。例えば、仮想ウェアハウス408は、仮想ウェアハウス408が実行するタスクの変更に基づいてデータベース414〜424の異なるサブセットと通信するように再構成することができる。例えば、仮想ウェアハウス408がデータベース418からのデータにアクセスする要求を受信すると、仮想ウェアハウス408は、データベース418とも通信するように再構成することができる。後に仮想ウェアハウス408がデータベース418からのデータにアクセスする必要がなくなった場合、仮想ウェアハウス408は、データベース418との通信を削除するように再構成することができる。
【0048】
図5は、複数のユーザが負荷バランサ及び仮想ウェアハウスグループに含まれる複数の仮想ウェアハウスを介して複数のデータベースにアクセスする別の例示的な動作環境500を示すブロック図である。環境500は環境400(図4)と同様であるが、仮想ウェアハウスリソースマネージャ508と仮想ウェアハウスグループ516内に配置された複数の仮想ウェアハウス510、512、514を更に含む。仮想ウェアハウスリソースマネージャ508は、リソースマネージャ102に含まれていてもよい。具体的には、複数のユーザ502、504、506は、仮想ウェアハウスリソースマネージャ508及び仮想ウェアハウスグループ516を介して複数のデータベース518、520、522、524、526、528にアクセスする。幾つかの実施形態では、ユーザ502〜506は、インターネット等のデータ通信ネットワークを使用して仮想ウェアハウスリソースマネージャ508にアクセスする。図5には図示していないが、ユーザ502、504、506は、リソースマネージャ102(図1)を介して仮想ウェアハウスリソースマネージャ508にアクセスしてもよい。幾つかの実施形態では、仮想ウェアハウスリソースマネージャ508は、リソースマネージャ102内に実装される。
【0049】
ユーザ502〜506は、仮想ウェアハウスリソースマネージャ508にデータ検索及びデータ保存要求を提出してもよく、仮想ウェアハウスリソースマネージャ508は、データ検索及びデータ保存要求を仮想ウェアハウスグループ516内の適切な仮想ウェアハウス510〜514にルーティングする。幾つかの具体例では、仮想ウェアハウスリソースマネージャ508は、仮想ウェアハウス510〜514へのユーザ502〜506の動的割り当てを提供する。データ検索又はデータ保存要求を提出する際、ユーザ502〜506は、要求を処理する特定の仮想ウェアハウス510〜514を指定せずに、要求を処理するために仮想ウェアハウスグループ516を指定することができる。この構成により、仮想ウェアハウスリソースマネージャ508は、効率、利用可能なリソース、及び仮想ウェアハウス510〜514内のキャッシュデータの利用可能性に基づいて、仮想ウェアハウス510〜514に亘って複数の要求を分散させることができる。データ処理要求をどのようにルーティングするかを判定する際、仮想ウェアハウスリソースマネージャ508は、利用可能なリソース、現在のリソース負荷、現在のユーザ数等を考慮する。
【0050】
幾つかの実施形態では、フォールトトレランスシステムが仮想ウェアハウスの故障に応じて新しい仮想ウェアハウスを作成する。新しい仮想ウェアハウスは、同じ仮想ウェアハウスグループに作成される場合もあれば、異なる地理的位置にある異なる仮想ウェアハウスグループに作成される場合もある。
【0051】
各仮想ウェアハウス510〜514は、全データベース518〜528のサブセットと通信するように構成されている。例えば、環境500では、仮想ウェアハウス510は、データベース518、520、526と通信するように構成されている。同様に、仮想ウェアハウス512は、データベース520、522、524、528と通信するように構成されている。そして、仮想ウェアハウス514は、データベース520、526、528と通信するように構成されている。他の実施形態では、仮想ウェアハウス510〜514は、データベース518〜528のうちのいずれか(又は全て)と通信できる。
【0052】
環境500には、1つの仮想ウェアハウスグループ516が図示されているが、他の実施形態は、それぞれ任意の数の仮想ウェアハウスに関連する任意の数の仮想ウェアハウスグループを含むことができる。特定の環境内の仮想ウェアハウスグループの数は動的であり、環境内のユーザ及び他のシステムのニーズの変化に基づいて変更してもよい。
【0053】
図6は、複数の分散仮想ウェアハウス及び仮想ウェアハウスグループを有する他の例示的な動作環境600を示すブロック図である。環境600は、データ通信ネットワーク602を介して仮想ウェアハウスグループ604、606と通信するリソースマネージャ102を含む。ウェアハウスグループ604は2つの仮想ウェアハウス608、610を含み、ウェアハウスグループ606は別の2つの仮想ウェアハウス614、616を含む。また、リソースマネージャ102は、データ通信ネットワーク602を介して、(仮想ウェアハウスグループの一部ではない)仮想ウェアハウス612と通信する。
【0054】
仮想ウェアハウスグループ604、606並びに仮想ウェアハウス612は、データ通信ネットワーク618を介してデータベース620、622、624と通信する。幾つかの実施形態では、データ通信ネットワーク602、618は同じネットワークである。環境600により、リソースマネージャ102は、複数の仮想ウェアハウス608〜616に亘ってユーザデータの保存及び検索要求を調整して、データベース620〜624にデータを保存し、検索を行うことができる。仮想ウェアハウスグループ604、606は、同じ地理的領域に配置してもよく、地理的に分離してもよい。更に、仮想ウェアハウスグループ604、606は、同じエンティティによって実現してもよく、異なるエンティティによって実現してもよい。
【0055】
本明細書に開示するシステム及び方法により、データを演算(又は処理)リソースとは別のサービスとして保存し、アクセスすることができる。実行プラットフォームから演算リソースが割り当てられていなくても、遠隔データソースからのデータのリロードを必要とすることなく、仮想ウェアハウスでデータが利用できる。すなわち、データは、そのデータに関連する演算リソースの割当とは独立して利用可能である。ここに開示するシステム及び方法は、如何なる種類のデータにも有用である。特定の実施形態では、データは構造化され最適化されたフォーマットで保存される。また、データ保存/アクセスサービスを演算サービスから分離することにより、異なるユーザ間及び異なるグループ間でのデータの共有が単純化される。ここに説明したように、各仮想ウェアハウスは、他の仮想ウェアハウスが同時に同じデータにアクセスしていても、アクセス許可を有する任意のデータにアクセスできる。このアーキテクチャは、ローカルキャッシュに実際のデータを保存せずにクエリを実行することをサポートする。ここに開示するシステム及び方法は、システムのユーザに対して透過的な手法で、必要に応じて、リモートストレージデバイスからローカルキャッシュにデータを移動する透過的な動的データ移動が可能である。更に、このアーキテクチャは、データストレージサービスを演算サービスから分離することにより、任意の仮想ウェアハウスが任意のデータにアクセスできるため、事前のデータ移動なしにデータ共有をサポートする。
【0056】
図7は、データ保存及び検索動作を管理するための方法700の一実施形態を示すフローチャートである。まず、方法700は、702において、ユーザからステートメント、要求、又はクエリを受信する。ステートメントは、データ関連の動作を実行するための要求又はコマンドである。例示的なステートメントは、データ検索要求、データ保存要求、データ転送要求、データクエリ等を含む。幾つかの実施形態では、ステートメントは、SQLステートメントとして実施される。リソースマネージャが、704において、受信したステートメントを管理するためにクエリコーディネータを作成する。クエリコーディネータは、例えば、実行プラットフォーム及び1つ以上のデータストレージデバイスとのインタラクションを含む、受信したステートメントを処理するために必要な様々なタスクを管理する。幾つかの実施形態では、クエリコーディネータは、受信したステートメントを管理するために特別に作成された一時的なルーチンである。
【0057】
方法700は、706において、リソースマネージャが受信したステートメントを処理するために必要な複数のタスクを判定する。複数のタスクは、例えば、実行ノード内のキャッシュからのデータへのアクセス、リモートストレージデバイスからのデータの検索、キャッシュ内のデータの更新、リモートストレージデバイスへのデータの保存等を含むことができる。また、リソースマネージャが、708において、実行プラットフォーム内の実行ノードに複数のタスクを分配する。ここに説明するように、実行プラットフォーム内の実行ノードは、仮想ウェアハウス内に実装される。710において、各実行ノードが割り当てられたタスクを実行し、タスク結果をリソースマネージャに返信する。幾つかの実施形態では、実行ノードは、タスク結果をクエリコーディネータに返信する。リソースマネージャが、712において、複数のタスク結果を受信し、ステートメント結果を作成し、714において、ステートメント結果をユーザに通信する。幾つかの実施形態では、クエリコーディネータは、ステートメント結果がユーザに通信された後に削除される。
【0058】
幾つかの具体例では、同じファイルが複数の実行ノードによって同時にキャッシュされる。このファイルの複数キャッシングは、複数の実行ノードに亘る負荷分散(例えば、データ処理タスクの分散)を補助する。更に、複数の実行ノードにファイルをキャッシュすることにより、大量のデータが同じ通信リンクを通過しようとしているときの潜在的なボトルネックを回避できる。この具体例は、異なる実行ノードによる同じデータの並列処理もサポートする。
【0059】
本明細書に開示するシステム及び方法は、共有ディスクシステム及び非共有アーキテクチャの両方の利点を利用する。ここに開示するデータ保存及び検索プラットフォームは、一旦、データがローカルにキャッシュされると、非共有アーキテクチャのようにスケーラブルである。また、このプラットフォームは、共有ディスクアーキテクチャの全ての利点、すなわち、(例えば、0からNまでといった)如何なる制約もなく、並びにデータの明示的なリシャッフリングを必要とすることなく、処理ノードを追加及び削除できるという利点を有する。
【0060】
従来のデータ管理システムでは、データウェアハウス内で大量のデータをコピーすることは時間がかかり、同じデータの複数のコピーを維持し処理するためにかなりのリソースが必要であった。更に、これらの従来のシステムでは、データがコピーされている間にデータの不一致が存在し、変更は、データセットの1つに適用される。
【0061】
一方、ここに開示するカタログオブジェクトをクローン化するシステム及び方法は、迅速に有効化され、元のカタログオブジェクトから独立している新しいカタログオブジェクトを生成する。後述するように、新しいカタログオブジェクトはカタログオブジェクトに関連するデータを複製することなく作成される。すなわち、データを複製する代わりに、カタログオブジェクトに関連するメタデータのみがコピーされ、これは、データ自体をコピーするよりも遥かに高速である。例えば、カタログオブジェクトに関連するメタデータのみをコピーすることは、全てのデータをコピーするよりも数桁高速である。例示的な状況では、1MBの実際のデータの代わりに1KBのメタデータがコピーされる。
【0062】
本明細書で使用するテーブルとは、データの論理グループであり、スキーマはテーブルのセットである。カタログオブジェクトの例は、例えば、テーブル、データベース、スキーマ、アカウント、制約、ファイルフォーマット、機能、役割、シーケンス、ステージ、列、ユーザ、及びボリュームを含む。以下の階層は、本明細書に開示するシステム及び方法と共に使用されるオブジェクトの例示的な階層を表す。
【0063】
アカウント−データベース−スキーマ−テーブル/ビュー/シーケンス−列/制約
【0064】
アカウント−データベース−スキーマ−機能/ファイルフォーマット/ステージ
【0065】
アカウント−ユーザ
【0066】
アカウント−役割
【0067】
アカウント−ボリューム
【0068】
アカウント−ウェアハウス
【0069】
幾つかの実施形態では、これらのカタログオブジェクトは、SQL規格によって定義されている。ここに説明するように、テーブルは、複数の行と列を含む。スキーマには任意の数のテーブルが含まれ、データベースには任意の数のスキーマが含まれている。本明細書に開示するシステム及び方法は、テーブル、スキーマ及びデータベースをクローン化することができる。幾つかの具体例では、実行されているデータ動作に応じて、個々のテーブルをクローン化し、他の具体例では、データベース全体をクローン化することができる。更に、クローン化動作では、ルートカタログオブジェクトの下で全ての世代の子をクローン化できる。クローン化された上位オブジェクトは、元のオブジェクトから独立しているため、元の上位オブジェクトとその階層に影響を与えることなく、新しい子カタログオブジェクトをクローン化オブジェクトに追加できる(又はクローン化された子カタログオブジェクトをクローン化オブジェクトから削除できる)。
【0070】
カタログオブジェクトのクローンを作成すると、データの追加コピーを作成することなく、同じ種類の新しいカタログオブジェクトを速やかに作成できる。例えば、データベースをクローン化すると、クローン化プロセスでは、新しいデータベースオブジェクトとそのデータベースオブジェクトの下にある全てのテーブル、スキーマ、及びその他のカタログオブジェクトが作成されるが、データベースに含まれるデータはコピーされない。クローン化プロセスが完了すると、クローン化されたカタログオブジェクトと元のカタログオブジェクトを互いに独立して変更できる。更に、カタログオブジェクトの各コピー及び元のカタログオブジェクトにオブジェクトを追加し、並びにそこからオブジェクトを削除することができる。
【0071】
図8は、カタログオブジェクトをクローン化するための方法の一実施形態を示すフローチャートである。まず、方法800は、802において、クローン化すべきデータベースを識別する。このデータベースは、幾つのスキーマを含んでいてもよい。方法800は、804において、データベースに関連する複数のスキーマを識別し、806において、識別されたスキーマのうちの1つを選択する。次に、方法は、808において、選択されたスキーマに関連する複数のテーブル及び他のカタログオブジェクトを識別する。810では、識別されたテーブルのうちの1つを選択し、812では、選択されたテーブルに関連する全てのメタデータを識別する。幾つかの実施形態において、このメタデータは、データベースに保存されているデータの要約を含む。ここに説明するように、メタデータは、データベース、テーブル、又は他のストレージメカニズムにおいてデータがどのように編成されているかに関する情報を含むことができる。このメタデータにより、ここに開示するシステム及び方法は、ストレージデバイスから実際のデータをロードし又はこれらにアクセスすることなく、保存されているデータに関する情報を判定できる。
【0072】
方法800は、814において、選択されたテーブルに関連するメタデータをコピーすることによって、選択されたテーブルをクローン化する。このメタデータのコピーは、メタデータに関連する全てのデータをコピーするのに必要な時間と比べて、速やかに実行される。814においてテーブルをクローン化した後、方法は、816において、クローン化の必要がある追加のテーブルが選択されたスキーマ内にあるかを判定する。クローン化すべき追加のテーブルが残っている場合、方法800は、810に戻ってスキーマ内の次のテーブルを選択する。選択されたスキーマ内の全てのテーブルがクローン化されている場合、方法は、818において、識別されたデータベース内にクローン化すべき追加のスキーマがあるかを判定する。クローン化すべき追加のスキーマが残っている場合、方法800は、806に戻ってデータベース内の次のスキーマを選択する。この再帰的な動作により、識別されたデータベースの全てのスキーマ内の全てのテーブルが確実にクローン化される。識別されたデータベース内の全てのスキーマがクローン化された後、820において、クローン化されたデータベースとは独立して、元のデータベース、そのスキーマ、テーブル、及び他の子カタログオブジェクトを変更することができる。
【0073】
幾つかの実施形態では、クローン化されたテーブル内のデータは、現在のデータアクセス要求に使用され、元のテーブル内のデータは変更される。元のテーブルの変更が完了すると、クローン化されたテーブルは削除され、全てのデータアクセス要求は、元のテーブルを使用して処理される。これらの実施形態では、実際の基礎となるデータをコピーせずにメタデータをコピーすることにより、データ変更プロセスの速度が大幅に向上し、データ変更手順の実行に必要な追加の演算リソース及び保存リソースが削減される。幾つかの具体例では、データ変更手順は、トランザクション管理及びアクセス制御モジュール228(図2)によって管理される。更に、幾つかの実施形態では、メタデータは、構成及びメタデータマネージャ222によって管理され、これを介してアクセスされる。
【0074】
図9は、一時的複製カタログオブジェクトを作成するための方法900の一実施形態を示すフローチャートである。まず、方法900は、902において、データセットに関連する元のカタログオブジェクトを識別する。幾つかの実施形態では、元のカタログオブジェクトは、データ保存システム内のデータの論理グループを表す。元のカタログオブジェクトは、テーブル、データベース、スキーマ、アカウント、制約、ファイルフォーマット、機能、役割、シーケンス、ステージ、列、ユーザ、ボリューム、又は他のカタログオブジェクトのうちの1つ以上を含むことができる。904では、データ自体をコピーすることなく、元のカタログオブジェクトの複製コピーを作成する。幾つかの実施形態では、元のカタログオブジェクトの複製コピーを作成することは、データセットに関連するメタデータを複製カタログオブジェクトにコピーすることを含む。このメタデータは、データセットに保存されているデータのインベントリを含み、これにより、データセットに含まれる実際のデータへのアクセスを必要とすることなく、データセットに関する情報を識別できる。特定の具体例では、複製カタログオブジェクトは読取専用である。幾つかの実施形態では、複製カタログオブジェクトは、全ての世代の子の複製階層を含む。
【0075】
この方法では、906において、複製カタログオブジェクトを使用してデータセットへのアクセスを可能にし、908において、複製カタログオブジェクトとは独立して、元のカタログオブジェクトに関連するデータを変更することができる。幾つかの実施形態では、元のカタログオブジェクトに関連する変更データは、複製カタログオブジェクトにとって不可視である。更に、複製カタログオブジェクトに関連する変更データは、元のカタログオブジェクトにとって不可視であってもよい。他の実施形態では、元のカタログオブジェクトから削除されたデータは、複製カタログオブジェクトにとって可視のままであり、複製カタログオブジェクトから削除されたデータは、元のカタログオブジェクトにとって可視のままである。特定の具体例では、元のカタログオブジェクトに関連する挿入データは、複製カタログオブジェクトにとって不可視であり、複製カタログオブジェクトに関連する挿入データは、元のカタログオブジェクトにとって不可視である。元のカタログオブジェクトに関連するデータの変更が完了した後、910において、複製カタログオブジェクトを削除する。データ自体をコピーせずに複製カタログオブジェクトを作成することにより、全ての関連データを含む元のカタログオブジェクトの完全なコピーを作成する場合と比較して、時間、帯域幅、及び演算リソースを大幅に節約できる。
【0076】
図10(A)〜(D)はテーブルのクローン化を図示している。図10(A)〜(D)に示す実施形態では、各テーブルは、複数のファイルの集合を含む。後述するように、一旦ファイルが書き込まれると、これを更新又は変更することはできない。ファイルへの変更が必要な場合、ファイルは、削除され、変更を含む別のファイルに置き換えられる。特定のファイルが使用されていない場合、このファイルは、削除してもよい。上述のメタデータは、テーブルとそのテーブルに関連するファイルとの間の関係に関する情報を含むことができる。テーブルとファイルとの間のこの関係は、ファイルのマッピングとも呼ばれる。
【0077】
図10(A)は、i個のファイルを有する例示的なテーブルT1(F1、F2…Fiとラベル付けされている。)を示す。図10(B)は、クローン化されたテーブルT2を作成するためのテーブルT1のクローン化の結果を示す。この実施形態では、クローン化プロセスは、テーブルT1からクローン化されたテーブルT2にメタデータをコピーする。ここに説明するように、メタデータをコピーすることは、基礎となるデータを全てコピーすることよりも遥かに高速である。図10(B)は、クローン化プロセスの直後に、テーブルT1とテーブルT2の両方が同じファイルに関連付けられていることを示している。
【0078】
クローン化されたテーブルT2が作成された後、他のテーブルとは独立して、新しいファイルをテーブルT1又はテーブルT2に追加できる。更に、他のテーブルとは独立して、テーブルT1又はT2からファイルを削除することもできる。例えば、図10(C)は、テーブルT1がファイルF2を削除し、新しいファイルFjを追加した後のテーブルとファイルの関係を示している。削除されたファイルF2は、テーブルT2にとって可視のままであるが、新しいファイルFjは、テーブルT2にとって不可視である。図10(D)では、テーブルT2は、ファイルF1を削除し、新しいファイルFkを追加している。ファイルF1は、テーブルT1にとって可視のままであるが、新しいファイルFkは、テーブルT1にとって不可視である。
【0079】
図10(A)〜(D)は、テーブルのクローン化を図示しているが、代替の実施形態では、同様の手法でカタログオブジェクト、スキーマ及びデータベースをクローン化することができる。特定の実施形態では、データベース内に存在する全てのスキーマのマップと共に、スキーマ内に存在する全てのテーブルのマップが維持される。クローン化の後、2つのスキーマ(又は2つのデータベース)は、互いに独立して変更できる。
【0080】
ここに開示するクローン化システム及び方法により、新しいデータ又は試験的データの定期的なロード(及び解析)が改善される。更に、これらのシステム及び方法は、必要な追加の演算リソース又はデータストレージリソースを最小限に抑制しながら、新しいデータの迅速な更新をサポートする。
【0081】
図11は、演算デバイス1100の一例を示すブロック図である。幾つかの実施形態では、演算デバイス1100は、本明細書で説明するシステム及び構成要素のうちの1つ以上を実装するために使用される。例えば、演算デバイス1100により、ユーザ又は管理者は、リソースマネージャ102にアクセスできる。更に、演算デバイス1100は、本明細書に開示するシステム及び構成要素のいずれともインタラクトすることができる。したがって、演算デバイス1100は、ここに説明するような様々な手順及びタスクを実行するために使用できる。演算デバイス1100は、サーバ、クライアント、又は他の任意の演算エンティティとして機能できる。演算デバイス1100は、デスクトップコンピュータ、ノートブックコンピュータ、サーバコンピュータ、ハンドヘルドコンピュータ、タブレット等のような多種多様な演算デバイスのうちのいずれかであってもよい。
【0082】
演算デバイス1100は、1つ以上のプロセッサ1102、1つ以上のメモリデバイス1104、1つ以上のインタフェース1106、1つ以上の大容量ストレージデバイス1108、及び1つ以上の入出力(I/O)デバイス1110を含み、これらは全てバス1112に接続されている。プロセッサ1102は、メモリデバイス1104及び/又は大容量ストレージデバイス1108に保存された命令を実行する1つ以上のプロセッサ又はコントローラを含む。また、プロセッサ1102は、キャッシュメモリ等の様々な種類のコンピュータ可読媒体を含むことができる。
【0083】
メモリデバイス1104は、揮発性メモリ(例えば、ランダムアクセスメモリ(random access memory:RAM))及び/又は不揮発性メモリ(例えば、読出専用メモリ(read-only memory:ROM))等の様々なコンピュータ可読媒体を含む。また、メモリデバイス1104は、フラッシュメモリ等の書換可能なROMを含むことができる。
【0084】
大容量ストレージデバイス1108は、磁気テープ、磁気ディスク、光ディスク、ソリッドステートメモリ(例えばフラッシュメモリ)等の様々なコンピュータ可読媒体を含む。大容量ストレージデバイス1108は、様々なコンピュータ可読媒体からの読取及び/又は様々なコンピュータ可読媒体への書込を可能にするために、様々なドライブを含むこともできる。大容量ストレージデバイス1108は、取り外し可能媒体及び/又は固定式媒体を含む。
【0085】
I/Oデバイス1110は、データ及び/又は他の情報を演算デバイス1100に入力し、又はそこから読み出すことを可能にする様々なデバイスを含む。例示的なI/Oデバイス1110は、カーソル制御デバイス、キーボード、キーパッド、マイクロフォン、モニタ又は他の表示デバイス、スピーカ、プリンタ、ネットワークインタフェースカード、モデム、レンズ、CCD又は他の画像補足デバイス等を含む。
【0086】
インタフェース1106は、演算デバイス1100が他のシステム、デバイス、又はコンピューティング環境とインタラクトすることを可能にする様々なインタフェースを含む。例示的なインタフェース1106は、ローカルエリアネットワーク(local area network:LAN)、ワイドエリアネットワーク(wide area network:WAN)、無線ネットワーク、及びインターネットへのインタフェース等、任意の数の異なるネットワークインタフェースを含む。
【0087】
バス1112は、プロセッサ1102、メモリデバイス1104、インタフェース1106、大容量ストレージデバイス1108、及びI/Oデバイス1110、並びにバス1112に接続された他のデバイスまたは構成要素が互いに通信することを可能にする。バス1112は、システムバス、PCIバス、IEEE1394バス、USBバス等の幾つかのタイプのバス構造のうちの1つ以上を表す。
【0088】
本明細書では、例示の目的で、プログラム及び他の実行可能プログラム構成要素を個別のブロックとして示しているが、これらのプログラム及び構成要素は、演算デバイス1100の異なるストレージ構成要素に様々な時点で存在でき、プロセッサ1102によって実行される。或いは、本明細書に開示するシステム及び手順は、ハードウェア、若しくはハードウェア、ソフトウェア、及び/又はファームウェアの組み合わせによって実現してもよい。例えば、ここに説明した1つ以上のシステム及び手順を実行するように、1つ以上の特定用途向け集積回路(application specific integrated circuit:ASIC)をプログラムしてもよい。
【0089】
特定の好ましい実施形態に関して本開示を説明したが、本開示の利益を考慮すると、必ずしもここに開示した利益及び特徴の全てを提供しない実施形態を含む他の実施形態も本開示の範囲内であることは、当業者にとって明らかである。本開示の範囲から逸脱することなく、他の実施形態を利用できることも明らかである。
【符号の説明】
【0090】
100 データ処理プラットフォーム
102 リソースマネージャ
104 ユーザ
106 ユーザ
108 ユーザ
110 メタデータ
112 実行プラットフォーム
114 ストレージプラットフォーム
116 データストレージデバイス
118 データストレージデバイス
120 データストレージデバイス
202 アクセスマネージャ
204 キーマネージャ
206 データストレージデバイス
208 要求処理サービス
210 管理コンソールサービス
212 SQLコンパイラ
214 SQLオプティマイザ
216 SQLエクゼキュータ
218 クエリスケジューラ及びコーディネータ
220 仮想ウェアハウスマネージャ
222 構成及びメタデータマネージャ
224 モニタ及び作業負荷アナライザ
226 データストレージデバイス
228 トランザクション管理及びアクセス制御モジュール
302 仮想ウェアハウス
304 仮想ウェアハウス
306 仮想ウェアハウス
308 実行ノード
310 実行ノード
312 実行ノード
314 キャッシュ
316 プロセッサ
318 キャッシュ
320 プロセッサ
322 キャッシュ
324 プロセッサ
326 実行ノード
328 実行ノード
330 実行ノード
332 キャッシュ
334 プロセッサ
336 キャッシュ
338 プロセッサ
340 キャッシュ
342 プロセッサ
344 実行ノード
346 実行ノード
348 実行ノード
350 キャッシュ
352 プロセッサ
354 キャッシュ
356 プロセッサ
358 キャッシュ
360 プロセッサ
402 ユーザ
404 ユーザ
406 ユーザ
408 仮想ウェアハウス
410 仮想ウェアハウス
412 仮想ウェアハウス
414 データベース
416 データベース
418 データベース
420 データベース
422 データベース
424 データベース
502 ユーザ
504 ユーザ
506 ユーザ
508 仮想ウェアハウスリソースマネージャ
510 仮想ウェアハウス
512 仮想ウェアハウス
514 仮想ウェアハウス
516 仮想ウェアハウスグループ
518 データベース
520 データベース
522 データベース
524 データベース
526 データベース
528 データベース
602 データ通信ネットワーク
604 仮想ウェアハウスグループ
606 仮想ウェアハウスグループ
608 仮想ウェアハウス
610 仮想ウェアハウス
612 仮想ウェアハウス
614 仮想ウェアハウス
616 仮想ウェアハウス
618 データ通信ネットワーク
620 データベース
622 データベース
624 データベース
700 データ保存及び検索動作を管理するための方法
800 カタログオブジェクトをクローン化するための方法
900 一時的複製カタログオブジェクトを作成するための方法
1100 演算デバイス
1102 プロセッサ
1104 メモリデバイス
1106 インタフェース
1108 大容量ストレージデバイス
1110 入出力(I/O)デバイス
1112 バス
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【国際調査報告】