(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023184393
(43)【公開日】2023-12-28
(54)【発明の名称】データベースシステムのためのネイティブマルチテナンシ
(51)【国際特許分類】
G06F 16/28 20190101AFI20231221BHJP
【FI】
G06F16/28
【審査請求】有
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2022175630
(22)【出願日】2022-11-01
(31)【優先権主張番号】63/352,779
(32)【優先日】2022-06-16
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】63/352,811
(32)【優先日】2022-06-16
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/892,597
(32)【優先日】2022-08-22
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】300015447
【氏名又は名称】エスアーペー エスエー
【住所又は居所原語表記】Dietmar-Hopp-Allee 16, 69190 Walldorf, Germany
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【弁理士】
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】ミフネア・アンドレイ
(72)【発明者】
【氏名】アレクサンダー・ベーム
(72)【発明者】
【氏名】ノルマン・マイ
(72)【発明者】
【氏名】ウルス・クリングスポーン
(72)【発明者】
【氏名】マイノルフ・ブロック
(72)【発明者】
【氏名】パトリック・フォルカー
(72)【発明者】
【氏名】ヒュンジュン・キム
(72)【発明者】
【氏名】トルシュテン・グリーブ
(72)【発明者】
【氏名】ヨナタン・ブレグラー
(72)【発明者】
【氏名】ジェヨン・チェ
(72)【発明者】
【氏名】マルティン・キッテル
(72)【発明者】
【氏名】ヨン・シク・クウォン
(72)【発明者】
【氏名】ウーヴェ・ハン
(72)【発明者】
【氏名】ヘニング・ザン
(72)【発明者】
【氏名】メラニー・ハンドレック
(72)【発明者】
【氏名】ホルガー・マック
(72)【発明者】
【氏名】ウンサン・キム
(72)【発明者】
【氏名】フランク・レンケス
(72)【発明者】
【氏名】ジュチャン・リー
(72)【発明者】
【氏名】マルティン・シンデヴォルフ
(72)【発明者】
【氏名】イヴァン・ボウマン
(72)【発明者】
【氏名】ラース・ダンネッカー
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175AA01
5B175BA01
5B175EA04
(57)【要約】
【課題】データベースインスタンスレベルの機能をテナントレベルで提供するデータベースシステムを提供すること。
【解決手段】システムおよび方法は、データベースインスタンス内へのテナントオブジェクトの第1のインスタンスの作成と、前記第1のインスタンスの、前記第1のインスタンスに関連する第1のデータを含む第1の複数のデータベースアーティファクトとの関連付けと、データベースインスタンス内へのテナントオブジェクトの第2のインスタンスの作成と、前記第2のインスタンスの、前記第2のインスタンスに関連する第2のデータを含む第2の複数のデータベースアーティファクトとの関連付けと、前記第1のインスタンスに関連する第1のデータに関するクエリ、および前記第2のインスタンスに関連する第2のデータに関するクエリの受信、およびそれらのクエリへの応答とを含む。
【選択図】
図6
【特許請求の範囲】
【請求項1】
データベースシステムであって、
テナントオブジェクトおよび複数のデータベースアーティファクトを定義するメタデータ、
前記テナントオブジェクトの第1のインスタンスであって、前記テナントオブジェクトの前記第1のインスタンスに関連する第1のデータを含む第1の複数の前記データベースアーティファクトと関連付けられた、第1のインスタンス、ならびに
前記テナントオブジェクトの第2のインスタンスであって、前記テナントオブジェクトの前記第2のインスタンスに関連する第2のデータを含む第2の複数の前記データベースアーティファクトと関連付けられた、第2のインスタンス
を格納するメモリと、
データベースインスタンスのプログラムコードを実行するための処理装置であって、前記プログラムコードが、前記システムに、前記テナントオブジェクトの前記第1のインスタンスに関連する前記第1のデータに関するクエリ、および前記テナントオブジェクトの前記第2のインスタンスに関連する前記第2のデータに関するクエリを受信し、それに応答させるように実行可能である、処理装置と
を備える、データベースシステム。
【請求項2】
前記テナントオブジェクトの前記第1のインスタンスに関連する第1の永続化データ、および前記テナントオブジェクトの前記第2のインスタンスに関連する第2の永続化データを記憶する、永続的記憶システムを備える、請求項1に記載のシステム。
【請求項3】
前記第1の永続化データが、前記テナントオブジェクトの前記第1のインスタンスに関連する第1の暗号化キーを使用して暗号化され、前記第2の永続化データが、前記テナントオブジェクトの前記第2のインスタンスに関連する第2の暗号化キーを使用して暗号化される、請求項2に記載のシステム。
【請求項4】
前記永続的記憶システムが、前記テナントオブジェクトの前記第1のインスタンスにも前記テナントオブジェクトの前記第2のインスタンスにも関連しない第3の永続化データを記憶し、前記第3の永続化データが、第3の暗号化キーを使用して暗号化され、前記メタデータが、前記第3の暗号化キーを使用して暗号化される、請求項3に記載のシステム。
【請求項5】
前記プログラムコードが、前記システムに、前記テナントオブジェクトの前記第1のインスタンスおよび前記第1の複数の前記データベースアーティファクトを、第2のデータベースインスタンスに移動せよとの要求を受信し、それに応答させるように実行可能であり、前記テナントオブジェクトの前記第2のインスタンスおよび前記第2の複数の前記データベースアーティファクトが、前記第2のデータベースインスタンスに移動されない、請求項1に記載のシステム。
【請求項6】
前記プログラムコードが、前記システムに、前記テナントオブジェクトの前記第1のインスタンスおよび前記第1の複数の前記データベースアーティファクトを、バックアップからリストアせよとの要求を受信し、それに応答させるように実行可能であり、前記テナントオブジェクトの前記第2のインスタンスおよび前記第2の複数の前記データベースアーティファクトが、前記バックアップからリストアされない、請求項1に記載のシステム。
【請求項7】
前記プログラムコードが、前記システムに、第1のリソース消費限度を前記テナントオブジェクトの前記第1のインスタンスと関連付け、かつ第2のリソース消費限度を前記テナントオブジェクトの前記第2のインスタンスと関連付けよとの要求を受信し、それに応答させるように実行可能であり、前記第1のリソース消費限度が前記第2のリソース消費限度とは異なる、請求項1に記載のシステム。
【請求項8】
方法であって、
データベースインスタンス内にテナントオブジェクトの第1のインスタンスを作成するステップと、
前記テナントオブジェクトの前記第1のインスタンスを、前記テナントオブジェクトの前記第1のインスタンスに関連する第1のデータを含む第1の複数のデータベースアーティファクトと関連付けるステップと、
前記データベースインスタンス内に前記テナントオブジェクトの第2のインスタンスを作成するステップと、
前記テナントオブジェクトの前記第2のインスタンスを、前記テナントオブジェクトの前記第2のインスタンスに関連する第2のデータを含む第2の複数のデータベースアーティファクトと関連付けるステップと、
前記テナントオブジェクトの前記第1のインスタンスに関連する前記第1のデータに関するクエリ、および前記テナントオブジェクトの前記第2のインスタンスに関連する前記第2のデータに関するクエリを受信し、それに応答するステップと
を含む、方法。
【請求項9】
前記テナントオブジェクトの前記第1のインスタンスに関連する第1の永続化データ、および前記テナントオブジェクトの前記第2のインスタンスに関連する第2の永続化データを、永続的記憶システム内に記憶させるステップをさらに含む、請求項8に記載の方法。
【請求項10】
前記第1の永続化データが、前記テナントオブジェクトの前記第1のインスタンスに関連する第1の暗号化キーを使用して暗号化され、前記第2の永続化データが、前記テナントオブジェクトの前記第2のインスタンスに関連する第2の暗号化キーを使用して暗号化される、請求項9に記載の方法。
【請求項11】
前記テナントオブジェクトの前記第1のインスタンスにも前記テナントオブジェクトの前記第2のインスタンスにも関連しない第3の永続化データ、ならびに前記第1の複数のデータベースアーティファクトおよび前記第2の複数のデータベースアーティファクトを定義するメタデータを、第3の暗号化キーを使用して暗号化するステップと、暗号化された前記第3の永続化データおよび前記メタデータを、前記永続的記憶システム内に記憶させるステップとをさらに含む、請求項10に記載の方法。
【請求項12】
前記テナントオブジェクトの前記第1のインスタンスおよび前記第1の複数のデータベースアーティファクトを、第2のデータベースインスタンスに移動せよとの要求を受信するステップと、
前記要求に応答して、前記テナントオブジェクトの前記第1のインスタンスおよび前記第1の複数のデータベースアーティファクトを、前記第2のデータベースインスタンスに移動させるステップと
をさらに含み、前記テナントオブジェクトの前記第2のインスタンスおよび前記第2の複数のデータベースアーティファクトが、前記第2のデータベースインスタンスに移動されない、請求項8に記載の方法。
【請求項13】
前記テナントオブジェクトの前記第1のインスタンスおよび前記第1の複数のデータベースアーティファクトを、バックアップからリストアせよとの要求を受信するステップと、
前記要求に応答して、前記テナントオブジェクトの前記第1のインスタンスおよび前記第1の複数のデータベースアーティファクトを、前記バックアップからリストアするステップと
をさらに含み、前記テナントオブジェクトの前記第2のインスタンスおよび前記第2の複数のデータベースアーティファクトが、前記バックアップからリストアされない、請求項8に記載の方法。
【請求項14】
第1のリソース消費限度を前記テナントオブジェクトの前記第1のインスタンスと関連付け、かつ第2のリソース消費限度を前記テナントオブジェクトの前記第2のインスタンスと関連付けよとの要求を受信するステップと、
前記要求に応答して、第1のリソース消費限度を前記テナントオブジェクトの前記第1のインスタンスと関連付け、かつ第2のリソース消費限度を前記テナントオブジェクトの前記第2のインスタンスと関連付けるステップと
をさらに含み、前記第1のリソース消費限度が前記第2のリソース消費限度とは異なる、請求項8に記載の方法。
【請求項15】
非一時的コンピュータ可読媒体であって、プログラムコードを記憶し、前記プログラムコードが、1つまたは複数の処理装置によって、コンピューティングシステムに、
データベースインスタンス内にテナントオブジェクトの第1のインスタンスを作成することと、
前記テナントオブジェクトの前記第1のインスタンスを、前記テナントオブジェクトの前記第1のインスタンスに関連する第1のデータを含む第1の複数のデータベースアーティファクトと関連付けることと、
前記データベースインスタンス内に前記テナントオブジェクトの第2のインスタンスを作成することと、
前記テナントオブジェクトの前記第2のインスタンスを、前記テナントオブジェクトの前記第2のインスタンスに関連する第2のデータを含む第2の複数のデータベースアーティファクトと関連付けることと、
前記テナントオブジェクトの前記第1のインスタンスに関連する前記第1のデータに関するクエリ、および前記テナントオブジェクトの前記第2のインスタンスに関連する前記第2のデータに関するクエリを受信し、それに応答することと
を行わせるように実行可能である、非一時的コンピュータ可読媒体。
【請求項16】
前記プログラムコードが、1つまたは複数の処理装置によって、前記コンピューティングシステムに、
前記テナントオブジェクトの前記第1のインスタンスに関連する第1の永続化データ、および前記テナントオブジェクトの前記第2のインスタンスに関連する第2の永続化データを、永続的記憶システム内に記憶させること
を行わせるようにさらに実行可能であり、
前記第1の永続化データが、前記テナントオブジェクトの前記第1のインスタンスに関連する第1の暗号化キーを使用して暗号化され、
前記第2の永続化データが、前記テナントオブジェクトの前記第2のインスタンスに関連する第2の暗号化キーを使用して暗号化される、
請求項15に記載の媒体。
【請求項17】
前記プログラムコードが、1つまたは複数の処理装置によって、前記コンピューティングシステムに、
前記テナントオブジェクトの前記第1のインスタンスにも前記テナントオブジェクトの前記第2のインスタンスにも関連しない第3の永続化データ、ならびに前記第1の複数のデータベースアーティファクトおよび前記第2の複数のデータベースアーティファクトを定義するメタデータを、第3の暗号化キーを使用して暗号化することと、
暗号化された前記第3の永続化データおよび前記メタデータを、前記永続的記憶システム内に記憶させることと
を行わせるようにさらに実行可能である、請求項16に記載の媒体。
【請求項18】
前記プログラムコードが、1つまたは複数の処理装置によって、前記コンピューティングシステムに、
前記テナントオブジェクトの前記第1のインスタンスおよび前記第1の複数のデータベースアーティファクトを、第2のデータベースインスタンスに移動せよとの要求を受信することと、
前記要求に応答して、前記テナントオブジェクトの前記第1のインスタンスおよび前記第1の複数のデータベースアーティファクトを、前記第2のデータベースインスタンスに移動させることと
を行わせるようにさらに実行可能であり、
前記テナントオブジェクトの前記第2のインスタンスおよび前記第2の複数のデータベースアーティファクトが、前記第2のデータベースインスタンスに移動されない、
請求項15に記載の媒体。
【請求項19】
前記プログラムコードが、1つまたは複数の処理装置によって、前記コンピューティングシステムに、
前記テナントオブジェクトの前記第1のインスタンスおよび前記第1の複数のデータベースアーティファクトを、バックアップからリストアせよとの要求を受信することと、
前記要求に応答して、前記テナントオブジェクトの前記第1のインスタンスおよび前記第1の複数のデータベースアーティファクトを、前記バックアップからリストアすることと
を行わせるようにさらに実行可能であり、
前記テナントオブジェクトの前記第2のインスタンスおよび前記第2の複数のデータベースアーティファクトが、前記バックアップからリストアされない、
請求項15に記載の媒体。
【請求項20】
前記プログラムコードが、1つまたは複数の処理装置によって、前記コンピューティングシステムに、
第1のリソース消費限度を前記テナントオブジェクトの前記第1のインスタンスと関連付け、かつ第2のリソース消費限度を前記テナントオブジェクトの前記第2のインスタンスと関連付けよとの要求を受信することと、
前記要求に応答して、第1のリソース消費限度を前記テナントオブジェクトの前記第1のインスタンスと関連付け、かつ第2のリソース消費限度を前記テナントオブジェクトの前記第2のインスタンスと関連付けることと
を行わせるようにさらに実行可能であり、
前記第1のリソース消費限度が前記第2のリソース消費限度とは異なる、
請求項15に記載の媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、その内容全体があらゆる目的のために参照により本明細書に組み込まれている、2022年6月16日に出願した米国仮特許出願第63/352,779号および米国仮特許出願第63/352,811号の優先権を主張するものである。
【背景技術】
【0002】
マルチテナンシは、異種のユーザグループ間でのコンピューティングリソースの共有を容易にするソフトウェアアーキテクチャパターンである。例えば、単一のマルチテナントアプリケーション(例えばサービスとしてのソフトウェア(SaaS)アプリケーション)が、単一のソフトウェアインスタンス内の複数のエンドユーザグループ(すなわちカスタマ)にサービスすることができる。そのようなソフトウェアインスタンスは、カスタマごとに1つのソフトウェアインスタンスをプロビジョニングするために必要になるはずであるよりもはるかに少ないコンピューティングリソース量(computing resource footprint)を使用する。したがって、マルチテナンシは多大な費用便益をもたらすことができる。
【0003】
マルチテナントアーキテクチャにおける各カスタマのデータは、典型的には、基礎をなすデータ層内の対応するテナントにマッピングされる。このマッピングにより、データ層内でのデータの論理的分離が可能になり、マルチテナントアプリケーションによるデータ層へのアクセスが容易になる。一部のマルチテナントアーキテクチャでは、各テナントのデータは、同一コンピューティングシステム(例えばラックサーバ)内で実行されている異なるデータベースインスタンスによって管理される。これらのアーキテクチャは、テナントデータの優れた分離をもたらすが、テナントごとに完全なデータベースインスタンスを必要とすることは、いくつかのシナリオでは、費用効率が悪い場合がある。例えば、最小データベースインスタンスは、32Gbのメモリを消費することがあり、これは、小規模テナントによって必要とされるはずであるよりも著しく多いコンピューティングリソースに相当することがある。
【0004】
他のマルチテナントデータアーキテクチャでは、単一のデータベースインスタンスを使用して、複数のテナントのデータを管理する。そのようなアーキテクチャにおけるデータは物理的に分離されていないので、マルチテナントアプリケーションは、テナントを認識した形でデータを追跡し管理する役割を担う。例えば、データベースシステムは、全てのテナントに対して単一のインスタンスの1つのスキーマを使用することができ、その場合、各テナントのデータは、弁別可能なカラムを介してパーティショニングされる。マルチテナントアプリケーションは、弁別可能なカラムの値を使用して、特定のテナントに属するデータを識別する。一方、データベースのほうは、複数のテナントの存在を認識しておらず、シングルテナントアプリケーションによってアクセスされている場合と同様に動作する。
【0005】
データベースシステムは、有利には、その中に記憶されたデータの、暗号化、バックアップ/リストア、複製、および移動を提供する。
【発明の概要】
【発明が解決しようとする課題】
【0006】
そのようなデータベースインスタンスレベルの機能をテナントレベルで提供するデータベースシステムが、必要とされているものである。
【図面の簡単な説明】
【0007】
【
図1】いくつかの実施形態によるネイティブマルチテナンシを提供するデータベースシステムのブロック図である。
【
図2】いくつかの実施形態によるネイティブマルチテナンシを提供するデータベースシステムのブロック図である。
【
図3】いくつかの実施形態によるネイティブマルチテナンシを提供するクラウドベースのデータベースアーキテクチャのブロック図である。
【
図4】いくつかの実施形態によるネイティブマルチテナンシを提供するデータベースシステムのブロック図である。
【
図5】いくつかの実施形態に従ってクラウドデータベースインスタンス内にテナントを作成するためのプロセスのフロー図である。
【
図6】いくつかの実施形態によるネイティブマルチテナンシおよびテナントレベル暗号化を提供するデータベースシステムのブロック図である。
【
図7】いくつかの実施形態によるクラウドベースのシステムのブロック図である。
【発明を実施するための形態】
【0008】
以下の説明は、説明される実施形態を当業者が作製し使用できるようにするために提供されている。しかし、当業者にはさまざまな修正形態が容易に明らかとなろう。
【0009】
いくつかの実施形態によれば、ネイティブマルチテナントデータベースシステムは、アプリケーション層上へのマルチテナントアーキテクチャの実装を容易にする、データベースレベルのテナントオブジェクト(例えばデータベースカタログオブジェクト)を含む。テナントオブジェクトは、テナントに付与されたデータならびにメタデータのアーティファクトの、論理的な集まりである。テナントは、ファーストクラス(first-class)データベースオブジェクト(すなわち他のどんなデータベースエンティティからも独立した識別情報を有する)として公開されることが可能である。
【0010】
テナントオブジェクトの特定のインスタンス化物(すなわち特定のテナント)に付与されるデータベースアーティファクトとしては、それらに限定されないが、1つまたは複数のスキーマ、テーブル、およびパーティションのデータ、ならびにテナントのテーブル、仮想テーブル、キャッシュ、リモートソース、テナントのデータベースオブジェクトのリソース使用の管理に使用されるワークロードクラス、およびデータベースユーザに関するビューを定義する、メタデータがあり得る。有利には、テナントのライフサイクルは、その付与されたデータベースアーティファクトのライフサイクルとは切り離されてよい。しかし、いくつかの実施形態では、データベースインスタンスからテナントをドロップすると、そのテナントに付与されたアーティファクトが、データベースインスタンスの別のテナントにそれらのアーティファクトが付与されていない限り、ドロップするという結果となる。
【0011】
ネイティブマルチテナントデータベースシステムは、1つまたは複数のデータベースインスタンス、全てのテナントのデータ、およびデータを処理するためのエンジンを含むことができる。この単一のシステムは、全てのテナントのデータのための単一のパーシステンス(persistence)も含む。複数の独立したテナント、もっと正確に言えばカスタマが、単一のインスタンス上にホストされてコンピューティングリソースを共有できるようにすることによって、データベースインスタンスへの新たなテナントのデプロイメントに付随する限界費用はほぼゼロとなる。後者は、異なるテナント間の分離の低下という犠牲の下に成り立つものである。さらに、実施形態は、個別のデータベースインスタンスをプロビジョニングするのに必要となる粒度よりも細かな粒度を設けることによって、ペイパーユースモデル(pay-per-use model)を可能にする。
【0012】
上述した論理的分離よりも強力なデータ分離をテナントが必要とするケースでは、テナントは、データベースインスタンスの唯一のテナントとしてデプロイされることが可能である。そのような構成は、マルチテナンシの費用便益に十分にあずかるとは限らないので、唯一のテナントに課される価格は、そうでない場合よりも高くなることがある。
【0013】
いくつかの実施形態によるデータベースシステムは、普通ならアプリケーションによって実施される必要のあるテナントレベルのデータベース操作を求める要求をサポートする。これらの操作は、テナント作成、テナントドロップ、テナント移動、バックアップからのテナントリストア、テナント複製、テナントサイズ変更、およびテナントリソース制限を含むことができる。いくつかの実施形態では、共有サービスが(例えばRESTを介して)APIを公開し、これらのAPIが、マルチテナントアプリケーションによって、これらのテナントレベルの操作をデータベースシステムに、例えば関連するテナントidを使用して要求するために呼び出される。現在のデータベースシステムDDLが、テナントへのデータベースアーティファクトの付与をサポートするように拡張されてよい。
【0014】
テナントレベルの複製操作は、新たなカスタマを組み込んで、新たなカスタマにテンプレートデータを提供するのに有用となり得る。複製操作は、テナント作成の一形態である。
【0015】
いくつかの実施形態は、時点データ(point-in-time data)のテナントレベルの回復を提供する。この回復は、全てのカスタマのデータ(すなわちデータベースインスタンス全体のデータ)ではなく、特定のテナントのデータを回復させるものである。例えば、あるテナントのデータが破損状態になった場合、破損したテナントのデータのみが回復される必要がある。
【0016】
いくつかの実施形態によれば、あるユーザは、テナントに付与されるアーティファクトを定義することだけができ、別のユーザは、複製/移動操作を実施することだけを許容される。そうでない場合は、悪意あるアドミニストレータが、テナントを作成し、テナントにオブジェクトを付与し、テナントのコンテンツを、悪意あるアドミニストレータによって完全に制御されている別のシステムに複製するおそれがある。加えて、悪意あるアドミニストレータは、テナントをドロップし、そのテナントに付与された全てのオブジェクトを削除するおそれがある。
【0017】
実施形態は、テナントに付与されているテーブルのデータを暗号化するためのテナントレベルの暗号化を提供することができる。この機能は、各テナントの永続化データ(すなわち保存データ)を、データベースインスタンス内でこのデータが他のテナントのデータから物理的に隔離されていないにもかかわらず、個別のテナント固有キーで暗号化するものである。したがって、実施形態は、カスタマ固有キーのリポジトリへのデータベースインスタンスアクセスを可能にすることができる。
【0018】
共有のデータおよびメタデータ(例えばデータベースカタログ、ユーザ、共有コンテナ)は、データベースインスタンス固有キーを使用して、パーシステンス層内に暗号化されることが可能である。対照的に、従来のシステムでは、単一のデータベースインスタンス固有キーを使用したパーシステンス層全体の暗号化が提供されていた。
【0019】
テナントのロケーション、すなわちテナントおよびそのアーティファクトがその中に存在するデータベースインスタンスは、テナントの特性の1つであり、マルチテナントアプリケーションによって決定される。アプリケーションは、テナントのデータサイズおよびリソース消費が拡大または縮小するときに、あるデータベースインスタンスから異なるデータベースインスタンスにテナントを移動させることを決定することもできる。この移動操作は、クラウドベースの実装形態における弾力性をもたらし、好ましくは、ダウンタイムを回避するためにオンラインで実施される。暗号化などのテナント固有セキュリティ特性は、テナント移動操作の間、保全されるべきである。
【0020】
データベースリソース消費割当量を、テナントレベルで定義することができる。これらの割当量は、「ノイジーネイバー」問題に対処することができる。テナントセッション変数を用いて、メモリ、スレッド、ネットワークI/O、ディスクI/O、ディスクサイズなどに関するテナント固有使用限度を、技術的インフラストラクチャのそのような使用を測定し制御することのできる能力に応じて、定義することができる。
【0021】
図1は、いくつかの実施形態によるシステム100のブロック図である。システム100の、また本明細書において描かれている他の全てのアーキテクチャの、図示の要素は、知られているかまたは知られるようになるコンピューティングハードウェアおよび/またはプロセッサ実行可能プログラムコードの任意の適切な組合せを使用して実装されてよい。そのような組合せは、1つまたは複数のプログラマブルプロセッサ(マイクロプロセッサ、中央処理装置、マイクロプロセッサコア、実行スレッド)、1つまたは複数の非一時的電子記憶媒体、およびプロセッサ実行可能プログラムコードを含むことができる。いくつかの実施形態では、システム100の2つ以上の要素が、単一のコンピューティングデバイスによって実装され、かつ/またはシステム100の2つ以上の要素が、同じ場所に配置される。システム100の1つまたは複数の要素は、クラウドベースのリソース、ならびに/またはコンピューティングリソースを要求、必要性、価格、および/もしくは他の任意のメトリックに従って弾力的に配分する他のシステムを使用して、クラウドサービス(例えばサービスとしてのソフトウェア、サービスとしてのプラットフォーム)として実装されてよい。
【0022】
データベースインスタンス110は、いくつかの実施形態によるネイティブマルチテナンシを提供する。データベースインスタンス110は、1つまたは複数のコンピュータサーバまたは仮想マシンを含む、ハードウェアとソフトウェアの任意の適切な組合せ上にプロビジョニングされてよい。いくつかの実施形態では、データベースインスタンス110は、ソフトウェアコンテナ内で実行されるコンテナ化アプリケーションを備える。そのようなコンテナは、当技術分野で知られているように、クラスタ(例えばKubernetesクラスタ)の1つまたは複数のノードによって実装されてよい。
【0023】
データベースインスタンス110は、揮発性(例えばランダムアクセス)メモリ112内に記憶されたデータおよびメタデータを処理するためのデータエンジン111を含む。メモリ112は、データベースインスタンス110に割り当てられた全てのテナントのデータ118およびメタデータ119を含む。システム100の各テナントについては、カスタマに対応するものと説明され、ここで、カスタマは、企業、部門、ワークグループ、または他の任意のユーザグループとすることができる。テナントは、所与のカスタマの特定のクラウドリソースサブスクリプション/クラウドサービスサブスクリプションに対応してよい。この点に関して、1つのカスタマには、2つ以上のサブスクリプション、したがって2つ以上のテナントが関連してよい。
【0024】
具体的には、メモリ112は、テナント'A'のテナントインスタンス114およびテナント'B'のテナントインスタンス116を含む。各テナントインスタンス114および116は、メタデータ119内で定義されたテナントオブジェクトのインスタンスである。テナントインスタンス114および116は、データ118内に記憶されることが可能であるが、理解しやすいように、データ118とは別に描かれている。
【0025】
上述したように、各テナントインスタンス114および116は、データベースアーティファクトの集まりである。各テナントインスタンス114および116に付与されたアーティファクトは、データ118およびメタデータ119の中に記憶される。したがって、テナントインスタンス114に付与されたアーティファクトA 115およびテナントインスタンス116に付与されたアーティファクトB 117は、データ118およびメタデータ119のデータベースアーティファクトへの参照を表すために、点線を使用して描かれている。テナントインスタンスに付与されるデータベースアーティファクトとしては、例えば、1つまたは複数のスキーマ、テーブル、およびパーティションがあり得る。データベースアーティファクトは、テナントのテーブル、仮想テーブル、キャッシュ、リモートソース、テナントのデータベースオブジェクトのリソース使用の管理に使用されるワークロードクラス、およびデータベースユーザに関するビューを定義する、メタデータを含むこともできる。
【0026】
データベースインスタンス110は、割り当てられた全てのテナント(ならびに別に描かれたインスタンス114および116)のデータ118およびメタデータ119を永続化するためのパーシステンス113も含む。パーシステンス113は、分散データ記憶システムを含むがそれに限定されない、知られているかまたは知られるようになる任意の永続的データ記憶システムを使用して実装されてよい。パーシステンス113は、トランザクションログおよび当技術分野で知られている他のデータベースアーティファクトを永続化することができる。
【0027】
それにより、データベースインスタンス110は、そのデータベースインスタンスの全てのテナントのデータおよびメタデータ、データを処理するためのエンジン、ならびにデータおよびメタデータのための単一のパーシステンスを含む、単一のデータサーバを提供する。そのような単一のデータベースインスタンス上に複数の独立したテナントをホストすると、ほぼゼロの限界費用でコンピューティングリソースを容易に共有できるようになる。
【0028】
マルチテナントアプリケーション120は、SaaSアプリケーションを備えてよいが、実施形態はそれに限定されない。マルチテナントアプリケーション120は、1つまたは複数のコンピュータサーバまたは仮想マシン上にプロビジョニングされてよく、ソフトウェアコンテナ内で実行されるコンテナ化アプリケーションを備えてよい。マルチテナントアプリケーション120は、カスタマ130のユーザ135およびカスタマ140のユーザ145から受信した入力に基づいて、クエリ(例えばSQL、MDX)をデータベースインスタンス110に発行する。
【0029】
カスタマA 130はデータベースインスタンス110のテナントA 114に対応し、カスタマB 140はデータベースインスタンス110のテナントB 116に対応するものと仮定する。マルチテナントアプリケーション120は、カスタマA 130のユーザ135からの入力を受信すると、テナントA 114に関連することを示すクエリをデータベースインスタンス110に送信することができる。同様に、マルチテナントアプリケーション120は、カスタマB 140のユーザ145からの入力を受信すると、クエリを、クエリがテナントB 116に関連することを示す標識とともに、データベースインスタンス110に送信することができる。データベースインスタンス110は、マルチテナントアプリケーション120からのクエリを受信すると、データエンジン111と、クエリが関連するテナントに付与されたアーティファクトとを使用して、クエリを処理する。
【0030】
したがって、マルチテナントアプリケーション120は、入力の受信元であるユーザに対応するテナントを決定することができる。例えば、各ユーザは、テナント固有サブスクリプションを使用して、マルチテナントアプリケーション120にログオンすることができる。したがって、マルチテナントアプリケーション120は、ユーザを、そのユーザがログオンしたサブスクリプションのテナントと関連付ける。別の例では、ユーザとマルチテナントアプリケーション120との間の通信が、テナント識別トークンを含むことができる。
【0031】
マルチテナントアプリケーション120はまた、どのテナントがどのデータベースインスタンス上に配置されているかを認識している。この点に関して、マルチテナントアプリケーション120は、データベースインスタンスのプロビジョニング、およびプロビジョニングされたデータベースインスタンス上へのテナントの作成を要求することができる。マルチテナントアプリケーション120は、所与のテナントに関連するユーザからの入力を受信すると、その所与のテナントを含み、したがって、対応するクエリをそれに向けて送り出すべき、データベースインスタンスを決定することができる。
【0032】
マルチテナントアプリケーション120は、データベースインスタンスのプロビジョニング、およびプロビジョニングされたデータベースインスタンス上へのテナントの作成を、カスタマキーユーザが受信した入力に基づいて要求することができる。いくつかの実施形態によれば、マルチテナントアプリケーション120は、プロビジョニングサービス(
図1に図示せず)を呼び出して、新たなデータベースインスタンスをプロビジョニングする。マルチテナントアプリケーション120は、テナントライフサイクル管理サービスのREST API(
図1に図示せず)を呼び出して、データベースインスタンス上にテナントを作成し、データベースインスタンスからテナントをドロップし、テナントをデータベースインスタンスに移動させ、データベースバックアップからテナントを回復させ、データベースインスタンスにテナントを複製し(すなわちテンプレートとして作成し)、データベースインスタンス上のテナントをサイズ変更し、データベースインスタンス上のテナントリソース限度を定義する、などしてもよい。
【0033】
図2は、マルチテナントアプリケーション120がデータベースインスタンス110に加えてデータベースインスタンス210のプロビジョニングを要求した、システム200を示す。データベースインスタンス210は、それ自体のデータエンジン211、メモリ212、およびパーシステンス213を含む。
【0034】
マルチテナントアプリケーション120はまた、データベースインスタンス210上へのテナントCの作成も要求している。テナントCは、カスタマC 230に対応する。したがって、メモリ212は、アーティファクトC 215に付与されたテナントCのテナントオブジェクトインスタンス214を含む。アーティファクトC 215は、メモリ212のデータ216およびメタデータ217内に記憶されたデータおよびメタデータを備える。したがって、マルチテナントアプリケーション120は、カスタマC 230のユーザ235からの入力を受信すると、結果として生じる任意のクエリをデータベースインスタンス210に向けて送り出し、というのも、マルチテナントアプリケーション120は、データベースインスタンス210がカスタマC 230に対応するテナントC 214を含むことを認識しているためである。
【0035】
いくつかの実施形態によれば、各テナントは、それ自体のデータベースインスタンス内で一意である名前によって識別される。したがって、テナントC 214はテナントAと命名されてよく、というのも、データベースインスタンス110と210は独立に動作するためである。マルチテナントアプリケーションは、複数のデータベースインスタンスをプロビジョニングし、テナント移動操作を通じてそのテナントに弾力性をもたらすことができる。そのようなケースでは、アプリケーションは、確実に、ターゲットデータベースインスタンスへのテナントの移動によりターゲットデータベースインスタンス上にテナント名の競合が導入されないようにすべきである。
【0036】
図3は、マルチテナントアプリケーション310がインスタンスファーム320と関連付けられているシステム300を示す。ファーム320は、インスタンス321および325を含むいくつかのデータベースインスタンスを含んでいる。ファーム320は、マルチテナントアプリケーション310がその上でデータベースインスタンスをプロビジョニングし、そのデータベースインスタンス上にテナントを作成することのできる、実行環境を備えることができる。
【0037】
マルチテナントアプリケーション310は、ファーム320内にプロビジョニングされたデータベースインスタンス、および各データベースインスタンス上にあるテナントを認識している。ファーム320の各データベースインスタンスは、そのデータベースインスタンスのテナント、ならびにそのデータベースインスタンスが記憶するユーザ、スキーマ、および他のメタデータを認識している。しかし、ファーム320の所与のデータベースインスタンスは、ファーム320の他のデータベースインスタンスのテナント、スキーマなどを認識していない。
【0038】
マルチテナントアプリケーション310は、ファーム320のデータベースインスタンスごとにメモリサイズおよびパーシステンスサイズを指定し、これらのサイズを所望の通りに拡大または縮小することができる。マルチテナントアプリケーション310は、ファーム320のデータベースインスタンス上にテナントを作成し、その初期サイズを指定し、テナントサイズを所望の通りに拡大または縮小することもできる。上述したように、マルチテナントアプリケーション310は、データベースインスタンスからテナントをドロップすることもでき、あるいはデータベースインスタンスにテナントを移動させることもできる。
【0039】
システム300の各データベースインスタンスは、クラスタ(例えばKubernetesクラスタ)によって実行されてよい。各クラスタは、マルチテナントアプリケーション310が、追加のコンピューティングリソースをそのデータベースインスタンスに提供するためのスケールアウトノードをプロビジョニングすることを可能にすることができる。さらに、マルチテナントアプリケーション310は、ノード認識型とすることができ、それによって、同一データベースインスタンスのノード間または異なるデータベースインスタンスのノード間でのテナントの移動が可能である。
【0040】
図4は、いくつかの実施形態によるネイティブマルチテナンシを提供するシステム400のブロック図である。データベースインスタンス450が、上述したようにアーティファクト453および455と関連付けられたテナントオブジェクトインスタンス452および454を含む。図を見やすくするために、データベースインスタンス450のデータエンジンおよびパーシステンスは
図4から省略されている。
【0041】
データベースインスタンス450の各テナントインスタンスは、カスタマ410のうちのそれぞれのカスタマに対応する。カスタマA 411は、キーユーザ412およびビジネスユーザ413を含み、カスタマN 417は、キーユーザ418およびビジネスユーザ419を含む。
図5は、
図4に示すように、かついくつかの実施形態に従って、データベースインスタンスをプロビジョニングし、その中にテナントインスタンスを作成するための、プロセス500のフロー図を含む。
【0042】
プロセス500および本明細書において述べた他の全てのプロセスは、1つまたは複数の処理装置(例えばプロセッサ、プロセッサコア、プロセッサスレッド)によって実行可能であり、ハードディスクドライブ、揮発性または不揮発性のランダムアクセスメモリ、DVD-ROM、フラッシュドライブ、および磁気テープなどの非一時的コンピュータ可読媒体のうちの1つまたは複数から読み出され、次いで圧縮された形式、コンパイルされていない形式、および/または暗号化された形式で記憶される、プログラムコードの形で具現化されてよい。いくつかの実施形態では、いくつかの実施形態によるプロセスを実施するために、プログラムコードの代わりに、またはプログラムコードと組み合わせて、ハードワイヤード回路が使用されてよい。したがって、実施形態は、ハードウェアとソフトウェアのどんな特定の組合せにも限定されない。
【0043】
S510において、テナントがその中に存在することになるデータベースインスタンスが最初にプロビジョニングされる。
図4の例を参照すると、キーユーザ412が、マルチテナントアプリケーション420にアクセスして、データベースインスタンスのプロビジョニングを要求することができる。この要求が、サービスマネージャ430およびクラウドサービスブローカ440に転送される。次いで、S510において、クラウドサービスブローカ440が、データベースインスタンス450をクラウドベースのリソースとしてプロビジョニングする。
【0044】
S520において、データベースインスタンス内にテナントオブジェクトインスタンスが作成される。上記の例を続けると、キーユーザ412が、マルチテナントアプリケーション420にアクセスして、データベースインスタンス450上へのテナントの作成を要求することができる。この要求が、サービスマネージャ430、サービスブローカ460、およびテナント管理サービス470に転送される。次いで、テナント管理サービス470がデータベースインスタンス450に、メタデータ457内に定義されたテナントオブジェクトに基づいてテナントAインスタンス452を作成するように指令する。テナントAインスタンス452は、データベースインスタンス450およびマルチテナントアプリケーション420に知られているテナントidによって識別されてよい。
【0045】
次に、S530において、S520において作成されたテナントインスタンスにデータベースアーティファクトが付与される。例えば、マルチテナントアプリケーション420がテナント管理サービス470に、テナントAインスタンス452をアーティファクトA 453と関連付けるようにデータベースインスタンス450に指令するように要求する。キーユーザ412が、マルチテナントアプリケーション420およびサービスブローカ460を事前に操作して、データベースインスタンス450のデータ456およびメタデータ457内にアーティファクトA 453を定義していてよい。全てのデータベースアーティファクトは、サービスブローカ460によって作成されるが、マルチテナントアプリケーション420によって管理される。
【0046】
いくつかの実施形態では、デプロイメントインフラストラクチャを使用して、テナントインスタンスに付与すべきデータベースアーティファクトを定義することができる。デプロイメントインフラストラクチャは、コンテナを使用してデータベースオブジェクトを(例えば設計時アーティファクトとして)定義するための宣言的手法を提供することができる。例えば、サービスブローカ460が、データベーススキーマおよび追加のメタデータ(例えばユーザ、ロール、特権)に対応するコンテナを作成してよく、それが次いで、テナントインスタンスに付与されてよい。そのようなコンテナ同士は、スキーマレベルのアクセス特権によって相互に分離されてよい。アプリケーション420は、割り当てられた、スキーマごとのテクニカルデータベースユーザを使用することによって、コンテナのデータベーススキーマ内の任意のデータベースオブジェクトにアクセスすることができる。
【0047】
フローは、S540において、データベースインスタンス内に別のテナントを作成せよとのコマンドが受信されるまで繰り返す。例えば、カスタマN 417のキーユーザ418が、マルチテナントアプリケーション420にアクセスして、データベースインスタンス450上へのテナントの作成を要求することができる。この要求が、サービスマネージャ430、サービスブローカ460、およびテナント管理サービス470に転送され、テナント管理サービス470がS520においてデータベースインスタンス450に、テナントNインスタンス454を作成するように指令する。S530において、マルチテナントアプリケーション420がテナント管理サービス470に、事前に定義されたアーティファクトN 455をテナントNインスタンス454に付与するようにさらに指令する。
【0048】
マルチテナントアプリケーション420は、データベースインスタンス450をプロビジョニングし、テナント452および454を作成した後で、例えば、カスタマA 411のビジネスユーザ413からの入力を受信することができる。それに応答して、アプリケーション420は、結果として生じる任意のクエリを、テナント管理サービス470を介してデータベースインスタンス450に向けて送り出し、テナントA 452を識別する。データベースインスタンス450は、テナントインスタンスA 452のアーティファクトA 453に基づいてクエリに応答する。マルチテナントアプリケーション420が、カスタマN 417のビジネスユーザ419からの入力を受信するケースでは、結果として生じる任意のクエリが、データベースインスタンス450に向けて送り出され、テナントインスタンスN 454のアーティファクトN 455に基づいて応答される。
【0049】
図6は、いくつかの実施形態によるネイティブマルチテナンシおよびテナントレベルの暗号化を提供するシステム600のブロック図である。システム400の要素と同様に番号付けされているシステム600の要素(すなわち6xx対4xx)は、同様に実装され、動作することが可能である。
【0050】
システム600は、
図4から省略されていた、データベースインスタンス650のパーシステンス660を示す。パーシステンス660は、任意の適切な1つまたは複数の記憶システムを使用して実装されてよい。パーシステンス660は、インスタンス650の各テナントのデータ662、664、インスタンス650の、特定のテナントに付与されていないデータ666、およびインスタンス650のメタデータ668を記憶する。有利には、また従来のシステムとは対照的に、永続化データ662および664は、暗号化キー(すなわちデータ暗号化キー(DEK) AおよびDEK N)を使用して暗号化され、これらの暗号化キーは、それらの対応するテナント(すなわちカスタマ)に固有である。さらに、永続化された、付与されていないデータ666およびメタデータ668は、データベースインスタンス固有暗号化キー(すなわちDEK DB)を使用して暗号化される。
【0051】
いくつかの実施形態によれば、DEK DBは、データベースインスタンス650の作成の一環として生成される公開-秘密キー対である。データベースインスタンス650は、DEK DBの公開キーを使用して、データ666およびデータ668を、パーシステンス660内に記憶するのに先立って暗号化する。データベースインスタンス650は、必要に応じて、DEK DBの秘密キーを使用してデータ666およびデータ668を復号する。いくつかの実施形態では、DEK DBの秘密キーは、セキュアストアパーシステンス675内に、暗号化された形態で記憶される。
【0052】
例えば、データベースインスタンスプロバイダ690のキーユーザ695が、キー暗号化キー(KEK) DBを、キーボルト(key vault)685内に記憶するためにキー管理システム680に提供する。KEK DBは、セキュアストアパーシステンス675内にDEK DBの秘密キーを記憶するのに先立って、DEK DBの秘密キーを暗号化するために使用される。KEK DBも、秘密-公開キー対を備えてよく、その場合、キーボルト685はKEK DBの秘密キーを記憶し、一方、対応する公開キーは、セキュアストアパーシステンス675内にDEK DBの秘密キーを記憶するのに先立って、DEK DBの秘密キーを暗号化するために使用される。
【0053】
したがって、データベースインスタンス650は、データベースインスタンス650がデータ666またはデータ668を復号したいとき、DEK DBの秘密キーをセキュアストア670に要求する。それに応答して、セキュアストア670がキー管理システム680に、DEK DBの記憶されている暗号化された秘密キーを、KEK DBの秘密キーを使用して復号せよと要求する。次いで、データベースシステム650が、DEK DBの復号された秘密キーを使用して、データ666またはデータ668の所望のデータを復号する。
【0054】
同様に、DEK Aも、テナントA 652の作成の間に生成される公開-秘密キー対を備えてよい。データベースインスタンス650は、DEK Aの公開キーを使用して、データ662を、パーシステンス660内に記憶するのに先立って暗号化する。データベースインスタンス650は、必要に応じて、DEK Aの秘密キーを使用してデータ662を復号する。いくつかの実施形態では、DEK Aの秘密キーは、セキュアストアパーシステンス675内に、暗号化された形態で記憶される。
【0055】
カスタマA 611のキーユーザ612が、KEK Aを、キーボルト685内に記憶するためにキー管理システム680に提供する。KEK Aは、セキュアストアパーシステンス675内にDEK Aの秘密キーを記憶するのに先立って、DEK Aの秘密キーを暗号化するために使用される。KEK Aは、秘密-公開キー対を備えてよく、その場合、キーボルト685はKEK Aの秘密キーを記憶し、一方、対応する公開キーは、セキュアストアパーシステンス675内にDEK Aの秘密キーを記憶するのに先立って、DEK Aの秘密キーを暗号化するために使用される。
【0056】
データベースインスタンス650は、データベースインスタンス650がデータ662を復号したいとき、DEK Aの秘密キーをセキュアストア670に要求する。それに応答して、セキュアストア670がキー管理システム680に、DEK Aの記憶されている暗号化された秘密キーを、KEK Aの秘密キーを使用して復号せよと要求する。この要求は、キー管理システム680の、カスタマA 611に固有のアカウントに発行されてよい。次いで、データベースインスタンス650が、DEK Aの復号された秘密キーを使用して、データ662の所望のデータを復号する。したがって、カスタマAがキーボルト685からKEK Aをリボークする場合、データベースプロバイダ690は、記憶されている秘密キーDEK Aを復号することができず、その結果、データ662を復号することができない。前述のプロセスは、新たに作成される各テナントNのケースにおいて行われてよい。
【0057】
アーキテクチャ600は、本明細書において説明されない他の暗号化を提供してよい。例えば、クライアントから、データベースインスタンス650に、またデータベースインスタンス650から送信されるデータは、TLS/SSLを使用して、伝送中に暗号化されてよい。さらに、非永続的メモリ651内の個々のテーブルカラムが、知られている技法を使用して(例えばクライアントにより制御されるキー(client-controlled key)を使用して)暗号化されてよい。
【0058】
図7は、いくつかの実施形態によるクラウドベースのデータベースデプロイメント700を示す。ユーザデバイス710が、クラウドベースのマルチテナントアプリケーションにアクセスするようにキーユーザまたはビジネスユーザによって動作させることの可能な、任意の適切なコンピューティングシステムを備えることができる。ユーザデバイス710は、そのようなマルチテナントアプリケーションのログインページに関連付けられたユニフォームリソースロケータ(URL)にアクセスするために、ウェブブラウザのプログラムコードを記憶し、実行することができる。ウェブブラウザは、当技術分野で知られているように、マルチテナントアプリケーションのクライアント側コンポーネントのプログラムコードをダウンロードし、実行することができる。
【0059】
アプリケーションサーバノード720、722、および724が、いくつかの実施形態によるマルチテナントアプリケーションをホストすることができる。データベースノード730、732、および734が、マルチテナントアプリケーションからアクセス可能な、本明細書において説明したネイティブマルチテナンシを提供する1つまたは複数のデータベースインスタンスをホストすることができる。デプロイメント700の各ノードは、個別の物理マシンまたは仮想マシンを備えることができる。そのような仮想マシンは、セルフサービスおよび即時のプロビジョニング、オートスケーリング、セキュリティ、コンプライアンス、ならびに識別情報管理の機能を提供するクラウドプロバイダによって、割り振られることが可能である。
【0060】
前述の図は、いくつかの実施形態によるプロセスについて説明するための論理アーキテクチャを表しており、実際の実装形態は、他の様式で構成されたより多くのまたは異なるコンポーネントを含むことがある。他の実施形態に関連して、他のトポロジーが使用されてもよい。さらに、本明細書において説明した各コンポーネントまたはデバイスは、任意数の他のパブリックネットワークおよび/またはプライベートネットワークを介して通信する任意数のデバイスによって実装されてもよい。そのようなコンピューティングデバイスのうちの2つ以上が、相互に遠隔に位置してよく、知られている任意の様式のネットワークおよび/または専用接続を介して相互に通信してよい。各コンポーネントまたはデバイスは、本明細書において説明した機能ならびに他の任意の機能を提供するのに適した任意数のハードウェア要素および/またはソフトウェア要素を備えてよい。例えば、任意のコンピューティングデバイスは、本明細書において説明したようにそのコンピューティングデバイスが動作するようなプログラムコードを実行するためのプログラマブルプロセッサを含んでよい。
【0061】
本明細書において論じた全てのシステムおよびプロセスは、1つまたは複数の非一時的コンピュータ可読媒体上に記憶されたプログラムコードの形で具現化されてよい。そのような媒体としては、例えば、DVD-ROM、フラッシュドライブ、磁気テープ、およびソリッドステートのランダムアクセスメモリ(RAM)記憶ユニットまたは読出し専用メモリ(ROM)記憶ユニットがあり得る。したがって、実施形態は、ハードウェアとソフトウェアのどんな特定の組合せにも限定されない。
【0062】
本明細書において相互に通信すると説明された要素は、共有メモリ通信、ローカルエリアネットワーク、広域ネットワーク、電話回線網、セルラーネットワーク、光ファイバーネットワーク、衛星ネットワーク、赤外線ネットワーク、無線周波数ネットワーク、およびデバイス間で情報を伝送するのに使用されてよい他の任意のタイプのネットワークを含むがそれらに限定されない、データを転送するための任意数の異なるシステム経由で通信することが、直接的または間接的に可能である。さらに、システム間の通信は、非同期転送モード(ATM)、インターネットプロトコル(IP)、ハイパーテキスト転送プロトコル(HTTP)、およびワイヤレスアプリケーションプロトコル(WAP)など、知られているかまたは知られるようになるいずれか1つまたは複数の伝送プロトコル経由で行われてよい。
【0063】
本明細書において説明した実施形態は、単に例示を目的としたものである。上述したものに修正および改変を加えて他の実施形態を実施できることを、当業者なら理解するであろう。
【符号の説明】
【0064】
100 システム
110 データベースインスタンス
111 データエンジン
112 メモリ
113 パーシステンス
114 テナントインスタンス、テナントA
115 アーティファクトA
116 テナントインスタンス、テナントB
117 アーティファクトB
118 データ
119 メタデータ
120 マルチテナントアプリケーション
130 カスタマ、カスタマA
135 ユーザ
140 カスタマ、カスタマB
145 ユーザ
200 システム
210 データベースインスタンス
211 データエンジン
212 メモリ
213 パーシステンス
214 テナントオブジェクトインスタンス、テナントC
215 アーティファクトC
216 データ
217 メタデータ
230 カスタマC
235 ユーザ
300 システム
310 マルチテナントアプリケーション
320 インスタンスファーム
321 インスタンス
325 インスタンス
400 システム
410 カスタマ
411 カスタマA
412 キーユーザ
413 ビジネスユーザ
417 カスタマN
418 キーユーザ
419 ビジネスユーザ
420 マルチテナントアプリケーション
430 サービスマネージャ
440 クラウドサービスブローカ
450 データベースインスタンス
452 テナントオブジェクトインスタンス、テナントAインスタンス、テナント、テナントA、テナントインスタンスA
453 アーティファクト、アーティファクトA
454 テナントオブジェクトインスタンス、テナントNインスタンス、テナント、テナントインスタンスN
455 アーティファクト、アーティファクトN
456 データ
457 メタデータ
460 サービスブローカ
470 テナント管理サービス
500 プロセス
600 システム、アーキテクチャ
611 カスタマA
612 キーユーザ
650 データベースインスタンス、データベースシステム
651 非永続的メモリ
652 テナントA
660 パーシステンス
662 永続化データ
664 永続化データ
666 データ
668 メタデータ
670 セキュアストア
675 セキュアストアパーシステンス
680 キー管理システム
685 キーボルト
690 データベースインスタンスプロバイダ、データベースプロバイダ
695 キーユーザ
700 クラウドベースのデータベースデプロイメント
710 ユーザデバイス
720 アプリケーションサーバノード
722 アプリケーションサーバノード
724 アプリケーションサーバノード
730 データベースノード
732 データベースノード
734 データベースノード
【外国語明細書】