(57)【要約】      （修正有）【課題】マルチテナント型アプリケーションのため、データベースアクセス制御を可能とする。【解決手段】マルチテナント管理部６０４は、サブシステム６０２からの、データテーブル６１６を特定してのアクセス要求６０３に応じて、当該サブシステムと当該データテーブルの組み合わせが、マルチテナント化の対象であるか否かを判定し、マルチテナント化の対象であれば、マルチテナントキーテーブル６０８に予め格納されたマルチテナントキー情報を参照して、当該組み合わせに予め対応付けられたキー情報６０９を読み出し、このキー情報の値をアクセス要求元から取得して絞込条件としてクエリ６１４を生成し、マルチテナント化の対象でなければ絞込条件無しのクエリを生成してアプリケーションデータベース６１５から読み出したデータ６１７をアクセス要求元のサブシステムに返送する。【選択図】図６
2011060174.tif 000002
【特許請求の範囲】
【請求項１】
複数の利用者（テナント）のデータを単一のデータベース上に格納し、各テナントからの単一のアプリケーション（マルチテナントアプリケーション）を利用してのデータアクセス要求に応じて、各テナント別にデータを絞り込んでマルチテナント化して提供するマルチテナントデータベースシステムであって、
それぞれ入力装置を介して入力される、
上記アプリケーションを構成する各サブシステムの識別情報と上記データを格納するデータテーブルの識別情報との組み合わせ毎に、当該組み合わせでのアクセス要求に対して提供するデータをマルチテナント化の対象とするか否かを特定するマルチテナント情報と、
該マルチテナント情報においてマルチテナント化の対象とするとした組み合わせに対する絞り込みに用いる当該データテーブルにおけるキー情報を特定するマルチテナントキー情報とを、
予め記憶装置に記憶するマルチテナント情報記憶管理手段と、
上記サブシステムからの上記データテーブルを特定してのアクセス要求に応じて、上記マルチテナント情報を参照し、当該サブシステムと当該データテーブルの組み合わせがマルチテナント化の対象であるか否かを判定し、
マルチテナント化の対象であれば、上記マルチテナントキー情報を参照して、当該組み合わせに対応する上記キー情報を読み出し、該読み出したキー情報の値を上記アクセス要求元のアプリケーションから取得し、取得したキー情報の値を条件とした上記アクセス要求されたデータテーブルに対するクエリを生成し、該生成したクエリを用いて上記データベースから読み出したデータを、上記アクセス要求元のサブシステムに返送するマルチテナント管理手段と
を有することを特徴とするマルチテナントデータベースシステム。
【請求項２】
請求項１に記載のマルチテナントデータベースシステムであって、
上記マルチテナント管理手段は、
上記マルチテナント情報を参照した結果、当該サブシステムと当該データテーブルの組み合わせがマルチテナント化の対象でなければ、
上記マルチテナントキー情報を参照することなく、上記アクセス要求されたデータテーブルに対するクエリを条件無しで生成し、該生成したクエリを用いて上記データベースから読み出したデータを、上記アクセス要求元のサブシステムに返送する
ことを特徴とするマルチテナントデータベースシステム。
【請求項３】
請求項１もしくは請求項２のいずれかに記載のマルチテナントデータベースシステムであって、
上記サブシステムからの上記データテーブルを特定してのアクセス要求は、XMLデータからなり、
上記クエリは、ＳＱＬからなることを特徴とするマルチテナントデータベースシステム。
【請求項４】
複数の利用者（テナント）のデータを単一のデータベース上に格納し、各テナントからの単一のアプリケーション（マルチテナントアプリケーション）を利用してのデータアクセス要求に応じて、各テナント別にデータを絞り込んでマルチテナント化して提供するマルチテナントデータベースシステムのアクセス制御方法であって、
上記マルチテナントデータベースシステムは、プログラムされたコンピュータ処理を実行する手段として、マルチテナント情報記憶管理手段とマルチテナント管理手段を具備し、
上記マルチテナント情報記憶管理手段は、
それぞれ入力装置を介して入力される、上記アプリケーションを構成する各サブシステムの識別情報と上記データを格納するデータテーブルの識別情報との組み合わせ毎に、当該組み合わせでのアクセス要求に対して提供するデータをマルチテナント化の対象とするか否かを特定するマルチテナント情報と、該マルチテナント情報においてマルチテナント化の対象とするとした組み合わせに対する絞り込みに用いる当該データテーブルにおけるキー情報を特定するマルチテナントキー情報とを、予め記憶装置に記憶する手順を実行し、
上記マルチテナント管理手段は、
上記サブシステムからの上記データテーブルを特定してのアクセス要求に応じて、上記マルチテナント情報を参照し、当該サブシステムと当該データテーブルの組み合わせがマルチテナント化の対象であるか否かを判定し、
マルチテナント化の対象であれば、上記マルチテナントキー情報を参照して、当該組み合わせに対応する上記キー情報を読み出し、該読み出したキー情報の値を上記アクセス要求元のアプリケーションから取得し、取得したキー情報の値を条件とした上記アクセス要求されたデータテーブルに対するクエリを生成し、該生成したクエリを用いて上記データベースから読み出したデータを、上記アクセス要求元のサブシステムに返送する手順と、
上記マルチテナント情報を参照した結果、当該サブシステムと当該データテーブルの組み合わせがマルチテナント化の対象でなければ、
上記マルチテナントキー情報を参照することなく、上記アクセス要求されたデータテーブルに対するクエリを条件無しで生成し、該生成したクエリを用いて上記データベースから読み出したデータを、上記アクセス要求元のサブシステムに返送する手順とを実行する
ことを特徴とするマルチテナントデータベースシステムのアクセス制御方法。
【請求項５】
コンピュータに、請求項４に記載のマルチテナントデータベースシステムのアクセス制御方法における上記マルチテナント情報記憶管理手段による手順と上記マルチテナント管理手段による手順を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の利用者（ユーザ・テナント）のデータを単一のデータベース上に格納し、各テナント別にデータを絞り込んで提供するマルチテナントデータベース技術に係り、特に、マルチテナントデータベースシステムにおけるデータのアクセス制御技術を効率的に行うのに好適な技術に関するものである。
【背景技術】
【０００２】
SaaS（Software as a Service）と呼ばれるネットワーク経由で利用する形態のアプリケーションは、小規模かつ多数の利用者に対してアプリケーションを提供する必要があることから、複数の利用者で単一のアプリケーションを利用し、ハードウェアリソースを最適化することが可能なマルチテナント型アプリケーションとして提供されることが一般的である。
【０００３】
マルチテナント型アプリケーションでは、複数の利用者が単一のアプリケーションを利用することから、それぞれの利用者に適切なデータを公開し、操作させるために、厳密なデータアクセス制御が必要となる。
【０００４】
そして、マルチテナント型アプリケーションでは、複数の利用者（ユーザ・テナント）のデータが、単一のデータベース上に格納されているため、データアクセス制御にてデータの絞込みを行ない、利用者ごとに公開・操作可能な情報を正しく提示する必要がある。
【０００５】
例えば、特許文献１および非特許文献１にて提示された従来技術を用いることで、利用者（ユーザ・テナント）ごとに最適なデータを絞り込むデータアクセス制御を実現することが可能である。
【０００６】
しかしながら、マルチテナント型アプリケーションの適用範囲が拡大するにつれ、単純なアプリケーション単位のマルチテナント化だけでなく、アプリケーションを構成するサブシステム毎に、あるいはアクセス先のテーブル毎に、個別にデータアクセス制御することが必要となってきている。
【０００７】
例えば、サブシステム単位やアクセステーブル単位で、データをマルチテナント化する・しない（各ユーザ・テナントで当該データを共有する）を示す情報、およびマルチテナント化する際に当該テナントを特定する情報といったマルチテナント条件を柔軟に切り替え、データを絞り込んで提供することが必要となる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００９−１４５９７２号公報
【非特許文献】
【０００９】
【非特許文献１】「Force.comのマルチテナント型アーキテクチャ」（株式会社  セールス  フォース  ドット  コム）  ［平成２１年９月７日検索］、インターネット＜URL:http://www.developerforce.com/media/ForcedotcomBookLibrary/Force.com_Multitenancy_WP_101508_JP.pdf＞
【発明の概要】
【発明が解決しようとする課題】
【００１０】
解決しようとする問題点は、従来の技術では、マルチテナント型アプリケーションの適用範囲の拡大に伴い必要となる、サブシステム単位・アクセステーブル単位でのデータアクセス制御を行うことができない点である。
【００１１】
本発明の目的は、これら従来技術の課題を解決し、マルチテナントデータベースシステムの利便性・性能の向上を図ることである。
【課題を解決するための手段】
【００１２】
上記目的を達成するため、本発明では、単純なアプリケーション単位のマルチテナント化だけでなく、アプリケーションを構成するサブシステム単位・テーブル単位で、例えばマルチテナント化する・しないの条件およびマルチテナント化する際の識別情報等のマルチテナント条件を柔軟に切り替え、データを絞り込んで提供する。具体的には、本発明のマルチテナントデータベースシステム（１１３）では、複数の利用者（テナント）のデータを単一のデータベース上に格納し、各テナントからの単一のアプリケーション（マルチテナントアプリケーション）を利用してのデータアクセス要求に応じて、各テナント別にデータを絞り込んでマルチテナント化して提供する際、マルチテナント情報記憶管理部（１０９，６０６）において、それぞれ入力装置を介して入力される、マルチテナントアプリケーションを構成する各サブシステムの識別情報とデータを格納するデータテーブルの識別情報との組み合わせ毎に、当該組み合わせでのアクセス要求に対して提供するデータをマルチテナント化の対象とするか否かを特定するマルチテナント情報をマルチテナント管理テーブ（ル１１１，６０７）に、このマルチテナント情報（マルチテナント管理テーブル１１１，６０７）においてマルチテナント化の対象とするとした組み合わせに対する絞り込みに用いる当該データテーブルにおけるキー情報を特定するマルチテナントキー情報をマルチテナントキーテーブル（１１２，６０８）に予め格納しておく。そして、マルチテナント管理部（１０５，６０４）において、サブシステム（１０２，６０２）からの、データテーブル（６１６）を特定してのアクセス要求（６０３）に応じて、マルチテナント管理テーブル（１１１，６０７）におけるマルチテナント情報を参照し、当該サブシステムと当該データテーブルの組み合わせがマルチテナント化の対象であるか否かを判定する。マルチテナント化の対象であれば、マルチテナント管理部（１０５，６０４）は、マルチテナントキーテーブル（１１２，６０８）におけるマルチテナントキー情報を参照して、当該組み合わせに対応するキー情報（６０９）を読み出し、読み出したキー情報の値をアクセス要求元のアプリケーションから取得し、取得したキー情報の値を条件（「where」）としたアクセス要求されたデータテーブルに対するクエリ（６１４）を生成し、生成したクエリ（６１４）を用いてアプリケーションデータベース（６１５）から読み出したデータ（６１７）を、アクセス要求元のサブシステム（１０２，６０２）に返送する。また、マルチテナント管理部（１０５，６０４）は、マルチテナント管理テーブル（１１１，６０７）におけるマルチテナント情報を参照した結果、当該サブシステムと当該データテーブルの組み合わせがマルチテナント化の対象でなければ、マルチテナントキーテーブル（１１２，６０８）におけるマルチテナントキー情報を参照することなく、アクセス要求されたデータテーブルに対するクエリを条件（「where」）無しで生成し、生成したクエリを用いてデータベースから読み出したデータを、アクセス要求元のサブシステム（１０２，６０２）に返送する。
【発明の効果】
【００１３】
本発明によれば、複数のサブシステムに対して、それぞれのサブシステムに適切なマルチテナント条件で切り出したデータを提供することができるので、複数のサブシステム毎に異なるマルチテナント条件を設定したマルチテナントアプリケーションを容易に実現することができる。また、本発明を利用することで、マルチテナント化で問題となるマスタ情報の共有に関しても効率的に実現することが可能となる。
【図面の簡単な説明】
【００１４】
【図１】本発明に係るマルチテナントデータベースシステムの構成例を示すブロック図である。
【図２】図１におけるマルチテナントデータベースシステムにサブシステムから渡されるデータ例を示す説明図である。
【図３】図１におけるマルチテナントデータベースシステムで保持・管理するマルチテナント条件例を示す説明図である。
【図４】図１におけるマルチテナントデータベースシステムからサブシステムに戻されるオブジェクト例を示す説明図である。
【図５】図１におけるマルチテナントデータベースシステムの本発明に係る処理動作例を示すフローチャートである。
【図６】図１におけるマルチテナントデータベースシステムによる本発明に係る具体的な動作例を示す説明図である。
【発明を実施するための形態】
【００１５】
以下、図を用いて本発明を実施するための形態例を説明する。図１に示す、本発明に係るマルチテナントデータベースシステム１１３は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）や主メモリ、表示装置、入力装置、外部記憶装置等を具備したコンピュータ装置からなり、光ディスク駆動装置等を介してＣＤ−ＲＯＭ等の記憶媒体に記録されたプログラムやデータを外部記憶装置内にインストールした後、この外部記憶装置から主メモリに読み込みＣＰＵで処理することにより、マルチテナント管理部１０５やマルチテナント情報記憶処理部（図中「マルチテナント情報」と記載）１０９等の各処理部の機能を実行する。
【００１６】
また、マルチテナント管理部１０５は、プログラムされたコンピュータ処理を実行する機能として、マルチテナント条件取得エンジン１０６、セッション情報取得エンジン１０７、データアクセス１０８を具備し、マルチテナント情報記憶処理部１０９は、プログラムされたコンピュータ処理を実行する機能として、マルチテナント管理テーブル１１１とマルチテナントキーテーブル１１２におけるデータ管理を行うマルチテナント条件管理部（図中「マルチテナント条件」と記載）１１０を具備している。
【００１７】
このような構成からなるマルチテナント管理部１０５は、ネットワーク等を介して任意の端末（図中「アプリケーション」と記載）１０１とアプリケーションデータベース１０４に接続され、端末１０１におけるアプリケーションを構成するサブシステム１０２からのアクセス要求およびセッション情報からの情報に応じて、アプリケーションデータベース１０４にアクセスして、要求された情報を読み出し、要求元の端末１０１に提供する。
【００１８】
端末１０１は、複数のサブシステム１０２で構成されたアプリケーションを具備し、サブシステム１０２ごとにマルチテナントの条件を変更する必要があり、さらに、同一のサブシステム１０２内でも、アクセスするアプリケーションデータベース１０４におけるデータテーブルが異なる場合は、マルチテナントの条件が異なる場合がある。
【００１９】
また、アプリケーションデータベース１０４において、複数のサブシステム１０２で共用するようなマスタ情報も存在する。
【００２０】
本例のマルチテナントデータベースシステム１１３は、マルチテナント管理部１０５とマルチテナント情報記憶管理部１０９によって構成され、任意の端末１０１から利用される際に、マルチテナント型アプリケーションの適用範囲が拡大するにつれて必要となる、単純サブシステム単位・アクセステーブル単位でのデータアクセス制御を行う。
【００２１】
すなわち、マルチテナント型アプリケーションの適用範囲が拡大するにつれ、単純なアプリケーション単位のマルチテナント化だけでなく、アプリケーションを構成するサブシステム単位およびテーブル単位で、マルチテナント化する、あるいはマルチテナント化しない（当該データを各ユーザ・テナントで共有する）との条件、およびマルチテナント化する際の当該ユーザ・テナントの特定条件といったマルチテナント条件を柔軟に切り替え、データを絞り込んで提供する。
【００２２】
例えば、アプリケーションを構成する複数のサブシステム毎、且つ、利用者・企業・部門といった各アクセス元毎といった異なる条件でのデータアクセスの絞り込みを行う。
【００２３】
より具体的には、アプリケーションを構成するサブシステム単位でのマルチテナント条件を変更するために、サブシステムごとに、利用者・企業・部門といった異なるマルチテナント条件を設け、さらに、企業単位のマルチテナントだが特定のサブシステムは部門単位としてマルチテナント条件１１０の細分化を図る。また、郵便番号・システムコード等のマスタ情報のアプリケーション情報については、マルチテナント対象外として非マルチテナント化する。
【００２４】
従来の技術では、これらの要件を実装するマルチテナント型アプリケーションを実現するためには、単一的なデータアクセス制御を実装する技術を取ることが出来ず、サブシステムごと、アクセステーブルごとに、個別にデータアクセスする必要があり、マルチテナント型アプリケーション実現の障壁となっている。
【００２５】
本例のマルチテナントデータベースシステム１１３では、マルチテナント管理部１０５とマルチテナント情報記憶管理部１０９によるプログラムされたコンピュータ処理により、アプリケーションデータベース１０４内に存在するデータを、マルチテナント化して、端末１０１に対して提供する際、端末１０１で起動するアプリケーション内の各サブシステム１０２ごとに異なる条件で、データのアクセス条件を切り替えて、サブシステム１０２ごとに、適切に、マルチテナント化されたデータを提供する。
【００２６】
マルチテナント情報記憶管理部１０９では、マルチテナント条件管理部１１０において、マルチテナント管理テーブル１１１とマルチテナントキーテーブル１１２を記憶装置に格納して管理し、マルチテナント管理部１０５が、これらの情報を用いて、単純サブシステム単位・アクセステーブル単位でのデータアクセス制御を行う。
【００２７】
マルチテナント条件管理部１１０では、マルチテナント管理テーブル１１１において、サブシステムおよびデータベーステーブル単位で、各データをマルチテナント化する、あるいは、しない（当該データを各ユーザ・テナントで共有する）を定義し、マルチテナントキーテーブル１１２において、マルチテナントを利用する場合は、データベーステーブルのどの列（キー）でマルチテナント化するのかといった情報を保持している。
【００２８】
尚、これらのマルチテナント条件管理部１１０で管理するマルチテナント管理テーブル１１１とマルチテナントキーテーブル１１２における各情報は、開発時に開発者が予め決めておく情報である。
【００２９】
端末１０１におけるセッション情報１０３では、端末１０１を操作してログインした利用者のセッション情報を保持しており、端末１０１は、セッション情報１０３において、マルチテナント条件として想定されるいくつかの情報（ユーザID・企業ID・事業部ID・部門ID等）を、利用者がログインしている限り、メモリ内に永続的に保持し続ける。
【００３０】
マルチテナントデータベースシステム１１３におけるマルチテナント管理部１０５は、端末１０１の各サブシステム１０２からアプリケーションデータベース１０４にアクセスする際のデータ層の役割を果たし、サブシステム１０２からのアプリケーションデータベース１０４のテーブルへのアクセス要求に応じて、マルチテナント情報記憶管理部１０９から適切なマルチテナント条件を抽出する。
【００３１】
例えば、要求元のサブシステムやアクセス対象のテーブルに対してマルチテナント条件が設定されている場合、マルチテナント管理部１０５は、セッション情報１０３から、当該マルチテナント条件に適切なセッション情報を取得し、アプリケーションデータベース１０４における当該テーブルに対するアクセス制御情報（クエリ、ここではＳＱＬを用いる）に、検索条件（「where」）として、当該セッション情報を付与することで、マルチテナント化されたデータをアプリケーションデータベース１０４から読み出し、端末１０１の要求元サブシステム１０２に戻す。
【００３２】
また、要求元のサブシステムやアクセス対象のテーブルに対してマルチテナント条件が設定されていない場合は、通常のクエリを生成して、マルチテナント化することなく、当該データをアプリケーションデータベース１０４から読み出し、端末１０１の要求元サブシステム１０２に戻す。
【００３３】
このように、本例のマルチテナントデータベースシステム１１３では、データ層として動作するマルチテナント管理部１０５を利用するだけで、アクセス元のサブシステムごとにマルチテナント化の実装を考慮することなく、複雑なマルチテナント要件である、マルチテナント条件変更および非マルチテナント化テーブルのサポートといった要件に対して、サブシステムごとに容易に対応することが可能となる。
【００３４】
以下、各図を用いて、このような各部の動作について詳細に説明する。
【００３５】
端末１０１におけるアプリケーションの任意のサブシステム１０２から、アプリケーションデータベース１０４にアクセスを行う際、サブシステム１０２は、クエリ発行等でデータを直接取得することはせず、図２で示されるサブシステム名＝商品管理、データベーステーブル名＝商品情報を特定したXMLデータを作成し、マルチテナントデータベースシステム１１３におけるマルチテナント管理部１０５に渡す。
【００３６】
このように、XMLデータ２０１にはアクセス元のサブシステム名称とデータベーステーブル名称等が記載されており、サブシステム１０２から複数のデータベーステーブル１０４にアクセスする場合は複数のXMLデータが渡される。
【００３７】
マルチテナント管理部１０５では、マルチテナント条件取得エンジン１０６が、サブシステム１０２からのXMLデータを受領し、それぞれのXMLデータを利用してマルチテナント情報記憶管理部１０９にアクセスをかける。
【００３８】
マルチテナント情報記憶管理部１０９は、XMLデータ２０１におけるサブシステム名（「商品管理」）およびデータベーステーブル名（「商品情報」）から、対象のサブシステム１０２が対象のアプリケーションデータベース１０４のテーブルにアクセスする際にマルチテナント化するのか否か、マルチテナントをするのであればどのキーに基づいてマルチテナント化するのかを、図３に示すマルチテナント条件３０１，３０２として戻す。
【００３９】
図３に示すように、マルチテナント情報記憶管理部１０９からマルチテナント管理部１０５に戻されるマルチテナント条件３０１，３０２では、サブシステム１０２（「商品管理」）およびアプリケーションデータベース１０４におけるテーブル（「商品情報」，「住所マスタ」）ごとに利用の可否と利用条件を定義することが可能であるため、サブシステム１０２ごとに、マルチテナント化する・しない、マルチテナント化する場合はアプリケーションデータベース１０４におけるテーブルのどのキーでマルチテナント化するのかが定義されている。
【００４０】
図３のマルチテナント条件３０１は、マルチテナント化する際のマルチテナント条件であり、商品管理というサブシステム１０２から、アプリケーションデータベース１０４における商品情報というデータベーステーブルにアクセスする際は、当該データベーステーブルにおけるオーナー列をキーにマルチテナント化を行なうという情報を保持している。
【００４１】
図３のマルチテナント条件３０２は、共通マスタのようなマルチテナント化しないデータベーステーブルにアクセスする際のマルチテナント条件であり、商品管理というサブシステム１０２から、アプリケーションデータベース１０４における住所マスタというデータベーステーブルにアクセスする際はマルチテナント化しないという情報を保持している。
【００４２】
尚、このような、マルチテナント条件管理部１１０で管理するマルチテナント条件は、マルチテナント型アプリケーションを開発する際に開発者によって予め作成されている。
【００４３】
マルチテナント条件管理部１１０からのマルチテナント条件３０１，３０２を取得した後、マルチテナント管理部１０５では、セッション情報取得エンジン１０７を起動する。
【００４４】
セッション情報取得エンジン１０７は、アクセス要求元の端末１０１におけるセッション情報１０３にアクセスして、例えば図３におけるマルチテナント条件３０１内に定義されているSessionタグをキーにセッション情報を取得する。
【００４５】
図３におけるマルチテナント条件３０１の例であれば、セッション（Session）タグ内にある「オーナーID」という名称のセッション情報を取得する。ただし、図３におけるマルチテナント条件３０２の例のように、マルチテナント化しない場合は、Sessionタグそのものが存在しないため、セッション情報取得エンジン１０７によるセッション情報の取得処理は実行しない。
【００４６】
このようにして、セッション情報取得エンジン１０７により、端末１０１からセッション情報１０３を取得した後、マルチテナント管理部１０５は、データアクセス１０８を起動し、サブシステム１０２から要求されたアプリケーションデータベース１０４における情報の取得を実行する。
【００４７】
その際、データアクセス１０８は、まず、アプリケーションデータベース１０４から当該情報を取得する際の条件を定義する。
【００４８】
例えば、マルチテナント情報記憶部１０９から取得したマルチテナント条件３０１におけるキータグ（＜Ｋｅｙ＞  ＜／Ｋｅｙ＞）とセッションタグ（＜Ｓｅｓｓｉｏｎ＞  ＜／Ｓｅｓｓｉｏｎ＞）における情報を、絞込条件（「where」）として、クエリに付与することで、アプリケーションデータベース１０４から読み出すデータの絞り込みを行う。
【００４９】
尚、マルチテナント化しない場合は、マルチテナント情報記憶部１０９から取得したマルチテナント条件には、図３のマルチテナント条件３０２に示すように、キータグ（＜Ｋｅｙ＞  ＜／Ｋｅｙ＞）とセッションタグ（＜Ｓｅｓｓｉｏｎ＞  ＜／Ｓｅｓｓｉｏｎ＞）における情報が無いので、データアクセス１０８は、絞込条件（「where」）を付与することなくクエリを生成して、アプリケーションデータベース１０４から当該データをそのまま取得する。
【００５０】
図３のマルチテナント条件３０１の例であれば、「オーナー＝オーナーID」という名称のセッション情報という条件を絞込条件とし、アプリケーションデータベース１０４のデータを検索・取得することになる。
【００５１】
このようにして、データを取得した後、データアクセス１０８は、取得したデータを、端末１０１で起動しているプログラムで利用可能なオブジェクトに変換し、サブシステム１０２に対して戻す。
【００５２】
このように、マルチテナントデータベースシステム１１３がデータアクセス１０８を介して端末１０１のサブシステム１０２に戻すオブジェクトの実装に関しては、特に規定しないが、例えば、図４に例示するオブジェクトをサブシステム１０２に対して戻す。
【００５３】
この図４に示すオブジェクト例４０１はJava（登録商標）の実装例である。データはJava（登録商標）のList型と呼ばれる配列に似た型で戻され、配列の中身はそれぞれ、Java（登録商標）のMap型と呼ばれるキーと値のセットを保持する型となる。データアクセス１０８からサブシステム１０２に対しては、このように統一的な形式のデータが戻される。
【００５４】
以上により、サブシステム１０２は、適切にマルチテナント化されたデータを、統一的な引数と戻り値で受け取ることができる。
【００５５】
このようにして、本例のマルチテナントデータベースシステム１１３によれば、サブシステム１０２側から見た場合、どのテーブルのデータが欲しいという情報を送信するだけで、マルチテナント実装を意識することなく、予めマルチテナント管理テーブル１１１とマルチテナントキーテーブル１１２において定義されたマルチテナント条件を基に、マルチテナント化されたデータを、プログラムから利用可能なオブジェクトの形式で取得することができる。
【００５６】
これにより、サブシステム１０２単位でのマルチテナント条件の変更やマスタ情報の非マルチテナント化等を容易に実現することができる。
【００５７】
以下、このようなマルチテナントデータベースシステム１１３により実現する処理の具体例を、図５および図６を用いて説明する。図６では、図１におけるマルチテナントデータベースシステム１１３による各処理を具体的なデータ例で示している。
【００５８】
図５，図６では、まず、端末（図中「アプリケーション」と記載）６０１で起動しているアプリケーションのサブシステム１０２である商品管理サブシステム（図中「商品管理」と記載）６０２が、商品情報テーブルの情報を取得したいといった情報を、XMLデータ６０３の形式で、マルチテナント管理部６０４に送信（call）する（ステップＳ５０１）。
【００５９】
マルチテナント管理部６０４は、マルチテナント条件取得エンジン６０５により、商品管理サブシステム６０２から受け取ったXMLデータ６０３を元に、マルチテナント情報記憶管理部６０６にアクセスをかける（ステップＳ５０２，Ｓ５０３）。
【００６０】
具体的には、マルチテナント条件取得エンジン６０５は、マルチテナント情報記憶管理部６０６を介してマルチテナント管理テーブル６０７にアクセスし、データベーステーブル＝「商品情報」、サブシステム＝「商品管理」をキーに検索する。
【００６１】
ここでは、マルチテナント管理テーブル６０７における１行目（id＝１）が該当することが分かるので、マルチテナント条件が、「マルチテナント＝する」であることが分かる（ステップＳ５０４，Ｓ５０５）。
【００６２】
このように、マルチテナント条件が「マルチテナント＝する」の場合は、マルチテナント条件取得エンジン６０５は、マルチテナントキーテーブル６０８の検索も行う。
【００６３】
検索条件は、マルチテナント管理テーブル１１１から取得されたデータのid列の値から、「管理id＝＝１」であり、マルチテナントキーテーブル１１２の１行目が該当することが分かり、さらに、キー情報は「オーナー」、セッション情報は「オーナーID」であることが分かるため、マルチテナント条件取得エンジン６０５は、これらのマルチテナント条件を保持したXMLデータ６０９を取得することができる。
【００６４】
このようにして、XMLデータ６０９によりマルチテナント条件を取得した後、マルチテナント管理部６０４は、セッション情報取得エンジン６１０により、XMLデータ６０９が保持するマルチテナント条件としてのSessionタグの値である「オーナーＩＤ」をキーに、端末６０１におけるセッション情報６１１にアクセスをかける。
【００６５】
本例では、セッション情報６１１内には「オーナーＩＤ」＝「aaa」というセッション情報６１２があることが分かるので、セッション情報取得エンジン６１０は、このセッション情報６１２の値である「aaa」を取得する（ステップＳ５０６）。
【００６６】
このようにして、マルチテナント情報記憶管理部６０６からマルチテナント条件を、端末６０１からセッション情報を取得した後、マルチテナント管理部６０４は、データアクセス６１３により、アプリケーションデータベース６１５にアクセスするためのクエリ６１４を作成して（ステップＳ５０７）、当該データを取得する（ステップＳ５０８）。
【００６７】
具体的には、クエリ６１４におけるfrom句には、マルチテナント条件６０９におけるＴａｂｅｌ要素である「商品情報」を、where句の条件には、マルチテナント条件６０９におけるKey要素である「オーナー」と、端末６０１から取得したセッション情報の値である「aaa」を付与してクエリ６１４を投げ、アプリケーションデータベース６１５から当該データを取得する。
【００６８】
このようなクエリ６１４にて取得できる「商品情報」テーブル６１６の列は１列目および３列目であることが分かる。
【００６９】
以上の処理でデータを取得した後、データアクセス６１３は、データベースオブジェクト６１７を作成して（ステップＳ５０９）、商品管理サブシステム６０２へとreturnする（ステップＳ５１０）。
【００７０】
データベースオブジェクト６１７で示すように、本例では、データアクセス６１３は、２件の商品情報テーブルのデータ（商品Ａ、商品Ｃ）を、Ｊａｖａ（登録商標）のＭａｐ型を複数格納するＪａｖａ（登録商標）のＬｉｓｔ型に変換し、「商品管理」サブシステム１０２へとreturnする。
【００７１】
以上の処理により、本マルチテナントデータベースシステム１１３を利用することで、商品管理サブシステム６０２は、適切にマルチテナント化された商品情報テーブルのデータを取得することができる。
【００７２】
以上、図１〜図６を用いて説明したように、本例のマルチテナントデータベースシステム１１３では、複数の利用者（テナント）のデータを単一のデータベース上に格納し、各テナントからの単一のアプリケーション（マルチテナントアプリケーション）を利用してのデータアクセス要求に応じて、各テナント別にデータを絞り込んでマルチテナント化して提供する際、マルチテナント情報記憶管理部１０９，６０６において、それぞれ入力装置を介して入力される、マルチテナントアプリケーションを構成する各サブシステムの識別情報とデータを格納するデータテーブルの識別情報との組み合わせ毎に、当該組み合わせでのアクセス要求に対して提供するデータをマルチテナント化の対象とするか否かを特定するマルチテナント情報をマルチテナント管理テーブル１１１，６０７に、このマルチテナント情報（マルチテナント管理テーブル１１１，６０７）においてマルチテナント化の対象とするとした組み合わせに対する絞り込みに用いる当該データテーブルにおけるキー情報を特定するマルチテナントキー情報をマルチテナントキーテーブル１１２，６０８に予め格納しておく。
【００７３】
そして、マルチテナント管理部１０５，６０４において、サブシステム１０２，６０２からの、データテーブル６１６を特定してのアクセス要求６０３に応じて、マルチテナント管理テーブル１１１，６０７におけるマルチテナント情報を参照し、当該サブシステムと当該データテーブルの組み合わせがマルチテナント化の対象であるか否かを判定する。
【００７４】
マルチテナント化の対象であれば、マルチテナント管理部１０５，６０４は、マルチテナントキーテーブル１１２，６０８におけるマルチテナントキー情報を参照して、当該組み合わせに対応するキー情報（６０９）を読み出し、読み出したキー情報の値をアクセス要求元のアプリケーションから取得し、取得したキー情報の値を条件（「where」）としたアクセス要求されたデータテーブルに対するクエリ６１４を生成し、生成したクエリ６１４を用いてアプリケーションデータベース６１５から読み出したデータ（６１７）を、アクセス要求元のサブシステム１０２，６０２に返送する。
【００７５】
また、マルチテナント管理部１０５，６０４は、マルチテナント管理テーブル１１１，６０７におけるマルチテナント情報を参照した結果、当該サブシステムと当該データテーブルの組み合わせがマルチテナント化の対象でなければ、マルチテナントキーテーブル１１２，６０８におけるマルチテナントキー情報を参照することなく、アクセス要求されたデータテーブルに対するクエリを条件（「where」）無しで生成し、生成したクエリを用いてデータベースから読み出したデータを、アクセス要求元のサブシステム１０２，６０２に返送する。
【００７６】
このように、本例のマルチテナントデータベースシステム１１３では、複数のサブシステム１０２に対して、それぞれのサブシステム１０２に適切なマルチテナント条件１１０で切り出したデータを提供することができるので、複数のサブシステム１０２毎に異なるマルチテナント条件１１０を設定したマルチテナントアプリケーションを容易に実現することができる。また、本例のマルチテナントデータベースシステム１１３を利用することで、マルチテナント化で問題となるマスタの共有に関しても効率的に実現することが可能となる。
【００７７】
尚、本発明は、図１〜図６を用いて説明した例に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能である。例えば、本例では、端末１０１とアプリケーションデータベース１０４はそれぞれ一つずつ設けられた構成となっているが、それぞれ任意の数を設けた構成としても良い。
【００７８】
また、マルチテナントデータベースシステム１１３とアプリケーションデータベース１０４をネットワークで接続した構成としているが、マルチテナントデータベースシステム１１３とアプリケーションデータベース１０４を同じコンピュータ装置に設けた構成としても良い。
【００７９】
また、本例では、データの検索（「select」）操作を例に説明しているが、データの挿入（追加・登録）（「insert」）操作やデータの更新（「update」）操作においても同様に適用できる。
【００８０】
また、本例では、図６において、キー情報として「オーナー」を用いて説明しているが、例えば「顧客」等をキー情報として用いても良い。
【００８１】
また、本例でのコンピュータ装置の構成としても、キーボードや光ディスクの駆動装置の無いコンピュータ構成としても良い。また、本例では、光ディスクを記録媒体として用いているが、ＦＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ）等を記録媒体として用いることでも良い。また、プログラムのインストールに関しても、通信装置を介してネットワーク経由でプログラムをダウンロードしてインストールすることでも良い。
【符号の説明】
【００８２】
１０１，６０１：端末（「アプリケーション」）、１０２：サブシステム、１０３，６１１：セッション情報、１０４，６１５：アプリケーションデータベース、１０５，６０４：マルチテナント管理部、１０６，６０５：マルチテナント条件取得エンジン、１０７，６１０：セッション情報取得エンジン、１０８，６１３：データアクセス、１０９，６０６：マルチテナント情報管理部（「マルチテナント情報」）、１１０：マルチテナント条件記憶管理部（「マルチテナント条件」）、１１１，６０７：マルチテナント管理テーブル、１１２，６０８：マルチテナントキーテーブル、１１３：マルチテナントデータベースシステム、２０１，６０３：サブシステムからのデータ例、３０１，３０２，６０９：マルチテナント条件例、４０１：オブジェクト例、６０２：サブシステム（「商品管理」）、６１２：オーナーＩＤ、６１４：クエリ、６１６：商品情報テーブル（「商品情報」）、６１７：データベースオブジェクト。
【図１】
2011060174.tif 000003
【図２】
2011060174.tif 000004
【図３】
2011060174.tif 000005
【図４】
2011060174.tif 000006
【図５】
2011060174.tif 000007
【図６】
2011060174.tif 000008