発明の詳細な記載
I.導入
以下の記載では、説明のために、特定の詳細はこの発明の実施の形態の十分な理解を提供するために述べられる。しかしながら、さまざまな実施の形態がこれらの特定の詳細なしに実施されてもよいことは明らかである。たとえば、不必要な詳細により実施形態を曖昧にすることのないように、回路、システム、ネットワーク、プロセスおよび他のコンポーネントは、ブロック図の形式でコンポーネントとして示されてもよい。他の例では、実施形態を曖昧にすることを回避するために、周知の回路、プロセス、アルゴリズム、構造および技術は、不必要な詳細なしで示されてもよい。図および記載は、制限的になるようには意図されない。むしろ、以下の例示的な実施形態の説明は、例示的な実施形態を実現するための実施可能な説明を当業者に提供するものである 。添付の特許請求の範囲に記載されている本発明の精神および範囲から逸脱することなく、要素の機能および配置をさまざまに変更できることが理解されるべきである。
また、個々の実施形態は、フローチャート、フロー図、データフロー図、構造図またはブロック図として示されるプロセスとして説明されてもよい。フローチャートは動作をシーケンシャルなプロセスとして説明することができるが、多くの動作は並列または同時に実行されてもよい。さらに、動作の順序は並べ替えられてもよい。プロセスは、その動作が完了すると終了するが、図に含まれていないさらなることを有していてもよい。プロセスは、メソッド、関数、プロシージャ、サブルーチン、サブプログラムなどに対応し得る。プロセスが関数に対応している場合、その終了は、その関数を呼出し関数またはmain関数へと戻すことに対応し得る。
「機械読取可能な媒体」または「コンピュータ読取可能な媒体」という語は、命令および/またはデータを記憶したり、含んでいたり、または担持したりすることができる携帯型または固定式のストレージデバイス、光学式ストレージデバイス、無線チャネルおよびさまざまな他の媒体を含むが、これらに限定されるものではない。コードセグメントまたは機械実行可能な命令は、プロシージャ、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または、命令、データ構造もしくはプログラム文のいずれかの組合せを表し得る。コードセグメントは、情報、データ、引数、パラメータまたはメモリコンテンツを受け渡すおよび/または受信することによって、別のコードセグメントまたはハードウェア回路に結合されてもよい。情報、引数、パラメータ、データなどは、メモリ共有、メッセージ受け渡し、トークン受け渡し、ネットワーク送信などを含む任意の好適な手段によって受け渡されたり、転送されたり、または送信されたりしてもよい。
さらに、実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組合せによって実現されてもよい。ソフトウェア、ファームウェア、ミドルウェアまたはマイクロコードで実現される場合、必要なタスクを実行するためのプログラムコードまたはコードセグメントは、機械読取可能な媒体またはコンピュータ読取可能な媒体に記憶されてもよい。1つ以上のプロセッサが必要なタスクを実行してもよい。
いくつかの図面に示されたシステムは、さまざまな構成で提供されてもよい。いくつかの実施形態では、システムは、システムの1つ以上のコンポーネントがクラウドコンピューティングシステムの1つ以上のネットワークに分散された分散型システムとして構成することができる。さらなる実施形態では、システムは、システムの1つ以上のコンポーネントが単一の構造またはパッケージに組み込まれた単一のシステムとして構成されてもよい。
II.クラウドベースのアプリケーション開発
アプリケーションとはソフトウェアプログラムを指し、それは実行時、特定の所望のタスクを行なう。一般に、いくつかのアプリケーションは、1つ以上のオペレーティングシステム(operating system:OS)、(たとえばJava(登録商標)プログラミング言語をサポートする)仮想マシン、デバイスドライバなどを含む実行時環境において実行される。開発者はしばしば、所望のアプリケーションを実現/開発するためのアプリケーション開発フレームワーク(Application Development Framework:ADF)(それら自体がアプリケーションである)を使用する。ADFは、アプリケーションの開発において直接的/間接的に使用され得る1組の予め定義されたコード/データモジュールを提供する。ADFはまた、統合開発環境(integrated development environment:IDE)、コード生成部、デバッガなどのツールを提供してもよい。一般に、ADFは、再使用可能なコンポーネントを提供することによって、アプリケーション開発を単純化する。再使用可能なコンポーネントは、たとえば、所望のタスクを行なうためのコンポーネントを選択し、選択されたコンポーネントの外観、挙動、および対話を定義することにより、ユーザインターフェイス(UI)およびアプリケーションロジックを定義するために、アプリケーション開発者によって使用され得る。オラクル社(Oracle Corp.)からの「オラクルADF」(Oracle ADF)といったいくつかのADFは、緩い結合とより容易なアプリケーション開発および保守とを促進するモデル・ビュー・コントローラ(model-view-controller:MVC)設計パターンに基づいている。
図1は、本発明による一実施形態におけるクラウドベースのアプリケーションを開発するためのシステム環境100のブロック図である。図示された実施形態では、システム環境100は、1つ以上のクライアントコンピューティングデバイス104、106、および108にクラウドサービスを提供するクラウドインフラストラクチャシステム102を含む。クライアントコンピューティングデバイス104、106、および108は、クラウドインフラストラクチャシステム102と対話するためにユーザによって使用されてもよい。クライアントコンピューティングデバイス104、106、および108は、クラウドインフラストラクチャシステム102によって提供されるサービスを使用するためにクラウドインフラストラクチャシステム102と対話するためにクライアントコンピューティングデバイスのユーザによって使用され得る、ウェブブラウザ、専用クライアントアプリケーション(たとえば、オラクル・フォームズ(Oracle Forms))、または何らかの他のアプリケーションといったクライアントアプリケーションを動作させるように構成されてもよい。
クラウドインフラストラクチャシステム102は、図示されたもの以外のコンポーネントを有していてもよい。また、図1に示す実施形態は、この発明の一実施形態を取入れ得るクラウドインフラストラクチャシステムの単なる一例である。いくつかの他の実施形態では、クラウドインフラストラクチャシステム102は、図1に示すものよりも多い、または少ないコンポーネントを有していてもよく、2つ以上のコンポーネントを組合せてもよく、もしくは、異なる構成または配置のコンポーネントを有していてもよい。
クライアントコンピューティングデバイス104、106、および108は、携帯型ハンドヘルドデバイス(たとえば、iPhone(登録商標)、携帯電話、iPad(登録商標)、コンピューティングタブレット、携帯情報端末(personal digital assistant:PDA))、またはウェアラブルデバイス(たとえば、グーグル・グラス(Google Glass)(登録商標)頭部装着型ディスプレイ)であってもよく、マイクロソフト・ウィンドウズ・モバイル(Microsoft Windows Mobile)(登録商標)などのソフトウェア、および/または、iOS、ウィンドウズ(登録商標)フォン、アンドロイド、ブラックベリー(登録商標)10、パームOSなどのさまざまなモバイルOSを実行し、インターネット、電子メール、ショートメッセージサービス(short message service:SMS)、ブラックベリー(登録商標)、または他の通信プロトコルに対応している。クライアントコンピューティングデバイス104、106、および108は、マイクロソフト・ウィンドウズ(登録商標)、アップル・マッキントッシュ(登録商標)、および/またはLinux(登録商標)OSのさまざまなバージョンを実行するパーソナルコンピュータおよび/またはラップトップコンピュータを例として含む、汎用パーソナルコンピュータであり得る。クライアントコンピューティングデバイス104、106、および108は、たとえばグーグル・クロームOSなどのさまざまなGNU/LinuxOSを何ら限定されることなく含む、商業的に入手可能なさまざまなUNIX(登録商標)またはUNIX様OSのうちのいずれかを実行するワークステーションコンピュータであり得る。それに代えて、またはそれに加えて、クライアントコンピューティングデバイス104、106、および108は、ネットワーク110を通して通信可能である、シンクライアントコンピュータ、インターネット対応ゲーミングシステム(たとえば、Kinect(登録商標)ジェスチャー入力デバイスを有する、または有さない、マイクロソフトXboxゲーミングコンソール)、および/またはパーソナルメッセージングデバイスといった、任意の他の電子デバイスであってもよい。
例示的なシステム環境100は3つのクライアントコンピューティングデバイスを有して図示されているが、任意の数のクライアントコンピューティングデバイスがサポートされてもよい。センサを有するデバイスなどの他のデバイスが、クラウドインフラストラクチャシステム102と対話してもよい。
ネットワーク110は、クライアント104、106、および108とクラウドインフラストラクチャシステム102との間のデータの通信および交換を容易にしてもよい。ネットワーク110は、伝送制御プロトコル/インターネットプロトコル(transmission control protocol/Internet protocol:TCP/IP)、システムネットワークアーキテクチャ(systems network architecture:SNA)、インターネットパケット交換(Internet packet exchange:IPX)、アップル・トーク(Apple Talk)などを何ら限定されることなく含む、商業的に入手可能なさまざまなプロトコルのうちのいずれかを使用してデータ通信をサポートできる、当業者にはよく知られた任意のタイプのネットワークであってもよい。単なる例として、ネットワーク110は、イーサネット(登録商標)、トークンリング(Token-Ring)などに基づくものといった、ローカルエリアネットワーク(local area network:LAN)であり得る。ネットワーク110は、ワイドエリアネットワークおよびインターネットであり得る。それは、仮想プライベートネットワーク(virtual private network:VPN)を何ら限定されることなく含む仮想ネットワーク、イントラネット、エクストラネット、公衆交換電話網(public switched telephone network:PSTN)、赤外線ネットワーク、無線ネットワーク(たとえば、電気電子技術者協会(the Institute of Electrical and Electronics:IEEE)802.11プロトコルスイート、Bluetooth(登録商標)、および/または任意の他の無線プロトコルのうちのいずれかの下で動作するネットワーク)、ならびに/もしくは、これらのおよび/または他のネットワークの任意の組合せを含み得る。
クラウドインフラストラクチャシステム102は、1つ以上のコンピュータおよび/またはサーバを含んでいてもよい。これらのコンピュータシステムまたはサーバは、1つ以上の汎用コンピュータ、専用サーバコンピュータ(パーソナルコンピュータ(PC)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウントサーバなどを例として含む)、サーバファーム、サーバクラスタ、もしくは任意の他の適切な構成および/または組合せで構成されてもよい。さまざまな実施形態では、クラウドインフラストラクチャシステム102に関連付けられた1つ以上のコンピュータシステムまたはサーバは、前述の開示で説明された1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。たとえば、クラウドインフラストラクチャシステム102に関連付けられた1つ以上のコンピュータシステムまたはサーバは、この開示の一実施形態に従った、ここに記載された処理を行なうためのサーバに対応していてもよい。
クラウドインフラストラクチャシステム102に関連付けられた1つ以上のコンピュータシステムまたはサーバは、上述のもののうちのいずれかを含むOS、および商業的に入手可能な任意のサーバOSを実行してもよい。クラウドインフラストラクチャシステム102に関連付けられた1つ以上のコンピュータシステムまたはサーバはまた、ハイパーテキスト伝送プロトコル(hypertext transport protocol:HTTP)サーバ、ファイル転送プロトコル(file transfer protocol:FTP)サーバ、コモンゲートウェイインターフェイス(common gateway interface:CGI)サーバ、JAVA(登録商標)サーバ、データベースサーバなどを含む、さまざまな追加のサーバアプリケーションおよび/または中間層アプリケーションのうちのいずれかを実行してもよい。
ある実施形態では、クラウドインフラストラクチャシステム102によって提供されるサービスは、オンラインデータストレージおよびバックアップソリューション、ウェブベースの電子メールサービス、ホスト型オフィススイートおよび文書コラボレーションサービス、データベース処理、管理された技術サポートサービスなどといった、クラウドインフラストラクチャシステム102のユーザにとってオンデマンドで利用可能にされる多数のサービスを含んでいてもよい。クラウドインフラストラクチャシステム102によって提供されるサービスは、そのユーザの必要性を満たすために動的にスケール変更され得る。クラウドインフラストラクチャシステム102によって提供されるサービスの特定のインスタンス化は、ここに「サービスインスタンス」と呼ばれる。一般に、クラウドサービスプロバイダのシステムから、インターネットなどの通信ネットワークを介してユーザに利用可能とされる任意のサービスは、「クラウドサービス」と呼ばれる。典型的には、パブリッククラウド環境では、クラウドサービスプロバイダのシステムを作り上げるサーバおよびシステムは、顧客自身の構内サーバおよびシステムとは異なっている。たとえば、クラウドサービスプロバイダのシステムは、アプリケーションをホストしてもよく、ユーザは、インターネットなどの通信ネットワークを介してオンデマンドでアプリケーションをオーダーし、使用してもよい。
いくつかの例では、クラウドインフラストラクチャ102によってインスタンス化されたサービスインスタンスは、クラウドベンダーによってユーザに提供されるかまたは当該技術分野において他の態様で公知であるようなストレージ、ホスト型データベース、ホスト型ウェブサーバ、ソフトウェアアプリケーション、もしくは他のサービスへの、保護されたコンピュータネットワークアクセスを含んでいてもよい。たとえば、クラウドインフラストラクチャ102によってインスタンス化されたサービスインスタンスは、インターネットを通した、クラウド上のリモートストレージへの、パスワードで保護されたアクセスを含み得る。別の例として、クラウドインフラストラクチャ102によってインスタンス化されたサービスインスタンスは、ネットワーク化された開発者による私的使用のための、ウェブサービスベースのホスト型リレーショナルデータベースおよびスクリプト言語ミドルウェアエンジンを含み得る。別の例として、クラウドインフラストラクチャ102によってインスタンス化されたサービスインスタンスは、クラウドベンダーのウェブサイト上でホストされる電子メールソフトウェアアプリケーションへのアクセスを含み得る。
ある実施形態では、クラウドインフラストラクチャシステム102は、セルフサービスで、サブスクリプションベースで、弾力的にスケーラブルで、信頼でき、高可用性で、かつセキュアな態様で顧客に提供される、アプリケーション、ミドルウェア、開発サービス、およびデータベースサービス提供物一式を含んでいてもよい。クラウドインフラストラクチャサービス102において具現化されたような、そのようなクラウドインフラストラクチャシステムの一例は、オラクル社からの「オラクル・パブリック・クラウド」(Oracle Public Cloud)である。
クラウドインフラストラクチャシステム102は、さまざまなデプロイメントモデルを介してクラウドサービスを提供してもよい。たとえば、サービスは、クラウドインフラストラクチャシステム102がクラウドサービスを販売する組織によって所有され(たとえば、オラクル社によって所有され)、サービスが一般大衆またはさまざまな産業企業にとって利用可能とされる、パブリッククラウドモデルの下で提供されてもよい。別の例として、サービスは、クラウドインフラストラクチャシステム102が単一の組織のためにのみ動作され、その組織内の1つ以上のエンティティのためのサービスを提供し得る、プライベートクラウドモデルの下で提供されてもよい。クラウドサービスはまた、クラウドインフラストラクチャシステム102、およびクラウドインフラストラクチャシステム102によって提供されるサービスが、関連するコミュニティにおけるいくつかの組織によって共有される、コミュニティクラウドモデルの下で提供されてもよい。クラウドサービスはまた、2つ以上の異なるモデルの組合せであるハイブリッドクラウドモデルの下で提供されてもよい。
いくつかの実施形態では、クラウドインフラストラクチャシステム102によって提供されるサービスは、ソフトウェア・アズ・ア・サービス(Software as a Service:SaaS)カテゴリー、プラットフォーム・アズ・ア・サービス(Platform as a Service:PaaS)カテゴリー、インフラストラクチャ・アズ・ア・サービス(Infrastructure as a Service:IaaS)カテゴリー、MBaaSカテゴリー、または、ハイブリッドサービスを含むサービスの他のカテゴリーの下で提供される、1つ以上のサービスを含んでいてもよい。いくつかの実施形態では、クラウドインフラストラクチャシステム102によって提供されるサービスは、アプリケーションサービス、プラットフォームサービス、インフラストラクチャサービス、バックエンドサービスなどを、何ら限定されることなく含んでいてもよい。いくつかの例では、アプリケーションサービスは、SaaSプラットフォームを介して、クラウドインフラストラクチャシステム102によって提供されてもよい。SaaSプラットフォームは、SaaSカテゴリーに該当するクラウドサービスを提供するように構成されてもよい。たとえば、SaaSプラットフォームは、統合された開発およびデプロイメントプラットフォーム上にオンデマンドアプリケーション一式を構築し、配信するための能力を提供してもよい。SaaSプラットフォームは、SaaSサービスを提供するための根底的なソフトウェアおよびインフラストラクチャを管理し、制御してもよい。SaaSプラットフォームによって提供されるサービスを利用することにより、顧客は、クラウドインフラストラクチャシステム上で実行されるアプリケーションを利用できる。顧客は、顧客が別々のライセンスおよびサポートを購入する必要なく、アプリケーションサービスを取得できる。さまざまな異なるSaaSサービスが提供されてもよい。例は、大型組織のための販売実績管理、企業統合、およびビジネス柔軟性についてのソリューションを提供するサービスを、何ら限定されることなく含む。
いくつかの実施形態では、プラットフォームサービスは、PaaSプラットフォームを介して、クラウドインフラストラクチャシステム102によって提供されてもよい。PaaSプラットフォームは、PaaSカテゴリーに該当するクラウドサービスを提供するように構成されてもよい。プラットフォームサービスの例は、(オラクルなどの)組織が共有の共通アーキテクチャ上で既存のアプリケーションを統合できるようにするサービスと、プラットフォームによって提供される共有のサービスを活用する新しいアプリケーションを構築するための能力とを、何ら限定されることなく含んでいてもよい。PaaSプラットフォームは、PaaSサービスを提供するための根底的なソフトウェアおよびインフラストラクチャを管理し、制御してもよい。顧客は、顧客が別々のライセンスおよびサポートを購入する必要なく、クラウドインフラストラクチャシステム102によって提供されるPaaSサービスを取得できる。プラットフォームサービスの例は、オラクル社からの「オラクルJavaクラウド・サービス」(Java Cloud Service:JCS)、オラクル社からの「オラクル・データベース・クラウド・サービス」(Database Cloud Service:DBCS)などを、何ら限定されることなく含む。
PaaSプラットフォームによって提供されるサービスを利用することにより、顧客は、クラウドインフラストラクチャシステム102によってサポートされるプログラミング言語およびツールを採用するとともに、デプロイメントされたサービスを制御することができる。いくつかの実施形態では、クラウドインフラストラクチャシステム102によって提供されるプラットフォームサービスは、データベースクラウドサービス、ミドルウェアクラウドサービス(たとえば、オラクル・フュージョン・ミドルウェア(Oracle Fusion Middleware)サービス)、およびJavaクラウドサービスを含んでいてもよい。一実施形態では、データベースクラウドサービスは、組織がデータベースリソースをプールし、データベースクラウドの形をしたデータベース・アズ・ア・サービスを顧客に提供することを可能にする共有のサービスデプロイメントモデルをサポートしてもよい。ミドルウェアクラウドサービスは、顧客がさまざまなビジネスアプリケーションを開発してデプロイメントするためのプラットフォームを提供してもよく、Javaクラウドサービスは、顧客がクラウドインフラストラクチャシステムにおいてJavaアプリケーションをデプロイメントするためのプラットフォームを提供してもよい。
クラウドインフラストラクチャシステム102において、さまざまな異なるインフラストラクチャサービスが、IaaSプラットフォームによって提供されてもよい。これらのインフラストラクチャサービスは、SaaSプラットフォームおよびPaaSプラットフォームによって提供されるサービスを利用する顧客のための、ストレージ、ネットワーク、ならびに他の基礎的コンピューティングリソースなどの根底的なコンピューティングリソースの管理および制御を容易にする。
ある実施形態では、クラウドインフラストラクチャシステム102は、クラウドインフラストラクチャシステムにおけるクラウドサービス(たとえば、SaaS、PaaS、IaaS、およびMBaaSサービス)の包括的管理を提供してもよい。一実施形態では、クラウド管理機能性は、クラウドインフラストラクチャシステム102によって受信された顧客のサブスクリプションをプロビジョニングし、管理し、追跡するための能力などを含んでいてもよい。さまざまな実施形態では、クラウドインフラストラクチャシステム102は、クラウドインフラストラクチャシステム102によって提供されるサービスへの顧客のサブスクリプションを自動的にプロビジョニングし、管理し、追跡するように適合されてもよい。顧客は、クラウドインフラストラクチャシステム102によって提供される1つ以上のサービスを、サブスクリプションオーダーを介してオーダーしてもよい。クラウドインフラストラクチャシステム102は次に、顧客のサブスクリプションオーダーにおけるサービスを提供するために処理を行なう。
一実施形態では、クラウド管理機能性は、オーダー管理および監視モジュール114などの1つ以上のモジュールによって提供されてもよい。これらのモジュールは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、もしくは任意の他の適切な構成および/または組合せであり得る、1つ以上のコンピュータおよび/またはサーバを含んでいてもよく、もしくはそれらを使用して提供されてもよい。
例示的な動作では、クライアントコンピューティングデバイス104、106または108を使用する顧客は、クラウドインフラストラクチャシステム102によって提供される1つ以上のサービスを要求することにより、クラウドインフラストラクチャシステム102と対話してもよい。顧客は、さまざまな手段を使用して、サービス要求134をクラウドインフラストラクチャシステム102に発行してもよい。サービス要求134は、クラウドインフラストラクチャシステム102によって提供される1つ以上のサービスについてサブスクリプションオーダーを出すこと、クラウドインフラストラクチャシステム102によって提供される1つ以上のサービスにアクセスすること、などを含んでいてもよい。ある実施形態では、顧客は、クラウドUI132、134、138にアクセスし、これらのUIを介してサブスクリプションオーダーを出してもよい。顧客がオーダーを出したことに応答してクラウドインフラストラクチャシステム102が受信したオーダー情報は、顧客を識別する情報と、顧客が申し込むつもりである、クラウドインフラストラクチャシステム102によって提供される1つ以上のサービスを識別する情報とを含んでいてもよい。顧客によってオーダーが出された後で、オーダー情報がクラウドUI132、134、および/または138を介して受信される。
この例では、オーダー管理および監視モジュール112が、顧客から受信した情報をオーダーデータベースへ送信して、顧客によって出されたオーダーを格納させる。オーダーデータベースは、クラウドインフラストラクチャシステム102によって動作され、他のシステム要素とともに動作される、いくつかのデータベースのうちの1つであり得る。オーダー管理および監視モジュール112は、オーダーデータベースに格納されたオーダー情報のすべてまたは一部を含む情報をオーダー管理モジュールへ発送してもよい。場合によっては、オーダー管理モジュールは、オーダーを検証し、検証後にオーダーを予約するといった、オーダーに関連する請求および課金機能を行なうように構成されてもよい。
ある実施形態では、クラウドインフラストラクチャシステム100は、アイデンティティ管理モジュール114を含んでいてもよい。アイデンティティ管理モジュール114は、クラウドインフラストラクチャシステム102においてアクセス管理および認証サービスなどのアイデンティティサービスを提供するように構成されてもよい。いくつかの実施形態では、アイデンティティ管理モジュール114は、クラウドインフラストラクチャシステム102によって提供されるサービスを利用したい顧客についての情報を制御してもよい。そのような情報は、そのような顧客のアイデンティティを認証する情報と、さまざまなシステムリソース(たとえば、ファイル、ディレクトリ、アプリケーション、通信ポート、メモリセグメントなど)に対してそれらの顧客がどのアクションを行なうことが認可されているかを記述する情報とを含み得る。アイデンティティ管理モジュール114はまた、各顧客についての記述的情報と、その記述的情報が誰によってどのようにアクセスされ、修正され得るかについての記述的情報との管理を含んでいてもよい。
ある実施形態では、クラウドインフラストラクチャシステム102はまた、クラウドインフラストラクチャシステム102の顧客にさまざまなサービスを提供するために使用されるリソースを提供するためのインフラストラクチャリソース116を含んでいてもよい。一実施形態では、インフラストラクチャリソース116は、PaaSプラットフォームおよびSaaSプラットフォームによって提供されるサービスを実行するために、サーバ、ストレージ、およびネットワーキングリソースといったハードウェアの予め統合され最適化された組合せを含んでいてもよい。
いくつかの実施形態では、クラウドインフラストラクチャシステム102におけるリソースは、複数のユーザによって共有され、要望ごとに動的に再割当てされてもよい。加えて、リソースは、異なる時間帯におけるユーザに割当てられてもよい。たとえば、クラウドインフラストラクチャシステム102は、第1の時間帯における第1の一組のユーザが、特定数の時間、クラウドインフラストラクチャシステムのリソースを利用することを可能にし、次に、異なる時間帯に位置する別の一組のユーザへの同じリソースの再割当てを可能にして、それによりリソースの利用を最大化してもよい。
ある実施形態では、クラウドインフラストラクチャシステム102の異なるコンポーネントまたはモジュールによって、およびクラウドインフラストラクチャシステム102が提供するサービスによって共有される、多くの内部共有サービス118が提供されてもよい。これらの内部共有サービス118は、セキュリティおよびアイデンティティサービス、統合サービス、エンタープライズリポジトリサービス、エンタープライズマネージャサービス、ウィルススキャニングおよびホワイトリストサービス、高可用性、バックアップおよび復元サービス、クラウドサポートを可能にするためのサービス、電子メールサービス、通知サービス、ファイル転送サービスなどを、何ら限定されることなく含んでいてもよい。
ある実施形態では、クラウドインフラストラクチャシステム102の異なるコンポーネントまたはモジュールによって、およびクラウドインフラストラクチャシステム102が提供するサービスによって共有される、多くの外部共有サービス120が提供されてもよい。これらの外部共有サービス120は、セキュリティおよびアイデンティティサービス、統合サービス、エンタープライズリポジトリサービス、エンタープライズマネージャサービス、ウィルススキャニングおよびホワイトリストサービス、高可用性、バックアップおよび復元サービス、クラウドサポートを可能にするためのサービス、電子メールサービス、通知サービス、ファイル転送サービスなどを、何ら限定されることなく含んでいてもよい。
さまざまな実施形態では、外部共有サービス120は、アクセス、データ変換、自動化などをエンタープライズコンピュータシステム126に提供する1つ以上のコンポーネントを含んでいてもよい。エンタープライズコンピュータシステム126へのアクセスは、クラウドインフラストラクチャシステム102の異なるコンポーネントまたはモジュールによって、およびクラウドインフラストラクチャシステム102が提供するサービスによって、共有されてもよい。いくつかの実施形態では、エンタープライズコンピュータシステム126へのアクセスは、1人以上のサブスクライバに制限される、クラウドインフラストラクチャシステム102が提供するサービスインスタンスによって、共有されてもよい。
さらなる実施形態では、外部共有サービス120は、クラウドインフラストラクチャシステム102の異なるコンポーネントまたはモジュールによって、およびクラウドインフラストラクチャシステム102が提供するサービスによって共有される、外部アプリケーションプログラミングインターフェイス(application programming interface:API)サービス128を含んでいてもよい。これらの外部APIサービス128は、他の第三者サービスまたはエンティティによって提供されるAPIを、何ら限定されることなく含んでいてもよい。
クラウドインフラストラクチャシステム102では、MCS122によって、さまざまな異なるモバイルクラウドサービスが提供されてもよい。本発明のいくつかの実施形態によれば、MCS122は、モバイルコンピューティングデバイスとエンタープライズコンピュータシステム(たとえば、エンタープライズコンピュータシステム124および126)との間の通信を容易にする。MCS122は、エンタープライズデータおよび認証情報を格納するために使用される1つ以上のメモリ記憶装置(ローカルストレージ)を含んでいてもよい。エンタープライズデータは、エンタープライズコンピュータシステム126から、あるいはクライアントコンピューティングデバイス104、106、または108から受信されてもよく、もしくは、クラウドインフラストラクチャシステム102によって変換されたエンタープライズデータを含んでいてもよく、もしくはそれらの組合せであってもよい。認証情報は、アイデンティティ管理システム116から受信されてもよく、および/または、クラウドインフラストラクチャシステム102によって生成されてもよい。いくつかの実施形態では、認証情報は、サービスについての要求に関するユーザのセキュリティ認証を示す情報を含んでいてもよい。
エンタープライズコンピュータシステム126などのエンタープライズコンピュータシステムは、クラウドインフラストラクチャシステム102のファイアウォールを越えて、クラウドインフラストラクチャシステム102とは異なる地理的場所(たとえば、リモートの地理的場所)に物理的に位置していてもよい。いくつかの実施形態では、エンタープライズコンピュータシステム126は、1つ以上の異なるコンピュータまたはサーバを含んでいてもよい。いくつかの実施形態では、エンタープライズコンピュータシステム126は、単一のコンピュータシステムの一部であってもよい。
ある実施形態では、エンタープライズコンピュータシステム126は、1つ以上の異なるプロトコルを使用して、クラウドインフラストラクチャシステム102と通信してもよい。エンタープライズコンピュータシステム126の各々は、異なる通信プロトコルを使用して、クラウドインフラストラクチャシステム102と通信してもよい。エンタープライズコンピュータシステム126は、同じまたは異なるセキュリティプロトコルをサポートしてもよい。いくつかの実施形態では、MCS122は、エンタープライズコンピュータシステム126との通信を取扱うためのエージェントシステムを含んでいてもよい。
プロトコルは、SPeeDY(SPDY)などの通信プロトコルを含んでいてもよい。プロトコルは、HTTPベースのプロトコルなどのアプリケーションプロトコルを含んでいてもよい。いくつかの実施形態では、エンタープライズコンピュータシステム126は、RESTまたはシンプル・オブジェクト・アクセス・プロトコル(Simple Object Access Protocol:SOAP)などの通信プロトコルを使用して、クラウドインフラストラクチャシステム102と通信してもよい。たとえば、RESTプロトコルは、ユニフォームリソース識別子(uniform resource identifier:URI)またはユニフォームリソースロケータ(uniform resource locator:URL)を含むフォーマットをサポートしてもよい。RESTプロトコルを使用する通信のためにフォーマット化されたエンタープライズデータは、JavaScript(登録商標)オブジェクト表記法(JavaScript Object Notation:JSON)、コンマ区切り形式(comma-separated values:CSV)、およびリアリー・シンプル・シンジケーション(really simple syndication:RSS)などのデータフォーマットに容易に変換されてもよい。エンタープライズコンピュータシステム126とクラウドインフラストラクチャシステム102とは、リモート・プロシージャ・コール(remote procedure call:RPC)(たとえば、拡張マークアップ言語(extended markup language:XML)RPC)などの他のプロトコルを使用して通信してもよい
。
いくつかの実施形態では、MCS122は、クラウドインフラストラクチャサービス102によって提供される1つ以上のサービスとの通信をサポートするように構成されたアダプタインターフェイスを含んでいてもよく、それらのサービスのうちのいくつかは、通信用の異なるプロトコルまたは手法をサポートしてもよい。いくつかの実施形態では、MCS122は、エンタープライズコンピュータシステム126との通信をサポートするように構成されたアダプタインターフェイスを含んでいてもよく、エンタープライズコンピュータシステム126のうちのいくつかは、通信用の異なるプロトコルまたは手法をサポートしてもよい。MCS122は、通信プロトコル、エンタープライズコンピュータシステムのタイプ、アプリケーションのタイプ、サービスのタイプ、またはそれらの組合せに従って通信するように各々構成され得る1つ以上のアダプタを含んでいてもよい。アダプタによってサポートされる通信プロトコルは、サービスに、またはエンタープライズコンピュータシステム126のうちの1つ以上に特有のものであってもよい。
ある実施形態では、クライアントコンピューティングデバイス104、106、および108は各々、MCS122と通信するための特定のUIを提供できるアプリケーションを実装してもよい。特定のUIは、特定の通信プロトコルを使用して通信するように構成されてもよい。いくつかの実施形態では、特定のUIは、MCS122と通信するために呼出され得る、呼出し可能インターフェイス、機能、ルーチン、方法、および/または動作を含んでいてもよい。特定のUIは、エンタープライズデータのために、および/またはサービスを要求するために、クラウドインフラストラクチャサービス102によって提供されるサービスと通信するためのパラメータ、またはエンタープライズコンピュータシステム126と通信するためのパラメータを、入力として受け入れてもよい。いくつかの実施形態では、MCS122を通した通信は、カスタム通信プロトコルを使用する通信のために変換されてもよい。いくつかの実施形態では、特定のUIは、アプリケーションにおいてカスタムクライアントに対応していてもよい。
MCS122は、1つ以上の呼出し可能インターフェイス、たとえばAPIを含んでいてもよい。MCS122に関連付けられた呼出し可能インターフェイスは、モバイルコンピューティングデバイス上のアプリケーションがMCS122に要求を通信することを可能にしてもよい。MCS122に関連付けられた呼出し可能インターフェイスは共通または標準インターフェイスをサポートしてもよく、それは、パラメータを含む要求が、標準化プロトコル、アーキテクチャスタイル、および/またはフォーマット(たとえばRESTプロトコル)に従って、アプリから受信されることを可能にしてもよい。MCS122に関連付けられた呼出し可能インターフェイスは、コンピューティングデバイス104、106、または108のうちのいずれか1つのユーザによって構成可能であってもよい。MCS122に関連付けられた呼出し可能インターフェイスは、通信プロトコルに従って、サービスについての要求を受信してもよい。デバイスアプリケーション開発者は、自分のカスタムアプリケーションのためにMCS122に接続することができる。いくつかの実施形態では、MCS122に関連付けられた呼出し可能インターフェイスは、アプリを開発したのと同じ人によって構成され、その人が、MCS122と通信するためのカスタムアプリケーションを実現できるようになっていてもよい。
MCS122に関連付けられた呼出し可能インターフェイスはさらに、エンタープライズコンピュータシステム126が、標準化プロトコルまたはフォーマットに従ってMCS122と通信することを可能にしてもよい。アプリケーション開発者と同様に、エンタープライズコンピュータシステムを管理する人は、1つ以上の呼出し可能インターフェイスを介してMCS122と通信するように構成されたコード(たとえばエージェントシステム)を実現することができる。MCS122に関連付けられた呼出し可能インターフェイスは、コンピューティングデバイスのタイプ、エンタープライズコンピュータシステムのタイプ、アプリ、エージェントシステム、サービス、プロトコル、または他の基準に基づいて実現されてもよい。いくつかの実施形態では、MCS122に関連付けられた呼出し可能インターフェイスは、認証、圧縮、暗号化、カーソルを用いたページネーション、クライアントベースのスロットリング、否認不可、ロギング、およびメトリック収集を含むサービスについての要求をサポートしてもよい。いくつかの実施形態では、MCS122に関連付けられた呼出し可能インターフェイスは、認証、ポリシー実施、応答のキャッシング、MCS122への呼出しのスロットリング、非同期パターンと同期パターンとの間の翻訳、根底的なサービスへの呼出しのロギング、またはそれらの組合せ、といったカスタムビジネス関連サービスのために実現されてもよい。いくつかの実施形態では、MCS122に関連付けられた呼出し可能インターフェイスは、ユーザが、クラウドインフラストラクチャシステム102による実現のためにカスタムコードをロードすることを可能にしてもよい。カスタムコードは、クラウドインフラストラクチャシステム102のために、MCS122に関連付けられた1つ以上の呼出し可能インターフェイスを実現してもよく、それは、ユーザがカスタムサービスまたは他のエンタープライズコンピュータシステムにアクセスすることを可能にできる。
MCS122に関連付けられたプロトコルトランスレータは、メッセージを処理して、メッセージ用の通信プロトコルを判断し、および/またはメッセージを宛先用の通信プロトコルに変換してもよい。MCS122に関連付けられたプロトコルトランスレータは、クライアントコンピューティングデバイス104、106、または108から受信された要求を変換してもよい。要求は、クライアントコンピューティングデバイス104、106、または108によってサポートされる通信プロトコルのフォーマットから、クラウドインフラストラクチャサービス102またはエンタープライズコンピュータシステム126によって提供されるサービスによってサポートされる通信プロトコルのフォーマットに変換されてもよい。MCS122に関連付けられたプロトコルトランスレータは、クラウドインフラストラクチャサービス102またはエンタープライズコンピュータシステム126によって提供されるサービスから受信された応答を変換してもよい。応答は、クラウドインフラストラクチャサービス102またはエンタープライズコンピュータシステム126によって提供されるサービスによってサポートされる通信プロトコルのフォーマットから、クライアントコンピューティングデバイス104、106、または108によってサポートされる通信プロトコルのフォーマットに変換されてもよい。
MCS122に関連付けられたセキュリティサービスは、クライアントコンピューティングデバイス104、106、または108のうちのいずれかから受信された要求についてのセキュリティ認証を管理してもよい。MCS122に関連付けられたセキュリティサービスは、顧客プロセスおよびエンタープライズデータの完全性を保護してもよい。システムまたはデータが損なわれないようにするために、クライアントコンピューティングデバイス104、106、または108から要求が受信されると、セキュリティ認証が起こってもよい。セキュリティ認証は、クラウドインフラストラクチャシステム102による処理のために要求が発送される前に行なわれてもよい。あるユーザについて判断されたセキュリティ認証は、モバイルコンピューティングデバイスに関連付けられたユーザが、MCS122を介してサービスを要求するための認証を有することを可能にしてもよい。セキュリティ認証は、ユーザが、MCS122を介して要求された異なる要求および/またはサービスについて認証するための労力を減少させてもよい。MCS122に関連付けられたセキュリティサービスは、要求のセキュリティを認証するさまざまな動作を行なうように構成された1つ以上の機能ブロックまたはモジュールとして実現されてもよい。
MCS122に関連付けられた認証サービスは、クライアントコンピューティングデバイス104、106、または108から受信された要求についてのセキュリティ認証を管理してもよい。MCS122に関連付けられた認証サービスは、MCS122に要求を送信するコンピューティングデバイスに関連付けられたユーザについてセキュリティ認証を判断してもよい。セキュリティ認証は期間に基づいて判断されてもよく、期間は、アプリケーションの動作(たとえば、アプリケーションの起動)、要求、コンピューティングデバイス、エンタープライズコンピュータシステム、要求に関連する他の基準、またはそれらの組合せに結び付けられてもよい。セキュリティ認証は、個々の要求、1つ以上のエンタープライズコンピュータシステム、特定のサービス、サービスのタイプ、ユーザ、コンピューティングデバイス、セキュリティ認証を判断するための他の基準、またはそれらの組合せ、などのうちのいずれか1つについて、検証され付与されてもよい。いくつかの実施形態では、クラウドインフラストラクチャシステム102は、エンタープライズコンピュータシステム、またはエンタープライズコンピュータシステムをサポートする認証システムから受信されたユーザの認証情報を格納してもよい。クラウドインフラストラクチャシステム102は、要求に関連付けられたユーザのアイデンティティがそのような要求を行なう認可を有するかどうかを判断するためにルックアップ機能を行なうことによって、認証を判断してもよい。格納された認証情報は、ユーザがアクセスすることを認可され得る、要求、機能、エンタープライズコンピュータシステム、エンタープライズデータなどのタイプといった情報を含んでいてもよい。いくつかの実施形態では、インフラストラクチャシステム102は、認証を判断するために、要求元コンピューティングデバイスとの通信を起動してもよい。
いくつかの実施形態では、セキュリティ認証は、サービスを要求するユーザに関連付けられた役割に基づいて判断されてもよい。役割は、MCS122へのアクセスを要求するユーザに関連付けられてもよい。いくつかの実施形態では、ユーザは、MCS122によって提供されるリソースおよび/またはサービスへのアクセスを付与され得るMCS122のサブスクライバまたはテナントとして、サービスを要求してもよい。認証は、ユーザがサブスクライバとしてMCS122を介してサービスを要求することが認可され得るように、MCS122へのユーザのサブスクリプションに対応していてもよい。いくつかの実施形態では、サブスクリプションは、MCS122によって提供される特定の一組のリソースに限定されてもよい。セキュリティ認証は、MCS122のユーザがアクセス可能なリソースおよび/またはサービスに基づいていてもよい。いくつかの実施形態では、「実行時環境」と呼ばれる実行中に、要求にテンプレートがプロビジョニングされてもよい。実行時環境は、要求、ユーザ、またはデバイスに割当てられるリソースに関連付けられてもよい。
いくつかの実施形態では、MCS122に関連付けられた認証サービスは、アイデンティティ管理システムに、ユーザについてセキュリティ認証を判断するよう要求してもよい。アイデンティティ管理システムは、クラウドインフラストラクチャシステム102によって(たとえばアイデンティティ管理114として)実現されてもよく、または、クラウドインフラストラクチャシステム102の外部の別のコンピュータシステムによって実現されてもよい。アイデンティティ管理116は、MCS122にアクセスするためのユーザの役割またはサブスクリプションに基づいて、ユーザのセキュリティ認証を判断してもよい。役割またはサブスクリプションには、エンタープライズコンピュータシステム、エンタープライズコンピュータシステムによって提供されるサービス、エンタープライズコンピュータシステムの機能または特徴、エンタープライズコンピュータシステムへのアクセスを制御するための他の基準、またはそれらの組合せに対する特権および/または権利が割当てられてもよい。
クラウドインフラストラクチャシステム102では、さまざまな異なるADF124が提供されてもよい。ADF124は、アジャイルなSOAベースのアプリケーションを実装するためにインフラストラクチャコードを提供する。ADF124はさらに、1つ以上の開発ツール(たとえば、「オラクルJDeveloper 11g」開発ツール)を通して、開発への視覚的および宣言的アプローチを提供する。ADF124によって提供される1つ以上のフレームワークは、MVC設計パターンを実装してもよい。そのようなフレームワークは、MVCアーキテクチャのすべての層を、オブジェクト/リレーショナルマッピング、データ持続、再使用可能なコントローラ層、リッチなウェブUIフレームワーク、UIへのデータバインディング、セキュリティおよびカスタム化などのエリアに対するソリューションでカバーする、統合的ソリューションを提供する。コアウェブベースのMVCアプローチを超えて、そのようなフレームワークはまた、オラクルSOAおよびウェブセンターポータル(WebCenter Portal)フレームワークと統合して、完全な複合アプリケーションの作成を単純化する。
ある実施形態では、ADF124は、クラウドインフラストラクチャシステム102によって提供されるビルトインビジネスサービスにサービスインターフェイスを結合することによって、サービスとしてデータを公開するアジャイルなアプリケーションを開発することを容易にする。ビジネスサービス実装詳細のこの分離は、ADF124においてメタデータを介して行なわれる。このメタデータ駆動型アーキテクチャの使用により、アプリケーション開発者は、サービスがどのようにアクセスされるかの詳細にではなく、ビジネスロジックおよびユーザ体験に集中できるようになる。ある実施形態では、ADF124は、サービスの実装詳細を、モデル層におけるメタデータに格納する。これにより、開発者は、UIを修正することなくサービスを交換できるようになり、アプリケーションが非常にアジャイルになる。加えて、UIを作成する開発者は、ビジネスサービスアクセス詳細に悩まされる必要がない。代わりに、開発者は、アプリケーションインターフェイスおよび対話ロジックの開発に集中することができる。ユーザ体験を作り出すことは、ビジュアルページデザイナ上に所望のビジネスサービスをドラッグ・アンド・ドロップし、どのタイプのコンポーネントがそのデータを表わすべきかを示すのと同じくらい単純であり得る。
さまざまな実施形態では、開発者はADF124と対話して、エンタープライズアプリケーションを形成するモジュールを作成する。エンタープライズアプリケーションは、クラウドインフラストラクチャシステム102のコンテキスト内で実行され得る。さまざまな実施形態では、開発者はADF124と対話して、モバイルアプリケーションを形成するモジュールを作成する。モバイルアプリケーションは、クラウドインフラストラクチャシステム102のコンテキスト内で実行され得る。以下に説明されるこの発明の特徴は、ここに提供される開示を読むことによって当業者には明らかであるように、プログラミング言語とアプリケーション開発フレームワークとの任意の所望の組合せを使用して実現されてもよい。
ADF124によって提供される1つ以上のフレームワークは、一例ではオラクルADFとして具現化され得る。したがって、ADF124におけるフレームワークは、MVC設計パターンに基づき得る。MVCアプリケーションは、1)データソースとの対話を取扱い、ビジネスロジックを実行するモデル層と、2)アプリケーションUIを取扱うビュー層と、3)アプリケーションフローを管理し、モデル層とビュー層との間のインターフェイスとして作用するコントローラとに分離される。これら3つの層にアプリケーションを分離することは、アプリケーション間にわたるコンポーネントの保守および再使用を単純化する。各層の他の層からの独立は、緩く結合されたSOAをもたらす。
さまざまな実施形態では、ADF124は、開発者がアプリケーションを多層の形で作成することを可能にするツールおよびリソースを提供し、各層は、予め定義された仕様に従って所望のロジックを実現するコードモジュール/ファイルを含む。このため、一実施形態では、ADF124は、アプリケーションが、アプリケーションのUIを提供するコードモジュール/ファイルを含むビュー層と、アプリケーションのフローを制御するコードモジュールを含むコントローラ層と、根底的なデータのための抽象化層を提供するデータ/コードモジュールを含むモデル層と、さまざまなソースからのデータへのアクセスを提供し、ビジネスロジックを取扱うコードモジュールを含むビジネスサービス層という4つの層として開発されることを可能にする。
ある実施形態では、ADF124は、開発者に、層の各々を実装する際に自分が使用したい技術を選択させる。エンタープライズJavaBean(Enterprise JavaBean:EJB)(登録商標)、ウェブサービス(Web Services)、JavaBeans、JPA/エクリプスリンク(EclipseLink)/トップリンク(TopLink)オブジェクト、および他の多くがすべて、ADF124のためのビジネスサービスとして使用可能である。ビュー層は、Javaサーバ・フェイス(Java Server Faces:JSF)、デスクトップ・スイング(Desktop Swing)アプリケーション、およびマイクロソフト・オフィス・フロントエンドを用いて実現されるウェブベースのインターフェイスと、モバイル装置用のインターフェイスとを含み得る。
一局面では、ビュー層は、開発中のアプリケーションのUIを表わす。ビュー層は、デスクトップビュー、モバイルビュー、およびブラウザベースのビューを含んでいてもよく、それらの各々はUIのすべてまたは一部を提供するとともに、ビュータイプに対応するさまざまな態様でアクセス可能である。たとえば、ウェブページが、対応するURLを含むクライアント要求を受信することに応答して、アプリケーションによって送信されてもよい。ウェブページは次に、要求元クライアントシステムに関連付けられた表示部(図示せず)上にブラウザによって表示されてもよく、それにより、要求元クライアントシステムのユーザがエンタープライズアプリケーションと対話することを可能にする。ADF124は、ビジネスサービスの再使用を可能にするビジネスサービスへのマルチチャネルアクセスと、ウェブクライアント、クライアント・サーバ・スイング・デスクトップベース・アプリケーション(client-server swing desktop-based application)、マイクロソフト・エクセル・スプレッドシート、スマートフォンなどのモバイルデバイス、などからのアクセスとをサポートする。
(ウェブページなどの)ビュー層を形成するコードファイル/モジュールは、ハイパーテキストマークアップ言語(hypertext markup language:HTML)、Javaサーバ・ページ(Java server page:JSP)、およびJSFのうちの1つ以上を使用して実現されてもよい。それに代えて、UIは、スイング(Swing)などのJavaコンポーネント、および/またはXMLを使用して実現されてもよい。さらに述べられるように、UIは、マイクロソフトによるワードおよびエクセルなどのデスクトップアプリケーションについてのユーザの体験および習熟を活用してもよい。
上述のように、ユーザが開発した関連するコード/データモジュールが、層の各々において提供される。しかしながら、各層は典型的には、ADF124によって提供される他の予め定義されたコード/データモジュールを含む。予め定義されたモジュールのうちのいくつかは、たとえば、ウェブページを開発するためのテンプレート、開発されたコードに所望の機能性を含めるためのテンプレートなどとして、開発中に使用されてもよい。(URL書換モジュールなどの)他の予め定義されたモジュールが、開発されたアプリケーションとともにデプロイメントされてもよく、エンタープライズアプリケーションの実行中に追加の機能性(要求されたURLの、内部名へのマッピング)をユーザに提供してもよい。
コントローラ層は、アプリケーションのフローを制御するコードモジュール/ファイルを含む。各コントローラオブジェクトは、ビュー層において情報を提示する所望の態様に従って実現されたソフトウェア命令および/またはデータを含む。所望の態様は、別のウェブページにおけるリンクがユーザによってクリック/選択されると表示される特定のウェブページ、実行中にエラーが起こると表示される、格納/検索すべき特定のデータを示すページなどを含んでいてもよい。
一局面では、コントローラ層はアプリケーションのフローを管理し、ユーザ入力を取扱う。たとえば、ページ上でサーチボタンがクリックされると、コントローラは、どのアクションを行なうべきか(サーチを行なう)と、どこにナビゲートすべきか(結果ページ)とを判断する。JDeveloperでは、ウェブベースのアプリケーションについて、標準のJSFコントローラ、またはJSFコントローラ機能性を拡張するADFコントローラという2つのコントローラオプションがある。どちらのコントローラが使用されても、アプリケーションフローは典型的には、ページおよびナビゲーションルールをダイアグラム上にレイアウトすることによって設計される。アプリケーションのフローは、より小さい再使用可能タスクフローに分割可能であり、方法呼出しおよび判定ポイントなどの非視覚的コンポーネントをフローに含めることでき、単一の含有ページの領域内で実行される「ページフラグメント」フローを作成することができる。
コントローラ層を形成するコードモジュール/ファイルはしばしば、クライアント要求を受信するととともに対応する応答として所望のウェブページを送信するJavaサーブレットとして実現される。コントローラオブジェクトはまた、たとえば、アパッチ・ジャカルタ・ストラット(Apache Jakarta Struts)コントローラとして、またはJSF規格に従って実現されてもよい。
モデル層は、さまざまなビジネスサービスを、それらを他の層で使用するオブジェクトに、たとえば上述のコントローラオブジェクトに、または直接デスクトップアプリケーションに接続する、データ/コードモジュールを含む。モデル層の各抽象データオブジェクトは、任意のタイプのビジネスサービスにアクセスするために使用され得る対応するインターフェイスを提供し、根底的なビジネスサービス層で実行される。データオブジェクトは、クライアントからのサービスのビジネスサービス実装詳細を抽象化し、および/または、データ制御方法/属性をビューコンポーネントに公開してもよく、このため、ビュー層とデータ層との分離を提供する。
一局面では、モデル層は、データ制御およびデータバインディングという2つのコンポーネントからなり、それらは、インターフェイスを定義するためにメタデータファイルを利用する。データ制御は、クライアントからのビジネスサービス実装詳細を抽象化する。データバインディングは、データ制御方法および属性をUIコンポーネントに公開し、ビューとモデルとのクリーンな分離を提供する。モデル層のメタデータアーキテクチャにより、開発者は、任意のタイプのビジネスサービス層実装をビュー層およびコントローラ層にバインドする際に、同じ開発体験を得る。
ある実施形態では、ADF124は、開発プロセス全体にわたって宣言的プログラミングパラダイムの使用を強調して、ユーザが、実現詳細に手をつける必要なく、アプリケーション作成のロジックに集中できるようにする。高レベルでは、フュージョン・ウェブ(Fusion Web)アプリケーションのための開発プロセスは通常、アプリケーションワークスペースを作成することを伴う。ウィザードを使用して、開発者が選択した技術にとって必要なライブラリおよび構成が自動的に追加され、アプリケーションが、パッケージおよびディレクトリを有するプロジェクトへと構造化される。
データベースオブジェクトをモデル化することにより、オンラインデータベースまたは任意のデータベースのオフラインレプリカが作成可能であり、定義が編集可能であり、スキーマが更新可能である。統一モデリング言語(unified modeling language:UML)モデラーを使用して、使用事例が次に、アプリケーションのために作成可能である。アプリケーション制御およびナビゲーションも設計可能である。アプリケーション制御およびナビゲーションのフローを視覚的に判断するために、ダイアグラマ(diagrammer)が使用可能である。次に、フローを記述する根底的なXMLファイルが自動的に作成可能である。開発者が、インポートされたライブラリを、アプリケーションに単純にドラッグ・アンド・ドロップすることによって閲覧および使用することを可能にするために、リソースライブラリが使用可能である。データベーステーブルから、エンティティオブジェクトが、ウィザードまたはダイアログを使用して作成可能である。それらのエンティティオブジェクトから、ビューオブジェクトが、アプリケーションにおけるページによって使用されるように作成される。検証ルールおよび他のタイプのビジネスロジックが実現可能である。
この例では、ビジネスサービス層は、データ持続層との対話を管理する。それは、データ持続、オブジェクト/リレーショナルマッピング、トランザクション管理、およびビジネスロジック実行などのサービスを提供する。ビジネスサービス層は、シンプルJavaクラス、EJB、ウェブサービス、JPAオブジェクト、およびオラクルADFビジネスコンポーネント(Oracle ADF Business Components)といったオプションのうちのいずれかで実装可能である。加えて、データは、ファイル(XMLまたはCSV)およびRESTから直接消費され得る。このため、各ビジネスサービスは、対応するデータ持続層との対話を管理し、また、オブジェクト/リレーショナルマッピング、トランザクション管理、ビジネスロジック実行などのサービスを提供する。ビジネスサービス層は、シンプルJavaクラス、エンタープライズJavaBeans、ウェブサービスなどのうちの1つ以上を使用して実装されてもよい。
ビジネスコンポーネントは、データベース、ウェブサービス、レガシーシステム、アプリケーションサーバなどとの対話を提供するために、たとえばオラクル社からの「オラクルADFビジネスコンポーネント」を使用して実装されるビジネスサービスを表わす。一実施形態では、ビジネスサービス層のビジネスコンポーネントは、ビジネスサービス実装を提供するために協働するアプリケーションモジュール、ビュー/クエリオブジェクト、およびエンティティオブジェクトの混合を含む。アプリケーションモジュールは、アプリケーション/トランザクションデータと連携するためにUIクライアントが通信するトランザクションコンポーネント/コードモジュールであり得る。アプリケーションモジュールは、更新可能なデータモデルを提供してもよく、また、ユーザトランザクションに関する手順/機能(一般にサービス方法と呼ばれる)を提供してもよい。
エンティティオブジェクトは、データベーステーブルにおける対応する行を表わしてもよく、対応する行に格納されたデータの操作(更新、削除など)を単純化してもよい。エンティティオブジェクトはしばしば、所望のビジネスルールが一貫して実施されることを保証するために、対応する行のためのビジネスロジックをカプセル化する。エンティティオブジェクトはまた、根底的なデータベースに格納された行間に存在する関係を反映するように、他のエンティティオブジェクトに関連付けられてもよい。
III.プライバシー、レジデンシーおよびセキュリティ
プライバシー、レジデンシーおよびセキュリティ(PRS)は、クラウドに入るデータを難読化する問題に対処することに関連している。難読化の2つの一般的な方法は、暗号化およびトークン化である。これらのアプローチのいずれかを使用することにより、組織がクラウドインフラストラクチャシステム102によって提供されるクラウドベースのアプリケーションの利点を享受する一方で、データが覗き見に対して解読不可なままであることを確実にする。
図2は、本開示のいくつかの実施形態による、クラウドベースのアプリケーションをプライバシー、レジデンシー、およびセキュリティを提供するシステム200のブロック図である。図2における例示された実施形態では、システム200は、難読化されていてもされていなくてもよいデータへのアクセスを提供するサービスを含むクラウドサービスを提供するクラウドインフラストラクチャシステム220(たとえば、図1に関して説明したクラウドインフラストラクチャシステム102)と対話するためにユーザによって使用され得る1つ以上のクライアントコンピューティングデバイス205,210、および215を含む。システム200は、図示のもの以外のコンポーネントを有してもよいことを理解されたい。さらに、図2に示す実施形態は、いくつかの実施形態を組み込むことができるクラウドベースのアプリケーションをプライバシー、レジデンシー、およびセキュリティに提供するためのシステムの一例に過ぎない。他のいくつかの実施の形態では、システム200は、図において示されるよりも多数もしくは少数のコンポーネントを有してもよく、または2つ以上のコンポーネントを組合せてもよく、またはコンポーネントの異なる構成もしくは配置を有してもよい。
この例では、システム200は、エンタープライズインフラストラクチャシステム225、PRSシステム230、およびクラウドインフラストラクチャシステム220を含む。エンタープライズインフラストラクチャシステム225は、1つ以上のクライアントデバイス、サーバ、ネットワーク接続デバイス、ルータ、プロキシ、ゲートウェイなどを含むことができる。図示のように、エンタープライズインフラストラクチャシステム225は、PRSシステム230およびクラウドインフラストラクチャシステム220と通信する1つ以上のクライアントコンピューティングデバイス205,210、および215を含む。図示されるように、PRSシステム230は、PRSサーバ235およびプライベートデータベース240を含み、クラウドインフラストラクチャシステム220は、クラウドベースのアプリケーション245およびクラウドデータベース250を含む。
クライアントコンピューティングデバイス205,210、および215は、図1に示された104,106、および108について上述したものと同様のデバイスであってもよい。クライアントコンピューティングデバイス205,210および215は、ウェブブラウザ、知的所有権下にあるクライアントアプリケーション(たとえば、Oracle Forms)、またはクライアントコンピューティングデバイスのユーザによって使用されてクラウドインフラストラクチャシステム220と対話して、クラウドインフラストラクチャシステム220によって提供されるサービスを使用し得る他の何らかのアプリケーションなどのクライアントアプリケーションを動作させるように構成され得る。例示的なシステム環境200は3つのクライアントコンピューティングデバイスとともに示されるが、任意の数のクライアントコンピューティングデバイスがサポートされてもよい。センサなどとのデバイスなどのような他のデバイスがクラウドインフラストラクチャシステム220と対話してもよい。
クライアントコンピューティングデバイス205,210,215は、携帯可能な手持ち式のデバイス(たとえば、iPhone(登録商標)、セルラー電話、iPad(登録商標)、コンピューティングタブレット、携帯情報端末(PDA))またはウェアラブルデバイス(たとえばGoogle Glass(登録商標)頭部装着型ディスプレイ)であってもよく、Microsoft Windows Mobile(登録商標)などのソフトウェア、および/もしくは、iOS、Windows Phone、Android、BlackBerry10、Palm OSなどのさまざまなモバイルOSを実行し、インターネット、電子メール、ショートメッセージサービス(SMS)、BlackBerry(登録商標)、または他のイネーブルにされた通信プロトコルであってもよい。クライアントコンピューティングデバイス205,210,215は、汎用パーソナルコンピュータであってもよく、一例として、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)および/またはLinux(登録商標)OSのさまざまなバージョンを実行するパーソナルコンピュータおよび/またはラップトップコンピュータも含んでもよい。クライアントコンピューティングデバイス205,210,215は、たとえばGoogle Chrome OSなどのさまざまなGNU/LinuxOSを限定を伴うことなく含む、さまざまな市場で入手可能なUNIX(登録商標)またはUNIXのようなOSのいずれかを実行するワークステーションコンピュータであり得る。代替的に、または加えて、クライアントコンピューティングデバイス205,210,215は、1つ以上のネットワークを介して通信することができる、シンクライアントコンピュータ、インターネットにより可能化されるゲームシステム(たとえば、Kinect(登録商標)ジェスチャ入力デバイスを伴うかまたは伴わないMicrosoft Xboxゲームコンソール)および/または個人メッセージ伝達デバイスなどの任意の他の電子デバイスであってもよい。
PRSサーバ235は、1つ以上のコンピュータおよび/またはサーバを含んでもよい。これらのコンピュータシステムまたはサーバは、1つ以上の汎用コンピュータ、専用のサーバコンピュータ(一例としてパーソナルコンピュータ(PC)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント型サーバなどを含む)、サーバファーム、サーバクラスタ、またはその他の適切な構成および/もしくは組み合わせで構成されてもよい。PRSサーバ235に関連付けられた1つ以上のコンピュータシステムまたはサーバは、上述のいずれかを含むOS、および市販されている任意の利用可能なサーバOSを実行することができる。PRSサーバ235に関連付けられた1つ以上のコンピュータシステムまたはサーバは、ハイパーテキストトランスポートプロトコル(「HTTP」)サーバ、ファイル転送プロトコル(「FTP」)サーバ、共通ゲートウェイインターフェイス(「CGI」)サーバ、JAVA(登録商標)サーバ、データベースサーバ、電子メールサーバ、逆プロキシなどを含む、さまざまな追加のサーバアプリケーションおよび/または中間層アプリケーションのうちの任意のものも実行することができる。
特定の実施形態では、PRSサーバ235によって提供されるサービスは、データプライバシー、レジデンシー、およびセキュリティなどの、サービスのホストを含むことができる。PRSサーバ235は、アプリケーション特有のアダプタを使用してクラウドアプリケーション特有の要件をサポートするようにグラフィカルにインストールおよび構成することができる。いくつかの例では、PRSサーバ235は、たとえば、暗号化またはトークン化を使用して、エンタープライズインフラストラクチャシステム225を離れるデータを保護することによって、データプライバシーを提供することができる。PRSサーバ235は、クライアントコンピューティングデバイス205,210,215とクラウドベースのアプリケーション245との間のデータ伝送をシームレスに傍受して、機密データを置換データ、たとえばトークンまたは暗号化されたデータで置き換えることができる。組織によって定義されるように、エンタープライズインフラストラクチャシステム225を離れることができない、または離れるべきではない機密データは、プライベートデータベース240、たとえばPRSシステム230のファイアウォールの後ろに残り、クライアントコンピューティングデバイス205,210、および215のユーザは、機密データがどこにあるかに関係なく、クラウドベースのアプリケーション245の実質的にすべての機能を経験する。PRSサーバ235は、「オンザフライ暗号化」を実行することができ、機密データをローカルに保存および管理するかわりに、暗号化またはトークン化してクラウドベースのアプリケーション245に送信し、帰路で復号するかまたは機密データと置換する。クラウドベースのアプリケーション245によって受信され、場合によってはクラウドデータベース250自体に格納された機密データは、PRSシステム230なしで直接アクセスされる場合、値またはトークンの暗号化されたリストとしてしか現れない。
PRSサーバ235は、特定の条件を満たすデータ、たとえば機密データがエンタープライズインフラストラクチャシステム225を離れるのを防止することによって、データレジデンシーを提供することができる。PRSサーバ235は、データ伝送から、条件を満たす特定のデータ片を識別し、その特定のデータ片をプライベートデータベース240に保存し、識別された特定のデータ片の実際の値に対する置換値(たとえば、暗号化値またはトークン)を生成し、生成された置換値をクラウドベースのアプリケーション245に送ることができる。識別された特定のデータ片に対する実際の値は、常に、地方の法令によって管理され企業ポリシーの下で動作し得るプライベートデータベース240において、ローカルにあるままである。したがって、クラウドベースのアプリケーション245は置換データで動作し、それはクラウドデータベース250に格納することができる。PRSサーバ235は、カテゴリを、トークン、ソート可能なトークン、暗号化された値、およびクリアテキストとして用いるなど、クラウドアプリケーションデータを分類することができる。いくつかの実施形態では、本明細書で詳細に説明する難読化戦略を使用して、フィールドごとにデータを保護することができる。
PRSサーバ235は、プライベートデータベース240に格納されたデータへのアクセスを管理することによって、データプライバシー、レジデンシー、およびセキュリティを提供することができる。PRSサーバ235は、クラウドベースのアプリケーション245への許可されたアクセスのみが組織から生じることを保証することができる。PRSサーバ235は、エンタープライズインフラストラクチャシステム225とクラウドインフラストラクチャシステム220との間の安全な認証リンクを作成することができる。一実施形態では、PRSサーバ235は、暗号化のアルゴリズムスキームを利用して、ネットワーク伝送で検出された平文情報を非読取可能暗号文に変換するように構成される。PRSサーバ235は、PRSサーバ235がネットワーク伝送内でデータを暗号化および復号することを可能にするキー管理を提供することができる。キー管理には、暗号キーが関連付けられる機密データを保護するために必要に応じて暗号キーを生成、配布、保存、回転、無効/破棄する能力が含まれ得る。他の実施形態では、PRSサーバ235は、機密データの保護のためにトークン化を利用するように構成される。PRSサーバ235は、実際の値の代わりとしてトークン(またはエイリアス)によるデータ置換を使用することができる。トークン化のプロセスにおいて、PRSサーバ235は、機密データを傍受し、そのデータをプライベートデータベース235に送信し、そこでそのデータは安全に格納される。同時に、PRSサーバ235は、ランダムな一意の文字セット(トークン)を生成し、そのトークンを実際のデータの代わりに使用するために返すことができる。PRSサーバ235(またはプライベートデータベース240)は、再び必要になったときにトークン値を実際のデータと交換できるようにする参照データベースを維持することができる。
したがって、PRSサーバ235は、覗き見に対して何の意味をもたない暗号化された値またはトークン値が、クラウドベースのアプリケーション245となど、さまざまなクラウドベースのアプリケーションで、実際のデータに対する信頼できる置換物として使用されることを可能にする。クラウドベースのアプリケーション245は、図1に関して説明したように、ADF124を使用して開発された1つ以上のエンタープライズアプリケーションを表すことができる。エンタープライズアプリケーションはクラウドインフラストラクチャシステム220のコンテキスト内で実行することができる。クラウドベースのアプリケーション245は、1)クラウドデータベース250との対話を処理し、ビジネスロジックを実行するモデル層と、2)クライアントデバイス205、210、および215の1つ以上に配信されるアプリケーションUIを処理するビュー層と、3)アプリケーションフローを管理し、モデル層とビュー層との間のインターフェイスとして機能するコントローラとに分離されるMVCアプリケーションを含むことができる。
1つの態様では、ビュー層は、展開中のアプリケーションのUIを表す。ビュー層には、デスククトップ、モバイル、およびブラウザベースのビューが含まれ得、それらの各々はUIのすべてまたは一部を提供し、ビューの種類に応じてさまざまな態様でアクセス可能である。たとえば、クライアントデバイス205,210、および215のうちの1つ以上から対応するURLを含むクライアント要求を受信することに応答して、ウェブページがクラウドベースのアプリケーション245によって送信されてもよい。次いで、ウェブページは、クライアントデバイス205,210、および215のうちの1つ以上に関連付けられるディスプレイユニット(図示せず)上でブラウザによって表示され得、それにより、1つ以上のクライアントデバイス205,210、および215のユーザはクラウドベースのアプリケーション245と対話することができる。ビュー層を形成するコードファイル/モジュール(ウェブページなど)は、ハイパーテキストマークアップ言語(「HTML」)、Javaサーバページ(「JSP」)、およびJSFのうちの1つ以上を用いて実現されてもよい。代替的に、UIは、Swingおよび/またはXMLのようなJavaコンポーネントを使用して実現されてもよい。さらに、UIは、MicrosoftによるWordおよびExcelなどのデスクトップアプリケーションに対するユーザの経験および精通を利用することができる。
上記のように、PRSサーバ235は、ネットワークトラフィックを監視(たとえば傍受)し、プライバシー、レジデンシー、およびセキュリティポリシーを実施することができる。1つ以上のクライアントデバイス205,210、および215とクラウドベースのアプリケーション245との間の通信に関して、PRSサーバ235は、1つ以上のクライアントデバイス205,210、および215から発信された送信を傍受して、プライバシー、レジデンシー、およびセキュリティポリシーを実施できる。図示の例では、1つ以上のクライアントデバイス205,210、および215は、以下の情報片:ADDRESS = "123 MAIN"およびCONTACT = JOHN" を含むネットワーク伝送をクラウドインフラストラクチャシステム220に送信することができる。PRSサーバ235は、ネットワーク伝送を傍受し、その内容を検査して、情報片のいずれかがプライバシー、レジデンシー、およびセキュリティポリシーの対象であるかどうかを判断することができる。たとえば、PRSサーバ235は、「CONTACT(連絡先)」情報片はプライバシー、レジデンシー、およびセキュリティポリシーの対象である機密データであり、クラウドインフラストラクチャシステム220に送信すべきではないと判断することができる。PRSサーバ235は、「CONTACT」情報片が機密データまたはプライベートデータとして指定される状態で、情報を以下のように暗号化またはトークン化するよう、ネットワーク伝送を修正し得る:ADDRESS = "123 MAIN" [Public Data]およびCONTACT = "JIDL45" [Private Data]。PRSサーバ235は暗号キーおよび/または元のデータをトークンマップとともにプライベートデータベース240に保存できる。 PRSサーバ235は、次いで、修正されたネットワーク伝送を置換値(たとえば暗号化値またはトークン)とともにクラウドベースのアプリケーション245に転送することができる。
1つ以上のクライアントデバイス205,210、および215とクラウドベースのアプリケーション245との間の通信に関して、PRSサーバ235は、逆のプロセスで1つ以上のクライアントデバイス205,210、および215に向けられた送信を傍受して、プライバシー、レジデンシー、およびセキュリティポリシーを実施することができる。図示された例では、PRSサーバ235は、「CONTACT」情報片が暗号化またはトークン化されていると判断でき、PRSサーバ220は、暗号キーおよび/または元のデータを、プライベートデータベース240から取得されたトークンマップと共に使用して、情報を復号または非トークン化するよう、ネットワーク伝送を修正できる。次いで、PRSサーバ235は、修正されたネットワーク伝送を1つ以上のクライアントデバイス205,210、および215に転送することができる。
図3Aは、エンタープライズインフラストラクチャシステム225内から1つ以上のクライアントデバイス205,210,215を使用して見た場合のクラウドベースのアプリケーション245に関連付けられたUI300の図である。図示されているように、「連絡先」ページ305は、1つ以上の連絡先カード310と共に表示される。各連絡先315の名称は、写真およびアドレスを含む他のデータフィールドなどの他のUI要素と共に見ることができる。PRSサーバ235の管理者は、本明細書で詳細に説明するように、UIページ300の名称フィールドを、保護されたデータとして指定することができる。図3Bは、クラウドインフラストラクチャシステム220の内部から見たときのクラウドベースのアプリケーション245またはエンタープライズインフラストラクチャシステム225の外の場所からクラウドベースのアプリケーション245にアクセスするためにコンピューティングデバイスを使用した場合の、クラウドベースのアプリケーション245に関連付けられるUI300’の図である。図示のように、「連絡先」ページ305’は同じ連絡先カード310’とともに表示されるが、各連絡先315’の名称はトークン化されたデータで暗号化または置換され、一方、写真およびアドレスを含むその他のデータフィールドのような他のUI要素は実際の値のままである。
IV.自己記述設定
いくつかの実施形態では、クラウドベースのアプリケーション245に関連付けられたモデル層は、さまざまなビジネスサービスを、上述のコントローラオブジェクトなど、他の層でそれらを使用するオブジェクトに接続するか、またはデスクトップアプリケーションに直接接続するデータ/コードモジュールを含む。モデル層の各抽象データオブジェクトは、基底のビジネスサービス層で実行されるあらゆるタイプのビジネスサービスにアクセスするために使用できる対応するインターフェイスを提供する。データオブジェクトは、クライアントからのサービスのビジネスサービス実施詳細を抽象化し、および/またはデータ制御メソッド/属性をビューコンポーネントに公開して、ビュー層およびデータ層の分離を与える。
1つの態様では、モデル層は、2つのコンポーネント、つまりデータコントロールおよびデータバインディングからなり、UIを定義するためにメタデータファイルを利用する。データコントロールは、クライアントからのビジネスサービス実施詳細を抽象化する。データバインディングは、データコントロールメソッドおよび属性をUIコンポーネントに公開し、ビューおよびモデルを明確に分離する。データベースオブジェクトをモデル化することによって、クラウドデータベース250をクラウドアプリケーション250との使用のために作成することができる。データベーステーブルから、エンティティオブジェクトを、ウィザードまたはダイアログを使用して作成することができる。これらのエンティティオブジェクトから、ビューオブジェクトが作成され、アプリケーションにおいてページにより使用される。検証ルールおよび他のタイプのビジネスロジックを実装することができる。
エンティティオブジェクトは、データベーステーブル内の対応する行を表し、対応する行に格納されたデータの操作(更新、削除など)を簡略化する。エンティティオブジェクトは、しばしば、対応する行に対するビジネスロジックをカプセル化して、所望のビジネスルールが一貫して実施されることを保証する。エンティティオブジェクトは、基底のデータベースに格納されている行間に存在する関係を反映するために、他のエンティティオブジェクトと関連付けることもできる。
したがって、エンティティオブジェクトは、クラウドデータベース250内の行を表し、その関連付けられる属性の修正を簡略化するADFビジネスコンポーネントとすることができる。エンティティオブジェクトは、クラウドデータベース250においてクラウドデータベース250の行を表すデータベーステーブルを指定することによって定義することができる。次に、エンティティオブジェクト間の関係を反映するように関連付けを作成することができる。実行時に、エンティティ行は関連するエンティティ定義オブジェクトによって管理され、各エンティティ行は関連する行キーによって識別される。エンティティ行は、データベーストランザクションをクラウドデータベース250に提供するクラウドベースのアプリケーション245に関連付けられるアプリケーションモジュールのコンテキストで取得および修正される。
図4は、本発明による一実施形態におけるエンティティ間で共有される属性を示すブロック図である。図4は、アカウントオブジェクト405、連絡先オブジェクト410、連絡先オブジェクト415、および従業員オブジェクト420などのエンティティオブジェクトを示す。図4はさらに、エンティティ間で共有されるさまざまな属性440,445、および450を各々が含むデータベーステーブル、たとえばアドレステーブル425、電話/電子メールテーブル430、および人物テーブル435を示す。図示されているように、アカウントオブジェクト405および連絡先オブジェクト410のアドレス属性440は、同じデータベーステーブル、たとえばアドレステーブル425に格納することができる。各行は関連する行キーによって識別され、その行がアカウントオブジェクト405および/または連絡先オブジェクト410のアドレス属性440に対する値を保持するかどうかを特定することができる。同様に、アカウントオブジェクト405および連絡先オブジェクト410の電話/電子メール属性445は、同じデータベーステーブル、たとえば電話/電子メールテーブル430に格納することができる。さらに図示するように、連絡先オブジェクト415および従業員オブジェクト420は、人物テーブル435に格納された属性450を有する人物オブジェクトのサブタイプであり得る。各行は行キーによって識別され、その行が保持する人物の種類、たとえば連絡先人物か従業員かどうかを特定することができる。
PRSサーバの一般的なアプローチは、ワイヤトラフィックを盗聴または監視し、保護されたフィールド上でデータの暗号化またはトークン化を行うことであるため、この機能を、図4に示すようなさまざまなエンティティオブジェクトを共有するコンポーネントを利用するクラウドベースのアプリケーションと統合することは難しい。従来は、ユーザは、ユーザが保護したいと望む機密フィールドをマーキングするよう、各クラウドベースのアプリケーションの各UIページを設定しなければならなかったかもしれない。たとえば、ユーザは、連絡先オブジェクト415のためのUIページと、従業員オブジェクト420のためのUIページとを、それらが同じ基底のデータベーステーブルまたは属性を共有していても、設定する必要があり得る。これは、大規模で複雑なアプリケーションでは非常に困難になる。正規表現を使用して管理者の作業量を削減しても、ユーザは考えられ得るすべてのUIページを通過して、各UIページを1つずつ設定しなければならないかもしれない。さらに、クラウドベースのアプリケーションでは、コンポーネントが共有され再利用され得るため、フィールドの同じ識別子が、複数のUI上で、たとえそれらがフィールドの実際の「意味」を必ずしも反映していなくても、使用され得る。正規表現の使用は非常に苦痛であるだけでなく、機密性の高いデータのリークまたは非機密データを保護することにおける不必要なパフォーマンスオーバーヘッドの可能性につながる。
これらの問題を克服するために、いくつかの実施形態では、クラウドインフラストラクチャシステム220は、PRSサーバ235に関してクラウドベースのアプリケーション245のエンティティオブジェクト、UIページなどの設定を自己記述するための1つ以上のサービスを提供することができる。クラウドインフラストラクチャシステム220は、(たとえば、エンタープライズインフラストラクチャシステム225に関連付けられる組織の要求に応じて)PRSサーバ235の管理者がクラウドベースのアプリケーション245のデータまたはコンポーネントレベルで機密データを識別できるようにするAPIを提供することができる。たとえば、管理者は、社会保障番号属性450を含む連絡先オブジェクトおよび従業員オブジェクト415,420のいずれかおよびすべての、それらのデータの保護が、機密データがエンタープライズインフラストラクチャシステム225の外部においてどこで使用されるかに関係なく、行なわれるように、データレベルでエンティティオブジェクトの社会保障番号属性450をマーキングすることができる。別の例では、管理者は、特定のタイプのエンティティオブジェクト(たとえば従業員オブジェクト420)のみの名称属性450をコンポーネントレベルでマーキングして、所与のコンポーネントによって使用される、名称属性450を含むエンティティオブジェクトのみが、エンタープライズインフラストラクチャシステム225の外部でその所与のコンポーネントによって使用されるときに保護されるようにすることができる。クラウドインフラストラクチャシステム220は、次いで、PRSサーバ235によって認識されたUI要素とマーキングされたフィールドとの間でマップを動的に生成することができる。このようにして、クラウドインフラストラクチャシステム220は、共有コンポーネントを、それがどこで使用され、どの値が識別子に関連付けられても、保護されることができる。これにより、複数のエントリがPRSサーバ235によって維持される必要性が低減される。
PRSサーバ235を使用して機密データオブジェクトが識別されると、一実施形態では、管理者は(1)ヒントをコンポーネントの基底のデータ層に追加し、(2)protectionKey(保護キー)属性をそのコンポーネントに追加することができる。クラウドベースのアプリケーション245が、保護されたエンティティオブジェクトを使用してUIページを生成するとき、保護されたコンポーネントを含む任意のデータが、ネットワーク伝送のペイロードにおいて、識別子とPRSサーバ235によって認識可能なフィールドとの間のマップと共に送信されて、必要なデータ暗号化/トークン化を行なう。したがって、コンポーネントを構成するとき、protectionKeyという名称の新しい属性を、コンポーネントの値を保護する必要があるかどうかを制御するEditableValue(編集可能値)コンポーネントに、追加できる。属性の値は、PRSサーバ235が認識するコンポーネントの名称であってもよい。クラウドベースのアプリケーション245のデータバインディング層にロジックを追加して、PRSサーバ235によって認識される値を含む保護ヒントを抽出することができる。protectionKeyがコンポーネントレベルに存在しない場合、クラウドベースのアプリケーション245は、protectionKey属性をデータバインディング層から取り出すことができる。クラウドベースのアプリケーション245に送信される要求の場合、保護されたデータが含まれる場合、protectionKeyマップに対するビルドIDをネットワーク伝送のペイロードに入れることができる。したがって、コンポーネントクライアント識別子を、PRSサーバ235によって認識可能なオブジェクト/フィールドに直接マッピングする代わりに、静的設定に基づいてオンザフライでマップを生成することができる。
図5は、いくつかの実施形態におけるPRSサーバ235の自己記述設定を提供するメッセージシーケンスチャートを示す。ブロック502において、クラウドインフラストラクチャシステム220は、PRSサーバ235が設定にアクセスすることができるクラウドベースのアプリケーション245によって使用されるデータモデルにAPIを提供する。APIを提供することは、アプリケーションまたはデザイナーが要求(通常、HTTP要求、SOAP要求、XMLメッセージなど)でヒットすることができるサーバ側エンドポイントを提供することを含むことができる。サーバ側エンドポイントは、充分に定義されたURLスキーム(たとえば、www.enterpirse.com/contacts)を有するHTTPエンドポイントを使用して実現することができる。ブロック504において、PRSサーバ235は、提供されたAPIを使用して、クラウドインフラストラクチャシステム220にデータモデルの設定データを要求する。設定データは、データモデルを使用してモデル化されたエンティティの保護可能な属性/コンポーネントのセット(たとえば、プライバシー、レジデンシー、およびセキュリティポリシーの対象となるように設定できる属性/コンポーネントに関する情報)を含むことができる。要求506は、HTTP要求、SOAP要求、XMLメッセージなどを含むことができる。ブロック508において、クラウドインフラストラクチャシステム220は、データモデルを使用してモデル化されたエンティティの保護可能な属性/コンポーネントのセットを含む設定データを提供する。いくつかの実施形態では、設定データは、保護可能な属性のセット内の各属性に適用され得る保護のタイプ(たとえば、トークン化可能または暗号化可能)をさらに含む。
一実施形態では、クラウドインフラストラクチャシステム220は、クラウドベースのアプリケーション245によって使用される保護可能な属性/コンポーネントのリストを維持する。クラウドインフラストラクチャシステム220は、さらに、保護可能な属性/コンポーネントのリストと共に、保護されたフィールドについてのタイプ情報などのヒントを、PRSサーバ220に送ることができる。ヒントは、保護可能なデータのパラメータに関する情報を提供することができる。クラウドインフラストラクチャシステム220は、以下のフォーマットを有する応答510を返す。
ブロック512において、PRSサーバ235は、クラウドインフラストラクチャシステム220から受信した保護可能な属性/コンポーネントに関する情報を使用してユーザインターフェイスを生成する。ユーザインターフェイスは、PRSサーバ235の管理者が、モデル化されるエンティティの1つ以上の保護可能な属性/コンポーネントを、保護された属性/コンポーネントとして設定することを可能にする。ブロック514において、PRSサーバ235の管理者は、(たとえば、エンタープライズインフラストラクチャシステム225に関連付けられる組織の要求で、)モデル化されるエンティティの1つ以上の保護可能な属性/コンポーネント、たとえばオブジェクト「emp」におけるフィールド「fname」を、ユーザインターフェイスにおいて、保護された属性/コンポーネントとしてマーキングされるように設定する。いくつかの実施形態では、属性/コンポーネントの保護されるとしてのマーキングは、属性/コンポーネントに適用される保護のタイプに関する指示(たとえばトークン化または暗号化)をさらに含むことができる。ブロック516において、PRSサーバ235は、ユーザインターフェイスで生成された保護される属性/コンポーネント情報をクラウドインフラストラクチャシステム220に送信することによって、クラウドインフラストラクチャシステム220に、保護された属性/コンポーネントを通知する。一実施形態では、PRSサーバ220は、以下のフォーマットを有するメッセージ518を送信する。
ブロック520において、クラウドインフラストラクチャシステム220は、指定されたコンポーネントまたはエンティティオブジェクト属性を保護されたものとしてマーキングする。ブロック522において、クラウドインフラストラクチャシステム220は、保護されたフィールドについての確認情報をPRSサーバ220に送信することができる。インフラストラクチャシステム210は、以下のフォーマットを有する応答524を返すことができる。
図6は、本発明による一実施形態における自己記述設定を利用するためのメッセージシーケンスチャートを示す。ブロック602において、クライアントデバイス205,210、および215のうちの1つ以上は、クラウドインフラストラクチャシステム220にUIページまたはクライアントコンポーネントを要求する。要求604は、HTTP要求、SOAP要求、XMLメッセージなどを含むことができる。ブロック608において、クラウドインフラストラクチャシステム220は、各保護された属性について識別子を判断する。一実施形態では、クラウドベースのアプリケーション245に関連付けられたUIまたはコンポーネントランタイム(たとえば、Oracle ADF Faces rendering)は、各保護されたフィールドのトークン化識別子をデータモデルレベルに問い合わせる。ブロック610において、クラウドインフラストラクチャシステム220は、UIまたはクライアントコンポーネントを生成し、保護されたフィールドにマーキングする。クラウドインフラストラクチャシステム210は、応答612において、生成されたUIまたはクライアントコンポーネントをマーキングされた保護されたフィールドとともに返すことができる。ブロック610で生成されたマーキングされた保護されたフィールドは、応答612のペイロードに含まれる。たとえば、保護されたフィールドにマーキングすることは以下のフォーマットを有してもよく:
生成されたUIまたはクライアントコンポーネントは、以下のフォーマットを有してもよく:
応答612の次のペイロードは、以下のフォーマットを有するマップ情報を含んでもよい:
ブロック614において、PRSサーバ235は、応答612を傍受し、応答612のペイロードに含まれるマップを使用して、プライベートデータベース240からの保護されたデータでUIまたはクライアントコンポーネントをポピュレートする。たとえば、PRSサーバ235は、マップを使用して、<field name=“fname” protect=“protect” tokenize=“tokenize"/> に使用されるランダムなトークン化された値を、同じ保護されたフィールド<field name=“fname” protect=“protect” tokenize=“tokenize"/>に対してプライベートデータベース240に格納された機密データ値で置換する。次いで、PRSサーバ235は、修正された応答616を1つ以上のクライアントデバイス205,210、および215に転送する。ブロック618において、1つ以上のクライアントデバイス205,210、および215は、プライベートデータベース240からの保護されたデータを保護されたフィールドに含む生成されたUIまたはクライアントコンポーネントを表示する。
ブロック620において、1つ以上のクライアントデバイス20,210、および215は、クラウドインフラストラクチャシステム220にデータをポストすることができる。ポストされたデータには、UIまたはクライアントコンポーネント内の保護されたフィールドの機密データに対する変更または更新が含まれ得る。一実施形態では、クライアントランタイム(たとえば、ADF Facesクライアント)は、UIまたはクライアントコンポーネントのトークン化情報を使用して、周知のフィールド(たとえばProtectionKey)を使用してマッピングをPRSサーバ235にスプーンフィーディングする。たとえば、PRSサーバ235は、周知のフィールドを使用して、その設定をルックアップし、対応するアクション(たとえば、暗号化またはトークン化)を見つけることができる。ブロック622において、1つ以上のクライアントデバイス205,210、および215は、マッピングを要求624に挿入する(たとえば、oracle.adf.view.rich.TOKENIZED={'r1:0:foo:it1’:{‘object’:’emp', ‘field’:’fname'}}のようなID->protectionKey Mapを生成する)。1つ以上のクライアントデバイス205,210、および215は、ブロック622からのマッピングを含むように、以下のように要求624を生成することができる。
ブロック626において、PRSサーバ235は要求624を傍受し、マップ(たとえば、ID->protectionKey Map)を使用して、任意の保護されたデータを暗号化またはトークン化された値と置換し、保護されたデータをプライベートデータベース225に格納する。次いで、PRS235は、修正された要求628をクラウドインフラストラクチャシステム220に転送する。
したがって、PRSサーバ235の管理者は、機密データをデータモデル/コンポーネントレベルで識別し、それらを自己記述的な方法でマーキングすることができる。クラウドベースのアプリケーションに関連付けられる任意の生成されたUI要素は、PRSサーバ235によって認識されるオブジェクト/フィールドトークンに動的にマッピングすることができる。このように、共有されるコンポーネントは、どこで使用され、どのid値を有していても、常に保護される。さらに、複数のエントリをPRSサーバ235に追加する必要はない。
V.保護されるデータ列および保護されないデータ列について同じテーブルを共有することをサポート
クラウドデータベース250は、機密データの暗号化バージョンまたはトークン化バージョンを含むことができる。上に示唆したように、エンティティオブジェクトは、同じ構造を共有し、同じデータベーステーブルを共有することができる。一部のエンティティオブジェクトを保護することができる一方で、他のエンティティオブジェクトは保護されない。従来は、異なる保護設定を提供するために異なるデータベーステーブルが必要であり、その結果、データベーステーブルが複製される。
これらの問題を解決するために、いくつかの実施形態では、PRSサーバ235の管理者は、コンポーネントまたはデータオブジェクトの保護ルールをデータオブジェクト層において設定するとき、識別フラグを定義して、特定の行がどのコンポーネントまたはデータオブジェクトに属するかを識別することができる。したがって、同一の構造を共有するすべてのコンポーネントまたはデータオブジェクトは、異なる保護ルールを有しながらも、同じデータベーステーブルを共有できる。これにより、複数の同様のデータベーステーブルを維持する管理業務が簡素化されるが、セキュリティ上の懸念を生じることなく、構造的に類似したコンポーネントまたはデータオブジェクトで動作する共通ロジックを再利用することもできる。
図7は、本発明の一実施形態による、クラウドベースのアプリケーション245に関して使用されるさまざまな層を示す図である。層710は、クラウドデータベース250に格納された、クラウドベースのアプリケーション245によって使用されるデータテーブルを表す。図示されたデータベーステーブルは、コンポーネントまたはデータオブジェクトのための識別フラグとして指定された少なくとも1つの列、たとえばエンティティ識別子属性「TYPE」を含む。図示されたデータベーステーブルは、クラウドベースのアプリケーション245によって使用される複数のコンポーネントまたはデータオブジェクト間で共有される属性のスーパーセットをサポートするように設定することができる。識別フラグを使用して、従業員オブジェクトおよび連絡先オブジェクトなど、特定の行が属するコンポーネントまたはデータオブジェクトを識別することができる。理解されるように、複数のコンポーネントまたはデータオブジェクトは、トークン化、暗号化、または保護されていないなど、異なる保護ルールを有する一方、同じデータベーステーブルを共有することができる。
セキュリティ設定(すなわち、コンポーネントまたはデータオブジェクトの保護ルール)は、データベーステーブルより上の層、たとえば、データモデル層720に配置することができる。TYPEなどの各データモデルの属性は明示的に定義または暗示することができる。識別フラグがデータオブジェクトに組み込まれているので、データオブジェクトに属する行のみが、たとえば、さまざまなUIコンポーネントにバインドされているなど、データオブジェクトがクラウドベースのアプリケーション245で使用されるときにピックアップされるはずである。たとえば、「Emp」オブジェクトでは、「A」属性は保護されているため、それは、データモデル層に、protectionState(保護状態)とprotecionKey(保護キー)という2つのヒントを有する。これらは「連絡先」オブジェクトにおける「A」属性には存在しない。さらに、「連絡先」オブジェクトでは、「B」属性が保護されているため、それは、データモデル層に、protectionStateおよびprotecionKeyという2つのヒントを有する。これらは「Emp」オブジェクトの「B」属性には存在しない。したがって、データ保護はデータオブジェクトレベルで設定されるため、データオブジェクトに属する行のみが暗号化/トークン化の対象となる。
データオブジェクトは、UI層730内の1つ以上のUIコンポーネントにバインドすることができる。通常、データオブジェクトは、データオブジェクトの1つ以上の属性をレンダリングするためにUIコンポーネントにバインドされる。たとえば、データモデル層720からのデータオブジェクトは、<af:inputText id="FIELD1" value="# {EMPbinding.A.inputValue}"/>などの標準表現言語を介してUI層730に公開されてもよい。ドキュメントオブジェクトモデル層740において、レンダリングされたUIコンポーネントは、特定のドキュメントオブジェクトモデル(DOM)要素が保護されたフィールドであることを示す識別子を含むことができる。上述のように、識別子は、PRSサーバ235によって生成されたトークン識別子を含むことができる。
図8は、本発明による一実施形態における、保護されたデータ列および保護されていないデータ列に対する同一のテーブルの共有をサポートするための方法800のフローチャートである。図8に示す方法800の実現または方法800における処理は、たとえば、コンピュータシステムもしくは情報処理装置などの論理機械の中央処理装置(CPUもしくはプロセッサ)によって実行される際にソフトウェア(たとえば、命令もしくはコードモジュール)によって、電子装置もしくはアプリケーション特化集積回路のハードウェアコンポーネントによって、またはソフトウェア要素とハードウェア要素との組み合わせによって、実行されてもよい。図8に示す方法800は、ステップ810から始まる。
ステップ810において、複数のデータオブジェクトをサポートするデータベーステーブル定義が受信される。データベーステーブルは、複数のデータオブジェクトをサポートするように定義することができる。たとえば、人物テーブルは、複数のデータオブジェクトの間で共有される属性のスーパーセットに対応する列を含むことができる。ステップ820では、少なくとも1つの列がデータオブジェクトについての識別フラグとして指定される。いくつかの実施形態では、データベーステーブルの所定の列を使用することができ、または識別フラグのために新しい列を作成することができる。
ステップ830では、データベーステーブルによってサポートされるデータオブジェクトの少なくとも属性が、保護されたフィールドとして指定される。自己記述設定を提供することに関して上述したように、PRSサーバ235の管理者は、クラウドベースのアプリケーション245によって使用されるデータオブジェクトのリストを要求することができる。管理者は、セキュリティポリシーの対象となるデータオブジェクト(および/またはそれらの個々の属性)を選択し、その情報をクラウドベースのアプリケーション245に送信することができる。クラウドベースのアプリケーション245は、次いで、保護される必要がある任意のデータベーステーブル、データモデル、およびコンポーネントを設定できる。
ステップ840では、データが、データベーステーブルに、保護されたデータと保護されていないデータとを混合して格納される。したがって、PRSサーバ235の管理者が、データオブジェクト層においてコンポーネントまたはデータオブジェクトの保護ルールを設定するとき、特定の行がどのコンポーネントまたはデータオブジェクトに属するかを識別するために識別フラグを定義することができる。したがって、同じ構造を共有しているすべてのコンポーネントまたはデータオブジェクトが、異なる保護ルールを有しながらも、同じデータベーステーブルを共有できる。これにより、複数の同様のデータベーステーブルを維持する管理作業が簡素化されるが、また、構造的に類似したコンポーネントまたはデータオブジェクトで動作する共通ロジックの再利用がセキュリティ上の懸念なしに可能になる。
VI.保護されたフィールドにおける自動動作検出
異なるデータオブジェクトは異なる保護フィールドを有することができるので、クラウドベースのアプリケーション245によって実行される特定の動作は、それが保護されたフィールドに対して実行される場合、無効になり得る。いくつかの実施形態では、クラウドベースのアプリケーション245は、ユーザの混乱を避けるためにサポートされない可能性のある動作を自動的に判断することができる。たとえば、クラウドベースのアプリケーション245は、保護されたデータ上のすべての可能な演算子を検査し、それらの有効化/無効化に関するインテリジェントな決定を行うことができる。これにより、保護されたデータに対して実行される特定の操作で誤った結果を生成するのを避けるために必要な作業量を大幅に削減できる。自己記述設定はこの場合有用であり、なぜならば、特定のフィールドの保護状態が変更された場合、クラウドベースのアプリケーション245は変更を認識し、任意の関連する演算子を自動的に有効/無効にできるからである。有効/無効にできる操作の例としては、保護されたデータに対するサーバ側の検証、保護されたデータに対する自動提案の挙動、保護されたデータに対する検索に対する完全一致の許可、保護されたデータに対する並べ替えなどがある。
図9は、本発明による一実施形態における保護されたフィールドについての自動動作検出のための方法900のフローチャートである。図9に示す方法900の実現または方法900における処理は、たとえば、コンピュータシステムもしくは情報処理装置などの論理機械の中央処理装置(CPUもしくはプロセッサ)によって実行される際にソフトウェア(たとえば、命令もしくはコードモジュール)によって、電子装置もしくはアプリケーション特化集積回路のハードウェアコンポーネントによって、またはソフトウェア要素とハードウェア要素との組み合わせによって、実行されてもよい。図9に示す方法900は、ステップ910から始まる。
ステップ910で、データモデル層設定がデータモデル層で生成され、PRSサーバ235で受信される。たとえば、PRSサーバ235は、クラウドインフラストラクチャシステム220のAPIを利用して、セキュリティポリシーの対象となるデータモデル属性を取得することができる。データモデル層設定は、次のフォーマットを有してもよい:
ステップ920において、1つ以上の保護されたフィールドが判断される。自己記述設定を提供することに関して上述したように、PRSサーバ235の管理者は、クラウドベースのアプリケーション245によって使用されるデータオブジェクトのリストを要求することができる。管理者は、セキュリティポリシーの対象となるデータオブジェクト(および/またはそれらの個々の属性)を選択し、その情報をクラウドベースのアプリケーション245に送信することができる。クラウドベースのアプリケーション245は、どのフィールドが保護されているかを判断することができる。
ステップ930では、保護されたフィールドを使用して実行可能な動作が判断される。これには、保護されたフィールドが検索可能であるか、オートコンプリートで使用されるかどうかを判断することなどを含むことができる。ステップ940において、クラウドベースのアプリケーション245は、保護されたフィールドで実行できる、判断された動作に基づいて、設定される。一実施形態では、クラウドベースのアプリケーション245は、保護されたデータ上でバリデータを処理する際に、必要なチェックを処理するだけであり、他のバリデータをスキップするよう、設定することができる。クラウドベースのアプリケーション245は、保護されたデータに対する自動提案動作を制御するロジックを追加するように構成することができる。クラウドベースのアプリケーション245は、クエリページをレンダリングするときに、完全一致検索演算子のみを許可するように、設定することができる。クラウドベースのアプリケーション245は、テーブルをレンダリングするときに、保護されたデータオブジェクトから列上でソートすることを無効にするように、設定できる。
VII.統合検索
クラウドベースのアプリケーション245によって実行可能であり、保護されたフィールドに対して行なわれた場合に無効になり得る1つの動作は、検索である。特定のフィールドが保護されている場合、検索は困難になる。従来的には、検索機能が完全一致のみをサポートするよう妥協されるか、またはPRSサーバ235が、データ複製設定がクラウドデータベース250とプライベートデータベース240との間にある状態で、検索可能なすべての行の完全なコピーを有さなければならないかのいずれかである。次いで、PRSサーバ235は、機密データ上で検索することと、ロジックをレンダリングして最終結果をレンダリングすることとの両方を実行する必要がある。
いくつかの実施形態では、1つ以上のクライアントデバイス205,210、および215は、プライベートデータベース240およびクラウドデータベース250の検索から生成された検索結果を統合または集中させることができる。クラウドベースのアプリケーション245に関連付けられるページのレンダリングは、非常に複雑になり得る。たとえば、PRSサーバ235がクラウドベースのアプリケーション245をレンダリングしなければならない場合、ユーザがクラウドベースのアプリケーション245をPRSサーバ235と統合することは、莫大な作業であり得る。クライアント側統合検索を使用することにより、統合作業の量が低減され得、クラウドベースのアプリケーション245は最終結果ページを完全にレンダリングすることができるので、すべてのページが同じルックアンドフィールを有し、一貫性がある。したがって、統合検索では、保護されたフィールドおよび保護されていないフィールド上での検索がエンドユーザに対して透過的に行われる。さらに、機密データに対する検索可能性の妥協がない。
さまざまな実施形態において、1つ以上のクライアントデバイス205,210、および215は、元の検索を2つの検索に分割する。1つ以上のクライアントデバイス205,210、および215は、図6のブロック610のように、マーキングされた保護されたフィールドマップに基づいて元の検索を分割し、なぜならば、1つ以上のクライアントデバイス205,210、および215の各々は、どのフィールドが保護されており、どのフィールドが保護されていないかを知っているからである。保護されたフィールドに対して、プライベートデータベース240を使用して第1の検索が実行され(たとえば、検索要求ペイロードは、PRSサーバ235が保護されたフィールドについてのみクライアント側検索を実行するための情報を有する)、保護されないフィールドを含む他のすべてのフィールドに対して、クラウドデータベース250を使用して第2の検索がおこなわれる(たとえば、PRSサーバ235は、次いで、クラウドベースのアプリケーション245が保護トークンを伴う新しい検索語を知るように、ペイロード情報を変更することができる)。保護されたフィールドに対する第1の検索は、PRSサーバ235を使用して実行され、結果セットは(元の検索に加えて)クラウドベースのアプリケーション245に渡される。クラウドベースのアプリケーション245は、第1および第2の検索から最終結果セットを組み立て、統合検索結果ページをレンダリングすることができる。
たとえば、"Emp"オブジェクトの"firstName"属性が、protectKey EMP_OBJ/Ename_FLDで保護されてもよく、ユーザが検索"FirstName startwith 'B' (Bで始まる名)"を行なうとき、元の検索要求にはすべての必要な情報が含まれる。PRSサーバ235は、要求を傍受し、プライベートデータベース240でFirstNameを検索し、一致したすべてのFirstNamesのトークン化された値で要求のペイロードを更新し、その要求をクラウドベースのアプリケーション245に渡す。クラウドベースのアプリケーション245は、次いで、PRSサーバ235からのトークン化された値でクラウドデータベース250を検索し、最終結果データセットを生成し、それが最終ページレンダリングで使用される。レンダリングされたページは、1つ以上のクライアントデバイス205,210、および215に返送される。PRSサーバ235は、応答を傍受し、1つ以上のクライアントデバイス205,210、および215に送信する前に、トークン化された値を実際のテキストに変換する。PRSサーバ235からの保護されたフィールドの検索結果と、クラウドベースのアプリケーション245で直接行われた保護されていないフィールドの検索結果とは、最終的なデータセットで結合される。
さまざまな実施形態では、ユーザが検索を開始するとき、検索基準のいずれかが、保護されたフィールド上にある場合、PRSサーバ235は、その検索をプライベートデータベース240に対して適用することができる。PRSサーバ235は、結果セットを、行キーによって識別された適格である行のセットとして生成することができる。次いで、行キーのセットは、クラウドベースのアプリケーション245に対する検索要求に送信される。クラウドベースのアプリケーション245が検索要求を処理するとき、適格である行キーのセットは、最終的な検索結果をフィルタリングするために使用される。たとえば、行キーは、検索基準に一致するトークン化または暗号化されたデータを識別するために使用され、トークン化または暗号化されたデータは、クラウドデータベース250内の保護されていないデータに対して検索基準を実行することによって得られる検索結果に追加される。最終検索結果がレンダリングされ、1つ以上のクライアントデバイス205,210、および215に返送されて、元の検索要求に対する応答として表示される。
図10は、本発明による一実施形態における統合検索のための方法1000のフローチャートである。図10に示す方法1000の実現または方法1000における処理は、たとえば、コンピュータシステムもしくは情報処理装置などの論理機械の中央処理装置(CPUもしくはプロセッサ)によって実行される際にソフトウェア(たとえば、命令もしくはコードモジュール)によって、電子装置もしくはアプリケーション特化集積回路のハードウェアコンポーネントによって、またはソフトウェア要素とハードウェア要素との組み合わせによって、実行されてもよい。図10に示す方法1000は、ステップ1010から始まる。
ステップ1010で、クエリが受信される。たとえば、1つ以上のクライアントデバイス205,210、および215は、ユーザによって提供される情報からクエリを構築することができ、クラウドベースのアプリケーション245は、1つ以上のクライアントデバイス205,210、および215からクエリを受信することができる。このクエリは、保護されたフィールドおよび保護されていないフィールドに適用可能な検索基準、たとえば、名は保護されていないデータであるが姓は保護されたデータである、人物の姓および名の検索を含むことができる。ステップ1020において、保護されたフィールドに関連する検索基準が、PRSサーバ235のようなデータセキュリティプロバイダに送信される。一実施形態では、1つ以上のクライアントデバイス205,210、および215は、保護されたフィールドでの処理のために、クエリ全体をPRSサーバ220に送信する。次いで、PRSサーバ235は、検索結果を元のクエリと共にクラウドベースのアプリケーション230に送信することができる。たとえば、ステップ1030において、パブリックフィールドに関連する検索基準が、保護されたフィールド検索の結果とともにクラウドベースのアプリケーションに送信される。いくつかの実施形態では、各プライベートデータベース225およびクラウドデータベース235に対する検索基準を独立して送信することができる。
ステップ1040では、保護されたフィールド結果およびクラウド検索結果を使用して、検索の最終結果がレンダリングされる。一実施形態では、ユーザが検索を開始するとき、検索基準のいずれかが保護されたフィールド上にある場合、PRSサーバ220は、その検索をプライベートデータベース225に対して適用することができる。PRSサーバは、結果セットを、行キーによって識別される適格である行のセットとして生成することができる。次に、行キーのセットは、クラウドベースのアプリケーション230のための検索要求に送られる。クラウドベースのアプリケーション230が要求を処理するとき、適格である行キーのセットは、最終的な検索結果をフィルタリングするために使用される。最終的な検索結果のみがレンダリングされ、クライアントデバイス215に送り返されて表示される。
最終的な検索結果は、クラウドデータと、プライベートデータベース240に対する検索基準を満たしたトークン化/暗号化されたデータとの組み合わせを含む。トークン化/暗号化データは、1つ以上のクライアントデバイス205,210、および215によって表示される前に、プライベートデータベース240からのデータと置換することができる。したがって、プライベートデータベース240およびクラウドデータベース250の両方からの検索結果を統合して、よりシームレスな検索体験をユーザに提供することができる。
VIII.ハードウェア環境
以下の記載では、説明のために、特定の詳細はこの発明の実施の形態の十分な理解を提供するために述べられる。しかしながら、さまざまな実施の形態がこれらの特定の詳細なしに実施されてもよいことは明らかである。図および記載は、制限的になるようには意図されない。
いくつかの図面に示されたシステムは、さまざまな構成で提供されてもよい。いくつかの実施形態では、システムは、システムの1つ以上のコンポーネントがクラウドコンピューティングシステムの1つ以上のネットワークに分散された分散型システムとして構成することができる。
図11は、実施形態のうちの1つを実現するための分散型システム1100の簡略図を示す。示されている実施形態では、分散型システム1100は、1つ以上のクライアントコンピューティングデバイス1102,1104,1106および1108を含み、それらは、1つ以上のネットワーク1110を介してウェブブラウザ、所有権付きクライアント(たとえばオラクルフォームズ(Oracle Forms))などのクライアントアプリケーションを実行および動作させるように構成される。サーバ1112は、リモートクライアントコンピューティングデバイス1102,1104,1106および1108とネットワーク1110を介して通信可能に結合されてもよい。
さまざまな実施形態では、サーバ1112は、システムのコンポーネントのうちの1つ以上によって提供される1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。いくつかの実施形態では、これらのサービスは、ウェブベースのサービスもしくはクラウドサービスとして、またはソフトウェア・アズ・ア・サービス(SaaS)モデルの下で、クライアントコンピューティングデバイス1102,1104,1106および/または1108のユーザに対して提供されてもよい。クライアントコンピューティングデバイス1102,1104,1106および/または1108を動作させるユーザは、次いで、1つ以上のクライアントアプリケーションを利用してサーバ1112と対話して、これらのコンポーネントによって提供されるサービスを利用してもよい。
図に示される構成では、システム1100のソフトウェアコンポーネント1118,1120および1122は、サーバ1112上で実現されるものとして示されている。他の実施形態では、システム1100のコンポーネントのうちの1つ以上および/またはこれらのコンポーネントによって提供されるサービスは、クライアントコンピューティングデバイス1102,1104,1106および/または1108のうちの1つ以上によって実現されてもよい。クライアントコンピューティングデバイスを動作させるユーザは、次いで、1つ以上のクライアントアプリケーションを利用して、これらのコンポーネントによって提供されるサービスを用いてもよい。これらのコンポーネントは、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組み合わせで実現されてもよい。分散型システム1100とは異なってもよいさまざまな異なるシステム構成が可能であることが理解されるべきである。図に示される実施形態は、したがって、実施形態のシステムを実現するための分散型システムの一例であり、限定的であるよう意図されるものではない。
クライアントコンピューティングデバイス1102,1104,1106および/または1108は、携帯可能な手持ち式のデバイス(たとえば、iPhone(登録商標)、セルラー電話、iPad(登録商標)、コンピューティングタブレット、携帯情報端末(PDA))またはウェアラブルデバイス(たとえばGoogle Glass(登録商標)頭部装着型ディスプレイ)であってもよく、Microsoft Windows Mobile(登録商標)などのソフトウェア、および/もしくは、iOS、Windows Phone、Android、BlackBerry10、Palm OSなどのさまざまなモバイルオペレーティングシステムを実行し、インターネット、電子メール、ショートメッセージサービス(SMS)、BlackBerry(登録商標)、または他のイネーブルにされた通信プロトコルであってもよい。クライアントコンピューティングデバイスは、汎用パーソナルコンピュータであってもよく、一例として、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)および/またはLinux(登録商標)オペレーティングシステムのさまざまなバージョンを実行するパーソナルコンピュータおよび/またはラップトップコンピュータを含むことができる。クライアントコンピューティングデバイスは、たとえばGoogle Chrome OSなどのさまざまなGNU/Linuxオペレーティングシステムを限定を伴うことなく含む、さまざまな市場で入手可能なUNIX(登録商標)またはUNIXのようなオペレーティングシステムのいずれかを実行するワークステーションコンピュータであり得る。代替的に、または加えて、クライアントコンピューティングデバイス1102,1104,1106および1108は、ネットワーク1110を介して通信することができる、シンクライアントコンピュータ、インターネットにより可能化されるゲームシステム(たとえば、Kinect(登録商標)ジェスチャ入力デバイスを伴うかまたは伴わないMicrosoft Xboxゲームコンソール)および/または個人メッセージ伝達デバイスなどの任意の他の電子デバイスをであってもよい。
例示の分散型システム1100は、4つのクライアントコンピューティングデバイスとともに示されているが、任意の数のクライアントコンピューティングデバイスがサポートされてもよい。センサを伴うデバイスなど、他のデバイスがサーバ1112と対話してもよい。
分散型システム1100におけるネットワーク1110は、TCP/IP(伝送制御プロトコル/インターネットプロトコル)、SNA(システムネットワークアーキテクチャ)、IPX(インターネットパケット交換)、AppleTalkなどを限定を伴うことなく含む、さまざまな市場で入手可能なプロトコルのうちのいずれかを用いてデータ通信をサポートすることができる、当業者が精通している任意のタイプのネットワークであってもよい。単に一例として、ネットワーク1110は、イーサネット(登録商標)、トークンリングなどに基づくものなどのローカルエリアネットワーク(LAN)であってもよい。ネットワーク1110は、ワイドエリアネットワークおよびインターネットであってもよい。ネットワーク1110は、仮想ネットワークを含み得て、当該仮想ネットワークは、仮想プライベートネットワーク(virtual private network:VPN)、イントラネット、エクストラネット、公衆交換電話網(public switched telephone network:PSTN)、赤外線ネットワーク、無線ネットワーク(たとえば、米国電気電子学会(IEEE)802.11のプロトコル一式、ブルートゥース(登録商標)、および/もしくはその他の無線プロトコルのうちのいずれかの下で動作するネットワーク)、ならびに/またはこれらのいずれかの組み合わせおよび/もしくは他のネットワークを含むが、それらに限定されるものではない。
サーバ1112は、1つ以上の汎用コンピュータ、専用のサーバコンピュータ(一例としてPC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント型サーバなどを含む)、サーバファーム、サーバクラスタ、またはその他の適切な構成および/もしくは組み合わせで構成されてもよい。さまざまな実施形態において、サーバ1112は、前述の開示に記載される1つ以上のサービスまたはソフトウェアアプリケーションを実行するように適合されてもよい。たとえば、サーバ1112は、本開示の実施形態に従って上記の処理を実行するためのサーバに対応してもよい。
サーバ1112は、上記のもののうちのいずれかを含むオペレーティングシステム、および任意の市場で入手可能なサーバオペレーティングシステムを実行してもよい。サーバ1112は、HTTP(ハイパーテキスト転送プロトコル)サーバ、FTP(ファイル転送プロトコル)サーバ、CGI(コモンゲートウェイインターフェイス)サーバ、JAVA(登録商標)サーバ、データベースサーバなどを含むさまざまなさらに他のサーバアプリケーションおよび/または中間層アプリケーションのうちのいずれかも実行してもよい。例示的なデータベースサーバは、オラクル、マイクロソフト、サイベース、IBM(インターナショナルビジネスマシンズ)などから市場で入手可能なものを含むが、それらに限定されるものではない。
いくつかの実現例では、サーバ1112は、クライアントコンピューティングデバイス1102,1104,1106および1108のユーザから受信されるデータフィードおよび/またはイベント更新情報を解析および整理統合するための1つ以上のアプリケーションを含んでもよい。一例として、データフィードおよび/またはイベント更新情報は、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール(たとえば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通監視などに関連するリアルタイムのイベントを含んでもよい、1つ以上の第三者情報源および連続データストリームから受信される、Twitter(登録商標)フィード、Facebook(登録商標)更新情報またはリアルタイムの更新情報を含んでもよいが、それらに限定されるものではない。サーバ1112は、データフィードおよび/またはリアルタイムのイベントをクライアントコンピューティングデバイス1102,1104,1106および1108の1つ以上の表示デバイスを介して表示するための1つ以上のアプリケーションも含んでもよい。
分散型システム1100は、1つ以上のデータベース1114および1116も含んでもよい。データベース1114および1116は、さまざまな位置にあってもよい。一例として、データベース1114および1116のうちの1つ以上は、サーバ1112に局在する(および/またはサーバ1112に常駐する)非一時的な記憶媒体にあってもよい。代替的に、データベース1114および1116は、サーバ1112から遠隔にあり、ネットワークベースまたは専用の接続を介してサーバ1112と通信してもよい。一組の実施形態では、データベース1114および1116は、記憶域ネットワーク(storage−area network:SAN)にあってもよい。同様に、サーバ1112に帰する機能を実行するための任意の必要なファイルが、適宜、サーバ1112上においてローカルに、および/または遠隔で格納されてもよい。一組の実施形態では、データベース1114および1116は、SQLフォーマットされたコマンドに応答してデータを格納、更新および検索取得するように適合される、オラクルによって提供されるデータベースなどのリレーショナルデータベースを含んでもよい。
図12は、本発明のさまざまな実施形態を実現することができる例示的なコンピュータシステム1200を示す。システム1200は、上記のコンピュータシステムのうちのいずれかを実現するよう用いられてもよい。図に示されるように、コンピュータシステム1200は、多数の周辺サブシステムとバスサブシステム1202を介して通信する処理ユニット1204を含む。これらの周辺サブシステムは、処理加速ユニット1206、I/Oサブシステム1208、ストレージサブシステム1218および通信サブシステム1224を含んでもよい。ストレージサブシステム1218は、有形のコンピュータ読取可能な記憶媒体1222およびシステムメモリ1210を含む。
バスサブシステム1202は、コンピュータシステム1200のさまざまなコンポーネントおよびサブシステムに意図されるように互いに通信させるための機構を提供する。バスサブシステム1202は単一のバスとして概略的に示されているが、バスサブシステムの代替的実施例は、複数のバスを利用してもよい。バスサブシステム1202は、さまざまなバスアーキテクチャのうちのいずれかを用いるメモリバスまたはメモリコントローラ、周辺バスおよびローカルバスを含むいくつかのタイプのバス構造のうちのいずれかであってもよい。たとえば、そのようなアーキテクチャは、業界標準アーキテクチャ(Industry Standard Architecture:ISA)バス、マイクロチャネルアーキテクチャ(Micro Channel Architecture:MCA)バス、エンハンストISA(Enhanced ISA:EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(Video Electronics Standards Association:VESA)ローカルバス、およびIEEE P1386.1規格に従って製造される中二階バスとして実現され得る周辺コンポーネントインターコネクト(Peripheral Component Interconnect:PCI)バスを含んでもよい。
1つ以上の集積回路(たとえば、従来のマイクロプロセッサまたはマイクロコントローラ)として実現可能な処理ユニット1204は、コンピュータシステム1200の動作を制御する。1つ以上のプロセッサが処理ユニット1204に含まれてもよい。これらのプロセッサは、シングルコアプロセッサを含んでもよく、またはマルチコアプロセッサを含んでもよい。特定の実施形態では、処理ユニット1204は、シングルコアまたはマルチコアプロセッサが各処理ユニットに含まれる1つ以上の独立した処理ユニット1232および/または1234として実現されてもよい。他の実施形態では、処理ユニット1204は、2つのデュアルコアプロセッサを単一のチップに統合することによって形成されるクアッドコア処理ユニットとして実現されてもよい。
さまざまな実施形態では、処理ユニット1204は、プログラムコードに応答してさまざまなプログラムを実行することができ、複数の同時に実行されるプログラムまたはプロセスを維持することができる。任意の所与の時点で、実行されるべきプログラムコードの一部または全ては、プロセッサ1204、および/または、ストレージサブシステム1218に常駐することができる。好適なプログラミングを介して、プロセッサ1204は、上記のさまざまな機能を提供することができる。コンピュータシステム1200は、デジタル信号プロセッサ(digital signal processor:DSP)、特殊目的プロセッサなどを含み得る処理加速ユニット1206をさらに含んでもよい。
I/Oサブシステム1208は、ユーザインターフェイス入力デバイスおよびユーザインターフェイス出力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、キーボード、マウスまたはトラックボールなどのポインティングデバイス、ディスプレイに組み込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを伴う音声入力デバイス、マイクロフォン、および他のタイプの入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、たとえば、ジェスチャおよび話し言葉コマンドを用いて、ナチュラルユーザインターフェイスを介して、Microsoft Xbox(登録商標)360ゲームコントローラなどの入力デバイスをユーザが制御して対話することを可能にするMicrosoft Kinect(登録商標)モーションセンサなどのモーション感知および/またはジェスチャ認識デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、ユーザから目の動き(たとえば、写真を撮っている間および/またはメニュー選択を行なっている間の「まばたき」)を検出し、アイジェスチャを入力デバイス(たとえばGoogle Glass(登録商標))への入力として変換するGoogle Glass(登録商標)瞬き検出器などのアイジェスチャ認識デバイスも含んでもよい。また、ユーザインターフェイス入力デバイスは、ユーザが音声コマンドを介して音声認識システム(たとえばSiri(登録商標)ナビゲータ)と対話することを可能にする音声認識感知デバイスを含んでもよい。
ユーザインターフェイス入力デバイスは、三次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカ、デジタルカメラ、デジタルカムコーダ、ポータブルメディアプレーヤ、ウェブカム、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザレンジファインダ、および視線追跡デバイスなどの聴覚/視覚デバイスも含んでもよいが、それらに限定されるものではない。また、ユーザインターフェイス入力デバイスは、たとえば、コンピュータ断層撮影、磁気共鳴撮像、ポジションエミッショントモグラフィー、医療用超音波検査デバイスなどの医療用画像化入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、たとえば、MIDIキーボード、デジタル楽器などの音声入力デバイスも含んでもよい。
ユーザインターフェイス出力デバイスは、ディスプレイサブシステム、インジケータライト、または音声出力デバイスなどの非ビジュアルディスプレイなどを含んでもよい。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを使うものなどのフラットパネルデバイス、投影デバイス、タッチスクリーンなどであってもよい。一般に、「出力デバイス」という語の使用は、コンピュータシステム1200からユーザまたは他のコンピュータに情報を出力するための全ての考えられ得るタイプのデバイスおよび機構を含むよう意図される。たとえば、ユーザインターフェイス出力デバイスは、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力デバイスおよびモデムなどの、テキスト、グラフィックスおよび音声/映像情報を視覚的に伝えるさまざまな表示デバイスを含んでもよいが、それらに限定されるものではない。
コンピュータシステム1200は、現在のところシステムメモリ1210内に位置しているものとして示されているソフトウェア要素を備えるストレージサブシステム1218を備えてもよい。システムメモリ1210は、処理ユニット1204上でロード可能および実行可能なプログラム命令と、これらのプログラムの実行中に生成されるデータとを格納してもよい。
コンピュータシステム1200の構成およびタイプによって、システムメモリ1210は、揮発性であってもよく(ランダムアクセスメモリ(RAM)など)、および/または、不揮発性であってもよい(リードオンリメモリ(ROM)、フラッシュメモリなど)。RAMは、一般に、処理ユニット1204にすぐにアクセス可能であり、および/または、処理ユニット1204によって現在動作および実行されているデータおよび/またはプログラムモジュールを含む。いくつかの実現例では、システムメモリ1210は、スタティックランダムアクセスメモリ(SRAM)またはダイナミックランダムアクセスメモリ(DRAM)などの複数の異なるタイプのメモリを含んでもよい。いくつかの実現例では、起動中などにコンピュータシステム1200内の要素間における情報の転送を助ける基本的なルーティンを含むベーシックインプット/アウトプットシステム(basic input/output system:BIOS)は、一般に、ROMに格納されてもよい。一例として、限定を伴うことなく、システムメモリ1210は、クライアントアプリケーション、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(relational database management system:RDBMS)などを含んでもよいアプリケーションプログラム1212、プログラムデータ1214およびオペレーティングシステム1216も示す。一例として、オペレーティングシステム1216は、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)および/もしくはLinuxオペレーティングシステム、さまざまな市場で入手可能なUNIX(登録商標)またはUNIXのようなオペレーティングシステム(さまざまなGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OSなどを含むがそれらに限定されない)、ならびに/または、iOS、Windows(登録商標) Phone、Android(登録商標) OS、BlackBerry(登録商標)12 OS、およびPalm(登録商標) OSオペレーティングシステムなどのモバイルオペレーティングシステムのさまざまなバージョンを含んでもよい。
ストレージサブシステム1218は、いくつかの実施形態の機能を提供する基本的なプログラミングおよびデータ構造を格納するための有形のコンピュータ読取可能な記憶媒体も提供してもよい。プロセッサによって実行されたときに上記の機能を提供するソフトウェア(プログラム、コードモジュール、命令)は、ストレージサブシステム1218に格納されてもよい。これらのソフトウェアモジュールまたは命令は、処理ユニット1204によって実行されてもよい。ストレージサブシステム1218はまた、本発明に従って使用されるデータを格納するためのリポジトリを提供してもよい。
ストレージサブシステム1200は、コンピュータ読取可能な記憶媒体1222にさらに接続可能なコンピュータ読取可能記憶媒体リーダ1220も含んでもよい。システムメモリ1210とともに、およびオプションとしてシステムメモリ1210との組み合わせで、コンピュータ読取可能な記憶媒体1222は、コンピュータ読取可能な情報を一時的および/またはより永久的に収容、格納、伝送および検索取得するための、遠隔の、ローカルな、固定された、および/またはリムーバブルなストレージデバイスに記憶媒体を加えたものを包括的に表わしてもよい。
コードまたはコードの一部を含むコンピュータ読取可能な記憶媒体1222は、記憶媒体および通信媒体を含む、当該技術分野において公知であるまたは使用されるいずれかの適切な媒体も含んでもよく、当該媒体は、情報の格納および/または伝送のための任意の方法または技術において実現される揮発性および不揮発性の、リムーバブルおよび非リムーバブルな媒体などであるが、それらに限定されるものではない。これは、RAM、ROM、電気的に消去可能なプログラム可能ROM(electronically erasable programmable ROM:EEPROM)、フラッシュメモリもしくは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)、または他の光学式ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または他の有形のコンピュータ読取可能な媒体などの有形のコンピュータ読取可能な記憶媒体を含んでもよい。指定される場合には、これは、データ信号、データ伝送、または所望の情報を伝送するために使用可能でありコンピューティングシステム1200によってアクセス可能であるその他の媒体などの無形のコンピュータ読取可能媒体も含んでもよい。
一例として、コンピュータ読取可能な記憶媒体1222は、非リムーバブル不揮発性磁気媒体に対して読み書きするハードディスクドライブ、リムーバブル不揮発性磁気ディスクに対して読み書きする磁気ディスクドライブ、CD ROM、DVDおよびブルーレイ(登録商標)ディスクなどの、リムーバブル不揮発性光ディスクに対して読み書きする光ディスクドライブ、または他の光学式媒体を含んでもよい。コンピュータ読取可能記憶媒体1222は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープなどを含んでもよいが、それらに限定されるものではない。コンピュータ読取可能な記憶媒体1222は、フラッシュメモリベースのSSD、エンタープライズフラッシュドライブ、ソリッドステートROMなどの不揮発性メモリに基づくソリッドステートドライブ(solid−state drive:SSD)、ソリッドステートRAM、ダイナミックRAM、スタティックRAMなどの揮発性メモリに基づくSSD、DRAMベースのSSD、磁気抵抗RAM(magnetoresistive RAM:MRAM)SSD、およびDRAMとフラッシュメモリベースのSSDとの組み合わせを使用するハイブリッドSSDも含んでもよい。ディスクドライブおよびそれらの関連付けられたコンピュータ読取可能な媒体は、コンピュータ読取可能な命令、データ構造、プログラムモジュールおよび他のデータの不揮発性ストレージをコンピュータシステム1200に提供してもよい。
通信サブシステム1224は、他のコンピュータシステムおよびネットワークに対するインターフェイスを提供する。通信サブシステム1224は、他のシステムとコンピュータシステム1200との間のデータの送受のためのインターフェイスとして働く。たとえば、通信サブシステム1224は、コンピュータシステム1200がインターネットを介して1つ以上のデバイスに接続することを可能にしてもよい。いくつかの実施形態では、通信サブシステム1224は、(たとえば、セルラー電話技術、3G、4GもしくはEDGE(グローバル進化のための高速データレート)などの先進データネットワーク技術、WiFi(IEEE802.11ファミリー規格、もしくは他のモバイル通信技術、またはそれらのいずれかの組み合わせを用いて)無線音声および/またはデータネットワークにアクセスするための無線周波数(RF)送受信機コンポーネント、グローバルポジショニングシステム(GPS)受信機コンポーネント、ならびに/または他のコンポーネントを含んでもよい。いくつかの実施形態では、通信サブシステム1224は、無線インターフェイスに加えて、またはその代わりに、有線ネットワーク接続(たとえば、イーサネット)を提供することができる。
また、いくつかの実施形態では、通信サブシステム1224は、コンピュータシステム1200を使用し得る1人以上のユーザの代わりに、構造化されたおよび/または構造化されていないデータフィード1226、イベントストリーム1228、イベント更新情報1230などの形式で入力通信を受信してもよい。
たとえば、通信サブシステム1224は、ソーシャルネットワークおよび/またはTwitter(登録商標)フィード、Facebook(登録商標)更新情報、Rich Site Summary(RSS)フィードなどのウェブフィード、および/もしくは1つ以上の第三者情報源からのリアルタイム更新情報などの他の通信サービスのユーザからリアルタイムでデータフィード1226を受信(または送信)するように構成されてもよい。
さらに、また、通信サブシステム1224は、連続データストリームの形式でデータを受信するように構成されてもよく、当該連続データストリームは、明確な終端を持たない、本来は連続的または無限であり得るリアルタイムイベントのイベントストリーム1228および/またはイベント更新情報1230を含んでもよい。連続データを生成するアプリケーションの例としては、たとえば、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール(たとえば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通監視などを挙げることができる。
また、通信サブシステム1224は、構造化されたおよび/または構造化されていないデータフィード1226、イベントストリーム1228、イベント更新情報1230などを、コンピュータシステム1200に結合される1つ以上のストリーミングデータソースコンピュータと通信し得る1つ以上のデータベースに出力するよう構成されてもよい。
コンピュータシステム1200は、手持ち式の携帯デバイス(たとえば、iPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(たとえば、Google Glass(登録商標)頭部装着型ディスプレイ)、PC、ワークステーション、メインフレーム、キオスク、サーバラック、またはその他のデータ処理システムを含む、さまざまなタイプのもののうちの1つであり得る。
常に変化するコンピュータおよびネットワークの性質のため、図に示されるコンピュータシステム1200の記載は、単に具体的な例として意図される。図に示されるシステムよりも多くのコンポーネントまたは少ないコンポーネントを有する多くの他の構成が可能である。たとえば、カスタマイズされたハードウェアも使用されてもよく、および/または、特定の要素が、ハードウェア、ファームウェア、ソフトウェア(アプレットを含む)、または組み合わせで実現されてもよい。さらに、ネットワーク入力/出力デバイスなどの他のコンピューティングデバイスへの接続が利用されてもよい。本明細書における開示および教示に基づいて、当業者は、さまざまな実施形態を実現するための他の態様および/または方法を理解するであろう。
上記の明細書では、本発明の局面についてその具体的な実施形態を参照して説明しているが、本発明はそれに限定されるものではないということを当業者は認識するであろう。上記の発明のさまざまな特徴および局面は、個々にまたは一緒に用いられてもよい。さらに、実施形態は、明細書のさらに広い精神および範囲から逸脱することなく、本明細書に記載されているものを超えて、さまざまな環境および用途で利用することができる。したがって、明細書および図面は、限定的ではなく例示的であると見なされるべきである。