(57)【要約】【課題】マルチテナント・システムでテナント固有のデータ・セットを管理する方法、コンピュータ・プログラム製品、およびシステムを提供すること。【解決手段】物理データ・ストアのデータ・セットを第１の種類のマルチテナント展開から第２の種類のマルチテナント展開に変換する要求を受け取り、要求を行ったテナントを識別するテナント識別メタデータを検索し、第２の種類のマルチテナント展開に基づいて物理データ・ストアのデータ・セットを変更し、抽象化層に関連付けられたメタデータを変更して、変更されたデータ・セットへのアクセスを可能にする。【選択図】図２
2015513153.tif 000002
【特許請求の範囲】
【請求項１】
マルチテナント・システムでテナント固有のデータ・セットを管理するための、コンピュータで実施される方法であって、
物理データ・ストアのデータ・セットを第１の種類のマルチテナント展開から第２の種類のマルチテナント展開に変換する要求を受け取ることと、
前記要求を行ったテナントを識別するテナント識別メタデータを検索することと、
前記第２の種類のマルチテナント展開に基づいて前記物理データ・ストアの前記データ・セットを変更することと、
抽象化層に関連付けられたメタデータを変更して、前記変更されたデータ・セットへのアクセスを可能にすることと
を含む方法。
【請求項２】
前記物理データ・ストアは特定されたテナントに所有され、プライベート・データ・ストアか、または共有データ・ストアのプライベート・スキーマかの１つであり、前記物理データ・ストアの前記データ・セットを変更することは、
転送先データ構造を作成することであって、前記転送先データ構造は、プライベート・データ・ストアか、または共有データ・ストアのプライベート・スキーマかの１つであり、前記転送先データ構造は前記特定されたテナントに所有される、前記作成することと、
前記物理データ・ストアの第１のテーブルを前記転送先データ構造に転送することと、
前記第１のテーブルを前記転送先データ構造に転送することの間に、
選択クエリを受け取ると、前記選択クエリを前記物理データ・ストアの前記テーブルと、前記転送先データ構造の前記転送されるテーブルとに発行し、発行する際に結果得られる各データ・セットに和集合が適用され前記選択クエリに対する結果のセットとして返され、
挿入クエリを受け取ると、前記挿入クエリを前記転送先データ構造の前記転送されるテーブルに発行し、
更新クエリまたは削除クエリを受け取ると、前記更新クエリまたは削除クエリを前記第１のテーブルと、前記転送先データ構造の前記転送されるテーブルとに発行することと
を含む、請求項１に記載のコンピュータで実施される方法。
【請求項３】
前記物理データ・ストアは共有データ・ストアであり、前記第１のテーブルは、前記物理データ・ストア内で前記特定されたテナントに所有されるプライベート・スキーマにあり、前記転送先データ構造は前記特定されたテナントに所有されるプライベート・データ・ストアである、請求項２に記載のコンピュータで実施される方法。
【請求項４】
前記物理データ・ストアは、前記特定されたテナントに所有されるプライベート・データ・ストアであり、前記転送先データ構造は、共有物理データ・ストア内で前記特定されたテナントに所有されるプライベート・スキーマである、請求項２に記載のコンピュータで実施される方法。
【請求項５】
前記物理データ・ストアの前記データ・セットを変更することが、
前記物理データ・ストアの第１のテーブルからデータを選択することと、
前記選択されたデータを転送先データ構造に転送することであって、前記転送先データ構造は、プライベート物理データ・ストア、共有データ・ストアのプライベート・スキーマ、または前記第２の種類のマルチテナント展開に対応する共有データ・ストアの共有スキーマ、の１つである、前記転送することと、
前記選択されたデータを前記転送先データ構造に転送することの間に前記第１のテーブルを対象とするクエリを受け取ると、エラー・メッセージを返すことと
を含む、請求項１に記載のコンピュータで実施される方法。
【請求項６】
前記転送先データ構造は、共有される物理データ・ストアの共有スキーマであり、前記物理データ・ストアは、特定されたテナントに所有されるプライベート物理データ・ストアであり、前記方法がさらに、
前記第１のテーブルから前記データを選択することの前に、前記第１のテーブルへのアクセスを阻止することと、
前記第１のテーブルから前記データを選択することの後に、前記第１のテーブルから前記データを選択することから得られたデータ・セットの新しい列に前記テナント識別メタデータを挿入することと、
前記第１のテーブルへのアクセスを回復することと
を含む、請求項５に記載のコンピュータで実施される方法。
【請求項７】
前記物理データ・ストアは共有データ・ストアであり、前記転送先データ構造は、共有される物理データ・ストアの共有スキーマであり、前記第１のテーブルは、前記物理データ・ストア内で特定されたテナントに所有されるプライベート・スキーマにあり、前記方法がさらに、
前記第１のテーブルから前記データを選択することの前に、前記第１のテーブルへのアクセスを阻止することと、
前記第１のテーブルから前記データを選択することの後に、前記第１のテーブルから前記データを選択することから得られたデータ・セットの新しい列に前記テナント識別メタデータを挿入することと、
前記第１のテーブルへのアクセスを回復することと
を含む、請求項５に記載のコンピュータで実施される方法。
【請求項８】
前記物理データ・ストアは共有データ・ストアであり、前記第１のテーブルは、前記物理データ・ストアの共有スキーマにあり、前記転送先データ構造は、特定されたテナントに所有されるプライベート・データ・ストアであり、前記選択されるデータは前記特定されたテナントに所有され、前記方法がさらに、
前記第１のテナントから前記データを選択することの後に、テナント識別を含んでいる列が選択された場合、テナント識別メタデータを含んでいる前記列を削除することと、
前記データを前記転送先データ構造に転送することの前に、前記転送先データ構造を作成することと
を含む、請求項５に記載のコンピュータで実施される方法。
【請求項９】
前記物理データ・ストアは共有データ・ストアであり、前記第１のテーブルは、前記物理データ・ストアの共有スキーマにあり、前記転送先データ構造は、共有データ・ストア内で特定されたテナントに所有されるプライベート・スキーマであり、前記選択されるデータは前記特定されたテナントに所有され、前記方法がさらに、
前記第１のテナントから前記データを選択することの後に、テナント識別を含んでいる列が選択された場合、テナント識別メタデータを含んでいる前記列を削除することと、
前記データを前記転送先データ構造に転送することの前に、前記転送先データ構造を作成することと
を含む、請求項５に記載のコンピュータで実施される方法。
【請求項１０】
前記第１の種類のマルチテナント展開で前記テナント固有のデータ・セットにアクセスするアプリケーションが、コードの変更を必要とせずに前記第２の種類のマルチテナント展開で前記テナント固有のデータ・セットにアクセスすることができ、マルチテナント展開で前記テナント固有のデータ・セットのデータにアクセスするアプリケーションは、前記テナント固有のデータ・セットの物理的な実装を意識しない、請求項１に記載のコンピュータで実施される方法。
【請求項１１】
マルチテナント・システムでテナント固有のデータ・セットを管理するためのコンピュータ・プログラム製品であって、
コンピュータ可読プログラム・コードが具現化されたコンピュータ可読記憶媒体を含み、前記コンピュータ可読プログラム・コードは、
物理データ・ストアのデータ・セットを第１の種類のマルチテナント展開から第２の種類のマルチテナント展開に変換する要求を受け取るように構成されたコンピュータ可読プログラム・コードと、
前記要求を行ったテナントを識別するテナント識別メタデータを検索するように構成されたコンピュータ可読プログラム・コードと、
前記第２の種類のマルチテナント展開に基づいて前記物理データ・ストアの前記データ・セットを変更するように構成されたコンピュータ可読プログラム・コードと、
抽象化層に関連付けられたメタデータを変更して、前記変更されたデータ・セットへのアクセスを可能にするように構成されたコンピュータ可読プログラム・コードと
を含む、コンピュータ・プログラム製品。
【請求項１２】
前記物理データ・ストアは特定されたテナントに所有され、プライベート・データ・ストアか、または共有データ・ストアのプライベート・スキーマかの１つであり、前記物理データ・ストアの前記データ・セットを変更することは、
転送先データ構造を作成することであって、前記転送先データ構造は、プライベート・データ・ストアか、または共有データ・ストアのプライベート・スキーマかの１つであり、前記転送先データ構造は前記特定されたテナントに所有される、前記作成することと、
前記物理データ・ストアの第１のテーブルを前記転送先データ構造に転送することと、
前記第１のテーブルを前記転送先データ構造に転送することの間に、
選択クエリを受け取ると、前記選択クエリを前記物理データ・ストアの前記テーブルと、前記転送先データ構造の前記転送されるテーブルとに発行し、発行する際に結果得られる各データ・セットに和集合が適用され前記選択クエリに対する結果のセットとして返され、
挿入クエリを受け取ると、前記挿入クエリを前記転送先データ構造の前記転送されるテーブルに発行し、
更新クエリまたは削除クエリを受け取ると、前記更新クエリまたは削除クエリを前記第１のテーブルと、前記転送先データ構造の前記転送されるテーブルとに発行することと
を含む、請求項１１に記載のコンピュータ・プログラム製品。
【請求項１３】
前記物理データ・ストアは共有データ・ストアであり、前記第１のテーブルは、前記物理データ・ストア内で前記特定されたテナントに所有されるプライベート・スキーマにあり、前記転送先データ構造は前記特定されたテナントに所有されるプライベート・データ・ストアである、請求項１２に記載のコンピュータ・プログラム製品。
【請求項１４】
前記物理データ・ストアは、前記特定されたテナントに所有されるプライベート・データ・ストアであり、前記転送先データ構造は、共有物理データ・ストア内で前記特定されたテナントに所有されるプライベート・スキーマである、請求項１２に記載のコンピュータ・プログラム製品。
【請求項１５】
前記物理データ・ストアの前記データ・セットを変更することが、
前記物理データ・ストアの第１のテーブルからデータを選択することと、
前記選択されたデータを転送先データ構造に転送することであって、前記転送先データ構造は、プライベート物理データ・ストア、共有データ・ストアのプライベート・スキーマ、または前記第２の種類のマルチテナント展開に対応する共有データ・ストアの共有スキーマ、の１つである、前記転送することと、
前記選択されたデータを前記転送先データ構造に転送することの間に前記第１のテーブルを対象とするクエリを受け取ると、エラー・メッセージを返すことと
を含む、請求項１１に記載のコンピュータ・プログラム製品。
【請求項１６】
前記転送先データ構造は、共有される物理データ・ストアの共有スキーマであり、前記物理データ・ストアは、特定されたテナントに所有されるプライベート物理データ・ストアであり、前記プログラム・コードがさらに、
前記第１のテーブルから前記データを選択することの前に、前記第１のテーブルへのアクセスを阻止することと、
前記第１のテーブルから前記データを選択することの後に、前記第１のテーブルから前記データを選択することから得られたデータ・セットの新しい列に前記テナント識別メタデータを挿入することと、
前記第１のテーブルへのアクセスを回復することと
を含む、請求項１５に記載のコンピュータ・プログラム製品。
【請求項１７】
前記物理データ・ストアは共有データ・ストアであり、前記転送先データ構造は、共有される物理データ・ストアの共有スキーマであり、前記第１のテーブルは、前記物理データ・ストア内で特定されたテナントに所有されるプライベート・スキーマにあり、前記プログラム・コードがさらに、
前記第１のテーブルから前記データを選択することの前に、前記第１のテーブルへのアクセスを阻止することと、
前記第１のテーブルから前記データを選択することの後に、前記第１のテーブルから前記データを選択することから得られたデータ・セットの新しい列に前記テナント識別メタデータを挿入することと、
前記第１のテーブルへのアクセスを回復することと
を含む、請求項１５に記載のコンピュータ・プログラム製品。
【請求項１８】
前記物理データ・ストアは共有データ・ストアであり、前記第１のテーブルは、前記物理データ・ストアの共有スキーマにあり、前記転送先データ構造は、特定されたテナントに所有されるプライベート・データ・ストアであり、前記選択されるデータは前記特定されたテナントに所有され、前記プログラム・コードがさらに、
前記第１のテナントから前記データを選択することの後に、テナント識別を含んでいる列が選択された場合、テナント識別メタデータを含んでいる前記列を削除することと、
前記データを前記転送先データ構造に転送することの前に、前記転送先データ構造を作成することと
を含む、請求項１５に記載のコンピュータ・プログラム製品。
【請求項１９】
前記物理データ・ストアは共有データ・ストアであり、前記第１のテーブルは、前記物理データ・ストアの共有スキーマにあり、前記転送先データ構造は、共有データ・ストア内で特定されたテナントに所有されるプライベート・スキーマであり、前記選択されるデータは前記特定されたテナントに所有され、前記プログラム・コードがさらに、
前記第１のテナントから前記データを選択することの後に、テナント識別を含んでいる列が選択された場合、テナント識別メタデータを含んでいる前記列を削除することと、
前記データを前記転送先データ構造に転送することの前に、前記転送先データ構造を作成することと
を含む、請求項１５に記載のコンピュータ・プログラム製品。
【請求項２０】
前記第１の種類のマルチテナント展開で前記テナント固有のデータ・セットにアクセスするアプリケーションが、コードの変更を必要とせずに前記第２の種類のマルチテナント展開で前記テナント固有のデータ・セットにアクセスすることができ、マルチテナント展開で前記テナント固有のデータ・セットのデータにアクセスするアプリケーションは、前記テナント固有のデータ・セットの物理的な実装を意識しない、請求項１１に記載のコンピュータ・プログラム製品。
【請求項２１】
１つまたは複数のコンピュータ・プロセッサと、
プログラムを保持するメモリとを含み、前記プログラムは、前記１つまたは複数のコンピュータ・プロセッサによって実行されると、マルチテナント・システムでテナント固有のデータ・セットを管理する動作を行うように構成され、前記動作は、
物理データ・ストアのデータ・セットを第１の種類のマルチテナント展開から第２の種類のマルチテナント展開に変換する要求を受け取ることと、
前記要求を行ったテナントを識別するテナント識別メタデータを検索することと、
前記第２の種類のマルチテナント展開に基づいて前記物理データ・ストアの前記データ・セットを変更することと、
抽象化層に関連付けられたメタデータを変更して、前記変更されたデータ・セットへのアクセスを可能にすることと
を含む、システム。
【請求項２２】
前記物理データ・ストアは特定されたテナントに所有され、プライベート・データ・ストアか、または共有データ・ストアのプライベート・スキーマかの１つであり、前記物理データ・ストアの前記データ・セットを変更することは、
転送先データ構造を作成することであって、前記転送先データ構造は、プライベート・データ・ストアか、または共有データ・ストアのプライベート・スキーマかの１つであり、前記転送先データ構造は前記特定されたテナントに所有される、前記作成することと、
前記物理データ・ストアの第１のテーブルを前記転送先データ構造に転送することと、
前記第１のテーブルを前記転送先データ構造に転送することの間に、
選択クエリを受け取ると、前記選択クエリを前記物理データ・ストアの前記テーブルと、前記転送先データ構造の前記転送されるテーブルとに発行し、発行する際に結果得られる各データ・セットに和集合が適用され前記選択クエリに対する結果のセットとして返され、
挿入クエリを受け取ると、前記挿入クエリを前記転送先データ構造の前記転送されるテーブルに発行し、
更新クエリまたは削除クエリを受け取ると、前記更新クエリまたは削除クエリを前記第１のテーブルと、前記転送先データ構造の前記転送されるテーブルとに発行することと
を含む、請求項２１に記載のシステム。
【請求項２３】
前記物理データ・ストアは共有データ・ストアであり、前記第１のテーブルは、前記物理データ・ストア内で前記特定されたテナントに所有されるプライベート・スキーマにあり、前記転送先データ構造は前記特定されたテナントに所有されるプライベート・データ・ストアである、請求項２２に記載のシステム。
【請求項２４】
前記物理データ・ストアは、前記特定されたテナントに所有されるプライベート・データ・ストアであり、前記転送先データ構造は、共有物理データ・ストア内で前記特定されたテナントに所有されるプライベート・スキーマである、請求項２２に記載のシステム。
【請求項２５】
前記物理データ・ストアの前記データ・セットを変更することが、
前記物理データ・ストアの第１のテーブルからデータを選択することと、
前記選択されたデータを転送先データ構造に転送することであって、前記転送先データ構造は、プライベート物理データ・ストア、共有データ・ストアのプライベート・スキーマ、または前記第２の種類のマルチテナント展開に対応する共有データ・ストアの共有スキーマ、の１つである、前記転送することと、
前記選択されたデータを前記転送先データ構造に転送することの間に前記第１のテーブルを対象とするクエリを受け取ると、エラー・メッセージを返すことと
を含む、請求項２１に記載のシステム。
【請求項２６】
前記転送先データ構造は、共有される物理データ・ストアの共有スキーマであり、前記物理データ・ストアは、特定されたテナントに所有されるプライベート物理データ・ストアであり、前記動作がさらに、
前記第１のテーブルから前記データを選択することの前に、前記第１のテーブルへのアクセスを阻止することと、
前記第１のテーブルから前記データを選択することの後に、前記第１のテーブルから前記データを選択することから得られたデータ・セットの新しい列に前記テナント識別メタデータを挿入することと、
前記第１のテーブルへのアクセスを回復することと
を含む、請求項２５に記載のシステム。
【請求項２７】
前記物理データ・ストアは共有データ・ストアであり、前記転送先データ構造は、共有される物理データ・ストアの共有スキーマであり、前記第１のテーブルは、前記物理データ・ストア内で特定されたテナントに所有されるプライベート・スキーマにあり、前記動作がさらに、
前記第１のテーブルから前記データを選択することの前に、前記第１のテーブルへのアクセスを阻止することと、
前記第１のテーブルから前記データを選択することの後に、前記第１のテーブルから前記データを選択することから得られたデータ・セットの新しい列に前記テナント識別メタデータを挿入することと、
前記第１のテーブルへのアクセスを回復することと
を含む、請求項２５に記載のシステム。
【請求項２８】
前記物理データ・ストアは共有データ・ストアであり、前記第１のテーブルは、前記物理データ・ストアの共有スキーマにあり、前記転送先データ構造は、特定されたテナントに所有されるプライベート・データ・ストアであり、前記選択されるデータは前記特定されたテナントに所有され、前記動作がさらに、
前記第１のテナントから前記データを選択することの後に、テナント識別を含んでいる列が選択された場合、テナント識別メタデータを含んでいる前記列を削除することと、
前記データを前記転送先データ構造に転送することの前に、前記転送先データ構造を作成することと
を含む、請求項２５に記載のシステム。
【請求項２９】
前記物理データ・ストアは共有データ・ストアであり、前記第１のテーブルは、前記物理データ・ストアの共有スキーマにあり、前記転送先データ構造は、共有データ・ストア内で特定されたテナントに所有されるプライベート・スキーマであり、前記選択されるデータは前記特定されたテナントに所有され、前記動作がさらに、
前記第１のテナントから前記データを選択することの後に、テナント識別を含んでいる列が選択された場合、テナント識別メタデータを含んでいる前記列を削除することと、
前記データを前記転送先データ構造に転送することの前に、前記転送先データ構造を作成することと
を含む、請求項２５に記載のシステム。
【請求項３０】
前記第１の種類のマルチテナント展開で前記テナント固有のデータ・セットにアクセスするアプリケーションが、コードの変更を必要とせずに前記第２の種類のマルチテナント展開で前記テナント固有のデータ・セットにアクセスすることができ、マルチテナント展開で前記テナント固有のデータ・セットのデータにアクセスするアプリケーションは、前記テナント固有のデータ・セットの物理的な実装を意識しない、請求項２１に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の分野はマルチテナントのデータベースに関する。より詳細には、本発明の分野は、マルチテナントのサービスとしてのプラットフォーム（ＰａａＳ：Platform as a Service）およびサービスとしてのソフトウェア（ＳａａＳ：Software as a Service）サービス（以後「サービス」と総称する）に関する。
【背景技術】
【０００２】
各種サービスを、パブリック、ハイブリッド、およびプライベートのクラウド環境で提供することができる。サービス・プロバイダから提供されるサービスは、コンピュータ化された情報の記憶と検索のシステムに相当するデータベース管理システム（ＤＢＭＳ）に記憶されたデータにアクセスすることがある。ＤＢＭＳは複数のデータベースを管理することができ、各データベースは異なるエンティティに所有される場合がある。サービスは、複数のクライアント組織（テナント）が同時に利用することができる。そのため、そのようなサービスは、種々のテナントについてのデータを処理する。セキュリティと規制上の理由から、各テナントは種々の度合いのデータ分離を要求し、この分離の度合いは、テナントがサービスに加入する時に「ポリシー要素」として指定される。セキュリティと規制の要件は時間と共に変化するため、分離の度合いをなめらかに変更できることがさらに重要となる。したがって、サービス・プロバイダは、各自のサービスにデータと設定の区分を可能にするマルチテナント・アーキテクチャを実装して、各テナントが適切なレベルのデータ分離を得られるようにする必要がある。
【０００３】
現在、マルチテナント・データを管理するには３つの展開の選択肢がある。第１の展開選択肢は、別々のデータベースにテナント・データを記憶するものであり、これは最も単純なデータ分離方式である。コンピューティング資源とアプリケーション・コードは一般に１つのサーバにあるすべてのテナント間で共有されるが、各テナントは、すべての他のテナントに属するデータから論理的に隔離された状態を保つ独自のデータ・セットを有する。メタデータで各データベースを正しいテナントに関連付け、データベース・セキュリティで、いずれのテナントも偶発的に、または悪意を持って他テナントのデータにアクセスできないようにする。しかし、この選択肢は、サービス・プロバイダが機器を維持管理し、テナント・データをバックアップするための費用が高くなりやすい。所与のデータベース・サーバに収容できるテナントの数が、サーバが対応できるデータベースの数によって制限されるため、ハードウェア費用も代替の展開選択肢の場合と比べて高くなる。
【０００４】
第２の展開選択肢は、同じデータベースに複数のテナントを収容するものであり、各テナントは、そのテナント専用に作成されたスキーマにグループ化された自身のテーブル・セットと他のデータベース生成物を有する。この方式では、セキュリティ意識の高いテナントには、完全に分離されたシステムほどではないが、まずまずの度合いの論理的なデータ分離を提供し、また１台のデータベース・サーバでより多くのテナントに対応することができる。
【０００５】
第３の展開選択肢は、同じデータベースと同じテーブル・セットを使用して複数のテナントのデータをホストするものである。所与のテーブルが任意の順序で記憶された複数のテナントのレコードを含むことができ、テナント識別の列が各レコードを該当するテナントに関連付ける。この３つの選択肢のうち、１台のデータベース・サーバあたり最も多くのテナントに対応することができるため、共有スキーマ方式がハードウェア費用とバックアップ費用が最も低い。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】Draft NIST Working Definition ofCloud Computing, by Peter Mell and Tim Grance, dated October 7, 2009
【発明の概要】
【発明が解決しようとする課題】
【０００７】
データベース展開を１つの選択肢から別の選択肢に透過的に変えることは現在は対応されておらず、人手によるデータ移動とシステムのダウンタイムによってしか解決することができない。さらにそのような変更が行われると、現在データベースにアクセスしているアプリケーションを再コーディングして、データベースへの変更を反映させなければならない。
【課題を解決するための手段】
【０００８】
実施形態は、マルチテナント・システムでテナント固有のデータ・セットを管理するための動作を行うための方法、コンピュータ・プログラム製品、およびシステムを提供する。物理データ・ストアのデータ・セットを第１の種類のマルチテナント展開から第２の種類のマルチテナント展開に変換する要求を受け取り、要求を行ったテナントを識別するテナント識別メタデータを検索し、第２の種類のマルチテナント展開に基づいて物理データ・ストアのデータ・セットを変更し、抽象化層に関連付けられたメタデータを変更して、変更されたデータ・セットへのアクセスを可能にする。
【０００９】
上記態様がどのように達成されるかを詳細に理解できるように、上記で簡単に概要を述べた本発明の実施形態のより具体的な説明を添付図面を参照することにより得ることができる。
【００１０】
ただし、添付図面は本発明の典型的な実施形態を示すものに過ぎず、したがって発明の範囲を限定するものと解釈すべきでないことに留意されたい。本発明には、他の同等に効果的な実施形態が可能である可能性がある。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施形態によるクラウド・コンピューティング環境を説明するブロック図である。
【図２】本発明の一実施形態による、マルチテナント環境で展開の選択肢を管理し、変換するためのアーキテクチャを説明するブロック図である。
【図３】本発明の一実施形態による２階層のアプリケーション・アーキテクチャの構成要素を説明するブロック図である。
【図４】本発明の一実施形態によるデータベース展開の選択肢を変換する方法を説明するフローチャートである。
【図５】本発明の一実施形態による、データを転送して１つのマルチテナント展開の選択肢から別のマルチテナント展開の選択肢へのデータベースの変換を完了する方法を説明するフローチャートである。
【図６】本発明の一実施形態による、データを転送して１つのマルチテナント展開の選択肢から別のマルチテナント展開の選択肢へのデータベースの変換を完了する方法を説明するフローチャートである。
【図７】本発明の一実施形態によるクラウド・コンピューティング環境を示す図である。
【図８】本発明の一実施形態による抽象化モデル層を示す図である。
【発明を実施するための形態】
【００１２】
本発明の実施形態は、マルチテナント環境でテナント固有のデータを管理する技術を提供する。一部の実施形態では、１つのマルチテナント・データベース展開から別のマルチテナント・データベース展開に変換する方法が提供される。一部の実施形態では、マルチテナント展開を変換する要求が抽象化層を通じて受け取られ、このため要求元のアプリケーションは、テナント・データを記憶するために使用されている物理的な実装を意識しない。一部の実施形態では、データベース展開を変換するアプリケーションが提供される。一部の実施形態では、このアプリケーションはデータベース管理システム（ＤＢＭＳ）の一部である。アプリケーションは、物理データ・ストアに記憶されたデータ・セットを第１の種類のマルチテナント展開から第２の種類のマルチテナント展開に変換する要求を受け取るように構成することができる。そして、アプリケーションは、要求元のテナントを識別するテナント識別メタデータを抽象化層を通じて取得することができる。次いで、アプリケーションは、第２の種類のマルチテナント展開に基づいて物理データ・ストアのデータ・セットに変更を加えることができる。最後に、アプリケーションは、第２の種類のマルチテナント展開に従って変更されたデータ・セットにアクセスするように、抽象化層に関連付けられたメタデータを変更することができる。
【００１３】
クラウド・コンピューティングについての詳細な説明が含まれるが、本明細書に述べる教示の実施形態はクラウド・コンピューティング環境に限定されないことを予め理解されたい。本発明の実施形態は、現在知られている、または後に開発される任意の他の種類のコンピューティング環境と併せて実施することが可能である。
【００１４】
便宜上、発明の詳細な説明は、２００９年１０月７日付、Peter MellおよびTim Granceによる「Draft NIST Working Definitionof Cloud Computing」からとられた以下の定義を含む。この文献は、本明細書と共に提出されたＩＤＳにおいて引用されており、その複写を本明細書に添付する。
【００１５】
クラウド・コンピューティングは、最小限の管理労力やサービス・プロバイダとの対話で迅速に準備し、提供することができる設定可能なコンピューティング資源（例えばネットワーク、ネットワーク帯域幅、サーバ、処理、記憶、記憶機構、アプリケーション、仮想機械、およびサービス）の共有プールに、利便に、必要時にネットワークを通じてアクセスすることができるサービス配信モデルである。このクラウド・モデルは少なくとも５つの特性、少なくとも３つのサービス・モデル、および少なくとも４つの展開モデルを含むことができる。
【００１６】
特性は以下の通りである。
【００１７】
オンデマンド・セルフサービス：クラウドの消費者は、サービスの提供者と人的な対話を必要とすることなく、必要時に自動的にサーバ時間やネットワーク・ストレージなどのコンピューティング機能を一方向に実現することができる。
【００１８】
広いネットワーク・アクセス：諸機能はネットワークを通じて利用することができ、異種のシン（thin）またはシック（thick）クライアント・プラットフォーム（例えば携帯電話、ラップトップ、ＰＤＡ）による使用を促す標準的な機構を通じてアクセスされる。
【００１９】
資源の集積：提供者のコンピューティング資源を集積して、マルチテナント・モデルを使用して複数の消費者に提供し、需要に応じて種々の物理的な資源と仮想的な資源が動的に割り当てられ、また割り当て直される。消費者は一般に提供される資源の正確な場所に関して支配権や知識を持たないが、より高いレベルの抽象化で場所を指定する（例えば国、州、またはデータセンター）ことができる可能性がある点で、ある意味で場所の非依存性がある。
【００２０】
迅速な順応性：諸機能は、迅速かつ柔軟に、場合によっては自動的に提供することができ、急速に拡張し、迅速に解放して急速に縮小することができる。消費者にとっては、提供可能な機能は多くの場合無制限に見え、いつでも任意の数量を購入することができる。
【００２１】
サービスの測定：クラウド・システムは、サービスの種類（例えばストレージ、処理、帯域幅、およびアクティブ・ユーザのアカウント）に応じた何らかの抽象化レベルで計量機能を活用することにより、自動的に資源の使用を制御し、最適化する。リソースの使用状況を監視し、管理し、報告することができ、利用されるサービスの提供者と消費者の双方に透過性を提供する。
【００２２】
サービス・モデルは以下の通りである。
【００２３】
サービスとしてのソフトウェア（ＳａａＳ：Software as a Service）：消費者に提供される機能は、クラウド・インフラストラクチャで実行される提供者のアプリケーションを使用することである。アプリケーションには、ウェブ・ブラウザ（例えばウェブベースの電子メール）などのシン・クライアント・インターフェースを通じて各種クライアント・デバイスからアクセスすることができる。消費者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、さらには個々のアプリケーション機能を含む基礎となるクラウド・インフラストラクチャを管理または制御しないが、限定されたユーザ固有のアプリケーション設定は例外である場合がある。
【００２４】
サービスとしてのプラットフォーム（ＰａａＳ：Platform as aService）：消費者に提供される機能は、提供者がサポートするプログラミング言語とツールを使用して作成した消費者が作成または取得したアプリケーションをクラウド・インフラストラクチャ上に展開することである。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基礎となるクラウド・インフラストラクチャを管理または制御しないが、展開したアプリケーションや、可能性としてはアプリケーションをホストする環境の設定は制御することができる。
【００２５】
サービスとしてのインフラストラクチャ（ＩａａＳ：Infrastructure asa Service）：消費者に提供される機能は、処理、ストレージ、ネットワーク、および他の基本的なコンピューティング資源を実現することであり、消費者は任意のソフトウェアを展開し、実行することができ、これにはオペレーティング・システムおよびアプリケーションが含まれる可能性がある。消費者は基礎となるクラウド・インフラストラクチャを管理または制御しないが、オペレーティング・システム、ストレージ、展開したアプリケーションを制御することができ、また可能性としては選択されたネットワーキングの構成要素（例えばホスト・ファイアウォール）を限定的に制御することができる。
【００２６】
展開モデルは以下の通りである。
【００２７】
プライベート・クラウド：クラウド・インフラストラクチャが１つの組織のみに対して運用される。クラウドはその組織または第３者によって管理することができ、組織内または組織外に存在することができる。
【００２８】
コミュニティ・クラウド：クラウド・インフラストラクチャがいくつかの組織に共有され、利害事項（例えば任務、セキュリティ要件、ポリシー、および法令順守事項）を共有する特定の集団をサポートする。クラウドはそれらの組織または第３者によって管理することができ、組織内または組織外に存在することができる。
【００２９】
パブリック・クラウド：クラウド・インフラストラクチャを一般公衆または大きな企業集団が利用できるようにし、クラウド・サービスを販売する組織によって所有される。
【００３０】
ハイブリッド・クラウド：クラウド・インフラストラクチャが２つ以上のクラウド（プライベート、コミュニティ、またはパブリック）から構成され、それらのクラウドは独自のエンティティのままであるが、データとアプリケーションの移植性（例えばクラウド間の負荷平衡のためのクラウド・バースティング（bursting））を可能にする標準化された技術または独自技術によって互いに結合される。
【００３１】
クラウド・コンピューティング環境は、ステートレス性、低結合性、モジュール性、および意味的な相互動作性に着目した指向のサービスである。クラウド・コンピューティングの中核となるのは、相互接続されたノードからなるネットワークを構成するインフラストラクチャである。クラウド・コンピューティング・ネットワークのノードはコンピューティング・デバイスであり、コンピューティング・デバイスには、これらに限定されないが、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、手持ち型またはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサを利用したシステム、セット・トップ・ボックス、プログラム可能な消費者家電製品、ネットワークＰＣ、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記システムまたはデバイスのうちの任意もの、等を含む分散クラウド・コンピューティング環境が含まれる。クラウド・コンピューティング・ノードは、実装されるか、または上記の機能を行うことができるか、あるいはその両方が可能である。
【００３２】
以下では本発明の実施形態を参照する。ただし、本発明は記載される特定の実施形態に限定されないことを理解されたい。以下の特徴および要素の任意の組み合わせは、異なる実施形態に関係するか否かに関係なく、本発明を実装しかつ実施することが企図される。さらに、本発明の実施形態は、他の可能な解決法または従来技術あるいはその両方を上回る効果を実現することが可能であるが、特定の効果が所与の実施形態によって実現されるか否かは本発明を限定しない。したがって、以下の態様、特徴、実施形態、および効果は例示的なものに過ぎず、（１つまたは複数の）請求項に明示的に述べられる場合を除いて、添付の特許請求の範囲の要素または限定事項とは見なされない。同様に、「本発明」の言及は、本明細書に開示される任意の本発明の主題の一般化と解釈すべきでなく、また、（１つまたは複数の）請求項に明示的に述べられる場合を除いて添付の特許請求の範囲の要素または限定事項であるとも解釈すべきでない。
【００３３】
当業者には理解されるように、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化することができる。したがって、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、または、ソフトウェアの態様とハードウェアの態様を組み合わせた実施形態の形をとることができ、これらは本明細書ではすべて一般に「回路」、「モジュール」、もしくは「システム」と称する場合がある。さらに、本発明の態様は、コンピュータ可読のプログラム・コードが具現化された１つまたは複数のコンピュータ可読媒体として具現化されたコンピュータ・プログラム製品の形をとることができる。
【００３４】
１つまたは複数のコンピュータ可読媒体の任意の組み合わせを利用することができる。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体でありうる。コンピュータ可読記憶媒体は、これらに限定されないが、例えば、電子、磁気、光学、電磁気、赤外線、もしくは半導体のシステム、装置、またはデバイス、あるいはそれらの適切な組み合わせである。コンピュータ可読記憶媒体のより具体的な例（ただし完全な網羅ではない列挙）は、１つまたは複数の配線を有する電気接続、携帯可能コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）、消去可能プログラム可能読取専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、光ファイバ、携帯可能コンパクト・ディスク読取専用メモリ（ＣＤ−ＲＯＭ）、光学記憶装置、磁気記憶装置、あるいはそれらの任意の適切な組み合わせを含む。本文献の文脈では、コンピュータ可読記憶媒体は、命令実行システム、装置、もしくはデバイスによる使用のために、またはそれらとの関連でプログラムを保持または記憶することが可能な任意の有形媒体とすることができる。
【００３５】
コンピュータ可読信号媒体は、例えばベースバンドにおいてまたは搬送波の一部としてコンピュータ可読のプログラム・コードが内部に具現化された伝搬データ信号を含む。そのような伝搬信号は、これらに限定されないが、電磁気、光学、またはそれらの任意の適切な組み合わせを含む各種形態をとることができる。コンピュータ可読信号媒体は、命令実行システム、装置、もしくはデバイスによる使用のために、またはそれらとの関連でプログラムを通信、伝搬、または移送することが可能な、コンピュータ可読記憶媒体以外の任意のコンピュータ可読媒体であってよい。
【００３６】
コンピュータ可読媒体に具現化されたプログラム・コードは、無線、有線、光ファイバ・ケーブル、ＲＦ等、またはそれらの任意の適切な組み合わせを含む任意の適当な媒体を使用して伝送することができるが、これらに限定されない。
【００３７】
本発明の態様の動作を実施するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋等のオブジェクト指向のプログラミング言語と、「Ｃ」プログラミング言語または類似のプログラミング言語等の従来の手続き型プログラミング言語を含む１つまたは複数のプログラミング言語の任意の組み合わせで書くことができる。プログラム・コードは、すべてがユーザのコンピュータで実行されても、独立型のソフトウェア・パッケージとして、一部がユーザのコンピュータで実行されても、一部がユーザのコンピュータで実行され、一部がリモート・コンピュータで実行されても、またはすべてがリモート・コンピュータまたはサーバで実行されてもよい。最後の場合は、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）やワイド・エリア・ネットワーク（ＷＡＮ）を含む任意種類のネットワークを通じてユーザのコンピュータに接続しても、または外部のコンピュータに接続してもよい（例えばインターネット・サービス・プロバイダを使用してインターネットを通じて）。
【００３８】
以下、本発明の実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して本発明の態様を説明する。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方のブロックの組み合わせはコンピュータ・プログラム命令によって実施できることが理解されよう。コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートもしくはブロック図またはその両方の１つあるいは複数のブロックに指定される機能／動作を実施する手段を生成するべく、このようなコンピュータ・プログラム命令は汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。
【００３９】
コンピュータ可読媒体に記憶された命令により、フローチャートもしくはブロック図またはその両方の１つあるいは複数のブロックに指定される機能／動作を実施する命令を含んだ製造品を作製するべく、このようなコンピュータ・プログラム命令はコンピュータ可読媒体に記憶され、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスに特定の方式で機能するように指示するものであってよい。
【００４０】
コンピュータまたは他のプログラム可能装置で実行される命令が、フローチャートもしくはブロック図またはその両方の１つあるいは複数のブロックに指定される機能／動作を実施する処理を提供するように、コンピュータによって実施される処理を生成するべく、コンピュータ・プログラム命令はコンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードされ、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実行させるものであってよい。
【００４１】
本発明の実施形態は、クラウド・コンピューティングのインフラストラクチャを通じてエンド・ユーザに提供することができる。クラウド・コンピューティングとは、一般に、スケーラブルなコンピューティング資源をネットワークを通じてサービスとして提供することを言う。より正式には、クラウド・コンピューティングは、コンピューティング資源とその基盤となる技術的アーキテクチャ（例えばサーバ、記憶機構、ネットワーク）との間の抽象化を提供するコンピューティング機能であって、設定可能なコンピューティング資源の共有プールに必要時にネットワークを通じて利便にアクセスすることを可能にすることにより、コンピューティング資源を最小限の管理労力やサービス・プロバイダとの対話で迅速に準備し、提供するものであると定義することができる。したがって、クラウド・コンピューティングにより、ユーザは、コンピューティング資源を提供するために使用される基盤物理システム（またはそれらのシステムの場所）に関係なく、「クラウド」内の仮想コンピューティング資源（例えば、記憶領域、データ、アプリケーション、さらには完全な仮想化コンピューティング・システム）を利用することができる。
【００４２】
通例、クラウド・コンピューティング資源は従量課金方式でユーザに提供され、ユーザは、実際に使用したコンピューティング資源だけについて課金される（例えば、ユーザが利用した記憶空間の量や、ユーザがインスタンス化した仮想化システムの数等）。ユーザは、クラウドにあるあらゆる資源を、いつでも、またインターネット上のどこからでも利用することができる。本発明の文脈では、ユーザは、クラウド内で利用可能なアプリケーションや関連するデータにアクセスすることができる。例えば、マルチテナント・データベースの展開変換アプリケーションをクラウド内のコンピューティング・システムで実行して、１つのマルチテナント展開から別のマルチテナント展開にデータベースを変換することができる。そのような場合、マルチテナント・データベース展開変換アプリケーションは、データベース展開を変換し、物理データ・ストアとそれに関連付けられたテナントのメタデータをクラウド内の記憶場所に記憶することができる。そのようにすることにより、ユーザは、クラウドに接続されたネットワーク（例えばインターネット）に結合された任意のコンピューティング・システムからその情報にアクセスすることができる。
【００４３】
図１は、本発明の一実施形態による、サービスとしてソフトウェアを提供するクラウド・コンピューティング・システム１００を示すブロック図であり、サーバが３つの異なる展開の１つでアプリケーションを提供し、複数のクライアント（テナント）のデータを記憶する。ネットワーク化されたシステム１００はサーバ１０２およびクライアント・コンピュータ１３２を含む。サーバ１０２とクライアント１３２はネットワーク１３０を介して相互と接続され、ネットワーク１３０を介して他のコンピュータ接続することができる。一般に、ネットワーク１３０は、電気通信ネットワークまたはワイド・エリア・ネットワーク（ＷＡＮ）あるいはその両方である。特定の実施形態ではネットワーク１３０はインターネットである。
【００４４】
サーバ１０２は一般にプロセッサ１０４を含み、プロセッサ１０４はバス１１５を介してメモリ１０６、ネットワーク・インターフェース・デバイス１２４、ストレージ１０８、入力装置１２６、および出力装置１２８に接続される。サーバ１０２は一般にオペレーティング・システム１０７の制御下にある。オペレーティング・システムの例には、ＵＮＩＸ（Ｒ）、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（Ｒ）オペレーティング・システムの諸バージョン、Ｌｉｎｕｘ（Ｒ）オペレーティング・システムの配布がある。より一般的には、本明細書に開示される機能をサポートする任意のオペレーティング・システムを使用することができる。プロセッサ１０４は単一のＣＰＵ、複数のＣＰＵ、複数の処理コアを持つ単一のＣＰＵ等を表すものとして含まれる。同様に、メモリ１０６はランダム・アクセス・メモリとすることができる。メモリ１０６は単一の存在として示しているが、メモリ１０６は複数のモジュールから構成することが可能であり、高速レジスタやキャッシュから、低速であるがより大きいＤＲＡＭチップまで複数のレベルに存在する可能性があることを理解されたい。ネットワーク・インターフェース・デバイス１２４は、サーバ１０２がネットワーク１３０を介して他のコンピュータと通信できるようにする任意種類のネットワーク通信デバイスである。
【００４５】
ストレージ１０８は恒久的な記憶装置とすることができる。図ではストレージ１０８を１つの構成部分として示しているが、ストレージ１０８は固定ディスク・ドライブ、ソリッド・ステート・ドライブ、フロッピー・ディスク・ドライブ、テープ・ドライブ、取外し可能メモリ・カード、または光学記憶装置等の固定記憶装置または取外し可能記憶装置あるいはその両方の組み合わせとすることができる。メモリ１０６およびストレージ１０８は、複数の一次記憶装置および二次記憶装置にまたがる１つの仮想アドレス空間の一部とすることができる。
【００４６】
図に示すように、サーバのストレージ１０８は複数のデータベースを保持している。この特定の図面では４つのデータベースを示すが、サーバ１０２のストレージ１０８には任意数のデータベースを記憶することができる。図では、ストレージ１０８は、符号１１８、１２０、および１２２のテナント固有のデータベースを保持しており、各データベースは異なる展開の選択肢に対応する。ストレージ１０８はメタデータ・リポジトリ１２５も保持するように示されており、これは、テナントの識別情報、システム・ポリシー、および他の関連情報を記憶する。
【００４７】
入力装置１２６はサーバ１０２への入力を提供する任意のデバイスとすることができる。例えばキーボードまたはマウスあるいはその両方を使用することができる。出力装置１２８はサーバ１０２のユーザに出力を提供する任意のデバイスとすることができる。例えば、出力装置１０８は、任意の従来の表示画面やスピーカ・セットでありうる。図では入力装置１２６と別に示しているが、出力装置１２８と入力装置１２６は組み合わせてもよい。例えば、タッチ画面が内蔵された表示画面を使用することができる。
【００４８】
図示するように、サーバ１０２のメモリ１０６は、ネットワーク１３０を介して複数のサービスをユーザに提供するように構成されたマルチテナント・アプリケーション１１０を含む。図示するように、サーバ１０２のメモリ１０６は、サーバ１０２のストレージ１０８に保持される複数のデータベースを管理するように構成されたデータベース管理システム（ＤＢＭＳ）１１２も保持する。サーバ１０２のメモリ１０６は、ウェブ・サーバ１１４も保持し、これは従来のウェブ・サービス機能を実行し、マルチテナント・アプリケーション１１０などの種々のアプリケーションのための実行時環境としてアプリケーション・サーバ機能（例えばＪ２ＥＥアプリケーション・サーバ）も提供することができる。
【００４９】
図に示すように、本発明の一実施形態によると、クライアント・コンピュータ１３２は、プロセッサ１３４、メモリ１３６、オペレーティング・システム１３８、ストレージ１４２、ネットワーク・インターフェース１４４、入力装置１４６、および出力装置１４８を含む。これらの構成要素の説明と機能は、サーバ１０２を参照して説明した対応する構成要素と同じである。図に示すように、クライアント・コンピュータ１３２のメモリ１３６はウェブ・ブラウザ１４０も保持し、一部の実施形態ではこれを使用してサーバ１０２によって提供されるサービスにアクセスする。
【００５０】
図１の具体的な説明は例示のみを目的とするものであり、本発明は記載される特定の実施形態に限定されず、本発明の実装および実施には任意の組み合わせが企図されることを理解されたい。図１には単一のサーバ１０２を示すが、本発明の実施形態は、本明細書に記載されるサービスおよび機能を提供するために任意数のサーバを企図する。さらに、図１ではサーバ１０２にまとめて図示するが、マルチテナント・アプリケーション１１０の２階層のサービスおよび永続性機能は、別々の物理的サーバ、または同じサーバ内の別々の仮想サーバに収容することができる。一部の実施形態では、マルチテナント・アプリケーション１１０は、１つのコンピューティング・クラスタで複数のインスタンスとして展開することができる。当業者には知られるように、マルチテナント・アプリケーション１１０の個々の機能を行うモジュールは、１つの同じサーバ、複数の異なるサーバ、またはそれらの任意の組み合わせに収容することができる。メタデータ・リポジトリ１２５、データベース１１８、１２０、および１２２などの記憶される項目も、１つの同じサーバ、複数の異なるサーバ、またはそれらの任意の組み合わせに記憶することができ、アプリケーション・モジュールとして同じまたは異なるサーバに常駐することもできる。
【００５１】
図２は、本発明の一実施形態によるマルチテナント環境で展開の選択肢を管理し、変換するためのアーキテクチャを説明するブロック図２００である。図示するように、複数のテナント２０５１〜Ｎがネットワーク１３０を介してサーバ１０２に接続され、サーバ１０２のメモリ１０６に保持されるマルチテナント・アプリケーション１１０にアクセスする。マルチテナント・アプリケーション１１０については下記でさらに詳細に説明するが、テナントにサービスを提供するように構成され、このマルチテナント・アプリケーション１１０には、一部の実施形態では、クラウド・コンピューティング環境における複数のＳａａＳアプリケーションが含まれる。図には抽象化層２２０も示され、これは、マルチテナント・アプリケーション１１０とＤＢＭＳ１１２間の仲介として機能する。抽象化層２２０を通じて、種々のデータベース展開の選択肢間の透過的な変換を完了することができ、これによりマルチテナント・アプリケーション１１０は各データベースの物理的な実装を意識する必要がなく、またデータベースの変化を反映するようにマルチテナント・アプリケーション１１０を再コーディングする必要がない。抽象化層２２０は、マルチテナント・アプリケーション１１０からクエリを受け取り、次いでそのクエリにテナント固有の情報を挿入するように構成され、それによりクエリが正しいデータベースまたはデータベース・テーブルあるいはその両方に導かれるようにする。テナント固有の情報には、これらに限定されないが、各テナントに所有されるデータベース、スキーマ、テーブル、および列の物理的な実装に関する詳細が含まれうる。そのような詳細には、データベース、スキーマ、テーブル、および列の名前や場所が含まれうる。代替実施形態では、抽象化層２２０は、データベース管理システムのフェデレーション機能の拡張として実装することができる。一部の実施形態では、抽象化層はデータ配置層の機能も行い、これは、変換要求を受け取り、その後データを１つのマルチテナンシー展開タイプから別のマルチテナンシー展開タイプに変換する役割を担う。
【００５２】
一部の実施形態では、テナント固有の情報はメタデータ・リポジトリ１２５に記憶される。メタデータ・リポジトリ１２５の実施形態には、リレーショナル・データベース、コンテンツ管理システム、またはポリシーを実施しデータ・マッピングを行うアプリケーション・モジュールから参照されるファイル・システムが含まれる。ＤＢＭＳ１１２については下記でさらに詳しく説明するが、一般的なデータベース管理システムである。図に示すように、ＤＢＭＳ１１２は複数のデータベースを管理し、これには、テナントＴ１〜Ｎそれぞれの別個の物理的なデータベース２３５１〜Ｎ、テナントＴ３、Ｔ４、およびＴＭの別個のスキーマ２４２、２４４、および２４６を含む共有データベース２４０、そのすべてのテナントに対応する単一のスキーマ２５２を保持する共有データベース２５０が含まれる。一部の実施形態では、ＤＢＭＳ１１２は直接メタデータ・リポジトリ１２５を管理することもできる。図示するように、データベース２５０はスキーマ２５２を保持し、スキーマ２５２は、それぞれテナント識別情報、キー名、およびキー値に対応する例示的列２５４、２５６、および２５８を有する。テナント識別情報はメタデータ・リポジトリ１２５に記憶され、管理される。図２の具体的な説明は、例示のみを目的とするものであり、本発明は記載される特定の実施形態に限定されず、本発明の実装および実施には任意の組み合わせが企図されることを理解されたい。
【００５３】
図３は、本発明の一実施形態による２階層のアプリケーション・アーキテクチャの構成要素を示すブロック図である。図のように、マルチテナント・アプリケーション１１０は、サービス３４０および永続性アクセス層３５０を含む。マルチテナント・アプリケーション１１０は、適切なアプリケーション・ランタイム、例えばＩＢＭ（Ｒ）ＷｅｂＳｐｈｅｒｅ（Ｒ）アプリケーション・サーバなどのＪ２ＥＥアプリケーション・ランタイム上のアプリケーション階層に存在する（ＩＢＭおよびＷｅｂＳｐｈｅｒｅは世界中の多くの司法管轄内で登録されたインターナショナル・ビジネス・マシン社の商標である）。サービス３４０は、任意のＳａａＳ（Software as a Service）ソリューションを含み、アプリケーションがサーバで実行され、ネットワーク、例えばインターネットを介してユーザからアクセスされる。ＳａａＳアプリケーションの例には、これらに限定されないが、マスタ・データ管理（ＭＤＭ）、課金、連携、顧客関係管理、企業のリソース計画、インボイス作成、人的資源管理、コンテンツ管理、およびサービス・デスク管理用のアプリケーションが含まれる。永続性アクセス層３５０は、抽象化層２２０に結合された時に、マルチテナント・アプリケーション１１０とそのサービス３４０が、マルチテナント環境で管理されている複数のデータベースに透過的な方式でアクセスできるように構成されたインターフェースである。マルチテナント・アプリケーション１１０とそのサービス３４０はそれらが参照するデータベースの物理的な実装を意識しないため、永続性アクセス層３５０が、マルチテナント・アプリケーションと抽象化層の間にリンクを提供して、データベースの物理的な実装の詳細を隠蔽する。永続性アクセス層３５０を通じて、マルチテナント・アプリケーション１１０とそのサービス３４０は、さらなる外挿と処理のために抽象化層に送られることになるクエリを生成することにより、データベースにデータを読み書きする。
【００５４】
図に示すように、マルチテナント・アプリケーション１１０は抽象化層２２０に接続されて、上記の機能を提供する。抽象化層２２０は、本発明の一実施形態では、マルチテナント・アプリケーション１１０とＤＢＭＳ１１２の間に抽象化の層を提供する。図に示すように、ＤＢＭＳ１１２はデータベース・エンジン３００を含み、これは、読出し、書き込み、クエリ、および他のデータベース管理ツールなどの標準的なデータベース機能を制御する。一部の実施形態では、ＤＢＭＳ１１２は、一部の実施形態では上記のように抽象化層２２０で実行されるデータ配置層機能を実行することができる。
【００５５】
図４は、本発明の一実施形態による、テナント固有のデータ・セットを１つのマルチテナント展開の選択肢から第２のマルチテナント展開の選択肢に変換する方法４００を示すフローチャートである。一実施形態では、マルチテナント・アプリケーション１１０が方法４００のステップを実行する。方法はステップ４１０で開始し、マルチテナント・アプリケーション１１０によりテナントから変換要求が受け取られる。ステップ４２０で、マルチテナント・アプリケーション１１０は、メタデータ・リポジトリ１２５に保持される情報にアクセスすることにより要求元のテナントを特定する。メタデータ・リポジトリ１２５がリレーショナル・データベースである実施形態では、マルチテナント・アプリケーション１１０はメタデータ・リポジトリ１２５に接続して、要求元のテナントに関連付けられたデータを取り出す。ステップ４３０で、マルチテナント・アプリケーション１１０が、テナントの現在のマルチテナント展開の選択肢を特定する。一実施形態では、メタデータ・リポジトリ１２５の情報を使用して、現在のマルチテナント展開の選択肢を判定する。別の実施形態では、現在のマルチテナント展開の選択肢はユーザによる入力として提供される。一般に、現在の展開の選択肢の判定には任意の適切な方法が企図される。
【００５６】
ステップ４４０で、マルチテナント・アプリケーション１１０は、テナントが要求する展開の選択肢を特定する。一部の実施形態では、マルチテナント・アプリケーション１１０は、ユーザから、要求されるマルチテナント展開を定義する入力を受け取る。ステップ４５０で、マルチテナント・アプリケーション１１０は、テナントの変換要求を満たすように現在の展開のデータ・セットを変更する。ステップ４５０の実施形態については、下記で図５および図６との関連で説明する。ステップ４６０で、マルチテナント・アプリケーション１１０は、抽象化層２２０に関連付けられたメタデータを変更して、マルチテナント・アプリケーション１１０とそのサービス３４０がコードの修正を行わずに変換後のデータベースにアクセスできるようにする。マルチテナント・アプリケーション１１０とそのサービス３４０は、基盤のデータベースの実際の物理的な実装を参照せずにコーディングされるので、抽象化層２２０は、選択された展開の選択肢がデータベースの物理的な実装で反映されるように、マルチテナント・アプリケーション１１０の永続性アクセス層３５０から提出されるクエリを変更しなければならない。この変更を行わないと、マルチテナント・アプリケーション１１０とそのサービス３４０は、コードの変更なしに透過的な方式で基盤のデータベースにアクセスすることができない。一部の実施形態では、ステップ４６０は、マルチテナント・アプリケーション１１０がメタデータ・リポジトリ１２５に保持されるメタデータを更新して、テナントが要求した展開に対応する変換後のデータベースへのリンクを抽象化層２２０およびそのクエリに提供することを含む。要求される展開がプライベート・データベースである場合は、そのテナントに現在所有されているプライベート・データベースを抽象化層２２０にリンクするのに十分な情報でメタデータ・リポジトリ１２５を変更する。ステップ４６０のいくつかの実施形態では、マルチテナント・アプリケーション１１０は、新しい識別情報を含むように、要求元のテナントのデータベースに関連付けられた抽象化層２２０のクエリを変更する。要求される展開が共有データベースのプライベート・スキーマである場合、マルチテナント・アプリケーション１１０は、要求元のテナントのために作成されたプライベート・スキーマへの参照を含むように、メタデータ・リポジトリ１２５に保持されるエントリを更新することができる。一部の実施形態では、要求元のテナントに関連付けられた抽象化層２２０のクエリを書き変えて、プライベート・スキーマ情報を識別する句（clause）を含める。要求される展開が共有データベースの共有スキーマである場合は、メタデータ・リポジトリ１２５から該当するテナント識別子を検索し、それを更新するか、テナントに関連付けられた抽象化層２２０のクエリに挿入する。
【００５７】
図５は、本発明の一実施形態による、ステップ４５０に対応する方法５００を説明するフローチャートである。一部の実施形態では、マルチテナント・アプリケーション１１０が方法５００のステップを行う。方法はステップ５１０で開始し、マルチテナント・アプリケーション１１０が、要求元のテナントが所有するテーブルごとにテナントのデータベースを１つの展開の選択肢から別の展開の選択肢に変換するステップ５２０〜５５０を含むループの実行を開始する。ステップ５２０で、マルチテナント・アプリケーション１１０は、要求される展開の変換に対応するのに適したデータ構造を作成する。一実施形態では、このデータ構造は、図２の要素２３５１〜Ｎのそれぞれで示すように、要求元のテナントに所有されるプライベート・データベースでありうる。別の実施形態では、データ構造は要求元のテナントに所有され、図２の要素２４０で示すように共有データベースに保持されるプライベート・スキーマである。次いで方法はステップ５３０に進み、現在のテーブルを、作成されたデータ構造に転送する。この転送は、これらに限定しないがテーブルを移動し、コピーすることを含む任意数の手段で行うことができる。
【００５８】
次いで方法はステップ５４０に進み、ここで「オンライン」のテーブル転送を許可し、これによりデータベースは利用可能な状態を保ち、転送中に受け取られたクエリは、実行のために該当するテーブルに対して発行される。したがって、転送中に受け取られるクエリの種類ごとに一連の規則を定義しなければならない。一実施形態では、選択クエリは元のテーブルと転送されたテーブルの両方に発行され、その結果それぞれで結果のセットが得られる。データが転送される間、マルチテナント・アプリケーションの永続性層から要求される各読出しクエリについては、そのクエリを抽象化層２２０で両方の場所にリダイレクトしてから、得られたデータ・セットにＵＮＩＯＮを適用し、組み合わせた結果を選択クエリに対応する結果として戻す。一実施形態では、挿入クエリは転送されるテーブルに対して発行され、新しいデータベース・エントリが要求される展開の選択肢の転送されるテーブルだけに作成されるようにする。一実施形態では、更新クエリおよび削除クエリは、元のテーブルと転送されるテーブルの両方に発行され、両方で反映される。そのようにクエリを受け付けることにより、データの転送中にデータベースは完全に利用可能で動作可能な状態を保つ。オンライン転送の利点は、データが１つの展開の選択肢から次の展開の選択肢に移動されることに利用側テナントが気付かず、したがってサービスが常時利用可能であり続けることである。これがないと、結果としてテナントに対してダウンタイムが発生することになり、これは、特に移動するデータの量が非常に大きく、数時間あるいは数日間のダウンタイムを発生させる場合には許容することができない可能性がある。次いで方法はステップ５５０に進み、マルチテナント・アプリケーション１１０が、転送するテーブルがまだあるかどうかを判定する。テーブルがまだある場合、方法はステップ５１０に戻り、そうでない場合方法５００は終了する。
【００５９】
一部の実施形態では、データ転送を処理する間のデータ転送速度を向上させ、システム性能への影響を低減するためにＩＢＭ（Ｒ）のＦｌａｓｈＣｏｐｙ（Ｒ）機能を提供することにより、方法５００に示す転送をさらに改良することができる。（ＩＢＭおよびＦｌａｓｈＣｏｐｙは、世界中の多くの司法管轄内で登録されたインターナショナル・ビジネス・マシン社の商標である。）
【００６０】
図６は、本発明の別の実施形態による、ステップ４５０に対応する方法６００を説明するフローチャートである。一部の実施形態では、マルチテナント・アプリケーション１１０が方法６００のステップを行う。方法はステップ６１０で開始し、マルチテナント・アプリケーション１１０が、要求元のテナントが所有するテーブルごとにテナントのデータベースを１つの展開の選択肢から別の展開の選択肢に変換するステップ６２０〜６９５を含むループの実行を開始する。ステップ６２０で、一部の実施形態では、マルチテナント・アプリケーション１１０は、現在のテーブルへのアクセスを阻止する。一部の実施形態では、アクセスの阻止は、テーブルへのアクセスを制約するフラグを抽象化層２２０に設定することによって達成される。テーブルへのアクセスを阻止する（そして後にアクセスを回復する）ことは、現在の展開の選択肢が、要求元のテナントに所有されるプライベート・データベースであるか、または共有データベースのプライベート・スキーマである場合のみに必要となる。アクセスを阻止する（そして後にアクセスを回復する）ことは、他のテナントのデータも阻止されてしまうため、現在の展開が共有データベースの共有スキーマである実施形態では任意である。転送が完了するまでテーブルへのアクセスを阻止することにより、変更が許可されず、これによりデータベースの正確なコピーが転送されることになる。ステップ６３０で、マルチテナント・アプリケーション１１０は、転送するテーブルに保持されているデータを選択する。現在の展開の選択肢が要求元のテナントに所有されるプライベート・データベースである実施形態では、すべてのデータの選択を要求するステートメントを発行してテーブルのデータを選択する。一実施形態では、現在の展開の選択肢は共有データベースのプライベート・スキーマであり、スキーマ・テーブルからすべてのデータを選択するステートメントが発行され、スキーマは要求元のテナントに所有され、スキーマ情報がメタデータ・リポジトリ１２５から取得される。例えば、テーブルがリレーショナル・データベースにある場合、ＳＱＬクエリは「select * from schema.table」と書くことができる。現在の展開が共有データベースの共有スキーマである実施形態では、テナント識別列の入力が要求元のテナントに関連付けられたテナント識別情報と等しいすべてのデータを選択するステートメントを発行してデータを選択し、メタデータ・リポジトリ１２５からテナント識別情報を取得する。例えば、テーブルがリレーショナル・データベースにある場合は、ＳＱＬクエリは「select * from table where tenant=<tenant>」と書くことができる。
【００６１】
データが選択されると、方法はステップ６４０に進み、マルチテナント・アプリケーション１１０が、要求される展開の選択肢に応じて、ステップ６３０で実行された選択ステートメントで得られたテーブルにテナント識別情報を含んでいる列を挿入するか、または削除する。現在の展開の選択肢および要求される展開の選択肢によって、テナント識別情報は必要である場合も必要でない場合もあり、適宜対処する必要がある。現在の展開が共有データベースの共有スキーマである実施形態では、ステップ６３０で選択されたデータと共にテナント識別列が返される。これらの実施形態における行き先のデータベースはそのテナント識別情報を含んでいる列を必要とせず、したがって列は削除されることになる。現在の展開が共有データベースの共有スキーマである実施形態では、ステップ６３０で発行された選択クエリを修正して、テナント識別情報を含んでいる列が選択されないようにし、後に削除する必要がないようにする。行き先が共有データベースの共有スキーマである実施形態では、そのデータを所有しているテナントを示すためにテナント識別列が必要である。したがって、ステップ６３０で実行された選択ステートメントの結果のセットにある各レコードについて、テナント識別情報を含む列が挿入されることになり、メタデータ・リポジトリ１２５からテナント識別情報が取得される。
【００６２】
方法は次いでステップ６５０に進み、マルチテナント・アプリケーション１１０が、展開の変換を完了するために新しいデータ構造が必要であるかどうかを判定する。新しいデータ構造が必要でない場合、方法はステップ６７０に進む。必要である場合は、ステップ６６０でマルチテナント・アプリケーション１１０が適切なデータ構造を作成する。このデータ構造は、テナントに所有される新しいプライベート・データベース、テナントに所有されるプライベート・データベース内の新しいテーブル、共有データベース中でテナントに所有される新しいプライベート・スキーマ、もしくは共有データベースでテナントに所有されるプライベート・スキーマ中の新しいテーブル、の１つまたは複数である。そのような実施形態では、マルチテナント・アプリケーション１１０は、データ構造を作成するために必要なテナント識別情報をメタデータ・リポジトリ１２５から取得する。
【００６３】
適切なデータ構造が作成されると、方法はステップ６７０に進み、マルチテナント・アプリケーション１１０はテーブルをその行き先のデータ構造に転送する。この転送は、これらに限定しないがテーブルを移動し、コピーすることを含む任意数の手段で行うことができる。方法は次いでステップ６８０に進み、転送中のテーブルに対して発行された任意のクエリについて、転送が完了するまでは適切なエラー・メッセージが返されるようにする。テーブルが転送されると、方法はステップ６９０に進み、マルチテナント・アプリケーション１１０がテーブルへのアクセスを回復して、テナントのアプリケーションがテーブルにアクセスできるようにする。一部の実施形態では、テーブルへのアクセスは、テーブルへのアクセスを阻止していた抽象化層２２０に設定されたフラグを削除するとともに、切り替え後の展開をテナントに関連付けるように抽象化層２２０のデータを変更することによって回復される。一部の実施形態では、切り替え後の展開ではもう必要がない可能性があるため、マルチテナント・アプリケーション１１０が、元の展開のプライベート・データベースとプライベート・スキーマのテーブルを破棄する。方法は次いでステップ６９５に進み、マルチテナント・アプリケーション１１０が、要求元のテナントに所有されているテーブルで転送する必要のあるものがまだあるかどうかを判定する。さらにテーブルがある場合、方法はステップ６１０に戻る。そうでない場合、方法は終了する。
【００６４】
方法６００の代替実施形態は、テナントごとに共有データベースの共有スキーマの形態の展開についてのデータベース・ビューを作成することにより、クエリ中の「where tenant=<tenant>」の性質の「where」ステートメントを含めることを回避する能力を含む。これらのデータベース・ビューは、抽象化層２２０により作成し、データベースの寿命を通じて管理することができる。データベース・ビューは、クエリの結果のセットからなるリレーショナル・データベースの仮想テーブルとしてアクセスすることができる、記憶されたクエリで構成される。リレーショナル・データベースの普通のテーブル（ベース・テーブル）と異なり、ビューは物理的なスキーマの一部を形成するのではなく、データベース中のデータから算出または照合される動的な仮想テーブルである。テーブル中のデータを変更することにより、後続のビューの呼び出しで示されるデータを変える。別の実施形態では、選択クエリは、１回のステップですべてのデータを対象とするのではなく、いくつかのかたまりでデータを処理し、この場合一連の選択クエリが発行され、各クエリは、同じ設計概念に従って数回の反復でデータの相補的な部分を取り出す。
【００６５】
どの場合でも、データ転送が完了すると、転送元の領域にあるデータはデータベース資源を解放することによって適切に解放され、これは、場合によってはデータベースを破棄することを意味する可能性があり、他の場合には適切な破棄／削除のクエリで行われる。
【００６６】
本明細書に記載されるように、分散した冗長なデータベース・アーキテクチャと抽象化層を使用することにより、マルチテナント展開の物理的な実装をマルチテナント・アプリケーション１１０から隠蔽することができる。実装の詳細を隠蔽することにより、マルチテナント・アプリケーション１１０とそれが提供する各サービス３４０を、新しいテナントがサービスの利用を登録する、または展開の変換を要求するたびに再コーディングせずに済む。
【００６７】
次いで図７を参照すると、例示的なクラウド・コンピューティング環境７５０が図示される。図のように、クラウド・コンピューティング環境７５０は１つまたは複数のクラウド・コンピューティング・ノード７１０を含み、このノード７１０と、クラウドの消費者が使用するローカルのコンピューティング・デバイス、例えば携帯情報端末（ＰＤＡ）または携帯電話７５４Ａ、デスクトップ・コンピュータ７５４Ｂ、ラップトップ・コンピュータ７５４Ｄ、または自動車コンピュータ・システム７５４Ｎあるいはそのすべてが通信することができる。ノード７１０は相互と通信することができる。コンピューティング・ノード７１０は、サーバ１０２およびクライアント・コンピュータ１３２と同じ属性を持つことができ、サーバおよびクライアント・コンピュータは、クラウド・コンピューティング環境でコンピューティング・ノード７１０となることができる。これらは、上記に記載するように、プライベート、コミュニティ、パブリック、もしくはハイブリッド・クラウド、またはその組み合わせなどの１つまたは複数のネットワークとして物理的または仮想的にグループ化することができる（図示せず）。それにより、クラウド・コンピューティング環境７５０が、クラウドの消費者がローカルのコンピューティング・デバイスにそのための資源を維持する必要なしに、サービスとしてインフラストラクチャ、プラットフォームまたはソフトウェア、あるいはそのすべてを提供することが可能になる。図７に示すコンピューティング・デバイス７５４Ａ〜Ｎの種類は例示に過ぎず、コンピューティング・ノード７１０およびクラウド・コンピューティング環境７５０は、任意種類のネットワークまたはネットワークでアドレス指定可能な接続（例えばウェブ・ブラウザを使用する）あるいはその両方を介して任意種類のコンピュータ化されたデバイスと通信できることが理解される。
【００６８】
次いで図８を参照すると、クラウド・コンピューティング環境７５０（図７）で提供される機能抽象化層のセットが図示される。図８に示す構成要素、層、および機能は例示に過ぎず、本発明の実施形態はそれらに限定されないことを予め理解されたい。図示するように、以下の層とそれに対応する機能が提供される。
【００６９】
ハードウェアおよびソフトウェア層８６０は、ハードウェアの構成要素およびソフトウェアの構成要素を含む。ハードウェア構成要素の例は、メインフレーム、一例ではＩＢＭ（Ｒ）のｚＳｅｒｉｅｓ（Ｒ）システム、ＲＩＳＣ（縮小命令セット・コンピュータ）アーキテクチャに基づくサーバ、一例ではＩＢＭ  ｐＳｅｒｉｅｓ（Ｒ）システム、ＩＢＭ  ｘＳｅｒｉｅｓ（Ｒ）システム、ＩＢＭ  ＢｌａｄｅＣｅｎｔｅｒ（Ｒ）システム、記憶装置、ネットワークおよびネットワーキング・コンポーネントが含まれる。ソフトウェアの構成要素の例には、ネットワーク・アプリケーション・サーバ・ソフトウェア、一例ではＩＢＭ  ＷｅｂＳｐｈｅｒｅ（Ｒ）アプリケーション・サーバ・ソフトウェア、およびデータベース・ソフトウェア、一例ではＩＢＭ  ＤＢ２（Ｒ）データベース・ソフトウェアが含まれる。（IBM、zSeries、pSeries、xSeries、BladeCenter、WebSphere、およびDB2は、世界中の多くの司法管轄内で登録されたインターナショナル・ビジネス・マシン社の商標である。）
【００７０】
仮想化層８６２は抽象化層を提供し、この抽象化層から仮想エンティティを提供することができ、その例には、仮想サーバ、仮想ストレージ、仮想プライベート・ネットワークを含む仮想ネットワーク、仮想アプリケーションおよびオペレーティング・システム、ならびに仮想クライアントがある。
【００７１】
一例では、管理層８６４が下記の機能を提供することができる。リソースのプロビジョニングは、クラウド・コンピューティング環境内で作業を行うために利用されるコンピューティング資源および他の資源の動的な調達を提供する。計量および料金設定は、クラウド・コンピューティング環境内で資源が利用される際の費用の追跡と、それらの資源の消費についての課金またはインボイス作成を提供する。一例では、それらの資源は、アプリケーション・ソフトウェアのライセンスを含む。セキュリティは、クラウド消費者と作業について身元の検証を行い、またデータおよび他の資源に対する保護も提供する。ユーザ・ポータルは、消費者およびシステム管理者にクラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理は、要求されるサービス・レベルが満たされるようにクラウド・コンピューティング資源の割振りと管理を提供する。サービス・レベル同意（ＳＬＡ）の計画および遂行は、将来の要件がＳＬＡに準拠することが予想されるクラウド・コンピューティング資源についての事前の手配と調達を提供する。
【００７２】
作業層８６６は、クラウド・コンピューティング環境を利用できる機能の例を提供する。この層から提供することが可能な作業と機能の例には、マッピングおよびナビゲーション、ソフトウェア開発およびライフサイクル管理、仮想教室の教育配信、データの分析処理、トランザクション処理、およびマルチテナント・データベースの展開の変換が含まれる。
【００７３】
図のフローチャートおよびブロック図は、本発明の各種実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実施のアーキテクチャ、機能、および動作を説明するものである。これに関して、フローチャートまたはブロック図の各ブロックは、指定された（１つまたは複数の）論理的機能を実施する１つまたは複数の実行可能命令を含むモジュール、セグメント、またはコードの一部を表すことができる。一部の代替の実施では、ブロックに記された機能は図に記された順序と異なる順序で行ってよいことにも留意されたい。例えば、関係する機能に応じて、連続して示す２つのブロックが実際には実質的に同時に実行される、または２つのブロックが時に逆の順序で実行されることも可能である。また、ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方のブロックの組み合わせは、指定された機能もしくは動作を行う専用ハードウェアを利用したシステム、または専用ハードウェアおよびコンピュータ命令の組み合わせによって実施できることにも留意されたい。
【００７４】
前述の説明は本発明の実施形態を対象とするが、本発明の基本的な範囲から逸脱することなくその他のさらなる本発明の実施形態を考案することができ、本発明の範囲は添付の特許請求の範囲によって定められる。
【図１】
2015513153.tif 000003
【図２】
2015513153.tif 000004
【図３】
2015513153.tif 000005
【図４】
2015513153.tif 000006
【図５】
2015513153.tif 000007
【図６】
2015513153.tif 000008
【図７】
2015513153.tif 000009
【図８】
2015513153.tif 000010
【国際調査報告】
2015513153.tif 000011
2015513153.tif 000012