(57)【要約】              マルチテナント型データベースシステムの第１テナントのデータのポイント・イン・タイム・リストアを実行するためのシステム及び方法が提供される。データベースシステムの不変ストレージに記憶された第１テナントの第１データのアーカイブバージョンを識別するためにメタデータを見つけることができる。アーカイブバージョンは、第１時点より前の各データの直近のコミットされたバージョンを含む。メタデータを使用することにより、復元参照セットがデータベースシステムの目標データベース・インスタンスにマッピングされる。マッピングは、あるテナントについての既存のデータがすべて、アーカイブバージョンになるときに実行することができ、上記の時点より後にコミットされたデータ及びレコードのバージョンは、目標データベース・インスタンスに利用可能ではない。
2020525925.tif 000002
【特許請求の範囲】
【請求項１】
マルチテナント型データベースシステムの第１テナントのデータのポイント・イン・タイム・リストアを実行するためのコンピュータ化された方法であって、テナントデータは、前記データベースシステムの不変ストレージ内に記憶されるとともに、テナントデータは、いつレコードが作成されて前記データベースシステムから削除されたかを示し、かつ前記データベースシステムに随時コミットされるテナントデータの異なるバージョンを示す、メタデータ・テナント識別子及びメタデータに関連付けられており、当該方法は：
前記不変ストレージに記憶された第１テナントの第１データのアーカイブバージョンを識別するメタデータを見つけるステップであって、前記アーカイブバージョンは、第１時点より前の各データの直近のコミットされたバージョンを含むステップと；
前記メタデータを使用して、復元参照セットを前記データベースシステムの目標データベース・インスタンスにマッピングするステップであって、あるテナントについての既存のデータがすべて、前記アーカイブバージョンになるとき、前記の時点より後にコミットされたデータ及びレコードのバージョンは、前記目標データベース・インスタンスに利用可能でないステップと；
を含む、方法。
【請求項２】
前記復元参照セットを前記目標データベース・インスタンスにマッピングするステップは、前記第１時点とトランザクション的に一貫性があるようにテナントデータを復元するステップを含む、
請求項１に記載の方法。
【請求項３】
前記テナントデータを復元するステップは、前記データベースシステムの前記目標データベース・インスタンス内でホストされる他のテナントに影響を与えない、
請求項２に記載の方法。
【請求項４】
エクステント参照が、前記不変ストレージへのアクセスを仮想化し、前記エクステント参照の少なくとも一部が、前記データベースシステムのデータベース・インスタンスに関連付けられる永続性を指し示すエクステント参照セットにグループ化される、
請求項１乃至３のいずれか一項に記載の方法。
【請求項５】
前記エクステント参照セットの各エクステント参照は、復元されるべき前記テナントデータの境界範囲を設定するための最小キーと最大キーを含む、
請求項４に記載の方法。
【請求項６】
前記第１時点より前のテナントデータを含む前記第１データの前記アーカイブバージョンの後に生成された前記エクステント参照を見つけるステップと；
前記見つかったエクステント参照の各々を、同じ最小キーと同じ最大キーのマッピングを有する前記復元参照セットに追加するステップと；
を更に含む、請求項４又は５に記載の方法。
【請求項７】
復元されたテナントデータにアクセスするステップと；
エクステント参照の少なくとも一部が、前記第１時点より新しい前記不変ストレージ内のデータへの参照を含むとき、提示されるべきデータをフィルタリングするステップと；
請求項１乃至６のいずれか一項に記載の方法。
【請求項８】
第１時点より前のテナントデータを復元するステップと；
前記復元されたテナントデータを、前記第１時点又はその前にコミットされたデータで更新するステップと；
を更に含む、請求項１乃至７のいずれか一項に記載の方法。
【請求項９】
複数のテナント・インスタンスをサポートする単一のデータベースを使用して、マルチテナント型データベースシステムの第１テナントのデータのポイント・イン・タイム・リストアを実行するためのコンピュータ化された方法であって、前記データベースシステムは、テナントデータを不変ストレージに記憶し、前記データベースシステムは、レコードのバージョンをコミットするか前記単一のデータベースから削除し、前記データベースシステムは、レコードを随時作成し、当該方法は：
前記データベースシステム内のポインタを、前記不変ストレージ内の前記第１テナントの前記データのアーカイブバージョンに切り替えるステップと；
データベースが他のテナントのデータを処理することができる間に、ある時点の前にコミットされた前記第１テナントの前記データへの前記データベースのアクセスを制限するステップと；
を含む、方法。
【請求項１０】
前記データベース内の他のテナントのデータを処理しながら、前記データベース内の第１テナントのデータを一時的に静止させるステップと；
前記第１テナントの前記データが静止されている間、前記第１テナントの前記データへのアクセスを制限するステップと；
を更に含む、請求項９に記載の方法。
【請求項１１】
マルチテナント型データベースシステムの第１テナントのデータのポイント・イン・タイム・リストアを実行するシステムであって、当該システムは：
テナントデータを記憶する少なくとも１つのストレージデバイスであって、前記テナントデータは、いつレコードが作成されて前記データベースシステムから削除されたかを示し、かつ前記データベースシステムに随時コミットされるテナントデータの異なるバージョンを示す、メタデータ・テナント識別子及びメタデータに関連付けられる、前記少なくとも１つのストレージデバイスと、
前記少なくとも１つのストレージデバイスに記憶された第１テナントの第１データのアーカイブバージョンであって、第１時点より前の各データの直近のコミットされたバージョンを含むアーカイブバージョンを識別するメタデータを見つけ、前記メタデータを使用して、復元参照セットを前記データベースシステムの目標データベース・インスタンスにマッピングする少なくとも１つのサーバと、を含み、
あるテナントについての既存のデータがすべて、前記アーカイブバージョンに置き換えられるとき、前記の時点より後にコミットされたデータ及びレコードのバージョンは、前記目標データベース・インスタンスに利用可能でない、
システム。
【請求項１２】
前記少なくとも１つのサーバは、前記復元参照セットを前記目標データベース・インスタンスにマッピングして、前記第１時点とトランザクション的に一貫性があるようにテナントデータを復元する、
請求項１１に記載のシステム。
【請求項１３】
前記少なくとも１つのサーバが前記テナントデータを復元することは、前記データベースシステムの前記目標データベース・インスタンス内でホストされる他のテナントに影響を与えない、
請求項１２に記載のシステム。
【請求項１４】
エクステント参照が、前記少なくとも１つのストレージデバイスへのアクセスを仮想化し、前記エクステント参照の少なくとも一部が、前記データベースシステムのデータベース・インスタンスに関連付けられる永続性を指し示すエクステント参照セットにグループ化される、
請求項１１乃至１３のいずれか一項に記載のシステム。
【請求項１５】
前記エクステント参照セットの各エクステント参照は、復元されるべき前記テナントデータの境界範囲を設定するための最小キーと最大キーを含む、
請求項１４に記載のシステム。
【請求項１６】
前記少なくとも１つのサーバは、前記第１時点より前のテナントデータを含む前記第１データの前記アーカイブバージョンの後に生成された前記エクステント参照を見つけ、該見つかったエクステント参照の各々を、同じ最小キーと同じ最大キーのマッピングを有する前記復元参照セットに追加する、
請求項１４又は１５に記載のシステム。
【請求項１７】
前記少なくとも１つのサーバは、復元されたテナントデータにアクセスし、エクステント参照の少なくとも一部が、前記第１時点より新しい前記少なくとも１つのストレージデバイス内のデータへの参照を含むとき、提示されるべきデータをフィルタリングする、
請求項１１乃至１６のいずれか一項に記載のシステム。
【請求項１８】
前記少なくとも１つのサーバは、第１時点より前のテナントデータを復元し、該復元されたテナントデータを、前記第１時点又はその前にコミットされたデータで更新する、
請求項１１乃至１７のいずれか一項に記載のシステム。
【請求項１９】
複数のテナント・インスタンスをサポートする単一のデータベースを使用して、マルチテナント型データベースシステムの第１テナントのデータのポイント・イン・タイム・リストアを実行するシステムであって、当該システムは：
テナントデータを記憶する少なくとも１つのストレージデバイスと；
レコードのバージョンをコミットするか前記単一のデータベースから削除し、レコードを随時作成し、前記データベースシステム内のポインタを、前記少なくとも１つのストレージデバイスの前記第１テナントの前記データのアーカイブバージョンに切り替え、データベースが他のテナントのデータを処理することができる間に、ある時点の前にコミットされた前記第１テナントの前記データへの前記データベースのアクセスを制限する、少なくとも１つのサーバと；
を含む、システム。
【請求項２０】
前記少なくとも１つのサーバは、前記データベース内の他のテナントのデータを処理しながら、前記データベース内の第１テナントのデータを一時的に静止させ、前記第１テナントの前記データが静止されている間、前記第１テナントの前記データへのアクセスを制限する、
請求項１９に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
アプリケーション又はデータベースシステムのユーザは、特定の時点までのそれらのデータを復元する必要があることが多い。これは、典型的には、システム内のユーザのデータの一部が破損したときに発生する。アプリケーション又はデータベースシステムのユーザは、そのようなシステムのプロバイダに、ユーザのデータをすべて、破損前のある時点まで復元するように要求することがある。典型的なシステムでは、ユーザのデータは、破損が発生する前のおおよその時点に復元される。この復元のおおよその時点は、一般に、破損点の検出前のすべてのデータを有しているわけではない。
【図面の簡単な説明】
【０００２】
開示される主題の更なる理解を提供するために含まれる添付の図面は、本明細書に組み込まれてその一部を構成する。図面はまた、開示される主題の実装を図示し、詳細な説明とともに、開示される主題の実装の原理を説明する。開示される主題の基本的理解及びそれが実施され得る様々な方法について必要とされ得る以上に構造的詳細を詳しく示す試みは行わない。
【０００３】
【図１Ａ】開示される主題の一実装による、マルチテナント型データベースシステムの第１テナントのデータのポイント・イン・タイム・リストアを実行する例示の方法を示す図である。
【０００４】
【図１Ｂ】開示される主題の一実装による、マルチテナント型データベースシステムの第１テナントのデータのポイント・イン・タイム・リストアを実行する別の例示の方法を示す図である。
【０００５】
【図２】開示される主題の一実装による、データベースシステム内のレコードの例を示す図である。
【０００６】
【図３】開示される主題の一実装による、仮想化層を用いてポイント・イン・タイム・リストアのためにデータを記憶及び検索するための例示のシステムを示す図である。
【０００７】
【図４Ａ】開示される主題の一実装による、スナップショットを用いてデータを挿入してポイント・イン・タイム・リストアを実行する例示のシステム及び方法を示す図である。
【図４Ｂ】開示される主題の一実装による、スナップショットを用いてデータを挿入してポイント・イン・タイム・リストアを実行する例示のシステム及び方法を示す図である。
【図４Ｃ】開示される主題の一実装による、スナップショットを用いてデータを挿入してポイント・イン・タイム・リストアを実行する例示のシステム及び方法を示す図である。
【図４Ｄ】開示される主題の一実装による、スナップショットを用いてデータを挿入してポイント・イン・タイム・リストアを実行する例示のシステム及び方法を示す図である。
【図４Ｅ】開示される主題の一実装による、スナップショットを用いてデータを挿入してポイント・イン・タイム・リストアを実行する例示のシステム及び方法を示す図である。
【図４Ｆ】開示される主題の一実装による、スナップショットを用いてデータを挿入してポイント・イン・タイム・リストアを実行する例示のシステム及び方法を示す図である。
【図４Ｇ】開示される主題の一実装による、スナップショットを用いてデータを挿入してポイント・イン・タイム・リストアを実行する例示のシステム及び方法を示す図である。
【図４Ｈ】開示される主題の一実装による、スナップショットを用いてデータを挿入してポイント・イン・タイム・リストアを実行する例示のシステム及び方法を示す図である。
【図４Ｉ】開示される主題の一実装による、スナップショットを用いてデータを挿入してポイント・イン・タイム・リストアを実行する例示のシステム及び方法を示す図である。
【図４Ｊ】開示される主題の一実装による、スナップショットを用いてデータを挿入してポイント・イン・タイム・リストアを実行する例示のシステム及び方法を示す図である。
【０００８】
【図５】開示される主題の一実装によるコンピュータを示す図である。
【０００９】
【図６Ａ】開示される主題の一実装によるネットワーク構成を示す図である。
【図６Ｂ】開示される主題の一実装によるネットワーク構成を示す図である。
【図６Ｃ】開示される主題の一実装によるネットワーク構成を示す図である。
【発明を実施するための形態】
【００１０】
アプリケーション及び／又はデータベースシステムのユーザは、過去のある時点までデータセットを正確に復元する必要がある可能性があるので、開示される主題の実装は、同じデータベース内にデータを有する他のテナントに影響を与えることなく、データベースシステム内のあるテナントのデータのポイント・イン・タイム・リストア（point-in-time  restore）を提供する。テナントをある時点に復元することは、所望の時点より前のデナントデータの完全なセットを含む、データベースに関するアーカイブ情報を見つける（locating）ことによって行われる。開示される主題の実装は、現在のシステムに対して、同じデータベース内の他のテナントデータに影響を与えることなく、特定の時点にテナントデータを復元するための粒度を改善する。
【００１１】
アプリケーション及び／又はデータベースシステムのオペレーションにおいて、ユーザは、それらのデータが破損したことを理解することがあり、アプリケーション及び／又はデータベースサービスのプロバイダに、以前の特定の時点のそれらのデータへのアクセスをユーザに与えることを要求することがある。あるシナリオでは、ユーザは、すべての彼らのデータを破損の前の時点に復元するように要求することがある。この場合、ユーザは、以前の時点までデータベースを復元することを望み、その以前の時点の後に、破損が検出された後に行った変更を調整しようとすることがある。より一般的なシナリオは、破損が検出されてからの変更を失うことをユーザが望んでいないというものである。この場合、ユーザは、破損前のデータへのアクセスを取得して、既存のデータへの手動調整及び修正を実行することを選択することがあり、これは、非効率的であり、エラーを生じやすい可能性がある。
【００１２】
これらのシナリオは両方とも、複数のテナントを単一の物理的なデータベースにしてホストしているアプリケーション及び／又はデータベースプロバイダ（例えばクラウドベースのプロバイダ）では実用的でないことが多い。テナントは、データベースの高い利用可能性を要求することが多く、ポイント・イン・タイム・リストアの場合であっても、一時的な機能停止以外は受け入れられない可能性がある。複数のテナントが１つのデータベース内に記憶される場合、複数のテナントに影響を与えることなく、１つのテナントを、既存のデータベース内の以前の時点まで復元することは不可能である可能性がある。さらに、データベースのすべて又は一部を単一の時点に復元するプロセスは、多くの時間を要する可能性があり、その間は、新しいトランザクションを処理することができない。
【００１３】
このような状況に対する一般的な解決策は、テナントに、以前のバージョンのテナントデータに対して限られたアクセスしか与えないことである。従来のシステムは、典型的に、テナントに、ある時点のそれらのデータのビューを与えるためには多くのステップを必要とする。テナントのデータを含むデータベースの一部又は場合によってはデータベース全体を復元するために、十分なコンピュータリソースを見つけなければならない。
【００１４】
一般的なプロセスは、破損が発生する前のデータの完全なバックアップで始まる可能性がある。典型的には、完全バックアップ後の後続の時点にテナントデータを復元するために、増分バックアップが追加されてもよい。次いで、アーカイブされたトランザクションログ（例えば再実行（redo）ログ等）を、所望の時点の直近の完全なバックアップに適用して、所望の時点までのデータベースをもたらす。その時点のデータの抽出のフォームを生成してテナントに提供することができる。しかしながら、このプロセスは、復元されているデータベースのサイズ及びリソースの利用可能性に応じて非常に長い時間を要する可能性があり、追加のハードウェアを必要とする。
【００１５】
開示される主題の実装は、テナントのデータのポイント・イン・タイム・リストアを提供することができる。開示される実装は、追加のハードウェア（例えばサーバ及び／又は他のコンピューティングデバイス、追加のストレージデバイス等）なしに、リストア操作をほぼ即時に行うことができ、同じシステム内にデータを有する他のテナントに影響を与えないので、以前のシステムの典型的なリストア操作の時間及びリソースを低減する。また、開示される実装は、テナントデータを特定の時点により容易に復元することもできる。
【００１６】
すなわち、開示される主題の実装では、データベースのテナントデータを特定の時点に導くためログ再生の必要性を除去するために、データを仮想化してマッピングすることができる。以下に詳述するように、エクステント参照（extent  reference）を使用して、データベースの物理的なストレージへのアクセスを仮想化する。エクステント参照をエクステント参照セット（extent  reference  set）にグループ化することができる。データベース・インスタンスに関連付けられる永続性（persistence）はすべて、単一のエクステント参照セットに含まれ得る。
【００１７】
開示される主題の実装は、ログ構造化マージ（ＬＳＭ：Log  Structured  Merge）ツリーのような不変ストレージ、テナント識別子によってルート形成（root）される単一キー空間、及びストレージデバイスに記憶されたエクステントを指し示すエクステント参照を有する仮想化を使用することによるものを含むことができる。当技術分野で理解され、本明細書で使用されるように、「エクステント」とは、ストレージの領域を指し、典型的には、記憶媒体内で連続するストレージの領域を指し、データを記憶するために使用されてよい。エクステントは不変であってよい。すなわち、記憶媒体内のエクステントに関連付けられる領域又はデータが、将来的には削除される可能性はあるが、更新されないように、エクステント又はエクステント内の個々のデータは、それらが作成された後には変更されない可能性がある。エクステント参照は、物理的ストレージ（例えばストレージデバイス）に記憶されている物理的エクステントの論理参照として使用されてよく、物理的ストレージへのアクセスを仮想化するために使用されてよい。
【００１８】
さらに、エクステント及び不変性を使用することに加えて、データの異なるバージョンがシステムの永続ストレージに記憶されてよい。データのバージョンを区別することは、所与のデータのトランザクションごとにタイムスタンプを使用することによって、あるいはデータの所与のバージョンが作成又は永続ストレージにコミットされた時間を追跡して後の仮想ポイント・イン・タイム・リストアに使用することができるように、厳密に単調増加（又は厳密に単調減少）するトランザクション番号を使用することによって行われてよい。このようなタイムスタンプ又はトランザクション番号は、キーで追跡され得る、キーに関連付けられる追加のメタデータであってよい。
【００１９】
テナントをある時点に復元することは、所望の時点より前のテナントデータの完全なセットを含む、データベースに関するアーカイブ情報を見つけることによって達成され得る。以下に説明されるように、アーカイブ情報は、少なくとも初期アーカイブセットを含んでもよく、データを所望の時点に復元するために使用され得る１つ以上の増分アーカイブセットを含んでもよい。このアーカイブ情報は、復元エクステント参照セット（restore  extent  reference  set）に収集され、ここでは、各エクステント参照が、復元されるテナントデータへの参照を含む境界範囲として、最小キーと最大キーを設定する。例えばエクステント内の直近のトランザクションの時点（又はシーケンス番号）のエクステントについてメタデータを調べることによって、システムは、どのエクステントが、所望の復元時点の前に発生し、復元時点に含まれ得る少なくとも１つのトランザクションを含むかを容易に決定することができる。
【００２０】
最初のアーカイブセットの後に生成されたが、目標時点の前のテナントデータを含む可能性があるエクステント参照を見つける。アーカイブセットは、初期アーカイブセットと１つ以上の増分アーカイブセットを含んでよく、この場合、アーカイブセットは、初期アーカイブセットと１つ以上の増分アーカイブセットの結合であってもよい。エクステント参照（例えば見つかった各参照）は、復元エクステント参照セットに追加されてよく、復元エクステント参照セットは、エクステント参照のアーカイブセットと同じ最小及び／又は最大キーのマッピングを有する。エクステント参照（例えば見つかった各参照）は、所望の復元時点に設定されてよい。
【００２１】
復元エクステント参照セットは、目標データベースにマッピングされてよい。テナントがすべての既存データをポイント・イン・タイム・データに置き換えることを望む場合、エクステント参照セットは目標データベースにマッピングされ、既存のテナントキー範囲は除去される。テナントが、既存のテナントデータに代替することなく、ポイント・イン・タイム・リストアを異なるデータセットとして見えるようにすることを望む場合、エクステント参照セットは、参照によって本明細書に組み込まれる「Formation  and  Manipulation  of  Test  Data  in  a  Database  System」という名称の２０１６年１１月８日に出願された米国特許出願第１５／３４５，９１４号においてより具体的に記載されているように、新しい「サンドボックス」テナント識別にマッピングされてよい。
【００２２】
すなわち、サンドボックスを、ある時点の元のテナントについて作成することができる。不変ストレージに記憶された元のテナントデータは、元のテナント識別子に関連付けられている。仮想ポイント・イン・タイム・リストアのためのある時点の元のテナントデータは、サンドボックス・テナントによってアクセス可能な元のテナントデータのスナップショットに使用することができる。サンドボックス・テナントデータは、元のテナントデータを変更することなく変更されてよく、元のテナントデータは、サンドボックス・テナントデータを変更することなく変更されてよい。スナップショットは、元のテナントデータをサンドボックス・テナントに利用可能にするものであってよく、その結果、サンドボックス・テナントは、基礎となるデータをコピーすることなく、元のテナントデータのコピーが作成された場合と同様に、元のテナントデータにアクセスすることができる。サンドボックス・テナントは、関連する許可されたユーザ（例えばテナントデータにアクセスすることを許可されたユーザ）の要求に応じて、サンドボックス・テナント識別子を、元のテナントデータのスナップショットと、サンドボックス作成時点後にサンドボックス・テナントによって作成されたサンドボックスデータと関連付けることによって、作成され得る。サンドボックス作成時点の後にサンドボックス・テナントによって作成及び／又は変更されたサンドボックスデータは、元のテナントにはアクセス可能でない可能性がある。サンドボックスの作成、並びにサンドボックスデータの作成及び／又は修正は、２０１６年１１月８日に出願された「Formation  and  Manipulation  of  Test  Data  in  a  Database  System」という名称の米国特許出願第１５／３４５，９１４号に詳細に記載されており、その全体が参照によって本明細書に組み込まれている。
【００２３】
復元されたデータがデータベースシステムによってアクセスされるとき、エクステント参照は、物理データがどのように解釈されるかを決定してよい。復元されたデータについて、一部のエクステント参照は、テナントが指定した復元時点よりも新しいデータへの参照を含むことがある。フィルタ（例えば後述されるトランザクションフィルタ）を使用して、データベースの残りの部分に提示され得る物理データを制限してもよい。データベースは、ある時点におけるデータの一貫性のあるスナップショットを提供し、これは、例えばコミットタイムスタンプであってよい。フィルタによるエクステント参照を通過するスキャンは、物理的な行（row）を制限（qualifying）するときのスナップショット基準を有する。これは、データベース・トランザクション・ログを再生することにより、ある時点にあるかのようにデータアーチファクトを物理的に再構成することなく、所望の時点の後に、所望の時点に及ぶデータに対するポイント・イン・タイム・ビューを可能にする。すなわち、フィルタを使用することにより、仮想ポイント・イン・タイム・リストアが実行された後に発行されたクエリは、所望の時点の後のデータを見ることができない。所望の時点の後のデータを見ることができないものとなるように、フィルタを使用することができる。エクステント参照は、多くのレコード（例えば数十、数百、数千又は数百万のレコード等）にまたがる可能性があるメタデータオブジェクトであるため、フィルタを有するエクステント参照を使用する仮想ポイント・イン・タイム・リストアは、時間順序ログをスキャンして所望の時点までレコードを適用することと比べて、迅速に構築されることができる。
【００２４】
開示される主題の実装において、復元されたテナントデータは、所望の時点と完全にトランザクション的に一貫性があり、テナントの復元は、同じデータベース・インスタンス内にホストされている他のテナントに影響を及ぼさない。
【００２５】
エクステント参照は、多くのレコード（例えば数千のレコード、数百万のレコード等）にまたがる可能性があるメタデータオブジェクトであるため、少なくとも図４Ａ〜図４Ｊ及び図６Ａ〜図６Ｃに関連して以下に詳細に説明されるように、フィルタを有するエクステント参照を使用する仮想ポイント・イン・タイム・リストアは、時間順序ログをスキャンして所望の時点までレコードを適用することに比べて、非常に迅速に構築されることができる。したがって、本明細書に開示される実装は、テナントデータが記憶され、操作される基礎となるコンピュータシステムの大幅により効率的なオペレーションを可能にするとともに、ポイント・イン・タイム・リストアを実行するのに必要なコンピューティング・リソースを減少させることができる。
【００２６】
図１Ａ〜図１Ｂは、以下で詳細に説明されるような図３〜図６Ｃに図示されるシステムに関連して、データのポイント・イン・タイム・リストアを実行する例示の方法を示している。
【００２７】
図１Ａは、開示される主題の一実装による、マルチテナント型データベースシステムの第１テナントのデータのポイント・イン・タイム・リストアを実行する例示の方法１０を示す。本方法１０は、以下で詳細に説明されるように、図３、図５及び図６Ａ〜図６Ｃに図示されるシステムに関連して使用されてよい。例えばテナントデータは、図３に図示される仮想化層３４及び物理的ストレージ３６を使用して記憶され、取り出されてよい。テナントは、図５に図示される第２コンピュータ８００のストレージ８１０、図６Ａ〜図６Ｃのデータベースシステム１２００ａ〜１２００ｄ等のテナント識別子に関連付けられる、不変ストレージに記憶されるテナントデータを有してよい。例えばデータベース１２００ａは、１つ以上の物理サーバ及び／又は仮想サーバを含んでもよく、アプリケーション１２１０、１つ以上のノード１２２０及びストレージ１２６０を含んでもよい。ノード１２２０は、メモリ１２３０と、エクステント・インデックス１２４０と、エクステント及びエクステント参照１２５０のカタログを含んでもよい。ストレージ１２６０は、データエクステント１２７０を含んでよい。カタログ１２５０は、データを記憶すべき連続ストレージ（例えばストレージ１２６０）の領域を参照するエクステントを有してもよい。カタログ１２５０のエクステント参照は、物理的ストレージ（例えばストレージ１２６０）に記憶される物理的エクステントへの論理参照として使用されてよい。すなわち、テナントデータは、ストレージ１２６０のデータエクステント１２７０内に記憶されてもよい。ストレージ１２６０は、共有ストレージシステムであってよい。いくつかの実装では、１つ以上のノードは、異なる参照を通して同じデータエクステントを指し示してもよい。
【００２８】
（例えば図６Ｂのストレージ１２６０に記憶される）テナントデータは、いつレコードが作成され、データベースシステムから削除されたかを示す、メタデータ・テナント識別子及びメタデータ（例えば図６Ｂのノード１１２０に記憶され得る）に関連付けられてもよい。開示される主題の実装では、データベースシステムに随時コミットされるテナントデータの異なるバージョン（例えば図６Ｂのデータエクステント１２７０に記憶される）が存在してもよい。
【００２９】
動作１２において、データベースシステムによって、不変ストレージに記憶されたテナントのデータのアーカイブバージョンを識別するため、メタデータを見つけることができる。アーカイブバージョンは、特定の時点の前の各データの直近のコミットされたバージョンを含んでよい。すなわち、ある時点まで顧客を復元することは、所望の時点の前の顧客データの完全なセットを含む、データベースに関するアーカイブ情報を見つけることにより達成され得る。データベースシステムの不変ストレージ（例えば図５に図示される第２コンピュータ８００のストレージ８１０、図６Ａ〜図６Ｃのデータベースシステム１２００ａ〜１２００ｄ等）内のデータは実際には削除されることはないので、アーカイブ情報は、現在のテナントデータではない、以前に書かれたデータであり得る。
【００３０】
アーカイブデータを突き止めるこのメタデータは、復元エクステント参照セット操作に収集されてよく、ここで、各エクステント参照は、以下で詳細に説明されるように、最小キーと最大キーを設定する。これらのキーは、復元されている顧客データの限度を定義するために設定される。
【００３１】
動作１４において、データベースシステムは、メタデータを使用することによって、復元参照セットをデータベースシステムの目標データベース・インスタンスにマッピングしてよい。動作１４において、マッピングは、テナントについてのすべての既存のデータをアーカイブデータとして使用することを含んでよい。ある時点後にコミットされたデータのバージョンは、目標データベース・インスタンスには利用可能でないことがある。
【００３２】
いくつかの実装では、復元参照セットを目標データベース・インスタンスにマッピングすることは、特定の時点とトランザクション的に一貫性があるようにテナントデータを復元することを含んでよい。テナントデータの復元は、データベースシステムの目標データベース・インスタンスでホストされている他のテナントには影響を与えない。
【００３３】
図１Ａ〜図１Ｂに関連して説明した仮想ポイント・イン・タイム・リストア方法において、並びに図３〜図６Ｃに関連して全体を通して説明されるデータベースシステムにおいて、レコードは、マルチテナントシステムのインスタンスにおけるキー値ペアとして識別され得る。データベース内にテナントを作成することができ、テナントに関連する許可されたユーザは、そのテナントに関する操作を見て、アクセスし、かつ／又は実行することができる。値は、例えばリレーショナルデータベースのテーブルの行のコンテンツ、リレーショナルデータベースのテーブルの行の識別情報又は任意の他の適切な値であってよい。キーは、レコードの識別子であってもよく、例えば英数字シーケンスのような任意の適切な形式であってもよい。キーの一部は、レコードのコンテンツに関する情報を提供してよい。例えばキーの一部は、レコードのコンテンツが属しているテナントを一意に識別し得るテナント識別子であってよい。キーの他の部分は、例えばレコードの値が行のコンテンツであるときは、テーブル番号及び行の識別情報を識別してよく、あるいは、値が行の識別情報であるときは、テーブル番号、テーブルのインデックス番号及びインデックス付き列の識別情報を識別してよい。
【００３４】
データベースシステム（例えば図３に図示されるシステム３０又は図６Ａ〜図６Ｃに図示されるデータベース１２００ａ、１２００ｂ、１２００ｃ及び／又は１２００ｄ）は、トランザクションを所与のレコードの不変バージョンとして記憶してもよい。サーバシステムに既に記憶されているレコードのコンテンツの不変バージョンは、そのコンテンツが（ごくまれであるが）サーバシステムから削除されるまで、変更され得ない。すなわち、受け取ったトランザクションは、レコードのコンテンツを変更する代わりに、サーバシステムに記憶されるべきレコードのコンテンツの新しいバージョンを作成することができる。
したがって、本明細書に開示されているように、レコード（例えば異なるコンテンツを有するレコード）の複数のバージョンについて、トランザクション識別子以外に、同一のキーを有することが可能であり得る。所与のレコードのバージョンのための他の点では同じキーの使用は、リレーショナルデータベースに記憶されたデータの変更を許容する可能性がある。したがって、物理レコードの各バージョンは、不変的であってよい。すなわち、物理レコードの各バージョンは削除されないか、月、年又は数十年であってよいが任意の長い期間にわたって削除されない。例えばレコードのより前のバージョンと同じキー（トランザクションバージョン識別子以外）を有するレコードのより後のバージョンは、そのレコードのデータ値における変化（すなわち、レコードのコンテンツにおける変化）を示すことがある。あるいは、トランザクションはレコードを作成しても、レコードを削除してもよい（すなわち、コンテンツの作成又はコンテンツの削除）。レコードは、「ｔｏｍｂｓｔｏｎｅ（トゥームストーン）」（例えば削除すべきデータを識別するマーカー）を挿入することによって削除されてよく、将来の時点において、ｔｏｍｂｓｔｏｎｅによってマークされたレコードを含まない新しいエクステントを書くこともできる。
【００３５】
テナントの作成時に、タイムスタンプ又は他の時間識別子が作成されてもよい。その後、テナントデータは、タイムスタンプの前に記憶されたデータのプール内のキーに基づいて適切なバージョンにアクセスすることによって、タイムスタンプの前のデータのバージョンのためのプライマリ・キー要求を解釈することができる。タイムスタンプの後に作成又は更新されたデータにアクセスしているそれぞれのテナントのためのキーは、そのテナントによって作成された適切なデータにアクセスするために解釈されることになる。あるいは、タイムスタンプを使用する代わりに、データベース内の各トランザクションは、後続のトランザクションごとに単調増加する、それに関連付けられる一意のトランザクション番号を有してもよく、システムは、タイムスタンプの代わりに、最も最近作成されたトランザクション識別子に注目してもよい。
【００３６】
図２は、開示される主題の一実装による、データベースシステム（例えば図３に図示されるシステム３０、図４Ａ〜図４Ｊに図示されるシステム５０、図６Ａ〜図６Ｃに図示されるデータベースシステム１２００ａ〜１２００ｄ）で使用される例示のレコードを示す。レコードは、キー空間（ｋｓ）、テナント識別子、オブジェクト識別子（ｏｂｊｅｃｔＩｄ）及び／又はオブジェクトキー（ＯｂｊｅｃｔＫｅｙ）によってキー付けされ得る。図２に図示されるように、レコードは、テナント識別子、ｏｂｊｅｃｔＩｄ及びｏｂｊｅｃｔＫｅｙを含んでよい。レコードのキーが、テナント識別子、ｏｂｊｅｃｔＩｄ及びｏｂｊｅｃｔＫｅｙを含んでもよい。開示される主題の実装において、キー及び／又は値は、長さが可変であってよい。上述のように、開示される主題の実装におけるデータエクステントは、キーによってソートされ、コミット時間に従ってＬＳＭツリー内のレベルによって編成されてよい。本明細書で開示されるデータベースシステムは、レコードの永続的コンテンツを記憶するリレーショナルデータベースにおいて使用され得る不変ストレージ、テナント識別子によってルート形成される単一のキー空間、そして永続的仮想化を使用することによるものを有してもよい。永続性はエクステントで構成されてもよい。エクステントは、データを記憶するために使用され得る、典型的に隣接するストレージ領域である。上述のように、エクステントは、不変であってもよく、キーによって順序付けられてもよい。
【００３７】
開示される主題の実装において、データエクステント参照は、レベルに編成されてもよい（例えば図４Ｉを参照されたい。図４Ｉは、レベル０でエクステントＥ５、レベル１でエクステントＥ３及びＥ４を示している）。レベルは、キーによって順序付けられるデータエクステント参照にグループ化され得る、単一のキー範囲をカバーすることができる。
【００３８】
編成されたデータのレベルの数を低減及び／又は最小にすることは、新しいデータが到着するときにデータの書き換えを増加させる可能性がある。各レベルは、最大サイズ閾値を有することがあり、レベルのサイジングは指数関数的に増加し得る。サイズ閾値を超えると、マージ操作がデータベースシステム（例えば図３のシステム３０、図４Ａ〜図４Ｊのシステム５０及び／又は図６Ａ〜図６Ｃに図示されるデータベースシステム１２００ａ〜１２００ｄ）によって実行されてよく、この場合、データはレベルＮからレベルＮ＋１にマージされる。
【００３９】
データは、フラッシュ（flush）操作によりデータが永続化され、クエリが永続性の最新のビューに進むまで、データベースシステムのメモリストレージ（例えば図６Ｂ〜図６Ｃに図示されるメモリストレージ１２３０）から移動されない。例えばフラッシュ操作では、データは、メモリストレージ１２３０から図６Ｂ〜図６Ｃに図示されるストレージ１２６０にコピーされる。すなわち、フラッシュ操作では、１つ以上のエクステントが、メモリストレージ１２３０からストレージ１２６０（すなわち、永続ストレージ）に移動される。これは、特定のトランザクション範囲についてキー順で行われてよい。リカバリ情報はカタログ１２５０に書き込まれてよい。この情報は、リカバリ開始点を含んでよい。リカバリ開始点は、エクステントとフラグメントオフセットを含んでよい。リカバリトランザクション閾値は、最後のフラッシュ操作からの最も高いトランザクション値とすることができる。データがメモリストレージ１２３０からストレージ１２６０にコピーされると、コピーされたデータは、メモリストレージ１２３０から除去されてよい。
【００４０】
エクステント参照は、エクステント識別子、最小キー、最大キー、元のテナント識別子、新規テナント識別子及びフィルタ（例えばトランザクションフィルタ）を含んでよい。エクステント参照は、エクステント識別子（ＥｘｔｅｎｔＩｄ）を含んでよい。エクステント識別子は、これが指し示す物理的エクステントを識別することができる。エクステント参照の最小キーは、そのエクステント参照がアクセスすることができる最小キー値とすることができる。最小キーは、エクステント内の最小キーであってもよい。エクステント参照の最大キーは、そのエクステント参照がアクセスすることができる最大キー値とすることができる。元のテナント識別子は、テナントデータをサンドボックス化する場合に生産テナント（production  tenant）を示すように設定されてよい。新規テナント識別子は新規テナントであってよく、したがって、テナントデータがサンドボックス化されているとき、新規テナント識別子はサンドボックスに設定される。エクステント参照はトランザクションフィルタを有してもよい。トランザクションフィルタは、エクステント参照がこのエクステント内を「見る」ことができるように、レコードがいつ存在するようになったかを示すコミットタイムスタンプの最大値に対応してよい。後述するように、フィルタ（例えばトランザクションフィルタ）及びトランザクション識別子は、仮想ポイント・イン・タイム・リストア時点のストレージ内の所望のデータを指し示すために使用されてもよい。
【００４１】
エクステント参照は、物理的ストレージ（例えばストレージデバイス）に記憶される物理的エクステントの論理参照として使用されてよく、エクステント参照は、不変ストレージへのアクセスを仮想化することができる。例えば図３、図６Ｂ及び図６Ｃに図示され、以下で詳細に説明されるように、エクステント参照（図３に図示されるエクステント参照３５又は図６Ｃに図示されるエクステント参照１２５２等）は、物理的ストレージ３６内のエクステント３７を指し示す仮想化層３４の一部であってもよい。同様に、図６Ｂ〜図６Ｃに図示されるように、カタログ１２５０のエクステント参照１２５２は、ストレージ１２６０のデータエクステント１２７０を指し示すことができる。エクステント参照の少なくとも一部（例えば図６Ｃに図示されるエクステント参照１２５２）は、エクステント参照セット（例えば仮想化層３４の一部である）にグループ化されてもよい。エクステント参照セットは、データベースシステムのデータベース・インスタンスに関連付けられる永続性（例えば図３に図示されるような物理的ストレージ３６内のエクステント３７又は図６Ｃに図示されるストレージ１２６０のデータエクステント１２７０内のエクステント）を指し示す。エクステント参照セットの各エクステント参照は、復元されるべきテナントデータの境界範囲を設定する最小キーと最大キーを含んでよい。例えば図６Ｃのエクステント参照１２５２の各々は、最小キーであり得る「キー開始」と、境界範囲（例えば復元されるテナントの境界範囲）の最大キーであり得る「キー終了」とを含む。図６Ｂ〜図６Ｃに図示されるエクステント・インデックス１２４０は、データベースシステム１２００ａ、１２００ｂ、１２００ｃ及び／又は１２００ｄのノード１２２０が、ストレージ１２６０から復元されるべきテナントデータの境界範囲に対する（例えばデータエクステント１２７０内の）テナントデータにアクセスすることを可能にする。
【００４２】
第１データのアーカイブ情報（例えば初期アーカイブセット及び／又は１つ以上の増分アーカイブセット）の後のエクステント参照を見つけてもよい。ここで、アーカイブ情報は、第１時点より前のテナントデータを含む。見つかったエクステント参照の各々は、同じ最小キーと同じ最大キーマッピングを有する復元参照セットに追加されてよい。データベースシステムは、復元されたテナントデータにアクセスすることができる。エクステント参照の少なくともいくつかが、不変ストレージ内の第１時点よりも新しいデータへの参照を含むとき、少なくとも図４Ｆ〜図４Ｊに関連して以下で説明されるように、提示されるべきデータをフィルタリングすることができる。
【００４３】
いくつかの実装では、図１Ａの方法１０は、第１時点の前のテナントを復元し、復元されたテナントデータを、第１時点に又はその前にコミットされたデータで更新することを含んでよい。これはまた、少なくとも図４Ｆ〜図４Ｊに関連して図示され、以下に詳細に説明される。
【００４４】
図１Ｂは、開示される主題の一実装による、マルチテナント型データベースシステムのテナントのデータのポイント・イン・タイム・リストアを実行する別の例示の方法を示す。方法２０は、全体を通して詳細に説明されるように、図３、図５及び図６Ａ〜図６Ｃに図示されるシステムに関連して用いられてよい。図１Ａに関連して上述した方法１０と同様に、方法２０は、不変ストレージ（例えば図５に図示される第２コンピュータ８００のストレージ８１０、図６Ａ〜図６Ｃのデータベースシステム１２００ａ〜ｄ等）に記憶される、テナント識別子に関連付けられるテナントデータを有してよい。
【００４５】
方法２０は、複数のテナント・インスタンスをサポートする単一のデータベースを使用して、マルチテナント型データベースシステムのテナントのデータのポイント・イン・タイム・リストアを実行するためのものであってよい。データベースシステムは、テナントデータを不変ストレージに記憶してよく、単一のデータベースからレコードのバージョンをコミット又は削除してもよい。
【００４６】
動作２１において、データベースシステムによって処理されるべきデータを示す現在のエクステント又は他のメタデータへのポインタを、不変ストレージ内のテナントのアーカイブデータに切り替えてよい。上述のプロセスと同様に、アーカイブデータは、特定の時点より前の各データの直近のコミットされたバージョン及びそれらのデータの任意の以前のバージョンを含んでもよい。ある時点に顧客を復元することは、所望の時点より前の顧客データの完全なセットを指し示すか、他の方法で該顧客データの完全なセットにシステムを向ける、データベースに関するアーカイブメタデータ情報を見つけることによって達成され得る。ポインタは、見つかったアーカイブ情報に切り替えられてよい。アーカイブデータは、テナントの現在のデータではない、以前に書き込まれたデータであってもよい。アーカイブデータを取り出すために、データベースポインタは、（ポイント・イン・タイム・リストア操作を実行する現在の時間よりも）より時間の早いトランザクションを指し示すように動かされ、その後に発生したトランザクションを破棄する。これらのポインタは、ある時点について復元されている顧客データの限度を設定する。
【００４７】
動作２２において、本方法は、ある時点より前にコミットされた第１テナントのデータへのデータベースのアクセスを制限し得るが、データベースは、他のテナントのデータは処理することが可能である。
【００４８】
図３は、開示される主題の実装による、レコードを挿入及び／又は更新するため、かつ／又は図１Ａ〜図１Ｂ及び図４Ａ〜図４Ｊに図示されて全体を通して説明されるようなポイント・イン・タイム・リストアを実行するための例示的なシステムを示す。システム３０は、単一のコンピューティングデバイスであってよく、あるいは複数の接続されたコンピューティングデバイスを含んでもよく、例えばラップトップ、デスクトップ、個々のサーバ、サーバクラスタ、サーバファーム又は分散サーバシステムであってもよく、あるいは仮想コンピューティングデバイス又はシステムであるか、物理及び仮想システムの任意の適切な組合せであってもよい。簡潔性のために、プロセッサ、短期及び長期ストレージ、オペレーティングシステム、データベース管理システムの大部分のような構成要素は図示されていない。サーバシステム３０は、コンピューティングシステム及びネットワークインフラストラクチャの一部であってもよく、あるいはそうでなければ、サーバシステム３０と同様の他のサーバシステムを含み得るより大きなサーバネットワークを含む、コンピューティングシステム及びネットワークインフラストラクチャに接続されてもよい。いくつかの実施において、システム３０は、コンピュータ６００、中央コンポーネント７００及び／又は図５に図示される第２コンピュータ８００及び／又は図６Ａ〜図６Ｃに図示されるデータベースシステム１２００ａ〜１２００ｄのうちの１つ以上であってもよい。
【００４９】
システム３０のアクセス層３２は、データベース・ストレージ・エンジン３３を有してよい。データベース・ストレージ・エンジン３３は、データベースシステム（例えば図５に図示される中央コンポーネント７００及び／又は図６Ａ〜図６Ｃに図示されるデータベースシステム１２００ａ〜１２００ｄ）についてのクエリ及び／又は命令を、データに関するコンピューティングデバイス（例えば図５に図示されるコンピュータ６００及び／又は第２コンピュータ８００）から受け取るか、完了することができる。クエリは、テナントからの特定のデータについてのものであってもよく、かつ／又はテナントのデータを挿入及び／又は更新する命令であってもよい。データベース・ストレージ・エンジン３３は、データベースシステムについてのクエリを受け取り、受け取ったクエリ及び／又は命令に関連するデータを取り出すためのサーバシステム３０上のハードウェア及びソフトウェアの任意の適切な組合せであってもよい。
【００５０】
システム３０は仮想化層３４を含んでもよく、仮想化層３４はエクステント参照３５を有してよい。いくつかの実装では、エクステント参照３５は、図５に図示される中央コンポーネント７００及び／又は図６Ａ〜図６Ｃに図示されるデータベースシステム１２００ａ〜１２００ｄの一部であってもよい。エクステント参照３５は、データベース・ストレージ・エンジン３３と物理的ストレージ３６（例えば以下で説明されるように、エクステント３７の一部としてエクステントがここに記憶され得る）との間の仮想化層３４として実行するよう、システム３０上のハードウェアとソフトウェアとの任意の適切な組合せであってよい。物理的ストレージ３６は、半導体メモリ、ソリッドステートドライブ（ＳＳＤ）、ハードディスクドライブ、光メモリ、光ストレージデバイス又は他の任意の適切な物理データ記憶媒体又はそれらの何らかの組合せであってよい。
【００５１】
図４Ａ〜図４Ｊは、開示される主題の一実装による、スナップショットを使用して、データを挿入してポイント・イン・タイム・リストアを実行する例示的なシステム５０及び方法を示している。
【００５２】
システム５０は、データベースシステム、サーバシステム、クラウドサーバシステム等であってよい。システム５０は、一時ストレージ１００、永続性２００及びログ３００を含んでよい。永続性２００は、それに関連付けられる１つ以上のサーバ及び／又はコンピュータ（例えば図５に図示されるコンピュータ６００及び／又はコンピュータ８００及び／又は図６Ａ〜図６Ｃに図示されるデータベースシステム１２００ａ〜１２００ｄ）を有してもよい。一時ストレージ１００は、情報を永続性２００に記憶するための「コミット」又は「フラッシュ」操作の前に、エクステント内にデータのキー範囲を記憶するためのシステム５０上のハードウェア及びソフトウェアの任意の適切な組合せであってよく、永続性２００は、データのエクステント及びデータのエクステント参照を記憶するためのシステム５０上のハードウェア及びソフトウェアの任意の適切な組合せであってよい。ログ３００は、システム５０によって処理されたトランザクションのレコードを保持するための、システム５０上のハードウェア及びソフトウェアの任意の組合せであってよい。
【００５３】
図４Ａに図示されるように、挿入操作１０１が、システム５０によって処理され得る。この例では、キーは、人ＩＤ（例えばＰｅｒｓｏｎ１、Ｐｅｒｓｏｎ２等）及びトランザクション識別子（ｘ１、ｘ２等）を備えるので、ｏｒｇ  ｉｄ（例えばテナント）、テーブル、行及び他の共通のキー情報は明確性のために省略される。この例では、データ「Ｐｅｒｓｏｎ１，１００，ｘ１」が一時ストレージ１００に追加され得る。第２挿入操作１０２は、データ「Ｐｅｒｓｏｎ２，１００，ｘ２」を追加してよく、これは、一時ストレージ１００に記憶され得る。ログ３００は、挿入操作１０１及び１０２の別個のレコードを、図４Ａに図示されるようにトランザクションｘ１及びｘ２（ｘ１及びｘ２はトランザクションのシーケンスを示す）として保持することができる。ログ３００のリカバリポイントは、挿入操作１０１、１０２の登録の前（すなわち、図４Ａに示されるように、トランザクション識別子ｘ１を有するログレコードの前）に配置され得る。
【００５４】
図４Ｂに図示されるように、「フラッシュ」操作は、システム５０によって、トランザクションｘ１及びｘ２を含むＥ１（エクステント１）として、挿入操作１０１及び１０２を永続性２００（例えばログ構造化マージツリーのレベル０）に記録するために実行されてよい。すなわち、フラッシュ操作は、挿入操作１０１及び１０２からのトランザクションを一時ストレージ１００から除去し、それらを永続性２００内のレベル０でＥ１の一部として記憶することができる。システム５０は、ログ３００内のリカバリポイントを、操作１０１、１０２に続く位置（すなわち、図４Ｂに示されるように、トランザクション識別子ｘ２を有するログレコードの後）に調整することができる。
【００５５】
図４Ｃは、システム５０によって処理される追加の後続の挿入操作を示す。挿入操作１０３は、データ「Ｐｅｒｓｏｎ３，１００，ｘ３」を一時ストレージ１００に追加してよく、挿入操作１０４は、データ「Ｐｅｒｓｏｎ４，１００，ｘ４」を一時ストレージ１００に追加してよい。図４Ｃに図示されるように、リカバリポイントは、操作１０１、１０２に続く位置（すなわち、トランザクション識別子ｘ２を有するログレコードの後）にあってよい。挿入操作１０３及び１０４は、第１後続トランザクションｘ３及び第２後続トランザクションｘ４としてログ３００によって記録されてよい。
【００５６】
図４Ｄに図示されるように、フラッシュ操作は、システム５０によって、挿入操作１０３及び１０４（すなわち、トランザクションｘ３及びｘ４）を永続性２００内（例えばレベル０において）にＥ２（エクステント２）として記録するために実行され得る。永続性２００はまた、エクステントＥ１（すなわち、トランザクションｘ１及びｘ２）の一部として、挿入操作１０１及び１０２からのデータも含む。ログ３００内のリカバリポイントは、システム５０によって、操作１０３、１０４に続く位置（すなわち、図４Ｄに示されるように、トランザクション識別子ｘ４を有するログレコードの後）に調整されてよい。
【００５７】
上述したように、マージ操作は、図４Ｅに示すように、永続性２００のレベル０のエクステントＥ１及びＥ２に対して実行され、永続性２００のレベル１内にエクステントＥ３及びＥ４を形成することができる。ログ３００内のリカバリポイントは、操作１０３、１０４に続く位置（すなわち、図４Ｅに示されるように、トランザクション識別子ｘ４を有するログレコードの後）であってよい。ポイント・イン・タイム・リストアは、いくつかの実装では、システム５０によってレベル０のエクステントを使用して実行され得るが、レベル０のエクステントがマージされてレベル１のエクステントを形成し、テナントデータのスナップショットが取得される場合、システム５０は、特定の時点へのより効率的なアクセスを有することができる。すなわち、レベル１では、レベル０よりもデータを読み出し及び／又は検索するための情報が少ない可能性があるので、リストア操作のために、ポイント・イン・タイム・リストアのためのデータをより迅速に見つけることができる。
【００５８】
図４Ｅは、永続性２００のレベル１におけるエクステントＥ３及びＥ４として、マージされたエクステントＥ１及びＥ２を示す。ログ３００は、システム５０によって実行される挿入操作の４つのトランザクション（すなわち、ｘ１、ｘ２、ｘ３及びｘ４）を示す。図４Ｅ及び図４Ｆに図示される例では、テナントデータのスナップショットは、ログ３００においてトランザクションｘ４が完了したこの時点（ログ３００のリカバリポイントと一致する）で取得されてよい。テナントデータのスナップショットは、基礎とするデータをコピーすることなく、元のテナントデータのコピーが作成された場合と同様に元のテナントデータをアクセス可能にすることができるものであり得る。
【００５９】
図４Ｆにおいて、トランザクションｘ４の時点でのテナントデータのスナップショットに示されるように、エクステントＥ３は、Ｐｅｒｓｏｎ１を含むデータに関連付けられる開始キーと、Ｐｅｒｓｏｎ２を含むデータに関連付けられる終了キーとを有してよい。エクステントＥ３の最初のトランザクションはトランザクションｘ１であり、エクステントＥ３の終了トランザクションはトランザクションｘ２であり得る。エクステントＥ４は、Ｐｅｒｓｏｎ３を含むデータの開始キーと、Ｐｅｒｓｏｎ４を含むデータの終了キーを有してよい。エクステントＥ４の最初のトランザクションはトランザクションｘ３であり、エクステントＥ４の終了トランザクションはトランザクションｘ４であり得る。
【００６０】
図４Ｇは、トランザクションｘ４における時点でスナップショットが取得された後の挿入操作を示す。更新操作１０５は、「Ｐｅｒｓｏｎ３，２００，ｘ５」を一時ストレージ１００に追加して、Ｐｅｒｓｏｎ３に関連付けられる値（すなわち、２００）を更新することができる。挿入操作１０６は、「Ｐｅｒｓｏｎ５，１００，ｘ６」を一時ストレージ１００に追加してよい。ログ３００内のリカバリポイントは、操作１０３、１０４に続く位置（すなわち、図４Ｇに示されるように、トランザクション識別子ｘ４を有するログレコードの後）にあってもよい。ログ３００は、図４Ｈに示すように、更新及び挿入操作１０５及び１０６のための新しいｘ５及びｘ６トランザクションを反映してもよい。図４Ｉに図示されるように、フラッシュ操作がシステム５０によって実行されて、永続性２００のレベル０にエクステントＥ５を形成してもよい。Ｅ５は、「Ｐｅｒｓｏｎ３，２００，ｘ５」及び「Ｐｅｒｓｏｎ５，１００，ｘ６」のトランザクションを含んでよい。ログ３００のリカバリポイントは、操作１０５、１０６に続く位置になるように（すなわち、図４Ｉに示されるように、トランザクション識別子ｘ６を有するログレコードの後）調整されてよい。
【００６１】
図４Ｊは、ｘ５時点のポイント・イン・タイム・データ（point-in  time  data）を示す。エクステントＥ３は、Ｐｅｒｓｏｎ１を含むデータに関連付けられる開始キーと、Ｐｅｒｓｏｎ２を含むデータに関連付けられる終了キーを有してよい。エクステントＥ３の最初のトランザクションはトランザクションｘ１であってよく、エクステントＥ３の終了トランザクションはトランザクションｘ２であってよい。エクステントＥ４は、Ｐｅｒｓｏｎ３を含むデータの開始キーと、Ｐｅｒｓｏｎ４を含むデータの終了キーを有してよい。エクステントＥ４の最初のトランザクションはトランザクションｘ３であってよく、エクステントＥ４の終了トランザクションはトランザクションｘ４であってよい。エクステントＥ５は、Ｐｅｒｓｏｎ３を含むデータの開始キーと、Ｐｅｒｓｏｎ５を含むデータの終了キーを有してよい。エクステントＥ５の最初のトランザクションはｘ５であってよく、最後のトランザクションはｘ５であってよい。
【００６２】
一実施形態では、ｘ５の時点でポイント・イン・タイム・リストアを実行するために、ｘ４で取得されたスナップショット（例えば図４Ｄを参照されたい）を使用してもよく、データベースシステムによってログ３００から変更が再生されて、ｘ５の時点でのデータを復元することができる。ログ３００を使用して、システム５０は、「Ｐｅｒｓｏｎ３，２００，ｘ５」のデータを一時ストレージ１００に追加して、ｘ５に関連付けられたトランザクションである、Ｐｅｒｓｏｎ３に関連付けられる値（すなわち、２００）を更新することができる。システム５０（又は図６Ａ〜図６Ｃに図示されるデータベースシステム１２００ａ〜１２００ｄのノード１２２０）は、所望の時点ｘ５の前のテナントデータの完全なセットを含むデータベースに関するアーカイブ情報を見つけることができる。この情報は、復元エクステント参照セット（例えば図６Ｃに図示されるエクステント参照１２５２の一部であってよい）に収集され、ここで、各エクステント参照は、所望の時点ｘ５まで復元されるべきテナントデータについて、最小キー及び最大キーを設定する。データがｘ５の時点まで復元された後、ｘ６トランザクション（図４Ｈ及び図４Ｉに図示される）は、もはや利用可能ではない。
【００６３】
別の実装では、ｘ４のスナップショットを使用して、ｘ５の時点での仮想ポイント・イン・タイム・リストアを実行してもよい。エクステントＥ５の情報は、ｘ４のスナップショットによって提供される情報に追加され得るが、復元がトランザクションｘ５までであり、したがって、トランザクションｘ６（すなわち、図４Ｉのログ３００に示される）を含まないように、トランザクションフィルタを使用してもよい。システム５０（又は図６Ａ〜図６Ｃに図示されるデータベースシステム１２００ａ〜１２００ｄのノード１２２０）は、任意のエクステント参照（例えば図４Ｉの永続性２００からのエクステント参照Ｅ５、あるいは図６Ｃに図示されるエクステント参照１２５２の一部であり得るエクステント）を見つけることができ、そのようなエクステント参照は、アーカイブセットの後に生成されたものであるが、ｘ５の目標時点の前のテナントデータを含んでもよい。これらのエクステント参照の各々は、同じ最小キー及び最大キーのマッピングを有する復元エクステント参照セットに追加されてもよい（例えば図６Ｃのエクステント参照１２５２は、キー開始及びキー終了のための最小及び最大キーを有してもよい）。これらのエクステント参照の各々は、そのエクステント参照のトランザクションフィルタを、トランザクションｘ５の所望の復元時点に設定してもよい。データがｘ５の時点まで復元されると、ｘ６トランザクション（図４Ｈ及び図４Ｉに図示される）はもはや利用可能ではない。
【００６４】
この実装では、トランザクションｘ５の時点までテナントのデータを復元する要求を受け取ることがある。システム（例えばシステム３０、システム５０、データベースシステム１２００ａ〜１２００ｄ）は、ｘ５トランザクションの時間の前のデータベースの直近のスナップショット（すなわち、ｘ４のスナップショット）を見つけることができる。データベースシステムは、テナントのデータを含む可能性がある、見つかったスナップショット内のすべてのエクステントを識別することができる。これらのエクステントは、データベースシステムによって復元エクステント参照セットに追加され得る。
【００６５】
データベースシステムは、ｘ５トランザクションを含むスナップショットの後であるが、ｘ６トランザクションを含むスナップショットの前に作成された、すべてのエクステントを見つけることができる。データベースシステムは、見つかったエクステントのセットから、テナントのｘ５トランザクションまでのデータを有することができ、そのｘ５トランザクションを含むエクステントを見つけることができる。これらのエクステントから、データベースシステムは最小キー及び最大キーを設定し、エクステントが、所望の復元時点の後にコミットされたテナントのデータを含む（例えばエクステントが、ｘ５トランザクションの後のトランザクションを含む）場合、時間Ｔに基づいてトランザクションフィルタを設定することができる。
【００６６】
すなわち、図４Ａ〜図４Ｊ及び図６Ａ〜図６Ｃに図示されるような開示される主題の実装において、仮想ポイント・イン・タイム・リストアは、データベースシステムのストレージデバイス内で、所望の時点の前のテナントデータの完全なセットを含むアーカイブ情報を探すことによって達成され得る。これは、オフラインデータソースから検索されるデータではなく、むしろ、データベースに関連付けられるＬＳＭストレージ内に記憶されたデータのより早いバージョンであることに留意されたい。この情報は、復元エクステント参照セットに収集されてよく、ここでは、各エクステント参照が、復元されるべきテナントデータについての最小キーと最大キーの境界を設定する。あるいは、データベースシステムは、アーカイブセットの後に生成されたが（例えば少なくとも初期アーカイブセットを含み、データを所望の時点まで復元するのに使用され得る１つ以上の増分アーカイブセットを含んでもよい）、目標時点の前の顧客データを含み得る、任意のエクステント参照を探してもよい。アーカイブセットの場合、ＬＳＭツリー内のデータの完全なコピーが、特定の時点（例えば同時刻に毎日、１日に２回、毎時等）に作成されることがある。リストア操作では、目標時点の前の完全なコピーを探してもよく、完全なコピーからの特定のテナントのデータを探してもよい（例えば最初のアーカイブセット）。１つ以上の増分アーカイブセットを初期アーカイブセットに追加して、所望の時点のデータの状態に到達させることができる。
【００６７】
これらのエクステント参照の各々は、同じ最小キーと最大キーのマッピング範囲を有する復元エクステント参照セットに追加されてよい。これらのエクステント参照の各々は、該エクステント参照のトランザクションフィルタを、所望の復元時点に設定してもよい。データベースシステムはエクステント参照を収集しているので、データのコピーを作成する必要はない。
【００６８】
復元エクステント参照セットは、目標データベースにマッピングされてもよい。すべての既存データをポイント・イン・タイム・データに置き換えることが望ましい場合、エクステント参照セットは、目標データベースにマッピングされてよく、その時点を超えるデータについての既存の顧客キー範囲は除去され得る。既存のテナントデータに代替することなく、仮想ポイント・イン・タイム・リストアを異なるデータセットとして見せることが望ましい場合、エクステント参照セットは、「Formation  and  Manipulation  of  Test  Data  in  a  Database  System」という名称の２０１６年１１月８日に出願された米国特許出願第１５／３４５，９１４号の例えば段落３３〜３７に開示されるように、新しいサンドボックス・テナントにマッピングされ得る。
【００６９】
復元されたデータにアクセスすると、エクステント参照は、記憶されているデータをどのように解釈するかを決定することができる。復元されたデータについて、いくつかのエクステント参照は、指定された復元時点よりも新しいデータへの参照を含んでもよい。エクステント参照のトランザクションフィルタは、データベースの残りの部分に提示することができるデータを制限してもよい。永続データの各スキャンは、どのデータがそのスキャンに対して可視であるかを解釈することができる、スナップショットトランザクションコミット番号を有する。トランザクションフィルタを有するエクステント参照を通過するスキャンは、スキャンのスナップショットトランザクションコミット番号又はエクステント参照のトランザクションフィルタのうちいずれか小さい方を、行を制限するときのトランザクションの可視性基準として使用することができる。これにより、データベース・トランザクション・ログ（例えば図４Ｉに図示されるログ３００）を再生することによって、ある時点にあるかのようにデータアーチファクトを再構成することなく、データのある時点のビューを可能にすることができる。トランザクションコミット番号を有するエクステント参照を使用する仮想ポイント・イン・タイム・リストアは、時間順序ログをスキャンし、所望の時点までレコードを適用することに比べて、すばやく構築されることができる。
【００７０】
開示される主題の実装において、データベースシステム（例えばシステム３０、データベースシステム１２００ａ〜１２００ｄ等）は、所定の保持ウィンドウ（retention  window）に基づいて、エクステント（例えば図６Ｃに図示されるエクステント１２５１及び／又はデータエクステント１２７０）及びエクステント（例えば図６Ｃに図示されるメタデータ及び／又はエクステント参照１２５２）に関する情報を保存してもよい。例えば所定の保持ウィンドウは、３０日、６０日、９０日、１２０日等であってもよい。上述したように、ＬＳＭツリー内のデータの完全なコピーは、特定の時点（例えば同時刻に毎日、１日に２回、毎時等）で作成されてよい。リストア操作では、完全なコピーを目標時点の前に探し、完全なコピーからの特定のテナントのデータを探してもよい（例えば最初のアーカイブセット）。
【００７１】
データをアーカイブすることは、メタデータ（例えばエクステント１２５１、エクステント参照１２５２等）並びに基礎となる参照されたエクステント（例えばデータエクステント１２７０）を別個の記憶場所に保存することを含んでもよい。別の記憶場所は、エクステントのためのアーカイブ記憶システムと、アーカイブメタデータ記憶データベースを含んでよい。
【００７２】
アーカイブ・システムは、データエクステントの形式で、目標データベース（例えばデータベースシステム１２００ａ〜１２００ｄ）に入ってくる変更を捕捉することができる。開示される主題の実装において、変更は、永続性に流されたエクステント（すなわち、例えばストレージ１２６０に記憶される、フラッシュ操作の一部であるレベル０のエクステント）によって捕捉されてもよい。開示される主題の別の実装において、エクステントは、それらがＬＳＭの最低レベルに流れるときに捕捉され得る。これは、ＬＳＭが、メモリからレベル０へのフラッシュの一部として又はマージの一部として、新しいエクステントを生成しているので、代替されたレコードが該ＬＳＭから削除されていないときに起こる可能性がある。
【００７３】
開示される主題の実装において、テナントのデータを時点Ｔまで復元する要求が、データベースシステムによって受け取られることがある。システム（例えばシステム３０、システム５０、データベースシステム１２００ａ〜１２００ｄ）は、時間Ｔの前のデータベースの直近のスナップショットＳを見つけることができる。データベースシステムは、テナントのためのデータを含み得る、見つかったスナップショット内のすべてのエクステントを識別することができる。これらのエクステントは、データベースシステムによって復元エクステント参照セットに追加されてよい。
【００７４】
データベースシステムは、スナップショットＳの後であるがスナップショットＳ＋１の前に作成された、すべてのエクステントを見つけることができる。見つかったエクステントのセットから、データベースシステムは、テナントについて、時間Ｔまでのデータを有し、時間Ｔを含み得るエクステントを見つけることができる。これらのエクステントから、データベースシステムは最小キーと最大キーを設定し、エクステントが時間にわたる場合、時間Ｔに基づいてトランザクションフィルタを設定してよい。
【００７５】
これらの実装のポイント・イン・タイム・リストア操作を実行することによって、本明細書で開示される実施形態は、従来のデータベースのリストア操作と比較して、ログファイル（例えばログ３００）からの再生を最小限にすることができ、あるいは同様のリソース集約的な操作を実行することを最小限にすることができる。すなわち、全体を通して開示されるシステム及び方法は、テナントデータが記憶されるコンピュータシステム（例えば図４Ａ〜図４Ｅ及び図４Ｇ〜図４Ｉに図示されるシステム５０）のより効率的なオペレーションを提供することができる。これらの開示された実装は、ポイント・イン・タイム・リストアを実行するために必要なコンピューティング・リソースを低減することができる。
【００７６】
現在開示されている主題の実装は、様々な構成要素及びネットワークアーキテクチャにおいて実装され、それらとともに使用されてよい。図５は、現在開示されている主題の実装を実装するのに適した例示的なコンピュータ６００である。本明細書で更に詳細に説明されるように、コンピュータ６００は、複数のコンピュータのネットワーク内の単一のコンピュータであってよい。図５に図示されるように、コンピュータ６００は、中央又は分散型コンポーネント７００（例えばサーバ、クラウドサーバ、データベース、クラスタ、アプリケーションサーバ等）と通信してよい。中央コンポーネント７００は、第２コンピュータ８００のような１つ以上の他のコンピュータと通信してよく、第２コンピュータ８００はストレージデバイス８１０を含んでよい。第２コンピュータ８００は、サーバ、クラウドサーバ等であってよい。ストレージ８１０は、例えばハードディスクドライブ、ソリッドステートドライブ、光媒体、フラッシュメモリ、テープドライブ、レジスタ及びランダムアクセスメモリ等又はその任意の組合せを含む、任意の適切な揮発性及び不揮発性物理記憶媒体の任意の適切な組合せを使用してよい。
【００７７】
データは、任意の適切なフォーマットで、例えばストレージ８１０に、任意の適切なファイルシステム又はストレージスキーム又は階層を使用して記憶されてよい。例えばストレージ８１０は、複数のレベルを有するログ構造化マージ（ＬＳＭ）ツリーを使用してデータを記憶してよい。さらに、図４〜図５に図示されるシステムがマルチテナントシステムである場合、ストレージは、テナントのデータベースのインスタンスごとに、別個のログ構造化マージツリーに編成されてよい。すなわち、テナントごとに別個のデータベース（例えばＬＳＭツリー）が存在してもよい。あるいは、特定のサーバ又はシステム上のすべてのレコードのコンテンツが単一のログ構造化マージツリー内に記憶されてもよく、その場合、本明細書で開示されるように、レコードのバージョンに関連付けられる一意のテナント識別子を使用して、各テナントのデータを区別することができる。より最近のトランザクションはツリーの最も高いレベル又はトップレベルに記憶されてよく、より古いトランザクションはツリーのより低いレベルに記憶される。
【００７８】
中央コンポーネント７００に対してかつ／又は中央コンポーネント７００から得られる情報は、コンピュータ６００がコンピュータ８００と情報を共有し得ないように、コンピュータごとに分離されてよい。代替又は追加として、コンピュータ６００は、第２コンピュータ８００と直接通信してもよい。
【００７９】
コンピュータ（例えばユーザコンピュータ、企業コンピュータ等）６００は、コンピュータ６００の主要なコンポーネントを相互接続するバス６１０を含む。そのような主要なコンポーネントは、例えば中央プロセッサ６４０、メモリ６７０（典型的にはＲＡＭであるが、ＲＯＭやフラッシュＲＡＭ等も含んでよい）、入力／出力コントローラ６８０、ディスプレイアダプタを介するタッチスクリーン又はディスプレイ等のユーザディスプレイ６２０、キーボード、マウス、Ｗｉ−Ｆｉ／セルラ無線、タッチスクリーン、マイクロフォン／スピーカ等といった関連するユーザ入力又はデバイス及び１つ以上のコントローラを含むことがあり、かつＩ／Ｏコントローラ６８０に密接して結合され得る、ユーザ入力インタフェース６６０、ハードドライブ、フラッシュストレージ、ファイバチャネルネットワーク、ＳＡＮデバイス、ＳＣＳＩデバイス等といった固定のストレージ６３０、そして光ディスク、フラッシュドライブ等を制御及び受信するように動作する取外し可能媒体コンポーネント６５０である。
【００８０】
バス６１０は、中央プロセッサ６４０とメモリ６７０との間のデータ通信を可能にし、メモリ６７０は、前述したように、読出専用メモリ（ＲＯＭ）又はフラッシュメモリ（いずれも図示せず）及びランダムアクセスメモリ（ＲＡＭ）（図示せず）を含んでもよい。ＲＡＭは、オペレーティングシステム及びアプリケーションプログラムがロードされるメインメモリを含むことができる。ＲＯＭ又はフラッシュメモリは、他のコードの中でも、周辺コンポーネントとの対話のような基本的なハードウェア動作を制御する基本入出力システム（ＢＩＯＳ）を含むことができる。コンピュータ６００に常駐するアプリケーションを、ハードディスクドライブ（例えば固定ストレージ６３０）、光ドライブ、フロッピーディスク又は他の記憶媒体６５０のようなコンピュータ読取可能媒体上に記憶して、そのようなコンピュータ読取可能媒体を介してアクセスすることができる。
【００８１】
固定ストレージ６３０は、コンピュータ６００と一体化されてもよく、分離されて他のインタフェースを介してアクセスされてもよい。固定ストレージ６３０は、ストレージエリアネットワーク（ＳＡＮ）の一部であってよい。ネットワークインタフェース６９０は、電話リンクを介してリモートサーバへ、インターネットサーバプロバイダ（ＩＳＰ）を介してインターネットへの直接接続を提供してもよく、あるいは直接ネットワークリンクを介してリモートサーバへ、ＰＯＰ（ポイント・オブ・プレゼンス）又は他の技術を介してインターネットへの直接接続を提供してよい。ネットワークインタフェース６９０は、デジタルセルラ電話接続、セルラ・デジタル・パケット・データ（ＣＤＰＤ）接続、デジタル衛星データ接続等を含む無線技術を使用して、そのような接続を提供することができる。例えばネットワークインタフェース６９０は、図５に図示されるように、コンピュータが、１つ以上のローカルネットワーク、広域ネットワーク又は他のネットワークを介して他のコンピュータ及び／又はストレージデバイスと通信することを可能にする。
【００８２】
多くの他のデバイス又はコンポーネント（図示せず）が、同様の方法で接続されてよい（例えばデータキャッシュシステム、アプリケーションサーバ、通信ネットワークスイッチ、ファイアウォールデバイス、認証及び／又は許可サーバ、コンピュータ及び／又はネットワークセキュリティシステム等）。反対に、図５に図示される必ずしもすべてのコンポーネントが、本開示を実施するために存在する必要はない。図示された方法とは異なる方法でコンポーネントを相互接続することができる。本開示を実施するためのコードを、メモリ６７０、固定ストレージ６３０、取外し可能媒体６５０の又はリモートのストレージ位置のうちの１つ以上のようなコンピュータ読取可能記憶媒体に記憶することができる。
【００８３】
図６Ａ〜図６Ｃは、開示される主題の一実装による、例示のネットワーク構成を示す。クラウド１２０２によって表されるネットワーク内の異なるノードにおける４つの別個のデータベースシステム１２００ａ〜１２００ｄは、ネットワークリンク１２０４を介して互いに、そしてユーザ（図示せず）と通信する。データベースシステム１２００の各々は、データベースの複数のインスタンスをホストするように動作可能であってよく、各インスタンスは、特定のテナント（例えば特定のテナントのデータにアクセスする権限を与えられている、特定のテナントに関連付けられるユーザ）に対してのみアクセス可能である。データベースシステムの各々は、ストレージエリアネットワーク（図示せず）とともにコンピュータ、ファイヤウォールとともにロード・バランサー及びバックアップサーバ、他のセキュリティシステム及び認証システムのクラスタを構成してもよい。システム１２００のいずれかにおけるインスタンスの一部は、データを取り込んで、そのインスタンス内のストレージに提供するために、ユーザから又はコンピューティング要素（図示せず）から受け取ったトランザクションを処理してコミットするライブ又は生産インスタンス（live  or  production  instances）であってもよい。
【００８４】
データベースシステム１２００ａ〜１２００ｄのうちの１つ以上は、いつでも元のテナントのためのサンドボックスを作成することができる。例えばデータベースシステムは、既存のテナントデータに代替することなく、ポイント・イン・タイム・リストアを異なるデータセットとして見せるよう要求を受け取ることがあり、次いで、エクステント参照セットを、新しいサンドボックス・テナント識別にマッピングすることができる。システム、例えば１２００ｃは、図５のように少なくとも１つのストレージデバイスを含んでもよい。例えばストレージは、メモリ６７０、固定ストレージ６３０、取外し可能媒体６５０、中央コンポーネント７００及び／又は第２コンピュータ８００に含まれるストレージデバイス、並びに／あるいはデータベースシステム１２００ａ〜１２００ｄのうちの１つ以上に関連付けられる１つ以上のストレージデバイスを含んでもよい。別の例では、データベースシステム１２００ａ〜１２００ｃは、図６Ｂ〜図６Ｃに図示されるように、ストレージ１２６０を有してもよい。ストレージ１２６０は、データ（例えばテナントデータ）の永続的ストレージを提供する１つ以上のストレージデバイスを含んでもよい。
【００８５】
図６Ｂ〜図６Ｃは、開示される主題の一実装による、個々のデータベースシステム１２００ａ、１２００ｂ、１２００ｃ又は１２００ｄを示す。データベースシステム１２００ａ、１２００ｂ、１２００ｃ又は１２００ｄは、ノード１２２０及び／又はストレージ１２６０からのデータ及び／又は情報を使用することができる１つ以上のアプリケーション１２１０（図６Ｂに示される）を含んでもよい。ストレージ１２６０は、１つ以上のストレージデバイスであってもよい。アプリケーション１２１０は、顧客関係管理（ＣＲＭ：customer  relationship  management）アプリケーション等を含んでもよい。１つ以上のサーバ及び／又は仮想サーバを含み得るノード１２２０は、メモリストレージ１２３０と、エクステント・インデックス１２４０と、エクステント及びエクステント参照のカタログ１２５０を含んでもよい。メモリストレージ１２３０は、データベースシステム１２００ａ、１２００ｂ、１２００ｃ又は１２００ｄによって処理される直近のトランザクションを記憶することができる。これらの直近のトランザクションは、例えば所定の期間に、ストレージ１２６０にコミットされてよい。エクステント・インデックス１２４０、エクステント及びエクステント参照のカタログ１２５０は、以下で図６Ｃに関連して説明される。ストレージ１２６０は、１つ以上のストレージデバイスであってもよく、テナントデータを含み得るデータエクステント１２７０を記憶してもよい。
【００８６】
図６Ｃは、開示される主題の一実装による、個々のデータベースシステム１２００ａ、１２００ｂ、１２００ｃ又は１２００ｄのためのノード及びストレージを示す。ノード１２２０は、図６Ｂに関連して上述したように、メモリストレージ１２３０及びエクステント・インデックス１２４０を含んでもよい。ノード１１２０はカタログ１２５０を含んでもよく、カタログ１２５０は、エクステント１２５１及びエクステント参照１２５２を含んでよい。エクステント１２５１は、ストレージの領域を参照してもよく、エクステント識別子（Ｅｉｄ）を含んでもよい。エクステント参照１２５２は、エクステント識別子（Ｅｉｄ）と、キー開始値及びキー終了値と、エクステント参照のためのＬＳＭ構造内のレベルを含んでもよい。
【００８７】
テナントデータは、元のテナント識別子に関連付けられる少なくとも１つのストレージデバイスの不変ストレージ（例えば図６Ｂ〜図６Ｃのストレージ１２６０）に記憶されてもよい。元のテナントデータは、ポイント・イン・タイム・リストア操作のスナップショットを作成するために使用されてよい。図５〜図６Ｃに図示されるシステムの１つ以上のサーバは、テナントデータを特定の時点に復元する要求を受け取ることができる。リストア要求に含まれるキー範囲は、ある時点（例えばキー範囲に基づいて）のデータを復元するトランザクションポイントを含んでもよく、タイムスタンプ又はシーケンス・インジケータを参照してもよい。図５〜図６Ｃに図示されるシステムの１つ以上のサーバは、テナントのポイント・イン・タイム・リストアのデータを示すキーの動的マッピングに基づいて、少なくとも１つのストレージデバイス（例えば中央コンポーネント７００に関連付けられるストレージデバイス、第２コンピュータ８００及び／又はデータベースシステム１２００ａ〜１２００ｄのストレージ１２６０）からのサンドボックス・テナントのための不変ストレージからデータを受け取ることができる。スナップショット・イン・タイムから所望のポイント・イン・タイム・リストアへのデータへの変更は、例えばトランザクション・ログ（例えば図４Ｆに図示されるログ３００）からの変更を再生することによって達成され得る。あるいは、トランザクションフィルタを適用して、テナントデータのリストアのための所望の時点のトランザクションデータをフィルタリングしてもよい。実施されたリストア操作の結果得られるデータは、中央コンポーネント７００に関連付けられるストレージデバイス、第２コンピュータ８００及び／又はデータベースシステム１２００ａ〜１２００ｄのストレージ１２６０のような不変ストレージ内にあってもよい。
【００８８】
図５〜図６Ｃに図示されるシステムの１つ以上のサーバは、テナントデータの少なくとも一部についてリストア操作の要求（例えば図５に図示されるコンピュータ６００等から）を受け取ることができ、少なくとも１つのストレージデバイスの不変ストレージからのデータに対して作用してテナントデータのためにポイント・イン・タイム・リストア操作を実行することができる。１つ以上のサーバは、テナントのための少なくとも１つのストレージデバイスから不変ストレージ（例えば図６Ｂ〜図６Ｃに図示されるストレージ１２６０）からのデータを受け取り、所望の時点に最も近いテナントデータのスナップショットを使用してポイント・イン・タイム・リストアを実行し、ログから又はフィルタ（例えばトランザクションフィルタ）を使用することにより、データに対する変更を再生して所望の時点におけるデータに到達することができる。
【００８９】
いくつかの実装形態では、図５〜図６Ｃに図示する１つ以上のサーバは、マルチテナント型データベースシステムのテナントのデータのポイント・イン・タイム・リストアを実行することができる。少なくとも１つのストレージデバイス（例えば中央コンポーネント７００に関連付けられるストレージデバイス、第２コンピュータ８００及び／又はデータベースシステム１２００ａ〜１２００ｄのストレージ１２６０）は、テナントデータを記憶することができる。テナントデータは、メタデータ・テナント識別子及びメタデータに関連付けられてよい。メタデータ・テナント識別子及びメタデータは、いつレコードが作成されてデータベースシステムから削除されたかを示し、また、データベースシステムに随時コミットされるテナントデータの異なるバージョンを示す。少なくとも１つのサーバ（例えばコンピュータ６００、中央コンポーネント７００、第２コンピュータ８００及び／又はデータベースシステム１２００ａ〜１２００ｄのストレージ１２６０）は、メタデータを探して、ストレージデバイス内に記憶されたテナントのデータのアーカイブ情報（例えば初期アーカイブセットであり、データを所望の時点に復元するために使用され得る１つ以上の増分アーカイブセットを含んでもよい）を識別することができる。アーカイブデータは、リストア操作のために、所望の時点より前の各データの直近のコミットされたバージョンを含むことができる。少なくとも１つのサーバは、メタデータを使用することによって、テナントについてのすべての既存のデータがアーカイブバージョンに置き換えられるとき、復元参照セットをデータベースシステムの目標データベース・インスタンスにマッピングしてよく、この場合、その時点の後にコミットされたデータ及びレコードのバージョンはデータベース・インスタンスに利用可能でない。
【００９０】
図５〜図６Ｃに図示されるような少なくとも１つのサーバは、復元参照セットを目標データベース・インスタンスにマッピングして、第１時点とトランザクション的に一貫性があるようにテナントデータを復元することができる。テナントデータを特定の時点に復元することは、データベースシステムの目標データベース・インスタンスにホストされている他のテナントに影響を与えない。
【００９１】
エクステント参照は、少なくとも１つのストレージデバイス（例えば中央コンポーネント７００に関連付けられるストレージデバイス、第２コンピュータ８００及び／又はデータベースシステム１２００ａ〜１２００ｄのストレージ１２６０）へのアクセスを仮想化することができ、エクステント参照の少なくとも一部は、データベースシステムのデータベース・インスタンスに関連する永続性を指し示すエクステント参照セットにグループ化される。この仮想化の一例は図３に図示され、上述されている。エクステント参照セットの各エクステント参照（例えばエクステント参照１２５２の一部であってよい）は、復元されるべきテナントデータの境界範囲を設定する最小キー及び最大キーを含んでもよい。図５〜図６Ｃに図示される少なくとも１つのサーバは、最初の時点の前のテナントデータを含むデータのアーカイブバージョンの後に生成されたエクステント参照を見つけてもよく、見つかったエクステント参照の各々を、同じ最小キー及び最大キーマッピングを有する復元参照セットに追加する。少なくとも１つのサーバは、復元されたデータにアクセスしてよく、エクステント参照の少なくとも一部が、第１時点より新しい、不変ストレージ内のデータへの参照を含むとき、サーバは、提示されるべきデータをフィルタリングすることができる。
【００９２】
いくつかの実装では、少なくとも１つのサーバ（例えばコンピュータ６００、中央コンポーネント７００、第２コンピュータ８００及び／又はデータベースシステム１２００ａ〜１２００ｄのノード１２２０）は、第１時点の前にテナントを復元してよく、復元されたテナントデータを、第１時点又はそれ以前にコミットされたデータで更新する。
【００９３】
いくつかの実装形態では、図５〜図６Ｃに図示される１つ以上のサーバは、複数のテナント・インスタンスをサポートする単一のデータベースを使用して、マルチテナント型データベースシステムの第１テナントのデータのポイント・イン・タイム・リストアを実行することができる。少なくとも１つのストレージデバイス（例えば中央コンポーネント７００に関連付けられるストレージデバイス、第２コンピュータ８００及び／又はデータベースシステム１２００ａ〜１２００ｄのストレージ１２６０）は、テナントデータを記憶することができる。少なくとも１つのサーバ（例えばコンピュータ６００、中央コンポーネント７００、第２コンピュータ８００及び／又はデータベースシステム１２００ａ〜１２００ｄのノード１２２０）は、単一のデータベースからレコードのバージョンをコミット又は削除してよく、レコードを随時作成してよく、データベースシステム内のポインタを、少なくとも１つのストレージデバイス内の第１テナントのデータのアーカイブバージョンに切り替えてよく、そして、ある時点より前にコミットされた第１テナントのデータに対するデータベースのアクセスを制限することができるが、この間、データベースは他のテナントのデータを処理することができる。
【００９４】
開示される主題のシステム及び方法は、シングルテナントシステム及び／又はマルチテナントシステムのためのものであってよい。マルチテナントシステムは、例えばユーザ、ユーザのグループ又は組織等であり得る様々なテナントが、これらの様々なテナント間で共有され得るサーバシステム上のソフトウェアツール又はインスタンスを介して、サーバシステム上のそれら自身のレコードにアクセスすることを可能にする。各テナントのレコードのコンテンツは、そのテナントを含むデータベースの一部であり得る。マルチテナントのレコードのコンテンツは、すべて同じデータベース内に一緒に記憶されてよいが、各テナントは、そのテナントに属する又はそのテナントによって作成されたレコードのコンテンツに対してのみアクセスすることができる。これは、データベースシステムが、例えば別個のサーバ又はサーバシステム上に、各テナントのレコードのコンテンツを別々に記憶する必要なく、マルチテナント制を可能にすることができる。テナントのためのデータベースは、例えばリレーショナルデータベース、階層データベース又は任意の他の適切なデータベースタイプであってよい。サーバシステム上に記憶されるすべてのレコードは、例えばＬＳＭツリーを含む任意の適切な構造で記憶されてよい。
【００９５】
マルチテナントシステムは、各ノードでコンピューティングシステムとのネットワーク全体に分散されるサーバシステム上に、様々なテナント・インスタンスを有することができる。各テナントのライブ又は生産データベースのインスタンスは、１つのコンピュータシステムで処理されるそのトランザクションのみを有する。そのインスタンスのトランザクションを処理するためのコンピューティングシステムは、他のテナントのための他のインスタンスのトランザクションも処理してもよい。
【００９６】
より一般的には、現在開示されている主題の様々な実装は、コンピュータ実施プロセス及びこれらのプロセスを実施するためのコンピュータの形態で含まれるか、そのような形態で実装されてよい。また、実装は、フロッピーディスケット、ＣＤ−ＲＯＭ、ハードドライブ、ＵＳＢ（ユニバーサルシリアルバス）ドライブ又は任意の他の機械読取可能記憶媒体のような非一時的及び／又は有形媒体に実装される命令を含むコンピュータプログラムコードを有するコンピュータプログラム製品の形態で実装されてもよく、そのようなコンピュータプログラムコードがコンピュータにロードされてコンピュータによって実行されると、コンピュータは、開示される主題の実装を実施するための装置となる。また、実装は、例えば記憶媒体に記憶されるか、コンピュータにロードされ、かつ／又はコンピュータによって実行されるか、あるいは電気配線又はケーブル上で、光ファイバを通して又は電磁放射線を介するように何らかの伝送媒体を介して送信されるかにかかわらず、コンピュータプログラムコードの形態で実装されてよく、コンピュータにロードされるか、コンピュータによって実行されると、コンピュータは、開示される主題の実装を実施するための装置となる。汎用マイクロプロセッサで実装されるとき、コンピュータプログラムコードセグメントは、特定の論理回路を作成するようにマイクロプロセッサを構成する。いくつかの構成では、コンピュータ読取可能記憶媒体上に記憶される一組のコンピュータ読取可能命令は、汎用プロセッサによって実装されてよく、汎用プロセッサ又は汎用プロセッサを含むデバイスを、命令を実装又は実行するように構成される専用装置に変換することができる。実装は、ハードウェアを使用して実装されてもよい。ハードウェアは、汎用マイクロプロセッサ及び／又は開示される主題の実装に従って技術のすべて又は一部をハードウェア及び／又はファームウェアで実装する特定用途向け集積回路（ＡＳＩＣ）のようなプロセッサを含んでよい。プロセッサは、ＲＡＭ、ＲＯＭ、フラッシュメモリ、ハード・ディスク又は電子情報を記憶することができる任意の他のデバイス等のようなメモリに結合されてよい。メモリは、開示される主題の実装に従って技術を実行するために、プロセッサによって実行されるように適合された命令を記憶することができる。
【００９７】
上述の記載は、説明のために、特定の実装を参照して説明されている。しかしながら、上記の例示的な議論は、網羅的であるように意図されておらず、開示される主題の実施を開示された正確な形態に限定するようにも意図されていない。上記の教示を考慮すると、多くの修正及びバリエーションが可能である。これらの実装は、開示される主題の実装の原理及びそれらの実際の用途を説明するために選択され、説明され、それにより、当業者は、これらの実装、並びに考慮される特定の使用に適切であるような様々な修正を施した様々な実装を利用することが可能になる。
【図１Ａ】
2020525925.tif 000003
【図１Ｂ】
2020525925.tif 000004
【図２】
2020525925.tif 000005
【図３】
2020525925.tif 000006
【図４Ａ】
2020525925.tif 000007
【図４Ｂ】
2020525925.tif 000008
【図４Ｃ】
2020525925.tif 000009
【図４Ｄ】
2020525925.tif 000010
【図４Ｅ】
2020525925.tif 000011
【図４Ｆ】
2020525925.tif 000012
【図４Ｇ】
2020525925.tif 000013
【図４Ｈ】
2020525925.tif 000014
【図４Ｉ】
2020525925.tif 000015
【図４Ｊ】
2020525925.tif 000016
【図５】
2020525925.tif 000017
【図６Ａ】
2020525925.tif 000018
【図６Ｂ】
2020525925.tif 000019
【図６Ｃ】
2020525925.tif 000020
【手続補正書】
【提出日】令和2年1月28日(2020.1.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
マルチテナント型データベースシステムの第１テナントのデータのポイント・イン・タイム・リストアを実行するためのコンピュータ化された方法であって、テナントデータは、前記データベースシステムの不変ストレージ内に記憶されるとともに、テナントデータは、いつレコードが作成されて前記データベースシステムから削除されたかを示し、かつ前記データベースシステムに随時コミットされるテナントデータの異なるバージョンを示す、メタデータ・テナント識別子及びメタデータに関連付けられており、当該方法は：
前記不変ストレージに記憶された第１テナントの第１データのアーカイブバージョンを識別するメタデータを見つけるステップであって、前記アーカイブバージョンは、第１時点より前の各データの直近のコミットされたバージョンを含むステップと；
前記メタデータを使用して、復元参照セットを前記データベースシステムの目標データベース・インスタンスにマッピングするステップであって、あるテナントについての既存のデータはすべて、前記アーカイブバージョンになり、前記の時点より後にコミットされたデータ及びレコードのバージョンは、前記目標データベース・インスタンスに利用可能でないステップと；
を含む、方法。
【請求項２】
前記復元参照セットを前記目標データベース・インスタンスにマッピングするステップは、前記第１時点とトランザクション的に一貫性があるようにテナントデータを復元するステップを含む、
請求項１に記載の方法。
【請求項３】
前記テナントデータを復元するステップは、前記データベースシステムの前記目標データベース・インスタンス内でホストされる他のテナントに影響を与えない、
請求項２に記載の方法。
【請求項４】
エクステント参照が、前記不変ストレージへのアクセスを仮想化し、前記エクステント参照の少なくとも一部が、前記データベースシステムのデータベース・インスタンスに関連付けられる永続性を指し示すエクステント参照セットにグループ化される、
請求項１乃至３のいずれか一項に記載の方法。
【請求項５】
前記エクステント参照セットの各エクステント参照は、復元されるべき前記テナントデータの境界範囲を設定するための最小キーと最大キーを含む、
請求項４に記載の方法。
【請求項６】
前記第１時点より前のテナントデータを含む前記第１データの前記アーカイブバージョンの後に生成された前記エクステント参照を見つけるステップと；
前記見つかったエクステント参照の各々を、同じ最小キーと同じ最大キーのマッピングを有する前記復元参照セットに追加するステップと；
を更に含む、請求項４又は５に記載の方法。
【請求項７】
復元されたテナントデータにアクセスするステップと；
エクステント参照の少なくとも一部が、前記第１時点より新しい前記不変ストレージ内のデータへの参照を含むとき、提示されるべきデータをフィルタリングするステップと；
請求項１乃至６のいずれか一項に記載の方法。
【請求項８】
第１時点より前のテナントデータを復元するステップと；
前記復元されたテナントデータを、前記第１時点又はその前にコミットされたデータで更新するステップと；
を更に含む、請求項１乃至７のいずれか一項に記載の方法。
【請求項９】
複数のテナント・インスタンスをサポートする単一のデータベースを使用して、マルチテナント型データベースシステムの第１テナントのデータのポイント・イン・タイム・リストアを実行するためのコンピュータ化された方法であって、前記データベースシステムは、テナントデータを不変ストレージに記憶し、前記データベースシステムは、レコードのバージョンをコミットするか前記単一のデータベースから削除し、前記データベースシステムは、レコードを随時作成し、当該方法は：
前記データベースシステム内のポインタを、前記不変ストレージ内の前記第１テナントの前記データのアーカイブバージョンに切り替えるステップと；
データベースが他のテナントのデータを処理することができる間に、ある時点の前にコミットされた前記第１テナントの前記データへの前記データベースのアクセスを制限するステップと；
を含む、方法。
【請求項１０】
前記データベース内の他のテナントのデータを処理しながら、前記データベース内の第１テナントのデータを一時的に静止させるステップと；
前記第１テナントの前記データが静止されている間、前記第１テナントの前記データへのアクセスを制限するステップと；
を更に含む、請求項９に記載の方法。
【請求項１１】
マルチテナント型データベースシステムの第１テナントのデータのポイント・イン・タイム・リストアを実行するシステムであって、当該システムは：
テナントデータを記憶する少なくとも１つのストレージデバイスであって、前記テナントデータは、いつレコードが作成されて前記データベースシステムから削除されたかを示し、かつ前記データベースシステムに随時コミットされるテナントデータの異なるバージョンを示す、メタデータ・テナント識別子及びメタデータに関連付けられる、前記少なくとも１つのストレージデバイスと、
前記少なくとも１つのストレージデバイスに記憶された第１テナントの第１データのアーカイブバージョンであって、第１時点より前の各データの直近のコミットされたバージョンを含むアーカイブバージョンを識別するメタデータを見つけ、前記メタデータを使用して、復元参照セットを前記データベースシステムの目標データベース・インスタンスにマッピングする少なくとも１つのサーバと、を含み、
あるテナントについての既存のデータはすべて、前記アーカイブバージョンに置き換えられることになり、前記の時点より後にコミットされたデータ及びレコードのバージョンは、前記目標データベース・インスタンスに利用可能でない、
システム。
【請求項１２】
複数のテナント・インスタンスをサポートする単一のデータベースを使用して、マルチテナント型データベースシステムの第１テナントのデータのポイント・イン・タイム・リストアを実行するシステムであって、当該システムは：
テナントデータを記憶する少なくとも１つのストレージデバイスと；
レコードのバージョンをコミットするか前記単一のデータベースから削除し、レコードを随時作成し、前記データベースシステム内のポインタを、前記少なくとも１つのストレージデバイスの前記第１テナントの前記データのアーカイブバージョンに切り替え、データベースが他のテナントのデータを処理することができる間に、ある時点の前にコミットされた前記第１テナントの前記データへの前記データベースのアクセスを制限する、少なくとも１つのサーバと；
を含む、システム。
【請求項１３】
コンピュータによって実行されると、該コンピュータに請求項１乃至１０のいずれか一項に記載の方法を実行させるコンピュータプログラム。
【国際調査報告】
2020525925.tif 000021
2020525925.tif 000022