(57)【特許請求の範囲】
【請求項１】
仮想データベースシステムを巻き戻すための、コンピュータに実装可能な方法であって、
或るソースデータベースの複数のスナップショットをデータベース記憶システムに記憶することであって、１つのスナップショットは、前記ソースデータベースの複数のデータベースブロックの或る時点のコピーを表しており、１又は複数の前記データベースブロックが、前記ソースデータベースの複数のスナップショットにわたり共有されることと、
前記ソースデータベースの１つのスナップショットの複数のデータベースブロックに基づき仮想データベースを提供することと、
前記データベース記憶システムにより、前記仮想データベースのための１又は複数のタイムフローを維持することであって、各タイムフローは該仮想データベースの或る初期状態からの該仮想データベースに対する変更を表し、前記変更の表現は異なる時点で取得された前記仮想データベースの複数のスナップショットを含み、１又は複数の前記データベースブロックが、前記仮想データベースの複数のスナップショットにわたり共有されるものであることと、
前記仮想データベースを該仮想データベースの過去の状態に巻き戻すリクエストを受信することであって、前記リクエストは、該仮想データベースの１タイムフローを特定し、且つ、該特定されたタイムフローに関連付けられた１ターゲット時点を特定するものであることと、
前記タイムフローに関連付けられた仮想データベースの１つのスナップショットの複数のデータベースブロックを参照するように、該仮想データベースを変更することにより該仮想データベースを巻き戻すことであって、前記仮想データベースの前記１つのスナップショットは、前記ターゲット時点またはそれ以前に保存されたものであることと、
前記巻き戻された仮想データベースのための新たなタイムフローを維持することであって、前記新たなタイムフローは、該巻き戻された仮想データベースに対するその後の更新により生じた変更の表現を含むものであることと
を備える方法。
【請求項２】
前記過去の状態は第１の状態であり、変更するための前記リクエストは、変更するための第１のリクエストであり、前記ターゲットタイムフローは第１のタイムフローであり、前記時点は第１の時点であり、前記仮想データベースのスナップショットは第１のスナップショットであり、
前記方法は、更に、
前記仮想データベースを第２の状態へ更に巻き戻す第２のリクエストを受信することであって、前記第２の状態は、該仮想データベースの第２のタイムフローの第２のターゲット時点に関連付けられたものと、
前記第２のタイムフローに関連付けられた仮想データベースの１つの第２のスナップショットの複数のデータベースブロックを参照するように、該仮想データベースを変更することにより該仮想データベースを再び巻き戻すことであって、前記第２のスナップショットは、前記第２のターゲット時点またはそれ以前に保存されたものと
を備える請求項１に記載の方法。
【請求項３】
更に、
前記仮想データベースの巻き戻し前に、該仮想データベースに関連付けられたプロセスをシャットダウンするリクエストを送信することと、
前記仮想データベースの巻き戻し後に、前記プロセスを再開するリクエストを送信すること
を備える請求項１に記載の方法。
【請求項４】
前記仮想データベースのタイムフローは、第１のスナップショット及び第２のスナップショットを含み、前記第１のスナップショットが保存された時点と前記第２のスナップショットが保存された時点との間でデータベースブロックが変更されていない場合は、前記第２のスナップショットが、前記第１のスナップショットと該データベースブロックを共有するものである請求項１に記載の方法。
【請求項５】
前記仮想データベースの現在のタイムフローにおける最新のスナップショットのデータベースブロックのデータを更新するリクエストを受信すること、
前記データを更新する前記リクエストの受信に応じて、前記データベースブロックのコピーを作成し、該データベースブロックの該コピーを更新すること
を更に備える請求項１に記載の方法。
【請求項６】
前記タイムフローの変更の表現は、２つのスナップショット間での前記仮想データベースに対する更新を表すトランザクションログを含み、
前記方法は、更に、
前記仮想データベースの前記スナップショットの複数のデータベースブロックを参照するように、該仮想データベースを変更することに応じて、前記ターゲット時点に対応するように該変更された仮想データベースの前記状態を更新するために、該変更された仮想データベースに対して１又は複数の前記トランザクションログを適用すること
を備える請求項１に記載の方法。
【請求項７】
前記仮想データベースの過去の状態に該仮想データベースを巻き戻す前記リクエストは、該仮想データベースにより行われた更新のシステム変更番号を特定することにより、前記過去の状態を識別するものであり、該更新は前記特定されたタイムフローに関連付けられたものである請求項１に記載の方法。
【請求項８】
前記仮想データベースの過去の状態に該仮想データベースを巻き戻す前記リクエストは、該仮想データベースの前記特定されたタイムフローに関連付けられた或る時刻値を特定することにより、前記過去の状態を識別するものである請求項１に記載の方法。
【請求項９】
前記仮想データベースは複数のタイムフローに関連付けられており、前記仮想データベースの過去の状態に該仮想データベースの状態を変更するための前記リクエストを受信することは、前記複数のタイムフローのうち１つのタイムフローを特定する請求項１に記載の方法。
【請求項１０】
前記仮想データベースの１又は複数のデータベースブロックは、前記データベース記憶システムにより提供される１又は複数の別の仮想データベースと共有される請求項１に記載の方法。
【請求項１１】
仮想データベースシステムをソースデータベースシステムの状態にリフレッシュするための、コンピュータに実装可能な方法であって、
或るソースデータベースのための１又は複数のタイムフローを、データベース記憶システムにより維持することであって、各タイムフローは前記ソースデータベースの或る初期状態からの該ソースデータベースに対する変更の表現を含み、該表現は異なる時点で取得された前記ソースデータベースのスナップショットを含み、１又は複数のデータベースブロックが前記ソースデータベースの複数のスナップショットで共有されるものであることと、
前記ソースデータベースの１つのスナップショットの複数のデータベースブロックに基づき１つの仮想データベースを、データベース記憶システムにより、提供することと、
前記データベース記憶システムにより、前記仮想データベースのための１又は複数のタイムフローを維持することであって、各タイムフローは該仮想データベースの或る初期状態からの該仮想データベースに対する変更の複数の表現を含み、前記変更の複数の表現は異なる時点で取得された前記仮想データベースの複数のスナップショットを含み、１又は複数の前記データベースブロックが、前記仮想データベースの複数のスナップショットで共有されるものであることと、
前記ソースデータベースの状態に前記仮想データベースをリフレッシュするリクエストを受信することであって、前記リクエストは、該ソースデータベースのタイムフロー及び前記タイムフローのターゲット時点を特定するものであることと、
前記仮想データベースをリフレッシュすることであって、前記タイムフローに関連付けられた前記ソースデータベースの１つのスナップショットの複数のデータベースブロックを参照するように該仮想データベースを変更することを含み、該スナップショットは、前記ターゲット時点またはそれ以前に保存されたものであることと、
前記リフレッシュされた仮想データベースのための新たなタイムフローを維持することであって、該新たなタイムフローは、前記リフレッシュされた仮想データベースに対するその後の更新により生じた変更の表現を含むものであることと
を備える方法。
【請求項１２】
前記仮想データベースのリフレッシュ前に、該仮想データベースに関連付けられたプロセスをシャットダウンするリクエストを送信することと、
前記仮想データベースのリフレッシュ後に、前記プロセスを再開するリクエストを送信すること
を更に備える請求項１１に記載の方法。
【請求項１３】
前記仮想データベースのタイムフローは、第１のスナップショット及び第２のスナップショットを含み、前記第１のスナップショットが保存された時点及び前記第２のスナップショットが保存された時点の間にデータベースブロックが変更されていない場合は、前記第２のスナップショットが、前記第１のスナップショットと該データベースブロックを共有するものである請求項１１に記載の方法。
【請求項１４】
前記仮想データベースの現在のタイムフローにおける最新のスナップショットのデータベースブロックのデータを更新するリクエストを受信すること、
前記データを更新する前記リクエストの受信に応じて、前記データベースブロックのコピーを作成し、該データベースブロックの該コピーを更新すること
を更に備える請求項１１に記載の方法。
【請求項１５】
前記タイムフローの変更の表現は、２つのスナップショット間での前記仮想データベースに対する更新を表すトランザクションログを含み、
前記方法は、更に、
前記仮想データベースの前記スナップショットの複数のデータベースブロックを参照するように該仮想データベースを変更することに応じて、前記ターゲット時点に対応するように該変更された仮想データベースの前記状態を更新するために、該変更された仮想データベースに対して１又は複数の前記トランザクションログを適用すること
を備える請求項１１に記載の方法。
【請求項１６】
前記仮想データベースをリフレッシュする前記リクエストは、前記ソースデータベースにより行われた更新のシステム変更番号を特定することにより、該ソースデータベースの前記状態を識別するものであり、該更新は前記特定されたタイムフローに関連付けられたものである請求項１１に記載の方法。
【請求項１７】
前記仮想データベースをリフレッシュする前記リクエストは、前記ソースデータベースの前記特定されたタイムフローに関連付けられた或る時刻値を特定することにより、該ソースデータベースの前記状態を識別するものである請求項１１に記載の方法。
【請求項１８】
前記ソースデータベースは複数のタイムフローに関連付けられた仮想データベースであり、前記仮想データベースをリフレッシュする前記リクエストを受信することは、前記複数のタイムフローのうち１つのタイムフローを特定する請求項１１に記載の方法。
【請求項１９】
前記ソースデータベースは、前記ソースデータベースシステムとは異なる外部のシステム内に記憶されたプロダクションデータベースである請求項１１に記載の方法。
【請求項２０】
コンピュータに、
或るソースデータベースの複数のスナップショットをデータベース記憶システムに記憶することであって、１つのスナップショットは、前記ソースデータベースの複数のデータベースブロックの或る時点のコピーを表しており、１又は複数の前記データベースブロックが、前記ソースデータベースの複数のスナップショットにわたり共有されるものであることと、
前記ソースデータベースの１つのスナップショットの複数のデータベースブロックに基づき仮想データベースを提供するステップと、
前記データベース記憶システムにより、前記仮想データベースのための１又は複数のタイムフローを維持することであって、各タイムフローは該仮想データベースの或る初期状態からの該仮想データベースに対する変更を表し、前記変更の表現は異なる時点で取得された前記仮想データベースの複数のスナップショットを含み、１又は複数の前記データベースブロックが、前記仮想データベースの複数のスナップショットにわたり共有されるものであることと、
前記仮想データベースを該仮想データベースの過去の状態に巻き戻すリクエストを受信することであって、前記リクエストは、該仮想データベースの１タイムフローを特定し、且つ、該特定されたタイムフローに関連付けられた１ターゲット時点を特定するものであることと、
前記タイムフローに関連付けられた仮想データベースの１つのスナップショットの複数のデータベースブロックを参照するように、該仮想データベースを変更することにより該仮想データベースを巻き戻すことであって、前記仮想データベースの前記１つのスナップショットは、前記ターゲット時点またはそれ以前に保存されたものであることと、
前記巻き戻された仮想データベースのための新たなタイムフローを維持することであって、前記新たなタイムフローは、該巻き戻された仮想データベースに対するその後の更新により生じた変更の表現を含むものであることと
を実行させるための命令群を記憶した非一過性のコンピュータ読取可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、概して、データベースに関し、特に、データベースを管理するための、記憶効率の良いシステムに関する。 
【背景技術】
【０００２】
データベースは、或る組織にとって重要なデータを記憶し、そのため、組織の情報技術インフラストラクチュアーの重要な部分を形成する。データベースソフトウェアは、しばしば、複雑であり、例えば、そのデータベースソフトウェアを管理するためのデータベース管理者など、専門家を必要とする。更に、データベースは大量の情報を記憶する。その結果、各種データベース動作を行うための従来技術は、とても動作速度が遅かった。例えば、開発及び試験のために、開発者及び／又は試験者は、或る時点で実在したままの、或るデータベースのコピーを必要とする。かかるデータベースを提供することは、その時点でデータベースのバックアップが適切にとられている場合にのみ可能となる。適切なバックアップがとられたものと仮定すると、データベース管理者は、しばしば、要求された状態にデータベースを修復するために、適切な対策を講じることを要求される。更に、修復動作は長時間かかる。データベース管理者との相互作用及びデータベース修復における全体的な遅延は、大きな影響を与え得る。その結果として、開発者及び／又は試験者は、適切なデータベース試験／開発が利用できるようになるまで待たなければ成らなかった。更に。開発及び試験過程における遅延は、問題解決に更なる遅延を引き起こし、生産性の損失をもたらす。その結果、特定の状態に対応するデータベースのコピーを提供するための従来技術は、しばしば、不適当だった。
【発明の概要】
【０００３】
実施形態は、VDBの状態を前記ＶＤＢの別の状態に変更することにより、巻き戻し動作を、仮想データベース（ＶＤＢ）上で実行する。テータベース記憶システムは、ソースデータベースの複数のデータベースブロックについての或る時点のコピー群を示す、１つのソースデータベースに関する複数のスナップショットを記憶して、１又は複数のデータベースブロックが複数のスナップショットにわたり共有されるようにする。前記テータベース記憶システムは、前記ソースデータベースの１つのスナップショットの複数のデータベースブロックに基づく仮想データベースを提供する。前記テータベース記憶システムは、タイムフローが或る初期状態から始まる仮想データベースへの変更の表現を含むように、該仮想データベース用の複数のタイムフローを維持する。仮想データベースへの変更の表現は、１又は複数のデータベースブロックが仮想データベースの複数のスナップショットにわたり共有されるように、異なる時点で取得された仮想データベースの複数のスナップショットを含む。前記テータベース記憶システムは、仮想データベースを該仮想データベースの過去の状態に巻き戻すリクエストを受信する。前記リクエストは、仮想データベースの１つのタイムフローを特定し、また、該特定されたタイムフローに関連付けられた１つのターゲット時点を特定する。前記テータベース記憶システムは、前記タイムフローに関連付けられた前記仮想データベースの１つのスナップショットの複数のデータベースブロックを参照するように該仮想データベースを変更することにより、仮想データベースを巻き戻す。前記テータベース記憶システムは、巻き戻された仮想データベース用の新たな１つのタイムフローを維持する。この新しいタイムフローは、該巻き戻された仮想データベースに対するその後の更新により引き起こされた変化を表す。
【０００４】
複数実施形態は、ＶＤＢの状態を該ＶＤＢに関連付けられたソースデータベースの状態に変更するために、該ＶＤＢにおいてリフレッシュ動作を行う。データベース記憶システムは、ソースデータベース用の複数のタイムフローを維持する。各タイムフローは、前記ソースデータベースの初期状態から始まる、該ソースデータベースへの変更の表現を含む。前記変更の表現は、異なる時点で取得されたソースデータベースの複数のスナップショットを含む。前記テータベース記憶システムは、前記ソースデータベースの１つのスナップショットの複数のデータベースブロックに基づく仮想データベースを供給する。前記テータベース記憶システムは、前記仮想データベース用の複数のタイムフローを維持する。前記テータベース記憶システムは、該ソースデータベースのタイムフロー及び該タイムフローのターゲット時点により特定される該ソースデータベースの状態に該仮想データベースをリフレッシュするリクエストを受信する。前記テータベース記憶システムは、前記特定されたタイムフローに関連付けられたソースデータベースの１つのスナップショットの複数のデータベースブロックを参照するように該仮想データベースを変更することにより、仮想データベースをリフレッシュする。前記テータベース記憶システムは、リフレッシュされた仮想データベース用の新たな１つのタイムフローを維持する。この新しいタイムフローは、該リフレッシュされた仮想データベースに対するその後の更新により引き起こされた変化を表す。
【０００５】
この概要及び以下の詳細な説明に記載された特徴及び利点は、包括的ではない。多数の追加的特徴及び利点が、この出願の図面、明細書及び特許請求範囲を考慮すると、当業者にとって明白であろう。
【図面の簡単な説明】
【０００６】
【図１】この発明に一実施形態に従い、どのように情報がプロダクションデータベースからデータベース記憶システムにコピーされ、且つ、ファイル共有システムを用いる仮想データベースとして供給されるかを示す図。
【０００７】
【図２】一実施形態に従う仮想データベースを遠隔供給できるようにするシステム環境全体を説明する図。
【０００８】
【図３】幾つかの実施形態に従って、プロダクションデータベースから効率的な情報のコピーを記憶して、仮想データベースを供給するシステムの構造を示す図。
【０００９】
【図４ａ】幾つかの実施形態に従って、仮想データベースに記憶されたデータの構造を説明する図。
【００１０】
【図４ｂ】幾つかの実施形態に従って、タイムフローに沿って様々な時点において、ソースデータベース内の変化に対応する、仮想データベースの複数のスナップショットを取得する処理を説明する図。
【００１１】
【図５ａ】幾つかの実施形態に従って、ユーザにより特定された時点に仮想データベースを巻き戻すための第１のアプローチを説明する図。
【００１２】
【図５ｂ】幾つかの実施形態に従って、ユーザにより特定された時点に仮想データベースを巻き戻すための第２のアプローチを説明する図。
【００１３】
【図６】幾つかの実施形態に従って、仮想データベースのロールバック（又は巻き戻し）のインスタンスにおけるタイムフローの可視性を説明する図。
【００１４】
【図７】幾つかの実施形態に従って、仮想データベースをタイムフローに沿って、後ろに（例えば、ロールバック又は巻き戻し）、及び、前に（早送り）移動する処理を説明する図。
【００１５】
【図８】幾つかの実施形態に従って、仮想データベースのロールバックの際の、実時刻クロック及びシーケンス変更番号（ＳＣＮ）の変化を説明する図。
【００１６】
【図９ａ】この発明の一実施形態に従う、仮想データベースを巻き戻し又はロールバックのための処理のフローチャートを示す。
【図９ｂ】前記一実施形態に従う、仮想データベースを巻き戻し又はロールバックのための処理のフローチャートを示す。
【００１７】
【図１０ａ】幾つかの実施形態に従い、仮想データベーススナップショットを取り出し、複数のＶＤＢタイムフローとやり取りし、また、仮想データベースの巻き戻し（又はロールバック）を行うための、グラフィカルユーザインタフェースの例示。
【図１０ｂ】幾つかの実施形態に従い、仮想データベーススナップショットを取り出し、複数のＶＤＢタイムフローとやり取りし、また、仮想データベースの巻き戻し（又はロールバック）を行うための、グラフィカルユーザインタフェースの例示。
【図１０ｃ】幾つかの実施形態に従い、仮想データベーススナップショットを取り出し、複数のＶＤＢタイムフローとやり取りし、また、仮想データベースの巻き戻し（又はロールバック）を行うための、グラフィカルユーザインタフェースの例示。
【図１０ｄ】幾つかの実施形態に従い、仮想データベーススナップショットを取り出し、複数のＶＤＢタイムフローとやり取りし、また、仮想データベースの巻き戻し（又はロールバック）を行うための、グラフィカルユーザインタフェースの例示。
【図１０ｅ】幾つかの実施形態に従い、仮想データベーススナップショットを取り出し、複数のＶＤＢタイムフローとやり取りし、また、仮想データベースの巻き戻し（又はロールバック）を行うための、グラフィカルユーザインタフェースの例示。
【図１０ｆ】幾つかの実施形態に従い、仮想データベーススナップショットを取り出し、複数のＶＤＢタイムフローとやり取りし、また、仮想データベースの巻き戻し（又はロールバック）を行うための、グラフィカルユーザインタフェースの例示。
【図１０ｇ】幾つかの実施形態に従い、仮想データベーススナップショットを取り出し、複数のＶＤＢタイムフローとやり取りし、また、仮想データベースの巻き戻し（又はロールバック）を行うための、グラフィカルユーザインタフェースの例示。
【００１８】
各図は、説明の目的でのみ、この発明の種々の実施形態を描いている。当業者は、この開示に示された発明の本質から逸脱することなく、この開示に示された構造及び方法の実施形態の変形が採用され得ることを、以下の説明から、理解するであろう。
【発明を実施するための形態】
【００１９】
更に、前記の遠隔供給アプローチは、時間差を超えて記憶装置に保存されるべきソースデータベースブロック（例えば、プロダクションデータベース内のデータベースブロック）に対する過去の変更、更新、又は、修正と、様々な時点で取得されたＶＤＢスナップショットとしての効率的な実行とを可能とする。ＶＤＢのスナップショットとして保存されたソースデータベースに対するそれら過去の変更は、１以上の遠隔ターゲット（例えば開発）環境にわたり随意に複製され、ユーザがターゲットにおいて、過去の時点のＶＤＢのコピーを、元に戻したり、あるいは、取り戻したりできるようにする。この、過去の時点のＶＤＢのコピーを戻すプロセスを、ＶＤＢのロールバック又は巻き戻しと称する。
【００２０】
ＶＤＢを巻き戻すための幾つかのアプローチは、ユーザにより特定された過去の時点から（例えば前記データベース記憶システムに保存されたＶＤＢのスナップショットにアクセスすることにより）新しい仮想データベースを生成すること、及び、ユーザが新しいＶＤＢにアクセスし、且つ、変更できるようにすることを含む。この、ＶＤＢを巻き戻すアプローチの問題は、元のＶＤＢの論理的アイデンティティとは異なる、新しい論理的アイデンティティ（例えば、新しい名前、新しいＩＤ、並びに、全てのＶＤＢファイル及び関連付けられた構成ファイルの新しいコピー）を持つ新しいＶＤＢの生成が、記憶及び実行において非効率的である点である。
【００２１】
従って、幾つかの実施形態は、ユーザにより特定された過去の時点での新しいＶＤＢの生成を必要とせず、むしろ、元のＶＤＢに関連付けられた新しいタイムフロー（過去のＶＤＢタイムフローと同じコンテナ又はデータベース記憶システム内のもの）の生成を必要とするデータベースの巻き戻し又はロールバック方法を提供する。このアプローチは、巻き戻し時点からの新たなＶＤＢの生成を含むアプローチと比較して、より早くより記憶効率の良いＶＤＢ巻き戻し動作を可能とする。
仮想データベースシステム
【００２２】
幾つかの実施形態において、１以上の仮想データベースは、特定時点におけるプロダクションデータベース又は仮想データベースの状態に基づいて生成される。前記１以上の仮想データベースは、任意に、個別にアクセス及び変更され得る。データベースは、コンピュータに実装されたアプリケーションにより使用するためにコンピュータに記憶されたデータを含む。データベースサーバは、前記データベースと相互作用できるコンピュータプログラムであり、例えば前記データベースに記憶されたデータにアクセスすることなど、データベースサービスを提供する。幾つかの実施形態は、動作中のプロダクションデータベースに替えて、プロダクションデータベースの複数のスナップショット又はプロダクションデータベースの複数のクローンの記憶レベルを用いて、仮想データベースを生成する。仮想データべースは、２００９年１０月２１に出願され、現在は米国特許第８１５０８０８号として発行された、米国特許公報第１２／６０３５４１号に記載されており、この参照によりその全体が組み込まれたものとする。
【００２３】
一実施形態において、前記プロダクションデータベースからの情報は、例えば周期的に等、様々なときに、記憶システムにコピーされる。このことは、これら異なる時点のプロダクションデータベースに関連付けられた前記データベースファイルの再構成を可能とする。前記情報は、情報の複数のコピーが必要なときにのみ作成されるように、前記記憶システム内に効率的な方法で管理されてよい。例えば、前記データベースの一部分が以前にコピーされた版から変更されていない場合、その不変更部分は、コピーする必要が無い。或る時点で生成された仮想データベースは、その時点で入手できる前記データベースの情報を含む複数ファイルからなる１セットとして記憶される。
【００２４】
仮想データベースは、データベースサーバにとっての必要に応じて、前記データベースに直前時点における前記プロダクションデータベースの状態に対応する該プロダクションデータベース用の前記複数のデータベースファイルを生成することにより、前記データベースサーバ上に生成されてよい。前記仮想データベースに対応する前記複数のファイルは、前記記憶システムに記憶された前記適切な複数のデータブロックに前記仮想データベースをリンクするファイル共有メカニズムを使用することにより前記データベースサーバに利用可能である。或るデータベースサーバが利用可能な仮想データベースを作成するプロセスは、仮想データベースの“プロヴィジョニング”（貼ochprovisioning"）と呼ばれる。複数のＶＤＢが、同じ時点での前記プロダクションデータベースの前記状態に基づいて提供（provision）され得る。他方、異なるＶＤＢが、異なる時点での、同じプロダクションデータベース又は異なるプロダクションデータベースの状態に基づき提供され得る。また、複数のＶＤＢが、別の複数のＶＤＢに基づき提供され得る。
【００２５】
仮想データベースが供給された前記データベースサーバは、前記記憶システムに記憶されたファイルから読み出すこと、及び、該記憶システムに記憶されたファイルに書き込むことができる。データベースブロックは、それぞれ異なるＶＤＢに関連付けられた異なるファイル間で共有されてよい。特に、データベースブロックは、対応する複数の仮想データベースシステム１３０がそのデータベースブロック内の情報を読み出すのみであり、該データベースブロックに書き込んでいない場合に、共有される。一実施形態において、前記仮想データベースマネジャー３７５は、必要な場合にのみ、複数のデータベースブロックのコピーを作成する。例えば、特定のデータベースブロックは、同じデータベースブロックから読み出す多数のＶＤＢにより共有されるだろう。しかし、前記仮想データベースシステム１３０の１つが前記データベースブロックに書き込もうとする場合、該データベースブロックの別個のコピーが作成されるその書き込み動作により、該仮想データベースシステム１３０に対応するＶＤＢにとって、そのデータベースブロックが、他のＶＤＢにとってのものとは異なるものとなるからである。
【００２６】
図１は、或るプロダクションデータベースからデータベース記憶システムに情報をコピーし、仮想データベースとして供給する方法の一実施形態を示す。データベース記憶種システム１００は、１又は複数のプロダクションデータベース１１０から複数のデータベースに関連付けられたデータを取り出し、且つ、そのデータを、後述する効率的な方法で記憶する。データベース管理者ユーザインタフェース１４０は、データベース記憶システム１００によりサポートされた各種アクションを、データベース管理者が実行できるようにする。
【００２７】
管理システム１４０からのリクエストに応じて、又は、予め決められたスケジュールに基づいて、データベース記憶システム１００は、プロダクションデータベース１１０に、データのリクエスト１５０を送信してよい。プロダクションデータベース１１０は、前記プロダクションデータベース内に記憶された情報を、ストリームデータ１６０として送信することにより、応答する。データベース記憶システム１００は、プロダクションデータベース１１０により送信されたデータ１６０を受信し、且つ、そのデータを記憶する。データベース記憶システム１００は、例えば、変更された複数のデータブロックの版（versions、変形）を保持し、且つ、変形されていないデータブロックを再利用することにより、効率的に情報を記憶する。
【００２８】
仮想データベースを生成するために、データベース記憶システム１００は、所与の時点におけるプロダクションデータベース１１０に対応する情報を表すファイルを生成する。データベース記憶システム１００は、ファイル共有システム１２０を用いて、仮想データベースシステム１３０に、前記対応するファイルを露出（expose）する。仮想データベースシステム１３０は、前記データベース記憶システム１００により露出１７０されたファイルを用いて動作できるデータベースサーバを実行する。よって、前記プロダクションデータベースの仮想的コピーが、記憶効率の良い方法で、所与の時点に、仮想データベースシステム１３０のために生成される。
【００２９】
複数のＶＤＢは、種々のワークフローシナリオにおいて使用され得る。図２は、一実施形態に従う仮想データベースの遠隔プロヴィジョニングを示すワークフローシナリオの一例を示す。複数のデータベース記憶システムを記憶する２つのサイトがある。ローカルサイト２１０ａは、ソースデータ記憶部２３０ａを備え、また、リモートサイト２１０ｂは、ターゲットデータ記憶部２３０ｂを備える。複数のソースデータベースシステム２１５があってよい。それらソースデータベースシステム２１５はデータ記憶部２２０を含む。ソースデータベースシステム２１５ａは、データ記憶部２２０ａを含み、また、ソースデータベースシステム２１５ｂは、データ記憶部２２０ｂを含む。ソースデータベースシステム２１５内のデータ記憶部２２０への変更は、ソースデータベース記憶システム１００ａにより周期的に受信２４５され、そして、ソースデータ記憶部２３０ａに記憶される。データベースシステム２４０は、ソースデータベース記憶システム１００ａに複数の仮想データべースを作成し、ＶＤＢに対する読み出し／書き込み２６０ａを行う。
【００３０】
ソースデータベース記憶システム１００ａ内のデータへの変更を記述する情報は、ターゲットデータベース記憶システム１００ｂに伝送２５０される。ソースデータベース記憶システム１００ａ内のデータへの変更は、周期的に又は所定のスケジュールに基づいて、伝送２５０される。データベースシステム２４０ｂは、ターゲットデータベース記憶システム１００ｂに複数の仮想データべースを作成する。データベースシステム２４０ｂは、前記ＶＤＢに対する読み出し／書き込みを許可される。
システム構成
【００３１】
図３は、プロダクションデータベースから記憶効率の良い情報のコピーを作成し、その情報を使って１又は複数の仮想データベースを供給する（プロヴィジョニングする）のに適したシステム環境を説明するハイレベルブロック図を示す。システム環境は、データベース記憶システム１００、及び、１又は複数の仮想データベースシステム１３０を含む。図３のシステムは、必要な場合に、ネットワーク経由で互いに通信できる。図３は、例えば、プロダクションデータベース１１０又は管理システム１４０など、その他の使用されるシステムを描いていない。
【００３２】
データベース記憶システム１００は、プロダクションデータベース１１０内の入手可能な情報を取り出して、それを記憶する。取り出された情報は、データベースに記憶されたデータ、トランザクションログ情報、データベースに関連するメタデータ情報、データベースのユーザに関連する情報などを含む複数のデータブロックを含む。取り出された情報は、また、データベースに関連付けられた構成ファイルを含む。例えば、データベースは、データベースに関連付けられた初期化パラメータを含む様々な構成パラメータを特定するためのベンダー特定構成ファイルを使用してよい。
【００３３】
記憶システムデータ記憶部３９０に記憶されたデータは、仮想データベースシステム１３０に露出され得る。仮想データベースシステム１３０は、そのデータをプロダクションデータベースシステム１１０に記憶された該プロダクションデータベースのコピーとして扱うことができる。データベース記憶システム１００は、時点コピー（point-in-time copy）管理部３１０、トランザクションログ管理部３２０、インタフェース管理部３３０、記憶アロケーション管理部３６５、ファイル共有管理部３７０、仮想データベース管理部３７５、ＶＤＢタイムフロー管理部３２５、ＶＤＢロールバック管理部３３５、及び、記憶システムデータ記憶部３９０を含む。変形構成において、異なる及び／又は追加のモジュールがデータベース記憶システム１００に含まれ得る。
【００３４】
前記時点コピー管理部３１０は、プロダクションＤＢデータ記憶部３５０に記憶されたデータベースの或る時点のコピー（“ＰＩＴコピー”ともいう）を表す情報を取り出せというリクエストをベンダーインタフェーモジュール３３５に送信することにより、プロダクションデータベースシステム１１０とやり取りする。前記時点コピー管理部３１０は、記憶システムデータ記憶部３９０に、プロダクションデータベースシステム１１０から取得した前記データを記憶する。前記時点コピー管理部３１０により取り出された前記データは、プロダクションＤＢデータ記憶部３５０からコピーされているデータベースの複数のデータベースブロック（又はページ）に対応する。プロダクションＤＢデータ記憶部３５０の情報を取り出す最初のＰＩＴコピーリクエストの後、後続のＰＩＴコピーリクエストは、直前のリクエストの後にデータベース内で変更されたデータのみを取り出す必要があるだろう。第２のリクエストに応じてプロダクションＤＢデータ記憶部３５０からデータが取り出された時点に対応するデータベースのコピーを再構成するために、最初のリクエストにて収集されたデータは該第２のリクエストにより収集されたデータと組み合わされ得る。
【００３５】
トランザクションログ管理部３２０は、プロダクションデータベースシステム１１０に記憶されたトランザクションログの複数の部分を取り出せというリクエストを、該プロダクションデータベースシステム１１０に送信する。幾つかの実施形態において、トランザクションログ管理部３２０からのリクエストは、ベンダーインタフェーモジュール３３５に送信される。トランザクションログ管理部３２０により取得されたベンダーインタフェーモジュール３３５からの前記データは、記憶システムデータ記憶部３９０に記憶される。一実施形態において、トランザクションログのリクエストは、直前のトランザクションログのリクエストが処理された後のプロダクションデータベースシステム１１０におけるトランザクションログの変更のみを取り出す。トランザクションログ管理部３２０により取り出された複数のトランザクションログと組み合わされた前記時点コピー管理部３１０により取り出された前記複数のデータベースブロックは、複数の時点コピーが作成された複数の時点の間の過去の複数時点に対応する、プロダクションデータベースシステム１１０における１つのデータベースの１つのコピーを再構成するために使用され得る。
【００３６】
記憶アロケーション管理部３６５は、プロダクションデータベースシステム１１０から取り出されたデータを保存する機能を提供する。例えば、時点コピー管理部３１０は、プロダクションデータベースシステム１１０から取り出されたデータの複数のブロックを保存するために記憶アロケーション管理部の複数のＡＰＩを呼び出す。記憶アロケーション管理部３６５は、プロダクションデータベースシステム１１０から取得されたであろうデータの各ブロックの様々な版を記録する。所与の時点のために、記憶アロケーション管理部３６５は、該所与の時点以前に取得されたデータのブロックの最新版を提供することをリクエストされ得る。記憶アロケーション管理部３６５は、また、データの複数のブロックのコピーを作成するために使用され得る。データの或るブロックが読み出しのためにのみコピーされた場合、記憶アロケーション管理部３６５は、出て行くデータのブロックの参照ポインターを保持するのに十分な記憶のみ割り当てる。しかし、コピーされたデータのブロックへの書き込みの試みがなされた場合、記憶アロケーション管理部３６５は、オリジナルのデータのブロックが更新されることを避けるために、データのブロックを実際にコピーするのに十分な記憶を割り当てる。
【００３７】
ファイル共有管理部３７０は、記憶システムデータ記憶部３９０に記憶された複数のファイルが、ネットワーク経由でデータベース記憶システム１００に接続された複数のコンピュータの間で共有されるようにする。ファイル共有管理部３７０は、ファイルを共有するためにファイル共有システム１２０を使う。ファイルを共有するためのシステムの一例はネットワークファイルシステム（ＮＦＳ）である。ファイルを共有するためのシステムは、ファイバーチャンネル記憶エリアネットワーク（ＦＣ−ＳＡＮ）、又は、ネットワークアタッチトストレージ（ＮＡＳ）、又は、それらの組み合わせ及び変形である。ファイルを共有するためのシステムは、スモールコンピュータシステムインターフェース（ＳＣＳＩ）プロトコル、インターネットスモールコンピュータシステムインターフェース（ｉＳＣＳＩ）プロトコル、ファイバーチャンネルプロトコル、又は、その他の同様な及び関連するプロトコルに基づいてよい。幾つかの実施形態において、データベース記憶システム１００は、ロジカルボリューム管理部を使用してよい。ファイル共有管理部３７０を使用して記憶システムデータ記憶部３９０に記憶された共有ファイルは、例えば仮想データシステム１３０など遠隔コンピュータが共有されたファイル内のデータにアクセスすることを可能とする。遠隔システムは、記憶システムデータ記憶部３９０により共有されたファイルから読み出すこと／該ファイルに書き込みことを可能とする。一実施形態において、複数のファイルが、例えば、ＮＴＦＳ、あるいは、ＵＮＩＸ（登録商標）ファイルシステム（ＵＦＳ）などＷＩＮＤＯＷＳ（登録商標）オペレーティングシステムのファイルシステムなど、所与のファイルシステムのディスクレイアウトを真似たフォーマットで編成される。
【００３８】
仮想データベース管理部３７５は、仮想データベースシステム１３０のための仮想データベースの生成リクエストを受信する。仮想データベースの生成リクエストは、管理システム１４０を用いてデータベース管理者により送信され、プロダクションデータベースシステム１１０、仮想データベースシステム１３０を特定し、仮想データベースを生成する必要のあった時点に対応する過去の時点を含んでよい。仮想データベース管理部３７５は、生成される仮想データベースに対応する必要なファイルを生成し、そのファイルを仮想データベースシステム１３０と共有する。仮想データベースシステム１３０の管理者は、プロダクションデータベースシステム１１０のデータベース管理者と異なっていてよい。
【００３９】
ＶＤＢタイムフロー管理部３２５は、仮想データベースに対応する１又は複数のタイムフローに関連付けられた記憶、更新、及び、情報の取り出しを維持する。ＶＤＢタイムフロー管理部３２５は、前記タイムフローに沿う１又は複数の時点、ＶＤＢファイルの更新又は変更に関連付けられたシーケンス変更番号及びトランザクションログ、前記タイムフローに沿う複数の時点の部分集合における複数のファイルのスナップショットなどを記述する情報を、保存する。一実施形態によれば、或るタイムフローの表現は、ソースデータベース又はＶＤＢで行われた変更を記述する情報を保存する。一実施形態において、変更は効率的に保存される。例えば、様々な時点において、ソースデータベース又はＶＤＢのコピー（又はスナップショット）は、１又は複数のデータベースブロックが複数時点のコピーにわたり共有されるように、保存される。特に、変更されていないデータベースブロックは、２つの連続する時点のコピーに共有され、更新されたデータベースブロックは、更新される前にコピーされる。一実施形態において、変更を記述する情報は、また、２つの時点のコピーを取得する期間内に行われた変更を表すトランザクションログを含む。
【００４０】
ＶＤＢロールバック管理部３３５は、或るタイムフローに沿って、ユーザにより特定された時点に或るＶＤＢを巻き戻す又はロールバックすることのユーザリクエストを受信する。ＶＤＢロールバック管理部３３５は、仮想データベースに対応するタイムフロー情報にアクセスし、ユーザにより特定された時点での仮想データベースの表現を取り出すために、ＶＤＢタイムフロー管理部３２５と相互作用する。
【００４１】
仮想データベースシステム１３０は、データベースサーバ３６０とＶＤＢシステムライブラリ３８０を含む。データベースサーバ３６０は、データベースサーバ３４５と機能的に同様であり、データベースサービス及びデータ記憶部３５０に記憶されたデータを管理するためのアプリケーションプログラミングインタフェース（ＡＰＩ）を提供するコンピュータプログラムである。データベースサーバ３６０により管理されたデータは、ファイル共有システム１２０を使用するデータベース記憶システム１００により共有される記憶システムデータ記憶部３９０に記憶されて良い。ＶＤＢシステムライブラリ３８０は、データベース記憶システム１００により送信されたリクエストを処理するためのプログラムコードを含む。仮想データベースシステム１３０には、変形構成要素、異なる及び／又は追加的なモジュールが含まれ得る。
仮想データベースの或る時点のコピー（ここではスナップショットと呼ばれるもの）の生成
【００４２】
図４ａは、ＶＤＢを表す読み出し／書き込みファイル構造を生成するために記憶効率の良いコピーを作成する方法を示す。図４に示す通り、複数の構造４１０は、プロダクションデータベースシステム１１０上の１つのデータベースに対応する複数のファイルを表す。構造Ｆｉ及びＧｉは、それぞれ、ファイル４１０に保存された複数のデータベースブロックを表す（ＦｉはＦ１、Ｆ２、Ｆ３・・・を示し、同様にＧｉはＧ１、Ｇ２、Ｇ３・・・を示す）。矢印４１５は、異なる時刻ＴｉにおけるＰＩＴコピー作成のプロセスを表す。時刻Ｔ０に作成された第１のＰＩＴコピー４３０は、データベース内の必要なデータベースブロック全てをコピーする必要がある。例えば、Ｆ１ｉはブロックＦｉのコピーを表し、ブロックＧ１ｉはブロックＧｉのコピーを表す。時刻Ｔ１に作成されたＰＩＴコピー４３５は、前回のＰＩＴコピー以後に変化したブロックのみをコピーするものであり、前記第１のＰＩＴコピーに比べてずっと少ないデータをコピーするだろう。同様に、時刻Ｔ２において、別のＰＩＴコピー４４０は、前回のＰＩＴコピー４３５以後に変化した複数のブロックをコピーさせる。
【００４３】
ＰＩＴコピー４４０が図４に示された構成において作成された最後のＰＩＴコピーとすると、ＶＤＢファイル構造４５０は、時刻Ｔ２用に作成される。構造４５０が作成されたとき、ブロックＶ１１、Ｖ１２、・・・、Ｖ２５は、データを保存している実際のデータベースのポインターとして実装される。例えば、Ｖ１１はブロックＦ１内の情報を表しており、ブロックＦ１が時刻Ｔ１及びＴ２にて作成されたコピーの間に変更されなかったため、Ｖ１１はＦ１１を指す。Ｖ１２はブロックＦ２内の情報を表しており、Ｆ２が時刻Ｔ１にて更新されたため、Ｖ１２はブロックＦ２２を指す。同様に、Ｖ１３は、時刻Ｔ２で更新されたブロックＦ３に対応しており、ブロックＦ３３を指す。
【００４４】
図４に示す構造４５０が読み出し／書き込み構造であるため、仮想データベースシステム１３０は、それら構造から読み出すことができ、また、それら構造に書き込むこともできる。仮想データベースシステム１３０が或るブロックＶｉｊに書き込んだ場合、そのデータベースブロックのためにスペースが割り当てられ、対応するデータベースブロックのデータが該割り当てられたスペースにコピーされる。例えば、仮想データベースシステム１３０がブロックＶ１１に書き込む場合、スペースは割り当てられ、ブロックＦ１１が割り当てられたブロックにコピーされる。従って、ブロックＦ１１のオリジナルのコピーは、読み取り専用コピーとして維持され、仮想データベースシステム１３０は、当該仮想データベースシステム１３０のために生成された適切なデータベースブロックのコピーに書き込むことができる。このことは、対応する仮想データベースシステム１３０がデータベースブロックに書き込む場合にのみそのデータベースブロックのコピーを作成するという、データベースブロックのコピーを生成するためのレイジーな（緩慢な）機構とみなされ得る。仮想データベースシステム１３０が書き込みを行うデータベースブロックの数がＶＤＢに関連付けられたブロック総数のごく一部となるため、前述の構造は、ＶＤＢに関連付けられたデータを極めて記憶効率の良い方法で記憶するものである。仮想データベースシステム１３０により書き込まれないデータベースブロックは、仮想データベースシステム１３０用にコピーされることなく、様々仮想データベースシステムに共有されて良い。
【００４５】
仮想データベースの或る時点のコピー（又はスナップショット）の生成の別の説明として、図４ｂは、幾つかの実施形態に従う、ソースデータベースにおける変更に対応する、仮想データベースのスナップショット取得（或るタイムライン又はタイムフローに沿う様々な時点での）のプロセスを示す。
【００４６】
図４ｂには、ソースデータベース（例えば、図４ａを参照して説明したプロダクションデータベース１１０）に基づくデータベースブロック内の変更及びタイムフローに沿う１又は複数の時点で取得された複数のスナップショット内の対応する変更を示すタイムラインに沿う時間進行が示されている。図４ａを参照して前述したとおり、ソースデータベース内の特定の複数のブロックの変更又は更新は、データベース記憶システム１００内に記憶された対応するデータベースブロックの変更となる。逆に言えば、更新又は変更されていないソースデータベース内のデータベースブロックに対応するデータベース記憶システム１００内に記憶されたデータベースブロックは、それら自身、変更又は更新されない。
【００４７】
従って、図４ｂのタイムフローに示す通り、或るスナップショット（例えばスナップショット１）は、時刻Ｔ０に取得される。時刻Ｔ０又は時刻Ｔ０以前（例えば直前スナップショットの取得に続いて）に、ハイライトされたソースデータベースブロック（例えば、図においてデータベースブロック４６０‐ａ）は更新又は変更される。その結果、データベース記憶システムは、変更されたソースデータベースブロックを受信して、それらを保存する（図４ｂに示す通り）；時刻Ｔ０に取得されたスナップショット１は、したがって、スナップショット１の直前のスナップショットの取得の前に実行されたソースデータベースの変更に対応する変更を反映する。
【００４８】
続いて、図４ｂのタイムフローに示す通り、スナップショット２は、時刻Ｔ１に取得される。時刻Ｔ０及び時刻Ｔ１の間に更新又は変更されたソースデータベースブロックは、ハイライトで示される（例えば、図においてデータベースブロック４６０−ｂ）；データベース記憶システム１００は、時刻Ｔ１に取得されたスナップショット２の反映として、変更されたソースデータベースブロックに対応するデータブロックを受信及び保存する。
【００４９】
時刻Ｔ０及び時刻Ｔ１の間に行われたＶＤＢの変更は、時刻Ｔ０及び時刻Ｔ１の間のトランザクションログ４７０−ａに反映される。図３を参照して前述した通り、トランザクションログは、スナップショットが取得された複数時刻の間（この例では時刻Ｔ０及び時刻Ｔ１の間）の複数の時点に対応するソースデータベースのコピーを再構成するために使用され得る。
【００５０】
更に、図４ｂに示すタイムフローに沿って、スナップショット３は時刻Ｔ２に取得される。時刻Ｔ１及び時刻Ｔ２の間に更新又は変更されたソースデータベースブロックは、ハイライトで示される（例えば、図においてデータベースブロック４６０−ｃ）；変更されたソースデータベースブロックに対応するＶＤＢファイルは更新又は変更され、時刻Ｔ２に取得されたスナップショット３はＶＤＢに反映される。時刻Ｔ１及び時刻Ｔ２の間に行われたＶＤＢの変更は、時刻Ｔ１及び時刻Ｔ２の間のトランザクションログ４７０−ｂに反映され、トランザクションログ４７０−ｂは時刻Ｔ１及び時刻Ｔ２の間の複数の時点に対応するソースデータベースのコピーを再構成するために使用され得る。
【００５１】
結果として、複数のソースデータベースブロック（例えばプロダクションデータベース内のデータベースブロック）への変化、更新又は変更の履歴は、モニタされ、記憶及び実行効率の良い方法で、時を超えて保存され得る。そして、それら変化は遠隔ターゲット（例えば開発）環境を越えて複製される。タイムフローは、また、仮想データベースに行われた変化を表すために使用される。
仮想データベースの巻き戻し又はロールバック
【００５２】
図５ａは、一実施形態に従い、ユーザにより特定された時点に仮想データベースを巻き戻す手法を示す。図５ａに示す通り、仮想データベース（例えばＶＤＢ１）は、該仮想データベースに関連付けられたタイムフロー（例えばタイムフロー１）に沿う複数の時点でのそのソースデータベースの更新に基づいて（図４ａ乃至４ｂを参照して説明した通り）、変更又は更新される。図４ａ乃至４ｂを参照して説明した通り、仮想データベースのスナップショット及び仮想データベースに対する変更（関連付けられたソースデータベースの変更に対応するもの）は、タイムフロー１に沿って、複数時点の部分集合（例えばＴ０、Ｔ１、及びＴ２）にて取得及び保存される。幾つかの実施形態において、例えば仮想データベースに関連付けられたスナップショット及びトランザクションログなど、仮想デーｔアベースに対する変更を表すタイムフローは、仮想データベースコンテナ（例えば図５ａに示すコンテナ１）に保存される。
【００５３】
幾つかの実施形態において、或るコンテナは、例えばＶＤＢ又はソースデータベースを示すｄソースなど、データッベース記憶システム内の或るデータベースの表現を保存する。或るコンテナは、ＶＤＢ又はｄソースに関連付けられた１又は複数のタイムフローを含んでよい。したがって、前記コンテナは、複数のスナップショット、複数のトランザクションログ、及び、ＶＤＢ又はｄソースに関連付けられたメタデータを表す。幾つかの実施形態において、タイムフローは、或る期間にわたる或るデータソース（例えば、外部システム又は別のＶＤＢに記憶されたソースデータベース）に対する複数の変更を表す（例えば、トランザクションログを用いて、複数のスナップショット及び複数のスナップショット間の変更を保存することにより）。幾つかの実施形態において、ＶＤＢが過去に戻る（例えば該ＶＤＢの状態を、その直前の状態に変更するように該ＶＤＢを巻き戻す）又は時間的に先に進む（例えば、該ＶＤＢの状態を該ＶＤＢの巻き戻しに使用された状態に比べてタイムフローに沿ってより新しい状態に変更する；別の例として、ＶＤＢの状態を、ソースデータベースに対応するより新しい状態に更新するようにリフレッシュする）ので、多数のタイムフローがコンテナに保存される。各タイムフローは、ＶＤＢの初期状態及び該ＶＤＢの状態が該初期状態に更新された後に該ＶＤＢに行われた変更の表現に関連付けられている。
【００５４】
図５ａにおいて、幾つかの実施形態に従う、ＶＤＢを巻き戻すための第１の手法が説明されている。現時点より以前の或る時点へ（例えば図５ａにおけるロールバック時点ＴRBへ）仮想データベースをロールバック又は巻き戻すユーザリクエストに応じて、第１の手法に従うと、データベース記憶システムは、所望のロールバック時点のオリジナルＶＤＢに基づいて、該オリジナルＶＤＢとは異なる（例えばＶＤＢ１とは異なる）新たなＶＤＢ（例えばＶＤＢ２）を生成することにより、ＶＤＢロールバックをシミュレートする。言い換えれば、図５ａの例において、仮想データベースのロールバックは、ＴRBのＶＤＢ１に基づいて、ロールバック時点ＴRBに、ＶＤＢ１とは異なるＶＤＢ２を生成することにより、シミュレートされる。ロールバック時点にＶＤＢ１が存在する場合、ＶＤＢ２は、ＴRBのＶＤＢ１に基づいて生成される。一方、ロールバック時点ＶＤＢ１が存在しない場合（例えば、図５ａに示す通り）、ＶＤＢ２は、ロールバック時点にＶＤＢ１を再作成するための中間（interim）トランザクションログ（例えばＴ１及びＴRBの間）を適用することにより、ロールバック時点の直前のＶＤＢ１のスナップショット（例えばＴ１のＶＤＢ１のスナップショット２）に基づいて生成される。
【００５５】
このような目的で、幾つかの実施形態においては、仮想データベースのロールバックのための第１の手法は、新しいＶＤＢコンテナ（例えばコンテナ２）を作成すること、最直近のスナップショットにおける過去ＶＤＢに基づいて新しいＶＤＢを作成すること（例えばスナップショット２のＶＤＢ１に基づいて新たなＶＤＢ２を作成すること）、及び、ロールバック時点を起源とする（例えばＴRBから始まる）新たなタイムフロー（例えばタイムフロー２）を作成することを含む。かかる実施形態において、新たなＶＤＢ（例えばＶＤＢ２）は、オリジナルＶＤＢ（例えばＶＤＢ１）の論理的アイデンティティとは異なる、新たな論理的アイデンティティ（例えば、新たな名前、新たな識別子、及び、全ＶＤＢファイル及び関連する構成ファイルの新たなコピー）を持つ。
【００５６】
図５ｂは、別の実施形態に従って、ユーザにより特定された時点に仮想データベースを巻き戻すための別の手法を示す。このデータベースを巻き戻す手法は、過去の時点に発生した或るＶＤＢの状態に、現在のＶＤＢの状態を更新することを含む。したがって、ＶＤＢのコンテナは、ＶＤＢの状態を変えるように変更され、それにより新しい論理的アイデンティティを持った新しいＶＤＢを作成する必要がなくなる。ＶＤＢの状態は、以前の時点に対応するデータベースブロックを指すためのＶＤＢを表す構造を変更することにより変わる。したがって、幾つかの実施形態において、ＶＤＢを巻き戻すための第２の手法（例えば図５ｂを参照して後述されるもの）は、第１の手法（例えば図５ａを参照して前述したもの）に比べて、より記憶及び時間効率のよい、仮想データベース巻き戻し手法を提供する。
【００５７】
幾つかの実施形態において、図５ｂに示す通り、仮想データベース（例えばＶＤＢ１は、該仮想データベースに関連付けられたタイムフロー（例えばタイムフロー１）に沿う複数の時点でのそのソースデータベースに対する更新に基づいて変更又は更新される。仮想データベースの複数のスナップショット及び該仮想データベースに対する変更（関連するソースデータベースにおける変更に対応するもの）は、タイムフロー１に沿う複数の時点（例えばＴ０、Ｔ１、ａｎｄ及びＴ２）の部分集合において取得及び保存される。幾つかの実施形態において、仮想データベースに関連付けられたスナップショット（ソースデータベースにおける変更に対応するもの）及び前記タイムフローに対応する情報は、仮想データベースコンテナ（例えば図５ｂにおけるＶＤＢコンテナ）に保存される。
【００５８】
過去の時点へのＶＤＢのロールバック又は巻き戻しユーザリクエストに応じて、図５ｂに示す通り、第２の手法においては、データベース記憶システムは、同じ名前及び識別子を持ち、同じコンテナにある同じＶＤＢを保持し、同じコンテナにある新しいタイムフロー（例えば、タイムフロー２、又は、“現在の”タイムフローと呼ばれるもの）を作成し、そして、該新たなタイムフローから前記同じＶＤＢ（例えばＶＤＢ１）を供給する。
【００５９】
この目的のため、幾つかの実施形態のいては、データベース記憶システムは、一時的に、ＶＤＢ１をシャットダウンし（例えばＶＤＢ１に対するユーザアクセスを一時停止し）、同じコンテナ内に新しいタイムロー（例えばコンテナ１内のタイムフロー２）を生成し、該新しいタイムフローの宛先記憶部を指し示し、そして、該新しいタイムフロー（例えばタイムフロー２）から供給された同じオリジナルＶＤＢ（例えばＶＤＢ１）を提示する（bring up）。
【００６０】
言い換えれば、データベース記憶システムは、ロールバック以前と同じではあるが、特定の時点に対応する複数データベースブロックからなる１セットを指し示した宛先に、同じ複数のＶＤＢファイル（例えばＶＤＢ１に対応する複数のファイル）を組み込む。前記ＶＤＢのコンテナは、新しいタイムフロー（すなわち、タイムフロー１ではなく、“現在の”タイムフローを為すタイムフロー２）を含み、そして、該新しいタイムフロー（タイムフロー２）に沿ってＶＤＢに対する変更を追跡する（例えば、時刻Ｔ３のスナップショット４及び時刻Ｔ４のスナップショット５などのＶＤＢスナップショット、並びに、スナップショット間のトランザクションログファイルを取得し、維持することにより）。
【００６１】
図６は、幾つかの実施形態に従う、仮想データベースのロールバック（又は巻き戻し）のインスタンスにおけるタイムフローのユーザ視認性（例えば、グラフィカルユーザインターフェース）を説明する。ＶＤＢを巻き戻すための第２の手法に関連して（例えば、図５ｂを参照して前述した通り）、幾つかの実施形態において、古い又は元のタイムフロー（例えば図５ｂ及び図６に示すタイムフロー１）の少なくとも一部分は、グラフィカルユーザインターフェースにおいて、ユーザに見えないようになっている。特に、古い又は元のタイムフロー（例えば図５ｂ及び図６に示すタイムフロー１）におけるロールバック時点に続く部分は、ユーザから見えないようになっている。例えば、図６を参照すると、元のタイムフロー（例えばタイムフロー１）におけるＴＲＢ以後の部分は、グラフィカルユーザインターフェースにおいて、ユーザから見えないようになっている。そのため、幾つかの実施形態では、元のタイムフロー（例えばタイムフロー１）上でロールバック時点以後に取得されたトランザクションログファイル及びスナップショットは、ユーザには隠される又は不顕である。別の実施形態において、或るＶＤＢに関連付けられた全てのタイムフローはユーザに提供され、該ユーザは、ＶＤＢの状態を、何れのタイムフローに沿う何れの状態にも変更できる。
【００６２】
一方、前記新しいタイムフロー（例えば図６に示すタイムフロー２）は、“現在の”タイムフローとして指定される。ロールバック時点以後に発生するＶＤＢに対する変更及び更新（例えばソースデータベースのデータベースブロックに対するへ変更のため）は、前記新しいタイムフロー又は“現在の”タイムフローに沿い同じコンテナ（例えばコンテナ１）に保存される（例えば時刻Ｔ３のスナップショット４及び時刻Ｔ４のスナップショット５、並びに、スナップショット間の変更を記述するトランザクションログファイル）。
【００６３】
元のタイムフロー上の共有された先行の変更（例えばロールバック時点以前の元のタイムフロー上の変更又は更新）は、ユーザから見えるようになっており、随意に、現在のタイムフローの部分として現れる。例えば、ＶＤＢスナップショットとして取得されたロールバック時点以前に元のタイムフローに沿ってＶＤＢに為された変更又は更新、及び、ロールバック時点以前のトランザクションログファイル（例えば時刻Ｔ0のスナップショット１及び時刻Ｔ1のスナップショット２）は、ユーザに見えるようになっている。
【００６４】
図７は、幾つかの実施形態に従い、現在又は過去のタイムフローに沿って仮想データベースを後ろに（例えばロールバックすること又は巻き戻すこと）又は前に（例えば早送りすること）移動するプロセスを説明する。幾つかの実施形態において、仮想データベースを巻き戻すための第２の手法は（例えば図５ｂを参照して説明したように）、追加として、記憶及び時間効率の良い方法で、現在又は過去のタイムフローに沿う任意の時点に、ユーザが仮想データベースを戻すこと、同様に、進めることを可能とすることに役立つ。特殊な場合として、ユーザは、巻き戻し実行直前に対応する時点にＶＤＢを移動する一方で、対応するタイムフローで新しいタイムフローを始めることにより、以前のＶＤＢ巻き戻しを効率的にやり直すことができる。
【００６５】
従って、ユーザが現在又は過去のタイムフローに沿う任意の時点にＶＤＢを効率的に戻すこと及び進めることができるように、データベース記憶システムは、ＶＤＢに関連付けられた（例えば同じコンテナ内にある）全てのタイムフロー（現在及び過去のもの）、スナップショット、及びトランザクションログファイル（複数スナップショット間のＶＤＢの更新及び変更に関するもの）を記憶及び保存する。その結果、データベース記憶システムは、ユーザが、保存された何れのタイムフローに沿う何れの時点にもＶＤＢをロールバックすること又は進めることを可能とする（例えば、図４ｂ及び図５ｂを参照して説明下通り、コンテナに記憶されたスナップショット及び随意でトランザクションログにアクセスすることにより）。
【００６６】
例えば、図７に示す通り、タイムフロー１は、経時的なＶＤＢ１に対する継続変化及び更新の履歴を記録する。スナップショット１、スナップショット２、及び、スナップショット３は、タイムフロー１に沿って、複数時点（例えば、時刻Ｔ０、時刻Ｔ１、及び、時刻Ｔ２）で取得される。
【００６７】
タイムフロー１に沿う時刻Ｔ２後の或る時点において、タイムフロー１に沿うロールバック時点１へＶＤＢ１をロールバックすることのユーザリクエストに応じて、データベース記憶システムは、ロールバック時点１でのＶＤＢ１の表現を取得し（例えば図５ｂを参照して説明した通り）、そして、ロールバック時点１から始まる新たなタイムフロー（タイムフロー２）を作成する。データベース記憶システムは、タイムフロー２に沿って、ロールバック時点１に後続するＶＤＢ１に対する複数の変更及び更新を追跡する。したがって、スナップショット４及びスナップショット５は、タイムフロー２に沿う時点（例えば時刻Ｔ３、及び、時刻Ｔ４）で取得される。コンテナ１は、前のタイムフロー（例えばタイムフロー１）、並びに、関連付けられたスナップショット（例えば、タイムフロー１に沿って取得されたスナップショット１、スナップショット２及びスナップショット３）及びトランザクションログを、記憶及び保存する。
【００６８】
同様に、ロールバック時点２へロールバックすることのユーザリクエストに応じて、データベース記憶システムは、新たなタイムフロー（タイムフロー３）を作成し、タイムフロー３（ロールバック時点２から始まるもの）に沿って、ＶＤＢ１に対する変更及ぶ更新を（スナップショット及びトランザクションログとともに）、記憶及び保存する。データベース記憶システム１００は、現在及び過去のタイムフロー、スナップショット、トランザクションログをコンテナ１に記憶する。
【００６９】
更に、同様に、ロールバック時点３へロールバックすることのユーザリクエストに応じて、データベース記憶システム１００は、新たなタイムフロー（タイムフロー４）を作成し、そして該タイムフロー４（ロールバック時点３から始まるもの）に沿うＶＤＢ１に対する更なる変更及び更新を（スナップショット及びトランザクションログとともに）、記憶及び保存する。データベース記憶システムは、現在及び過去のタイムフロー（タイムフロー１、タイムフロー２、タイムフロー３、及び、タイムフロー４）、スナップショット、及び、トランザクションログを、コンテナ１に記憶する。
【００７０】
図７は、また、タイムフロー１に沿うロールバック時点へのＶＤＢのロールバックを示し、実際のところ、データベース記憶システムは、コンテナに記憶された任意の現在又は過去のタイムフロー（例えばタイムフロー１、タイムフロー２、タイムフロー３、及び、タイムフロー４）に沿う１又は複数のロールバック時点にＶＤＢをロールバックするように構成される。
【００７１】
図８は、幾つかの実施形態に従う、データベースロールバックのときの、実時刻クロック及びシステム変更番号（ＳＣＮ）内の変更を説明する。幾つかの実施形態において、データベース記憶システム１００は、或るタイムフローにわたるＶＤＢに対する変更の追跡を続けるために、１つのコンテナ又は複数のシステム変更番号（ＳＣＮ）を維持する。したがって、システム変更番号は、或るタイムフローの進行に沿って増加される。同様に、幾つかの実施例において、ＶＤＢに対する変更又は更新の時刻に対応する実時刻値は、当該変更又は更新に関するＳＣＮと同時に記録及び保存される。例えば、図８に示す通り、タイムフロー１に沿って、システム変更番号（ＳＣＮ）は、実時刻１ＰＭのＳＣＮ１００（スナップショット１に対応する）から、実時刻２ＰＭのＳＣＮ２００（スナップショット２に対応する）へ、そして、実時刻３ＰＭのＳＣＮ３００（スナップショット３に対応する）へ増進又は増加される。
【００７２】
ＶＤＢロールバックの時点におい、データベース記憶システム１００は、該ロールバック時点から始まる新たなタイムフローを生成する；データベース記憶システムは、システム変更番号（ＳＣＮ）を、該ロールバック時点の値よりもわずかに大きい値に（例えば次に大きい整数値に）リセットする（例えば、現在の値又はロールバック直前の値に比べて減少する）。幾つかの実施形態において、ＶＤＢの変更又は更新の時刻に対応するＳＣＮ値及び実時刻値は、継続的に増加され、ＶＤＢ路―ルバック時点でリセットされない。
【００７３】
例えば、図８において、タイムフロー１又は元のタイムフローを参照すると、実時刻３：００ＰＭにおいて、ＳＣＮの値はロールバック行う以前は３００である。ロールバック時点ＴＲＢへのＶＤＢのロールバックの直後、現在のタイムフロー（例えばタイムフロー２）の作成にあたり、ＳＣＮ値は２０１に減少する（ＴＲＢでのＳＣＮ値２００の次に大きい整数値）が、実時刻は継続的に増進（例えば４：００ＰＭに増進）し、後戻りしない。幾つかの実施形態において、同じシステム変更番号を持つ複数のトランザクションログは、リセットログを開始すること（それによりＶＤＢの新たな具現を生成すること）により区別される。
【００７４】
図９ａ及び９ｂは、この発明の一実施形態に従い、データベース記憶システム内のデータベースインフラストラクシャオブジェクトを消去するための処理９００のフローチャートを示す。図９ａに示す通り、データベース記憶システム１００は、ターゲットサーバに仮想データベース（ＶＤＢ）を供給する（９１０）。該ＶＤＢは、或るコンテナ（例えば図５ｂのコンテナ１）に記憶された第１のタイムフロー（例えば図５ｂのタイムフロー１）、該第１のタイムフローに沿う各時刻値で取得された複数のスナップショット（例えば、図５ｂを参照して説明した、時刻Ｔ0のスナップショット１、時刻Ｔ1のスナップショット２及び時刻Ｔ２のスナップショット３）、及び、対応するスナップショット間の変更を記述する各トランザクションログ（例えば、時刻Ｔ0及び時刻Ｔ１の間のトランザクションログ４７０−ａ）を持つ。
【００７５】
データベース記憶システム１００は、第１のタイムフローに沿って、ユーザにより特定された時刻値の各ＶＤＢの表現（例えば、図５ｂに示すように、タイムフロー１に沿うロールバック時刻ＴＲＢのＶＤＢ１）を取り出すリクエストを、ユーザから取得する（９１５）。
【００７６】
前記のユーザリクエストに応じて、幾つかの実施形態において、データベース記憶システム１００は、各ＶＤＢに対するユーザアクセスを一時的に中断する（９２０）。データベース記憶システム１００は、ユーザにより特定された時刻値が第１のタイムフローに沿う各スナップショット時刻値（すなわち、或る時点のコピーが作られた時点）に対応しているかどうかに関して判断する（９２５）。
【００７７】
ユーザにより特定された時刻値が第１のタイムフローに沿う各スナップショット時刻値に対応しているという判断に応じて、データベース記憶システム１００は、ユーザにより特定された時刻値のＶＤＢの表現を取得するために、各スナップショット時刻値の各ＶＤＢのスナップショット（例えば図８に示すように、時刻ＴＲＢのＶＤＢ１のスナップショット２）のクローンをつくる（９３０）。ユーザにより特定された時刻値が第１のタイムフローに沿う各スナップショット時刻値に対応していないという判断に応じて、データベース記憶システム１００は、ユーザにより特定された時刻値の直前の各スナップショット時刻値の各ＶＤＢのスナップショット（例えば図５ｂに示すように、ロールバック時点ＴＲＢの直前の時刻Ｔ１のＶＤＢ１のスナップショット２）のクローンをつくる（９４０）。そして、データベース記憶システム１００は、ユーザにより特定された時刻値のＶＤＢのためのデータブロックの表現を取得するために、各スナップショット時刻からユーザにより特定された時刻値までのスナップショットのクローンにトランザクションログ（例えば、図５ｂに示す、時刻Ｔ１からロールバック時点ＴＲＢの間の複数のトランザクションログ）を適用する（９５０）。これにより、データベース記憶システム１００は、ユーザにより特定された時刻値（例えば、図５ｂに示すように、ロールバック時点ＴＲＢ）のＶＤＢの表現を取得できる。
【００７８】
データベース記憶システム１００は、各コンテナに第２のタイムフロー（例えば５ｂに示すように、コンテナ１にタイムフロー２）を生成する（９６０）。第２のタイムフローは、ユーザにより特定された時刻値（例えば、図５ｂに示す時刻値ＴＲＢ）から始まる。データベース記憶システム１００は、各ＶＤＢを第２のタイムフローに関連付ける（９７０）。データベース記憶システム１００は、第２のタイムフローに各宛先を指し示す（９８０）。データベース記憶システム１００は、第２のタイムフローに沿って、各宛先に各ＶＤＢを提示し、組み込む（９９０）。
【００７９】
図１０ａ乃至１０ｇは、幾つかの実施形態に従って、仮想データベーススナップショットを取り出し、ＶＤＢタイムフローとやり取りし、且つ、仮想データベース巻き戻し（又はロールバック）を行うためのグラフィカルユーザインタフェースの例を含む。
【００８０】
図１０ａは、幾つかの実施形態に従って、１又は複数のスナップショットカード１００２（例えば、スナップショット時刻及びシステム変更番号又はＳＮＣの両方を表示するもの）を含むグラフィカルユーザインタフェースの例を示す。図１０ａのグラフィカルユーザインタフェースは、更に、幾つかの実施形態に従いＶＤＢの巻き戻し又はロールバックを可能にする又は開始するためのユーザ対話アイコン（例えば巻き戻しボタン１００４）を含む。
【００８１】
図１０ｂは、幾つかの実施形態に従って、複数のスナップショットカードの間のタイムライン１００６の表示を含むグラフィカルユーザインタフェースの例を示す。幾つかの実施形態において、多数のタイムラインが表示され、１つのタイムラインはＶＤＢの各タイムフローに対応する。ユーザは、該ユーザがＶＤＢを巻き戻したい状態を特定するために、任意のタイムフロー及びそのタイムフローの時点を選択できる。
【００８２】
図１０ｃ及び１０ｄは、幾つかの実施形態に従って、複数のスナップショットカードの間でユーザにより選択された時点を含むグラフィカルユーザインタフェースの例を示す。選択された時点は、システム変更番号又はＳＣＮ（図１０ｃの１００８−ａ）及び実時刻値（図１０ｄの１００８−ｂ）に基づいて選択される。
【００８３】
図１０ｅ乃至１０ｇは、幾つかの実施形態に従ってＶＤＢ巻き戻しリクエストに応じて表示された複数のインタフェース（図１０ｅにおける１０１０−ａ、図１０ｆにおける１０１０−ｂ）を含むグラフィカルユーザインタフェースの例を示す。図１０ｅは、巻き戻し動作の確認をユーザにリクエストするユーザインタフェースを示す。ユーザが確認画面で「ｙｅｓ」を選択した場合、データベース記憶システム１００は、巻き戻し動作を始める。図１０ｆは、データベース記憶システム１００が例えばユーザ名とパスワードなど認証情報の提供をユーザに要求するユーザインタフェースを示す。これにより、データベース記憶システム１００は、ユーザが巻き戻し又はリフレッシュ動作の実行を許可されたユーザであるかどうかを確認できる。図１０ｇは、例えば、ＶＤＢの巻き戻し／リフレッシュの前後に実行されるべきプレスクリプト１０３０又はポストスクリプト１０３５を特定するために、ＶＤＢメタデータに対する変更をユーザが行えるようにする、ユーザインタフェースを示す。一実施形態において、プレスクリプトは、ＶＤＢに関連付けられたターゲットデータベースサーバの何れのプロセスもシャットダウンし、また、ポストスクリプトは、該ターゲットデータベースサーバの該プロセスを再開してよい。
【００８４】
図１０ａ乃至１０ｇに示されたものと同様なユーザインタフェースが示されており、ユーザはソースデータベースに基づいてＶＤＢをリフレッシュできる。ソースデータベース自身はプロダクションデータベースシステム１１０又はその他のＶＤＢであり得る。したがって、ソースデータベースの複数のタイムフローが示されており、ＶＤＢはソースデータベースのより最新の時点にリフレッシュされ得る。
付加的な構成の考察
【００８５】
この明細書において、複数のインスタンスが、単一のインスタンスとして説明されたコンポーネント、オペレーション又は構造を実装してよい。また、１又は複数の方法の個々のオペレーションは、個別のオペレーションとして説明及び記述され、１又は複数の別個のオペレーションは、同時に実行されてよいく、それらオペレーションが説明された順に実行される必要は無い。例示構成において個別コンポーネトとして提示された構造及び機能は、組み合わされた構造又は機能として実装されてよい。同様に、単一コンポーネトとして提示された構造及び機能は、別個のコンポーネントとして実装されてよい。これらの及びその他の変形、変更、追加及び改良は、この発明の範囲に含まれる。
【００８６】
或る実施形態は、この明細書においては、ロジック、もしくは、多数のコンポーネント、モジュール又は機構を含むように記載されている。モジュールは、ソフトウェアモジュール（例えば、コンピュータに読み取り可能な媒体に収録されたコード）、又は、ハードウェアモジュールであってよい。ハードウェアモジュールは、一定の動作を実行できる実体的ユニットであり、一定の方法で構成又は配置される。実施例において、１又は複数のコンピュータシステム（例えば、スタンドアローン、クライアント又はサーバコンピュータシステム）、若しくは、１つのコンピュータシステムの１又は複数のハードウェアモジュールは、前述した動作を実行するように動作する１つのハードウェアとして、ソフトウェア（例えば１つのアプリケーション又はアプリケーションの一部）により構成されてよい。
【００８７】
様々な実施形態において、ハードウェアモジュールは、機械的に又は電気的に実装されてよい。例えば、ハードウェアモジュールは、一定の動作を実行するように恒久的に構成された専用回路又はロジック（例えば、フィールドプログラマブルゲートアレー(ＦＰＧＡ)、又は、特定用途向け集積回路（ＡＳＩＣ）などの専用プロセッサなど）を備えてよい。ハードウェアモジュールは、また、一定の動作を実行するようにソフトウェアにより一時的に構成されたプログラム可能なロジック又は回路（例えば、汎用プロセッサ又はその他のプログラム可能なプロセッサに含まれるもの）を備えてよい。専用且つ恒久的に構成された回路で、又は、一時的に構成された回路（例えばソフトウェアにより構成されたもの）で、ハードウェアモジュールを機械的に実装する判断は、コスト及び時間を考慮してなされるものであるであることが理解されよう。
【００８８】
従って、“ハードウェアモジュール”という用語は、実体的エンティティを包含するものと理解されるべきであり、エンティティは、前述された一定の方法を行うよう、又は、前述された一定の動作を実行するよう、物理的に構成され、恒久的に構成されたもの（例えばハードウェア）、若しくは、一時的に構成されたもの（例えはプログラム）である。ここで使用されているように、“ハードウェア実装モジュール”はハードウェアモジュールを指す。ハードウェアモジュールが一時的に構成された（例えばプログラムされた）実施形態を考慮すると、複数のハードウェアモジュールのそれぞれが、どの時点においても、構成される若しくはインスタンスを作成される必要は無い。例えば、ハードウェアモジュールが、ソフトウェアを用いて構成された汎用プロセッサを備える場合には、該汎用プロセッサは、その時々において、それぞれ異なるハードウェアモジュールとして、構成されてよい。ソフトウェアは、したがって、例えば、ある時は特定のハードウェアモジュールを構成し、別の時は別のハードウェアモジュールを構成するためのプロセッサを構成してよい。
【００８９】
ハードウェアモジュールは、他の複数のハードウェアモジュールに情報を供給でき、また、他の複数のハードウェアモジュールから情報を受信できる。したがって、前述された複数のハードウェアモジュールは、通信可能に接続されているものとみされてよい。複数のかかるハードウェアモジュールが同時に存在している場合、通信は、該ハードウェアモジュールを接続する信号伝送（例えば、適宜の回路及びバスを圭優した）を通じて為される。複数のハードウェアモジュールがその時々で構成される若しくはインスタンスを作成される実施形態において、かかるハードウェアモジュール間の通信は、例えば、該複数のハードウェアモジュールがアクセスするメモリ構造体に対する情報の記憶及び検索を通じて為される。例えば、１つのハードウェアモジュールは、或る動作を実行し、そして、その動作の出力を、通信可能に接続されたメモリ装置に記憶する。さらなるハードウェアモジュールは、後の時点において、該メモリ装置にアクセスして、前記記憶された出力を取り出して、処理してよい。ハードウェアモジュールは、また、入力又は出力装置と通信を開始してよく、且つ、リソース（例えば情報の一群）に基づいて動作できる。
【００９０】
この明細書に記載された方法例の様々な動作は、関連する動作を実行するように一時的に（例えばソフトウェアにより）構成又は恒常的に構成された１又は複数のプロセッサによって、少なくとも部分的に実行されてよい。一時的に構成されるにせよ、恒常的に構成されるにせよ、かかるプロセッサは、１又は複数の動作又は機能を実行するように動作するプロセッサ実装したモジュールを構成してよい。ここで言及されたモジュールは、幾つかの実施例において、プロセッサ実装したモジュールを含んでよい。
【００９１】
同様に、この明細書に記載された方法は、少なくとも部分的に、プロセッサ実装されてよい。例えば、方法のうち少なくとも幾つかの動作は、１又は複数のプロセッサ、若しくは、プロセッサ実装したハードウェアモジュールにより実行されてよい。或る動作の実行は、１又は複数のプロセッサの間に分配されてよい。該１又は複数のプロセッサは、単一の装置内に存在するものに限らず、複数の装置にわたって配置されていてよい。幾つかの実施形態において、１つのプロセッサ又は複数のプロセッサは、単一の場所（例えば、家庭、オフィス、又は、サーバファームなど）に設置されてよい。別の実施形態において、複数のプロセッサは、複数の場所にわたり分散してよい。
【００９２】
１又は複数のプロセッサは、また、“クラウドコンピューティング”環境又は“ソフトウェアアズアサービス（ＳａａＳ）”における関連する動作の実行をサポートするように動作してもよい。例えば、動作の少なくとも幾つかは、或る複数コンピュータ（装置の例としてプロセッサを含む）からなるグループにより実行されてよく、それら動作は、ネットワーク（例えばインターネット）経由で、且つ、１又は複数の適宜のインタフェース（例えばアプリケーションプログラムインタフェース（ＡＰＩ））経由でアクセス可能である。
【００９３】
或る動作の実行は、１又は複数のプロセッサの間に分配されてよい。該１又は複数のプロセッサは、単一の装置内に存在するものに限らず、複数の装置にわたって配置されていてよい。幾つかの実施形態において、１又は複数のプロセッサ、若しくは、複数のプロセッサ実装したハードウェアは、単一の地理的場所（例えば、家庭、オフィス、又は、サーバファームなど）に設置されてよい。別の実施形態において、複数のプロセッサ、又は、複数のプロセッサ実装したハードウェアは、は、複数の地理的場所にわたり分散してよい。
【００９４】
この明細書の幾つかの部分は、アルゴリズムの用語、若しくは、機械メモリ（例えばコンピュータメモリ）ビット又はバイナリデジタル信号として記憶されたデータ上の動作の象徴により提示されている。これらアルゴリズム又は象徴は、データ処理技術の当業者により、かれらの仕事の大意を他の分野の者に伝えるために使用される技術の一例である。ここで使用されているように、“アルゴリズム”は、自己矛盾のない動作のシーケンス、又は、所望の結果を持ちびく同様な処理である。この文脈において、アルゴリズム及び動作は、物理量の物理的な操作を含む。典型的には、必須ではないが、かかる物理量は、機械により記憶され、アクセスされ、伝送され、組み合わされ、比較され、又は、何らかの操作され得る電気的、磁気的、又は、光学的信号の形式をとってよい。これら信号を、例えば、“データ”、“コンテンツ”、“ビット”、“値”、“エレメント”、“シンボル”、“キャラクター”、“用語”、“数”、“数字”などという言葉を使って参照することは、原則的には共通使用の理由から、時として便利である。こらの言葉は、しかしながら、単に便利なラベルであり、適宜の物理量と関連づけられるべきものである。
【００９５】
特に記載のない限り、この明細書における“プロセス”、“コンピューティング”、“計算”、“判断”、“提示”、“表示”などといった言葉を用いた議論は、メモリ、レジスタ、又は、情報を受信、保存、伝送又は表示するその他の機械コンポーネント内で物理量（電気的、磁気的、又は、光学的）として表されたデータを操作又は変形する機械（例えばコンピュータ）のアクション又はプロセスを指す。
【００９６】
明細書における“一実施形態”又は“或る実施形態”の何れの言及も、該実施例に関連した特定の要素、特徴、構造又は特性が少なくとも１つの実施例内に含まれることを意味する。明細書のさまざまな個所における一実施形態において” という表現の出現は、必ずしも、その全てが同じ実施形態に言及するものではない。
【００９７】
幾つかの実施形態は、“連結（coupled）”及び“接続（connected）”という表現を、それらの派生語とともに用いて記載されている。これら用語は、互いの同義語であることを意図していないことが理解されるべきである。例えば、幾つかの実施形態は、２以上の要素が互いに物理的又は電気的に直接接していることを示すために、用語“接続（connected）”を用いて記述される。別の例では、幾つかの実施形態は、２以上の要素が物理的又は電気的に直接接していることを示すために、用語“連結（coupled）”を用いて記述される。用語“連結（coupled）”は、しかしながら、また、２以上の要素が物理的又は電気的に直接接していないが、互いに協働又は相互作用することを示すことを意味するだろう。複数の実施形態は、この文脈に限定されない。
【００９８】
本明細書で使用されている“備える”、“具備している”、“含む”、“含んでいる”、“持つ”、“持っている”との用語、又は、それらのその他の任意の変形語も、非排他的な包摂をカバーしようとするものである。例えば、１組の要素を掲げてなるプロセス、方法、物又は装置は、必ずしもそれらの要素のみに限定されるものではなく、その他の明示的に掲げられていない要素又はそのようなプロセス、方法、物又は装置につきものその他の要素を含んでいてよい。更に、特に反対の意を表さない限り、「又は」とは、包括的な「又は」及び非排他的な「又は」のことである。例えば、Ａ又はＢという条件は、Ａが真（又は存在する）かつＢが偽（又は存在しない）、Ａが偽（又は存在しない）かつＢが真（又は存在する）、及びＡもＢも真（又は存在する）、のいずれか１つによって満足させられるものである。
【００９９】
加えて、「１」又は「或る」の使用は、本書中の実施例の構成要素及び成分を記述するために使用される。これは、単に便宜と、開示の一般性を与えるためになされる。この記述は１又は少なくとも１つを含むと読まれるべきであり、また、単一のとは、それが明らかにその反対を意味していない限り、複数も含む。
【０１００】
この開示を読むことにより、当業者は、記憶管理部に記憶されたプロダクションデータベースの或る時点のコピーから仮想データベースを生成するためのシステム及び処理についての更に追加の変形構成及び機能的設計が認識できるであろう。従って、特定の実施例及び応用が図示され説明されているが、本発明は、ここに説明した構成及び要素に正確に限定されるものではない。添付の請求の範囲で定義される精神と範囲から逸脱することなく、当業者にとって明白な様々な変形、変更、変化が、ここに開示した方法及び装置の構成、動作、詳細においてなされ得る。
【図１】
0006050917.tif 000002
【図２】
0006050917.tif 000003
【図３】
0006050917.tif 000004
【図４ａ】
0006050917.tif 000005
【図４ｂ】
0006050917.tif 000006
【図５ａ】
0006050917.tif 000007
【図５ｂ】
0006050917.tif 000008
【図６】
0006050917.tif 000009
【図７】
0006050917.tif 000010
【図８】
0006050917.tif 000011
【図９ａ】
0006050917.tif 000012
【図９ｂ】
0006050917.tif 000013
【図１０ａ】
0006050917.tif 000014
【図１０ｂ】
0006050917.tif 000015
【図１０ｃ】
0006050917.tif 000016
【図１０ｄ】
0006050917.tif 000017
【図１０ｅ】
0006050917.tif 000018
【図１０ｆ】
0006050917.tif 000019
【図１０ｇ】
0006050917.tif 000020