(57)【要約】  共有・カスタマイズ可能なデータを有するマルチテナントデータ共有環境において、属性が要求データに対して割り当てられ、キャッシュストア内に要求データとともに記憶される。システムデータとして設計されたカスタマイズされていないデータに対して、複数のテナントが使用するために１つのコピーがキャッシュストア内に記憶されて、各データの要求／取り出し動作についてメモリおよびパフォーマンスを最適化することができる。「削除センチネル」属性は、キャッシュストア内の存在していないデータに割り当てられて、存在しないデータの要求が受信される度にテナントデータストアにアクセスしなくても、１つまたは複数の要求テナントに存在しないデータであることを通知することができる。
2010524083.tif 000002
【特許請求の範囲】
【請求項１】
マルチテナント環境でカスタマイズ可能なデータを処理するコンピューティング装置において少なくとも一部で実行される方法であって、
前記方法は、
テナントからデータの要求を受信するステップ（６０２）と、
要求データに関連付けられたエントリがキャッシュストア内に記憶されているか否かを判定するステップ（６０４）と、
前記エントリが記憶されており、かつ削除センチネルである場合、存在しないデータであるという通知を要求テナントに提供するステップ（６１６）と、
前記エントリが記憶されており、かつシステムセンチネルである場合、前記キャッシュストアから前記要求データを取り出して、該要求データを前記要求テナントに提供するステップ（６１０、６１２）と、
前記エントリが記憶されており、かつ前記テナント用にカスタマイズされている前記要求データである場合、前記カスタマイズされた要求データを前記要求テナントに提供するステップ（６１８）と
を含むことを特徴とする方法。
【請求項２】
前記要求データに関連付けられたエントリが前記キャッシュストア内に記憶されていない場合、
前記データが前記テナントに関連付けられたデータストア内に存在するか否かを判定するステップと、
前記データが前記テナントに関連付けられたデータストア内に存在しない場合、前記キャッシュストア内に「削除センチネル」エントリを記憶して、存在しないデータであるという通知を前記要求テナントに提供するステップ（７３６、７３８）と、
前記データが前記テナントに関連付けられたデータストア内に存在し、前記データが前記テナント用にカスタマイズされたデータである場合、前記キャッシュストア内にカスタマイズデータを記憶して、前記カスタマイズデータを前記要求テナントに提供するステップ（７３２、７３４）と、
前記データが前記テナントに関連付けられたデータストア内に存在し、前記データがシステムレベルデータである場合、前記キャッシュストア内にシステムセンチネルおよびシステムレベルのデータを記憶して、カスタマイズデータを任意の要求テナントに提供するステップ（７２６、７２８）と
をさらに含むことを特徴とする、請求項１に記載の方法。
【請求項３】
任意の要求テナントに提供するために、取り出されたシステムレベルのデータの１つのコピーのみが前記キャッシュストア（３４４）内に記憶されることを特徴とする、請求項２に記載の方法。
【請求項４】
前記カスタマイズデータは、前記要求に関連付けられたデータキーおよびテナント識別子（３７０）に基づいて前記要求テナントに提供されることを特徴とする、請求項１に記載の方法。
【請求項５】
テナントによりカスタマイズされたデータは、そのテナントのみがアクセス可能であること（３７０）を特徴とする、請求項１に記載の方法。
【請求項６】
あるテナントが別のテナントによりカスタマイズされたデータにアクセスできるようにするステップをさらに含むことを特徴とする、請求項１に記載の方法。
【請求項７】
前記カスタマイズ可能なデータ（２００）は、メタデータ、ユーザインタフェースフォーム、ユーザインタフェースビュー、拡張プラグイン、通信パラメータのセットから少なくとも１つを含むことを特徴とする、請求項１に記載の方法。
【請求項８】
前記データのカスタマイズ状態は、カスタマイズレベル属性（２２７）として記憶されることを特徴とする、請求項１に記載の方法。
【請求項９】
マルチテナントビジネスアプリケーション環境でカスタマイズ可能なデータを処理するためのシステムであって、
キャッシュメモリ（３４４）と、
前記メモリに結合されるプロセッサ（５０２）と
を備え、
前記プロセッサは、
要求レコードに関連付けられたエントリが前記キャッシュメモリ内に記憶されているか否かを判定し、
前記エントリが記憶されており、かつ削除センチネルであるとの判定に応答して、存在しないレコードであるという通知を要求テナントに提供し、
前記キャッシュメモリから前記要求レコードを取り出し、前記エントリが記憶されており、かつシステムセンチネルであるとの判定に応答して、前記要求レコードを前記要求テナントに提供し、この場合、前記レコードの単一のコピーが任意の前記要求テナント用に前記キャッシュメモリ内に記憶され、
前記エントリが記憶されており、かつ前記テナント用にカスタマイズされた要求レコードであるとの判定に応答して、カスタマイズされた要求レコードを前記要求テナントに提供する
ように構成されるキャッシングモジュール（５２４）を含むプログラムモジュールを実行するように構成されることを特徴とするシステム。
【請求項１０】
前記キャッシングモジュール（５２４）は、
前記キャッシュメモリ内に前記レコードに関連付けられたエントリが存在しないとの判定に応答して、前記レコードが前記テナントに関連付けられたデータストア内に存在するか否かを判定し、
前記レコードが前記テナントに関連付けられたデータストア内に存在しないとの判定に応答して、前記キャッシュメモリ内に「削除センチネル」エントリを記憶し、存在しないレコードであるという通知を前記要求テナントに提供し、
前記レコードが前記テナントに関連付けられたデータストア内に存在し、前記テナント用にカスタマイズされたレコードであるとの判定に応答して、前記キャッシュメモリ内にカスタマイズレコードを記憶し、該カスタマイズレコードを前記要求テナントに提供し、
前記レコードが前記テナントに関連付けられたデータストア内に存在し、システムレベルレコードであるとの判定に応答して、前記キャッシュストア内にシステムセンチネルおよび前記システムレベルレコードを記憶し、カスタマイズレコードを要求テナントに提供する
ようにさらに構成されることを特徴とする、請求項９に記載のシステム。
【請求項１１】
前記キャッシングモジュール（５２４）は、
前記キャッシュメモリ内に前記取り出されたレコードのカスタマイズ状態を示すカスタマイズレベル属性を、前記レコードに関連付けられたエントリの一部として記憶する
ようにさらに構成されることを特徴とする、請求項１０に記載のシステム。
【請求項１２】
前記カスタマイズレベル属性（２２７）は、前記要求レコードに関連付けられた属性テーブル内に記憶されることを特徴とする、請求項１０に記載のシステム。
【請求項１３】
前記プロセッサ（５０２）は、前記要求テナントと通信するためのＣＲＭシステムに関連付けられたビジネスアプリケーションモジュール（５２２）を実行するようにさらに構成されることを特徴とする、請求項９に記載のシステム。
【請求項１４】
前記要求テナントに関連付けられた前記データストア（３４６、３４８、３５０）は、単一のテナントに割り当てられた個々のデータベースの１つおよび複数のテナントに割り当てられたデータベースの一部であることを特徴とする、請求項９に記載のシステム。
【請求項１５】
前記キャッシングモジュール（５２４）は、レコード識別子および各テナントのテナント識別子に基づいて、テナントが他のテナントとカスタマイズレコードを共有できるようにさらに構成されることを特徴とする、請求項９に記載のシステム。
【請求項１６】
前記キャッシングモジュール（５２４）は、有効期限、テナント要求、前記テナントに関連付けられたデータストアからの変更の通知のうち少なくとも１つに基づいて、前記キャッシュメモリ内の要求データに関連付けられた前記エントリを更新するようにさらに構成されることを特徴とする、請求項９に記載のシステム。
【請求項１７】
マルチテナントビジネスアプリケーション環境でカスタマイズ可能なデータを処理する命令を記憶する命令を有するコンピュータ読み取り可能な記憶媒体であって、
前記命令は、
テナントからのデータ要求の受信（６０２）に応答して、要求データに関連付けられたエントリがキャッシュストア内に記憶されているか否かを判定するステップと、
前記エントリが記憶されており、かつ削除センチネルである場合に、存在しないデータであるという通知を前記要求テナントに提供するステップ（６１６）と、
前記エントリが記憶されており、かつシステムセンチネルである場合に、前記要求データを各要求に対してテナントのデータストアから前記データを取り出さなくても、複数の要求テナントに利用可能にするステップ（６１０、６１２）と、
前記エントリが記憶されており、かつ前記テナント用にカスタマイズされた要求データである場合に、該カスタマイズデータを前記要求テナントにのみ利用可能にするステップ（６１８）と
を含むことを特徴とする、コンピュータ読み取り可能な記憶媒体。
【請求項１８】
前記命令は、
前記キャッシュストア内に記憶されている前記要求データに関連付けられたエントリがなく、かつ前記要求データが前記テナントに関連付けられたデータストアから利用可能である場合、
前記テナントに関連付けられたデータストアから前記データを取り出すステップ（７２０）と、
前記取り出されたデータのカスタマイズレベルを判定するステップ（７２２、７３０）と、
前記データがカスタマイズされている場合、前記要求テナントにのみ該カスタマイズデータを提供するステップ（７３２、７３４）と、
前記データがカスタマイズされていない場合、前記カスタマイズされていないデータを任意の要求テナントに利用可能にするステップであって、前記カスタマイズされていないデータの１つのコピーのみが前記キャッシュストア内に記憶される、ステップ（７２６、７２８）と、
をさらに含むことを特徴とする、請求項１７に記載のコンピュータ読み取り可能な記憶媒体。
【請求項１９】
前記命令は、前記キャッシュストア内に前記取り出されたデータがカスタマイズされていない状態であることを示すシステムセンチネルを記憶するステップをさらに含むことを特徴とする、請求項１８に記載のコンピュータ読み取り可能な記憶媒体。
【請求項２０】
前記テナント（３４２）は、ＣＲＭシステムに参加する組織および組織のメンバーのうちの１つを含むことを特徴とする、請求項１７に記載のコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチテナント環境でカスタマイズ可能なデータを処理する方法およびシステムに関する。
【背景技術】
【０００２】
ＣＲＭ（Customer Relationship Management）ソリューションは、購入による最初のコンタクトや販売後のコンタクトから明確な顧客像を作成し、維持するのに必要なツールおよび機能を提供する。複雑な組織に対して、ＣＲＭシステムは、営業組織が新規顧客を対象として、販売キャンペーンを管理し、販売活動を促進する方法の改善を支援する特徴や機能を提供することができる。ＣＲＭシステムは、組織内部または組織外部のユーザが個々に使用する、もしくは共有で使用する多くのコンポーネント、ハードウェア、ソフトウェアを含むことができる。
【０００３】
したがって、典型的なＣＲＭシステムは、複数の組織（「テナント」）をホスティングする。各テナントは、エンティティ、属性、関連、フォーム、ビュー、コードレベル拡張プラグインなどを追加／削除／変更することで各自のＣＲＭシステムをカスタマイズすることができる。さまざまなテナントが行うカスタマイズを分類するために、カスタマイズを１つのデータベースか複数のデータベースのいずれかにある別個のテーブルに分割することができる。データの分割（partitioning）にもかかわらず、実行時にできるだけ多くのカスタマイズされていないがカスタマイズ可能な情報を共有して、必要メモリを最小化し、パフォーマンスを改善することが望ましい。
【発明の概要】
【０００４】
この概要は、以下の「発明を実施するための形態」でさらに説明する概念の選択を簡略化した形式で紹介するものである。この概要は、特許請求の範囲に記載される主題の主要な特徴または必須の特徴を特定するものではなく、また当該主題の範囲を決定するのを支援するものでもない。
【０００５】
本実施形態は、マルチテナントデータ共有環境におけるメモリおよびパフォーマンスの最適化のために共有・カスタマイズ可能なデータをキャッシングすることを対象とする。テナントデータのカスタマイズ状態を示す属性はキャッシュストアに記憶されて、システムが個々のテナントデータストアからテナントにデータを提供でき、同時に要求データをキャッシングすることができる。要求データがすでにキャッシングされている場合には個々のデータストアにアクセスする必要がない。複数のテナントが各々の取り出し動作でのメモリやシステムリソースを節約するために、「システムレベル」、即ちカスタマイズされていないデータの単一コピーを記憶することができる。
【０００６】
上述および他の特徴や利点は、以下の詳細な説明や添付図面から明らかになるであろう。上述の概要や以下の詳細な説明の両方は例に過ぎず、特許請求の範囲に記載される態様を制限するものでない点を理解されたい。
【図面の簡単な説明】
【０００７】
【図１】ＣＲＭシステムアーキテクチャの一例を示す図である。
【図２】共有・カスタマイズ可能なマルチテナントデータのキャッシングモデルの一例を示す属性テーブルである。
【図３】共有・カスタマイズ可能なマルチテナントデータのキャッシングを実装するシステムにおけるテナント要求処理のシナリオの例を示す図である。
【図４】本実施形態を実装することができるネットワーク環境の一例を示す図である。
【図５】本実施形態を実装することができるコンピュータ動作環境の一例を示すブロック図である。
【図６】共有・カスタマイズ可能なマルチテナントデータのキャッシングプロセスの論理フローチャートである。
【図７】図６の共有・カスタマイズ可能なマルチテナントデータのキャッシングプロセスの一部の論理フローチャートである。
【発明を実施するための形態】
【０００８】
簡単に上述したように、複数のテーブルおよび複数のデータベースに記憶されるメモリ内のカスタマイズされていないがカスタマイズ可能であるデータの共有は、単一テーブル内のどのデータがカスタマイズされたかを追跡する能力を用いて可能になる。以下の詳細な説明では、本明細書の一部を構成する添付図面を参照して、例として特定の実施形態または実施例を示す。これらの態様を組み合わせてもよいし、他の態様を使用してもよい。また本明細書の開示の精神および範囲から逸脱せずに構造変更を行ってもよい。したがって、以下の詳細な説明は限定的な意味でとらえるべきではなく、本発明の範囲は添付の特許請求の範囲およびその等価物によって規定される。
【０００９】
本実施形態は、パーソナルコンピュータのオペレーティングシステム上で実行するアプリケーションプログラムとともに実行するプログラムモジュールの一般的なコンテクストで説明するが、当業者であれば本態様は他のプログラムモジュールと組み合わせて実装することもできることは理解するであろう。
【００１０】
一般的に、プログラムモジュールは、ルーチン、プログラム、コンポーネント、データ構造、特定のタスクを実行または特定の抽象データ型を実装する他のタイプの構造を含む。さらに、当業者であれば、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラム可能な家庭用電化製品、ミニコンピュータ、メインフレームコンピュータなどの他のコンピュータシステム構成を用いて本実施形態を実施できることは理解するであろう。さらに、通信ネットワークを介してリンクされるリモート処理装置によりタスクが実行される分散コンピューティング環境で本実施形態を実施してもよい。分散コンピューティング環境では、プログラムモジュールはローカル記憶装置およびリモート記憶装置の両方に配置することができる。
【００１１】
本実施形態は、コンピュータプロセス（方法）、コンピュータシステムとして、またはコンピュータプログラム製品もしくはコンピュータ可読媒体などの製造物品として実装してもよい。コンピュータプログラム製品は、コンピュータシステムにより読み取り可能であり、コンピュータプロセスを実行するための命令のコンピュータプログラムを符号化するコンピュータ記憶媒体としてもよい。また、コンピュータプログラム製品は、コンピューティングシステムにより読み取り可能であり、コンピュータプロセスを実行するための命令のコンピュータプログラムを符号化するキャリアで信号を伝播してもよい。
【００１２】
図１は、ＣＲＭシステム１００のアーキテクチャの一例を示す。ＣＲＭシステム１００は、ＣＲＭアーキテクチャの「スタック」内の４つの物理層を用いて実装することができる。これらの層は、データおよびユーザインタフェースをユーザに提示する（例えば、ウェブベースの提示）ためのプレゼンテーション層１０２と、電子メールアプリケーション、スケジューリングアプリケーションおよびカレンダアプリケーションなどのアプリケーションと対話するためのアプリケーション層１０４とを含む。さらに、これらの層は、ビジネスロジックまたはドメインロジックを動作させるＣＲＭプラットフォーム１０６と、１つまたは複数のデータベースサーバ１１４との対話を管理するためのデータアクセス層１０８とを含む。
【００１３】
１つまたは複数の層を組み合わせてもよいし、また各々がデータアクセスのための個々のプロセス空間にあるデータ管理層およびデータ記憶層などの個々の副層を備えてもよい。１つまたは複数のディレクトリサーバ１１２は、製品内部のセキュリティプリンシパル、役割、グループを識別するためのディレクトリサービスを提供することができる。１つまたは複数のアプリケーションサーバ１１６は、上述したような補助サービスを提供できる。
【００１４】
図２は、共有・カスタマイズ可能なマルチテナントデータのキャッシングモデルの属性テーブル２００の例を示す。ＣＲＭシステム内のカスタマイズ可能なデータの各々のタイプ（例えば、エンティティ、属性、関係）はそれ自身のプロパティを有し、したがって、それ自身のテーブル（例えば、エンティティテーブル、属性テーブル、関係テーブル）内に記憶される。マルチテナントＣＲＭシステムでは、各テナントはカスタマイズ可能なデータの各々のタイプに対してそれ自身のテーブルを有することができる。例えば、各テナントは、エンティティテーブル、属性テーブル、関係テーブルを有することができる。
【００１５】
本実施形態のＣＲＭシステムは、カスタマイズ可能なデータ（「システム」または「カスタマイズされていない」データ）の初期セットを提供することもできる。この初期データセットは、ＣＲＭシステム内の各テナントがインストールおよび構成時に開始するデータセットである。カスタマイズデータは頻繁にアクセスされるので、そのデータは効率的な方法で各組織のメモリ内にキャッシングされることができる。このデータの多くは、多くのテナントにわたって同じ状態のまま維持することができる。したがって、本実施形態は、システムデータを共有すると同時に、特定のテナントによりカスタマイズされるデータのプライベート・コピーを維持するアプローチを提供する。
【００１６】
ＣＲＭシステムでは、メモリ内キャッシングは以下の事項に適用することができる。  
・メタデータカスタマイズ（エンティティ、属性、関係など）
・ユーザインタフェースカスタマイズ（フォーム、ビューなど）
・ＳＤＫ（Software Development Kit）カスタマイズ（ＳＤＫ要求／応答など）
・コードレベルカスタマイズ（拡張プラグインなど）
【００１７】
いくつかの実施形態によれば、共有・カスタマイズ可能なマルチテナントデータは、データ行の「カスタマイズレベル（customization level）」を追跡することにより対処することができる。この情報は、行が共有行であるか否か、顧客からの新規行であるか否か、カスタマイズされた共有行であるか否か、削除された共有行であるか否かを判定する。その後、この情報を使用して、どの情報を共有できるか判定する。図２のテーブル２００は、この「カスタマイズレベル」の概念を示す。
【００１８】
テーブル２００は、第１の列に属性識別子２２１、第２の列に属性名２２２、第３の列にデータ長２２３を含む。エンティティ識別子２２４および２つの属性のヌル可能（nullable）２２５、カスタムフィールド２２６がその次の列にくる。最後の列は、カスタマイズレベル属性２２７のリストを含む。「CustomizationLevel」の０は「システム」（システムレベルデータ）を意味し、１は「カスタム」（データは特定のテナントに対して新規である、またはシステムデータの変更である）を意味し、２は「削除済み」を意味する。
【００１９】
テーブル２００の例では、「Ｒｅｖｅｎｕｅ」の属性（行２３１に示される元の属性、行２３２に記載される更新バージョン）は削除され、「ｎａｍｅ」の属性（行２３３に示される元の属性、行２３４に記載される更新バージョン）はカスタマイズされており、「Ｎｅｗ＿ｆｉｅｌｄ」の属性は（行２３５に記載されているように）テナントにより作成されている。「カスタマイズレベル」が０のデータは、カスタマイズされていないデータであり、したがって、テナント全体にわたって「共有可能」である。
【００２０】
ＣＲＭシステムがキャッシュからカスタマイズ可能なデータの一部を取り出す必要がある場合、キャッシュは最初にデータのその一部が特定のテナントのデータベースからすでに取り出されたか否かを判定する。データが以前に取り出されていない場合、キャッシュはデータのその一部を取り出す。次に、キャッシュは取り出したデータのその一部の「カスタマイズレベル」を見る。「カスタマイズレベル」が０の場合、キャッシュはシステムデータがすでにキャッシュ内にあるか否かを判定するためにチェックを行い、キャッシュ内にない場合はキャッシュにシステムデータを追加する。次に、キャッシュは、このデータがこのテナントに対して再び要求される場合、キャッシュストアからシステムデータを代わりに取り出すべきであることをキャッシュに指し示す「システムセンチネル（system sentinel）」を挿入する。データ片の「カスタマイズレベル」が１である場合、キャッシュはデータを特定のテナント用にキャッシュストアに挿入する。データ片の「カスタマイズレベル」が２である場合、データはキャッシュに追加されない。その代わりに、このデータ片が再びこのテナントに対して要求される場合、データが存在しないという通知をキャッシュが返すべきであるということをキャッシュに指し示す「削除センチネル（delete sentinel）」が追加される。
【００２１】
図３は、共有・カスタマイズ可能なマルチテナントデータのキャッシングを実装するシステムにおけるクライアント要求処理のシナリオの例を示す図である。テーブル３７０のシナリオの例が、共有データキャッシングシステム３００の例と共に示されている。
【００２２】
本実施形態による動作が、テナントに関連するクライアント３４２からのＣＲＭシステム内で受信されるデータ要求（３５４）から始まる。クライアントは、クライアント装置またはクライアントアプリケーションを介して、システムにアクセスするＣＲＭシステムの任意の（内部または外部の）ユーザとしてもよい。上述したように、各テナントをカスタマイズ可能な共有データに関連付けることができ、そのデータの一部をカスタマイズしないで（システムレベル）、他の部分を特定のテナントによりカスタマイズすることができる。さらに、テナントのデータの一部をシステム内で削除することができる。ＣＲＭシステムは、テナントＡ用のデータベース（Ａ）３４６、テナントＢ用のデータベース（Ｂ）３４８、テナントＣ用のデータベース（Ｃ）３５０などの各テナント用の個々のデータベースを含むことができる。ＣＲＭシステムは、さらに個々のテナントに割り当てられるデータベースの一部を有する単一のデータベースを含むことができる。
【００２３】
ＣＲＭシステムキャッシュ３４４で要求が受信されると、キャッシュ３４４は要求データが以前に要求テナントのデータベースから取り出されたか否かを判定し、以前に取り出された場合、要求データに対してどんなカスタマイズレベルの属性であるかを判定する。キャッシュ３４４は、キャッシュストア３６２を用いてチェックすることにより（参照符号３６０で示すように）データがすでに取り出されたか否かを判定する。
【００２４】
データが以前に取り出されていない場合、キャッシュ３４４は関連データベースにアクセスして、データを取り出すか、またはデータがデータベース内にもう存在しないことを判定する（通信３５６、３５８）。データが以前に取り出され、このテナントの「システムセンチネル」属性としてキャッシュ内に記憶されている場合、このテナントはシステムレベルのデータ（カスタマイズされていない）を要求し、それでキャッシュがシステムレベルの（カスタマイズされていない）データをキャッシュストアから取り出して、要求テナントにそのデータを提供することになる。データが初めて取り出され、データのカスタマイズレベルがこのテナントのデータはシステムレベルの（カスタマイズされていない）データであることを示す場合、システムレベルデータがキャッシュストア３６２内になければ、キャッシュ３４４はシステムレベルデータをキャッシュストア３６２に追加することになる。さらに、「システムセンチネル」属性がこのテナント用にキャッシュストア３６２内に挿入される。「システムセンチネル」属性により、キャッシュは特定のデータを要求する任意のクライアントに対して、各テナント用にそのデータの複数のコピーを記憶しなくても、システムレベルの（カスタマイズされていない）データを提供することができる。データがカスタマイズされている場合は、キャッシュは直接このカスタムデータをそのテナント用に記憶する。このことにより、キャッシュはカスタマイズデータを認識し、そのデータを要求テナントに提供することができる。さらに、要求データがテナントのデータベースにもう存在しない場合には、「削除センチネル」属性がキャッシュストアに挿入されて、先の要求時に、まずテナントのデータベースをチェックしなくても、このデータがそのテナントにもう存在しないことを要求クライアントに示すことができる。
【００２５】
さらに、システムは（同じタイプのカスタマイズを使用する複数のテナントの場合には）特定のタイプのカスタマイズのための属性を認識し、割り当てることができる。このとき、キャッシュはローカルストア内に各カスタマイズデータの１つのコピーを記憶し、カスタマイズのタイプの属性に基づいて要求テナントにそのコピーを提供することができる。
【００２６】
テーブル３７０のシナリオの例では、第１の行の第１のシナリオによれば、テナントＡがキー１を有するデータを要求している。キャッシュ３４４はキャッシュストア（３６２）にアクセスし、このテナントのキャッシュ内にキー１を有するアイテムのエントリがないことを見い出す。キャッシュ３４４はデータベース（Ａ）３４６にアクセスし（３５６）、データを取り出し、データのカスタマイズレベルが１である（カスタマイズされている）ことを通知し、直接そのデータを要求テナント用にキャッシュストア３６２内に記憶し、その後、取り出されたデータを要求テナントＡに提供する。
【００２７】
第２の行の第２のシナリオによれば、テナントＡはキー２を有するデータの別の部分を要求している。データは以前に取り出されているので、キャッシュストア３６２内で見つけられるが、キャッシュ内のデータはこのテナント用の「システムセンチネル」である。したがって、キャッシュはシステム（カスタマイズされていない）データをデータベース（Ａ）３４６から取り出さなくても、キャッシュストアから取り出し、そのデータをテナントＡに返す。
【００２８】
第３の行の第３のシナリオによれば、テナントＡはキー３を有するデータの別の部分を要求している。データは以前にデータベース（Ａ）３４６から削除され、その表示が「削除センチネル」属性を使用してキャッシュストア３６２内に記憶される。キャッシュ３４４は、データベース（Ａ）３４６をチェックしなくても、テナントＡに要求データがもう存在しないという通知を提供する。
【００２９】
第４の行の第４のシナリオによれば、テナントＢはキー３を有するデータを要求している。このデータはテナントＢにより取り出されておらず、したがって、キャッシュ３４４はデータベース（Ｂ）３４８にアクセスし（３５８）、キャッシュはデータベース（Ｂ）３４８内のデータのカスタマイズレベルが１であり、テナントＢがそのデータをカスタマイズしたと見なすので、データを取り出し、キャッシュストア３６２内に記憶し、その後、そのデータを要求テナントＢに提供する。
【００３０】
第５の行の第５のシナリオによれば、テナントＣはキー２を有するデータを要求している。テナントＣは以前にこのデータを要求したことがあり、キャッシュはデータベース（Ｃ）３５０からデータを取り出し、カスタマイズレベルが（システムデータ用の）０であることを通知し、このアイテム用にシステムセンチネルを挿入したことがある。カスタマイズされていないデータは以前にテナントＡ用に取り出されているので、キャッシュストア３６２内で見つけられる。このデータはシステムレベルのデータであるため、全てのテナントで共有され、キャッシュストアがキー２を有するデータについてテナントＣ用の「システムセンチネル」を有するため、テナントＡにより取り出されたシステムデータは、データベース（Ｃ）３５０から取り出さなくてもテナントＣに提供することができる。
【００３１】
図３の共有・カスタマイズデータのキャッシングシステムおよびシナリオは、説明のための例である。共有・カスタマイズデータをキャッシングするシステムは、本明細書で説明した原理を使用した追加のコンポーネントまたはより少ないコンポーネントを使用して実装してもよい。本明細書で示したのと同様のシステムでは、カスタマイズ可能なデータをキャッシングし、テナントに提供するのに他のシナリオも可能である。
【００３２】
図４は、本実施形態を実装できるネットワーク環境の一例を示す。ＣＲＭシステム／アプリケーションおよび共有・カスタマイズ可能なデータのキャッシングは、単一のコンピューティング装置上でローカルに、または多数の物理もしくは仮想クライアントおよびサーバ全体にわたる分散方式で実装してもよい。また、ＣＲＭシステム／アプリケーションおよび共有・カスタマイズ可能なデータのキャッシングは、クラスタ化されていないシステムあるいは１つまたは複数のネットワーク（例えば、ネットワーク４９０）経由で通信する多数のノードを使用するクラスタ化されたシステムで実装してもよい。
【００３３】
このようなシステムは、サーバ、クライアント、インターネットサービスプロバイダ、通信媒体の任意のトポロジを備えることができる。さらに、システムは、静的または動的トポロジを有してもよい。用語「クライアント」は、クライアントアプリケーションまたはクライアント装置を示す。共有・カスタマイズ可能なデータのキャッシングを実装するネットワーク化されたシステムはさらに多くのコンポーネントを必要とするが、関連するコンポーネントは図面と併せて説明する。
【００３４】
ＣＲＭシステムに関連付けられるアプリケーションは、個々のクライアント装置４８１〜４８３で実装し、サーバ４９２で実行し、クライアント装置（またはアプリケーション）のいずれからでもアクセスできる。同様に、ＣＲＭシステムに関連付けられた共有・カスタマイズ可能なデータのキャッシングサービスは、クライアント装置のうちの１つでローカルに、またはより典型的には、１つまたは複数のサーバ（例えば、サーバ４９２）で実行し、クライアント装置（またはアプリケーション）によりアクセスすることができる。
【００３５】
ＣＲＭシステム内の共有・カスタマイズ可能なデータのキャッシングに関連付けられたデータストアは、データストア４９６などの単一のデータストアで具現化してもよいし、個々のクライアント装置、サーバなどの関連付けられた多数のデータストア全体にわたって分散してもよい。専用データベースサーバ（例えば、データベースサーバ４９４）を使用して、このような１つまたは複数のデータストアにおけるデータ取り出しや記憶を調整してもよい。
【００３６】
ネットワーク４９０は、企業ネットワークなどの安全なネットワーク、無線オープンネットワークなどの安全とはいえないネットワーク、またはインターネットを含むことができる。ネットワーク４９０は、本明細書内で示したノード間の通信を提供する。例えば、ネットワーク４９０は、有線ネットワークまたは直接有線接続などの有線媒体および音響、ＲＦ、赤外線および他の無線媒体などの無線媒体を含むことができるが、これらに限られるわけではない。
【００３７】
コンピューティング装置、アプリケーション、データソース、データ分散システムの多くの他の構成を使用して、共有・カスタマイズ可能なマルチテナントデータのキャッシングを実装してもよい。さらに、図４で示されたネットワーク環境は例に過ぎない。本実施形態は、例示したアプリケーション、モジュール、またはプロセスに限られるわけではない。
【００３８】
図５およびその関連する説明は、本実施形態を実装できる適切なコンピューティング環境の簡単な概略を提供するためのものである。図５は、コンピューティング装置５００のようなコンピュータ動作環境の一例のブロック図を示す。基本構成では、コンピューティング装置５００は、ＣＲＭサービスと共同して共有・カスタマイズ可能なデータのキャッシングを提供するサーバまたはクライアント装置とすることができ、典型的には少なくとも１つの処理ユニット５０２とシステムメモリ５０４とを含むことができる。コンピューティング装置５００は、さらにプログラムを実行するのに協働する複数の処理ユニットを含んでもよい。構成の精密さやコンピューティング装置のタイプに応じて、システムメモリ５０４は揮発性（ＲＡＭなど）、不揮発性（ＲＯＭ、フラッシュメモリなど）、または何らかの２つの組み合わせとすることができる。システムメモリ５０４は、典型的には、ネットワーク化されたパーソナルコンピュータの動作を制御するのに適したオペレーティングシステム５０５、例えば、本件特許出願人のＷＩＮＤＯＷＳ（登録商標）オペレーティングシステムを含む。システムメモリ５０４は、さらにプログラムモジュール５０６、ＣＲＭアプリケーション５２２、キャッシングモジュール５２４などの１つまたは複数のソフトウェアアプリケーションを含んでもよい。
【００３９】
ＣＲＭアプリケーション５２２は、別個のアプリケーションにしてもよいし、コンピューティング装置５００に関連付けられたクライアントアプリケーションに顧客関係管理サービスを提供するＣＲＭサービスの統合モジュールとしてもよい。キャッシングモジュール５２４は、上述したように、要求データのカスタマイズレベル属性を判定すること、取り出されたデータをキャッシングすること、要求データまたはそのデータに関する通知をＣＲＭアプリケーションに提供することに関連付けられたサービスを提供することができる。この基本構成は、図５では破線５０８内のコンポーネントにより示されている。
【００４０】
コンピューティング装置５００は、追加の特徴や機能性を備えることができる。例えば、コンピューティング装置５００は、さらに磁気ディスク、光ディスクまたはテープなどの追加の（取り外し可能および／または取り外し不可能な）データ記憶装置を含むことができる。このような追加の記憶装置は、図５では取り外し可能な記憶装置５０９および取り外し不可能な記憶装置５１０で示されている。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を記憶するための任意の方法または技術で実装される揮発性および不揮発性、取り外し可能および取り外し不可能な媒体を含むことができる。システムメモリ５０４、取り外し可能な記憶装置５０９、取り外し不可能な記憶装置５１０は、全てコンピュータ記憶媒体の例である。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくはその他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（デジタル多用途ディスク）もしくはその他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、もしくは他の磁気記憶装置、または所望の情報を記憶するのに使用でき、コンピューティング装置５００によりアクセスできる任意の他の媒体を含むが、これらに限られるわけではない。任意のこのようなコンピュータ記憶媒体は、装置５００の一部としてもよい。コンピューティング装置５００は、さらにキーボード、マウス、ペン、音声入力装置、タッチ入力装置などの１つまたは複数の入力装置５１２を含むことができる。さらに、ディスプレイ、スピーカ、プリンタなどの１つまたは複数の出力装置５１４を含むこともできる。これらの装置は当分野では周知の装置であり、本明細書では詳細に述べる必要はない。
【００４１】
コンピューティング装置５００は、さらに分散コンピューティング環境における無線ネットワーク、例えば、イントラネットまたはインターネット経由で装置５００に他のコンピューティング装置５１８と通信させる通信接続５１６を含むことができる。他のコンピューティング装置５１８は、データアクセスおよびディレクトリサービスに関連付けられたアプリケーションを実行する１つまたは複数のサーバを含むことができる。通信接続５１６は、通信媒体の一例である。通信媒体は、典型的には、キャリア波またはその他の搬送機構などの変調データ信号のコンピュータ可読命令、データ構造、プログラムモジュール、その他のデータで具現化することができ、任意の情報配信媒体を含む。用語「変調データ信号」は、１つまたは複数の自身の特性セットを有する信号であり、信号内の情報を符号化するように変化された信号を意味する。例えば、通信媒体は、有線ネットワークまたは直接有線接続などの有線媒体や音響、ＲＦ、赤外線、その他の無線媒体などの無線媒体を含むがこれらに限定されない。本明細書内で使用されている用語「コンピュータ可読媒体」は、記憶媒体および通信媒体の両方を含む。
【００４２】
請求される主題はさらに方法を含む。方法は、本明細書で説明した構造を含む任意の多数の手段で実装することができる。このような手段の１つは、本明細書内で説明したタイプの装置のマシン動作による手段である。
【００４３】
別の随意の手段は、何かを実行する１人または複数人の操作者とともに遂行される方法の１つまたは複数の個々の動作に対する手段である。これらの操作者は互いに同じ場所に配置する必要はないが、各々がプログラムの一部を遂行するマシンを有するだけでよい。
【００４４】
図６は、共有・カスタマイズ可能なマルチテナントデータのキャッシングプロセスの論理フローチャートである。プロセス６００は、ＣＲＭサービスの一部として実装してもよい。
【００４５】
プロセス６００は、動作６０２で始まる。ここで、データキーおよびテナントＩＤがテナントからのデータ要求を示すＣＲＭシステムのキャッシュにより受信される。処理は、動作６０２から決定動作６０４に進む。
【００４６】
決定動作６０４では、要求データに関連付けられたアイテムがキャッシュ内にあるか否かを判定する。アイテムはデータを定義する要求データの属性リストを含んでもよいし、またはアイテムがこのテナント用に取り出されているが、すでにキャッシュ内にある共有システムバージョンに相応することを示す「システムセンチネル」、もしくはデータがこのテナント用に削除されたことを示す「削除センチネル」としてもよい。アイテムがキャッシュ内に存在しない場合、処理は図７のプロセス７００の動作７２０に進む。
【００４７】
決定動作６０４においてアイテムがキャッシュ内で見い出された場合、処理は動作６０６に進み、そこでアイテムはキャッシュストアから取り出される。処理は動作６０６から決定動作６０８に移る。
【００４８】
決定動作６０８において、キャッシングされたアイテムが「システムセンチネル」であるか否かを判定する。アイテムが「システムセンチネル」である場合、処理は動作６１０に進み、そこでアイテムにより示されるシステムデータがキャッシュストアから取り出される。処理は動作６１０から動作６１２に移り、そこでシステムデータが要求テナントに提供される。動作６１２の後、処理は先の動作のための呼び出しプロセスに移る。
【００４９】
決定動作６０８での判定が否定である場合、処理は決定動作６１４に進み、そこでアイテムが「削除センチネル」であるか否かを判定する。アイテムが「削除センチネル」である場合、処理は動作６１６に進み、そこでデータが存在しないことを示す通知が要求テナントに提供される。動作６１６の後、処理は先の動作のための呼び出しプロセスに移る。
【００５０】
決定動作６１４での判定が否定である場合、それはキャッシュストアから取り出されたデータが所与のＩＤを有するテナントに固有のカスタマイズを表すことを示す。処理は動作６１８に進み、そこで取り出されたデータが要求テナントに提供される。動作６１８の後、処理は先の動作のための呼び出しプロセスに移る。
【００５１】
図７は、図６の共有・カスタマイズ可能なマルチテナントデータのキャッシングプロセスの一部であるプロセス７００の論理フローチャートである。
【００５２】
プロセス７００は、プロセス６００の決定動作６０４で否定判定の後の動作７２０で始まる。動作７２０では、要求データは要求テナントに関連付けられたデータベースから取り出される。処理は動作７２０から決定動作７２２に進む。
【００５３】
決定動作７２２では、要求データのカスタマイズレベルがシステムレベル、即ちカスタマイズされていないデータであることを示す０であるか否かを判定する。カスタマイズレベルが０である場合、処理は決定部７２４に進む。
【００５４】
決定部７２４では、キャッシュはキャッシュストアが所与のキーを有するアイテムに対する（カスタマイズされていない）システムデータのコピーをすでに含んでいるか否かを判定する。キャッシュストア内にシステムデータがまだ存在しない場合には、処理は動作７２５に進む。
【００５５】
動作７２５では、このテナントに対して取り出されたデータが（カスタマイズされていない）システムデータとしてキャッシュストア内に挿入され、今後（カスタマイズされていない）システムデータを要求するこのテナントまたは他のテナントに対して、データを取り出すことができる。処理は動作７２５から７２６に進む。
【００５６】
決定動作７２４での判定が肯定である場合、それは所与のキーに対する（カスタマイズされていない）システムデータがすでにキャッシュストア内に存在していることを意味する。処理は動作７２６に進む。動作７２６では、取り出されたデータおよび要求テナント用にキャッシュストア内に「システムセンチネル」が挿入される。処理は動作７２６から動作７２８に移る。
【００５７】
動作７２８では、システムデータが要求テナントに提供される。動作７２８の後、処理は先の動作のための呼び出しプロセスに移る。
【００５８】
決定動作７２２での判定が否定である場合、処理は決定動作７３０に進み、そこで要求データのカスタマイズレベルが存在しないデータであることを示す２であるか否かを判定する。カスタマイズレベルが２である場合、処理は動作７３６に進む。
【００５９】
動作７３６では、取り出されたデータおよび要求テナント用にキャッシュストア内に「削除センチネル」が挿入される。この「削除センチネル」は、テナントデータベース内でデータが削除されたことを示す。処理は動作７３６から動作７３８に移る。
【００６０】
動作７３８では、データがもう存在しないことを示す通知が要求テナントに提供される。動作７３８の後、処理は先の動作のための呼び出しプロセスに移る。
【００６１】
決定動作７３０での判定が否定である場合、処理は動作７３２に進み、そこで所与のキーおよびテナントＩＤを有するデータが、要求テナントにカスタムなデータであることが分かるので、このデータはキャッシュストア内に挿入される。処理は動作７３２から動作７３４に進む。
【００６２】
動作７３４では、取り出されたカスタマイズデータが要求テナントに提供される。動作７３４の後、処理は先の動作のための呼び出しプロセスに移る。
【００６３】
プロセス６００、７００に含まれる動作は、説明を目的としたものである。共有・カスタマイズ可能なマルチテナントデータのキャッシングは、これより少ないまたはこれに追加したステップを有する同様のプロセスで実装してもよく、また本明細書内で示した原理を使用した動作の異なる順序で実装してもよい。
【００６４】
上述の明細書、例、データは、製造や実施形態の構造の完全な説明を提供するものである。主題が構造的特徴および／または方法論的行為に固有の言葉で説明してきたが、添付の請求項で定義される主題は必ずしも上述した固有の特徴または行為に限られるわけではないことは理解されたい。むしろ、上述した固有の特徴や行為は、請求項や実施形態を実装する形式の例として開示されている。
【図１】
2010524083.tif 000003
【図２】
2010524083.tif 000004
【図３】
2010524083.tif 000005
【図４】
2010524083.tif 000006
【図５】
2010524083.tif 000007
【図６】
2010524083.tif 000008
【図７】
2010524083.tif 000009
【国際調査報告】
2010524083.tif 000010
2010524083.tif 000011