(57)【特許請求の範囲】
【請求項１】
マルチテナント・システムにおける複数のサーバー・インスタンスであって、前記サーバー・インスタンスは、複数の異なるテナントにサービスを供与し、各テナントは、異なる組織に対応し、かつ対応するテナント・データーを有し、前記マルチテナント・システムにおける前記サーバー・インスタンスは、各テナントに対応する前記テナント・データーを他のテナントから分離する、複数のサーバー・インスタンスと、
複数の異なる要求元テナントの各々から変更要求を受け取るように構成された通知ストリーム・ジェネレーターであって、前記通知ストリーム・ジェネレーターは、前記受け取られた変更要求をテナント毎セグメントに細分化するように構成された変更細分化コンポーネントを備え、前記テナント毎セグメントの各々は、前記要求元テナントのうちの特定の１つに対応するとともに、前記特定の要求元テナントに対応するテナント・データーへの変更を示す複数の変更要求の組を含む、通知ストリーム・ジェネレーターと、
を備えるコンピューター・システムであって、
前記通知ストリーム・ジェネレーターは、前記テナント毎セグメントの各々に対して、前記要求元テナントのうちの前記特定の１つに割り当てられた１つのサーバー・インスタンスに通知するように構成され、前記通知されたサーバー・インスタンスの各々は、当該サーバー・インスタンスが通知を受けた前記テナント毎セグメントにおける全ての変更要求を行い終えるまで、前記通知ストリーム・ジェネレーターとの接続を維持し、その後、前記接続を解放する、
コンピューター・システム。
【請求項２】
前記マルチテナント・システムはクラウド・ベース・システムである、請求項１に記載のコンピューター・システム。
【請求項３】
前記通知ストリーム・ジェネレーターは、前記テナント毎セグメントの各々に対して、対応するサーバー・インスタンスが前記テナント毎セグメントにおける変更要求の全てを行うまで、前記テナント毎セグメントにおける一組のテナント変更を前記対応するサーバー・インスタンスへ通信するための排他的同期ストリームを形成するように構成され、前記排他的同期ストリームは、前記テナント・データーへのテナント変更の組の通信を排他的に行う、請求項１に記載のコンピューター・システム。
【請求項４】
前記通知ストリーム・ジェネレーターは、保留変更ストアを備え、前記変更細分化コンポーネントは、前記受け取られた変更要求を前記テナント毎セグメントに細分化し、前記テナント毎セグメントを前記保留変更ストアに格納するように構成される、請求項１に記載のコンピューター・システム。
【請求項５】
前記通知されたサーバー・インスタンスの各々は、通知を受けた前記複数の変更要求の組に対応する所与のテナント毎セグメントからの全ての変更が引き出され終えるまで、前記通知ストリーム・ジェネレーターとの接続を維持し、前記所与のテナント毎セグメントから前記変更を引き出す、請求項４に記載のコンピューター・システム。
【請求項６】
前記通知ストリーム・ジェネレーターは、前記保留変更ストア内のテナント毎セグメントに対応するブックマークを所与のサーバー・インスタンスの各々に提供することによって、前記所与のサーバー・インスタンスに通知する、請求項５に記載のコンピューター・システム。
【請求項７】
前記所与のサーバー・インスタンスは、前記変更要求を引き出して前記変更要求を行うときに、個々のサーバー・インスタンス毎に、リソース使用制約を強要する、請求項６に記載のコンピューター・システム。
【請求項８】
追加の要求元テナントから受け取られた変更要求の追加の各組に対して、前記通知ストリーム・ジェネレーターは、前記変更要求の追加の組を処理するように追加のサーバー・インスタンスに通知する、請求項７に記載のコンピューター・システム。
【請求項９】
前記サーバー・インスタンスの各々は、別個の物理サーバー上に実装されたサーバー・インスタンスを備える、請求項８に記載のコンピューター・システム。
【請求項１０】
複数の異なるテナントにサービスを供与し、前記異なるテナントの各々に対する別個の分離されたテナント・データーを維持するマルチテナント・システムを備えるコンピューター・システムであって、
前記マルチテナント・システムは、
テナント・データーにおける変更要求を処理する複数の異なるサーバーと、
対応する要求元テナントから前記変更要求を受け取るように構成された通知ストリーム・ジェネレーターであって、前記通知ストリーム・ジェネレーターは、前記受け取られた変更要求をテナント毎セグメントに細分化するように構成された変更細分化コンポーネントを備え、前記テナント毎セグメントの各々は、前記要求元テナントのうちの特定の１つに対応するとともに、前記特定の要求元テナントに対応するテナント・データーへの変更を示す複数の変更要求の組を含む、通知ストリーム・ジェネレーターと、
を備え、前記通知ストリーム・ジェネレーターは、各要求元テナントに、前記複数の異なるサーバーのうちの１つのサーバーであって対応するテナント毎セグメントにおける変更要求を処理するサーバーを割り当てるように構成され、前記割り当てられたサーバーは、前記通知ストリーム・ジェネレーターが他のテナントに対する変更要求を処理することを当該サーバーに割り当てる前に、当該サーバーが割り当てられた対応するテナントに対するテナント毎セグメントにおける全ての変更要求を処理する、
コンピューター・システム。
【請求項１１】
前記複数の異なるサーバーは、複数の異なるサーバー・インスタンスを備える、請求項１０に記載のコンピューター・システム。
【請求項１２】
前記通知ストリーム・ジェネレーターは、前記テナント毎セグメントの各々に対して、対応するサーバー・インスタンスが前記テナント毎セグメントにおける変更要求の全てを行うまで、前記テナント毎セグメントにおける一組のテナント変更を前記対応するサーバー・インスタンスへ通信するための排他的同期ストリームを形成するように構成され、前記排他的同期ストリームは、前記テナント・データーへのテナント変更の組の通信を排他的に行う、請求項１０に記載のコンピューター・システム。
【請求項１３】
前記要求元テナントに割り当てられた前記サーバーは、前記要求元テナントに対応する前記セグメントから前記テナント変更を引き出し、前記要求元テナントに対応する前記テナント・データーにおいて前記テナント変更を行い、前記セグメントからの前記テナント変更の全てが前記要求元テナントに対応する前記テナント・データーに対して行われたときに、前記通知ストリーム・ジェネレーターに通知する、請求項１０に記載のコンピューター・システム。
【請求項１４】
前記テナント変更の組を格納する保留変更ストアを更に備え、前記変更細分化コンポーネントは、前記保留変更ストアにおける前記テナント変更の組を細分化する、請求項１０に記載のコンピューター・システム。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  コンピューター・システムは現在広く使用されている。あるコンピューター・システムはローカル・コンピューター・システムであり、一方他のコンピューター・システムはリモート・サーバー環境において使用される。
【０００２】
[0002]  会社または他の組織が、コンピューター・システムのローカル（オンプレミス）処理系(implementation)とコンピューター・システムのリモート・サーバー処理系（クラウド・ベース処理系のような）との間で切り替えるのは、珍しいことではない。一例として、会社は、それらの電子メール・システム、それらの文書共有システム、またはそれらの業務システムのローカル処理系とリモート・サーバー処理系との間でときどき切り替える。業務システムのいくつかの例には、とりわけ、企業リソース計画（ＥＲＰ）システム、顧客関係管理（ＣＲＭ）システム、取扱商品（ＬＯＢ：line-of-business）システムが含まれる。これらは、会社がローカルのオンプレミス処理系とリモート・サーバーまたはクラウド・ベース処理系との間で切り替えるタイプのコンピューター・システムのいくつかの例に過ぎない。
【０００３】
[0003]  同様に、組織の中には、混成処理系を有するものもある。このような処理系では、サービスの一部がコンピューター・システムのローカルのオンプレミス・コンポーネントによって実行され、他のサービスがリモート・サーバーまたはクラウド・ベース環境において実行される。混成システムでは、組織が周期的に一定のサービスをオンプレミス処理系からクラウド・ベース処理系に移動しつつ、他のサービスはオンプレミスに維持することが珍しくない。
【０００４】
[0004]  リモート・サーバーまたはクラウド・ベース処理系、あるいは混成処理系を有する会社の中には、比較的大規模なものもある。企業の組織は、たとえば、何千人もの従業員を有する場合もある。したがって、これらのコンピューター・システムのリモート・サーバーまたはクラウド・ベース処理系は、多数の個人に対応(serve)しなければならない。コンピューター・システムに対して行われるトランザクションおよび変更の多くは、多数のユーザー・アカウントまたはユーザー・データーの変更を必然的に伴う。
【０００５】
[0005]  一例として、企業組織がある計算システム機能をオンプレミス処理系からクラウド・ベース処理系に移動することを望む場合、これは企業のコンピューター・システムに多くの異なる更新を行うことを必要とする可能性がある。具体的な例として、企業がその電子メール・システムを移動させている場合、これは、多数の従業員アカウントの作成を必然的に伴う可能性がある。アカウントの作成は、多くの場合、シリアルで行われ、大量の時間を要する可能性がある。加えて、多数の変更が行われる場合、これらの変更は、大量の処理およびメモリー・オーバーヘッド、ならびにリモート・サーバーまたはクラウド・ベース処理系の帯域幅を消費する可能性がある。
【０００６】
[0006]  多くのクラウド・ベースまたはリモート・サーバー処理系は、マルチテナント・システムでもある。即ち、これらは複数の異なるテナントにあるレベルのサービスを提供するが、テナントが複数の異なる組織であることが多い。１つのテナントが多数の変更を行うと、他のテナントによって感知される処理能力に悪影響を及ぼす可能性がある。
【０００７】
[0007]  以上の論述は、一般的な背景情報のために示されたに過ぎず、特許請求する主題の範囲を判断するときの補助として使用されることを意図するのではない。
【発明の概要】
【０００８】
[0008]  テナントの変更は、マルチテナント・サービスにおいて受け入れられる。テナントの変更は、テナント毎に細分化され、個々の更新ストリームが、個々のテナント・ストリーム・プロセッサーによって形成される(establish)。各テナント・ストリーム・プロセッサーは、所与のテナントに対する変更を、このテナントに対する変更が完了するまで行う。
【０００９】
[0009]  この摘要は、詳細な説明において以下で更に説明する概念から選択したものを、簡略化した形態で紹介するために設けられている。この摘要は、特許請求する主題の主要な特徴や必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を判断するときに補助として使用されることを意図するのでもない。特許請求する主題は、背景において注記した欠点の内、任意のものを解決する実施態様にも全ての欠点を解決する実施態様にも限定されるのではない。
【図面の簡単な説明】
【００１０】
【図１】図１は、クラウド・ベースのマルチテナント・サービス・アーキテクチャの一例のブロック図である。
【図２】図２は、通知ストリーム・ジェネレーターの一例を更に詳細に示すブロック図である。
【図３】図３は、図１に示すアーキテクチャの動作の一例を示す流れ図である。
【図４】図４は、マルチテナント・クラウド・アーキテクチャの一例におけるマルチテナント機能(multi-tenancy)の異なるレベルを表すブロック図である。
【図５】図５は、移動体デバイスの例を示す。
【図６】図６は、移動体デバイスの例を示す。
【図７】図７は、移動体デバイスの例を示す。
【図８】図８は、計算環境の一例のブロック図である。
【発明を実施するための形態】
【００１１】
[0016]  図１は、クラウド・ベースのマルチテナント・サービス・アーキテクチャ１００の一例のブロック図である。アーキテクチャ１００は、複数の異なるテナント・システム１０４〜１０６によってアクセス可能なクラウド・ベース・マルチテナント・サービス・システム１０２を含む。図４に関して以下で更に詳細に説明するが、クラウド・ベース・マルチテナント・サービス・システム１０２は、テナント・システム１０４〜１０６を使用するテナントに対して、あるレベルのマルチテナント・サービスを提供する。実例として、テナントは、システム１０２によって提供されるマルチテナント・サービスが、所望のレベルにおいて、テナント毎に分けられる(separated)または分離される(isolated)ように、組織を分ける。また、図４に関して以下で更に詳細に説明するが、とりわけ、インフラストラクチャのレベル、アプリケーション・プラットフォームのレベル、またはアプリケーション・ソフトウェアのレベルで、マルチテナント・サービスを提供することができる。つまり、システム１０２によって提供される特定のレベルのマルチテナント機能(multi-tenancy)に応じて、特定のクライアントに対応する情報がそのレベルにおいて分けられ、他のテナントによってアクセスできないように分離される。
【００１２】
[0017]  一例として、システム１０２がサービスとしてのインフラストラクチャ（ＩａａＳ）を提供する場合、システム１０２のインフラストラクチャ・コンポーネントは、テナント１０４〜１０６によって共有されるが、テナント情報は他の方法で別個に維持される。システム１０２がサービスとしてのプラットフォーム（ＰａａＳ）を提供する場合、プラットフォーム・コンポーネントはテナント１０４〜１０６によって共有される。システム１０２がサービスとしてのアプリケーション・ソフトウェア（ＳａａＳ）を提供する場合、テナント１０４〜１０６にサービスするために、システム１０２によって共通のアプリケーションが実行される。これらの実施態様のいずれにおいても、システム１０２はあるレベルのマルチテナント機能を提供するので、異なるテナント１０４〜１０６に対応する情報は別個に維持される。これについては図４に関して以下で更に詳細に説明する。
【００１３】
[0018]  図１に示すシステム１０２の例は、通知ストリーム・ジェネレーター１０８、テナント・ストリーム・プロセッサー１１２〜１１４をその内部に含むテナント別処理システム１１０、テナント・レベル別リソース１１６、および図４に関して以下で更に詳細に論ずる種々の他のクラウド処理系コンポーネント１２４を含む。図１に示す例では、テナント・レベル別リソースは、テナント・データー１１８〜１２０を含み、テナント・データー１１８〜１２０は、それぞれ、各テナント・システム１０４〜１０６に対応する情報を表し、この情報は、他のテナントから別個に維持されこれらによるアクセスは不可能となっている。
【００１４】
[0019]  テナント・システム１０４〜１０６は、実例として、クラウド・ベース・マルチテナント・サービス・システム１０２に対する変更に備える。例えば、テナント・システム１０４は、システム１０２において、電子メール・サービスをオンプレミス処理系からクラウド・ベース処理系に移動させているとしてもよい。この場合、テナント・システム１０４は、その電子メール・システム全体をオンプレミス・バージョンからシステム１０２に移動させるための変更に備える。他の例では、テナント・システム１０６が他の組織を取得したとしてもよく、したがって、多数の電子メール・アカウントをシステム１０２におけるそのクラウド・ベース処理系に追加することが必要となる可能性がある。更に他の例では、テナント・システム１０４を使用する組織が編成し直されたとしてもよい。したがって、大多数の従業員記録を変更して、彼らがもはや人事部の一部ではなく、今では販売部の一部であることを示す必要がある可能性がある。これらの例のいずれにおいても、または多種多様の他の例においても、テナントに合わせてクラウド・ベース処理系に変更すると、数量が比較的大きくなる可能性がある。しかしながら、システム１０２は、他のテナントにサービスする際にシステム１０２の処理能力に影響を及ぼさないような方法で、これらの変更を処理する。
【００１５】
[0020]  テナント更新を行うときのシステム１０２の動作についての更に詳細な説明は、以下で図２および図３に関して行う。これより、理解を深めるために、端的な全体像を示す。最初に、テナント１０４〜１０６の内１つがテナント変更を求める要求をシステム１０２に対して行うと仮定する。テナント変更は、要求元テナントに対応するテナント・データー１１８〜１２０に対して要求される変更を示す。通知ストリーム・ジェネレーター１０８は、テナント別処理システム１１０と共に、テナント毎同期ストリームを作成する。一例では、テナント１０４〜１０６によって受け取られた変更をテナント毎セグメントに組み分ける。次いで、所与のセグメントに対応するブックマークを、テナント・ストリーム・プロセッサー１１２〜１１４の内の１つに受け渡す(hand)。テナント・ストリーム・プロセッサー１１２〜１１４は、実例として、異なるサーバーであるか、少なくとも異なるサーバー・インスタンスである。このブックマークを受け取ったテナント・ストリーム・プロセッサーは、次に、通知ストリーム・ジェネレーター１０８との通信リンク（同期ストリーム）を維持し、同期ストリームを通じて(over)テナント変更を入手して、必要な場合はブックマークを使用して、対応するテナント・データーに対してテナント変更を行う。同じテナント・ストリーム・プロセッサー１１２は、これらのテナント変更が通知ストリーム・ジェネレーター１０８から出尽くす(drain)まで、同じテナントに対する変更を行い続ける。次いで、変更を完了したことを通知ストリーム・ジェネレーター１０８に示す。テナント・ストリーム・プロセッサーが所与のテナントに対して変更を行っている間に、第２テナントが変更要求を通知ストリーム・ジェネレーター１０８に出した場合、ジェネレーター１０８は、システム１１０における第２テナント・ストリーム・プロセッサーと、別の同期ストリームを形成する(establish)。第２ストリーム・プロセッサー１１０は、これらの変更が出し尽くされるまで、第２テナントに対する変更を行い続ける。これは、各テナントが変更を行うために指定されたサーバーによるそれ自体の処理ストリーム（または同期ストリーム）を有するように、変更を要求する異なるテナント毎に続けられる。サーバーは、それ自体の作業負荷制約をサーバー・レベルで強制する。このように、任意の所与のテナントによって要求される変更の数には関係なく、他のテナントによって感知されるシステム１０２の処理能力は影響を受けない。
【００１６】
[0021]  図２は、通知ストリーム・ジェネレーター１０８の一例の更に詳細なブロック図である。ジェネレーター１０８は、実例として、変更細分化コンポーネント１８０、保留変更ストア(pending change store)１８２を含み、更に他の単位体１８４も含むことができる。また、図３は、ジェネレーター１０８が、実例として、テナント１０４〜１０６からテナント変更１８６を受け取り、これらをセグメント１８８〜１９０に細分化することも示す。各セグメント１８８〜１９０は異なるテナント１０４〜１０６に対する変更を表す。また、図３は、一旦テナント変更１０６を細分化したなら、 変更細分化コンポーネント１８０が、異なるセグメント１８８〜１９０に対応するブックマーク１９２〜１９４を、異なるテナント・ストリーム・プロセッサー１１２〜１１４に送ることも示す。テナント・ストリーム・プロセッサー１１２〜１１４は、ストア１８２から変更を入手して、次いで対応するテナントのために、対応するテナント・データー１１８〜１２０に対して変更を行う。テナント・ストリーム・プロセッサー１１２〜１１４は、ブックマーク１９２〜１９４を使用して、対応するセグメント１８８〜１９０におけるテナント変更が全て行われることを確保する。つまり、各テナント・ストリーム・プロセッサー１１２〜１１４は、１つのテナントに対する１組の変更を排他的に入手するために同期ストリームを有し、そのテナントのためだけの変更を同期ストリームによって受け取り、そのテナントに対する全ての変更が対応するセグメントから出尽くされるまで、同じテナントに対する全ての変更を行う。次いで、ブックマークを変更細分化コンポーネント１８０に戻し、テナント・ストリーム・プロセッサーが空いており異なるテナントに対する変更を行えることを示す。
【００１７】
[0022]  図３は、クラウド・ベース・システム１０２においてテナント・データーに対するテナント変更１８６を行うときにおける通知ストリーム・ジェネレーター１０８およびクラウド・ベース・マルチテナント・サービス・システム１０２の動作の一例を示す流れ図である。変更細分化コンポーネント１８０は、最初に、テナント変更１８６を１つ以上のテナント・システム１０４〜１０６から受け取る。これは、図４においてブロック２００によって示されている。次いで、コンポーネント１８０は変更１８６を異なるセグメント１８８〜１９０に細分化する。セグメント１８８〜１９０は、実例として、各セグメント１８８〜１９０が同じテナントによって提出されたテナント変更の全てを含み、これらの変更のみを含むように、テナント毎のセグメントとなっている。保留中の変更をテナント毎に細分化することは、図４におけるブロック２０２によって示されている。
【００１８】
[0023]  変更細分化コンポーネント１８０は、次いで、同じプロセッサーが所与のテナントに対する変更の全てを処理できるように、テナント・ストリーム・プロセッサー１１２〜１１４をセグメントの各々に割り当てる。ここで示す例では、各テナント・ストリーム・プロセッサー１１２は別のサーバー、または少なくともサーバーの別のインスタンスである。つまり、各テナントは、その要求した変更を行う専用のサーバーまたはサーバー・インスタンスを有する。
【００１９】
[0024]  図３に示す例では、変更細分化コンポーネント１８０は、セグメント１８８〜１９０に対応する、対応ブックマーク１９２〜１９４を送ることによって、テナント・ストリーム・プロセッサー１１２〜１１４を各テナントに割り当てる。ブックマークを送ることは、図４ではブロック２０４によって示されている。尚、２つ以上のテナントが比較的小さいテナントである場合、これらを同じテナント・ストリーム・プロセッサー１１２〜１１４に接続してもよいことを注記しておく。この場合、テナント作業負荷は種々のテナント・ストリーム・プロセッサー１１２〜１１４間で割り当てられるが、テナントとサーバー（またはテナント・ストリーム・プロセッサー）との間には必ずしも１対１の対応がなくてもよい。テナント・ストリーム・プロセッサー間でテナントを割り当てることは、図４ではブロック２０６によって示されている。
【００２０】
[0025]  しかしながら、以上で説明したように、一例では、サーバー・インスタンス毎に１つのテナント・ストリームがある（これに沿って、テナント・ストリーム・プロセッサーは、１つのテナントに対するテナント変更を排他的に受け取り、テナント変更を行う）。これはブロック２０８によって示されている。ストリームは、セグメントにおける全ての変更が行われるまで維持される。
【００２１】
[0026]  行う必要があるテナント変更をテナント・ストリーム・プロセッサーに通知することは、種々の異なる方法で行うことができる。例えば、これらの変更が保留変更ストア１８２における新たなセグメントに対応する場合、コンポーネント１８０は、新たなセグメントに対応する新たなブックマークを、変更を行うのを待っているテナント・ストリーム・プロセッサー（例えば、他のテナントまたはテナント・ストリームに未だ割り当てられていないもの）に送る。これは、ブロック２１０によって示されている。勿論、変更細分化コンポーネント１８０は、他の方法でもテナント・ストリーム・プロセッサーに保留中の変更を通知することができ、これはブロック２１２によって示されている。
【００２２】
[0027]  一旦テナント・ストリーム・プロセッサー（例えば、プロセッサー１１２）に、それがセグメント１８８〜１９０の内の１つ（例えば、セグメント１８８）からの変更を行わなければならないことが通知されたなら、対応するセグメントからテナント変更を引き出す。これは、図４ではブロック２１４によって示されている。このようにするとき、テナント・ストリーム・プロセッサー１１２は、実例として、セグメント１１８からの全ての変更を入手して行い終えるまで、通知ストリーム・ジェネレーター１０８との接続を維持する。これは、ハイパーテキスト・トランスファー・プロトコル（ＨＴＴＰ）ロング・ポーリングを使用して、または他の常時接続メカニズムを使用することによって行うことができる。接続の維持はブロック２１６によって示されている。テナント・ストリーム・プロセッサー１１２は、変更が対応するセグメントから出尽くされ、ブックマークがテナント・ストリーム・プロセッサー１１２によって解放されるまで、所与のテナントに対するテナント変更の全てを処理する。これは、図４ではブロック２１８によって示されている。テナント・ストリーム・プロセッサーは、他の方法でもこれらの変更を引き出して変更を行うことができ、これはブロック２２０によって示されている。
【００２３】
[0028]  テナント・ストリーム・プロセッサーは、対応するセグメントから変更を引き出しつつ、所与のテナントに対して、対応するテナント・データーにおいてこれらの変更を実行する。これはブロック２２２によって示されている。各テナント・ストリーム・プロセッサーはサーバー・インスタンスに対応するので、テナント変更に対して帯域幅制約を強要する(enforce)のはサーバー・インスタンス自体である。例えば、サーバー・インスタンス自体が、ＣＰＵ使用、メモリー使用、帯域幅使用等に対して制約を強要する。各テナント１０４〜１０６は変更を行うためにそれ自体のサーバー・インスタンスを有するので、テナント１０４〜１０６は、その対応するサーバー・インスタンス（例えば、その関連するテナント・ストリーム・プロセッサー）によって強制される使用制約を超えることができない。これは、図４ではブロック２２４によって示されている。このように、特定のテナント１０４〜１０６が、クラウド処理系の機能を使いすぎて(overwhelm)、他のテナントに損害を与える可能性はない。テナント・ストリーム・プロセッサー（またはサーバー・インスタンス）は同時に他のテナントからの変更を処理しようとしないので（一度に１つのテナントに対する変更を排他的に処理している）、いずれの所与のテナント１０４〜１０６の作業負荷も、クラウド・ベース処理系の他のテナントに提供される処理能力(performance)に影響を及ぼすことはない。代わりに、各テナントは、処理能力については、同じ扱いを受ける。何故なら、各テナントは、その変更を行うそれ自体のサーバー・インスタンス（またはテナント・ストリーム・プロセッサー）を有するからである。尚、テナント・ストリーム・プロセッサーは他の方法でもテナントに対する変更を実行できることに留意されたい。これはブロック２２６によって示されている。
【００２４】
[0029]  また、規模調整(scaling)も容易に行うことができる。新たな機械またはサーバー・インスタンスを追加することによって、サービス・テナントに対する容量は直接そして素早く増加する。新たな機械またはサーバー・インスタンスは、変更を処理するために使用することができる、入手可能なストリーム・プロセッサーに追加される。
【００２５】
[0030]  各テナント・ストリーム・プロセッサー１１２〜１１４は、１組の変更を行った後に、対応するセグメントにおいてこのテナントに対する変更が他にも未だあるか否か判定する。これは、図４ではブロック２２８によって示されている。ある場合、処理はブロック２１４に戻り、テナント・ストリーム・プロセッサーは、対応するセグメントからこれらの変更を引き出し、テナント・データーに対してこれらをコミットする。
【００２６】
[0031]  しかしながら、ブロック２２８において、対応するセグメントにはこのテナントに対してそれ以上変更がないと判定した場合、テナント・ストリーム・プロセッサーは、通知ストリーム・ジェネレーター１０８に、そのテナント変更を完了し、同じまたは異なるテナントに対する変更をコミットするために他の通知を待つことを指示する。一実施形態では、テナント・ストリーム・プロセッサー１１２〜１１４は、ブックマークを解放するまたは通知ストリーム・ジェネレーター１０８に戻すことによって、これを行うことができる。これは、図４の流れ図ではブロック２３０によって示されている。
【００２７】
[0032]  このように、通知ストリーム・ジェネレーター１０８は、テナント毎に同期ストリーム（またはテナント・ストリーム）生成できることがわかる。これは、オンボーディング（onboarding)アクティビティ（新たなユーザーをクラウド・ベース・システムに追加する等）および他のアクティビティのために、サーバーの数を増やして対応する(scale out)方法を可能にする。このシステムは、別個のテナント・ストリームを処理することができるサーバーまたはサーバー・インスタンスの数によってのみ制限されるに過ぎないので、大量のテナントの必要性に応じるために規模を調整することができる。ストリームは、異なるサーバーまたはサーバー・インスタンスによって独立して実行されるので、追加のテナント・ストリームのために、必要に応じて追加のサーバーまたはサーバー・インスタンスを呼び出すことができる。これは、異なる機械にまたがって異なるテナントを広げるためのオンボーディング・アクティビティを可能にする。
【００２８】
[0033]  通知ストリーム・ジェネレーター１０８は、いつテナントが変更したかをテナント・ストリーム・プロセッサーに通知するだけで、システムが動的に規模を調整することを可能にする。通常、これは、いずれの所与の時点においても、クラウド・ベース・システムにアクセスするテナントの集合全体と比較すると、小さな１組のテナントである。これは全体的なレイテンシを低減する。何故なら、各テナント・ストリーム・プロセッサーは、変更を受け取って入手可能になるに連れて、変更を処理するからである。また、これは自動規模調整も促進する。何故なら、いずれの新たなサーバーまたはサーバー・インスタンスであっても、これらがオンラインになると直ちに、テナント変更を行うために通知ストリーム・ジェネレーター１０８がこれらを使用することが可能になるからである。これは、多数の個々のテナント毎のデーター・パイプに相当し、１つのテナントがシステムを使いすぎて他のテナントに処理能力不足を感知させる可能性がある１本の太いパイプにはならない。１つのサーバーまたはサーバー・インスタンスが、ボトルネックまたは障害点として作用することはない。加えて、通知ストリーム・ジェネレーター１０８は、テナント・ストリーム・プロセッサー１１２〜１１４に、１つ１つのオブジェクト変更を列挙せずに、変更が行われる予定であることを通知する。代わりに、テナント毎に変更をセグメントに組み分ける。これも処理能力を向上させる。
【００２９】
[0034]  本論述では、プロセッサーおよびサーバーについて述べた。一実施形態では、プロセッサーおよびサーバーは、別々には示されていないメモリーおよびタイミング回路が付随するコンピューター・プロセッサーを含む。これらは、これらが属しそして有効化されるシステムまたはデバイスの機能部分であり、これらのシステムにおける他のコンポーネントまたは単位体(item)の機能を行い易くする。
【００３０】
[0035]  また、多数のユーザー・インターフェース・ディスプレイについても論じた。これらは、多種多様の異なる形態を取ることができ、多種多様の異なるユーザー作動可能な入力メカニズムをそこに配置することができる。例えば、ユーザー作動可能な入力メカニズムは、テキスト・ボックス、チェック・ボックス、アイコン、リンク、ドロップダウン・メニュー、検索ボックス等とすることができる。また、これらを多種多様の異なる方法で作動させることもできる。例えば、ポイントおよびクリック・デバイス（トラック・ボールまたはマウス等）を使用してこれらを作動させることができる。ハードウェア・ボタン、スイッチ、ジョイスティックまたはキーボード、サム・スイッチまたはサム・パッド等を使用してこれらを作動させることができる。更に、仮想キーボードまたは他の仮想アクチュエータを使用してこれらを作動させることもできる。加えて、これらが表示される画面がタッチ感応画面である場合、タッチ・ジェスチャを使用してこれらを作動させることができる。また、これらを表示するデバイスが音声認識コンポーネントを有する場合、音声コマンドを使用してこれらを作動させることができる。
【００３１】
[0036]  また、多数のデーター・ストアについても論じた。これらは各々複数のデーター・ストアに分けられることに留意されたい。全ては、これらにアクセスするシステムに対してローカルであることができ、全てがリモートであることができ、または一部がローカルであり、他がリモートであることもできる。これらの構成の全ては、本明細書において考えられる範囲内である。
【００３２】
[0037]  また、図は、各ブロックに帰せられる機能を有する多数のブロックを示す。尚、それよりも少ないコンポーネントによってその機能が実行されるように、それよりも少ないブロックを使用できることに留意されたい。また、もっと多くのブロックを使用して、もっと多くのコンポーネントに機能を分散することもできる。
【００３３】
[0038]  図４は、システム１０２を実現することができるマルチテナント・クラウド・アーキテクチャ１２４（クラウド１２４）の更に詳細な実施形態を示すブロック図である。図４は、他のクラウド処理系コンポーネント１２２（図１に示す）の一例を更に詳細に示す。
【００３４】
[0039]  クラウド・コンピューティング(cloud computing)は、サービスを配信するシステムの物理位置や構成をエンド・ユーザーが知る必要なく、計算、ソフトウェア、データー・アクセス、およびストレージ・サービスを提供する。種々の実施形態では、クラウド・コンピューティングは、適したプロトコルを使用して、インターネットのようなワイド・エリア・ネットワークを通じてサービスを配信する。例えば、クラウド・コンピューティング・プロバイダーは、ワイド・エリア・ネットワークを通じてアプリケーションを配信し、これらにはウェブ・ブラウザーまたは任意の他の計算コンポーネントによってアクセスすることができる。アーキテクチャ１００のソフトウェアまたはコンポーネント、および対応するデーターは、遠隔地にあるサーバー上に格納することができる。クラウド・コンピューティング環境における計算リソースは、リモート・データー・センターの場所に統合することができ、またはこれらを散在させることができる。クラウド・コンピューティング・インフラストラクチャは、共有データー・センターを介してサービスを配信することができるが、これらはユーザーには１つのアクセス・ポイントのように見える。つまり、本明細書において説明するコンポーネントおよび機能は、クラウド・コンピューティング・アーキテクチャを使用して、遠隔地にあるサービス・プロバイダから提供することができる。代わりに、これらを従来のサーバーから提供することもでき、あるいはクライアント・デバイス上に直接インストールすることも、または他の方法でインストールすることもできる。
【００３５】
[0040]  この説明は、パブリック・クラウド・コンピューティングおよびプライベート・クラウド・コンピューティングの双方を含むことを意図している。クラウド・コンピューティング（パブリックおよびプライベート双方）は、実質的に継ぎ目のないリソースのプーリング(pooling)を提供し、更に基礎となるハードウェア・インフラストラクチャを管理および構成する必要性の低減にも備える。
【００３６】
[0041]  パブリック・クラウドは、ベンダーによって管理され、通例、同じインフラストラクチャを使用して複数の消費者をサポートする。また、パブリック・クラウドは、プライベート・クラウドとは逆に、ハードウェアの管理からエンド・ユーザーを解放することができる。プライベート・クラウドは、組織自体によって管理することができ、インフラストラクチャは他の組織とは共有されないのが通例である。更に、組織は、設置および修理等のように、ある程度ハードウェアの保守も行う。
【００３７】
[0042]  図４は、システム１０２におけるコンポーネント１２２が、実例として、仮想化システム１２６、インフラストラクチャ・コンポーネント１２８、アプリケーション・プラットフォーム・コンポーネント１３０、およびアプリケーション・ソフトウェア・コンポーネント１３２を含むことを示す。インフラストラクチャ・コンポーネント１２８は、セキュリティ・コンポーネント１３４、ハードウェア／ソフトウェア・インフラストラクチャ１３６、サーバー１３８、負荷分散コンポーネント１４０、ネットワーク・コンポーネント１４２を含むことができ、他のコンポーネント１４４も含むことができる。
【００３８】
[0043]  アプリケーション・プラットフォーム・コンポーネント１３０は、実行ランタイム・コンポーネント１４６、オペレーティング・システム・コンポーネント１４８、データーベース・コンポーネント１５０、ウェブ・サーバー・コンポーネント１５２を含むことができ、他のコンポーネント１５４も含むことができる。アプリケーション・ソフトウェア・コンポーネント１３２は、実例として、ユーザー・インターフェース・コンポーネント１５６、アプリケーション・ワークフロー１５８、アプリケーション・ロジック１６０、データーベース・システム１６２を含み、他の単位体１６４を含むことができる。
【００３９】
[0044]  アーキテクチャ１２４によって実現されるマルチテナント機能のレベルに応じて、仮想化システム１２６は物理計算デバイス・コンポーネント１２２を１つ以上の仮想デバイスに電子的に分ける。これらのデバイスの各々は、計算タスクを実行するために使用し管理することができる。
【００４０】
[0045]  マルチテナント・クラウド・コンピューティング・アーキテクチャ１２４は、多数の異なるモデルにしたがって、多数の異なるレベルでサービスを提供することができる。例えば、これらは、とりわけ、サービスとしてのインフラストラクチャ（ＩａａＳ）、サービスとしてのプラットフォーム（ＰａａＳ）、およびサービスとしてのソフトウェア（ＳａａＳ）を含むことができる。ＩａａＳは最も基本的であり、それよりも高いレベルのモデル（それぞれＰａａＳおよびＳａａＳ）の各々が、それよりも低いモデルの詳細を抜き取る(abstract from)。
【００４１】
[0046]  ＩａａＳでは、物理または仮想機械が、他のリソースと共に提供される。監視コンポーネント(supervisory component)（ハイパーバイザーと呼ばれることもある）が仮想機械を実行する。比較的多数の仮想機械を実行し、種々のテナントの必要性に応じて規模を拡大および縮小するために、複数の異なるハイパーバイザーを使用することができる。また、ＩａａＳモデルは、要求に応じて追加のリソース（他のインフラストラクチャ・コンポーネント１２８等）も提供することができる。テナントがそのアプリケーションを展開するために、これらはオペレーティング・システム・イメージおよびそのアプリケーション・ソフトウェアをクラウド・インフラストラクチャ・コンポーネント１２８上にインストールする。そして、テナントは、オペレーティング・システムおよびアプリケーション・ソフトウェアを維持することを責務とする。
【００４２】
[0047]  ＰａａＳは、アプリケーション・プラットフォーム・コンポーネント１３０をサービスとして提供するクラウド・アーキテクチャ１２４を含む(involve)。アプリケーション開発者は、基礎のハードウェアおよびソフトウェア・レイヤを管理する必要なく、クラウド・プラットフォーム・コンポーネント１３０上で彼らのソフトウェアを開発し実行することができる。
【００４３】
[0048]  ＳａａＳは、アプリケーション・コンポーネント１３２におけるアプリケーション・ソフトウェアおよびデーターベースへのアクセスを与えるアーキテクチャ１２４を含む。クラウド・アーキテクチャ１２４は、インフラストラクチャ・コンポーネント１２８、およびアプリケーションを実行するプラットフォーム・コンポーネント１３０を管理する。また、クラウド１２４はアプリケーション・ソフトウェアをアプリケーション・コンポーネント１３２にインストールして動作させ、テナントはこのソフトウェアにアクセスするが、クラウド・インフラストラクチャ・コンポーネント１２８も、アプリケーションが実行するプラットフォーム・コンポーネント１３０も管理しない。このような実施態様では、仮想化システム１２６が、変化する作業負荷に応ずるために、ランタイムにおいて複数の仮想機械を提供する。負荷分散装置(load balancer)はこれらの仮想機械にわたって作業を分散する。このプロセスは、多くの場合、アプリケーションへの１つのアクセス・ポイントだけを見るテナントに対して透過的である。
【００４４】
[0049]  マルチテナント環境では、いずれの機械も、テナント・システム１０４〜１０６を展開する１つよりも多いユーザー組織にサービス供与する(serve)ことができる。しかしながら、マルチテナント機能は、クラウド・アーキテクチャの３つのレイヤ（ＩａａＳ、ＰａａＳ、およびＳａａＳ）の全てに適用することができる。正確なマルチテナント機能の度合いは、コア・アプリケーション（またはアプリケーション・コンポーネント１３２）の内どの位がテナント１０４〜１０６にわたって共有されるように設計されているかに基づくことができる。マルチテナント機能の度合いが比較的高いと、データーベース方式(database schema)を共有することが可能であり、業務ロジック(business logic)、ワークフロー、およびユーザー・インターフェース・レイヤーのカスタム化をサポートする。比較的低い度合いのマルチテナント機能では、ＩａａＳおよびＰａａＳコンポーネント１２８および１３０が、それぞれ、各テナントに専用である専用仮想化コンポーネントを有するアプリケーション・コンポーネント１３２によって共有される。
【００４５】
[0050]  以上の論述は、サービスとしてのソフトウェアを提供するクラウド・ベース・マルチテナント・サービス・システム１０２に関して進めてきた。したがって、仮想化システム１２６は、各テナント１０４〜１０６に、それら自体の安全で別々の仮想計算環境をアプリケーション・ソフトウェア・レベル上で提供するために、別々の仮想機械を設ける。つまり、各テナント１０４〜１０６は、それら自体のアプリケーション（それら自体の電子メール・アプリケーション、文書管理アプリケーション、業務システム等のようなアプリケーション）に対する変更を行うことができる。図１〜図３に関して以上で説明したように行われるとき、これらは、他のテナントによって観察される(observe)処理能力に影響を及ぼすことなく、そのようにすることができる。
【００４６】
[0051]  また、システム１０２のあるエレメントをクラウド内に配置することができるが、他のエレメントは配置されないことも考えられる。一例として、データーベースおよびデーター・ストアをクラウド１２４の外側に配置し、クラウド１２４を介してアクセスすることができる。他の例では、他のコンポーネントがクラウド１２４の外側にあることも可能である。これらがどこに位置するかには関係なく、テナント・システム１０４〜１０６におけるデバイスによって、ネットワーク３００（ワイド・エリア・ネットワークまたはローカル・エリア・ネットワーク）を通じてこれらに直接アクセスすることができ、遠隔地(remote site)におけるサービスによってこれらをホストすることができ、あるいはクラウドを介してサービスとして提供し、クラウド内に存在する接続サービスによってアクセスすることができる。これらのアーキテクチャは全て、本明細書において考えられる範囲内である。
【００４７】
[0052]  また、アーキテクチャ１００またはその部分を多種多様の異なるデバイス上に配置できることにも留意されたい。これらのデバイスの一部には、サーバー、デスクトップ・コンピューター、ラップトップ・コンピューター、タブレット・コンピューター、またはパーム・トップ・コンピューター、セル・フォン、スマート・フォン、マルチメディア・プレーヤー、パーソナル・ディジタル・アシスタント等のような他の移動体デバイスが含まれる。
【００４８】
[0053]  図５は、本システム（またはその部分）を展開することができるユーザーまたはクライアントのハンドヘルド・デバイス１６として使用することができる、ハンドヘルドまたは移動体計算デバイスの一例の簡略ブロック図である。図６および図７はハンドヘルドまたは移動体デバイスの例である。
【００４９】
[0054]  図５は、システム１００のコンポーネントまたはテナント１０４〜１０６を実行することができる、あるいはアーキテクチャ１００とインターフェースする、あるいは双方が可能なクライアント・デバイス１６のコンポーネントの全体的なブロック図である。デバイス１６において、ハンドヘルド・デバイスが他の計算デバイスと通信することを可能にし、ある実施形態ではスキャニングによってというように、情報を自動的に受信するためのチャネルを提供する通信リンク１３が設けられている。通信リンク１３の例には、赤外線ポート、シリアル／ＵＳＢポート、イーサネット（登録商標）・ポートのようなケーブル・ネットワーク・ポート、および１つ以上の通信プロトコルによる通信を可能にするワイヤレス・ネットワーク・ポートが含まれる。通信プロトコルには、汎用パケット無線サービス（ＧＰＲＳ）、ＬＴＥ、ＨＳＰＡ、ＨＳＰＡ＋ならびに３Ｇおよび４Ｇ無線プロトコル、ＩＸｒｔｔ、更にはショート・メッセージ・サービスが含まれる。これらは、ネットワークへのセルラ・アクセスを与えるために使用されるワイヤレス・サービス、ならびにネットワークへのローカル・ワイヤレス接続を提供するＷｉ−Ｆｉプロトコル、およびＢｌｕｅｔｏｏｔｈプロトコルである。
【００５０】
[0055]  他の実施形態の下では、ＳＤカード・インターフェース１５に接続されたリムーバブル・セキュア・ディジタル（ＳＤ）カードにおいてアプリケーションまたはシステムが受け取られる。ＳＤカード・インターフェース１５および通信リンク１３は、バス１９に沿ってプロセッサー１７（他の図において先に説明したプロセッサーまたはサーバーも具体化することができる）と通信し、バス１９は、メモリー２１および入力／出力（Ｉ／Ｏ）コンポーネント２３、ならびにクロック２５およびロケーション・システム２７にも接続されている。
【００５１】
[0056]  Ｉ／Ｏコンポーネント２３は、一実施形態では、入力および出力動作を容易にするために設けられる。デバイス１６の種々の実施形態のためのＩ／Ｏコンポーネント２３は、ボタン、タッチ・センサー、多重タッチ・センサー、光またはビデオ・センサ、音声センサ、タッチ・スクリーン、近接センサ、マイクロフォン、傾きセンサ、および重力スイッチのような入力コンポーネント、ならびにディスプレイ・デバイス、スピーカー、および／またはプリンター・ポートのような出力コンポーネントを含むことができる。他のＩ／Ｏコンポーネント２３も同様に使用することができる。
【００５２】
[0057]  クロック２５は、実例として、時刻および日にちを出力するリアル・タイム・クロック・コンポーネントを含む。また、実例として、プロセッサー１７にタイミング機能を与えることができる。
【００５３】
[0058]  ロケーション・システム２７は、実例として、デバイス１６の現在の地理的位置を出力するコンポーネントを含む。これは、例えば、全地球測位システム（ＧＳＰ）受信機、ＬＯＲＡＮシステム、推測航法システム、セルラ三角測量システム、または他の測位システムを含むことができる。また、これは、例えば、所望の地図、ナビゲーション経路、および他の地理的機能を生成する地図作成ソフトウェアまたはナビゲーション・ソフトウェアも含むことができる。
【００５４】
[0059]  メモリー２１は、オペレーティング・システム２９、ネットワーク設定３１、アプリケーション３３、アプリケーション・コンフィギュレーション設定３５、データー・ストア３７、通信ドライバー３９、および通信コンフィギュレーション設定４１を格納する。メモリー２１は、全てのタイプの有形揮発性および不揮発性コンピューター読み取り可能メモリー・デバイスを含むことができる。また、これはコンピューター記憶媒体（以下で説明する）も含むことができる。メモリー２１は、コンピューター読み取り可能命令を格納し、プロセッサー１７によってこのコンピューター読み取り可能命令が実行されると、このプロセッサーに、命令にしたがってコンピューター実装ステップまたは機能を実行させる。同様に、デバイス１６は、クライアント業務システム２４を有することができ、クライアント業務システム２４は種々の業務用アプリケーションを実行すること、あるいはテナント・システム１０４〜１０６の一部または全部を具体化することができる。プロセッサー１７は、他のコンポーネントによって、それらの機能も同様にやり易くするために、有効化することができる。
【００５５】
[0060]  ネットワーク設定３１の例には、プロキシー情報、インターネット接続情報、およびマッピングのようなものが含まれる。アプリケーション・コンフィギュレーション設定３５は、特定の企業またはユーザーに合わせてアプリケーションを改造する(tailor)設定を含む。通信コンフィギュレーション設定４１は、他のコンピューターと通信するためのパラメーターを提供し、ＧＰＲＳパラメーター、ＳＭＳパラメーター、接続ユーザー名およびパスワードのような項目を含む。
【００５６】
[0061]  アプリケーション３３は、デバイス１６上に既に格納されているアプリケーション、または使用中にインストールされたアプリケーションであることが可能であるが、これらはオペレーティング・システム２９の一部であること、またはデバイス１６の外部でホストされることも同様に可能である。
【００５７】
[0062]  図６は、デバイス１６がタブレット・コンピューター６００である一例を示す。図６において、コンピューター６００は、ユーザー・インターフェース表示画面６０２と共に示されている。画面６０２は、タッチ・スクリーン（したがって、ユーザーの指からのタッチ・ジェスチャを使用してアプリケーションと対話処理することができる）、あるいはペンまたはスタイラスからの入力を受け取るペン対応インターフェースとすることができる。また、これは画面上の仮想キーボードを使用することもできる。勿論、例えば、ワイヤレス・リンクまたはＵＳＢポートのような適した取り付けメカニズムを介して、これをキーボードまたは他のユーザー入力デバイスに取り付けてもよい。また、実例として、コンピューター６００は音声入力を受け取ることもできる。
【００５８】
[0063]  デバイス１６の更に他の例も同様に使用することができる。これらは、フィーチャー・フォン、スマート・フォン、または移動体電話機を含むことができる。この電話機は、電話番号を入力する(dialing)ための１組のキーパッド、アプリケーション画像、アイコン、ウェブ・ページ、写真、およびビデオを含む画像を表示することができるディスプレイ、ならびにディスプレイ上に示される項目を選択するための制御ボタンを含むことができる。この電話機は、汎用パケット無線サービス（ＧＰＲＳ）およびＩＸｒｔｔ、ならびにショート・メッセージ・サービス（ＳＭＳ）信号のような、セルラ・フォン信号を受信するためのアンテナを含むことができる。ある実施形態では、電話機はＳＤカードを受け入れるセキュア・デジタル（ＳＤ）カード・スロットを含むこともできる。
【００５９】
[0064]  また、移動体デバイスは、パーソナル・ディジタル・アシスタント（ＰＤＡ）、またはマルチメディア・プレーヤー、またはタブレット計算デバイス等（以後ＰＤＡと呼ぶ）であることも可能である。ＰＤＡは、誘導性画面を含むことができる。誘導性画面は、スタイラスがこの画面の上方に位置付けられると、スタイラス（またはユーザーの指のような他のポインター）の位置を検知する。これによって、ユーザーは画面上で項目を選択する、強調する、移動させることができ、更に描画および記入することができる。また、ＰＤＡは多数のユーザー入力キーまたはボタンも含むことができ、これらは、ディスプレイに接触することなく、ディスプレイ上に表示されるメニュー選択肢または他の表示選択肢全域をユーザーがスクロールすること、更にユーザーがアプリケーションを変更することまたはユーザー入力機能を選択することを可能にする。ＰＤＡは、他のコンピューターとのワイヤレス通信を可能にする内部アンテナおよび赤外線送信機／受信機、ならびに他の計算デバイスへのハードウェア接続を可能にする接続ポートを含むことができる。このようなハードウェア接続は、通例、シリアルまたはＵＳＢポートを介して他のコンピューターに接続するクレードルを介して行われる。したがって、これらの接続はネットワーク外(non-network)接続である。
【００６０】
[0065]  図７は、スマート・フォン７１を示す。スマート・フォン７１は、アイコンまたはタイルあるいは他のユーザー入力メカニズム７５を表示するタッチ感応ディスプレイ７３を有する。メカニズム７５は、アプリケーションを実行する、通話する、データー転送動作を実行する等のためにユーザーによって使用することができる。一般に、スマート・フォン７１は、移動体オペレーティング・システム上に構築され、フィーチャー・フォンよりも進んだ計算能力および接続機能(connectivity)を提供する。
【００６１】
[0066]  尚、デバイス１６の他の形態も可能であることを注記しておく。
[0067]  図８は、アーキテクチャ１００、またはその一部（例えば）を展開することができる計算環境の一例である。図８を参照すると、いくつかの実施形態を実現するためのシステム例は、コンピューター８１０の形態とした汎用計算デバイスを含む。コンピューター８１０のコンポーネントは、処理ユニット８２０（以上で論じたプロセッサーまたはサーバーを構成することができる）、システム・メモリー８３０、およびシステム・バス８２１を含むことができるが、これらに限定されるのではない。システム・バス８２１は、システム・メモリーから処理ユニット８２０までを含む種々のシステム・コンポーネントを結合する。システム・バス８２１は、メモリー・バスまたはメモリー・コントローラ、周辺バス、および種々のバス・アーキテクチャの内任意のものを使用するローカル・バスを含む、様々なタイプのバス構造の内任意のものとすることができる。一例として、そして限定ではなく、このようなアーキテクチャは、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ電子規格連合（ＶＥＳＡ）ローカル・バス、およびMezzanineバスとしても知られる周辺コンポーネント相互接続（ＰＣＩ）バスを含む。図１に関して説明したメモリーおよびプログラムは、図８の対応する部分に展開することができる。
【００６２】
[0068]  コンピューター８１０は、通例、種々のコンピューター読み取り可能媒体を含む。コンピューター読み取り可能媒体は、コンピューター８１０によってアクセスすることができる任意の入手可能な媒体とすることができ、揮発性および不揮発性双方の媒体、ならびにリムーバブルおよび非リムーバブル媒体を含む。一例として、そして限定ではなく、コンピューター読み取り可能媒体は、コンピューター記憶媒体および通信媒体を含むことができる。コンピューター記憶媒体は、変調データー信号または搬送波とは異なり、これを含まない。これは、揮発性および不揮発性双方の、リムーバブルおよび非リムーバブル媒体を含むハードウェア記憶媒体を含み、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、または他のデーターというような情報の格納のための任意の方法または技術で実現される。コンピューター記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリーまたは他のメモリー技術、ＣＤ−ＲＯＭ、ディジタル・バーサタイル・ディスク（ＤＶＤ）または他の光ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージまたは他の磁気記憶デバイス、または所望の情報を格納するために使用することができそしてコンピューター８１０によってアクセスすることができる他のあらゆる媒体を含むが、これらに限定されるのではない。通信媒体は、通例、コンピューター読み取り可能命令、データー構造、プログラム・モジュール、またはその他のデーターを移送メカニズム内に具体化し、任意の情報配信媒体を含む。「変調データー信号」という用語は、その信号内に情報をエンコードするような方法で、その特性の１つ以上が設定または変更された信号を意味する。一例として、そして限定ではなく、通信媒体は、有線ネットワークまたは直接有線接続というような有線媒体と、音響、ＲＦ、赤外線、および他のワイヤレス媒体というようなワイヤレス媒体とを含む。以上の内任意のものの組み合わせも、コンピューター読み取り可能媒体の範囲に含まれてしかるべきである。
【００６３】
[0069]  システム・メモリー８３０は、リード・オンリー・メモリー（ＲＯＭ）８３１およびランダム・アクセス・メモリー（ＲＡＭ）８３２のような、揮発性および／または不揮発性メモリーの形態としたコンピューター記憶媒体を含む。基本入力／出力システム８３３（ＢＩＯＳ）は、起動中におけるように、コンピューター８１０内部にあるエレメント間で情報を転送するのに役立つ基本的なルーチンを含み、通例ＲＯＭ８３１に格納される。ＲＡＭ８３２は、通例、処理ユニット８２０によって直ちにアクセス可能なデーターおよび／またはプログラム・モジュール、および／または現在処理ユニット８２０によって処理されているデーターおよび／またはプログラム・モジュールを含む。一例として、そして限定ではなく、図８は、オペレーティング・システム８３４、アプリケーション・プログラム８３５、他のプログラム・モジュール８３６およびプログラム・データー８３７を示す。
【００６４】
[0070]  また、コンピューター８１０は、他のリムーバブル／非リムーバブル、揮発性／不揮発性コンピューター記憶媒体も含むことができる。一例としてに過ぎないが、図８は、非リムーバブル、不揮発性磁気媒体に対して読み取りまたは書き込みを行うハード・ディスク・ドライブ８４１、およびＣＤ−ＲＯＭまたは他の光媒体のようなリムーバブル、不揮発性光ディスク８５６に対して読み取りまたは書き込みを行う光ディスク・ドライブ８５５を示す。この動作環境例において使用することができる他のリムーバブル／非リムーバブル、揮発性／不揮発性コンピューター記憶媒体には、磁気テープ・カセット、フラッシュ・メモリー・カード、ディジタル・バーサタイル・ディスク、ディジタル・ビデオ・テープ、ソリッド・ステートＲＡＭ、ソリッド・ステートＲＯＭ等が含まれるが、これらに限定されるのではない。ハード・ディスク・ドライブ８４１は、通例、インターフェース８４０のような非リムーバブル・メモリー・インターフェースを介してシステム・バス８２１に接続され、光ディスク・ドライブ８５５は、通例、インターフェース８５０のようなリムーバブル・メモリー・インターフェースによってシステム・バス８２１に接続される。
【００６５】
[0071]  代わりに、または加えて、本明細書において説明した機能は、少なくとも部分的に、１つ以上のハードウェア・ロジック・コンポーネントによって実行することもできる。例えば、そして限定ではなく、使用することができる例示的なタイプのハードウェア・ロジック・コンポーネントには、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、特定プログラム集積回路（ＡＳＩＣ）、特定プログラム標準製品（ＡＳＳＰ）、システム・オン・チップ・システム（ＳＯＣ）、複合プログラマブル・ロジック・デバイス（ＣＰＬＤ）等を含むことができる。
【００６６】
[0072]  以上で論じ図８に示すこれらのドライブおよびそれに関連するコンピューター記憶媒体は、コンピューター８１０のためのコンピューター読み取り可能命令、データー構造、プログラム・モジュール、および他のデーターの格納を行う。図８では、例えば、ハード・ディスク・ドライブ８４１は、オペレーティング・システム８４４、アプリケーション・プログラム８４５、他のプログラム・モジュール８４６、およびプログラム・データー８４７を格納することが示される。尚、これらのコンポーネントは、オペレーティング・システム８３４、アプリケーション・プログラム８３５、他のプログラム・モジュール８３６、およびプログラム・データー８３７と同一であること、または異なることもできる。オペレーティング・システム８４４、アプリケーション・プログラム８４５、他のプログラム・モジュール８４６、およびプログラム・データー８４７は、ここでは、少なくともこれらが異なるコピーであることを示すために、異なる番号が与えられている。
【００６７】
[0073]  ユーザーは、キーボード８６２、マイクロフォン８６３、およびマウス、トラックボール、またはタッチ・パッドのようなポインティング・デバイス８６１というような入力デバイスによって、コマンドおよび情報をコンピューター８１０に入力することができる。他の入力デバイス（図示せず）には、ジョイスティック、ゲーム・パッド、衛星ディッシュ、スキャナー等を含むことができる。これらおよび他の入力デバイスは、多くの場合、ユーザー入力インターフェース８６０を介して処理ユニット８２０に接続される。ユーザー入力インターフェース８６０は、システム・バスに結合されるが、パラレル・ポート、ゲーム・ポート、またはユニバーサル・シリアル・バス（ＵＳＢ）のような他のインターフェースおよびバス構造によって接続されてもよい。視覚ディスプレイ８９１または他のタイプのディスプレイ・デバイスも、ビデオ・インターフェース８９０のようなインターフェースを介して、システム・バス８２１に接続される。モニターに加えて、コンピューターは、スピーカー８９７およびプリンター８９６のような他の周辺出力デバイスも含むことができ、これらは出力周辺インターフェース８９５を介して接続することができる。
【００６８】
[0074]  コンピューター８１０は、リモート・コンピューター８８０のような１つ以上のリモート・コンピューターへの論理接続を使用して、ネットワーク接続環境 (networked environment)において動作することもできる。リモート・コンピューター８８０は、パーソナル・コンピューター、ハンドヘルド・デバイス、サーバー、ルーター、ネットワークＰＣ、ピア・デバイス、または他の一般的なネットワーク・ノードであってよく、通例、コンピューター８１０に関して先に説明したエレメントの多くまたは全部を含む。図８に示す論理接続は、ローカル・エリア・ネットワーク（ＬＡＮ）８７１およびワイド・エリア・ネットワーク（ＷＡＮ）８７３を含むが、他のネットワークを含むこともできる。このようなネットワーキング環境は、事務所、企業規模のコンピューター・ネットワーク、イントラネット、およびインターネットでは極普通である。
【００６９】
[0075]  ＬＡＮネットワーキング環境において使用される場合、コンピューター８１０は、ネットワーク・インターフェースまたはアダプター８７０を介してＬＡＮ８７１に接続することができる。ＷＡＮネットワーキング環境において使用される場合、コンピューター８１０は、通例、インターネットのようなＷＡＮ８７３を介して通信を行うモデム８７２または他の手段を含む。モデム８７２は、内蔵型でも外付けでもよく、ユーザー入力インターフェース８６０または他のしかるべきメカニズムを介してシステム・バス８２１に接続することができる。ネットワーク接続環境では、コンピューター８１０に関して図示したプログラム・モジュールまたはその一部が、リモート・メモリー記憶デバイスに格納されてもよい。一例として、そして限定ではなく、図８は、リモート・アプリケーション・プログラム８８５を、リモート・コンピューター８８０上に存在するものとして示す。尚、図示したネットワーク接続は一例であり、コンピューター間に通信リンクを張る他の手段を使用してもよいことは認められよう。
【００７０】
[0076]  また、本明細書において説明した異なる実施形態を異なる方法で組み合わせることができることも注記してしかるべきである。即ち、１つ以上の実施形態の一部を１つ以上の他の実施形態の一部と組み合わせることができる。このことの全て(all of this)は、本明細書において考えられる範囲内である。
【００７１】
[0077]  例１は、コンピューター・システムであって、以下を含む。
[0078]  マルチテナント・システムにおける複数のサーバー・インスタンスであって、サーバー・インスタンスが、複数の異なるテナントにサービスし、各テナントが異なる組織に対応し対応するテナント・データーを有し、マルチテナント・システムにおけるサーバー・インスタンスが各テナントに対応するテナント・データーを他のテナントから分離する。
【００７２】
[0079]  複数の異なる要求元テナントの各々から１組の変更要求を受ける通知ストリーム・ジェネレーターであって、各組の変更要求が、要求元テナントに対応するテナント・データーに対する変更を示し、通知ストリーム・ジェネレーターが、要求元テナントから受けた各組の変更要求について異なるサーバー・インスタンスに通知し、通知を受けたサーバー・インスタンスが、通知を受けた１組の変更要求における全ての変更を行い終えるまで、各通知を受けたサーバー・インスタンスが通知ストリーム・ジェネレーターとの接続を維持し、その後この接続を解放する。
【００７３】
[0080]  例２は、任意のまたは全ての以前の例のコンピューター・システムであって、マルチテナント・システムがクラウド・ベース・システムである。
[0081]  例３は、任意のまたは全ての以前の例のコンピューター・システムであって、通知ストリーム・ジェネレーターが以下を含む。
【００７４】
[0082]  複数組の変更要求をテナント毎のセグメントに細分化する変更細分化コンポーネント。
[0083]  例４は、任意のまたは全ての以前の例のコンピューター・システムであって、通知ストリーム・ジェネレーターが以下を含む。
【００７５】
[0084]  保留変更ストアであって、変更細分化コンポーネントが、複数組の変更要求を、保留変更ストアにおけるテナント毎のセグメントに細分化する。
[0085]  例５は、任意のまたは全ての以前の例のコンピューター・システムであって、通知を受けたサーバー・インスタンスの各々が、通知された１組の変更要求に対応する所与のテナント毎セグメントから全ての変更が引き出され終えるまで、通知ストリーム・ジェネレーターとの接続を維持し、所与のテナント毎のセグメントから変更を引き出す。
【００７６】
[0086]  例６は、任意のまたは全ての以前の例のコンピューター・システムであって、 通知ストリーム・ジェネレーターが、保留変更ストアにおけるテナント毎のセグメントに対応するブックマークを各所与のサーバー・インスタンスに与えることによって、所与のサーバー・インスタンスに通知する。
【００７７】
[0087]  例７は、任意のまたは全ての以前の例のコンピューター・システムであって、所与のサーバー・インスタンスが、変更要求を引き出してこの変更要求行うときに、個々のサーバー・インスタンス毎に、リソース使用制約を強要する。
【００７８】
[0088]  例８は、任意のまたは全ての以前の例のコンピューター・システムであって、追加の要求元テナントから受けた変更要求の追加の１組毎に、通知ストリーム・ジェネレーターが、追加の１組の変更要求を処理することを、追加のサーバー・インスタンスに通知する。
【００７９】
[0089]  例９は、任意のまたは全ての以前の例のコンピューター・システムであって、サーバー・インスタンスの各々が以下を含む。
[0090]  別個の物理サーバー上に実装されたサーバー・インスタンス。
【００８０】
[0091]  例１０は、以下を含むコンピューター・システムである。
[0092]  複数の異なるテナントにサービス供与し、異なるテナントの各々毎に別個の分離されたテナント・データーを維持するマルチテナント・システムであって、このマルチテナント・システムが以下を含む。
【００８１】
[0093]  テナント・データーにおいてテナント変更を処理する複数の異なるサーバー。
[0094]  対応する要求元テナントからの複数組のテナント変更を受け取り、対応する１組のテナント変更を処理するために、複数の異なるサーバーから１つのサーバーを各要求元テナントに割り当てる通知ストリーム・ジェネレーターであって、サーバーが、通知ストリーム・ジェネレーターが他のテナントに対するテナント変更を処理するためにサーバーを割り当てる前に、当該サーバーが割り当てられた対応するテナントに対する１組のテナント変更における全てのテナント変更を処理する。
【００８２】
[0095]  例１１は、任意のまたは全ての以前の例のコンピューター・システムであって、複数の異なるサーバーが、複数の異なるサーバー・インスタンスを含む。
[0096]  例１２は、任意のまたは全ての以前の例のコンピューター・システムであって、通知ストリーム・ジェネレーターが以下を含む。
【００８３】
[0097]  複数組の変更要求をセグメントに細分化する変更細分化コンポーネントであって、各セグメントが１つの要求元テナントに対応する。
[0098]  例１３は、任意のまたは全ての以前の例のコンピューター・システムであって、要求元テナントに割り当てられたサーバーが、要求元テナントに対応するセグメントからテナント変更を引き出し、要求元テナントに対応するテナント・データーにおいてテナント変更を行い、セグメントからのテナント変更の全てが、要求元テナントに対応するテナント・データーに対して行われたときに、通知ストリーム・ジェネレーターに通知する。
【００８４】
[0099]  例１４は、任意のまたは全ての以前の例のコンピューター・システムであって、更に以下を含む。
[00100]  複数組のテナント変更を格納する保留変更ストア。
【００８５】
[00101]  例１５は、任意のまたは全ての以前の例のコンピューター・システムにおいて、変更細分化コンポーネントが、複数組のテナント変更を保留変更ストアにおいて細分化する。
【００８６】
[00102]  例１６は、任意のまたは全ての以前の例のコンピューター・システムにおいて、マルチテナント・システムがクラウド・コンピューティング・アーキテクチャにおいて実現される。
【００８７】
[00103]  例１７は、方法であって、以下のステップを含む。
[00104]  第１テナントから、マルチテナント・システムにおける第１テナントに対応する第１テナント・データーに対して要求された変更を示す第１組のテナント変更を受け取るステップ。
【００８８】
[00105]  第２テナントから、マルチテナント・システムにおける第２テナントに対応する第２テナント・データーに対して要求された変更を示す第２組のテナント変更を受け取るステップ。
【００８９】
[00106]  第１組のテナント変更のマルチテナント・システムにおける第１サーバーへの伝達のために第１排他的同期ストリームを形成するステップであって、第１サーバーが第１組のテナント変更における要求された変更の全てを行うまで、排他的同期ストリームが、第１組のテナント変更以外の他の組のテナント変更を伝達する同期ストリームを除外する。
【００９０】
[00107]  第２組のテナント変更のマルチテナント・システムにおける第２サーバーへの伝達のために第２排他的同期ストリームを形成するステップであって、第２サーバーが第２組のテナント変更における要求された変更の全てを行うまで、排他的同期ストリームが、第２組のテナント変更以外の、他の組のテナント変更を伝達する同期ストリームを除外する。
【００９１】
[00108]  例１８は、任意のまたは全ての以前の例の方法であって、更に以下のステップを含む。
[00109]  通知ストリーム・ジェネレーターによって、第１セグメントにおける第１組のテナント変更を保留変更データー・ストアに格納するステップであって、第１セグメントが第１テナントのみに対するテナント変更を含む。
【００９２】
[00110]  通知ストリーム・ジェネレーターによって、第２セグメントにおける第２組のテナント変更を保留変更データー・ストアに格納するステップであって、第２セグメントが第２テナントのみに対するテナント変更を含む。
【００９３】
[00111]  例１９は、任意のまたは全ての以前の例の方法において、第１排他的同期ストリームを形成するステップが以下のステップを含む。
[00112]  第１組のテナント変更によって示される、第１テナントから受けた変更要求(requested changes)の全てを第１サーバーが行うまで、第１サーバーと通知ストリーム・ジェネレーターとの間に第１接続を維持し、その後、他のテナントに対する追加組のテナント変更を第１サーバーに通知できるように、第１サーバーを第１接続から解放するステップ。
【００９４】
[00113]  例２０は、任意のまたは全ての以前の例の方法において、第２排他的同期ストリームを形成するステップが以下のステップを含む。
[00114]  第２組のテナント変更によって示される、第２テナントから受けた変更要求(requested changes)の全てを第２サーバーが行うまで、第２サーバーと通知ストリーム・ジェネレーターとの間に第２接続を維持し、その後、他のテナントに対する追加組のテナント変更を第２サーバーに通知できるように、第２サーバーを第２接続から解放するステップ。
【００９５】
[00115]  以上、構造的特徴および／または方法論的アクトに特定的な文言で本主題について説明したが、添付する特許請求の範囲において定められる主題は、必ずしも以上で説明した具体的な特徴やアクトには限定されないことは理解されよう。逆に、以上で説明した具体的な特徴およびアクトは、特許請求の範囲を実現する形態例として開示されたまでである。
【図１】
0006719445.tif 000002
【図２】
0006719445.tif 000003
【図３】
0006719445.tif 000004
【図４】
0006719445.tif 000005
【図５】
0006719445.tif 000006
【図６】
0006719445.tif 000007
【図７】
0006719445.tif 000008
【図８】
0006719445.tif 000009