JP2020525925A - ある時点についてデータベースのデータセットを復元するシステム及び方法 - Google Patents

ある時点についてデータベースのデータセットを復元するシステム及び方法 Download PDF

Info

Publication number
JP2020525925A
JP2020525925A JP2019571672A JP2019571672A JP2020525925A JP 2020525925 A JP2020525925 A JP 2020525925A JP 2019571672 A JP2019571672 A JP 2019571672A JP 2019571672 A JP2019571672 A JP 2019571672A JP 2020525925 A JP2020525925 A JP 2020525925A
Authority
JP
Japan
Prior art keywords
data
tenant
database
time
extent
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.)
Granted
Application number
JP2019571672A
Other languages
English (en)
Other versions
JP6995894B2 (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 JP2020525925A publication Critical patent/JP2020525925A/ja
Application granted granted Critical
Publication of JP6995894B2 publication Critical patent/JP6995894B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1474Saving, restoring, recovering or retrying in transactions
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/80Database-specific techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data

Landscapes

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

Abstract

マルチテナント型データベースシステムの第1テナントのデータのポイント・イン・タイム・リストアを実行するためのシステム及び方法が提供される。データベースシステムの不変ストレージに記憶された第1テナントの第1データのアーカイブバージョンを識別するためにメタデータを見つけることができる。アーカイブバージョンは、第1時点より前の各データの直近のコミットされたバージョンを含む。メタデータを使用することにより、復元参照セットがデータベースシステムの目標データベース・インスタンスにマッピングされる。マッピングは、あるテナントについての既存のデータがすべて、アーカイブバージョンになるときに実行することができ、上記の時点より後にコミットされたデータ及びレコードのバージョンは、目標データベース・インスタンスに利用可能ではない。

Description

アプリケーション又はデータベースシステムのユーザは、特定の時点までのそれらのデータを復元する必要があることが多い。これは、典型的には、システム内のユーザのデータの一部が破損したときに発生する。アプリケーション又はデータベースシステムのユーザは、そのようなシステムのプロバイダに、ユーザのデータをすべて、破損前のある時点まで復元するように要求することがある。典型的なシステムでは、ユーザのデータは、破損が発生する前のおおよその時点に復元される。この復元のおおよその時点は、一般に、破損点の検出前のすべてのデータを有しているわけではない。
開示される主題の更なる理解を提供するために含まれる添付の図面は、本明細書に組み込まれてその一部を構成する。図面はまた、開示される主題の実装を図示し、詳細な説明とともに、開示される主題の実装の原理を説明する。開示される主題の基本的理解及びそれが実施され得る様々な方法について必要とされ得る以上に構造的詳細を詳しく示す試みは行わない。
開示される主題の一実装による、マルチテナント型データベースシステムの第1テナントのデータのポイント・イン・タイム・リストアを実行する例示の方法を示す図である。
開示される主題の一実装による、マルチテナント型データベースシステムの第1テナントのデータのポイント・イン・タイム・リストアを実行する別の例示の方法を示す図である。
開示される主題の一実装による、データベースシステム内のレコードの例を示す図である。
開示される主題の一実装による、仮想化層を用いてポイント・イン・タイム・リストアのためにデータを記憶及び検索するための例示のシステムを示す図である。
開示される主題の一実装による、スナップショットを用いてデータを挿入してポイント・イン・タイム・リストアを実行する例示のシステム及び方法を示す図である。 開示される主題の一実装による、スナップショットを用いてデータを挿入してポイント・イン・タイム・リストアを実行する例示のシステム及び方法を示す図である。 開示される主題の一実装による、スナップショットを用いてデータを挿入してポイント・イン・タイム・リストアを実行する例示のシステム及び方法を示す図である。 開示される主題の一実装による、スナップショットを用いてデータを挿入してポイント・イン・タイム・リストアを実行する例示のシステム及び方法を示す図である。 開示される主題の一実装による、スナップショットを用いてデータを挿入してポイント・イン・タイム・リストアを実行する例示のシステム及び方法を示す図である。 開示される主題の一実装による、スナップショットを用いてデータを挿入してポイント・イン・タイム・リストアを実行する例示のシステム及び方法を示す図である。 開示される主題の一実装による、スナップショットを用いてデータを挿入してポイント・イン・タイム・リストアを実行する例示のシステム及び方法を示す図である。 開示される主題の一実装による、スナップショットを用いてデータを挿入してポイント・イン・タイム・リストアを実行する例示のシステム及び方法を示す図である。 開示される主題の一実装による、スナップショットを用いてデータを挿入してポイント・イン・タイム・リストアを実行する例示のシステム及び方法を示す図である。 開示される主題の一実装による、スナップショットを用いてデータを挿入してポイント・イン・タイム・リストアを実行する例示のシステム及び方法を示す図である。
開示される主題の一実装によるコンピュータを示す図である。
開示される主題の一実装によるネットワーク構成を示す図である。 開示される主題の一実装によるネットワーク構成を示す図である。 開示される主題の一実装によるネットワーク構成を示す図である。
アプリケーション及び/又はデータベースシステムのユーザは、過去のある時点までデータセットを正確に復元する必要がある可能性があるので、開示される主題の実装は、同じデータベース内にデータを有する他のテナントに影響を与えることなく、データベースシステム内のあるテナントのデータのポイント・イン・タイム・リストア(point-in-time restore)を提供する。テナントをある時点に復元することは、所望の時点より前のデナントデータの完全なセットを含む、データベースに関するアーカイブ情報を見つける(locating)ことによって行われる。開示される主題の実装は、現在のシステムに対して、同じデータベース内の他のテナントデータに影響を与えることなく、特定の時点にテナントデータを復元するための粒度を改善する。
アプリケーション及び/又はデータベースシステムのオペレーションにおいて、ユーザは、それらのデータが破損したことを理解することがあり、アプリケーション及び/又はデータベースサービスのプロバイダに、以前の特定の時点のそれらのデータへのアクセスをユーザに与えることを要求することがある。あるシナリオでは、ユーザは、すべての彼らのデータを破損の前の時点に復元するように要求することがある。この場合、ユーザは、以前の時点までデータベースを復元することを望み、その以前の時点の後に、破損が検出された後に行った変更を調整しようとすることがある。より一般的なシナリオは、破損が検出されてからの変更を失うことをユーザが望んでいないというものである。この場合、ユーザは、破損前のデータへのアクセスを取得して、既存のデータへの手動調整及び修正を実行することを選択することがあり、これは、非効率的であり、エラーを生じやすい可能性がある。
これらのシナリオは両方とも、複数のテナントを単一の物理的なデータベースにしてホストしているアプリケーション及び/又はデータベースプロバイダ(例えばクラウドベースのプロバイダ)では実用的でないことが多い。テナントは、データベースの高い利用可能性を要求することが多く、ポイント・イン・タイム・リストアの場合であっても、一時的な機能停止以外は受け入れられない可能性がある。複数のテナントが1つのデータベース内に記憶される場合、複数のテナントに影響を与えることなく、1つのテナントを、既存のデータベース内の以前の時点まで復元することは不可能である可能性がある。さらに、データベースのすべて又は一部を単一の時点に復元するプロセスは、多くの時間を要する可能性があり、その間は、新しいトランザクションを処理することができない。
このような状況に対する一般的な解決策は、テナントに、以前のバージョンのテナントデータに対して限られたアクセスしか与えないことである。従来のシステムは、典型的に、テナントに、ある時点のそれらのデータのビューを与えるためには多くのステップを必要とする。テナントのデータを含むデータベースの一部又は場合によってはデータベース全体を復元するために、十分なコンピュータリソースを見つけなければならない。
一般的なプロセスは、破損が発生する前のデータの完全なバックアップで始まる可能性がある。典型的には、完全バックアップ後の後続の時点にテナントデータを復元するために、増分バックアップが追加されてもよい。次いで、アーカイブされたトランザクションログ(例えば再実行(redo)ログ等)を、所望の時点の直近の完全なバックアップに適用して、所望の時点までのデータベースをもたらす。その時点のデータの抽出のフォームを生成してテナントに提供することができる。しかしながら、このプロセスは、復元されているデータベースのサイズ及びリソースの利用可能性に応じて非常に長い時間を要する可能性があり、追加のハードウェアを必要とする。
開示される主題の実装は、テナントのデータのポイント・イン・タイム・リストアを提供することができる。開示される実装は、追加のハードウェア(例えばサーバ及び/又は他のコンピューティングデバイス、追加のストレージデバイス等)なしに、リストア操作をほぼ即時に行うことができ、同じシステム内にデータを有する他のテナントに影響を与えないので、以前のシステムの典型的なリストア操作の時間及びリソースを低減する。また、開示される実装は、テナントデータを特定の時点により容易に復元することもできる。
すなわち、開示される主題の実装では、データベースのテナントデータを特定の時点に導くためログ再生の必要性を除去するために、データを仮想化してマッピングすることができる。以下に詳述するように、エクステント参照(extent reference)を使用して、データベースの物理的なストレージへのアクセスを仮想化する。エクステント参照をエクステント参照セット(extent reference set)にグループ化することができる。データベース・インスタンスに関連付けられる永続性(persistence)はすべて、単一のエクステント参照セットに含まれ得る。
開示される主題の実装は、ログ構造化マージ(LSM:Log Structured Merge)ツリーのような不変ストレージ、テナント識別子によってルート形成(root)される単一キー空間、及びストレージデバイスに記憶されたエクステントを指し示すエクステント参照を有する仮想化を使用することによるものを含むことができる。当技術分野で理解され、本明細書で使用されるように、「エクステント」とは、ストレージの領域を指し、典型的には、記憶媒体内で連続するストレージの領域を指し、データを記憶するために使用されてよい。エクステントは不変であってよい。すなわち、記憶媒体内のエクステントに関連付けられる領域又はデータが、将来的には削除される可能性はあるが、更新されないように、エクステント又はエクステント内の個々のデータは、それらが作成された後には変更されない可能性がある。エクステント参照は、物理的ストレージ(例えばストレージデバイス)に記憶されている物理的エクステントの論理参照として使用されてよく、物理的ストレージへのアクセスを仮想化するために使用されてよい。
さらに、エクステント及び不変性を使用することに加えて、データの異なるバージョンがシステムの永続ストレージに記憶されてよい。データのバージョンを区別することは、所与のデータのトランザクションごとにタイムスタンプを使用することによって、あるいはデータの所与のバージョンが作成又は永続ストレージにコミットされた時間を追跡して後の仮想ポイント・イン・タイム・リストアに使用することができるように、厳密に単調増加(又は厳密に単調減少)するトランザクション番号を使用することによって行われてよい。このようなタイムスタンプ又はトランザクション番号は、キーで追跡され得る、キーに関連付けられる追加のメタデータであってよい。
テナントをある時点に復元することは、所望の時点より前のテナントデータの完全なセットを含む、データベースに関するアーカイブ情報を見つけることによって達成され得る。以下に説明されるように、アーカイブ情報は、少なくとも初期アーカイブセットを含んでもよく、データを所望の時点に復元するために使用され得る1つ以上の増分アーカイブセットを含んでもよい。このアーカイブ情報は、復元エクステント参照セット(restore extent reference set)に収集され、ここでは、各エクステント参照が、復元されるテナントデータへの参照を含む境界範囲として、最小キーと最大キーを設定する。例えばエクステント内の直近のトランザクションの時点(又はシーケンス番号)のエクステントについてメタデータを調べることによって、システムは、どのエクステントが、所望の復元時点の前に発生し、復元時点に含まれ得る少なくとも1つのトランザクションを含むかを容易に決定することができる。
最初のアーカイブセットの後に生成されたが、目標時点の前のテナントデータを含む可能性があるエクステント参照を見つける。アーカイブセットは、初期アーカイブセットと1つ以上の増分アーカイブセットを含んでよく、この場合、アーカイブセットは、初期アーカイブセットと1つ以上の増分アーカイブセットの結合であってもよい。エクステント参照(例えば見つかった各参照)は、復元エクステント参照セットに追加されてよく、復元エクステント参照セットは、エクステント参照のアーカイブセットと同じ最小及び/又は最大キーのマッピングを有する。エクステント参照(例えば見つかった各参照)は、所望の復元時点に設定されてよい。
復元エクステント参照セットは、目標データベースにマッピングされてよい。テナントがすべての既存データをポイント・イン・タイム・データに置き換えることを望む場合、エクステント参照セットは目標データベースにマッピングされ、既存のテナントキー範囲は除去される。テナントが、既存のテナントデータに代替することなく、ポイント・イン・タイム・リストアを異なるデータセットとして見えるようにすることを望む場合、エクステント参照セットは、参照によって本明細書に組み込まれる「Formation and Manipulation of Test Data in a Database System」という名称の2016年11月8日に出願された米国特許出願第15/345,914号においてより具体的に記載されているように、新しい「サンドボックス」テナント識別にマッピングされてよい。
すなわち、サンドボックスを、ある時点の元のテナントについて作成することができる。不変ストレージに記憶された元のテナントデータは、元のテナント識別子に関連付けられている。仮想ポイント・イン・タイム・リストアのためのある時点の元のテナントデータは、サンドボックス・テナントによってアクセス可能な元のテナントデータのスナップショットに使用することができる。サンドボックス・テナントデータは、元のテナントデータを変更することなく変更されてよく、元のテナントデータは、サンドボックス・テナントデータを変更することなく変更されてよい。スナップショットは、元のテナントデータをサンドボックス・テナントに利用可能にするものであってよく、その結果、サンドボックス・テナントは、基礎となるデータをコピーすることなく、元のテナントデータのコピーが作成された場合と同様に、元のテナントデータにアクセスすることができる。サンドボックス・テナントは、関連する許可されたユーザ(例えばテナントデータにアクセスすることを許可されたユーザ)の要求に応じて、サンドボックス・テナント識別子を、元のテナントデータのスナップショットと、サンドボックス作成時点後にサンドボックス・テナントによって作成されたサンドボックスデータと関連付けることによって、作成され得る。サンドボックス作成時点の後にサンドボックス・テナントによって作成及び/又は変更されたサンドボックスデータは、元のテナントにはアクセス可能でない可能性がある。サンドボックスの作成、並びにサンドボックスデータの作成及び/又は修正は、2016年11月8日に出願された「Formation and Manipulation of Test Data in a Database System」という名称の米国特許出願第15/345,914号に詳細に記載されており、その全体が参照によって本明細書に組み込まれている。
復元されたデータがデータベースシステムによってアクセスされるとき、エクステント参照は、物理データがどのように解釈されるかを決定してよい。復元されたデータについて、一部のエクステント参照は、テナントが指定した復元時点よりも新しいデータへの参照を含むことがある。フィルタ(例えば後述されるトランザクションフィルタ)を使用して、データベースの残りの部分に提示され得る物理データを制限してもよい。データベースは、ある時点におけるデータの一貫性のあるスナップショットを提供し、これは、例えばコミットタイムスタンプであってよい。フィルタによるエクステント参照を通過するスキャンは、物理的な行(row)を制限(qualifying)するときのスナップショット基準を有する。これは、データベース・トランザクション・ログを再生することにより、ある時点にあるかのようにデータアーチファクトを物理的に再構成することなく、所望の時点の後に、所望の時点に及ぶデータに対するポイント・イン・タイム・ビューを可能にする。すなわち、フィルタを使用することにより、仮想ポイント・イン・タイム・リストアが実行された後に発行されたクエリは、所望の時点の後のデータを見ることができない。所望の時点の後のデータを見ることができないものとなるように、フィルタを使用することができる。エクステント参照は、多くのレコード(例えば数十、数百、数千又は数百万のレコード等)にまたがる可能性があるメタデータオブジェクトであるため、フィルタを有するエクステント参照を使用する仮想ポイント・イン・タイム・リストアは、時間順序ログをスキャンして所望の時点までレコードを適用することと比べて、迅速に構築されることができる。
開示される主題の実装において、復元されたテナントデータは、所望の時点と完全にトランザクション的に一貫性があり、テナントの復元は、同じデータベース・インスタンス内にホストされている他のテナントに影響を及ぼさない。
エクステント参照は、多くのレコード(例えば数千のレコード、数百万のレコード等)にまたがる可能性があるメタデータオブジェクトであるため、少なくとも図4A〜図4J及び図6A〜図6Cに関連して以下に詳細に説明されるように、フィルタを有するエクステント参照を使用する仮想ポイント・イン・タイム・リストアは、時間順序ログをスキャンして所望の時点までレコードを適用することに比べて、非常に迅速に構築されることができる。したがって、本明細書に開示される実装は、テナントデータが記憶され、操作される基礎となるコンピュータシステムの大幅により効率的なオペレーションを可能にするとともに、ポイント・イン・タイム・リストアを実行するのに必要なコンピューティング・リソースを減少させることができる。
図1A〜図1Bは、以下で詳細に説明されるような図3〜図6Cに図示されるシステムに関連して、データのポイント・イン・タイム・リストアを実行する例示の方法を示している。
図1Aは、開示される主題の一実装による、マルチテナント型データベースシステムの第1テナントのデータのポイント・イン・タイム・リストアを実行する例示の方法10を示す。本方法10は、以下で詳細に説明されるように、図3、図5及び図6A〜図6Cに図示されるシステムに関連して使用されてよい。例えばテナントデータは、図3に図示される仮想化層34及び物理的ストレージ36を使用して記憶され、取り出されてよい。テナントは、図5に図示される第2コンピュータ800のストレージ810、図6A〜図6Cのデータベースシステム1200a〜1200d等のテナント識別子に関連付けられる、不変ストレージに記憶されるテナントデータを有してよい。例えばデータベース1200aは、1つ以上の物理サーバ及び/又は仮想サーバを含んでもよく、アプリケーション1210、1つ以上のノード1220及びストレージ1260を含んでもよい。ノード1220は、メモリ1230と、エクステント・インデックス1240と、エクステント及びエクステント参照1250のカタログを含んでもよい。ストレージ1260は、データエクステント1270を含んでよい。カタログ1250は、データを記憶すべき連続ストレージ(例えばストレージ1260)の領域を参照するエクステントを有してもよい。カタログ1250のエクステント参照は、物理的ストレージ(例えばストレージ1260)に記憶される物理的エクステントへの論理参照として使用されてよい。すなわち、テナントデータは、ストレージ1260のデータエクステント1270内に記憶されてもよい。ストレージ1260は、共有ストレージシステムであってよい。いくつかの実装では、1つ以上のノードは、異なる参照を通して同じデータエクステントを指し示してもよい。
(例えば図6Bのストレージ1260に記憶される)テナントデータは、いつレコードが作成され、データベースシステムから削除されたかを示す、メタデータ・テナント識別子及びメタデータ(例えば図6Bのノード1120に記憶され得る)に関連付けられてもよい。開示される主題の実装では、データベースシステムに随時コミットされるテナントデータの異なるバージョン(例えば図6Bのデータエクステント1270に記憶される)が存在してもよい。
動作12において、データベースシステムによって、不変ストレージに記憶されたテナントのデータのアーカイブバージョンを識別するため、メタデータを見つけることができる。アーカイブバージョンは、特定の時点の前の各データの直近のコミットされたバージョンを含んでよい。すなわち、ある時点まで顧客を復元することは、所望の時点の前の顧客データの完全なセットを含む、データベースに関するアーカイブ情報を見つけることにより達成され得る。データベースシステムの不変ストレージ(例えば図5に図示される第2コンピュータ800のストレージ810、図6A〜図6Cのデータベースシステム1200a〜1200d等)内のデータは実際には削除されることはないので、アーカイブ情報は、現在のテナントデータではない、以前に書かれたデータであり得る。
アーカイブデータを突き止めるこのメタデータは、復元エクステント参照セット操作に収集されてよく、ここで、各エクステント参照は、以下で詳細に説明されるように、最小キーと最大キーを設定する。これらのキーは、復元されている顧客データの限度を定義するために設定される。
動作14において、データベースシステムは、メタデータを使用することによって、復元参照セットをデータベースシステムの目標データベース・インスタンスにマッピングしてよい。動作14において、マッピングは、テナントについてのすべての既存のデータをアーカイブデータとして使用することを含んでよい。ある時点後にコミットされたデータのバージョンは、目標データベース・インスタンスには利用可能でないことがある。
いくつかの実装では、復元参照セットを目標データベース・インスタンスにマッピングすることは、特定の時点とトランザクション的に一貫性があるようにテナントデータを復元することを含んでよい。テナントデータの復元は、データベースシステムの目標データベース・インスタンスでホストされている他のテナントには影響を与えない。
図1A〜図1Bに関連して説明した仮想ポイント・イン・タイム・リストア方法において、並びに図3〜図6Cに関連して全体を通して説明されるデータベースシステムにおいて、レコードは、マルチテナントシステムのインスタンスにおけるキー値ペアとして識別され得る。データベース内にテナントを作成することができ、テナントに関連する許可されたユーザは、そのテナントに関する操作を見て、アクセスし、かつ/又は実行することができる。値は、例えばリレーショナルデータベースのテーブルの行のコンテンツ、リレーショナルデータベースのテーブルの行の識別情報又は任意の他の適切な値であってよい。キーは、レコードの識別子であってもよく、例えば英数字シーケンスのような任意の適切な形式であってもよい。キーの一部は、レコードのコンテンツに関する情報を提供してよい。例えばキーの一部は、レコードのコンテンツが属しているテナントを一意に識別し得るテナント識別子であってよい。キーの他の部分は、例えばレコードの値が行のコンテンツであるときは、テーブル番号及び行の識別情報を識別してよく、あるいは、値が行の識別情報であるときは、テーブル番号、テーブルのインデックス番号及びインデックス付き列の識別情報を識別してよい。
データベースシステム(例えば図3に図示されるシステム30又は図6A〜図6Cに図示されるデータベース1200a、1200b、1200c及び/又は1200d)は、トランザクションを所与のレコードの不変バージョンとして記憶してもよい。サーバシステムに既に記憶されているレコードのコンテンツの不変バージョンは、そのコンテンツが(ごくまれであるが)サーバシステムから削除されるまで、変更され得ない。すなわち、受け取ったトランザクションは、レコードのコンテンツを変更する代わりに、サーバシステムに記憶されるべきレコードのコンテンツの新しいバージョンを作成することができる。
したがって、本明細書に開示されているように、レコード(例えば異なるコンテンツを有するレコード)の複数のバージョンについて、トランザクション識別子以外に、同一のキーを有することが可能であり得る。所与のレコードのバージョンのための他の点では同じキーの使用は、リレーショナルデータベースに記憶されたデータの変更を許容する可能性がある。したがって、物理レコードの各バージョンは、不変的であってよい。すなわち、物理レコードの各バージョンは削除されないか、月、年又は数十年であってよいが任意の長い期間にわたって削除されない。例えばレコードのより前のバージョンと同じキー(トランザクションバージョン識別子以外)を有するレコードのより後のバージョンは、そのレコードのデータ値における変化(すなわち、レコードのコンテンツにおける変化)を示すことがある。あるいは、トランザクションはレコードを作成しても、レコードを削除してもよい(すなわち、コンテンツの作成又はコンテンツの削除)。レコードは、「tombstone(トゥームストーン)」(例えば削除すべきデータを識別するマーカー)を挿入することによって削除されてよく、将来の時点において、tombstoneによってマークされたレコードを含まない新しいエクステントを書くこともできる。
テナントの作成時に、タイムスタンプ又は他の時間識別子が作成されてもよい。その後、テナントデータは、タイムスタンプの前に記憶されたデータのプール内のキーに基づいて適切なバージョンにアクセスすることによって、タイムスタンプの前のデータのバージョンのためのプライマリ・キー要求を解釈することができる。タイムスタンプの後に作成又は更新されたデータにアクセスしているそれぞれのテナントのためのキーは、そのテナントによって作成された適切なデータにアクセスするために解釈されることになる。あるいは、タイムスタンプを使用する代わりに、データベース内の各トランザクションは、後続のトランザクションごとに単調増加する、それに関連付けられる一意のトランザクション番号を有してもよく、システムは、タイムスタンプの代わりに、最も最近作成されたトランザクション識別子に注目してもよい。
図2は、開示される主題の一実装による、データベースシステム(例えば図3に図示されるシステム30、図4A〜図4Jに図示されるシステム50、図6A〜図6Cに図示されるデータベースシステム1200a〜1200d)で使用される例示のレコードを示す。レコードは、キー空間(ks)、テナント識別子、オブジェクト識別子(objectId)及び/又はオブジェクトキー(ObjectKey)によってキー付けされ得る。図2に図示されるように、レコードは、テナント識別子、objectId及びobjectKeyを含んでよい。レコードのキーが、テナント識別子、objectId及びobjectKeyを含んでもよい。開示される主題の実装において、キー及び/又は値は、長さが可変であってよい。上述のように、開示される主題の実装におけるデータエクステントは、キーによってソートされ、コミット時間に従ってLSMツリー内のレベルによって編成されてよい。本明細書で開示されるデータベースシステムは、レコードの永続的コンテンツを記憶するリレーショナルデータベースにおいて使用され得る不変ストレージ、テナント識別子によってルート形成される単一のキー空間、そして永続的仮想化を使用することによるものを有してもよい。永続性はエクステントで構成されてもよい。エクステントは、データを記憶するために使用され得る、典型的に隣接するストレージ領域である。上述のように、エクステントは、不変であってもよく、キーによって順序付けられてもよい。
開示される主題の実装において、データエクステント参照は、レベルに編成されてもよい(例えば図4Iを参照されたい。図4Iは、レベル0でエクステントE5、レベル1でエクステントE3及びE4を示している)。レベルは、キーによって順序付けられるデータエクステント参照にグループ化され得る、単一のキー範囲をカバーすることができる。
編成されたデータのレベルの数を低減及び/又は最小にすることは、新しいデータが到着するときにデータの書き換えを増加させる可能性がある。各レベルは、最大サイズ閾値を有することがあり、レベルのサイジングは指数関数的に増加し得る。サイズ閾値を超えると、マージ操作がデータベースシステム(例えば図3のシステム30、図4A〜図4Jのシステム50及び/又は図6A〜図6Cに図示されるデータベースシステム1200a〜1200d)によって実行されてよく、この場合、データはレベルNからレベルN+1にマージされる。
データは、フラッシュ(flush)操作によりデータが永続化され、クエリが永続性の最新のビューに進むまで、データベースシステムのメモリストレージ(例えば図6B〜図6Cに図示されるメモリストレージ1230)から移動されない。例えばフラッシュ操作では、データは、メモリストレージ1230から図6B〜図6Cに図示されるストレージ1260にコピーされる。すなわち、フラッシュ操作では、1つ以上のエクステントが、メモリストレージ1230からストレージ1260(すなわち、永続ストレージ)に移動される。これは、特定のトランザクション範囲についてキー順で行われてよい。リカバリ情報はカタログ1250に書き込まれてよい。この情報は、リカバリ開始点を含んでよい。リカバリ開始点は、エクステントとフラグメントオフセットを含んでよい。リカバリトランザクション閾値は、最後のフラッシュ操作からの最も高いトランザクション値とすることができる。データがメモリストレージ1230からストレージ1260にコピーされると、コピーされたデータは、メモリストレージ1230から除去されてよい。
エクステント参照は、エクステント識別子、最小キー、最大キー、元のテナント識別子、新規テナント識別子及びフィルタ(例えばトランザクションフィルタ)を含んでよい。エクステント参照は、エクステント識別子(ExtentId)を含んでよい。エクステント識別子は、これが指し示す物理的エクステントを識別することができる。エクステント参照の最小キーは、そのエクステント参照がアクセスすることができる最小キー値とすることができる。最小キーは、エクステント内の最小キーであってもよい。エクステント参照の最大キーは、そのエクステント参照がアクセスすることができる最大キー値とすることができる。元のテナント識別子は、テナントデータをサンドボックス化する場合に生産テナント(production tenant)を示すように設定されてよい。新規テナント識別子は新規テナントであってよく、したがって、テナントデータがサンドボックス化されているとき、新規テナント識別子はサンドボックスに設定される。エクステント参照はトランザクションフィルタを有してもよい。トランザクションフィルタは、エクステント参照がこのエクステント内を「見る」ことができるように、レコードがいつ存在するようになったかを示すコミットタイムスタンプの最大値に対応してよい。後述するように、フィルタ(例えばトランザクションフィルタ)及びトランザクション識別子は、仮想ポイント・イン・タイム・リストア時点のストレージ内の所望のデータを指し示すために使用されてもよい。
エクステント参照は、物理的ストレージ(例えばストレージデバイス)に記憶される物理的エクステントの論理参照として使用されてよく、エクステント参照は、不変ストレージへのアクセスを仮想化することができる。例えば図3、図6B及び図6Cに図示され、以下で詳細に説明されるように、エクステント参照(図3に図示されるエクステント参照35又は図6Cに図示されるエクステント参照1252等)は、物理的ストレージ36内のエクステント37を指し示す仮想化層34の一部であってもよい。同様に、図6B〜図6Cに図示されるように、カタログ1250のエクステント参照1252は、ストレージ1260のデータエクステント1270を指し示すことができる。エクステント参照の少なくとも一部(例えば図6Cに図示されるエクステント参照1252)は、エクステント参照セット(例えば仮想化層34の一部である)にグループ化されてもよい。エクステント参照セットは、データベースシステムのデータベース・インスタンスに関連付けられる永続性(例えば図3に図示されるような物理的ストレージ36内のエクステント37又は図6Cに図示されるストレージ1260のデータエクステント1270内のエクステント)を指し示す。エクステント参照セットの各エクステント参照は、復元されるべきテナントデータの境界範囲を設定する最小キーと最大キーを含んでよい。例えば図6Cのエクステント参照1252の各々は、最小キーであり得る「キー開始」と、境界範囲(例えば復元されるテナントの境界範囲)の最大キーであり得る「キー終了」とを含む。図6B〜図6Cに図示されるエクステント・インデックス1240は、データベースシステム1200a、1200b、1200c及び/又は1200dのノード1220が、ストレージ1260から復元されるべきテナントデータの境界範囲に対する(例えばデータエクステント1270内の)テナントデータにアクセスすることを可能にする。
第1データのアーカイブ情報(例えば初期アーカイブセット及び/又は1つ以上の増分アーカイブセット)の後のエクステント参照を見つけてもよい。ここで、アーカイブ情報は、第1時点より前のテナントデータを含む。見つかったエクステント参照の各々は、同じ最小キーと同じ最大キーマッピングを有する復元参照セットに追加されてよい。データベースシステムは、復元されたテナントデータにアクセスすることができる。エクステント参照の少なくともいくつかが、不変ストレージ内の第1時点よりも新しいデータへの参照を含むとき、少なくとも図4F〜図4Jに関連して以下で説明されるように、提示されるべきデータをフィルタリングすることができる。
いくつかの実装では、図1Aの方法10は、第1時点の前のテナントを復元し、復元されたテナントデータを、第1時点に又はその前にコミットされたデータで更新することを含んでよい。これはまた、少なくとも図4F〜図4Jに関連して図示され、以下に詳細に説明される。
図1Bは、開示される主題の一実装による、マルチテナント型データベースシステムのテナントのデータのポイント・イン・タイム・リストアを実行する別の例示の方法を示す。方法20は、全体を通して詳細に説明されるように、図3、図5及び図6A〜図6Cに図示されるシステムに関連して用いられてよい。図1Aに関連して上述した方法10と同様に、方法20は、不変ストレージ(例えば図5に図示される第2コンピュータ800のストレージ810、図6A〜図6Cのデータベースシステム1200a〜d等)に記憶される、テナント識別子に関連付けられるテナントデータを有してよい。
方法20は、複数のテナント・インスタンスをサポートする単一のデータベースを使用して、マルチテナント型データベースシステムのテナントのデータのポイント・イン・タイム・リストアを実行するためのものであってよい。データベースシステムは、テナントデータを不変ストレージに記憶してよく、単一のデータベースからレコードのバージョンをコミット又は削除してもよい。
動作21において、データベースシステムによって処理されるべきデータを示す現在のエクステント又は他のメタデータへのポインタを、不変ストレージ内のテナントのアーカイブデータに切り替えてよい。上述のプロセスと同様に、アーカイブデータは、特定の時点より前の各データの直近のコミットされたバージョン及びそれらのデータの任意の以前のバージョンを含んでもよい。ある時点に顧客を復元することは、所望の時点より前の顧客データの完全なセットを指し示すか、他の方法で該顧客データの完全なセットにシステムを向ける、データベースに関するアーカイブメタデータ情報を見つけることによって達成され得る。ポインタは、見つかったアーカイブ情報に切り替えられてよい。アーカイブデータは、テナントの現在のデータではない、以前に書き込まれたデータであってもよい。アーカイブデータを取り出すために、データベースポインタは、(ポイント・イン・タイム・リストア操作を実行する現在の時間よりも)より時間の早いトランザクションを指し示すように動かされ、その後に発生したトランザクションを破棄する。これらのポインタは、ある時点について復元されている顧客データの限度を設定する。
動作22において、本方法は、ある時点より前にコミットされた第1テナントのデータへのデータベースのアクセスを制限し得るが、データベースは、他のテナントのデータは処理することが可能である。
図3は、開示される主題の実装による、レコードを挿入及び/又は更新するため、かつ/又は図1A〜図1B及び図4A〜図4Jに図示されて全体を通して説明されるようなポイント・イン・タイム・リストアを実行するための例示的なシステムを示す。システム30は、単一のコンピューティングデバイスであってよく、あるいは複数の接続されたコンピューティングデバイスを含んでもよく、例えばラップトップ、デスクトップ、個々のサーバ、サーバクラスタ、サーバファーム又は分散サーバシステムであってもよく、あるいは仮想コンピューティングデバイス又はシステムであるか、物理及び仮想システムの任意の適切な組合せであってもよい。簡潔性のために、プロセッサ、短期及び長期ストレージ、オペレーティングシステム、データベース管理システムの大部分のような構成要素は図示されていない。サーバシステム30は、コンピューティングシステム及びネットワークインフラストラクチャの一部であってもよく、あるいはそうでなければ、サーバシステム30と同様の他のサーバシステムを含み得るより大きなサーバネットワークを含む、コンピューティングシステム及びネットワークインフラストラクチャに接続されてもよい。いくつかの実施において、システム30は、コンピュータ600、中央コンポーネント700及び/又は図5に図示される第2コンピュータ800及び/又は図6A〜図6Cに図示されるデータベースシステム1200a〜1200dのうちの1つ以上であってもよい。
システム30のアクセス層32は、データベース・ストレージ・エンジン33を有してよい。データベース・ストレージ・エンジン33は、データベースシステム(例えば図5に図示される中央コンポーネント700及び/又は図6A〜図6Cに図示されるデータベースシステム1200a〜1200d)についてのクエリ及び/又は命令を、データに関するコンピューティングデバイス(例えば図5に図示されるコンピュータ600及び/又は第2コンピュータ800)から受け取るか、完了することができる。クエリは、テナントからの特定のデータについてのものであってもよく、かつ/又はテナントのデータを挿入及び/又は更新する命令であってもよい。データベース・ストレージ・エンジン33は、データベースシステムについてのクエリを受け取り、受け取ったクエリ及び/又は命令に関連するデータを取り出すためのサーバシステム30上のハードウェア及びソフトウェアの任意の適切な組合せであってもよい。
システム30は仮想化層34を含んでもよく、仮想化層34はエクステント参照35を有してよい。いくつかの実装では、エクステント参照35は、図5に図示される中央コンポーネント700及び/又は図6A〜図6Cに図示されるデータベースシステム1200a〜1200dの一部であってもよい。エクステント参照35は、データベース・ストレージ・エンジン33と物理的ストレージ36(例えば以下で説明されるように、エクステント37の一部としてエクステントがここに記憶され得る)との間の仮想化層34として実行するよう、システム30上のハードウェアとソフトウェアとの任意の適切な組合せであってよい。物理的ストレージ36は、半導体メモリ、ソリッドステートドライブ(SSD)、ハードディスクドライブ、光メモリ、光ストレージデバイス又は他の任意の適切な物理データ記憶媒体又はそれらの何らかの組合せであってよい。
図4A〜図4Jは、開示される主題の一実装による、スナップショットを使用して、データを挿入してポイント・イン・タイム・リストアを実行する例示的なシステム50及び方法を示している。
システム50は、データベースシステム、サーバシステム、クラウドサーバシステム等であってよい。システム50は、一時ストレージ100、永続性200及びログ300を含んでよい。永続性200は、それに関連付けられる1つ以上のサーバ及び/又はコンピュータ(例えば図5に図示されるコンピュータ600及び/又はコンピュータ800及び/又は図6A〜図6Cに図示されるデータベースシステム1200a〜1200d)を有してもよい。一時ストレージ100は、情報を永続性200に記憶するための「コミット」又は「フラッシュ」操作の前に、エクステント内にデータのキー範囲を記憶するためのシステム50上のハードウェア及びソフトウェアの任意の適切な組合せであってよく、永続性200は、データのエクステント及びデータのエクステント参照を記憶するためのシステム50上のハードウェア及びソフトウェアの任意の適切な組合せであってよい。ログ300は、システム50によって処理されたトランザクションのレコードを保持するための、システム50上のハードウェア及びソフトウェアの任意の組合せであってよい。
図4Aに図示されるように、挿入操作101が、システム50によって処理され得る。この例では、キーは、人ID(例えばPerson1、Person2等)及びトランザクション識別子(x1、x2等)を備えるので、org id(例えばテナント)、テーブル、行及び他の共通のキー情報は明確性のために省略される。この例では、データ「Person1,100,x1」が一時ストレージ100に追加され得る。第2挿入操作102は、データ「Person2,100,x2」を追加してよく、これは、一時ストレージ100に記憶され得る。ログ300は、挿入操作101及び102の別個のレコードを、図4Aに図示されるようにトランザクションx1及びx2(x1及びx2はトランザクションのシーケンスを示す)として保持することができる。ログ300のリカバリポイントは、挿入操作101、102の登録の前(すなわち、図4Aに示されるように、トランザクション識別子x1を有するログレコードの前)に配置され得る。
図4Bに図示されるように、「フラッシュ」操作は、システム50によって、トランザクションx1及びx2を含むE1(エクステント1)として、挿入操作101及び102を永続性200(例えばログ構造化マージツリーのレベル0)に記録するために実行されてよい。すなわち、フラッシュ操作は、挿入操作101及び102からのトランザクションを一時ストレージ100から除去し、それらを永続性200内のレベル0でE1の一部として記憶することができる。システム50は、ログ300内のリカバリポイントを、操作101、102に続く位置(すなわち、図4Bに示されるように、トランザクション識別子x2を有するログレコードの後)に調整することができる。
図4Cは、システム50によって処理される追加の後続の挿入操作を示す。挿入操作103は、データ「Person3,100,x3」を一時ストレージ100に追加してよく、挿入操作104は、データ「Person4,100,x4」を一時ストレージ100に追加してよい。図4Cに図示されるように、リカバリポイントは、操作101、102に続く位置(すなわち、トランザクション識別子x2を有するログレコードの後)にあってよい。挿入操作103及び104は、第1後続トランザクションx3及び第2後続トランザクションx4としてログ300によって記録されてよい。
図4Dに図示されるように、フラッシュ操作は、システム50によって、挿入操作103及び104(すなわち、トランザクションx3及びx4)を永続性200内(例えばレベル0において)にE2(エクステント2)として記録するために実行され得る。永続性200はまた、エクステントE1(すなわち、トランザクションx1及びx2)の一部として、挿入操作101及び102からのデータも含む。ログ300内のリカバリポイントは、システム50によって、操作103、104に続く位置(すなわち、図4Dに示されるように、トランザクション識別子x4を有するログレコードの後)に調整されてよい。
上述したように、マージ操作は、図4Eに示すように、永続性200のレベル0のエクステントE1及びE2に対して実行され、永続性200のレベル1内にエクステントE3及びE4を形成することができる。ログ300内のリカバリポイントは、操作103、104に続く位置(すなわち、図4Eに示されるように、トランザクション識別子x4を有するログレコードの後)であってよい。ポイント・イン・タイム・リストアは、いくつかの実装では、システム50によってレベル0のエクステントを使用して実行され得るが、レベル0のエクステントがマージされてレベル1のエクステントを形成し、テナントデータのスナップショットが取得される場合、システム50は、特定の時点へのより効率的なアクセスを有することができる。すなわち、レベル1では、レベル0よりもデータを読み出し及び/又は検索するための情報が少ない可能性があるので、リストア操作のために、ポイント・イン・タイム・リストアのためのデータをより迅速に見つけることができる。
図4Eは、永続性200のレベル1におけるエクステントE3及びE4として、マージされたエクステントE1及びE2を示す。ログ300は、システム50によって実行される挿入操作の4つのトランザクション(すなわち、x1、x2、x3及びx4)を示す。図4E及び図4Fに図示される例では、テナントデータのスナップショットは、ログ300においてトランザクションx4が完了したこの時点(ログ300のリカバリポイントと一致する)で取得されてよい。テナントデータのスナップショットは、基礎とするデータをコピーすることなく、元のテナントデータのコピーが作成された場合と同様に元のテナントデータをアクセス可能にすることができるものであり得る。
図4Fにおいて、トランザクションx4の時点でのテナントデータのスナップショットに示されるように、エクステントE3は、Person1を含むデータに関連付けられる開始キーと、Person2を含むデータに関連付けられる終了キーとを有してよい。エクステントE3の最初のトランザクションはトランザクションx1であり、エクステントE3の終了トランザクションはトランザクションx2であり得る。エクステントE4は、Person3を含むデータの開始キーと、Person4を含むデータの終了キーを有してよい。エクステントE4の最初のトランザクションはトランザクションx3であり、エクステントE4の終了トランザクションはトランザクションx4であり得る。
図4Gは、トランザクションx4における時点でスナップショットが取得された後の挿入操作を示す。更新操作105は、「Person3,200,x5」を一時ストレージ100に追加して、Person3に関連付けられる値(すなわち、200)を更新することができる。挿入操作106は、「Person5,100,x6」を一時ストレージ100に追加してよい。ログ300内のリカバリポイントは、操作103、104に続く位置(すなわち、図4Gに示されるように、トランザクション識別子x4を有するログレコードの後)にあってもよい。ログ300は、図4Hに示すように、更新及び挿入操作105及び106のための新しいx5及びx6トランザクションを反映してもよい。図4Iに図示されるように、フラッシュ操作がシステム50によって実行されて、永続性200のレベル0にエクステントE5を形成してもよい。E5は、「Person3,200,x5」及び「Person5,100,x6」のトランザクションを含んでよい。ログ300のリカバリポイントは、操作105、106に続く位置になるように(すなわち、図4Iに示されるように、トランザクション識別子x6を有するログレコードの後)調整されてよい。
図4Jは、x5時点のポイント・イン・タイム・データ(point-in time data)を示す。エクステントE3は、Person1を含むデータに関連付けられる開始キーと、Person2を含むデータに関連付けられる終了キーを有してよい。エクステントE3の最初のトランザクションはトランザクションx1であってよく、エクステントE3の終了トランザクションはトランザクションx2であってよい。エクステントE4は、Person3を含むデータの開始キーと、Person4を含むデータの終了キーを有してよい。エクステントE4の最初のトランザクションはトランザクションx3であってよく、エクステントE4の終了トランザクションはトランザクションx4であってよい。エクステントE5は、Person3を含むデータの開始キーと、Person5を含むデータの終了キーを有してよい。エクステントE5の最初のトランザクションはx5であってよく、最後のトランザクションはx5であってよい。
一実施形態では、x5の時点でポイント・イン・タイム・リストアを実行するために、x4で取得されたスナップショット(例えば図4Dを参照されたい)を使用してもよく、データベースシステムによってログ300から変更が再生されて、x5の時点でのデータを復元することができる。ログ300を使用して、システム50は、「Person3,200,x5」のデータを一時ストレージ100に追加して、x5に関連付けられたトランザクションである、Person3に関連付けられる値(すなわち、200)を更新することができる。システム50(又は図6A〜図6Cに図示されるデータベースシステム1200a〜1200dのノード1220)は、所望の時点x5の前のテナントデータの完全なセットを含むデータベースに関するアーカイブ情報を見つけることができる。この情報は、復元エクステント参照セット(例えば図6Cに図示されるエクステント参照1252の一部であってよい)に収集され、ここで、各エクステント参照は、所望の時点x5まで復元されるべきテナントデータについて、最小キー及び最大キーを設定する。データがx5の時点まで復元された後、x6トランザクション(図4H及び図4Iに図示される)は、もはや利用可能ではない。
別の実装では、x4のスナップショットを使用して、x5の時点での仮想ポイント・イン・タイム・リストアを実行してもよい。エクステントE5の情報は、x4のスナップショットによって提供される情報に追加され得るが、復元がトランザクションx5までであり、したがって、トランザクションx6(すなわち、図4Iのログ300に示される)を含まないように、トランザクションフィルタを使用してもよい。システム50(又は図6A〜図6Cに図示されるデータベースシステム1200a〜1200dのノード1220)は、任意のエクステント参照(例えば図4Iの永続性200からのエクステント参照E5、あるいは図6Cに図示されるエクステント参照1252の一部であり得るエクステント)を見つけることができ、そのようなエクステント参照は、アーカイブセットの後に生成されたものであるが、x5の目標時点の前のテナントデータを含んでもよい。これらのエクステント参照の各々は、同じ最小キー及び最大キーのマッピングを有する復元エクステント参照セットに追加されてもよい(例えば図6Cのエクステント参照1252は、キー開始及びキー終了のための最小及び最大キーを有してもよい)。これらのエクステント参照の各々は、そのエクステント参照のトランザクションフィルタを、トランザクションx5の所望の復元時点に設定してもよい。データがx5の時点まで復元されると、x6トランザクション(図4H及び図4Iに図示される)はもはや利用可能ではない。
この実装では、トランザクションx5の時点までテナントのデータを復元する要求を受け取ることがある。システム(例えばシステム30、システム50、データベースシステム1200a〜1200d)は、x5トランザクションの時間の前のデータベースの直近のスナップショット(すなわち、x4のスナップショット)を見つけることができる。データベースシステムは、テナントのデータを含む可能性がある、見つかったスナップショット内のすべてのエクステントを識別することができる。これらのエクステントは、データベースシステムによって復元エクステント参照セットに追加され得る。
データベースシステムは、x5トランザクションを含むスナップショットの後であるが、x6トランザクションを含むスナップショットの前に作成された、すべてのエクステントを見つけることができる。データベースシステムは、見つかったエクステントのセットから、テナントのx5トランザクションまでのデータを有することができ、そのx5トランザクションを含むエクステントを見つけることができる。これらのエクステントから、データベースシステムは最小キー及び最大キーを設定し、エクステントが、所望の復元時点の後にコミットされたテナントのデータを含む(例えばエクステントが、x5トランザクションの後のトランザクションを含む)場合、時間Tに基づいてトランザクションフィルタを設定することができる。
すなわち、図4A〜図4J及び図6A〜図6Cに図示されるような開示される主題の実装において、仮想ポイント・イン・タイム・リストアは、データベースシステムのストレージデバイス内で、所望の時点の前のテナントデータの完全なセットを含むアーカイブ情報を探すことによって達成され得る。これは、オフラインデータソースから検索されるデータではなく、むしろ、データベースに関連付けられるLSMストレージ内に記憶されたデータのより早いバージョンであることに留意されたい。この情報は、復元エクステント参照セットに収集されてよく、ここでは、各エクステント参照が、復元されるべきテナントデータについての最小キーと最大キーの境界を設定する。あるいは、データベースシステムは、アーカイブセットの後に生成されたが(例えば少なくとも初期アーカイブセットを含み、データを所望の時点まで復元するのに使用され得る1つ以上の増分アーカイブセットを含んでもよい)、目標時点の前の顧客データを含み得る、任意のエクステント参照を探してもよい。アーカイブセットの場合、LSMツリー内のデータの完全なコピーが、特定の時点(例えば同時刻に毎日、1日に2回、毎時等)に作成されることがある。リストア操作では、目標時点の前の完全なコピーを探してもよく、完全なコピーからの特定のテナントのデータを探してもよい(例えば最初のアーカイブセット)。1つ以上の増分アーカイブセットを初期アーカイブセットに追加して、所望の時点のデータの状態に到達させることができる。
これらのエクステント参照の各々は、同じ最小キーと最大キーのマッピング範囲を有する復元エクステント参照セットに追加されてよい。これらのエクステント参照の各々は、該エクステント参照のトランザクションフィルタを、所望の復元時点に設定してもよい。データベースシステムはエクステント参照を収集しているので、データのコピーを作成する必要はない。
復元エクステント参照セットは、目標データベースにマッピングされてもよい。すべての既存データをポイント・イン・タイム・データに置き換えることが望ましい場合、エクステント参照セットは、目標データベースにマッピングされてよく、その時点を超えるデータについての既存の顧客キー範囲は除去され得る。既存のテナントデータに代替することなく、仮想ポイント・イン・タイム・リストアを異なるデータセットとして見せることが望ましい場合、エクステント参照セットは、「Formation and Manipulation of Test Data in a Database System」という名称の2016年11月8日に出願された米国特許出願第15/345,914号の例えば段落33〜37に開示されるように、新しいサンドボックス・テナントにマッピングされ得る。
復元されたデータにアクセスすると、エクステント参照は、記憶されているデータをどのように解釈するかを決定することができる。復元されたデータについて、いくつかのエクステント参照は、指定された復元時点よりも新しいデータへの参照を含んでもよい。エクステント参照のトランザクションフィルタは、データベースの残りの部分に提示することができるデータを制限してもよい。永続データの各スキャンは、どのデータがそのスキャンに対して可視であるかを解釈することができる、スナップショットトランザクションコミット番号を有する。トランザクションフィルタを有するエクステント参照を通過するスキャンは、スキャンのスナップショットトランザクションコミット番号又はエクステント参照のトランザクションフィルタのうちいずれか小さい方を、行を制限するときのトランザクションの可視性基準として使用することができる。これにより、データベース・トランザクション・ログ(例えば図4Iに図示されるログ300)を再生することによって、ある時点にあるかのようにデータアーチファクトを再構成することなく、データのある時点のビューを可能にすることができる。トランザクションコミット番号を有するエクステント参照を使用する仮想ポイント・イン・タイム・リストアは、時間順序ログをスキャンし、所望の時点までレコードを適用することに比べて、すばやく構築されることができる。
開示される主題の実装において、データベースシステム(例えばシステム30、データベースシステム1200a〜1200d等)は、所定の保持ウィンドウ(retention window)に基づいて、エクステント(例えば図6Cに図示されるエクステント1251及び/又はデータエクステント1270)及びエクステント(例えば図6Cに図示されるメタデータ及び/又はエクステント参照1252)に関する情報を保存してもよい。例えば所定の保持ウィンドウは、30日、60日、90日、120日等であってもよい。上述したように、LSMツリー内のデータの完全なコピーは、特定の時点(例えば同時刻に毎日、1日に2回、毎時等)で作成されてよい。リストア操作では、完全なコピーを目標時点の前に探し、完全なコピーからの特定のテナントのデータを探してもよい(例えば最初のアーカイブセット)。
データをアーカイブすることは、メタデータ(例えばエクステント1251、エクステント参照1252等)並びに基礎となる参照されたエクステント(例えばデータエクステント1270)を別個の記憶場所に保存することを含んでもよい。別の記憶場所は、エクステントのためのアーカイブ記憶システムと、アーカイブメタデータ記憶データベースを含んでよい。
アーカイブ・システムは、データエクステントの形式で、目標データベース(例えばデータベースシステム1200a〜1200d)に入ってくる変更を捕捉することができる。開示される主題の実装において、変更は、永続性に流されたエクステント(すなわち、例えばストレージ1260に記憶される、フラッシュ操作の一部であるレベル0のエクステント)によって捕捉されてもよい。開示される主題の別の実装において、エクステントは、それらがLSMの最低レベルに流れるときに捕捉され得る。これは、LSMが、メモリからレベル0へのフラッシュの一部として又はマージの一部として、新しいエクステントを生成しているので、代替されたレコードが該LSMから削除されていないときに起こる可能性がある。
開示される主題の実装において、テナントのデータを時点Tまで復元する要求が、データベースシステムによって受け取られることがある。システム(例えばシステム30、システム50、データベースシステム1200a〜1200d)は、時間Tの前のデータベースの直近のスナップショットSを見つけることができる。データベースシステムは、テナントのためのデータを含み得る、見つかったスナップショット内のすべてのエクステントを識別することができる。これらのエクステントは、データベースシステムによって復元エクステント参照セットに追加されてよい。
データベースシステムは、スナップショットSの後であるがスナップショットS+1の前に作成された、すべてのエクステントを見つけることができる。見つかったエクステントのセットから、データベースシステムは、テナントについて、時間Tまでのデータを有し、時間Tを含み得るエクステントを見つけることができる。これらのエクステントから、データベースシステムは最小キーと最大キーを設定し、エクステントが時間にわたる場合、時間Tに基づいてトランザクションフィルタを設定してよい。
これらの実装のポイント・イン・タイム・リストア操作を実行することによって、本明細書で開示される実施形態は、従来のデータベースのリストア操作と比較して、ログファイル(例えばログ300)からの再生を最小限にすることができ、あるいは同様のリソース集約的な操作を実行することを最小限にすることができる。すなわち、全体を通して開示されるシステム及び方法は、テナントデータが記憶されるコンピュータシステム(例えば図4A〜図4E及び図4G〜図4Iに図示されるシステム50)のより効率的なオペレーションを提供することができる。これらの開示された実装は、ポイント・イン・タイム・リストアを実行するために必要なコンピューティング・リソースを低減することができる。
現在開示されている主題の実装は、様々な構成要素及びネットワークアーキテクチャにおいて実装され、それらとともに使用されてよい。図5は、現在開示されている主題の実装を実装するのに適した例示的なコンピュータ600である。本明細書で更に詳細に説明されるように、コンピュータ600は、複数のコンピュータのネットワーク内の単一のコンピュータであってよい。図5に図示されるように、コンピュータ600は、中央又は分散型コンポーネント700(例えばサーバ、クラウドサーバ、データベース、クラスタ、アプリケーションサーバ等)と通信してよい。中央コンポーネント700は、第2コンピュータ800のような1つ以上の他のコンピュータと通信してよく、第2コンピュータ800はストレージデバイス810を含んでよい。第2コンピュータ800は、サーバ、クラウドサーバ等であってよい。ストレージ810は、例えばハードディスクドライブ、ソリッドステートドライブ、光媒体、フラッシュメモリ、テープドライブ、レジスタ及びランダムアクセスメモリ等又はその任意の組合せを含む、任意の適切な揮発性及び不揮発性物理記憶媒体の任意の適切な組合せを使用してよい。
データは、任意の適切なフォーマットで、例えばストレージ810に、任意の適切なファイルシステム又はストレージスキーム又は階層を使用して記憶されてよい。例えばストレージ810は、複数のレベルを有するログ構造化マージ(LSM)ツリーを使用してデータを記憶してよい。さらに、図4〜図5に図示されるシステムがマルチテナントシステムである場合、ストレージは、テナントのデータベースのインスタンスごとに、別個のログ構造化マージツリーに編成されてよい。すなわち、テナントごとに別個のデータベース(例えばLSMツリー)が存在してもよい。あるいは、特定のサーバ又はシステム上のすべてのレコードのコンテンツが単一のログ構造化マージツリー内に記憶されてもよく、その場合、本明細書で開示されるように、レコードのバージョンに関連付けられる一意のテナント識別子を使用して、各テナントのデータを区別することができる。より最近のトランザクションはツリーの最も高いレベル又はトップレベルに記憶されてよく、より古いトランザクションはツリーのより低いレベルに記憶される。
中央コンポーネント700に対してかつ/又は中央コンポーネント700から得られる情報は、コンピュータ600がコンピュータ800と情報を共有し得ないように、コンピュータごとに分離されてよい。代替又は追加として、コンピュータ600は、第2コンピュータ800と直接通信してもよい。
コンピュータ(例えばユーザコンピュータ、企業コンピュータ等)600は、コンピュータ600の主要なコンポーネントを相互接続するバス610を含む。そのような主要なコンポーネントは、例えば中央プロセッサ640、メモリ670(典型的にはRAMであるが、ROMやフラッシュRAM等も含んでよい)、入力/出力コントローラ680、ディスプレイアダプタを介するタッチスクリーン又はディスプレイ等のユーザディスプレイ620、キーボード、マウス、Wi−Fi/セルラ無線、タッチスクリーン、マイクロフォン/スピーカ等といった関連するユーザ入力又はデバイス及び1つ以上のコントローラを含むことがあり、かつI/Oコントローラ680に密接して結合され得る、ユーザ入力インタフェース660、ハードドライブ、フラッシュストレージ、ファイバチャネルネットワーク、SANデバイス、SCSIデバイス等といった固定のストレージ630、そして光ディスク、フラッシュドライブ等を制御及び受信するように動作する取外し可能媒体コンポーネント650である。
バス610は、中央プロセッサ640とメモリ670との間のデータ通信を可能にし、メモリ670は、前述したように、読出専用メモリ(ROM)又はフラッシュメモリ(いずれも図示せず)及びランダムアクセスメモリ(RAM)(図示せず)を含んでもよい。RAMは、オペレーティングシステム及びアプリケーションプログラムがロードされるメインメモリを含むことができる。ROM又はフラッシュメモリは、他のコードの中でも、周辺コンポーネントとの対話のような基本的なハードウェア動作を制御する基本入出力システム(BIOS)を含むことができる。コンピュータ600に常駐するアプリケーションを、ハードディスクドライブ(例えば固定ストレージ630)、光ドライブ、フロッピーディスク又は他の記憶媒体650のようなコンピュータ読取可能媒体上に記憶して、そのようなコンピュータ読取可能媒体を介してアクセスすることができる。
固定ストレージ630は、コンピュータ600と一体化されてもよく、分離されて他のインタフェースを介してアクセスされてもよい。固定ストレージ630は、ストレージエリアネットワーク(SAN)の一部であってよい。ネットワークインタフェース690は、電話リンクを介してリモートサーバへ、インターネットサーバプロバイダ(ISP)を介してインターネットへの直接接続を提供してもよく、あるいは直接ネットワークリンクを介してリモートサーバへ、POP(ポイント・オブ・プレゼンス)又は他の技術を介してインターネットへの直接接続を提供してよい。ネットワークインタフェース690は、デジタルセルラ電話接続、セルラ・デジタル・パケット・データ(CDPD)接続、デジタル衛星データ接続等を含む無線技術を使用して、そのような接続を提供することができる。例えばネットワークインタフェース690は、図5に図示されるように、コンピュータが、1つ以上のローカルネットワーク、広域ネットワーク又は他のネットワークを介して他のコンピュータ及び/又はストレージデバイスと通信することを可能にする。
多くの他のデバイス又はコンポーネント(図示せず)が、同様の方法で接続されてよい(例えばデータキャッシュシステム、アプリケーションサーバ、通信ネットワークスイッチ、ファイアウォールデバイス、認証及び/又は許可サーバ、コンピュータ及び/又はネットワークセキュリティシステム等)。反対に、図5に図示される必ずしもすべてのコンポーネントが、本開示を実施するために存在する必要はない。図示された方法とは異なる方法でコンポーネントを相互接続することができる。本開示を実施するためのコードを、メモリ670、固定ストレージ630、取外し可能媒体650の又はリモートのストレージ位置のうちの1つ以上のようなコンピュータ読取可能記憶媒体に記憶することができる。
図6A〜図6Cは、開示される主題の一実装による、例示のネットワーク構成を示す。クラウド1202によって表されるネットワーク内の異なるノードにおける4つの別個のデータベースシステム1200a〜1200dは、ネットワークリンク1204を介して互いに、そしてユーザ(図示せず)と通信する。データベースシステム1200の各々は、データベースの複数のインスタンスをホストするように動作可能であってよく、各インスタンスは、特定のテナント(例えば特定のテナントのデータにアクセスする権限を与えられている、特定のテナントに関連付けられるユーザ)に対してのみアクセス可能である。データベースシステムの各々は、ストレージエリアネットワーク(図示せず)とともにコンピュータ、ファイヤウォールとともにロード・バランサー及びバックアップサーバ、他のセキュリティシステム及び認証システムのクラスタを構成してもよい。システム1200のいずれかにおけるインスタンスの一部は、データを取り込んで、そのインスタンス内のストレージに提供するために、ユーザから又はコンピューティング要素(図示せず)から受け取ったトランザクションを処理してコミットするライブ又は生産インスタンス(live or production instances)であってもよい。
データベースシステム1200a〜1200dのうちの1つ以上は、いつでも元のテナントのためのサンドボックスを作成することができる。例えばデータベースシステムは、既存のテナントデータに代替することなく、ポイント・イン・タイム・リストアを異なるデータセットとして見せるよう要求を受け取ることがあり、次いで、エクステント参照セットを、新しいサンドボックス・テナント識別にマッピングすることができる。システム、例えば1200cは、図5のように少なくとも1つのストレージデバイスを含んでもよい。例えばストレージは、メモリ670、固定ストレージ630、取外し可能媒体650、中央コンポーネント700及び/又は第2コンピュータ800に含まれるストレージデバイス、並びに/あるいはデータベースシステム1200a〜1200dのうちの1つ以上に関連付けられる1つ以上のストレージデバイスを含んでもよい。別の例では、データベースシステム1200a〜1200cは、図6B〜図6Cに図示されるように、ストレージ1260を有してもよい。ストレージ1260は、データ(例えばテナントデータ)の永続的ストレージを提供する1つ以上のストレージデバイスを含んでもよい。
図6B〜図6Cは、開示される主題の一実装による、個々のデータベースシステム1200a、1200b、1200c又は1200dを示す。データベースシステム1200a、1200b、1200c又は1200dは、ノード1220及び/又はストレージ1260からのデータ及び/又は情報を使用することができる1つ以上のアプリケーション1210(図6Bに示される)を含んでもよい。ストレージ1260は、1つ以上のストレージデバイスであってもよい。アプリケーション1210は、顧客関係管理(CRM:customer relationship management)アプリケーション等を含んでもよい。1つ以上のサーバ及び/又は仮想サーバを含み得るノード1220は、メモリストレージ1230と、エクステント・インデックス1240と、エクステント及びエクステント参照のカタログ1250を含んでもよい。メモリストレージ1230は、データベースシステム1200a、1200b、1200c又は1200dによって処理される直近のトランザクションを記憶することができる。これらの直近のトランザクションは、例えば所定の期間に、ストレージ1260にコミットされてよい。エクステント・インデックス1240、エクステント及びエクステント参照のカタログ1250は、以下で図6Cに関連して説明される。ストレージ1260は、1つ以上のストレージデバイスであってもよく、テナントデータを含み得るデータエクステント1270を記憶してもよい。
図6Cは、開示される主題の一実装による、個々のデータベースシステム1200a、1200b、1200c又は1200dのためのノード及びストレージを示す。ノード1220は、図6Bに関連して上述したように、メモリストレージ1230及びエクステント・インデックス1240を含んでもよい。ノード1120はカタログ1250を含んでもよく、カタログ1250は、エクステント1251及びエクステント参照1252を含んでよい。エクステント1251は、ストレージの領域を参照してもよく、エクステント識別子(Eid)を含んでもよい。エクステント参照1252は、エクステント識別子(Eid)と、キー開始値及びキー終了値と、エクステント参照のためのLSM構造内のレベルを含んでもよい。
テナントデータは、元のテナント識別子に関連付けられる少なくとも1つのストレージデバイスの不変ストレージ(例えば図6B〜図6Cのストレージ1260)に記憶されてもよい。元のテナントデータは、ポイント・イン・タイム・リストア操作のスナップショットを作成するために使用されてよい。図5〜図6Cに図示されるシステムの1つ以上のサーバは、テナントデータを特定の時点に復元する要求を受け取ることができる。リストア要求に含まれるキー範囲は、ある時点(例えばキー範囲に基づいて)のデータを復元するトランザクションポイントを含んでもよく、タイムスタンプ又はシーケンス・インジケータを参照してもよい。図5〜図6Cに図示されるシステムの1つ以上のサーバは、テナントのポイント・イン・タイム・リストアのデータを示すキーの動的マッピングに基づいて、少なくとも1つのストレージデバイス(例えば中央コンポーネント700に関連付けられるストレージデバイス、第2コンピュータ800及び/又はデータベースシステム1200a〜1200dのストレージ1260)からのサンドボックス・テナントのための不変ストレージからデータを受け取ることができる。スナップショット・イン・タイムから所望のポイント・イン・タイム・リストアへのデータへの変更は、例えばトランザクション・ログ(例えば図4Fに図示されるログ300)からの変更を再生することによって達成され得る。あるいは、トランザクションフィルタを適用して、テナントデータのリストアのための所望の時点のトランザクションデータをフィルタリングしてもよい。実施されたリストア操作の結果得られるデータは、中央コンポーネント700に関連付けられるストレージデバイス、第2コンピュータ800及び/又はデータベースシステム1200a〜1200dのストレージ1260のような不変ストレージ内にあってもよい。
図5〜図6Cに図示されるシステムの1つ以上のサーバは、テナントデータの少なくとも一部についてリストア操作の要求(例えば図5に図示されるコンピュータ600等から)を受け取ることができ、少なくとも1つのストレージデバイスの不変ストレージからのデータに対して作用してテナントデータのためにポイント・イン・タイム・リストア操作を実行することができる。1つ以上のサーバは、テナントのための少なくとも1つのストレージデバイスから不変ストレージ(例えば図6B〜図6Cに図示されるストレージ1260)からのデータを受け取り、所望の時点に最も近いテナントデータのスナップショットを使用してポイント・イン・タイム・リストアを実行し、ログから又はフィルタ(例えばトランザクションフィルタ)を使用することにより、データに対する変更を再生して所望の時点におけるデータに到達することができる。
いくつかの実装形態では、図5〜図6Cに図示する1つ以上のサーバは、マルチテナント型データベースシステムのテナントのデータのポイント・イン・タイム・リストアを実行することができる。少なくとも1つのストレージデバイス(例えば中央コンポーネント700に関連付けられるストレージデバイス、第2コンピュータ800及び/又はデータベースシステム1200a〜1200dのストレージ1260)は、テナントデータを記憶することができる。テナントデータは、メタデータ・テナント識別子及びメタデータに関連付けられてよい。メタデータ・テナント識別子及びメタデータは、いつレコードが作成されてデータベースシステムから削除されたかを示し、また、データベースシステムに随時コミットされるテナントデータの異なるバージョンを示す。少なくとも1つのサーバ(例えばコンピュータ600、中央コンポーネント700、第2コンピュータ800及び/又はデータベースシステム1200a〜1200dのストレージ1260)は、メタデータを探して、ストレージデバイス内に記憶されたテナントのデータのアーカイブ情報(例えば初期アーカイブセットであり、データを所望の時点に復元するために使用され得る1つ以上の増分アーカイブセットを含んでもよい)を識別することができる。アーカイブデータは、リストア操作のために、所望の時点より前の各データの直近のコミットされたバージョンを含むことができる。少なくとも1つのサーバは、メタデータを使用することによって、テナントについてのすべての既存のデータがアーカイブバージョンに置き換えられるとき、復元参照セットをデータベースシステムの目標データベース・インスタンスにマッピングしてよく、この場合、その時点の後にコミットされたデータ及びレコードのバージョンはデータベース・インスタンスに利用可能でない。
図5〜図6Cに図示されるような少なくとも1つのサーバは、復元参照セットを目標データベース・インスタンスにマッピングして、第1時点とトランザクション的に一貫性があるようにテナントデータを復元することができる。テナントデータを特定の時点に復元することは、データベースシステムの目標データベース・インスタンスにホストされている他のテナントに影響を与えない。
エクステント参照は、少なくとも1つのストレージデバイス(例えば中央コンポーネント700に関連付けられるストレージデバイス、第2コンピュータ800及び/又はデータベースシステム1200a〜1200dのストレージ1260)へのアクセスを仮想化することができ、エクステント参照の少なくとも一部は、データベースシステムのデータベース・インスタンスに関連する永続性を指し示すエクステント参照セットにグループ化される。この仮想化の一例は図3に図示され、上述されている。エクステント参照セットの各エクステント参照(例えばエクステント参照1252の一部であってよい)は、復元されるべきテナントデータの境界範囲を設定する最小キー及び最大キーを含んでもよい。図5〜図6Cに図示される少なくとも1つのサーバは、最初の時点の前のテナントデータを含むデータのアーカイブバージョンの後に生成されたエクステント参照を見つけてもよく、見つかったエクステント参照の各々を、同じ最小キー及び最大キーマッピングを有する復元参照セットに追加する。少なくとも1つのサーバは、復元されたデータにアクセスしてよく、エクステント参照の少なくとも一部が、第1時点より新しい、不変ストレージ内のデータへの参照を含むとき、サーバは、提示されるべきデータをフィルタリングすることができる。
いくつかの実装では、少なくとも1つのサーバ(例えばコンピュータ600、中央コンポーネント700、第2コンピュータ800及び/又はデータベースシステム1200a〜1200dのノード1220)は、第1時点の前にテナントを復元してよく、復元されたテナントデータを、第1時点又はそれ以前にコミットされたデータで更新する。
いくつかの実装形態では、図5〜図6Cに図示される1つ以上のサーバは、複数のテナント・インスタンスをサポートする単一のデータベースを使用して、マルチテナント型データベースシステムの第1テナントのデータのポイント・イン・タイム・リストアを実行することができる。少なくとも1つのストレージデバイス(例えば中央コンポーネント700に関連付けられるストレージデバイス、第2コンピュータ800及び/又はデータベースシステム1200a〜1200dのストレージ1260)は、テナントデータを記憶することができる。少なくとも1つのサーバ(例えばコンピュータ600、中央コンポーネント700、第2コンピュータ800及び/又はデータベースシステム1200a〜1200dのノード1220)は、単一のデータベースからレコードのバージョンをコミット又は削除してよく、レコードを随時作成してよく、データベースシステム内のポインタを、少なくとも1つのストレージデバイス内の第1テナントのデータのアーカイブバージョンに切り替えてよく、そして、ある時点より前にコミットされた第1テナントのデータに対するデータベースのアクセスを制限することができるが、この間、データベースは他のテナントのデータを処理することができる。
開示される主題のシステム及び方法は、シングルテナントシステム及び/又はマルチテナントシステムのためのものであってよい。マルチテナントシステムは、例えばユーザ、ユーザのグループ又は組織等であり得る様々なテナントが、これらの様々なテナント間で共有され得るサーバシステム上のソフトウェアツール又はインスタンスを介して、サーバシステム上のそれら自身のレコードにアクセスすることを可能にする。各テナントのレコードのコンテンツは、そのテナントを含むデータベースの一部であり得る。マルチテナントのレコードのコンテンツは、すべて同じデータベース内に一緒に記憶されてよいが、各テナントは、そのテナントに属する又はそのテナントによって作成されたレコードのコンテンツに対してのみアクセスすることができる。これは、データベースシステムが、例えば別個のサーバ又はサーバシステム上に、各テナントのレコードのコンテンツを別々に記憶する必要なく、マルチテナント制を可能にすることができる。テナントのためのデータベースは、例えばリレーショナルデータベース、階層データベース又は任意の他の適切なデータベースタイプであってよい。サーバシステム上に記憶されるすべてのレコードは、例えばLSMツリーを含む任意の適切な構造で記憶されてよい。
マルチテナントシステムは、各ノードでコンピューティングシステムとのネットワーク全体に分散されるサーバシステム上に、様々なテナント・インスタンスを有することができる。各テナントのライブ又は生産データベースのインスタンスは、1つのコンピュータシステムで処理されるそのトランザクションのみを有する。そのインスタンスのトランザクションを処理するためのコンピューティングシステムは、他のテナントのための他のインスタンスのトランザクションも処理してもよい。
より一般的には、現在開示されている主題の様々な実装は、コンピュータ実施プロセス及びこれらのプロセスを実施するためのコンピュータの形態で含まれるか、そのような形態で実装されてよい。また、実装は、フロッピーディスケット、CD−ROM、ハードドライブ、USB(ユニバーサルシリアルバス)ドライブ又は任意の他の機械読取可能記憶媒体のような非一時的及び/又は有形媒体に実装される命令を含むコンピュータプログラムコードを有するコンピュータプログラム製品の形態で実装されてもよく、そのようなコンピュータプログラムコードがコンピュータにロードされてコンピュータによって実行されると、コンピュータは、開示される主題の実装を実施するための装置となる。また、実装は、例えば記憶媒体に記憶されるか、コンピュータにロードされ、かつ/又はコンピュータによって実行されるか、あるいは電気配線又はケーブル上で、光ファイバを通して又は電磁放射線を介するように何らかの伝送媒体を介して送信されるかにかかわらず、コンピュータプログラムコードの形態で実装されてよく、コンピュータにロードされるか、コンピュータによって実行されると、コンピュータは、開示される主題の実装を実施するための装置となる。汎用マイクロプロセッサで実装されるとき、コンピュータプログラムコードセグメントは、特定の論理回路を作成するようにマイクロプロセッサを構成する。いくつかの構成では、コンピュータ読取可能記憶媒体上に記憶される一組のコンピュータ読取可能命令は、汎用プロセッサによって実装されてよく、汎用プロセッサ又は汎用プロセッサを含むデバイスを、命令を実装又は実行するように構成される専用装置に変換することができる。実装は、ハードウェアを使用して実装されてもよい。ハードウェアは、汎用マイクロプロセッサ及び/又は開示される主題の実装に従って技術のすべて又は一部をハードウェア及び/又はファームウェアで実装する特定用途向け集積回路(ASIC)のようなプロセッサを含んでよい。プロセッサは、RAM、ROM、フラッシュメモリ、ハード・ディスク又は電子情報を記憶することができる任意の他のデバイス等のようなメモリに結合されてよい。メモリは、開示される主題の実装に従って技術を実行するために、プロセッサによって実行されるように適合された命令を記憶することができる。
上述の記載は、説明のために、特定の実装を参照して説明されている。しかしながら、上記の例示的な議論は、網羅的であるように意図されておらず、開示される主題の実施を開示された正確な形態に限定するようにも意図されていない。上記の教示を考慮すると、多くの修正及びバリエーションが可能である。これらの実装は、開示される主題の実装の原理及びそれらの実際の用途を説明するために選択され、説明され、それにより、当業者は、これらの実装、並びに考慮される特定の使用に適切であるような様々な修正を施した様々な実装を利用することが可能になる。

Claims (20)

  1. マルチテナント型データベースシステムの第1テナントのデータのポイント・イン・タイム・リストアを実行するためのコンピュータ化された方法であって、テナントデータは、前記データベースシステムの不変ストレージ内に記憶されるとともに、テナントデータは、いつレコードが作成されて前記データベースシステムから削除されたかを示し、かつ前記データベースシステムに随時コミットされるテナントデータの異なるバージョンを示す、メタデータ・テナント識別子及びメタデータに関連付けられており、当該方法は:
    前記不変ストレージに記憶された第1テナントの第1データのアーカイブバージョンを識別するメタデータを見つけるステップであって、前記アーカイブバージョンは、第1時点より前の各データの直近のコミットされたバージョンを含むステップと;
    前記メタデータを使用して、復元参照セットを前記データベースシステムの目標データベース・インスタンスにマッピングするステップであって、あるテナントについての既存のデータがすべて、前記アーカイブバージョンになるとき、前記の時点より後にコミットされたデータ及びレコードのバージョンは、前記目標データベース・インスタンスに利用可能でないステップと;
    を含む、方法。
  2. 前記復元参照セットを前記目標データベース・インスタンスにマッピングするステップは、前記第1時点とトランザクション的に一貫性があるようにテナントデータを復元するステップを含む、
    請求項1に記載の方法。
  3. 前記テナントデータを復元するステップは、前記データベースシステムの前記目標データベース・インスタンス内でホストされる他のテナントに影響を与えない、
    請求項2に記載の方法。
  4. エクステント参照が、前記不変ストレージへのアクセスを仮想化し、前記エクステント参照の少なくとも一部が、前記データベースシステムのデータベース・インスタンスに関連付けられる永続性を指し示すエクステント参照セットにグループ化される、
    請求項1乃至3のいずれか一項に記載の方法。
  5. 前記エクステント参照セットの各エクステント参照は、復元されるべき前記テナントデータの境界範囲を設定するための最小キーと最大キーを含む、
    請求項4に記載の方法。
  6. 前記第1時点より前のテナントデータを含む前記第1データの前記アーカイブバージョンの後に生成された前記エクステント参照を見つけるステップと;
    前記見つかったエクステント参照の各々を、同じ最小キーと同じ最大キーのマッピングを有する前記復元参照セットに追加するステップと;
    を更に含む、請求項4又は5に記載の方法。
  7. 復元されたテナントデータにアクセスするステップと;
    エクステント参照の少なくとも一部が、前記第1時点より新しい前記不変ストレージ内のデータへの参照を含むとき、提示されるべきデータをフィルタリングするステップと;
    請求項1乃至6のいずれか一項に記載の方法。
  8. 第1時点より前のテナントデータを復元するステップと;
    前記復元されたテナントデータを、前記第1時点又はその前にコミットされたデータで更新するステップと;
    を更に含む、請求項1乃至7のいずれか一項に記載の方法。
  9. 複数のテナント・インスタンスをサポートする単一のデータベースを使用して、マルチテナント型データベースシステムの第1テナントのデータのポイント・イン・タイム・リストアを実行するためのコンピュータ化された方法であって、前記データベースシステムは、テナントデータを不変ストレージに記憶し、前記データベースシステムは、レコードのバージョンをコミットするか前記単一のデータベースから削除し、前記データベースシステムは、レコードを随時作成し、当該方法は:
    前記データベースシステム内のポインタを、前記不変ストレージ内の前記第1テナントの前記データのアーカイブバージョンに切り替えるステップと;
    データベースが他のテナントのデータを処理することができる間に、ある時点の前にコミットされた前記第1テナントの前記データへの前記データベースのアクセスを制限するステップと;
    を含む、方法。
  10. 前記データベース内の他のテナントのデータを処理しながら、前記データベース内の第1テナントのデータを一時的に静止させるステップと;
    前記第1テナントの前記データが静止されている間、前記第1テナントの前記データへのアクセスを制限するステップと;
    を更に含む、請求項9に記載の方法。
  11. マルチテナント型データベースシステムの第1テナントのデータのポイント・イン・タイム・リストアを実行するシステムであって、当該システムは:
    テナントデータを記憶する少なくとも1つのストレージデバイスであって、前記テナントデータは、いつレコードが作成されて前記データベースシステムから削除されたかを示し、かつ前記データベースシステムに随時コミットされるテナントデータの異なるバージョンを示す、メタデータ・テナント識別子及びメタデータに関連付けられる、前記少なくとも1つのストレージデバイスと、
    前記少なくとも1つのストレージデバイスに記憶された第1テナントの第1データのアーカイブバージョンであって、第1時点より前の各データの直近のコミットされたバージョンを含むアーカイブバージョンを識別するメタデータを見つけ、前記メタデータを使用して、復元参照セットを前記データベースシステムの目標データベース・インスタンスにマッピングする少なくとも1つのサーバと、を含み、
    あるテナントについての既存のデータがすべて、前記アーカイブバージョンに置き換えられるとき、前記の時点より後にコミットされたデータ及びレコードのバージョンは、前記目標データベース・インスタンスに利用可能でない、
    システム。
  12. 前記少なくとも1つのサーバは、前記復元参照セットを前記目標データベース・インスタンスにマッピングして、前記第1時点とトランザクション的に一貫性があるようにテナントデータを復元する、
    請求項11に記載のシステム。
  13. 前記少なくとも1つのサーバが前記テナントデータを復元することは、前記データベースシステムの前記目標データベース・インスタンス内でホストされる他のテナントに影響を与えない、
    請求項12に記載のシステム。
  14. エクステント参照が、前記少なくとも1つのストレージデバイスへのアクセスを仮想化し、前記エクステント参照の少なくとも一部が、前記データベースシステムのデータベース・インスタンスに関連付けられる永続性を指し示すエクステント参照セットにグループ化される、
    請求項11乃至13のいずれか一項に記載のシステム。
  15. 前記エクステント参照セットの各エクステント参照は、復元されるべき前記テナントデータの境界範囲を設定するための最小キーと最大キーを含む、
    請求項14に記載のシステム。
  16. 前記少なくとも1つのサーバは、前記第1時点より前のテナントデータを含む前記第1データの前記アーカイブバージョンの後に生成された前記エクステント参照を見つけ、該見つかったエクステント参照の各々を、同じ最小キーと同じ最大キーのマッピングを有する前記復元参照セットに追加する、
    請求項14又は15に記載のシステム。
  17. 前記少なくとも1つのサーバは、復元されたテナントデータにアクセスし、エクステント参照の少なくとも一部が、前記第1時点より新しい前記少なくとも1つのストレージデバイス内のデータへの参照を含むとき、提示されるべきデータをフィルタリングする、
    請求項11乃至16のいずれか一項に記載のシステム。
  18. 前記少なくとも1つのサーバは、第1時点より前のテナントデータを復元し、該復元されたテナントデータを、前記第1時点又はその前にコミットされたデータで更新する、
    請求項11乃至17のいずれか一項に記載のシステム。
  19. 複数のテナント・インスタンスをサポートする単一のデータベースを使用して、マルチテナント型データベースシステムの第1テナントのデータのポイント・イン・タイム・リストアを実行するシステムであって、当該システムは:
    テナントデータを記憶する少なくとも1つのストレージデバイスと;
    レコードのバージョンをコミットするか前記単一のデータベースから削除し、レコードを随時作成し、前記データベースシステム内のポインタを、前記少なくとも1つのストレージデバイスの前記第1テナントの前記データのアーカイブバージョンに切り替え、データベースが他のテナントのデータを処理することができる間に、ある時点の前にコミットされた前記第1テナントの前記データへの前記データベースのアクセスを制限する、少なくとも1つのサーバと;
    を含む、システム。
  20. 前記少なくとも1つのサーバは、前記データベース内の他のテナントのデータを処理しながら、前記データベース内の第1テナントのデータを一時的に静止させ、前記第1テナントの前記データが静止されている間、前記第1テナントの前記データへのアクセスを制限する、
    請求項19に記載のシステム。
JP2019571672A 2017-06-27 2018-06-26 ある時点についてデータベースのデータセットを復元するシステム及び方法 Active JP6995894B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/634,796 US10592353B2 (en) 2017-06-27 2017-06-27 Systems and methods of restoring a dataset of a database for a point in time
US15/634,796 2017-06-27
PCT/US2018/039457 WO2019005766A1 (en) 2017-06-27 2018-06-26 SYSTEMS AND METHODS FOR RESTORING A DATA SET OF A DATABASE FOR A POINT IN TIME

Publications (2)

Publication Number Publication Date
JP2020525925A true JP2020525925A (ja) 2020-08-27
JP6995894B2 JP6995894B2 (ja) 2022-01-17

Family

ID=62976174

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019571672A Active JP6995894B2 (ja) 2017-06-27 2018-06-26 ある時点についてデータベースのデータセットを復元するシステム及び方法

Country Status (7)

Country Link
US (2) US10592353B2 (ja)
EP (1) EP3646195B1 (ja)
JP (1) JP6995894B2 (ja)
CN (1) CN110799948B (ja)
AU (1) AU2018290758B2 (ja)
CA (1) CA3066255A1 (ja)
WO (1) WO2019005766A1 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10592353B2 (en) * 2017-06-27 2020-03-17 Salesforce.Com, Inc. Systems and methods of restoring a dataset of a database for a point in time
WO2019070915A1 (en) * 2017-10-03 2019-04-11 Rubrik, Inc. PARTIAL RESTORATION OF A DATABASE
US10901855B2 (en) * 2018-06-21 2021-01-26 International Business Machines Corporation On-demand multitenant data backup and restore
US11599423B1 (en) * 2018-09-04 2023-03-07 EMC IP Holding Company LLC Managing backup copies in a right-to-delete personal data environment
US11321294B2 (en) 2019-09-09 2022-05-03 Salesforce.Com, Inc. Database index repair
US11514015B2 (en) 2020-01-30 2022-11-29 Salesforce.Com, Inc. Reducing requests using probabilistic data structures
US11526474B2 (en) * 2020-01-30 2022-12-13 Salesforce.Com, Inc. Reducing requests using probabilistic data structures
US11593215B2 (en) * 2020-02-05 2023-02-28 EMC IP Holding Company LLC Method and system for generating immutable backups with configurable retention spans
US11467927B2 (en) 2020-04-17 2022-10-11 Netapp, Inc. Methods and systems for protecting multitenant databases in networked storage systems
US11216344B2 (en) 2020-05-13 2022-01-04 Rubrik, Inc. Real time database backup status indication and restore
US11483150B2 (en) 2020-06-01 2022-10-25 Salesforce.Com, Inc. Private key cache in secure enclave
US20220129445A1 (en) * 2020-10-28 2022-04-28 Salesforce.Com, Inc. Keyspace references
US11741050B2 (en) 2021-01-29 2023-08-29 Salesforce, Inc. Cloud storage class-based variable cache availability
US11625386B2 (en) 2021-01-29 2023-04-11 Salesforce.Com, Inc. Fast skip list purge
US11461181B2 (en) 2021-02-03 2022-10-04 Netapp, Inc. Methods and systems for protecting multitenant databases in networked storage systems
US11934378B2 (en) * 2021-03-11 2024-03-19 International Business Machines Corporation Recording changes to records whilst preserving record immutability
US12061526B2 (en) 2021-06-08 2024-08-13 Salesforce, Inc. History information in director-based database system for transactional consistency
US11989051B2 (en) 2021-06-08 2024-05-21 Salesforce, Inc. Time alignment in director-based database system for transactional consistency
US11822535B2 (en) 2021-06-08 2023-11-21 Salesforce, Inc. Director-based database system for transactional consistency
US12079515B2 (en) 2022-01-20 2024-09-03 Pure Storage, Inc. Immutable nodes in a container system
US12019522B2 (en) 2022-01-20 2024-06-25 Pure Storage, Inc. Container recovery layer prioritization
US20230244569A1 (en) * 2022-01-28 2023-08-03 Pure Storage, Inc. Recover Corrupted Data Through Speculative Bitflip And Cross-Validation
CN114791907B (zh) * 2022-03-30 2023-01-06 北京柏睿数据技术股份有限公司 一种多租户共享数据的处理方法和系统
EP4418123A1 (en) * 2023-02-17 2024-08-21 Sap Se Tenant-level database recovery

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07244604A (ja) * 1994-03-04 1995-09-19 Nippon Telegr & Teleph Corp <Ntt> データベースオンライン復旧方法および装置
US20160117228A1 (en) * 2014-10-28 2016-04-28 Microsoft Corporation Point in Time Database Restore from Storage Snapshots

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8037345B1 (en) * 2010-03-31 2011-10-11 Emc Corporation Deterministic recovery of a file system built on a thinly provisioned logical volume having redundant metadata
CN102693169B (zh) * 2011-03-25 2015-01-28 国际商业机器公司 在多租户环境下恢复租户数据的方法、设备和数据库系统
US9244951B2 (en) * 2012-03-08 2016-01-26 International Business Machines Corporation Managing tenant-specific data sets in a multi-tenant environment
CN103577457B (zh) * 2012-07-31 2017-09-08 国际商业机器公司 用于对多租户数据库进行操控的方法和系统
US8977898B1 (en) * 2012-09-24 2015-03-10 Emc Corporation Concurrent access to data during replay of a transaction log
US9727598B2 (en) * 2012-12-19 2017-08-08 Salesforce.Com, Inc. Systems, methods, and apparatuses for fixing logical or physical corruption in databases using LSM trees
US9684570B1 (en) 2012-12-19 2017-06-20 Salesforce.Com, Inc. Systems, methods, and apparatuses for fixing logical or physical corruption in databases using immutable LSM trees
US10706025B2 (en) * 2013-02-28 2020-07-07 Amazon Technologies, Inc. Database system providing single-tenant and multi-tenant environments
US9116737B2 (en) * 2013-04-30 2015-08-25 Vmware, Inc. Conversion of virtual disk snapshots between redo and copy-on-write technologies
CN104216725B (zh) * 2013-06-04 2019-04-19 Sap欧洲公司 用于软件解决方案托管的存储库层策略调整
US9552242B1 (en) * 2013-09-25 2017-01-24 Amazon Technologies, Inc. Log-structured distributed storage using a single log sequence number space
US9372743B1 (en) * 2013-09-30 2016-06-21 Emc Corporation System and method for storage management
US9612910B2 (en) * 2013-12-23 2017-04-04 Veritas Technologies Systems and methods for generating catalogs for snapshots
WO2016049584A1 (en) * 2014-09-26 2016-03-31 Oracle International Corporation System and method for transaction recovery in a multitenant application server environment
US20160117318A1 (en) * 2014-10-28 2016-04-28 Salesforce.Com, Inc. Facilitating dynamically unified system of record in an on-demand services environment
US9760449B2 (en) * 2015-09-16 2017-09-12 International Business Machines Corporation Restoring a point-in-time copy
US10108497B1 (en) * 2015-09-29 2018-10-23 EMC IP Holding Company LLC Point-in-time restore using SQL VDI incremental backup over SQL VSS snapshot backup and recover
US10193977B2 (en) * 2016-04-29 2019-01-29 Huawei Technologies Co., Ltd. System, device and process for dynamic tenant structure adjustment in a distributed resource management system
US10592353B2 (en) * 2017-06-27 2020-03-17 Salesforce.Com, Inc. Systems and methods of restoring a dataset of a database for a point in time

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07244604A (ja) * 1994-03-04 1995-09-19 Nippon Telegr & Teleph Corp <Ntt> データベースオンライン復旧方法および装置
US20160117228A1 (en) * 2014-10-28 2016-04-28 Microsoft Corporation Point in Time Database Restore from Storage Snapshots

Also Published As

Publication number Publication date
US20180373604A1 (en) 2018-12-27
EP3646195B1 (en) 2023-07-19
US10592353B2 (en) 2020-03-17
CN110799948A (zh) 2020-02-14
CN110799948B (zh) 2024-03-26
CA3066255A1 (en) 2019-01-03
US10901861B2 (en) 2021-01-26
AU2018290758B2 (en) 2020-08-06
JP6995894B2 (ja) 2022-01-17
WO2019005766A1 (en) 2019-01-03
US20200159628A1 (en) 2020-05-21
EP3646195A1 (en) 2020-05-06
AU2018290758A1 (en) 2019-12-19

Similar Documents

Publication Publication Date Title
JP6995894B2 (ja) ある時点についてデータベースのデータセットを復元するシステム及び方法
JP7053682B2 (ja) データベーステナントマイグレーションのシステム及び方法
US10956364B2 (en) Efficient data synchronization for storage containers
CN109952564B (zh) 数据库系统中测试数据的形成与操纵
US7257690B1 (en) Log-structured temporal shadow store
JP7507143B2 (ja) データベースにおけるツームストーンレコードの早期除去のためのシステムおよび方法
US8037032B2 (en) Managing backups using virtual machines
US10621071B2 (en) Formation and manipulation of test data in a database system
US20130159257A1 (en) Systems, Method, and Computer Program Products Providing Sparse Snapshots
US20140258242A1 (en) File System and Method of Operating Thereof
Runnable US. Patent 0a. 11, 2011 Sheet 1 015 US 8,037,032 B2

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200128

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200128

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210219

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210309

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210608

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: 20211116

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211215

R150 Certificate of patent or registration of utility model

Ref document number: 6995894

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150