(57)【要約】  データベース・システムのテナントを作成するシステム及び方法が提供され、テナントは、テナント識別子に関連する前記データベース・システムのイミュータブルなストレージに格納されるテナント・データを有する。新たなテナントを作成するためのリクエストがデータベース・システムにおいて受信され得る。受信したリクエストに基づいて新たなテナントを作成するためにデータベース・システムにおいてテンプレート・テナントのテンプレート・テナント・メタデータが選択され得る。選択したテンプレート・テナント・メタデータに基づいてデータベース・システムにおいて新たなテナント識別子が作成され得る。テンプレート・テナント・メタデータが新たなテナントに対してアクセス可能にされた場合の時点におけるテンプレート・テナント・メタデータの少なくとも一部分のスナップショットに、新たなテナント識別子を関連付けることにより、新たなテナントが作成され得る。テナント識別子に対するリファレンスを削除することにより、データベース・システムのテナントを削除するシステム及び方法も提供される。
2020525938.tif 000002
【特許請求の範囲】
【請求項１】
データベース・システムのテナントを作成するコンピュータ化された方法であって、前記テナントは、テナント識別子に関連する前記データベース・システムのイミュータブルなストレージに格納されるテナント・データを有し、前記方法は：
前記データベース・システムにおいて、新たなテナントを作成するためのリクエストを受信するステップ；
前記データベース・システムにおいて、受信した前記リクエストに基づいて、前記新たなテナントを作成するためにテンプレート・テナントのテンプレート・テナント・メタデータを選択するステップ；
前記データベース・システムにより、選択した前記テンプレート・テナント・メタデータに基づいて新たなテナント識別子を作成するステップ；及び
前記テンプレート・テナント・メタデータが前記新たなテナントに対してアクセス可能にされる新たなテナント作成時点における前記テンプレート・テナント・メタデータの少なくとも一部分のスナップショットに、前記新たなテナント識別子を関連付けることにより、前記新たなテナントを作成するステップ；
を含む方法。
【請求項２】
前記新たなテナント作成時点の後に前記新たなテナントにより作成された新たなテナント・データを、前記新たなテナントに関連付けるステップであって、前記新たなテナント作成時点以後に前記新たなテナントにより作成される前記新たなテナント・データは、前記テンプレート・テナントに対してアクセス可能でない、ステップ；
を更に含む請求項１に記載の方法。
【請求項３】
テンプレート・テナントのテンプレート・テナント・メタデータを選択する前記ステップが：
前記新たなテナントを作成するための前記リクエストのタイプに基づいて、テンプレート・テナントが存在するか否かを判断するステップ；及び
前記新たなテナント作成時点における決定された前記テンプレート・テナントのテンプレート・テナント・メタデータの少なくとも一部分の前記スナップショットに、前記新たなテナント識別子を関連付けることにより、前記新たなテナントを作成するステップ；
を含む、請求項１−２のうちの何れか１項に記載の方法。
【請求項４】
前記新たなテナントが作成される場合に、許可の設定、レイアウト変更、及びユーザー名の変更から成る群から少なくとも１つを変更することにより、前記新たなテナントのテナント・データを変更するステップ；
を更に含む請求項１−３のうちの何れか１項に記載の方法。
【請求項５】
データベース・システムのテナントを削除するコンピュータ化された方法であって、前記テナントは、テナント識別子に関連する前記データベース・システムのイミュータブルなストレージに格納されるテナント・データを有し、前記方法は：
前記データベース・システムにおいて、前記テナントを削除するためのリクエストを受信するステップ；
受信した前記リクエストに基づいて、前記テナントについてのメタデータを前記データベース・システムから削除するステップ；及び
前記データベース・システムにおける前記テナント識別子に関連するテナント・データを行毎に削除することなく、前記テナントの前記テナント識別子に対するリファレンスを、前記データベース・システムから削除するステップ；
を含む方法。
【請求項６】
前記メタデータを削除する前記ステップは：
他のテナント・データを変更することなく、前記テナントの前記メタデータに関連する少なくとも１つのキーを、前記イミュータブルなストレージから削除するステップ；
を含む、請求項５に記載の方法。
【請求項７】
前記少なくとも１つのキーを削除する前記ステップが：
前記イミュータブルなストレージに格納された物理的なデータを削除することなく、テナントの前記メタデータに関連するキー・レンジを、前記イミュータブルなストレージから削除するステップ；
を含む、請求項６に記載の方法。
【請求項８】
データベース・システムのテナントを作成するシステムであって、
新たなテナントを作成するためのリクエストを受信し、受信した前記リクエストに基づいて、前記新たなテナントを作成するためにテンプレート・テナントのテンプレート・テナント・メタデータを選択し、選択した前記テンプレート・テナント・メタデータに基づいて新たなテナント識別子を作成し、及び前記テンプレート・テナント・メタデータが前記新たなテナントに対してアクセス可能にされる新たなテナント作成時点における前記テンプレート・テナント・メタデータの少なくとも一部分のスナップショットに、前記新たなテナント識別子を関連付けることにより、前記新たなテナントを作成する少なくとも１つのサーバー；及び
前記テナント識別子及び前記テンプレート・テナントに関連付けられるテナント・データを格納する少なくとも１つのストレージ・デバイス；
を含むシステム。
【請求項９】
前記少なくとも１つのサーバーは、前記新たなテナント作成時点の後に前記新たなテナントにより作成された新たなテナント・データを、前記新たなテナントに関連付け、前記新たなテナント作成時点以後に前記新たなテナントにより作成される前記新たなテナント・データは、前記テンプレート・テナントに対してアクセス可能でない、請求項８に記載のシステム。
【請求項１０】
前記新たなテナントを作成するための前記リクエストのタイプに基づいてテンプレート・テナントが存在するか否かを判断し、前記新たなテナント作成時点における決定された前記テンプレート・テナントの前記テンプレート・テナント・メタデータの少なくとも一部分の前記スナップショットに、前記新たなテナント識別子を関連付けることにより、前記新たなテナントを作成することで、前記少なくとも１つのサーバーは、前記テンプレート・テナントの前記テンプレート・テナント・メタデータを選択する、請求項８−９のうち何れか１項に記載のシステム。
【請求項１１】
前記新たなテナントが作成される場合に、前記少なくとも１つのサーバーは、許可の設定、レイアウト変更、及びユーザー名の変更から成る群から少なくとも１つを変更することにより、前記新たなテナントのテナント・データを変更する、請求項８−１０のうち何れか１項に記載のシステム。
【請求項１２】
データベース・システムのテナントを削除するシステムであって：
テナント識別子に関連するテナント・データを格納する少なくとも１つのストレージ・デバイス；及び
前記少なくとも１つのストレージ・デバイスから、前記テナントを削除するためのリクエストを受信し、受信した前記リクエストに基づいて、前記テナントについてのメタデータを前記データベース・システムから削除し、前記データベース・システムにおける前記テナント識別子に関連するテナント・データを行毎に削除することなく、前記テナントの前記テナント識別子に対するリファレンスを、前記データベース・システムから削除する少なくとも１つのサーバー；
を含むシステム。
【請求項１３】
前記少なくとも１つのサーバーは、他のテナント・データを変更することなく、前記テナントに関連する少なくとも１つのキーを削除することにより、前記メタデータを削除する、請求項１２に記載のシステム。
【請求項１４】
前記少なくとも１つのサーバー・システムは、前記少なくとも１つのストレージに格納された物理的なデータを削除することなく、テナントの前記メタデータに関連するキー・レンジを、イミュータブルなストレージから削除することにより、前記少なくとも１つのキーを削除する、請求項１２−１３のうち何れか１項に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
データベース・システムにおいて、テナントは典型的には作成から削除に至るライフサイクルを経験する。即ち、テナントは、データベース内で作成され、ある期間にわたって使用され、最終的に削除される。
【０００２】
従来のデータベースに新たなテナントが作成される場合、典型的にはかなりの数のレコードが作成される。これらのレコードの各々はデータベース・システムに個別的に挿入されることを要し、その挿入には時間がかかり、演算及びハードウェア・リソースを使用し得る。 
【０００３】
典型的なデータベース・システムが、テナントを削除するためのリクエストを受信すると、データベース・システムは、テナントに関連するテナント・データを行毎に（ｒｏｗ−ｂｙ−ｒｏｗ）削除するという時間のかかるリソースを消費するプロセスを経験するであろう。
【図面の簡単な説明】
【０００４】
開示される対象事項の更なる理解をもたらすように含められている添付図面は、本願に組み込まれてその一部を構成する。図面はまた開示される対象事項の実装を示し、詳細な説明とともに開示される対象事項の実装の原理を説明する。開示される対象事項及び実施され得る様々な方法についての基本的な理解に必要とされ得るものより詳細に構造的な詳細を示そうとうはしていない。
【０００５】
【図１Ａ】図１Ａは開示される対象事項の実装に従ってテンプレート・テナント・メタデータを利用してデータベース・システムのテナントを作成する方法例を示す。
【０００６】
【図１Ｂ】図１Ｂは開示される対象事項の実装に従ってテンプレート識別子に対するリファレンスを削除することによりデータベース・システムからテナントを削除する別の方法例を示す。
【０００７】
【図２】図２は開示される対象事項の実装によるデータベース・システムにおけるレコードの例を示す。
【０００８】
【図３】図３は開示される対象事項の実装に従って仮想レイヤを利用してテナントを作成し、テナント・データを格納及び検索し、テナントを削除するシステム例を示す。
【０００９】
【図４Ａ】図４Ａは開示される対象事項の実装に従ってテンプレート・テナント・メタデータを利用して新たなテナントを作成する例示的なシステム及び方法を示す。
【図４Ｂ】図４Ｂは開示される対象事項の実装に従ってテンプレート・テナント・メタデータを利用して新たなテナントを作成する例示的なシステム及び方法を示す。
【図４Ｃ】図４Ｃは開示される対象事項の実装に従ってテンプレート・テナント・メタデータを利用して新たなテナントを作成する例示的なシステム及び方法を示す。
【図４Ｄ】図４Ｄは開示される対象事項の実装に従ってテンプレート・テナント・メタデータを利用して新たなテナントを作成する例示的なシステム及び方法を示す。
【００１０】
【図５】図５は開示される対象事項の実装によるコンピュータを示す。
【００１１】
【図６Ａ】図６Ａは開示される対象事項の実装によるネットワーク構成を示す。
【図６Ｂ】図６Ｂは開示される対象事項の実装によるネットワーク構成を示す。
【発明を実施するための形態】
【００１２】
開示される対象事項の実装は、テンプレート・テナントに格納されているデータからテナントを作成するように仕向けられている。従来のデータベース・システムでは、新たなテナントは、レコードを行毎にデータベースに追加することにより作成される。開示される対象事項の実装は、テンプレートのメタデータを指す新たなテンプレートのテナント識別子を持つことにより、新たなテナントを作成するための時間に加えて演算及びハードウェア・リソースを減らし、その結果、テナントを作成する際に、データの行毎の追加又はコピーは必要とされない。
【００１３】
新たなテナントを作成するためのリクエストが受信されると、開示される対象事項のデータベース・システムは、特定のテンプレート・テナント及び／又は受信したリクエストに類似するテンプレート・テナントを利用してシステムが（例えば、所定の期間内に）サインアップを実行したか否かを判断することができる。実行している場合、（例えば、テンプレート・テナント・データ、エディション情報などの）テンプレート・テナントのスナップショットが、新たなテナントを作成するために使用され得る。特に、スナップショットは新たなテナントになることが可能であり、スナップショットが取得された取得元のテンプレート・テナントのデータの部分を指すメタデータを有する。
【００１４】
開示される対象事項の実装はまた、データベースからテナントを除外及び／又は削除することにも仕向けられる。従来、テナント及びテナント・データは行毎にデータベースから取り除かれる。開示される対象事項のデータベース・システムは、データベース内のテナントに対するメタデータ・リファレンスを削除することにより、テナントをシステムから速やかに削除する。即ち、開示される対象事項のデータベース・システムは、データベースの行からデータを取り除くために個別的な削除オペレーションを発行することを要しない。そうではなく、テナント・データに対するリファレンスを削除することにより、１つ以上のオペレーションが、テナント・データを含むそれらの行に対するリファレンスを、データベースから削除するために実行され得る。
【００１５】
開示される対象事項の実装は、データベース・システムのテナントを作成する方法を提供し、テナントは、テナント識別子に関連するデータベース・システムのイミュータブルなストレージに格納されるテナント・データを有する。新たなテナントを作成するためのリクエストがデータベース・システムにおいて受信され得る。データベース・システムにおいて、受信したリクエストに基づいて新たなテナントを作成するために、テンプレート・テナントのテンプレート・テナント・メタデータが選択され得る。データベース・システムにおいて、選択したテンプレート・テナント・メタデータに基づいて新たなテナント識別子が作成され得る。テンプレート・テナント・メタデータが新たなテナントに対してアクセス可能にされた時点におけるテンプレート・テナント・メタデータの少なくとも一部分のスナップショットに、新たなテナント識別子を関連付けることにより、新たなテナントが作成され得る。
【００１６】
方法は、新たなテナント作成時点の後に新たなテナントにより作成された新たなテナント・データを、新たなテナントに関連付けるステップを含んでもよく、新たなテナント作成時点以後に新たなテナントにより作成される新たなテナント・データは、テンプレート・テナントに対してアクセス可能でない。
【００１７】
方法において、テンプレート・テナントのテンプレート・テナント・メタデータを選択するステップは、新たなテナントを作成するためのリクエストのタイプに基づいて、テンプレート・テナントが存在するか否かを判断するステップ、及び新たなテナントが作成された時点における決定されたテンプレート・テナントのテンプレート・テナント・メタデータの少なくとも一部分のスナップショットに、新たなテナント識別子を関連付けることにより、新たなテナントを作成するステップを含むことができる。
【００１８】
幾つかの実装において、新たなテナントが作成される場合に、許可の設定、レイアウト変更、及びユーザー名の変更などにより、新たなテナントのデータが変更されてもよい。開示される対象事項の実装は、データベース・システムのテナントを削除する方法を提供し、テナントは、テナント識別子に関連するデータベース・システムのイミュータブルなストレージに格納されるテナント・データを有する。データベース・システムは、テナントを削除するためのリクエストを受信し得る。受信したリクエストに基づいて、テナントについてのメタデータがデータベース・システムから削除され得る。データベース・システムにおけるテナント識別子に関連するテナント・データを行毎に削除することなく、テナントのテナント識別子に対するリファレンスが、データベース・システムから削除され得る。方法は、他のテナント・データを変更することなく、テナントのメタデータに関連する少なくとも１つのキーを削除するステップを含み得る。
【００１９】
幾つかの実装において、これは、イミュータブルなストレージに格納された物理的なデータを削除することなく、テナントのメタデータに関連するキー・レンジを、イミュータブルなストレージから削除するステップを含み得る。
【００２０】
開示される対象事項の実装はまた、データベース・システムのテナントを作成するシステムも提供し得る。システムの少なくとも１つのサーバーは、新たなテナントを作成するためのリクエストを受信し、受信したリクエストに基づいて、新たなテナントを作成するためにテンプレート・テナントのテンプレート・テナント・メタデータを選択し、選択した前記テンプレート・テナント・メタデータに基づいて新たなテナント識別子を作成し、及びテンプレート・テナント・メタデータが新たなテナントに対してアクセス可能にされた時点におけるテンプレート・テナント・メタデータの少なくとも一部分のスナップショットに、新たなテナント識別子を関連付けることにより、新たなテナントを作成することができる。システムは、テナント識別子及びテンプレート・テナントに関連付けられるテナント・データを格納する少なくとも１つのストレージ・デバイスを含み得る。
【００２１】
データベース・システムの少なくとも１つのサーバーは、新たなテナント作成時点の後に新たなテナントにより作成された新たなテナント・データを、新たなテナントに関連付けることができる。新規作成時点以後に新たなテナントにより作成される新たなテナント・データは、テンプレート・テナントに対してアクセス可能でない。
【００２２】
データベース・システムの少なくとも１つのサーバーは、新たなテナントを作成するためのリクエストのタイプに基づいてテンプレート・テナントが存在するか否かを判断することにより、テンプレート・テナントのテンプレート・テナント・メタデータを選択することができる。サーバーは、新たなテナント作成される時点におけるテンプレート・テナントのテンプレート・テナント・メタデータの少なくとも一部分のスナップショットに、新たなテナント識別子を関連付けることにより、新たなテナントを作成することができる。
【００２３】
新たなテナントがシステムにより作成される場合に、データベース・システムの少なくとも１つのサーバーは、許可の設定、レイアウト変更、及び／又はユーザー名の変更等を変更することにより、新たなテナントのテナント・データを変更することができる。
【００２４】
開示される対象事項の実装はまた、データベース・システムのテナントを削除するシステムを提供し得る。システムは、テナント識別子に関連するテナント・データを格納する少なくとも１つのストレージ・デバイスを含み得る。システムの少なくとも１つのサーバーは、少なくとも１つのストレージ・デバイスから、テナントを削除するためのリクエストを受信し、受信したリクエストに基づいて、テナントについてのメタデータをデータベース・システムから削除し、データベース・システムにおけるテナント識別子に関連するテナント・データを行毎に削除することなく、テナントのテナント識別子に対するリファレンスを、データベース・システムから削除することができる。
【００２５】
幾つかの実装において、データベース・システムの少なくとも１つのサーバーは、他のテナント・データを変更することなく、テナントに関連する少なくとも１つのキーを削除することにより、メタデータを削除することができる。システムのサーバーは、少なくとも１つのストレージに格納された物理的なデータを削除することなく、テナントのメタデータに関連するキー・レンジを、イミュータブルなストレージから削除することにより、少なくとも１つのキーを削除することができる。
【００２６】
図１Ａは、開示される対象事項の実装に従ってテンプレート・テナント・メタデータを利用してデータベース・システムのテナントを作成する方法例を示す。方法１０を利用して作成されるデータベース・システムのテナントは、データベース・システムのイミュータブルなストレージに格納されるテナント・データ（例えば、図３に示されるシステム３０、図５に示される第２コンピュータ８００のストレージ８１０、図６Ａ−６Ｂのデータベース・システム１２００ａ−ｄ等におけるもの）であって、テナント識別子に関連するテナント・データを有し得る。以下に説明されるように、方法１０は、テンプレート・テナントを利用してテナントを作成するために、図４Ａ−４Ｅに示され且つ以下で説明されるシステム５０に関連して使用され得る。
【００２７】
図４Ａ−４Ｅのシステム５０は、データベース・システム、サーバー・システム、クラウド・サーバー・システム等であってもよい。システム５０は、テンポラリ・ストレージ１００、パーシステンス２００（ｐｅｒｓｉｓｔｅｎｃｅ  ２００）、及びログ３００を含み得る。パーシステンス２００は、それに関連付けられる１つ以上のサーバー及び／又はコンピュータ（例えば、図３に示されるシステム３０、及び／又は図５に示されるコンピュータ８００、及び／又は図６Ａ−６Ｂに示されるデータベース・システム１２００ａ−１２００ｄ等の）を有することができる。テンポラリ・ストレージ１００は、パーシステンス２００に情報を格納するための「フラッシュ（ｆｌｕｓｈ）」オペレーションの前に、データに対するキー・レンジをエクステント（ｅｘｔｅｎｔｓ）に格納するためのシステム５０におけるハードウェア及びソフトウェアの適切な任意の組み合わせであってよく、パーシステンス２００は、データ・エクステント及びデータ・エクステント・リファレンスを格納するためのシステム５０におけるハードウェア及びソフトウェアの適切な任意の組み合わせであってよい。テンプレート３００は、新たなテナントを作成するためにシステムにより使用され得るテンプレート・テナント及びメタデータを格納するシステム５０におけるハードウェア及びソフトウェアの適切な任意の組み合わせに格納されてもよい。
【００２８】
図１Ａのオペレーション１２において、データベース・システムは新たなテナントを作成するためのリクエストを受信することができる。例えば、図３に示されて以下で説明されるアクセス・レイヤ３２のデータベース・ストレージ・エンジン３３が、リクエストを受信してもよい。別の例において、コンピュータ６００、セントラル・コンポーネント７００、及び／又は図５に示される第２コンピュータ８００が、リクエストを受信してもよい。更に別の例において、図６Ａ−６Ｂに示されて以下で説明される１つ以上のデータベース・システム１２００ａ−ｄが、リクエストを受信してもよい。オペレーション１２は図４Ａにも示されており、システム５０のテンポラリ・ストレージ１００が、新たなテナントを作成するためのリクエストを受信している。
【００２９】
オペレーション１４において、データベース・システムは、新たなテナントを作成するためにテナント・テンプレートについてのテンプレート・テナント・メタデータを選択することができる。テンプレート・テナント・メタデータの選択は、受信したリクエストの１つ以上の属性に基づいていてもよい。即ち、データベース・システムは、テナントを作成するためのリクエストの中の情報及び／又はデータが、データベース・システムにより格納されているテナント・テンプレートのデータ、情報、及び／又はメタデータ（例えば、図４Ａ、４Ｂ、４Ｄ、及び／又は４Ｅに示される１つ以上のテンプレート３００）に類似しているか否かを判断することができる。例えば、データベース・システムは、新たなテナントの作成のためのリクエストに最も類似しているテナント・テンプレートを選択してもよい。類似性は、例えば、作成されるべきテナントのタイプ、作成されるべきテナントに関連するメタデータ及び／又はデータのタイプ等を含むことができる。図４Ｂに示されるように、図４Ａに示されるシステム５０により受信されたリクエストに基づいて、メタデータ３０５を有するテンプレート３０４がテンプレート３００から選択されてもよい。
【００３０】
オペレーション１６において、データベース・システムは、選択されたテンプレート・テナント・メタデータに基づいて、新たなテナント識別子を作成することができる。例えば、図４Ｂは、システム５０のテンポラリ・ストレージ１００に作成されたテナント識別子１０１を示す。
【００３１】
オペレーション１８において、データベース・システムは、テンプレート・テナント・メタデータが新たなテナントにアクセス可能にされた時点におけるテナント・テンプレート・データの部分のスナップショットに、新たなテナント識別子を関連付けることにより、新たなテナントを作成することができる。例えば、図４Ｃは図４Ｂのテンプレート３０４のスナップショットを示す。スナップショットは、テンプレート・テナント・データが新たなテナントに対してアクセス可能にされるようにすることができ、その結果、配下のデータをコピーすることなく、新たなテナントは、あたかもオリジナル・テナント・データのコピーが行われた場合と同じ方法でテナント・テンプレート・データにアクセスすることができる。即ち、新たなテナントは、スナップショットの時点におけるテンプレート・テナント・データのスナップショットを指し示すリファレンスを含むことができる。
【００３２】
図４Ｄは、システム５０のテンポラリ・ストレージ内にテナント識別子１０１を有することに加えて、テンプレート３０４のテンプレート・テナント・データを指すキーを有する新たなテナント１０２を示す。図４Ｅは「フラッシュ」オペレーションを示し、新たなテナント１０２がパーシステンス・ストレージ２００に格納されている。即ち、フラッシュ・オペレーションは、新たに作成されたテナントをテンポラリ・ストレージ１００から削除し、それをパーシステンス・ストレージ２００に格納することができる。
【００３３】
幾つかの実装において、テナントは、例えばテンプレート３００に格納され得るドキュメント・オブジェクト・テンプレート（ＤＯＴ）ファイルに格納されているデータから作成されてもよい。ＤＯＴファイルは、データを行毎にデータベースから選択し、データをオブジェクト（例えば、ＪａｖａＴＭオブジェクト）に変換し、オブジェクトをシリアル化することにより生成されてもよい。例えば、新たなテナントが方法１０を利用してデータベースに作成される場合に、オブジェクトはＤＯＴファイルから読み込まれてもよく、その場合、各々のオブジェクトは、挿入オペレーションによりデータベースに行を作成するために使用される。全てのデータが挿入されると、テナントの作成を完了させるために、許可（ｐｅｒｍｉｓｓｉｏｎ）を設定すること、レイアウトを変更すること、ユーザー名を変更すること等のような変更が行われてもよい。
【００３４】
幾つかの実装において、ＤＯＴファイルは、シリアル化されたＪａｖａＴＭオブジェクトを含む圧縮されたバイナリ・ファイル（例えば、ＺＩＰファイル）であってもよい。これらのファイルは、全てのデータを行毎にデータベースから選択し、データをＪａｖａＴＭオブジェクトに変換し、ＪａｖａＴＭオブジェクトをストレージ・デバイスへシリアル化し、ファイルを圧縮することにより生成される。典型的には、ＪａｖａＴＭオブジェクトがシリアル化される場合、データはバイト・ストリームに変換され、バイト・ストリームは後にオリジナル・データのコピーに戻される。
【００３５】
新たなデータを作成するためのリクエストが受信されると（例えば、サインアップ・リクエストの一部として）、システムが特定のテンプレート・テナントを利用して（例えば、リクエストを受信している特定のデータベースに対するデータベース・エディション（ｄａｔａｂａｓｅ  ｅｄｉｔｉｏｎ）及び特定のＤＯＴファイルを利用して）サインアップを実行しているか否かが判断される。実行している場合、（例えば、テンプレート・テナント・データ、ＤＯＴファイル、エディション情報などの）テンプレート・テナントのスナップショットが、新たなテナントを作成するために使用され得る。特に、スナップショットは、新たなテナントとなり、スナップショットが取得されたテンプレート・テナントのデータの部分を指すメタデータを有する。
【００３６】
幾つかの実装において、新たなテナントが作成されると、例えばサインアップにおいて（例えば、新たなテナントがデータベース・システムに導入される場合に）、ＤＯＴファイルのうちの１つが読み込まれてもよく、上記の手順は逆向きに実行されてもよい。オブジェクトは一度に１つ読み込まれてもよく、各々のオブジェクトは、挿入ステートメントがデータベース・システムにより発行される場合に、データベースに行を作成するために使用されてもよい。データが挿入されると、許可の設定、レイアウトの作成、及びユーザー名の変更などのような変更が行われ得る。この時点で、データベース・システムで承認されたユーザーにより使用される得るテナントが存在し得る。
【００３７】
図４Ａ−４Ｅに示される例において、サインアップ・リクエストがデータベース・システム５０で受信され得る。リクエストは、データベース・システム５０に通信可能に結合される新たな顧客のコンピュータから受信されてもよい。具体的な例として、リクエストは、データベース・システムに格納されたテナント及び／又はテナント・データを今のところ有していない者からのものであってもよい。リクエストは新しい者（ａ  ｎｅｗ  ｐａｒｔｙ）からのものであるので、データベース・システム５０は、その者について過去にサインアップを実行していないことを確認することができ、新たな顧客に対するＤＯＴファイルがデータベース・システム５０により選択される。全ての新規テナントについて一般的に要求される新規顧客データ（顧客名、アドレス、請求書情報、標準的なユーザーの役割、許可、包含サービス等）を選択することにより、データをデータベース・システム５０から選択することにより、新たな顧客ＤＯＴファイルが作成されてもよい。次いで、選択されたデータはオブジェクトに変換されることが可能であり、次いでオブジェクトは上述したようなＤＯＴファイルにシリアル化される。幾つかのケースにおいて、ＤＯＴファイルの作成は、サインアップ・リクエストが受信される前に実行されてもよい。
【００３８】
新たな顧客ＤＯＴファイルがデータベース・システム５０により選択されると、システム５０は、選択されたＤＯＴファイルのオブジェクトを読み込むことができ、挿入オペレーションにより、例えばテンポラリ・ストレージ１００にデータの行を作成するために、各オブジェクトを利用することができる。即ち、読み込まれた各オブジェクトは、テナント識別子１０１に関連付けられることが可能なテンポラリ・ストレージ１００における行を作成するために使用され得る。データが挿入されると、スナップショットが取得されてもよい。スナップショットは、ＤＯＴファイルや、データベース・システムのエディション等の他の情報を含んでもよい。スナップショットは、例えばパーシステンス２００に保存され得る。テンプレート３０４等のテンプレート３００のうちの１つは、パーシステンス２００に格納されるスナップショット・データを指し示すメタデータ３０５を有し得る。
【００３９】
スナップショット及びサインアップ・リクエストに基づいて、新たなテナント識別子１０１がテンポラリ・ストレージ１００に生成及び格納されてもよい。テンプレート・テナント・メタデータが新たなテナントにアクセス可能にされる時点におけるテナント・テンプレート・データの部分のスナップショットに、新たなテナント識別子１０１を関連付けることにより、データベース・システム５０は新たなテナントを作成することができる。この例では、図４Ｂのテンプレート３０４のスナップショットが取得され得る。スナップショットは、テンプレート３０４のテンプレート・テナント・データが、テナント識別子１０１を有する新たなテナントに対して利用可能にされるようにすることが可能であり、その結果、新たなテナントは、配下のデータをコピーすることなく、オリジナル・テナント・データのコピーが行われた場合と同じ方法でテナント・テンプレート・データにアクセスすることが可能である。即ち、新たなテナントは、テンプレート３０４のデータのスナップショットを指し示すリファレンスを含むことができる。図４Ｄに示されるように、新たなテナント１０２は、テナント識別子１０１に加えて、テンプレート３０４のテンプレート・テナント・データを指し示すキーを有し得る。完成したテナントはパーシステンス２００に格納されることが可能であり、テナントは、サインアップ・リクエストを行った顧客のコンピュータにとって利用可能にされ得る。
【００４０】
図１Ｂは開示される対象事項の実装に従ってテンプレート識別子に対するリファレンスを削除することによりデータベース・システムからテナントを削除する方法２０を示す。方法１０を利用して作成されるデータベース・システムのテナントは、（例えば、図３のシステム３０、図５の第２コンピュータ８００のストレージ８１０、図６Ａ−６Ｂのデータベース・システム１２００ａ−ｄ等の）データベース・システムのイミュータブルなストレージに格納されるテナント・データを有することが可能であり、テナント識別子に関連付けられる。
【００４１】
オペレーション２２において、データベース・システムは、テナントを削除するためのリクエストを受信することができる。例えば、コンピュータ６００、セントラル・コンポーネント７００、及び／又は図５に示される第２コンピュータ８００は、テナントを削除するためのリクエストを（例えば、ストレージ８１０から）受信し得る。別の例において、１つ以上のデータベース・システム１２００ａ−１２００ｄが、テナントを削除するためのリクエストを受信してもよい。
【００４２】
オペレーション２４において、データベース・システムは、受信したリクエストに基づいてテナントを削除することができる。幾つかの実装において、他のテナント・データを変更することなく、テナントのメタデータに関連する少なくとも１つのキーを削除することにより、データベース・システムのストレージからメタデータが削除されてもよい。特に、イミュータブルなストレージに格納されている物理的なデータを削除することなく、テナントのメタデータに関連するキー・レンジをイミュータブルなストレージから削除することにより、少なくとも１つのキーが削除されてもよい。
【００４３】
オペレーション２６において、データベース・システムで識別されるテナントに関連するテナント・データを行毎に削除することなく、テナントのテナント識別子に対するリファレンスがデータベース・システムから削除され得る。これは、データベース・システムが、テナント識別子を削除することにより、テナントを迅速且つ正確に削除することを可能にする。いったんテナント識別子が削除されると、データを取り出す又はデータをテナントに書き込むためのデータベース・システムに対する如何なるクエリも不可能にすることができ、なぜならデータベース・システムはテナント識別子の不在によりテナントを特定できないからである。
【００４４】
テンプレート・テナント・メタデータを利用してデータベース・システムのテナントを作成する方法１０、そして図１Ａ−１Ｂに関連して説明されるデータベース、及び図３−６Ｂに関連して説明されるデータベース・システムからテナントを削除する方法２０において、生成又は削除され得るレコードは、マルチテナント・システムのインスタンスにおけるキー・バリュー・ペアとして識別されてもよい。（例えば、図１Ａに関連して上述された方法１０により）データベースにおけるテナンシー（Ｔｅｎａｎｃｙ）が作成されてもよく、テナンシーに関連する承認されたユーザーは、そのテナンシーに関するオペレーションを見る、アクセスする、及び／又は実行することができる。バリュー（値）は、例えば、リレーショナル・データベースのテーブルの行の内容、リレーショナル・データベースのテーブル中の行の身元（ａｎ  ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）、又は適切な他の値であってもよい。キーは、レコードに対する識別子であってもよく、例えば英数字シーケンス等の適切な任意の形式におけるものであってよい。キーの部分は、レコードの内容に関する情報を提供することができる。例えば、キーの一部は、レコードの内容が帰属する帰属先のテナントを固有に識別することができるテナント識別子であってもよい。キーの他の部分は、例えばレコードの値が行の内容である場合に、例えばテーブル番号及び行の身元を識別してもよいし、あるいは値が行の身元である場合に、テーブル番号、テーブルにおけるインデックス番号、及びインデックスされた列（カラム）の身元を識別してもよい。
【００４５】
データベース・システム（例えば、図３に示されるシステム３０、図４Ａ−４Ｅに示されるデータベース・システム５０、又は図６Ａ−６Ｂに示されるデータベース１２００ａ、１２００ｂ、１２００ｃ、及び／又は１２００ｄ）は、所与のレコードのイミュータブルなバージョンとしてトランザクションを格納してもよい。サーバー・システムに既に格納されているレコードの内容のイミュータブルなバージョンは、（もしあったとしても、図１Ｂに関連して上述した方法２０の一部として）その内容がサーバー・システムから削除されるまで不変であり得る。即ち、受信したトランザクションは、レコードの内容を変更するのではなく、サーバー・システムに格納されるべきレコードの内容の新たなバージョンを作成することができる。従って、複数のバージョンのレコード（例えば、異なる内容を有する複数のレコード）について、トランザクション識別子を除いて同じキーを有することが可能であり得る。所与のレコードのバージョンについて他の点で同じキーを利用することは、リレーショナル・データベースに格納されたデータの変更を許容し得る。従って、物理的なレコードの各バージョンはイミュータブルであってもよく；即ち、それは削除されないか、又は何ヶ月、何年、又は何十年にもなり得る任意の長期間にわたって削除されない。例えば、レコードの早期のバージョンに対して（トランザクション・バージョン識別子以外）同じキーを有するレコードの後のバージョンは、そのレコードに対するデータ値の変化（即ち、レコードの内容における変化）を示すことができる。代替的に、トランザクションはレコードを作成する又はレコードを削除してもよい（即ち、内容を作成する又は内容を削除する）。レコードは、「ツームストーン（ｔｏｍｂｓｔｏｎｅ）」（例えば、削除されるべきデータを識別するマーカー）を挿入することにより、（例えば、図１Ｂに示され上述された方法２０の一部として）削除されてもよく、将来的なある時点において、新たなエクステントが書き込まれる可能性があり、そこはもはやツームストーンによってマーキングされたレコードを含まない。
【００４６】
タイム・スタンプ又は他の時間識別子がテナントの作成時に（例えば、図１Ａに関連して説明された方法１０の一部として）作成されてもよい。以後、タイム・スタンプより前に格納されたデータのプールにおけるキーに基づいて適切なバージョンにアクセスすることにより、テナント・データは、タイム・スタンプより前のデータのバージョンのプライマリ・キー・リクエストを解釈することができる。タイム・スタンプの後に作成又は更新されたデータにアクセスする個々のテナントのキーは、テナントにより作成される適切なデータにアクセスするように解釈される。代替的に、タイム・スタンプを利用する代わりに、データベースにおける各トランザクションが、各々の後続トランザクションについて単調に増加する、それに関連する固有のトランザクション番号を有してもよく、システムは、タイム・スタンプの代わりに最近作成したトランザクション識別子を記録してもよい。
【００４７】
図２は開示される対象事項の実装によるデータベース・システム（例えば、図３に示されるシステム３０、図４Ａ−４Ｅに示されるシステム５０、図６Ａ−６Ｂのデータベース・システム１２００ａ−１２００ｄ）で使用されるレコードの例を示す。レコードは、キースペース（ｋｓ）、テナント識別子、オブジェクト識別子（ｏｂｊｅｃｔＩｄ）、及び／又はオブジェクト・キー（ＯｂｊｅｃｔＫｅｙ）によりキー指定されることが可能である。図２に示されるように、レコードは、テナント識別子、ｏｂｊｅｃｔＩＤ、及びｏｂｊｅｃｔＫｅｙを含み得る。レコードのキーは、テナント識別子、ｏｂｊｅｃｔＩＤ、及びｏｂｊｅｃｔＫｅｙを含み得る。開示される対象事項の実装において、キー及び／又はバリューは可変長であってもよい。上述したように、開示される対象事項の実装におけるデータ・エクステントは、キーによりソートされ、コミット時間に応じてＬＳＭツリーにおけるレベルで組織化されてもよい。本願で開示されるデータベース・システムは、レコードの持続的な内容、テナント識別子が根を下ろすシングル・キー・スペース（ａ  ｓｉｎｇｌｅ  ｋｅｙ  ｓｐａｃｅ  ｒｏｏｔｅｄ  ｂｙ  ａ  ｔｅｎａｎｔ  ｉｄｅｎｔｉｆｉｅｒ）を格納するリレーショナル・データベースにおいてパーシステンス仮想化を利用することにより使用され得るイミュータブルなストレージを有し得る。パーシステンスは、エクステントで構成されてもよい。エクステントは、典型的には、データを格納するために使用され得るストレージの連続的な領域である。上述したように、エクステントはイミュータブルであり、キーにより順序付けられ得る。
【００４８】
開示される対象事項の実装において、複数のデータ・エクステント・リファレンスがレベルに編成されてもよい。レベルは、キーにより順序付けられるデータ・エクステント・リファレンスにグループ化され得る単独のキー・レンジをカバーすることができる。
【００４９】
組織されたデータのレベル数を削減及び／又は最小化することは、新たなデータが到着した場合にデータの書き直しを増やすかもしれない。各レベルは最大サイズ閾値を有することができ、レベル・サイジングは指数関数的に増加し得る。サイズ閾値を超える場合、（例えば、図３のシステム３０、図４Ａ−４Ｅのシステム５０、及び／又は図６Ａ−６Ｂに示されるデータベース・システム１２００ａ−１２００ｄ等の）データベース・システムによりマージ・オペレーションが実行されてもよく、その場合において、データはレベルＮからレベルＮ＋１へ併合される。
【００５０】
データがフラッシュ・オペレーションにより持続的にされるまで、データはデータベース・システム（例えば、図６Ｂに示されるメモリ・ストレージ１２３０）のメモリ・ストレージから移行されず、クエリはパーシステンスの最新の観点まで移行する。例えば、フラッシュ・オペレーションにおいて、データは図６Ｂに示されるメモリ・ストレージ１２３０からストレージ１２６０へコピーされる。即ち、フラッシュ・オペレーションにおいて、１つ以上のエクステントがメモリ・ストレージ１２３０からストレージ１２６０（即ち、パーシステント・ストレージ）へ移行される。これは特定のトランザクション・レンジに関するキーの順序で行われてもよい。
【００５１】
図３は開示される対象事項の実装に従って、図１Ａ、１Ｂ、４Ａ−４Ｅに示され且つ本願で説明されるような、新たなテナントを挿入し、テナント・レコードを更新し、及び／又はテナント識別子を削除することによりテナントを削除するシステム例を示す。例えば図２に関連して上述したように、システム３０は所与のレコードのイミュータブルなバージョンとしてトランザクションを格納することができる。システム３０は、単独のコンピューティング・デバイスであってもよいし、あるいは複数の接続されたコンピューティング・デバイスであってもよいし、例えばラップトップ、デスクトップ、個別的なサーバー、サーバー・クラスタ、サーバー・ファーム、又は分散されたサーバー・システムであってもよいし、あるいは仮想コンピューティング・デバイス若しくはシステム、又は物理的及び仮想的なシステムの適切な任意の組み合わせであるとすることができる。簡明化のため、プロセッサ、短期及び長期的なストレージ、オペレーティング・システム、多くのデータベース管理システム等のコンポーネントは示されていない。サーバー・システム３０は、コンピューティング・システム及びネットワーク・インフラストラクチャの一部であってもよいし、あるいは別にコンピューティング・システム及びネットワーク・インフラストラクチャに接続されていてもよく、サーバー・システム３０に類似する他のサーバー・システムを含み得る大規模なサーバー・ネットワークを含んでもよい。幾つかの実装において、システム３０は、図５に示されるコンピュータ６００、セントラル・コンポーネント７００、及び／又は第２コンピュータ８００、及び／又は図６Ａ−６Ｂに示される１つ以上のデータベース・システム１２００ａ−１２００ｄであってもよい。
【００５２】
図３に示されるように、システム３０のアクセス・レイヤ３２はデータベース・ストレージ・エンジン３３を有することができ、データベース・ストレージ・エンジン３３は、コンピューティング・デバイス（図５に示されるコンピュータ６００、及び／又は第２コンピュータ８００）からデータベース・システム（例えば、図５に示されるセントラル・コンポーネント７００、及び／又は図６Ａ−６Ｂに示されるデータベース・システム１２００ａ−１２００ｄ）に関するクエリ及び／又は命令を受信することができる。クエリは、テナントからの特定のデータに関するものであってもよく、及び／又はテナントを追加すること、テナントのデータを挿入及び／又は更新すること、及び／又はテナント識別子を削除することのための命令であってもよい。データベース・ストレージ・エンジン３３は、データベース・システムに関するクエリを受信し、受信したクエリ及び／又は命令に関連するデータを検索するためのサーバー・システム３０におけるハードウェア及びソフトウェアの適切な任意の組み合わせであってもよい。
【００５３】
システム３０は、エクステント・リファレンス３５を有することが可能な仮想化レイヤ３４を含むことが可能であり、エクステント・リファレンス３５はエクステント３７として物理ストレージ３６に格納されているテナント・データを指すことができる。幾つかの実装において、エクステント・リファレンス３５は、図５に示されるセントラル・コンポーネント７００、及び／又は図６Ａ−６Ｂに示されるデータベース・システム１２００ａ−１２００ｄの一部であってもよい。エクステント・リファレンス３５は、データベース・ストレージ・エンジン３３と物理ストレージ３６との間の仮想化レイヤ３４として実行するためにシステムにおけるハードウェア及びソフトウェアの適切な任意の組み合わせであってもよい（例えば、エクステントはエクステント３７の一部として格納されてもよい）。物理ストレージ３６は、半導体メモリ、ソリッド・ステート・ドライブ（ＳＳＤ）、ハード・ディスク・ドライブ、光学メモリ、光学ストレージ・デバイス、その他の適切な任意の物理データ・ストレージ媒体、又はそれらの何らかの組み合わせであってもよい。
【００５４】
新たなテナントが例えば図１Ａに示される上述された方法１０を利用してシステム３０により作成されると、エクステント・リファレンス３５がテナント識別子として作成されることが可能であり、エクステント・リファレンス３５は、物理ストレージ３６においてエクステント３７の一部として格納されているテナント・データを有する新たなテナントに関連付けられることが可能である。
【００５５】
システム３０が、例えば図１Ｂに示される上述された方法２０を利用して、テナントを削除するための命令を受信すると、物理ストレージ３６に格納されているテナント・データを削除することなく、エクステント３７に関連付けられるエクステント・リファレンス３５が削除され得る。
【００５６】
開示される対象事項の実装において、データはシステム３０において仮想化されることが可能であり、仮想化レイヤ３４を利用することによりマッピングされることが可能である。これは、システム３０等のデータベース・システムにおいて新たなテナントを作成するために、テナント・テンプレートを利用することを可能にする。テンプレート・テナント・データのスナップショットが或る時点で取得されることが可能であり、新たなテナントにおけるリファレンス（例えば、エクステント・リファレンス３５）はテンプレート・テナント・データのスナップショットを指し示すことが可能であり、その結果、データはコピーされることを要しない。データの仮想化はまた、データベース・システムにおけるテナントに対するリファレンス（例えば、仮想化レイヤ３４におけるエクステント・リファレンス３５）を削除することにより、テナントの削除を可能にする。
【００５７】
目下開示されている対象事項の実装は、様々なコンポーネント及びネットワーク・アーキテクチャにおいて実現され及びそれらと共に使用されることが可能である。図５は目下開示されている対象事項の実装を実現するために相応しい例示的なコンピュータ６００である。ここで更に詳細に説明されているように、コンピュータ６００は複数のコンピュータのネットワークにおける１つのコンピュータであってもよい。図５に示されるように、コンピュータ６００は、集中した又は分散されたコンポーネント７００（例えば、サーバー、クラウド・サーバー、データベース、クラスタ、アプリケーション・サーバー等）と通信することができる。セントラル・コンポーネント７００は、ストレージ・デバイス８１０を含み得る第２コンピュータ８００等の１つ以上の他のコンピュータと通信することができる。第２コンピュータ８００は、サーバー、クラウド・サーバー等であってもよい。ストレージ８１０は、適切な任意の揮発性及び不揮発性の物理ストレージ媒体の適切な任意の組み合わせであるとすることが可能であり、例えば、ハード・ディスク・ドライブ、ソリッド・ステート・ドライブ、光学媒体、フラッシュ・メモリ、テー部・ドライブ、レジスタ、ランダム・アクセス・メモリ等、又はそれらの任意の組み合わせを含み得る。
【００５８】
データは、適切な任意のファイルシステム又は格納方法又は階層を利用して例えばストレージ８１０に適切な任意のフォーマットで格納され得る。例えば、ストレージ８１０は、複数のレベルを有するログ構造化マージ（ａ  ｌｏｇ  ｓｔｒｕｃｔｕｒｅｄ  ｍｅｒｇｅ：ＬＳＭ）ツリーを利用してデータを格納することができる。更に、図４−５に示されるシステムがマルチテナント・システムである場合、ストレージは、テナントのデータベースの各インスタンスについて、別個のログ構造化マージ・ツリーに組織化されてもよい。即ち、各々のテナントについて別個のデータベース（例えば、ＬＳＭツリー）が存在し得る。代替的に、特定のサーバー又はシステムにおける全てのレコードの内容が、単独のログ構造化マージ・ツリーに格納されてもよく、その場合、本願で開示されるような各テナントのデータ同士を区別するために、レコードのバージョンに関連する固有のテナント識別子が使用されてもよい。より最近のトランザクションは、ツリーの最高地点又は最上位レベルに格納されてもよく、より古いトランザクションはツリーの下位のレベルに格納されてもよい。
【００５９】
セントラル・コンピュータ７００に対して及び／又はそこから取得されるデータは、各々のコンピュータに関して孤立させられてもよく、その結果、コンピュータ６００はコンピュータ８００と情報を共有しなくてもよい。代替的又は追加的に、コンピュータ６００は第２コンピュータ８００と直接的に通信してもよい。
【００６０】
コンピュータ（例えば、ユーザー・コンピュータ、企業コンピュータ等）６００は、コンピュータ６００の主要なコンポーネントを相互接続するバス６１０を含み、主要コンポーネントは、セントラル・プロセッサ６４０、メモリ６７０（典型的にはＲＡＭであるが、ＲＯＭ、フラッシュＲＡＭ等を含んでもよい）、入力／出力コントローラ６８０、ディスプレイ・アダプタを介するタッチスクリーン又はディスプレイ等のユーザー・ディスプレイ６２０、キーボード、マウス、Ｗｉ−Ｆｉ／セルラー無線機、タッチスクリーン、マイクロフォン／スピーカ等の１つ以上のコントローラ及び関連するユーザー入力又はデバイスを含み、Ｉ／Ｏコントローラ６８０に密に結合され得るユーザー入力インターフェース６６０、ハード・ドライブ、フラッシュ・ストレージ、ファイバ・チャネル・ネットワーク、ＳＡＮデバイス、ＳＣＳＩデバイス等の固定ストレージ６３０、光学ディスク、フラッシュ・ドライブ等を制御及び受けるように動作するリムーバブル媒体コンポーネント６５０等である。
【００６１】
バス６１０は、セントラル・プロセッサ６４０とメモリ６７０との間のデータ通信を可能にし、メモリ６７０は、上述したようなリード・オンリ・メモリ（ＲＯＭ）又はフラッシュ・メモリ（何れも図示せず）、ランダム・アクセス・メモリ（ＲＡＭ）（図示せず）を含み得る。ＲＡＭはメイン・メモリを含むことが可能であり、オペレーティング・システム及びアプリケーション・プログラムはメイン・メモリにロードされる。ＲＯＭ又はフラッシュ・メモリは、特に他のコード、ベーシック・インプット・アウトプット・システム（ＢＩＯＳ）を含むことが可能であり、ＢＩＯＳ等はペリフェラル・コンポーネントとの相互作用等の基本ハードウェア動作を制御する。コンピュータ６００に常駐するアプリケーションは、ハード・ディスク・ドライブ（例えば、固定ストレージ６３０）、光学ドライブ、フロッピ・ディスク、又は他のストレージ媒体６５０等のコンピュータ読み取り可能な媒体に格納され得る及びそれによりアクセスされ得る。
【００６２】
固定ストレージ６３０は、コンピュータ６００に統合されてもよいし、あるいは別々であって他のインターフェースを介してアクセスされてもよい。固定ストレージ６３０はストレージ・エリア・ネットワーク（ＳＡＮ）の一部であってもよい。ネットワーク・インターフェース６９０は、電話リンクを介してリモート・サーバーに、インターネット・サービス・プロバイダ（ＩＳＰ）を介してインターネットに直接的な接続を提供してもよいし、あるいはＰＯＰ（ポイント・オブ・プレゼンス）又は他の技術によりインターネットへの直接的なネットワークを介してリモート・サーバーへの直接的なリンクを提供してもよい。ネットワーク・インターフェース６９０は無線技術を利用してそのようなコネクションを提供してもよく、ディジタル・セルラー電話コネクション、セルラー・ディジタル・パケット・データ（ＣＤＰＤ）コネクション、ディジタル衛星データ・コネクション等を提供してもよい。例えば、ネットワーク・インターフェース６９０は、図５に示されるような１つ以上のローカルの、ワイド・エリアの、又は他のネットワークを介して他のコンピュータ及び／又はストレージ・デバイスとコンピュータが通信することを可能にし得る。
【００６３】
多くの他のデバイス又はコンポーネント（図示せず）が類似する方法で接続されてもよい（例えば、データ・キャッシュ・システム、アプリケーション・サーバー、通信ネットワーク・スイッチ、ファイヤウォール・デバイス、認証及び／又は承認サーバー、コンピュータ、及び／又はネットワーク・セキュリティ・システム等）。逆に、本開示を実施するために、図５に示される全てのコンポーネントが存在することは必須でない。コンポーネントは、図示されているものと異なる方法で相互接続され得る。本開示を実装するためのコードは、メモリ６７０、固定ストレージ６３０、リムーバブル媒体６５０、又はリモート・ストレージ・ロケーションのうちの１つ以上等のコンピュータ読み取り可能なストレージ媒体に格納されることが可能である。
【００６４】
図６Ａ−６Ｂは、開示される対象事項の実装による例示的なネットワーク構成を示す。クラウド１２０２により表現されるネットワーク内の異なるノードにおける４つの別々のデータベース・システム１２００ａ−ｄは、ネットワーキング・リンク１２０４を介して互いに及びユーザー（図示せず）と通信する。データベース・システム１２００の各々はデータベースの複数のインスタンスをホストするように動作することが可能であり、各々のインスタンスは特定のテナントにのみアクセスすることができる（例えば、ユーザーはテナントのデータにアクセスすることが承認されている特定のテナントに関連付けられる）。各々のデータベース・システムは、ストレージ・エリア・ネットワーク（図示せず）、負荷バランサ及びバックアップ・サーバーとともに（ファイヤウォール、他のセキュリティ・システム、及び認証システムとともに）、コンピュータのクラスタを構成することができる。任意のシステム１２００における幾つかのインスタンスは、インスタンスにおけるストレージのためにデータを摂取及び提供するためにコンピュータ要素（図示せず）から又はユーザーから受信されるトランザクションを処理及びコミットするライブ又は生成インスタンスであってもよい。
【００６５】
１つ以上のデータベース・システム１２００ａ−１２００ｄは、リクエストが受信される任意の時間にテナント・テンプレート・データを利用して新たなテナントを作成することができる。例えば、システム１２００ｃは、テンプレート・データを格納し得る図６Ａ−６Ｂに示されているような少なくとも１つのストレージ・デバイスを含み得る。例えば、ストレージは、メモリ６７０、固定ストレージ６３０、リムーバブル・メディア６５０、セントラル・コンポーネント７００及び／又は第２コンピュータ８００とともに包含されるストレージ・デバイス、及び／又は１つ以上のデータベース・システム１２００ａ−１２００ｄに関連する１つ以上のストレージ・デバイスを含み得る。テナント・データ及び／又はテナント・テンプレート・データは、テナント識別子に関連する少なくとも１つのストレージ・デバイスのイミュータブルなストレージに格納されてもよい。
【００６６】
図６Ｂは開示される対象事項の実装による個別的なデータベース・システム１２００ａ、１２００ｂ、１２００ｃ又は１２００ｄを示す。データベース・システム１２００ａ−１２００ｄは、（例えば、テナント・データ等の）データのパーシステント・ストレージを提供する１つ以上のストレージ・デバイスを含み得るストレージ１２６０を有し得る。データベース・システム１２００ａ、１２００ｂ、１２００ｃ、１２００ｄは１つ以上のアプリケーション１２１０を含むことができ、アプリケーション１２１０は、１つ以上のストレージ・デバイスであってもよいストレージ１２６０及び／又はノード１２２０からのデータ及び／又は情報を利用することができる。アプリケーション１２１０は顧客関係管理（ＣＲＭ）アプリケーション等を含んでもよい。ストレージ１２６０は、１つ以上のストレージ・デバイスであってもよく、テナント・データを含み得るデータ・エクステント１２７０を格納してもよい。
【００６７】
開示される対象事項の実装はまた、データベース・システムのテナントを作成するシステムを提供することができる。コンピュータ６００、セントラル・コンポーネント７００、第２コンピュータ８００、及び／又は１つ以上のデータベース・システム１２００ａ−１２００ｄに関連のうちの少なくとも１つは、新たなテナントを作成するためのリクエストを受信し、受信したリクエストに基づいて、新たなテナントを作成するためにテンプレート・テナントのテンプレート・テナント・メタデータを選択することができる。新たなテナント識別子は、選択されたテンプレート・テナント・メタデータに基づくことが可能であり、新たなテナントは、テンプレート・テナント・メタデータが新たなテナントに対してアクセス可能にされる時点におけるテンプレート・テナント・メタデータの少なくとも一部分のスナップショットに、新たなテナント識別子を関連付けることにより、作成されることが可能である。ストレージ８１０等の少なくとも１つのストレージ・デバイス、及び／又は１つ以上のデータベース・システム１２００ａ−１２００ｄは、テナント識別子及びテンプレート・テナントに関連するテナント・データを格納することができる。
【００６８】
コンピュータ６００、セントラル・コンポーネント７００、及び／又は１つ以上のデータベース・システム１２００ａ−１２００ｄは、新たなテナント作成時点の後に新たなテナント・により作成された新たなテナント・データを、新たなテナントに関連付けることができる。
【００６９】
コンピュータ６００、セントラル・コンポーネント７００、及び／又は１つ以上のデータベース・システム１２００ａ−１２００ｄは、新たなテナントを形成するためのリクエストのタイプに基づいて、テンプレート・テナントが存在するか否かを判断することにより、テンプレート・テナントのテンプレート・テナント・メタデータを選択することができる。コンピュータ６００、セントラル・コンポーネント７００、及び／又は１つ以上のデータベース・システム１２００ａ−１２００ｄは、新たなテナントが作成される時点における決定されたテンプレート・テナントのテンプレート・テナント・メタデータの少なくとも一部分のスナップショットに、新たなテナント識別子を関連付けることにより、新たなテナントを作成することができる。
【００７０】
新たなテナントが作成された場合に、コンピュータ６００、セントラル・コンポーネント７００、及び／又は１つ以上のデータベース・システム１２００ａ−１２００ｄは、許可の設定、レイアウトの変更、及びユーザー名の変更のうちの少なくとも１つを変更することにより、新たなテナントのテナント・データを変更することができる。
【００７１】
コンピュータ６００、セントラル・コンポーネント７００、及び／又は１つ以上のデータベース・システム１２００ａ−１２００ｄは、データベース・システムのテナントを削除することができる。システムは、テナント識別子に関連するテナント・データを保存するために、ストレージ８１０及び／又はデータベース・システム１２００ａ−１２００ｄ等の少なくとも１つのストレージ・デバイスを含むことができる。コンピュータ６００、セントラル・コンポーネント７００、及び／又は１つ以上のデータベース・システム１２００ａ−１２００ｄは、テナントを削除するためのリクエストを、少なくとも１つのストレージ・デバイスから受信し、受信したリクエストに基づいてテナントのメタデータをデータベース・システムから除去し、テナントのテナント識別子に対するリファレンスをデータベース・システムから除去することができる。これは、データベース・システム内のテナント識別子に関連するテナント・データを行毎に削除することなく実行され得る。
【００７２】
幾つかの実装において、コンピュータ６００、セントラル・コンポーネント７００、及び／又は１つ以上のデータベース・システム１２００ａ−１２００ｄは、他のテナント・データを変更することなく、テナントに関連する少なくとも１つのキーを削除することにより、メタデータを削除することができる。コンピュータ６００、セントラル・コンポーネント７００、及び／又は１つ以上のデータベース・システム１２００ａ−１２００ｄは、ストレージに格納された物理データを削除することなく、テナントのメタデータに関連するキー・レンジをイミュータブルなストレージから削除することにより、少なくとも１つのキーを削除することができる。
【００７３】
開示される対象事項のシステム及び方法は、シングル・テナンシー及び／又はマルチテナンシー・システムに関するものであってよい。マルチテナンシー・システムは、例えば複数のユーザー、ユーザーのグループ、又は組織であり得る様々なテナントが、様々なテナントの間で共有され得るサーバー・システムにおけるソフトウェア・ツール又はインスタンスにより、サーバー・システムにおける各自自身のレコードにアクセスすることを許容し得る。各テナントのレコードの内容は、そのテナントを含むデータベースの一部であってもよい。複数のテナントに関するレコードの内容は全て同じデータベース内に一緒に格納されてもよいが、各テナントはそのテナントに帰属する又はそのテナントによって作成されたレコードの内容にアクセスすることしかできない。これは、例えば別個の複数のサーバー又は複数のサーバー・システムに別々に、テナント各々のレコード内容を保存する必要性無しに、データベース・システムにマルチテナンシーを可能にすることができる。テナントに関するデータベースは、例えばリレーショナル・データベース、階層的データベース、又は適切な他の任意のデータベース・タイプであってもよい。サーバー・システムに保存される全てのレコードは、例えばＬＳＭツリーを含む適切な任意の構造に保存されてよい。
【００７４】
マルチテナント・システムは、各ノードでコンピューティング・システムを有するネットワーク内に分散された複数のサーバー・システムに、様々なテナント・インスタンスを有することができる。各テナントのライブ又はプロダクション・データベース・インスタンスは、１つのコンピュータ・システムで処理されるトランザクションのみを有していてもよい。そのインスタンスのトランザクションを処理するコンピューティング・システムはまた、他のテナントの他のインスタンスのトランザクションを処理してもよい。
【００７５】
より一般的には、目下開示されている対象事項の様々な実装は、コンピュータで実現されるプロセス、及びそれらのプロセスを実施する装置の形式を包含する又は実現されてもよい。実装はまた、フロッピ・ディスケット、ＣＤ−ＲＯＭ、ハード・ドライブ、ＵＳＢ（ユニバーサル・シリアル・バス）ドライブ、他の任意のマシン読み取り可能なストレージ・媒体等の非一時的及び／又は有形の媒体で実現される命令を含むコンピュータ・プログラム・コードを有するコンピュータ・プログラム・プロダクトの形式で実現されてもよく、その場合において、コンピュータ・プログラム・コードがコンピュータによりロードされて実行されると、コンピュータは、開示される対象事項の実装を実施する装置となる。例えば、記憶媒体に保存され、コンピュータにロードされ、及び／又はコンピュータにより実行されるか、又は電気配線又はケーブルにより、光ファイバにより、若しくは電磁放射による等の何らかの電送媒体で伝送されるかによらず、実装はまたコンピュータ・プログラムの形式で実現されてもよく、この場合において、コンピュータ・プログラム・コードがコンピュータにロードされ且つコンピュータにより実行される場合、コンピュータは、開示される対象事項の実装を実施するための装置となる。汎用マイクロプロセッサで実現される場合、コンピュータ・プログラム・コード・セグメントは、特定の論理回路を作るようにマイクロプロセッサを構成する。幾つかの構成では、コンピュータ読み取り可能な記憶媒体に保存されるコンピュータ読み取り可能な命令群は汎用プロセッサによって実装されてもよく、命令群は、汎用プロセッサ又は汎用プロセッサを含むデバイスを、命令を実現又は実行するように構成された専用デバイスに変換することができる。実装は、ハードウェア及び／又はファームウェアにおいて開示される対象事項の実装に従う技術の全部又は一部を実現する汎用マイクロプロセッサ及び／又は特定用途向け集積回路（ＡＳＩＣ）等のプロセッサを含み得るハードウェアを利用して実現されてもよい。プロセッサは、ＲＡＭ、ＲＯＭ、フラッシュ・メモリ、ハード・ディスク等のメモリ、又は電子情報を保存することが可能な他の任意のデバイスに結合されてもよい。メモリは、開示される対象事項の実装による技術を実行するためにプロセッサにより実行されるように構成される命令を保存することができる。
【００７６】
上記の説明は説明の目的で特定の実装に関連して記述されている。しかしながら、上記の例示の議論は、網羅的であるようには意図されておらず、開示された対象事項の実装を、開示された寸分違わない形態に限定するようには意図されていない。上記の教示の観点から多くの修正及び変形が可能である。実装は、開示される対象事項の実装の原理及びそれらの用途を説明するために選択され説明されており、従って、当業者は、これらの実装だけでなく様々な修正を施した様々な実装を、想定される特定の用途に相応しくなり得るように活用することができる。
【図１Ａ】
2020525938.tif 000003
【図１Ｂ】
2020525938.tif 000004
【図２】
2020525938.tif 000005
【図３】
2020525938.tif 000006
【図４Ａ】
2020525938.tif 000007
【図４Ｂ】
2020525938.tif 000008
【図４Ｃ】
2020525938.tif 000009
【図４Ｄ】
2020525938.tif 000010
【図４Ｅ】
2020525938.tif 000011
【図５】
2020525938.tif 000012
【図６Ａ】
2020525938.tif 000013
【図６Ｂ】
2020525938.tif 000014
【国際調査報告】
2020525938.tif 000015
2020525938.tif 000016
2020525938.tif 000017
2020525938.tif 000018
2020525938.tif 000019