(58)【調査した分野】(Int.Cl.,DB名)
前記コンピュータプログラムモジュールは、前記外部ストレージシステムにおける前記データベースの前記参照コピーのスナップショットを取得するように構成されたデータイメージングモジュールをさらに備え、前記スナップショットは、前記データベースを表現するパラメータを使用して決定された時間に取得されることを特徴とする請求項1に記載のデータベースシステム。
前記データベースを表現する前記パラメータは、以前のスナップショットが取得されてから前記データベース上で実行されたクエリ操作の数を備えることを特徴とする請求項2に記載のデータベースシステム。
前記コンピュータプログラムモジュールは、前記外部ストレージシステムに格納された、前記データベースの前記参照コピーのスナップショットを取得するように構成されたデータイメージングモジュールをさらに備え、前記スナップショットを取得することは、データブロックを表現するコンテンツテーブルを格納することを備え、前記コンテンツテーブルは、各ブロックのストレージアドレスおよび各ブロックの大きさを格納することを特徴とする請求項1に記載のデータベースシステム。
前記コンピュータ実行可能コードは、前記外部ストレージシステムに格納された、前記データベースの前記参照コピーのスナップショットを取得するようにさらに構成され、前記スナップショットは、前記データベースを表現するパラメータを使用して決定された時間に取得されることを特徴とする請求項6に記載のコンピュータ可読記憶媒体。
前記データベースを表現する前記パラメータは、以前のスナップショットが取得されてから前記データベース上で実行されたクエリ操作の数を備えることを特徴とする請求項7に記載のコンピュータ可読記憶媒体。
前記外部ストレージシステムに格納された、前記データベースの前記参照コピーのスナップショットを取得するステップをさらに備え、前記スナップショットは、前記データベースを表現するパラメータを使用して決定された時間に取得されることを特徴とする請求項11に記載の方法。
前記データベースを表現する前記パラメータは、以前のスナップショットが取得されてから前記データベース上で実行されたクエリ操作の数を備えることを特徴とする請求項12に記載の方法。
前記外部ストレージシステムに、前記データベースの前記参照コピーを保持するステップは、前記データベースの前記参照コピーのスナップショットを取得するステップを備え、前記スナップショットを取得するステップは、データブロックを表現するコンテンツテーブルを格納するステップを備え、前記コンテンツテーブルは、各ブロックのストレージアドレスおよび各ブロックの大きさを格納することを特徴とする請求項11に記載の方法。
前記データベースの前記参照コピーの前記スナップショットは、前記外部ストレージシステムを前記サーバから隔離することなく、取得されることを特徴とする請求項16に記載の方法。
【発明の概要】
【0004】
本発明の一態様は、SAN等のESSが指定されているローカルストレージを有する複数のサーバを接続することにより、データウェアハウジング環境におけるデータスループットを最適化する(少なくとも向上させる)システム及び方法に関する。本発明の他の態様においては、このシステム及び方法は、完全に利用可能な保護された環境(例えばESS上の環境)におけるデータの完全な参照コピーを保持する。本発明の他の態様においては、このシステム及び方法は、効率的で信頼性のあるシステムリソースの利用に関するI/O全体の潜在的な性能及び信頼性を最大化(少なくとも著しく向上)させる。
【0005】
本発明の他の態様及び有利な効果には以下のものが含まれる。すなわち、本発明の他の態様及び有利な効果には、混合ストレージ構成において信頼性のあるデータ環境を提供すること、混合ストレージ要素間のディスク(転送)速度の違いを平衡化及び調整して高スループットを維持すること、サーバ構成における異なるディスクサイズに対応すること、混合ストレージ構成において高性能のFR及びDRを提供すること、システム構成からサーバが追加及び除去されたときに動的に再セットアップする機能を提供すること、及び複数のサーバがシステム内で区画化されている(partitioned)データベースのクラスタリングの機能を提供して個別のデータベース、アプリケーション又はユーザグループを提供すること、及び/又はこれら以外の改良が含まれる。データウェアハウジング環境におけるサーバは自律的な又は半自律的な態様で管理されるので、高性能な集中管理システムに対する要求を緩和することができる。
【0006】
幾つかの実施形態におけるシステムは、一又は複数のESS、一又は複数のサーバ、当該サーバに個別に関連付けられたローカルストレージ、一又は複数のクライアント、及び/又は他の要素を含むことができる。このESSは、データベース全体のコピーを保持することができる。サーバの個別のローカルストレージはデータベースの一部分を保持することができる。所定のサーバは、対応するローカルストレージにおいてデータのストレージを管理することができ、ESS及び/又は対応するローカルストレージのデータの検索を管理することができる。所定のクライアントがサーバと動作可能に接続され、データベースと一又は複数のユーザ及び/又は管理者との間のインタフェースを提供することができる。
【0007】
ESSはデータベース全体のコピーを保持することができる。このコピーはリアルタイム又はほぼリアルタイムで最新のものに更新される。したがって、ESSに保持されるデータベースのコピーは、個別のサーバのローカルストレージに保存されるデータベースの一部分について、FR又はDRのための完全な参照コピーとして利用することができる。
ESSのコピーは継続的に(又は実質的に継続的に)最新のものに保たれるので、ESSをサーバから一時的に手動で隔離することなくデータベースの「スナップショット」を取得し、データベースの静止コピーを提供することができる。ESSが集中化されているため、例えば標準的な複製及び分散化ポリシーによって比較的高いセキュリティ及び/又は高い可用性でデータベースのコピーを保持することができる。幾つかの実施形態において、ESSに保持されているデータは、サーバによってより頻繁にアクセスされるデータ(例えば、ローカルストレージに格納されていないデータブロック)により効率的にアクセスできるように構成される(例えば、順次読み込みアクセス)。幾つかの実施形態において、ESSは、サーバにローカルに保存されているデータベースの一部分のバックアップコピーを提供することができる。
【0008】
サーバに個別に対応しているローカルストレージは、ESSに含まれているデータベースの一部分を格納する。ストレージシステムのアーキテクチャ及び/又は個別のローカルストレージ設定は、システム全体によって指定されるものではない。例えば、別個のローカルストレージを異なる種類のストレージ装置によって提供することができ及び/又はそのストレージ装置は異なる設定を有することができる。幾つかの実施形態において、所定のローカルストレージは、他のアプリケーション及び本明細書において説明されるシステムのためのストレージを提供するために区画化されていてもよい。
【0009】
サーバはサーバコンピュータノードのネットワークを形成することができる。このネットワークは、一又は複数の主ノードがクライアントと通信を行ってクエリを取得するとともに表示等の処理をさらに行うためにデータを提供し、複数のコンピュータノードサーバによるクエリの処理を管理する。個別のサーバは、ローカルストレージ及びESSからデータを同時に読み出すことでクエリを並列に処理し、I/O性能及びスループットを向上させる。ローカルストレージ及びESSからそれぞれ読み出されるデータの割合は、(1)所定のサーバと対応するローカルストレージとの間のデータスループット及び(2)ESSと所定のサーバとの間のデータスループットの関数であってもよい。幾つかの実施形態において、別個のソースから読み出されるデータの割合は、ローカルストレージからのデータの読み出しとESSからのデータの読み出しとをほぼ同時に完了させるという目的に合致するように決定される。同様に、所定のサーバは、対応するローカルストレージに保存されたデータベースの部分を、サーバ・ローカルストレージ間とサーバ・ESS間との相対的なデータスループットに応じて継続的に調整することができる(例えば、サーバ・ローカルストレージ間のスループットがサーバ・ESS間のスループットに比べて相対的に高い場合には、当該ローカルストレージに保存されるデータベースの部分が相対的に大きくなるように調整される)。幾つかの実施形態において、個別のサーバは、データベースエンジン、分散データマネージャー、I/Oシステム等の要素の一又は複数を含むことができる。
【0010】
クライアントは、サーバに動作可能に接続され、当該サーバに送信されるデータベースクエリを生成することができる。クエリの結果(サーバでの処理により生成される)は、配列処理や表示処理のためにクライアントに返される。
【0011】
様々な実施形態において、データを、外部データソースから、例えばクライアントを介してデータベースに読み込むことができる。データをデータベースに読み込む方法は、外部データソースからデータを受信すること、受信したデータを整理すること(例えば、データブロックの形式に整理すること)、受信したデータをESSに保持されているデータベースに書き込むこと、及び/又は受信したデータの一部分を個別のサーバによって個別のローカルストレージに書き込むことを含むことができる。
【0012】
幾つかの実施形態において、クライアントから受信したクエリはサーバによって処理される。このクエリを受信し処理する方法は、クライアントからクエリを受信すること、受信したクエリを個別のサーバでの処理のためにサーバ間で送信すること、ローカルストレージから読み出すべきデータ量及びESSから読み出すべきデータ量を決定すること、ローカルストレージ及びESSからデータを読み出すこと、受信したデータを処理すること、及び/又は処理結果をクライアントに返すことを含むことができる。受信したデータの処理が所定のサーバにおける中間データの実体化を含む場合には、そのデータは、ユーザ設定可能な設定に基づいてローカルストレージ及び/又はESSに保存される。幾つかの実施形態において、このユーザ設定可能な設定は、容量、利用率、スループットの平衡化及び/又はストレージの平衡化等の一又は複数の基準に基づいて定められる。
【0013】
幾つかの実施形態においては、例えば外部データソースにおいてデータが削除され更新された場合に、データベース内のデータを更新し及び/又は削除することができる。このようなデータの変更を反映する方法は、更新及び/又は削除を受信すること、ESSに保存されているデータベースのコピーにおける対応するデータ(例えば、行、要素等)を更新及び/又は削除すること、当該サーバに対応する様々なローカルストレージによって格納されたデータベースの一部分を更新すること、及び/又は個別のローカルストレージにおけるデータのストレージを調整して個別のローカルストレージとESSとの間のバランスを保つことを含むことができる。幾つかの実施形態においては、対応するローカルストレージのバキューム処理を行うサーバの一又は複数においてバキュームコマンド(vacuum command)を実行し、蓄積されているデータベースの一部分について行われるデータの更新及び/又は削除によって発生するローカルストレージ内に格納されたデータベースの一部分における不連続性を除去することができる。
【0014】
幾つかの実施形態においては、ESSからデータベースのスナップショットを取得することができる。スナップショットは、データベースを将来その最新状態に復帰させるために用いられるデータベースのイメージを含むことができる。データベースのスナップショットを取得する方法は、以前のスナップショットからの経過時間を監視すること、以前のスナップショットからの時間が所定の閾値を超えた場合にデータベースを監視してスナップショットを実行することが可能か決定すること、及びスナップショットを実行することを含むことができる。スナップショットが実行可能か決定することは、いずれかのクエリが実際にデータベースで実行されているか否かを決定すること、及び/又は実行されているクエリのいずれかがデータベース内の持続的データを更新するか否かを決定することを含むことができる。これにより、処理の継続中に適当な時間間隔でスナップショットを取得することができるので(例えば、データを更新するクエリが無い場合に実行される)、前記データベースがクエリから隔離されて一時的なデータストレージから更新されそしてスナップショットを取得するために画像化されなければらなないシステムに関して、スナップショットの取得を向上させることができる。
【0015】
幾つかの実施形態において、データベースのスナップショットは、データベースのブロックリストの複数のコンテンツテーブルを維持することにより取得される。コンテンツテーブルは、データブロックのストレージアドレス及びこれ以外のブロック属性を含むことができる。コンテンツテーブルは、スナップショットが要求されたときに、最新のコンテンツテーブルが保存されてスナップショットコンテンツテーブルになるように機能する。
新しいコンテンツテーブルは、当初はスナップショットコンテンツテーブルと同じ情報を含むように生成されるが、データベースへの変更は、新しいコンテンツテーブルによってのみ参照される新しいブロックを生成することによりなされる。本実施形態において、各スナップショットに対していかなる数のコンテンツテーブルを生成することも可能である。マルチサーバデータベースシステムにおける全てのサーバについて前記データベースのスナップショットの一貫性を保つために、スナップショットは、最初のサーバのコンテンツテーブルのスナップショットから最後のサーバのコンテンツテーブルのスナップショットが完了するまでの間に干渉となるブロックデータの書き込みを行うことなく実質的に全てのサーバにおいて実行される。
【0016】
幾つかの実施形態において、多数のコンテンツテーブルを用いてデータベースのスナップショットが取得される。この多数のコンテンツテーブルを構成する各コンテンツテーブルには、各データブロックの大きさ、ブロックのストレージアドレス及びブロックの他の属性が含まれる。この実施形態において、SQLコミット等のデータベーストランザクションは、新しいブロックの大きさを含む追加的なコンテンツテーブルを書き込むことによって実行される。古いコンテンツテーブルは、コミットされたトランザクションによる書き込みの前に存在していたブロックの大きさを含むため、コミット前のデータベースの状態を参照する。新しいコンテンツテーブルは、トランザクションによって生成されたブロックを含み、そのトランザクションによって放棄されたブロックを除外する。本実施形態において、ESSへのスナップショットは、最初のサーバのコンテンツテーブルの生成開始から最後のサーバのコンテンツテーブルの生成完了までの間の短い期間を除いて、データベース処理の間いつでも実行可能である。
【0017】
本発明の上記及び上記以外の目的、特徴、及び性質、並びに構造の関連要素の動作方法及び機能、そして各部分と製造経済性との組み合わせにについては、添付図面を参照しつつ以下の詳細な説明と添付の特許請求の範囲を検討することによってさらに明らかになる。ここで、同様の参照符号は種々の図における対応する部分を表している。添付図面は例示及び説明のためのものであり、本発明の発明特定事項の定義として用いることは意図されていない。本明細書及び特許請求の範囲における用法によれば、単数形の"a", "an"及び"the"には複数のものへの言及が含まれる。ただし、文脈によってそうでないことが明白である場合はこの限りでない。
【発明を実施するための形態】
【0024】
本出願は、2008年5月16日に出願された米国特許出願第12/122,579号(発明の名称「ストレージ性能の最適化」)に基づく優先権を主張し、その内容は参照により全体として本明細書に組み込まれる。
【0025】
図1は、本発明の一又は複数の実施形態に係るデータベースを提供するように構成されたシステム10を示す。システム10は、データベースでクエリを処理する際にシステム10全体のデータスループットを向上させることによって、データベースへのアクセスを向上させることができる。システム10は、少なくとも一部が混合ストレージ構成を経由するデータベースのセキュリティ、FR、DR、及び/又はこれら以外の側面の一又は複数における向上を提供することができる。
図1に示されるように、幾つかの実施形態において、システム10は、クライアント12、ESS14、一又は複数のサーバ16、サーバ16の1つに個別に対応するローカルストレージ18等の要素の一又は複数を含むことができる。
【0026】
クライアント12は、サーバ16に動作可能に接続され、サーバ16に送信されるデータベースクエリを生成することができる。クエリの結果(サーバでの処理によって生成される)は、配列処理及び表示処理クエリを送信したクライアント16に返される。幾つかの実施形態において、クライアント12は、コンピュータプラットフォーム上で提供される。コンピュータプラットフォームは、例えば、デスクトップコンピュータ、ラップトップコンピュータ、携帯コンピュータ、携帯電話、パーソナルデジタルアシスタンス及び/又はこれら以外のコンピュータプラットフォームである。クライアント12は、ユーザがデータベースと対話するためのインタフェースを提供することができる。
【0027】
ESS14は、データベースのコピー全体を保持することができる外部接続ストレージシステムを含むことができる。例えば、幾つかの実施形態において、ESS14はSANを含むことができる。ESS14に保持されるデータベースのコピーは、リアルタイム又はほぼリアルタイムで最新の状態に更新される。したがって、ESS14によって保持されるデータベースのコピーは、個別のサーバ16のローカルストレージ18に格納されるデータベースの一部分について、FR又はDRのための完全な参照コピーとして用いることができる。ESS14によって保持されたデータベースのコピーは継続的に(又は実質的に継続的に)最新の状態に更新されるので、データベースの「スナップショット」は、データベースを確実に静止させるためにESS14をサーバ16から隔離することなくデータイメージングモジュール20によって取得される。ESS14は集中化されているので、データベースのコピーは、例えば標準的な複製ポリシーや分散化ポリシーによって、相対的に高いセキュリティ及び/又は高い可用性を有する状態でESS14に保持される。幾つかの実施形態において、ESS14は保持しているデータを整理することができる。以下に述べるような態様でサーバ16によってより頻繁にアクセスされるデータ(例えば、ローカルストレージに格納されないデータブロック)は、サーバ16からより少ない頻度で要求されるデータよりも効率よくアクセス(例えば、順次読み出しアクセス)できるように構成される。幾つかの実施形態において、ESS14に保持されるデータベースのコピーは、サーバ16がクエリを処理するためにデータベース内のデータへのアクセスを提供するだけではなく、FR及び/又はDRのために、サーバ16のローカルストレージ18に格納されたデータベースの一部分のバックアップコピーを提供することもできる。したがって、ESS14によって保持されるデータベースコピーに対するデータをコミットすることで、当該データ及び当該データのバックアップへのコミットが単一の操作で実行される。
【0028】
上述のように、データイメージングモジュール20はデータベースのスナップショットを取得するように動作する。スナップショットは、データベースのデータイメージを含むことができる。このデータイメージは、データベースを将来その最新状態に復帰させるために用いられる。データイメージングモジュール20は、一又は複数のパラメータを監視し、スナップショットを取得可能か否か決定することができる。幾つかの実施形態において、一又は複数のパラメータは、時間、クエリ要求がなされているデータベースで実行される処理の数、データベース内で追加、削除及び/又は更新された情報の量及び/又はこれら以外の以前のスナップショットの廃用化に関連するパラメータの1つ又は複数を含むことができる。例えば、このパラメータとして時間が用いられる場合には、データイメージングモジュールは、以前のスナップショットから経過した時間が所定の閾値を超えたか否かを判断することができる。この所定の閾値は(例えば、システム管理者によって)設定可能であってもよい。
【0029】
このパラメータ(例えば、以前のスナップショットからの時間)の閾値が超えられた場合には、データイメージングモジュール20は、スナップショットが実行可能か判断するためにデータベースを監視する。スナップショットが実行可能か否かを決定することは、いずれかのクエリが実際にデータベースで実行されているか否かを決定すること、及び/又は実行されているクエリのいずれかがESS14に格納されたデータベースのコピーにおける持続的データを更新するか否かを決定することを含むことができる。スナップショットが実行可能であると決定された場合には、データイメージングモジュール20は、ESS14をシステム10の残りの部分から手動で隔離することなく、ESS14のスナップショットを取得することができる。これにより、スナップショットは、適当な時間間隔で継続的な処理がなされている間(例えば、データを更新するクエリが実行されていないとき)にデータイメージングモジュール20によって取得されるので、データベースを手動でクエリから隔離し一時的なデータストレージを更新してスナップショットを取得するために画像化しなければならないシステムについて、スナップショットの取得を向上させることができる。
【0030】
幾つかの実施形態において、データベースのブロックリストの複数のコンテンツテーブルを維持することによって、データベースのスナップショットが取得される。コンテンツテーブルは、データブロックのストレージアドレス及びブロックの他の属性を含むことができる。コンテンツテーブルはスナップショットが要求されたときに最新のコンテンツテーブルが保存され、スナップショットのコンテンツテーブルになるように機能する。新しいコンテンツテーブルは、スナップショットのコンテンツテーブルと同じ情報を含むように当初生成されるが、新しいコンテンツテーブルによってのみ参照される新しいブロックを生成することによってデータベースへの変更がなされる。このような実施形態において、スナップショットごとにコンテンツテーブルは幾つ作られてもよい。システム10のサーバ16全体を通してデータベースのスナップショットの一貫性を保つために、スナップショットは、第1のサーバのコンテンツテーブルのスナップショットから最後のサーバのコンテンツテーブルのスナップショットが完了するまでの間に干渉となるブロックデータの書き込みを行うことなく、実質的に全てのサーバ16において実行される。
【0031】
幾つかの実施形態において、多数のコンテンツテーブルを用いてデータベースのスナップショットが取得される。多数のコンテンツテーブルを構成する各コンテンツテーブルには、各データブロックの大きさ、ブロックのストレージアドレス及びブロックの他の属性が含まれる。この実施形態において、SQLコミット等のデータベーストランザクションは、新しいブロックの大きさを含む追加的なコンテンツテーブルを書き込むことによって実行される。古いコンテンツテーブルは、コミットされたトランザクションによる書き込みの前に存在していたブロックの大きさを含むため、コミット前のデータベースの状態を参照する。新しいコンテンツテーブルは、トランザクションによって生成されたブロックを含み、そのトランザクションによって放棄されたブロックを除外する。本実施形態において、ESSのスナップショットは、最初のサーバのコンテンツテーブルの生成開始から最後のサーバのコンテンツテーブルの生成完了までの間の短い期間を除いて、データベース処理の間いつでも実行可能である。
【0032】
サーバ16は、処理ノードのネットワークを提供する。このネットワークにおいては、サーバ16の一又は複数がクライアント12と通信を行ってクエリを取得し、及び/又はクライアント12における処理のためにデータを送信する主ノードとして機能する。主ノードは、主ノードによって取得されたクエリを処理する計算用ノードとして動作する他のサーバ16の一又は複数を管理する。
【0033】
サーバ16の1つに個別に対応するローカルストレージ18は、ESS14に含まれるデータベースのコピーの一部分を格納する。個別のローカルストレージ18のアーキテクチャ及び/又は設定は、システム10によって指定されるものではない。例えば、個別のローカルストレージ18は異なる種類のストレージ装置によって提供され、当該ストレージ装置は異なる設定を持つことができる。幾つかの実施形態において、他のアプリケーションや本明細書において説明されるシステムのためのストレージを提供するために、所定のローカルストレージ18を区画化することができる。例えば、所定のローカルストレージ18は、ローカルでの実行とディスクフェイルオーバーのためにRAID5を用いることができ、ローカルでの冗長性等のためにRAID1を用いることができる。
【0034】
システム10のアーキテクチャ及び/又は機能は、サーバ16及び対応するローカルストレージ18のそれぞれを自律的な(又は半自律的な)ユニットとして機能させることができる。例えば、ローカルストレージ18にデータベースの一部分を蓄積する様々な態様は、例えばESS14上に又はESS14とともに提供される集中化されたマネージャによって整理又は管理される必要がなく、サーバ16によって実現される。
【0035】
図2は、本発明の一又は複数の実施形態に係るシステム10におけるサーバ16及びローカルストレージ18の構成を
図1よりも詳しく示す。
図2に示されるように、サーバ16は、データベースエンジン22、分散データマネージャー24、I/Oシステム26、及び/又はこれら以外の要素の一又は複数を含むことができる。これらの要素の一又は複数は、一又は複数のプロセッサで実行されるモジュールによって提供される。プロセッサは、中央演算ユニット、デジタル回路、アナログ回路、ステートマシーン、フィールドプログラマブルゲートアレイ、及び/又はこれら以外のプロセッサの一又は複数を含むことができる。データベースエンジン22、分散データマネージャー24、及び/又はI/Oシステム26の一又は複数は、ハードウェア、ソフトウェア、ファームウェア及び/又はハードウェア、ソフトウェア及び/又はファームウェアの組み合わせにおいて実現される。
【0036】
幾つかの実施形態において、データベースエンジン22は、クライアント12との通信(例えば、クエリの受信、結果の出力等)を管理し、データソースからデータベースに書き込むためのデータを受信し、データベースに含まれるデータの削除及び/又は更新を受信し、クライアント12から受信したクエリを管理し、クライアント12からのクエリに従って当該データを処理するためにデータベースからデータを取得し、クライアント12から受信したクエリに従ってデータベースからのデータを処理し、及び/又はデータベースに関するこれら以外のタスクを実行することができるアプリケーションを含んでいてもよい。
【0037】
様々な実施形態において、分散データマネージャー24は、ローカルストレージ18とESS14との間のデータベースの並列ストレージがデータベースエンジン22にとって透過的であるように、データベースエンジン22とデータベースとの間のトランザクションを管理する。換言すれば、データベースエンジン22(例えば、LUN、ブロックフォーマット、ブロックレイアウト、ファイルシステム、RAWデバイス等)の観点からは、ローカルストレージ18及びESS14に格納されているデータのいずれについても、データベース内のデータ表現の論理的ビューを同じにすることができる。したがって、ローカルストレージ18及び/又はESS14内でデータが格納されている物理的な場所に関する情報は、分散データマネージャー24によって保持されてもよい。また、データベースエンジン22とデータベースとの間のI/Oシステム26を介するトランザクションは、適切なストレージロケーションから受信され、適切なストレージロケーションに書き込まれることを確実にするため、分散データマネージャー24を通じて送信されるようにしてもよい。
【0038】
データベースエンジン22がデータベースからデータを受信するための要求を生成する場合には、分散データマネージャー24は、この要求を、要求されたデータのローカルストレージ18に格納されている部分とESS14に格納されている部分とに割り振ることができる。これにより、当該データの個別の部分がローカルストレージ18及びESS14から並列に読み出され、I/O性能及びスループットを向上させることができる。ローカルストレージ及びESS14から読み出されるデータ部分の割合は、それぞれ(1)サーバ16とローカルストレージ18との間のデータスループット及び(2)ESS14とサーバ16との間のデータスループットの関数であってもよい。幾つかの実施形態において、別個のソースから読み出されるデータ部分の割合は、ローカルストレージ18からのデータの読み出しとESS14からのデータの読み出しとがほぼ同時に完了するという目的に合致するように決定される。例えば、ローカルストレージ18とサーバ16との間の全体のデータスループットが800MB/sとなるとともにESS14とサーバ16との間のスループットが400MB/sとなる構成においては、分散データマネージャー24は、データベースからデータを取得する要求を、要求されたデータの3分の2をローカルストレージから取得する要求と、要求されたデータの3分の1をESS14から取得する要求とに割り振ることができる。
【0039】
データベースエンジン22が要求を処理することによって中間データを生成する場合には、分散データマネージャー24は、ESS14及び/又はローカルストレージ18の一方又は双方への中間データのストレージを管理することができる。ESS14、ローカルストレージ18、又はESS14とローカルストレージ18との両方のいずれに中間データを書き込むかという点(及びESS14及びローカルストレージ18のそれぞれに書き込まれる割合)についての判断は、ESS14及び/又はローカルストレージ18の容量、利用率、スループット及び/又はこれら以外のパラメータに基づく。
【0040】
幾つかの実施形態において、分散データマネージャー24は、ローカルストレージ18に書き込まれたデータベースの一部分を制御することができる。この一部分に含まれるデータベースの割合は、以下の要素の一又は複数の関数であってもよい。この要素には、ローカルストレージ18における利用可能なストレージ空間(storage space)(例えば、利用可能なストレージが大きいほどデータベースの大きな部分を受信することができる)、ローカルストレージ18とサーバ16との間のデータスループット(例えば、データがローカルストレージ18からサーバ16に速く読み出されるほど、より大きな割合をローカルストレージ18に保存することができる)、ESS14の利用率(例えば、ESS14の利用率が大きくなるほど、ローカルストレージ18に保存される割合を大きくすることができる)、及び/又はローカルストレージ18への情報の蓄積及び/又はサーバ16とローカルストレージ18との間の情報の通信に影響を与えるこれら以外のパラメータが含まれる。例えば、ローカルストレージ18とサーバ16との間のスループットがESS14とサーバ16との間のスループットの2倍速い場合(上述した例示的な構成の場合)には、分散データマネージャー24はデータベースの3分の2をローカルストレージ18に保存することができる。もちろん、この配分は一又は複数の他のパラメータ(例えば、本段落で列挙されたもの)によって影響を受けることがある。
【0041】
分散データマネージャー24は、データベース内のどのデータがローカルストレージ18に格納されるデータベースの一部分に含められるかを制御することができる。どのデータがローカルストレージに保存されるべきかという点についての判断は、そのデータに関連するパラメータに基づく。例えば、データが永続的なものか、一時的なものか、中間のものか、及び/又は他のパラメータに基づいて判断がなされる。この判断は、例えば、ESS14及び/又はローカルストレージ18の容量、利用率、スループット及び/又はこれら以外のパラメータ等の一又は複数のシステムパラメータに関連づけられてもよい。
【0042】
分散データマネージャー24は、データベースからのデータが物理的にローカルストレージ18に保存される方法を制御することができる。例えば、分散データマネージャー24は、例えば読み出しを容易にするために、データがローカルストレージ18を形成するディスクの外側のトラックに保存されるようにすることができる。幾つかの実施形態において、分散データマネージャーは、データベースからのデータがローカルストレージ18を形成するディスクの間でバランスよく配置されるようにし、「ホットスポット」及び/又はこれ以外のバランスを欠いたストレージによる不利な影響を緩和することができる。
【0043】
一実施形態においては、分散データマネージャー24は、ローカルストレージ18に保存されるデータベースの一部分に含められるべきデータ量に影響を与える一又は複数のシステムパラメータの定期的な監査を実行することができる。これらのシステムパラメータは、サーバ16とローカルストレージ18との間のデータスループット、サーバ16とESS14との間のデータスループット、ESS14の利用率、ローカルストレージ18の利用率、ローカルストレージ18におけるストレージロケーション及び/又はこれら以外のシステムパラメータのうち一つ又は複数を含むことができる。分散データマネージャー24は、この監査を実行すると、ローカルストレージ18とESS14との間でデータを移動させ、及び/又は、監査されたシステムパラメータにおける変化を相殺するために、ローカルストレージ18における物理的なデータのストレージを移転させる(例えば、サーバ16とローカルストレージ18との間のスループットが減少する場合には、ローカルストレージに格納されるデータベースの部分は減少する)。
【0044】
データが例えば外部データソースやクライアント12等を介してシステム10に入力される場合には、分散データマネージャー24はそのデータをデータベースに書き込んで、ESS14及び/又はローカルストレージ18に適切に格納されるようにする。分散データマネージャー24は、データを受信すると、受信したデータをブロックにまとめる。データのブロックは、ローカルストレージ18に割り当てられる物理ストレージの最小単位を形成する。一例として、データのブロックは、データベースの列の値、データベースの行の値及び/又はこれら以外のデータベースのデータのブロックを含んでもよい。データのブロックはデータベースのデータをそのまま又は圧縮して保持する。このブロックは、分散データマネージャー24によって、I/Oシステム26を介してESS14へ送られ、データベースに書き込まれる。分散データマネージャー24は、ローカルストレージ18のデータベースの割合を適切に維持するため、新しいブロックの一部分又は全部を、ローカルストレージ18に格納されたデータベースの部分に含める否か判断し、適当なブロックをI/Oシステム26を介してローカルストレージ18に送ることができる。
【0045】
同様に、例えば外部データソースやクライアント12等を介してデータがシステム10から削除され及び/又はシステム10において更新された場合には、分散データマネージャー24は、削除され及び/又は更新されたデータをESS14及び/又はローカルストレージ18の適切な位置に割り振ることができる。また、分散データマネージャー24は、ローカルストレージ18に格納されるデータベースの部分とデータベース全体との間の適切な割合を維持するために、削除及び/又は更新によるデータの変更によってローカルストレージ18に格納されたデータベースの部分を調整する必要が生じたか否かを判断することができる。
【0046】
また、上述の内容から明らかなように、システム10の各サーバ16はそれぞれ分散データマネージャー24を含む。この分散データマネージャー24は、ローカルストレージ18におけるデータのストレージを管理し、データベースのデータにアクセスし、データベースの削除及び/又は更新を行い、及び/又はデータベースに関連するこれら以外のタスクを自律的な(又は半自律的な)方法で実行することができる。また、クライアント12からのクエリに従ったデータベースの処理は複数のサーバ16が協調して実行することができるが、各サーバは、必要な処理の独自のサブセットを自律的に(又は半自律的に)管理することができる。これにより、個別のサーバ16の動作が集中化された管理プロセッサに依存せず、サーバレベルでのデータベース処理を促進するという点で、SAN等の集中化されたデータベースのストレージを用いる従来のシステムよりも有利な効果を奏することができる。
【0047】
図3は、データを例えば外部データソースからデータベースに読み込む方法28を示す。方法28の処理は、上述の
図1及び
図2に示されたシステム10の要素を参照し以下で説明されるが、これは説明の便宜上に過ぎず、方法28は本開示の範囲から逸脱することなく代替的な要素及び/又はシステムを用いて実現することができる。また、以下で説明される方法28の処理は例示である。幾つかの実施形態において、方法28は一又は複数の本明細書で説明しない追加的な処理とともに実現することができ、本明細書で説明する処理の一又は複数を省略して実現することができる。また、方法28の処理の順序は、
図3及び以下で説明される順序に限定されない。
【0048】
方法28は、外部データソースからデータを受信する処理30を含む。幾つかの実施形態において、処理30は、
図2及び上記で説明されたサーバ16のデータベースエンジン22と類似する又は同一のデータベースサーバのデータベースエンジンによって実行されてもよい。
【0049】
処理32において、処理30において受信されたデータは、データベースにおけるストレージのためにブロックに整理されてもよい。幾つかの実施形態においては、処理30は、
図2及び上記で説明された分散データマネージャー24と類似する又は同一のデータベースサーバの分散データマネージャーによって実行されてもよい。
【0050】
処理34において、処理32において形成されたデータブロックは、ESS(例えば、
図1及び
図2に示され上記で説明されたESS14)に書き込まれてもよい。幾つかの実施形態においては、処理32は分散データマネージャーによって実行されてもよい。
【0051】
処理36において、新たに追加されたデータのいずれかがデータベースサーバにローカル保存されるべきか否かが判断される。この判断は、サーバのローカルストレージ(例えば、
図1及び
図2に示され及び上記で説明されたローカルストレージ18)におけるデータベースの部分がデータベース全体に対して所定の割合を維持することができるようになされる。データベースサーバの分散データマネージャーは、分散データマネージャー24(
図2に示されている)に関連して上記で説明された一又は複数のパラメータに基づいてこの判断を行うことができる。
【0052】
処理38においては、新たに追加されたデータの一部分(もしあれば)が、サーバのローカルストレージに書き込まれる。処理38は、分散データマネージャーによって実行されることができる。
【0053】
図4は、データベースにおいてクエリを受信し実行する方法40を示す。方法40の処理は、上記で説明され
図1及び
図2に示されたシステム10の要素を参照し以下で説明されるが、これは説明の便宜上に過ぎず、方法40は本開示の範囲から逸脱することなく代替的な要素及び/又はシステムを用いて実現することができる。また、以下で説明される方法40の処理は例示である。幾つかの実施形態において、方法40は、本明細書で説明しない一又は複数の追加的な処理とともに実現することができ、本明細書で説明する処理の一又は複数を省略して実現することができる。また、方法40の処理の順序は、
図4及び以下で説明される順序に限定されない。
【0054】
処理42において、クエリが受信される。このクエリは、
図1及び
図2に示され上記で説明されたクライアント12等のデータベースクライアントから受信される。幾つかの実施形態において、処理42は、
図1及び
図2に示され及び上記で説明されたサーバ16のデータベースエンジン22と類似する又は同一のデータベースサーバのデータベースエンジンによって実行されてもよい。
【0055】
処理44においては、処理42において受信されたクエリを処理するためにデータベースのデータを検索するか否かが判断され、当該データに対する要求が生成される。本発明の幾つかの実施形態において、処理44は、データベースエンジンによって実行されてもよい。
【0056】
処理46においては、要求されたデータの独立した部分を、ESS(例えば、
図1及び
図2に示され上記で説明されたESS14)及びサーバのローカルストレージ(例えば、
図1及び
図2に示され上記で説明されたローカルストレージ18)から並列に検索するために、処理44で生成された要求が解釈される。要求されたデータの部分は、両方の検索がほぼ同じ時間で実行されるように、ESS及びローカルストレージのサーバに対する相対的なスループットに基づいて判断される。幾つかの実施形態において、処理46は、
図2に示され上記で説明された分散データマネージャー24と類似する又は同一のサーバの分散データマネージャーによって実行されてもよい。
【0057】
処理48においては、処理46において決定されたデータの独立の部分がデータベースサーバによって受信され、処理50においては、受信されたデータが処理42で受信されたクエリに従って処理される。幾つかの実施形態において、受信したデータの処理は中間データの実体化を含む。この中間データは、ユーザ設定可能な設定に基づいて、ローカルストレージ及び/又はESSに格納される。幾つかの実施形態において、ユーザ設定可能な設定は、容量、利用率、スループット平衡化、及び/又はストレージ平衡化等の一又は複数の基準に基づく。幾つかの実施形態において、処理50におけるデータの処理はデータベースエンジンによって実行され、中間データのストレージ及び/又は検索は分散データマネージャーによって管理される。
【0058】
処理52においては、処理50において実行された処理の結果がクエリを送信したクライアントに返される。幾つかの実施形態においては、処理52はデータベースエンジンによって実行される。
【0059】
図5は、データベースにおけるデータを削除及び/又は更新する方法54を示す。方法54の処理は、上記で説明され
図1及び
図2に示されたシステム10の要素を参照して以下で説明されるが、これは説明の便宜上に過ぎず、方法54は本開示の範囲から逸脱することなく代替的な要素及び/又はシステムを用いて実現することができる。また、以下で説明される方法54の処理は例示である。幾つかの実施形態において、方法54は、一又は複数の本明細書で説明しない追加的な処理とともに実現することができ、本明細書で説明する処理の一又は複数を省略して実現することができる。また、方法54の処理の順序は、
図5及び以下で説明される順序に限定されない。
【0060】
処理56においては、データベースにおけるデータの更新及び/又は削除が受信され、適切なデータを更新及び/又は削除するコマンドが生成される。幾つかの実施形態において、処理56は、
図2及び上記で説明されたデータベースエンジン22と類似する又は同一のデータベースサーバのデータベースエンジンによって実行される。
【0061】
処理58においては、データベースにおけるデータの更新及び/又は削除が、当該データベースを保持するESS(例えば
図1及び
図2に示され上記で説明されたESS14)に格納されている適切なデータに割り振られる。幾つかの実施形態において、このデータは、データベースサーバによってローカルに格納されたデータベースの一部分(例えば、
図1及び
図2に示され上記で説明されたローカルストレージ18内)に保持される。この例において、更新及び/又は削除はローカルストレージ内の適切なデータに割り振られる。幾つかの実施形態において、処理58は、
図2に示され上記で説明された分散データマネージャー24と類似する又は同一の分散データマネージャーによって実行されてもよい。
【0062】
処理60においては、ESSに格納された適切なデータが更新され及び/又は削除され、処理62において、ローカルサーバに格納されている適切なデータが更新され及び/又は削除され、処理63において、処理60及び62によって実行されたデータの更新及び/又は削除を反映させるためにローカルストレージに格納されたデータベースの部分のデータベース全体に対する割合が調整される。幾つかの実施形態において、処理63は、ローカルストレージに格納されるデータベースの部分とデータベース全体との適切なバランスを維持するために、分散データマネージャー24に関連して既に説明した方法で、分散データマネージャーによって実行される。
【0063】
図6は、データベースを更新し及び/又は静止データベースを意図的に作り出すために、データベースをクエリから手動で隔離することなくデータベースのスナップショットを取得する方法64を示す。方法64の処理は、上記で説明され
図1及び
図2に示されたシステム10の要素を参照して以下で説明されるが、これは説明の便宜上に過ぎず、方法64は本開示の範囲から逸脱することなく代替的な要素及び/又はシステムを用いて実現することができる。また、以下で説明される方法64の処理は例示である。幾つかの実施形態において、方法64は、一又は複数の本明細書で説明しない追加的な処理とともに実現することができ、本明細書で説明する処理の一又は複数を省略して実現することができる。また、方法64の処理の順序は、
図6及び以下で説明される順序に限定されない。
【0064】
処理66においては、以前のスナップショットの廃用化に関連する一又は複数のパラメータの閾値が決定される。この閾値は、ユーザ設定、システムパラメータ、ハードコードされた(例えば永続的な)閾値及び/又はこれら以外の方法で定められるものの一又は複数に基づいて決定される。幾つかの実施形態において、処理66は、
図1に示され上記で説明されたデータイメージングモジュール20と類似する又は同一のデータイメージングモジュールによって決定されてもよい。
【0065】
処理68においては、以前のスナップショットの廃用化に関連する一又は複数のパラメータが監視される。幾つかの実施形態において、処理68は、データイメージングモジュールによって実行されてもよい。
【0066】
処理70においては、一又は複数の監視されたパラメータが閾値を超えたか否かについての判断がなされる。幾つかの実施形態において、処理70は、データイメージングモジュールによって実行されてもよい。一又は複数のパラメータが閾値を超えていない場合には、方法64は処理68に戻る。一又は複数のパラメータが閾値を超えている場合には、方法64は処理72に進む。
【0067】
処理72においては、スナップショットを取得するか否かについて判断がなされる。処理72における判断は、例えば、いずれかのクエリが現時点でデータベースにおいて処理されているか否かについての判断、実行されているクエリのいずれかがデータベースにおける永続的なデータを更新するものであるか否かについての判断、及び/又はデータベースがスナップショットを行うために十分に静止しているか否かに関連するこれら以外の判断を含む。幾つかの実施形態において、処理72は、データイメージングモジュールによって実行されてもよい。
【0068】
処理74においては、データベースのスナップショットが取得される。スナップショットは、データベースを将来においてその最新状態に回復するために用いることができるデータベースのイメージを含むことができる。幾つかの実施形態において、処理74は、データイメージングモジュールによって実行される。
【0069】
現時点で最も実用的であり好ましいと考えられる態様に基づいて、本発明を例示のために詳細に説明したが、このような詳細な説明は例示のみを目的としたものである。本発明は開示された実施形態に限定されるものではなく、むしろ添付された特許請求の範囲の趣旨及び範囲に入る変形や均等な配置も本発明に含められることが意図されている。例えば、本発明においては、あらゆる実施形態の一又は複数の特徴を他の実施形態の一又は複数の特徴と可能な限り結合することができる。