特許第6188732号(P6188732)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特許6188732マルチテナント環境におけるテナント固有のデータ・セットを管理するための、コンピュータで実施される方法、コンピュータ・プログラム製品、およびシステム
<>
  • 特許6188732-マルチテナント環境におけるテナント固有のデータ・セットを管理するための、コンピュータで実施される方法、コンピュータ・プログラム製品、およびシステム 図000002
  • 特許6188732-マルチテナント環境におけるテナント固有のデータ・セットを管理するための、コンピュータで実施される方法、コンピュータ・プログラム製品、およびシステム 図000003
  • 特許6188732-マルチテナント環境におけるテナント固有のデータ・セットを管理するための、コンピュータで実施される方法、コンピュータ・プログラム製品、およびシステム 図000004
  • 特許6188732-マルチテナント環境におけるテナント固有のデータ・セットを管理するための、コンピュータで実施される方法、コンピュータ・プログラム製品、およびシステム 図000005
  • 特許6188732-マルチテナント環境におけるテナント固有のデータ・セットを管理するための、コンピュータで実施される方法、コンピュータ・プログラム製品、およびシステム 図000006
  • 特許6188732-マルチテナント環境におけるテナント固有のデータ・セットを管理するための、コンピュータで実施される方法、コンピュータ・プログラム製品、およびシステム 図000007
  • 特許6188732-マルチテナント環境におけるテナント固有のデータ・セットを管理するための、コンピュータで実施される方法、コンピュータ・プログラム製品、およびシステム 図000008
  • 特許6188732-マルチテナント環境におけるテナント固有のデータ・セットを管理するための、コンピュータで実施される方法、コンピュータ・プログラム製品、およびシステム 図000009
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6188732
(24)【登録日】2017年8月10日
(45)【発行日】2017年8月30日
(54)【発明の名称】マルチテナント環境におけるテナント固有のデータ・セットを管理するための、コンピュータで実施される方法、コンピュータ・プログラム製品、およびシステム
(51)【国際特許分類】
   G06F 12/00 20060101AFI20170821BHJP
【FI】
   G06F12/00 513A
   G06F12/00 501B
【請求項の数】24
【全頁数】26
(21)【出願番号】特願2014-560471(P2014-560471)
(86)(22)【出願日】2013年2月21日
(65)【公表番号】特表2015-513153(P2015-513153A)
(43)【公表日】2015年4月30日
(86)【国際出願番号】IB2013051398
(87)【国際公開番号】WO2013132377
(87)【国際公開日】20130912
【審査請求日】2016年2月9日
(31)【優先権主張番号】13/414,786
(32)【優先日】2012年3月8日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
(74)【代理人】
【識別番号】100108501
【弁理士】
【氏名又は名称】上野 剛史
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】オーバーホーファー、マーティン
(72)【発明者】
【氏名】マンデルステイン、ダン、ジェフリー
(72)【発明者】
【氏名】ミルマン、イヴァン、マシュー
(72)【発明者】
【氏名】パンディット、スシェイン
(72)【発明者】
【氏名】ウォルフソン、チャールズ、ダニエル
【審査官】 田中 啓介
(56)【参考文献】
【文献】 米国特許出願公開第2011/0302277(US,A1)
【文献】 米国特許出願公開第2012/0011518(US,A1)
【文献】 米国特許出願公開第2011/0270886(US,A1)
【文献】 国際公開第2011/111532(WO,A1)
【文献】 特開2011−113103(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F12/00
(57)【特許請求の範囲】
【請求項1】
マルチテナント・システムでテナント固有のデータ・セットを管理するための、コンピュータで実施される方法であって、
物理データ・ストアのデータ・セットを第1の種類のマルチテナント展開から第2の種類のマルチテナント展開に変換する要求を受け取ることと、
前記要求を行ったテナントを識別するテナント識別メタデータを検索することと、
前記第2の種類のマルチテナント展開に基づいて前記物理データ・ストアの前記データ・セットを変更することと、
抽象化層に関連付けられたメタデータを変更して、前記変更されたデータ・セットへのアクセスを可能にすることと
を含み、
前記物理データ・ストアは特定されたテナントに所有され、プライベート・データ・ストアか、または共有データ・ストアのプライベート・スキーマかの1つであり、前記物理データ・ストアの前記データ・セットを変更することは、
転送先データ構造を作成することであって、前記転送先データ構造は、プライベート・データ・ストアか、または共有データ・ストアのプライベート・スキーマかの1つであり、前記転送先データ構造は前記特定されたテナントに所有される、前記作成することと、
前記物理データ・ストアの第1のテーブルを前記転送先データ構造に転送することと、
前記第1のテーブルを前記転送先データ構造に転送することの間に、
選択クエリを受け取ると、前記選択クエリを前記物理データ・ストアの前記第1のテーブルと、前記転送先データ構造の前記転送されるテーブルとに発行し、発行する際に結果得られる各データ・セットに和集合が適用され前記選択クエリに対する結果のセットとして返さ
れ、
挿入クエリを受け取ると、前記挿入クエリを前記転送先データ構造の前記転送されるテーブルに発行し、
更新クエリまたは削除クエリを受け取ると、前記更新クエリまたは削除クエリを前記第1のテーブルと、前記転送先データ構造の前記転送されるテーブルとに発行することと
を含む、方法。
【請求項2】
前記物理データ・ストアは共有データ・ストアであり、前記第1のテーブルは、前記物理データ・ストア内で前記特定されたテナントに所有されるプライベート・スキーマにあり、前記転送先データ構造は前記特定されたテナントに所有されるプライベート・データ・ストアである、請求項に記載のコンピュータで実施される方法。
【請求項3】
前記物理データ・ストアは、前記特定されたテナントに所有されるプライベート・データ・ストアであり、前記転送先データ構造は、共有物理データ・ストア内で前記特定されたテナントに所有されるプライベート・スキーマである、請求項に記載のコンピュータで実施される方法。
【請求項4】
マルチテナント・システムでテナント固有のデータ・セットを管理するための、コンピュータで実施される方法であって、
物理データ・ストアのデータ・セットを第1の種類のマルチテナント展開から第2の種類のマルチテナント展開に変換する要求を受け取ることと、
前記要求を行ったテナントを識別するテナント識別メタデータを検索することと、
前記第2の種類のマルチテナント展開に基づいて前記物理データ・ストアの前記データ・セットを変更することと、
抽象化層に関連付けられたメタデータを変更して、前記変更されたデータ・セットへのアクセスを可能にすることと
を含み、
前記物理データ・ストアの前記データ・セットを変更することが、
前記物理データ・ストアの第1のテーブルからデータを選択することと、
前記選択されたデータを転送先データ構造に転送することであって、前記転送先データ構造は、プライベート物理データ・ストア、共有データ・ストアのプライベート・スキーマ、または前記第2の種類のマルチテナント展開に対応する共有データ・ストアの共有スキーマ、の1つである、前記転送することと、
前記選択されたデータを前記転送先データ構造に転送することの間に前記第1のテーブルを対象とするクエリを受け取ると、エラー・メッセージを返すことと
を含む、方法。
【請求項5】
前記転送先データ構造は、共有される物理データ・ストアの共有スキーマであり、前記物理データ・ストアは、特定されたテナントに所有されるプライベート物理データ・ストアであり、前記方法がさらに、
前記第1のテーブルから前記データを選択することの前に、前記第1のテーブルへのアクセスを阻止することと、
前記第1のテーブルから前記データを選択することの後に、前記第1のテーブルから前記データを選択することから得られたデータ・セットの新しい列に前記テナント識別メタデータを挿入することと、
前記第1のテーブルへのアクセスを回復することと
を含む、請求項に記載のコンピュータで実施される方法。
【請求項6】
前記物理データ・ストアは共有データ・ストアであり、前記転送先データ構造は、共有される物理データ・ストアの共有スキーマであり、前記第1のテーブルは、前記物理データ・ストア内で特定されたテナントに所有されるプライベート・スキーマにあり、前記方法がさらに、
前記第1のテーブルから前記データを選択することの前に、前記第1のテーブルへのアクセスを阻止することと、
前記第1のテーブルから前記データを選択することの後に、前記第1のテーブルから前記データを選択することから得られたデータ・セットの新しい列に前記テナント識別メタデータを挿入することと、
前記第1のテーブルへのアクセスを回復することと
を含む、請求項に記載のコンピュータで実施される方法。
【請求項7】
前記物理データ・ストアは共有データ・ストアであり、前記第1のテーブルは、前記物理データ・ストアの共有スキーマにあり、前記転送先データ構造は、特定されたテナントに所有されるプライベート・データ・ストアであり、前記選択されるデータは前記特定されたテナントに所有され、前記方法がさらに、
前記第1のテーブルから前記データを選択することの後に、テナント識別を含んでいる列が選択された場合、テナント識別メタデータを含んでいる前記列を削除することと、
前記データを前記転送先データ構造に転送することの前に、前記転送先データ構造を作成することと
を含む、請求項に記載のコンピュータで実施される方法。
【請求項8】
前記物理データ・ストアは共有データ・ストアであり、前記第1のテーブルは、前記物理データ・ストアの共有スキーマにあり、前記転送先データ構造は、共有データ・ストア内で特定されたテナントに所有されるプライベート・スキーマであり、前記選択されるデータは前記特定されたテナントに所有され、前記方法がさらに、
前記第1のテーブルから前記データを選択することの後に、テナント識別を含んでいる列が選択された場合、テナント識別メタデータを含んでいる前記列を削除することと、
前記データを前記転送先データ構造に転送することの前に、前記転送先データ構造を作成することと
を含む、請求項に記載のコンピュータで実施される方法。
【請求項9】
マルチテナント・システムでテナント固有のデータ・セットを管理するためのコンピュータ・プログラム製品であって、
コンピュータ可読プログラム・コードが具現化されたコンピュータ可読記憶媒体を含み、前記コンピュータ可読プログラム・コードは、
物理データ・ストアのデータ・セットを第1の種類のマルチテナント展開から第2の種類のマルチテナント展開に変換する要求を受け取るように構成されたコンピュータ可読プログラム・コードと、
前記要求を行ったテナントを識別するテナント識別メタデータを検索するように構成されたコンピュータ可読プログラム・コードと、
前記第2の種類のマルチテナント展開に基づいて前記物理データ・ストアの前記データ・セットを変更するように構成されたコンピュータ可読プログラム・コードと、
抽象化層に関連付けられたメタデータを変更して、前記変更されたデータ・セットへのアクセスを可能にするように構成されたコンピュータ可読プログラム・コードと
を含み、
前記物理データ・ストアは特定されたテナントに所有され、プライベート・データ・ストアか、または共有データ・ストアのプライベート・スキーマかの1つであり、前記物理データ・ストアの前記データ・セットを変更することは、
転送先データ構造を作成することであって、前記転送先データ構造は、プライベート・データ・ストアか、または共有データ・ストアのプライベート・スキーマかの1つであり、前記転送先データ構造は前記特定されたテナントに所有される、前記作成することと、
前記物理データ・ストアの第1のテーブルを前記転送先データ構造に転送することと、
前記第1のテーブルを前記転送先データ構造に転送することの間に、
選択クエリを受け取ると、前記選択クエリを前記物理データ・ストアの前記第1のテーブルと、前記転送先データ構造の前記転送されるテーブルとに発行し、発行する際に結果得られる各データ・セットに和集合が適用され前記選択クエリに対する結果のセットとして返され、
挿入クエリを受け取ると、前記挿入クエリを前記転送先データ構造の前記転送されるテーブルに発行し、
更新クエリまたは削除クエリを受け取ると、前記更新クエリまたは削除クエリを前記第1のテーブルと、前記転送先データ構造の前記転送されるテーブルとに発行することと
を含む、コンピュータ・プログラム製品。
【請求項10】
前記物理データ・ストアは共有データ・ストアであり、前記第1のテーブルは、前記物理データ・ストア内で前記特定されたテナントに所有されるプライベート・スキーマにあり、前記転送先データ構造は前記特定されたテナントに所有されるプライベート・データ・ストアである、請求項に記載のコンピュータ・プログラム製品。
【請求項11】
前記物理データ・ストアは、前記特定されたテナントに所有されるプライベート・データ・ストアであり、前記転送先データ構造は、共有物理データ・ストア内で前記特定されたテナントに所有されるプライベート・スキーマである、請求項に記載のコンピュータ・プログラム製品。
【請求項12】
マルチテナント・システムでテナント固有のデータ・セットを管理するためのコンピュータ・プログラム製品であって、
コンピュータ可読プログラム・コードが具現化されたコンピュータ可読記憶媒体を含み、前記コンピュータ可読プログラム・コードは、
物理データ・ストアのデータ・セットを第1の種類のマルチテナント展開から第2の種類のマルチテナント展開に変換する要求を受け取るように構成されたコンピュータ可読プログラム・コードと、
前記要求を行ったテナントを識別するテナント識別メタデータを検索するように構成されたコンピュータ可読プログラム・コードと、
前記第2の種類のマルチテナント展開に基づいて前記物理データ・ストアの前記データ・セットを変更するように構成されたコンピュータ可読プログラム・コードと、
抽象化層に関連付けられたメタデータを変更して、前記変更されたデータ・セットへのアクセスを可能にするように構成されたコンピュータ可読プログラム・コードと
を含み、
前記物理データ・ストアの前記データ・セットを変更することが、
前記物理データ・ストアの第1のテーブルからデータを選択することと、
前記選択されたデータを転送先データ構造に転送することであって、前記転送先データ構造は、プライベート物理データ・ストア、共有データ・ストアのプライベート・スキーマ、または前記第2の種類のマルチテナント展開に対応する共有データ・ストアの共有スキーマ、の1つである、前記転送することと、
前記選択されたデータを前記転送先データ構造に転送することの間に前記第1のテーブルを対象とするクエリを受け取ると、エラー・メッセージを返すことと
を含む、コンピュータ・プログラム製品。
【請求項13】
前記転送先データ構造は、共有される物理データ・ストアの共有スキーマであり、前記物理データ・ストアは、特定されたテナントに所有されるプライベート物理データ・ストアであり、前記コンピュータ可読プログラム・コードがさらに、
前記第1のテーブルから前記データを選択することの前に、前記第1のテーブルへのアクセスを阻止することと、
前記第1のテーブルから前記データを選択することの後に、前記第1のテーブルから前記データを選択することから得られたデータ・セットの新しい列に前記テナント識別メタデータを挿入することと、
前記第1のテーブルへのアクセスを回復することと
を含む、請求項1に記載のコンピュータ・プログラム製品。
【請求項14】
前記物理データ・ストアは共有データ・ストアであり、前記転送先データ構造は、共有される物理データ・ストアの共有スキーマであり、前記第1のテーブルは、前記物理データ・ストア内で特定されたテナントに所有されるプライベート・スキーマにあり、前記コンピュータ可読プログラム・コードがさらに、
前記第1のテーブルから前記データを選択することの前に、前記第1のテーブルへのアクセスを阻止することと、
前記第1のテーブルから前記データを選択することの後に、前記第1のテーブルから前記データを選択することから得られたデータ・セットの新しい列に前記テナント識別メタデータを挿入することと、
前記第1のテーブルへのアクセスを回復することと
を含む、請求項1に記載のコンピュータ・プログラム製品。
【請求項15】
前記物理データ・ストアは共有データ・ストアであり、前記第1のテーブルは、前記物理データ・ストアの共有スキーマにあり、前記転送先データ構造は、特定されたテナントに所有されるプライベート・データ・ストアであり、前記選択されるデータは前記特定されたテナントに所有され、前記コンピュータ可読プログラム・コードがさらに、
前記第1のテーブルから前記データを選択することの後に、テナント識別を含んでいる列が選択された場合、テナント識別メタデータを含んでいる前記列を削除することと、
前記データを前記転送先データ構造に転送することの前に、前記転送先データ構造を作成することと
を含む、請求項1に記載のコンピュータ・プログラム製品。
【請求項16】
前記物理データ・ストアは共有データ・ストアであり、前記第1のテーブルは、前記物理データ・ストアの共有スキーマにあり、前記転送先データ構造は、共有データ・ストア内で特定されたテナントに所有されるプライベート・スキーマであり、前記選択されるデータは前記特定されたテナントに所有され、前記コンピュータ可読プログラム・コードがさらに、
前記第1のテーブルから前記データを選択することの後に、テナント識別を含んでいる列が選択された場合、テナント識別メタデータを含んでいる前記列を削除することと、
前記データを前記転送先データ構造に転送することの前に、前記転送先データ構造を作成することと
を含む、請求項1に記載のコンピュータ・プログラム製品。
【請求項17】
1つまたは複数のコンピュータ・プロセッサと、
プログラムを保持するメモリとを含み、前記プログラムは、前記1つまたは複数のコンピュータ・プロセッサによって実行されると、マルチテナント・システムでテナント固有のデータ・セットを管理する動作を行うように構成され、前記動作は、
物理データ・ストアのデータ・セットを第1の種類のマルチテナント展開から第2の種類のマルチテナント展開に変換する要求を受け取ることと、
前記要求を行ったテナントを識別するテナント識別メタデータを検索することと、
前記第2の種類のマルチテナント展開に基づいて前記物理データ・ストアの前記データ・セットを変更することと、
抽象化層に関連付けられたメタデータを変更して、前記変更されたデータ・セットへのアクセスを可能にすることと
を含み、
前記物理データ・ストアは特定されたテナントに所有され、プライベート・データ・ストアか、または共有データ・ストアのプライベート・スキーマかの1つであり、前記物理データ・ストアの前記データ・セットを変更することは、
転送先データ構造を作成することであって、前記転送先データ構造は、プライベート・データ・ストアか、または共有データ・ストアのプライベート・スキーマかの1つであり、前記転送先データ構造は前記特定されたテナントに所有される、前記作成することと、
前記物理データ・ストアの第1のテーブルを前記転送先データ構造に転送することと、
前記第1のテーブルを前記転送先データ構造に転送することの間に、
選択クエリを受け取ると、前記選択クエリを前記物理データ・ストアの前記第1のテーブルと、前記転送先データ構造の前記転送されるテーブルとに発行し、発行する際に結果得られる各データ・セットに和集合が適用され前記選択クエリに対する結果のセットとして返され、
挿入クエリを受け取ると、前記挿入クエリを前記転送先データ構造の前記転送されるテーブルに発行し、
更新クエリまたは削除クエリを受け取ると、前記更新クエリまたは削除クエリを前記第1のテーブルと、前記転送先データ構造の前記転送されるテーブルとに発行することと
を含む、システム。
【請求項18】
前記物理データ・ストアは共有データ・ストアであり、前記第1のテーブルは、前記物理データ・ストア内で前記特定されたテナントに所有されるプライベート・スキーマにあり、前記転送先データ構造は前記特定されたテナントに所有されるプライベート・データ・ストアである、請求項17に記載のシステム。
【請求項19】
前記物理データ・ストアは、前記特定されたテナントに所有されるプライベート・データ・ストアであり、前記転送先データ構造は、共有物理データ・ストア内で前記特定されたテナントに所有されるプライベート・スキーマである、請求項17に記載のシステム。
【請求項20】
1つまたは複数のコンピュータ・プロセッサと、
プログラムを保持するメモリとを含み、前記プログラムは、前記1つまたは複数のコンピュータ・プロセッサによって実行されると、マルチテナント・システムでテナント固有のデータ・セットを管理する動作を行うように構成され、前記動作は、
物理データ・ストアのデータ・セットを第1の種類のマルチテナント展開から第2の種類のマルチテナント展開に変換する要求を受け取ることと、
前記要求を行ったテナントを識別するテナント識別メタデータを検索することと、
前記第2の種類のマルチテナント展開に基づいて前記物理データ・ストアの前記データ・セットを変更することと、
抽象化層に関連付けられたメタデータを変更して、前記変更されたデータ・セットへのアクセスを可能にすることと
を含み、
前記物理データ・ストアの前記データ・セットを変更することが、
前記物理データ・ストアの第1のテーブルからデータを選択することと、
前記選択されたデータを転送先データ構造に転送することであって、前記転送先データ構造は、プライベート物理データ・ストア、共有データ・ストアのプライベート・スキーマ、または前記第2の種類のマルチテナント展開に対応する共有データ・ストアの共有スキーマ、の1つである、前記転送することと、
前記選択されたデータを前記転送先データ構造に転送することの間に前記第1のテーブルを対象とするクエリを受け取ると、エラー・メッセージを返すことと
を含む、システム。
【請求項21】
前記転送先データ構造は、共有される物理データ・ストアの共有スキーマであり、前記物理データ・ストアは、特定されたテナントに所有されるプライベート物理データ・ストアであり、前記動作がさらに、
前記第1のテーブルから前記データを選択することの前に、前記第1のテーブルへのアクセスを阻止することと、
前記第1のテーブルから前記データを選択することの後に、前記第1のテーブルから前記データを選択することから得られたデータ・セットの新しい列に前記テナント識別メタデータを挿入することと、
前記第1のテーブルへのアクセスを回復することと
を含む、請求項2に記載のシステム。
【請求項22】
前記物理データ・ストアは共有データ・ストアであり、前記転送先データ構造は、共有される物理データ・ストアの共有スキーマであり、前記第1のテーブルは、前記物理データ・ストア内で特定されたテナントに所有されるプライベート・スキーマにあり、前記動作がさらに、
前記第1のテーブルから前記データを選択することの前に、前記第1のテーブルへのアクセスを阻止することと、
前記第1のテーブルから前記データを選択することの後に、前記第1のテーブルから前記データを選択することから得られたデータ・セットの新しい列に前記テナント識別メタデータを挿入することと、
前記第1のテーブルへのアクセスを回復することと
を含む、請求項2に記載のシステム。
【請求項23】
前記物理データ・ストアは共有データ・ストアであり、前記第1のテーブルは、前記物理データ・ストアの共有スキーマにあり、前記転送先データ構造は、特定されたテナントに所有されるプライベート・データ・ストアであり、前記選択されるデータは前記特定されたテナントに所有され、前記動作がさらに、
前記第1のテーブルから前記データを選択することの後に、テナント識別を含んでいる列が選択された場合、テナント識別メタデータを含んでいる前記列を削除することと、
前記データを前記転送先データ構造に転送することの前に、前記転送先データ構造を作成することと
を含む、請求項2に記載のシステム。
【請求項24】
前記物理データ・ストアは共有データ・ストアであり、前記第1のテーブルは、前記物理データ・ストアの共有スキーマにあり、前記転送先データ構造は、共有データ・ストア内で特定されたテナントに所有されるプライベート・スキーマであり、前記選択されるデータは前記特定されたテナントに所有され、前記動作がさらに、
前記第1のテーブルから前記データを選択することの後に、テナント識別を含んでいる列が選択された場合、テナント識別メタデータを含んでいる前記列を削除することと、
前記データを前記転送先データ構造に転送することの前に、前記転送先データ構造を作成することと
を含む、請求項2に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の分野はマルチテナントのデータベースに関する。より詳細には、本発明の分野は、マルチテナントのサービスとしてのプラットフォーム(PaaS:Platform as a Service)およびサービスとしてのソフトウェア(SaaS:Software as a Service)サービス(以後「サービス」と総称する)に関する。
【背景技術】
【0002】
各種サービスを、パブリック、ハイブリッド、およびプライベートのクラウド環境で提供することができる。サービス・プロバイダから提供されるサービスは、コンピュータ化された情報の記憶と検索のシステムに相当するデータベース管理システム(DBMS)に記憶されたデータにアクセスすることがある。DBMSは複数のデータベースを管理することができ、各データベースは異なるエンティティに所有される場合がある。サービスは、複数のクライアント組織(テナント)が同時に利用することができる。そのため、そのようなサービスは、種々のテナントについてのデータを処理する。セキュリティと規制上の理由から、各テナントは種々の度合いのデータ分離を要求し、この分離の度合いは、テナントがサービスに加入する時に「ポリシー要素」として指定される。セキュリティと規制の要件は時間と共に変化するため、分離の度合いをなめらかに変更できることがさらに重要となる。したがって、サービス・プロバイダは、各自のサービスにデータと設定の区分を可能にするマルチテナント・アーキテクチャを実装して、各テナントが適切なレベルのデータ分離を得られるようにする必要がある。
【0003】
現在、マルチテナント・データを管理するには3つの展開の選択肢がある。第1の展開選択肢は、別々のデータベースにテナント・データを記憶するものであり、これは最も単純なデータ分離方式である。コンピューティング資源とアプリケーション・コードは一般に1つのサーバにあるすべてのテナント間で共有されるが、各テナントは、すべての他のテナントに属するデータから論理的に隔離された状態を保つ独自のデータ・セットを有する。メタデータで各データベースを正しいテナントに関連付け、データベース・セキュリティで、いずれのテナントも偶発的に、または悪意を持って他テナントのデータにアクセスできないようにする。しかし、この選択肢は、サービス・プロバイダが機器を維持管理し、テナント・データをバックアップするための費用が高くなりやすい。所与のデータベース・サーバに収容できるテナントの数が、サーバが対応できるデータベースの数によって制限されるため、ハードウェア費用も代替の展開選択肢の場合と比べて高くなる。
【0004】
第2の展開選択肢は、同じデータベースに複数のテナントを収容するものであり、各テナントは、そのテナント専用に作成されたスキーマにグループ化された自身のテーブル・セットと他のデータベース生成物を有する。この方式では、セキュリティ意識の高いテナントには、完全に分離されたシステムほどではないが、まずまずの度合いの論理的なデータ分離を提供し、また1台のデータベース・サーバでより多くのテナントに対応することができる。
【0005】
第3の展開選択肢は、同じデータベースと同じテーブル・セットを使用して複数のテナントのデータをホストするものである。所与のテーブルが任意の順序で記憶された複数のテナントのレコードを含むことができ、テナント識別の列が各レコードを該当するテナントに関連付ける。この3つの選択肢のうち、1台のデータベース・サーバあたり最も多くのテナントに対応することができるため、共有スキーマ方式がハードウェア費用とバックアップ費用が最も低い。
【先行技術文献】
【非特許文献】
【0006】
【非特許文献1】Draft NIST Working Definition ofCloud Computing, by Peter Mell and Tim Grance, dated October 7, 2009
【発明の概要】
【発明が解決しようとする課題】
【0007】
データベース展開を1つの選択肢から別の選択肢に透過的に変えることは現在は対応されておらず、人手によるデータ移動とシステムのダウンタイムによってしか解決することができない。さらにそのような変更が行われると、現在データベースにアクセスしているアプリケーションを再コーディングして、データベースへの変更を反映させなければならない。
【課題を解決するための手段】
【0008】
実施形態は、マルチテナント・システムでテナント固有のデータ・セットを管理するための動作を行うための方法、コンピュータ・プログラム製品、およびシステムを提供する。物理データ・ストアのデータ・セットを第1の種類のマルチテナント展開から第2の種類のマルチテナント展開に変換する要求を受け取り、要求を行ったテナントを識別するテナント識別メタデータを検索し、第2の種類のマルチテナント展開に基づいて物理データ・ストアのデータ・セットを変更し、抽象化層に関連付けられたメタデータを変更して、変更されたデータ・セットへのアクセスを可能にする。
【0009】
上記態様がどのように達成されるかを詳細に理解できるように、上記で簡単に概要を述べた本発明の実施形態のより具体的な説明を添付図面を参照することにより得ることができる。
【0010】
ただし、添付図面は本発明の典型的な実施形態を示すものに過ぎず、したがって発明の範囲を限定するものと解釈すべきでないことに留意されたい。本発明には、他の同等に効果的な実施形態が可能である可能性がある。
【図面の簡単な説明】
【0011】
図1】本発明の一実施形態によるクラウド・コンピューティング環境を説明するブロック図である。
図2】本発明の一実施形態による、マルチテナント環境で展開の選択肢を管理し、変換するためのアーキテクチャを説明するブロック図である。
図3】本発明の一実施形態による2階層のアプリケーション・アーキテクチャの構成要素を説明するブロック図である。
図4】本発明の一実施形態によるデータベース展開の選択肢を変換する方法を説明するフローチャートである。
図5】本発明の一実施形態による、データを転送して1つのマルチテナント展開の選択肢から別のマルチテナント展開の選択肢へのデータベースの変換を完了する方法を説明するフローチャートである。
図6】本発明の一実施形態による、データを転送して1つのマルチテナント展開の選択肢から別のマルチテナント展開の選択肢へのデータベースの変換を完了する方法を説明するフローチャートである。
図7】本発明の一実施形態によるクラウド・コンピューティング環境を示す図である。
図8】本発明の一実施形態による抽象化モデル層を示す図である。
【発明を実施するための形態】
【0012】
本発明の実施形態は、マルチテナント環境でテナント固有のデータを管理する技術を提供する。一部の実施形態では、1つのマルチテナント・データベース展開から別のマルチテナント・データベース展開に変換する方法が提供される。一部の実施形態では、マルチテナント展開を変換する要求が抽象化層を通じて受け取られ、このため要求元のアプリケーションは、テナント・データを記憶するために使用されている物理的な実装を意識しない。一部の実施形態では、データベース展開を変換するアプリケーションが提供される。一部の実施形態では、このアプリケーションはデータベース管理システム(DBMS)の一部である。アプリケーションは、物理データ・ストアに記憶されたデータ・セットを第1の種類のマルチテナント展開から第2の種類のマルチテナント展開に変換する要求を受け取るように構成することができる。そして、アプリケーションは、要求元のテナントを識別するテナント識別メタデータを抽象化層を通じて取得することができる。次いで、アプリケーションは、第2の種類のマルチテナント展開に基づいて物理データ・ストアのデータ・セットに変更を加えることができる。最後に、アプリケーションは、第2の種類のマルチテナント展開に従って変更されたデータ・セットにアクセスするように、抽象化層に関連付けられたメタデータを変更することができる。
【0013】
クラウド・コンピューティングについての詳細な説明が含まれるが、本明細書に述べる教示の実施形態はクラウド・コンピューティング環境に限定されないことを予め理解されたい。本発明の実施形態は、現在知られている、または後に開発される任意の他の種類のコンピューティング環境と併せて実施することが可能である。
【0014】
便宜上、発明の詳細な説明は、2009年10月7日付、Peter MellおよびTim Granceによる「Draft NIST Working Definitionof Cloud Computing」からとられた以下の定義を含む。この文献は、本明細書と共に提出されたIDSにおいて引用されており、その複写を本明細書に添付する。
【0015】
クラウド・コンピューティングは、最小限の管理労力やサービス・プロバイダとの対話で迅速に準備し、提供することができる設定可能なコンピューティング資源(例えばネットワーク、ネットワーク帯域幅、サーバ、処理、記憶、記憶機構、アプリケーション、仮想機械、およびサービス)の共有プールに、利便に、必要時にネットワークを通じてアクセスすることができるサービス配信モデルである。このクラウド・モデルは少なくとも5つの特性、少なくとも3つのサービス・モデル、および少なくとも4つの展開モデルを含むことができる。
【0016】
特性は以下の通りである。
【0017】
オンデマンド・セルフサービス:クラウドの消費者は、サービスの提供者と人的な対話を必要とすることなく、必要時に自動的にサーバ時間やネットワーク・ストレージなどのコンピューティング機能を一方向に実現することができる。
【0018】
広いネットワーク・アクセス:諸機能はネットワークを通じて利用することができ、異種のシン(thin)またはシック(thick)クライアント・プラットフォーム(例えば携帯電話、ラップトップ、PDA)による使用を促す標準的な機構を通じてアクセスされる。
【0019】
資源の集積:提供者のコンピューティング資源を集積して、マルチテナント・モデルを使用して複数の消費者に提供し、需要に応じて種々の物理的な資源と仮想的な資源が動的に割り当てられ、また割り当て直される。消費者は一般に提供される資源の正確な場所に関して支配権や知識を持たないが、より高いレベルの抽象化で場所を指定する(例えば国、州、またはデータセンター)ことができる可能性がある点で、ある意味で場所の非依存性がある。
【0020】
迅速な順応性:諸機能は、迅速かつ柔軟に、場合によっては自動的に提供することができ、急速に拡張し、迅速に解放して急速に縮小することができる。消費者にとっては、提供可能な機能は多くの場合無制限に見え、いつでも任意の数量を購入することができる。
【0021】
サービスの測定:クラウド・システムは、サービスの種類(例えばストレージ、処理、帯域幅、およびアクティブ・ユーザのアカウント)に応じた何らかの抽象化レベルで計量機能を活用することにより、自動的に資源の使用を制御し、最適化する。リソースの使用状況を監視し、管理し、報告することができ、利用されるサービスの提供者と消費者の双方に透過性を提供する。
【0022】
サービス・モデルは以下の通りである。
【0023】
サービスとしてのソフトウェア(SaaS:Software as a Service):消費者に提供される機能は、クラウド・インフラストラクチャで実行される提供者のアプリケーションを使用することである。アプリケーションには、ウェブ・ブラウザ(例えばウェブベースの電子メール)などのシン・クライアント・インターフェースを通じて各種クライアント・デバイスからアクセスすることができる。消費者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、さらには個々のアプリケーション機能を含む基礎となるクラウド・インフラストラクチャを管理または制御しないが、限定されたユーザ固有のアプリケーション設定は例外である場合がある。
【0024】
サービスとしてのプラットフォーム(PaaS:Platform as aService):消費者に提供される機能は、提供者がサポートするプログラミング言語とツールを使用して作成した消費者が作成または取得したアプリケーションをクラウド・インフラストラクチャ上に展開することである。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基礎となるクラウド・インフラストラクチャを管理または制御しないが、展開したアプリケーションや、可能性としてはアプリケーションをホストする環境の設定は制御することができる。
【0025】
サービスとしてのインフラストラクチャ(IaaS:Infrastructure asa Service):消費者に提供される機能は、処理、ストレージ、ネットワーク、および他の基本的なコンピューティング資源を実現することであり、消費者は任意のソフトウェアを展開し、実行することができ、これにはオペレーティング・システムおよびアプリケーションが含まれる可能性がある。消費者は基礎となるクラウド・インフラストラクチャを管理または制御しないが、オペレーティング・システム、ストレージ、展開したアプリケーションを制御することができ、また可能性としては選択されたネットワーキングの構成要素(例えばホスト・ファイアウォール)を限定的に制御することができる。
【0026】
展開モデルは以下の通りである。
【0027】
プライベート・クラウド:クラウド・インフラストラクチャが1つの組織のみに対して運用される。クラウドはその組織または第3者によって管理することができ、組織内または組織外に存在することができる。
【0028】
コミュニティ・クラウド:クラウド・インフラストラクチャがいくつかの組織に共有され、利害事項(例えば任務、セキュリティ要件、ポリシー、および法令順守事項)を共有する特定の集団をサポートする。クラウドはそれらの組織または第3者によって管理することができ、組織内または組織外に存在することができる。
【0029】
パブリック・クラウド:クラウド・インフラストラクチャを一般公衆または大きな企業集団が利用できるようにし、クラウド・サービスを販売する組織によって所有される。
【0030】
ハイブリッド・クラウド:クラウド・インフラストラクチャが2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)から構成され、それらのクラウドは独自のエンティティのままであるが、データとアプリケーションの移植性(例えばクラウド間の負荷平衡のためのクラウド・バースティング(bursting))を可能にする標準化された技術または独自技術によって互いに結合される。
【0031】
クラウド・コンピューティング環境は、ステートレス性、低結合性、モジュール性、および意味的な相互動作性に着目した指向のサービスである。クラウド・コンピューティングの中核となるのは、相互接続されたノードからなるネットワークを構成するインフラストラクチャである。クラウド・コンピューティング・ネットワークのノードはコンピューティング・デバイスであり、コンピューティング・デバイスには、これらに限定されないが、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、手持ち型またはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサを利用したシステム、セット・トップ・ボックス、プログラム可能な消費者家電製品、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記システムまたはデバイスのうちの任意もの、等を含む分散クラウド・コンピューティング環境が含まれる。クラウド・コンピューティング・ノードは、実装されるか、または上記の機能を行うことができるか、あるいはその両方が可能である。
【0032】
以下では本発明の実施形態を参照する。ただし、本発明は記載される特定の実施形態に限定されないことを理解されたい。以下の特徴および要素の任意の組み合わせは、異なる実施形態に関係するか否かに関係なく、本発明を実装しかつ実施することが企図される。さらに、本発明の実施形態は、他の可能な解決法または従来技術あるいはその両方を上回る効果を実現することが可能であるが、特定の効果が所与の実施形態によって実現されるか否かは本発明を限定しない。したがって、以下の態様、特徴、実施形態、および効果は例示的なものに過ぎず、(1つまたは複数の)請求項に明示的に述べられる場合を除いて、添付の特許請求の範囲の要素または限定事項とは見なされない。同様に、「本発明」の言及は、本明細書に開示される任意の本発明の主題の一般化と解釈すべきでなく、また、(1つまたは複数の)請求項に明示的に述べられる場合を除いて添付の特許請求の範囲の要素または限定事項であるとも解釈すべきでない。
【0033】
当業者には理解されるように、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化することができる。したがって、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)、または、ソフトウェアの態様とハードウェアの態様を組み合わせた実施形態の形をとることができ、これらは本明細書ではすべて一般に「回路」、「モジュール」、もしくは「システム」と称する場合がある。さらに、本発明の態様は、コンピュータ可読のプログラム・コードが具現化された1つまたは複数のコンピュータ可読媒体として具現化されたコンピュータ・プログラム製品の形をとることができる。
【0034】
1つまたは複数のコンピュータ可読媒体の任意の組み合わせを利用することができる。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体でありうる。コンピュータ可読記憶媒体は、これらに限定されないが、例えば、電子、磁気、光学、電磁気、赤外線、もしくは半導体のシステム、装置、またはデバイス、あるいはそれらの適切な組み合わせである。コンピュータ可読記憶媒体のより具体的な例(ただし完全な網羅ではない列挙)は、1つまたは複数の配線を有する電気接続、携帯可能コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読取専用メモリ(ROM)、消去可能プログラム可能読取専用メモリ(EPROMまたはフラッシュ・メモリ)、光ファイバ、携帯可能コンパクト・ディスク読取専用メモリ(CD−ROM)、光学記憶装置、磁気記憶装置、あるいはそれらの任意の適切な組み合わせを含む。本文献の文脈では、コンピュータ可読記憶媒体は、命令実行システム、装置、もしくはデバイスによる使用のために、またはそれらとの関連でプログラムを保持または記憶することが可能な任意の有形媒体とすることができる。
【0035】
コンピュータ可読信号媒体は、例えばベースバンドにおいてまたは搬送波の一部としてコンピュータ可読のプログラム・コードが内部に具現化された伝搬データ信号を含む。そのような伝搬信号は、これらに限定されないが、電磁気、光学、またはそれらの任意の適切な組み合わせを含む各種形態をとることができる。コンピュータ可読信号媒体は、命令実行システム、装置、もしくはデバイスによる使用のために、またはそれらとの関連でプログラムを通信、伝搬、または移送することが可能な、コンピュータ可読記憶媒体以外の任意のコンピュータ可読媒体であってよい。
【0036】
コンピュータ可読媒体に具現化されたプログラム・コードは、無線、有線、光ファイバ・ケーブル、RF等、またはそれらの任意の適切な組み合わせを含む任意の適当な媒体を使用して伝送することができるが、これらに限定されない。
【0037】
本発明の態様の動作を実施するためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++等のオブジェクト指向のプログラミング言語と、「C」プログラミング言語または類似のプログラミング言語等の従来の手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組み合わせで書くことができる。プログラム・コードは、すべてがユーザのコンピュータで実行されても、独立型のソフトウェア・パッケージとして、一部がユーザのコンピュータで実行されても、一部がユーザのコンピュータで実行され、一部がリモート・コンピュータで実行されても、またはすべてがリモート・コンピュータまたはサーバで実行されてもよい。最後の場合は、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)やワイド・エリア・ネットワーク(WAN)を含む任意種類のネットワークを通じてユーザのコンピュータに接続しても、または外部のコンピュータに接続してもよい(例えばインターネット・サービス・プロバイダを使用してインターネットを通じて)。
【0038】
以下、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して本発明の態様を説明する。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方のブロックの組み合わせはコンピュータ・プログラム命令によって実施できることが理解されよう。コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートもしくはブロック図またはその両方の1つあるいは複数のブロックに指定される機能/動作を実施する手段を生成するべく、このようなコンピュータ・プログラム命令は汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。
【0039】
コンピュータ可読媒体に記憶された命令により、フローチャートもしくはブロック図またはその両方の1つあるいは複数のブロックに指定される機能/動作を実施する命令を含んだ製造品を作製するべく、このようなコンピュータ・プログラム命令はコンピュータ可読媒体に記憶され、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスに特定の方式で機能するように指示するものであってよい。
【0040】
コンピュータまたは他のプログラム可能装置で実行される命令が、フローチャートもしくはブロック図またはその両方の1つあるいは複数のブロックに指定される機能/動作を実施する処理を提供するように、コンピュータによって実施される処理を生成するべく、コンピュータ・プログラム命令はコンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実行させるものであってよい。
【0041】
本発明の実施形態は、クラウド・コンピューティングのインフラストラクチャを通じてエンド・ユーザに提供することができる。クラウド・コンピューティングとは、一般に、スケーラブルなコンピューティング資源をネットワークを通じてサービスとして提供することを言う。より正式には、クラウド・コンピューティングは、コンピューティング資源とその基盤となる技術的アーキテクチャ(例えばサーバ、記憶機構、ネットワーク)との間の抽象化を提供するコンピューティング機能であって、設定可能なコンピューティング資源の共有プールに必要時にネットワークを通じて利便にアクセスすることを可能にすることにより、コンピューティング資源を最小限の管理労力やサービス・プロバイダとの対話で迅速に準備し、提供するものであると定義することができる。したがって、クラウド・コンピューティングにより、ユーザは、コンピューティング資源を提供するために使用される基盤物理システム(またはそれらのシステムの場所)に関係なく、「クラウド」内の仮想コンピューティング資源(例えば、記憶領域、データ、アプリケーション、さらには完全な仮想化コンピューティング・システム)を利用することができる。
【0042】
通例、クラウド・コンピューティング資源は従量課金方式でユーザに提供され、ユーザは、実際に使用したコンピューティング資源だけについて課金される(例えば、ユーザが利用した記憶空間の量や、ユーザがインスタンス化した仮想化システムの数等)。ユーザは、クラウドにあるあらゆる資源を、いつでも、またインターネット上のどこからでも利用することができる。本発明の文脈では、ユーザは、クラウド内で利用可能なアプリケーションや関連するデータにアクセスすることができる。例えば、マルチテナント・データベースの展開変換アプリケーションをクラウド内のコンピューティング・システムで実行して、1つのマルチテナント展開から別のマルチテナント展開にデータベースを変換することができる。そのような場合、マルチテナント・データベース展開変換アプリケーションは、データベース展開を変換し、物理データ・ストアとそれに関連付けられたテナントのメタデータをクラウド内の記憶場所に記憶することができる。そのようにすることにより、ユーザは、クラウドに接続されたネットワーク(例えばインターネット)に結合された任意のコンピューティング・システムからその情報にアクセスすることができる。
【0043】
図1は、本発明の一実施形態による、サービスとしてソフトウェアを提供するクラウド・コンピューティング・システム100を示すブロック図であり、サーバが3つの異なる展開の1つでアプリケーションを提供し、複数のクライアント(テナント)のデータを記憶する。ネットワーク化されたシステム100はサーバ102およびクライアント・コンピュータ132を含む。サーバ102とクライアント132はネットワーク130を介して相互と接続され、ネットワーク130を介して他のコンピュータ接続することができる。一般に、ネットワーク130は、電気通信ネットワークまたはワイド・エリア・ネットワーク(WAN)あるいはその両方である。特定の実施形態ではネットワーク130はインターネットである。
【0044】
サーバ102は一般にプロセッサ104を含み、プロセッサ104はバス115を介してメモリ106、ネットワーク・インターフェース・デバイス124、ストレージ108、入力装置126、および出力装置128に接続される。サーバ102は一般にオペレーティング・システム107の制御下にある。オペレーティング・システムの例には、UNIX(R)、Microsoft Windows(R)オペレーティング・システムの諸バージョン、Linux(R)オペレーティング・システムの配布がある。より一般的には、本明細書に開示される機能をサポートする任意のオペレーティング・システムを使用することができる。プロセッサ104は単一のCPU、複数のCPU、複数の処理コアを持つ単一のCPU等を表すものとして含まれる。同様に、メモリ106はランダム・アクセス・メモリとすることができる。メモリ106は単一の存在として示しているが、メモリ106は複数のモジュールから構成することが可能であり、高速レジスタやキャッシュから、低速であるがより大きいDRAMチップまで複数のレベルに存在する可能性があることを理解されたい。ネットワーク・インターフェース・デバイス124は、サーバ102がネットワーク130を介して他のコンピュータと通信できるようにする任意種類のネットワーク通信デバイスである。
【0045】
ストレージ108は恒久的な記憶装置とすることができる。図ではストレージ108を1つの構成部分として示しているが、ストレージ108は固定ディスク・ドライブ、ソリッド・ステート・ドライブ、フロッピー・ディスク・ドライブ、テープ・ドライブ、取外し可能メモリ・カード、または光学記憶装置等の固定記憶装置または取外し可能記憶装置あるいはその両方の組み合わせとすることができる。メモリ106およびストレージ108は、複数の一次記憶装置および二次記憶装置にまたがる1つの仮想アドレス空間の一部とすることができる。
【0046】
図に示すように、サーバのストレージ108は複数のデータベースを保持している。この特定の図面では4つのデータベースを示すが、サーバ102のストレージ108には任意数のデータベースを記憶することができる。図では、ストレージ108は、符号118、120、および122のテナント固有のデータベースを保持しており、各データベースは異なる展開の選択肢に対応する。ストレージ108はメタデータ・リポジトリ125も保持するように示されており、これは、テナントの識別情報、システム・ポリシー、および他の関連情報を記憶する。
【0047】
入力装置126はサーバ102への入力を提供する任意のデバイスとすることができる。例えばキーボードまたはマウスあるいはその両方を使用することができる。出力装置128はサーバ102のユーザに出力を提供する任意のデバイスとすることができる。例えば、出力装置108は、任意の従来の表示画面やスピーカ・セットでありうる。図では入力装置126と別に示しているが、出力装置128と入力装置126は組み合わせてもよい。例えば、タッチ画面が内蔵された表示画面を使用することができる。
【0048】
図示するように、サーバ102のメモリ106は、ネットワーク130を介して複数のサービスをユーザに提供するように構成されたマルチテナント・アプリケーション110を含む。図示するように、サーバ102のメモリ106は、サーバ102のストレージ108に保持される複数のデータベースを管理するように構成されたデータベース管理システム(DBMS)112も保持する。サーバ102のメモリ106は、ウェブ・サーバ114も保持し、これは従来のウェブ・サービス機能を実行し、マルチテナント・アプリケーション110などの種々のアプリケーションのための実行時環境としてアプリケーション・サーバ機能(例えばJ2EEアプリケーション・サーバ)も提供することができる。
【0049】
図に示すように、本発明の一実施形態によると、クライアント・コンピュータ132は、プロセッサ134、メモリ136、オペレーティング・システム138、ストレージ142、ネットワーク・インターフェース144、入力装置146、および出力装置148を含む。これらの構成要素の説明と機能は、サーバ102を参照して説明した対応する構成要素と同じである。図に示すように、クライアント・コンピュータ132のメモリ136はウェブ・ブラウザ140も保持し、一部の実施形態ではこれを使用してサーバ102によって提供されるサービスにアクセスする。
【0050】
図1の具体的な説明は例示のみを目的とするものであり、本発明は記載される特定の実施形態に限定されず、本発明の実装および実施には任意の組み合わせが企図されることを理解されたい。図1には単一のサーバ102を示すが、本発明の実施形態は、本明細書に記載されるサービスおよび機能を提供するために任意数のサーバを企図する。さらに、図1ではサーバ102にまとめて図示するが、マルチテナント・アプリケーション110の2階層のサービスおよび永続性機能は、別々の物理的サーバ、または同じサーバ内の別々の仮想サーバに収容することができる。一部の実施形態では、マルチテナント・アプリケーション110は、1つのコンピューティング・クラスタで複数のインスタンスとして展開することができる。当業者には知られるように、マルチテナント・アプリケーション110の個々の機能を行うモジュールは、1つの同じサーバ、複数の異なるサーバ、またはそれらの任意の組み合わせに収容することができる。メタデータ・リポジトリ125、データベース118、120、および122などの記憶される項目も、1つの同じサーバ、複数の異なるサーバ、またはそれらの任意の組み合わせに記憶することができ、アプリケーション・モジュールとして同じまたは異なるサーバに常駐することもできる。
【0051】
図2は、本発明の一実施形態によるマルチテナント環境で展開の選択肢を管理し、変換するためのアーキテクチャを説明するブロック図200である。図示するように、複数のテナント2051〜Nがネットワーク130を介してサーバ102に接続され、サーバ102のメモリ106に保持されるマルチテナント・アプリケーション110にアクセスする。マルチテナント・アプリケーション110については下記でさらに詳細に説明するが、テナントにサービスを提供するように構成され、このマルチテナント・アプリケーション110には、一部の実施形態では、クラウド・コンピューティング環境における複数のSaaSアプリケーションが含まれる。図には抽象化層220も示され、これは、マルチテナント・アプリケーション110とDBMS112間の仲介として機能する。抽象化層220を通じて、種々のデータベース展開の選択肢間の透過的な変換を完了することができ、これによりマルチテナント・アプリケーション110は各データベースの物理的な実装を意識する必要がなく、またデータベースの変化を反映するようにマルチテナント・アプリケーション110を再コーディングする必要がない。抽象化層220は、マルチテナント・アプリケーション110からクエリを受け取り、次いでそのクエリにテナント固有の情報を挿入するように構成され、それによりクエリが正しいデータベースまたはデータベース・テーブルあるいはその両方に導かれるようにする。テナント固有の情報には、これらに限定されないが、各テナントに所有されるデータベース、スキーマ、テーブル、および列の物理的な実装に関する詳細が含まれうる。そのような詳細には、データベース、スキーマ、テーブル、および列の名前や場所が含まれうる。代替実施形態では、抽象化層220は、データベース管理システムのフェデレーション機能の拡張として実装することができる。一部の実施形態では、抽象化層はデータ配置層の機能も行い、これは、変換要求を受け取り、その後データを1つのマルチテナンシー展開タイプから別のマルチテナンシー展開タイプに変換する役割を担う。
【0052】
一部の実施形態では、テナント固有の情報はメタデータ・リポジトリ125に記憶される。メタデータ・リポジトリ125の実施形態には、リレーショナル・データベース、コンテンツ管理システム、またはポリシーを実施しデータ・マッピングを行うアプリケーション・モジュールから参照されるファイル・システムが含まれる。DBMS112については下記でさらに詳しく説明するが、一般的なデータベース管理システムである。図に示すように、DBMS112は複数のデータベースを管理し、これには、テナントT1〜Nそれぞれの別個の物理的なデータベース2351〜N、テナントT、T、およびTの別個のスキーマ242、244、および246を含む共有データベース240、そのすべてのテナントに対応する単一のスキーマ252を保持する共有データベース250が含まれる。一部の実施形態では、DBMS112は直接メタデータ・リポジトリ125を管理することもできる。図示するように、データベース250はスキーマ252を保持し、スキーマ252は、それぞれテナント識別情報、キー名、およびキー値に対応する例示的列254、256、および258を有する。テナント識別情報はメタデータ・リポジトリ125に記憶され、管理される。図2の具体的な説明は、例示のみを目的とするものであり、本発明は記載される特定の実施形態に限定されず、本発明の実装および実施には任意の組み合わせが企図されることを理解されたい。
【0053】
図3は、本発明の一実施形態による2階層のアプリケーション・アーキテクチャの構成要素を示すブロック図である。図のように、マルチテナント・アプリケーション110は、サービス340および永続性アクセス層350を含む。マルチテナント・アプリケーション110は、適切なアプリケーション・ランタイム、例えばIBM(R)WebSphere(R)アプリケーション・サーバなどのJ2EEアプリケーション・ランタイム上のアプリケーション階層に存在する(IBMおよびWebSphereは世界中の多くの司法管轄内で登録されたインターナショナル・ビジネス・マシン社の商標である)。サービス340は、任意のSaaS(Software as a Service)ソリューションを含み、アプリケーションがサーバで実行され、ネットワーク、例えばインターネットを介してユーザからアクセスされる。SaaSアプリケーションの例には、これらに限定されないが、マスタ・データ管理(MDM)、課金、連携、顧客関係管理、企業のリソース計画、インボイス作成、人的資源管理、コンテンツ管理、およびサービス・デスク管理用のアプリケーションが含まれる。永続性アクセス層350は、抽象化層220に結合された時に、マルチテナント・アプリケーション110とそのサービス340が、マルチテナント環境で管理されている複数のデータベースに透過的な方式でアクセスできるように構成されたインターフェースである。マルチテナント・アプリケーション110とそのサービス340はそれらが参照するデータベースの物理的な実装を意識しないため、永続性アクセス層350が、マルチテナント・アプリケーションと抽象化層の間にリンクを提供して、データベースの物理的な実装の詳細を隠蔽する。永続性アクセス層350を通じて、マルチテナント・アプリケーション110とそのサービス340は、さらなる外挿と処理のために抽象化層に送られることになるクエリを生成することにより、データベースにデータを読み書きする。
【0054】
図に示すように、マルチテナント・アプリケーション110は抽象化層220に接続されて、上記の機能を提供する。抽象化層220は、本発明の一実施形態では、マルチテナント・アプリケーション110とDBMS112の間に抽象化の層を提供する。図に示すように、DBMS112はデータベース・エンジン300を含み、これは、読出し、書き込み、クエリ、および他のデータベース管理ツールなどの標準的なデータベース機能を制御する。一部の実施形態では、DBMS112は、一部の実施形態では上記のように抽象化層220で実行されるデータ配置層機能を実行することができる。
【0055】
図4は、本発明の一実施形態による、テナント固有のデータ・セットを1つのマルチテナント展開の選択肢から第2のマルチテナント展開の選択肢に変換する方法400を示すフローチャートである。一実施形態では、マルチテナント・アプリケーション110が方法400のステップを実行する。方法はステップ410で開始し、マルチテナント・アプリケーション110によりテナントから変換要求が受け取られる。ステップ420で、マルチテナント・アプリケーション110は、メタデータ・リポジトリ125に保持される情報にアクセスすることにより要求元のテナントを特定する。メタデータ・リポジトリ125がリレーショナル・データベースである実施形態では、マルチテナント・アプリケーション110はメタデータ・リポジトリ125に接続して、要求元のテナントに関連付けられたデータを取り出す。ステップ430で、マルチテナント・アプリケーション110が、テナントの現在のマルチテナント展開の選択肢を特定する。一実施形態では、メタデータ・リポジトリ125の情報を使用して、現在のマルチテナント展開の選択肢を判定する。別の実施形態では、現在のマルチテナント展開の選択肢はユーザによる入力として提供される。一般に、現在の展開の選択肢の判定には任意の適切な方法が企図される。
【0056】
ステップ440で、マルチテナント・アプリケーション110は、テナントが要求する展開の選択肢を特定する。一部の実施形態では、マルチテナント・アプリケーション110は、ユーザから、要求されるマルチテナント展開を定義する入力を受け取る。ステップ450で、マルチテナント・アプリケーション110は、テナントの変換要求を満たすように現在の展開のデータ・セットを変更する。ステップ450の実施形態については、下記で図5および図6との関連で説明する。ステップ460で、マルチテナント・アプリケーション110は、抽象化層220に関連付けられたメタデータを変更して、マルチテナント・アプリケーション110とそのサービス340がコードの修正を行わずに変換後のデータベースにアクセスできるようにする。マルチテナント・アプリケーション110とそのサービス340は、基盤のデータベースの実際の物理的な実装を参照せずにコーディングされるので、抽象化層220は、選択された展開の選択肢がデータベースの物理的な実装で反映されるように、マルチテナント・アプリケーション110の永続性アクセス層350から提出されるクエリを変更しなければならない。この変更を行わないと、マルチテナント・アプリケーション110とそのサービス340は、コードの変更なしに透過的な方式で基盤のデータベースにアクセスすることができない。一部の実施形態では、ステップ460は、マルチテナント・アプリケーション110がメタデータ・リポジトリ125に保持されるメタデータを更新して、テナントが要求した展開に対応する変換後のデータベースへのリンクを抽象化層220およびそのクエリに提供することを含む。要求される展開がプライベート・データベースである場合は、そのテナントに現在所有されているプライベート・データベースを抽象化層220にリンクするのに十分な情報でメタデータ・リポジトリ125を変更する。ステップ460のいくつかの実施形態では、マルチテナント・アプリケーション110は、新しい識別情報を含むように、要求元のテナントのデータベースに関連付けられた抽象化層220のクエリを変更する。要求される展開が共有データベースのプライベート・スキーマである場合、マルチテナント・アプリケーション110は、要求元のテナントのために作成されたプライベート・スキーマへの参照を含むように、メタデータ・リポジトリ125に保持されるエントリを更新することができる。一部の実施形態では、要求元のテナントに関連付けられた抽象化層220のクエリを書き変えて、プライベート・スキーマ情報を識別する句(clause)を含める。要求される展開が共有データベースの共有スキーマである場合は、メタデータ・リポジトリ125から該当するテナント識別子を検索し、それを更新するか、テナントに関連付けられた抽象化層220のクエリに挿入する。
【0057】
図5は、本発明の一実施形態による、ステップ450に対応する方法500を説明するフローチャートである。一部の実施形態では、マルチテナント・アプリケーション110が方法500のステップを行う。方法はステップ510で開始し、マルチテナント・アプリケーション110が、要求元のテナントが所有するテーブルごとにテナントのデータベースを1つの展開の選択肢から別の展開の選択肢に変換するステップ520〜550を含むループの実行を開始する。ステップ520で、マルチテナント・アプリケーション110は、要求される展開の変換に対応するのに適したデータ構造を作成する。一実施形態では、このデータ構造は、図2の要素2351〜Nのそれぞれで示すように、要求元のテナントに所有されるプライベート・データベースでありうる。別の実施形態では、データ構造は要求元のテナントに所有され、図2の要素240で示すように共有データベースに保持されるプライベート・スキーマである。次いで方法はステップ530に進み、現在のテーブルを、作成されたデータ構造に転送する。この転送は、これらに限定しないがテーブルを移動し、コピーすることを含む任意数の手段で行うことができる。
【0058】
次いで方法はステップ540に進み、ここで「オンライン」のテーブル転送を許可し、これによりデータベースは利用可能な状態を保ち、転送中に受け取られたクエリは、実行のために該当するテーブルに対して発行される。したがって、転送中に受け取られるクエリの種類ごとに一連の規則を定義しなければならない。一実施形態では、選択クエリは元のテーブルと転送されたテーブルの両方に発行され、その結果それぞれで結果のセットが得られる。データが転送される間、マルチテナント・アプリケーションの永続性層から要求される各読出しクエリについては、そのクエリを抽象化層220で両方の場所にリダイレクトしてから、得られたデータ・セットにUNIONを適用し、組み合わせた結果を選択クエリに対応する結果として戻す。一実施形態では、挿入クエリは転送されるテーブルに対して発行され、新しいデータベース・エントリが要求される展開の選択肢の転送されるテーブルだけに作成されるようにする。一実施形態では、更新クエリおよび削除クエリは、元のテーブルと転送されるテーブルの両方に発行され、両方で反映される。そのようにクエリを受け付けることにより、データの転送中にデータベースは完全に利用可能で動作可能な状態を保つ。オンライン転送の利点は、データが1つの展開の選択肢から次の展開の選択肢に移動されることに利用側テナントが気付かず、したがってサービスが常時利用可能であり続けることである。これがないと、結果としてテナントに対してダウンタイムが発生することになり、これは、特に移動するデータの量が非常に大きく、数時間あるいは数日間のダウンタイムを発生させる場合には許容することができない可能性がある。次いで方法はステップ550に進み、マルチテナント・アプリケーション110が、転送するテーブルがまだあるかどうかを判定する。テーブルがまだある場合、方法はステップ510に戻り、そうでない場合方法500は終了する。
【0059】
一部の実施形態では、データ転送を処理する間のデータ転送速度を向上させ、システム性能への影響を低減するためにIBM(R)のFlashCopy(R)機能を提供することにより、方法500に示す転送をさらに改良することができる。(IBMおよびFlashCopyは、世界中の多くの司法管轄内で登録されたインターナショナル・ビジネス・マシン社の商標である。)
【0060】
図6は、本発明の別の実施形態による、ステップ450に対応する方法600を説明するフローチャートである。一部の実施形態では、マルチテナント・アプリケーション110が方法600のステップを行う。方法はステップ610で開始し、マルチテナント・アプリケーション110が、要求元のテナントが所有するテーブルごとにテナントのデータベースを1つの展開の選択肢から別の展開の選択肢に変換するステップ620〜695を含むループの実行を開始する。ステップ620で、一部の実施形態では、マルチテナント・アプリケーション110は、現在のテーブルへのアクセスを阻止する。一部の実施形態では、アクセスの阻止は、テーブルへのアクセスを制約するフラグを抽象化層220に設定することによって達成される。テーブルへのアクセスを阻止する(そして後にアクセスを回復する)ことは、現在の展開の選択肢が、要求元のテナントに所有されるプライベート・データベースであるか、または共有データベースのプライベート・スキーマである場合のみに必要となる。アクセスを阻止する(そして後にアクセスを回復する)ことは、他のテナントのデータも阻止されてしまうため、現在の展開が共有データベースの共有スキーマである実施形態では任意である。転送が完了するまでテーブルへのアクセスを阻止することにより、変更が許可されず、これによりデータベースの正確なコピーが転送されることになる。ステップ630で、マルチテナント・アプリケーション110は、転送するテーブルに保持されているデータを選択する。現在の展開の選択肢が要求元のテナントに所有されるプライベート・データベースである実施形態では、すべてのデータの選択を要求するステートメントを発行してテーブルのデータを選択する。一実施形態では、現在の展開の選択肢は共有データベースのプライベート・スキーマであり、スキーマ・テーブルからすべてのデータを選択するステートメントが発行され、スキーマは要求元のテナントに所有され、スキーマ情報がメタデータ・リポジトリ125から取得される。例えば、テーブルがリレーショナル・データベースにある場合、SQLクエリは「select * from schema.table」と書くことができる。現在の展開が共有データベースの共有スキーマである実施形態では、テナント識別列の入力が要求元のテナントに関連付けられたテナント識別情報と等しいすべてのデータを選択するステートメントを発行してデータを選択し、メタデータ・リポジトリ125からテナント識別情報を取得する。例えば、テーブルがリレーショナル・データベースにある場合は、SQLクエリは「select * from table where tenant=<tenant>」と書くことができる。
【0061】
データが選択されると、方法はステップ640に進み、マルチテナント・アプリケーション110が、要求される展開の選択肢に応じて、ステップ630で実行された選択ステートメントで得られたテーブルにテナント識別情報を含んでいる列を挿入するか、または削除する。現在の展開の選択肢および要求される展開の選択肢によって、テナント識別情報は必要である場合も必要でない場合もあり、適宜対処する必要がある。現在の展開が共有データベースの共有スキーマである実施形態では、ステップ630で選択されたデータと共にテナント識別列が返される。これらの実施形態における行き先のデータベースはそのテナント識別情報を含んでいる列を必要とせず、したがって列は削除されることになる。現在の展開が共有データベースの共有スキーマである実施形態では、ステップ630で発行された選択クエリを修正して、テナント識別情報を含んでいる列が選択されないようにし、後に削除する必要がないようにする。行き先が共有データベースの共有スキーマである実施形態では、そのデータを所有しているテナントを示すためにテナント識別列が必要である。したがって、ステップ630で実行された選択ステートメントの結果のセットにある各レコードについて、テナント識別情報を含む列が挿入されることになり、メタデータ・リポジトリ125からテナント識別情報が取得される。
【0062】
方法は次いでステップ650に進み、マルチテナント・アプリケーション110が、展開の変換を完了するために新しいデータ構造が必要であるかどうかを判定する。新しいデータ構造が必要でない場合、方法はステップ670に進む。必要である場合は、ステップ660でマルチテナント・アプリケーション110が適切なデータ構造を作成する。このデータ構造は、テナントに所有される新しいプライベート・データベース、テナントに所有されるプライベート・データベース内の新しいテーブル、共有データベース中でテナントに所有される新しいプライベート・スキーマ、もしくは共有データベースでテナントに所有されるプライベート・スキーマ中の新しいテーブル、の1つまたは複数である。そのような実施形態では、マルチテナント・アプリケーション110は、データ構造を作成するために必要なテナント識別情報をメタデータ・リポジトリ125から取得する。
【0063】
適切なデータ構造が作成されると、方法はステップ670に進み、マルチテナント・アプリケーション110はテーブルをその行き先のデータ構造に転送する。この転送は、これらに限定しないがテーブルを移動し、コピーすることを含む任意数の手段で行うことができる。方法は次いでステップ680に進み、転送中のテーブルに対して発行された任意のクエリについて、転送が完了するまでは適切なエラー・メッセージが返されるようにする。テーブルが転送されると、方法はステップ690に進み、マルチテナント・アプリケーション110がテーブルへのアクセスを回復して、テナントのアプリケーションがテーブルにアクセスできるようにする。一部の実施形態では、テーブルへのアクセスは、テーブルへのアクセスを阻止していた抽象化層220に設定されたフラグを削除するとともに、切り替え後の展開をテナントに関連付けるように抽象化層220のデータを変更することによって回復される。一部の実施形態では、切り替え後の展開ではもう必要がない可能性があるため、マルチテナント・アプリケーション110が、元の展開のプライベート・データベースとプライベート・スキーマのテーブルを破棄する。方法は次いでステップ695に進み、マルチテナント・アプリケーション110が、要求元のテナントに所有されているテーブルで転送する必要のあるものがまだあるかどうかを判定する。さらにテーブルがある場合、方法はステップ610に戻る。そうでない場合、方法は終了する。
【0064】
方法600の代替実施形態は、テナントごとに共有データベースの共有スキーマの形態の展開についてのデータベース・ビューを作成することにより、クエリ中の「where tenant=<tenant>」の性質の「where」ステートメントを含めることを回避する能力を含む。これらのデータベース・ビューは、抽象化層220により作成し、データベースの寿命を通じて管理することができる。データベース・ビューは、クエリの結果のセットからなるリレーショナル・データベースの仮想テーブルとしてアクセスすることができる、記憶されたクエリで構成される。リレーショナル・データベースの普通のテーブル(ベース・テーブル)と異なり、ビューは物理的なスキーマの一部を形成するのではなく、データベース中のデータから算出または照合される動的な仮想テーブルである。テーブル中のデータを変更することにより、後続のビューの呼び出しで示されるデータを変える。別の実施形態では、選択クエリは、1回のステップですべてのデータを対象とするのではなく、いくつかのかたまりでデータを処理し、この場合一連の選択クエリが発行され、各クエリは、同じ設計概念に従って数回の反復でデータの相補的な部分を取り出す。
【0065】
どの場合でも、データ転送が完了すると、転送元の領域にあるデータはデータベース資源を解放することによって適切に解放され、これは、場合によってはデータベースを破棄することを意味する可能性があり、他の場合には適切な破棄/削除のクエリで行われる。
【0066】
本明細書に記載されるように、分散した冗長なデータベース・アーキテクチャと抽象化層を使用することにより、マルチテナント展開の物理的な実装をマルチテナント・アプリケーション110から隠蔽することができる。実装の詳細を隠蔽することにより、マルチテナント・アプリケーション110とそれが提供する各サービス340を、新しいテナントがサービスの利用を登録する、または展開の変換を要求するたびに再コーディングせずに済む。
【0067】
次いで図7を参照すると、例示的なクラウド・コンピューティング環境750が図示される。図のように、クラウド・コンピューティング環境750は1つまたは複数のクラウド・コンピューティング・ノード710を含み、このノード710と、クラウドの消費者が使用するローカルのコンピューティング・デバイス、例えば携帯情報端末(PDA)または携帯電話754A、デスクトップ・コンピュータ754B、ラップトップ・コンピュータ754D、または自動車コンピュータ・システム754Nあるいはそのすべてが通信することができる。ノード710は相互と通信することができる。コンピューティング・ノード710は、サーバ102およびクライアント・コンピュータ132と同じ属性を持つことができ、サーバおよびクライアント・コンピュータは、クラウド・コンピューティング環境でコンピューティング・ノード710となることができる。これらは、上記に記載するように、プライベート、コミュニティ、パブリック、もしくはハイブリッド・クラウド、またはその組み合わせなどの1つまたは複数のネットワークとして物理的または仮想的にグループ化することができる(図示せず)。それにより、クラウド・コンピューティング環境750が、クラウドの消費者がローカルのコンピューティング・デバイスにそのための資源を維持する必要なしに、サービスとしてインフラストラクチャ、プラットフォームまたはソフトウェア、あるいはそのすべてを提供することが可能になる。図7に示すコンピューティング・デバイス754A〜Nの種類は例示に過ぎず、コンピューティング・ノード710およびクラウド・コンピューティング環境750は、任意種類のネットワークまたはネットワークでアドレス指定可能な接続(例えばウェブ・ブラウザを使用する)あるいはその両方を介して任意種類のコンピュータ化されたデバイスと通信できることが理解される。
【0068】
次いで図8を参照すると、クラウド・コンピューティング環境750(図7)で提供される機能抽象化層のセットが図示される。図8に示す構成要素、層、および機能は例示に過ぎず、本発明の実施形態はそれらに限定されないことを予め理解されたい。図示するように、以下の層とそれに対応する機能が提供される。
【0069】
ハードウェアおよびソフトウェア層860は、ハードウェアの構成要素およびソフトウェアの構成要素を含む。ハードウェア構成要素の例は、メインフレーム、一例ではIBM(R)のzSeries(R)システム、RISC(縮小命令セット・コンピュータ)アーキテクチャに基づくサーバ、一例ではIBM pSeries(R)システム、IBM xSeries(R)システム、IBM BladeCenter(R)システム、記憶装置、ネットワークおよびネットワーキング・コンポーネントが含まれる。ソフトウェアの構成要素の例には、ネットワーク・アプリケーション・サーバ・ソフトウェア、一例ではIBM WebSphere(R)アプリケーション・サーバ・ソフトウェア、およびデータベース・ソフトウェア、一例ではIBM DB2(R)データベース・ソフトウェアが含まれる。(IBM、zSeries、pSeries、xSeries、BladeCenter、WebSphere、およびDB2は、世界中の多くの司法管轄内で登録されたインターナショナル・ビジネス・マシン社の商標である。)
【0070】
仮想化層862は抽象化層を提供し、この抽象化層から仮想エンティティを提供することができ、その例には、仮想サーバ、仮想ストレージ、仮想プライベート・ネットワークを含む仮想ネットワーク、仮想アプリケーションおよびオペレーティング・システム、ならびに仮想クライアントがある。
【0071】
一例では、管理層864が下記の機能を提供することができる。リソースのプロビジョニングは、クラウド・コンピューティング環境内で作業を行うために利用されるコンピューティング資源および他の資源の動的な調達を提供する。計量および料金設定は、クラウド・コンピューティング環境内で資源が利用される際の費用の追跡と、それらの資源の消費についての課金またはインボイス作成を提供する。一例では、それらの資源は、アプリケーション・ソフトウェアのライセンスを含む。セキュリティは、クラウド消費者と作業について身元の検証を行い、またデータおよび他の資源に対する保護も提供する。ユーザ・ポータルは、消費者およびシステム管理者にクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理は、要求されるサービス・レベルが満たされるようにクラウド・コンピューティング資源の割振りと管理を提供する。サービス・レベル同意(SLA)の計画および遂行は、将来の要件がSLAに準拠することが予想されるクラウド・コンピューティング資源についての事前の手配と調達を提供する。
【0072】
作業層866は、クラウド・コンピューティング環境を利用できる機能の例を提供する。この層から提供することが可能な作業と機能の例には、マッピングおよびナビゲーション、ソフトウェア開発およびライフサイクル管理、仮想教室の教育配信、データの分析処理、トランザクション処理、およびマルチテナント・データベースの展開の変換が含まれる。
【0073】
図のフローチャートおよびブロック図は、本発明の各種実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実施のアーキテクチャ、機能、および動作を説明するものである。これに関して、フローチャートまたはブロック図の各ブロックは、指定された(1つまたは複数の)論理的機能を実施する1つまたは複数の実行可能命令を含むモジュール、セグメント、またはコードの一部を表すことができる。一部の代替の実施では、ブロックに記された機能は図に記された順序と異なる順序で行ってよいことにも留意されたい。例えば、関係する機能に応じて、連続して示す2つのブロックが実際には実質的に同時に実行される、または2つのブロックが時に逆の順序で実行されることも可能である。また、ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方のブロックの組み合わせは、指定された機能もしくは動作を行う専用ハードウェアを利用したシステム、または専用ハードウェアおよびコンピュータ命令の組み合わせによって実施できることにも留意されたい。
【0074】
前述の説明は本発明の実施形態を対象とするが、本発明の基本的な範囲から逸脱することなくその他のさらなる本発明の実施形態を考案することができ、本発明の範囲は添付の特許請求の範囲によって定められる。
図1
図2
図3
図4
図5
図6
図7
図8