JP6050917B2 - 仮想データベースの巻き戻し - Google Patents

仮想データベースの巻き戻し Download PDF

Info

Publication number
JP6050917B2
JP6050917B2 JP2016525361A JP2016525361A JP6050917B2 JP 6050917 B2 JP6050917 B2 JP 6050917B2 JP 2016525361 A JP2016525361 A JP 2016525361A JP 2016525361 A JP2016525361 A JP 2016525361A JP 6050917 B2 JP6050917 B2 JP 6050917B2
Authority
JP
Japan
Prior art keywords
database
time
virtual
virtual database
snapshot
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016525361A
Other languages
English (en)
Other versions
JP2016526743A (ja
Inventor
ステュワート,マイケル,ジェームス
スン,ヒューバート,ケン
Original Assignee
デルフィクス コーポレーション
デルフィクス コーポレーション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by デルフィクス コーポレーション, デルフィクス コーポレーション filed Critical デルフィクス コーポレーション
Publication of JP2016526743A publication Critical patent/JP2016526743A/ja
Application granted granted Critical
Publication of JP6050917B2 publication Critical patent/JP6050917B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/256Integrating or interfacing systems involving database management systems in federated or virtual databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/219Managing data history or versioning

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Quality & Reliability (AREA)
  • Retry When Errors Occur (AREA)

Description

この発明は、概して、データベースに関し、特に、データベースを管理するための、記憶効率の良いシステムに関する。
データベースは、或る組織にとって重要なデータを記憶し、そのため、組織の情報技術インフラストラクチュアーの重要な部分を形成する。データベースソフトウェアは、しばしば、複雑であり、例えば、そのデータベースソフトウェアを管理するためのデータベース管理者など、専門家を必要とする。更に、データベースは大量の情報を記憶する。その結果、各種データベース動作を行うための従来技術は、とても動作速度が遅かった。例えば、開発及び試験のために、開発者及び/又は試験者は、或る時点で実在したままの、或るデータベースのコピーを必要とする。かかるデータベースを提供することは、その時点でデータベースのバックアップが適切にとられている場合にのみ可能となる。適切なバックアップがとられたものと仮定すると、データベース管理者は、しばしば、要求された状態にデータベースを修復するために、適切な対策を講じることを要求される。更に、修復動作は長時間かかる。データベース管理者との相互作用及びデータベース修復における全体的な遅延は、大きな影響を与え得る。その結果として、開発者及び/又は試験者は、適切なデータベース試験/開発が利用できるようになるまで待たなければ成らなかった。更に。開発及び試験過程における遅延は、問題解決に更なる遅延を引き起こし、生産性の損失をもたらす。その結果、特定の状態に対応するデータベースのコピーを提供するための従来技術は、しばしば、不適当だった。
実施形態は、VDBの状態を前記VDBの別の状態に変更することにより、巻き戻し動作を、仮想データベース(VDB)上で実行する。テータベース記憶システムは、ソースデータベースの複数のデータベースブロックについての或る時点のコピー群を示す、1つのソースデータベースに関する複数のスナップショットを記憶して、1又は複数のデータベースブロックが複数のスナップショットにわたり共有されるようにする。前記テータベース記憶システムは、前記ソースデータベースの1つのスナップショットの複数のデータベースブロックに基づく仮想データベースを提供する。前記テータベース記憶システムは、タイムフローが或る初期状態から始まる仮想データベースへの変更の表現を含むように、該仮想データベース用の複数のタイムフローを維持する。仮想データベースへの変更の表現は、1又は複数のデータベースブロックが仮想データベースの複数のスナップショットにわたり共有されるように、異なる時点で取得された仮想データベースの複数のスナップショットを含む。前記テータベース記憶システムは、仮想データベースを該仮想データベースの過去の状態に巻き戻すリクエストを受信する。前記リクエストは、仮想データベースの1つのタイムフローを特定し、また、該特定されたタイムフローに関連付けられた1つのターゲット時点を特定する。前記テータベース記憶システムは、前記タイムフローに関連付けられた前記仮想データベースの1つのスナップショットの複数のデータベースブロックを参照するように該仮想データベースを変更することにより、仮想データベースを巻き戻す。前記テータベース記憶システムは、巻き戻された仮想データベース用の新たな1つのタイムフローを維持する。この新しいタイムフローは、該巻き戻された仮想データベースに対するその後の更新により引き起こされた変化を表す。
複数実施形態は、VDBの状態を該VDBに関連付けられたソースデータベースの状態に変更するために、該VDBにおいてリフレッシュ動作を行う。データベース記憶システムは、ソースデータベース用の複数のタイムフローを維持する。各タイムフローは、前記ソースデータベースの初期状態から始まる、該ソースデータベースへの変更の表現を含む。前記変更の表現は、異なる時点で取得されたソースデータベースの複数のスナップショットを含む。前記テータベース記憶システムは、前記ソースデータベースの1つのスナップショットの複数のデータベースブロックに基づく仮想データベースを供給する。前記テータベース記憶システムは、前記仮想データベース用の複数のタイムフローを維持する。前記テータベース記憶システムは、該ソースデータベースのタイムフロー及び該タイムフローのターゲット時点により特定される該ソースデータベースの状態に該仮想データベースをリフレッシュするリクエストを受信する。前記テータベース記憶システムは、前記特定されたタイムフローに関連付けられたソースデータベースの1つのスナップショットの複数のデータベースブロックを参照するように該仮想データベースを変更することにより、仮想データベースをリフレッシュする。前記テータベース記憶システムは、リフレッシュされた仮想データベース用の新たな1つのタイムフローを維持する。この新しいタイムフローは、該リフレッシュされた仮想データベースに対するその後の更新により引き起こされた変化を表す。
この概要及び以下の詳細な説明に記載された特徴及び利点は、包括的ではない。多数の追加的特徴及び利点が、この出願の図面、明細書及び特許請求範囲を考慮すると、当業者にとって明白であろう。
この発明に一実施形態に従い、どのように情報がプロダクションデータベースからデータベース記憶システムにコピーされ、且つ、ファイル共有システムを用いる仮想データベースとして供給されるかを示す図。
一実施形態に従う仮想データベースを遠隔供給できるようにするシステム環境全体を説明する図。
幾つかの実施形態に従って、プロダクションデータベースから効率的な情報のコピーを記憶して、仮想データベースを供給するシステムの構造を示す図。
幾つかの実施形態に従って、仮想データベースに記憶されたデータの構造を説明する図。
幾つかの実施形態に従って、タイムフローに沿って様々な時点において、ソースデータベース内の変化に対応する、仮想データベースの複数のスナップショットを取得する処理を説明する図。
幾つかの実施形態に従って、ユーザにより特定された時点に仮想データベースを巻き戻すための第1のアプローチを説明する図。
幾つかの実施形態に従って、ユーザにより特定された時点に仮想データベースを巻き戻すための第2のアプローチを説明する図。
幾つかの実施形態に従って、仮想データベースのロールバック(又は巻き戻し)のインスタンスにおけるタイムフローの可視性を説明する図。
幾つかの実施形態に従って、仮想データベースをタイムフローに沿って、後ろに(例えば、ロールバック又は巻き戻し)、及び、前に(早送り)移動する処理を説明する図。
幾つかの実施形態に従って、仮想データベースのロールバックの際の、実時刻クロック及びシーケンス変更番号(SCN)の変化を説明する図。
この発明の一実施形態に従う、仮想データベースを巻き戻し又はロールバックのための処理のフローチャートを示す。 前記一実施形態に従う、仮想データベースを巻き戻し又はロールバックのための処理のフローチャートを示す。
幾つかの実施形態に従い、仮想データベーススナップショットを取り出し、複数のVDBタイムフローとやり取りし、また、仮想データベースの巻き戻し(又はロールバック)を行うための、グラフィカルユーザインタフェースの例示。 幾つかの実施形態に従い、仮想データベーススナップショットを取り出し、複数のVDBタイムフローとやり取りし、また、仮想データベースの巻き戻し(又はロールバック)を行うための、グラフィカルユーザインタフェースの例示。 幾つかの実施形態に従い、仮想データベーススナップショットを取り出し、複数のVDBタイムフローとやり取りし、また、仮想データベースの巻き戻し(又はロールバック)を行うための、グラフィカルユーザインタフェースの例示。 幾つかの実施形態に従い、仮想データベーススナップショットを取り出し、複数のVDBタイムフローとやり取りし、また、仮想データベースの巻き戻し(又はロールバック)を行うための、グラフィカルユーザインタフェースの例示。 幾つかの実施形態に従い、仮想データベーススナップショットを取り出し、複数のVDBタイムフローとやり取りし、また、仮想データベースの巻き戻し(又はロールバック)を行うための、グラフィカルユーザインタフェースの例示。 幾つかの実施形態に従い、仮想データベーススナップショットを取り出し、複数のVDBタイムフローとやり取りし、また、仮想データベースの巻き戻し(又はロールバック)を行うための、グラフィカルユーザインタフェースの例示。 幾つかの実施形態に従い、仮想データベーススナップショットを取り出し、複数のVDBタイムフローとやり取りし、また、仮想データベースの巻き戻し(又はロールバック)を行うための、グラフィカルユーザインタフェースの例示。
各図は、説明の目的でのみ、この発明の種々の実施形態を描いている。当業者は、この開示に示された発明の本質から逸脱することなく、この開示に示された構造及び方法の実施形態の変形が採用され得ることを、以下の説明から、理解するであろう。
更に、前記の遠隔供給アプローチは、時間差を超えて記憶装置に保存されるべきソースデータベースブロック(例えば、プロダクションデータベース内のデータベースブロック)に対する過去の変更、更新、又は、修正と、様々な時点で取得されたVDBスナップショットとしての効率的な実行とを可能とする。VDBのスナップショットとして保存されたソースデータベースに対するそれら過去の変更は、1以上の遠隔ターゲット(例えば開発)環境にわたり随意に複製され、ユーザがターゲットにおいて、過去の時点のVDBのコピーを、元に戻したり、あるいは、取り戻したりできるようにする。この、過去の時点のVDBのコピーを戻すプロセスを、VDBのロールバック又は巻き戻しと称する。
VDBを巻き戻すための幾つかのアプローチは、ユーザにより特定された過去の時点から(例えば前記データベース記憶システムに保存されたVDBのスナップショットにアクセスすることにより)新しい仮想データベースを生成すること、及び、ユーザが新しいVDBにアクセスし、且つ、変更できるようにすることを含む。この、VDBを巻き戻すアプローチの問題は、元のVDBの論理的アイデンティティとは異なる、新しい論理的アイデンティティ(例えば、新しい名前、新しいID、並びに、全てのVDBファイル及び関連付けられた構成ファイルの新しいコピー)を持つ新しいVDBの生成が、記憶及び実行において非効率的である点である。
従って、幾つかの実施形態は、ユーザにより特定された過去の時点での新しいVDBの生成を必要とせず、むしろ、元のVDBに関連付けられた新しいタイムフロー(過去のVDBタイムフローと同じコンテナ又はデータベース記憶システム内のもの)の生成を必要とするデータベースの巻き戻し又はロールバック方法を提供する。このアプローチは、巻き戻し時点からの新たなVDBの生成を含むアプローチと比較して、より早くより記憶効率の良いVDB巻き戻し動作を可能とする。
仮想データベースシステム
幾つかの実施形態において、1以上の仮想データベースは、特定時点におけるプロダクションデータベース又は仮想データベースの状態に基づいて生成される。前記1以上の仮想データベースは、任意に、個別にアクセス及び変更され得る。データベースは、コンピュータに実装されたアプリケーションにより使用するためにコンピュータに記憶されたデータを含む。データベースサーバは、前記データベースと相互作用できるコンピュータプログラムであり、例えば前記データベースに記憶されたデータにアクセスすることなど、データベースサービスを提供する。幾つかの実施形態は、動作中のプロダクションデータベースに替えて、プロダクションデータベースの複数のスナップショット又はプロダクションデータベースの複数のクローンの記憶レベルを用いて、仮想データベースを生成する。仮想データべースは、2009年10月21に出願され、現在は米国特許第8150808号として発行された、米国特許公報第12/603541号に記載されており、この参照によりその全体が組み込まれたものとする。
一実施形態において、前記プロダクションデータベースからの情報は、例えば周期的に等、様々なときに、記憶システムにコピーされる。このことは、これら異なる時点のプロダクションデータベースに関連付けられた前記データベースファイルの再構成を可能とする。前記情報は、情報の複数のコピーが必要なときにのみ作成されるように、前記記憶システム内に効率的な方法で管理されてよい。例えば、前記データベースの一部分が以前にコピーされた版から変更されていない場合、その不変更部分は、コピーする必要が無い。或る時点で生成された仮想データベースは、その時点で入手できる前記データベースの情報を含む複数ファイルからなる1セットとして記憶される。
仮想データベースは、データベースサーバにとっての必要に応じて、前記データベースに直前時点における前記プロダクションデータベースの状態に対応する該プロダクションデータベース用の前記複数のデータベースファイルを生成することにより、前記データベースサーバ上に生成されてよい。前記仮想データベースに対応する前記複数のファイルは、前記記憶システムに記憶された前記適切な複数のデータブロックに前記仮想データベースをリンクするファイル共有メカニズムを使用することにより前記データベースサーバに利用可能である。或るデータベースサーバが利用可能な仮想データベースを作成するプロセスは、仮想データベースの“プロヴィジョニング”(貼ochprovisioning")と呼ばれる。複数のVDBが、同じ時点での前記プロダクションデータベースの前記状態に基づいて提供(provision)され得る。他方、異なるVDBが、異なる時点での、同じプロダクションデータベース又は異なるプロダクションデータベースの状態に基づき提供され得る。また、複数のVDBが、別の複数のVDBに基づき提供され得る。
仮想データベースが供給された前記データベースサーバは、前記記憶システムに記憶されたファイルから読み出すこと、及び、該記憶システムに記憶されたファイルに書き込むことができる。データベースブロックは、それぞれ異なるVDBに関連付けられた異なるファイル間で共有されてよい。特に、データベースブロックは、対応する複数の仮想データベースシステム130がそのデータベースブロック内の情報を読み出すのみであり、該データベースブロックに書き込んでいない場合に、共有される。一実施形態において、前記仮想データベースマネジャー375は、必要な場合にのみ、複数のデータベースブロックのコピーを作成する。例えば、特定のデータベースブロックは、同じデータベースブロックから読み出す多数のVDBにより共有されるだろう。しかし、前記仮想データベースシステム130の1つが前記データベースブロックに書き込もうとする場合、該データベースブロックの別個のコピーが作成されるその書き込み動作により、該仮想データベースシステム130に対応するVDBにとって、そのデータベースブロックが、他のVDBにとってのものとは異なるものとなるからである。
図1は、或るプロダクションデータベースからデータベース記憶システムに情報をコピーし、仮想データベースとして供給する方法の一実施形態を示す。データベース記憶種システム100は、1又は複数のプロダクションデータベース110から複数のデータベースに関連付けられたデータを取り出し、且つ、そのデータを、後述する効率的な方法で記憶する。データベース管理者ユーザインタフェース140は、データベース記憶システム100によりサポートされた各種アクションを、データベース管理者が実行できるようにする。
管理システム140からのリクエストに応じて、又は、予め決められたスケジュールに基づいて、データベース記憶システム100は、プロダクションデータベース110に、データのリクエスト150を送信してよい。プロダクションデータベース110は、前記プロダクションデータベース内に記憶された情報を、ストリームデータ160として送信することにより、応答する。データベース記憶システム100は、プロダクションデータベース110により送信されたデータ160を受信し、且つ、そのデータを記憶する。データベース記憶システム100は、例えば、変更された複数のデータブロックの版(versions、変形)を保持し、且つ、変形されていないデータブロックを再利用することにより、効率的に情報を記憶する。
仮想データベースを生成するために、データベース記憶システム100は、所与の時点におけるプロダクションデータベース110に対応する情報を表すファイルを生成する。データベース記憶システム100は、ファイル共有システム120を用いて、仮想データベースシステム130に、前記対応するファイルを露出(expose)する。仮想データベースシステム130は、前記データベース記憶システム100により露出170されたファイルを用いて動作できるデータベースサーバを実行する。よって、前記プロダクションデータベースの仮想的コピーが、記憶効率の良い方法で、所与の時点に、仮想データベースシステム130のために生成される。
複数のVDBは、種々のワークフローシナリオにおいて使用され得る。図2は、一実施形態に従う仮想データベースの遠隔プロヴィジョニングを示すワークフローシナリオの一例を示す。複数のデータベース記憶システムを記憶する2つのサイトがある。ローカルサイト210aは、ソースデータ記憶部230aを備え、また、リモートサイト210bは、ターゲットデータ記憶部230bを備える。複数のソースデータベースシステム215があってよい。それらソースデータベースシステム215はデータ記憶部220を含む。ソースデータベースシステム215aは、データ記憶部220aを含み、また、ソースデータベースシステム215bは、データ記憶部220bを含む。ソースデータベースシステム215内のデータ記憶部220への変更は、ソースデータベース記憶システム100aにより周期的に受信245され、そして、ソースデータ記憶部230aに記憶される。データベースシステム240は、ソースデータベース記憶システム100aに複数の仮想データべースを作成し、VDBに対する読み出し/書き込み260aを行う。
ソースデータベース記憶システム100a内のデータへの変更を記述する情報は、ターゲットデータベース記憶システム100bに伝送250される。ソースデータベース記憶システム100a内のデータへの変更は、周期的に又は所定のスケジュールに基づいて、伝送250される。データベースシステム240bは、ターゲットデータベース記憶システム100bに複数の仮想データべースを作成する。データベースシステム240bは、前記VDBに対する読み出し/書き込みを許可される。
システム構成
図3は、プロダクションデータベースから記憶効率の良い情報のコピーを作成し、その情報を使って1又は複数の仮想データベースを供給する(プロヴィジョニングする)のに適したシステム環境を説明するハイレベルブロック図を示す。システム環境は、データベース記憶システム100、及び、1又は複数の仮想データベースシステム130を含む。図3のシステムは、必要な場合に、ネットワーク経由で互いに通信できる。図3は、例えば、プロダクションデータベース110又は管理システム140など、その他の使用されるシステムを描いていない。
データベース記憶システム100は、プロダクションデータベース110内の入手可能な情報を取り出して、それを記憶する。取り出された情報は、データベースに記憶されたデータ、トランザクションログ情報、データベースに関連するメタデータ情報、データベースのユーザに関連する情報などを含む複数のデータブロックを含む。取り出された情報は、また、データベースに関連付けられた構成ファイルを含む。例えば、データベースは、データベースに関連付けられた初期化パラメータを含む様々な構成パラメータを特定するためのベンダー特定構成ファイルを使用してよい。
記憶システムデータ記憶部390に記憶されたデータは、仮想データベースシステム130に露出され得る。仮想データベースシステム130は、そのデータをプロダクションデータベースシステム110に記憶された該プロダクションデータベースのコピーとして扱うことができる。データベース記憶システム100は、時点コピー(point-in-time copy)管理部310、トランザクションログ管理部320、インタフェース管理部330、記憶アロケーション管理部365、ファイル共有管理部370、仮想データベース管理部375、VDBタイムフロー管理部325、VDBロールバック管理部335、及び、記憶システムデータ記憶部390を含む。変形構成において、異なる及び/又は追加のモジュールがデータベース記憶システム100に含まれ得る。
前記時点コピー管理部310は、プロダクションDBデータ記憶部350に記憶されたデータベースの或る時点のコピー(“PITコピー”ともいう)を表す情報を取り出せというリクエストをベンダーインタフェーモジュール335に送信することにより、プロダクションデータベースシステム110とやり取りする。前記時点コピー管理部310は、記憶システムデータ記憶部390に、プロダクションデータベースシステム110から取得した前記データを記憶する。前記時点コピー管理部310により取り出された前記データは、プロダクションDBデータ記憶部350からコピーされているデータベースの複数のデータベースブロック(又はページ)に対応する。プロダクションDBデータ記憶部350の情報を取り出す最初のPITコピーリクエストの後、後続のPITコピーリクエストは、直前のリクエストの後にデータベース内で変更されたデータのみを取り出す必要があるだろう。第2のリクエストに応じてプロダクションDBデータ記憶部350からデータが取り出された時点に対応するデータベースのコピーを再構成するために、最初のリクエストにて収集されたデータは該第2のリクエストにより収集されたデータと組み合わされ得る。
トランザクションログ管理部320は、プロダクションデータベースシステム110に記憶されたトランザクションログの複数の部分を取り出せというリクエストを、該プロダクションデータベースシステム110に送信する。幾つかの実施形態において、トランザクションログ管理部320からのリクエストは、ベンダーインタフェーモジュール335に送信される。トランザクションログ管理部320により取得されたベンダーインタフェーモジュール335からの前記データは、記憶システムデータ記憶部390に記憶される。一実施形態において、トランザクションログのリクエストは、直前のトランザクションログのリクエストが処理された後のプロダクションデータベースシステム110におけるトランザクションログの変更のみを取り出す。トランザクションログ管理部320により取り出された複数のトランザクションログと組み合わされた前記時点コピー管理部310により取り出された前記複数のデータベースブロックは、複数の時点コピーが作成された複数の時点の間の過去の複数時点に対応する、プロダクションデータベースシステム110における1つのデータベースの1つのコピーを再構成するために使用され得る。
記憶アロケーション管理部365は、プロダクションデータベースシステム110から取り出されたデータを保存する機能を提供する。例えば、時点コピー管理部310は、プロダクションデータベースシステム110から取り出されたデータの複数のブロックを保存するために記憶アロケーション管理部の複数のAPIを呼び出す。記憶アロケーション管理部365は、プロダクションデータベースシステム110から取得されたであろうデータの各ブロックの様々な版を記録する。所与の時点のために、記憶アロケーション管理部365は、該所与の時点以前に取得されたデータのブロックの最新版を提供することをリクエストされ得る。記憶アロケーション管理部365は、また、データの複数のブロックのコピーを作成するために使用され得る。データの或るブロックが読み出しのためにのみコピーされた場合、記憶アロケーション管理部365は、出て行くデータのブロックの参照ポインターを保持するのに十分な記憶のみ割り当てる。しかし、コピーされたデータのブロックへの書き込みの試みがなされた場合、記憶アロケーション管理部365は、オリジナルのデータのブロックが更新されることを避けるために、データのブロックを実際にコピーするのに十分な記憶を割り当てる。
ファイル共有管理部370は、記憶システムデータ記憶部390に記憶された複数のファイルが、ネットワーク経由でデータベース記憶システム100に接続された複数のコンピュータの間で共有されるようにする。ファイル共有管理部370は、ファイルを共有するためにファイル共有システム120を使う。ファイルを共有するためのシステムの一例はネットワークファイルシステム(NFS)である。ファイルを共有するためのシステムは、ファイバーチャンネル記憶エリアネットワーク(FC−SAN)、又は、ネットワークアタッチトストレージ(NAS)、又は、それらの組み合わせ及び変形である。ファイルを共有するためのシステムは、スモールコンピュータシステムインターフェース(SCSI)プロトコル、インターネットスモールコンピュータシステムインターフェース(iSCSI)プロトコル、ファイバーチャンネルプロトコル、又は、その他の同様な及び関連するプロトコルに基づいてよい。幾つかの実施形態において、データベース記憶システム100は、ロジカルボリューム管理部を使用してよい。ファイル共有管理部370を使用して記憶システムデータ記憶部390に記憶された共有ファイルは、例えば仮想データシステム130など遠隔コンピュータが共有されたファイル内のデータにアクセスすることを可能とする。遠隔システムは、記憶システムデータ記憶部390により共有されたファイルから読み出すこと/該ファイルに書き込みことを可能とする。一実施形態において、複数のファイルが、例えば、NTFS、あるいは、UNIX(登録商標)ファイルシステム(UFS)などWINDOWS(登録商標)オペレーティングシステムのファイルシステムなど、所与のファイルシステムのディスクレイアウトを真似たフォーマットで編成される。
仮想データベース管理部375は、仮想データベースシステム130のための仮想データベースの生成リクエストを受信する。仮想データベースの生成リクエストは、管理システム140を用いてデータベース管理者により送信され、プロダクションデータベースシステム110、仮想データベースシステム130を特定し、仮想データベースを生成する必要のあった時点に対応する過去の時点を含んでよい。仮想データベース管理部375は、生成される仮想データベースに対応する必要なファイルを生成し、そのファイルを仮想データベースシステム130と共有する。仮想データベースシステム130の管理者は、プロダクションデータベースシステム110のデータベース管理者と異なっていてよい。
VDBタイムフロー管理部325は、仮想データベースに対応する1又は複数のタイムフローに関連付けられた記憶、更新、及び、情報の取り出しを維持する。VDBタイムフロー管理部325は、前記タイムフローに沿う1又は複数の時点、VDBファイルの更新又は変更に関連付けられたシーケンス変更番号及びトランザクションログ、前記タイムフローに沿う複数の時点の部分集合における複数のファイルのスナップショットなどを記述する情報を、保存する。一実施形態によれば、或るタイムフローの表現は、ソースデータベース又はVDBで行われた変更を記述する情報を保存する。一実施形態において、変更は効率的に保存される。例えば、様々な時点において、ソースデータベース又はVDBのコピー(又はスナップショット)は、1又は複数のデータベースブロックが複数時点のコピーにわたり共有されるように、保存される。特に、変更されていないデータベースブロックは、2つの連続する時点のコピーに共有され、更新されたデータベースブロックは、更新される前にコピーされる。一実施形態において、変更を記述する情報は、また、2つの時点のコピーを取得する期間内に行われた変更を表すトランザクションログを含む。
VDBロールバック管理部335は、或るタイムフローに沿って、ユーザにより特定された時点に或るVDBを巻き戻す又はロールバックすることのユーザリクエストを受信する。VDBロールバック管理部335は、仮想データベースに対応するタイムフロー情報にアクセスし、ユーザにより特定された時点での仮想データベースの表現を取り出すために、VDBタイムフロー管理部325と相互作用する。
仮想データベースシステム130は、データベースサーバ360とVDBシステムライブラリ380を含む。データベースサーバ360は、データベースサーバ345と機能的に同様であり、データベースサービス及びデータ記憶部350に記憶されたデータを管理するためのアプリケーションプログラミングインタフェース(API)を提供するコンピュータプログラムである。データベースサーバ360により管理されたデータは、ファイル共有システム120を使用するデータベース記憶システム100により共有される記憶システムデータ記憶部390に記憶されて良い。VDBシステムライブラリ380は、データベース記憶システム100により送信されたリクエストを処理するためのプログラムコードを含む。仮想データベースシステム130には、変形構成要素、異なる及び/又は追加的なモジュールが含まれ得る。
仮想データベースの或る時点のコピー(ここではスナップショットと呼ばれるもの)の生成
図4aは、VDBを表す読み出し/書き込みファイル構造を生成するために記憶効率の良いコピーを作成する方法を示す。図4に示す通り、複数の構造410は、プロダクションデータベースシステム110上の1つのデータベースに対応する複数のファイルを表す。構造Fi及びGiは、それぞれ、ファイル410に保存された複数のデータベースブロックを表す(FiはF1、F2、F3・・・を示し、同様にGiはG1、G2、G3・・・を示す)。矢印415は、異なる時刻TiにおけるPITコピー作成のプロセスを表す。時刻T0に作成された第1のPITコピー430は、データベース内の必要なデータベースブロック全てをコピーする必要がある。例えば、F1iはブロックFiのコピーを表し、ブロックG1iはブロックGiのコピーを表す。時刻T1に作成されたPITコピー435は、前回のPITコピー以後に変化したブロックのみをコピーするものであり、前記第1のPITコピーに比べてずっと少ないデータをコピーするだろう。同様に、時刻T2において、別のPITコピー440は、前回のPITコピー435以後に変化した複数のブロックをコピーさせる。
PITコピー440が図4に示された構成において作成された最後のPITコピーとすると、VDBファイル構造450は、時刻T2用に作成される。構造450が作成されたとき、ブロックV11、V12、・・・、V25は、データを保存している実際のデータベースのポインターとして実装される。例えば、V11はブロックF1内の情報を表しており、ブロックF1が時刻T1及びT2にて作成されたコピーの間に変更されなかったため、V11はF11を指す。V12はブロックF2内の情報を表しており、F2が時刻T1にて更新されたため、V12はブロックF22を指す。同様に、V13は、時刻T2で更新されたブロックF3に対応しており、ブロックF33を指す。
図4に示す構造450が読み出し/書き込み構造であるため、仮想データベースシステム130は、それら構造から読み出すことができ、また、それら構造に書き込むこともできる。仮想データベースシステム130が或るブロックVijに書き込んだ場合、そのデータベースブロックのためにスペースが割り当てられ、対応するデータベースブロックのデータが該割り当てられたスペースにコピーされる。例えば、仮想データベースシステム130がブロックV11に書き込む場合、スペースは割り当てられ、ブロックF11が割り当てられたブロックにコピーされる。従って、ブロックF11のオリジナルのコピーは、読み取り専用コピーとして維持され、仮想データベースシステム130は、当該仮想データベースシステム130のために生成された適切なデータベースブロックのコピーに書き込むことができる。このことは、対応する仮想データベースシステム130がデータベースブロックに書き込む場合にのみそのデータベースブロックのコピーを作成するという、データベースブロックのコピーを生成するためのレイジーな(緩慢な)機構とみなされ得る。仮想データベースシステム130が書き込みを行うデータベースブロックの数がVDBに関連付けられたブロック総数のごく一部となるため、前述の構造は、VDBに関連付けられたデータを極めて記憶効率の良い方法で記憶するものである。仮想データベースシステム130により書き込まれないデータベースブロックは、仮想データベースシステム130用にコピーされることなく、様々仮想データベースシステムに共有されて良い。
仮想データベースの或る時点のコピー(又はスナップショット)の生成の別の説明として、図4bは、幾つかの実施形態に従う、ソースデータベースにおける変更に対応する、仮想データベースのスナップショット取得(或るタイムライン又はタイムフローに沿う様々な時点での)のプロセスを示す。
図4bには、ソースデータベース(例えば、図4aを参照して説明したプロダクションデータベース110)に基づくデータベースブロック内の変更及びタイムフローに沿う1又は複数の時点で取得された複数のスナップショット内の対応する変更を示すタイムラインに沿う時間進行が示されている。図4aを参照して前述したとおり、ソースデータベース内の特定の複数のブロックの変更又は更新は、データベース記憶システム100内に記憶された対応するデータベースブロックの変更となる。逆に言えば、更新又は変更されていないソースデータベース内のデータベースブロックに対応するデータベース記憶システム100内に記憶されたデータベースブロックは、それら自身、変更又は更新されない。
従って、図4bのタイムフローに示す通り、或るスナップショット(例えばスナップショット1)は、時刻T0に取得される。時刻T0又は時刻T0以前(例えば直前スナップショットの取得に続いて)に、ハイライトされたソースデータベースブロック(例えば、図においてデータベースブロック460‐a)は更新又は変更される。その結果、データベース記憶システムは、変更されたソースデータベースブロックを受信して、それらを保存する(図4bに示す通り);時刻T0に取得されたスナップショット1は、したがって、スナップショット1の直前のスナップショットの取得の前に実行されたソースデータベースの変更に対応する変更を反映する。
続いて、図4bのタイムフローに示す通り、スナップショット2は、時刻T1に取得される。時刻T0及び時刻T1の間に更新又は変更されたソースデータベースブロックは、ハイライトで示される(例えば、図においてデータベースブロック460−b);データベース記憶システム100は、時刻T1に取得されたスナップショット2の反映として、変更されたソースデータベースブロックに対応するデータブロックを受信及び保存する。
時刻T0及び時刻T1の間に行われたVDBの変更は、時刻T0及び時刻T1の間のトランザクションログ470−aに反映される。図3を参照して前述した通り、トランザクションログは、スナップショットが取得された複数時刻の間(この例では時刻T0及び時刻T1の間)の複数の時点に対応するソースデータベースのコピーを再構成するために使用され得る。
更に、図4bに示すタイムフローに沿って、スナップショット3は時刻T2に取得される。時刻T1及び時刻T2の間に更新又は変更されたソースデータベースブロックは、ハイライトで示される(例えば、図においてデータベースブロック460−c);変更されたソースデータベースブロックに対応するVDBファイルは更新又は変更され、時刻T2に取得されたスナップショット3はVDBに反映される。時刻T1及び時刻T2の間に行われたVDBの変更は、時刻T1及び時刻T2の間のトランザクションログ470−bに反映され、トランザクションログ470−bは時刻T1及び時刻T2の間の複数の時点に対応するソースデータベースのコピーを再構成するために使用され得る。
結果として、複数のソースデータベースブロック(例えばプロダクションデータベース内のデータベースブロック)への変化、更新又は変更の履歴は、モニタされ、記憶及び実行効率の良い方法で、時を超えて保存され得る。そして、それら変化は遠隔ターゲット(例えば開発)環境を越えて複製される。タイムフローは、また、仮想データベースに行われた変化を表すために使用される。
仮想データベースの巻き戻し又はロールバック
図5aは、一実施形態に従い、ユーザにより特定された時点に仮想データベースを巻き戻す手法を示す。図5aに示す通り、仮想データベース(例えばVDB1)は、該仮想データベースに関連付けられたタイムフロー(例えばタイムフロー1)に沿う複数の時点でのそのソースデータベースの更新に基づいて(図4a乃至4bを参照して説明した通り)、変更又は更新される。図4a乃至4bを参照して説明した通り、仮想データベースのスナップショット及び仮想データベースに対する変更(関連付けられたソースデータベースの変更に対応するもの)は、タイムフロー1に沿って、複数時点の部分集合(例えばT0、T1、及びT2)にて取得及び保存される。幾つかの実施形態において、例えば仮想データベースに関連付けられたスナップショット及びトランザクションログなど、仮想デーtアベースに対する変更を表すタイムフローは、仮想データベースコンテナ(例えば図5aに示すコンテナ1)に保存される。
幾つかの実施形態において、或るコンテナは、例えばVDB又はソースデータベースを示すdソースなど、データッベース記憶システム内の或るデータベースの表現を保存する。或るコンテナは、VDB又はdソースに関連付けられた1又は複数のタイムフローを含んでよい。したがって、前記コンテナは、複数のスナップショット、複数のトランザクションログ、及び、VDB又はdソースに関連付けられたメタデータを表す。幾つかの実施形態において、タイムフローは、或る期間にわたる或るデータソース(例えば、外部システム又は別のVDBに記憶されたソースデータベース)に対する複数の変更を表す(例えば、トランザクションログを用いて、複数のスナップショット及び複数のスナップショット間の変更を保存することにより)。幾つかの実施形態において、VDBが過去に戻る(例えば該VDBの状態を、その直前の状態に変更するように該VDBを巻き戻す)又は時間的に先に進む(例えば、該VDBの状態を該VDBの巻き戻しに使用された状態に比べてタイムフローに沿ってより新しい状態に変更する;別の例として、VDBの状態を、ソースデータベースに対応するより新しい状態に更新するようにリフレッシュする)ので、多数のタイムフローがコンテナに保存される。各タイムフローは、VDBの初期状態及び該VDBの状態が該初期状態に更新された後に該VDBに行われた変更の表現に関連付けられている。
図5aにおいて、幾つかの実施形態に従う、VDBを巻き戻すための第1の手法が説明されている。現時点より以前の或る時点へ(例えば図5aにおけるロールバック時点TRBへ)仮想データベースをロールバック又は巻き戻すユーザリクエストに応じて、第1の手法に従うと、データベース記憶システムは、所望のロールバック時点のオリジナルVDBに基づいて、該オリジナルVDBとは異なる(例えばVDB1とは異なる)新たなVDB(例えばVDB2)を生成することにより、VDBロールバックをシミュレートする。言い換えれば、図5aの例において、仮想データベースのロールバックは、TRBのVDB1に基づいて、ロールバック時点TRBに、VDB1とは異なるVDB2を生成することにより、シミュレートされる。ロールバック時点にVDB1が存在する場合、VDB2は、TRBのVDB1に基づいて生成される。一方、ロールバック時点VDB1が存在しない場合(例えば、図5aに示す通り)、VDB2は、ロールバック時点にVDB1を再作成するための中間(interim)トランザクションログ(例えばT1及びTRBの間)を適用することにより、ロールバック時点の直前のVDB1のスナップショット(例えばT1のVDB1のスナップショット2)に基づいて生成される。
このような目的で、幾つかの実施形態においては、仮想データベースのロールバックのための第1の手法は、新しいVDBコンテナ(例えばコンテナ2)を作成すること、最直近のスナップショットにおける過去VDBに基づいて新しいVDBを作成すること(例えばスナップショット2のVDB1に基づいて新たなVDB2を作成すること)、及び、ロールバック時点を起源とする(例えばTRBから始まる)新たなタイムフロー(例えばタイムフロー2)を作成することを含む。かかる実施形態において、新たなVDB(例えばVDB2)は、オリジナルVDB(例えばVDB1)の論理的アイデンティティとは異なる、新たな論理的アイデンティティ(例えば、新たな名前、新たな識別子、及び、全VDBファイル及び関連する構成ファイルの新たなコピー)を持つ。
図5bは、別の実施形態に従って、ユーザにより特定された時点に仮想データベースを巻き戻すための別の手法を示す。このデータベースを巻き戻す手法は、過去の時点に発生した或るVDBの状態に、現在のVDBの状態を更新することを含む。したがって、VDBのコンテナは、VDBの状態を変えるように変更され、それにより新しい論理的アイデンティティを持った新しいVDBを作成する必要がなくなる。VDBの状態は、以前の時点に対応するデータベースブロックを指すためのVDBを表す構造を変更することにより変わる。したがって、幾つかの実施形態において、VDBを巻き戻すための第2の手法(例えば図5bを参照して後述されるもの)は、第1の手法(例えば図5aを参照して前述したもの)に比べて、より記憶及び時間効率のよい、仮想データベース巻き戻し手法を提供する。
幾つかの実施形態において、図5bに示す通り、仮想データベース(例えばVDB1は、該仮想データベースに関連付けられたタイムフロー(例えばタイムフロー1)に沿う複数の時点でのそのソースデータベースに対する更新に基づいて変更又は更新される。仮想データベースの複数のスナップショット及び該仮想データベースに対する変更(関連するソースデータベースにおける変更に対応するもの)は、タイムフロー1に沿う複数の時点(例えばT0、T1、and及びT2)の部分集合において取得及び保存される。幾つかの実施形態において、仮想データベースに関連付けられたスナップショット(ソースデータベースにおける変更に対応するもの)及び前記タイムフローに対応する情報は、仮想データベースコンテナ(例えば図5bにおけるVDBコンテナ)に保存される。
過去の時点へのVDBのロールバック又は巻き戻しユーザリクエストに応じて、図5bに示す通り、第2の手法においては、データベース記憶システムは、同じ名前及び識別子を持ち、同じコンテナにある同じVDBを保持し、同じコンテナにある新しいタイムフロー(例えば、タイムフロー2、又は、“現在の”タイムフローと呼ばれるもの)を作成し、そして、該新たなタイムフローから前記同じVDB(例えばVDB1)を供給する。
この目的のため、幾つかの実施形態のいては、データベース記憶システムは、一時的に、VDB1をシャットダウンし(例えばVDB1に対するユーザアクセスを一時停止し)、同じコンテナ内に新しいタイムロー(例えばコンテナ1内のタイムフロー2)を生成し、該新しいタイムフローの宛先記憶部を指し示し、そして、該新しいタイムフロー(例えばタイムフロー2)から供給された同じオリジナルVDB(例えばVDB1)を提示する(bring up)。
言い換えれば、データベース記憶システムは、ロールバック以前と同じではあるが、特定の時点に対応する複数データベースブロックからなる1セットを指し示した宛先に、同じ複数のVDBファイル(例えばVDB1に対応する複数のファイル)を組み込む。前記VDBのコンテナは、新しいタイムフロー(すなわち、タイムフロー1ではなく、“現在の”タイムフローを為すタイムフロー2)を含み、そして、該新しいタイムフロー(タイムフロー2)に沿ってVDBに対する変更を追跡する(例えば、時刻T3のスナップショット4及び時刻T4のスナップショット5などのVDBスナップショット、並びに、スナップショット間のトランザクションログファイルを取得し、維持することにより)。
図6は、幾つかの実施形態に従う、仮想データベースのロールバック(又は巻き戻し)のインスタンスにおけるタイムフローのユーザ視認性(例えば、グラフィカルユーザインターフェース)を説明する。VDBを巻き戻すための第2の手法に関連して(例えば、図5bを参照して前述した通り)、幾つかの実施形態において、古い又は元のタイムフロー(例えば図5b及び図6に示すタイムフロー1)の少なくとも一部分は、グラフィカルユーザインターフェースにおいて、ユーザに見えないようになっている。特に、古い又は元のタイムフロー(例えば図5b及び図6に示すタイムフロー1)におけるロールバック時点に続く部分は、ユーザから見えないようになっている。例えば、図6を参照すると、元のタイムフロー(例えばタイムフロー1)におけるTRB以後の部分は、グラフィカルユーザインターフェースにおいて、ユーザから見えないようになっている。そのため、幾つかの実施形態では、元のタイムフロー(例えばタイムフロー1)上でロールバック時点以後に取得されたトランザクションログファイル及びスナップショットは、ユーザには隠される又は不顕である。別の実施形態において、或るVDBに関連付けられた全てのタイムフローはユーザに提供され、該ユーザは、VDBの状態を、何れのタイムフローに沿う何れの状態にも変更できる。
一方、前記新しいタイムフロー(例えば図6に示すタイムフロー2)は、“現在の”タイムフローとして指定される。ロールバック時点以後に発生するVDBに対する変更及び更新(例えばソースデータベースのデータベースブロックに対するへ変更のため)は、前記新しいタイムフロー又は“現在の”タイムフローに沿い同じコンテナ(例えばコンテナ1)に保存される(例えば時刻T3のスナップショット4及び時刻T4のスナップショット5、並びに、スナップショット間の変更を記述するトランザクションログファイル)。
元のタイムフロー上の共有された先行の変更(例えばロールバック時点以前の元のタイムフロー上の変更又は更新)は、ユーザから見えるようになっており、随意に、現在のタイムフローの部分として現れる。例えば、VDBスナップショットとして取得されたロールバック時点以前に元のタイムフローに沿ってVDBに為された変更又は更新、及び、ロールバック時点以前のトランザクションログファイル(例えば時刻T0のスナップショット1及び時刻T1のスナップショット2)は、ユーザに見えるようになっている。
図7は、幾つかの実施形態に従い、現在又は過去のタイムフローに沿って仮想データベースを後ろに(例えばロールバックすること又は巻き戻すこと)又は前に(例えば早送りすること)移動するプロセスを説明する。幾つかの実施形態において、仮想データベースを巻き戻すための第2の手法は(例えば図5bを参照して説明したように)、追加として、記憶及び時間効率の良い方法で、現在又は過去のタイムフローに沿う任意の時点に、ユーザが仮想データベースを戻すこと、同様に、進めることを可能とすることに役立つ。特殊な場合として、ユーザは、巻き戻し実行直前に対応する時点にVDBを移動する一方で、対応するタイムフローで新しいタイムフローを始めることにより、以前のVDB巻き戻しを効率的にやり直すことができる。
従って、ユーザが現在又は過去のタイムフローに沿う任意の時点にVDBを効率的に戻すこと及び進めることができるように、データベース記憶システムは、VDBに関連付けられた(例えば同じコンテナ内にある)全てのタイムフロー(現在及び過去のもの)、スナップショット、及びトランザクションログファイル(複数スナップショット間のVDBの更新及び変更に関するもの)を記憶及び保存する。その結果、データベース記憶システムは、ユーザが、保存された何れのタイムフローに沿う何れの時点にもVDBをロールバックすること又は進めることを可能とする(例えば、図4b及び図5bを参照して説明下通り、コンテナに記憶されたスナップショット及び随意でトランザクションログにアクセスすることにより)。
例えば、図7に示す通り、タイムフロー1は、経時的なVDB1に対する継続変化及び更新の履歴を記録する。スナップショット1、スナップショット2、及び、スナップショット3は、タイムフロー1に沿って、複数時点(例えば、時刻T0、時刻T1、及び、時刻T2)で取得される。
タイムフロー1に沿う時刻T2後の或る時点において、タイムフロー1に沿うロールバック時点1へVDB1をロールバックすることのユーザリクエストに応じて、データベース記憶システムは、ロールバック時点1でのVDB1の表現を取得し(例えば図5bを参照して説明した通り)、そして、ロールバック時点1から始まる新たなタイムフロー(タイムフロー2)を作成する。データベース記憶システムは、タイムフロー2に沿って、ロールバック時点1に後続するVDB1に対する複数の変更及び更新を追跡する。したがって、スナップショット4及びスナップショット5は、タイムフロー2に沿う時点(例えば時刻T3、及び、時刻T4)で取得される。コンテナ1は、前のタイムフロー(例えばタイムフロー1)、並びに、関連付けられたスナップショット(例えば、タイムフロー1に沿って取得されたスナップショット1、スナップショット2及びスナップショット3)及びトランザクションログを、記憶及び保存する。
同様に、ロールバック時点2へロールバックすることのユーザリクエストに応じて、データベース記憶システムは、新たなタイムフロー(タイムフロー3)を作成し、タイムフロー3(ロールバック時点2から始まるもの)に沿って、VDB1に対する変更及ぶ更新を(スナップショット及びトランザクションログとともに)、記憶及び保存する。データベース記憶システム100は、現在及び過去のタイムフロー、スナップショット、トランザクションログをコンテナ1に記憶する。
更に、同様に、ロールバック時点3へロールバックすることのユーザリクエストに応じて、データベース記憶システム100は、新たなタイムフロー(タイムフロー4)を作成し、そして該タイムフロー4(ロールバック時点3から始まるもの)に沿うVDB1に対する更なる変更及び更新を(スナップショット及びトランザクションログとともに)、記憶及び保存する。データベース記憶システムは、現在及び過去のタイムフロー(タイムフロー1、タイムフロー2、タイムフロー3、及び、タイムフロー4)、スナップショット、及び、トランザクションログを、コンテナ1に記憶する。
図7は、また、タイムフロー1に沿うロールバック時点へのVDBのロールバックを示し、実際のところ、データベース記憶システムは、コンテナに記憶された任意の現在又は過去のタイムフロー(例えばタイムフロー1、タイムフロー2、タイムフロー3、及び、タイムフロー4)に沿う1又は複数のロールバック時点にVDBをロールバックするように構成される。
図8は、幾つかの実施形態に従う、データベースロールバックのときの、実時刻クロック及びシステム変更番号(SCN)内の変更を説明する。幾つかの実施形態において、データベース記憶システム100は、或るタイムフローにわたるVDBに対する変更の追跡を続けるために、1つのコンテナ又は複数のシステム変更番号(SCN)を維持する。したがって、システム変更番号は、或るタイムフローの進行に沿って増加される。同様に、幾つかの実施例において、VDBに対する変更又は更新の時刻に対応する実時刻値は、当該変更又は更新に関するSCNと同時に記録及び保存される。例えば、図8に示す通り、タイムフロー1に沿って、システム変更番号(SCN)は、実時刻1PMのSCN100(スナップショット1に対応する)から、実時刻2PMのSCN200(スナップショット2に対応する)へ、そして、実時刻3PMのSCN300(スナップショット3に対応する)へ増進又は増加される。
VDBロールバックの時点におい、データベース記憶システム100は、該ロールバック時点から始まる新たなタイムフローを生成する;データベース記憶システムは、システム変更番号(SCN)を、該ロールバック時点の値よりもわずかに大きい値に(例えば次に大きい整数値に)リセットする(例えば、現在の値又はロールバック直前の値に比べて減少する)。幾つかの実施形態において、VDBの変更又は更新の時刻に対応するSCN値及び実時刻値は、継続的に増加され、VDB路―ルバック時点でリセットされない。
例えば、図8において、タイムフロー1又は元のタイムフローを参照すると、実時刻3:00PMにおいて、SCNの値はロールバック行う以前は300である。ロールバック時点TRBへのVDBのロールバックの直後、現在のタイムフロー(例えばタイムフロー2)の作成にあたり、SCN値は201に減少する(TRBでのSCN値200の次に大きい整数値)が、実時刻は継続的に増進(例えば4:00PMに増進)し、後戻りしない。幾つかの実施形態において、同じシステム変更番号を持つ複数のトランザクションログは、リセットログを開始すること(それによりVDBの新たな具現を生成すること)により区別される。
図9a及び9bは、この発明の一実施形態に従い、データベース記憶システム内のデータベースインフラストラクシャオブジェクトを消去するための処理900のフローチャートを示す。図9aに示す通り、データベース記憶システム100は、ターゲットサーバに仮想データベース(VDB)を供給する(910)。該VDBは、或るコンテナ(例えば図5bのコンテナ1)に記憶された第1のタイムフロー(例えば図5bのタイムフロー1)、該第1のタイムフローに沿う各時刻値で取得された複数のスナップショット(例えば、図5bを参照して説明した、時刻T0のスナップショット1、時刻T1のスナップショット2及び時刻T2のスナップショット3)、及び、対応するスナップショット間の変更を記述する各トランザクションログ(例えば、時刻T0及び時刻T1の間のトランザクションログ470−a)を持つ。
データベース記憶システム100は、第1のタイムフローに沿って、ユーザにより特定された時刻値の各VDBの表現(例えば、図5bに示すように、タイムフロー1に沿うロールバック時刻TRBのVDB1)を取り出すリクエストを、ユーザから取得する(915)。
前記のユーザリクエストに応じて、幾つかの実施形態において、データベース記憶システム100は、各VDBに対するユーザアクセスを一時的に中断する(920)。データベース記憶システム100は、ユーザにより特定された時刻値が第1のタイムフローに沿う各スナップショット時刻値(すなわち、或る時点のコピーが作られた時点)に対応しているかどうかに関して判断する(925)。
ユーザにより特定された時刻値が第1のタイムフローに沿う各スナップショット時刻値に対応しているという判断に応じて、データベース記憶システム100は、ユーザにより特定された時刻値のVDBの表現を取得するために、各スナップショット時刻値の各VDBのスナップショット(例えば図8に示すように、時刻TRBのVDB1のスナップショット2)のクローンをつくる(930)。ユーザにより特定された時刻値が第1のタイムフローに沿う各スナップショット時刻値に対応していないという判断に応じて、データベース記憶システム100は、ユーザにより特定された時刻値の直前の各スナップショット時刻値の各VDBのスナップショット(例えば図5bに示すように、ロールバック時点TRBの直前の時刻T1のVDB1のスナップショット2)のクローンをつくる(940)。そして、データベース記憶システム100は、ユーザにより特定された時刻値のVDBのためのデータブロックの表現を取得するために、各スナップショット時刻からユーザにより特定された時刻値までのスナップショットのクローンにトランザクションログ(例えば、図5bに示す、時刻T1からロールバック時点TRBの間の複数のトランザクションログ)を適用する(950)。これにより、データベース記憶システム100は、ユーザにより特定された時刻値(例えば、図5bに示すように、ロールバック時点TRB)のVDBの表現を取得できる。
データベース記憶システム100は、各コンテナに第2のタイムフロー(例えば5bに示すように、コンテナ1にタイムフロー2)を生成する(960)。第2のタイムフローは、ユーザにより特定された時刻値(例えば、図5bに示す時刻値TRB)から始まる。データベース記憶システム100は、各VDBを第2のタイムフローに関連付ける(970)。データベース記憶システム100は、第2のタイムフローに各宛先を指し示す(980)。データベース記憶システム100は、第2のタイムフローに沿って、各宛先に各VDBを提示し、組み込む(990)。
図10a乃至10gは、幾つかの実施形態に従って、仮想データベーススナップショットを取り出し、VDBタイムフローとやり取りし、且つ、仮想データベース巻き戻し(又はロールバック)を行うためのグラフィカルユーザインタフェースの例を含む。
図10aは、幾つかの実施形態に従って、1又は複数のスナップショットカード1002(例えば、スナップショット時刻及びシステム変更番号又はSNCの両方を表示するもの)を含むグラフィカルユーザインタフェースの例を示す。図10aのグラフィカルユーザインタフェースは、更に、幾つかの実施形態に従いVDBの巻き戻し又はロールバックを可能にする又は開始するためのユーザ対話アイコン(例えば巻き戻しボタン1004)を含む。
図10bは、幾つかの実施形態に従って、複数のスナップショットカードの間のタイムライン1006の表示を含むグラフィカルユーザインタフェースの例を示す。幾つかの実施形態において、多数のタイムラインが表示され、1つのタイムラインはVDBの各タイムフローに対応する。ユーザは、該ユーザがVDBを巻き戻したい状態を特定するために、任意のタイムフロー及びそのタイムフローの時点を選択できる。
図10c及び10dは、幾つかの実施形態に従って、複数のスナップショットカードの間でユーザにより選択された時点を含むグラフィカルユーザインタフェースの例を示す。選択された時点は、システム変更番号又はSCN(図10cの1008−a)及び実時刻値(図10dの1008−b)に基づいて選択される。
図10e乃至10gは、幾つかの実施形態に従ってVDB巻き戻しリクエストに応じて表示された複数のインタフェース(図10eにおける1010−a、図10fにおける1010−b)を含むグラフィカルユーザインタフェースの例を示す。図10eは、巻き戻し動作の確認をユーザにリクエストするユーザインタフェースを示す。ユーザが確認画面で「yes」を選択した場合、データベース記憶システム100は、巻き戻し動作を始める。図10fは、データベース記憶システム100が例えばユーザ名とパスワードなど認証情報の提供をユーザに要求するユーザインタフェースを示す。これにより、データベース記憶システム100は、ユーザが巻き戻し又はリフレッシュ動作の実行を許可されたユーザであるかどうかを確認できる。図10gは、例えば、VDBの巻き戻し/リフレッシュの前後に実行されるべきプレスクリプト1030又はポストスクリプト1035を特定するために、VDBメタデータに対する変更をユーザが行えるようにする、ユーザインタフェースを示す。一実施形態において、プレスクリプトは、VDBに関連付けられたターゲットデータベースサーバの何れのプロセスもシャットダウンし、また、ポストスクリプトは、該ターゲットデータベースサーバの該プロセスを再開してよい。
図10a乃至10gに示されたものと同様なユーザインタフェースが示されており、ユーザはソースデータベースに基づいてVDBをリフレッシュできる。ソースデータベース自身はプロダクションデータベースシステム110又はその他のVDBであり得る。したがって、ソースデータベースの複数のタイムフローが示されており、VDBはソースデータベースのより最新の時点にリフレッシュされ得る。
付加的な構成の考察
この明細書において、複数のインスタンスが、単一のインスタンスとして説明されたコンポーネント、オペレーション又は構造を実装してよい。また、1又は複数の方法の個々のオペレーションは、個別のオペレーションとして説明及び記述され、1又は複数の別個のオペレーションは、同時に実行されてよいく、それらオペレーションが説明された順に実行される必要は無い。例示構成において個別コンポーネトとして提示された構造及び機能は、組み合わされた構造又は機能として実装されてよい。同様に、単一コンポーネトとして提示された構造及び機能は、別個のコンポーネントとして実装されてよい。これらの及びその他の変形、変更、追加及び改良は、この発明の範囲に含まれる。
或る実施形態は、この明細書においては、ロジック、もしくは、多数のコンポーネント、モジュール又は機構を含むように記載されている。モジュールは、ソフトウェアモジュール(例えば、コンピュータに読み取り可能な媒体に収録されたコード)、又は、ハードウェアモジュールであってよい。ハードウェアモジュールは、一定の動作を実行できる実体的ユニットであり、一定の方法で構成又は配置される。実施例において、1又は複数のコンピュータシステム(例えば、スタンドアローン、クライアント又はサーバコンピュータシステム)、若しくは、1つのコンピュータシステムの1又は複数のハードウェアモジュールは、前述した動作を実行するように動作する1つのハードウェアとして、ソフトウェア(例えば1つのアプリケーション又はアプリケーションの一部)により構成されてよい。
様々な実施形態において、ハードウェアモジュールは、機械的に又は電気的に実装されてよい。例えば、ハードウェアモジュールは、一定の動作を実行するように恒久的に構成された専用回路又はロジック(例えば、フィールドプログラマブルゲートアレー(FPGA)、又は、特定用途向け集積回路(ASIC)などの専用プロセッサなど)を備えてよい。ハードウェアモジュールは、また、一定の動作を実行するようにソフトウェアにより一時的に構成されたプログラム可能なロジック又は回路(例えば、汎用プロセッサ又はその他のプログラム可能なプロセッサに含まれるもの)を備えてよい。専用且つ恒久的に構成された回路で、又は、一時的に構成された回路(例えばソフトウェアにより構成されたもの)で、ハードウェアモジュールを機械的に実装する判断は、コスト及び時間を考慮してなされるものであるであることが理解されよう。
従って、“ハードウェアモジュール”という用語は、実体的エンティティを包含するものと理解されるべきであり、エンティティは、前述された一定の方法を行うよう、又は、前述された一定の動作を実行するよう、物理的に構成され、恒久的に構成されたもの(例えばハードウェア)、若しくは、一時的に構成されたもの(例えはプログラム)である。ここで使用されているように、“ハードウェア実装モジュール”はハードウェアモジュールを指す。ハードウェアモジュールが一時的に構成された(例えばプログラムされた)実施形態を考慮すると、複数のハードウェアモジュールのそれぞれが、どの時点においても、構成される若しくはインスタンスを作成される必要は無い。例えば、ハードウェアモジュールが、ソフトウェアを用いて構成された汎用プロセッサを備える場合には、該汎用プロセッサは、その時々において、それぞれ異なるハードウェアモジュールとして、構成されてよい。ソフトウェアは、したがって、例えば、ある時は特定のハードウェアモジュールを構成し、別の時は別のハードウェアモジュールを構成するためのプロセッサを構成してよい。
ハードウェアモジュールは、他の複数のハードウェアモジュールに情報を供給でき、また、他の複数のハードウェアモジュールから情報を受信できる。したがって、前述された複数のハードウェアモジュールは、通信可能に接続されているものとみされてよい。複数のかかるハードウェアモジュールが同時に存在している場合、通信は、該ハードウェアモジュールを接続する信号伝送(例えば、適宜の回路及びバスを圭優した)を通じて為される。複数のハードウェアモジュールがその時々で構成される若しくはインスタンスを作成される実施形態において、かかるハードウェアモジュール間の通信は、例えば、該複数のハードウェアモジュールがアクセスするメモリ構造体に対する情報の記憶及び検索を通じて為される。例えば、1つのハードウェアモジュールは、或る動作を実行し、そして、その動作の出力を、通信可能に接続されたメモリ装置に記憶する。さらなるハードウェアモジュールは、後の時点において、該メモリ装置にアクセスして、前記記憶された出力を取り出して、処理してよい。ハードウェアモジュールは、また、入力又は出力装置と通信を開始してよく、且つ、リソース(例えば情報の一群)に基づいて動作できる。
この明細書に記載された方法例の様々な動作は、関連する動作を実行するように一時的に(例えばソフトウェアにより)構成又は恒常的に構成された1又は複数のプロセッサによって、少なくとも部分的に実行されてよい。一時的に構成されるにせよ、恒常的に構成されるにせよ、かかるプロセッサは、1又は複数の動作又は機能を実行するように動作するプロセッサ実装したモジュールを構成してよい。ここで言及されたモジュールは、幾つかの実施例において、プロセッサ実装したモジュールを含んでよい。
同様に、この明細書に記載された方法は、少なくとも部分的に、プロセッサ実装されてよい。例えば、方法のうち少なくとも幾つかの動作は、1又は複数のプロセッサ、若しくは、プロセッサ実装したハードウェアモジュールにより実行されてよい。或る動作の実行は、1又は複数のプロセッサの間に分配されてよい。該1又は複数のプロセッサは、単一の装置内に存在するものに限らず、複数の装置にわたって配置されていてよい。幾つかの実施形態において、1つのプロセッサ又は複数のプロセッサは、単一の場所(例えば、家庭、オフィス、又は、サーバファームなど)に設置されてよい。別の実施形態において、複数のプロセッサは、複数の場所にわたり分散してよい。
1又は複数のプロセッサは、また、“クラウドコンピューティング”環境又は“ソフトウェアアズアサービス(SaaS)”における関連する動作の実行をサポートするように動作してもよい。例えば、動作の少なくとも幾つかは、或る複数コンピュータ(装置の例としてプロセッサを含む)からなるグループにより実行されてよく、それら動作は、ネットワーク(例えばインターネット)経由で、且つ、1又は複数の適宜のインタフェース(例えばアプリケーションプログラムインタフェース(API))経由でアクセス可能である。
或る動作の実行は、1又は複数のプロセッサの間に分配されてよい。該1又は複数のプロセッサは、単一の装置内に存在するものに限らず、複数の装置にわたって配置されていてよい。幾つかの実施形態において、1又は複数のプロセッサ、若しくは、複数のプロセッサ実装したハードウェアは、単一の地理的場所(例えば、家庭、オフィス、又は、サーバファームなど)に設置されてよい。別の実施形態において、複数のプロセッサ、又は、複数のプロセッサ実装したハードウェアは、は、複数の地理的場所にわたり分散してよい。
この明細書の幾つかの部分は、アルゴリズムの用語、若しくは、機械メモリ(例えばコンピュータメモリ)ビット又はバイナリデジタル信号として記憶されたデータ上の動作の象徴により提示されている。これらアルゴリズム又は象徴は、データ処理技術の当業者により、かれらの仕事の大意を他の分野の者に伝えるために使用される技術の一例である。ここで使用されているように、“アルゴリズム”は、自己矛盾のない動作のシーケンス、又は、所望の結果を持ちびく同様な処理である。この文脈において、アルゴリズム及び動作は、物理量の物理的な操作を含む。典型的には、必須ではないが、かかる物理量は、機械により記憶され、アクセスされ、伝送され、組み合わされ、比較され、又は、何らかの操作され得る電気的、磁気的、又は、光学的信号の形式をとってよい。これら信号を、例えば、“データ”、“コンテンツ”、“ビット”、“値”、“エレメント”、“シンボル”、“キャラクター”、“用語”、“数”、“数字”などという言葉を使って参照することは、原則的には共通使用の理由から、時として便利である。こらの言葉は、しかしながら、単に便利なラベルであり、適宜の物理量と関連づけられるべきものである。
特に記載のない限り、この明細書における“プロセス”、“コンピューティング”、“計算”、“判断”、“提示”、“表示”などといった言葉を用いた議論は、メモリ、レジスタ、又は、情報を受信、保存、伝送又は表示するその他の機械コンポーネント内で物理量(電気的、磁気的、又は、光学的)として表されたデータを操作又は変形する機械(例えばコンピュータ)のアクション又はプロセスを指す。
明細書における“一実施形態”又は“或る実施形態”の何れの言及も、該実施例に関連した特定の要素、特徴、構造又は特性が少なくとも1つの実施例内に含まれることを意味する。明細書のさまざまな個所における一実施形態において” という表現の出現は、必ずしも、その全てが同じ実施形態に言及するものではない。
幾つかの実施形態は、“連結(coupled)”及び“接続(connected)”という表現を、それらの派生語とともに用いて記載されている。これら用語は、互いの同義語であることを意図していないことが理解されるべきである。例えば、幾つかの実施形態は、2以上の要素が互いに物理的又は電気的に直接接していることを示すために、用語“接続(connected)”を用いて記述される。別の例では、幾つかの実施形態は、2以上の要素が物理的又は電気的に直接接していることを示すために、用語“連結(coupled)”を用いて記述される。用語“連結(coupled)”は、しかしながら、また、2以上の要素が物理的又は電気的に直接接していないが、互いに協働又は相互作用することを示すことを意味するだろう。複数の実施形態は、この文脈に限定されない。
本明細書で使用されている“備える”、“具備している”、“含む”、“含んでいる”、“持つ”、“持っている”との用語、又は、それらのその他の任意の変形語も、非排他的な包摂をカバーしようとするものである。例えば、1組の要素を掲げてなるプロセス、方法、物又は装置は、必ずしもそれらの要素のみに限定されるものではなく、その他の明示的に掲げられていない要素又はそのようなプロセス、方法、物又は装置につきものその他の要素を含んでいてよい。更に、特に反対の意を表さない限り、「又は」とは、包括的な「又は」及び非排他的な「又は」のことである。例えば、A又はBという条件は、Aが真(又は存在する)かつBが偽(又は存在しない)、Aが偽(又は存在しない)かつBが真(又は存在する)、及びAもBも真(又は存在する)、のいずれか1つによって満足させられるものである。
加えて、「1」又は「或る」の使用は、本書中の実施例の構成要素及び成分を記述するために使用される。これは、単に便宜と、開示の一般性を与えるためになされる。この記述は1又は少なくとも1つを含むと読まれるべきであり、また、単一のとは、それが明らかにその反対を意味していない限り、複数も含む。
この開示を読むことにより、当業者は、記憶管理部に記憶されたプロダクションデータベースの或る時点のコピーから仮想データベースを生成するためのシステム及び処理についての更に追加の変形構成及び機能的設計が認識できるであろう。従って、特定の実施例及び応用が図示され説明されているが、本発明は、ここに説明した構成及び要素に正確に限定されるものではない。添付の請求の範囲で定義される精神と範囲から逸脱することなく、当業者にとって明白な様々な変形、変更、変化が、ここに開示した方法及び装置の構成、動作、詳細においてなされ得る。

Claims (20)

  1. 仮想データベースシステムを巻き戻すための、コンピュータに実装可能な方法であって、
    或るソースデータベースの複数のスナップショットをデータベース記憶システムに記憶することであって、1つのスナップショットは、前記ソースデータベースの複数のデータベースブロックの或る時点のコピーを表しており、1又は複数の前記データベースブロックが、前記ソースデータベースの複数のスナップショットにわたり共有されることと、
    前記ソースデータベースの1つのスナップショットの複数のデータベースブロックに基づき仮想データベースを提供することと、
    前記データベース記憶システムにより、前記仮想データベースのための1又は複数のタイムフローを維持することであって、各タイムフローは該仮想データベースの或る初期状態からの該仮想データベースに対する変更を表し、前記変更の表現は異なる時点で取得された前記仮想データベースの複数のスナップショットを含み、1又は複数の前記データベースブロックが、前記仮想データベースの複数のスナップショットにわたり共有されるものであることと、
    前記仮想データベースを該仮想データベースの過去の状態に巻き戻すリクエストを受信することであって、前記リクエストは、該仮想データベースの1タイムフローを特定し、且つ、該特定されたタイムフローに関連付けられた1ターゲット時点を特定するものであることと、
    前記タイムフローに関連付けられた仮想データベースの1つのスナップショットの複数のデータベースブロックを参照するように、該仮想データベースを変更することにより該仮想データベースを巻き戻すことであって、前記仮想データベースの前記1つのスナップショットは、前記ターゲット時点またはそれ以前に保存されたものであることと、
    前記巻き戻された仮想データベースのための新たなタイムフローを維持することであって、前記新たなタイムフローは、該巻き戻された仮想データベースに対するその後の更新により生じた変更の表現を含むものであることと
    を備える方法。
  2. 前記過去の状態は第1の状態であり、変更するための前記リクエストは、変更するための第1のリクエストであり、前記ターゲットタイムフローは第1のタイムフローであり、前記時点は第1の時点であり、前記仮想データベースのスナップショットは第1のスナップショットであり、
    前記方法は、更に、
    前記仮想データベースを第2の状態へ更に巻き戻す第2のリクエストを受信することであって、前記第2の状態は、該仮想データベースの第2のタイムフローの第2のターゲット時点に関連付けられたものと、
    前記第2のタイムフローに関連付けられた仮想データベースの1つの第2のスナップショットの複数のデータベースブロックを参照するように、該仮想データベースを変更することにより該仮想データベースを再び巻き戻すことであって、前記第2のスナップショットは、前記第2のターゲット時点またはそれ以前に保存されたものと
    を備える請求項1に記載の方法。
  3. 更に、
    前記仮想データベースの巻き戻し前に、該仮想データベースに関連付けられたプロセスをシャットダウンするリクエストを送信することと、
    前記仮想データベースの巻き戻し後に、前記プロセスを再開するリクエストを送信すること
    を備える請求項1に記載の方法。
  4. 前記仮想データベースのタイムフローは、第1のスナップショット及び第2のスナップショットを含み、前記第1のスナップショットが保存された時点と前記第2のスナップショットが保存された時点との間でデータベースブロックが変更されていない場合は、前記第2のスナップショットが、前記第1のスナップショットと該データベースブロックを共有するものである請求項1に記載の方法。
  5. 前記仮想データベースの現在のタイムフローにおける最新のスナップショットのデータベースブロックのデータを更新するリクエストを受信すること、
    前記データを更新する前記リクエストの受信に応じて、前記データベースブロックのコピーを作成し、該データベースブロックの該コピーを更新すること
    を更に備える請求項1に記載の方法。
  6. 前記タイムフローの変更の表現は、2つのスナップショット間での前記仮想データベースに対する更新を表すトランザクションログを含み、
    前記方法は、更に、
    前記仮想データベースの前記スナップショットの複数のデータベースブロックを参照するように、該仮想データベースを変更することに応じて、前記ターゲット時点に対応するように該変更された仮想データベースの前記状態を更新するために、該変更された仮想データベースに対して1又は複数の前記トランザクションログを適用すること
    を備える請求項1に記載の方法。
  7. 前記仮想データベースの過去の状態に該仮想データベースを巻き戻す前記リクエストは、該仮想データベースにより行われた更新のシステム変更番号を特定することにより、前記過去の状態を識別するものであり、該更新は前記特定されたタイムフローに関連付けられたものである請求項1に記載の方法。
  8. 前記仮想データベースの過去の状態に該仮想データベースを巻き戻す前記リクエストは、該仮想データベースの前記特定されたタイムフローに関連付けられた或る時刻値を特定することにより、前記過去の状態を識別するものである請求項1に記載の方法。
  9. 前記仮想データベースは複数のタイムフローに関連付けられており、前記仮想データベースの過去の状態に該仮想データベースの状態を変更するための前記リクエストを受信することは、前記複数のタイムフローのうち1つのタイムフローを特定する請求項1に記載の方法。
  10. 前記仮想データベースの1又は複数のデータベースブロックは、前記データベース記憶システムにより提供される1又は複数の別の仮想データベースと共有される請求項1に記載の方法。
  11. 仮想データベースシステムをソースデータベースシステムの状態にリフレッシュするための、コンピュータに実装可能な方法であって、
    或るソースデータベースのための1又は複数のタイムフローを、データベース記憶システムにより維持することであって、各タイムフローは前記ソースデータベースの或る初期状態からの該ソースデータベースに対する変更の表現を含み、該表現は異なる時点で取得された前記ソースデータベースのスナップショットを含み、1又は複数のデータベースブロックが前記ソースデータベースの複数のスナップショットで共有されるものであることと、
    前記ソースデータベースの1つのスナップショットの複数のデータベースブロックに基づき1つの仮想データベースを、データベース記憶システムにより、提供することと、
    前記データベース記憶システムにより、前記仮想データベースのための1又は複数のタイムフローを維持することであって、各タイムフローは該仮想データベースの或る初期状態からの該仮想データベースに対する変更の複数の表現を含み、前記変更の複数の表現は異なる時点で取得された前記仮想データベースの複数のスナップショットを含み、1又は複数の前記データベースブロックが、前記仮想データベースの複数のスナップショットで共有されるものであることと、
    前記ソースデータベースの状態に前記仮想データベースをリフレッシュするリクエストを受信することであって、前記リクエストは、該ソースデータベースのタイムフロー及び前記タイムフローのターゲット時点を特定するものであることと、
    前記仮想データベースをリフレッシュすることであって、前記タイムフローに関連付けられた前記ソースデータベースの1つのスナップショットの複数のデータベースブロックを参照するように該仮想データベースを変更することを含み、該スナップショットは、前記ターゲット時点またはそれ以前に保存されたものであることと、
    前記リフレッシュされた仮想データベースのための新たなタイムフローを維持することであって、該新たなタイムフローは、前記リフレッシュされた仮想データベースに対するその後の更新により生じた変更の表現を含むものであることと
    を備える方法。
  12. 前記仮想データベースのリフレッシュ前に、該仮想データベースに関連付けられたプロセスをシャットダウンするリクエストを送信することと、
    前記仮想データベースのリフレッシュ後に、前記プロセスを再開するリクエストを送信すること
    を更に備える請求項11に記載の方法。
  13. 前記仮想データベースのタイムフローは、第1のスナップショット及び第2のスナップショットを含み、前記第1のスナップショットが保存された時点及び前記第2のスナップショットが保存された時点の間にデータベースブロックが変更されていない場合は、前記第2のスナップショットが、前記第1のスナップショットと該データベースブロックを共有するものである請求項11に記載の方法。
  14. 前記仮想データベースの現在のタイムフローにおける最新のスナップショットのデータベースブロックのデータを更新するリクエストを受信すること、
    前記データを更新する前記リクエストの受信に応じて、前記データベースブロックのコピーを作成し、該データベースブロックの該コピーを更新すること
    を更に備える請求項11に記載の方法。
  15. 前記タイムフローの変更の表現は、2つのスナップショット間での前記仮想データベースに対する更新を表すトランザクションログを含み、
    前記方法は、更に、
    前記仮想データベースの前記スナップショットの複数のデータベースブロックを参照するように該仮想データベースを変更することに応じて、前記ターゲット時点に対応するように該変更された仮想データベースの前記状態を更新するために、該変更された仮想データベースに対して1又は複数の前記トランザクションログを適用すること
    を備える請求項11に記載の方法。
  16. 前記仮想データベースをリフレッシュする前記リクエストは、前記ソースデータベースにより行われた更新のシステム変更番号を特定することにより、該ソースデータベースの前記状態を識別するものであり、該更新は前記特定されたタイムフローに関連付けられたものである請求項11に記載の方法。
  17. 前記仮想データベースをリフレッシュする前記リクエストは、前記ソースデータベースの前記特定されたタイムフローに関連付けられた或る時刻値を特定することにより、該ソースデータベースの前記状態を識別するものである請求項11に記載の方法。
  18. 前記ソースデータベースは複数のタイムフローに関連付けられた仮想データベースであり、前記仮想データベースをリフレッシュする前記リクエストを受信することは、前記複数のタイムフローのうち1つのタイムフローを特定する請求項11に記載の方法。
  19. 前記ソースデータベースは、前記ソースデータベースシステムとは異なる外部のシステム内に記憶されたプロダクションデータベースである請求項11に記載の方法。
  20. コンピュータに、
    或るソースデータベースの複数のスナップショットをデータベース記憶システムに記憶することであって、1つのスナップショットは、前記ソースデータベースの複数のデータベースブロックの或る時点のコピーを表しており、1又は複数の前記データベースブロックが、前記ソースデータベースの複数のスナップショットにわたり共有されるものであることと、
    前記ソースデータベースの1つのスナップショットの複数のデータベースブロックに基づき仮想データベースを提供するステップと、
    前記データベース記憶システムにより、前記仮想データベースのための1又は複数のタイムフローを維持することであって、各タイムフローは該仮想データベースの或る初期状態からの該仮想データベースに対する変更を表し、前記変更の表現は異なる時点で取得された前記仮想データベースの複数のスナップショットを含み、1又は複数の前記データベースブロックが、前記仮想データベースの複数のスナップショットにわたり共有されるものであることと、
    前記仮想データベースを該仮想データベースの過去の状態に巻き戻すリクエストを受信することであって、前記リクエストは、該仮想データベースの1タイムフローを特定し、且つ、該特定されたタイムフローに関連付けられた1ターゲット時点を特定するものであることと、
    前記タイムフローに関連付けられた仮想データベースの1つのスナップショットの複数のデータベースブロックを参照するように、該仮想データベースを変更することにより該仮想データベースを巻き戻すことであって、前記仮想データベースの前記1つのスナップショットは、前記ターゲット時点またはそれ以前に保存されたものであることと、
    前記巻き戻された仮想データベースのための新たなタイムフローを維持することであって、前記新たなタイムフローは、該巻き戻された仮想データベースに対するその後の更新により生じた変更の表現を含むものであることと
    を実行させるための命令群を記憶した非一過性のコンピュータ読取可能な記憶媒体。
JP2016525361A 2013-07-09 2014-06-25 仮想データベースの巻き戻し Active JP6050917B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361844376P 2013-07-09 2013-07-09
US61/844,376 2013-07-09
PCT/US2014/044176 WO2015006054A1 (en) 2013-07-09 2014-06-25 Virtual database rewind

Publications (2)

Publication Number Publication Date
JP2016526743A JP2016526743A (ja) 2016-09-05
JP6050917B2 true JP6050917B2 (ja) 2016-12-21

Family

ID=52280459

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016525361A Active JP6050917B2 (ja) 2013-07-09 2014-06-25 仮想データベースの巻き戻し

Country Status (8)

Country Link
US (1) US9396074B2 (ja)
EP (1) EP3019987B1 (ja)
JP (1) JP6050917B2 (ja)
KR (1) KR101693683B1 (ja)
CN (1) CN105378725B (ja)
AU (1) AU2014287633B2 (ja)
CA (1) CA2912468C (ja)
WO (1) WO2015006054A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10884869B2 (en) * 2015-04-16 2021-01-05 Nuodb, Inc. Backup and restore in a distributed database utilizing consistent database snapshots
US10180954B2 (en) 2015-05-29 2019-01-15 Nuodb, Inc. Disconnected operation within distributed database systems
US10067969B2 (en) 2015-05-29 2018-09-04 Nuodb, Inc. Table partitioning within distributed database systems
US10025528B2 (en) 2016-01-20 2018-07-17 Delphix Corporation Managing transformations of snapshots in a storage system
US11403192B1 (en) * 2017-07-27 2022-08-02 EMC IP Holding Company LLC Enabling point-in-time recovery for databases that change transaction log recovery models
US11163799B2 (en) * 2019-10-29 2021-11-02 Dell Products L.P. Automatic rollback to target for synchronous replication
US11275685B1 (en) 2020-09-11 2022-03-15 Kyndryl, Inc. System and method of optimizing rollbacks
CN112732489B (zh) * 2021-01-11 2023-05-09 上海上讯信息技术股份有限公司 基于数据库虚拟化的数据脱敏的方法及设备
US20220398232A1 (en) * 2021-06-14 2022-12-15 Microsoft Technology Licensing, Llc Versioned metadata using virtual databases
CN113360476B (zh) * 2021-06-21 2023-11-21 上海上讯信息技术股份有限公司 一种程序数据库虚拟化插拔的方法及设备

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0702815B1 (en) 1993-06-03 2000-08-23 Network Appliance, Inc. Write anywhere file-system layout
US6795966B1 (en) * 1998-05-15 2004-09-21 Vmware, Inc. Mechanism for restoring, porting, replicating and checkpointing computer systems using state extraction
JP2000047919A (ja) * 1998-07-30 2000-02-18 Hitachi Ltd 仮想データベースレプリケーションシステム
US7120862B1 (en) * 1998-12-01 2006-10-10 Lucent Technologies Inc. Method and apparatus for persistent access to Web resources using variable time-stamps
US7072916B1 (en) 2000-08-18 2006-07-04 Network Appliance, Inc. Instant snapshot
US7373364B1 (en) 2002-03-05 2008-05-13 Network Appliance, Inc. System and method for creating a point-in-time restoration of a database file
US7225204B2 (en) 2002-03-19 2007-05-29 Network Appliance, Inc. System and method for asynchronous mirroring of snapshots at a destination using a purgatory directory and inode mapping
US7340489B2 (en) 2002-04-10 2008-03-04 Emc Corporation Virtual storage devices
US7107385B2 (en) 2002-08-09 2006-09-12 Network Appliance, Inc. Storage virtualization by layering virtual disk objects on a file system
US7457982B2 (en) 2003-04-11 2008-11-25 Network Appliance, Inc. Writable virtual disk of read-only snapshot file objects
JP4321705B2 (ja) * 2003-07-29 2009-08-26 株式会社日立製作所 スナップショットの取得を制御するための装置及び記憶システム
US7334095B1 (en) 2004-04-30 2008-02-19 Network Appliance, Inc. Writable clone of read-only volume
US7334094B2 (en) 2004-04-30 2008-02-19 Network Appliance, Inc. Online clone volume splitting technique
US7409511B2 (en) 2004-04-30 2008-08-05 Network Appliance, Inc. Cloning technique for efficiently creating a copy of a volume in a storage system
US8732182B2 (en) * 2004-12-02 2014-05-20 Desktopsites Inc. System and method for launching a resource in a network
GB0428108D0 (en) 2004-12-23 2005-01-26 Ibm Storage system with multiple copy targeting
US7757056B1 (en) 2005-03-16 2010-07-13 Netapp, Inc. System and method for efficiently calculating storage required to split a clone volume
US7631021B2 (en) 2005-03-25 2009-12-08 Netapp, Inc. Apparatus and method for data replication at an intermediate node
US7539836B1 (en) 2005-04-18 2009-05-26 Netapp, Inc. Method and system for configuring a data storage object
US7822758B1 (en) 2005-04-22 2010-10-26 Network Appliance, Inc. Method and apparatus for restoring a data set
WO2007002397A2 (en) 2005-06-24 2007-01-04 Syncsort Incorporated System and method for high performance enterprise data protection
US7590660B1 (en) 2006-03-21 2009-09-15 Network Appliance, Inc. Method and system for efficient database cloning
US8024762B2 (en) * 2006-06-13 2011-09-20 Time Warner Cable Inc. Methods and apparatus for providing virtual content over a network
US7587563B1 (en) 2006-07-11 2009-09-08 Network Appliance, Inc. Method and system to make a read-only file system appear to be writeable
US8311988B2 (en) 2006-08-04 2012-11-13 Apple Inc. Consistent back up of electronic information
US7856424B2 (en) 2006-08-04 2010-12-21 Apple Inc. User interface for backup management
US7827366B1 (en) 2006-10-31 2010-11-02 Network Appliance, Inc. Method and system for providing continuous and long-term data protection for a dataset in a storage system
WO2008121873A1 (en) 2007-03-29 2008-10-09 Vmware, Inc. Synchronization and customization of a clone computer
US8775663B1 (en) 2007-04-25 2014-07-08 Netapp, Inc. Data replication network traffic compression
US8010900B2 (en) 2007-06-08 2011-08-30 Apple Inc. User interface for electronic backup
US7877357B1 (en) 2007-10-12 2011-01-25 Netapp, Inc. Providing a simulated dynamic image of a file system
US7996636B1 (en) 2007-11-06 2011-08-09 Netapp, Inc. Uniquely identifying block context signatures in a storage volume hierarchy
US8532973B1 (en) 2008-06-27 2013-09-10 Netapp, Inc. Operating a storage server on a virtual machine
KR101024494B1 (ko) * 2008-07-18 2011-03-31 (주)디에프아이비즈 메타데이타를 이용한 변경 데이타 추출방법
US8037032B2 (en) 2008-08-25 2011-10-11 Vmware, Inc. Managing backups using virtual machines
US8280858B2 (en) 2009-06-29 2012-10-02 Oracle America, Inc. Storage pool scrubbing with concurrent snapshots
US8161077B2 (en) * 2009-10-21 2012-04-17 Delphix Corp. Datacenter workflow automation scenarios using virtual databases
US8150808B2 (en) * 2009-10-21 2012-04-03 Delphix Corp. Virtual database system
US20110289289A1 (en) * 2010-05-20 2011-11-24 Microsoft Corporation Backup and restore of items using bounded checkpoint and log buffers in memory
US8548944B2 (en) * 2010-07-15 2013-10-01 Delphix Corp. De-duplication based backup of file systems
US10430298B2 (en) * 2010-10-28 2019-10-01 Microsoft Technology Licensing, Llc Versatile in-memory database recovery using logical log records
US9461876B2 (en) * 2012-08-29 2016-10-04 Loci System and method for fuzzy concept mapping, voting ontology crowd sourcing, and technology prediction

Also Published As

Publication number Publication date
EP3019987A4 (en) 2017-01-18
EP3019987B1 (en) 2019-01-09
US9396074B2 (en) 2016-07-19
AU2014287633A1 (en) 2015-12-17
KR101693683B1 (ko) 2017-01-06
KR20160030401A (ko) 2016-03-17
US20150019496A1 (en) 2015-01-15
CA2912468A1 (en) 2015-01-15
CA2912468C (en) 2018-08-21
CN105378725A (zh) 2016-03-02
CN105378725B (zh) 2017-08-04
AU2014287633B2 (en) 2017-06-15
JP2016526743A (ja) 2016-09-05
WO2015006054A1 (en) 2015-01-15
EP3019987A1 (en) 2016-05-18

Similar Documents

Publication Publication Date Title
JP6050917B2 (ja) 仮想データベースの巻き戻し
KR101780340B1 (ko) 가상 데이터베이스를 제공하기 위한 유효성 검증 데이터베이스 스냅샷의 생성 방법, 시스템 및 컴퓨터 판독가능 저장 매체
US8020037B1 (en) Creation of a test bed for testing failover and failback operations
US9436556B2 (en) Customizable storage system for virtual databases
US10083092B2 (en) Block level backup of virtual machines for file name level based file search and restoration
US10089186B1 (en) Method and apparatus for file backup
US20130080695A1 (en) Restore in cascaded copy environment
CN107209705A (zh) 用于计算环境的活动回滚
US11397749B2 (en) Asynchronous replication of in-scope table data
US20190188309A1 (en) Tracking changes in mirrored databases
US11182094B2 (en) Performing a recovery copy command using a recovery copy data structure for a backup volume lookup
US10452502B2 (en) Handling node failure in multi-node data storage systems
US9262290B2 (en) Flash copy for disaster recovery (DR) testing
US20210111962A1 (en) Topographical search
US11182081B2 (en) Performing a recovery copy command to restore a safeguarded copy backup to a production volume
US20170371641A1 (en) Multi-tenant upgrading
US9760450B2 (en) Restoring a clone point-in-time copy
US10789132B2 (en) Performing a recovery copy command to create a recovery volume for a consistency group
US11544156B1 (en) Incremental restore for volumes using object-based snapshots
CN109766220A (zh) 应用系统的备份恢复方法、装置及计算机可读存储介质
US11262934B2 (en) Deletion of stored data
US20210334396A1 (en) Creating vendor-neutral data protection operations for vendors' application resources
US20190050455A1 (en) Adaptive page rendering for a data management system
US11934378B2 (en) Recording changes to records whilst preserving record immutability
US11520668B2 (en) Vendor-neutral models of vendors' application resources

Legal Events

Date Code Title Description
A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20160816

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160913

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161012

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20161101

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161125

R150 Certificate of patent or registration of utility model

Ref document number: 6050917

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250