(57)【要約】      （修正有）【課題】複数のクラスタのデータブロックを維持し得る分散データウェアハウスシステムを提供する。【解決手段】各クラスタは、単一の先頭ノードと、複数のコンピューティングノードとを含み、それぞれが、データを記憶する複数のディスクを含む。ウェアハウスシステムは、クラスタの異なるディスクまたはノード上の各データブロックの一次および二次コピーを記憶する。各ノードは、その一意の識別子を含む、ノードに記憶された各データブロックに関するメタデータを維持する。ウェアハウスシステムは、リモートキー値バックアップ記憶システムのデータブロックをバックアップする。ストリーミング復元動作は、キーとしてデータブロックの一意の識別子を使用して、バックアップ記憶領域からデータブロックを取り出す。ウェアハウスシステムは、必要に応じて、バックアップ記憶領域からデータを取り出し、復元動作の完了前に、入来クエリをサービスできる。【選択図】図３
2018055709.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
１つ以上のコンピュータによって、
データを、１人以上のクライアントに代わって、データ記憶システムの複数の物理データブロックに維持することであって、各物理データブロックが一意の識別子と関連付けられることと、
前記データ記憶システムとは別のキー値記憶システムに記憶された２つ以上の物理データブロックのコピーから、前記データ記憶システムの前記複数の物理データブロックの２つ以上の物理データブロックに記憶されたデータを復元する動作を開始することと、
前記データ記憶システムに記憶されたデータへのアクセスのパターンに少なくとも部分的に基づいて、復元すべき最も優先度の高いデータブロックを決定することであって、前記アクセスのパターンは、前記データに関する複数の既に実行されたクエリの解析によって決定されることと、
前記最も優先度の高いデータブロック以外の前記２つ以上の物理データブロックのコピーを復元する前に、前記最も優先度の高いデータブロックのコピーを、前記キー値記憶システムから前記データ記憶システムに復元することと、
を行うことを含む、方法。
【請求項２】
前記方法は、前記２つ以上の物理データブロックに影響を及ぼす前記データ記憶システムの故障を検出することをさらに含み、
前記データを復元する動作を開始することは、前記検出することに応じて実行される、請求項１に記載の方法。
【請求項３】
前記方法は、前記２つ以上の物理データブロックを復元する要求をクライアントから受け取ることをさらに含み、
前記データを復元する動作を開始することは、前記受け取ることに応じて実行される、請求項１に記載の方法。
【請求項４】
前記データ記憶システムは、１人以上のクライアントに代わって、前記複数の物理データブロック内の１つ以上のデータベーステーブルの列データを記憶し、
前記復元すべき最も優先度の高いデータブロックを決定することは、前記１つ以上のデータベーステーブルのうちのどれが前記データ記憶システムにごく最近に読み込まれたかを決定することを含む、請求項１に記載の方法。
【請求項５】
前記データ記憶システムは、１人以上のクライアントに代わって、前記複数の物理データブロック内の１つ以上のデータベーステーブルの列データを記憶し、
前記復元すべき最も優先度の高いデータブロックを決定することは、前記１つ以上のデータベーステーブルまたはその列のうちのどれが最近の期間で最も頻繁にクエリされたのかを決定することを含む、請求項１に記載の方法。
【請求項６】
前記データ記憶システムは、１人以上のクライアントに代わって、前記複数の物理データブロック内の１つ以上のデータベーステーブルの列データを記憶し、
前記復元すべき最も優先度の高いデータブロックを決定することは、前記データ記憶システムでもはや利用できない前記物理データブロック内のデータをターゲットにするクエリ要求を受け取ることに応じて、前記キー値記憶システムから最近取り出された前記物理データブロックのコピーとして、同じテーブルまたは列のデータを記憶する前記物理データブロックを識別することを含む、請求項１に記載の方法。
【請求項７】
前記最も優先度の高いデータブロックのコピーを復元することは、
リモートキー値記憶システムから前記最も優先度の高いデータブロックのコピーを取り出すことであって、前記取り出すことは、前記キー値記憶システムの前記最も優先度の高いデータブロックのコピーにアクセスするためのキーとして、最も優先度の高いデータブロックと関連付けられる一意の識別子を用いることと、
前記最も優先度の高いデータブロックの前記取り出したコピーの一次コピーを、前記データ記憶システムの記憶デバイスに書き込むことと、
を含む、請求項１に記載の方法。
【請求項８】
前記書き込むことの前に、
前記最も優先度の高いデータブロックで維持されるデータをターゲットにするクエリを受け取ることと、
前記クエリを満たすことであって、前記クエリを満たすことが、前記最も優先度の高いデータブロックの前記取り出されたコピー内のデータの少なくとも一部分を返すことを含む、請求項７に記載の方法。
【請求項９】
前記最も優先度の高いデータブロックの前記コピーを復元することは、
前記一次コピーが書き込まれている記憶デバイス以外の前記データ記憶システムの１つ以上の記憶デバイス上で、前記最も優先度の高いデータブロックの複製を開始することをさらに含む、請求項７に記載の方法。
【請求項１０】
前記最も優先度の高いデータブロックのコピーを復元することは、前記最も優先度の高いデータブロックに記憶されたデータを、前記キー値記憶システムから前記データ記憶システムに復元するとともに、１人以上のクライアントに代わって、前記維持されたデータに向けられたクエリを受け付けてサービスすることを含む、請求項１に記載の方法。
【請求項１１】
前記アクセスのパターンは、前記複数の物理データブロックをターゲットにする、複数の既に実行されたクエリが示すアクセスの履歴パターンである、請求項１に記載の方法。
【請求項１２】
前記復元することは、バックグラウンドプロセスによって実行され、
前記方法は、前記バックグラウンドプロセスが前記復元することを実行している間に、
１人以上のクライアントに代わって維持される前記データに向けられた１つ以上のクエリを受け取るフォアグラウンドプロセスをさらに含み、
前記フォアグラウンドプロセスは、前記１つ以上のクエリをサービスする、請求項１に記載の方法。
【請求項１３】
前記方法は、データ記憶システムでもはや利用できない２つ以上の物理データブロックで以前に維持されたデータをターゲットにするクエリを受け取ることをさらに含み、
前記データを復元する動作を開始することは、前記受け取ることに応答して実行される、請求項１に記載の方法。
【請求項１４】
コンピューティングシステムであって、
それぞれが、少なくとも１つのプロセッサおよびメモリを備える１つ以上のコンピューティングノードであって、前記１つ以上のコンピューティングノードは、データベースサービスを集合的に実現する、１つ以上のコンピューティングノードと、
リモートキー値記憶システムへのインターフェースと、
を備え、前記データベースサービスは、
前記データベースサービスへの１人以上の加入者に代わって、１つ以上の記憶デバイス上の複数の物理データブロックにデータを記憶するように構成され、前記複数の物理データブロックの各々は、一意の識別子と関連付けられ、
前記１人以上の加入者に代わって、前記データをバックアップするように構成され、前記データをバックアップするために、前記データベースサービスは、前記インターフェースを介して前記リモートキー値記憶システムに、前記リモートキー値記憶システムへの記憶のための前記複数の物理データブロックの各々のコピーを送るように構成され、および  前記複数の物理データブロックの各々と関連付けられた前記一意の識別子は、前記リモートキー値記憶システムの前記複数の物理データブロックのコピーにアクセスするためのアクセスキーとして利用可能であり、
前記複数の物理データブロックの２つ以上の物理データブロックを復元する復元動作をトリガ―する条件またはイベントを検出するように構成され、
前記２つ以上の物理データブロックを復元する順序を決定するように構成され、前記順序は、前記データにアクセスするための以前に実行された複数のクエリが示すアクセスパターンに少なくとも部分的に基づいており、および
前記２つ以上の物理データブロックを前記所定の順序で復元するように構成される、コンピューティングシステム。
【請求項１５】
１つ以上のコンピュータ上で実行される場合に、前記１つ以上のコンピュータに、
１人以上のクライアントに代わって、データ記憶システムの複数の物理データブロックにデータを維持することであって、各物理データブロックが一意の識別子と関連付けられていることと、
所定の期間中に、
前記複数の物理データブロックのうちの所与の一つにおけるデータをターゲットにするクエリを受け取ることと、
前記クエリをサービスすることであって、前記クエリをサービスすることは、前記複数の物理データブロックのうちの所与の一つにアクセスすることを含むことと、
前記複数の物理データブロックのうちの前記所与の一つに関連付けられたカウンタをインクリメントすることであって、前記カウンタの値は、前記複数の物理データブロックのうちの所与の一つが、前記所定の期間内にアクセスされた回数を示すことと、
前記複数の物理データブロックのうちの所与の一つを含む前記複数の物理データブロックのうちの２つ以上を復元する動作を開始することと、
前記複数の物理データブロックのうちの２つ以上を復元するための順序を、前記複数の物理データブロックのうちの所与の一つに関連付けられた前記カウンタの値と、前記複数の物理データブロックのうちの前記所与の一つ以外の、前記複数の物理データブロックのうちの前記２つ以上の各々と関連付けられたそれぞれのカウンタの値とに少なくとも部分的に基づいて決定することと、
を行わせるプログラム命令を記憶する非一時的なコンピュータ可読記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
分散記憶サービスは、１つ以上のコンピュータのクラスタ等の分散ハードウェアインフ
ラストラクチャにわたって実行する、複数の並行プロセスを含み得る。これらのプロセス
のうちの種々のプロセスは、クラスタ（複数可）の異なる物理的マシンおよび／または論
理（例えば、仮想）マシン上で実行している場合がある。記憶サービスにおいて、例えば
、異なる機械上のプロセス（例えば、ソフトウェアサーバ）は、それぞれ、プログラマチ
ックインターフェースをクライアントに公開し得、クライアントは、それを使用して、複
数の記憶リソースにわたって実現され得る記憶システムにアクセスし得る。記憶サービス
は、システムのそれぞれのデータアイテムの複数の複製をシステムに記憶し得、よって、
１つのサーバ上のデータアイテムに対する任意の変更は、１つ以上の他のサーバに伝搬さ
れなければならない。
【０００２】
ノードまたはディスクドライブの故障時には、故障したデバイス上のデータを復元しな
ければならない。データベースサービスを提供する多くの現在の記憶システムでは、シス
テムがクエリの受け付けおよび処理を再開できるようになる前に、データセット全体を（
例えば、バックアップまたはアーカイブから）復元しなければならない。増分バックアッ
プを行ういくつかのシステムにおいて、デバイスの故障後にシステムを復元することは、
（複数の増分バックアップ動作に対応する）複数の増分復元動作を行うことを含む。他の
記憶システムにおいて、デバイスの故障後にシステムを復元することは、システムの状態
を復元するために、トランザクションログを通して追跡することを含む。多数の記憶デバ
イスを含むデータウェアハウスシステムについて、１つまたは少数のデバイスに対して復
元動作を行うためにサービスを停止させなければならない時間量は、システムにおいてか
なりのコストを表し得る。
【図面の簡単な説明】
【０００３】
【図１】リモートキー値持続性記憶システムからストリーミング復元動作を行うための方法の一実施形態を例示するフロー図である。
【図２】いくつかの実施形態による、そのクライアントの観点からの分散データウェアハウスサービスの種々の構成要素を例示するブロック図である。
【図３】一実施形態による、分散データウェアハウスシステムの種々の構成要素を例示するブロック図である。
【図４】一実施形態による、分散データウェアハウスシステムのクラスタを例示するブロック図である。
【図５】一実施形態による、スーパーブロックデータ構造を例示するブロック図である。
【図６】一実施形態による、分散データウェアハウスシステムに記憶されたデータをバックアップするための、リモートキー値持続性記憶システムの使用を例示するブロック図である。
【図７】データブロックを分散データウェアハウスシステムに記憶するための方法の一実施形態を例示するフロー図である。
【図８】分散データウェアハウスシステムにおいてバックアップ動作を行うための方法の一実施形態を例示するフロー図である。
【図９Ａ】分散データウェアハウスシステムの故障を受けて、データブロックを再構築するための方法の一実施形態を例示するフロー図である。
【図９Ｂ】分散データウェアハウスシステムの故障を受けて、データブロックを再構築するための方法の一実施形態を例示するフロー図である。
【図１０】分散データウェアハウスシステムにおいてクエリ要求に応答するための方法の一実施形態を例示するフロー図である。
【図１１】クエリに応じて、どのデータブロックのコピーを返すのかを決定するための方法の一実施形態を例示するフロー図である。
【図１２】クエリを満たすために、リモートキー値持続性記憶システムからのデータブロックのバックアップコピーをパッチするための方法の一実施形態を例示するフロー図である。
【図１３】優先順にリモートキー値持続性記憶システムから分散データウェアハウスシステムのデータブロックを復元するための方法の一実施形態を例示するフロー図である。
【図１４】キー値持続性バックアップ記憶領域からデータブロックを復元する順序を決定するための方法の一実施形態を例示するフロー図である。
【図１５】種々の実施形態による、分散データウェアハウスシステムおよび対応するキー値持続性バックアップ記憶システムの少なくとも一部分を実現するように構成されるコンピュータシステムを例示するブロック図である。
【０００４】
実施形態は、複数の実施形態および実例となる図面について一例として本明細書で説明
されるが、当業者は、実施形態が、説明される実施形態または図面に限定されないことを
認識するであろう。図面およびその詳細な説明は、実施形態を、開示される特定の形態に
限定することを意図するものではなく、逆に、添付の特許請求の範囲によって定義される
精神および趣旨の範囲内に含まれる全ての修正物、均等物、および代替物を対象とするこ
とを意図することを理解されたい。本明細書で使用される見出しは、編成目的のために過
ぎず、説明または特許請求の範囲を限定するために使用されることを意味していない。本
出願の全体を通して使用される「してもよい／し得る（ｍａｙ）」という用語は、義務的
な意味（すなわち、「〜しなければならない」という意味）ではなく、許容的な意味（す
なわち、「〜する可能性がある」という意味）で使用される。同様に、「含む（ｉｎｃｌ
ｕｄｅ）」、「含んでいる（ｉｎｃｌｕｄｉｎｇ）」、および「含む（ｉｎｃｌｕｄｅｓ
）」という用語は、「含むが、それらに限定されない」ことを意味する。
【発明を実施するための形態】
【０００５】
本明細書で説明されるシステムは、いくつかの実施形態において、クライアント（例え
ば、加入者）が、クラウドコンピューティング環境でデータウェアハウスを構成、操作、
およびスケーリングするのを速く、簡単に、かつコスト効果的にするウェブサービスを実
現し得る。ウェブサービスは、時間のかかる管理作業を管理し得、加入者が自分自身の応
用および業務に集中することを可能にする。いくつかの実施形態において、データウェア
ハウスシステムは、高度にスケーラブルで拡張可能である、企業クラスのデータベースク
エリおよび管理システムであり得る。このシステムは、構造化データを通じた高速クエリ
能力を提供し得、種々のデータの読み込みおよびＥＴＬ（抽出、変換、および読み込み）
ツールとの統合を提供し得、クラスで最高のビジネスインテリジェンス（ＢＩ）レポーテ
ィング、データマイニング、解析ツールとのつながりをクライアントに提供し得、また、
マルチテーブル結合、サブクエリ、および集約を含むもの等の、複雑な解析クエリを超高
速で実行するように最適化され得る。いくつかの実施形態において、クエリは、複数の物
理リソースにわたって分散され、並列化され得、データウェアハウスシステムは、必要に
応じて拡大または縮小され得る。いくつかの実施形態において、加入者は、自分が使用す
るリソースの料金を支払うだけでよい。データウェアハウスシステムは、異なる実施形態
において、種々のタイプおよび／または編成のデータベーススキーマによって効果的に機
能し得る。
【０００６】
いくつかの実施形態において、本明細書で説明される分散データウェアハウスシステム
は、超並列処理（ＭＰＰ）の使用、および分割統治法を使用してコンパイルされたクエリ
を実行するコンピューティングノードをクラスタ化することによって、それらの性能およ
び高速計算能力の大部分を引き出し得る。いくつかの実施形態において、クラスタは、１
つ以上のノードを含み得、それぞれ、１つ以上のディスク、ソリッドステートデバイス、
またはクライアントに代わってデータブロックが記憶された他の永続記憶デバイスを含む
。いくつかの実施形態において、クライアント／加入者は、いくつかの方法で、例えばＳ
ＱＬインターフェースを介してインタラクティブに、クエリをデータウェアハウスシステ
ムに提出し得る。他の実施形態において、外部アプリケーションおよびプログラムは、デ
ータウェアハウスシステムへのオープンデータベースコネクティビティ（ＯＤＢＣ）およ
び／またはＪａｖａデータベースコネクティビティ（ＪＤＢＣ）ドライバインターフェー
スを使用して、クエリをデータウェアハウスシステムに提出し得る。
【０００７】
代表的な大型データベースシステムにおいて、バックアップからデータを復元するため
にかかる時間は、システムに対してかなりのコストを示し得る。例えば、多くの既存のシ
ステムでは、データベースシステムの故障を受けて、該システムを再起動することができ
るようになる前に、データセット全体を復元する必要がある。いくつかの実施形態におい
て、本明細書で説明されるデータウェアハウスシステムは、該データブロックがその増分
バックアップの一部としてバックアップされたか、以前の増分バックアップ動作の一部と
してバックアップされたかにかかわらず、データ（例えば、種々のデータベーステーブル
を構成するデータ）をリモートキー値記憶システムに増分的に（例えば、１度に１つの物
理データブロックを）バックアップし、そして、システムの全てのデータブロックのリス
トを各増分バックアップ動作の一部として記憶するように構成され得る。いくつかの実施
形態において、リモートキー値記憶システムは、バックアップ記憶専用であり得、一方で
、他の実施形態において、リモートキー値記憶システムは、様々なクライアントおよび／
またはクライアントアプリケーションのための汎用記憶領域を提供し得る。種々の実施形
態において、データウェアハウスシステム、汎用コンピューティングシステム、またはデ
ータをローカルにインメモリに（例えば、一時的に）記憶する別のタイプのサービスを提
供するコンピューティングシステムは、持続性を提供するために、１つ以上のデータのコ
ピーを、ディスク、ソリッドステート記憶デバイス、または別のタイプの永続性記憶媒体
を用いるリモートキー値記憶システムに書き込み得る。下でより詳細に説明されるように
、本明細書で説明されるデータウェアハウスシステムは、バックアップからデータセット
全体が復元されるのを待つことなく、故障を受けて、記憶システムの加入者に代わって（
例えば、データベースにおいて）、データを記憶するクラスタを再起動することを可能に
し得る（すなわち、クエリを受け付け、サービスすることを可能にする）。代わりに、任
意の消失または破損したデータブロックのバックアップコピーは、キーとしてデータブロ
ックの一意の識別子を使用して、それをリモートシステムにおいて直接アドレッシングす
ることによって、バックアップシステムからデータウェアハウスシステムのメモリにスト
リーミングされ得る。
【０００８】
本明細書での説明において、「データブロック」および「物理データブロック」という
用語は、これらの用語が現れる文脈に応じて、クライアント（例えば、ユーザ、クライア
ントアプリケーション、および／またはデータウェアハウスサービス加入者）に代わって
、分散データウェアハウスシステムおよび／またはリモートキー値持続性記憶システムに
個別の（または分離可能な）オブジェクトとして記憶される、データの一部分（またはブ
ロック）を指すために使用され得るか、または、分散データウェアハウスシステムの物理
ディスクに、分散ウェアハウスシステム（インメモリデータベースを実現するシステム）
のノード上のシステムメモリに、および／またはリモートキー値持続性バックアップ記憶
システムに記憶されるようなデータの一部分（またはブロック）を指すために使用され得
ることに留意されたい。いくつかの実施形態において、データは、システムのメモリアー
キテクチャに記憶されたデータの標準単位と同じサイズを有するデータブロックで記憶さ
れ得、メモリの「ページ」に対応し得る。他の実施形態において、データブロックは、メ
モリのページサイズと異なるサイズであり得る。
【０００９】
いくつかの実施形態において、本明細書で説明される分散データウェアハウスシステム
は、各データブロックの２つ以上のコピーを、システム（例えば、クラスタアーキテクチ
ャ全体にわたって）にローカルに記憶し得る。例えば、一実施形態では、各１ＭＢの物理
データブロックの一次コピーが、クラスタのノードの１つのディスクに記憶され得、その
物理データブロックの１つ以上の二次コピー（複製）が、同じクラスタの別のノードの別
のディスクに記憶され得る。しかしながら、ディスク全体を１つの他のディスクに複製す
る（またはミラーリングする）のではなく、所与のディスクに記憶されたデータブロック
のいくつかのコピーが、所与のディスクに記憶された他のデータブロックのコピーと異な
るディスク上に分散され得る。分散データウェアハウスシステムはまた、持続性キー値記
憶領域を提供するリモートバックアップ記憶システムの別個のオブジェクト（すなわち、
値）として、各データブロックのコピーも記憶し得、また、システムのデータブロックの
リスト内の各データブロックのキーを記憶し得る。例えば、データウェアハウスシステム
（またはそのノード）に記憶された全てのデータブロックを列記するスーパーブロックデ
ータ構造は、複数のエントリを含み得、それぞれが個別のデータブロックに関するメタデ
ータを記憶し、各ブロックのメタデータは、リモートバックアップ記憶システムに記憶さ
れたデータブロックのコピーにアクセスするためのキーとしての役割を果たす一意の識別
子（ＩＤ）を含み得る。いくつかの実施形態において、分散データウェアハウスシステム
は、所与のクラスタの各データブロックの２つのコピー（例えば、一次コピーおよび二次
コピー）を記憶し、そして、リモートキー値持続性記憶システムの第３のコピーを記憶す
ることによって、非常に高い持続性の記憶領域をそのクライアント／加入者に提供し得る
。
【００１０】
いくつかの実施形態において、分散データウェアハウスのディスクまたはノードに故障
が発生したときに、故障のタイプおよび／または程度に応じて、クラスタ内の他のディス
クから消失または破損したデータブロックを復元することが可能である場合もあり、また
はそうでない場合もある。例えば、故障が、ディスクの故障またはノードの故障である場
合、消失または破損したデータブロックの複製を記憶するクラスタ内の他のディスクから
データブロックをコピーすることによって、消失または破損したデータブロックを復元す
ること（すなわち、クラスタ自体内に記憶されたデータからデータベースを迅速に再構築
すること）が可能であり得る。しかしながら、故障が、クラスタ全体の故障であるか、ま
たは故障後にクラスタ内から消失または破損したデータブロックを再構築することができ
ない別のタイプの故障である場合、分散データウェアハウスは、消失または破損したデー
タブロックを再構築するために、バックアップ記憶システムからデータを取り出すように
構成され得る。本明細書でより詳細に説明されるように、いくつかの実施形態において、
リモート記憶システムのデータブロックのコピーは、該コピーがリモート記憶システムか
ら取り出される（すなわち、ストリーミングされる）前またはその後にクエリ要求を満た
すためにアクセスされ得る。例えば、いくつかの実施形態において、分散データウェアハ
ウスシステムは、データセットがバックグラウンドで再構築されている間、クエリを受け
付け、処理し続ける（または、再起動する）ように構成され得る。換言すれば、故障を受
けて、本明細書で説明される分散データウェアハウスシステムは、データセット全体（ま
たは少なくとも、任意の受け取ったクエリによってターゲットにされたデータ）が復元さ
れるまで、または復元されない限り、要求に応じて、バックアップシステムからデータを
ストリーミングするように構成され得る。下でより詳細に説明されるように、いくつかの
実施形態において、データブロックは、分散データウェアハウスにおけるデータブロック
の最近のアクセス順もしくはアクセスの頻度順に、またはデータブロックが近い将来にア
クセスされる可能性順に、リモート記憶領域から復元され得る。
【００１１】
リモートキー値持続性記憶システムからストリーミング復元動作を行うための方法の一
実施形態は、図１のフロー図によって例示される。１１０で例示されるように、本実施例
において、本方法は、分散データウェアハウスシステムが、顧客（例えば、ユーザ、クラ
イアントアプリケーション、または記憶サービス加入者）に代わって、データブロックを
クラスタに記憶することを含み得る。本方法は、１２０にあるように、データウェアハウ
スシステムが、データブロックのコピーをリモートキー値持続性記憶領域に記憶すること
によってデータブロックをバックアップすることを含み得る。この実施例で例示されるよ
うに、データウェアハウスシステムの故障に応じて、本方法は、１３０にあるように、デ
ータウェアハウスシステムが、リモートキー持続性記憶領域から１つ以上のデータブロッ
クの復元を開始することを含み得る。本方法はまた、１４０にあるように、リモートキー
値持続性記憶領域から全てのターゲットにされたデータブロックが復元される前に、デー
タウェアハウスシステムが、顧客データに向けられたクエリ（例えば、読み出し要求およ
び／または書き込み要求）を受け付け、サービスすることも含み得る。換言すれば、分散
データウェアハウスシステムは、いくつかの以前のデータベースシステムにあるように、
データセット全体を復元することを必要とせずに、故障を受けて、クエリ要求の受け付け
およびサービスを開始すること、または継続することが可能であり得る。例えば、データ
ウェアハウスシステムのクラスタの一部分だけが故障した場合、クラスタは、中断するこ
となくクエリの受け付けおよびサービスを継続し得る。クラスタ全体が故障した（そして
、そのクラスタのノード上の全てのスーパーブロックに影響を及ぼした）場合、リモート
キー値持続性記憶領域でターゲットにされたデータにアクセスできるように、クラスタに
向けられたクエリを受け付け、および／またはサービスすることができるようになる前に
、スーパーブロックの１つ以上をシステムメモリに提供する必要があり得る。いくつかの
実施形態では、各スーパーブロックが、情報（すなわち、一次コピーとして特定のノード
に記憶されたデータブロックに関する情報）を記憶する特定のノード以外の、１つ以上の
ノード上にミラーリングされ得る。
【００１２】
いくつかの実施形態において、本明細書で説明される分散データウェアハウスシステム
は、データベーステーブルのための列記憶領域を用い得る。換言すれば、（従来のデータ
ベーススキームにあるように）列の行全体を各データブロックに記憶するのではなく、デ
ータベーステーブルからの列情報がディスク上のデータブロックに記憶され得る。いくつ
かの実施形態において、テーブルデータをそのような列様式で記憶することは、種々のク
エリに対する全体的なディスクＩ／Ｏ要件を低減させ得、また、解析クエリ性能を向上さ
せ得る。例えば、データベーステーブル情報を列様式で記憶することは、クエリを処理す
ることの一部としてデータベース動作を行うためにデータをメモリの中へ取り出すときに
（例えば、テーブルの全ての行に対する全ての列フィールド値を取り出すときに）行われ
るディスクＩ／Ｏ要求の数を低減させ得、また、クエリを処理するときにディスクから読
み込む必要があるデータの量を低減させ得る。その逆に、所与の数のディスクを要求する
場合、各データブロックがテーブルの行全体に記憶される場合よりも、はるかに多くの行
に対する列フィールド値が取り出され得る。いくつかの実施形態において、ディスク要件
は、列の記憶データ型に一致する圧縮方法を使用してさらに低減され得る。例えば、各ブ
ロックは、均一なデータ（すなわち、全て同じデータ型である列フィールド値）を含むの
で、ディスクの記憶および読み出し要件は、最適である圧縮方法を特定の列データ型に適
用することによってさらに低減され得る。いくつかの実施形態において、ディスク上の単
一の列のフィールド値だけを含むデータブロックを記憶するための空間の節約は、そのデ
ータを取り出し、次いでシステムメモリに記憶するときの（例えば、取り出したデータを
解析するときまたは別様には処理するときの）空間の節約となり得る。例えば、１度に１
つのまたは少数の列に対するアクセスおよび／または動作だけが必要であるデータベース
の動作の場合は、クエリを実行するために実際に必要である特定の列にデータを記憶する
データブロックだけが取り出され、メモリに記憶され得るので、従来の行に基づく記憶に
よるものよりも小さいメモリ空間が必要とされ得る。
【００１３】
種々の実施形態において、本明細書で説明される分散データウェアハウスシステムは、
様々なデータベース動作のための標準または特殊アプリケーションプログラミングインタ
ーフェース（ＡＰＩ）をサポートし得る。例えば、ＡＰＩは、データベースを作成する、
テーブルを作成する、テーブルを変更する、ユーザを作成する、ユーザを外す、１つ以上
の行をテーブルに挿入する、値をコピーする、テーブル内からデータを選択する（例えば
、テーブルにクエリを行う）、クエリを取り消すまたは中止するための動作、および／ま
たは他の動作をサポートし得る。
【００１４】
いくつかの実施形態において、本明細書で説明される分散データウェアハウスシステム
の各クラスタは、先頭ノードと、複数のコンピューティングノード（すなわち、クエリエ
ンジン等の非先頭ノード）とを含み得、それぞれがある量の記憶領域（例えば、複数のデ
ィスク）および／または処理能力を有する仮想マシンである。いくつかの実施形態におい
て、構成されると、クラスタは、ネットワークアドレスを通してクライアント／加入者に
よって直接見ることが可能で（そして、アクセス可能で）あり得る。換言すれば、クライ
アント／加入者は、（例えば、クエリを提出し、該クエリに対する応答を受け取るために
）クラスタに直接接続し得、また、クラスタの構成の設定および管理を除いて、クラスタ
にアクセスするために、ウェブサーバを経由する必要はない。いくつかの実施形態におい
て、各クラスタの先頭ノード（クライアント／加入者データを記憶し得ない）は、クラス
タのコンピューティングノードによって記憶されたデータに対して種々のタイプのクエリ
を行うためのクエリ計画（例えば、スキーマ情報および／またはメタデータを含む）を維
持し得る。先頭ノード内で、スケジューラプロセスは、実行のために、（例えば、プライ
ベートネットワーク通信ファブリックを介して）クエリタスクをコンピューティングノー
ドに送り得る。いくつかの実施形態において、先頭ノードはまた、クラスタの種々のノー
ドに記憶するために、入来データ（すなわち、書き込み要求に含まれるデータ）を分割す
る役割も果たし得る。例えば、先頭ノードは、受け取ったデータの異なる部分の一次コピ
ーが記憶されるノードを決定し得る。
【００１５】
いくつかの実施形態において、クライアントがクエリ（例えば、読み出し要求または書
き込み要求）を行うように要求したとき、または（例えば、クラスタの先頭ノードによっ
て）いくつかの他のタイプのデータベース動作を受け取ったときに、分散データウェアハ
ウスシステムは、新しいプロセスをスポーンして、クライアントのセッション情報を維持
し得、そのプロセスは、クライアントセッションが開いた状態を維持する限り維持され得
、そのクライアントは、クエリ要求を先頭ノードに送っている。要求された動作（ＳＱＬ
クエリまたはいくつかの他のデータベース動作）は、クエリ実行計画を策定して、指定さ
れたクエリもしくはデータベース動作（すなわち、クエリを行うために必要である論理ス
テップ）を行う、もしくは実行するために、構文解析器および最適化器を通してルーティ
ングされ得る。次いで、クエリ計画は、実行エンジンにルーティングされ得、該実行エン
ジンは、先頭ノードおよび非先頭ノード（あるときには、本明細書でコンピューティング
ノードと称される）を実行してクエリを完了するクエリ実行コードを発生させ、コンパイ
ルする。いくつかの実施形態において、個別の実行計画ステップのそれぞれは、コンピュ
ーティングノードまたは先頭ノードによって行われる簡単な動作またはデータの処理を含
み得、中間結果を配信するために、先頭ノードおよびコンピューティングノードを接続す
る通信ネットワークが使用され得る。いくつかの実施形態において、分散データウェアハ
ウスシステムは、コンパイルされたクエリコードを並列に実行するために、複数のノード
スライスのそれぞれにおけるクエリプロセスを分離することによって、優れたクエリ実行
性能を達成し得る。加えて、分散データウェアハウスシステムは、中間結果を１つのクエ
リ計画ステップから次のステップに渡すために、最適化されたネットワーク通信、メモリ
、およびディスク管理の長所を利用し得、このことはまた、クエリの実行速度を上げるこ
とも補助し得る。いくつかの実施形態において、クエリの最後のセグメントは、要求され
たデータを返し得る。返されたセットが集約またはソートされる場合、コンピューティン
グノードは、それぞれ、中間結果のそれぞれの部分を先頭ノードに送り得、次いで、クエ
リの最終結果を要求元クライアント／加入者に送り返すことができるように、返されたデ
ータをマージし得る。
【００１６】
図２は、いくつかの実施形態による、そのクライアント（ユーザ、クライアントアプリ
ケーション、および／またはデータウェアハウスサービス加入者を含み得る）の観点から
の分散データウェアハウスサービスの種々の構成要素を例示するブロック図である。この
実施例において、クライアント２１２、２２２、および２３２のそれぞれは、仮想コンピ
ューティング環境２００の１つ以上のクラスタ２１０、２２０、２３０、および２４０に
アクセスすることが可能である。図２で例示されるように、クラスタ２１０、２２０、２
３０、および２４０のそれぞれは、そのようなクラスタへのアクセスを有するクライアン
ト２１２、２２２、および２３２の特定の１つに代わって、データが記憶され得る２つ以
上のノードを含む。本実施例で例示されるように、クライアント２１２、２２２、および
２３２は、例えば、クライアントがアクセスを有するクラスタの構成を設定し、管理する
ために、分散データウェアハウスサービスマネージャ２０２にアクセスすることが可能で
あり得るが、該クラスタが構成されると、クライアントは、（例えば、分散データウェア
ハウスサービスのサービスインターフェースを通過することなく）該クラスタに直接アク
セスすることが可能であり得る。
【００１７】
図３もまた、一実施形態による、そのいくつかが分散データウェアハウスシステムのク
ライアントに見えない場合がある、分散データウェアハウスシステムの種々の構成要素を
例示するブロック図である。本実施例で例示されるように、記憶クライアント３５０ａ〜
３５０ｎは、ネットワーク３６０を介して、分散データウェアハウスシステム３８０内の
分散データウェアハウスサービスマネージャ３０２ならびに／またはデータウェアハウス
クラスタ３２５および３３５にアクセスし得る（例えば、これらの構成要素は、ネットワ
ークアドレス可能で、記憶クライアント３５０ａ〜３５０ｎにアクセス可能であり得る）
。しかしながら、異なる実施形態において、本明細書で説明されるような、種々のバック
アップおよび復元動作を自動的に行ったときに、分散データウェアハウスシステム３８０
によって用いられ得る、キー値持続性バックアップ記憶領域３７０は、ネットワークアド
レス可能で、記憶クライアント３５０ａ〜３５０ｎにアクセス可能である場合もあり、ま
たはそうでない場合もある。例えば、いくつかの実施形態において、分散データウェアハ
ウスシステム３８０は、記憶クライアント３５０ａ〜３５０ｎに見えない様式で、（記憶
クライアント３５０ａ〜３５０ｎから受け取ったクエリを満たすために、分散データウェ
アハウスシステム３８０の現在利用できないデータブロックのバックアップコピーをパッ
チすることを含む）キー値持続性バックアップ記憶３７０に関わるこれらの動作および／
または他の動作を行い得る。
【００１８】
上で述べられるように、分散データウェアハウスシステムのクラスタは、単一の先頭ノ
ードサーバを含み得、該先頭ノードサーバは、種々のクライアントプログラム（例えば、
アプリケーション）および／または加入者（ユーザ）から要求を受け取り、次いで、該要
求を構文解析し、実行計画を策定して、関連するデータベース動作（複数可）を実行する
。より具体的には、先頭ノードは、複雑なクエリおよび結合の結果を取得するために必要
な一連のステップを策定する。いくつかの実施形態において、先頭ノードは、分散データ
ウェアハウスシステムとクライアント／加入者との間の通信、ならびに、データベース動
作を実行するように指示されるコンピューティングノードとの通信を管理し得る。例えば
、コンパイルされたコードは、クエリを行うために必要であるステップを実行するために
、先頭ノードによって種々のコンピューティングノードに配信され得、該クエリの中間結
果は、先頭ノードに送り返され得る。
【００１９】
いくつかの実施形態において、分散データウェアハウスシステムのクラスタはまた、１
つ以上のコンピューティングノードサーバを含み得、それぞれが、例えばサーバのマルチ
コアプロセッサの各コアに対して画定される、個別のクエリ処理「スライス」を含み得る
。コンピューティングノードは、実行計画のコンパイルされたコードを実行することによ
ってクエリの処理を行い得、また、最終的な集約のために、該クエリからの中間結果を先
頭ノードに送り返し得る。各コアまたはスライスは、コンピューティングノードサーバの
１つ以上に送られるクエリ（または他のデータベース動作）のための作業負荷の一部分を
処理するために、対応するノードサーバのメモリおよびディスク空間の一部分に割り当て
られ得る。いくつかの実施形態において、クラスタの相互接続ネットワークは、先頭ノー
ドとコンピューティングノードとの間でコンパイルされたコードおよびデータを交換する
ために、特殊ユーザデータグラムプロトコル（ＵＤＰ）等の標準または特殊プロトコルを
使用して、プライベートネットワーク通信を提供し得る。
図４は、一実施形態による、分散データウェアハウスシステムのクラスタを例示するブ
ロック図である。本実施例で例示されるように、分散データウェアハウスクラスタ４００
は、先頭ノード４２０と、コンピューティングノード４３０、４４０、および４５０とを
含み得、これらは、相互接続４６０を通じて互いに通信し得る。上で説明されるように、
先頭ノード４２０は、分散データウェアハウスクラスタ４００上でクエリを実行するため
の１つ以上のクエリ計画４２５を発生させ、および／または維持し得る。本明細書で説明
されるように、分散データウェアハウスクラスタの各ノードは、クライアント（例えば、
ユーザ、クライアントアプリケーション、および／または分散データウェアハウスサービ
ス加入者）に代わって、データブロックが記憶され得る複数のディスクを含み得る。本実
施例において、コンピューティングノード４３０は、ディスク４３１〜４３８を含み、コ
ンピューティングノード４４０は、ディスク４４１〜４４８を含み、コンピューティング
ノード４５０は、ディスク４５１〜４５８を含む。いくつかの実施形態において、分散デ
ータウェアハウスクラスタの構成要素（またはそれが構成要素である分散データウェアハ
ウスシステム）は、様々な適用可能な負荷平衡技法のいずれかを使用して、負荷平衡をサ
ポートし得る。例えば、いくつかの実施形態において、先頭ノード４２０は、負荷平衡構
成要素（図示せず）を含み得る。
【００２０】
いくつかの実施形態において、クラスタのコンピューティングノードのそれぞれは、例
えば、コマンドを受け取り、データを送り返し、そして、コンパイルされたコードを個別
の（例えば、ノード上の各コアまたはスライスに対する）クエリプロセスにルーティング
するために、先頭ノードとの通信を管理する、ノードサーバのオペレーティングシステム
上で動作する１組のプロセスを実現する。いくつかの実施形態において、コンピューティ
ングノードのそれぞれは、スーパーブロックを含み、該スーパーブロックは、そのエント
リが情報（例えば、そのノードに記憶されたデータブロックのそれぞれに関するメタデー
タ（すなわち、１つのデータブロックあたり１つのエントリ））を記憶するデータ構造（
例えば、データのアレイ）である。いくつかの実施形態において、スーパーブロックデー
タ構造の各エントリは、それぞれのブロックの一意のＩＤを含み、その一意のＩＤは、リ
モートキー値持続性バックアップ記憶システムのそのデータブロックのコピーを取り出す
ために、キーとして使用され得る。いくつかの実施形態において、一意のＩＤは、データ
ブロックが分散データウェアハウスシステムに最初に書き込まれたときに、先頭ノードに
よって、またはコンピューティングノードによって発生され得る（そして、対応するエン
トリがスーパーブロックに作成され得る）。
【００２１】
種々の実施形態において、データブロックの一意のＩＤに加えて、分散データウェアハ
ウスシステムのクラスタの所与のノード上のスーパーブロックデータ構造の各エントリに
含まれるメタデータは、ブロックがバックアップされたかどうかの指示、（例えば、所与
の期間に、または特定のイベントの間に）アクセスされた回数の１つ以上のカウント、ノ
ード上のデータブロックの一次コピーの場所、クラスタの他のノード上のデータブロック
の１つ以上の二次コピーの場所、および／またはノードに記憶された一次コピーとクラス
タの他のノードに記憶された任意の二次コピーとの間のマッピング、のうちの１つ以上を
含み得る。例えば、各ノードは、クラスタによって記憶されたデータブロックのサブセッ
トの一次コピーを所有し得、さらに、その一次コピーがクラスタの別のノードによって所
有される１つ以上の他のデータブロックの二次コピーも記憶し得る（逆の場合も同じであ
る）。いくつかの実施形態において、各コンピューティングノード（または、より具体的
には、各ノード上のスーパーブロック）は、どの他のノードがその一次データブロックの
コピーの二次コピーを記憶するのかを知り得る。いくつかの実施形態において、データブ
ロックの一次コピーを所有する各ノードは、どの他のノードがそのデータブロックの１つ
以上の二次コピーを記憶するのかを決定するように構成され得、また、それらの他のノー
ドに対するその複製を開始し得る。いくつかの実施形態において、スーパーブロックまた
は先頭ノードは、クライアント／加入者に代わってデータベーステーブルに記憶されたデ
ータの範囲と、そのデータが記憶されるノード（複数可）との間のマッピングを維持し得
る。種々の実施形態において、データブロックの二次コピーは、データブロックの消失ま
たは破損したデータブロックの一次コピーを記憶するために使用され得、および／または
復元動作中（例えば、ターゲットデータブロックの一次コピーが復元される前、またはデ
ィスクもしくはノードの復元動作の完了前）にデータブロックをターゲットにするクエリ
を満たすために使用され得る。本明細書で説明される実施形態のいくつかは、データウェ
アハウスシステムに記憶された各データブロックの一次および二次コピーを含むが、他の
実施形態では、各データブロックの１つのコピーだけがデータウェアハウスシステムに記
憶され得るか、または複数の並列コピー（いずれも「一次」コピーとしての特別な役割を
有しない）がシステムの異なるノードに記憶され得ることに留意されたい。
【００２２】
図５は、一実施形態による、スーパーブロックデータ構造を例示するブロック図である
。本実施例において、スーパーブロック５１０は、複数のエントリ（例えば、エントリ５
２０〜５２８）を含むアレイであり、それぞれがデータブロックに関するメタデータを記
憶する。本実施例において、アレイのエントリのそれぞれは、ブロックＩＤ、ブロックが
バックアップされたかどうかの指示、ブロックの一次コピーの場所の指示、クラスタに記
憶されたブロックの任意の二次コピーの場所の指示、および１つ以上のデータブロックア
クセスカウンタ（下でより詳細に説明される）を含む。例えば、エントリ５２０は、ブロ
ックＩＤ５２１と、バックアップ指示子５２２と、一次場所値５２３と、１つ以上のコピ
ー場所値５２４と、１つ以上のカウンタ５２５とを含む。同様に、エントリ５３０は、ブ
ロックＩＤ５３１と、バックアップ指示子５３２と、一次場所値５３３と、１つ以上のコ
ピー場所値５３４と、１つ以上のカウンタ５３５とを含み、エントリ５４０は、ブロック
ＩＤ５４１と、バックアップ指示子５４２と、一次場所値５４３と、１つ以上のコピー場
所値５４４と、１つ以上のカウンタ５４５とを含み、また、エントリ５８０は、ブロック
ＩＤ５８１と、バックアップ指示子５８２と、一次場所値５８３と、１つ以上のコピー場
所値５８４と、１つ以上のカウンタ５８５とを含む。
【００２３】
いくつかの実施形態において、分散データウェアハウスシステムに書き込まれ、リモー
トキー値持続性バックアップ記憶システムにバックアップされる全てのデータブロックは
、新しい一意のＩＤを有する新しいデータブロックとして書き込まれ得る。しかしながら
、他の実施形態は、記憶されたデータブロックの更新または修正をサポートし得ることに
留意されたい。そのような実施形態において、データブロックがバックアップされたかど
うかを追跡することに加えて、対応するスーパーブロックのエントリは、データブロック
がいつ更新されたのかを追跡し得る。そのような実施形態では、データブロックが更新さ
れると、スーパーブロックのそのエントリが、異なるバージョンのデータブロック（およ
びその複製）を指摘するように更新され得る。更新されたデータブロックのコピーがリモ
ートキー値持続性バックアップ記憶システムに書き込まれると、該コピーがデータブロッ
クの以前のコピーを上書きし得うるか、またはその後に、更新されたバージョンのデータ
ブロックにアクセスするようにそのキーが再度割り当てられ得る。
【００２４】
図６は、一実施形態による、分散データウェアハウスシステムに記憶されたデータをバ
ックアップするための、リモートキー値持続性記憶システムの使用を例示するブロック図
である。本実施例において、１つ以上のクライアントプロセス６７０は、データを分散デ
ータウェアハウスシステム６６０に記憶し得、キー値持続性バックアップ記憶システム６
２５を利用し得る。キー値持続性バックアップ記憶インターフェース６４０のＡＰＩ６４
１〜６４５は、あたかも分散データウェアハウスシステム６６０がキー値持続性バックア
ップ記憶システム６２５のクライアントであるかのように、バックアップデータストア６
２０において提供されるキー値持続性バックアップ記憶システム６２５の機能を分散デー
タウェアハウスシステム６６０に公開し得る。例えば、分散データウェアハウスシステム
６６０は、分散データウェアハウスシステム６６０に維持されるデータに対するバックア
ップおよび復元動作を行うために、そのようなＡＰＩを通してバックアップデータストア
６２０からデータをアップロードするかまたは取り出す等の機能を行い得る。図６で例示
されるように、キー値持続性バックアップ記憶システム６２５は、バックアップデータス
トア６２０のオブジェクト（オブジェクト６３５ａ〜６３５ｎとして示さる）として、デ
ータブロックを記憶し得る。上で述べられるように、キー値持続性バックアップ記憶シス
テム６２５のバックアップデータストア６２０に記憶されたオブジェクトのそれぞれは、
それぞれの一意のキーを使用して、分散データウェアハウスシステム６６０によって取り
出され得る。いくつかの実施形態において、キー値持続性バックアップ記憶システム６２
５は、（例えば、種々のタイプの冗長スキームのアプリケーションを通して）高い持続性
を、記憶されたオブジェクトに提供し得る。
【００２５】
図６で例示される実施例において、分散データウェアハウスシステム６６０は、「オブ
ジェクトをプットする」ＡＰＩ（６４１で示される）に従って、キー値持続性バックアッ
プ記憶システム６２５のバックアップデータストア６２０にデータブロックをバックアッ
プし得、また、対応する「オブジェクトキーを返す」ＡＰＩ（６４２で示される）を通し
て、それらの動作の確認応答を受け取り得る。本実施例において、バックアップデータス
トア６２０のオブジェクトとして記憶されたデータブロックは、キー値持続性バックアッ
プ記憶システム６２５の「オブジェクトをゲットする」ＡＰＩ（６４３で示される）に従
って、バックアップデータストア６２０から取り出され得、また、対応する「オブジェク
トデータを返す」ＡＰＩ（６４４で示される）を通して、要求されたデータを受け取り得
る。いくつかの実施形態において、キー値持続性バックアップ記憶システム６２５は、分
散データウェアハウスシステム６６０によってバックアップデータストア６２０に記憶さ
れたオブジェクトデータが消失されたときに、「オブジェクト消失を通知する」ＡＰＩ（
６４５で示される）を通して、分散データウェアハウスシステム６６０に通知し得る。他
の実施形態において、キー値持続性バックアップ記憶システム６２５によって提供される
ＡＰＩは、記憶関連の動作または他の動作に対する応答を呼び出す、または受け取るため
の、より多い、より少ない、または異なるＡＰＩを含み得る。例えば、いくつかの実施形
態において、キー値持続性バックアップ記憶システムのＡＰＩは、入力パラメータとして
オブジェクトのキー（すなわち、一意のデータブロック識別子）を含む、「削除オブジェ
クト」ＡＰＩを含み得る。そのような実施形態において、このＡＰＩに従ってオブジェク
トを削除する要求を受け取ることに応じて、キー値持続性バックアップ記憶システム６２
５は、（例えば、キーを使用して）バックアップデータストア６２０のオブジェクトの場
所を特定し得、また、バックアップデータストア６２０から該オブジェクトを削除し得る
。
【００２６】
種々の実施形態において、図６の分散データウェアハウスシステム６６０とキー値持続
性バックアップ記憶インターフェースＡＰＩ６４１〜６４５との間のＡＰＩの呼び出しお
よび応答は、セキュアなプロキシ接続（すなわち、ゲートウェイ制御プレーンによって管
理される接続）を通じて行われ得るか、またはパブリックネットワークを通じて、もしく
は代替的に仮想プライベートネットワーク（ＶＰＮ）接続等のプライベートチャネルを通
じて行われ得ることに留意されたい。キー値持続性バックアップ記憶システム６２５に対
するこれらのおよび他のＡＰＩは、シンプルオブジェクトアクセスプロトコル（ＳＯＡＰ
）技術および表現可能な状態の転送（ＲＥＳＴ）技術が挙げられるが、それらに限定され
ない、異なる技術に従って実現され得る。換言すれば、キー値持続性バックアップ記憶シ
ステム６２５に対するＡＰＩは、必ずしもそうであるとは限らないが、ＳＯＡＰ  ＡＰＩ
またはＲＥＳＴｆｕｌ  ＡＰＩとして実現され得る。ＳＯＡＰは、ウェブに基づくサービ
スの文脈で、情報を交換するためのプロトコルである。ＲＥＳＴは、分散ハイパーメディ
アシステムのためのアーキテクチャスタイルである。ＲＥＳＴｆｕｌ  ＡＰＩ（ＲＥＳＴ
ｆｕｌウェブサービスとも称され得る）は、ＨＴＴＰおよびＲＥＳＴ技術を使用して実現
されるウェブサービスＡＰＩである。本明細書で説明されるＡＰＩは、いくつかの実施形
態において、キー値持続性バックアップ記憶システム６２５との統合をサポートするため
に、Ｃ、Ｃ＋＋、Ｊａｖａ、Ｃ＃、およびＰｅｒｌが挙げられるが、それらに限定されな
い、種々の言語のクライアントライブラリでラップされる。
【００２７】
上で述べられるように、いくつかの実施形態において、分散データウェアハウスシステ
ムは、各データブロックの単一の一次コピーを所与のクラスタの１つのノードの１つのデ
ィスクに記憶し得、また、各データブロックの１つ以上の他のローカルコピー（二次コピ
ー）を同じクラスタの他のノード（複数可）のそれぞれのディスク（複数可）に記憶し得
る。上で述べられるように、そのような二次コピーは、ディスク全体に基づいてデータを
ミラーリングするのではなく、ブロックに基づいて種々のディスクによって記憶されたデ
ータをミラーリングし得る。追加的なコピー（すなわち、バックアップコピー）は、リモ
ートキー値持続性記憶システム（すなわち、分散データウェアハウスシステムの一部では
ない、またはそのクラスタのいずれでもない記憶システム）に書き込まれ得る。このバッ
クアップコピーは、アクセスにより時間がかかり得るが、高持続性であり得る。
【００２８】
いくつかの実施形態において、そのデータブロックに影響を及ぼす故障が分散データウ
ェアハウスにあり、そのクラスタにおいて利用可能である情報からデータブロックを復元
するいかなる方法もない場合は、リモート記憶システムに記憶されたデータブロックのバ
ックアップコピーが、分散データウェアハウスシステムのシステムメモリにパッチされ（
または「故障させられ」）得る。換言すれば、データブロックのバックアップコピーは、
クラスタ内のいかなる一次または二次コピーも利用できないときに、リモートバックアッ
プ記憶領域から取り出され得る。例えば、分散データウェアハウスシステムは、フォアグ
ラウンドプロセスを使用して、要求に応じてバックアップシステムからデータブロックを
ストリーミングすることによって特定のデータブロックが関与した故障を受けて（すなわ
ち、データブロックがクエリに応答する必要がある場合）、特定のデータブロックに向け
られたクエリをサービスし続け得、一方で、バックグラウンドプロセスは、分散データウ
ェアハウスシステムのクラスタの種々のディスクおよびノード上のデータセットを完全に
再構築するために、（データブロックに基づいて）消失または破損したデータを復元する
ように機能する。
【００２９】
データブロックを分散データウェアハウスシステムに記憶するための方法の一実施形態
は、図７のフロー図によって例示される。７１０で例示されるように、本実施例において
、本方法は、新しいデータブロックを分散データウェアハウスシステムに書き込む要求を
受け取ることを含み得る。要求を受け取ることに応じて、本方法は、７２０にあるように
、データブロックの一意のＩＤを作成し、クラスタの１つのノード（例えば、データブロ
ックの一次コピーが記憶されたノード）のスーパーブロックデータ構造のデータブロック
の新しいエントリを作成することを含み得る。いくつかの実施形態において、データブロ
ックに対して作成される一意のＩＤは、該データブロックが作成されときに、スーパーブ
ロックデータ構造の新しいエントリを記憶し得、その後に、そのデータ構造のエントリへ
のインデックスとして、他の動作によって使用され得る。
【００３０】
本実施例で例示されるように、本方法は、７３０にあるように、データブロックの一次
コピーをクラスタのノード上の１つのディスクに書き込み、データブロックの１つ以上の
二次コピーをクラスタの（同じノード上の、または異なるノード上の）他のディスク（複
数可）に書き込むことを含み得る。本方法はまた、７４０にあるように、（データブロッ
クの一次および二次コピーの場所を示すために）スーパーブロックの対応するエントリを
更新し、クラスタのスーパーブロックをコミットすることも含み得る（いくつかの実施形
態では、クラスタ全体にわたってコミットを繰り返すこと、またはクラスタ全体にわたっ
てそこに記憶されたデータの全部または一部分を伝搬することを含み得る）。データブロ
ックの一次および二次コピーを記憶し、スーパーブロックデータ構造を更新することの後
のいくつかの時点で、本方法は、７５０にあるように、分散データウェアハウスシステム
に記憶されたスーパーブロック、データブロック、および１つ以上の他のデータブロック
のバックアップを開始することを含み得る。例えば、異なる実施形態において、バックア
ップ動作は、定期的に（例えば、所定のスケジュールで）、または種々の所定のトリガー
イベントもしくは条件に応じて（例えば、システムにおいて所定数の新しいブロックが作
成された後に、またはシステムにおいてスーパーブロックデータ構造が更新および／また
はコミットされた後にその都度）行われ得る。例示的なバックアップ動作は、種々の実施
形態に従って、下でさらに詳細に説明される。
【００３１】
上で述べられるように、本明細書で説明されるシステムは、クラスタに基づくアーキテ
クチャのブロックレベルの記憶を実現し得、また、ファイルに基づいてデータを管理する
のではなく、および／またはデータベーステーブルの行もしくは列の知識を使用するので
はなく、ブロックに基づいてデータをバックアップし、復元し得る（例えば、物理データ
ブロックに対応するユニットのデータをバックアップし、復元する）。いくつかの実施形
態において、コミットしたブロックだけが、リモートキー値持続性バックアップ記憶シス
テムにバックアップされ得る（すなわち、いかなるインフライトトランザクションも、バ
ックアップされるものに反映されない）ことに留意されたい。種々の実施形態において、
本明細書で説明されるリモートキー値バックアップ記憶システムは、高い持続性を、クラ
イアントに代わってデータウェアハウスシステムによって維持されるデータのバックアッ
プコピーに提供するために、複製、パリティ、消失訂正符号化、または別の誤り訂正技法
を用い得る。
【００３２】
いくつかの実施形態において、復元動作は、各データブロックがローカルの、ならびに
バックアップの記憶領域である場所を示すリストを使用して、データウェアハウスシステ
ムを即座に提供することによって開始され得る。最初に、ローカルリストは、空であり得
る。その後に、バックアップ記憶領域からデータウェアハウスシステムの中へデータブロ
ックを戻すようにストリーミングするために、バックグラウンドプロセスが呼び出され得
る。その間、フォアグラウンドプロセスは、処理クエリを開始（または継続）し得る。フ
ォアグラウンドプロセスが、バックアップからデータウェアハウスシステムにまだ戻され
ていないデータブロックのデータに対する要求を受けたとき、またはその場合、データブ
ロックは、必要に応じて、それ自体を「故障」させ得る。
【００３３】
分散データウェアハウスシステムにおいてバックアップ動作を行うための方法の一実施
形態は、図８のフロー図によって例示される。８１０で例示されるように、本実施例にお
いて、本方法は、ノードの最後にコミットしたスーパーブロックをリモートキー値持続性
記憶領域にバックアップすることを含み得る。いくつかの実施形態において、スーパーブ
ロックデータ構造は、単一のオブジェクトとしてリモートキー値持続性記憶領域にバック
アップするには大き過ぎる場合があり得、また、一群のオブジェクトとして記憶され得、
それぞれがスーパーブロックデータ構造のサブアレイを表し、またそれぞれが、それ自体
の一意の識別子（すなわち、キー）を有する。他の実施形態において、スーパーブロック
データ構造は、単一のオブジェクトとしてリモートキー値持続性記憶領域に記憶され得、
また、単一で一意の識別子（すなわち、キー）を有し得る。上で述べられるように、スー
パーブロックは、分散データウェアハウスシステムに記憶された各データブロックに対し
て、そのデータブロックがバックアップされたかどうかを示し得る。図８で例示されるよ
うに、本方法は、８２０にあるように、まだバックアップされてない、スーパーブロック
のエントリによって指摘されるデータブロックをバックアップすることを含み得る。例え
ば、このバックアップ動作中には、新しいデータブロックおよび／または最後に修正され
てからバックアップされていないデータブロックがバックアップのターゲットになり得る
。
【００３４】
バックアップするデータブロックがさらにある場合（８３０からの肯定出口で示される
）、本方法は、バックアップすべき各追加的なデータブロックに対して、８２０で例示さ
れる動作を繰り返すことを含み得る。これは、図８において８３０から８２０へのフィー
ドバックによって例示される。しかしながら、いかなるバックアップする追加的なデータ
ブロックもなくなると（８３０から否定出口として示される）、本方法は、８４０にある
ように、データブロックがバックアップされたことを反映するために、スーパーブロック
を更新することを含み得る。他の実施形態において、スーパーブロックデータ構造の個別
のエントリは、バックアップ動作によってターゲットにされた全てのデータブロックがバ
ックアップされた後ではなく、対応するデータブロックがバックアップされるとすぐに更
新され得ることに留意されたい。
【００３５】
いくつかの実施形態において、所与のクラスタの先頭ノードは、クラスタのノード全体
にわたって整合性を確実にするように、バックアップおよび／または復元プロセスを協調
させ得ることに留意されたい。例えば、いくつかの実施形態において、クラスタの全ての
ノードのスーパーブロックは、クラスタの全てのノードに対して更新が行われたかどうか
にかかわらず、クラスタに対して任意の更新がコミットされたときに、ロックステップで
バージョニングされ得る。換言すれば、クラスタの任意の更新動作のコミットは、クラス
タのノード上の全てのスーパーブロックのバージョン番号（または他のバージョン識別子
）の同じ値への更新を引き起こし得る。いくつかのそのような実施形態では、バックアッ
プ動作が開始されると、先頭ノードは、全てのノードが、同じバージョン識別子の値を有
するスーパーブロックをバックアップしていることを確実にするように構成され得、次い
で、ノード自体が、（スーパーブロックに記憶されたメタデータに従って）対応するデー
タブロックをバックアップし得る。同様に、完全クラスタ復元動作に関して、先頭ノード
は、全てのノードが、同じバージョン識別子の値（理想的には、ごく最近にコミットした
スーパーブロックのバージョン識別子の値）を有するスーパーブロックを復元することを
確実にするように構成され得、次いで、ノード自体が、（復元されたスーパーブロックに
記憶されたメタデータに従って）適切なデータブロックに対してストリーミング復元動作
を行い得る。しかしながら、いくつかの実施形態において、ごく最近にコミットしたスー
パーブロックのバージョン識別子の値を有するスーパーブロックが、ノードの１つ以上で
利用できない場合（例えば、スーパーブロックが消失または破損し、いかなる有効な／破
損していないミラーコピーが、クラスタまたはリモートバックアップ記憶領域において利
用できない場合）、先頭ノードは、全てのノードが、同じ以前のバージョン識別子の値を
有するスーパーブロックを復元することを確実にするように構成され得る（すなわち、先
頭ノードは、クラスタに記憶されたデータの以前の整合したスナップショットが復元され
ることを確実にし得る）。
【００３６】
分散データウェアハウスシステムの故障を受けて、データブロックを再構築するための
方法の一実施形態は、図９Ａ〜９Ｂのフロー図によって例示される。９１０で例示される
ように、本実施例において、本方法は、分散データウェアハウスシステムが、顧客（例え
ば、ユーザ、クライアントアプリケーション、またはデータウェアハウスサービス加入者
）に代わって、データブロックをクラスタに記憶し、リモートキー値持続性記憶領域のデ
ータブロックをバックアップすることを含み得る。本実施例において、（９１５にあるよ
うに）データウェアハウスシステムの故障を検出した後に、本方法は、（９２０にあるよ
うに）所与のノード上の任意の消失した（または破損した）データブロックを、同じクラ
スタおよびメタデータ（例えば、所与のノードに記憶された所与のノードのスーパーブロ
ック）内に依然として記憶されている（または破損していない）データを使用して再構築
できるかどうかを判定することを含み得る。再構築できる場合、９２０からの肯定出口で
示され、本方法は、９２５にあるように、（例えば、所与のノード上の対応するスーパー
ブロックに記憶されたメタデータに従って、データブロックの二次コピーを取り出すこと
によって）クラスタ内に記憶されたデータおよびメタデータを使用して、所与のノード（
またはそのディスク）上の消失した（または破損した）データブロックを再構築すること
を含み得る。
【００３７】
本実施例で示されるように、消失した（または破損した）データブロックを、同じクラ
スタ内に依然として記憶されている（かつ、破損していない）データおよびメタデータを
使用して再構築することができない場合（９２０からの否定出口として示される）、本方
法は、９３０にあるように、関連するスーパーブロック（すなわち、所与のノード、また
はそのディスクのスーパーブロック）が無傷であるか（すなわち、消失または破損してい
ないか）どうかを判定することを含み得る。スーパーブロックが無傷である場合、９３０
からの肯定出口で示され、本方法は、９３５にあるように、所与のノード上のスーパーブ
ロックに記憶された情報を使用して、キー値記憶領域から消失した／破損したデータのバ
ックアップコピーを取り出すことを含み得る。所与のノードのスーパーブロックが所与の
ノード上で無傷でなく（９３０からの否定出口で示される）、そして、所与のノードのス
ーパーブロックのいかなるミラー（コピー）もクラスタ内で利用できず、かつ無傷である
（すなわち、破損していない）場合（９４０からの否定出口で示される）、本方法は、完
全クラスタ復元動作を開始することを含み得る。これは、図９Ａにおいて図９Ｂへの接続
要素Ａによって示される。一方で、所与のノードのスーパーブロックのミラー（コピー）
がクラスタ内で利用可能であり、かつ無傷である（すなわち、破損していない）場合（９
４０からの肯定出口で示される）場合、本方法は、（９４５にあるように）ミラーからス
ーパーブロックを復元すること、および（９５０にあるように）所与のノードの全てのブ
ロックの復元動作を開始することを含み得る。
【００３８】
本実施例で例示されるように、バックアップから復元すべきデータを有するノードがさ
らにある場合（９５５からの肯定出口で示される）、本方法は、追加的なノードのそれぞ
れに対して、９２０〜９５５で例示される動作を繰り返すことを含み得る。これは、図９
Ａにおいて９５５から９２０へのフィードバックによって例示される。いかなる復元すべ
きデータを有する追加的なノードもなくなったが、リモートキー値持続性バックアップ記
憶領域から全ての消失または破損したブロックを復元する前に、本方法は、９６０にある
ように、顧客データに向けられたクエリを受け付け、サービスすることを含み得る。
【００３９】
本実施例で例示されるように、所与のノードの無傷の（有効な）スーパーブロックがク
ラスタ内で見つからない場合（すなわち、所与のノードのスーパーブロックが破損してい
る場合）、本方法は、全クラスタに対する復元動作を開始することを含み得る。これは、
図９Ｂにおいて接続要素Ａから開始することによって例示される。本実施例で例示される
ように、完全クラスタ復元動作は、（９６５にあるように）リモートキー値持続性記憶領
域から、クラスタの各ノードに対して、最後にコミットしたスーパーブロックを復元する
こと、そして、（９７０にあるように）各ノードに対して、復元されたスーパーブロック
のエントリによって指摘される全てのデータブロックに対して、リモートキー値持続性記
憶領域からのストリーミング復元動作を開始することを含み得る。先の実施例にあるよう
に、本方法は、（９７５にあるように）リモートキー値持続性記憶領域からクラスタの全
てのデータブロックを復元する前に、データウェアハウスシステムを、クエリを受け付け
、サービスするために利用できるようにする。
【００４０】
種々の実施形態において、本システムは、復元動作を開始し、そして、消失したデータ
ブロックに関する情報を記憶するスーパーブロックデータ構造を取り出した後の任意の時
点で（例えば、故障の検出を受けて、そのようなスーパーブロックデータ構造が無傷でな
い場合に）起動され得るか（すなわち、クライアントから受け取ったクエリ要求を処理す
るために利用できるようにされ得るか）、または本システムは、故障が検出されているに
もかかわらず（例えば、故障の検出を受けて、消失したデータブロックに関する情報を記
憶するスーパーブロックデータ構造が、無傷のままである場合に）起動したままであり得
ることに留意されたい。換言すれば、種々の実施形態において、本明細書で説明されるシ
ステムおよび方法は、リモートキー値持続性バックアップ記憶領域から全ての影響を及ぼ
されたデータブロックを復元する前に、システムの故障を受けて、分散データウェアハウ
スシステムが、それが記憶する顧客データに向けられたクエリを受け付け、サービスする
ことを可能にし得る。
【００４１】
いくつかの実施形態において、データウェアハウスシステムによって維持されるデータ
ブロックを読み出すときに、本システム自体は、データウェアハウスシステムのクラスタ
のディスクに記憶されたデータブロックのコピー（例えば、データブロックの一次または
二次コピー）の１つにアクセスしたかどうか、またはリモートバックアップ記憶システム
に記憶されたデータブロックのバックアップコピーにアクセスしたかどうかを自動的に判
定するように構成され得る。いくつかの実施形態において、この判定は、データブロック
が物理的または論理的破損に遭遇したかどうかを評価するために、クラスタのディスクか
らデータブロックが読み出されたときに整合性チェックを行うことを含み得る。例えば、
データブロックの一次コピーが破損した場合、データブロックは、その二次場所から読み
出され得る。二次コピーも利用できない場合（例えば、本明細書で説明されるものを含む
、様々な理由のいずれかに起因する）、クライアントがバックアップコピーの識別情報ま
たは場所を知ることを必要とせずに、かつ、任意の他のデータブロックの復元を必要とせ
ずに、ごく最近のバージョンのこの単一のデータブロックが、バックアップ記憶領域から
自動的に取り出され、そして、実行中のシステムにパッチされ得る。
【００４２】
分散データウェアハウスシステムのクエリ要求に応答するための方法の一実施形態は、
図１０のフロー図によって例示される。１０００で例示されるように、本実施例において
、本方法は、分散データウェアハウスシステムが、クライアントまたは加入者に代わって
所与のクラスタに記憶されたデータに向けられたクエリを受け取ることを含み得る。クエ
リを受け取ることに応じて、本方法は、１０１０にあるように、クエリによってターゲッ
トにされたデータのブロックに対して、所与のクラスタの先頭ノードが、データブロック
の一次コピーを現在記憶しているコンピューティングノードを決定することを含み得る。
データブロックの一次コピーを（例えば、クエリを少なくとも部分的に満たすために）利
用できる場合、１０２０からの肯定出口で示され、本方法は、１０２５にあるように、デ
ータブロックの一次コピーからターゲットデータを取得し、そして、該ターゲットデータ
を要求側に返すことを含み得る。
【００４３】
データブロックの一次コピーが利用できない場合（例えば、物理的もしくは論理的破損
、ソフトウェアのバグ、Ｉ／Ｏ経路におけるメモリの問題、ディスクの故障、ノードの故
障による、または破損もしくは故障を受けてまだ復元されていないことによる）、本方法
は、１０３０にあるように、一次コンピューティングノードまたは先頭ノードが、データ
ブロックの１つ以上の二次コピーを記憶するコンピューティングノード（複数可）を決定
することを含み得る。データブロックの二次コピーが利用できる場合（１０４０からの肯
定出口で示される）、本方法は、１０４５にあるように、データブロックの二次コピーか
らターゲットデータを取得し、そして、該ターゲットデータを要求側に返すことを含み得
る。データブロックの二次コピーが利用できない場合（１０４０からの否定出口で示され
る）、本方法は、１０５０にあるように、先頭ノードまたは一次コンピューティングノー
ドが、（例えば、データブロックが以前に記憶されたノードのスーパーブロックデータ構
造に記憶されたメタデータに基づいて）データブロックの一意のＩＤを決定し、ターゲッ
トデータを取り出すためにデータブロックに対する要求をリモートキー値持続性バックア
ップ記憶システムに送り、そして、ターゲットデータを要求側に返すことを含み得る。受
け取ったクエリによってターゲットにされたデータブロックがさらにある場合（１０６０
からの肯定出口で示される）、本方法は、それらの追加的なデータブロックに対して、１
０１０〜１０５０で例示される動作を繰り返すことを含み得る。これは、図１０において
１０６０から１０１０へのフィードバックによって例示される。いかなる受け取ったクエ
リによってターゲットにされた追加的なデータブロックもなくなると、１０６０からの否
定出口で示され、１０７０にあるように、クエリ処理を完了する。クエリに応答するため
に、ターゲットにされたデータブロックの複数のコピーのうちのどれにアクセスするのか
を決定するための、図１０で例示される動作は、分散データウェアハウスシステムにおい
て自動的に（例えば、ユーザの介入を伴わずに）行われ得ることに留意されたい。
【００４４】
クエリに応じて、どのデータブロックのコピーを返すのかを決定するための方法の一実
施形態は、図１１のフロー図によって例示される。１１１０で例示されるように、本実施
例において、本方法は、クライアントが、クエリ要求をデータウェアハウスクラスタに送
ることを含み得る。クラスタを利用できない場合（１１２０からの否定出口で示される）
、本方法は、クエリを再度満たそうとする前に（図示せず）、１１２５にあるように、ク
ラスタの再構築を開始することを含み得る。例えば、本方法は、リモートキー値持続性バ
ックアップ記憶システムに記憶されたデータのバックアップコピーからクラスタ全体を復
元するためのバックグラウンドプロセスを開始することを含み得る。本明細書で説明され
るように、いくつかの実施形態では、クエリを再度満たそうとする前にクラスタ全体（さ
らには、ターゲットにされたデータブロック）が復元されるのを待つのではなく、クエリ
によってターゲットにされたデータブロックを取り出すフォアグラウンドプロセスによっ
て、リモートキー値持続性バックアップ記憶システムからターゲットにされたデータブロ
ックのバックアップコピーが取り出され得る。クラスタを利用できる場合（１１２０から
の肯定出口で示される）、本方法は、１１３０にあるように、クエリによってターゲット
にされたデータの１つのブロックに対して、先頭ノードが、データブロックの一次コピー
を記憶するコンピューティングノードを決定することを含み得る。データブロックの一次
コピーが無傷でない場合（例えば、消失したまたは破損した場合、１１４０からの否定出
口で示される）、本方法は、（１１７０にあるように）データブロックの二次コピーから
ターゲットデータを取得する試みを開始し、（見つかった場合）整合性チェックを取得し
たデータに適用し、そして／または二次コピーから一次データブロックのコピーの復元を
開始することを含み得る。
【００４５】
本実施例で例示されるように、ターゲットにされたデータの一次コピーが無傷で、かつ
破損していない場合（１１４０からの肯定出口で示される）、本方法は、１１５０にある
ように、データブロックの一次コピーからターゲットデータを取り出し、整合性チェック
を取得したデータに適用することを含み得る。取り出されたデータが整合性チェックを通
過した場合（１１６０からの肯定出口で示される）、本方法は、（１１８５にあるように
）ターゲットデータをクライアントに返すことを含み得る。
【００４６】
取り出したデータが整合性チェックを通過しなかった場合（１１６０からの否定出口で
示される）、本方法は、（１１７０にあるように）データブロックの二次コピーからター
ゲットデータを取得する試みを開始し、（見つかった場合）整合性チェックを取得したデ
ータに適用し、そして／または二次コピーから一次データブロックのコピーの復元を開始
することを含み得る。整合したデータブロックの二次コピーが見つかった場合（１１８０
からの肯定出口で示される）、本方法は、１１８５にあるように、ターゲットデータをク
ライアントに返すことを含み得る。いかなる整合したデータブロックの二次コピーも見つ
からなかった場合（１１８０からの否定出口で示される）、本方法は、１１９０にあるよ
うに、バックアップ記憶システム（例えば、リモートキー値持続性バックアップ記憶シス
テム）からデータブロックのコピーをパッチし、ターゲットデータをクライアントに返す
ことを含み得る。１１３０〜１１９０で例示される動作のそれぞれは、クエリによってタ
ーゲットにされたデータが記憶された任意の他のデータブロックに対して繰り返され得る
が（図示せず）、バックアップ記憶システムからクエリを満たすために必要であるデータ
を取り出すために、バックアップ記憶システムに記憶されたディスク、ノード、またはク
ラスタの全てのデータブロックを復元すること、さらには走査することが必要でない場合
があることに留意されたい。また、クエリに応じて、ターゲットにされたデータブロック
の複数のコピーのどれをクライアントに返すのかを決定するための、図１１で例示される
動作は、分散データウェアハウスシステムにおいて自動的に（例えば、システム管理者ま
たは他のユーザによる介入を伴わずに）行われ得ることにも留意されたい。
【００４７】
クエリを満たすために、リモートキー値持続性記憶システムからのデータブロックのバ
ックアップコピーをパッチするための方法の一実施形態は、図１２のフロー図によって例
示される。１２１０で例示されるように、本実施例において、本方法は、クライアントが
、所与のデータブロックをターゲットにするデータウェアハウスクラスタにクエリ要求を
送ることを含み得る。ターゲットデータブロックをクラスタ内で利用できる場合（１２２
０からの肯定出口で示される）、本方法は、１２２５にあるように、クラスタ内のノード
（例えば、ターゲットデータブロックの一次または二次コピーが記憶されたノード）から
ターゲットデータブロックを取得し、そして、ターゲットデータブロック（またはその要
求された部分）をクライアントに返すことを含み得る。様々な理由から（例えば、物理的
または論理的破損、ソフトウェアのバグ、Ｉ／Ｏ経路におけるメモリの問題、ディスクの
故障、ノードの故障、または任意の他の理由により）、ターゲットデータブロックをクラ
スタ内で利用できない場合（１２２０からの否定出口で示される）、本方法は、１２３０
にあるように、クエリを満たすために、リモートキー値持続性記憶システムからターゲッ
トデータブロックをシステムメモリに提供し（リモートキー値持続性記憶システムにおい
てそのアクセスキーとしての役割を果たす、一意のデータブロック識別子によってインデ
ックスを付けられる）、そして、ターゲットデータブロック（またはその要求された部分
）をクライアントに返すことを含み得る。換言すれば、ターゲットデータブロックは、デ
ータを走査するか、またはそのターゲットデータブロックよりも多い復元を行う必要なし
に、クエリ要求を満たすために、（ページフォールトを受けて用いられる様式に類似する
様式で）「故障させられ」得る。
【００４８】
本実施例で例示されるように、ターゲットデータブロックがシステムメモリに提供され
ると、本方法は、１２４０にあるように、ターゲットデータブロックの一次コピーをデー
タウェアハウスクラスタ内のノードに書き込み、そして、それに応じて、適切なメタデー
タを更新する（例えば、現在の状態および／またはノードのデータブロックの場所を反映
させるために、そのノードのスーパーブロックデータ構造のメタデータを更新する）こと
を含み得る。本方法はまた、１２５０にあるように、データウェアハウスクラスタ内の１
つ以上の他のノードに対するターゲットデータブロックの複製を開始し（換言すれば、一
次コピーが記憶されたノードを含み得、データブロックの１つ以上の二次コピーを作成し
）、そして、それに応じて、適切なメタデータを更新することも含み得る。種々の実施形
態において、復元されたデータブロックの一次および／または二次コピーのメタデータは
、（例えば、該一次および／または二次コピーが、破損したデータブロックのコピーが以
前に記憶されたディスクおよび／またはノードと同じか、または異なるディスクおよび／
またはノードに記憶されるかどうかに依存して）該一次および／または二次コピーが置き
換える破損したデータの一次および／または二次コピーのためのメタデータと同じか、ま
たは異なり得る。本実施例で例示されるように、いくつかの実施形態において、本方法は
、１２６０にあるように、以降の使用のために、復元動作および／またはそれ自体の復元
動作の指示（またはそれに関する他の情報）をトリガーしたシステムにおける任意の故障
の指示（またはそれに関する他の情報）をロギングすることを含み得る。例えば、いくつ
かの実施形態において、そのような情報（データウェアハウスクラスタにおいて利用でき
ない種々のデータブロックの整合し、かつ破損していないコピーをもたらす、他のそのよ
うな故障または状態／イベントに対してロギングされ得る）は、その後に、（例えば、そ
れが記録されたファイルまたはデータ構造で）故障解析、傾向解析、日常的なもしくは的
を絞った維持管理、または他の機能を行うときにアクセスされ得る。
【００４９】
他の実施形態において、ターゲットデータは、（１２３０にあるように）クエリを満た
すために、リモートキー値持続性記憶システムからシステムメモリに提供され、そして、
クライアントに返された後に、ターゲットデータは、ディスクに書き込まれるのではなく
破棄され得ることに留意されたい。いくつかのそのような実施形態において、消失または
破損したデータブロックの一次および二次コピーは、クエリを満たすために、バックアッ
プ記憶領域からデータブロックを取り出すフォアグラウンドプロセスによってではなく、
ディスク、ノード、またはクラスタに対するストリーミング復元動作を行うバックグラウ
ンドプロセスによってだけ、ディスクに書き込まれ得る。また、いくつかの実施形態にお
いて、クエリ要求が１つを超えるデータブロックのデータをターゲットにする場合、クエ
リ要求を満たすために必要な全てのデータの場所を特定し、返すために、図１２で例示さ
れる動作が繰り返され得、リモートキー値持続性記憶システムから１つ以上の追加的なデ
ータブロックを「故障させる」こと、および／または（クエリ要求をサービスするフォア
グラウンドプロセスによるか、その後のバックグラウンドプロセスによるかにかかわらず
）データウェアハウスクラスタの該データブロックを復元することを含み得ることにも留
意されたい。下でより詳細に説明されるように、複数のデータブロックがバックグラウン
ドプロセスによってデータウェアハウスクラスタにおいて復元される実施形態において、
データブロックが復元される順序は、該データブロックが近い将来に再度アクセスされる
相対的な可能性に依存し得る。
【００５０】
上で述べられるように、いくつかの実施形態において、データブロックは、それらが近
い将来にアクセスされる可能性（または期待される可能性）を反映する順序で、リモート
記憶システムから復元され得る。異なる実施形態では、ストリーミング復元動作に対する
ブロックの優先順位付けに影響を及ぼす順序で種々のデータブロックの新しさおよび／ま
たは関連性を追跡するために、異なるスキームが使用され得る。いくつかの実施形態にお
いて、データブロックは、入来クエリを満たすために、必要に応じて、フォアグラウンド
プロセスがバックアップ記憶領域からデータブロックにストリーミングする間に、バック
グラウンドプロセスを使用して、そのように決定された優先順位付けに基づいて記憶され
得る。他のシステムにおいて、多くの（または大部分の）他のプロセスは、故障した（ま
たは破損した）ディスクまたはノードの全体が再構築されるまで、劣化した状態で動作さ
せなければならないことに留意されたい。いくつかの実施形態において、本明細書で説明
されるシステムは、復元動作中に、より正常な劣化を実現し得る。換言すれば、本明細書
で説明されるように、読み出しの優先順位付けがバックグラウンドプロセスによって行わ
れることは、該読み出しが（例えば、あまり頻繁にアクセスされなかったデータを再構築
する前に、より頻繁にアクセスされたデータを再構築することによって）復元プロセスに
よるシステム性能の認識される劣化を最小にするような方法で、該読み出しを順番付ける
ことを可能にし得る。
【００５１】
優先順にリモートキー値持続性記憶システムからデータブロックを復元するための方法
の一実施形態は、図１３のフロー図によって例示される。１３１０で例示されるように、
本実施例において、本方法は、データウェアハウスシステムの１つ以上の構成要素の故障
（またはそれに関する故障）を検出することを含み得る。それに応じて、影響を及ぼされ
たデータ（例えば、データウェアハウスシステムに残存する影響を及ぼされていないデー
タから復元することができないデータ）を復元する動作が開始され得る。本実施例で例示
されるように、本方法は、１３２０にあるように、データブロックのそれぞれが近い将来
にアクセスされる相対的な可能性の判定に基づいて、キー値持続性バックアップ記憶領域
から、影響を及ぼされたデータブロックを復元する優先度を決定することを含み得る。下
でより詳細に説明されるように、影響を及ぼされたデータブロックを復元するための優先
順序を決定するために、種々の基準が適用され得、該基準としては、ごく最近にクエリの
ターゲットであったデータブロックが最初に復元されるような、ごく最近に書き込まれた
データブロックが最初に復元されるような、またはごく最近にバックアップされたデータ
ブロックが最初に復元されるような順序で、該影響を及ぼされたデータブロックを順番付
けすることが挙げられるが、それらに限定されない。
【００５２】
影響を及ぼされたデータブロックを復元する順序が決定されると、本方法は、１３３０
にあるように、（例えば、データウェアハウスシステムのシステムメモリの中へストリー
ミングする）キー値持続性バックアップ記憶領域から最も高い優先度のデータブロックを
取り出し、データウェアハウスシステムのデータブロックの一次コピーを書き込み、そし
て、（例えば、データブロックの１つ以上の二次コピーを作成するために）データウェア
ハウスシステムのデータブロックの複製を開始することを含み得る。一次および二次コピ
ーをディスクに書き込む前にデータブロックをシステムメモリの中へストリーミングする
ことは、データをクラスタのディスクから、またはバックアップ記憶領域から取り出さな
ければならないときよりも速く（例えば、より高速なメモリから）そのデータをターゲッ
トにするクエリに応答することを可能にし得ることに留意されたい）。復元すべきより多
くのデータブロックがある場合（１３４０からの肯定出口で示される）、本方法は、１３
５０にあるように、キー値持続性バックアップ記憶領域から次の最も高い優先度のデータ
ブロックを取り出し、データウェアハウスシステムの次の最も高い優先度のデータブロッ
クの一次コピーを書き込み、そして、次の最も高い優先度のデータブロックの複製を開始
することを含み得る。図１３で例示されるように、１３４０および１３５０で例示される
動作は、この復元動作で復元すべき全てのデータブロック（例えば、検出された１つまた
は複数の故障によって影響を及ぼされた全てのデータブロック）が復元されるまで繰り返
され得る（１３４０からの否定出口で示される）。本方法はまた、１３６０にあるように
、（例えば、各ノードのスーパーブロックの）再構築された構成要素の適切なメタデータ
を更新することも含み得、そして、その時点で、１３７０にあるように、復元動作は、完
了され得る。他の実施形態において、スーパーブロックデータ構造の個々のエントリは、
再構築動作によってターゲットにされた全てのデータブロックが再構築された後ではなく
、対応するデータブロックが再構築されるとすぐに更新され得ることに留意されたい。
【００５３】
いくつかの実施形態において、リモートバックアップ記憶領域からストリーミング復元
を行うとき、データブロックを入来クエリによるアクセスの可能性と同調させるように、
データブロックの復元を順番付けすることにかなりの利点があり得る。いくつかの実施形
態において、データブロックは、分散データウェアハウスにおいてそれらがどれくらい最
近におよび／またはどれくらい頻繁にアクセスされたかに基づいて、復元の優先順位が付
けられ得る。例えば、大部分のクエリが先週の間に記憶されたデータにアクセスする、３
年の期間にわたって記憶したデータを含むデータウェアハウスにおいて、先週の間に記憶
されたデータブロックおよびそのようなデータブロックに関連するデータブロック（例え
ば、ファクトテーブルおよびファクトテーブルに結合される全てのディメンションテーブ
ルに対するデータ）を最初にシステムメモリに提供することは、システムが、データセッ
トの全てのデータを復元する前に、大部分のクエリに応答することを可能にし得る。本実
施例において、データセットに向けられた代表的なクエリの配信は、バックアップ記憶領
域からデータの１％未満が提供されると、効率的に行われ得る。
【００５４】
いくつかの実施形態において、時系列データを含むデータブロックは、最も新しいデー
タを記憶するデータブロックが最初に復元されるように優先順位が付けられ得る。いくつ
かの実施形態において、つい最近に作成された（または更新された）データを記憶するデ
ータブロックは、それらが記憶するデータのタイプにかかわらず、より古いデータを記憶
するデータブロックよりも優先され得る。他の実施形態において、システムにちょうど読
み込まれたテーブルが、他のテーブルデータを記憶するデータブロックよりも早くクエリ
またはソートされるという仮定の下で、復元動作は、ごく最近に読み込まれたデータベー
ステーブルを最初に表すデータブロックに優先順位を付け得る。さらに他の実施形態にお
いて、データブロックは、最近のクエリパターンの解析に基づく復元のために優先順位が
付けられ得る。例えば、データブロックのアクセスパターンに任意のスキューがある場合
、そのアクセスパターンは、バックアップ記憶領域からデータブロックを復元するときに
適用され得る。いくつかの実施形態において、最近実行したクエリがどのデータブロック
にアクセスしたのかを見出すために、および／または多数の以前のクエリのアクセスパタ
ーンの履歴を判定するために、最近実行したクエリが調査され得る。例えば、クエリ履歴
は、データウェアハウスシステムによって（例えば、ログまたはテーブルで）維持され得
、どのテーブルおよび／またはデータの列に最も頻繁にクエリが行われたのかを決定する
ために、その履歴の解析が行われ得る。最も頻繁にクエリが行われた列データを記憶する
データブロックは、復元の優先順位が付けられ得る。いくつかの実施形態において、復元
のためのデータブロックの優先順位付けは、現在の活動に基づく動的な優先順位付けによ
ってなされ得る。例えば、現在のクエリを満たすために、データがバックアップ記憶領域
からデータウェアハウスシステムの中へパッチされたとき、パッチされたデータブロック
と同じ列のデータを記憶する、任意の残りの復元すべきデータブロックの優先度が高くさ
れ得る。
【００５５】
いくつかの実施形態において、本明細書で説明されるスーパーブロックデータ構造は、
その値が、対応するデータブロックが所与の期間にアクセスされた回数を反映する、エン
トリあたり（すなわち、データブロックあたり）１つ以上のカウンタによって拡張され得
る。例えば、スーパーブロックデータ構造のそれぞれは、現在のアクセス期間カウンタと
、以前のアクセス期間カウンタとを含み得る。各データブロックのアクセスに対して、現
在のアクセス期間カウンタが更新され得る。随時（例えば、定期的に、またはバックアッ
プもしくは復元動作等の特定のイベントに応じて）、現在のアクセス期間カウンタのカウ
ント値は、以前のアクセス期間カウンタに移動され得（その以前の値を上書きする）、現
在のアクセス期間カウンタの値は、（例えば、ゼロの値に）リセットされ得る。いくつか
の実施形態において、新しいブロックが作製されると、それらのスーパーブロックデータ
構造は、平均または中間の現在のアクセス期間カウンタ値を含むように初期化され得、該
値は、（例えば、データのデータブロックに対して、該新しいブロックが不当にペナルテ
ィを課されないように）該新しいブロックがアクセスされる可能性がかなり高いことを示
す。他の実施形態において、新しいブロックの現在のアクセス期間カウンタ値は、デフォ
ルト値（例えば、最大カウンタ値の２０％）に初期化され得る。いくつかの実施形態にお
いて、データブロックに対するソート動作は、全ての影響を及ぼされたデータブロックの
カウンタを初期値に、またはデフォルト値にリセットし得る。
【００５６】
本実施例において、復元動作のために、データブロックは、現在のアクセス期間カウン
タ値および以前のアクセス期間カウンタ値の和に基づいて（最も高い和から最も低い和に
）記憶され得る。別の実施例において、データブロックは、現在のアクセス期間カウンタ
値および以前のアクセス期間カウンタ値の加重平均または加重和（例えば、現在のアクセ
ス期間カウンタ値と、以前のアクセス期間カウンタ値との和の半分）に基づいてソートさ
れ得る。全般に、異なる実施形態において、データブロックは、それらの現在のアクセス
期間カウンタおよびそれらの以前のアクセス期間カウンタの値の論理的組み合わせおよび
／または数学的組み合わせを表す値に基づいてソートされ得る。
【００５７】
キー値持続性バックアップ記憶領域からデータブロックを復元する順序を決定するため
の方法の一実施形態は、図１４のフロー図によって例示される。１４１０で例示されるよ
うに、本実施例において、本方法は、クライアントが、所与のデータブロックをターゲッ
トにするデータウェアハウスクラスタにクエリ要求を送ることを含み得る。本実施例で例
示されるように、本方法は、１４２０にあるように、データウェアハウスクラスタが、所
与のデータブロックがアクセスされたという事実を反映するために、要求を満たし、そし
て、所与のデータブロックと関連付けられる現在のアクセス期間カウンタを増加させるこ
とを含み得る。現在のアクセス期間（例えば、アクセスのカウントが現在のアクセス期間
カウンタによって取り込まれている現在の期間）がまだ期限切れになっていない場合（１
４３０からの否定出口で示される）、本方法は、（そのような他のデータブロックと関連
付けられる異なる現在のアクセス期間カウンタを使用して）所与のデータブロックおよび
／または１つ以上の他のデータブロックへのアクセスをカウントし続けることを含み得る
。これは、図１４において１４３０の否定出口から１４１０へのフィードバックによって
例示される。現在のアクセス期間が期限切れである場合（または期限が切れたとき）（１
４３０からの肯定出口で示される）、本方法は、１４４０にあるように、現在のアクセス
期間カウンタ値を以前のアクセス期間にコピーし（例えば、カウンタの値を上書きし）、
そして、現在のアクセス期間カウンタの値をリセットするか、または初期値もしくはデフ
ォルト値にすることを含み得る。
【００５８】
本実施例で例示されるように、本方法は、何かが復元動作をトリガーするまで、または
トリガーしない限り、（そのような他のデータブロックと関連付けられる異なる現在のア
クセス期間カウンタを使用して）所与のデータブロックおよび／または１つ以上の他のデ
ータブロックへのアクセスをカウントし続けることを含み得る。これは、図１４において
１４５０の否定出口から１４１０へのフィードバックによって例示される。いくつかの実
施形態において、復元動作は、ディスク、ノード、もしくはクラスタの故障を検出するこ
とに応じて、利用できない（または整合し、かつ破損していないコピーがクラスタにおい
て利用できない）データをターゲットにするクエリに応じて、またはクライアント（例え
ば、ユーザ、クライアントアプリケーション、または記憶サービスの加入者）からそのよ
うにする明示的な要求に応じてトリガーされ得ることに留意されたい。復元動作がトリガ
ーされると（１４５０からの肯定出口で示される）、本方法は、１４６０にあるように、
影響を及ぼされたデータブロックを復元する順序を決定するために、各影響を及ぼされた
データブロックに対して、現在のアクセス期間カウンタ値および以前のアクセス期間カウ
ンタ値を組み合わせることを含み得る。例えば、異なる実施形態において、（各データブ
ロックに対する）これらの２つのカウンタ値の和は、（例えば、アクセスカウントが取り
込まれた２つのごく最近の期間に、より多い回数アクセスされたデータブロックが、より
少ない回数アクセスされたデータブロックよりも早く復元されるように）データブロック
を復元するべき順序を決定するために使用され得る。
【００５９】
いくつかの実施形態において、本明細書で説明されるデータウェアハウスシステムは、
迅速な高速実行クエリが長期実行クエリ（例えば、ショートクエリバイアス）の後のクエ
リに引っ掛かり得ないように、クライアントが作業負荷の優先度を柔軟に管理することを
可能にし、また特に、作業負荷の分類を可能にする、作業負荷管理機構を実現し得る。い
くつかの実施形態において、データウェアハウスシステムは、クエリのクラス化のための
追加的な基準を提供するカスタマイズ可能なクエリサービスクラスを実現し得、高レベル
の作業負荷マネージャ構成要素は、クエリを管理し、それらをサービスクラスに割り当て
る。そのような実施形態において、各サービスクラスに対して、データウェアハウスシス
テムは、実行を待つクエリの優先順位付きリストを維持するクエリキューを提供し得る。
加えて、データウェアハウスシステムは、（コンピューティングノードプロセスが、クエ
リを動作させるために利用できる限り）同時に動作させることができる、プール内のクエ
リ数を画定するタスクプールを提供し得る。
【００６０】
いくつかの実施形態において、本明細書で説明されるデータウェアハウスシステムは、
データベースの大量のデータに対して動作する最も複雑なクエリの高速実行を提供するた
めに、超並列処理（ＭＰＰ）インフラストラクチャを使用し得る。市販の標準サーバ要素
を使用すると、データウェアハウスシステムは、単に、より多くの（マルチコアプロセッ
サを有する）「コンピューティングノード」サーバを加えることによって性能を高めて、
より過酷な作業負荷を扱うために、ほぼ直線的なスケーラビリティを提供し得る。全ての
クエリ処理（最終的な結果の集約は除く）は、データ全体のより小さい部分に対して同じ
コンパイルされたクエリ「セグメント」を実行するノード毎の各コアを有するコンピュー
ティングノードによって行われ得る。
【００６１】
加えて、データウェアハウスシステムは、記憶要件を低減させ（それによって、ディス
クのＩ／Ｏも低減させ）、より多くのクエリのインメモリ処理を行うために、列指向のデ
ータの記憶および圧縮を使用し得る。完全に最適化され、コンパイルされたコードは、複
雑なクエリを「分割統治」し、実行速度を高める一方で、インタプリタを使用することの
オーバーヘッドも排除するために、データウェアハウスシステムのクラスタの全てのノー
ドにわたって配信され得る。
【００６２】
いくつかの実施形態において、本明細書で説明されるデータウェアハウスシステムは、
高効率のクエリ最適化器、ならびにＭＰＰ認識であり、同じくデータウェアハウスシステ
ムによって使用される列指向のデータ記憶を利用する、クエリ実行エンジンを提供し得る
。データウェアハウスシステムのクエリ最適化器は、マルチテーブル結合、サブクエリ、
および集約を含む複雑な解析クエリの処理に対するかなりの向上および拡張を伴う、クエ
リの実行にとって中心的な一群の再使用可能なソフトウェア構成要素および方法を提供し
得る。上で述べられるように、列記憶領域および適応圧縮の使用も、クエリを処理する際
に必要なデータ量を大幅に低減させ得、また、可能な場合はいつでも、インメモリを通し
て、クエリ実行速度およびキャッシュされたデータへのアクセスを飛躍的に向上させ得る
。
【００６３】
本明細書で説明される方法は、種々の実施形態において、ハードウェアおよびソフトウ
ェアの任意の組み合わせによって実現され得る。例えば、一実施形態において、本方法は
、プロセッサに連結されたコンピュータ読み出し可能な記憶媒体に記憶されたプログラム
命令を実行するプロセッサを含む、コンピュータシステムによって実現され得る。プログ
ラム命令は、本明細書で説明される機能（例えば、本明細書で説明されるデータウェアハ
ウスシステムおよび／またはリモートキー値持続性バックアップ記憶システムを実現する
種々のサーバおよび他の構成要素の機能）を実現するように構成され得る。
【００６４】
図１５は、種々の実施形態による、分散データウェアハウスシステムおよび対応するキ
ー値持続性バックアップ記憶システムの少なくとも一部分を実現するように構成されるコ
ンピュータシステムを例示するブロック図である。例えば、コンピュータシステム１５０
０は、分散データウェアハウスシステムのクラスタの先頭ノード、分散データウェアハウ
スシステムのクラスタのコンピューティングノード、分散データウェアハウスサービスマ
ネージャ、キー値持続性バックアップ記憶システム（またはそのインターフェース）、ま
たは分散データウェアハウスシステムもしくは対応するキー値持続性バックアップ記憶シ
ステムの任意の他の構成要素を実現するように構成され得る。コンピュータシステム１５
００は、パーソナルコンピュータシステム、デスクトップコンピュータ、ラップトップも
しくはノートブックコンピュータ、メインフレームコンピュータシステム、ハンドヘルド
コンピュータ、ワークステーション、ネットワークコンピュータ、消費者デバイス、アプ
リケーションサーバ、記憶デバイス、電話、携帯電話、または全般に、任意のタイプのコ
ンピューティングデバイスが挙げられるが、それらに限定されない、種々のタイプのデバ
イスのいずれかであり得る。
【００６５】
コンピュータシステム１５００は、入力／出力（Ｉ／Ｏ）インターフェース１５３０を
介してシステムメモリ１５２０に連結される、１つ以上のプロセッサ１５１０を含む（該
プロセッサのいずれかは、複数のコアを含み得、該コアは、シングルまたはマルチスレッ
ドであり得る）。コンピュータシステム１５００はさらに、Ｉ／Ｏインターフェース１５
３０に連結される、ネットワークインターフェース１５４０を含む。種々の実施形態にお
いて、コンピュータシステム１５００は、１つのプロセッサ１５１０を含むユニプロセッ
サシステム、または複数（例えば、２つ、４つ、８つ、または別の適切な数）のプロセッ
サ１５１０を含むマルチプロセッサシステムであり得る。プロセッサ１５１０は、命令を
実行することができる任意の適切なプロセッサであり得る。例えば、種々の実施形態にお
いて、プロセッサ１５１０は、ｘ８６、ＰｏｗｅｒＰＣ、ＳＰＡＲＣ、もしくはＭＩＰＳ
ＩＳＡ、または任意の他のＩＳＡ等の、様々な命令セットアーキテクチャ（ＩＳＡ）の
いずれかを実現する汎用または組み込みプロセッサであり得る。マルチプロセッサシステ
ムにおいて、プロセッサ１５１０のそれぞれは、一般に、必ずではないが、同じＩＳＡを
実現し得る。コンピュータシステム１５００はまた、通信ネットワーク（例えば、インタ
ーネット、ＬＡＮ等）を通じて、他のシステムおよび／または構成要素と通信するための
、１つ以上のネットワーク通信デバイス（例えば、ネットワークインターフェース１５４
０）も含む。例えば、システム１５００上で実行するクライアントアプリケーションは、
単一のサーバ上で、または分散システムを実現する一群のサーバ上で実行するサーバアプ
リケーションと通信するために、ネットワークインターフェース１５４０を使用し得る。
別の実施例において、コンピュータシステム１５００上で実行するサーバアプリケーショ
ンのインスタンスは、他のコンピュータシステム上で実現され得るサーバアプリケーショ
ンの他のインスタンスと通信するために、ネットワークインターフェース１５４０を使用
し得る。
【００６６】
例示される実施形態において、コンピュータシステム１５００はまた、１つ以上の永続
記憶デバイス１５６０および／または１つ以上のＩ／Ｏデバイス１５８０も含む。種々の
実施形態において、永続記憶デバイス１５６０は、ディスクドライブ、テープドライブ、
ソリッドステートメモリ、他の大容量記憶デバイス、または任意の他の永続記憶デバイス
に対応し得る。コンピュータシステム１５００（またはその上で動作する分散アプリケー
ションまたはオペレーティングシステム）は、所望に応じて、命令および／またはデータ
を永続記憶デバイス１５６０に記憶し得、また、必要に応じて、記憶された命令および／
またはデータを取り出し得る。
【００６７】
コンピュータシステム１５００は、プロセッサ１５１０によってアクセス可能な命令お
よびデータを記憶するように構成される、１つ以上のシステムメモリ１５２０を含む。種
々の実施形態において、システムメモリ１５２０は、任意の適切なメモリ技術（例えば、
キャッシュ、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ＤＲＡＭ、ＲＤＲＡＭ
、ＥＤＯ  ＲＡＭ、ＤＤＲ１０ＲＡＭ、シンクロナスダイナミックＲＡＭ（ＳＤＲＡＭ）
、Ｒａｍｂｕｓ  ＲＡＭ、ＥＥＰＲＯＭ、不揮発性／フラッシュタイプメモリ、または任
意の他のタイプのメモリ、のうちの１つ以上）を使用して実現され得る。システムメモリ
１５２０は、本明細書で説明される方法および技法を実現するためにプロセッサ（複数可
）１５１０によって実行可能である、プログラム命令１５２５を含み得る。種々の実施形
態において、プログラム命令１５２５は、プラットフォームネイティブバイナリ、Ｊａｖ
ａ（登録商標）バイトコード等の任意のインタプリタ型言語、またはＣ／Ｃ＋＋、Ｊａｖ
ａ（登録商標）等の任意の他の言語で、またはそれらの任意の組み合わせで符号化され得
る。例えば、例示される実施形態において、プログラム命令１５２５は、分散データウェ
アハウスシステムのクラスタの先頭ノード、分散データウェアハウスシステムのクラスタ
のコンピューティングノード、分散データウェアハウスサービスマネージャ、キー値持続
性バックアップ記憶システム（またはそのインターフェース）、または分散データウェア
ハウスシステムもしくは対応するキー値持続性バックアップ記憶システムの任意の他の構
成要素の機能を実現するために実行可能なプログラム命令を含む。いくつかの実施形態に
おいて、プログラム命令１５２５は、複数の別個のクライアント、サーバノード、および
／または他の構成要素を実現し得る。
【００６８】
いくつかの実施形態において、プログラム命令１５２５は、ＵＮＩＸ（登録商標）、Ｌ
ＩＮＵＸ（登録商標）、Ｓｏｌａｒｉｓ（登録商標）、ＭａｃＯＳ（登録商標）、Ｗｉｎ
ｄｏｗｓ（登録商標）等の種々のオペレーティングシステムのいずれかであり得る、オペ
レーティングシステム（図示せず）を実現するために実行可能な命令を含み得る。プログ
ラム命令１５２５のいずれかまたは全ては、そこに命令を記憶した非一時的なコンピュー
タ読み出し可能な記憶媒体を含み得る、コンピュータプログラム製品またはソフトウェア
として提供され得、該命令は、種々の実施形態に従ってプロセスを行うようにコンピュー
タシステム（または他の電子デバイス）をプログラムするために使用され得る。非一時的
なコンピュータ読み出し可能な記憶媒体は、機械（例えば、コンピュータ）によって読み
出し可能な形態（例えば、ソフトウェア、処理アプリケーション）で情報を記憶するため
の、任意の機構を含むことができる。全般的に、非一時的なコンピュータアクセス可能な
媒体としては、Ｉ／Ｏインターフェース１５３０を介してコンピュータシステム１５００
に連結される、磁気または光媒体等のコンピュータ読み出し可能な記憶媒体またはメモリ
媒体、例えば、ディスクまたはＤＶＤ／ＣＤ−ＲＯＭが挙げられ得る。非一時的なコンピ
ュータ読み出し可能な記憶媒体としてはまた、システムメモリ１５２０または別のタイプ
のメモリとしてコンピュータシステム１５００のいくつかの実施形態に含まれ得る、ＲＡ
Ｍ（例えばＳＤＲＡＭ、ＤＤＲ  ＳＤＲＡＭ、ＲＤＲＡＭ、ＳＲＡＭ等）、ＲＯＭ等の、
任意の揮発性または不揮発性媒体も挙げられ得る。他の実施形態において、プログラム命
令は、ネットワークインターフェース１５４０を介して実現され得るような、ネットワー
クおよび／または無線リンク等の通信媒体を介して伝達される、光、音響、または他の形
態の伝搬信号（例えば、搬送波、赤外線信号、デジタル信号等）を使用して通信され得る
。
【００６９】
いくつかの実施形態において、システムメモリ１５２０は、本明細書で説明されるよう
に構成され得る、データストア１５４５を含み得る。種々の実施形態において、例えば、
スーパーブロックデータ構造、１つ以上のデータブロックアクセスカウンタ、クエリ履歴
、エラーログ、または本明細書で説明される方法を行う際に使用される他の情報等の、デ
ータウェアハウスシステムによって（例えば、先頭ノードまたはコンピューティングノー
ドに）記憶されるような、本明細書で説明される情報は、データストア１５４５もしくは
１つ以上のノードのシステムメモリ１５２０の別の部分、永続記憶領域１５６０、および
／または１つ以上のリモート記憶デバイス１５７０に記憶され得る。いくつかの実施形態
において、また、種々の時点で、システムメモリ１５２０（例えば、システムメモリ１５
２０内のデータストア１５４５）、永続記憶領域１５６０、および／またはリモート記憶
領域１５７０は、データブロックの一次コピー、データブロックの二次コピー（すなわち
、複製）、データブロックのバックアップコピー、データブロックおよび／もしくはそれ
らの状態と関連付けられるメタデータ、データベース構成情報、ならびに／または本明細
書で説明される方法および技法を実現する際に使用可能な任意の他の方法を記憶し得る。
【００７０】
一実施形態において、Ｉ／Ｏインターフェース１５３０は、ネットワークインターフェ
ース１５４０または他の周辺インターフェースを通すことを含む、システムのプロセッサ
１５１０、システムメモリ１５２０、および任意の周辺デバイスの間のＩ／Ｏトラフィッ
クを協調させるように構成され得る。いくつかの実施形態において、Ｉ／Ｏインターフェ
ース１５３０は、データ信号を１つの構成要素（例えば、システムメモリ１５２０）から
、別の構成要素（例えば、プロセッサ１５１０）による使用に適した形式に変換するため
に、任意の必要なプロトコル、タイミング、または他のデータ変換を行い得る。いくつか
の実施形態において、Ｉ／Ｏインターフェース１５３０は、例えば、周辺構成要素相互接
続（ＰＣＩ）バス規格またはユニバーサルシリアルバス（ＵＳＢ）規格の変形物等の、種
々のタイプの周辺バスを通して取り付けられるデバイスのためのサポートを含み得る。い
くつかの実施形態において、例えば、Ｉ／Ｏインターフェース１５３０の機能は、ノース
ブリッジおよびサウスブリッジ等の、２つ以上の別個の構成要素に分割され得る。さらに
、いくつかの実施形態では、システムメモリ１５２０に対するインターフェース等のＩ／
Ｏインターフェース１５３０の機能の一部もしくは全部が、プロセッサ１５１０に直接組
み込まれ得る。
【００７１】
例えば、ネットワークインターフェース１５４０は、他のコンピュータシステム１５９
０（分散データウェアハウスシステムおよび／またはリモートキー値持続性記憶システム
の１つ以上のサーバノードおよび／またはクライアントを実現し得る）等の、ネットワー
クに取り付けられるコンピュータシステム１５００と他のデバイスとの間でデータを交換
することを可能にするように構成され得る。加えて、ネットワークインターフェース１５
４０は、コンピュータシステム１５００と、種々のＩ／Ｏデバイス１５５０および／また
はリモート記憶１５７０との間の通信を可能にするように構成され得る。入力／出力デバ
イス１５５０は、いくつかの実施形態において、１つ以上のディスプレイ端末、キーボー
ド、キーパッド、タッチパッド、走査デバイス、音声もしくは光学認識デバイス、または
１つ以上のコンピュータシステム１５００によるデータの入力もしくは取り出しに適した
任意の他のデバイスを含み得る。複数の入力／出力デバイス１５５０は、コンピュータシ
ステム１５００に存在し得、または、コンピュータシステム１５００を含む分散システム
の種々のノード上に分散され得る。いくつかの実施形態において、類似する入力／出力デ
バイスは、コンピュータシステム１５００と別個であり得、また、ネットワークインター
フェース１５４０を通じて等の、有線または無線接続を通して、コンピュータシステム１
５００を含む分散システムの１つ以上のノードと相互作用し得る。ネットワークインター
フェース１５４０は、一般に、１つ以上の無線ネットワークプロトコル（例えば、Ｗｉ−
Ｆｉ／ＩＥＥＥ８０２．１１または別の無線ネットワーク規格）をサポートし得る。しか
しながら、例えば、種々の実施形態において、ネットワークインターフェース１５４０は
、他のタイプのイーサネット（登録商標）ネットワーク等の、任意の適切な有線または無
線の一般データネットワークを介した通信をサポートし得る。加えて、ネットワークイン
ターフェース１５４０は、ファイバーチャネルＳＡＮ等のストレージエリアネットワーク
を介した、または任意の他の好適なタイプのネットワークおよび／もしくはプロトコルを
介した、アナログ音声ネットワークもしくはデジタルファイバー通信ネットワーク等の電
気通信／電話通信ネットワークを介した通信をサポートし得る。種々の実施形態において
、コンピュータシステム１５００は、図１５で示される構成要素よりも多い、少ない、ま
たはそれらと異なる構成要素（例えば、ディスプレイ、ビデオカード、オーディオカード
、周辺デバイス、ＡＴＭインターフェース、イーサネットインターフェース、フレームリ
レーインターフェース等の他のネットワークインターフェース）を含み得る。
【００７２】
本明細書で説明される分散システム実施形態のいずれか、またはそれらの構成要素のい
ずれかは、１つ以上のウェブサービスとして実現され得ることに留意されたい。例えば、
データウェアハウスシステム内の先頭ノードは、ウェブサービスとして、データ記憶サー
ビスおよび／またはデータベースサービスをクライアントに提示し得る。いくつかの実施
形態において、ウェブサービスは、ネットワークを通じて相互運用可能な機械対機械の相
互作用をサポートするように設計される、ソフトウェアおよび／またはハードウェアシス
テムによって実現され得る。ウェブサービスは、ウェブサービス記述言語（ＷＳＤＬ）等
の機械処理可能な形式で記述されるインターフェースを有する。他のシステムは、ウェブ
サービスのインターフェースの記述によって規定される様式で、ウェブサービスと相互作
用し得る。例えば、ウェブサービスは、他のシステムが呼び出し得る種々の動作を定義し
得、また、他のシステムが種々の動作を要求するときに合致すると予期され得る、特定の
アプリケーションプログラミングインターフェース（ＡＰＩ）を定義し得る。
【００７３】
種々の実施形態において、ウェブサービスは、ウェブサービス要求と関連付けられるパ
ラメータおよび／またはデータを含むメッセージの使用を通して、要求または呼び出され
得る。そのようなメッセージは、拡張マークアップ言語（ＸＭＬ）等の特定のマークアッ
プ言語に従って書式が設定され得、および／またはシンプルオブジェクトアクセスプロト
コル（ＳＯＡＰ）等のプロトコルを使用してカプセル化され得る。ウェブサービス要求を
行うために、ウェブサービスクライアントは、該要求を含むメッセージを組み立て、そし
て、該メッセージを、ハイパーテキストトランスファープロトコル（ＨＴＴＰ）等のイン
ターネットに基づくアプリケーション層転送プロトコルを使用して、ウェブサービスに対
応するアドレス指定可能なエンドポイント（例えば、ユニフォームリソースロケータ（Ｕ
ＲＬ））に運搬し得る。
【００７４】
いくつかの実施形態において、ウェブサービスは、メッセージに基づく技法ではなく、
表現可能な状態の転送（「ＲＥＳＴｆｕｌ」）技法を使用して実現され得る。例えば、Ｒ
ＥＳＴｆｕｌ技法に従って実現されるウェブサービスは、ＳＯＡＰメッセージ内にカプセ
ル化されるのではなく、ＰＵＴ、ＧＥＴ、またはＤＥＬＥＴＥ等のＨＴＴＰ方法内に含ま
れるパラメータを通して呼び出される。
【００７５】
前述したものは、以下の付記を考慮してより良く理解され得る。
【００７６】
１．方法であって、１つ以上のコンピュータによって、１人以上のクライアントに代わ
って、データベーステーブルの列データを、分散データ記憶システムの複数の物理データ
ブロックに記憶することであって、分散データ記憶システムは、１つ以上のノードのクラ
スタを備え、それぞれが、物理データブロックが記憶される１つ以上のディスクを備え、
複数の物理データブロックのそれぞれは、それぞれの一意の識別子と関連付けられ、記憶
することと、複数の物理データブロックのそれぞれのコピーを、リモートキー値持続性バ
ックアップ記憶システムに記憶することであって、複数の物理データブロックのそれぞれ
に対して、それぞれの一意の識別子は、リモートキー値持続性バックアップ記憶システム
のデータブロックにアクセスするためのキーとしての役割を果たし、記憶することと、列
データが記憶された複数の物理データブロックの少なくとも１つに影響を及ぼす、分散デ
ータ記憶システムの故障を検出することと、検出することに応じて、リモートキー値持続
性バックアップ記憶システムから、複数の物理データブロックの少なくとも１つに記憶さ
れた列データの復元を自動的に開始することと、複数の物理データブロックの少なくとも
１つに記憶された全ての列データを復元する前に、データベーステーブルの列データに向
けられた１つ以上のクエリ要求を受け取ることと、１つ以上のクエリ要求を受け付け、サ
ービスすることであって、サービスすることは、列データの少なくともいくつかを含むリ
モートキー値持続性バックアップ記憶システムのデータブロックにアクセスするためのキ
ーとしてそれぞれの一意の識別子を使用して、リモートキー値持続性バックアップ記憶シ
ステムから、１つ以上のクエリ要求が向けられたデータベーステーブルの列データの少な
くともいくつかを取得することを含む、クエリ要求を受け付け、サービスすることと、を
行うことを含む、方法。
【００７７】
２．データベーステーブルの列データを該記憶することは、列データの一部分を、列デ
ータの一部分の一次コピーとして、所与のディスク上のそれぞれの物理データブロックに
記憶し、列データの一部分を、列データの一部分の１つ以上の二次コピーとして、所与の
ディスク以外の１つ以上のディスク上のそれぞれの物理データブロックに記憶することを
含む、付記１に記載の方法。
【００７８】
３．データベーステーブルの列データを該記憶することは、所与のノードのディスクに
記憶された物理データブロックのそれぞれの一意の識別子を、所与のノードに記憶された
物理データブロックに関する情報を記憶するスーパーブロックデータ構造のそれぞれのエ
ントリに記憶することを含む、付記１に記載の方法。
【００７９】
４．データベーステーブルの列データを該記憶することは、所与のノードのディスクに
記憶された物理データブロックのそれぞれが記憶される場所を示す情報を、所与のノード
に記憶された物理データブロックに関する情報を記憶するスーパーブロックデータ構造の
それぞれのエントリに記憶することを含む、付記１に記載の方法。
【００８０】
５．該サービスすることは、分散データ記憶システムのディスクから、１つ以上のクエ
リ要求が向けられたデータベーステーブルの列データの少なくともいくつかを取得するこ
とを含む、付記１に記載の方法。
【００８１】
６．方法であって、１つ以上のコンピュータによって、データを、１人以上のクライア
ントに代わって、データ記憶システムの１つ以上の物理データブロックに維持することで
あって、各物理データブロックは、一意の識別子と関連付けられる、維持することと、所
与の物理データブロックに記憶されたそれぞれのデータのコピーを、データ記憶システム
とは別のキー値記憶システムに記憶するために、バックアップ動作を行うことと、所与の
物理データブロックに記憶されたデータのそれぞれのコピーを記憶することに続いて、所
与の物理データブロックに記憶されたデータを、キー値記憶システムからデータ記憶シス
テムに復元し、一方で、１人以上のクライアントに代わって、維持されるデータに向けら
れたクエリを受け付け、サービスすることであって、復元することは、キー値記憶システ
ムのキーとして、所与の物理データブロックと関連付けられる一意の識別子を使用して、
キー値記憶システムのそれぞれのデータのコピーにアクセスすることを含み、サービスす
ることと、を行うことを含む、方法。
【００８２】
７．該復元することは、複数の物理データブロックに記憶されたデータを、キー値記憶
システムからデータ記憶システムに復元するための動作の一部として行われ、クエリを受
け付け、サービスすることは、複数の物理データブロックに記憶された全てのデータが復
元される前に行われる、付記６に記載の方法。
【００８３】
８．データベーステーブルのエントリを表すデータを受け取ることをさらに含み、デー
タを、データ記憶システムの１つ以上の物理データブロックに該維持することは、データ
ベーステーブルのデータの１つ以上の列を表すデータを、１つ以上の物理データブロック
のそれぞれに記憶することを含む、付記６に記載の方法。
【００８４】
９．復元することは、所与の物理データブロックに記憶されたデータがデータ記憶シス
テムに記憶される記憶デバイスの故障に応じて行われる、付記６に記載の方法。
【００８５】
１０．該復元することは、所与の物理データブロックに記憶されたデータがデータ記憶
システムに記憶される記憶デバイスを備えるノードの故障に応じて行われる、付記６に記
載の方法。
【００８６】
１１．該復元することは、所与の物理データブロックに記憶されたデータがデータ記憶
システムに記憶される記憶デバイスを備える１つ以上のノードのクラスタの故障に応じて
行われる、付記６に記載の方法。
【００８７】
１２．該復元することは、１つ以上のクライアントの１つからの復元動作を行う明示的
な要求に応じて行われる、付記６に記載の方法。
【００８８】
１３．データを、データ記憶システムの１つ以上の物理データブロックに該維持するこ
とは、１つ以上のノードのクラスタの特定のノード上に維持されるデータと、データが特
定のノード上の物理データブロックに記憶されるデータ記憶システムの場所との間のマッ
ピングを記憶し、データ構造を維持することを含み、データ構造は、特定のノード上に維
持され、データ構造の各エントリは、特定の物理データブロックのマッピング、および特
定の物理データブロックと関連付けられる一意の識別子を記憶し、また、本方法は、該復
元することの前に、ノードの故障またはノードのクラスタの故障に応じて、特定のノード
上のデータ構造を復元することを含む、付記６に記載の方法。
【００８９】
１４．プログラム命令を記憶する非一時的なコンピュータ読み出し可能な記憶媒体であ
って、該命令は、１つ以上のコンピュータ上で実行されたときに、１つ以上のコンピュー
タに、１つ以上のデータブロックをデータウェアハウスシステムに記憶することと、デー
タウェアハウスシステムに記憶されたデータブロックに関する情報を記憶する１つ以上の
データブロックの１つ以上のデータブロックのそれぞれに対して、それぞれのエントリを
作成することであって、１つ以上のデータブロックに対するそれぞれのエントリのそれぞ
れは、データブロックの一意の識別子、およびデータブロックがまだバックアップされて
いないという指示を含み、作成することと、１つ以上のデータブロックを含む、データウ
ェアハウスシステムに記憶された複数のデータブロックのバックアップ動作を行うことで
あって、該行うことは、データ構造のバックアップコピーをリモートキー値記憶システム
に記憶することを含み、バックアップ動作を行うことと、データ構造の対応するエントリ
が、データブロックがまだバックアップされていないことを示す、データウェアハウスに
記憶された各データブロックに対して、データブロックのバックアップコピーをリモート
キー値記憶システムに記憶することと、データブロックがバックアップされたことを示す
ために、バックアップ動作によってバックアップされた各データブロックに対応するデー
タ構造のエントリを更新することと、を行わせる、非一時的なコンピュータ読み出し可能
な記憶媒体。
【００９０】
１５．１つ以上のデータブロックをデータウェアハウスシステムに該記憶することは、
異なる記憶デバイス上の１つ以上のデータブロックのそれぞれの２つ以上のコピーを、デ
ータウェアハウスシステムに記憶することを含む、付記１４に記載の非一時的なコンピュ
ータ読み出し可能な記憶媒体。
【００９１】
１６．１つ以上のデータブロックをデータウェアハウスシステムに該記憶することは、
１つ以上のデータブロックのそれぞれの一意の識別子を発生させることを含む、付記１４
に記載の非一時的なコンピュータ読み出し可能な記憶媒体。
【００９２】
１７．１つ以上のコンピュータ上で実行されたときに、プログラム命令はさらに、１つ
以上のコンピュータに、１つ以上のデータブロックの１つのデータに向けられたクエリを
受け取ることと、クエリを受け取ることに応じて、リモートキー値記憶システムのアクセ
スキーとして１つ以上のブロックの１つの一意の識別子を使用して、リモートキー値記憶
システムの１つ以上のデータブロックの１つのバックアップコピーにアクセスすることと
、を行わせる、付記１４に記載の非一時的なコンピュータ読み出し可能な記憶媒体。
【００９３】
１８．コンピューティングシステムであって、それぞれが少なくとも１つのプロセッサ
およびメモリを備える、１つ以上のコンピューティングノードであって、集合的にデータ
ベースサービスを実現するように構成される、１つ以上のコンピューティングノードと、
リモートキー値記憶システムへのインターフェースと、を備え、データベースサービスは
、データベースサービスの１人以上の加入者に代わって、データを維持するように構成さ
れ、１つ以上のコンピューティングノードは、１人以上の加入者に代わって維持されるデ
ータを、１つ以上の記憶デバイス上の複数の物理データブロックに記憶するように構成さ
れ、複数の物理データブロックのそれぞれは、一意の識別子と関連付けられ、データベー
スサービスは、１人以上の加入者に代わって維持されるデータのバックアップ動作を行う
ように構成され、バックアップ動作を行うために、データベースサービスは、リモートキ
ー値記憶システムに、インターフェースを介して、リモートキー値記憶システムに記憶す
るための複数の物理データブロックのそれぞれのコピー、およびリモートキー値記憶シス
テムの複数の物理データブロックのコピーのアクセスキーとして使用される複数の物理デ
ータブロックのそれぞれと関連付けられる一意の識別子を送るように構成される、コンピ
ューティングシステム。
【００９４】
１９．１つ以上のコンピューティングノードは、１つ以上のクエリマップ、および１人
以上の加入者に代わって維持されるデータと、データが１つ以上のコンピューティングノ
ード上のデータベースサービスによって記憶される場所との間のマッピングを維持するよ
うに構成され、先頭ノードを備える、付記１８に記載のコンピューティングシステム。
【００９５】
２０．バックアップ動作を行うことに続いて、データベースサービスは、復元動作を行
うように構成され、復元動作を行うために、データベースサービスは、リモートキー値記
憶システムから、インターフェースを介して、リモートキー値記憶システムの複数の物理
データブロックのコピーのアクセスキーとして、複数の物理データブロックのそれぞれと
関連付けられる一意の識別子を使用して、複数の物理データブロックのそれぞれのコピー
を取り出すように構成され、復元動作を行っている間に、データベースサービスはさらに
、１人以上の加入者に代わって維持されるデータに向けられたクエリ要求を受け付け、サ
ービスするように構成される、付記１８に記載のコンピューティングシステム。
【００９６】
２１．１人以上の加入者に代わって維持されるデータに向けられたクエリ要求をサービ
スするために、データベースサービスは、復元動作の完了前に、リモートキー値記憶シス
テムから、クエリ要求によってターゲットにされたデータの少なくともいくつかを取り出
すように構成される、付記２０に記載のコンピューティングシステム。
【００９７】
２２．リモートキー値記憶システムは、複製、パリティ、消失訂正符号化、または別の
誤り訂正技法を、リモートキー値記憶システムの物理データブロックのコピーに適用する
ように構成される、付記１８に記載のコンピューティングシステム。
【００９８】
前述したものはまた、以下の付記を考慮してより良く理解され得る。
【００９９】
１．方法であって、１つ以上のコンピュータによって、１人以上のクライアントに代わ
って、データベーステーブルの列データを、分散データ記憶システムの複数の物理データ
ブロックに記憶することであって、分散データ記憶システムは、１つ以上のノードのクラ
スタを備え、それぞれが、物理データブロックが記憶される１つ以上のディスクを備え、
複数の物理データブロックのそれぞれは、それぞれの一意の識別子と関連付けられ、記憶
することと、複数の物理データブロックのそれぞれのコピーを、リモートキー値持続性バ
ックアップ記憶システムに記憶することであって、複数の物理データブロックのそれぞれ
に対して、それぞれの一意の識別子は、リモートキー値持続性バックアップ記憶システム
のデータブロックにアクセスするためのキーとしての役割を果たし、記憶することと、列
データが記憶された複数の物理データブロックの２つ以上に影響を及ぼし、分散データ記
憶システムの故障を検出することと、該検出することに応じて、２つ以上の物理データブ
ロックを自動的に復元することを含み、該復元することは、２つ以上の物理データブロッ
クのそれぞれが近い将来にアクセスされるという相対的な可能性に少なくとも部分的に基
づいて、２つ以上の物理データブロックを復元する優先順序を決定することと、リモート
キー値持続性バックアップ記憶システムから、最も高い優先度を有する２つ以上の物理デ
ータブロックの１つのコピーを取り出すことであって、キー値持続性バックアップ記憶シ
ステムの２つ以上の物理データブロックの１つのコピーにアクセスするためのキーとして
、２つ以上の物理データブロックの１つと関連付けられるそれぞれの一意の識別子を使用
することを含む、該取り出すことと、物理データブロックの取り出されたコピーの一次コ
ピーを、分散データ記憶システムの所与のノード上の所与のディスクに書き込むことと、
所与のディスク以外の分散データ記憶システムの１つ以上のディスク上の物理データブロ
ックの取り出されたコピーの複製を開始することと、を行うことを含む、方法。
【０１００】
２．２つ以上の物理データブロックを復元する優先順序を該決定することは、物理デー
タブロックをターゲットにする最近のアクセス数を示し、２つ以上の物理データブロック
のそれぞれと関連付けられるそれぞれのカウント値に少なくとも部分的に基づく、付記１
に記載の方法。
【０１０１】
３．該復元することはさらに、２つ以上の物理データブロックの１つが復元されたこと
を示すために、所与のノードに記憶された物理データブロックに関する情報を記憶するス
ーパーブロックデータ構造のエントリを更新することを含む、付記１に記載の方法。
【０１０２】
４．決定された優先順序で、リモートキー値持続性バックアップ記憶システムから、２
つ以上の物理データブロックの１つ以外の２つ以上の物理データブロックのそれぞれのコ
ピーを取り出すことと、２つ以上の物理データブロックの１つ以外の２つ以上の物理デー
タブロックの取り出されたコピーのそれぞれの一次コピーを、分散データ記憶システムの
ディスクに書き込むことと、その一次コピーが書き込まれたディスク以外の分散データ記
憶システムの１つ以上のディスク上の２つ以上の物理データブロックの１つ以外の２つ以
上の物理データブロックの取り出されたコピーのそれぞれの複製を開始することと、をさ
らに含む、付記１に記載の方法。
【０１０３】
５．方法であって、１つ以上のコンピュータによって、データを、１人以上のクライア
ントに代わって、データ記憶システムの複数の物理データブロックに維持することであっ
て、各物理データブロックは、一意の識別子と関連付けられ、維持することと、データ記
憶システムとは別のキー値記憶システムに記憶された２つ以上の物理データブロックのコ
ピーから、データ記憶システムの複数の物理データブロックの２つ以上に記憶されたデー
タを復元する動作を開始することと、２つ以上の物理データブロックのそれぞれのデータ
が近い将来にアクセスされるという相対的な可能性の決定に少なくとも部分的に基づいて
、復元すべき最も高い優先度のデータブロックを決定することと、最も高い優先度のデー
タブロック以外の２つ以上の物理データブロックのコピーを復元する前に、キー値記憶シ
ステムから、最も高い優先度のデータブロックのコピーをデータ記憶システムに復元する
ことと、を行うこと含む、方法。
【０１０４】
６．本方法はさらに、複数の物理データブロックの２つ以上に影響を及ぼす、データ記
憶システムの故障を検出することを含み、データを復元する動作を該開始することは、該
検出することに応じて行われる、付記５に記載の方法。
【０１０５】
７．本方法はさらに、クライアントから、複数の物理データブロックの２つ以上を復元
する要求を受け取ることをさらに含み、データを復元する動作を該開始することは、該受
け取ることに応じて行われる、付記５に記載の方法。
【０１０６】
８．データ記憶システムは、１人以上のクライアントに代わって、１つ以上のデータベ
ーステーブルの列データを複数の物理データブロックに記憶し、復元すべき最も高い優先
度のデータブロックを該決定することは、１つ以上のデータベーステーブルのうちのどれ
がデータ記憶システムの中へごく最近読み込まれたのかを決定することを含む、付記５に
記載の方法。
【０１０７】
９．データ記憶システムは、１人以上のクライアントに代わって、１つ以上のデータベ
ーステーブルの列データを複数の物理データブロックに記憶し、復元すべき最も高い優先
度のデータブロックを該決定することは、１つ以上のデータベーステーブルまたはその列
のうちのどれが最近の期間で最も頻繁にクエリされたのかを決定することを含む、付記５
に記載の方法。
【０１０８】
１０．データ記憶システムは、１人以上のクライアントに代わって、１つ以上のデータ
ベーステーブルの列データを複数の物理データブロックに記憶し、復元すべき最も高い優
先度のデータブロックを該決定することは、データ記憶システムでもはや利用できない物
理データブロックをターゲットにするクエリ要求を受け取ることに応じて、キー値記憶シ
ステムから最近取り出された物理データブロックのコピーとして同じテーブルまたは列の
データを記憶する、物理データブロックを識別することを含む、付記５に記載の方法。
【０１０９】
１１．最も高い優先度のデータブロックのコピーを該復元することは、リモートキー値
記憶システムから最も高い優先度のデータブロックのコピーを取り出すことであって、キ
ー値記憶システムで最も高い優先度のデータブロックのコピーにアクセスするためのキー
として、最も高い優先度のデータブロックと関連付けられる一意の識別子を使用すること
を含み、該取り出すことと、最も高い優先度のデータブロックの取り出されたコピーの一
次コピーをデータ記憶システムの記憶デバイスに書き込むことと、を含む、付記５に記載
の方法。
【０１１０】
１２．該書き込むことの前に、最も高い優先度のデータブロックに維持されるデータを
ターゲットにするクエリを受け取ることと、クエリを満たすことであって、クエリは、最
も高い優先度のデータブロックの取り出されたコピーのデータの少なくとも一部分を返す
ことを含み、クエリを満たすことと、をさらに含む、付記１１に記載の方法。
【０１１１】
１３．最も高い優先度のデータブロックのコピーを該復元することはさらに、一次コピ
ーが書き込まれた記憶デバイス以外のデータ記憶システムの１つ以上の記憶デバイスに対
する最も高い優先度のデータブロックの複製を開始することと、を含む、付記１１に記載
の方法。
【０１１２】
１４．最も高い優先度のデータブロックのコピーを該復元することはさらに、最も高い
優先度のデータブロックに記憶されたデータを、キー値記憶システムからデータ記憶シス
テムに復元し、一方で、１人以上のクライアントに代わって、維持されるデータに向けら
れたクエリを受け付け、サービスすることを含む、付記５に記載の方法。
【０１１３】
１５．復元すべき最も高い優先度のデータブロックを該決定することは、複数の物理デ
ータブロックをターゲットにする以前のクエリによるアクセスの履歴パターンに少なくと
も部分的に基づく、付記５に記載の方法。
【０１１４】
１６．該復元することは、バックグラウンドプロセスによって行われ、本方法はさらに
、バックグラウンドプロセスが該復元することを行う間に、フォアグラウンドプロセスが
、１人以上のクライアントに代わって維持されるデータに向けられた１つ以上のクエリを
受け取ることと、フォアグラウンドプロセスが、１つ以上のクエリをサービスすることと
を含む、付記５に記載の方法。
【０１１５】
１７．本方法はさらに、データ記憶システムでもはや利用できない２つ以上の物理デー
タブロックで以前に維持されたデータをターゲットにするクエリを受け取ることを含み、
データを復元する動作を該開始することは、該受け取ることに応じて行われる、付記５に
記載の方法。
【０１１６】
１８．コンピューティングシステムであって、それぞれが少なくとも１つのプロセッサ
およびメモリを備える、１つ以上のコンピューティングノードであって、集合的にデータ
ベースサービスを実現するように構成される、１つ以上のコンピューティングノードと、
リモートキー値記憶システムへのインターフェースと、を備え、データベースサービスは
、データを、データベースサービスの１人以上の加入者に代わって、１つ以上の記憶デバ
イス上の複数の物理データブロックに記憶し、複数の物理データブロックのそれぞれが一
意の識別子と関連付けられ、１人以上の加入者に代わって記憶されたデータをバックアッ
プし、データをバックアップするために、データベースサービスが、リモートキー値記憶
システムに、インターフェースを介して、リモートキー値記憶システムに記憶するための
複数の物理データブロックのそれぞれのコピー、およびリモートキー値記憶システムの複
数の物理データブロックのコピーのアクセスキーとして使用される複数の物理データブロ
ックのそれぞれと関連付けられる一意の識別子を送るように構成され、複数の物理データ
ブロックの２つ以上に対する復元動作をトリガーする条件またはイベントを検出し、複数
の物理データブロックの２つ以上のそれぞれが近い将来にアクセスされるという相対的な
可能性に少なくとも部分的に基づいて、複数の物理データブロックの２つ以上を復元する
順序を決定し、そして、決定された順序で、複数の物理データブロックの２つ以上を復元
するように構成される、コンピューティングシステム。
【０１１７】
１９．複数の物理データブロックの２つ以上を復元する順序を決定するために、データ
ベースサービスは、複数の物理データブロックの２つ以上のそれぞれがどのくらい最近に
クエリのターゲットであったのかを決定するように構成される、付記１８に記載のコンピ
ューティングシステム。
【０１１８】
２０．複数の物理データブロックの２つ以上を復元する順序を決定するために、データ
ベースサービスは、複数の物理データブロックの２つ以上のそれぞれがどのくらい最近に
書き込まれたのかを決定するように構成される、付記１８に記載のコンピューティングシ
ステム。
【０１１９】
２１．複数の物理データブロックの２つ以上を復元する順序を決定するために、データ
ベースサービスは、複数の物理データブロックの２つ以上のそれぞれがどのくらい最近に
バックアップされたのかを決定するように構成される、付記１８に記載のコンピューティ
ングシステム。
【０１２０】
２２．プログラム命令を記憶する非一時的なコンピュータ読み出し可能な記憶媒体であ
って、該命令は、１つ以上のコンピュータ上で実行されたときに、１つ以上のコンピュー
タに、データを、１人以上のクライアントに代わって、データ記憶システムの複数の物理
データブロックに維持することであって、各物理データブロックは、一意の識別子と関連
付けられ、維持することと、所定の期間中に、複数の物理データブロックの所与の１つの
データをターゲットにするクエリを受け取ることと、クエリをサービスすることであって
、複数の物理データブロックの所与の１つにアクセスすることを含み、クエリをサービス
することと、複数の物理データブロックの所与の１つと関連付けられるカウンタを増加さ
せることであって、カウンタの値は、複数の物理データブロックが所定の期間内にアクセ
スされた回数を示し、カウンタを増加させることと、複数の物理データブロックの所与の
１つを含む複数の物理データブロックの２つ以上を復元する動作を開始することと、複数
の物理データブロックの所与の１つと関連付けられるカウンタの値、および複数の物理デ
ータブロックの所与の１つ以外の複数の物理データブロックの２つ以上のそれぞれと関連
付けられるそれぞれのカウンタの値に少なくとも部分的に基づいて、複数の物理データブ
ロックの２つ以上を復元する順序を決定することと、を行わせることを含む、非一時的な
コンピュータ読み出し可能な記憶媒体。
【０１２１】
２３．複数の物理データブロックの２つ以上を復元する順序を該決定することはさらに
、複数の物理データブロックのそれぞれと関連付けられる別のそれぞれのカウンタの値に
依存し、複数の物理データブロックのそれぞれと関連付けられる他のそれぞれのカウンタ
の値は、物理データブロックが以前の所定の期間内に評価された回数を示す、付記２２に
記載の非一時的なコンピュータ読み出し可能な記憶媒体。
【０１２２】
２４．複数の物理データブロックの２つ以上を復元する順序を該決定することは、複数
の物理データブロックの２つ以上のそれぞれと関連付けられ、それぞれのカウンタの値お
よび他のそれぞれのカウンタの値の論理的または数学的組み合わせを表す値を計算するこ
とを含む、付記２３に記載の非一時的なコンピュータ読み出し可能な記憶媒体。
【０１２３】
前述のものはまた、以下の付記を考慮してより良く理解され得る。
【０１２４】
１．方法であって、１つ以上のコンピュータによって、１人以上のクライアントに代わ
って、データベーステーブルの列データを、分散データ記憶システムの複数の物理データ
ブロックに記憶することであって、分散データ記憶システムは、１つ以上のノードのクラ
スタを備え、それぞれが、物理データブロックが記憶される１つ以上のディスクを備え、
複数の物理データブロックのそれぞれは、それぞれの一意の識別子と関連付けられ、列デ
ータを該記憶することは、列データの各部分の２つ以上のコピーを分散データ記憶システ
ムの異なる物理データブロックに記憶することを含み、記憶することと、複数の物理デー
タブロックのそれぞれのバックアップコピーをリモートキー値持続性バックアップ記憶シ
ステムに記憶することであって、複数の物理データブロックのそれぞれに対して、それぞ
れの一意の識別子が、リモートキー値持続性バックアップ記憶システムのデータブロック
にアクセスするためのキーとしての役割を果たし、記憶することと、クライアントから、
分散データ記憶システムに記憶された列データの一部分に向けられたクエリを受け取るこ
とと、該受け取ることに応じて、列データの一部分のコピーが記憶される分散データ記憶
システムの複数の物理データブロックの１つにアクセスすることと、整合性チェックを複
数の物理データブロックの１つに適用することと、該適用することに少なくとも部分的に
基づいて、複数の物理データブロックの１つのデータが、破損している、または複数の物
理データブロックの他のものと一致しないと判定することと、リモートキー値持続性バッ
クアップ記憶システムに記憶された複数の物理データブロックの１つのバックアップコピ
ーを自動的に取り出すことであって、リモートキー値持続性バックアップ記憶システムの
複数の物理データブロックの１つのバックアップコピーにアクセスするためのキーとして
、１つ以上のブロックの１つの一意の識別子を使用することを含む、該取り出すことと、
クエリを満たすことであって、複数の物理データブロックの１つの取り出されたバックア
ップコピーのデータの少なくとも一部分をクライアントに返すことを含む、該クエリを満
たすことと、を含む、方法。
【０１２５】
２．列データを該記憶することは、列データの各部分の１つの一次コピーおよび１つ以
上の二次コピーを記憶することを含み、複数の物理データブロックの１つに該アクセスす
ることは、列データの一部分の一次コピーが記憶されるデータブロックが、破損している
か、または複数の物理データブロックの他のものと一致しないことに応じて、列データの
一部分の二次コピーが記憶されるデータブロックにアクセスすることを含む、付記１に記
載の方法。
【０１２６】
３．複数の物理データブロックの１つのバックアップコピーを該取り出すことは、キー
値持続性バックアップ記憶システムから、複数の物理データブロックの１つのバックアッ
プコピーに記憶されたデータを、分散データ記憶システムのシステムメモリにコピーする
ことを含み、一方で、別個のバックグラウンドプロセスは、キー値持続性バックアップ記
憶システムから、物理データブロックの１つ以上のバックアップコピーを、分散データ記
憶システムのノードのクラスタの１つ以上のディスクにコピーする、付記１に記載の方法
。
【０１２７】
４．複数の物理データブロックの１つのバックアップコピーを該取り出すことの後に、
分散データ記憶システムの複数の物理データブロックの１つを復元する動作を開始するこ
とをさらに含み、複数の物理データブロックの１つを復元することは、複数の物理データ
ブロックの１つのバックアップコピーの列データの一部分の１つの一次コピーおよび１つ
以上の二次コピーを、分散データ記憶システムのノードのクラスタの１つ以上のディスク
に記憶することを含む、付記１に記載の方法。
【０１２８】
５．方法であって、１つ以上のコンピュータによって、データを、１人以上のクライア
ントに代わって、データ記憶システムの複数の物理データブロックに維持することと、デ
ータの一部分に向けられた読み出しまたは書き込み要求を受け取ることと、該受け取るこ
とに応じて、データの一部分の整合し、かつ破損していないコピーがデータ記憶システム
で利用できないと判定することと、データの一部分の整合し、かつ破損していないコピー
がデータ記憶システムで利用できないと判定することに応じて、データ記憶システムとは
別個で別のキー値記憶システムから、データの一部分のバックアップコピーを自動的に取
り出すことと、データの一部分の取り出されたバックアップコピーのデータを含む読み出
しまたは書き込み要求に対する応答を返すことと、を含む、方法。
【０１２９】
６．該決定することは、データの一部分の一次コピーまたは二次コピーの場所を特定す
るために、１人以上のクライアントに代わって維持されるデータの各部分のそれぞれのコ
ピーが物理データブロックに記憶される１つ以上の場所を示す情報を格納するデータ構造
にアクセスすることを含む、付記５に記載の方法。
【０１３０】
７．データの一部分の整合し、かつ破損していないコピーがデータ記憶システムで利用
可能でないと該判定することは、データの一部分のコピーが以前に破損し、まだ復元され
ていないと判定することを含む、付記５に記載の方法。
【０１３１】
８．データの一部分の整合し、かつ破損していないコピーがデータ記憶システムで利用
可能でないと該判定することは、データの一部分のコピーが記憶されたノードまたはディ
スクが故障し、故障したノードまたはディスクに記憶されたデータがまだ復元されていな
いと判定することを含む、付記５に記載の方法。
【０１３２】
９．該決定することは、整合性チェックを、データの一部分の一次コピーが記憶される
物理データブロックに適用することを含む、付記５に記載の方法。
【０１３３】
１０．該決定することは、該適用することに少なくとも部分的に基づいて、データの一
部分の一次コピーが破損している、または複数の物理データブロックの他のものと一致し
ないと判定することと、整合性チェックをデータの一部分の二次コピーが記憶される物理
データブロックに適用することと、を含む、付記９に記載の方法。
【０１３４】
１１．１人以上のクライアントに代わってデータがデータ記憶システムに維持される各
物理データブロックは、一意の識別子と関連付けられ、データの一部分のバックアップコ
ピーを自動的に取り出すことは、データの一部分がキー値記憶システムのデータ記憶シス
テムに記憶された物理データブロックのバックアップコピーにアクセスするためのキーと
して、データの一部分がデータ記憶システムに記憶された物理データブロックと関連付け
られるそれぞれの一意の識別子を使用することを含む、付記５に記載の方法。
【０１３５】
１２．読み出しまたは書き込み要求を該受け取る前に、１人以上のクライアントに代わ
ってデータがデータ記憶システムに維持される複数の物理データブロックの少なくともい
くつかをバックアップすることをさらに含み、該バックアップすることは、複数の物理デ
ータブロックの少なくともいくつかのそれぞれに対して、キー値記憶システムに、物理デ
ータブロックのコピー、およびリモートキー値記憶システムの物理データブロックのバッ
クアップコピーを取り出すためのアクセスキーとして使用される物理データブロックと関
連付けられる一意の識別子を送ることを含む、付記５に記載の方法。
【０１３６】
１３．１人以上のクライアントに代わってデータ記憶システムにデータが維持される複
数の物理データブロックのそれぞれに対して、データが最初に物理データブロックに書き
込まれたときに、物理データブロックと関連付けられる一意の識別子を発生させることを
さらに含む、付記５に記載の方法。
【０１３７】
１４．１人以上のクライアントに代わってデータ記憶システムに維持されるデータの別
の部分に向けられた別の読み出しまたは書き込み要求を受け取ることと、他の読み出しま
たは書き込み要求を受け取ることに応じて、データの他の部分の整合し、かつ破損してい
ないコピーがデータ記憶システムで利用できると判定することと、データの他の一部分の
整合し、かつ破損していないコピーがデータ記憶システムで利用できると判定することに
応じて、データ記憶システムのデータの他の部分の整合し、かつ破損していないコピーの
データを含む他の読み出しまたは書き込み要求に対する応答を返すことと、をさらに含む
、付記５に記載の方法。
【０１３８】
１５．１人以上のクライアントに代わってデータ記憶システムに維持されるデータの別
の部分に向けられた別の読み出しまたは書き込み要求を受け取ることと、他の読み出しま
たは書き込み要求を受け取ることに応じて、データ記憶システムのデータの他の部分の一
次コピーが整合し、かつ破損していないと判定することと、データ記憶システムのデータ
の他の部分の一次コピーが破損している、または複数の物理データブロックの他のものと
一致しないと判定することに応じて、データ記憶システムのデータの他の部分の二次コピ
ーにアクセスすることと、データ記憶システムのデータの他の部分の二次コピーが整合し
、かつ破損していないと判定することと、データ記憶システムのデータの他の部分の二次
コピーが整合し、かつ破損していないと判定することに応じて、データ記憶システムのデ
ータの他の部分の二次コピーのデータを含む他の読み出しまたは書き込み要求に対する応
答を返すことと、をさらに含む、付記５に記載の方法。
【０１３９】
１６．コンピューティングシステムであって、それぞれが少なくとも１つのプロセッサ
およびメモリを備える、１つ以上のコンピューティングノードであって、集合的にデータ
ベースサービスを実現するように構成される、１つ以上のコンピューティングノードと、
リモートキー値記憶システムへのインターフェースと、を備え、データベースサービスは
、１人以上の加入者に代わって、データを１つ以上の記憶デバイス上の複数の物理データ
ブロックのデータベースサービスに記憶し、複数の物理データブロックのそれぞれは、一
意の識別子と関連付けられ、１人以上の加入者に代わって記憶されたデータをバックアッ
プし、データをバックアップするために、データベースサービスは、リモートキー値記憶
システムに、インターフェースを介して、リモートキー値記憶システムに記憶するための
複数の物理データブロックのそれぞれのコピー、およびリモートキー値記憶システムの複
数の物理データブロックのバックアップコピーを取り出すためのアクセスキーとして使用
される複数の物理データブロックのそれぞれと関連付けられる一意の識別子を送るように
構成され、データの一部分に向けられたクエリを受け取り、該受け取ることに応じて、デ
ータの一部分の整合し、かつ破損していないコピーが、１つ以上のコンピューティングノ
ード上で利用できないと判定し、データの一部分の整合し、かつ破損していないコピーが
、１つ以上のコンピューティングノード上で利用できないと判定することに応じて、キー
値記憶システムの複数の物理データブロックの１つのバックアップコピーにアクセスする
ためのキーとして、データの一部分が１つ以上のコンピューティングノードに記憶された
複数の物理データブロックの１つの一意の識別子を使用して、キー値記憶システムからデ
ータの一部分のバックアップコピーを自動的に取り出し、データの一部分の取り出された
バックアップコピーのデータを含むクエリ応答を返すように構成される、コンピューティ
ングシステム。
【０１４０】
１７．データの一部分の整合し、かつ破損していないコピーが、１つ以上のコンピュー
ティングノード上で利用できないと判定することは、１つ以上のコンピューティングノー
ドのどれがデータの一部分の一次コピーを記憶するのかを決定することを含む、付記１６
に記載のコンピューティングシステム。
【０１４１】
１８．データの一部分の整合し、かつ破損していないコピーが、１つ以上のコンピュー
ティングノード上で利用できないと判定することは、１つ以上のコンピューティングノー
ドのどれがデータの一部分の二次コピーを記憶するのかを決定することを含む、付記１６
に記載のコンピューティングシステム。
【０１４２】
１９．プログラム命令を記憶する非一時的なコンピュータ読み出し可能な記憶媒体であ
って、該命令は、１つ以上のコンピュータ上で実行されたときに、１つ以上のコンピュー
タに、１つ以上のコンピューティングノードのクラスタに以前に記憶された複数のデータ
ブロックの所与の１つをターゲットにするクライアントから、クエリを受け取ることと、
所与のデータブロックの整合し、かつ破損していないコピーがクラスタで利用できないと
判定することと、所与のデータブロックの整合し、かつ破損していないコピーがクラスタ
で利用できないと判定することに応じて、所与のデータブロックを復元する動作を自動的
に開始することであって、該開始することは、キー値記憶システムから所与のデータブロ
ックのコピーを取り出すことを含み、所与のデータブロックのコピーは、所与のデータブ
ロックと関連付けられる一意の識別子によって、キー値記憶システムにおいてインデック
スを付けられ、開始することと、所与のデータブロックのコピーのデータの少なくとも一
部分をクライアントに返すことと、を含む、非一時的なコンピュータ読み出し可能な記憶
媒体。
【０１４３】
２０．１つ以上のコンピュータ上で実行されたときに、プログラム命令はさらに、１つ
以上のコンピュータに、キー値記憶システムから所与のデータブロックのコピーを該取り
出すことの後に、所与のデータブロックの一次コピーとして、所与のデータブロックの取
り出されたコピーのデータを２つ以上のコンピューティングノードの１つにコピーするこ
とを行わせる、付記１９に記載の非一時的なコンピュータ読み出し可能な記憶媒体。
【０１４４】
２１．１つ以上のコンピュータ上で実行されたときに、プログラム命令はさらに、１つ
以上のコンピュータに、キー値記憶システムから所与のデータブロックのコピーを該取り
出すことの後に、所与のデータブロックの二次コピーとして、所与のデータブロックの取
り出されたコピーのデータを２つ以上のコンピューティングノードの別の１つにコピーす
ることを行わせる、付記２０に記載の非一時的なコンピュータ読み出し可能な記憶媒体。
【０１４５】
２２．１つ以上のコンピュータ上で実行されたときに、プログラム命令はさらに、１つ
以上のコンピュータに、所与のデータブロックの一次コピーとして、所与のデータブロッ
クの取り出されたコピーのデータを２つ以上のコンピューティングノードの１つに該コピ
ーすることの後に、所与のデータブロックの一次コピーが２つ以上のコンピューティング
ノードの１つに書き込まれたことを示すために、２つ以上のコンピューティングノードの
１つに記憶された物理データブロックに関する情報を記憶するデータ構造を更新すること
を行わせる、付記２０に記載の非一時的なコンピュータ読み出し可能な記憶媒体。
【０１４６】
２３．復元動作を該自動的に開始することは、クラスタに記憶されたデータブロックを
ターゲットにするクエリ要求を受け取り、サービスするフォアグラウンドプロセスによっ
て行われ、１つ以上のコンピュータによって実行されたときに、プログラム命令はさらに
、１つ以上のコンピュータに、バックグラウンドプロセスとして、クラスタに以前に記憶
された複数のデータブロックの２つ以上の他のものに対する復元動作を開始することを行
わせる、付記１９に記載の非一時的なコンピュータ読み出し可能な記憶媒体。
【０１４７】
２４．１つ以上のコンピュータ上で実行されたときに、プログラム命令はさらに、１つ
以上のコンピュータに、ファイルまたはデータ構造において、復元動作と関連付けられる
情報をロギングすることであって、該情報は、クラスタで利用できない所与のデータブロ
ックの整合し、かつ破損していないコピーをもたらした２つ以上のコンピューティングノ
ードの１つの故障の指示、復元動作の開始をトリガーした条件またはイベントの指示、ま
たは復元動作が行われなかったという指示を含む、ロギングすることと、該ロギングする
ことの後に、複数の復元動作と関連付けられる情報を取り出すために、ファイルまたはデ
ータ構造にアクセスすることと、故障解析動作、傾向解析動作、または維持動作の一部と
して複数の復元動作と関連付けられる情報を解析することと、を行わせる、付記１９に記
載の非一時的なコンピュータ読み出し可能な記憶媒体。
【０１４８】
図面で図示され、本明細書で説明される様々な方法は、例示的な方法の実施形態を表す
。それらの方法は、ソフトウェアで、ハードウェアで、またはそれらの組み合わせで人手
によって実現され得る。任意の方法の順序は、変更され得、また、種々の要素の追加、並
べ替え、組み合わせ、省略、修正等が行われ得る。
【０１４９】
上述した実施形態は、かなり詳細に説明したが、上述の開示を完全に理解すれば、当業
者には数多くの変形例および修正例が明らかになってくるであろう。以下の特許請求の範
囲が、全てのそのような修正および変更を含むと解釈され、故に、上の説明が、限定的感
覚ではなく、例示的感覚であるとみなされることが意図される。
【図１】
2018055709.tif 000003
【図２】
2018055709.tif 000004
【図３】
2018055709.tif 000005
【図４】
2018055709.tif 000006
【図５】
2018055709.tif 000007
【図６】
2018055709.tif 000008
【図７】
2018055709.tif 000009
【図８】
2018055709.tif 000010
【図９Ａ】
2018055709.tif 000011
【図９Ｂ】
2018055709.tif 000012
【図１０】
2018055709.tif 000013
【図１１】
2018055709.tif 000014
【図１２】
2018055709.tif 000015
【図１３】
2018055709.tif 000016
【図１４】
2018055709.tif 000017
【図１５】
2018055709.tif 000018
【外国語明細書】
2018055709000001.pdf