(57)【要約】  ある時点でのオリジナル・テナントに対するサンドボックスを作成するシステム及び方法が提供され、オリジナル・テナントは、オリジナル・テナント識別子に関連付けられた不変の記憶域に記憶されたオリジナル・テナント・データを有し、オリジナル・テナント・データは、サンドボックス作成時点以降は、サンドボックス・テナントによってアクセス可能なオリジナル・テナント・データの仮想スナップショットであり、サンドボックス・テナント・データは、オリジナル・テナント・データを変更することなく変更することができ、オリジナル・テナント・データはサンドボックス・テナント・データを変更することなく変更することができる。サンドボックス・テナントは、サンドボックス・テナント識別子を、オリジナル・テナント・データの仮想スナップショットと、サンドボックス作成時点以降にサンドボックス・テナントが作成したサンドボックス・テナント・データとに関連付けることによって作成される。その後、オリジナル・テナント・データが作成され、オリジナル・テナント識別子に関連付けられ、サンドボックス・テナントはアクセスできない。【選択図】  図４Ａ
2020502626.tif 000002
【特許請求の範囲】
【請求項１】
ある時点でのデータベース・システムのオリジナル・テナントに対するサンドボックスを作成するコンピュータ化された方法であって、前記オリジナル・テナントは、オリジナル・テナント識別子に関連付けられた前記データベース・システムの不変の記憶域に記憶されたオリジナル・テナント・データを有し、前記サンドボックス作成時点における前記オリジナル・テナント・データは、サンドボックス・テナントがアクセスできるようにされる前記オリジナル・テナント・データの仮想スナップショットであり、前記サンドボックス・テナント・データは、前記オリジナル・テナント・データを変更又は増加することなく変更又は増加することができ、前記オリジナル・テナント・データは、前記サンドボックス・テナント・データを変更又は増加することなく変更又は増加することができ、
前記方法は、
前記データベース・システムを介して、サンドボックス・テナント識別子を作成することと、
前記サンドボックス・テナント識別子を、前記オリジナル・テナント・データの前記仮想スナップショット及び前記サンドボックス作成時点以降に前記サンドボックス・テナントが作成したサンドボックス・テナント・データに関連付けることによってサンドボックス・テナントを作成することであって、前記サンドボックス作成時点以降に前記サンドボックス・テナントが作成した前記サンドボックス・テナント・データは、前記オリジナル・テナントがアクセスできない、サンドボックス・テナントを作成することと、
前記サンドボックス作成時点以降に、前記不変の記憶域に記憶された前記オリジナル・テナント識別子に関連付けられた後続のオリジナル・テナント・データを作成することであって、前記後続のオリジナル・テナント・データを前記サンドボックス・テナントはアクセスできず、前記オリジナル・テナントは、前記不変の記憶域に記憶された前記サンドボックス作成時点の前後に作成されたオリジナル・テナント・データにアクセスすることができ、前記後続のオリジナル・テナント・データは、前記不変の記憶域に記憶されたより古いオリジナル・テナント・データを変更しない新しいオリジナル・テナント・データとして書き込まれる、後続のオリジナル・テナント・データを作成することと、
を含む、方法。
【請求項２】
前記サンドボックス・テナントを示すキーを含むクエリを受信することと、
前記サンドボックス・テナントを示すキーを前記オリジナル・テナントを示すキーに動的マッピングすることにより、前記サンドボックス・テナントの前記キーによって識別される前記不変の記憶域からのデータ上で動作することと、
をさらに含む、請求項１に記載の方法。
【請求項３】
前記サンドボックス・テナントを示す前記キーの前記動的マッピングに基づいて、前記サンドボックス・テナントのための前記不変の記憶域からの前記データを返すことをさらに含む、請求項２に記載の方法。
【請求項４】
データ上での前記動作は、
前記マッピングされたキーに基づいて、前記不変の記憶域からデータを読み出すことと、
前記オリジナル・テナントの前記キーによって示される前記不変の記憶域からの前記データを前記サンドボックス・テナントを示す前記キーのデータに変換することと、
前記変換されたデータ上で動作を実行することと、
前記サンドボックス・テナントの前記キーに関連付けられた前記不変の記憶域に、前記実行された動作から得られたデータを記憶することと、
を含む、請求項２に記載の方法。
【請求項５】
前記サンドボックス・テナントを示すキーを含むクエリを受信することと、
前記サンドボックス・テナントの前記キーによって識別される前記不変の記憶域からのデータ上で動作することと、をさらに含む、請求項１に記載の方法。
【請求項６】
前記サンドボックス・テナントを示す前記キーの動的マッピングに基づいて、前記サンドボックス・テナントのための前記不変の記憶域からの前記データを返すことをさらに含む、請求項５に記載の方法。
【請求項７】
前記サンドボックス・テナントを削除する動作を受信することと、
前記オリジナル・テナント・データを変更又は増加することなく、前記サンドボックス・テナントに関連する少なくとも１つのキーを、前記不変の記憶域から削除することと、をさらに含む、請求項１に記載の方法。
【請求項８】
前記少なくとも１つのキーを削除することは、前記不変の記憶域に記憶されている物理データを削除せずに、キー範囲を前記不変の記憶域から削除することを含む、請求項７に記載の方法。
【請求項９】
前記少なくとも１つのキーを削除することは、
サンドボックスの作成時点後に、前記不変の記憶域の前記サンドボックス・テナント・データに変更がない場合、前記サンドボックス・テナント・データに関連付けられたオリジナル・テナント・マッピングを持つサンドボックス・テナント・データのエクステント参照を前記不変の記憶域から削除することを含む、請求項７に記載の方法。
【請求項１０】
前記少なくとも１つのキーを削除することは、
オリジナル・テナント・データの既存のエクステント参照を置き換える前記不変の記憶域内の前記サンドボックス・テナント・データに変更があった場合、前記サンドボックス・テナント・データの前記削除されたエクステント参照を含まないように、前記サンドボックス・テナント・データのキー範囲に関して前記不変の記憶域からのエクステント参照を削除することを含む、請求項７に記載の方法。
【請求項１１】
ログ構造化マージ・ツリー・データ構造を使用して、前記データを前記不変の記憶域に記憶することをさらに含む、請求項１に記載の方法。
【請求項１２】
ある時点でのオリジナル・テナントに対するサンドボックスを作成するシステムであって、
前記システムは、
少なくとも１つの記憶装置であって、前記オリジナル・テナントは、オリジナル・テナント識別子に関連付けられた前記少なくとも１つの記憶装置の不変の記憶域に記憶されたオリジナル・テナント・データを有し、前記サンドボックス作成時点における前記オリジナル・テナント・データは、サンドボックス・テナントがアクセスできるようにされる前記オリジナル・テナント・データの仮想スナップショットであり、前記サンドボックス・テナント・データは、前記少なくとも１つの記憶装置に記憶することができ、前記オリジナル・テナント・データを変更又は増加することなく変更又は増加することができ、前記オリジナル・テナント・データは、前記サンドボックス・テナント・データを変更又は増加することなく変更又は増加することができる、少なくとも１つの記憶装置と、
前記少なくとも１つの記憶装置に通信可能に接続された前記オリジナル・テナントと前記サンドボックス・テナントに対する１つ以上のサーバであって、前記１つ以上のサーバは、サンドボックス・テナント識別子を作成し、前記サンドボックス・テナント識別子を、前記オリジナル・テナント・データの前記仮想スナップショット及び前記サンドボックス作成時点以降に前記サンドボックス・テナントが作成したデータに関連付けることによってサンドボックス・テナントを作成し、前記サンドボックス作成時点以降に前記サンドボックス・テナントが作成した前記データは、前記オリジナル・テナントがアクセスできず、前記サンドボックス作成時点以降に、前記少なくとも１つの記憶装置の前記不変の記憶域に記憶された前記オリジナル・テナント識別子に関連付けられた後続のオリジナル・テナント・データを作成し、前記後続のオリジナル・テナント・データを前記サンドボックス・テナントはアクセスできず、前記オリジナル・テナントは、前記不変の記憶域に記憶された前記サンドボックス作成時点の前後に作成されたテナント・データにアクセスすることができ、前記後続のオリジナル・テナント・データは、前記不変の記憶域に記憶されたより古いオリジナル・テナント・データを変更しない新しいオリジナル・テナント・データとして書き込む、少なくとも１つのサーバと、
を含む、システム。
【請求項１３】
前記１つ以上のサーバは、前記サンドボックス・テナントを示すキーを前記オリジナル・テナントを示すキーに動的マッピングすることによって、前記サンドボックス・テナントに対する前記キーによって識別された前記不変の記憶域からのデータ上で動作するサンドボックス・テナントを示すキーを含むクエリを受信する、請求項１２に記載のシステム。
【請求項１４】
前記１つ以上のサーバは、前記サンドボックス・テナントを示す前記キーの前記動的マッピングに基づいて、前記少なくとも１つの記憶装置から前記サンドボックス・テナントのための前記不変の記憶域から前記データを受信する、請求項１３に記載のシステム。
【請求項１５】
前記１つ以上のサーバは、前記マッピングされたキーに基づいて前記不変の記憶域からデータを取り出し、前記オリジナル・テナントの前記キーによって示された前記不変の記憶域からのデータを、前記サンドボックス・テナントを示す前記キーのデータに変換し、前記変換されたデータ上で動作を実行し、前記サンドボックス・テナントの前記キーに関連する前記少なくとも１つの記憶装置の前記不変お記憶装置の前記実行された動作からの結果のデータを記憶するように、データ上で動作する、請求項１３に記載のシステム。
【請求項１６】
前記１つ以上のサーバは、前記サンドボックス・テナントを示すキーを含むクエリを受信し、前記サンドボックス・テナントの前記キーによって識別される前記少なくとも１つの記憶装置の前記不変の記憶域からのデータ上で動作する、請求項１２に記載のシステム。
【請求項１７】
前記１つ以上のサーバは、前記サンドボックス・テナントを示す前記キーの動的マッピングに基づいて、前記サンドボックス・テナントのための前記少なくとも１つの記憶装置からの前記不変の記憶域から前記データを受信する、請求項１６に記載のシステム。
【請求項１８】
前記１つ以上のサーバは、前記サンドボックス・テナントを削除する動作を受信し、前記少なくとも１つの記憶装置の前記不変の記憶域から、前記サンドボックス・テナントに関連するキーを、前記オリジナル・テナント・データを変更又は増加することなく削除する、請求項１２に記載のシステム。
【請求項１９】
前記１つ以上のサーバは、前記不変の記憶域に記憶された物理データを削除することなく、前記不変の記憶域からキー範囲を削除する、請求項１８に記載のシステム。
【請求項２０】
前記１つ以上のサーバは、前記サンドボックス生成時点後に前記不変の記憶域内の前記サンドボックス・テナント・データに変更がないときに、それらに関連するオリジナル・テナント・マッピングを有する前記サンドボックス・テナント・データのエクステント参照を前記不変の記憶域から削除する、請求項１８に記載のシステム。
【請求項２１】
前記オリジナル・テナント・データの既存のエクステント参照を置き換える前記不変の記憶域内の前記サンドボックス・テナント・データに変更があった場合、
前記１つ以上のサーバは、前記サンドボックス・テナント・データの削除されたエクステント参照を含まないように、前記サンドボックス・テナント・データのキー範囲に対して、前記不変の記憶域からエクステント参照を削除する、請求項１８に記載のシステム。
【請求項２２】
前記１つ以上のサーバは、ログ構造化マージ・ツリー・データ構造を使用して、前記少なくとも１つの記憶装置の前記不変の記憶域に前記データを記憶する、請求項１２に記載のシステム。
【請求項２３】
コンピュータによって実行されるとき、コンピュータに請求項１乃至１１のいずれか一項に記載の方法のステップを実行させる命令を含む、コンピュータ読取可能記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
テスト・システムは、典型的には、アプリケーションのために形成され、プロダクション・システムとは分離される。「サンドボックス（ｓａｎｄｂｏｘｅｓ）」と呼ばれるこのようなシステムは、アプリケーションの新しい特徴及びバージョンをテストするために使用することができる。既知のシステムでは、テストがプロダクション・データを破壊するだろうためライブ・プロダクション・データをサンドボックス化に使用することはできない。そのため、顧客データのコピーを別々に作成し、テスト及び開発に使用する。典型的なサンドボックス・システムのためのデータベースの個別のコピーの作成は時間がかかり、かなりの量の計算資源を消費し、エラーを起こしやすく、かなりのデータ記憶資源を占める可能性がある。多くの場合、すべてのデータを単一のトランザクションでコピーすることは実用的ではないため、コピーされたデータはトランザクション上で一貫性がない。その場合、テストに使用されるサンドボックス・データは正確でないかもしれないので、アプリケーションのテストは、アプリケーションの特徴の運用上の機能を決定するのに成功しないかもしれない。場合によっては、一貫性のないデータは、サンドボックスを使用する前に調整することができるが、それは時間がかかり、かなりのプロセッサ及びメモリ・リソースを必要とすることがある。
【図面の簡単な説明】
【０００２】
開示された主題のさらなる理解を提供するために含まれる添付の図面は、本明細書に組み込まれ、本明細書の一部を構成する。図面はまた、開示された主題事項の実施例を例示し、詳細な説明と共に、開示された主題の実施例の原理を説明するのに役立つ。開示された主題事及びそれが実施され得る種々の方法についての基本的な理解のために必要であるような、より詳細な構造的詳細を示す試みは行われない。
【０００３】
【図１】開示された主題の実施例に従って、サンドボックス・テナント・データのためのサンドボックスを作成し、オリジナル・テナントのための後続の不変のオリジナル・テナント・データを作成する例示的な方法を示す。
【０００４】
【図２Ａ】開示された主題の実施例に従って、テナント識別子を動的マッピングすることによって、クエリを受信し、不変の記憶域からのデータ上で動作させる例示的な方法を示す。
【０００５】
【図２Ｂ】開示された主題の実施形態に従って、不変の記憶域からのデータを読取り及び変換し、変換されたデータに対して動作を行う例示的な方法を示す。
【０００６】
【図３Ａ】開示された主題の実施例に従って、仮想化層を用いてデータを記憶及び検索する例示的なシステム及び方法を示す。
【０００７】
【図３Ｂ】開示された主題の実施例に従って、データを変換することによって、データベース・システムのサンドボックスからデータを読み出すことを示す。
【０００８】
【図４Ａ】図４Ａ〜図４Ｂは、開示された主題の実施例に従って、サンドボックスに関連して使用され得るシステム・アーキテクチャの一例を示す。
【図４Ｂ】図４Ａ〜図４Ｂは、開示された主題の実施例に従って、サンドボックスに関連して使用され得るシステム・アーキテクチャの一例を示す。
【０００９】
【図５】開示された主題の実施例によるコンピュータを示す。
【００１０】
【図６】開示された主題の実施形態によるネットワーク構成を示す。
【発明を実施するための形態】
【００１１】
開示された主題の実施例は、プロダクション・データを複製することなく、又は複製されたプロダクション・データ上で動作することなく、データベース・システムの１以上のテナントに関連する１以上の許可されたユーザからの入力に基づいて、サンドボックスを作成し、実行することができる。このようなサンドボックスは、プロセッサ・リソース、データ記憶及び永続リソース、及び／又はデータ経路（例えば、通信ネットワーク）リソースに関して、既知のサンドボックスよりもはるかに低いコストでより迅速に確立することができる。開示されたシステムは製造データを読み取るので、本質的に正確であり、テストされるデータに関して整合性チェック又は他の是正措置を取る必要はない。また、テストされるデータの完全性は、既知のサンドボックス実装よりも優れている可能性があるため、アプリケーションに対してより正確なテスト結果を得ることができる。
【００１２】
サンドボックスの実装において、データベース・システムの１つ以上のテナントに関連付けられた１つ以上の許可されたユーザ（ａｕｔｈｏｒｉｚｅｄ  ｕｓｅｒｓ）は、データベースのためのサンドボックス・テナントを作成することができる。データベース・システムの許可されたユーザは、データベース・システムの１つ以上のテナントに対するセキュリティ・アクセス権を有するユーザであってもよい。例えば、ユーザは、パスワード及び／又は他の情報（例えば、暗証番号（ｓｅｃｕｒｉｔｙ  ｃｏｄｅ）、バイオインフォマティクスなど）をデータベース・システムに提供することができ、これによって、ユーザが提供された情報に基づいて許可された使用者であるか否かを決定することができる。提供された情報がデータベース・システムの記憶された情報と一致する場合、ユーザは、許可されたユーザであると判断されてもよく、データベース・システムへのアクセスを許可されてもよい。
【００１３】
サンドボックス・テナントは、サンドボックス・テナント・キーに関連するデータにアクセスすることができ、一方、（サンドボックス以外の）オリジナル・テナントは、オリジナル・テナント・キーに関連するデータにアクセスすることができる。テナント（例えば、オリジナル・テナント、サンドボックス・テナントなど）に関連するキーの範囲は、テナントのネームスペースの全部又は一部であり得る。通常、あるテナントは別のテナントのネームスペースにアクセスできない。しかしながら、記載された主題の実施例において、ハードウェアとソフトウェアの組み合わせは、特定のサンドボックス・テナント・キーとオリジナル・テナント・キーとの間の対応（ｃｏｒｒｅｓｐｏｎｄｅｎｃｅ）を生成して、サンドボックス・テナントがオリジナル・テナントに関連した時点のデータへの読み取りアクセスを提供することができる。このようにして、サンドボックス・テナントは、オリジナル・テナント・データをサンドボックス・テナントのネームスペースにコピーする必要はなく、オリジナル・テナント・データを使用することができる。この時点のデータは、サンドボックスでアプリケーションをテストするために使用することができる。
【００１４】
サンドボックス・テナントが生成した新しいトランザクション・データは、オリジナル・テナントがアクセスできないサンドボックス・テナント・ネームスペースに書き込むことができる。オリジナル・テナントが作成した新しいトランザクション・データは、サンドボックス・テナントがアクセスできないオリジナル・テナント・ネームスペースに書き込むことができる。このようにして、新しいサンドボックス・テナント・データは、オリジナル・テナント（プロダクション）データを破壊せず、新しいオリジナル・テナント・データ（例えば、後続の不変のオリジナル・テナント・データと呼ばれる）は、アプリケーションをテストするためにサンドボックスによって読み書きされるテスト・データを破壊しない。実装は、レコードの永続的な内容を保存するリレーショナル・データベース、例えば、ログ構造化マージ（ＬＳＭ：Ｌｏｇ  Ｓｔｒｕｃｔｕｒｅｄ  Ｍｅｒｇｅ）ツリーで使用できる。
【００１５】
この構成によると、開示された実施例のデータベース・システムの１つ以上のテナントに関連する許可されたユーザは、従来のサンドボックス・システムによって使用されるデータ記憶装置及び永続リソース、プロセッサ・リソース、及び／又はデータ経路（例えば、通信ネットワーク）リソースのほんの一部のみを使用するサンドボックスをより迅速に作成し、実行することができる。
【００１６】
一般に、アプリケーションはプロダクション・システムのサーバ上で実行することができ、テスト・システムはプロダクション・システムから分離することができる。テスト・システムは、アプリケーションの新しい特徴及び／又はバージョンをテストするために使用されてもよい。プロダクション・システム・アプリケーションは、企業又は組織のサーバ上で（すなわち、アプリケーションを「オンプレミス」で）実行され、又はクラウドベースのコンピューティング環境で（例えば、サーバが企業又は組織のサーバからリモートである）アプリケーションを実行することによって実行される。
【００１７】
開示された主題の実施例は、サンドボックスを作成するためにデータベース・システムの１以上のテナントに関連する許可されたユーザのためのシステム及び方法を提供し、それらは、プロダクション・データを変更することなく、プロダクション・データに基づいてサンドボックス・データを作成することによって、テスト及び開発のために少なくとも部分的な会社データ、組織データ、及び／又は顧客データ（すなわち、プロダクション・データ）を使用する。一貫して使用されるように、顧客データは、会社データ及び／又は組織データの任意の部分を指すことができる。
【００１８】
アプリケーションの１つ以上の特徴は、サンドボックス・データを使用してテストされてもよい。アプリケーションの機能がテストされると、サンドボックスはプロダクション・データに影響を与えずに削除できる。サンドボックス・データへの参照（例えば、ポインタ）を削除することにより、サンドボックスを削除することができる。サンドボックス削除動作における参照の削除は、瞬時に行われることがあり、従来のサンドボックス化システムに比べて、プロセッサ、データ記憶、及び／又はデータ経路のリソースの使用がより少ない。いくつかの実施例では、サンドボックス・データの参照は、参照を維持するためにデータ・マージ動作で前方へコピーされないので、従って、サンドボックスへの参照はもはや有効でなく、サンドボックスは効果的に削除され得る。
【００１９】
従来のシステム及び方法により、顧客データをサンドボックス化するプロセスは、宛先データベース・インスタンス上にサンドボックスのための新しいテナントを作成することを含む。テナント・データはターゲット・データベース・インスタンスにコピーされ、テナントはソース・インスタンス上で「ライブ（ｌｉｖｅ）」である。従来のシステム及び方法によって、コピーされたデータがトランザクション的に整合しているかどうかを判定するために、整合性チェック（ｃｏｎｓｉｓｔｅｎｃｙ  ｃｈｅｃｋ）を実行する必要がある。整合性チェックが完了すると、テナントは、例えばサンドボックスを含み得る宛先データベース・インスタンス上で起動することができる。
【００２０】
開示された実施例は、従来のサンドボックス技術における重要な制限を克服する。より具体的には、必要なデータをすべてコピーし、コピーしたデータがオリジナル・データ・セットと整合しているかどうかを確認するのに時間がかかるので、従来のサンドボックスの作成は、遅い。このような従来のシステム及び方法はまた、リソースを消費し（すなわち、データのセット全体をコピーするために相当量の計算、データ経路、ネットワーク、及び／又は記憶リソースを必要とする）、エラーを生じやすい。例えば、データが正しくコピーされない、データの欠落部分があるかもしれない、又はデータが破壊されるかもしれない、などである。すなわち、従来のシステムと方法を用いてサンドボックスを作るには、テナントのすべての行を新しいサンドボックス・テナントにコピーすることを伴う。行毎のコピーは、ソース・データベースとターゲット・データベースの両方において、遅くリソース集約的であり、テナントの記憶を実質的に２倍にする可能性がある。また、テナント・データをすべて単一のトランザクションでコピーすることは現実的ではないため、サンドボックスが顧客に提供される前に、一貫性のないデータを調整する複雑なプロセスが存在する可能性がある。
【００２１】
開示された主題の実施例において、従来のサンドボックス化システムと比較して、より迅速にサンドボックスを生成し、実質的により少ない記憶スペースを使用することができるシステム及び方法が提供される。開示された主題のシステム及び方法は、標準的なサンドボックス化方法を使用するときに実行される必要があり得るような、エラーチェックを実行する必要なしに、完全に整合的であり得るデータを有するサンドボックスを生成する。
【００２２】
以下に詳細に説明するように、開示された主題の実施例は、テナント識別子（すなわち、「テナントＩＤ」）をルートとした単一のキー空間であるＬＳＭツリーのような不変の（変更不可能な）記憶装置（ｉｍｍｕｔａｂｌｅ  ｓｔｏｒａｇｅ）を使用し、持続性仮想化（ｐｅｒｓｉｓｔｅｎｃｅ  ｖｉｒｔｕａｌｉｚａｔｉｏｎ）を使用することによって、サンドボックスを実装することができる。持続性はエクステントで構成される場合がある。当技術分野で理解され、本明細書で使用されるように、「エクステント（ｅｘｔｅｎｔ）」は、データを記憶するために使用され得る記憶媒体内で典型的に連続する記憶領域を指す。エクステントは不変であってもよく、キーによって順序付けられてもよい。すなわち、エクステントは、それらが作成された後に修正されない可能性があり、記憶媒体内のエクステントに関連する領域及びデータが更新されないが、将来削除される可能性があるという点で不変であり得る。例えば、サンドボックス・データでもはや参照されないエクステントは、参照を保持するためにデータ・マージ動作で参照を前方にコピーされない可能性があるため、削除されてもよい。すなわち、サンドボックスとそのエクステントは、もはやサンドボックスへの有効な参照がなくなり、効果的に取り除くことができる。新しいデータをデータベースに追加したり、新しいエクステントを作成したりできる。エクステントは、分散ファイル・システムに類似した共有記憶装置に記憶できる。
【００２３】
エクステント参照（ｅｘｔｅｎｔ  ｒｅｆｅｒｅｎｃｅ）は、物理記憶装置（例えば、記憶装置（ｓｔｏｒａｇｅ  ｄｅｖｉｃｅ））に記憶される物理的エクステントの論理参照として使用され得、そして物理記憶装置へのアクセスを仮想化するために使用され得る。開示された主題のシステム及び方法に従ってサンドボックスを作成するために、ソース・テナントに関連するデータベース・システムの許可されたユーザは、ソース（すなわち、オリジナル・テナント）からターゲット（すなわち、新しいサンドボックス・テナント）までのキー範囲内のテナントＩＤを変換する指示とともに、ソース・テナントのキーを含む各エクステントに対して新しいエクステント参照を追加することを要求することができる。この変換（ｔｒａｎｓｌａｔｉｏｎ）は、新しいサンドボックス・テナントに関連するユーザから生成された要求によって発行された特定の読み取り動作を、ある時点で、オリジナル・テナント・データにマッピングすることができる。その時点のデータは、キー範囲で区切ることができる。オリジナル・テナントによって書かれた後続のトランザクションは、トランザクションのために参照される時点のデータに影響を及ぼさない可能性がある。サンドボックス・テナントによる書き込み動作は、オリジナル・テナント・データとは異なるキー（サンドボックス・テナント・キー）の下に記憶される可能性があるため、サンドボックス書き込み動作は任意のオリジナル・データを破壊しない。これは、メタデータの変更とメタデータのコピーのみを必要とし、基になるデータをコピーする必要がないため、サンドボックスの迅速な形成を可能にする。これは、テナント・データをコピーし、サンドボックスのための新しい場所にそれを保存し、データが正確にコピーされているかどうかを判定するためにかなりのリソースを必要とする典型的なサンドボックス・システムに対して望ましいことがある。従来のサンドボックス化システム及び方法において使用されるリソースは、記憶装置の容量の増加、コピーを管理し、それが正確に実行されたか否かを決定する際のプロセッサのオーバーヘッド、コピー及び精度をチェックするために必要な時間、などを含み得る。
【００２４】
開示された主題の実施例において、オリジナル・テナントと関連付けられたデータベース・システムの許可されたユーザに対して、その時点のオリジナル・テナントのためのサンドボックスを作成する方法が提供され、オリジナル・テナントは、オリジナル・テナント識別子と関連付けられた不変の記憶域（ｉｍｍｕｔａｂｌｅ  ｓｔｏｒａｇｅ）に記憶されたオリジナル・テナント・データを有し、サンドボックス作成時点におけるオリジナル・テナント・データは、サンドボックス・テナントによってアクセス可能なオリジナル・テナント・データの仮想スナップショットであり、サンドボックス・テナント・データは、オリジナル・テナント・データを変更することなく変更でき、オリジナル・テナント・データは、サンドボックス・テナント・データを変更することなく変更可能である。この方法は、サンドボックス・テナント識別子を作成することを含み得る。仮想スナップショットは、基になるデータをコピーすることなく、あたかもオリジナル・テナント・データのコピーが行われたのと同様に、サンドボックス・テナントがオリジナル・テナント・データにアクセスできるように、オリジナル・テナント・データがサンドボックス・テナントに利用可能になるようなものであってもよい。サンドボックス・テナントは、サンドボックス・テナント識別子を、オリジナル・テナント・データの仮想スナップショット及びサンドボックス作成時点以降にサンドボックス・テナントが作成したサンドボックス・データに関連付けることによって、関連する許可ユーザの要求に応じて作成することができる。サンドボックス作成時点以降にサンドボックス・テナントによって作成又は変更されたサンドボックス・データは、オリジナル・テナントがアクセスできない場合がある。
【００２５】
サンドボックスの作成時点に続いて、新規又は更新されたオリジナル・テナント・データが作成され、不変の記憶域に記憶されたオリジナル・テナント識別子に関連付けられてもよい。この後続の新規又は更新されたオリジナル・テナント・データに、サンドボックス・テナントにアクセスしているユーザは、アクセスできない場合がある。オリジナル・テナントの利用者は、不変の記憶域に記憶されるサンドボックス作成時点の前後の両方でテナント・データにアクセスすることができる。すなわち、オリジナル・テナントに関連付けられた許可されたユーザは、サンドボックスが作成される前と同じようにデータを読み書きできる。後続のオリジナル・テナント・データは、新規又は更新されたオリジナル・テナント・データとして書き込まれ、この新規又は更新されたデータは、不変の記憶域に記憶されたより古いオリジナル・テナント・データを変更しない。
【００２６】
開示された主題の実施例において、少なくとも１つの記憶装置を有するシステムが提供され、その結果、データベース・システム内のオリジナル・テナントに関連する１つ以上の許可されたユーザが、ある時点で、オリジナル・テナントのためのサンドボックスを作成することができる。これは、新しいサンドボックス・テナント識別子を作成することによって行われる。オリジナル・テナントは、オリジナル・テナント識別子に関連付けられた少なくとも１つの記憶装置の不変の記憶域にテナント・データを記憶することができる。サンドボックス作成時点のオリジナル・テナント・データは、実装がサンドボックス・テナントにアクセス可能にする不変のオリジナル・テナント・データの仮想スナップショットを提供するために使用することができる。すなわち、サンドボックス・テナントがオリジナル・テナント・データのコピーを作成したのと同じ方法でオリジナル・テナント・データにアクセスできるように、オリジナル・テナント・データをサンドボックス・テナントに利用可能にすることができる。同様に、オリジナル・テナントも同じオリジナル・テナント・データにアクセスすることができる。また、仮想スナップショットの基になるデータが不変であるため、この仮想スナップショットを変更することはできない。
【００２７】
しかしながら、オリジナル・テナント・データ又はサンドボックス・テナント・データに提示された変更及び／又は追加は、オリジナル・テナント・データを上書き又は他の方法で置き換えるために記憶されない。その後、オリジナル・テナント又はスナップショット・テナントのいずれかに関連する許可されたユーザによって行われた変更及び／又は追加は、仮想スナップショットを変更することなく記憶することができる。むしろ、オリジナル・テナントに関するデータは不変のエクステント（ｉｍｍｕｔａｂｌｅ  ｅｘｔｅｎｔｓ）で記憶することができ、サンドボックスのテナントに関するデータは本明細書にさらに詳細に開示されるように、別個の不変のエクステントで記憶することができる。これらの付加的なエクステントへのポインタ等のメカニズムは、サンドボックス・テナント・データを変更することなく、オリジナル・テナント・データを変更及び／又は増加することを可能にし得る。システムは、サンドボックス・テナント識別子を作成することができ、サンドボックス・テナント識別子を、テナント・データの仮想スナップショットへのアクセス、及びサンドボックス作成時点の後にサンドボックス・テナントの許可されたユーザによって作成されたデータ（例えば、アプリケーションに及び／又はデータベース・システムによってなど）と、関連付けることによって、サンドボックス・テナントを作成することができる。サンドボックスのテナント及び／又はサンドボックスの作成時点以降にサンドボックスのテナントに関連付けられたデータベース・システムの許可されたユーザによって作成されたデータは、オリジナル・テナントにとってアクセス不可能である可能性がある。サンドボックス作成時点に続いて、システムは、少なくとも１つの記憶装置の不変の記憶域に記憶されたオリジナル・テナント識別子に関連する不変のテナント・データを作成することができる。後続の不変のオリジナル・テナント・データは、サンドボックスのテナントがアクセスできない場合がある。オリジナル・テナント及び／又はオリジナル・テナントに関連するデータベース・システムの許可されたユーザは、不変の記憶域に記憶されているサンドボックス作成時点の前後の両方で作成されたオリジナル・テナント・データに、アクセスすることができる。後続の不変のオリジナル・テナント・データは、不変の記憶域に記憶された他のテナント・データ（例えば、オリジナル及びサンドボックス・テナント・データ）を変更しない新しいオリジナル・テナント・データとして作成される。データベース・システムのオリジナル・テナントに関連付けられた許可されたユーザは、後続の不変のオリジナル・テナント・データ及び新規のオリジナル・テナント・データにアクセスすることができる。
【００２８】
図１は、開示された主題の実施例に従って、サンドボックスを作成し、後続の不変のテナント・データを作成する例示的な方法１０を示す。
【００２９】
特に、方法１０は、ある時点で、オリジナル・テナントのためのサンドボックスを作成するために、データベース・システムのオリジナル・テナントに関連付けられた許可されたユーザによって使用され得る。方法１０は、以下に詳細に説明するように、図３Ａ〜図６に示されるシステムに関連して使用することができる。オリジナル・テナントは、テナント識別子に関連付けられた不変の記憶域（例えば、図３Ａ〜３Ｂに示される物理記憶装置、図５に示される第２のコンピュータ８００の記憶装置８１０、図６のデータベース・システム１２００ａ〜ｄなど）に記憶されたオリジナル・テナント・データを有することができる。方法１０において、サンドボックス作成時点におけるサンドボックス・テナント・データは、オリジナル・テナント・データの仮想スナップショットであってもよく、サンドボックス・テナントがアクセス可能であってもよい。オリジナル・テナント・データを変更することなくサンドボックス・テナント・データを変更することができ、サンドボックス・テナント・データを変更することなくオリジナル・テナント・データを変更することができる。スナップショットは、オリジナル・テナントとサンドボックスの両方が、データに対して同じ不変のデータ（又はサンドボックスの作成時点で存在していたデータのバージョン）を使用するという点で、仮想的であってもよい。
【００３０】
動作１２でサンドボックス・テナント識別子が作成されてもよい。サンドボックス・テナント識別子は、サーバ、クラウド・サーバ、及び／又はデータベースなどのデータベース・システムによって作成されてもよい。例えば、識別されるサンドボックス・テナントは、図３Ａ〜３Ｂに示すシステム１００、図４Ａに示すサーバ５０２及び／又はサーバ５０４、図５に示す中央構成要素７００及び／又は第２のコンピュータ８００、及び／又は図６に示すデータベース・システム１２００ａ〜１２００ｄによって作成されてもよい。
【００３１】
動作１４において、データベース・システムは、サンドボックス・テナント識別子をオリジナル・テナント・データの仮想スナップショットに関連付けることによって、サンドボックス・テナントを作成することができる。サンドボックス・テナントは、データベース・システムの許可されたユーザと関連付けられてもよい。サンドボックス・テナント識別子は、サンドボックス作成時点以降にサンドボックス・テナントによって作成されるサンドボックス・データと関連付けることができる。サンドボックス作成時点以降にサンドボックス・テナントが作成したサンドボックス・データは、オリジナル・テナントがアクセスできない場合がある。
【００３２】
動作１６において、サンドボックス作成時点に続いて、データベース・システムは、不変の記憶域（例えば、図３Ａ〜３Ｂに示される物理記憶装置、図５に示される第２のコンピュータ８００の記憶装置８１０、図６のデータベース・システム１２００ａ〜ｄなど）に記憶されたオリジナル・テナント識別子に関連する後続のオリジナル・テナント・データを作成することができる。後続のオリジナル・テナント・データは、オリジナル・テナントに関連付けられた許可されたユーザによってデータベース・システムによって作成されてもよい。例えば、オリジナル・テナントに関連付けられた許可されたユーザによって制御される１つ以上のアプリケーションは、後続のオリジナル・テナント・データを作成する１つ以上の動作を実行することができる。後続の不変のオリジナル・テナント・データは、サンドボックス・テナントがアクセスできない場合がある。すなわち、オリジナル・テナントは、不変の記憶域に記憶されるサンドボックス作成時点の前後の両方で作成されたオリジナル・テナント・データにアクセスすることができる。後続の不変のオリジナル・テナント・データは、不変の記憶域に記憶されたより古いオリジナル・テナント・データ（例えば、オリジナルとサンドボックス・テナント・データ）を変更しない新しいオリジナル・テナント・データとして書き込まれ、オリジナル・テナントは、サンドボックス・テナントによって作成又は拡張されたデータにアクセスできない。
【００３３】
図２Ａは、開示された主題の実施例に従ってテナント識別子を動的マッピングすることによって、クエリを受信し、不変の記憶域からのデータ上で動作する例示的な方法２０を示す。いくつかの実施例では、方法２０は、上述し、図１に示す方法１０に関連して使用することができる。動作２１において、データベース・システムは、サンドボックス・テナントを示すキーを含むクエリを受信することができる。データベース・システムは、サーバ、クラウド・サーバ、及び／又はデータベース等であってもよい。例えば、クエリを受信するデータベース・システムは、図３Ａ〜３Ｂに示されるシステム１００、図４Ａに示されるサーバ５０２及び／又はサーバ５０４、図５に示される中央構成要素７００及び／又は第２のコンピュータ８００、及び／又は図６に示されるデータベース・システム１２００ａ〜１２００ｄであり得る。クエリは、例えば、図５に示されるコンピュータ６００によって生成されてもよい。
【００３４】
動作２２において、主キー（ｐｒｉｍａｒｙ  ｋｅｙ）が仮想サンドボックスの一部であるトランザクションを識別する場合、すなわち、検索されているレコードの内容はサンドボックスが作成される前に作成されたものである場合、データベース・システムは、サンドボックス・テナントを示す主キーをオリジナル・テナントを示す主キーに動的マッピングすることによって、サンドボックス・テナントのキーによって識別される不変の記憶域からのデータに対して動作することがでる。不変の記憶域は、図３Ａ〜３Ｂに示す記憶装置、図５に示す第２のコンピュータ８００の記憶装置８１０、図６のデータベース・システム１２００ａ〜１２００ｄなどであり得る。
【００３５】
図２Ｂは、開示された主題の実施例に従って、不変の記憶域からのデータを読み出し及び変換し、変換されたデータに対して動作を行う例示的な方法を示す。特に、図２Ｂは、図２Ａに示され上述の方法２０の動作２２の一部であり得る例示的な動作を示す。動作２４において、図２Ｂに示されるように、データベース・システムは、マッピングされたキーに基づいて不変の記憶域からデータを読み出すことができる。上述のように、データベース・システムは、図３Ａ〜図３Ｂに示されるシステム１００、図４Ａに示されるサーバ５０２及び／又はサーバ５０４、図５に示される中央構成要素７００及び／又は第２のコンピュータ８００、及び／又は図６に示されるデータベース・システム１２００ａ〜１２００ｄであってもよく、不変の記憶域は、図３Ａ〜３Ｂに示される物理記憶装置、図５に示される第２のコンピュータ８００の記憶装置８１０、図６のデータベース・システム１２００ａ〜１２００ｄなどであってもよい。
【００３６】
動作２６において、データベース・システムは、オリジナル・テナントのキーによって示される不変の記憶域からサンドボックス・テナントを示すキーにデータのキーを変換することができる。この変換動作では、データは不変の記憶域に残り、重複しないが、データはサンドボックス・テナントに関連付けられる。すなわち、サンドボックスのユーザにアクセス可能なサンドボックス・テナントがサンドボックスの作成前に作成されたデータにアクセスできるように、オリジナル・テナントのキーをサンドボックスのテナントのキーにマッピングする。しかしながら、サンドボックス・テナントが作成したデータのキーは変換されず、サンドボックス・テナントのみがアクセス可能で、オリジナル・テナントが利用できない範囲のデータを指し示すことがある。
【００３７】
データベース・システムは、動作２８において変換されたデータ上で動作を実行することができ、実行された動作から生じるデータを、動作３０においてサンドボックス・テナントのキーに関連付けられた不変の記憶域に記憶することができる。データベース・システムは、いくつかの実装例では、ＬＳＭツリーデータ構造を使用して、不変の記憶域にデータを記憶することができる。サンドボックスに関連するデータ上の動作は、例えば、テストされるアプリケーションの１つ以上の機能に基づくデータの操作が含まれる。すなわち、データは、テストされるアプリケーションのバージョン及び／又はテストされるアプリケーションに追加された新しい機能に基づいて操作され得る。しかしながら、テストされるデータに対する修正は、オリジナル・テナントのみに関連付けられたユーザはアクセスできない。操作されたデータは、サンドボックス・テナントのキーに関連付けられ、不変の記憶域に記憶される。いくつかの実装例では、図２Ｂに示される例示的方法２０は、サンドボックス・テナントを示すキーの動的マッピングに基づいて、サンドボックス・テナントのための不変の記憶域からのデータを返すことを含むことができる。
【００３８】
図２Ａの方法１０を実行する際に、データベース・システムは、いくつかの実施例において、サンドボックス・テナントを示すキーを含むクエリを受信することができ、サンドボックス・テナントのためのキーによって識別される不変の記憶域からのデータ上で動作することができる。クエリは、サンドボックス・テナントに関連付けられたデータベース・システムの許可されたユーザから受信することができる。データは、サンドボックス・テナントを示すキーの動的マッピングに基づいて、サンドボックス・テナントのための不変の記憶域から返すことができる。
【００３９】
いくつかの実装例では、方法１０に関連して使用されるデータベース・システムは、サンドボックス・テナントを削除するための動作を受信することができる。例えば、サンドボックス・テナントに関連付けられた許可されたユーザは、データベース・システムに削除要求を提供してもよい。要求を受信すると、データベース・システムは、オリジナル・テナント・データを変更することなく、サンドボックス・テナントに関連する少なくとも１つのキーを不変の記憶域から削除することができる。少なくとも１つのキーの削除は、不変の記憶域に記憶された物理データを削除することなく、キー範囲を不変の記憶域から削除することによって実行されてもよい。すなわち、キー範囲の１つ以上のキーに対する不変の記憶域への参照は削除されてもよいが、削除された参照に以前関連付けられたデータは、オリジナル・テナントに対するそのデータのためのキーも存在する場合、不変の記憶域に保持されてもよい。
【００４０】
サンドボックス・テナントを削除する動作を実行するとき、サンドボックス・テナントに関連付けられた少なくとも１つのキーを削除することは、サンドボックス・テナント・データに関連付けられたオリジナル・テナント・キー・マッピングを有するサンドボックス・テナント・データに対する不変の記憶域からエクステント参照を削除することを含み得る。この削除動作は、サンドボックス作成時点以降、不変の記憶域内のサンドボックス・テナント・データに変更がないとき、サンドボックス・テナントに対して行うことができる。
【００４１】
サンドボックス・テナントを削除する動作を実行する別の実装において、データベース・システムによる少なくとも１つのキーの削除は、サンドボックス・テナント・データのキー範囲に対する不変の記憶域からのエクステント参照の削除を含むことができる。上述の実施例とは対照的に、この削除動作は、不変の記憶域内のサンドボックス・テナント・データに変更があった場合に実行されてもよい。この動作は、サンドボックス・テナント・データの削除されたエクステント参照を含まないように、オリジナル・テナント・データの既存のエクステント参照を置き換えることもできる。
【００４２】
図３Ａは、開示された主題の実施例による仮想化層を用いてデータを記憶及び検索する例示的なシステム及び方法を示す。システム１００は、単一のコンピュータ装置であってもよく、又は複数の接続されたコンピューティング装置を含んでもよく、例えば、ラップトップ、デスクトップ、個々のサーバ、サーバ・クラスタ、サーバ・ファーム、又は分散型サーバ・システムであってもよく、又は仮想コンピューティング装置若しくはシステム、又は物理的及び仮想システムの任意の適切な組み合わせであってもよい。簡単にするために、プロセッサ、短期及び長期記憶装置、オペレーティング・システム、データベース管理システムの大部分などの構成要素は示されていない。サーバ・システム１００は、コンピューティング・システム及びネットワーク・インフラストラクチャの一部であってもよく、又は他の方法では、サーバ・システム１００に類似する他のサーバ・システムを含んでもよいより大きなサーバ・ネットワークを含むコンピューティング・システム及びネットワーク・インフラストラクチャに接続されてもよい。いくつかの実施例では、システム１００は、図５に示されるコンピュータ６００、中央構成要素７００、及び／又は第２のコンピュータ８００、及び／又は図６に示されるデータベース・システム１２００ａ〜１２００ｄの１つ以上であってもよい。
【００４３】
システム１００は、所定のレコードの不変バージョンとしてトランザクションを記憶することができる。サーバ・システムにすでに保存されているレコードの内容の不変バージョンは、その内容がサーバ・システムから削除されるまで（もしあれば）、変更されないことがある。すなわち、受信したトランザクションは、レコードの内容を変更する代わりに、サーバ・システムに保存されるレコードの内容の新しいバージョンを作成してもよい。従って、本明細書に開示されているようなレコード（例えば、異なる内容を有するレコード）の複数のバージョンが同一のキーを持つことが可能である。所定のレコードのバージョンに対して同一のキーを使用することにより、リレーショナル・データベースに記憶されたデータの変更が可能になることがある。そのため、物理的レコードの各バージョンは不変であり得え、すなわち、それは、削除されないか又は月、年、又は数十年であり得る任意の長い期間にわたって、削除されない。たとえば、レコードの以前のバージョンと同じキーを持つレコードの後のバージョンは、そのレコードのデータ値の変更（すなわち、レコードの内容の変更）を示すことがある。代わりに、トランザクションはレコードを作成したり、レコードを削除したりできるが（すなわち、コンテンツを作成したり、コンテンツを削除したり）、レコードの削除は、トランザクションを取り除かないかもしれない。
【００４４】
システム１００のアクセス層１０５は、データベース記憶エンジン１１０を有してもよく、これは、コンピューティング装置（例えば、図５に示されるコンピュータ６００及び／又は第２のコンピュータ８００）からのデータベース・システム（例えば、図５に示される中央構成要素７００及び／又は図６に示されるデータベース・システム１２００ａ〜１２００ｄ）のためのクエリを受け入れてもよい。例えば、データベース記憶エンジン１１０は、データベース・システム内のデータの第１のネームスペース内の組織に対するクエリを受信することができる。データベース記憶エンジン１１０は、データベース・システムに対するクエリを受信し、受信したクエリに関連するデータを読み出すために、サーバ・システム１００上のハードウェアとソフトウェアの任意の適切な組み合わせとすることができる。
【００４５】
システム１００は、エクステント参照（ｅｘｔｅｎｔ  ｒｅｆｅｒｅｎｃｅ）１２０を有する仮想化層１１５を含むことができる。いくつかの実装例では、エクステント参照１２０は、図５に示される中央構成要素７００及び／又は図６に示されるデータベース・システム１２００ａ〜１２００ｄの一部であってもよい。エクステント参照１２０は、データベース記憶エンジン１１０と物理記憶装置１２７との間の仮想化層１１５として実行するために、サーバ・システム１００上のハードウェアとソフトウェアの任意の適切な組み合わせであってもよい（例えば、エクステントは、後述するように、エクステント１３０の一部として記憶されてもよい）。物理記憶装置１２７は、半導体メモリ、ソリッド・ステート・ドライブ（ＳＳＤ）、ハード・ディスク・ドライブ、光メモリ、光記憶装置、又は任意の他の適切な物理的データ記憶媒体、又はそれらの何らかの組み合わせであってもよい。
【００４６】
図３Ａに示すように、エクステント参照１２０は、第１のネームスペースであってもよい。エクステント参照１２０は、仮想化層１１５を介してデータベース記憶エンジン１１０からクエリを受信し、データを見つけることができる。クエリは、少なくとも１つのテナントに関連付けられたデータベース・システムの許可されたユーザから受信してもよい。仮想化層１１５は、エクステントを記憶することができるシステム１００の物理記憶装置１２７内のクエリの要求されたデータを見つけるように、クエリを解釈することができる。すなわち、仮想化層１１５は、クエリによって要求されたデータをエクステント１３０から読み出し、データベース記憶エンジン１１０にデータを返し、データベース・システムのクエリを行うことのできるコンピュータ・デバイスに提供することができる。
【００４７】
図３Ｂは、開示された主題の実施例に従ってデータのキーを変換することによって、データベース・システムのサンドボックスからデータを読み出すことを示す。図３Ｂのシステム１００は、図３Ａに示されるものと類似していてもよいが、図３Ｂは、以下に詳細に説明するように、仮想化層１１５の一部としてエクステント参照１２５を含んでもよい。
【００４８】
サンドボックスは、第１の（オリジナルの）テナント（すなわち、第１のネームスペース）のために作成されてもよい。例えば、少なくとも第１の（オリジナルの）テナントに関連付けられたデータベース・システムの許可されたユーザは、サンドボックス（すなわち、第２のネームスペース）を作成するコマンドをデータベース・システムに発行することができる。すなわち、第１のネームスペースのデータを使用することによって、第２のネームスペースが作成されてもよく、これは、エクステント参照１２５を形成してもよい。第１及び第２のネームスペースの両方のデータは、システム１００の物理記憶装置１２７に記憶されてもよい。第１と第２のネームスペースは、全部又は一部が同じ記憶されたデータを参照することができる。
【００４９】
図３Ｂに示す例においてサンドボックスが作成された後、データベース記憶エンジン１１０は、第２のネームスペースに関連するデータに対して許可されたユーザからクエリを受信することができる。第２のネームスペースに対することができるエクステント参照１２５は、第２のネームスペースに関連するデータのクエリを受信することができる。この例では、サンドボックスは第２のネームスペースに対して作成されたが、物理記憶装置１２７に記憶されたデータは同じデータである。従って、仮想化層１１５は、データベース・システムの許可されたユーザから受信したクエリに基づいて、エクステント１３０内の第１のネームスペースのデータを見つけることができる。エクステント参照１２５に戻されるデータは、第１のネームスペースのデータである。仮想化層１１５は、第１のネームスペースから第２のネームスペース内のキーにキーをマッピングすることにより、第１のネームスペース・データを第２のネームスペース・データに変換することができる。図３Ｂに示すように、変換された第２のネームスペース・データは、エクステント参照１２５から仮想化層１１５を介してデータベース記憶エンジン１１０に提供されてもよい。データベース記憶エンジン１１０は、第２のネームスペース・データを、クエリが受信された許可されたデータベースのユーザのコンピューティング装置に返すことができる。
【００５０】
図３Ａ〜３Ｂに示される例では、エクステント参照は、クエリに応答してサンドボックス前データ（ｐｒｅ−ｓａｎｄｂｏｘ  ｄａｔａ）又はサンドボックス後データ（ｐｏｓｔ−ｓａｎｄｂｏｘ  ｄａｔａ）を読み出すかどうかを決定するために使用されてもよい。全体を通じて開示されるように、仮想スナップショットは、エクステント参照の集合である。サンドボックスより前に作成されたデータは、オリジナル・テナント・データとのエクステントを示すエクステント参照を有することがある。新しいサンドボックス・データ（すなわち、サンドボックスの作成後に作成される後続のサンドボックス・テナント・データ）は、サンドボックス・キーを含むエクステント（すなわち、サンドボックスのキー範囲）を示すエクステント参照と関連付けることができる。サンドボックス・テナント・データ（すなわち、サンドボックスの作成時にサンドボックスに関連付けられたデータ）は、サンドボックスのキー範囲を含むことを示すエクステント参照に関連付けられてもよい。サンドボックス・テナント・データのエクステント参照は、オリジナル・キー（すなわち、サンドボックスの作成時に存在していたオリジナル・テナント・データのキー）及び追加の変換情報を有するエクステントを指し示すことができる。
【００５１】
例えば、図３Ａに示すように、クエリは、アクセス層１０５によって受信されてもよい。アクセス層１０５は、クエリの中の述部に基づいて、クエリが組織のための第１のネームスペース（すなわち、オリジナル・テナントに関連するオリジナル・テナント・データ）のためのものであることを判定することができる。図３の例では、テナントを代表するクエリは、テナントを特定する述部（ｐｒｅｄｉｃａｔｅ  ｓｐｅｃｉｆｙｉｎｇ  ｔｈｅ  ｔｅｎａｎｔ）を含むと仮定する。テナントを示す述部は、明示的であってもよく、ここで述部は、クエリがデータベース（例えば、図６に示されるデータベース１２００ａ、１２００ｂ、１２００ｃ、及び／又は１２００ｄ）からの情報を検索する前に含まれてもよく、又は述部は、データベースとの接続が確立される方法で黙字的であってもよい。クエリが、オリジナル・テナント・データのエクステントを指しているエクステント参照に基づいて（図３Ａに示されるように）、オリジナル・テナント・データのキー範囲内にある場合、アクセス層１０５は、仮想化層１１５に対し、クエリによって要求されたデータを物理記憶装置１２７から取得することを要求することができる。データを検索するために、仮想化層１１５のエクステント参照１２０は、物理記憶装置１２７のエクステント１３０を指し示すことができる。図３Ａに関連して上述したように、物理記憶装置１２７に記憶されたデータは、指し示されたエクステントに基づいて検索され、クエリに応答して提供されてもよい。
【００５２】
クエリ内の述部が、図３Ｂの例に示されるように、サンドボックスのキー範囲（例えば、第２のネームスペース）に関連付けられる場合、アクセス層１０５は、クエリ内の述部が第２のネームスペース（すなわち、サンドボックス・テナントに関連付けられたデータ）に関連付けられているという決定に基づいて、仮想化層１１５がクエリによって要求されたデータを物理記憶装置１２７から取り出すことを要求することができる。クエリ内の述部（すなわち、サンドボックスのキー範囲）を含むエクステント参照１２５は、オリジナル・キー（例えば、第１のネームスペースのデータ）を有する物理記憶装置１２７内のエクステント１３０を指し示すことができる。エクステント１３０からの第１のネームスペースの返されたデータは、エクステント参照１２５に含まれる変換情報を使用することによって変換される。すなわち、第１のネームスペースに対して返されたデータは、エクステント参照１２５に含まれる変換情報と共に、第２のネームスペース・データに変換されてもよい。図３Ｂに関連して上述したように、第２のネームスペースのデータ（例えば、エクステント参照１２５に関連付けられたデータ）は、アクセス層１０５によって受信されたクエリに応答して、アクセス層１０５に返されてもよい。
【００５３】
図４Ａ〜図４Ｂは、開示された主題の実施例によるサンドボックスの形成に関連して使用され得るシステム５００の一例を示す。特に、図４Ａ〜図４Ｂは、開示された主題の実施例による、複数のキーによるテナントの再マッピングを示す。システム５００は、データベース・システム、サーバ・システム、クラウド・サーバ・システム等であってもよい。システム５００は、サーバ５０２、サーバ５０４、ストア５１０、及びカタログ５２０を含むことができる。サーバ５０２、５０４は、同じ持続性（ｐｅｒｓｉｓｔｅｎｃｅ）を有してもよく、又は互いに異なる持続性を有してもよい。サーバ５０２及び／又はサーバ５０４に関連するエクステントでデータのキー範囲を記憶するためのシステム５００上のハードウェア及びソフトウェアの任意の適切な組み合わせであり得る。ストア５１０は、サーバ５０２に関連付けられ得るエクステント５１１、及びサーバ５０４に関連付けられ得るエクステント５１２を含むことができる。カタログ５２０は、データ・エクステント及びデータ・エクステント参照を記憶するためのシステム５００上のハードウェア及びソフトウェアの任意の適切な組み合わせとすることができる。
【００５４】
図４Ａに示す例では、サーバ５０２は、ストア５１０のエクステント５１１に関連付けることができ、エクステント５１１は、１０、１１、６２及び９８のテナントＩＤを持ち、各テナントＩＤ番号は、テナントＩＤ番号から始まるキーを有する。例えば、６２のテナントＩＤは、キー範囲内の複数のキーを有してもよく、キーはすべて６２で始まる。すなわち、この例では、６２はキーの先頭部分であってもよく、完全なキーは異なる構成要素で構成され、テナントＩＤであってもよい。サーバ５０４は、テナントＩＤ３３、３４、４４、及び６６を有する関連エクステント５１２であってもよく、各テナントＩＤ番号は、テナントＩＤ番号から始まるキーを有する。すなわち、サーバ５０２に関連付けられたエクステント５１１は、キー（１０、９８）のキー範囲（［最初のキー］、［最後のキー］）を有してもよく、第２のサーバ５０４に関連付けられたエクステント５１２は、キーのキー範囲（３３、６６）を有してもよい。
【００５５】
カタログ５２０では、データ・エクステント５２２は、サーバ５０２及び５０４のデータ・エクステント５１１及び５１２にマッピングすることができる。例えば、データ・エクステント５２２では、エクステント５１１のＩＤは０ｘ２１であってもよく、キー開始は１０であってもよく（すなわち、ストア５１０内のエクステント５１１のＩＤと一致する）、キー終了は９８（すなわち、ストア５１０内のエクステント５１１のＩＤと一致する）であってもよい。同様に、データ・エクステント５２２内のサーバ５０４に対するエクステント５１２のＩＤは、０ｘ８８であってもよく、キー開始は、３３であってもよく（すなわち、ストア５１０内のエクステント５１２のＩＤと一致する）、キー終了は、６６であってもよい（すなわち、ストア５１０内のエクステント５１２のＩＤと一致する）。データ・エクステント参照５２４は、データ・エクステント（例えば、データ・エクステント５２２）に対する参照であってもよく、関連付けられたサーバ（例えば、サーバ５０２又は５０４）に関する情報を含んでもよい。データ・エクステント参照５２４の行５２５は、データ・エクステント５２２のＩＤ  ０ｘ２１に対する同様の情報を含み得るが、０ｘ２１としてのＥＩＤ  （エクステントＩＤ（ｅｘｔｅｎｔ  ＩＤ））を含み得、キー開始が１０及びキー終了が９８を有するサーバがサーバ５０２であることを示し得る。
【００５６】
図４Ａに示される例では、データ・エクステント参照５２４は、サーバ５０２に関連付けられたエクステント５１１のテナントＩＤ  ６２がテナントＩＤ  ６３としてサンドボックス化される前のエクステントの状態を示す。サーバ５０２に関連付けられたエクステント５１１のテナントＩＤ  ６２を追加されるテナントＩＤ  ６３にマッピングするために、データ・エクステント参照５２４は、サーバ５０４への変更を反映してもよい。特に、図４Ｂに示されるように、行５２６及び５２８において、エクステント５１２（すなわち、０ｘ８８に対するＥＩＤを有するエクステント）は、２つのキー範囲に分割されてもよい。データ・エクステント参照５２４は、行５２６の範囲（すなわち、エクステント５１２）がキー開始３３及びキー終了４４（すなわち、（３３、４４）のキー範囲及び行５２８のエクステント（すなわち、エクステント５１２）がキー開始６６及びキー終了６６（すなわち、（６６、６６）のキー範囲））を有し得るように、更新されてもよい。すなわち、エクステント５１２のキー範囲３３〜４４は第１のセグメントにあり、キー６６で始まり終わるキー範囲は第２のセグメントである。図４Ｂに示すように、サーバ５０４は、エクステント５１２において、（３３、４４）のキー範囲、ならびに（６６、６６）のキー範囲を指し示してもよい。
【００５７】
図４Ｂに示すように、行５２７は、データ・エクステント参照５２４の行５２６と行５２８との間に挿入されてもよい。行５２７は、エクステント５１１を有してもよく（すなわち、サーバ５０２のための行５２５のように、０ｘ２１のエクステントＩＤを有するエクステント）、キー開始６３及びキー終了６３を有してもよく、テナントＩＤ  ６２のテナントＩＤ  ６３へのマッピングを示してもよい。データ・エクステント参照５２４は、サーバ５０２に関連するキー範囲（１０、９８）と、サーバ５０４に関連するキー範囲（３３、４４）、（６３、６３）、及び（６６、６６）とを含んでもよい。すなわち、図４Ａは、テナント６２からテナント６３へのマッピング前のデータ・エクステント参照５２４の状態を示してもよく、図４Ｂは、マッピング後のデータ・エクステント参照の状態を示してもよい。図４Ｂに示すように、サーバ５０４は、エクステント５１２のキー範囲（３３、４４）及びキー範囲（６６、６６）、ならびにエクステント５１１のキー範囲（６２、６２）を指し示すことができる。
【００５８】
現在開示されている主題の実施例は、種々の構成要素及びネットワーク・アーキテクチャにおいて実装され、それらによって使用される。図５は、現在開示されている主題の実施例を実装するのに適したコンピュータ６００の例である。本明細書においてさらに詳細に検討するように、コンピュータ６００は、複数のコンピュータのネットワーク内の単一のコンピュータであってもよい。図５に示すように、コンピュータ６００は、中央又は分散構成要素７００（例えば、サーバ、クラウド・サーバ、データベース、クラスタ、アプリケーション・サーバなど）と通信することができる。中央構成要素７００は、記憶装置８１０を含むことができる第２のコンピュータ８００などの１つ以上の他のコンピュータと通信することができる。第２のコンピュータ８００は、サーバ、クラウド・サーバ等であってもよい。記憶装置８１０は、例えば、ハード・ディスク・ドライブ、ソリッド・ステート・ドライブ、光メディア、フラッシュ・メモリ、テープ・ドライブ、レジスタ、及びランダム・アクセス・メモリ等を含む、任意の適切な揮発性及び不揮発性物理記憶媒体の任意の適切な組み合わせ、又はそれらの任意の組み合わせを使用することができる。
【００５９】
データは、任意の適切なファイル・システム又は記憶スキーム又は階層を使用して、例えば、記憶装置８１０に任意の適切なフォーマットで記憶されてもよい。例えば、記憶装置８１０は、複数のレベルを有するログ構造化マージ（ＬＳＭ）ツリーを使用してデータを記憶することができる。さらに、図５〜図６に示されるシステムがマルチテナント・システムである場合、記憶装置は、テナントのためのデータベースの各インスタンス対して別個のログ構造化マージ・ツリーに組織化されてもよい。代わりに、特定のサーバ又はシステム上のすべてのレコードの内容は、単一のログ構造化マージ・ツリー内に記憶されてもよく、その場合、レコードのバージョンに関連する固有のテナント識別子を使用して、本明細書に開示されるように、各テナントのデータを区別してもよい。より最近のトランザクションは、ツリーの最高レベル又はトップ・レベルに記憶され、より古いトランザクションは、ツリーのより下位レベルに記憶されてもよい。代わりに、各レコードの最新のトランザクション又はバージョン（すなわち、各レコードの内容）は、ツリーの最高レベルに記憶し、ツリーのより下位レベルに以前のバージョン又は以前のトランザクションを記憶してもよい。
【００６０】
中央構成要素７００への及び／又はそこから得られた情報は、コンピュータ６００がコンピュータ８００と情報を共有しないように、各コンピュータに対して分離されてもよい。代わりに、又は加えて、コンピュータ６００は、第２のコンピュータ８００と直接通信してもよい。
【００６１】
コンピュータ（例えば、ユーザ・コンピュータ、エンタープライズ・コンピュータなど）６００は、中央プロセッサ６４０、メモリ６７０（典型的にはＲＡＭを含むが、ＲＯＭ、フラッシュＲＡＭなども含み得る）、入力／出力コントローラ６８０、ディスプレイ・アダプタを介したディスプレイ又はタッチスクリーンなどのユーザ・ディスプレイ６２０、１つ以上のコントローラ及び関連するユーザ入力又はキーボード、マウス、ＷｉＦｉ／セルラ無線、タッチスクリーン、マイクロホン／スピーカなどのようなデバイスを含み得るユーザ入力インターフェース６６０、ハード・ドライブ、フラッシュ記憶装置、ファイバ・チャネル・ネットワーク、ＳＡＮ装置、ＳＣＳＩ装置などのような固定記憶装置６３０、ならびに光ディスク、フラッシュ・ドライブなどを制御及び受信するように機能する取り外し可能媒体構成要素６５０と密接に結合され得る、バス６１０を含む。
【００６２】
バス６１０は、先に述べたように、中央プロセッサ６４０とメモリ６７０との間のデータ通信を可能にし、このデータ通信は、リードオンリ・メモリ（ＲＯＭ）又はフラッシュ・メモリ（いずれも図示せず）と、ランダム・アクセス・メモリ（ＲＡＭ）（図示せず）とを含んでもよい。ＲＡＭは、オペレーティング・システム及びアプリケーション・プログラムがロードされるメインメモリを含めることができる。ＲＯＭ又はフラッシュ・メモリは、コードの中でも、周辺構成要素との相互作用のような基本的なハードウェア動作を制御する基本入出力システム（ＢＩＯＳ）を含むことができる。コンピュータ６００に常駐するアプリケーションは、ハード・ディスク・ドライブ（例えば、固定記憶装置６３０）、光学式ドライブ、フロッピー・ディスク、又は他の記憶媒体６５０のようなコンピュータ読取可能媒体に記憶され、コンピュータ読取可能媒体を介してアクセスすることができる。
【００６３】
固定記憶装置６３０は、コンピュータ６００と一体であってもよく、又は別のインターフェースを介して分離されてアクセスされてもよい。ネットワーク・インターフェース６９０は、電話リンクを介して遠隔サーバに、インターネット・サービス・プロバイダ（ＩＳＰ）を介してインターネットに直接接続するか、又はＰＯＰ（Ｐｏｉｎｔ  ｏｆ  ｐｒｅｓｅｎｃｅ：存在点）又は他の技術を介してインターネットに直接ネットワーク・リンクを介して遠隔サーバに直接接続してもよい。ネットワーク・インターフェース６９０は、デジタル・セルラ電話接続、セルラ・デジタル・パケット・データ（ＣＤＰＤ）接続、デジタル衛星データ接続などを含む無線技術を使用してこのような接続を提供することができる。例えば、ネットワーク・インターフェース６９０は、図６に示されるように、コンピュータが、１つ以上のローカル、広域、又は他のネットワークを介して他のコンピュータと通信することを可能にする。
【００６４】
多くの他の装置又は構成要素（図示せず）は、同様の方法で接続されてもよい（例えば、データ・キャッシュ・システム、アプリケーション・サーバ、通信ネットワーク・スイッチ、ファイアウォール装置、認証及び／又は許可サーバ、コンピュータ及び／又はネットワーク・セキュリティ・システムなど）。逆に、図６に示されるすべての構成要素は、本開示を実施するために存在する必要はない。構成要素は、図示の方法とは異なる方法で相互接続することができる。図１０に示されるようなコンピュータの動作は、当技術分野において容易に知られており、本出願において詳細には検討されない。本開示を実装するためのコードは、メモリ６７０、固定記憶装置６３０、取り外し可能媒体６５０のうちの１つ以上のようなコンピュータ読取可能記憶媒体、又は遠隔記憶場所に記憶することができる。
【００６５】
図６は、開示された主題の実施例によるネットワーク構成例を示す。クラウド１２０２によって表されるネットワーク内の異なるノードにおける４つの別個のデータベース・システム１２００ａ〜１２００ｄは、ネットワーク・リンク１２０４介してユーザ（図示せず）によって互いに通信する。各データベース・システム１２００は、データベースの複数のインスタンスをホストするように動作可能であってもよく、各インスタンスは、特定のテナントに関連付けられたユーザに対してのみアクセス可能である。各データベース・システムは、ストレージ・エリア・ネットワーク（図示せず）、ロード・バランサ及びバックアップ・サーバ、ならびにファイアウォール、他のセキュリティ・システム、及び認証システムと共にコンピュータのクラスタを構成することができる。システム１２００のインスタンスのいくつかは、インスタンス内の記憶のためにデータを取り込み、提供するための、ユーザから又はコンピューティング要素（図示せず）から受信したトランザクションを処理し、コミットするライブ・インスタンス又はプロダクション・インスタンスであってもよい。
【００６６】
データベース・システム１２００ａ〜１２００ｄのうちの１つ以上は、いつでもオリジナル・テナント用のサンドボックスを作成することができる。例えば、オリジナル・テナントに関連付けられたデータベース・システム１２００ａ〜１２００ｄの１人以上の許可されたユーザは、データベース・システム１２００ａ〜１２００ｄの１つによってサンドボックスが作成されるよう要求することができる。このシステム、例えば１２００ｃは、図６のような少なくとも１つの記憶装置を含んでもよい。例えば、記憶装置は、メモリ６７０、固定記憶装置６３０、取り外し可能媒体６５０、中央構成要素７００及び／又は第２のコンピュータ８００に含まれる記憶装置、及び／又はデータベース・システム１２００ａ〜１２００ｄのうちの１つ以上に関連する１つ以上の記憶装置を含むことができる。オリジナル・テナントは、オリジナル・テナント識別子に関連付けられた少なくとも１つの記憶装置の不変の記憶域に記憶されたオリジナル・テナント・データを有することができる。サンドボックス作成時点におけるオリジナル・テナント・データを用いて、サンドボックス・テナントがアクセス可能なオリジナル・テナント・データの仮想スナップショットを作成することができる。新しい又は更新されたサンドボックス・テナント・データは、記憶装置又は他の場所（例えば、キャッシュ記憶システム、ネットワーク化された記憶装置等）に記憶することができ、サンドボックスの作成時に存在していたオリジナル・テナント・データを変更することなく変更することができ、また、オリジナル・テナント・データは、サンドボックス・テナント・データを変更することなく変更又は更新することができる。さらに、サンドボックス・テナント及びオリジナル・テナントのいずれも、サンドボックス・テナント及びオリジナル・テナントの後続の更新がＬＳＭ記憶装置の異なる部分に別々に記憶されるかもしれないので、仮想スナップショットのデータを変更することはできない。
【００６７】
仮想スナップショットは、サンドボックス・テナントの作成時にタイム・スタンプ又はその他の時間識別子を記載することによって作成することができる。その後、サンドボックス・テナントとオリジナル・テナントは、タイム・スタンプ前に記憶されたデータのプール内のキーに基づいて、適切なバージョンにアクセスすることにより、タイム・スタンプ前のデータのバージョンに対する主キー要求を解釈する。タイム・スタンプ後に作成又は更新されたデータにアクセスするそれぞれのテナントのキーは、サンドボックス・テナント又はオリジナル・テナントのみが作成した適切なデータにアクセスするために解釈される。代わりに、タイム・スタンプを使用するのではなく、データベース内の各トランザクションは、後続のトランザクション対して単調に増加する固有のトランザクション番号を有してもよく、システムは、タイム・スタンプの代わりに、直近に作成されたトランザクション識別子に注目してもよい。
【００６８】
図５〜図６に示すような１つ以上のサーバは、サンドボックス・テナント識別子を作成することができ、サンドボックス・テナント識別子をオリジナル・テナント・データの仮想スナップショット及びサンドボックス作成時点の後にサンドボックス・テナントによって作成されたサンドボックス・データに関連付けることによって、サンドボックス・テナントを作成することができる。サンドボックス作成時点以降にサンドボックス・テナントが作成したサンドボックス・データは、オリジナル・テナントがアクセスできない場合がある。サンドボックスの作成時点に続いて、図５〜図６に示すシステムは、記憶装置の不変の記憶域に記憶されたオリジナル・テナント識別子に関連する後続のオリジナル・テナント・データを作成することができる。この後続のオリジナル・テナント・データは、サンドボックス・テナントがアクセスできない場合がある。オリジナル・テナントは、不変の記憶域に記憶されているサンドボックス作成時点の前後に作成されオリジナル・テナント・データにアクセスすることができ、後続のサンドボックス・テナント・データは、不変の記憶域に記憶された他のテナント・データを変更しない新しいテナント・データとして作成することができる。
【００６９】
図５〜図６に示すシステムの１つ以上のサーバは、サンドボックス・テナントを示すキーをオリジナル・テナントを示すキーに動的マッピングすることによって、サンドボックス・テナントのキーによって識別された不変の記憶域からのデータ上で動作するサンドボックス・テナントを示すキーを含むクエリを受信することができる。例えば、キーは、上述のような、タイム・スタンプ又はシーケンス・インジケータを含んでもよい。サンドボックス・テナントに対して、サンドボックス・テナントがサンドボックス・テナントの作成前に作成されたデータにアクセスしようとしていることをタイム・スタンプ又はシーケンス識別子が示しているか否かを決定するために、データベース／システムによって、タイム・スタンプ又はシーケンス・インジケータが、検査されてもよい。その場合、キーは、オリジナル・テナントとサンドボックス・テナントの両方がアクセスできる適切なデータに動的マッピングされる。一方、リクエストのタイム・スタンプ又はシーケンス識別子が、テナントの作成後にデータが作成又は更新されたことを示す場合、リクエストはそのようにマッピングされず、代わりにサンドボックス・テナントのみがアクセス可能な適切なトランザクションにアクセスする。
【００７０】
図５〜図６に示されるシステムの１つ以上のサーバは、サンドボックス・テナントを示すキーの動的マッピングに基づいて、少なくとも１つの記憶装置（例えば、中央構成要素７００、第２のコンピュータ８００、及び／又はデータベース・システム１２００ａ〜１２００ｄに関連する記憶装置）から、サンドボックス・テナントのための不変の記憶域からデータを受信することができる。
【００７１】
図５〜図６に示されるシステムの１つ以上のサーバは、マッピングされたキーに基づいて不変の記憶域からデータを検索するように、データ上で動作してもよい。サーバは、オリジナル・テナントのキーで示される不変の記憶域からデータをサンドボックス・テナントを示すキーのデータに変換し、変換されたデータ上で動作を実行することができる。実行された動作から生じるデータは、サンドボックス・テナントのキーに関連する装置、例えば、中央構成要素７００、第２のコンピュータ８００、及び／又はデータベース・システム１２００ａ〜１２００ｄの１つ以上に関連する記憶装置などの不変の記憶域内にあってもよい。
【００７２】
図５〜図６に示されるシステムの１つ以上のサーバは、オリジナル・テナントを示すキーを含むクエリ（例えば、図５に示されるコンピュータ６００等から）を受信することができ、オリジナル・テナントに対するキーによって識別される少なくとも１つの記憶装置の不変の記憶域からのデータ上で動作することができる。１つ以上のサーバは、サンドボックス・テナントを示すキーの動的マッピングに基づいて、サンドボックス・テナント用の少なくとも１つの記憶装置から不変の記憶域からのデータを受信する。図５〜図６のサーバは、サンドボックス・テナントを削除するための動作を（例えば、図５に示されるコンピュータ６００等から）受信することができる。図５〜図６の１つ以上のサーバは、少なくとも１つの記憶装置（例えば、中央構成要素７００、第２のコンピュータ８００、及び／又はデータベース・システム１２００ａ〜１２００ｄに関連する記憶装置）の不変の記憶域から、オリジナル・テナント・データを変更することなく、サンドボックス・テナントに関連するキーを削除することができる。
【００７３】
いくつかの実装形態では、図５〜図６のサーバは、不変の記憶域に記憶された物理データを削除することなく、不変の記憶域（例えば、中央構成要素７００、第２のコンピュータ８００、及び／又はデータベース・システム１２００ａ〜１２００ｄに関連する記憶装置）からキー範囲を削除することができる。図５〜図６のサーバは、サンドボックス作成時点以降、不変の記憶域内のサンドボックス・テナント・データに変更がない場合に、それらに関連付けられたテナント・マッピングを有するサンドボックス・テナント・データの不変の記憶域からエクステント参照を削除することができる。図５〜図６のサーバは、オリジナル・テナント・データの既存のエクステント参照を置き換えるように、サンドボックス・テナント・データの削除されたエクステント参照を含まないように、不変の記憶域でサンドボックス・テナント・データに変更がある場合、サンドボックス・テナント・データのキー範囲に対するエクステント参照を不変の記憶域から削除してもよい。
【００７４】
いくつかの実施例では、図５〜図６に示される１つ以上のサーバは、ログ構造化マージ・ツリー・データ構造を使用して、少なくとも１つの記憶装置（例えば、中央構成要素７００、第２のコンピュータ８００、及び／又はデータベース・システム１２００ａ〜１２００ｄに関連する記憶装置）の不変の記憶域にデータを記憶することができる。
【００７５】
開示された主題のシステム及び方法は、単一のテナント及び／又は複数テナントのシステム用であってもよい。マルチテナント・システムは、様々なテナント、例えば、ユーザ、ユーザのグループ、又は組織が、様々なテナント間で共有され得るサーバ・システム上のソフトウェア・ツール又はインスタンスを介して、サーバ・システム上の自己のレコードにアクセスすることを可能にし得る。各テナントのレコード内容は、当該テナントのためのデータベースの一部とすることができる。複数テナントのレコード内容はすべて同一のサーバ・システム内に一緒に保存することができるが、各テナントは当該テナントに属する、又は当該テナントが作成したレコード内容にのみアクセスすることができる。これにより、サーバ・システムは、各テナントのレコード内容を別々に、例えば、別々のサーバ又はサーバ・システムに記憶することなく、マルチテナントを可能にすることができる。テナントのためのデータベースは、例えば、リレーショナル・データベース、階層データベース、又は他の適切なデータベース・タイプであってもよい。サーバ・システムに記憶されたすべてのレコードは、例えばＬＳＭツリーを含む任意の適切な構造で記憶されてもよい。
【００７６】
本明細書に開示されるようなレコードは、マルチテナント・システムの場合、キー値のペアによって識別され得る。上述の実施例において、データベースはテナントの概念を持たくなくてもよい。データベース内のテナントは、ユーザがデータベース・システムの許可されたユーザに関連付けられたテナントに対する閲覧、アクセス、及び／又は動作を実行できるように、１つ以上の仮想オーバーレイによって作成されてもよい。この値は、例えば、リレーショナル・データベースのテーブルの行の内容、リレーショナル・データベースのテーブルの行の識別、又は任意の他の適切な値であり得る。キーは、レコードの識別子であってもよく、例えば英数字の連続のような任意の適切な形式であってもよい。キーの一部は、レコードの内容に関する情報を提供することがある。例えば、キーの一部はテナント識別子であってもよく、これはレコードの内容が属するテナントを一意に識別してもよい。キーの他の部分は、例えば、レコードの値が行の内容である場合、テーブル番号と行の識別、又テーブル番号、テーブル上のインデックス番号、及び値が行の識別である場合のインデックス付き列の識別を識別することができる。
【００７７】
さらに、マルチテナント・システムは、各ノードでコンピューティング・システムを有するネットワーク全体に分散されたサーバ・システム上に種々のテナント・インスタンスを有することができる。各テナントのライブ又はプロダクション・データベース・インスタンスは、そのトランザクションを１台のコンピュータ・システムでのみ処理してもよい。そのインスタンスのトランザクションを処理するためのコンピューティング・システムは、他のテナントに対する他のインスタンスのトランザクションを処理することもできる。
【００７８】
より一般的には、現在開示されている主題事項の様々な実施例は、コンピュータで実現されるプロセス及びそれらのプロセスを実行するための装置の形態を含んでもよく、又はそのような形態で実装されてもよい。また、実装は、フロッピー・ディスケット、ＣＤ−ＲＯＭ、ハード・ドライブ、ＵＳＢ（ユニバーサル・シリアル・バス）ドライブ、又は任意の他の機械可読記憶媒体のような、非時的な及び／又は有形の媒体に実装される命令を含むコンピュータ・プログラム・コードを有するコンピュータ・プログラム製品の形態で実装されてもよく、コンピュータ・プログラム・コードがコンピュータにロードされ、実行されるとき、コンピュータは、開示された主題の実施例を実施するための装置となる。また、実装は、例えば、記憶媒体に記憶されているか、コンピュータにロードされているか、及び／又はコンピュータによって実行されているか、又は電気配線若しくはケーブル配線を介して、光ファイバを介して、又は電磁放射を介して何らかの伝送媒体によって送信されているかにかかわらず、コンピュータ・プログラム・コードの形態で実行されてもよく、コンピュータ・プログラム・コードがコンピュータにロードされ、コンピュータによって実行されるとき、コンピュータは、開示された主題の実施例を実施するための装置となる。汎用マイクロプロセッサで実施されるとき、コンピュータ・プログラム・コードのセグメントが、特定の論理回路を作り出すようにマイクロプロセッサを構成する。いくつかの構成では、コンピュータ読取可能記憶媒体上に記憶された１組のコンピュータ読取可能命令は、汎用プロセッサによって実行されてもよく、命令は汎用プロセッサ又は汎用プロセッサを包含する装置を命令を実装又は実行するように構成された専用デバイスに変形してもよい。実装は、汎用マイクロプロセッサ及び／又はハードウェア及び／又はファームウェアにおいて開示された主題の実施例に従って技術の全部又は一部を実施する特定用途向け集積回路（ＡＳＩＣ）のような、プロセッサを含むハードウェアを用いて実現することができる。プロセッサは、ＲＡＭ、ＲＯＭ、フラッシュ・メモリ、ハード・ディスク、又は電子情報を記憶することができる任意の他の装置などのメモリに結合されてもよい。メモリは、開示された主題の実施例に従って技術を実行するようにプロセッサによって実行されるように構成された命令を記憶することができる。
【００７９】
上述の説明は、説明の目的で、特定の実施例を参照して記載されている。しかしながら、上記の例示的な議論は、包括的であること、又は開示された主題の実施例を開示された正確な形式に限定することを意図するものではない。上記の教示を考慮すると、多くの修正及び変形が可能である。実施例は、開示された主題の実施例の原理及びそれらの実用的応用を説明するために、選択され、説明され、それによって、当業者が、意図される特定の用途に適している種々の修正を施して、これらの実施例ならびに種々の実施例を利用することを可能にする。
【図１】
2020502626.tif 000003
【図２Ａ】
2020502626.tif 000004
【図２Ｂ】
2020502626.tif 000005
【図３Ａ】
2020502626.tif 000006
【図３Ｂ】
2020502626.tif 000007
【図４Ａ】
2020502626.tif 000008
【図４Ｂ】
2020502626.tif 000009
【図５】
2020502626.tif 000010
【図６】
2020502626.tif 000011
【国際調査報告】
2020502626.tif 000012
2020502626.tif 000013