(57)【特許請求の範囲】
【請求項１】
データベースシステムであって、
コンピュータプロセッサと、
前記コンピュータプロセッサ上で実行するように構成されたコンピュータプログラムモジュールを記憶する非一時的なコンピュータ可読記憶媒体であって、前記コンピュータプログラムモジュールは、
データベースの少なくとも一部をサーバに対してローカルであるローカルストレージ上で含む、前記データベースのローカルコピーを保持し、
外部ストレージシステムに格納された、前記データベースの完全なコピーに対応する、前記データベースの参照コピーを保持することであって、前記データベースの前記参照コピーは、前記データベースの前記ローカルコピーのバックアップとして機能し、前記参照コピーは、前記ローカルコピーに対して最新の状態に保たれ、当該参照コピーを保持することは、前記ローカルストレージに格納されたデータを更新する要求を受信すること、更新のために識別された前記ローカルストレージに格納された前記データに対応する、前記外部ストレージシステム上に格納されたデータを識別すること、および前記ローカルストレージの前記データと、前記外部ストレージシステム上に格納された前記対応するデータとを更新することを含み、
クエリの受信に応答して、
前記ローカルストレージに格納された結果データの第１の部分と、前記外部ストレージシステムに格納された結果データの第２の部分とが別個になるように、前記クエリを、前記結果データの前記第１の部分および前記結果データの前記第２の部分にマップし、
前記ローカルストレージから前記結果データの前記第１の部分を、および前記外部ストレージシステムに格納された、前記データベースの前記参照コピーから前記結果データの前記第２の部分を並行して検索し、
前記結果データの前記第１および第２の部分を組み合わせ、前記クエリに対する完全な結果を生成する
ように構成された分散データマネージャーを備える、コンピュータ可読記憶媒体と
を備えたことを特徴とするデータベースシステム。
【請求項２】
前記コンピュータプログラムモジュールは、前記外部ストレージシステムにおける前記データベースの前記参照コピーのスナップショットを取得するように構成されたデータイメージングモジュールをさらに備え、前記スナップショットは、前記データベースを表現するパラメータを使用して決定された時間に取得されることを特徴とする請求項１に記載のデータベースシステム。
【請求項３】
前記データベースを表現する前記パラメータは、以前のスナップショットが取得されてから前記データベース上で実行されたクエリ操作の数を備えることを特徴とする請求項２に記載のデータベースシステム。
【請求項４】
前記コンピュータプログラムモジュールは、前記外部ストレージシステムに格納された、前記データベースの前記参照コピーのスナップショットを取得するように構成されたデータイメージングモジュールをさらに備え、前記スナップショットを取得することは、データブロックを表現するコンテンツテーブルを格納することを備え、前記コンテンツテーブルは、各ブロックのストレージアドレスおよび各ブロックの大きさを格納することを特徴とする請求項１に記載のデータベースシステム。
【請求項５】
前記コンピュータプログラムモジュールは、
トランザクションのコミット操作の前のデータブロックを表現する情報を備える第１のコンテンツテーブルを格納し、
前記コミット操作の後のデータブロックを表現する情報を備え、前記トランザクションによって生成されたブロックを含み、および前記トランザクションによって放棄されたブロックを除外する第２のコンテンツテーブルを格納する
ように構成されたデータイメージングモジュールをさらに備えたことを特徴とする請求項１に記載のデータベースシステム。
【請求項６】
非一時的なコンピュータ可読記憶媒体であって、
データベースの少なくとも一部を含む前記データベースのローカルコピーを、サーバに対してローカルであるローカルストレージ上で保持するステップと、
外部ストレージシステムに格納された、前記データベースの完全なコピーに対応する、前記データベースの参照コピーを保持するステップであって、前記データベースの前記参照コピーは、前記データベースの前記ローカルコピーのバックアップとして機能し、前記参照コピーは、前記ローカルコピーに対して最新の状態に保たれ、当該参照コピーを保持するステップは、
前記ローカルストレージに格納されたデータを更新する要求を受信することに応答して、前記ローカルストレージにおいて更新される前記データに対応する、前記外部ストレージシステム上に格納されたデータを識別すること、および
前記ローカルストレージの前記データと、前記外部ストレージシステム上に格納された前記対応するデータとを更新すること
を含む、ステップと、
クエリの受信に応答して、
前記ローカルストレージに格納された結果データの第１の部分と、前記外部ストレージシステムに格納された結果データの第２の部分とが別個になるように、前記クエリを、前記結果データの前記第１の部分および前記結果データの前記第２の部分にマップし、
前記ローカルストレージから前記結果データの前記第１の部分を、および前記外部ストレージシステムに格納された前記参照コピーから前記結果データの前記第２の部分を並行して検索するステップと、
前記結果データの前記第１および第２の部分を組み合わせ、前記クエリに対する完全な結果を生成するステップと
を備えたステップを実行するように構成されたコンピュータ実行可能コードを含むことを特徴とするコンピュータ可読記憶媒体。
【請求項７】
前記コンピュータ実行可能コードは、前記外部ストレージシステムに格納された、前記データベースの前記参照コピーのスナップショットを取得するようにさらに構成され、前記スナップショットは、前記データベースを表現するパラメータを使用して決定された時間に取得されることを特徴とする請求項６に記載のコンピュータ可読記憶媒体。
【請求項８】
前記データベースを表現する前記パラメータは、以前のスナップショットが取得されてから前記データベース上で実行されたクエリ操作の数を備えることを特徴とする請求項７に記載のコンピュータ可読記憶媒体。
【請求項９】
前記コンピュータ実行可能コードは、前記外部ストレージシステムに格納された、前記データベースの前記参照コピーのスナップショットを取得するステップを実行するようにさらに構成され、前記スナップショットを取得することは、データブロックを表現するコンテンツテーブルを格納することを備え、前記コンテンツテーブルは、各ブロックのストレージアドレスおよび各ブロックの大きさを格納することを備えることを特徴とする請求項６に記載のコンピュータ可読記憶媒体。
【請求項１０】
前記コンピュータ実行可能コードは、
トランザクションのコミット操作の前のデータブロックを表現する情報を備える第１のコンテンツテーブルを格納するステップと、
前記コミット操作の後のデータブロックを表現する情報を備え、前記トランザクションによって生成されたブロックを含み、および前記トランザクションによって放棄されたブロックを除外する第２のコンテンツテーブルを格納するステップと
を実行するようにさらに構成されたことを特徴とする請求項６に記載のコンピュータ可読記憶媒体。
【請求項１１】
データベースのストレージを保持する方法であって、前記方法は、
データベースの少なくとも一部を含む前記データベースのローカルコピーを、サーバに対してローカルであるローカルストレージ上で保持するステップと、
外部ストレージシステムに格納された、前記データベースの完全なコピーに対応する、前記データベースの参照コピーを保持するステップであって、前記データベースの前記参照コピーは、前記データベースの前記ローカルコピーのバックアップとして機能し、前記参照コピーは、前記ローカルコピーに対して最新の状態に保たれ、当該参照コピーを保持するステップは、
前記ローカルストレージに格納されたデータを更新する要求を受信することに応答して、前記ローカルストレージにおいて更新される前記データに対応する、前記外部ストレージシステム上に格納されたデータを識別すること、および
前記ローカルストレージの前記データと、前記外部ストレージシステム上に格納された前記対応するデータとを更新すること
を含む、ステップと、
クエリの受信に応答して、
前記ローカルストレージに格納された結果データの第１の部分と、前記外部ストレージシステムに格納された結果データの第２の部分とが別個になるように、前記クエリを、前記結果データの前記第１の部分および前記結果データの前記第２の部分にマップし、
前記ローカルストレージから前記結果データの前記第１の部分を、および前記外部ストレージシステムに格納された、前記データベースの参照コピーから前記結果データの前記第２の部分を並行して検索するステップと、
前記結果データの前記第１および第２の部分を組み合わせ、前記クエリに対する完全な結果を生成するステップと
を備えたことを特徴とする方法。
【請求項１２】
前記外部ストレージシステムに格納された、前記データベースの前記参照コピーのスナップショットを取得するステップをさらに備え、前記スナップショットは、前記データベースを表現するパラメータを使用して決定された時間に取得されることを特徴とする請求項１１に記載の方法。
【請求項１３】
前記データベースを表現する前記パラメータは、以前のスナップショットが取得されてから前記データベース上で実行されたクエリ操作の数を備えることを特徴とする請求項１２に記載の方法。
【請求項１４】
前記データベースを表現する前記パラメータは、以前のスナップショットが取得されてから経過した時間量を備えることを特徴とする請求項１２に記載の方法。
【請求項１５】
前記データベースを表現する前記パラメータは、前記データベース内で追加、削除、または更新された情報量を備えることを特徴とする請求項１２に記載の方法。
【請求項１６】
前記外部ストレージシステムに、前記データベースの前記参照コピーを保持するステップは、前記データベースの前記参照コピーのスナップショットを取得するステップを備え、前記スナップショットを取得するステップは、データブロックを表現するコンテンツテーブルを格納するステップを備え、前記コンテンツテーブルは、各ブロックのストレージアドレスおよび各ブロックの大きさを格納することを特徴とする請求項１１に記載の方法。
【請求項１７】
前記データベースの前記参照コピーの前記スナップショットは、前記外部ストレージシステムを前記サーバから隔離することなく、取得されることを特徴とする請求項１６に記載の方法。
【請求項１８】
前記外部ストレージシステムに、前記データベースの前記参照コピーを保持するステップは、
トランザクションのコミット操作の前のデータブロックを表現する情報を備える第１のコンテンツテーブルを格納するステップと
前記コミット操作の後のデータブロックを表現する情報を備え、前記トランザクションによって生成されたブロックを含み、および前記トランザクションによって放棄されたブロックを除外する第２のコンテンツテーブルを格納するステップと
を備えたことを特徴とする請求項１１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Ｉ／Ｏ要求を実行するためにローカル及びリモートのストレージシステムが同時に用いられる「データベース認識型（"database aware"）」分散データ環境におけるデータストレージの管理に関する。
【背景技術】
【０００２】
従来のデータウェアハウジング及びデータマート（ＤＭ）環境においては、データはストレージエリアネットワーク（ＳＡＮ）等の外部接続ストレージシステム（ＥＳＳ）に集中的に蓄積されるか、ローカルに蓄積されている。セキュリティ（例えば、ＥＳＳ）又は性能（例えば、ローカルアクセス）のいずれかを提供するために単一のアクセスポイントが構成されることが多いが、この両方を経済的に提供することは通常不可能である。ＥＳＳはセキュリティを保証するが、データ量が多い場合やＩ／Ｏ負荷が高いアプリケーションが関係する状況では、性能も保証しようとすると非常にコスト高となる可能性がある。
逆に、ローカルストレージシステムは高いデータスループット性能を有することが多いが、大量のデータを効率的に保存したり、過度な冗長性による記憶容量の犠牲なくしてくセキュリティを保証したりすることは不可能である。
【０００３】
並列ウェアハウジング及びＤＭ環境は、単一のストレージ構成に依存する環境において機会を増やすが追加的なオーバーヘッドももたらす。ローカルストレージに依存するシェアードナッシング並列データベースシステムは、フェイルオーバー回復（ＦＲ）及び障害回復（ＤＲ）のために高度な解決方法を開発しなければならない。かかるシステムはストレージ要求を２倍にも４倍にもし、それによって各サーバの容量を減少させる可能性がある。そのため、サーバの増殖やシステム容量の減少が引き起こされる可能性がある。ストレージ共有並列データベースシステム（例えばＥＳＳの実装）は、集中化された高可用性サービス及びセキュリティサービスに依存することが多いため、ＦＲ及びＤＲのインフラストラクチャーにおける並列解法の複雑さを減少させるが、データスループットの減少という不利益を伴う。これによって、並列システムを効率的に使用することができなくなり、システムの拡張性が制限され、ユーザの要求の高まりによるデータ量やアプリケーションへの要求の増大に対してシステムが線形に拡大して対処することが非常に難しくなるなどの不具合が生じる。
【発明の概要】
【０００４】
本発明の一態様は、ＳＡＮ等のＥＳＳが指定されているローカルストレージを有する複数のサーバを接続することにより、データウェアハウジング環境におけるデータスループットを最適化する（少なくとも向上させる）システム及び方法に関する。本発明の他の態様においては、このシステム及び方法は、完全に利用可能な保護された環境（例えばＥＳＳ上の環境）におけるデータの完全な参照コピーを保持する。本発明の他の態様においては、このシステム及び方法は、効率的で信頼性のあるシステムリソースの利用に関するＩ／Ｏ全体の潜在的な性能及び信頼性を最大化（少なくとも著しく向上）させる。
【０００５】
本発明の他の態様及び有利な効果には以下のものが含まれる。すなわち、本発明の他の態様及び有利な効果には、混合ストレージ構成において信頼性のあるデータ環境を提供すること、混合ストレージ要素間のディスク（転送）速度の違いを平衡化及び調整して高スループットを維持すること、サーバ構成における異なるディスクサイズに対応すること、混合ストレージ構成において高性能のＦＲ及びＤＲを提供すること、システム構成からサーバが追加及び除去されたときに動的に再セットアップする機能を提供すること、及び複数のサーバがシステム内で区画化されている（partitioned）データベースのクラスタリングの機能を提供して個別のデータベース、アプリケーション又はユーザグループを提供すること、及び／又はこれら以外の改良が含まれる。データウェアハウジング環境におけるサーバは自律的な又は半自律的な態様で管理されるので、高性能な集中管理システムに対する要求を緩和することができる。
【０００６】
幾つかの実施形態におけるシステムは、一又は複数のＥＳＳ、一又は複数のサーバ、当該サーバに個別に関連付けられたローカルストレージ、一又は複数のクライアント、及び／又は他の要素を含むことができる。このＥＳＳは、データベース全体のコピーを保持することができる。サーバの個別のローカルストレージはデータベースの一部分を保持することができる。所定のサーバは、対応するローカルストレージにおいてデータのストレージを管理することができ、ＥＳＳ及び／又は対応するローカルストレージのデータの検索を管理することができる。所定のクライアントがサーバと動作可能に接続され、データベースと一又は複数のユーザ及び／又は管理者との間のインタフェースを提供することができる。
【０００７】
ＥＳＳはデータベース全体のコピーを保持することができる。このコピーはリアルタイム又はほぼリアルタイムで最新のものに更新される。したがって、ＥＳＳに保持されるデータベースのコピーは、個別のサーバのローカルストレージに保存されるデータベースの一部分について、ＦＲ又はＤＲのための完全な参照コピーとして利用することができる。
ＥＳＳのコピーは継続的に（又は実質的に継続的に）最新のものに保たれるので、ＥＳＳをサーバから一時的に手動で隔離することなくデータベースの「スナップショット」を取得し、データベースの静止コピーを提供することができる。ＥＳＳが集中化されているため、例えば標準的な複製及び分散化ポリシーによって比較的高いセキュリティ及び／又は高い可用性でデータベースのコピーを保持することができる。幾つかの実施形態において、ＥＳＳに保持されているデータは、サーバによってより頻繁にアクセスされるデータ（例えば、ローカルストレージに格納されていないデータブロック）により効率的にアクセスできるように構成される（例えば、順次読み込みアクセス）。幾つかの実施形態において、ＥＳＳは、サーバにローカルに保存されているデータベースの一部分のバックアップコピーを提供することができる。
【０００８】
サーバに個別に対応しているローカルストレージは、ＥＳＳに含まれているデータベースの一部分を格納する。ストレージシステムのアーキテクチャ及び／又は個別のローカルストレージ設定は、システム全体によって指定されるものではない。例えば、別個のローカルストレージを異なる種類のストレージ装置によって提供することができ及び／又はそのストレージ装置は異なる設定を有することができる。幾つかの実施形態において、所定のローカルストレージは、他のアプリケーション及び本明細書において説明されるシステムのためのストレージを提供するために区画化されていてもよい。
【０００９】
サーバはサーバコンピュータノードのネットワークを形成することができる。このネットワークは、一又は複数の主ノードがクライアントと通信を行ってクエリを取得するとともに表示等の処理をさらに行うためにデータを提供し、複数のコンピュータノードサーバによるクエリの処理を管理する。個別のサーバは、ローカルストレージ及びＥＳＳからデータを同時に読み出すことでクエリを並列に処理し、Ｉ／Ｏ性能及びスループットを向上させる。ローカルストレージ及びＥＳＳからそれぞれ読み出されるデータの割合は、（１）所定のサーバと対応するローカルストレージとの間のデータスループット及び（２）ＥＳＳと所定のサーバとの間のデータスループットの関数であってもよい。幾つかの実施形態において、別個のソースから読み出されるデータの割合は、ローカルストレージからのデータの読み出しとＥＳＳからのデータの読み出しとをほぼ同時に完了させるという目的に合致するように決定される。同様に、所定のサーバは、対応するローカルストレージに保存されたデータベースの部分を、サーバ・ローカルストレージ間とサーバ・ＥＳＳ間との相対的なデータスループットに応じて継続的に調整することができる（例えば、サーバ・ローカルストレージ間のスループットがサーバ・ＥＳＳ間のスループットに比べて相対的に高い場合には、当該ローカルストレージに保存されるデータベースの部分が相対的に大きくなるように調整される）。幾つかの実施形態において、個別のサーバは、データベースエンジン、分散データマネージャー、Ｉ／Ｏシステム等の要素の一又は複数を含むことができる。
【００１０】
クライアントは、サーバに動作可能に接続され、当該サーバに送信されるデータベースクエリを生成することができる。クエリの結果（サーバでの処理により生成される）は、配列処理や表示処理のためにクライアントに返される。
【００１１】
様々な実施形態において、データを、外部データソースから、例えばクライアントを介してデータベースに読み込むことができる。データをデータベースに読み込む方法は、外部データソースからデータを受信すること、受信したデータを整理すること（例えば、データブロックの形式に整理すること）、受信したデータをＥＳＳに保持されているデータベースに書き込むこと、及び／又は受信したデータの一部分を個別のサーバによって個別のローカルストレージに書き込むことを含むことができる。
【００１２】
幾つかの実施形態において、クライアントから受信したクエリはサーバによって処理される。このクエリを受信し処理する方法は、クライアントからクエリを受信すること、受信したクエリを個別のサーバでの処理のためにサーバ間で送信すること、ローカルストレージから読み出すべきデータ量及びＥＳＳから読み出すべきデータ量を決定すること、ローカルストレージ及びＥＳＳからデータを読み出すこと、受信したデータを処理すること、及び／又は処理結果をクライアントに返すことを含むことができる。受信したデータの処理が所定のサーバにおける中間データの実体化を含む場合には、そのデータは、ユーザ設定可能な設定に基づいてローカルストレージ及び／又はＥＳＳに保存される。幾つかの実施形態において、このユーザ設定可能な設定は、容量、利用率、スループットの平衡化及び／又はストレージの平衡化等の一又は複数の基準に基づいて定められる。
【００１３】
幾つかの実施形態においては、例えば外部データソースにおいてデータが削除され更新された場合に、データベース内のデータを更新し及び／又は削除することができる。このようなデータの変更を反映する方法は、更新及び／又は削除を受信すること、ＥＳＳに保存されているデータベースのコピーにおける対応するデータ（例えば、行、要素等）を更新及び／又は削除すること、当該サーバに対応する様々なローカルストレージによって格納されたデータベースの一部分を更新すること、及び／又は個別のローカルストレージにおけるデータのストレージを調整して個別のローカルストレージとＥＳＳとの間のバランスを保つことを含むことができる。幾つかの実施形態においては、対応するローカルストレージのバキューム処理を行うサーバの一又は複数においてバキュームコマンド（vacuum command）を実行し、蓄積されているデータベースの一部分について行われるデータの更新及び／又は削除によって発生するローカルストレージ内に格納されたデータベースの一部分における不連続性を除去することができる。
【００１４】
幾つかの実施形態においては、ＥＳＳからデータベースのスナップショットを取得することができる。スナップショットは、データベースを将来その最新状態に復帰させるために用いられるデータベースのイメージを含むことができる。データベースのスナップショットを取得する方法は、以前のスナップショットからの経過時間を監視すること、以前のスナップショットからの時間が所定の閾値を超えた場合にデータベースを監視してスナップショットを実行することが可能か決定すること、及びスナップショットを実行することを含むことができる。スナップショットが実行可能か決定することは、いずれかのクエリが実際にデータベースで実行されているか否かを決定すること、及び／又は実行されているクエリのいずれかがデータベース内の持続的データを更新するか否かを決定することを含むことができる。これにより、処理の継続中に適当な時間間隔でスナップショットを取得することができるので（例えば、データを更新するクエリが無い場合に実行される）、前記データベースがクエリから隔離されて一時的なデータストレージから更新されそしてスナップショットを取得するために画像化されなければらなないシステムに関して、スナップショットの取得を向上させることができる。
【００１５】
幾つかの実施形態において、データベースのスナップショットは、データベースのブロックリストの複数のコンテンツテーブルを維持することにより取得される。コンテンツテーブルは、データブロックのストレージアドレス及びこれ以外のブロック属性を含むことができる。コンテンツテーブルは、スナップショットが要求されたときに、最新のコンテンツテーブルが保存されてスナップショットコンテンツテーブルになるように機能する。
新しいコンテンツテーブルは、当初はスナップショットコンテンツテーブルと同じ情報を含むように生成されるが、データベースへの変更は、新しいコンテンツテーブルによってのみ参照される新しいブロックを生成することによりなされる。本実施形態において、各スナップショットに対していかなる数のコンテンツテーブルを生成することも可能である。マルチサーバデータベースシステムにおける全てのサーバについて前記データベースのスナップショットの一貫性を保つために、スナップショットは、最初のサーバのコンテンツテーブルのスナップショットから最後のサーバのコンテンツテーブルのスナップショットが完了するまでの間に干渉となるブロックデータの書き込みを行うことなく実質的に全てのサーバにおいて実行される。
【００１６】
幾つかの実施形態において、多数のコンテンツテーブルを用いてデータベースのスナップショットが取得される。この多数のコンテンツテーブルを構成する各コンテンツテーブルには、各データブロックの大きさ、ブロックのストレージアドレス及びブロックの他の属性が含まれる。この実施形態において、ＳＱＬコミット等のデータベーストランザクションは、新しいブロックの大きさを含む追加的なコンテンツテーブルを書き込むことによって実行される。古いコンテンツテーブルは、コミットされたトランザクションによる書き込みの前に存在していたブロックの大きさを含むため、コミット前のデータベースの状態を参照する。新しいコンテンツテーブルは、トランザクションによって生成されたブロックを含み、そのトランザクションによって放棄されたブロックを除外する。本実施形態において、ＥＳＳへのスナップショットは、最初のサーバのコンテンツテーブルの生成開始から最後のサーバのコンテンツテーブルの生成完了までの間の短い期間を除いて、データベース処理の間いつでも実行可能である。
【００１７】
本発明の上記及び上記以外の目的、特徴、及び性質、並びに構造の関連要素の動作方法及び機能、そして各部分と製造経済性との組み合わせにについては、添付図面を参照しつつ以下の詳細な説明と添付の特許請求の範囲を検討することによってさらに明らかになる。ここで、同様の参照符号は種々の図における対応する部分を表している。添付図面は例示及び説明のためのものであり、本発明の発明特定事項の定義として用いることは意図されていない。本明細書及び特許請求の範囲における用法によれば、単数形の"a", "an"及び"the"には複数のものへの言及が含まれる。ただし、文脈によってそうでないことが明白である場合はこの限りでない。
【図面の簡単な説明】
【００１８】
【図１】本発明の一又は複数の実施形態に係るデータベースを提供するように構成されたシステムを示す。
【００１９】
【図２】本発明の一又は複数の実施形態に係るサーバを示す。
【００２０】
【図３】本発明の一又は複数の実施形態において、データを例えば外部データソースからデータベースへ読み込む方法を示す。
【００２１】
【図４】本発明の一又は複数の実施形態において、データベースにおいてクエリを受信し処理する方法４０を示す。
【００２２】
【図５】本発明の一又は複数の実施形態において、データベースにおけるデータを削除し及び／又は更新する方法５４を示す。
【００２３】
【図６】本発明の一又は複数の実施形態において、データベースのスナップショットを取得する方法６４を示す。
【発明を実施するための形態】
【００２４】
本出願は、２００８年５月１６日に出願された米国特許出願第１２／１２２，５７９号（発明の名称「ストレージ性能の最適化」）に基づく優先権を主張し、その内容は参照により全体として本明細書に組み込まれる。
【００２５】
図１は、本発明の一又は複数の実施形態に係るデータベースを提供するように構成されたシステム１０を示す。システム１０は、データベースでクエリを処理する際にシステム１０全体のデータスループットを向上させることによって、データベースへのアクセスを向上させることができる。システム１０は、少なくとも一部が混合ストレージ構成を経由するデータベースのセキュリティ、ＦＲ、ＤＲ、及び／又はこれら以外の側面の一又は複数における向上を提供することができる。図１に示されるように、幾つかの実施形態において、システム１０は、クライアント１２、ＥＳＳ１４、一又は複数のサーバ１６、サーバ１６の１つに個別に対応するローカルストレージ１８等の要素の一又は複数を含むことができる。
【００２６】
クライアント１２は、サーバ１６に動作可能に接続され、サーバ１６に送信されるデータベースクエリを生成することができる。クエリの結果（サーバでの処理によって生成される）は、配列処理及び表示処理クエリを送信したクライアント１６に返される。幾つかの実施形態において、クライアント１２は、コンピュータプラットフォーム上で提供される。コンピュータプラットフォームは、例えば、デスクトップコンピュータ、ラップトップコンピュータ、携帯コンピュータ、携帯電話、パーソナルデジタルアシスタンス及び／又はこれら以外のコンピュータプラットフォームである。クライアント１２は、ユーザがデータベースと対話するためのインタフェースを提供することができる。
【００２７】
ＥＳＳ１４は、データベースのコピー全体を保持することができる外部接続ストレージシステムを含むことができる。例えば、幾つかの実施形態において、ＥＳＳ１４はＳＡＮを含むことができる。ＥＳＳ１４に保持されるデータベースのコピーは、リアルタイム又はほぼリアルタイムで最新の状態に更新される。したがって、ＥＳＳ１４によって保持されるデータベースのコピーは、個別のサーバ１６のローカルストレージ１８に格納されるデータベースの一部分について、ＦＲ又はＤＲのための完全な参照コピーとして用いることができる。ＥＳＳ１４によって保持されたデータベースのコピーは継続的に（又は実質的に継続的に）最新の状態に更新されるので、データベースの「スナップショット」は、データベースを確実に静止させるためにＥＳＳ１４をサーバ１６から隔離することなくデータイメージングモジュール２０によって取得される。ＥＳＳ１４は集中化されているので、データベースのコピーは、例えば標準的な複製ポリシーや分散化ポリシーによって、相対的に高いセキュリティ及び／又は高い可用性を有する状態でＥＳＳ１４に保持される。幾つかの実施形態において、ＥＳＳ１４は保持しているデータを整理することができる。以下に述べるような態様でサーバ１６によってより頻繁にアクセスされるデータ（例えば、ローカルストレージに格納されないデータブロック）は、サーバ１６からより少ない頻度で要求されるデータよりも効率よくアクセス（例えば、順次読み出しアクセス）できるように構成される。幾つかの実施形態において、ＥＳＳ１４に保持されるデータベースのコピーは、サーバ１６がクエリを処理するためにデータベース内のデータへのアクセスを提供するだけではなく、ＦＲ及び／又はＤＲのために、サーバ１６のローカルストレージ１８に格納されたデータベースの一部分のバックアップコピーを提供することもできる。したがって、ＥＳＳ１４によって保持されるデータベースコピーに対するデータをコミットすることで、当該データ及び当該データのバックアップへのコミットが単一の操作で実行される。
【００２８】
上述のように、データイメージングモジュール２０はデータベースのスナップショットを取得するように動作する。スナップショットは、データベースのデータイメージを含むことができる。このデータイメージは、データベースを将来その最新状態に復帰させるために用いられる。データイメージングモジュール２０は、一又は複数のパラメータを監視し、スナップショットを取得可能か否か決定することができる。幾つかの実施形態において、一又は複数のパラメータは、時間、クエリ要求がなされているデータベースで実行される処理の数、データベース内で追加、削除及び／又は更新された情報の量及び／又はこれら以外の以前のスナップショットの廃用化に関連するパラメータの１つ又は複数を含むことができる。例えば、このパラメータとして時間が用いられる場合には、データイメージングモジュールは、以前のスナップショットから経過した時間が所定の閾値を超えたか否かを判断することができる。この所定の閾値は（例えば、システム管理者によって）設定可能であってもよい。
【００２９】
このパラメータ（例えば、以前のスナップショットからの時間）の閾値が超えられた場合には、データイメージングモジュール２０は、スナップショットが実行可能か判断するためにデータベースを監視する。スナップショットが実行可能か否かを決定することは、いずれかのクエリが実際にデータベースで実行されているか否かを決定すること、及び／又は実行されているクエリのいずれかがＥＳＳ１４に格納されたデータベースのコピーにおける持続的データを更新するか否かを決定することを含むことができる。スナップショットが実行可能であると決定された場合には、データイメージングモジュール２０は、ＥＳＳ１４をシステム１０の残りの部分から手動で隔離することなく、ＥＳＳ１４のスナップショットを取得することができる。これにより、スナップショットは、適当な時間間隔で継続的な処理がなされている間（例えば、データを更新するクエリが実行されていないとき）にデータイメージングモジュール２０によって取得されるので、データベースを手動でクエリから隔離し一時的なデータストレージを更新してスナップショットを取得するために画像化しなければならないシステムについて、スナップショットの取得を向上させることができる。
【００３０】
幾つかの実施形態において、データベースのブロックリストの複数のコンテンツテーブルを維持することによって、データベースのスナップショットが取得される。コンテンツテーブルは、データブロックのストレージアドレス及びブロックの他の属性を含むことができる。コンテンツテーブルはスナップショットが要求されたときに最新のコンテンツテーブルが保存され、スナップショットのコンテンツテーブルになるように機能する。新しいコンテンツテーブルは、スナップショットのコンテンツテーブルと同じ情報を含むように当初生成されるが、新しいコンテンツテーブルによってのみ参照される新しいブロックを生成することによってデータベースへの変更がなされる。このような実施形態において、スナップショットごとにコンテンツテーブルは幾つ作られてもよい。システム１０のサーバ１６全体を通してデータベースのスナップショットの一貫性を保つために、スナップショットは、第１のサーバのコンテンツテーブルのスナップショットから最後のサーバのコンテンツテーブルのスナップショットが完了するまでの間に干渉となるブロックデータの書き込みを行うことなく、実質的に全てのサーバ１６において実行される。
【００３１】
幾つかの実施形態において、多数のコンテンツテーブルを用いてデータベースのスナップショットが取得される。多数のコンテンツテーブルを構成する各コンテンツテーブルには、各データブロックの大きさ、ブロックのストレージアドレス及びブロックの他の属性が含まれる。この実施形態において、ＳＱＬコミット等のデータベーストランザクションは、新しいブロックの大きさを含む追加的なコンテンツテーブルを書き込むことによって実行される。古いコンテンツテーブルは、コミットされたトランザクションによる書き込みの前に存在していたブロックの大きさを含むため、コミット前のデータベースの状態を参照する。新しいコンテンツテーブルは、トランザクションによって生成されたブロックを含み、そのトランザクションによって放棄されたブロックを除外する。本実施形態において、ＥＳＳのスナップショットは、最初のサーバのコンテンツテーブルの生成開始から最後のサーバのコンテンツテーブルの生成完了までの間の短い期間を除いて、データベース処理の間いつでも実行可能である。
【００３２】
サーバ１６は、処理ノードのネットワークを提供する。このネットワークにおいては、サーバ１６の一又は複数がクライアント１２と通信を行ってクエリを取得し、及び／又はクライアント１２における処理のためにデータを送信する主ノードとして機能する。主ノードは、主ノードによって取得されたクエリを処理する計算用ノードとして動作する他のサーバ１６の一又は複数を管理する。
【００３３】
サーバ１６の１つに個別に対応するローカルストレージ１８は、ＥＳＳ１４に含まれるデータベースのコピーの一部分を格納する。個別のローカルストレージ１８のアーキテクチャ及び／又は設定は、システム１０によって指定されるものではない。例えば、個別のローカルストレージ１８は異なる種類のストレージ装置によって提供され、当該ストレージ装置は異なる設定を持つことができる。幾つかの実施形態において、他のアプリケーションや本明細書において説明されるシステムのためのストレージを提供するために、所定のローカルストレージ１８を区画化することができる。例えば、所定のローカルストレージ１８は、ローカルでの実行とディスクフェイルオーバーのためにＲＡＩＤ５を用いることができ、ローカルでの冗長性等のためにＲＡＩＤ１を用いることができる。
【００３４】
システム１０のアーキテクチャ及び／又は機能は、サーバ１６及び対応するローカルストレージ１８のそれぞれを自律的な（又は半自律的な）ユニットとして機能させることができる。例えば、ローカルストレージ１８にデータベースの一部分を蓄積する様々な態様は、例えばＥＳＳ１４上に又はＥＳＳ１４とともに提供される集中化されたマネージャによって整理又は管理される必要がなく、サーバ１６によって実現される。
【００３５】
図２は、本発明の一又は複数の実施形態に係るシステム１０におけるサーバ１６及びローカルストレージ１８の構成を図１よりも詳しく示す。図２に示されるように、サーバ１６は、データベースエンジン２２、分散データマネージャー２４、Ｉ／Ｏシステム２６、及び／又はこれら以外の要素の一又は複数を含むことができる。これらの要素の一又は複数は、一又は複数のプロセッサで実行されるモジュールによって提供される。プロセッサは、中央演算ユニット、デジタル回路、アナログ回路、ステートマシーン、フィールドプログラマブルゲートアレイ、及び／又はこれら以外のプロセッサの一又は複数を含むことができる。データベースエンジン２２、分散データマネージャー２４、及び／又はＩ／Ｏシステム２６の一又は複数は、ハードウェア、ソフトウェア、ファームウェア及び／又はハードウェア、ソフトウェア及び／又はファームウェアの組み合わせにおいて実現される。
【００３６】
幾つかの実施形態において、データベースエンジン２２は、クライアント１２との通信（例えば、クエリの受信、結果の出力等）を管理し、データソースからデータベースに書き込むためのデータを受信し、データベースに含まれるデータの削除及び／又は更新を受信し、クライアント１２から受信したクエリを管理し、クライアント１２からのクエリに従って当該データを処理するためにデータベースからデータを取得し、クライアント１２から受信したクエリに従ってデータベースからのデータを処理し、及び／又はデータベースに関するこれら以外のタスクを実行することができるアプリケーションを含んでいてもよい。
【００３７】
様々な実施形態において、分散データマネージャー２４は、ローカルストレージ１８とＥＳＳ１４との間のデータベースの並列ストレージがデータベースエンジン２２にとって透過的であるように、データベースエンジン２２とデータベースとの間のトランザクションを管理する。換言すれば、データベースエンジン２２（例えば、ＬＵＮ、ブロックフォーマット、ブロックレイアウト、ファイルシステム、ＲＡＷデバイス等）の観点からは、ローカルストレージ１８及びＥＳＳ１４に格納されているデータのいずれについても、データベース内のデータ表現の論理的ビューを同じにすることができる。したがって、ローカルストレージ１８及び／又はＥＳＳ１４内でデータが格納されている物理的な場所に関する情報は、分散データマネージャー２４によって保持されてもよい。また、データベースエンジン２２とデータベースとの間のＩ／Ｏシステム２６を介するトランザクションは、適切なストレージロケーションから受信され、適切なストレージロケーションに書き込まれることを確実にするため、分散データマネージャー２４を通じて送信されるようにしてもよい。
【００３８】
データベースエンジン２２がデータベースからデータを受信するための要求を生成する場合には、分散データマネージャー２４は、この要求を、要求されたデータのローカルストレージ１８に格納されている部分とＥＳＳ１４に格納されている部分とに割り振ることができる。これにより、当該データの個別の部分がローカルストレージ１８及びＥＳＳ１４から並列に読み出され、Ｉ／Ｏ性能及びスループットを向上させることができる。ローカルストレージ及びＥＳＳ１４から読み出されるデータ部分の割合は、それぞれ（１）サーバ１６とローカルストレージ１８との間のデータスループット及び（２）ＥＳＳ１４とサーバ１６との間のデータスループットの関数であってもよい。幾つかの実施形態において、別個のソースから読み出されるデータ部分の割合は、ローカルストレージ１８からのデータの読み出しとＥＳＳ１４からのデータの読み出しとがほぼ同時に完了するという目的に合致するように決定される。例えば、ローカルストレージ１８とサーバ１６との間の全体のデータスループットが８００ＭＢ／ｓとなるとともにＥＳＳ１４とサーバ１６との間のスループットが４００ＭＢ／ｓとなる構成においては、分散データマネージャー２４は、データベースからデータを取得する要求を、要求されたデータの３分の２をローカルストレージから取得する要求と、要求されたデータの３分の１をＥＳＳ１４から取得する要求とに割り振ることができる。
【００３９】
データベースエンジン２２が要求を処理することによって中間データを生成する場合には、分散データマネージャー２４は、ＥＳＳ１４及び／又はローカルストレージ１８の一方又は双方への中間データのストレージを管理することができる。ＥＳＳ１４、ローカルストレージ１８、又はＥＳＳ１４とローカルストレージ１８との両方のいずれに中間データを書き込むかという点（及びＥＳＳ１４及びローカルストレージ１８のそれぞれに書き込まれる割合）についての判断は、ＥＳＳ１４及び／又はローカルストレージ１８の容量、利用率、スループット及び／又はこれら以外のパラメータに基づく。
【００４０】
幾つかの実施形態において、分散データマネージャー２４は、ローカルストレージ１８に書き込まれたデータベースの一部分を制御することができる。この一部分に含まれるデータベースの割合は、以下の要素の一又は複数の関数であってもよい。この要素には、ローカルストレージ１８における利用可能なストレージ空間（storage space）（例えば、利用可能なストレージが大きいほどデータベースの大きな部分を受信することができる）、ローカルストレージ１８とサーバ１６との間のデータスループット（例えば、データがローカルストレージ１８からサーバ１６に速く読み出されるほど、より大きな割合をローカルストレージ１８に保存することができる）、ＥＳＳ１４の利用率（例えば、ＥＳＳ１４の利用率が大きくなるほど、ローカルストレージ１８に保存される割合を大きくすることができる）、及び／又はローカルストレージ１８への情報の蓄積及び／又はサーバ１６とローカルストレージ１８との間の情報の通信に影響を与えるこれら以外のパラメータが含まれる。例えば、ローカルストレージ１８とサーバ１６との間のスループットがＥＳＳ１４とサーバ１６との間のスループットの２倍速い場合（上述した例示的な構成の場合）には、分散データマネージャー２４はデータベースの３分の２をローカルストレージ１８に保存することができる。もちろん、この配分は一又は複数の他のパラメータ（例えば、本段落で列挙されたもの）によって影響を受けることがある。
【００４１】
分散データマネージャー２４は、データベース内のどのデータがローカルストレージ１８に格納されるデータベースの一部分に含められるかを制御することができる。どのデータがローカルストレージに保存されるべきかという点についての判断は、そのデータに関連するパラメータに基づく。例えば、データが永続的なものか、一時的なものか、中間のものか、及び／又は他のパラメータに基づいて判断がなされる。この判断は、例えば、ＥＳＳ１４及び／又はローカルストレージ１８の容量、利用率、スループット及び／又はこれら以外のパラメータ等の一又は複数のシステムパラメータに関連づけられてもよい。
【００４２】
分散データマネージャー２４は、データベースからのデータが物理的にローカルストレージ１８に保存される方法を制御することができる。例えば、分散データマネージャー２４は、例えば読み出しを容易にするために、データがローカルストレージ１８を形成するディスクの外側のトラックに保存されるようにすることができる。幾つかの実施形態において、分散データマネージャーは、データベースからのデータがローカルストレージ１８を形成するディスクの間でバランスよく配置されるようにし、「ホットスポット」及び／又はこれ以外のバランスを欠いたストレージによる不利な影響を緩和することができる。
【００４３】
一実施形態においては、分散データマネージャー２４は、ローカルストレージ１８に保存されるデータベースの一部分に含められるべきデータ量に影響を与える一又は複数のシステムパラメータの定期的な監査を実行することができる。これらのシステムパラメータは、サーバ１６とローカルストレージ１８との間のデータスループット、サーバ１６とＥＳＳ１４との間のデータスループット、ＥＳＳ１４の利用率、ローカルストレージ１８の利用率、ローカルストレージ１８におけるストレージロケーション及び／又はこれら以外のシステムパラメータのうち一つ又は複数を含むことができる。分散データマネージャー２４は、この監査を実行すると、ローカルストレージ１８とＥＳＳ１４との間でデータを移動させ、及び／又は、監査されたシステムパラメータにおける変化を相殺するために、ローカルストレージ１８における物理的なデータのストレージを移転させる（例えば、サーバ１６とローカルストレージ１８との間のスループットが減少する場合には、ローカルストレージに格納されるデータベースの部分は減少する）。
【００４４】
データが例えば外部データソースやクライアント１２等を介してシステム１０に入力される場合には、分散データマネージャー２４はそのデータをデータベースに書き込んで、ＥＳＳ１４及び／又はローカルストレージ１８に適切に格納されるようにする。分散データマネージャー２４は、データを受信すると、受信したデータをブロックにまとめる。データのブロックは、ローカルストレージ１８に割り当てられる物理ストレージの最小単位を形成する。一例として、データのブロックは、データベースの列の値、データベースの行の値及び／又はこれら以外のデータベースのデータのブロックを含んでもよい。データのブロックはデータベースのデータをそのまま又は圧縮して保持する。このブロックは、分散データマネージャー２４によって、Ｉ／Ｏシステム２６を介してＥＳＳ１４へ送られ、データベースに書き込まれる。分散データマネージャー２４は、ローカルストレージ１８のデータベースの割合を適切に維持するため、新しいブロックの一部分又は全部を、ローカルストレージ１８に格納されたデータベースの部分に含める否か判断し、適当なブロックをＩ／Ｏシステム２６を介してローカルストレージ１８に送ることができる。
【００４５】
同様に、例えば外部データソースやクライアント１２等を介してデータがシステム１０から削除され及び／又はシステム１０において更新された場合には、分散データマネージャー２４は、削除され及び／又は更新されたデータをＥＳＳ１４及び／又はローカルストレージ１８の適切な位置に割り振ることができる。また、分散データマネージャー２４は、ローカルストレージ１８に格納されるデータベースの部分とデータベース全体との間の適切な割合を維持するために、削除及び／又は更新によるデータの変更によってローカルストレージ１８に格納されたデータベースの部分を調整する必要が生じたか否かを判断することができる。
【００４６】
また、上述の内容から明らかなように、システム１０の各サーバ１６はそれぞれ分散データマネージャー２４を含む。この分散データマネージャー２４は、ローカルストレージ１８におけるデータのストレージを管理し、データベースのデータにアクセスし、データベースの削除及び／又は更新を行い、及び／又はデータベースに関連するこれら以外のタスクを自律的な（又は半自律的な）方法で実行することができる。また、クライアント１２からのクエリに従ったデータベースの処理は複数のサーバ１６が協調して実行することができるが、各サーバは、必要な処理の独自のサブセットを自律的に（又は半自律的に）管理することができる。これにより、個別のサーバ１６の動作が集中化された管理プロセッサに依存せず、サーバレベルでのデータベース処理を促進するという点で、ＳＡＮ等の集中化されたデータベースのストレージを用いる従来のシステムよりも有利な効果を奏することができる。
【００４７】
図３は、データを例えば外部データソースからデータベースに読み込む方法２８を示す。方法２８の処理は、上述の図１及び図２に示されたシステム１０の要素を参照し以下で説明されるが、これは説明の便宜上に過ぎず、方法２８は本開示の範囲から逸脱することなく代替的な要素及び／又はシステムを用いて実現することができる。また、以下で説明される方法２８の処理は例示である。幾つかの実施形態において、方法２８は一又は複数の本明細書で説明しない追加的な処理とともに実現することができ、本明細書で説明する処理の一又は複数を省略して実現することができる。また、方法２８の処理の順序は、図３及び以下で説明される順序に限定されない。
【００４８】
方法２８は、外部データソースからデータを受信する処理３０を含む。幾つかの実施形態において、処理３０は、図２及び上記で説明されたサーバ１６のデータベースエンジン２２と類似する又は同一のデータベースサーバのデータベースエンジンによって実行されてもよい。
【００４９】
処理３２において、処理３０において受信されたデータは、データベースにおけるストレージのためにブロックに整理されてもよい。幾つかの実施形態においては、処理３０は、図２及び上記で説明された分散データマネージャー２４と類似する又は同一のデータベースサーバの分散データマネージャーによって実行されてもよい。
【００５０】
処理３４において、処理３２において形成されたデータブロックは、ＥＳＳ（例えば、図１及び図２に示され上記で説明されたＥＳＳ１４）に書き込まれてもよい。幾つかの実施形態においては、処理３２は分散データマネージャーによって実行されてもよい。
【００５１】
処理３６において、新たに追加されたデータのいずれかがデータベースサーバにローカル保存されるべきか否かが判断される。この判断は、サーバのローカルストレージ（例えば、図１及び図２に示され及び上記で説明されたローカルストレージ１８）におけるデータベースの部分がデータベース全体に対して所定の割合を維持することができるようになされる。データベースサーバの分散データマネージャーは、分散データマネージャー２４（図２に示されている）に関連して上記で説明された一又は複数のパラメータに基づいてこの判断を行うことができる。
【００５２】
処理３８においては、新たに追加されたデータの一部分（もしあれば）が、サーバのローカルストレージに書き込まれる。処理３８は、分散データマネージャーによって実行されることができる。
【００５３】
図４は、データベースにおいてクエリを受信し実行する方法４０を示す。方法４０の処理は、上記で説明され図１及び図２に示されたシステム１０の要素を参照し以下で説明されるが、これは説明の便宜上に過ぎず、方法４０は本開示の範囲から逸脱することなく代替的な要素及び／又はシステムを用いて実現することができる。また、以下で説明される方法４０の処理は例示である。幾つかの実施形態において、方法４０は、本明細書で説明しない一又は複数の追加的な処理とともに実現することができ、本明細書で説明する処理の一又は複数を省略して実現することができる。また、方法４０の処理の順序は、図４及び以下で説明される順序に限定されない。
【００５４】
処理４２において、クエリが受信される。このクエリは、図１及び図２に示され上記で説明されたクライアント１２等のデータベースクライアントから受信される。幾つかの実施形態において、処理４２は、図１及び図２に示され及び上記で説明されたサーバ１６のデータベースエンジン２２と類似する又は同一のデータベースサーバのデータベースエンジンによって実行されてもよい。
【００５５】
処理４４においては、処理４２において受信されたクエリを処理するためにデータベースのデータを検索するか否かが判断され、当該データに対する要求が生成される。本発明の幾つかの実施形態において、処理４４は、データベースエンジンによって実行されてもよい。
【００５６】
処理４６においては、要求されたデータの独立した部分を、ＥＳＳ（例えば、図１及び図２に示され上記で説明されたＥＳＳ１４）及びサーバのローカルストレージ（例えば、図１及び図２に示され上記で説明されたローカルストレージ１８）から並列に検索するために、処理４４で生成された要求が解釈される。要求されたデータの部分は、両方の検索がほぼ同じ時間で実行されるように、ＥＳＳ及びローカルストレージのサーバに対する相対的なスループットに基づいて判断される。幾つかの実施形態において、処理４６は、図２に示され上記で説明された分散データマネージャー２４と類似する又は同一のサーバの分散データマネージャーによって実行されてもよい。
【００５７】
処理４８においては、処理４６において決定されたデータの独立の部分がデータベースサーバによって受信され、処理５０においては、受信されたデータが処理４２で受信されたクエリに従って処理される。幾つかの実施形態において、受信したデータの処理は中間データの実体化を含む。この中間データは、ユーザ設定可能な設定に基づいて、ローカルストレージ及び／又はＥＳＳに格納される。幾つかの実施形態において、ユーザ設定可能な設定は、容量、利用率、スループット平衡化、及び／又はストレージ平衡化等の一又は複数の基準に基づく。幾つかの実施形態において、処理５０におけるデータの処理はデータベースエンジンによって実行され、中間データのストレージ及び／又は検索は分散データマネージャーによって管理される。
【００５８】
処理５２においては、処理５０において実行された処理の結果がクエリを送信したクライアントに返される。幾つかの実施形態においては、処理５２はデータベースエンジンによって実行される。
【００５９】
図５は、データベースにおけるデータを削除及び／又は更新する方法５４を示す。方法５４の処理は、上記で説明され図１及び図２に示されたシステム１０の要素を参照して以下で説明されるが、これは説明の便宜上に過ぎず、方法５４は本開示の範囲から逸脱することなく代替的な要素及び／又はシステムを用いて実現することができる。また、以下で説明される方法５４の処理は例示である。幾つかの実施形態において、方法５４は、一又は複数の本明細書で説明しない追加的な処理とともに実現することができ、本明細書で説明する処理の一又は複数を省略して実現することができる。また、方法５４の処理の順序は、図５及び以下で説明される順序に限定されない。
【００６０】
処理５６においては、データベースにおけるデータの更新及び／又は削除が受信され、適切なデータを更新及び／又は削除するコマンドが生成される。幾つかの実施形態において、処理５６は、図２及び上記で説明されたデータベースエンジン２２と類似する又は同一のデータベースサーバのデータベースエンジンによって実行される。
【００６１】
処理５８においては、データベースにおけるデータの更新及び／又は削除が、当該データベースを保持するＥＳＳ（例えば図１及び図２に示され上記で説明されたＥＳＳ１４）に格納されている適切なデータに割り振られる。幾つかの実施形態において、このデータは、データベースサーバによってローカルに格納されたデータベースの一部分（例えば、図１及び図２に示され上記で説明されたローカルストレージ１８内）に保持される。この例において、更新及び／又は削除はローカルストレージ内の適切なデータに割り振られる。幾つかの実施形態において、処理５８は、図２に示され上記で説明された分散データマネージャー２４と類似する又は同一の分散データマネージャーによって実行されてもよい。
【００６２】
処理６０においては、ＥＳＳに格納された適切なデータが更新され及び／又は削除され、処理６２において、ローカルサーバに格納されている適切なデータが更新され及び／又は削除され、処理６３において、処理６０及び６２によって実行されたデータの更新及び／又は削除を反映させるためにローカルストレージに格納されたデータベースの部分のデータベース全体に対する割合が調整される。幾つかの実施形態において、処理６３は、ローカルストレージに格納されるデータベースの部分とデータベース全体との適切なバランスを維持するために、分散データマネージャー２４に関連して既に説明した方法で、分散データマネージャーによって実行される。
【００６３】
図６は、データベースを更新し及び／又は静止データベースを意図的に作り出すために、データベースをクエリから手動で隔離することなくデータベースのスナップショットを取得する方法６４を示す。方法６４の処理は、上記で説明され図１及び図２に示されたシステム１０の要素を参照して以下で説明されるが、これは説明の便宜上に過ぎず、方法６４は本開示の範囲から逸脱することなく代替的な要素及び／又はシステムを用いて実現することができる。また、以下で説明される方法６４の処理は例示である。幾つかの実施形態において、方法６４は、一又は複数の本明細書で説明しない追加的な処理とともに実現することができ、本明細書で説明する処理の一又は複数を省略して実現することができる。また、方法６４の処理の順序は、図６及び以下で説明される順序に限定されない。
【００６４】
処理６６においては、以前のスナップショットの廃用化に関連する一又は複数のパラメータの閾値が決定される。この閾値は、ユーザ設定、システムパラメータ、ハードコードされた（例えば永続的な）閾値及び／又はこれら以外の方法で定められるものの一又は複数に基づいて決定される。幾つかの実施形態において、処理６６は、図１に示され上記で説明されたデータイメージングモジュール２０と類似する又は同一のデータイメージングモジュールによって決定されてもよい。
【００６５】
処理６８においては、以前のスナップショットの廃用化に関連する一又は複数のパラメータが監視される。幾つかの実施形態において、処理６８は、データイメージングモジュールによって実行されてもよい。
【００６６】
処理７０においては、一又は複数の監視されたパラメータが閾値を超えたか否かについての判断がなされる。幾つかの実施形態において、処理７０は、データイメージングモジュールによって実行されてもよい。一又は複数のパラメータが閾値を超えていない場合には、方法６４は処理６８に戻る。一又は複数のパラメータが閾値を超えている場合には、方法６４は処理７２に進む。
【００６７】
処理７２においては、スナップショットを取得するか否かについて判断がなされる。処理７２における判断は、例えば、いずれかのクエリが現時点でデータベースにおいて処理されているか否かについての判断、実行されているクエリのいずれかがデータベースにおける永続的なデータを更新するものであるか否かについての判断、及び／又はデータベースがスナップショットを行うために十分に静止しているか否かに関連するこれら以外の判断を含む。幾つかの実施形態において、処理７２は、データイメージングモジュールによって実行されてもよい。
【００６８】
処理７４においては、データベースのスナップショットが取得される。スナップショットは、データベースを将来においてその最新状態に回復するために用いることができるデータベースのイメージを含むことができる。幾つかの実施形態において、処理７４は、データイメージングモジュールによって実行される。
【００６９】
現時点で最も実用的であり好ましいと考えられる態様に基づいて、本発明を例示のために詳細に説明したが、このような詳細な説明は例示のみを目的としたものである。本発明は開示された実施形態に限定されるものではなく、むしろ添付された特許請求の範囲の趣旨及び範囲に入る変形や均等な配置も本発明に含められることが意図されている。例えば、本発明においては、あらゆる実施形態の一又は複数の特徴を他の実施形態の一又は複数の特徴と可能な限り結合することができる。
【図１】
0005722962.tif 000002
【図２】
0005722962.tif 000003
【図３】
0005722962.tif 000004
【図４】
0005722962.tif 000005
【図５】
0005722962.tif 000006
【図６】
0005722962.tif 000007