JP7090606B2 - データベース・システムにおけるテスト・データの形成及び動作 - Google Patents

データベース・システムにおけるテスト・データの形成及び動作 Download PDF

Info

Publication number
JP7090606B2
JP7090606B2 JP2019523038A JP2019523038A JP7090606B2 JP 7090606 B2 JP7090606 B2 JP 7090606B2 JP 2019523038 A JP2019523038 A JP 2019523038A JP 2019523038 A JP2019523038 A JP 2019523038A JP 7090606 B2 JP7090606 B2 JP 7090606B2
Authority
JP
Japan
Prior art keywords
tenant
data
sandbox
original
storage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019523038A
Other languages
English (en)
Other versions
JP2020502626A5 (ja
JP2020502626A (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 JP2020502626A publication Critical patent/JP2020502626A/ja
Publication of JP2020502626A5 publication Critical patent/JP2020502626A5/ja
Application granted granted Critical
Publication of JP7090606B2 publication Critical patent/JP7090606B2/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/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3696Methods or tools to render software testable
    • 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
    • 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/24Querying
    • G06F16/245Query processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)

Description

テスト・システムは、典型的には、アプリケーションのために形成され、プロダクション・システムとは分離される。「サンドボックス(sandboxes)」と呼ばれるこのようなシステムは、アプリケーションの新しい特徴及びバージョンをテストするために使用することができる。既知のシステムでは、テストがプロダクション・データを破壊するだろうためライブ・プロダクション・データをサンドボックス化に使用することはできない。そのため、顧客データのコピーを別々に作成し、テスト及び開発に使用する。典型的なサンドボックス・システムのためのデータベースの個別のコピーの作成は時間がかかり、かなりの量の計算資源を消費し、エラーを起こしやすく、かなりのデータ記憶資源を占める可能性がある。多くの場合、すべてのデータを単一のトランザクションでコピーすることは実用的ではないため、コピーされたデータはトランザクション上で一貫性がない。その場合、テストに使用されるサンドボックス・データは正確でないかもしれないので、アプリケーションのテストは、アプリケーションの特徴の運用上の機能を決定するのに成功しないかもしれない。場合によっては、一貫性のないデータは、サンドボックスを使用する前に調整することができるが、それは時間がかかり、かなりのプロセッサ及びメモリ・リソースを必要とすることがある。
開示された主題のさらなる理解を提供するために含まれる添付の図面は、本明細書に組み込まれ、本明細書の一部を構成する。図面はまた、開示された主題事項の実施例を例示し、詳細な説明と共に、開示された主題の実施例の原理を説明するのに役立つ。開示された主題事及びそれが実施され得る種々の方法についての基本的な理解のために必要であるような、より詳細な構造的詳細を示す試みは行われない。
開示された主題の実施例に従って、サンドボックス・テナント・データのためのサンドボックスを作成し、オリジナル・テナントのための後続の不変のオリジナル・テナント・データを作成する例示的な方法を示す。
開示された主題の実施例に従って、テナント識別子を動的マッピングすることによって、クエリを受信し、不変の記憶域からのデータ上で動作させる例示的な方法を示す。
開示された主題の実施形態に従って、不変の記憶域からのデータを読取り及び変換し、変換されたデータに対して動作を行う例示的な方法を示す。
開示された主題の実施例に従って、仮想化層を用いてデータを記憶及び検索する例示的なシステム及び方法を示す。
開示された主題の実施例に従って、データを変換することによって、データベース・システムのサンドボックスからデータを読み出すことを示す。
図4A~図4Bは、開示された主題の実施例に従って、サンドボックスに関連して使用され得るシステム・アーキテクチャの一例を示す。 図4A~図4Bは、開示された主題の実施例に従って、サンドボックスに関連して使用され得るシステム・アーキテクチャの一例を示す。
開示された主題の実施例によるコンピュータを示す。
開示された主題の実施形態によるネットワーク構成を示す。
開示された主題の実施例は、プロダクション・データを複製することなく、又は複製されたプロダクション・データ上で動作することなく、データベース・システムの1以上のテナントに関連する1以上の許可されたユーザからの入力に基づいて、サンドボックスを作成し、実行することができる。このようなサンドボックスは、プロセッサ・リソース、データ記憶及び永続リソース、及び/又はデータ経路(例えば、通信ネットワーク)リソースに関して、既知のサンドボックスよりもはるかに低いコストでより迅速に確立することができる。開示されたシステムは製造データを読み取るので、本質的に正確であり、テストされるデータに関して整合性チェック又は他の是正措置を取る必要はない。また、テストされるデータの完全性は、既知のサンドボックス実装よりも優れている可能性があるため、アプリケーションに対してより正確なテスト結果を得ることができる。
サンドボックスの実装において、データベース・システムの1つ以上のテナントに関連付けられた1つ以上の許可されたユーザ(authorized users)は、データベースのためのサンドボックス・テナントを作成することができる。データベース・システムの許可されたユーザは、データベース・システムの1つ以上のテナントに対するセキュリティ・アクセス権を有するユーザであってもよい。例えば、ユーザは、パスワード及び/又は他の情報(例えば、暗証番号(security code)、バイオインフォマティクスなど)をデータベース・システムに提供することができ、これによって、ユーザが提供された情報に基づいて許可された使用者であるか否かを決定することができる。提供された情報がデータベース・システムの記憶された情報と一致する場合、ユーザは、許可されたユーザであると判断されてもよく、データベース・システムへのアクセスを許可されてもよい。
サンドボックス・テナントは、サンドボックス・テナント・キーに関連するデータにアクセスすることができ、一方、(サンドボックス以外の)オリジナル・テナントは、オリジナル・テナント・キーに関連するデータにアクセスすることができる。テナント(例えば、オリジナル・テナント、サンドボックス・テナントなど)に関連するキーの範囲は、テナントのネームスペースの全部又は一部であり得る。通常、あるテナントは別のテナントのネームスペースにアクセスできない。しかしながら、記載された主題の実施例において、ハードウェアとソフトウェアの組み合わせは、特定のサンドボックス・テナント・キーとオリジナル・テナント・キーとの間の対応(correspondence)を生成して、サンドボックス・テナントがオリジナル・テナントに関連した時点のデータへの読み取りアクセスを提供することができる。このようにして、サンドボックス・テナントは、オリジナル・テナント・データをサンドボックス・テナントのネームスペースにコピーする必要はなく、オリジナル・テナント・データを使用することができる。この時点のデータは、サンドボックスでアプリケーションをテストするために使用することができる。
サンドボックス・テナントが生成した新しいトランザクション・データは、オリジナル・テナントがアクセスできないサンドボックス・テナント・ネームスペースに書き込むことができる。オリジナル・テナントが作成した新しいトランザクション・データは、サンドボックス・テナントがアクセスできないオリジナル・テナント・ネームスペースに書き込むことができる。このようにして、新しいサンドボックス・テナント・データは、オリジナル・テナント(プロダクション)データを破壊せず、新しいオリジナル・テナント・データ(例えば、後続の不変のオリジナル・テナント・データと呼ばれる)は、アプリケーションをテストするためにサンドボックスによって読み書きされるテスト・データを破壊しない。実装は、レコードの永続的な内容を保存するリレーショナル・データベース、例えば、ログ構造化マージ(LSM:Log Structured Merge)ツリーで使用できる。
この構成によると、開示された実施例のデータベース・システムの1つ以上のテナントに関連する許可されたユーザは、従来のサンドボックス・システムによって使用されるデータ記憶装置及び永続リソース、プロセッサ・リソース、及び/又はデータ経路(例えば、通信ネットワーク)リソースのほんの一部のみを使用するサンドボックスをより迅速に作成し、実行することができる。
一般に、アプリケーションはプロダクション・システムのサーバ上で実行することができ、テスト・システムはプロダクション・システムから分離することができる。テスト・システムは、アプリケーションの新しい特徴及び/又はバージョンをテストするために使用されてもよい。プロダクション・システム・アプリケーションは、企業又は組織のサーバ上で(すなわち、アプリケーションを「オンプレミス」で)実行され、又はクラウドベースのコンピューティング環境で(例えば、サーバが企業又は組織のサーバからリモートである)アプリケーションを実行することによって実行される。
開示された主題の実施例は、サンドボックスを作成するためにデータベース・システムの1以上のテナントに関連する許可されたユーザのためのシステム及び方法を提供し、それらは、プロダクション・データを変更することなく、プロダクション・データに基づいてサンドボックス・データを作成することによって、テスト及び開発のために少なくとも部分的な会社データ、組織データ、及び/又は顧客データ(すなわち、プロダクション・データ)を使用する。一貫して使用されるように、顧客データは、会社データ及び/又は組織データの任意の部分を指すことができる。
アプリケーションの1つ以上の特徴は、サンドボックス・データを使用してテストされてもよい。アプリケーションの機能がテストされると、サンドボックスはプロダクション・データに影響を与えずに削除できる。サンドボックス・データへの参照(例えば、ポインタ)を削除することにより、サンドボックスを削除することができる。サンドボックス削除動作における参照の削除は、瞬時に行われることがあり、従来のサンドボックス化システムに比べて、プロセッサ、データ記憶、及び/又はデータ経路のリソースの使用がより少ない。いくつかの実施例では、サンドボックス・データの参照は、参照を維持するためにデータ・マージ動作で前方へコピーされないので、従って、サンドボックスへの参照はもはや有効でなく、サンドボックスは効果的に削除され得る。
従来のシステム及び方法により、顧客データをサンドボックス化するプロセスは、宛先データベース・インスタンス上にサンドボックスのための新しいテナントを作成することを含む。テナント・データはターゲット・データベース・インスタンスにコピーされ、テナントはソース・インスタンス上で「ライブ(live)」である。従来のシステム及び方法によって、コピーされたデータがトランザクション的に整合しているかどうかを判定するために、整合性チェック(consistency check)を実行する必要がある。整合性チェックが完了すると、テナントは、例えばサンドボックスを含み得る宛先データベース・インスタンス上で起動することができる。
開示された実施例は、従来のサンドボックス技術における重要な制限を克服する。より具体的には、必要なデータをすべてコピーし、コピーしたデータがオリジナル・データ・セットと整合しているかどうかを確認するのに時間がかかるので、従来のサンドボックスの作成は、遅い。このような従来のシステム及び方法はまた、リソースを消費し(すなわち、データのセット全体をコピーするために相当量の計算、データ経路、ネットワーク、及び/又は記憶リソースを必要とする)、エラーを生じやすい。例えば、データが正しくコピーされない、データの欠落部分があるかもしれない、又はデータが破壊されるかもしれない、などである。すなわち、従来のシステムと方法を用いてサンドボックスを作るには、テナントのすべての行を新しいサンドボックス・テナントにコピーすることを伴う。行毎のコピーは、ソース・データベースとターゲット・データベースの両方において、遅くリソース集約的であり、テナントの記憶を実質的に2倍にする可能性がある。また、テナント・データをすべて単一のトランザクションでコピーすることは現実的ではないため、サンドボックスが顧客に提供される前に、一貫性のないデータを調整する複雑なプロセスが存在する可能性がある。
開示された主題の実施例において、従来のサンドボックス化システムと比較して、より迅速にサンドボックスを生成し、実質的により少ない記憶スペースを使用することができるシステム及び方法が提供される。開示された主題のシステム及び方法は、標準的なサンドボックス化方法を使用するときに実行される必要があり得るような、エラーチェックを実行する必要なしに、完全に整合的であり得るデータを有するサンドボックスを生成する。
以下に詳細に説明するように、開示された主題の実施例は、テナント識別子(すなわち、「テナントID」)をルートとした単一のキー空間であるLSMツリーのような不変の(変更不可能な)記憶装置(immutable storage)を使用し、持続性仮想化(persistence virtualization)を使用することによって、サンドボックスを実装することができる。持続性はエクステントで構成される場合がある。当技術分野で理解され、本明細書で使用されるように、「エクステント(extent)」は、データを記憶するために使用され得る記憶媒体内で典型的に連続する記憶領域を指す。エクステントは不変であってもよく、キーによって順序付けられてもよい。すなわち、エクステントは、それらが作成された後に修正されない可能性があり、記憶媒体内のエクステントに関連する領域及びデータが更新されないが、将来削除される可能性があるという点で不変であり得る。例えば、サンドボックス・データでもはや参照されないエクステントは、参照を保持するためにデータ・マージ動作で参照を前方にコピーされない可能性があるため、削除されてもよい。すなわち、サンドボックスとそのエクステントは、もはやサンドボックスへの有効な参照がなくなり、効果的に取り除くことができる。新しいデータをデータベースに追加したり、新しいエクステントを作成したりできる。エクステントは、分散ファイル・システムに類似した共有記憶装置に記憶できる。
エクステント参照(extent reference)は、物理記憶装置(例えば、記憶装置(storage device))に記憶される物理的エクステントの論理参照として使用され得、そして物理記憶装置へのアクセスを仮想化するために使用され得る。開示された主題のシステム及び方法に従ってサンドボックスを作成するために、ソース・テナントに関連するデータベース・システムの許可されたユーザは、ソース(すなわち、オリジナル・テナント)からターゲット(すなわち、新しいサンドボックス・テナント)までのキー範囲内のテナントIDを変換する指示とともに、ソース・テナントのキーを含む各エクステントに対して新しいエクステント参照を追加することを要求することができる。この変換(translation)は、新しいサンドボックス・テナントに関連するユーザから生成された要求によって発行された特定の読み取り動作を、ある時点で、オリジナル・テナント・データにマッピングすることができる。その時点のデータは、キー範囲で区切ることができる。オリジナル・テナントによって書かれた後続のトランザクションは、トランザクションのために参照される時点のデータに影響を及ぼさない可能性がある。サンドボックス・テナントによる書き込み動作は、オリジナル・テナント・データとは異なるキー(サンドボックス・テナント・キー)の下に記憶される可能性があるため、サンドボックス書き込み動作は任意のオリジナル・データを破壊しない。これは、メタデータの変更とメタデータのコピーのみを必要とし、基になるデータをコピーする必要がないため、サンドボックスの迅速な形成を可能にする。これは、テナント・データをコピーし、サンドボックスのための新しい場所にそれを保存し、データが正確にコピーされているかどうかを判定するためにかなりのリソースを必要とする典型的なサンドボックス・システムに対して望ましいことがある。従来のサンドボックス化システム及び方法において使用されるリソースは、記憶装置の容量の増加、コピーを管理し、それが正確に実行されたか否かを決定する際のプロセッサのオーバーヘッド、コピー及び精度をチェックするために必要な時間、などを含み得る。
開示された主題の実施例において、オリジナル・テナントと関連付けられたデータベース・システムの許可されたユーザに対して、その時点のオリジナル・テナントのためのサンドボックスを作成する方法が提供され、オリジナル・テナントは、オリジナル・テナント識別子と関連付けられた不変の記憶域(immutable storage)に記憶されたオリジナル・テナント・データを有し、サンドボックス作成時点におけるオリジナル・テナント・データは、サンドボックス・テナントによってアクセス可能なオリジナル・テナント・データの仮想スナップショットであり、サンドボックス・テナント・データは、オリジナル・テナント・データを変更することなく変更でき、オリジナル・テナント・データは、サンドボックス・テナント・データを変更することなく変更可能である。この方法は、サンドボックス・テナント識別子を作成することを含み得る。仮想スナップショットは、基になるデータをコピーすることなく、あたかもオリジナル・テナント・データのコピーが行われたのと同様に、サンドボックス・テナントがオリジナル・テナント・データにアクセスできるように、オリジナル・テナント・データがサンドボックス・テナントに利用可能になるようなものであってもよい。サンドボックス・テナントは、サンドボックス・テナント識別子を、オリジナル・テナント・データの仮想スナップショット及びサンドボックス作成時点以降にサンドボックス・テナントが作成したサンドボックス・データに関連付けることによって、関連する許可ユーザの要求に応じて作成することができる。サンドボックス作成時点以降にサンドボックス・テナントによって作成又は変更されたサンドボックス・データは、オリジナル・テナントがアクセスできない場合がある。
サンドボックスの作成時点に続いて、新規又は更新されたオリジナル・テナント・データが作成され、不変の記憶域に記憶されたオリジナル・テナント識別子に関連付けられてもよい。この後続の新規又は更新されたオリジナル・テナント・データに、サンドボックス・テナントにアクセスしているユーザは、アクセスできない場合がある。オリジナル・テナントの利用者は、不変の記憶域に記憶されるサンドボックス作成時点の前後の両方でテナント・データにアクセスすることができる。すなわち、オリジナル・テナントに関連付けられた許可されたユーザは、サンドボックスが作成される前と同じようにデータを読み書きできる。後続のオリジナル・テナント・データは、新規又は更新されたオリジナル・テナント・データとして書き込まれ、この新規又は更新されたデータは、不変の記憶域に記憶されたより古いオリジナル・テナント・データを変更しない。
開示された主題の実施例において、少なくとも1つの記憶装置を有するシステムが提供され、その結果、データベース・システム内のオリジナル・テナントに関連する1つ以上の許可されたユーザが、ある時点で、オリジナル・テナントのためのサンドボックスを作成することができる。これは、新しいサンドボックス・テナント識別子を作成することによって行われる。オリジナル・テナントは、オリジナル・テナント識別子に関連付けられた少なくとも1つの記憶装置の不変の記憶域にテナント・データを記憶することができる。サンドボックス作成時点のオリジナル・テナント・データは、実装がサンドボックス・テナントにアクセス可能にする不変のオリジナル・テナント・データの仮想スナップショットを提供するために使用することができる。すなわち、サンドボックス・テナントがオリジナル・テナント・データのコピーを作成したのと同じ方法でオリジナル・テナント・データにアクセスできるように、オリジナル・テナント・データをサンドボックス・テナントに利用可能にすることができる。同様に、オリジナル・テナントも同じオリジナル・テナント・データにアクセスすることができる。また、仮想スナップショットの基になるデータが不変であるため、この仮想スナップショットを変更することはできない。
しかしながら、オリジナル・テナント・データ又はサンドボックス・テナント・データに提示された変更及び/又は追加は、オリジナル・テナント・データを上書き又は他の方法で置き換えるために記憶されない。その後、オリジナル・テナント又はスナップショット・テナントのいずれかに関連する許可されたユーザによって行われた変更及び/又は追加は、仮想スナップショットを変更することなく記憶することができる。むしろ、オリジナル・テナントに関するデータは不変のエクステント(immutable extents)で記憶することができ、サンドボックスのテナントに関するデータは本明細書にさらに詳細に開示されるように、別個の不変のエクステントで記憶することができる。これらの付加的なエクステントへのポインタ等のメカニズムは、サンドボックス・テナント・データを変更することなく、オリジナル・テナント・データを変更及び/又は増加することを可能にし得る。システムは、サンドボックス・テナント識別子を作成することができ、サンドボックス・テナント識別子を、テナント・データの仮想スナップショットへのアクセス、及びサンドボックス作成時点の後にサンドボックス・テナントの許可されたユーザによって作成されたデータ(例えば、アプリケーションに及び/又はデータベース・システムによってなど)と、関連付けることによって、サンドボックス・テナントを作成することができる。サンドボックスのテナント及び/又はサンドボックスの作成時点以降にサンドボックスのテナントに関連付けられたデータベース・システムの許可されたユーザによって作成されたデータは、オリジナル・テナントにとってアクセス不可能である可能性がある。サンドボックス作成時点に続いて、システムは、少なくとも1つの記憶装置の不変の記憶域に記憶されたオリジナル・テナント識別子に関連する不変のテナント・データを作成することができる。後続の不変のオリジナル・テナント・データは、サンドボックスのテナントがアクセスできない場合がある。オリジナル・テナント及び/又はオリジナル・テナントに関連するデータベース・システムの許可されたユーザは、不変の記憶域に記憶されているサンドボックス作成時点の前後の両方で作成されたオリジナル・テナント・データに、アクセスすることができる。後続の不変のオリジナル・テナント・データは、不変の記憶域に記憶された他のテナント・データ(例えば、オリジナル及びサンドボックス・テナント・データ)を変更しない新しいオリジナル・テナント・データとして作成される。データベース・システムのオリジナル・テナントに関連付けられた許可されたユーザは、後続の不変のオリジナル・テナント・データ及び新規のオリジナル・テナント・データにアクセスすることができる。
図1は、開示された主題の実施例に従って、サンドボックスを作成し、後続の不変のテナント・データを作成する例示的な方法10を示す。
特に、方法10は、ある時点で、オリジナル・テナントのためのサンドボックスを作成するために、データベース・システムのオリジナル・テナントに関連付けられた許可されたユーザによって使用され得る。方法10は、以下に詳細に説明するように、図3A~図6に示されるシステムに関連して使用することができる。オリジナル・テナントは、テナント識別子に関連付けられた不変の記憶域(例えば、図3A~3Bに示される物理記憶装置、図5に示される第2のコンピュータ800の記憶装置810、図6のデータベース・システム1200a~dなど)に記憶されたオリジナル・テナント・データを有することができる。方法10において、サンドボックス作成時点におけるサンドボックス・テナント・データは、オリジナル・テナント・データの仮想スナップショットであってもよく、サンドボックス・テナントがアクセス可能であってもよい。オリジナル・テナント・データを変更することなくサンドボックス・テナント・データを変更することができ、サンドボックス・テナント・データを変更することなくオリジナル・テナント・データを変更することができる。スナップショットは、オリジナル・テナントとサンドボックスの両方が、データに対して同じ不変のデータ(又はサンドボックスの作成時点で存在していたデータのバージョン)を使用するという点で、仮想的であってもよい。
動作12でサンドボックス・テナント識別子が作成されてもよい。サンドボックス・テナント識別子は、サーバ、クラウド・サーバ、及び/又はデータベースなどのデータベース・システムによって作成されてもよい。例えば、識別されるサンドボックス・テナントは、図3A~3Bに示すシステム100、図4Aに示すサーバ502及び/又はサーバ504、図5に示す中央構成要素700及び/又は第2のコンピュータ800、及び/又は図6に示すデータベース・システム1200a~1200dによって作成されてもよい。
動作14において、データベース・システムは、サンドボックス・テナント識別子をオリジナル・テナント・データの仮想スナップショットに関連付けることによって、サンドボックス・テナントを作成することができる。サンドボックス・テナントは、データベース・システムの許可されたユーザと関連付けられてもよい。サンドボックス・テナント識別子は、サンドボックス作成時点以降にサンドボックス・テナントによって作成されるサンドボックス・データと関連付けることができる。サンドボックス作成時点以降にサンドボックス・テナントが作成したサンドボックス・データは、オリジナル・テナントがアクセスできない場合がある。
動作16において、サンドボックス作成時点に続いて、データベース・システムは、不変の記憶域(例えば、図3A~3Bに示される物理記憶装置、図5に示される第2のコンピュータ800の記憶装置810、図6のデータベース・システム1200a~dなど)に記憶されたオリジナル・テナント識別子に関連する後続のオリジナル・テナント・データを作成することができる。後続のオリジナル・テナント・データは、オリジナル・テナントに関連付けられた許可されたユーザによってデータベース・システムによって作成されてもよい。例えば、オリジナル・テナントに関連付けられた許可されたユーザによって制御される1つ以上のアプリケーションは、後続のオリジナル・テナント・データを作成する1つ以上の動作を実行することができる。後続の不変のオリジナル・テナント・データは、サンドボックス・テナントがアクセスできない場合がある。すなわち、オリジナル・テナントは、不変の記憶域に記憶されるサンドボックス作成時点の前後の両方で作成されたオリジナル・テナント・データにアクセスすることができる。後続の不変のオリジナル・テナント・データは、不変の記憶域に記憶されたより古いオリジナル・テナント・データ(例えば、オリジナルとサンドボックス・テナント・データ)を変更しない新しいオリジナル・テナント・データとして書き込まれ、オリジナル・テナントは、サンドボックス・テナントによって作成又は拡張されたデータにアクセスできない。
図2Aは、開示された主題の実施例に従ってテナント識別子を動的マッピングすることによって、クエリを受信し、不変の記憶域からのデータ上で動作する例示的な方法20を示す。いくつかの実施例では、方法20は、上述し、図1に示す方法10に関連して使用することができる。動作21において、データベース・システムは、サンドボックス・テナントを示すキーを含むクエリを受信することができる。データベース・システムは、サーバ、クラウド・サーバ、及び/又はデータベース等であってもよい。例えば、クエリを受信するデータベース・システムは、図3A~3Bに示されるシステム100、図4Aに示されるサーバ502及び/又はサーバ504、図5に示される中央構成要素700及び/又は第2のコンピュータ800、及び/又は図6に示されるデータベース・システム1200a~1200dであり得る。クエリは、例えば、図5に示されるコンピュータ600によって生成されてもよい。
動作22において、主キー(primary key)が仮想サンドボックスの一部であるトランザクションを識別する場合、すなわち、検索されているレコードの内容はサンドボックスが作成される前に作成されたものである場合、データベース・システムは、サンドボックス・テナントを示す主キーをオリジナル・テナントを示す主キーに動的マッピングすることによって、サンドボックス・テナントのキーによって識別される不変の記憶域からのデータに対して動作することがでる。不変の記憶域は、図3A~3Bに示す記憶装置、図5に示す第2のコンピュータ800の記憶装置810、図6のデータベース・システム1200a~1200dなどであり得る。
図2Bは、開示された主題の実施例に従って、不変の記憶域からのデータを読み出し及び変換し、変換されたデータに対して動作を行う例示的な方法を示す。特に、図2Bは、図2Aに示され上述の方法20の動作22の一部であり得る例示的な動作を示す。動作24において、図2Bに示されるように、データベース・システムは、マッピングされたキーに基づいて不変の記憶域からデータを読み出すことができる。上述のように、データベース・システムは、図3A~図3Bに示されるシステム100、図4Aに示されるサーバ502及び/又はサーバ504、図5に示される中央構成要素700及び/又は第2のコンピュータ800、及び/又は図6に示されるデータベース・システム1200a~1200dであってもよく、不変の記憶域は、図3A~3Bに示される物理記憶装置、図5に示される第2のコンピュータ800の記憶装置810、図6のデータベース・システム1200a~1200dなどであってもよい。
動作26において、データベース・システムは、オリジナル・テナントのキーによって示される不変の記憶域からサンドボックス・テナントを示すキーにデータのキーを変換することができる。この変換動作では、データは不変の記憶域に残り、重複しないが、データはサンドボックス・テナントに関連付けられる。すなわち、サンドボックスのユーザにアクセス可能なサンドボックス・テナントがサンドボックスの作成前に作成されたデータにアクセスできるように、オリジナル・テナントのキーをサンドボックスのテナントのキーにマッピングする。しかしながら、サンドボックス・テナントが作成したデータのキーは変換されず、サンドボックス・テナントのみがアクセス可能で、オリジナル・テナントが利用できない範囲のデータを指し示すことがある。
データベース・システムは、動作28において変換されたデータ上で動作を実行することができ、実行された動作から生じるデータを、動作30においてサンドボックス・テナントのキーに関連付けられた不変の記憶域に記憶することができる。データベース・システムは、いくつかの実装例では、LSMツリーデータ構造を使用して、不変の記憶域にデータを記憶することができる。サンドボックスに関連するデータ上の動作は、例えば、テストされるアプリケーションの1つ以上の機能に基づくデータの操作が含まれる。すなわち、データは、テストされるアプリケーションのバージョン及び/又はテストされるアプリケーションに追加された新しい機能に基づいて操作され得る。しかしながら、テストされるデータに対する修正は、オリジナル・テナントのみに関連付けられたユーザはアクセスできない。操作されたデータは、サンドボックス・テナントのキーに関連付けられ、不変の記憶域に記憶される。いくつかの実装例では、図2Bに示される例示的方法20は、サンドボックス・テナントを示すキーの動的マッピングに基づいて、サンドボックス・テナントのための不変の記憶域からのデータを返すことを含むことができる。
図2Aの方法10を実行する際に、データベース・システムは、いくつかの実施例において、サンドボックス・テナントを示すキーを含むクエリを受信することができ、サンドボックス・テナントのためのキーによって識別される不変の記憶域からのデータ上で動作することができる。クエリは、サンドボックス・テナントに関連付けられたデータベース・システムの許可されたユーザから受信することができる。データは、サンドボックス・テナントを示すキーの動的マッピングに基づいて、サンドボックス・テナントのための不変の記憶域から返すことができる。
いくつかの実装例では、方法10に関連して使用されるデータベース・システムは、サンドボックス・テナントを削除するための動作を受信することができる。例えば、サンドボックス・テナントに関連付けられた許可されたユーザは、データベース・システムに削除要求を提供してもよい。要求を受信すると、データベース・システムは、オリジナル・テナント・データを変更することなく、サンドボックス・テナントに関連する少なくとも1つのキーを不変の記憶域から削除することができる。少なくとも1つのキーの削除は、不変の記憶域に記憶された物理データを削除することなく、キー範囲を不変の記憶域から削除することによって実行されてもよい。すなわち、キー範囲の1つ以上のキーに対する不変の記憶域への参照は削除されてもよいが、削除された参照に以前関連付けられたデータは、オリジナル・テナントに対するそのデータのためのキーも存在する場合、不変の記憶域に保持されてもよい。
サンドボックス・テナントを削除する動作を実行するとき、サンドボックス・テナントに関連付けられた少なくとも1つのキーを削除することは、サンドボックス・テナント・データに関連付けられたオリジナル・テナント・キー・マッピングを有するサンドボックス・テナント・データに対する不変の記憶域からエクステント参照を削除することを含み得る。この削除動作は、サンドボックス作成時点以降、不変の記憶域内のサンドボックス・テナント・データに変更がないとき、サンドボックス・テナントに対して行うことができる。
サンドボックス・テナントを削除する動作を実行する別の実装において、データベース・システムによる少なくとも1つのキーの削除は、サンドボックス・テナント・データのキー範囲に対する不変の記憶域からのエクステント参照の削除を含むことができる。上述の実施例とは対照的に、この削除動作は、不変の記憶域内のサンドボックス・テナント・データに変更があった場合に実行されてもよい。この動作は、サンドボックス・テナント・データの削除されたエクステント参照を含まないように、オリジナル・テナント・データの既存のエクステント参照を置き換えることもできる。
図3Aは、開示された主題の実施例による仮想化層を用いてデータを記憶及び検索する例示的なシステム及び方法を示す。システム100は、単一のコンピュータ装置であってもよく、又は複数の接続されたコンピューティング装置を含んでもよく、例えば、ラップトップ、デスクトップ、個々のサーバ、サーバ・クラスタ、サーバ・ファーム、又は分散型サーバ・システムであってもよく、又は仮想コンピューティング装置若しくはシステム、又は物理的及び仮想システムの任意の適切な組み合わせであってもよい。簡単にするために、プロセッサ、短期及び長期記憶装置、オペレーティング・システム、データベース管理システムの大部分などの構成要素は示されていない。サーバ・システム100は、コンピューティング・システム及びネットワーク・インフラストラクチャの一部であってもよく、又は他の方法では、サーバ・システム100に類似する他のサーバ・システムを含んでもよいより大きなサーバ・ネットワークを含むコンピューティング・システム及びネットワーク・インフラストラクチャに接続されてもよい。いくつかの実施例では、システム100は、図5に示されるコンピュータ600、中央構成要素700、及び/又は第2のコンピュータ800、及び/又は図6に示されるデータベース・システム1200a~1200dの1つ以上であってもよい。
システム100は、所定のレコードの不変バージョンとしてトランザクションを記憶することができる。サーバ・システムにすでに保存されているレコードの内容の不変バージョンは、その内容がサーバ・システムから削除されるまで(もしあれば)、変更されないことがある。すなわち、受信したトランザクションは、レコードの内容を変更する代わりに、サーバ・システムに保存されるレコードの内容の新しいバージョンを作成してもよい。従って、本明細書に開示されているようなレコード(例えば、異なる内容を有するレコード)の複数のバージョンが同一のキーを持つことが可能である。所定のレコードのバージョンに対して同一のキーを使用することにより、リレーショナル・データベースに記憶されたデータの変更が可能になることがある。そのため、物理的レコードの各バージョンは不変であり得え、すなわち、それは、削除されないか又は月、年、又は数十年であり得る任意の長い期間にわたって、削除されない。たとえば、レコードの以前のバージョンと同じキーを持つレコードの後のバージョンは、そのレコードのデータ値の変更(すなわち、レコードの内容の変更)を示すことがある。代わりに、トランザクションはレコードを作成したり、レコードを削除したりできるが(すなわち、コンテンツを作成したり、コンテンツを削除したり)、レコードの削除は、トランザクションを取り除かないかもしれない。
システム100のアクセス層105は、データベース記憶エンジン110を有してもよく、これは、コンピューティング装置(例えば、図5に示されるコンピュータ600及び/又は第2のコンピュータ800)からのデータベース・システム(例えば、図5に示される中央構成要素700及び/又は図6に示されるデータベース・システム1200a~1200d)のためのクエリを受け入れてもよい。例えば、データベース記憶エンジン110は、データベース・システム内のデータの第1のネームスペース内の組織に対するクエリを受信することができる。データベース記憶エンジン110は、データベース・システムに対するクエリを受信し、受信したクエリに関連するデータを読み出すために、サーバ・システム100上のハードウェアとソフトウェアの任意の適切な組み合わせとすることができる。
システム100は、エクステント参照(extent reference)120を有する仮想化層115を含むことができる。いくつかの実装例では、エクステント参照120は、図5に示される中央構成要素700及び/又は図6に示されるデータベース・システム1200a~1200dの一部であってもよい。エクステント参照120は、データベース記憶エンジン110と物理記憶装置127との間の仮想化層115として実行するために、サーバ・システム100上のハードウェアとソフトウェアの任意の適切な組み合わせであってもよい(例えば、エクステントは、後述するように、エクステント130の一部として記憶されてもよい)。物理記憶装置127は、半導体メモリ、ソリッド・ステート・ドライブ(SSD)、ハード・ディスク・ドライブ、光メモリ、光記憶装置、又は任意の他の適切な物理的データ記憶媒体、又はそれらの何らかの組み合わせであってもよい。
図3Aに示すように、エクステント参照120は、第1のネームスペースであってもよい。エクステント参照120は、仮想化層115を介してデータベース記憶エンジン110からクエリを受信し、データを見つけることができる。クエリは、少なくとも1つのテナントに関連付けられたデータベース・システムの許可されたユーザから受信してもよい。仮想化層115は、エクステントを記憶することができるシステム100の物理記憶装置127内のクエリの要求されたデータを見つけるように、クエリを解釈することができる。すなわち、仮想化層115は、クエリによって要求されたデータをエクステント130から読み出し、データベース記憶エンジン110にデータを返し、データベース・システムのクエリを行うことのできるコンピュータ・デバイスに提供することができる。
図3Bは、開示された主題の実施例に従ってデータのキーを変換することによって、データベース・システムのサンドボックスからデータを読み出すことを示す。図3Bのシステム100は、図3Aに示されるものと類似していてもよいが、図3Bは、以下に詳細に説明するように、仮想化層115の一部としてエクステント参照125を含んでもよい。
サンドボックスは、第1の(オリジナルの)テナント(すなわち、第1のネームスペース)のために作成されてもよい。例えば、少なくとも第1の(オリジナルの)テナントに関連付けられたデータベース・システムの許可されたユーザは、サンドボックス(すなわち、第2のネームスペース)を作成するコマンドをデータベース・システムに発行することができる。すなわち、第1のネームスペースのデータを使用することによって、第2のネームスペースが作成されてもよく、これは、エクステント参照125を形成してもよい。第1及び第2のネームスペースの両方のデータは、システム100の物理記憶装置127に記憶されてもよい。第1と第2のネームスペースは、全部又は一部が同じ記憶されたデータを参照することができる。
図3Bに示す例においてサンドボックスが作成された後、データベース記憶エンジン110は、第2のネームスペースに関連するデータに対して許可されたユーザからクエリを受信することができる。第2のネームスペースに対することができるエクステント参照125は、第2のネームスペースに関連するデータのクエリを受信することができる。この例では、サンドボックスは第2のネームスペースに対して作成されたが、物理記憶装置127に記憶されたデータは同じデータである。従って、仮想化層115は、データベース・システムの許可されたユーザから受信したクエリに基づいて、エクステント130内の第1のネームスペースのデータを見つけることができる。エクステント参照125に戻されるデータは、第1のネームスペースのデータである。仮想化層115は、第1のネームスペースから第2のネームスペース内のキーにキーをマッピングすることにより、第1のネームスペース・データを第2のネームスペース・データに変換することができる。図3Bに示すように、変換された第2のネームスペース・データは、エクステント参照125から仮想化層115を介してデータベース記憶エンジン110に提供されてもよい。データベース記憶エンジン110は、第2のネームスペース・データを、クエリが受信された許可されたデータベースのユーザのコンピューティング装置に返すことができる。
図3A~3Bに示される例では、エクステント参照は、クエリに応答してサンドボックス前データ(pre-sandbox data)又はサンドボックス後データ(post-sandbox data)を読み出すかどうかを決定するために使用されてもよい。全体を通じて開示されるように、仮想スナップショットは、エクステント参照の集合である。サンドボックスより前に作成されたデータは、オリジナル・テナント・データとのエクステントを示すエクステント参照を有することがある。新しいサンドボックス・データ(すなわち、サンドボックスの作成後に作成される後続のサンドボックス・テナント・データ)は、サンドボックス・キーを含むエクステント(すなわち、サンドボックスのキー範囲)を示すエクステント参照と関連付けることができる。サンドボックス・テナント・データ(すなわち、サンドボックスの作成時にサンドボックスに関連付けられたデータ)は、サンドボックスのキー範囲を含むことを示すエクステント参照に関連付けられてもよい。サンドボックス・テナント・データのエクステント参照は、オリジナル・キー(すなわち、サンドボックスの作成時に存在していたオリジナル・テナント・データのキー)及び追加の変換情報を有するエクステントを指し示すことができる。
例えば、図3Aに示すように、クエリは、アクセス層105によって受信されてもよい。アクセス層105は、クエリの中の述部に基づいて、クエリが組織のための第1のネームスペース(すなわち、オリジナル・テナントに関連するオリジナル・テナント・データ)のためのものであることを判定することができる。図3の例では、テナントを代表するクエリは、テナントを特定する述部(predicate specifying the tenant)を含むと仮定する。テナントを示す述部は、明示的であってもよく、ここで述部は、クエリがデータベース(例えば、図6に示されるデータベース1200a、1200b、1200c、及び/又は1200d)からの情報を検索する前に含まれてもよく、又は述部は、データベースとの接続が確立される方法で黙字的であってもよい。クエリが、オリジナル・テナント・データのエクステントを指しているエクステント参照に基づいて(図3Aに示されるように)、オリジナル・テナント・データのキー範囲内にある場合、アクセス層105は、仮想化層115に対し、クエリによって要求されたデータを物理記憶装置127から取得することを要求することができる。データを検索するために、仮想化層115のエクステント参照120は、物理記憶装置127のエクステント130を指し示すことができる。図3Aに関連して上述したように、物理記憶装置127に記憶されたデータは、指し示されたエクステントに基づいて検索され、クエリに応答して提供されてもよい。
クエリ内の述部が、図3Bの例に示されるように、サンドボックスのキー範囲(例えば、第2のネームスペース)に関連付けられる場合、アクセス層105は、クエリ内の述部が第2のネームスペース(すなわち、サンドボックス・テナントに関連付けられたデータ)に関連付けられているという決定に基づいて、仮想化層115がクエリによって要求されたデータを物理記憶装置127から取り出すことを要求することができる。クエリ内の述部(すなわち、サンドボックスのキー範囲)を含むエクステント参照125は、オリジナル・キー(例えば、第1のネームスペースのデータ)を有する物理記憶装置127内のエクステント130を指し示すことができる。エクステント130からの第1のネームスペースの返されたデータは、エクステント参照125に含まれる変換情報を使用することによって変換される。すなわち、第1のネームスペースに対して返されたデータは、エクステント参照125に含まれる変換情報と共に、第2のネームスペース・データに変換されてもよい。図3Bに関連して上述したように、第2のネームスペースのデータ(例えば、エクステント参照125に関連付けられたデータ)は、アクセス層105によって受信されたクエリに応答して、アクセス層105に返されてもよい。
図4A~図4Bは、開示された主題の実施例によるサンドボックスの形成に関連して使用され得るシステム500の一例を示す。特に、図4A~図4Bは、開示された主題の実施例による、複数のキーによるテナントの再マッピングを示す。システム500は、データベース・システム、サーバ・システム、クラウド・サーバ・システム等であってもよい。システム500は、サーバ502、サーバ504、ストア510、及びカタログ520を含むことができる。サーバ502、504は、同じ持続性(persistence)を有してもよく、又は互いに異なる持続性を有してもよい。サーバ502及び/又はサーバ504に関連するエクステントでデータのキー範囲を記憶するためのシステム500上のハードウェア及びソフトウェアの任意の適切な組み合わせであり得る。ストア510は、サーバ502に関連付けられ得るエクステント511、及びサーバ504に関連付けられ得るエクステント512を含むことができる。カタログ520は、データ・エクステント及びデータ・エクステント参照を記憶するためのシステム500上のハードウェア及びソフトウェアの任意の適切な組み合わせとすることができる。
図4Aに示す例では、サーバ502は、ストア510のエクステント511に関連付けることができ、エクステント511は、10、11、62及び98のテナントIDを持ち、各テナントID番号は、テナントID番号から始まるキーを有する。例えば、62のテナントIDは、キー範囲内の複数のキーを有してもよく、キーはすべて62で始まる。すなわち、この例では、62はキーの先頭部分であってもよく、完全なキーは異なる構成要素で構成され、テナントIDであってもよい。サーバ504は、テナントID33、34、44、及び66を有する関連エクステント512であってもよく、各テナントID番号は、テナントID番号から始まるキーを有する。すなわち、サーバ502に関連付けられたエクステント511は、キー(10、98)のキー範囲([最初のキー]、[最後のキー])を有してもよく、第2のサーバ504に関連付けられたエクステント512は、キーのキー範囲(33、66)を有してもよい。
カタログ520では、データ・エクステント522は、サーバ502及び504のデータ・エクステント511及び512にマッピングすることができる。例えば、データ・エクステント522では、エクステント511のIDは0x21であってもよく、キー開始は10であってもよく(すなわち、ストア510内のエクステント511のIDと一致する)、キー終了は98(すなわち、ストア510内のエクステント511のIDと一致する)であってもよい。同様に、データ・エクステント522内のサーバ504に対するエクステント512のIDは、0x88であってもよく、キー開始は、33であってもよく(すなわち、ストア510内のエクステント512のIDと一致する)、キー終了は、66であってもよい(すなわち、ストア510内のエクステント512のIDと一致する)。データ・エクステント参照524は、データ・エクステント(例えば、データ・エクステント522)に対する参照であってもよく、関連付けられたサーバ(例えば、サーバ502又は504)に関する情報を含んでもよい。データ・エクステント参照524の行525は、データ・エクステント522のID 0x21に対する同様の情報を含み得るが、0x21としてのEID (エクステントID(extent ID))を含み得、キー開始が10及びキー終了が98を有するサーバがサーバ502であることを示し得る。
図4Aに示される例では、データ・エクステント参照524は、サーバ502に関連付けられたエクステント511のテナントID 62がテナントID 63としてサンドボックス化される前のエクステントの状態を示す。サーバ502に関連付けられたエクステント511のテナントID 62を追加されるテナントID 63にマッピングするために、データ・エクステント参照524は、サーバ504への変更を反映してもよい。特に、図4Bに示されるように、行526及び528において、エクステント512(すなわち、0x88に対するEIDを有するエクステント)は、2つのキー範囲に分割されてもよい。データ・エクステント参照524は、行526の範囲(すなわち、エクステント512)がキー開始33及びキー終了44(すなわち、(33、44)のキー範囲及び行528のエクステント(すなわち、エクステント512)がキー開始66及びキー終了66(すなわち、(66、66)のキー範囲))を有し得るように、更新されてもよい。すなわち、エクステント512のキー範囲33~44は第1のセグメントにあり、キー66で始まり終わるキー範囲は第2のセグメントである。図4Bに示すように、サーバ504は、エクステント512において、(33、44)のキー範囲、ならびに(66、66)のキー範囲を指し示してもよい。
図4Bに示すように、行527は、データ・エクステント参照524の行526と行528との間に挿入されてもよい。行527は、エクステント511を有してもよく(すなわち、サーバ502のための行525のように、0x21のエクステントIDを有するエクステント)、キー開始63及びキー終了63を有してもよく、テナントID 62のテナントID 63へのマッピングを示してもよい。データ・エクステント参照524は、サーバ502に関連するキー範囲(10、98)と、サーバ504に関連するキー範囲(33、44)、(63、63)、及び(66、66)とを含んでもよい。すなわち、図4Aは、テナント62からテナント63へのマッピング前のデータ・エクステント参照524の状態を示してもよく、図4Bは、マッピング後のデータ・エクステント参照の状態を示してもよい。図4Bに示すように、サーバ504は、エクステント512のキー範囲(33、44)及びキー範囲(66、66)、ならびにエクステント511のキー範囲(62、62)を指し示すことができる。
現在開示されている主題の実施例は、種々の構成要素及びネットワーク・アーキテクチャにおいて実装され、それらによって使用される。図5は、現在開示されている主題の実施例を実装するのに適したコンピュータ600の例である。本明細書においてさらに詳細に検討するように、コンピュータ600は、複数のコンピュータのネットワーク内の単一のコンピュータであってもよい。図5に示すように、コンピュータ600は、中央又は分散構成要素700(例えば、サーバ、クラウド・サーバ、データベース、クラスタ、アプリケーション・サーバなど)と通信することができる。中央構成要素700は、記憶装置810を含むことができる第2のコンピュータ800などの1つ以上の他のコンピュータと通信することができる。第2のコンピュータ800は、サーバ、クラウド・サーバ等であってもよい。記憶装置810は、例えば、ハード・ディスク・ドライブ、ソリッド・ステート・ドライブ、光メディア、フラッシュ・メモリ、テープ・ドライブ、レジスタ、及びランダム・アクセス・メモリ等を含む、任意の適切な揮発性及び不揮発性物理記憶媒体の任意の適切な組み合わせ、又はそれらの任意の組み合わせを使用することができる。
データは、任意の適切なファイル・システム又は記憶スキーム又は階層を使用して、例えば、記憶装置810に任意の適切なフォーマットで記憶されてもよい。例えば、記憶装置810は、複数のレベルを有するログ構造化マージ(LSM)ツリーを使用してデータを記憶することができる。さらに、図5~図6に示されるシステムがマルチテナント・システムである場合、記憶装置は、テナントのためのデータベースの各インスタンス対して別個のログ構造化マージ・ツリーに組織化されてもよい。代わりに、特定のサーバ又はシステム上のすべてのレコードの内容は、単一のログ構造化マージ・ツリー内に記憶されてもよく、その場合、レコードのバージョンに関連する固有のテナント識別子を使用して、本明細書に開示されるように、各テナントのデータを区別してもよい。より最近のトランザクションは、ツリーの最高レベル又はトップ・レベルに記憶され、より古いトランザクションは、ツリーのより下位レベルに記憶されてもよい。代わりに、各レコードの最新のトランザクション又はバージョン(すなわち、各レコードの内容)は、ツリーの最高レベルに記憶し、ツリーのより下位レベルに以前のバージョン又は以前のトランザクションを記憶してもよい。
中央構成要素700への及び/又はそこから得られた情報は、コンピュータ600がコンピュータ800と情報を共有しないように、各コンピュータに対して分離されてもよい。代わりに、又は加えて、コンピュータ600は、第2のコンピュータ800と直接通信してもよい。
コンピュータ(例えば、ユーザ・コンピュータ、エンタープライズ・コンピュータなど)600は、中央プロセッサ640、メモリ670(典型的にはRAMを含むが、ROM、フラッシュRAMなども含み得る)、入力/出力コントローラ680、ディスプレイ・アダプタを介したディスプレイ又はタッチスクリーンなどのユーザ・ディスプレイ620、1つ以上のコントローラ及び関連するユーザ入力又はキーボード、マウス、WiFi/セルラ無線、タッチスクリーン、マイクロホン/スピーカなどのようなデバイスを含み得るユーザ入力インターフェース660、ハード・ドライブ、フラッシュ記憶装置、ファイバ・チャネル・ネットワーク、SAN装置、SCSI装置などのような固定記憶装置630、ならびに光ディスク、フラッシュ・ドライブなどを制御及び受信するように機能する取り外し可能媒体構成要素650と密接に結合され得る、バス610を含む。
バス610は、先に述べたように、中央プロセッサ640とメモリ670との間のデータ通信を可能にし、このデータ通信は、リードオンリ・メモリ(ROM)又はフラッシュ・メモリ(いずれも図示せず)と、ランダム・アクセス・メモリ(RAM)(図示せず)とを含んでもよい。RAMは、オペレーティング・システム及びアプリケーション・プログラムがロードされるメインメモリを含めることができる。ROM又はフラッシュ・メモリは、コードの中でも、周辺構成要素との相互作用のような基本的なハードウェア動作を制御する基本入出力システム(BIOS)を含むことができる。コンピュータ600に常駐するアプリケーションは、ハード・ディスク・ドライブ(例えば、固定記憶装置630)、光学式ドライブ、フロッピー・ディスク、又は他の記憶媒体650のようなコンピュータ読取可能媒体に記憶され、コンピュータ読取可能媒体を介してアクセスすることができる。
固定記憶装置630は、コンピュータ600と一体であってもよく、又は別のインターフェースを介して分離されてアクセスされてもよい。ネットワーク・インターフェース690は、電話リンクを介して遠隔サーバに、インターネット・サービス・プロバイダ(ISP)を介してインターネットに直接接続するか、又はPOP(Point of presence:存在点)又は他の技術を介してインターネットに直接ネットワーク・リンクを介して遠隔サーバに直接接続してもよい。ネットワーク・インターフェース690は、デジタル・セルラ電話接続、セルラ・デジタル・パケット・データ(CDPD)接続、デジタル衛星データ接続などを含む無線技術を使用してこのような接続を提供することができる。例えば、ネットワーク・インターフェース690は、図6に示されるように、コンピュータが、1つ以上のローカル、広域、又は他のネットワークを介して他のコンピュータと通信することを可能にする。
多くの他の装置又は構成要素(図示せず)は、同様の方法で接続されてもよい(例えば、データ・キャッシュ・システム、アプリケーション・サーバ、通信ネットワーク・スイッチ、ファイアウォール装置、認証及び/又は許可サーバ、コンピュータ及び/又はネットワーク・セキュリティ・システムなど)。逆に、図6に示されるすべての構成要素は、本開示を実施するために存在する必要はない。構成要素は、図示の方法とは異なる方法で相互接続することができる。図10に示されるようなコンピュータの動作は、当技術分野において容易に知られており、本出願において詳細には検討されない。本開示を実装するためのコードは、メモリ670、固定記憶装置630、取り外し可能媒体650のうちの1つ以上のようなコンピュータ読取可能記憶媒体、又は遠隔記憶場所に記憶することができる。
図6は、開示された主題の実施例によるネットワーク構成例を示す。クラウド1202によって表されるネットワーク内の異なるノードにおける4つの別個のデータベース・システム1200a~1200dは、ネットワーク・リンク1204介してユーザ(図示せず)によって互いに通信する。各データベース・システム1200は、データベースの複数のインスタンスをホストするように動作可能であってもよく、各インスタンスは、特定のテナントに関連付けられたユーザに対してのみアクセス可能である。各データベース・システムは、ストレージ・エリア・ネットワーク(図示せず)、ロード・バランサ及びバックアップ・サーバ、ならびにファイアウォール、他のセキュリティ・システム、及び認証システムと共にコンピュータのクラスタを構成することができる。システム1200のインスタンスのいくつかは、インスタンス内の記憶のためにデータを取り込み、提供するための、ユーザから又はコンピューティング要素(図示せず)から受信したトランザクションを処理し、コミットするライブ・インスタンス又はプロダクション・インスタンスであってもよい。
データベース・システム1200a~1200dのうちの1つ以上は、いつでもオリジナル・テナント用のサンドボックスを作成することができる。例えば、オリジナル・テナントに関連付けられたデータベース・システム1200a~1200dの1人以上の許可されたユーザは、データベース・システム1200a~1200dの1つによってサンドボックスが作成されるよう要求することができる。このシステム、例えば1200cは、図6のような少なくとも1つの記憶装置を含んでもよい。例えば、記憶装置は、メモリ670、固定記憶装置630、取り外し可能媒体650、中央構成要素700及び/又は第2のコンピュータ800に含まれる記憶装置、及び/又はデータベース・システム1200a~1200dのうちの1つ以上に関連する1つ以上の記憶装置を含むことができる。オリジナル・テナントは、オリジナル・テナント識別子に関連付けられた少なくとも1つの記憶装置の不変の記憶域に記憶されたオリジナル・テナント・データを有することができる。サンドボックス作成時点におけるオリジナル・テナント・データを用いて、サンドボックス・テナントがアクセス可能なオリジナル・テナント・データの仮想スナップショットを作成することができる。新しい又は更新されたサンドボックス・テナント・データは、記憶装置又は他の場所(例えば、キャッシュ記憶システム、ネットワーク化された記憶装置等)に記憶することができ、サンドボックスの作成時に存在していたオリジナル・テナント・データを変更することなく変更することができ、また、オリジナル・テナント・データは、サンドボックス・テナント・データを変更することなく変更又は更新することができる。さらに、サンドボックス・テナント及びオリジナル・テナントのいずれも、サンドボックス・テナント及びオリジナル・テナントの後続の更新がLSM記憶装置の異なる部分に別々に記憶されるかもしれないので、仮想スナップショットのデータを変更することはできない。
仮想スナップショットは、サンドボックス・テナントの作成時にタイム・スタンプ又はその他の時間識別子を記載することによって作成することができる。その後、サンドボックス・テナントとオリジナル・テナントは、タイム・スタンプ前に記憶されたデータのプール内のキーに基づいて、適切なバージョンにアクセスすることにより、タイム・スタンプ前のデータのバージョンに対する主キー要求を解釈する。タイム・スタンプ後に作成又は更新されたデータにアクセスするそれぞれのテナントのキーは、サンドボックス・テナント又はオリジナル・テナントのみが作成した適切なデータにアクセスするために解釈される。代わりに、タイム・スタンプを使用するのではなく、データベース内の各トランザクションは、後続のトランザクション対して単調に増加する固有のトランザクション番号を有してもよく、システムは、タイム・スタンプの代わりに、直近に作成されたトランザクション識別子に注目してもよい。
図5~図6に示すような1つ以上のサーバは、サンドボックス・テナント識別子を作成することができ、サンドボックス・テナント識別子をオリジナル・テナント・データの仮想スナップショット及びサンドボックス作成時点の後にサンドボックス・テナントによって作成されたサンドボックス・データに関連付けることによって、サンドボックス・テナントを作成することができる。サンドボックス作成時点以降にサンドボックス・テナントが作成したサンドボックス・データは、オリジナル・テナントがアクセスできない場合がある。サンドボックスの作成時点に続いて、図5~図6に示すシステムは、記憶装置の不変の記憶域に記憶されたオリジナル・テナント識別子に関連する後続のオリジナル・テナント・データを作成することができる。この後続のオリジナル・テナント・データは、サンドボックス・テナントがアクセスできない場合がある。オリジナル・テナントは、不変の記憶域に記憶されているサンドボックス作成時点の前後に作成されオリジナル・テナント・データにアクセスすることができ、後続のサンドボックス・テナント・データは、不変の記憶域に記憶された他のテナント・データを変更しない新しいテナント・データとして作成することができる。
図5~図6に示すシステムの1つ以上のサーバは、サンドボックス・テナントを示すキーをオリジナル・テナントを示すキーに動的マッピングすることによって、サンドボックス・テナントのキーによって識別された不変の記憶域からのデータ上で動作するサンドボックス・テナントを示すキーを含むクエリを受信することができる。例えば、キーは、上述のような、タイム・スタンプ又はシーケンス・インジケータを含んでもよい。サンドボックス・テナントに対して、サンドボックス・テナントがサンドボックス・テナントの作成前に作成されたデータにアクセスしようとしていることをタイム・スタンプ又はシーケンス識別子が示しているか否かを決定するために、データベース/システムによって、タイム・スタンプ又はシーケンス・インジケータが、検査されてもよい。その場合、キーは、オリジナル・テナントとサンドボックス・テナントの両方がアクセスできる適切なデータに動的マッピングされる。一方、リクエストのタイム・スタンプ又はシーケンス識別子が、テナントの作成後にデータが作成又は更新されたことを示す場合、リクエストはそのようにマッピングされず、代わりにサンドボックス・テナントのみがアクセス可能な適切なトランザクションにアクセスする。
図5~図6に示されるシステムの1つ以上のサーバは、サンドボックス・テナントを示すキーの動的マッピングに基づいて、少なくとも1つの記憶装置(例えば、中央構成要素700、第2のコンピュータ800、及び/又はデータベース・システム1200a~1200dに関連する記憶装置)から、サンドボックス・テナントのための不変の記憶域からデータを受信することができる。
図5~図6に示されるシステムの1つ以上のサーバは、マッピングされたキーに基づいて不変の記憶域からデータを検索するように、データ上で動作してもよい。サーバは、オリジナル・テナントのキーで示される不変の記憶域からデータをサンドボックス・テナントを示すキーのデータに変換し、変換されたデータ上で動作を実行することができる。実行された動作から生じるデータは、サンドボックス・テナントのキーに関連する装置、例えば、中央構成要素700、第2のコンピュータ800、及び/又はデータベース・システム1200a~1200dの1つ以上に関連する記憶装置などの不変の記憶域内にあってもよい。
図5~図6に示されるシステムの1つ以上のサーバは、オリジナル・テナントを示すキーを含むクエリ(例えば、図5に示されるコンピュータ600等から)を受信することができ、オリジナル・テナントに対するキーによって識別される少なくとも1つの記憶装置の不変の記憶域からのデータ上で動作することができる。1つ以上のサーバは、サンドボックス・テナントを示すキーの動的マッピングに基づいて、サンドボックス・テナント用の少なくとも1つの記憶装置から不変の記憶域からのデータを受信する。図5~図6のサーバは、サンドボックス・テナントを削除するための動作を(例えば、図5に示されるコンピュータ600等から)受信することができる。図5~図6の1つ以上のサーバは、少なくとも1つの記憶装置(例えば、中央構成要素700、第2のコンピュータ800、及び/又はデータベース・システム1200a~1200dに関連する記憶装置)の不変の記憶域から、オリジナル・テナント・データを変更することなく、サンドボックス・テナントに関連するキーを削除することができる。
いくつかの実装形態では、図5~図6のサーバは、不変の記憶域に記憶された物理データを削除することなく、不変の記憶域(例えば、中央構成要素700、第2のコンピュータ800、及び/又はデータベース・システム1200a~1200dに関連する記憶装置)からキー範囲を削除することができる。図5~図6のサーバは、サンドボックス作成時点以降、不変の記憶域内のサンドボックス・テナント・データに変更がない場合に、それらに関連付けられたテナント・マッピングを有するサンドボックス・テナント・データの不変の記憶域からエクステント参照を削除することができる。図5~図6のサーバは、オリジナル・テナント・データの既存のエクステント参照を置き換えるように、サンドボックス・テナント・データの削除されたエクステント参照を含まないように、不変の記憶域でサンドボックス・テナント・データに変更がある場合、サンドボックス・テナント・データのキー範囲に対するエクステント参照を不変の記憶域から削除してもよい。
いくつかの実施例では、図5~図6に示される1つ以上のサーバは、ログ構造化マージ・ツリー・データ構造を使用して、少なくとも1つの記憶装置(例えば、中央構成要素700、第2のコンピュータ800、及び/又はデータベース・システム1200a~1200dに関連する記憶装置)の不変の記憶域にデータを記憶することができる。
開示された主題のシステム及び方法は、単一のテナント及び/又は複数テナントのシステム用であってもよい。マルチテナント・システムは、様々なテナント、例えば、ユーザ、ユーザのグループ、又は組織が、様々なテナント間で共有され得るサーバ・システム上のソフトウェア・ツール又はインスタンスを介して、サーバ・システム上の自己のレコードにアクセスすることを可能にし得る。各テナントのレコード内容は、当該テナントのためのデータベースの一部とすることができる。複数テナントのレコード内容はすべて同一のサーバ・システム内に一緒に保存することができるが、各テナントは当該テナントに属する、又は当該テナントが作成したレコード内容にのみアクセスすることができる。これにより、サーバ・システムは、各テナントのレコード内容を別々に、例えば、別々のサーバ又はサーバ・システムに記憶することなく、マルチテナントを可能にすることができる。テナントのためのデータベースは、例えば、リレーショナル・データベース、階層データベース、又は他の適切なデータベース・タイプであってもよい。サーバ・システムに記憶されたすべてのレコードは、例えばLSMツリーを含む任意の適切な構造で記憶されてもよい。
本明細書に開示されるようなレコードは、マルチテナント・システムの場合、キー値のペアによって識別され得る。上述の実施例において、データベースはテナントの概念を持たくなくてもよい。データベース内のテナントは、ユーザがデータベース・システムの許可されたユーザに関連付けられたテナントに対する閲覧、アクセス、及び/又は動作を実行できるように、1つ以上の仮想オーバーレイによって作成されてもよい。この値は、例えば、リレーショナル・データベースのテーブルの行の内容、リレーショナル・データベースのテーブルの行の識別、又は任意の他の適切な値であり得る。キーは、レコードの識別子であってもよく、例えば英数字の連続のような任意の適切な形式であってもよい。キーの一部は、レコードの内容に関する情報を提供することがある。例えば、キーの一部はテナント識別子であってもよく、これはレコードの内容が属するテナントを一意に識別してもよい。キーの他の部分は、例えば、レコードの値が行の内容である場合、テーブル番号と行の識別、又テーブル番号、テーブル上のインデックス番号、及び値が行の識別である場合のインデックス付き列の識別を識別することができる。
さらに、マルチテナント・システムは、各ノードでコンピューティング・システムを有するネットワーク全体に分散されたサーバ・システム上に種々のテナント・インスタンスを有することができる。各テナントのライブ又はプロダクション・データベース・インスタンスは、そのトランザクションを1台のコンピュータ・システムでのみ処理してもよい。そのインスタンスのトランザクションを処理するためのコンピューティング・システムは、他のテナントに対する他のインスタンスのトランザクションを処理することもできる。
より一般的には、現在開示されている主題事項の様々な実施例は、コンピュータで実現されるプロセス及びそれらのプロセスを実行するための装置の形態を含んでもよく、又はそのような形態で実装されてもよい。また、実装は、フロッピー・ディスケット、CD-ROM、ハード・ドライブ、USB(ユニバーサル・シリアル・バス)ドライブ、又は任意の他の機械可読記憶媒体のような、非時的な及び/又は有形の媒体に実装される命令を含むコンピュータ・プログラム・コードを有するコンピュータ・プログラム製品の形態で実装されてもよく、コンピュータ・プログラム・コードがコンピュータにロードされ、実行されるとき、コンピュータは、開示された主題の実施例を実施するための装置となる。また、実装は、例えば、記憶媒体に記憶されているか、コンピュータにロードされているか、及び/又はコンピュータによって実行されているか、又は電気配線若しくはケーブル配線を介して、光ファイバを介して、又は電磁放射を介して何らかの伝送媒体によって送信されているかにかかわらず、コンピュータ・プログラム・コードの形態で実行されてもよく、コンピュータ・プログラム・コードがコンピュータにロードされ、コンピュータによって実行されるとき、コンピュータは、開示された主題の実施例を実施するための装置となる。汎用マイクロプロセッサで実施されるとき、コンピュータ・プログラム・コードのセグメントが、特定の論理回路を作り出すようにマイクロプロセッサを構成する。いくつかの構成では、コンピュータ読取可能記憶媒体上に記憶された1組のコンピュータ読取可能命令は、汎用プロセッサによって実行されてもよく、命令は汎用プロセッサ又は汎用プロセッサを包含する装置を命令を実装又は実行するように構成された専用デバイスに変形してもよい。実装は、汎用マイクロプロセッサ及び/又はハードウェア及び/又はファームウェアにおいて開示された主題の実施例に従って技術の全部又は一部を実施する特定用途向け集積回路(ASIC)のような、プロセッサを含むハードウェアを用いて実現することができる。プロセッサは、RAM、ROM、フラッシュ・メモリ、ハード・ディスク、又は電子情報を記憶することができる任意の他の装置などのメモリに結合されてもよい。メモリは、開示された主題の実施例に従って技術を実行するようにプロセッサによって実行されるように構成された命令を記憶することができる。
上述の説明は、説明の目的で、特定の実施例を参照して記載されている。しかしながら、上記の例示的な議論は、包括的であること、又は開示された主題の実施例を開示された正確な形式に限定することを意図するものではない。上記の教示を考慮すると、多くの修正及び変形が可能である。実施例は、開示された主題の実施例の原理及びそれらの実用的応用を説明するために、選択され、説明され、それによって、当業者が、意図される特定の用途に適している種々の修正を施して、これらの実施例ならびに種々の実施例を利用することを可能にする。

Claims (19)

  1. ある時点でのデータベース・システムのオリジナル・テナントに対するサンドボックスを作成するコンピュータ化された方法であって、前記オリジナル・テナントは、オリジナル・テナント識別子に関連付けられた前記データベース・システムの不変の記憶域に記憶されたオリジナル・テナント・データを有し、前記サンドボックス作成時点における前記オリジナル・テナント・データは、サンドボックス・テナントがアクセスできるようにされる前記オリジナル・テナント・データの仮想スナップショットであり、サンドボックス・テナント・データは、前記オリジナル・テナント・データを変更又は増加することなく変更又は増加することができ、前記オリジナル・テナント・データは、前記サンドボックス・テナント・データを変更又は増加することなく変更又は増加することができ、
    前記方法は、
    前記データベース・システムを介して、サンドボックス・テナント識別子を作成することと、
    前記サンドボックス・テナント識別子を、前記オリジナル・テナント・データの前記仮想スナップショット及び前記サンドボックス作成時点以降に前記サンドボックス・テナントが作成したサンドボックス・テナント・データに関連付けることによってサンドボックス・テナントを作成することであって、前記サンドボックス作成時点以降に前記サンドボックス・テナントが作成した前記サンドボックス・テナント・データは、前記オリジナル・テナントがアクセスできない、サンドボックス・テナントを作成することと、
    前記サンドボックス作成時点以降に、前記不変の記憶域に記憶された前記オリジナル・テナント識別子に関連付けられた後続のオリジナル・テナント・データを作成することであって、前記後続のオリジナル・テナント・データを前記サンドボックス・テナントはアクセスできず、前記オリジナル・テナントは、前記不変の記憶域に記憶された前記サンドボックス作成時点の前後に作成されたオリジナル・テナント・データにアクセスすることができ、前記後続のオリジナル・テナント・データは、前記不変の記憶域に記憶されたより古いオリジナル・テナント・データを変更しない新しいオリジナル・テナント・データとして書き込まれる、後続のオリジナル・テナント・データを作成することと、
    前記サンドボックス・テナントを示すキーを含むクエリを受信することと、
    マッピングに基づいて、前記不変の記憶域からデータを読み出すことと、
    前記オリジナル・テナントを示すキーによって示される前記不変の記憶域からの前記データを前記サンドボックス・テナントを示す前記キーのデータに変換することと、
    前記変換されたデータに対する動作を実行することと、
    前記サンドボックス・テナントの前記キーに関連付けられた前記不変の記憶域に、前記実行された動作から得られたデータを記憶することと、を含む、方法。
  2. 前記マッピングに基づいて、前記サンドボックス・テナントのための前記不変の記憶域からの前記データを返すことをさらに含む、請求項に記載の方法。
  3. 前記サンドボックス・テナントを示すキーを含むクエリを受信することと、
    前記サンドボックス・テナントを示すキーによって識別される前記不変の記憶域からのデータに対して動作することと、をさらに含む、請求項1に記載の方法。
  4. 前記マッピングに基づいて、前記サンドボックス・テナントのための前記不変の記憶域からの前記データを返すことをさらに含む、請求項に記載の方法。
  5. 前記サンドボックス・テナントを削除する動作を受信することと、
    前記オリジナル・テナント・データを変更又は増加することなく、前記サンドボックス・テナントに関連する少なくとも1つのキーを、前記不変の記憶域から削除することと、をさらに含む、請求項1に記載の方法。
  6. 前記少なくとも1つのキーを削除することは、前記不変の記憶域に記憶されている物理データを削除せずに、キー範囲を前記不変の記憶域から削除することを含む、請求項に記載の方法。
  7. 前記少なくとも1つのキーを削除することは、
    サンドボックスの作成時点後に、前記不変の記憶域の前記サンドボックス・テナント・データに変更がない場合、前記サンドボックス・テナント・データに関連付けられたオリジナル・テナント・マッピングを持つサンドボックス・テナント・データのエクステント参照を前記不変の記憶域から削除することを含む、請求項に記載の方法。
  8. 前記少なくとも1つのキーを削除することは、
    前記オリジナル・テナント・データの既存のエクステント参照を置き換えるように前記不変の記憶域内の前記サンドボックス・テナント・データに変更があった場合に、前記サンドボックス・テナント・データのキー範囲に対して、前記不変の記憶域からエクステント参照を削除して、前記サンドボックス・テナント・データの削除された前記エクステント参照を含まないようにする、ことを含む、請求項7に記載の方法。
  9. ログ構造化マージ・ツリー・データ構造を使用して、前記データを前記不変の記憶域に記憶することをさらに含む、請求項1に記載の方法。
  10. ある時点でのオリジナル・テナントに対するサンドボックスを作成するシステムであって、
    前記システムは、
    少なくとも1つのメモリであって、前記オリジナル・テナントは、オリジナル・テナント識別子に関連付けられた前記少なくとも1つのメモリの不変の記憶域に記憶されたオリジナル・テナント・データを有し、前記サンドボックス作成時点における前記オリジナル・テナント・データは、サンドボックス・テナントがアクセスできるようにされる前記オリジナル・テナント・データの仮想スナップショットであり、サンドボックス・テナント・データは、前記少なくとも1つのメモリに記憶することができ、前記オリジナル・テナント・データを変更又は増加することなく変更又は増加することができ、前記オリジナル・テナント・データは、前記サンドボックス・テナント・データを変更又は増加することなく変更又は増加することができる、少なくとも1つのメモリと、
    前記少なくとも1つのメモリに通信可能に接続された前記オリジナル・テナントと前記サンドボックス・テナントに対する1つ以上のサーバであって、前記1つ以上のサーバは、サンドボックス・テナント識別子を作成し、前記サンドボックス・テナント識別子を、前記オリジナル・テナント・データの前記仮想スナップショット及び前記サンドボックス作成時点以降に前記サンドボックス・テナントが作成したデータに関連付けることによってサンドボックス・テナントを作成し、前記サンドボックス作成時点以降に前記サンドボックス・テナントが作成した前記データは、前記オリジナル・テナントがアクセスできず、前記サンドボックス作成時点以降に、前記少なくとも1つのメモリの前記不変の記憶域に記憶された前記オリジナル・テナント識別子に関連付けられた後続のオリジナル・テナント・データを作成し、前記後続のオリジナル・テナント・データを前記サンドボックス・テナントはアクセスできず、前記オリジナル・テナントは、前記不変の記憶域に記憶された前記サンドボックス作成時点の前後に作成されたテナント・データにアクセスすることができ、前記後続のオリジナル・テナント・データは、前記不変の記憶域に記憶されたより古いオリジナル・テナント・データを変更しない新しいオリジナル・テナント・データとして書き込む、少なくとも1つのサーバと、
    を含み、
    前記1つ以上のサーバは、前記サンドボックス・テナントを示すキーを含むクエリを受信し、マッピングに基づいて前記不変の記憶域からデータを取り出し、前記オリジナル・テナントを示すキーによって示された前記不変の記憶域からのデータを、前記サンドボックス・テナントを示す前記キーのデータに変換し、前記変換されたデータに対する動作を実行し、前記サンドボックス・テナントの前記キーに関連する前記少なくとも1つのメモリの前記不変の記憶域の前記実行された動作からの結果のデータを記憶する、システム。
  11. 前記1つ以上のサーバは、前記マッピングに基づいて、前記少なくとも1つのメモリから前記サンドボックス・テナントのための前記不変の記憶域から前記データを受信する、請求項10に記載のシステム。
  12. 前記1つ以上のサーバは、前記サンドボックス・テナントを示すキーを含むクエリを受信し、前記オリジナル・テナントを示すキーによって識別される前記少なくとも1つのメモリの前記不変の記憶域からのデータに対して動作する、請求項10に記載のシステム。
  13. 前記1つ以上のサーバは、前記マッピングに基づいて、前記サンドボックス・テナントのための前記少なくとも1つのメモリからの前記不変の記憶域から前記データを受信する、請求項12に記載のシステム。
  14. 前記1つ以上のサーバは、前記サンドボックス・テナントを削除する動作を受信し、前記少なくとも1つのメモリの前記不変の記憶域から、前記サンドボックス・テナントに関連するキーを、前記オリジナル・テナント・データを変更又は増加することなく削除する、請求項10に記載のシステム。
  15. 前記1つ以上のサーバは、前記不変の記憶域に記憶された物理データを削除することなく、前記不変の記憶域からキー範囲を削除する、請求項1に記載のシステム。
  16. 前記1つ以上のサーバは、前記サンドボックス生成時点後に前記不変の記憶域内の前記サンドボックス・テナント・データに変更がないときに、それらに関連するオリジナル・テナント・マッピングを有する前記サンドボックス・テナント・データのエクステント参照を前記不変の記憶域から削除する、請求項1に記載のシステム。
  17. 前記1つ以上のサーバは、前記サンドボックス・テナント・データの削除されたエクステント参照を含まないように、前記オリジナル・テナント・データの既存のエクステント参照を置き換えるように前記不変の記憶域内の前記サンドボックス・テナント・データに変更があった場合、前記サンドボックス・テナント・データのキー範囲に対して、前記不変の記憶域からエクステント参照を削除する、請求項1に記載のシステム。
  18. 前記1つ以上のサーバは、ログ構造化マージ・ツリー・データ構造を使用して、前記少なくとも1つのメモリの前記不変の記憶域に前記データを記憶する、請求項1に記載のシステム。
  19. コンピュータによって実行されるとき、コンピュータに請求項1~9のいずれか一項に記載の方法のステップを実行させるプログラム。
JP2019523038A 2016-11-08 2017-11-07 データベース・システムにおけるテスト・データの形成及び動作 Active JP7090606B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/345,914 2016-11-08
US15/345,914 US10241896B2 (en) 2016-11-08 2016-11-08 Formation and manipulation of test data in a database system
PCT/US2017/060352 WO2018089344A1 (en) 2016-11-08 2017-11-07 Formation and manipulation of test data in a database system

Publications (3)

Publication Number Publication Date
JP2020502626A JP2020502626A (ja) 2020-01-23
JP2020502626A5 JP2020502626A5 (ja) 2020-12-17
JP7090606B2 true JP7090606B2 (ja) 2022-06-24

Family

ID=60473640

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019523038A Active JP7090606B2 (ja) 2016-11-08 2017-11-07 データベース・システムにおけるテスト・データの形成及び動作

Country Status (7)

Country Link
US (2) US10241896B2 (ja)
EP (1) EP3539021B1 (ja)
JP (1) JP7090606B2 (ja)
CN (1) CN109952564B (ja)
AU (1) AU2017356901B2 (ja)
CA (1) CA3043001A1 (ja)
WO (1) WO2018089344A1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10855794B2 (en) 2018-04-12 2020-12-01 Pearson Management Services Limited Systems and method for automated package-data asset generation
US10963454B2 (en) 2018-09-24 2021-03-30 Salesforce.Com, Inc. System and method for bulk removal of records in a database
US11663207B2 (en) 2018-09-24 2023-05-30 Salesforce, Inc. Translation of tenant identifiers
US11151110B2 (en) 2018-09-24 2021-10-19 Salesforce.Com, Inc. Identification of records for post-cloning tenant identifier translation
US11238174B2 (en) 2019-01-31 2022-02-01 Salesforce.Com, Inc. Systems and methods of database encryption in a multitenant database management system
US11409904B2 (en) * 2019-04-18 2022-08-09 Microsoft Technology Licensing, Llc User interface for building a data privacy pipeline and contractual agreement to share data
US11321294B2 (en) 2019-09-09 2022-05-03 Salesforce.Com, Inc. Database index repair
US11442960B2 (en) * 2019-12-17 2022-09-13 Verizon Patent And Licensing Inc. Edge key value store for a distributed platform
US11526465B2 (en) * 2019-12-18 2022-12-13 Salesforce.Com, Inc. Generating hash trees for database schemas
US11483150B2 (en) 2020-06-01 2022-10-25 Salesforce.Com, Inc. Private key cache in secure enclave
US11361106B2 (en) 2020-09-01 2022-06-14 Microsoft Technology Licensing, Llc Chaining, triggering, and enforcing entitlements
CN112434284B (zh) * 2020-10-29 2022-05-17 格物钛(上海)智能科技有限公司 一种基于沙箱环境的机器学习训练平台实现
KR102411806B1 (ko) * 2020-11-17 2022-06-23 쿠팡 주식회사 데이터베이스 쿼리 효율 향상을 위한 시스템 및 방법
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
US11922145B2 (en) 2022-03-01 2024-03-05 Microsoft Technology Licensing, Llc Initiating data privacy pipelines using reusable templates
CN114595159B (zh) * 2022-05-10 2022-09-02 太平金融科技服务(上海)有限公司 测试数据生成方法、装置、设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005129066A (ja) 2003-10-24 2005-05-19 Microsoft Corp オペレーティングシステムリソース保護
WO2016117007A1 (ja) 2015-01-19 2016-07-28 株式会社日立製作所 データベースシステム及びデータベース管理方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05224992A (ja) * 1992-02-13 1993-09-03 Hitachi Ltd プログラムテスト装置
JP3497053B2 (ja) * 1996-11-13 2004-02-16 株式会社日立製作所 オンラインデータベース管理システムにおける処理方法及びオンラインデータベース管理システム
US6038639A (en) * 1997-09-09 2000-03-14 Storage Technology Corporation Data file storage management system for snapshot copy operations
US7101172B2 (en) * 2002-08-30 2006-09-05 Emerson Electric Co. Apparatus and methods for variable furnace control
KR100439675B1 (ko) * 2002-10-24 2004-07-14 한국전자통신연구원 대용량 공유 저장장치를 위한 효율적인 스냅샷 수행방법
US9208188B2 (en) * 2009-02-17 2015-12-08 Microsoft Technology Licensing, Llc Tenant management of a hosted multi-tenant application
US8161077B2 (en) * 2009-10-21 2012-04-17 Delphix Corp. Datacenter workflow automation scenarios using virtual databases
US8150808B2 (en) * 2009-10-21 2012-04-03 Delphix Corp. Virtual database system
US8479286B2 (en) * 2009-12-15 2013-07-02 Mcafee, Inc. Systems and methods for behavioral sandboxing
US8793291B2 (en) * 2010-03-15 2014-07-29 Salesforce.Com, Inc. System, method and computer program product for deploying an update between environments of a multi-tenant on-demand database system
US8706772B2 (en) * 2010-12-30 2014-04-22 Sap Ag Strict tenant isolation in multi-tenant enabled systems
WO2012142854A1 (zh) * 2011-04-18 2012-10-26 北京新媒传信科技有限公司 一种应用服务平台系统及其实现方法
US9367431B2 (en) * 2011-07-01 2016-06-14 Salesforce.Com, Inc. Testing data silo
US9721116B2 (en) 2013-06-24 2017-08-01 Sap Se Test sandbox in production systems during productive use
US10860237B2 (en) * 2014-06-24 2020-12-08 Oracle International Corporation Storage integrated snapshot cloning for database
US20160048844A1 (en) 2014-08-15 2016-02-18 Salesforce.Com, Inc. Techniques, architectures and mechanisms for management of electronic licensure
KR102378367B1 (ko) * 2015-03-20 2022-03-24 한국전자통신연구원 분산 파일 시스템
US9904538B2 (en) * 2015-08-24 2018-02-27 International Business Machines Corporation Maintenance of multi-tenant software programs
CN106027545B (zh) * 2016-06-27 2019-02-19 西安空间无线电技术研究所 一种基于虚拟数据的鲁棒信息隐藏方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005129066A (ja) 2003-10-24 2005-05-19 Microsoft Corp オペレーティングシステムリソース保護
WO2016117007A1 (ja) 2015-01-19 2016-07-28 株式会社日立製作所 データベースシステム及びデータベース管理方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
岡本 充洋 MITSUHIRO OKAMOTO,クラウドきほんのき Cloud Computing,日経SYSTEMS 第197号 ,日本,日経BP社 Nikkei Business Publications,Inc.,2009年09月

Also Published As

Publication number Publication date
AU2017356901A1 (en) 2019-05-23
EP3539021A1 (en) 2019-09-18
WO2018089344A1 (en) 2018-05-17
EP3539021B1 (en) 2022-06-01
AU2017356901B2 (en) 2020-12-24
CN109952564A (zh) 2019-06-28
CA3043001A1 (en) 2018-05-17
US20190163613A1 (en) 2019-05-30
CN109952564B (zh) 2022-06-21
US10241896B2 (en) 2019-03-26
JP2020502626A (ja) 2020-01-23
US20180129585A1 (en) 2018-05-10

Similar Documents

Publication Publication Date Title
JP7090606B2 (ja) データベース・システムにおけるテスト・データの形成及び動作
CN110799960B (zh) 数据库租户迁移的系统和方法
US10430434B2 (en) Managing transformed snapshots in a storage system
US10621071B2 (en) Formation and manipulation of test data in a database system
JP2020525925A (ja) ある時点についてデータベースのデータセットを復元するシステム及び方法
US20200201745A1 (en) Formation and manipulation of test data in a database system
CN110799961B (zh) 在数据库中创建和删除租户的系统和方法
US10732840B2 (en) Efficient space accounting mechanisms for tracking unshared pages between a snapshot volume and its parent volume
CN112912870A (zh) 租户标识符的转换
US11657046B1 (en) Performant dropping of snapshots by converter branch pruning
US20230195747A1 (en) Performant dropping of snapshots by linking converter streams

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201106

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201106

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210914

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210915

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211214

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220614

R150 Certificate of patent or registration of utility model

Ref document number: 7090606

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150