詳細な説明
以下の記載では、説明の目的のため、多数の具体的な詳細が、本発明のさまざまな局面の十分な理解を与えるために述べられる。しかしながら、当業者には、本発明の局面はこれらの具体的な詳細のいくつかがなくても実施され得ることが理解される。他の例では、周知の構造および装置がブロック図形式で示される。
具体的な詳細が、以下の説明において、局面を十分に理解できるように与えられる。しかしながら、当業者には、局面はこれらの具体的な詳細なしに実施され得ることが理解される。たとえば、回路、システム、ネットワーク、プロセスおよび他のコンポーネントは、不必要な詳細で局面を曖昧にしないように、ブロック図形式のコンポーネントとして示され得る。他の例では、周知の回路、プロセス、アルゴリズム、構造および技術は、局面を曖昧にすることを回避するために、不必要な詳細を述べることなく示され得る。
さらに、個々の局面は、フローチャート、フロー図、データフロー図、構造図またはブロック図として示されるプロセスとして記載され得ることが注記される。フローチャートは動作を連続的なプロセスとして記載するかもしれないが、動作の多くは並列または同時に実行され得る。加えて、動作の順序は再構成されてもよい。プロセスは、その動作が完了されるときに終結されるが、図に含まれない追加のステップを含み得る。プロセスは、方法、関数、手順、サブルーチン、サブプログラムなどに対応し得る。プロセスが関数に対応する場合では、その終結は、その関数が呼出し関数または主関数に戻ることに対応し得る。
「機械読取可能記憶媒体」という語は、命令および/またはデータを記憶するか、含むか、または担持することができるポータブルまたは非ポータブルの記憶装置、光記憶装置、およびさまざまな他の媒体を含むが、それらに限定はされない。機械読取可能媒体は、データが記憶可能であり、無線または有線接続を介して伝搬する搬送波および/または一時的な電子信号を含まない、非一時的な媒体を含んでもよい。非一時的な媒体の例は、磁気ディスクもしくはテープ、コンパクトディスク(CD)もしくはデジタル多用途ディスク(DVD)などの光記憶媒体、フラッシュメモリ、メモリまたはメモリデバイスを含んでもよいが、それらに限定はされない。コンピュータプログラムプロダクトは、手順、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または命令、データ構造もしくはプログラムステートメントの任意の組合せを表現し得る、コードおよび/または機械実行可能命令を含んでもよい。コードセグメントは、情報、データ、引数、パラメータ、またはメモリコンテンツを渡す、および/または受取ることによって、別のコードセグメントまたはハードウェア回路に結合されてもよい。情報、引数、パラメータ、データなどは、メモリ共有、メッセージ受渡し、トークン受渡し、ネットワーク伝送などを含む任意の好適な手段を介して渡されるか、転送されるか、または送信されてもよい。
さらに、局面は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組合せによって実現されてもよい。ソフトウェア、ファームウェア、ミドルウェアまたはマイクロコードにおいて実現される場合には、必要なタスクを実行するプログラムコードまたはコードセグメント(たとえばコンピュータプログラムプロダクト)を機械読取可能媒体に記憶してもよい。プロセッサは必要なタスクを実行してもよい。
図面のいくつかにおいて示されるシステムは、さまざまな構成で提供されてもよい。いくつかの局面では、システムは、システムの1つ以上のコンポーネントがクラウドコンピュータシステムにおける1つ以上のネットワークにわたって分散される分散型システムとして構成されてもよい。
モバイルコンピューティングデバイスとエンタープライズコンピューティングシステム(たとえば、人的資源管理システム、顧客関係性管理システム、経営管理システムなど)との間でエンタープライズデータを同期させるための技術を記載する。いくつかの局面においては、クラウドコンピュータシステム(たとえば「クラウドサービス」)が、さまざまなタイプのエンタープライズコンピューティングシステムとモバイルコンピューティングデバイスとの間におけるエンタープライズデータの同期を容易にするために実現されてもよい。クラウドサービスは、さまざまなエンタープライズコンピューティングシステムから受信されたエンタープライズデータを、モバイルコンピューティングデバイスによって容易に管理および更新することができるフォーマットに変換し得る。変換されたフォーマットにより、別個の情報を容易に識別することが可能になり得る。エンタープライズデータは、エンタープライズデータの同期を管理するためにポリシー情報およびバージョン情報に関連付けられてもよい。いくつかの局面においては、クラウドサービスは、モバイルコンピューティングデバイスが無線ネットワークに対して確立する通信接続の分類に基づいて、モバイルコンピューティングデバイスとの同期を管理してもよい。通信接続は、モバイルコンピューティングデバイスとクラウドコンピュータシステムとの間でエンタープライズデータを同期させるための方法を決定するために用いられてもよい。
クラウドサービスは、モバイルコンピューティングデバイスとエンタープライズコンピューティングシステムとの間で仲介コンピューティングシステムとして動作してもよい。いくつかの局面においては、クラウドサービスは、モバイルコンピューティングデバイスおよびエンタープライズコンピューティングシステムとは異なる地理的位置に位置する可能性もある。クラウドサービスは、高速通信を提供するネットワークを介して、エンタープライズコンピューティングシステムと通信し得る。エンタープライズコンピューティングシステムとの確実な高速通信接続により、クラウドサービスが、必要に応じてエンタープライズデータの同期のために定期的な通信を維持することが可能になり得る。こうすることにより、クラウドサービスは、如何なるエンタープライズコンピューティングシステムに対しても、同期されたエンタープライズデータを最新バージョンで維持することができる。
いくつかの局面においては、クラウドサービスは、エンタープライズデータを、エンタープライズコンピューティングシステムによってサポートされる特定のフォーマットから、標準的なフォーマット、たとえば、さまざまなアプリケーションおよびさまざまなモバイルコンピューティングデバイスによって容易に解析することができるJavaScriptオブジェクト表記法(JSON)に変換してもよい。エンタープライズデータは、特定のエンタープライズコンピューティングシステムと同期させるためにエンタープライズコンピューティングシステムの特定のフォーマットに変換し直されてもよい。共通のフォーマットを用いることにより、エンタープライズコンピューティングシステム間の相違に対処する必要なしに、このようなフォーマットを用いて一貫した態様でアプリケーションを設計することが可能になり得る。
いくつかの局面においては、クラウドサービスは、エンタープライズデータにおけるあるタイプの情報を識別することによって同期を向上させ得る。クラウドサービスは、アイテムおよびバイナリラージオブジェクト(BLOB)などのエンタープライズデータにおける別個の情報を識別し得る。アイテムは、集合(たとえば関連するアイテムのグループ)に関連付けられてもよい。BLOBは、画像、マルチメディアオブジェクト、もしくは実行可能コード、または当該技術分野において公知のような、データベース管理システムにおいて単一のエンティティとして記憶されるバイナリデータの集合を含んでもよい。モバイルコンピューティングデバイスのための標準的フォーマットにフォーマットされたエンタープライズデータにより、情報のタイプが区別され得る。この際に、クラウドサービスは、各々の識別可能なタイプの情報に対応するエンタープライズデータの別個の部分における変更に関して、エンタープライズデータの同期を管理してもよい。クラウドサービスは、モバイルコンピューティングデバイスとの通信中に集合同士の間で重複したエンタープライズデータが削減され得るように、アイテム間の関係を識別し得る。
いくつかの局面においては、クラウドサービスおよびモバイルコンピューティングデバイスは、アイテム、集合およびブロブに対応するエンタープライズデータに関連付けられたポリシーを使用することによって、エンタープライズデータを管理してもよい。ポリシーは、エンタープライズデータとともにエンタープライズコンピューティングシステムから受信されてもよい。ポリシーは、エンタープライズデータを記憶するための基準を示し得る。いくつかの局面においては、基準は、モバイルコンピューティングデバイスから無線ネットワークへの通信接続(たとえば、接続のタイプ、接続のデータ転送速度など)の分類に対応し得る。この分類は、エンタープライズデータをいつ更新するのかと、エンタープライズデータにおいて識別された別個の情報に関してどのように更新するのかと、を判断するのに用いられてもよい。いくつかの局面においては、クラウドサービスは、バージョン情報を用いてモバイルコンピューティングデバイスとの同期を管理してもよい。いくつかの場合には、無線ネットワークへの通信接続が変更されてもよい。ポリシーに基づいて同期を管理することにより、モバイルコンピューティングデバイスは、モバイルコンピューティングデバイスから無線ネットワークまでの通信接続の変更の原因を把握することができる。
図1は、本発明のいくつかの局面に従った、エンタープライズコンピューティングシステムとモバイルコンピューティングデバイスとの間でエンタープライズデータを同期させるためのコンピュータシステム100を示すブロック図である。例示を目的として、1つ以上のエンタープライズコンピューティングシステム(たとえばエンタープライズコンピューティングシステム140)と1つ以上のモバイルコンピューティングデバイス(たとえばモバイルコンピューティングデバイス102)との間でエンタープライズデータを同期させるための技術を説明するために、さまざまな例がこの明細書中において提供される。いくつかの局面においては、コンピュータシステム100は、モバイルコンピューティングデバイスとエンタープライズコンピューティングシステムとの間における通信を管理しかつ容易にするための(この明細書中では「クラウドサービス」と称される)クラウドコンピュータシステム120を含み得る。一般に、クラウドコンピュータシステム120は、コンピューティング環境における2つの如何なるエンドポイントデバイス間におけるデータの同期をも容易にし得る。エンドポイントデバイスは、コンピューティングシステム(たとえば分散型コンピューティングシステム)におけるユーザエンドポイントとして動作するコンピューティングデバイスを含み得る。
いくつかの局面においては、エンタープライズコンピューティングシステム140は、エンタープライズのために動作するコンピューティングシステムを含み得る。エンタープライズコンピューティングシステム140は、エンタープライズデータを用いるアプリケーションおよび/またはサービスを含み得る。たとえば、エンタープライズコンピューティングシステム140は、顧客関係性管理、人的資本管理、人的資源管理、サプライチェーン管理、エンタープライズ通信システム、電子メール通信システムもしくは他の業務サービス、またはそれらの組合せのためにエンタープライズサービスおよび/またはアプリケーションを提供し得る。図1に示される例においては、エンタープライズコンピューティングシステム140は、人的資本管理システム(human capital management system:HCM)134、顧客関係性管理(customer relationship management:CRM)システム、顧客エンタープライズシステム138、またはそれらの組合せを含む。
本明細書に記載されるエンタープライズデータは、エンタープライズコンピューティングシステムから受信されるデータ、エンタープライズコンピューティングシステムに送信されるデータ、エンタープライズコンピューティングシステムによって処理されるデータ、またはそれらの組合せを含んでもよい。エンタープライズデータは、消費者アプリケーションおよび/またはサービスに対するデータとは区別可能であってもよい。いくつかの局面では、たとえば、エンタープライズデータはエンタープライズデータの適用または使用に基づいて変化してもよく、一方、消費者アプリケーションに対するデータ(たとえば、消費者データ)は使用中に静的なままであってもよい。特定の局面では、エンタープライズデータは、エンタープライズデータを記憶、使用および/または管理することに対する基準を示すルールを含むかまたはそのようなルールと関連付けられてもよい。たとえば、エンタープライズデータは、エンタープライズデータを記憶、使用および/または管理することに対する1つ以上のポリシーを示すポリシー情報と関連付けられてもよい。特定の局面では、ポリシー情報は、エンタープライズデータに含まれてもよい。特定の局面では、エンタープライズデータは、エンタープライズコンピューティングシステムにおいて実行されるアプリケーションまたはサービスによって処理、記憶、使用または通信されるデータを含んでもよい。たとえば、エンタープライズデータは、エンタープライズアプリケーションからのJSONフォーマット化データ、構造化されたデータ(たとえば、キー値ペア)、非構造化データ(たとえば、アプリケーションによって処理または用いられる内部データ、JSONフォーマットにおけるデータ、ソーシャルポスト、カンバセーションストリーム、アクティビティフィードなど)、バイナリラージオブジェクト(BLOB)、ドキュメント、システムフォルダ(たとえば、サンドボックス環境におけるアプリケーション関連フォルダ)、レプレゼンテーショナル・ステート・トランスファー(REST)技術(本明細書では「RESTフルなデータ」と称される)を用いるデータ(たとえば、RESTエンドポイントによって利用可能にされる同期データ)、システムデータ、構成データ、同期データ、またはそれらの組合せなどのビジネスデータ(たとえば、ビジネスオブジェクト)を含んでもよい。いくつかの局面では、エンタープライズデータは、RESTフォーマット化されたエンタープライズデータを含んでもよい。RESTフォーマット化されたエンタープライズデータは、RESTフルなデータを含んでもよい。RESTフォーマット化されたデータは、エンタープライズコンピューティングシステムによって実現されるREST技術に従ってフォーマットされるデータを含んでもよい。構成または同期データは、バージョン、履歴、統合データなどのようなエンタープライズデータの同期のために用いられるデータを含んでもよい。エンタープライズデータにおけるドキュメントは、拡張マークアップ言語(extended markup language:XML)ファイル、ビジュアルアセット、構成ファイル、メディアアセットなどを含んでもよい。BLOBは、画像、マルチメディアオブジェクト、もしくは実行可能コード、または当該技術分野において公知のような、データベース管理システムにおいて単一のエンティティとして記憶されるバイナリデータの集合を含んでもよい。
クラウドコンピュータシステム120を通じて、モバイルコンピューティングデバイス(たとえば、モバイルコンピューティングデバイス102)は、複数のエンタープライズコンピューティングシステム(たとえば、HCM134、CRM136またはカスタムエンタープライズコンピューティングシステム138)と通信して、エンタープライズデータを交換し得る。クラウドコンピュータシステム120は仲介コンピューティング環境として動作してもよく、これにより、モバイルコンピューティングデバイスとエンタープライズコンピューティングシステム140のいずれかとの間におけるエンタープライズデータの通信を容易にし得る。クラウドコンピュータシステム120は、さまざまなモバイルコンピューティングデバイスを含むさまざまなタイプのコンピューティングデバイスと通信し得る。モバイルコンピューティングデバイス102は、エンタープライズデータのためのアプリケーションからの要求を処理する同期マネージャ110を介してクラウドコンピュータシステム120と通信してもよい。同期マネージャ110は、同期動作を制御するためにアプリケーションが拡張可能なアプリケーションプログラムインターフェイス(application programming interface:API)を含み得る。同期マネージャ110を用いると、モバイルコンピューティングデバイスは、モバイルコンピューティングデバイス120上で実行されるコンピューティング環境および/またはアプリケーションの種類にかかわらず、クラウドコンピュータシステム120を介してエンタープライズコンピューティングシステムと通信することができる。同期マネージャ110は、モバイルコンピューティングデバイス102が、モバイルコンピューティングデバイスによって処理可能および読取り可能な構造化されたフォーマットでエンタープライズデータを要求および受信することを可能にし得る。クラウドコンピュータシステム120は、モバイルコンピューティングデバイスとクラウドコンピュータシステム120との間の通信接続にかかわらず、モバイルコンピューティングデバイスとエンタープライズコンピューティングシステムとの間の同期を容易にする。
クラウドコンピュータシステム120はさらに、異なる通信プロトコルを有し得るものもあるさまざまなエンタープライズコンピューティングシステムと通信することによって、仲介コンピューティング環境として動作し得る。このような通信プロトコルは、クラウドコンピュータシステム120と通信するアプリケーションまたはサービスに特化されたものであってもよくまたはそれらに特有のものであってもよい。さらに、クラウドコンピュータシステム120は、エンタープライズコンピューティングシステムによってサポートされたフォーマットに従ってエンタープライズデータを送信および受信するためにエンタープライズコンピューティングシステムと通信してもよい。十分なコンピューティングリソースを備えることにより、クラウドコンピュータシステム120は、エンタープライズコンピューティングシステムに従ってエンタープライズデータを同期させるための通信を用いて通信してもよい。クラウドコンピュータシステム120は、エンタープライズデータのローカルストレージ(たとえばローカルキャッシュ)を維持してもよく、さらに、モバイルコンピューティングデバイスとエンタープライズコンピューティングシステム140との間でのエンタープライズデータの同期を管理するためにローカルストレージを用いてもよい。
クラウドコンピュータシステム120は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せを用いて実現されてもよい。たとえば、クラウドコンピュータシステムは、サーバコンピュータなどのような1つ以上のコンピューティングデバイスを含んでもよい。クラウドコンピュータシステムは1つ以上のメモリ記憶装置および1つ以上のプロセッサを含んでもよい。メモリ記憶装置は、プロセッサにとってアクセス可能であり得、そこに記憶される命令を含んでもよく、それら命令は、プロセッサによって実行されると、プロセッサに本明細書に開示される1つ以上の動作を実行させる。いくつかの局面では、メモリ記憶装置はローカルストレージ(たとえばキャッシュ)として動作してもよい。
いくつかの局面においては、クラウドコンピュータシステム120は1つ以上のアダプタ、たとえばHCMアダプタ122、CRMアダプタ124およびアダプタ126を含み得るかまたは実現し得る。各々のアダプタは、特定の通信プロトコル、エンタープライズコンピューティングシステムのタイプ、アプリケーションのタイプ、サービスのタイプまたはそれらの組合せに従って通信をサポートしてもよい。アダプタによってサポートされる通信プロトコルは、1つ以上のエンタープライズコンピューティングシステムに特有のものであってもよい。たとえば、HCMアダプタ122は、HCMエンタープライズコンピューティングシステム134によってサポートされるプロトコルに従って通信するように構成されてもよい。クラウドコンピュータシステム120は、エンタープライズコンピューティングシステム140の各々と別個の通信接続128〜132を確立してもよい。
クラウドコンピュータシステム120は、1つ以上のネットワーク(図示せず)を介してエンタープライズコンピューティングシステム140と通信するように構成されてもよい。通信ネットワークの例は、インターネット(登録商標)、モバイルネットワーク、パブリックネットワーク、無線ネットワーク、セルラーネットワーク、ローカルエリアネットワーク(local area network:LAN)、ワイドエリアネットワーク(wide area network:WAN)、他の通信ネットワーク、またはそれらの組合せを含んでもよい。いくつかの局面では、通信接続128〜132は、高速通信トランクを用いて容易にされる高速通信接続であってもよい。
モバイルコンピューティングデバイス120は、ハードウェア、ファームウェア、ソフトウェアまたはそれらの組合せで実現されるコンピューティングシステムであってもよい。モバイルコンピューティングデバイス102はクラウドコンピュータシステム120を介して如何なるエンタープライズコンピューティングシステム140とも通信し得る。モバイルコンピューティングデバイス102は、エンドポイント、携帯情報端末(personal digital assistant:PDA)、タブレットコンピュータ、ラップトップコンピュータ、デスクトップコンピュータ、ウェアラブルコンピュータ、ページャなどを含み得るか、またはそれらとして実現されてもよい。モバイルコンピューティングデバイス102は、1つ以上のメモリ記憶装置および1つ以上のプロセッサを含み得る。モバイルコンピューティングデバイス102は、さまざまな種類のオペレーティングシステムを含み得る。メモリ記憶装置はプロセッサにとってアクセス可能であってもよく、そこに記憶される命令を含んでもよく、それら命令は、プロセッサによって実行されると、プロセッサに本明細書に開示される1つ以上の動作、方法またはプロセスを実行させる。メモリ記憶装置はローカルストレージ(たとえばキャッシュ160)として動作してもよい。ローカルストレージは、メモリ記憶装置または他のコンピュータ読取可能記憶媒体などのような任意のタイプの永続的な記憶装置を用いて実現されてもよい。いくつかの局面では、ローカルストレージは、データベース114(たとえばドキュメントデータベース、リレーショナルデータベースまたは他のタイプのデータベース)、ファイルストア、ファイルシステム116、またはそれらの組合せを含むかまたは実現してもよい。ローカルストレージはエンタープライズデータを記憶してもよい。いくつかの局面では、ローカルストレージはポリシー情報を含み得る。ポリシー情報は、クラウドコンピュータシステム120から取得することができる。ポリシー情報は、エンタープライズデータの同期および/または記憶を判断するために用いられてもよい。
さまざまな局面では、モバイルコンピューティングデバイス102は、ウェブブラウザ、クライアントアプリケーション、所有権付きクライアントアプリケーションなどの1つ以上のアプリケーションを実行および動作させるように構成されてもよい。たとえば、アプリケーション104およびアプリケーション108はモバイルコンピューティングデバイス102上で動作させてもよい。クライアントアプリケーションは1つ以上のネットワークを介してアクセス可能であり得るかまたは動作させてもよい。アプリケーション104などのアプリケーションは、アプリケーションを動作させるためのグラフィカルユーザインターフェイス(graphical user interface:GUI)を含んでもよい。
モバイルコンピューティングデバイス102は、1つ以上の通信ネットワークを介して、無線通信を用いてクラウドコンピュータシステム120と通信してもよい。通信ネットワークの例は、モバイルネットワーク、無線ネットワーク、セルラーネットワーク、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、他の無線通信ネットワーク、またはそれらの組合せを含んでもよい。
モバイルコンピューティングデバイス102は同期マネージャ110を含み得る。同期マネージャ110はアプリケーションプログラムインターフェイス(API)を含み得る。このアプリケーションプログラムインターフェイス(API)は、アプリケーション(たとえばアプリケーション104)が、エンタープライズコンピューティングシステムに対して、エンタープライズデータのアクセスおよび使用に関わるさまざまな動作を要求することを可能にする。いくつかの局面においては、アプリケーションは、エンタープライズデータの同期を管理するよう同期マネージャ110に要求してもよい。APIは、エンタープライズデータ362を管理したりエンタープライズデータ362にアクセスしたりするために、呼出し可能な機能、方法、動作、ルーチンなどを提供し得る。このような呼出し可能な機能は、ポリシーについて情報と、キャッシュ360からアクセスされるエンタープライズデータ362についての情報とにアクセスするための機能を含み得る。同期マネージャ110は、アプリケーションのためにクラウドコンピュータシステム120への通信を管理してもよい。いくつかの局面においては、同期マネージャ110は、カスタムプロトコル(たとえばカスタム同期プロトコル)を用いて、クラウドコンピュータシステム120との通信接続118を確立してもよい。カスタムプロトコルはHTTPベースのプロトコルであってもよい。同期マネージャ110がクラウドコンピュータシステム120との通信を処理できるようにすることによって、アプリケーションは、クラウドコンピュータシステム120との通信を構成する負担を回避することができる。カスタムプロトコルを利用することにより、同期マネージャ110は、クラウドコンピュータシステム120と通信するために如何なるモバイルコンピューティングデバイスプラットフォーム上でも動作することができる。
いくつかの局面においては、同期マネージャ110は、エンタープライズデータを局所的に管理し、可能な場合にクラウドコンピュータシステム120と同期させてもよい。エンタープライズデータを要求するアプリケーションは、エンタープライズデータが局所的に検索可能である場合、同期マネージャ110から迅速な応答が与えられてもよい。局所的に利用可能ではないエンタープライズデータをクラウドコンピュータシステム120から受信してもよい。
クラウドコンピュータシステム120は、他のアプリケーションまたはモバイルコンピューティングデバイスのために検索されたエンタープライズデータを記憶してもよい。結果として、クラウドコンピュータシステム120は、迅速なアクセスまたは同期のためにエンタープライズデータのローカルコピーを維持し得る。クラウドコンピュータシステム120は、まず、そのローカルストレージを探索してエンタープライズデータの位置を特定するかまたは要求に対する同期を実行してから、エンタープライズコンピューティングシステムと通信してもよい。そうすることによって、クラウドコンピュータシステム120は、モバイルコンピューティングデバイス102のためにエンタープライズデータをより高速で同期させて検索することが可能になり得る。クラウドコンピュータシステム120は、エンタープライズデータをモバイルコンピューティングデバイス102に伝達するのと同時に、エンタープライズデータの検索および/または同期を行なうことができるだろう。いくつかの局面においては、クラウドコンピュータシステム120は、エンタープライズデータまたは結果がモバイルコンピューティングデバイス102に伝達されるよりも速く、エンタープライズデータの受信および/または同期を行ってもよい。そのため、クラウドコンピュータシステム120は、同期に関するエンタープライズデータまたは情報を、それらがモバイルコンピューティングデバイス102に伝達される前に記憶し、これにより、モバイルコンピューティングデバイスがエンタープライズコンピューティングシステム140中のエンタープライズデータにアクセスするための応答時間を改善させ得る。
クラウドコンピュータシステムは、コンピューティングリソースの違いにかかわらず、モバイルコンピューティングデバイスがエンタープライズコンピューティングシステムと通信することを可能にし得る。クラウドコンピュータシステムは、頻繁に通信してエンタープライズデータを受信するために、より多くのリソースと、エンタープライズコンピューティングシステムとのより高速で信頼性のある接続とを備えてもよい。クラウドコンピュータシステムは、それらの通信能力に従ってモバイルコンピューティングデバイスに通信されるエンタープライズデータを管理および同期させ得る。さらに、クラウドコンピュータシステムにおいてエンタープライズデータをキャッシュすることによって、エンタープライズデータを容易に検索して、モバイルコンピューティングデバイスと同期させてもよい。クラウドコンピュータシステムは、モバイルコンピューティングデバイスとのその通信とは別個に同期を管理することができる。
図2は、本発明のいくつかの局面に従った、エンタープライズコンピューティングシステムとモバイルコンピューティングデバイスとの間でエンタープライズデータを同期させるためのコンピュータシステム(たとえばクラウドコンピュータシステム120)を示すブロック図である。いくつかの局面においては、クラウドコンピュータシステム120は、モバイルコンピューティングデバイス(たとえばモバイルコンピューティングデバイス240およびモバイルコンピューティングデバイス250)とエンタープライズコンピューティングシステム(たとえばエンタープライズコンピューティングシステム212およびエンタープライズコンピューティングシステム214)との間で伝達されるエンタープライズデータの通信および/または同期のためのさまざまな動作を実行するように構成された1つ以上の機能ブロックまたはモジュールとして実現されてもよい。クラウドコンピュータシステム120は、エンタープライズデータパーサ220、コンバータ222、バージョン判断部224、通信モジュール226、エンタープライズデータマネージャ228、およびポリシーマネージャ232を含み得る。クラウドコンピュータシステム120は、キャッシュ230などの1つ以上のメモリ記憶装置(「ローカルストレージ」)を含み得る。キャッシュ230は、エンタープライズデータ262を記憶するために用いられてもよい。エンタープライズデータ262は、エンタープライズコンピューティングシステム212,214から、もしくはモバイルコンピューティングデバイス240,250から受信されてもよく、または、クラウドコンピュータシステム120によって変換されたエンタープライズデータを含んでもよく、またはこれらの組合せであってもよい。
通信モジュール226は、複数のエンタープライズコンピューティングシステム(たとえばエンタープライズコンピューティングシステム212,214)とのクラウドコンピュータシステム120のための通信を処理するように構成されてもよい。このようなエンタープライズコンピューティングシステムは、クラウドコンピュータシステム120のファイアウォールを越えて、クラウドコンピュータシステム120とは異なる地理的位置(たとえば遠隔の地理的位置)に物理的に位置してもよい。いくつかの局面においては、エンタープライズコンピューティングシステム212はエンタープライズコンピューティングシステム214とは異なっていてもよい。いくつかの局面においては、エンタープライズコンピューティングシステム212およびエンタープライズコンピューティングシステム214は単独のコンピューティングシステムの一部であってもよい。エンタープライズコンピューティングシステム212,214の各々は、さまざまな通信プロトコルを用いてクラウドコンピュータシステム120と通信してもよい。
いくつかの局面においては、エンタープライズコンピューティングシステム212,214のうち1つ以上は、HTTPベースのプロトコルを用いて、クラウドコンピュータシステム120と通信してもよい。いくつかの局面においては、エンタープライズコンピューティングシステム212,214は、REST通信プロトコルを用いてクラウドコンピュータシステム120と通信してもよい。たとえば、RESTプロトコルはURI(uniform resource identifier:統一的資源識別子)またはURL(uniform resource locator:ユニフォームリソースロケータ)を含むフォーマットをサポートしてもよい。RESTプロトコルを用いる通信のためにフォーマットされるデータは、JSON、コンマ区切り形式(comma-separated values:CSV)、およびreally simple syndication(RSS)などのようなデータフォーマットに容易に変換されてもよい。エンタープライズコンピューティングシステム212,214およびクラウドコンピュータシステム120は遠隔手続呼出し(remote procedure call:RPC)(たとえばXML RPC)などのような他のプロトコルを用いて通信してもよい。
上述したように、クラウドコンピュータシステム120およびエンタープライズコンピューティングシステム212,214は高速通信をサポートする通信接続を用いて通信してもよい。高速通信接続により、クラウドコンピュータシステムが、エンタープライズコンピューティングシステムとの継続中の複数の通信を維持してエンタープライズデータを同期させることを可能にし得る。高速通信接続は、エンタープライズデータを完全に同期させるためにエンタープライズコンピューティングシステムとの複数の通信を処理する能力をクラウドコンピュータシステム120に与えるのに対して、モバイルコンピューティングデバイスは、エンタープライズデータを常に受信するよう無線通信接続の帯域幅が制限されている可能性がある。クラウドコンピュータシステム120とエンタープライズコンピューティングシステムとの間における通信接続は、クラウドコンピュータシステム120がエンタープライズデータを中断がほとんどまたは全くない状態で同期させるよう通信を送受信し得るように信頼性があってもよい。
いくつかの局面においては、通信モジュール226は、エンタープライズコンピューティングシステム212,214と通信して、更新済みエンタープライズデータを同期させてもよい。通信モジュール226は、エンタープライズデータを更新するようエンタープライズコンピューティングシステムに要求してもよい。このような要求は、モバイルコンピューティングデバイス240,250から受信した要求に基づいてなされてもよい。いくつかの局面においては、通信モジュール226は、要求なしで、エンタープライズコンピューティングシステム212,214から更新済みエンタープライズデータを受信してもよい。通信モジュール226は、モバイルコンピューティングデバイス240,250から受信したエンタープライズデータの更新をエンタープライズコンピューティングシステムに送信し得る。エンタープライズデータの更新は、以下に記載されるエンタープライズデータマネージャ228によって判断されてもよい。
いくつかの局面においては、通信モジュール226は、1つ以上のアダプタ、たとえばアダプタ208およびアダプタ210、を含み得る。アダプタは、通信プロトコル、エンタープライズコンピューティングシステムのタイプ、アプリケーションのタイプ、サービスのタイプまたはそれらの組合せに従って通信をサポートし得る。アダプタによってサポートされる通信プロトコルは、1つ以上のエンタープライズコンピューティングシステムに特有のものであってもよい。たとえば、通信モジュール226は、エンタープライズコンピューティングシステム212によってサポートされる特定のプロトコルを用いて、エンタープライズコンピューティングシステム212との通信用に構成されたアダプタ208を含み得る。別の例においては、通信モジュール226は、エンタープライズコンピューティングシステム214によってサポートされる特定のプロトコルを用いるエンタープライズコンピューティングシステム214との通信用に構成されたアダプタ210を含み得る。
クラウドコンピュータシステム120は通信モジュール226を用いてモバイルコンピューティングデバイス、たとえばモバイルコンピューティングデバイス240,250と通信してもよい。モバイルコンピューティングデバイスは、クラウドコンピュータシステム120とは異なる地理的位置に位置してもよい。たとえば、モバイルコンピューティングデバイス240,250は、クラウドコンピュータシステム120のファイアウォールを越えて、クラウドコンピュータシステム120とは異なる地理的位置(たとえば、遠隔の地理的位置)に物理的に位置してもよい。モバイルコンピューティングデバイス240,250の各々は異なる通信プロトコルを用いてクラウドコンピュータシステム120と通信してもよい。いくつかの局面では、モバイルコンピューティングデバイス240,250の1つ以上はHTTPベースの通信プロトコルを用いてクラウドコンピュータシステム120と通信してもよい。いくつかの局面では、通信モジュール226はカスタム通信プロトコルを用いてモバイルコンピューティングデバイスと通信してもよい。カスタム通信プロトコルはHTTPベースの通信プロトコルであってもよい。モバイルコンピューティングデバイス240,250間における通信のために用いられる通信プロトコルは、モバイルコンピューティングデバイスおよびクラウドコンピュータシステム120によって容易に読取可能であり得るさまざまなフォーマット(たとえばJSONフォーマット)で構造化されるデータの通信をサポートし得る。
いくつかの局面においては、モバイルコンピューティングデバイス240,250は、クラウドコンピュータシステム120と通信するよう特定のユーザインターフェイス202,204(user interface:UI)を備えてもよい。ある特定の通信プロトコルを用いて通信するように、ある特定のUIを構成してもよい。いくつか局面では、特定のUI202,204は、クラウドコンピュータシステムと通信するよう呼出され得る呼出し可能インターフェイス、機能、ルーチン、方法および/または動作を含んでもよい。特定のUI202,204は、入力として、エンタープライズコンピューティングシステム212,214にエンタープライズデータを要求するかまたはそこからエンタープライズデータを受信するためのパラメータを受入れてもよい。特定のUIを介する通信は、カスタム通信プロトコルを用いる通信用に変換されてもよい。いくつか局面では、特定のUI202,204は同期マネージャ110に含まれるかまたは同期マネージャ110によって実現されてもよい。いくつかの局面では、特定のUI202,204はアプリケーションにおけるカスタムクライアントに対応してもよい。
クラウドコンピュータシステム120は、モバイルコンピューティングデバイス240,250とエンタープライズコンピューティングシステム212,214との間における同期を維持するために、エンタープライズデータをさまざまなフォーマットに変換することができるおよび/またはエンタープライズデータの記憶を管理することができるコンポーネントを含み得る。
エンタープライズデータマネージャ228は、クラウドコンピュータシステム120のローカルストレージ(たとえばキャッシュ230)へのエンタープライズデータの記憶を管理してもよい。エンタープライズデータの管理は、ローカルストレージにおいてエンタープライズデータを作成し、読出し、更新し、削除することを含み得る。エンタープライズデータマネージャ228は、アプリケーションまたはサービスを探してエンタープライズデータを探索および検索するように動作を実行してもよい。いくつかの局面においては、エンタープライズデータマネージャ228は、モバイルコンピューティングデバイス(たとえばモバイルコンピューティングデバイス240)からのクエリを満たすエンタープライズデータを探してそのローカルストレージを探索してもよい。発見可能なエンタープライズデータはモバイルコンピューティングデバイスに送信される。ローカルストレージに存在しないエンタープライズデータは、エンタープライズコンピューティングシステム212,214に要求されてもよい。
いくつかの局面においては、エンタープライズデータマネージャ228は、エンタープライズコンピューティングシステムからさまざまなフォーマットで受信されるエンタープライズデータとは別個に、モバイルコンピューティングデバイスに分散させるようにフォーマットされたエンタープライズデータを記憶してもよい。エンタープライズデータは、エンタープライズデータのバージョン、アプリケーションのタイプ、サービスのタイプ、エンタープライズコンピューティングシステムのタイプ、ユーザ、モバイルコンピューティングデバイス、エンタープライズデータのコンテンツ、データタイプ(たとえばアイテム、アイテムの集合もしくはブロブ)、またはそれらの組合せなどの基準に基づいて記憶されてもよい。いくつかの局面においては、エンタープライズデータにおいて識別される他の情報が、ローカルストレージに記憶されてもよい。たとえば、エンタープライズデータに対応するポリシー情報は局所的に記憶されてもよい。URIおよびポリシー情報についてのさらなる詳細を以下に記載する。
エンタープライズデータパーサ220は、エンタープライズコンピューティングシステム212,214からさまざまなフォーマットで受信されたエンタープライズデータを解析してもよい。いくつかの局面においては、エンタープライズデータ862は、モバイルコンピューティングデバイス上のアプリケーションにとって未知であり得るフォーマットで受信される可能性がある。レガシーエンタープライズコンピューティングシステムをいくつか含んでいる、多くのさまざまなエンタープライズコンピューティングシステムの場合、エンタープライズデータはさまざまなフォーマットで受信され得る。たとえば、エンタープライズコンピューティングシステム212,214から受信されたエンタープライズデータは、RESTプロトコルに対応するRESTフォーマットで構造化されてもよい。いくつかの局面においては、エンタープライズコンピューティングシステムから受信されたエンタープライズデータは、JSONフォーマットを用いてコンテンツ(たとえばアイテムおよびアイテムの集合)を構造化してもよい。エンタープライズデータパーサ220は、エンタープライズデータを、それが受信されたフォーマットで解析するように構成されてもよい。エンタープライズデータパーサ220は、エンタープライズデータを解析して、アイテム、アイテムの集合およびブロブを識別し得る。いくつかの局面においては、エンタープライズデータパーサ220は、アイテムが複数の集合に含まれるかどうかを判断し得る。
いくつかの局面においては、エンタープライズコンピューティングシステム212,214から受信されたエンタープライズデータはポリシー情報を含み得る。ポリシー情報は、各々の別個の情報についてのポリシーをエンタープライズデータに含み得る。さらに以下に記載されるように、別個の情報はアイテムに対応する可能性もある。たとえば、ポリシー情報は、コンタクトのリストに含まれる各々のコンタクト情報に対応するポリシーを含み得る。いくつかの局面においては、エンタープライズコンピューティングシステム212,214から受信されたエンタープライズデータは、各々の別個の情報についての追加情報の位置を示す情報(たとえばURI)を含み得る。エンタープライズデータパーサ220は、エンタープライズデータのうち別個の情報に対応する部分に関連付けられるURIおよび/または対応するポリシー情報を識別するために、エンタープライズデータを解析するように構成されてもよい。
いくつかの局面においては、エンタープライズデータマネージャ228は、モバイルコンピューティングデバイス240,250から受信されたエンタープライズデータが、1つ以上のエンタープライズコンピューティングシステム212,214についてのエンタープライズデータの更新を含むかどうかを判断し得る。エンタープライズデータマネージャ228は、エンタープライズデータが更新されたかどうかを判断するために、局所的に記憶されたエンタープライズデータと、モバイルコンピューティングデバイスから受信したエンタープライズデータのバージョンとを比較してもよい。いくつかの局面においては、モバイルコンピューティングデバイスから受信された通信は、モバイルコンピューティングデバイスから受信されたエンタープライズデータが更新を含むかどうかを示す可能性もある。以下に記載されるバージョン判断部224は、エンタープライズデータのバージョンを示す情報、および/または、受信されたエンタープライズデータに基づいてエンタープライズデータが更新されたかどうかを示す情報を提供し得る。
いくつかの局面においては、エンタープライズデータマネージャ228は、モバイルコンピューティングデバイス240,250およびエンタープライズコンピューティングシステム212,214から受信したエンタープライズデータの更新を管理してもよい。たとえば、エンタープライズデータマネージャ228は、現在のバージョンのエンタープライズデータを維持するためにエンタープライズデータをマージしてもよい。データは、エンタープライズデータが更新され、作成され、削除される順序に基づいて、マージされて更新されてもよい。モバイルコンピューティングデバイスによって更新または作成されたエンタープライズデータは、エンタープライズコンピューティングシステムに伝達されてもよい。エンタープライズデータマネージャ228は、あるバージョンのエンタープライズデータを用いて、エンタープライズデータが更新されるべきかどうかを判断してもよい。以下に記載されるバージョン判断部224は、エンタープライズデータのバージョンを判断するように構成されてもよい。いくつかの局面においては、新しいエンタープライズデータまたは既存のエンタープライズデータの更新が、同期のために、モバイルコンピューティングデバイスおよびエンタープライズコンピューティングシステムに伝達されてもよい。いくつかの局面においては、更新済みエンタープライズデータが、あるバージョンでモバイルコンピューティングデバイスに伝達されることにより、モバイルコンピューティングデバイスが、更新済みアイテムについてのエンタープライズデータの同期を維持することが可能になり得る。
いくつかの局面においては、エンタープライズデータマネージャ228は、更新済みエンタープライズデータについての要求を処理し得る。要求は、同期マネージャ110によって用いられる通信プロトコルで受信されてもよい。当該要求は、HTTPベースのコマンド(たとえば、取得(Get)、配置(Put)、通知(Post)または削除(Delete))などのコマンドを含み得る。これらのコマンドは、同期されるべきアイテム、アイテムの集合および/またはBLOBについての識別子を含み得る。
更新済みエンタープライズデータについての要求は、モバイルコンピューティングデバイス240,250から受信されてもよい。いくつかの局面においては、更新済みエンタープライズデータについての要求は、エンタープライズデータのバージョンを含み得る。エンタープライズデータマネージャ228は、局所的に記憶されたエンタープライズデータのバージョンが要求によって示されているバージョンとは異なっているかどうかを判断してもよい。エンタープライズデータマネージャ228は、変化したアイテムおよびアイテムの集合について、更新済みエンタープライズデータをモバイルコンピューティングデバイスに送信し得る。いくつかの局面においては、エンタープライズデータマネージャ228は、アプリケーションによって要求されたエンタープライズデータに対応するBLOBを送信してもよい。BLOBは、より大型のBLOBの一部を含み得る。エンタープライズデータマネージャ228は、モバイルコンピューティングデバイス上に記憶され、通信帯域幅を消費し得るBLOB全体ではなく、BLOBのうち必要とされ得る部分を判断してもよい。
エンタープライズデータパーサ220は、エンタープライズデータ内のいくつかのタイプの情報を識別するように構成されてもよい。情報のタイプはアイテム、アイテムの集合およびブロブを含み得る。エンタープライズデータパーサ220は、エンタープライズデータを解析して情報のタイプを識別し得る。いくつかの局面においては、エンタープライズデータは、アイテム、アイテムの集合およびブロブを識別するように解析可能であってもよい。アイテムは、他の情報から識別可能な一片の情報を含んでもよい。たとえば、複数の人々についてのコンタクト情報を含むエンタープライズデータは、各々の人についてのコンタクト情報に対応するデータを有する可能性がある。エンタープライズデータは、各々の人についての別個のコンタクト情報に対応するアイテムを区別するように解析されてもよい。アイテムの集合は、エンタープライズデータと識別可能なアイテムとの関係によって識別されてもよい。いくつかの局面においては、複数のアイテムが、関係を有する集合(たとえばグループ)として識別され得るように、エンタープライズデータのフォーマットが構造化されてもよい。いくつかの局面においては、エンタープライズデータパーサ220は、エンタープライズデータを解析して、エンタープライズデータにおけるBLOBを識別してもよい。BLOBは、他の場合には識別不可能であるエンタープライズデータとして識別されてもよく、または、アイテムもしくはアイテムの集合に関連付けられてもよい。いくつかの局面においては、エンタープライズデータは、エンタープライズデータの構造が既知となり得るように、RESTデータフォーマットで受信されてもよい。アイテムは、RESTフォーマットに従ってエンタープライズデータを解析することによって識別されてもよい。いくつかの局面においては、エンタープライズデータは、アイテムがURIに基づいて識別され得るように、エンタープライズデータにおけるURIに基づいて解析可能であり得る。
いくつかの局面においては、エンタープライズデータは、エンタープライズデータにおいて識別される情報のタイプに対応する情報のバージョンを示す情報を含み得る。バージョン判断部224は、バージョンを識別するために、識別されたタイプの情報に対応するエンタープライズデータに対する処理を実行してもよい。いくつかの局面においては、エンタープライズデータにおける情報のタイプが識別されると、バージョン判断部224は、アイテム、アイテムの集合および/またはブロブなどの識別された情報を局所的に記憶されたエンタープライズデータと比較して、いずれのデータが変化したかを判断し得る。
エンタープライズデータにおける情報のタイプが識別されると、エンタープライズデータマネージャ228は、識別された情報をクラウドコンピュータシステム120のローカルストレージに記憶し得る。エンタープライズデータについてのバージョン情報は、エンタープライズデータの現在のバージョンを更新および管理するために、エンタープライズデータとともに記憶されてもよい。バージョン情報は、エンタープライズデータマネージャ228が、現在のバージョンを判断すること、および、更新がモバイルコンピューティングデバイス240,250およびエンタープライズコンピューティングシステム212,214のいずれかまたは両方に伝達されるべきであるかどうかを判断することを可能にし得る。
コンバータ222は、あるフォーマットのエンタープライズデータを別の異なるフォーマットに変換し得る。たとえば、コンバータ222は、ある1つのフォーマット(たとえばRESTデータフォーマット)で受信されたエンタープライズデータを、モバイルコンピューティングデバイス240,250によって読取り可能であり得る別のフォーマット(たとえばJSONフォーマット)にし得るが、逆もまた同様に可能であり得る。エンタープライズコンピューティングシステム212,214から受信されたエンタープライズデータは、エンタープライズデータのコンテンツを判断するように処理される前に変換されてもよい。いくつかの局面においては、モバイルコンピューティングデバイスによって読取り可能なフォーマット(たとえばJSONフォーマット)に変換することにより、既にこのようなフォーマットである場合を除いては、エンタープライズデータパーサ220がエンタープライズデータのコンテンツを識別することが可能になり得る。いくつかの局面においては、モバイルコンピューティングデバイスとエンタープライズコンピューティングシステムとの間で伝達されるエンタープライズデータは、エンタープライズデータが両者によって解析可能である(たとえばパーズ可能である)場合には、変換されない可能性がある。コンバータ222は、前のバージョンから更新されているエンタープライズデータを変換してもよい。
いくつかの局面においては、コンバータ222は、アイテム、アイテムの集合およびブロブを識別するために、コンバータエンタープライズデータに識別子(たとえばエンティティタグ)を挿入してもよい。エンタープライズコンピューティングシステムによって用いられるフォーマットからモバイルコンピューティングデバイスによって用いられるフォーマットへとエンタープライズデータを変換している間に、コンバータ222は、エンタープライズデータに各々のアイテムについての識別子を挿入してもよい。コンバータ222は、アイテムのバージョンを示すバージョン情報を挿入してもよい。バージョン情報はバージョン判断部224によって判断されてもよい。モバイルコンピューティングデバイスがエンタープライズデータをその局所的に記憶されたエンタープライズデータと同期させることを可能にするために、識別子およびバージョン情報が更新済みエンタープライズデータに含まれてもよい。
クラウドコンピュータシステム120はポリシーマネージャ232を含み得る。ポリシーマネージャ232は、エンタープライズデータに関連付けられたポリシー情報に基づいてエンタープライズデータの同期を管理してもよい。ポリシー情報は、ローカルストレージにエンタープライズデータとともに記憶されてもよい。ポリシー情報は、エンタープライズデータの記憶および同期についての基準を示し得る。いくつかの局面においては、ポリシーマネージャ232は、エンタープライズデータをモバイルコンピューティングデバイスと同期させるための方法を決定してもよい。たとえば、ポリシーマネージャ232は、無線ネットワークに対する各々のモバイルコンピューティングデバイスの通信接続(たとえばデータ転送速度、通信のタイプなど)の分類に基づいて、更新済みエンタープライズデータを含むエンタープライズデータを如何にモバイルコンピューティングデバイスに提供するかについての指示をエンタープライズデータマネージャ228に与え得る。
クラウドコンピュータシステムは、モバイルコンピューティングデバイスとエンタープライズコンピューティングシステムとの間におけるエンタープライズデータの通信を容易にし得る。エンタープライズデータを伝達するのに用いられるプロトコルの翻訳を処理することにより、モバイルコンピューティングデバイス上のアプリケーションは、さまざまなエンタープライズコンピューティングシステムからエンタープライズデータを取得してもよい。エンタープライズデータにおける別個の情報(たとえばアイテム、アイテムの集合およびブロブ)を識別することにより、クラウドコンピュータシステムは、情報のグループ間で関連しているエンタープライズデータの重複を最小限にすることができる。別個の情報をさらに識別することにより、クラウドコンピュータシステムが、変化したアイテム、アイテムの集合およびBLOBに対して、またはポリシー情報に基づいて更新される必要のあるアイテム、アイテムの集合およびBLOBに対して、エンタープライズデータを送達することを管理することが可能となる。別個の情報を識別することにより、アプリケーションが、以降の探索および検索のために使用することができる別個の情報を容易に識別することが可能となる。
図3は、本発明のいくつかの局面に従った、さまざまなタイプのエンタープライズコンピューティングシステムとモバイルコンピューティングデバイスとの間でエンタープライズデータを同期させるためのコンピューティングシステム(たとえばクラウドコンピュータシステム120)を示すブロック図である。モバイルコンピューティングデバイス102は、クラウドコンピュータシステム120を介して、エンタープライズコンピューティングシステム(たとえばエンタープライズコンピューティングシステム140)とのエンタープライズデータの通信および/または同期のためにさまざまな動作を実行するように構成された1つ以上の機能ブロックまたはモジュールとして実現されてもよい。
モバイルコンピューティングデバイス102は同期マネージャ110および通信モジュール330を含み得る。通信モジュール330はクラウドコンピュータサーバ120との通信用に構成されてもよい。同期マネージャ110はソフト開発キット(software development kit:SDK)を含み得るかまたは実現し得る。SDKは、クラウドコンピュータサーバ120との通信用およびアプリケーションについてのエンタープライズデータ管理の処理用のインターフェイスを提供し得る。SDKは、さまざまなアプリケーションおよび/またはさまざまなモバイルコンピューティングデバイスによって使用され得る共通のインターフェイスを提供し得る。通信プロトコルがエンタープライズコンピューティングシステムによってサポートされているにもかかわらず、同期マネージャ110は、クラウドコンピュータシステム120とのエンタープライズデータの同期を管理し得る。エンタープライズデータは、モバイルコンピューティングデバイス上でアプリケーションが使用される場合とエンタープライズコンピューティングシステムに変更があった場合との間においてクラウドコンピュータシステム120によって同期されてもよい。
同期マネージャ110は、アプリケーションプログラムインターフェイス(API)312を含み得る。このアプリケーションプログラムインターフェイス(API)312は、アプリケーション(たとえば、アプリケーション104)がエンタープライズデータへのアクセスおよびエンタープライズデータの使用に関するさまざまな動作をエンタープライズコンピューティングシステムに要求することを可能にし得る。同期マネージャ110のすべてまたは一部はアプリケーション104において実現されてもよい。いくつかの局面においては、アプリケーションは、エンタープライズデータの同期を管理するために同期マネージャ110のAPIを呼出してもよい。APIは、アプリケーションが同期マネージャ110を用いてエンタープライズデータに関する動作を実行し得るように拡張されてもよい。API312は、エンタープライズデータ362の管理およびエンタープライズデータ362へのアクセスを行なうために、呼出し可能な機能、方法、動作、ルーチンなどを提供し得る。このような呼出し可能な機能は、ポリシーについて情報や、キャッシュ360からアクセスされたエンタープライズデータ362についての情報にアクセスするための機能を含み得る。API312により、アプリケーションが、クラウドコンピュータシステム120を介してエンタープライズコンピューティングシステムにエンタープライズデータを要求することが可能になり得る。API312は、エンタープライズデータを要求するかまたは更新するためのパラメータなどの情報を受信し得る。いくつかの局面においては、キャッシュ360は、データベース114および/またはファイルシステム116などのローカルストレージを含み得る。
同期マネージャ110は、通信分類部316、ポリシーマネージャ318、バージョン判断部320、探索モジュール322、データマネージャ324、およびデータパーサ326を含み得る。モバイルコンピューティングデバイスは、キャッシュ360などの1つ以上のメモリ記憶装置(「ローカルストレージ」)を含み得る。キャッシュ360は、エンタープライズデータ362を記憶するために用いられてもよい。エンタープライズデータ362はクラウドコンピュータシステム120から受信されてもよい。キャッシュ360は、アプリケーションによって作成または更新されたエンタープライズデータ362をオフラインで記憶し得る。ポリシー情報はエンタープライズデータ362とともに含まれてもよい。いくつかの局面においては、モバイルコンピューティングデバイスは、ポリシー情報344を記憶するデータベース114を含み得る。ポリシー情報344は、エンタープライズデータ362とともに含まれるポリシー情報に基づいていてもよい。ポリシー情報344は、マークアップ言語フォーマット(たとえばXMLフォーマット)でフォーマットされてもよい。ポリシー情報344は、エンタープライズデータを記憶および/または使用するための基準を示し得る。ポリシー情報は通信接続に基づいた基準を含んでもよい。このような基準はキャッシュを行なうためのルールを示すために用いられてもよい。
いくつかの局面においては、モバイルコンピューティングデバイス102上で実行されるアプリケーション(たとえばアプリケーション104)は、クラウドコンピュータシステム120に要求を伝達してもよい。モバイルコンピューティングデバイス102は、ネットワークを介するクラウドコンピュータシステム120との通信接続を確立するように構成された通信モジュール330を含み得る。いくつかの局面においては、アプリケーション104は、通信プロトコルに従って要求を伝達するための通信クライアント332を含み得る。通信クライアント332は、ネットワークを介してクラウドコンピュータシステム120と要求の伝達および応答の受信を行なうのに用いられてもよい。通信クライアント332は、HTTPプロトコルを用いてHTTP要求を伝達するためのHTTPクライアントを含み得る。いくつかの局面においては、通信クライアント332は、さまざまなタイプのアプリケーション、サービスおよびモバイルコンピューティングデバイスによって使用されるように構成され得るカスタム通信クライアントを用いてもよい。さまざまなモバイルコンピューティングデバイス上のアプリケーションにアクセス可能な通信プロトコルを用いることによって、クラウドコンピュータシステム120は、さまざまな通信プロトコルを用いて通信する必要なしに、さまざまなアプリケーションと通信し得る。アプリケーション104は、通信クライアント332を介して要求を伝達することによってクラウドコンピュータシステム120と通信してもよい。いくつかの局面においては、アプリケーション104は、API312を介して、同期マネージャ110に対して、通信クライアント332を介するクラウドコンピュータシステム120との通信を含み得る動作を実行することを要求してもよい。いくつかの局面においては、通信クライアント332を介して伝達された要求は、クラウドコンピュータシステム120に要求を伝達する前に、要求のための処理を実行するために、同期マネージャ110によって妨害される可能性がある。
上述のように、エンタープライズデータ362は、モバイルコンピューティングデバイス上のさまざまなアプリケーションによって読取り可能であり得るフォーマットで受信されてもよい。いくつかの局面においては、エンタープライズデータは、多くのタイプのアプリケーションによって容易に解析可能であり得るJSONフォーマットなどのフォーマットであってもよい。データパーサ326は、エンタープライズデータを解析するための動作を実行し得る。クラウドコンピュータシステム120から受信されたエンタープライズデータは、エンタープライズコンピューティングシステムから受信されたときのエンタープライズデータのフォーマットとは異なるフォーマットに従ってフォーマットされてもよい。いくつかの局面においては、エンタープライズデータは、いくつかのタイプのデータが識別可能になり得るようにフォーマットされてもよい。たとえば、エンタープライズデータは、アイテム、アイテムの集合またはブロブなど、特別なタイプのデータとしてフォーマットされてもよい。データパーサ326は、アイテム、アイテムの集合および/またはブロブを識別するようにエンタープライズデータを解析し得る。いくつかの局面においては、データパーサ326は、識別されたタイプの各々のインスタンスについてのエンタープライズデータに対応するエンタープライズデータに挿入された識別子(たとえばエンティティタグ)に基づいて、これらのデータタイプを有するこれらのエンタープライズデータを識別し得る。
データマネージャ324は、アプリケーションについてのエンタープライズデータを管理し得る。アプリケーション(たとえばアプリケーション104)は、アプリケーションに対応するエンタープライズデータについての要求を通信クライアント332を通じて伝達してもよい。データマネージャ324は、エンタープライズデータの作成、読取、更新および/または削除を含む動作を実行し得る。このような動作は、エンタープライズデータについてのアプリケーションからの要求に応じて実行されてもよい。データマネージャ324はエンタープライズデータ362をキャッシュ360に記憶し得る。識別されたデータタイプは、エンタープライズデータに含まれ得る対応するURIを有してもよい。URIは、アイテムに対応する情報の位置を特定するのに用いられてもよい。アイテムは、他のアイテムを識別するURIの情報または他の情報を含んでもよい。他のアイテムがキャッシュ360に記憶されてもよい。データマネージャ324は、アイテムについてのエンタープライズデータを要求することができる。エンタープライズデータを記憶するためにキャッシュ360上のストレージの消費を減らすために、データマネージャ324は、他のアイテムによって参照されるアイテムまたはアイテムの集合に含まれるアイテムに対応するエンタープライズデータのコピーを1つだけ記憶してもよい。いくつかの局面においては、データマネージャ324は、キャッシュ360上で探索を実行して、要求されたエンタープライズデータが存在するかどうかを判断し、もし存在するのであれば、アプリケーションにエンタープライズデータを提供し得る。しかしながら、エンタープライズデータが存在しない場合、同期マネージャ110はクラウドコンピュータシステム120への要求を開始する可能性がある。エンタープライズデータの更新、作成または削除などの他のタイプの要求の場合、データマネージャは、このような動作が実行可能かどうかを判断し得る。必要に応じて、データマネージャ324は要求を実行するためにクラウドコンピュータシステム120への要求を開始してもよい。
バージョン判断部320は、エンタープライズデータにおいて見出された各々のアイテム、アイテムの集合および/またはブロブのバージョンなどの、エンタープライズデータのバージョンを判断し得る。いくつかの局面においては、エンタープライズデータにおいては識別される各々のアイテム、アイテムの集合またはブロブは、対応するエンタープライズデータのバージョンを含み得る。エンタープライズデータのバージョンは、エンタープライズコンピューティングシステムと同期させたエンタープライズデータのバージョンに対応し得る。このバージョンは、アプリケーションからのエンタープライズデータを同期させるために用いられてもよい。いくつかの局面においては、エンタープライズデータのバージョンについての情報は、エンタープライズデータ内のアイテム、アイテムの集合またはブロブにおける識別子(たとえばエンティティタグ)によって示されてもよい。
データマネージャ324は、エンタープライズデータのバージョンを示すバージョン情報を記憶し得る。アイテム、アイテムの集合および/またはブロブはバージョン情報と関連付けて記憶されてもよい。データマネージャ324は、その更新時にエンタープライズデータのバージョンを更新してもよく、または、エンタープライズデータが作成されたときに新しいバージョンを割当ててもよい。通信モジュール330がクラウドコンピュータシステム120と通信を確立することができれば、更新、削除または作成されたエンタープライズデータが、エンタープライズコンピューティングシステムと同期させられるように、クラウドコンピュータシステム120に伝達され得る。バージョン情報には、同期用に伝達されるアイテム、アイテムの集合および/またはブロブに対応するエンタープライズデータが与えられてもよい。上述のように、クラウドコンピュータシステム120はエンタープライズデータの同期済みバージョンを維持し得る。エンタープライズデータは、アプリケーションの各々の別個のインスタンスに基づいて、またはエンタープライズデータを受信する各々の別個のモバイルコンピューティングデバイスに基づいて維持されてもよい。バージョン情報により、クラウドコンピュータシステム120が、別のアプリケーションまたはエンタープライズコンピューティングシステムによって変更されたエンタープライズデータを更新するための順序を決定することが可能になり得る。
データマネージャ324は、キャッシュ360に記憶されたエンタープライズデータ362を同期させるために、クラウドコンピュータシステム120にエンタープライズデータの更新を要求してもよい。いくつかの局面においては、データマネージャ324は、記憶されたエンタープライズデータ362の更新の要求とともにバージョン情報を伝達し得る。バージョン情報は、エンタープライズデータ362において識別されたアイテム、アイテムの集合および/またはブロブに対応し得る。クラウドコンピュータシステム120は、バージョン情報を用いて、どのアイテムを同期させるべきかを判断してもよい。更新済みバージョンを有するアイテムおよびブロブに対応するエンタープライズデータが、クラウドコンピュータシステム120から受信されてもよい。いくつかの局面においては、集合に対応するエンタープライズデータが受信されて、アイテムの集合の更新が示され得る。
ポリシーマネージャ318はエンタープライズデータ326に対応するポリシー情報を管理し得る。ポリシーマネージャ318はローカルストレージにポリシー情報344を記憶し得る。いくつかの局面においては、ポリシー情報344はXMLファイルなどのフォーマットされたファイルに記憶されてもよい。ポリシー情報344は、エンタープライズデータとともにクラウドコンピュータシステム120から受信されてもよい。いくつかの局面においては、エンタープライズデータはポリシー情報344を含んでもよい。
上述したように、ポリシー情報344はエンタープライズデータを記憶するための基準を示し得る。このような基準は、エンタープライズデータを用いるアプリケーションのタイプまたはエンタープライズデータのタイプ(たとえば、アイテム、アイテムの集合またはブロブ)に基づいていてもよい。たとえば、極秘データ(たとえば人物情報、医療情報、財務情報など)に対応するエンタープライズデータが関連付けられ得るポリシーは、エンタープライズデータがアプリケーションのアクティブなセッション中に記憶されるべきことと、アプリケーションの終了時に削除されるべきであることとを示す。別の例においては、ニュースのような非極秘情報や非個人情報が、アプリケーションのさまざまなセッションにわたってキャッシュ360に記憶されたままにされてもよい。ポリシー情報344は、ポリシーに関連付けられたエンタープライズデータを更新するための基準を示し得る。ニュースなどの頻繁に変化する可能性のあるエンタープライズデータの場合、ポリシー情報344における基準は、そのエンタープライズデータが周期的なスケジュールに従って定期的に更新可能であることを示し得る。
同期SDK110は、それが所与のさまざまな接続速度でデータを如何にキャッシュすべきかを判断するためにポリシーXMLファイル112を読出すことができる。たとえば、ユーザが集合のアイテムを変更した場合、中間接続があることに基づいて、さらに、ユーザによって編集された集合のアイテムが1つしかないことに基づいて、アイテムを同期サービス120にアップロードすることができる。ポリシーは、現在の接続速度およびポリシーの分類に基づいて動作を判断することができる。
いくつかの局面においては、ポリシー情報344における基準はモバイルコンピューティングデバイスからの通信接続に関連している可能性がある。通信接続に基づいた基準は、データ転送速度、通信接続のタイプ、通信接続に基づいた他の基準またはそれらの組合せを含み得る。
ポリシー情報における他の基準は、エンタープライズデータを記憶してこのエンタープライズデータにアクセスするための条件を含み得る。たとえば、ポリシー情報344は、アプリケーションの状態(たとえば、再開もしくは終了)または期限満了時間に基づいてエンタープライズデータを記憶するための基準を示し得る。期限満了時間は、アプリケーションがいつ終了もしくは再開するかに基づいていてもよく、または、キャッシュ360においてポリシー情報が位置特定できるかどうかに基づいていてもよい。別の例においては、ポリシー情報344は、クラウドコンピュータシステム120に更新を要求することによってポリシー情報が更新されるべき場合の条件を示してもよい。場合によっては、ポリシー情報344は、モバイルコンピューティングデバイスがいつクラウドコンピュータシステム120と通信接続するか、または、ポリシー情報がいつ検索不可能になったかに基づいて更新されてもよい。
データマネージャ324は、エンタープライズデータ362に対応するポリシー情報に基づいて、具体的には、エンタープライズデータ362において識別された各々のアイテム、アイテムの集合またはブロブに基づいて、更新されるべきエンタープライズデータ362を決定してもよい。いくつかの局面においては、API312は、エンタープライズデータについてのポリシー情報を要求するために呼出し可能なインターフェイスを含み得る。API312は、ポリシー情報およびポリシー情報の期限満了を更新するための基準を含むポリシー情報344を判断することができる呼出し可能なルーチンを提供し得る。いくつかの局面においては、ポリシー情報344の更新の許可は、エンタープライズデータのタイプ、エンタープライズデータにアクセスするアプリケーションのタイプまたはエンタープライズデータのコンテンツに関する他の基準に基づいて制限される可能性がある。
データマネージャ324は、エンタープライズデータ362に対応するポリシー情報344に基づいてエンタープライズデータ362を同期させるべき(たとえば更新すべき)かどうかを判断してもよい。通信接続に関する基準を示すポリシー情報344の場合、データマネージャ324は、モバイルコンピューティングデバイス102とクラウドコンピュータシステム120との間における通信の分類に基づいてエンタープライズデータを更新するべきかどうか判断してもよい。たとえば、データ転送速度がポリシーによって示される通信接続しきい値を満たす場合、エンタープライズデータが更新されてもよい。他の基準は、通信接続の分類に基づいて規定され得る。
通信分類部316は、モバイルコンピューティングデバイス102とクラウドコンピュータシステム120との間における通信接続についての情報を判断し得る。当該情報は、通信接続に基づいた基準がポリシーに対して満たされるかどうかを判断するためにデータマネージャによって用いられてもよい。通信分類部316は、通信接続についての情報を通信モジュール330から取得し得る。たとえば、通信分類部316は、モバイルコンピューティングデバイス102の現在の接続速度を分類してもよい。現在の接続データ転送速度は、通常の機能に応じて高速・中速・低速と分類することができる。たとえば、1MB/秒の帯域幅よりも高い現在の接続データ転送速度は「高速」と見なされ、500kB/秒から1MB/秒にわたるデータ転送速度は「中速」と見なされ、500kB/秒未満のデータ転送速度は低速と見なされ得る。いくつかの局面においては、通信分類部316は、最高の名目転送速度の百分率として転送速度を決定することができる。たとえば、最高転送速度が1MB/秒(100%)である場合、中転送速度は25%〜75%の範囲にあると見なすことができ、25%未満であればいずれも低転送速度とされる。別の例においては、通信分類部316は、接続のタイプ(たとえば、4G、3G、Wi−Fi、接続無(nonexistent)など)に基づいて通信接続を分類してもよい。
図4は、本発明のいくつかの局面に従った、モバイルコンピューティングデバイスとエンタープライズコンピューティングシステムとの間でエンタープライズデータを同期させるプロセスを示すフローチャートである。具体的には、プロセス400により、モバイルコンピューティングデバイス(たとえばモバイルスマートフォン)が、更新済みエンタープライズデータについての要求をクラウドコンピュータシステム(たとえばクラウドサービス)に送信することによって、エンタープライズコンピューティングシステムのためにエンタープライズデータを同期させることが可能になる。いくつかの局面においては、更新済みエンタープライズデータについての要求は、各々のアイテムまたはアイテムの集合についてのポリシー情報に基づいて伝達されてもよい。上述のように、ポリシー情報は、アイテムおよびアイテムの集合などのエンタープライズデータに関連付けられてもよい。ポリシー情報は、アイテム、またはアイテムを更新するための時間および方法を含むアイテムの集合を更新するためのポリシー(たとえば基準)を示し得る。いくつかの局面においては、ポリシー情報は、アイテムが通信接続のタイプに基づいて一定の態様で更新され得るように、通信接続などのアイテムを更新するための基準を示してもよい。このような基準に基づいて、プロセス400は、更新済み情報を取得するために要求がなされるべきアイテムを決定し得る。いくつかの局面においては、モバイルコンピューティングデバイス(たとえば図1のモバイルコンピューティングデバイス102)がプロセス400を実現してもよい。
ブロック405から始めて、プロセス400は、ネットワークとの無線通信接続を介して、モバイルコンピューティングデバイス上で実行されるように構成されたアプリケーションについてのエンタープライズデータを受信するステップを含み得る。たとえば、モバイルコンピューティングデバイス102は、ネットワークとの無線通信接続を介してクラウドコンピュータシステム120からエンタープライズデータを受信してもよい。エンタープライズデータは、モバイルコンピューティングデバイス102上のアプリケーション104によって用いられてもよい。エンタープライズデータは、別のフォーマットから変換されていた可能性のある1フォーマットで構造化されてもよい。変換前のエンタープライズデータのフォーマットは、変換後のフォーマットとは異なっている可能性がある。たとえば、エンタープライズデータは、エンタープライズコンピューティングシステム140のうちの1つから受信されたときのフォーマット(たとえばRESTプロトコルフォーマット)であるかもしれない。エンタープライズデータは、クラウドコンピュータシステム120によって、モバイルコンピューティングデバイス上のさまざまなアプリケーションによって容易に読出すことができるフォーマット(たとえばJSONフォーマット)に変換されてもよい。ブロック410において、プロセス400は、モバイルコンピューティングデバイス(たとえばモバイルコンピューティングデバイス102)上のキャッシュ(たとえば、キャッシュ160)に対してエンタープライズデータを記憶するステップを含み得る。
ブロック415において、プロセス400は無線通信接続の現在の通信状態を判断するステップを含み得る。たとえば、プロセス400は、モバイルコンピューティングデバイス102とクラウドコンピュータシステム120との間における現在の通信接続の通信状態を判断し得る。通信状態は、データ通信の速度、データ通信の帯域幅、通信接続がアクティブであるかどうか、またはこれらの組合せを含み得る。いくつかの局面においては、プロセス400は、モバイルコンピューティングデバイス102とクラウドコンピュータシステム120との間における通信接続のタイプを判断し得る。
ブロック420において、プロセス400は、プロセス400で受信される前に、エンタープライズデータが変換されるべきフォーマットに基づいて、エンタープライズデータにおける複数のアイテムの存在を識別するステップを含み得る。上述のように、フォーマットはJSONフォーマットであってもよい。いくつかの局面においては、エンタープライズデータは、エンタープライズデータを解析することによってアイテムが識別され得るようなフォーマットを有し得る。エンタープライズデータは、エンタープライズデータを用いるであろうアプリケーションに対応してアイテムが識別可能になるように、フォーマットされてもよい。たとえば、エンタープライズデータは、各々が人のコンタクト情報に対応している複数のアイテムを含むようにフォーマットされてもよい。エンタープライズデータは、複数のアイテムの存在を識別するために解析されてもよい。エンタープライズデータを用いるアプリケーションは、エンタープライズデータを解析してエンタープライズデータ内のアイテムを判断するように構成されてもよい。
ブロック425において、プロセス400は、エンタープライズデータについてのポリシー情報を判断するステップを含み得る。ポリシー情報は、エンタープライズデータを管理する(たとえば更新する、記憶するまたは読出す)ためのポリシーを示し得る。ポリシー情報は、エンタープライズデータにおいて識別される各々のアイテムごとに判断されてもよい。ポリシー情報は、エンタープライズデータにおいて識別される各々のアイテムについてのポリシーを示し得る。いくつかの局面においては、ポリシー情報はエンタープライズデータとは別個に受信される可能性がある。エンタープライズデータは、ポリシー情報がどこに位置しているかを示し得る。いくつかの局面においては、ポリシー情報は、ポリシーが適用され得るアイテムを示してもよい。
いくつかの局面においては、ポリシー情報は、アイテムに対応するエンタープライズデータの更新、記憶および/または削除を行なうための基準を示す。たとえば、ポリシー情報は、エンタープライズデータにアクセスし得るアプリケーションのタイプを示してもよい。別の例においては、ポリシー情報は、アイテムに対応するエンタープライズデータを記憶する時間の長さを示し得る。ポリシー情報の他の例は、アイテムを更新するための期間を含み得る。いくつかの局面においては、ポリシー情報は、通信接続の通信状態に少なくとも部分的に基づく基準を示し得る。たとえば、ポリシー情報は、通信状態に基づいてアイテムを更新するための方法を示し得る。モバイルコンピューティングデバイスとクラウドコンピュータシステムとの間における通信接続がある状態(たとえば、データ転送速度または接続のタイプ)を有する場合、いくつかのアイテムが更新され得る。更新され得るアイテムは、アプリケーションのタイプ、エンタープライズデータのタイプまたはエンタープライズデータに関する他の基準に対応し得る。アイテムに関連付けて局面および例を記載してきたが、ポリシー情報は、アイテムの集合に適用可能なポリシー、またはエンタープライズデータにおいて識別される他のタイプの情報を示す可能性もある。
ブロック430において、プロセス400は、ポリシー情報を用いて、エンタープライズデータにおける複数のアイテムのうち現在の通信状態に基づいて更新すべきアイテムを識別するステップを含み得る。アイテムは、クラウドコンピュータシステム(たとえばクラウドコンピュータシステム120)にアイテムの更新を受信するようにとの要求を送信することによって更新されてもよい。上述のように、ポリシー情報はエンタープライズデータにおけるアイテムを管理するためのポリシーを示し得る。ポリシーは、アイテムが更新されるべき頻度を示してもよい。このような頻度に基づいて、更新されるべきアイテムが識別され得る。ポリシーは、どのアイテムが更新されるべきであるかに基づいて、現在の通信状態などの基準を示し得る。たとえば、ポリシー情報は、モバイルコンピューティングデバイス(たとえばモバイルコンピューティングデバイス102)とクラウドコンピュータシステム(たとえばクラウドコンピュータシステム120)との間における無線通信接続の通信状態が、いつ、特定のしきい値データ転送速度(たとえば3Gまたは4G通信)を満たすかに基づいて、アイテムを更新するためのポリシーを示してもよい。ポリシーによって示されるしきい値データ転送速度などの通信状態は、アイテムの更新を受信するための適切な帯域幅が存在することを確実にし得る。
ブロック435において、プロセス400は、識別されたアイテムに対応する更新済みエンタープライズデータについての要求を送信するステップを含み得る。たとえば、モバイルコンピューティングデバイス102は、識別されたアイテムに対応する更新済みエンタープライズデータについての要求をクラウドコンピュータシステム120に送信してもよい。いくつかの局面においては、当該要求はアイテムのバージョンを示し得るが、これをクラウドコンピュータシステム120が用いて、アイテムに対応する更新済みエンタープライズデータが存在するかどうかを判断することもあり得る。いくつかの局面においては、当該要求は、モバイルコンピューティングデバイス上などに、アイテムのためにオフラインで更新されたエンタープライズデータを含み得る。
ブロック440において、プロセス400は、ポリシー情報に基づいて更新されるべきであると識別されたアイテムについての更新済みエンタープライズデータを受信するステップを含み得る。更新済みエンタープライズは、クラウドコンピュータシステムから受信されてもよい。クラウドコンピュータシステムは、アイテムについての更新済みエンタープライズデータについての要求が受信されると、更新を送信し得る。更新済みエンタープライズデータは、モバイルコンピューティングデバイスにおいて記憶されたアイテムに対応するエンタープライズデータのバージョンが最新のものではないと判断されると、送信されてもよい。いくつかの局面においては、更新済みエンタープライズデータは、アイテムに対応するすべてのエンタープライズデータではなく、アイテムについてのエンタープライズデータの変更を含み得る。
ブロック445において、プロセス400は、識別されたアイテムについての更新済みエンタープライズデータでキャッシュを更新するステップを含み得る。たとえば、モバイルコンピューティングデバイス上のキャッシュ(たとえば、モバイルコンピューティングデバイス102のキャッシュ160)は、クラウドコンピュータシステムから受信された更新済みエンタープライズデータを用いて更新されてもよい。いくつかの局面においては、キャッシュは、エンタープライズデータのうち変化したアイテムに対応する部分とともに更新され得る。当該プロセスはブロック450で終了する。
プロセス400が例示的であること、ならびに変形および修正が可能であることが理解される。連続して記載されたステップは並行して実行されてもよく、ステップの順序は変更されてもよく、ステップは修正され、組合わされ、追加されるかまたは省略されてもよい。いくつかの局面では、プロセス400は、エンタープライズデータがネットワークとの無線通信接続を介して受信される場合に実現されてもよい。たとえば、プロセス400は、エンタープライズデータがクラウドコンピュータシステム(たとえばクラウドコンピュータシステム120)からネットワークとの無線通信接続を介して受信される際に実行されてもよい。なお、プロセス400は、ネットワークとの無線通信接続を介する複数の通信で受信されるエンタープライズデータに対して同時に実行可能である。いくつかの局面においては、ブロック415〜445は、モバイルコンピューティングデバイスのキャッシュ上に記憶されたエンタープライズデータを更新するために実現されてもよい。いくつかの局面においては、アイテムがネットワークとの無線通信接続の現在の通信状態に基づいて更新されるべきものと識別された場合、ブロック430〜445が実現され得る。さらに、ブロック440および445は、アイテムについての更新済みエンタープライズデータが受信されたときにモバイルコンピューティングデバイス上のキャッシュを更新するように実現され得る。
図5は、本発明のいくつかの局面に従った、モバイルコンピューティングデバイスとエンタープライズコンピューティングシステムとの間でエンタープライズデータを同期させるプロセス500を示すフローチャートである。具体的には、プロセス500により、クラウドコンピュータシステム(たとえばクラウドコンピュータシステム120)が、エンタープライズコンピューティングシステムとモバイルコンピューティングデバイスとの間でエンタープライズデータを同期させることが可能となる。いくつかの局面においては、クラウドコンピュータシステム(たとえばクラウドコンピュータシステム120)がプロセス500を実現してもよい。
ブロック505から始めて、プロセス500は、通信プロトコルを用いて、ネットワーク通信接続を介してエンタープライズコンピューティングシステムからエンタープライズデータを受信するステップを含み得る。たとえば、クラウドコンピュータシステム120は、通信プロトコル(たとえば、REST通信プロトコル)を用いてエンタープライズコンピューティングシステム134からエンタープライズデータを受信してもよい。エンタープライズデータは、エンタープライズコンピューティングシステムのためのフォーマット(たとえばRESTデータフォーマット)で構造化されてもよい。クラウドコンピュータシステムおよびエンタープライズコンピューティングシステムは異なる地理的位置に位置し得る。
ブロック510において、プロセス500は、エンタープライズデータが複数のアイテムと当該複数のアイテムに関連付けられたポリシー情報とを含むと判断するステップを含み得る。たとえば、クラウドコンピュータシステム120は、エンタープライズデータを解析して、エンタープライズデータ内のアイテムを識別してもよい。いくつかの局面においては、エンタープライズデータは、各々の識別されたアイテムについてのポリシー情報を含み得る。
ブロック515において、プロセス500は、エンタープライズデータが受信された1つのフォーマットで構造化されたエンタープライズデータをさまざまなフォーマットに変換するステップを含み得る。変換されたフォーマットのエンタープライズデータは、複数のアイテムのうち各々のアイテムに対応するエンタープライズデータを識別するようにモバイルコンピューティングデバイスによって解析可能であり得る。変換されたフォーマットのエンタープライズデータは、エンタープライズデータにおいて識別された各々のアイテムに対応するポリシー情報を識別するように解析可能であり得る。たとえば、さまざまなフォーマットは、エンタープライズコンピューティングシステムとの通信用に用いられた通信プロトコルなどのさまざまな通信プロトコルを認識することなく、モバイルコンピューティングデバイスによって容易に解析することができるJSONフォーマットであってもよい。
ブロック520において、プロセス500は、変換済みエンタープライズデータを変換されたフォーマットで、無線ネットワークを介して複数のモバイルコンピューティングデバイスに送信するステップを含み得る。変換されたエンタープライズデータは、変換されたフォーマットをサポートする通信プロトコルを用いて送信されてもよい。
プロセス500が例示的であること、ならびに変形および修正が可能であることが理解される。連続的に記載されるステップは並列に実行されてもよく、ステップの順序は異なっていてもよく、ステップは修正され、組合わされ、追加されるかまたは省略されてもよい。いくつかの局面では、プロセス500は、エンタープライズデータがエンタープライズコンピューティングシステムから受信される場合に実現されてもよい。
図6は、本発明のさまざまな局面が実現され得るモバイルコンピューティングデバイスを示す機能ブロック図である。図7は、本発明のさまざまな局面が実現され得るクラウドコンピュータシステムを示す機能ブロック図である。本発明の原理を実行するために、モバイルコンピューティングデバイスおよびクラウドコンピュータシステムの機能的ブロックは、ハードウェア、ソフトウェアまたはハードウェアとソフトウェアとの組合せによって実現されてもよい。当業者であれば、図6および図7に記載される機能的ブロックが、上述のとおり本発明の原理を実現するためにサブブロックに組合せされるかまたは分割され得ることを理解する。したがって、この明細書中の記載は、この明細書中に記載される機能的ブロックの如何なる実現可能な組合せまたは分離またはさらなる定義をもサポートし得る。
図6を参照すると、エンタープライズデータをエンタープライズコンピューティングシステム(図示せず)と同期させるためのモバイルコンピューティングデバイス600が提供され得る。モバイルコンピューティングデバイス600は、第1の受信ユニット610、記憶ユニット620、第1の判断ユニット630、第1の識別ユニット640、第2の判断ユニット650、第2の識別ユニット660、送信ユニット670、第2の受信ユニット680および更新ユニット690を含み得る。
第1の受信ユニット610は、モバイルコンピューティングデバイス上で実行されるように構成されたアプリケーションについてのエンタープライズデータを、ネットワークとの無線通信接続を介して受信し得る。第2のフォーマットで構造化された元のエンタープライズデータから変換されたエンタープライズデータが第1のフォーマットで構造化されてもよい。記憶ユニット620は、モバイルコンピューティングデバイス600上のキャッシュに対してエンタープライズデータを記憶してもよい。第1の判断ユニット630は、無線通信接続の現在の通信状態を判断し得る。第1の識別ユニット640は、第1のフォーマットに基づいてエンタープライズデータ内の複数のアイテムの存在を識別し得る。第2の判断ユニット650は、エンタープライズデータについてのポリシー情報を判断し得る。ポリシー情報は、複数のアイテムのうち各々のアイテムを更新するための基準を示してもよく、当該基準は通信接続の通信状態に少なくとも部分的に基づいている。第2の識別ユニット660は、ポリシー情報を用いて、エンタープライズデータ内の複数のアイテムのうち現在の通信状態に基づいて更新すべきアイテムを識別し得る。送信ユニット670は、識別されたアイテムに対応する更新済みエンタープライズデータについての要求を、無線通信接続を介して送信し得る。第2の受信ユニット680は、識別されたアイテムについての更新済みエンタープライズデータを受信し得る。更新ユニット690は、識別されたアイテムについての更新済みエンタープライズデータでキャッシュを更新し得る。一局面においては、受信されたエンタープライズデータは、JavaScriptオブジェクト表記フォーマットで構造化される。一局面においては、エンタープライズデータはエンタープライズサーバからクラウドコンピュータシステムを介して受信され、エンタープライズデータは、受信されたときのフォーマットで構造化され、当該フォーマットは、RESTフォーマットで構造化されたエンタープライズデータの変換に基づいている。一局面においては、エンタープライズデータにおけるアイテムは、統一的資源識別子を含み、統一的資源識別子は、アイテムについて情報の位置を示す。一局面においては、エンタープライズデータは、アイテムの第1の集合およびアイテムの第2の集合を含み、アイテムの第1の集合およびアイテムの第2の集合は、第1のアイテムを含む。一局面においては、エンタープライズデータは、エンタープライズデータがアイテム、アイテムの集合またはブロブを含むかどうか示す情報を含む。一局面においては、現在の通信状態は、モバイルコンピューティングデバイス600とネットワークとの間における無線通信接続のデータ転送速度に基づいている。一局面においては、要求は、識別されたアイテムに関連付けられたバージョン情報を示し、更新済みエンタープライズデータはバージョン情報に基づいて判断される。一局面においては、エンタープライズデータはアイテムを含む。ポリシーは、キャッシュにアイテムを記憶するための期間を示す。当該期間はアイテムに含まれたコンテンツに基づいている。一局面においては、キャッシュに記憶されたエンタープライズデータはアイテムを含み、ポリシーは、アイテムの各々を更新するための期間を示す。
図7を参照すると、クラウドコンピュータシステム700は、モバイルコンピューティングデバイスとエンタープライズコンピューティングシステムとの間でエンタープライズデータを同期させるために提供され得る。クラウドコンピュータシステム700は、受信ユニット710、第1の判断ユニット720、変換ユニット730および送信ユニット740を含み得る。
受信ユニット710は、第1の通信プロトコルを用いて、ネットワーク通信接続を介してエンタープライズコンピューティングシステム(図示せず)からエンタープライズデータを受信し得る。エンタープライズデータは、エンタープライズコンピューティングシステムのための第1のフォーマットで構造化されてもよい。クラウドコンピュータシステム700およびエンタープライズコンピューティングシステムは異なる地理的位置に位置し得る。第1の判断ユニット720は、エンタープライズデータが複数のアイテムと当該複数のアイテムに関連付けられたポリシー情報とを含むと判断し得る。変換ユニット730は、第1のフォーマットで構造化されたエンタープライズデータを第2のフォーマットに変換し得る。第2のフォーマットは、複数のアイテムのうち各々のアイテムに対応するエンタープライズデータを識別し、かつ各々のアイテムに対応するポリシー情報を識別するようにモバイルコンピューティングデバイスによって解析可能である。送信ユニット740は、第2の通信プロトコルを用いて、第2のフォーマットで構造化された変換済みエンタープライズデータを、無線ネットワークを介して複数のモバイルコンピューティングデバイスに送信し得る。一局面においては、第1の通信プロトコルはRESTプロトコルであり、第2の通信プロトコルは第1の通信プロトコルとは異なっている。一局面においては、第1のフォーマットで構造化されたエンタープライズデータは、レプレゼンテーショナル・ステート・トランスファー(REST)フォーマットである。一局面においては、クラウドコンピュータシステム700はさらに記憶ユニット750を含み得る。記憶ユニット750は、アイテムの各々に対応するエンタープライズデータに識別子を記憶し得る。当該識別子はアイテムを識別する。一局面においては、クラウドコンピュータシステム700はさらに識別ユニット760および第2の判断ユニット770を含み得る。識別ユニット760は、複数のアイテムにおけるアイテムの少なくとも2つの集合を識別し得る。第2の判断ユニット770は、あるアイテムがアイテムの少なくとも2つの集合に含まれると判断し得る。エンタープライズデータを第1のフォーマットから第2のフォーマットに変換するステップは、変換されるエンタープライズデータに追加情報を挿入するステップを含み得る。追加情報によってアイテムの各々の集合が識別される。
図8は、局面のうち1つを実現するための分散型システム800の簡略図を示す。分散型システム800は、コンピュータシステム100のすべてもしくは一部の要素、コンピュータシステム200のすべてもしくは一部の要素、コンピュータシステム300のすべてもしくは一部の要素、またはそれらの組合せを実現することができる。分散型システム800は、動作、方法および/またはプロセス(たとえば図4のプロセス400および図5のプロセス500)を実現することができる。例示される局面では、分散型システム800は1つ以上のクライアントコンピューティングデバイス802,804,806および808を含み、それらは、1つ以上のネットワーク810にわたってウェブブラウザ、所有権付きクライアント(たとえばOracle Forms)などのようなクライアントアプリケーションを実行および動作させるよう構成される。いくつかの局面では、1つ以上のクライアントコンピューティングデバイス802〜808は図1のモバイルコンピューティングデバイス102を含み得る。サーバ812はリモートクライアントコンピューティングデバイス802,804,806および808とネットワーク810を介して通信可能に結合されてもよい。サーバ812は、モバイルコンピューティングデバイス102またはクラウドコンピュータシステム120を含み得る。
さまざまな局面では、サーバ812は、システムのコンポーネントのうちの1つ以上によって提供される1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。サービスまたはソフトウェアアプリケーションは非仮想および仮想環境を含み得る。仮想環境は、二次元表現であれ三次元(3D)表現であれ、ページに基づく論理環境、またはその他であれ、仮想イベント、トレードショー、シミュレータ、クラスルーム、ショッピング交換、およびエンタープライズに対して用いられるものを含み得る。いくつかの局面では、これらのサービスは、ウェブに基づくサービスもしくはクラウドサービスとして、またはSoftware as a Service(SaaS)モデルの下で、クライアントコンピューティングデバイス802,804,806および/または808のユーザに対して提供されてもよい。クライアントコンピューティングデバイス802,804,806および/または808を動作させるユーザは、次いで、1つ以上のクライアントアプリケーションを利用してサーバ812と対話して、これらのコンポーネントによって提供されるサービスを利用してもよい。
図に示される構成では、システム800のソフトウェアコンポーネント818,820および822はサーバ812上において実現されるものとして示される。他の局面では、システム800のコンポーネントの1つ以上および/またはこれらのコンポーネントによって提供されるサービスは、クライアントコンピューティングデバイス802,804,806および/または808の1つ以上によって実現されてもよい。クライアントコンピューティングデバイスを動作させるユーザは、次いで、1つ以上のクライアントアプリケーションを利用して、これらのコンポーネントによって提供されるサービスを用いてもよい。これらのコンポーネントは、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組合せにおいて実現されてもよい。分散型システム800とは異なる可能性のあるさまざまな異なるシステム構成が実現可能であることが理解されるべきである。図に示される局面は、したがって、局面のシステムを実現するための分散型システムの一例であり、限定的であるようには意図されない。
クライアントコンピューティングデバイス802,804,806および/または808は、携帯可能な手持ち式の装置(たとえばiPhone(登録商標)、セルラー電話、iPad(登録商標)、計算タブレット、携帯情報端末(PDA))またはウェアラブルデバイス(たとえばGoogle Glass(登録商標)頭部装着型ディスプレイ)であってもよく、Microsoft Windows Mobile(登録商標)などのようなソフトウェア、および/もしくは、iOS、Windows Phone、Android、BlackBerry 10、Palm OSなどのようなさまざまなモバイルオペレーティングシステムを動作させ、インターネット、電子メール、ショートメッセージサービス(short message service:SMS)、Blackberry(登録商標)または他の通信プロトコルで可能化される。クライアントコンピューティングデバイスは汎用パーソナルコンピュータであってもよく、一例として、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)および/またはLinux(登録商標)オペレーティングシステムのさまざまなバージョンを動作させるパーソナルコンピュータおよび/またはラップトップコンピュータを含む。クライアントコンピューティングデバイスは、たとえばGoogle Chrome OSなどのようなさまざまなGNU/Linuxオペレーティングシステムを含むが、これらに限定されない、さまざまな市販のUNIX(登録商標)またはUNIXのようなオペレーティングシステムのいずれをも動作させるワークステーションコンピュータであり得る。代替的に、または加えて、クライアントコンピューティングデバイス802,804,806および808は、ネットワーク810を介して通信することができる、シンクライントコンピュータ、インターネットにより可能化されるゲームシステム(たとえばKinect(登録商標)ジェスチャ入力装置付きの、または当該ジェスチャ入力装置なしのMicrosoft Xboxゲームコンソール)および/または個人メッセージ伝達装置などのような任意の他の電子装置であってもよい。
例示的な分散型システム800は4つのクライアントコンピューティングデバイスとともに示されているが、任意の数のクライアントコンピューティングデバイスがサポートされてもよい。センサを備えたデバイスなどの他のデバイスがサーバ812と対話してもよい。
分散型システム800におけるネットワーク810は、TCP/IP(伝送制御プロトコル/インターネットプロトコル)、SNA(システムネットワーク体系)、IPX(インターネットパケット交換)、AppleTalkなどを含むがこれらに限定されない、市販のさまざまなプロトコルのうちのいずれを用いてもデータ通信をサポートすることができる、当業者が精通している任意のタイプのネットワークであってもよい。単なる例示として、ネットワーク810は、イーサネット(登録商標)、トークンリングなどに基づくような、ローカルエリアネットワーク(LAN)であり得る。ネットワーク810はワイドエリアネットワークおよびインターネットであり得る。それは、仮想プライベートネットワーク(virtual private network:VPN)、イントラネット、エクストラネット、公衆交換電話網(public switched telephone network:PSTN)、赤外線ネットワーク、無線ネットワーク(たとえば米国電気電子学会(Institute of Electrical and Electronics:IEEE)802.11のプロトコル一式、Bluetooth(登録商標)、および/もしくは任意の他の無線プロトコルのいずれかに従って動作するネットワーク)を含むがこれらに限定されない仮想ネットワーク;ならびに/またはこれらの任意の組合せおよび/もしくは他のネットワークを含み得る。
サーバ812は、1つ以上の汎用コンピュータ、特別化されたサーバコンピュータ(たとえばPC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント型サーバなどを含む)、サーバファーム、サーバクラスタ、または他の任意の適切な構成および/もしくは組合せからなってもよい。サーバ812は、仮想オペレーティングシステムを動作させる1つ以上の仮想マシン、または仮想化を伴う他のコンピューティングアーキテクチャを含み得る。論理記憶装置からなる1つ以上の柔軟なプールを仮想化してサーバのために仮想記憶装置を維持することができる。仮想ネットワークを、サーバ812によって、ソフトウェア定義のネットワーク接続を用いて制御することができる。さまざまな局面において、サーバ812は、前述の開示に記載される1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。たとえば、サーバ812は、本発明の局面に従って上記の処理を実行するためのサーバに対応してもよい。
サーバ812は、上に論じられたもののうちのいずれかを含むオペレーティングシステム、および市販のいずれのサーバオペレーティングシステムを動作させてもよい。サーバ812は、さらに、HTTPサーバ、FTPサーバ、CGI(コモンゲートウェイインターフェイス)サーバ、JAVA(登録商標)サーバ、データベースサーバなどを含むさまざまなさらなるサーバアプリケーションおよび/または中間層アプリケーションのうちいずれを動作させてもよい。例示的なデータベースサーバは、Oracle、Microsoft、Sybase、IBM(インターナショナルビジネスマシンズ)などから市販されているものを含むが、これらに限定されない。
いくつかの実現例では、サーバ812は、クライアントコンピューティングデバイス802,804,806および808のユーザから受信されるデータフィードおよび/またはイベント更新を解析および整理統合するために1つ以上のアプリケーションを含み得る。一例として、データフィードおよび/またはイベント更新は、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能計量ツール(たとえばネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通監視などに関係する実時間イベントを含み得る、1つ以上の第三者情報源および連続的なデータストリームから受信される、Twitter(登録商標)フィード、Facebook(登録商標)更新または実時間更新を含み得るが、これらに限定されない。サーバ812は、さらに、データフィードおよび/または実時間イベントをクライアントコンピューティングデバイス802,804,806および808の1つ以上の表示装置を介して表示するために1つ以上のアプリケーションを含み得る。
分散型システム800は、さらに、1つ以上のデータベース814および816を含んでもよい。データベース814および816はさまざまな位置にあってもよい。例として、データベース814および816の1つ以上はサーバ812に局在する(および/またはサーバ812に常駐する)非一時的な記憶媒体にあってもよい。代替的には、データベース814および816は、サーバ812から遠隔にあり、ネットワークに基づくかまたは専用の接続を介してサーバ812と通信状態にあってもよい。1組の局面では、データベース814および816は記憶域ネットワーク(SAN)にあってもよい。同様に、サーバ812に帰する機能を実行するための任意の必要なファイルが、適宜、サーバ812上においてローカルに、および/または遠隔で記憶されてもよい。1組の局面では、データベース814および816はOracleによって提供されるデータベースのような、SQLフォーマットされたコマンドに応答してデータを記憶、更新および検索取得するように適合されるリレーショナルデータベースを含んでもよい。1つ以上のデータベース814および816はデータベース114を含み得るかまたはデータベース114として実現可能である。
図9は、本発明の局面に従って、局面のシステムの1つ以上のコンポーネントによって提供されるサービスがクラウドサービスとして提供され得るシステム環境900の1つ以上のコンポーネントの簡略ブロック図である。システム環境900は、コンピュータシステム100のすべてもしくは一部の要素、コンピュータシステム200のすべてもしくは一部の要素、コンピュータシステム300のすべてもしくは一部の要素、またはそれらの組合せを含むかまたは実現することができる。システム環境900は動作、方法、および/またはプロセス(たとえば図4のプロセス400または図5のプロセス500)を実現することができる。例示される局面では、システム環境900は、クラウドサービスを提供するクラウドインフラストラクチャシステム902と対話するようユーザによって使用され得る1つ以上のクライアントコンピューティングデバイス904,906および908を含む。クライアントコンピューティングデバイスは、クラウドインフラストラクチャシステム902と対話して、クラウドインフラストラクチャシステム902によって提供されるサービスを用いるよう、クライアントコンピューティングデバイスのユーザによって使用され得るウェブブラウザ、所有権付きクライアントアプリケーション(たとえばOracle Forms)または何らかの他のアプリケーションなどのようなクライアントアプリケーションを動作させるよう構成されてもよい。
図に示されるクラウドインフラストラクチャシステム902は図示されるもの以外のコンポーネントを有し得ることが理解されるべきである。さらに、図に示される局面は、本発明の局面を組み込み得るクラウドインフラストラクチャシステムの一例に過ぎない。たとえば、クラウドインフラストラクチャシステム902はクラウドコンピュータシステム120を含むかまたは実現することができる。いくつかの他の局面では、クラウドインフラストラクチャシステム902は、図に示されるよりも多いかもしくは少ないコンポーネントを有してもよく、2つ以上のコンポーネントを組合せてもよく、またはコンポーネントの異なる構成もしくは配置を有してもよい。
クライアントコンピューティングデバイス904,906および908は、クライアントコンピューティングデバイス802,804,806および808に対して上記されたものと同様のデバイスであってもよい。
例示的なシステム環境900は3つのクライアントコンピューティングデバイスとともに示されているが、任意の数のクライアントコンピューティングデバイスがサポートされてもよい。センサを備えたデバイスなどのような他のデバイスがクラウドインフラストラクチャシステム902と対話してもよい。
ネットワーク910はクライアント904,906および908とクラウドインフラストラクチャシステム902との間におけるデータの通信および交換を容易にしてもよい。各ネットワークは、ネットワーク810に対して上記されたものを含む、さまざまな市販のプロトコルのいずれかを用いてデータ通信をサポートすることができる、当業者が精通している如何なるタイプのネットワークであってもよい。
クラウドインフラストラクチャシステム902は、サーバ812に対して上記されたものを含み得る1つ以上のコンピュータおよび/またはサーバを備えてもよい。
特定の局面では、クラウドインフラストラクチャシステムによって提供されるサービスは、オンラインデータストレージおよびバックアップソリューション、ウェブに基づく電子メールサービス、運営管理されるオフィススイートおよびドキュメントコラボレーションサービス、データベース処理、管理される技術サポートサービスなどのような、オンデマンドでクラウドインフラストラクチャシステムのユーザに利用可能にされるサービスのホストを含んでもよい。クラウドインフラストラクチャシステムによって提供されるサービスは動的にスケーリングしてそのユーザのニーズを満たすことができる。クラウドインフラストラクチャシステムによって提供されるあるサービスのある具体的なインスタンス化は本明細書では「サービスインスタンス」と称される。一般的に、クラウドサービスプロバイダのシステムからインターネットなどのような通信ネットワークを介してユーザに利用可能にされる如何なるサービスも「クラウドサービス」と称される。典型的には、パブリックなクラウド環境においては、クラウドサービスプロバイダのシステムを形成するサーバおよびシステムは顧客自身のオンプレミスのサーバおよびシステムとは異なる。たとえば、クラウドサービスプロバイダのシステムはアプリケーションを運営管理してもよく、ユーザは、インターネットなどのような通信ネットワークを介して、オンデマンドで、アプリケーションをオーダーし使用してもよい。
いくつかの例では、コンピュータネットワーククラウドインフラストラクチャにおけるサービスは、ストレージ、運営管理されるデータベース、運営管理されるウェブサーバ、ソフトウェアアプリケーション、またはクラウドベンダーによってユーザに提供されるかもしくは他の態様で当該技術分野において公知であるような他のサービスに対する保護されたコンピュータネットワークアクセスを含んでもよい。たとえば、サービスは、クラウド上の遠隔ストレージに対する、インターネットを介する、パスワード保護されたアクセスを含み得る。別の例として、サービスは、ネットワーク接続された開発者による個人的な使用のために、ウェブサービスに基づく運営管理されたリレーショナルデータベースおよびスクリプト言語ミドルウェアエンジンを含み得る。別の例として、サービスは、クラウドベンダーのウェブサイトにおいて運営管理される電子メールソフトウェアアプリケーションに対するアクセスを含み得る。
特定の局面では、クラウドインフラストラクチャシステム902は、セルフサービスの、サブスクリプションに基づく、順応性を持ってスケーラブルで、信頼性があり、非常に利用可能性があり、およびセキュリティ上安全な態様で顧客に対して配送されるアプリケーションの組、ミドルウェア、データベースサービス提供を含んでもよい。そのようなクラウドインフラストラクチャシステムの一例は本譲受人によって提供されるOracle Public Cloudである。
時としてビッグデータとも称される大量のデータは、インフラストラクチャシステムによって、多数のレベルにおいて、および異なるスケールで運営管理および/または操作され得る。そのようなデータは、非常に大きくかつ複雑であるため典型的なデータベース管理ツールまたは従来のデータ処理アプリケーションを用いて処理することが困難となり得るデータセットを含む可能性もある。たとえば、テラバイトのデータはパーソナルコンピュータまたはそれらのラックベースの対応物を用いて記憶、検索取得および処理することは難しいかもしれない。そのようなサイズのデータは、最も流通しているリレーショナルデータベース管理システムおよびデスクトップ統計および視覚化パッケージを用いて扱うことは困難であり得る。それらは、データを許容可能な経過時間内に捕捉しキュレーションし管理し処理するよう、一般的に用いられるソフトウェアツールの構造を超えて、何千ものサーバコンピュータを動作させる巨大に並列な処理ソフトウェアを必要とし得る。
極端に大きなデータセットは、解析者および研究者によって記憶および操作されることにより、大量のデータを視覚化し、傾向を検出し、および/または他の場合にはデータと対話することができる。並列にリンクされた何十、何百または何千ものプロセッサが、そのようなデータに作用して、それを呈示するか、またはそのデータもしくはそれが表現するものに対する外部の力をシミュレーションすることができる。これらのデータセットは、エンタープライズデータ、データベースにおけるかまたは他の態様で構造化されたモデルに従って編成されるような構造化されたデータ、および/または構造化されないデータ(たとえば電子メール、画像、データブロブ(バイナリラージオブジェクト)、ウェブページ、複雑なイベント処理)を伴い得る。より多い(またはより少ない)計算リソースを目標として相対的に迅速に集中させるある局面の能力を活用することによって、クラウドインフラストラクチャシステムは、ビジネス、行政機関、研究組織、私人、同じ意見の個人もしくは組織のグループ、または他のエンティティからの要望に基づいて大きなデータセットに対してタスクを実行するよう、より適切に利用可能になり得る。
さまざまな局面では、クラウドインフラストラクチャシステム902は、クラウドインフラストラクチャシステム902によって提供されるサービスに対する顧客のサブスクリプションを自動的にプロビジョニングし、管理し、およびトラッキングするように適合されてもよい。クラウドインフラストラクチャシステム902はクラウドサービスをさまざまな展開モデルを介して提供してもよい。たとえば、サービスは、クラウドインフラストラクチャシステム902が(たとえばOracleによって所有される)クラウドサービスを販売する組織によって所有され、サービスが一般大衆またはさまざまな業界エンタープライズに対して利用可能にされるパブリッククラウドモデルの下で提供されてもよい。別の例として、サービスは、クラウドインフラストラクチャシステム902が単一の組織に対してのみ動作され、その組織内における1つ以上のエンティティに対してサービスを提供され得るプライベートクラウドモデルの下で提供されてもよい。クラウドサービスは、さらに、クラウドインフラストラクチャシステム902およびクラウドインフラストラクチャシステム902によって提供されるサービスが関連コミュニティにおけるいくつかの組織によって共有されているコミュニティクラウドモデルの下で提供されてもよい。クラウドサービスは、さらに、2つ以上の異なるモデルの組合せであるハイブリッドクラウドモデルの下で提供されてもよい。
いくつかの局面では、クラウドインフラストラクチャシステム902によって提供されるサービスは、Software as a Service(SaaS)カテゴリ、Platform as a Service(PaaS)カテゴリ、Infrastructure as a Service(IaaS)カテゴリ、またはハイブリッドサービスを含む他のサービスのカテゴリの下で提供される、1つ以上のサービスを含んでもよい。顧客は、サブスクリプションオーダーを介して、クラウドインフラストラクチャシステム902によって提供される1つ以上のサービスをオーダーしてもよい。クラウドインフラストラクチャシステム902は、次いで、処理を実行して、顧客のサブスクリプションオーダーにおけるサービスを提供する。
いくつかの局面では、クラウドインフラストラクチャシステム902によって提供されるサービスは、アプリケーションサービス、プラットフォームサービスおよびインフラストラクチャサービスを含み得るがこれらに限定されない。いくつかの例では、アプリケーションサービスはクラウドインフラストラクチャシステムによってSaaSプラットフォームを介して提供されてもよい。SaaSプラットフォームは、SaaSカテゴリに入るクラウドサービスを提供するよう構成されてもよい。たとえば、SaaSプラットフォームは、一式のオンデマンドアプリケーションを統合された開発および展開プラットフォーム上で構築し配送する能力を提供してもよい。SaaSプラットフォームは、SaaSサービスを提供するための基礎をなすソフトウェアおよびインフラストラクチャを管理および制御し得る。SaaSプラットフォームによって提供されるサービスを利用することによって、顧客はクラウドインフラストラクチャシステムにおいて実行されるアプリケーションを利用することができる。顧客は、別のライセンスおよびサポートを購入する必要なくアプリケーションサービスを獲得することができる。さまざまな異なるSaaSサービスが提供されてもよい。例としては、大規模な組織に対する売上実績管理、エンタープライズ統合、および事業柔軟性に対するソリューションを提供するサービスを含むがこれらに限定されない。
いくつかの局面では、プラットフォームサービスはクラウドインフラストラクチャシステムによってPaaSプラットフォームを介して提供されてもよい。PaaSプラットフォームはPaaSカテゴリの範疇にあるクラウドサービスを提供するよう構成されてもよい。プラットフォームサービスの例は、(Oracleなどの)組織が既存のアプリケーションを共有される共通のアーキテクチャにおいて整理統合することができるサービス、およびプラットフォームによって提供される共有されるサービスを活用する新たなアプリケーションを構築する能力を含み得るが、これらに限定されない。PaaSプラットフォームはPaaSサービスを提供するための基礎をなすソフトウェアおよびインフラストラクチャを管理および制御してもよい。顧客は、クラウドインフラストラクチャシステムによって提供されるPaaSサービスを、別のライセンスおよびサポートを購入する必要なく獲得することができる。プラットフォームサービスの例は、Oracle Java Cloud Service(JCS)、Oracle Database Cloud Service(DBCS)などを含むが、これらに限定されない。
PaaSプラットフォームによって提供されるサービスを利用することによって、顧客は、クラウドインフラストラクチャシステムによってサポートされるプログラミング言語およびツールを使用することができ、展開されたサービスを制御することができる。いくつかの局面では、クラウドインフラストラクチャシステムによって提供されるプラットフォームサービスは、データベースクラウドサービス、ミドルウェアクラウドサービス(たとえばOracle Fusion Middlewareサービス)、およびJavaクラウドサービスを含んでもよい。一局面では、データベースクラウドサービスは、組織がデータベースリソースをプールし、顧客にDatabase as a Serviceをデータベースクラウドの形式で提供することを可能にする、共有型のサービス展開モデルをサポートしてもよい。ミドルウェアクラウドサービスは、顧客のためのプラットフォームを提供してさまざまなビジネスアプリケーションを開発および展開してもよく、Javaクラウドサービスは顧客のためのプラットフォームを提供してJavaアプリケーションをクラウドインフラストラクチャシステムにおいて展開してもよい。
さまざまな異なるインフラストラクチャサービスがIaaSプラットフォームによってクラウドインフラストラクチャシステムにおいて提供されてもよい。インフラストラクチャサービスは、SaaSプラットフォームおよびPaaSプラットフォームによって提供されるサービスを利用する顧客に対するストレージ、ネットワーク、他の基礎的計算リソースなどのような基礎をなす計算リソースの管理および制御を容易にする。
特定の局面では、クラウドインフラストラクチャシステム902は、さらに、クラウドインフラストラクチャシステムの顧客に対してさまざまなサービスを提供するよう用いられるリソースを提供するためのインフラストラクチャリソース930を含んでもよい。一局面では、インフラストラクチャリソース930は、PaaSプラットフォームおよびSaaSプラットフォームによって提供されるサービスを実行するよう、サーバ、ストレージおよびネットワーク接続リソースなどのような、ハードウェアの予め統合され最適化された組合せを含んでもよい。
いくつかの局面では、クラウドインフラストラクチャシステム902におけるリソースは、複数のユーザによって共有され、要望に応じて動的に再割当てされてもよい。加えて、リソースはユーザに対して異なる時間ゾーンで割当てられてもよい。たとえば、クラウドインフラストラクチャシステム930は、第1の時間ゾーンにおける第1の組のユーザがクラウドインフラストラクチャシステムのリソースをある特定化された時間の間利用することを可能にし、次いで、異なる時間ゾーンに位置する別の組のユーザに対する同じリソースの再割当てを可能にし、それによって、リソースの利用を最大限にしてもよい。
特定の局面では、クラウドインフラストラクチャシステム902のさまざまなコンポーネントまたはモジュールによって、かつクラウドインフラストラクチャシステム902によって提供されるサービスによって共有される、いくつかの内部共有サービス932が提供されてもよい。これらの内部共有サービスは、セキュリティおよびアイデンティティサービス、統合サービス、エンタープライズリポジトリサービス、エンタープライズマネージャサービス、ウイルススキャンおよびホワイトリストサービス、高可用性、バックアップおよびリカバリサービス、クラウドサポートを可能にするためのサービス、電子メールサービス、通知サービス、ファイル転送サービスなどを含み得るが、これらに限定されない。
特定の局面では、クラウドインフラストラクチャシステム902は、クラウドインフラストラクチャシステムにおいてクラウドサービス(たとえばSaaS、PaaS、およびIaaSサービス)の包括的な管理を提供してもよい。一局面では、クラウド管理機能は、クラウドインフラストラクチャシステム902によって受信される顧客のサブスクリプションをプロビジョニングし、管理し、およびトラッキングする能力などを含んでもよい。
一局面では、図に示されるように、クラウド管理機能は、オーダー管理モジュール920、オーダーオーケストレーションモジュール922、オーダープロビジョニングモジュール924、オーダー管理および監視モジュール926、ならびにアイデンティティ管理モジュール928などのような1つ以上のモジュールによって提供されてもよい。これらのモジュールは、1つ以上のコンピュータおよび/またはサーバを含むかもしくはそれらを用いて提供されてもよく、それらは汎用コンピュータ、特殊化されたサーバコンピュータ、サーバファーム、サーバクラスタ、または他の任意の適切な構成および/もしくは組合せであってもよい。
例示的な動作934においては、クライアントデバイス904,906または908などのようなクライアントデバイスを用いる顧客は、クラウドインフラストラクチャシステム902によって提供される1つ以上のサービスを要求すること、およびクラウドインフラストラクチャシステム902によって提供される1つ以上のサービスに対するサブスクリプションについてのオーダーを行なうことによって、クラウドインフラストラクチャシステム902と対話してもよい。特定の局面では、顧客は、クラウドユーザインターフェイス(UI)、クラウドUI912、クラウドUI914および/またはクラウドUI916にアクセスし、サブスクリプションオーダーをこれらのUIを介して行ってもよい。顧客がオーダーを行なうことに応答してクラウドインフラストラクチャシステム902によって受取られるオーダー情報は、顧客を識別する情報と、クラウドインフラストラクチャシステム902によって提供される、その顧客が利用することが意図されている1つ以上のサービスとを含んでもよい。
オーダーが顧客によってなされた後、オーダー情報がクラウドUI912、914および/または916を介して受取られる。
動作936において、オーダーはオーダーデータベース918に保存される。オーダーデータベース918は、クラウドインフラストラクチャシステム902によって動作させられるいくつかのデータベースの1つであってもよく、他のシステム要素と関連付けて動作させてもよい。
動作938で、オーダー情報はオーダー管理モジュール920に転送される。いくつかの例では、オーダー管理モジュール920は、オーダーを検証すること、および検証でそのオーダーを予約することなど、オーダーに関係付けられる請求および課金機能を実行するよう構成されてもよい。
動作940で、オーダーに関する情報がオーダーオーケストレーションモジュール922に通信される。オーダーオーケストレーションモジュール922は、オーダー情報を利用して、顧客によってなされたオーダーに対してサービスおよびリソースのプロビジョニングをオーケストレーションしてもよい。いくつかの例では、オーダーオーケストレーションモジュール922は、リソースのプロビジョニングをオーケストレーションして、利用されるサービスを、オーダープロビジョニングモジュール924のサービスを用いてサポートしてもよい。
特定の局面では、オーダーオーケストレーションモジュール922は、各オーダーに関連付けられるビジネスプロセスの管理を可能にし、ビジネスロジックを適用して、オーダーがプロビジョニングに進めるべきかどうかを判断する。動作942で、新たなサブスクリプションに対するオーダーが受取られると、オーダーオーケストレーションモジュール922は、オーダープロビジョニングモジュール924に対して、リソースを割当て、サブスクリプションオーダーを満たすのに必要とされるリソースを構成するよう、要求を送る。オーダープロビジョニングモジュール924は、顧客によってオーダーされたサービスに対するリソースの割当てを可能にする。オーダープロビジョニングモジュール924は、クラウドインフラストラクチャシステム900によって提供されるクラウドサービスと、要求されたサービスを提供するためのリソースをプロビジョニングするのに用いられる物理的インプリメンテーション層との間におけるある抽象レベルを提供する。オーダーオーケストレーションモジュール922は、したがって、サービスおよびリソースがオンザフライで実際にプロビジョニングされるか、または予めプロビジョニングされ、要求でのみ割当て/分配されるかどうかなど、インプリメンテーション詳細から隔離されてもよい。
動作944で、サービスおよびリソースがプロビジョニングされると、提供されるサービスの通知が、クラウドインフラストラクチャシステム902のオーダープロビジョニングモジュール924によってクライアントデバイス904,906および/または908における顧客に送信されてもよい。
動作946で、顧客のサブスクリプションオーダーはオーダー管理および監視モジュール926によって管理およびトラッキングされてもよい。いくつかの例では、オーダー管理および監視モジュール926は、用いられるストレージの量、転送されるデータ量、ユーザの数、システムアップ時間およびシステムダウン時間の量などのような、サブスクリプションオーダーにおけるサービスに対する使用統計を収集するよう構成されてもよい。
特定の局面では、クラウドインフラストラクチャシステム900はアイデンティティ管理モジュール928を含んでもよい。アイデンティティ管理モジュール928は、クラウドインフラストラクチャシステム900におけるアクセス管理および承認サービスなどのようなアイデンティティサービスを提供するよう構成されてもよい。いくつかの局面では、アイデンティティ管理モジュール928は、クラウドインフラストラクチャシステム902によって提供されるサービスを利用することを望む顧客についての情報を制御してもよい。そのような情報は、そのような顧客のアイデンティティを認証する情報、およびそれらの顧客がさまざまなシステムリソース(たとえばファイル、ディレクトリ、アプリケーション、通信ポート、メモリセグメントなど)に対してどのアクションを実行するよう承認されるかを記述する情報を含み得る。アイデンティティ管理モジュール928は、さらに、各顧客についての記述的情報について、および、如何にかつ誰によってその記述的情報がアクセスおよび修正され得るかについての管理を含んでもよい。
図10は、本発明のさまざまな局面が実現され得る例示的なコンピュータシステム1000を示す。システム1000を用いることで、上に記載されるコンピュータシステムのいずれもが実現され得る。たとえば、コンピュータシステム100のすべてもしくは一部の要素、コンピュータシステム200のすべてもしくは一部の要素、コンピュータシステム300のすべてもしくは一部の要素、またはそれらの組合せがシステム1000において含まれるかまたは実現され得る。システム1000は、動作、方法および/またはプロセス(たとえば図4のプロセス400または図5のプロセス500)を実現することができる。図に示されるように、コンピュータシステム1000は、バスサブシステム1002を介していくつかの周辺サブシステムと通信する処理ユニット1004を含む。これらの周辺サブシステムは、処理加速ユニット1006、I/Oサブシステム1008、ストレージサブシステム1018および通信サブシステム1024を含んでもよい。ストレージサブシステム1018は有形のコンピュータ読取可能記憶媒体1022およびシステムメモリ1010を含む。
バスサブシステム1002は、コンピュータシステム1000のさまざまなコンポーネントおよびサブシステムに意図されるように互いと通信させるための機構を提供する。バスサブシステム1002は概略的に単一のバスとして図示されているが、バスサブシステムの代替的局面は複数のバスを利用してもよい。バスサブシステム1002は、さまざまなバスアーキテクチャのうちいずれかを用いるメモリバスまたはメモリコントローラ、周辺バスおよびローカルバスを含むいくつかのタイプのバス構造のうちの如何なるものであってもよい。たとえば、このようなアーキテクチャは、産業標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、エンハンストISA(EISA)バス、ビデオエレクトロニクス標準組織(VESA)ローカルバス、および周辺コンポーネントインターコネクト(PCI)バス、を含んでもよく、IEEE P1386.1規格に従って製造されるメザニン・バスとして実現され得る。
処理ユニット1004は、1つ以上の統合された回路(たとえば従来のマイクロプロセッサまたはマイクロコントローラ)として実現可能であり、コンピュータシステム1000の動作を制御する。1つ以上のプロセッサが処理ユニット1004に含まれてもよい。これらのプロセッサは単一コアまたはマルチコアプロセッサを含んでもよい。特定の局面では、処理ユニット1004は、1つ以上の独立した処理ユニット1032および/または1034として、単一または複数コアのプロセッサが各処理ユニットに含まれた状態で実現されてもよい。他の局面では、処理ユニット1004は、さらに、2つのデュアルコアプロセッサを単一のチップに統合することによって形成されるクワッドコア処理ユニットとして実現されてもよい。
さまざまな局面では、処理ユニット1004はさまざまなプログラムをプログラムコードに応答して実行することができ、複数の同時に実行されるプログラムまたはプロセスを維持することができる。任意の所与の時間において、実行されるべきプログラムコードの一部またはすべてがプロセッサ1004および/またはストレージサブシステム1018に常駐可能である。好適なプログラミングを介して、プロセッサ1004は上記のさまざまな機能を提供することができる。コンピュータシステム1000はさらに処理加速ユニット1006を含んでもよく、それはデジタル信号プロセッサ(DSP)、特殊目的プロセッサなどを含んでもよい。
I/Oサブシステム1008はユーザインターフェイス入力装置およびユーザインターフェイス出力装置を含んでもよい。ユーザインターフェイス入力装置は、キーボード、マウスまたはトラックボールなどのポインティングデバイス、ディスプレイに組み込まれるタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを伴う音声入力装置、マイクロフォン、および他のタイプの入力装置を含んでもよい。ユーザインターフェイス入力装置は、たとえば、ユーザがジェスチャおよび話し言葉コマンドを用いて自然なユーザインターフェイスを介してMicrosoft Xbox(登録商標)360ゲームコントローラなどのような入力装置を制御しそれと対話することを可能にするMicrosoft Kinect(登録商標)モーションセンサなどのようなモーション感知および/またはジェスチャ認識装置を含んでもよい。ユーザインターフェイス入力装置は、さらに、ユーザから目の活動(たとえば写真を撮る、および/またはメニュー選択を行なっている間の「瞬き」)を検出し、目の動きを入力装置(たとえばGoogle Glass(登録商標))への入力として変換するGoogle Glass(登録商標)瞬き検出器などのような目のジェスチャ認識装置を含んでもよい。さらに、ユーザインターフェイス入力装置は、ユーザが音声コマンドを介して音声認識システム(たとえばSiri(登録商標)ナビゲータ)と対話することを可能にする音声認識感知装置を含んでもよい。
ユーザインターフェイス入力装置は、さらに、三次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカ、デジタルカメラ、デジタルカムコーダ、ポータブルメディアプレーヤ、ウェブカム、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザレンジファインダ、および視線追跡装置などのような聴覚/視覚装置を含み得るが、これらに限定されない。加えて、ユーザインターフェイス入力装置は、たとえば、コンピュータ断層撮影、磁気共鳴撮像、ポジションエミッショントモグラフィー、医療超音波検査装置などのような医療画像化入力装置を含んでもよい。ユーザインターフェイス入力装置は、さらに、たとえば、MIDIキーボード、デジタル音楽機器などのような音声入力装置を含んでもよい。
ユーザインターフェイス出力装置は、ディスプレイサブシステム、インジケータライト、または音声出力装置のような非ビジュアルディスプレイなどを含んでもよい。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを使用するようなフラットパネルデバイス、投影装置、タッチスクリーンなどであってもよい。一般に、「出力装置」という語を使用する場合、コンピュータシステム1000からユーザまたは他のコンピュータに情報を出力するためのすべての実現可能なタイプの装置および機構を含むよう意図されている。たとえば、ユーザインターフェイス出力装置は、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力装置およびモデムなどのような、テキスト、グラフィックスおよび音声/映像情報を視覚的に伝えるさまざまな表示装置を含み得るが、これらに限定されない。
コンピュータシステム1000は、システムメモリ1010内に現在位置するものとして示される、ソフトウェア要素を含むストレージサブシステム1018を含んでもよい。システムメモリ1010は、処理ユニット1004においてロード可能および実行可能であるプログラム命令、ならびにこれらのプログラムの実行中に生成されるデータを記憶してもよい。
コンピュータシステム1000の構成およびタイプに応じて、システムメモリ1010は揮発性であってもよく(ランダムアクセスメモリ(RAM)など)、および/または不揮発性であってもよい(リードオンリメモリ(ROM)、フラッシュメモリなど)。RAMは典型的には、処理ユニット1004に即座にアクセス可能であり、および/もしくは処理ユニット1004によって現在動作および実行されている、データならびに/またはプログラムモジュールを含む。いくつかの実現例では、システムメモリ1010は、スタティックランダムアクセスメモリ(SRAM)またはダイナミックランダムアクセスメモリ(DRAM)などのような複数の異なるタイプのメモリを含んでもよい。いくつかの実現例では、起動中などのように、コンピュータシステム1000内における要素間において情報の転送を助ける基本的なルーチンを含む基本的な入力/出力システム(BIOS)が、典型的にはROMに記憶されてもよい。例として、限定ではなく、システムメモリ1010は、さらに、アプリケーションプログラム1012を示し、それは、クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS)など、プログラムデータ1014およびオペレーティングシステム1016を含んでもよい。例として、オペレーティングシステム1016は、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)および/もしくはLinux(登録商標)オペレーティングシステムのさまざまなバージョン、さまざまな市販のUNIX(登録商標)またはUNIXのようなオペレーティングシステム(さまざまなGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OSなどを含むがこれらに限定されない)、ならびに/またはiOS、Windows(登録商標) Phone、Android(登録商標) OS、BlackBerry(登録商標) 10 OS、およびPalm(登録商標) OSなどのようなモバイルオペレーティングシステムを含んでもよい。
ストレージサブシステム1018は、さらに、いくつかの局面の機能を提供する基本的なプログラミングおよびデータ構造を記憶するための有形のコンピュータ読取可能記憶媒体を提供し得る。プロセッサによって実行されると上記の機能を提供するソフトウェア(プログラム、コードモジュール、命令)がストレージサブシステム1018に記憶されてもよい。これらのソフトウェアモジュールまたは命令は処理ユニット1004によって実行されてもよい。ストレージサブシステム1018は、さらに、本発明に従って用いられるデータを記憶するためのリポジトリを提供してもよい。
ストレージサブシステム1000は、さらに、コンピュータ読取可能記憶媒体1022にさらに接続され得るコンピュータ読取可能記憶媒体リーダ1020を含んでもよい。システムメモリ1010とともに、およびオプションとしてシステムメモリ1010との組合せで、コンピュータ読取可能記憶媒体1022は、コンピュータ読取可能情報を一時的および/またはより永続的に含み、記憶し、送信し、および検索取得するための、遠隔の、ローカルな、固定された、および/またはリムーバブルな記憶装置に記憶媒体を加えたものを包括的に表現してもよい。
コードまたはコードの一部を含むコンピュータ読取可能記憶媒体1022は、さらに、情報の記憶および/または送信のための任意の方法または技術において実現される揮発性および不揮発性の、リムーバブルおよび非リムーバブルな媒体などであるがそれらに限定はされない、記憶媒体および通信媒体を含む、当該技術分野において公知であるかまたは用いられる任意の適切な媒体を含み得る。これは、RAM、ROM、電子的に消去可能なプログラマブルROM(EEPROM)、フラッシュメモリもしくは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)、もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶もしくは他の磁気記憶装置、または他の有形のコンピュータ読取可能媒体などのような、有形の、非一時的なコンピュータ読取可能記憶媒体を含み得る。特定の場合には、これは、さらに、所望の情報を送信するよう使用可能であり、コンピューティングシステム1000によってアクセス可能である、データ信号、データ伝送または任意の他の媒体のような、非有形の一時的なコンピュータ読取可能媒体を含み得る。
一例として、コンピュータ読取可能記憶媒体1022は、非リムーバブルの、不揮発性磁気媒体において読出または書込を行なうハードディスクドライブ、リムーバブルの不揮発性磁気ディスクにおいて読出または書込を行なう磁気ディスクドライブ、およびCD ROM、DVD、およびブルーレイ(登録商標)ディスク、もしくは他の光媒体などのようなリムーバブルの不揮発性光ディスクにおいて読出または書込を行なう光ディスクドライブを含んでもよい。コンピュータ読取可能記憶媒体1022は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープなどを含んでもよいがそれらに限定はされない。コンピュータ読取可能記憶媒体1022は、さらに、フラッシュメモリベースのSSDなどのような不揮発性メモリ、エンタープライズフラッシュドライブ、ソリッドステートROMなどに基づくソリッドステートドライブ(SSD)、ソリッドステートRAM、ダイナミックRAM、スタティックRAM、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSDなどのような揮発性メモリに基づくSSD、ならびにDRAMおよびフラッシュメモリベースのSSDの組合せを用いるハイブリッドSSDを含んでもよい。ディスクドライブおよびそれらの関連のコンピュータ読取可能媒体は、コンピュータシステム1000のためのコンピュータ読取可能命令、データ構造、プログラムモジュールおよび他のデータの不揮発性ストレージを提供し得る。
通信サブシステム1024は、他のコンピュータシステムおよびネットワークへのインターフェイスを与える。通信サブシステム1024は、他のシステムとコンピュータシステム1000との間のデータの送受のためのインターフェイスとして働く。たとえば、通信サブシステム1024は、コンピュータシステム1000がインターネットを介して1つ以上の装置に接続することを可能にし得る。いくつかの局面では、通信サブシステム1024は、(たとえばセルラー電話技術、3G、4GもしくはEDGE(グローバル進化のための高速データレート)などのような先進データネットワーク技術、WiFi(IEEE802.11ファミリー規格、もしくは他のモバイル通信技術、またはそれらの任意の組合せを用いて)無線音声および/またはデータネットワークにアクセスするための無線周波数(RF)送受信機コンポーネント、グローバルポジショニングシステム(GPS)受信機コンポーネント、ならびに/または他のコンポーネントを含み得る。いくつかの局面では、通信サブシステム1024は無線インターフェイスに加えて、またはそれに代わって、有線ネットワーク接続(たとえばイーサネット)を提供することができる。
いくつかの局面では、通信サブシステム1024は、さらに、コンピュータシステム1000を用い得る1人以上のユーザのために、入力通信を、構造化されたデータフィードおよび/または構造化されないデータフィード1026、イベントストリーム1028、イベント更新1030などの形式で受信してもよい。
一例として、通信サブシステム1024は、データフィード1026を、実時間で、Twitter(登録商標)フィード、Facebook(登録商標)更新、Rich Site Summary(RSS)フィードなどのようなウェブフィード、および/もしくは1つ以上の第三者情報源からの実時間更新などのようなソーシャルメディアネットワークおよび/または他の通信サービスのユーザから受信するよう構成されてもよい。
加えて、通信サブシステム1024は、さらに、データを、明示的な端部を有さない本質的に連続的または無限であり得る実時間イベントのイベントストリーム1028および/またはイベント更新1030を含み得る連続データストリームの形式で受信するよう構成されてもよい。連続データを生成するアプリケーションの例は、たとえば、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール(たとえばネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通監視などを含んでもよい。
通信サブシステム1024は、さらに、構造化されたデータフィードおよび/または構造化されないデータフィード1026、イベントストリーム1028、イベント更新1030などを、コンピュータシステム1000に結合される1つ以上のストリーミングデータソースコンピュータとの通信状態にあり得る1つ以上のデータベースに出力するよう構成されてもよい。
コンピュータシステム1000は、手持ち式の携帯装置(たとえばiPhone(登録商標)セルラーフォン、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(Google Glass(登録商標)頭部装着型ディスプレイ)、PC、ワークステーション、メインフレーム、キオスク、サーバラック、または任意の他のデータ処理システムを含むさまざまなタイプのうちの1つであり得る。
コンピュータおよびネットワークの絶え間なく変化し続ける性質のために、図に示されているコンピュータシステム1000の説明は、特定の例として意図されているに過ぎない。図に示されているシステムよりも多くのまたは少ない数の構成要素を有する多くの他の構成が実現可能である。たとえば、ハードウェア、ファームウェア、(アプレットを含む)ソフトウェア、または組合せにおいて、カスタマイズされたハードウェアが使用されてもよく、および/または、特定の要素が実装されてもよい。さらに、ネットワーク入力/出力装置などの他の計算装置への接続が利用されてもよい。本明細書で提供される開示および教示に基づいて、当業者は、さまざまな局面を実現するための他の手段および/または方法を理解するであろう。
上記の明細書では、本発明の局面は、その具体的な局面を参照して記載されているが、本発明がこれに限定されるものではないことを当業者は認識するであろう。上記の発明のさまざまな特徴および局面は、個々にまたは一緒に使用されてもよい。さらに、局面は、明細書のより広い精神および範囲から逸脱することなく、本明細書に記載されているものを越えたどのような環境およびアプリケーションにおいても利用可能である。したがって、明細書および図面は、限定的ではなく例示的であるものと見なされるべきである。