発明の詳細な説明
I.はじめに
以下の記載では、説明を目的として、本発明の実施形態が完全に理解されるように具体的な詳細が記載されている。しかし、これらの具体的な詳細がなくてもさまざまな実施形態は実施可能であるということが明らかであろう。たとえば、不必要な程に詳細に実施形態を曖昧にすることのないように、回路、システム、ネットワーク、プロセスおよび他のコンポーネントは、ブロック図の形式でコンポーネントとして示されてもよい。他の例では、実施形態を曖昧にすることを回避するために、周知の回路、プロセス、アルゴリズム、構造および技術は、不必要な詳細なしで示されてもよい。図面および説明は、限定的であるように意図されるものではない。むしろ、以下の例示的な実施形態の説明は、例示的な実施形態を実現するための実施可能な説明を当業者に提供するものである。添付の特許請求の範囲に記載されている本発明の精神および範囲から逸脱することなく、要素の機能および配置をさまざまに変更できることが理解されるべきである。
なお、また、個々の実施形態は、フローチャート、フロー図、データフロー図、構造図またはブロック図として示されるプロセスとして説明してもよい。フローチャートは動作をシーケンシャルなプロセスとして説明し得るが、多くの動作は並列または同時に実行されてもよい。また、動作の順序は並べ替えてもよい。プロセスは、その動作が完了すると終了するが、図に含まれていないさらなるステップを有していてもよい。プロセスは、方法、機能、手順、サブルーチン、サブプログラムなどに対応し得る。プロセスが機能に対応する場合、その終了は、呼出し機能またはメイン機能への機能の戻りに対応し得る。
「機械読取可能な媒体」または「コンピュータ読取可能な媒体」という語は、命令および/またはデータを格納したり、含んでいたり、または伝えたりすることができる携帯型または固定式のストレージデバイス、光学式ストレージデバイス、無線チャネルおよびさまざまな他の媒体を含むが、これらに限定されるものではない。コードセグメントまたは機械実行可能な命令は、手順、機能、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または、命令、データ構造もしくはプログラム文のいずれかの組み合わせを表わし得る。コードセグメントは、情報、データ、引数、パラメータまたはメモリコンテンツを受け渡すおよび/または受信することによって、別のコードセグメントまたはハードウェア回路に結合されてもよい。情報、引数、パラメータ、データなどは、メモリ共有、メッセージ受け渡し、トークン受け渡し、ネットワーク送信などを含む任意の好適な手段によって受け渡されたり、転送されたり、または送信されたりしてもよい。
さらに、実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらのいずれかの組み合わせによって実現されてもよい。ソフトウェア、ファームウェア、ミドルウェアまたはマイクロコードで実現される場合、必要なタスクを実行するためのプログラムコードまたはコードセグメントは、機械読取可能またはコンピュータ読取可能な媒体に格納されてもよい。1つ以上のプロセッサが必要なタスクを実行してもよい。
図面のうちのいくつかに示されているシステムは、さまざまな構成で提供されてもよい。いくつかの実施形態では、システムは、システムの1つ以上のコンポーネントがクラウドコンピューティングシステム内の1つ以上のネットワークにわたって分散される分散型システムとして構成されてもよい。さらなる実施形態では、システムは、システムの1つ以上のコンポーネントが単一の構造またはパッケージに統合される単一のシステムとして構成されてもよい。
II.クラウドベースのアプリケーションの開発
アプリケーションとは、実行時に特定の所望のタスクを実行するソフトウェアプログラムのことである。一般に、1つ以上のオペレーティングシステム(「OS」)、(たとえば、Java(登録商標)プログラミング言語をサポートする)仮想マシン、デバイスドライバなどを含むランタイム環境では、いくつかのアプリケーションが実行される。開発者は、しばしば、所望のアプリケーションを実現/開発するためにアプリケーション開発フレームワーク(Application Development Framework:「ADF」)(これ自体がアプリケーションである)を使用する。ADFは、アプリケーションの開発に直接的/間接的に使用できる予め規定されたコード/データモジュールのセットを提供する。また、ADFは、統合開発環境(integrated development environment:「IDE」)、コード生成プログラム、デバッガなどのツールも提供し得る。一般に、ADFは、再利用可能なコンポーネントを提供することによってアプリケーション開発を簡略化し、当該再利用可能なコンポーネントは、たとえば所望のタスクを実行するようにコンポーネントを選択して、選択されたコンポーネントの外観、挙動および対話を定義することによって、ユーザインターフェイス(「UI」)およびアプリケーションロジックを定義するようにアプリケーション開発者によって使用され得る。オラクル社からの「オラクルADF(Oracle ADF)」などのいくつかのADFは、疎結合ならびに容易なアプリケーション開発およびメンテナンスを促進するモデル・ビュー・コントローラ(model-view-controller:「MVC」)設計パターンに基づく。
図1は、本発明に係る一実施形態におけるクラウドベースのアプリケーションを開発するためのシステム環境100のブロック図である。示されている実施形態では、システム環境100は、1つ以上のクライアントコンピューティングデバイス104,106および108にクラウドサービスを提供するクラウドインフラストラクチャシステム102を含む。クライアントコンピューティングデバイス104,106および108は、クラウドインフラストラクチャシステム102と対話するようにユーザによって使用され得る。クライアントコンピューティングデバイス104,106および108は、ウェブブラウザ、所有権付きクライアントアプリケーション(たとえば、オラクルフォームズ(Oracle Forms))または何らかの他のアプリケーションなどのクライアントアプリケーションを動作させるように構成され得て、当該クライアントアプリケーションは、クラウドインフラストラクチャシステム102と対話してクラウドインフラストラクチャシステム102によって提供されるサービスを使用するようにクライアントコンピューティングデバイスのユーザによって使用され得る。
クラウドインフラストラクチャシステム102は、示されているもの以外のコンポーネントを有していてもよい。さらに、図1に示される実施形態は、本発明の実施形態を組み込むことができるクラウドインフラストラクチャシステムの一例に過ぎない。いくつかの他の実施形態では、クラウドインフラストラクチャシステム102は、図1に示されるよりも多くのコンポーネントもしくは少ないコンポーネントを有していてもよく、2つ以上のコンポーネントを組み合わせてもよく、またはコンポーネントの異なる構成もしくは配置を有していてもよい。
クライアントコンピューティングデバイス104,106および108は、携帯可能な手持ち式のデバイス(たとえば、iPhone(登録商標)、セルラー電話、iPad(登録商標)、コンピューティングタブレット、携帯情報端末(personal digital assistant:「PDA」))またはウェアラブルデバイス(たとえば、Google Glass(登録商標)頭部装着型ディスプレイ)であってもよく、Microsoft Windows Mobile(登録商標)などのソフトウェア、および/もしくは、iOS、Windows Phone、Android、BlackBerry 10、Palm OSなどのさまざまなモバイルOSを実行し、インターネット、電子メール、ショートメッセージサービス(short message service:「SMS」)、BlackBerry(登録商標)、または使用可能な他の通信プロトコルである。クライアントコンピューティングデバイス104,106および108は、汎用パーソナルコンピュータであってもよく、一例として、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)および/またはLinux(登録商標)OSのさまざまなバージョンを実行するパーソナルコンピュータおよび/またはラップトップコンピュータを含む。クライアントコンピューティングデバイス104,106および108は、さまざまな市販のUNIX(登録商標)またはUNIXのようなOSのうちのいずれかを実行するワークステーションコンピュータであってもよく、当該市販のUNIX(登録商標)またはUNIXのようなOSとしては、たとえばGoogle Chrome OSなどのさまざまなGNU/Linux OSが挙げられるが、これらに限定されるものではない。代替的に、または加えて、クライアントコンピューティングデバイス104,106および108は、ネットワーク110を介して通信することができる、シンクライアントコンピュータ、インターネットにより可能化されるゲームシステム(たとえば、Kinect(登録商標)ジェスチャ入力デバイスを有するまたは持たないMicrosoft 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」)、AppleTalkなどが挙げられるが、これらに限定されるものではない。一例に過ぎないが、ネットワーク110は、イーサネット(登録商標)、トークンリングなどに基づくものなどのローカルエリアネットワーク(local area network:「LAN」)であってもよい。ネットワーク110は、ワイドエリアネットワークおよびインターネットであってもよい。ネットワーク110は、仮想ネットワークを含み得て、当該仮想ネットワークとしては、仮想プライベートネットワーク(virtual private network:「VPN」)、イントラネット、エクストラネット、公衆交換電話網(public switched telephone network:「PSTN」)、赤外線ネットワーク、無線ネットワーク(たとえば、米国電気電子学会(Institute of Electrical and Electronics:「IEEE」)802.11プロトコル一式、ブルートゥース(登録商標)および/またはその他の無線プロトコルのうちのいずれかの下で動作するネットワーク)、および/または、これらのいずれかの組み合わせおよび/または他のネットワークが挙げられるが、これらに限定されるものではない。
クラウドインフラストラクチャシステム102は、1つ以上のコンピュータおよび/またはサーバを備え得る。これらのコンピュータシステムまたはサーバは、1つ以上の汎用コンピュータ、専用サーバコンピュータ(一例として、パーソナルコンピュータ(personal computer:「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クラウドサービス(Oracle Java Cloud Service:「JCS」)」、オラクル社からの「オラクルデータベースクラウドサービス(Oracle Database Cloud Service:「DBCS」)」などが挙げられるが、これらに限定されるものではない。
PaaSプラットフォームによって提供されるサービスを利用することにより、顧客は、クラウドインフラストラクチャシステム102によってサポートされるプログラミング言語およびツールを利用することができ、デプロイされたサービスを制御することもできる。いくつかの実施形態では、クラウドインフラストラクチャシステム102によって提供されるプラットフォームサービスは、データベースクラウドサービス、ミドルウェアクラウドサービス(たとえば、オラクルフュージョンミドルウェアサービス)およびJavaクラウドサービスを含み得る。一実施形態では、データベースクラウドサービスは、組織がデータベースリソースをプールしてデータベースクラウドの形式でデータベース・アズ・ア・サービスを顧客に提供することを可能にする共有サービスデプロイメントモデルをサポートし得る。ミドルウェアクラウドサービスは、顧客がクラウドインフラストラクチャシステム内でさまざまなビジネスアプリケーションを開発およびデプロイするためのプラットフォームを提供し得て、Javaクラウドサービスは、顧客がクラウドインフラストラクチャシステム内でJavaアプリケーションをデプロイするためのプラットフォームを提供し得る。
クラウドインフラストラクチャシステム102では、さまざまな異なるインフラストラクチャサービスがIaaSプラットフォームによって提供されてもよい。インフラストラクチャサービスは、ストレージ、ネットワークなどの基本的なコンピューティングリソース、ならびに、SaaSプラットフォームおよびPaaSプラットフォームによって提供されるサービスを利用する顧客のための他の基礎的なコンピューティングリソースの管理および制御を容易にする。
特定の実施形態では、クラウドインフラストラクチャシステム102は、クラウドインフラストラクチャシステム内でのクラウドサービス(たとえば、SaaSサービス、PaaSサービス、IaaSサービスおよびMBaaSサービス)の包括的管理を提供し得る。一実施形態では、クラウド管理機能は、クラウドインフラストラクチャシステム102によって受け取られる顧客のサブスクリプションをプロビジョニング、管理および追跡する機能などを含み得る。さまざまな実施形態では、クラウドインフラストラクチャシステム102は、クラウドインフラストラクチャシステム102によって提供されるサービスに対する顧客のサブスクリプションを自動的にプロビジョニング、管理および追跡するように適合され得る。顧客は、サブスクリプションオーダーを介して、クラウドインフラストラクチャシステム102によって提供される1つ以上のサービスをオーダーし得る。そして、クラウドインフラストラクチャシステム102は、当該顧客のサブスクリプションオーダーにおけるサービスを提供するように処理を実行する。
一実施形態では、クラウド管理機能は、オーダー管理および監視モジュール114などの1つ以上のモジュールによって提供されてもよい。これらのモジュールは、1つ以上のコンピュータおよび/またはサーバを含むかまたは1つ以上のコンピュータおよび/またはサーバを用いて提供され得て、当該1つ以上のコンピュータおよび/またはサーバは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、またはその他の適切な配置および/もしくは組み合わせであってもよい。
例示的なオペレーションにおいて、顧客は、クライアントコンピューティングデバイス104,106または108を用いて、クラウドインフラストラクチャシステム102によって提供される1つ以上のサービスを要求することによってクラウドインフラストラクチャシステム102と対話し得る。顧客は、さまざまな手段を用いて、クラウドインフラストラクチャシステム102にサービス要求130を発行し得る。サービス要求130は、クラウドインフラストラクチャシステム102によって提供される1つ以上のサービスに対するサブスクリプションをオーダーすること、クラウドインフラストラクチャシステム102によって提供される1つ以上のサービスにアクセスすることなどを含み得る。特定の実施形態では、顧客は、クラウドUI132,134および136にアクセスして、これらのUIを介してサブスクリプションオーダーを行い得る。顧客がオーダーを行ったことに応答してクラウドインフラストラクチャシステム102によって受け取られるオーダー情報は、顧客を特定する情報、および、顧客が申し込もうとしている、クラウドインフラストラクチャシステム102によって提供される1つ以上のサービスを特定する情報を含み得る。顧客によってオーダーがなされた後に、オーダー情報がクラウドUI132,134および/または136を介して受け取られる。
この例では、オーダー管理および監視モジュール112は、顧客から受け取った情報を、顧客が行なったオーダーを格納しているオーダーデータベースに送信する。オーダーデータベースは、クラウドインフラストラクチャシステム102によって運用され、他のシステム要素と併用して運用されるいくつかのデータベースのうちの1つであってもよい。オーダー管理および監視モジュール112は、オーダーデータベースに格納されたオーダー情報の全てまたは一部を含む情報をオーダー管理モジュールに転送し得る。いくつかの例では、オーダー管理モジュールは、オーダーの確認および確認時のオーダーの予約などの、オーダーに関連する請求および課金機能を実行するように構成され得る。
特定の実施形態では、クラウドインフラストラクチャシステム102は、アイデンティティ管理モジュール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によって提供されるサービスによって共有される外部アプリケーションプログラミングインターフェイス(「API」)サービス128を含み得る。これらの外部APIサービス128としては、他の第三者サービスまたはエンティティによって提供されるAPIを挙げることができるが、これらに限定されるものではない。
さまざまな異なるモバイルクラウドサービスがクラウドインフラストラクチャシステム102内のMCS122によって提供され得る。MCS122は、本発明のいくつかの実施形態に従ってモバイルコンピューティングデバイスと企業コンピュータシステム(たとえば、企業コンピュータシステム124および126)との間の通信を容易にする。MCS122は、企業データおよび認証情報を格納するのに用いられる1つ以上のメモリストレージデバイス(「ローカルストレージ」)を含み得る。企業データは、企業コンピュータシステム126またはクライアントコンピューティングデバイス104,106または108から受信されてもよく、またはクラウドインフラストラクチャシステム102によって変換された企業データを含んでもよく、またはそれらの組み合わせであってもよい。認証情報は、アイデンティティ管理システム114から受信されてもよく、および/または、クラウドインフラストラクチャシステム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 value:「CSV」)およびリアリ・シンプル・シンジケーション(really simple syndication:「RSS」)などのデータフォーマットに容易に変換できる。企業コンピュータシステム126およびクラウドインフラストラクチャシステム102は、リモートプロシージャコール(remote procedure call:「RPC」)(たとえば、拡張マークアップ言語(extended markup language:「XML」)RPC)などの他のプロトコルを用いて通信してもよい。
いくつかの実施形態では、MCS122は、一部が異なる通信プロトコルまたは技術をサポートし得るクラウドインフラストラクチャシステム102によって提供される1つ以上のサービスとの通信をサポートするように構成されたアダプタインターフェイスを含み得る。いくつかの実施形態では、MCS122は、一部が異なる通信プロトコルまたは技術をサポートし得る企業コンピュータシステム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によって実行されるようにカスタムコードをロードすることを可能にし得る。カスタムコードは、MCS122に関連付けられた1つ以上の呼び出し可能なインターフェイスをクラウドインフラストラクチャシステム102のために実現し得て、ユーザがカスタムサービスまたは他の企業コンピュータシステムにアクセスすることを可能にすることができる。
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の外部の別のコンピュータシステムによって実現されてもよい。アイデンティティ管理114は、ユーザの役割またはMCS122にアクセスするためのサブスクリプションに基づいて、ユーザのセキュリティ認証を決定し得る。役割またはサブスクリプションは、企業コンピュータシステム、企業コンピュータシステムによって提供されるサービス、企業コンピュータシステムの機能または特徴、企業コンピュータシステムへのアクセスを制御するための他の基準、またはそれらの組み合わせに関して、特権および/または権利を割り当てられ得る。
さまざまな異なるADF124がクラウドインフラストラクチャシステム102内に設けられ得る。ADF124は、SOAベースのアジャイルアプリケーションを実行するためのインフラストラクチャコードを提供する。ADF124はさらに、1つ以上の開発ツール(たとえば、「Oracle JDeveloper 1lg」開発ツール)による開発のための視覚的および宣言的なアプローチを提供する。ADF124によって提供される1つ以上のフレームワークは、MVC設計パターンを実現し得る。このようなフレームワークは、オブジェクト/リレーショナルマッピング、データ持続性、再利用可能なコントローラ層、リッチウェブUIフレームワーク、UIへのデータ結合、セキュリティおよびカスタマイズなどの領域に対するソリューションを有するMVCアーキテクチャの全ての層をカバーする統合されたソリューションを提供する。中核のウェブベースのMVCアプローチを越えて、このようなフレームワークは、オラクルSOAおよびウェブセンタポータルフレームワークとも統合して、完全複合アプリケーションの作成を簡略化する。
特定の実施形態では、ADF124は、サービスインターフェイスをクラウドインフラストラクチャシステム102によって提供される組み込み型ビジネスサービスに結合することによってデータをサービスとして公開するアジャイルアプリケーションを開発することを容易にする。このビジネスサービス実装詳細の分離は、メタデータを介してADF124において実行される。このメタデータ駆動アーキテクチャを用いることにより、アプリケーション開発者は、どのようにサービスにアクセスするかについての詳細ではなく、ビジネスロジックおよびユーザエクスペリエンスに焦点を当てることができる。特定の実施形態では、ADF124は、メタデータ内のサービスの実装詳細をモデル層に格納する。これにより、開発者はUIを変更することなくサービスを交換することができ、アプリケーションが非常にアジャイルになる。また、UIを作成する開発者は、ビジネスサービスアクセス詳細を思い悩まなくてもよくなる。その代わりに、開発者は、アプリケーションインターフェイスおよび対話ロジックを開発することに焦点を当てることができる。ユーザエクスペリエンスを作成することは、所望のビジネスサービスをビジュアル・ページ・デザイナ上にドラッグおよびドロップして、どのタイプのコンポーネントが当該データを表示すべきかを示すことと同じぐらい簡単であろう。
さまざまな実施形態では、開発者は、ADF124と対話して、企業アプリケーションを形成するモジュールを作成する。企業アプリケーションは、クラウドインフラストラクチャシステム102の文脈内で実行することができる。さまざまな実施形態では、開発者は、ADF124と対話して、モバイルアプリケーションを形成するモジュールを作成する。モバイルアプリケーションは、クラウドインフラストラクチャシステム102の文脈内で実行することができる。以下で説明する本発明の特徴は、本明細書に提供されている開示を読むことによって当業者に明らかになるプログラミング言語とアプリケーション開発フレームワークとをいずれかの所望の組み合わせを用いて実現することができる。
ADF124によって提供される1つ以上のフレームワークは、一例ではオラクルADFとして実施されてもよい。したがって、ADF124におけるフレームワークは、MVC設計パターンに基づき得る。MVCアプリケーションは、1)データソースとの対話を処理し、ビジネスロジックを実行するモデル層、2)アプリケーションUIを処理するビュー層、および3)アプリケーションフローを管理し、モデル層とビュー層との間のインターフェイスの役割を果たすコントローラ、に分離される。アプリケーションをこれら3つの層に分離することにより、アプリケーション全体にわたるコンポーネントのメンテナンスおよび再利用が簡略化される。各層を他の層から独立させることにより、疎結合SOAがもたらされる。
さまざまな実施形態では、ADF124は、開発者が複数の層の形態でアプリケーションを作成することを可能にするツールおよびリソースを提供し、各層は、予め規定された仕様に従って所望のロジックを実行するコードモジュール/ファイルを含む。したがって、一実施形態では、ADF124は、アプリケーションを4つの層として開発することを可能にし、当該4つの層とは、アプリケーションのUIを提供するコードモジュール/ファイルを含むビュー層、アプリケーションのフローを制御するコードモジュールを含むコントローラ層、基本的なデータに対して抽象化層を提供するデータ/コードモジュールを含むモデル層、およびさまざまなソースからデータへのアクセスを提供してビジネスロジックを処理するコードモジュールを含むビジネスサービス層である。
特定の実施形態では、ADF124は、各層を実現する際に使用したい技術を開発者に選択させる。エンタープライズJavaビーン(Enterprise JavaBean:「EJB」)、ウェブサービス、Javaビーン(JavaBean)、JPA/EclipseLink/TopLinkオブジェクト、その他多数は全て、ADF124のためのビジネスサービスとして使用することができる。ビュー層は、Javaサーバフェイス(Java Server Faces:「JSF」)、デスクトップスイングアプリケーションおよびマイクロソフトオフィスフロントエンドで実現されるウェブベースのインターフェイス、ならびにモバイルデバイスのためのインターフェイスを含み得る。
一局面では、ビュー層は、開発中のアプリケーションのUIを表示する。ビュー層は、デスクトップ、モバイルおよびブラウザベースのビューを含み得て、それらのビューの各々は、UIの全てまたは一部を提供し、ビュータイプに対応するさまざまな方法でアクセス可能である。たとえば、ウェブページは、対応するURLを含むクライアント要求を受信したことに応答してアプリケーションによって送信されてもよい。次いで、ウェブページは、要求を行っているクライアントシステムに関連付けられたディスプレイユニット(図示せず)上にブラウザによって表示されてもよく、それによって、要求を行っているクライアントシステムのユーザが企業アプリケーションと対話することを可能にする。ADF124は、ビジネスサービスへのマルチチャネルアクセスをサポートし、ビジネスサービスの再利用、および、ウェブクライアント、クライアント−サーバスイングデスクトップベースアプリケーション、マイクロソフトエクセルスプレッドシート、スマートフォンなどのモバイルデバイスなどからのアクセスを可能にする。
ビュー層(ウェブページなど)を形成するコードファイル/モジュールは、ハイパーテキストマークアップ言語(hypertext markup language:「HTML」)、Javaサーバページ(Java server page:「JSP」)およびJSFのうちの1つ以上を用いて実現されてもよい。代替的に、UIは、スイングおよび/またはXMLなどのJavaコンポーネントを用いて実現されてもよい。さらに記載されるように、UIは、ユーザエクスペリエンス、ならびに、マイクロソフト社によるワードおよびエクセルなどのデスクトップアプリケーションへの精通を活用してもよい。
上記のように、関連するユーザ開発コード/データモジュールが各層に設けられる。しかし、各層は一般に、ADF124によって提供される他の予め規定されたコード/データモジュールを含む。予め規定されたモジュールのうちのいくつかは、開発中に、たとえばウェブページを開発するためのテンプレート、開発されたコードに所望の機能を含めるためのテンプレートなどとして使用されてもよい。他の予め規定されたモジュール(URL書換モジュールなど)は、開発されたアプリケーションとともにデプロイされてもよく、企業アプリケーションの実行中にユーザにさらなる機能(要求されたURLの、内部名へのマッピング)を提供してもよい。
コントローラ層は、アプリケーションのフローを制御するコードモジュール/ファイルを含む。各コントローラオブジェクトは、ビュー層において情報を表示する所望の方法に従って実現されるソフトウェア命令および/またはデータを含む。当該所望の方法としては、別のウェブページにおけるリンクがユーザによってクリック/選択されると特定のウェブページを表示すること、実行中にエラーが生じると、特定のデータを格納/検索取得することを示すページを表示することなどを挙げることができる。
一局面では、コントローラ層は、アプリケーションフローを管理し、ユーザ入力を処理する。たとえば、検索ボタンがページ上でクリックされると、コントローラは、どのアクションを実行すべきであるか(検索を行う)およびどこにナビゲートすべきであるか(結果ページ)を判断する。JDeveloperにおけるウェブベースのアプリケーションでは、標準的なJSFコントローラまたはJSFコントローラ機能を拡張したADFコントローラの2つのコントローラオプションがある。どちらのコントローラを使用するとしても、アプリケーションフローは一般に、ダイアグラム上にページおよびナビゲーションルールをレイアウトすることによって設計される。アプリケーションのフローは、さらに小さな再利用可能なタスクフローに分けることができ、当該タスクフローは、フロー内のメソッド呼び出しおよび決定点などの非視覚的コンポーネントを含み、単一のページの領域内で実行される「ページフラグメント」フローを作成する。
コントローラ層を形成するコードモジュール/ファイルは、しばしば、クライアント要求を受信して所望のウェブページを対応する応答として送信するJavaサーブレットとして実現される。また、コントローラオブジェクトは、たとえばアパッチ・ジャカルタ・ストラット(Apache Jakarta Struts)コントローラとして、またはJSF規格に従って、実現されてもよい。
モデル層は、さまざまなビジネスサービスを、上記のコントローラオブジェクトなどの、当該ビジネスサービスを他の層で使用するオブジェクトに接続する、またはデスクトップアプリケーションに直接接続するデータ/コードモジュールを含む。モデル層の各抽象化データオブジェクトは、基本的なビジネスサービス層で実行されるいずれかのタイプのビジネスサービスへのアクセスに使用できる対応するインターフェイスを提供する。データオブジェクトは、クライアントからのサービスのビジネスサービス実装詳細を抽象化し、および/または、データ制御方法/属性をビューコンポーネントに公開し得て、それによって、ビュー層およびデータ層の分離を提供する。
一局面では、モデル層は、メタデータファイルを利用してインターフェイスを定義するデータ制御およびデータ結合の2つのコンポーネントで構成される。データ制御は、クライアントからのビジネスサービス実装詳細を抽象化する。データ結合は、データ制御方法および属性をUIコンポーネントに公開して、ビューおよびモデルのクリーンな分離を提供する。モデル層のメタデータアーキテクチャにより、開発者は、いずれのタイプのビジネスサービス層実装をビュー層およびコントローラ層に結合しても同一の開発経験を得ることになる。
特定の実施形態では、ADF124は、ユーザが実装詳細に踏み込む必要なしにアプリケーション作成のロジックに集中することができるように、開発プロセス全体を通して宣言型プログラミングパラダイムを用いることを重視する。高いレベルにおいて、フュージョンウェブアプリケーションの開発プロセスは、通常、アプリケーション作業領域を作成することを含む。ウィザードを用いて、開発者によって選択された技術に必要とされるライブラリおよび構成が自動的に追加され、アプリケーションは、パッケージおよびディレクトリを有するプロジェクトに構造化される。
データベースオブジェクトをモデル化することによって、いかなるデータベースのオンラインデータベースまたはオフラインレプリカも作成することができ、定義を編集することができ、スキーマを更新することができる。次いで、統一モデリング言語(unified modeling language:「UML」)モデラを用いて、アプリケーションについてユースケースを作成することができる。アプリケーション制御およびナビゲーションも設計することができる。ダイアグラマを用いて、アプリケーション制御およびナビゲーションのフローを視覚的に決定することができる。次いで、フローを記述する基本的なXMLファイルを自動的に作成することができる。リソースライブラリを用いて、開発者は、インポートされたライブラリを単にアプリケーションにドラッグおよびドロップすることによって、インポートされたライブラリを見て使用することができるようになる。ウィザードまたはダイアログを用いて、データベーステーブルからエンティティオブジェクトを作成することができる。それらのエンティティオブジェクトからビューオブジェクトが作成され、アプリケーションにおけるページによって使用される。検証ルールおよび他のタイプのビジネスロジックが実装されてもよい。
この例では、ビジネスサービス層は、データ持続層との対話を管理する。ビジネスサービス層は、データ持続性、オブジェクト/リレーショナルマッピング、トランザクション管理およびビジネスロジック実行などのサービスを提供する。ビジネスサービス層は、単純なJavaクラス、EJB、ウェブサービス、JPAオブジェクトおよびオラクルADFビジネスコンポーネントのうちのいずれかで実現されてもよい。また、データはファイル(XMLまたはCSV)およびRESTから直接消費され得る。したがって、各ビジネスサービスは、対応するデータ持続層との対話を管理し、オブジェクト/リレーショナルマッピング、トランザクション管理、ビジネスロジック実行などのサービスも提供する。ビジネスサービス層は、単純なJavaクラス、エンタープライズJavaビーン、ウェブサービスなどのうちの1つ以上を用いて実現されてもよい。
ビジネスコンポーネントは、たとえばオラクル社からの「オラクルADFビジネスコンポーネント」を用いて実現されるビジネスサービスを表示して、データバース、ウェブサービス、レガシーシステム、アプリケーションサーバなどとの対話を提供する。一実施形態では、ビジネスサービス層のビジネスコンポーネントは、協働してビジネスサービス実装を提供するアプリケーションモジュールとビュー/クエリオブジェクトとエンティティオブジェクトとの混合物を含む。アプリケーションモジュールは、UIクライアントがアプリケーション/トランザクションデータと連携するために通信するトランザクションコンポーネント/コードモジュールであってもよい。アプリケーションモジュールは、更新可能なデータモデルを提供し得て、ユーザトランザクションに関連する手順/機能(一般にサービス方法と称される)も提供し得る。
エンティティオブジェクトは、データベーステーブル内の対応する行を表示し得て、当該対応する行に格納されたデータの操作(更新、削除など)を簡略化する。エンティティオブジェクトは、しばしば、対応する行のためのビジネスロジックを封入して、所望のビジネスルールが一貫して実施されることを保証する。また、エンティティオブジェクトは、基本的なデータベースに格納された行間に存在する関係を反映するように他のエンティティオブジェクトに関連付けられ得る。
III.プライバシ、レジデンシおよびセキュリティ
プライバシ、レジデンシおよびセキュリティ(Privacy, Residency and Security:PRS)は、クラウドに入るデータを難読化する問題に対処することに関連する。2つの一般的な難読化方法は、暗号化およびトークン化である。これらのアプローチのいずれかを用いることにより、組織がクラウドインフラストラクチャシステム102によって提供されるクラウドベースのアプリケーションの利益を享受しながら依然として詮索の目がデータを解読できない状態が保証される。
図2は、本開示のいくつかの実施形態に係るクラウドベースのアプリケーションでプライバシ、レジデンシおよびセキュリティを提供するシステム200のブロック図である。図2に示される実施形態では、システム200は、1つ以上のクライアントコンピューティングデバイス205,210および215を含み、当該1つ以上のクライアントコンピューティングデバイス205,210および215は、難読化される場合もあれば難読化されない場合もあるデータへのアクセスを提供するためのサービスを含むクラウドサービスを提供するクラウドインフラストラクチャシステム220(たとえば、図1に関連して説明したクラウドインフラストラクチャシステム102)と対話するようにユーザによって使用され得る。システム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は、ウェブブラウザ、所有権付きクライアントアプリケーション(たとえば、オラクルフォームズ)または何らかの他のアプリケーションなどのクライアントアプリケーションを動作させるように構成され得て、当該クライアントアプリケーションは、クラウドインフラストラクチャシステム220と対話してクラウドインフラストラクチャシステム220によって提供されるサービスを使用するようにクライアントコンピューティングデバイスのユーザによって使用され得る。例示的なシステム環境200は、3つのクライアントコンピューティングデバイスを有するものとして示されているが、いかなる数のクライアントコンピューティングデバイスがサポートされてもよい。センサを有するデバイスなどの他のデバイスがクラウドインフラストラクチャシステム220と対話してもよい。
クライアントコンピューティングデバイス205,210および215は、携帯可能な手持ち式のデバイス(たとえば、iPhone(登録商標)、セルラー電話、iPad(登録商標)、コンピューティングタブレット、携帯情報端末(「PDA」))またはウェアラブルデバイス(たとえば、Google Glass(登録商標)頭部装着型ディスプレイ)であってもよく、Microsoft Windows Mobile(登録商標)などのソフトウェア、および/もしくは、iOS、Windows Phone、Android、BlackBerry 10、Palm OSなどのさまざまなモバイルOSを実行し、インターネット、電子メール、ショートメッセージサービス(「SMS」)、BlackBerry(登録商標)、または使用可能な他の通信プロトコルである。クライアントコンピューティングデバイス205,210および215は、汎用パーソナルコンピュータであってもよく、一例として、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)および/またはLinux(登録商標)OSのさまざまなバージョンを実行するパーソナルコンピュータおよび/またはラップトップコンピュータを含む。クライアントコンピューティングデバイス205,210および215は、さまざまな市販のUNIX(登録商標)またはUNIXのようなOSのうちのいずれかを実行するワークステーションコンピュータであってもよく、当該市販のUNIX(登録商標)またはUNIXのようなOSとしては、たとえばGoogle Chrome OSなどのさまざまなGNU/Linux 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は、MVCアプリケーションを含み得て、当該MVCアプリケーションは、1)クラウドデータベース250との対話を処理し、ビジネスロジックを実行するモデル層、2)クライアントデバイス205,210および215のうちの1つ以上に配信されるアプリケーションUIを処理するビュー層、および3)アプリケーションフローを管理し、モデル層とビュー層との間のインターフェイスの役割を果たすコントローラ、に分離される。
一局面では、ビュー層は、開発中のアプリケーションのUIを表示する。ビュー層は、デスクトップ、モバイルおよびブラウザベースのビューを含み得て、それらのビューの各々は、UIの全てまたは一部を提供し、ビュータイプに対応するさまざまな方法でアクセス可能である。たとえば、ウェブページは、対応するURLを含むクライアント要求をクライアントデバイス205,210および215のうちの1つ以上から受信したことに応答してクラウドベースのアプリケーション245によって送信されてもよい。次いで、ウェブページは、クライアントデバイス205,210および215のうちの1つ以上に関連付けられたディスプレイユニット(図示せず)上にブラウザによって表示されてもよく、それによって、1つ以上のクライアントデバイス205,210および215のユーザがクラウドベースのアプリケーション245と対話することを可能にする。ビュー層(ウェブページなど)を形成するコードファイル/モジュールは、ハイパーテキストマークアップ言語(「HTML」)、Javaサーバページ(「JSP」)およびJSFのうちの1つ以上を用いて実現されてもよい。代替的に、UIは、スイングおよび/またはXMLなどのJavaコンポーネントを用いて実現されてもよい。さらに記載されるように、UIは、ユーザエクスペリエンス、ならびに、マイクロソフト社によるワードおよびエクセルなどのデスクトップアプリケーションへの精通を活用してもよい。
上記のように、PRSサーバ235は、ネットワークトラフィックを監視(たとえば、傍受)して、プライバシ、レジデンシおよびセキュリティポリシーを実施し得る。1つ以上のクライアントデバイス205,210および215とクラウドベースのアプリケーション245との間の通信に関して、PRSサーバ235は、1つ以上のクライアントデバイス205,210および215から生じる伝送を傍受して、プライバシ、レジデンシおよびセキュリティポリシーを実施し得る。示されている例では、1つ以上のクライアントデバイス205,210および215は、住所=「123メイン」および連絡先=「ジョン」という情報を含むネットワーク伝送をクラウドインフラストラクチャシステム220に送信し得る。PRSサーバ235は、当該ネットワーク伝送を傍受し、その内容を検査して、情報のうちのいずれかがプライバシ、レジデンシおよびセキュリティポリシーの対象であるか否かを判断し得る。たとえば、PRSサーバ235は、「連絡先」情報がプライバシ、レジデンシおよびセキュリティポリシーの対象の機密データであり、クラウドインフラストラクチャシステム220に送信されるべきでないと判断してもよい。PRSサーバ235は、ネットワーク伝送を変更して、以下のように情報を暗号化またはトークン化し得る。すなわち、「連絡先」情報が機密またはプライベートデータとして指定されて、住所=「123メイン」[パブリックデータ]および連絡先=「JIDL45」[プライベートデータ]となる。PRSサーバ235は、トークンマップとともに暗号鍵および/または元のデータをプライベートデータベース240に格納し得る。次いで、PRSサーバ235は、置換値(たとえば、暗号化値またはトークン)を有する変更されたネットワーク伝送をクラウドベースのアプリケーション245に転送し得る。
1つ以上のクライアントデバイス205,210および215とクラウドベースのアプリケーション245との間の通信に関して、PRSサーバ235は、逆のプロセスで1つ以上のクライアントデバイス205,210および215に向かう伝送を傍受して、プライバシ、レジデンシおよびセキュリティポリシーを実施し得る。示されている例では、PRSサーバ235は、「連絡先」情報が暗号化またはトークン化されていると判断し得て、PRSサーバ235は、ネットワーク伝送を変更して、プライベートデータベース240から検索取得されたトークンマップとともに暗号鍵および/または元のデータを用いて情報を復号化またはトークン化解除し得る。次いで、PRSサーバ235は、変更されたネットワーク伝送を1つ以上のクライアントデバイス205,210および215に転送し得る。
図3Aは、1つ以上のクライアントデバイス205,210および215を用いて企業インフラストラクチャシステム225内から見たときの、クラウドベースのアプリケーション245に関連付けられたUI300の図である。示されているように、「連絡先」ページ305は、1枚以上の連絡先カード310で表示される。各連絡先の名前315は、写真および住所を含む他のデータフィールドなどの他のUI要素とともに見ることができる。PRSサーバ235の管理者は、本明細書で詳細に説明するように、UIページ300の名前フィールドを保護データとして指定し得る。図3Bは、クラウドインフラストラクチャシステム220内から見たときの、またはコンピューティングデバイスを用いて企業インフラストラクチャシステム225の外側の位置からクラウドベースのアプリケーション245にアクセスするときの、クラウドベースのアプリケーション245に関連付けられたUI300の図である。示されているように、「連絡先」ページ305′は、同一の連絡先カード310′で表示されるが、各連絡先の名前315′は、トークン化されたデータで暗号化または置換されており、写真および住所を含む他のデータフィールドなどの他のUI要素は、実際の値のままである。
IV.構成の自己記述
いくつかの実施形態では、クラウドベースのアプリケーション245に関連付けられたモデル層は、さまざまなビジネスサービスを、上記のコントローラオブジェクトなどの、当該ビジネスサービスを他の層で使用するオブジェクトに接続する、またはデスクトップアプリケーションに直接接続するデータ/コードモジュールを含む。モデル層の各抽象化データオブジェクトは、基本的なビジネスサービス層で実行されるいずれかのタイプのビジネスサービスへのアクセスに使用できる対応するインターフェイスを提供する。データオブジェクトは、クライアントからのサービスのビジネスサービス実装詳細を抽象化し、および/または、データ制御方法/属性をビューコンポーネントに公開し得て、それによって、ビュー層およびデータ層の分離を提供する。
一局面では、モデル層は、メタデータファイルを利用してUIを定義するデータ制御およびデータ結合の2つのコンポーネントで構成される。データ制御は、クライアントからのビジネスサービス実装詳細を抽象化する。データ結合は、データ制御方法および属性をUIコンポーネントに公開して、ビューおよびモデルのクリーンな分離を提供する。データベースオブジェクトをモデル化することによって、クラウドデータベース250を作成してクラウドベースのアプリケーション245とともに使用することができる。ウィザードまたはダイアログを用いて、データベーステーブルからエンティティオブジェクトを作成することができる。それらのエンティティオブジェクトからビューオブジェクトが作成され、アプリケーションにおけるページによって使用される。検証ルールおよび他のタイプのビジネスロジックが実装されてもよい。
エンティティオブジェクトは、データベーステーブル内の対応する行を表示し得て、当該対応する行に格納されたデータの操作(更新、削除など)を簡略化する。エンティティオブジェクトは、しばしば、対応する行のためのビジネスロジックを封入して、所望のビジネスルールが一貫して実施されることを保証する。また、エンティティオブジェクトは、基本的なデータベースに格納された行間に存在する関係を反映するように他のエンティティオブジェクトに関連付けられ得る。
したがって、エンティティオブジェクトは、クラウドデータベース250内の行を表示し、その関連付けられた属性の変更を簡略化するADFビジネスコンポーネントであり得る。エンティティオブジェクトは、行を表示することになるクラウドデータベース250内のデータベーステーブルを特定することによって定義することができる。次いで、エンティティオブジェクト間の関係を反映するように関連付けが作成され得る。実行時、エンティティ行は、関連するエンティティ定義オブジェクトによって管理され、各エンティティ行は、関連する行鍵によって識別される。エンティティ行は、データベーストランザクションをクラウドデータベース250に提供するクラウドベースのアプリケーション245に関連付けられたアプリケーションモジュールの文脈内で検索取得されて変更される。
図4は、本発明に係る一実施形態におけるエンティティ間で共有される属性を示すブロック図である。図4は、エンティティオブジェクト、たとえばアカウントオブジェクト405、連絡先オブジェクト410、連絡先オブジェクト415および従業員オブジェクト420を示す。図4はさらに、データベーステーブル、たとえば住所テーブル425、電話/電子メールテーブル430および人物テーブル435を示し、各々は、エンティティ間で共有されるさまざまな属性440,445および450を含む。示されているように、アカウントオブジェクト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は、PRSサーバ235の管理者が(たとえば、企業インフラストラクチャシステム225に関連付けられた組織の要求により)クラウドベースのアプリケーション245のデータまたはコンポーネントレベルで機密データを識別することを可能にするAPIを提供することができる。たとえば、管理者は、機密データが企業インフラストラクチャシステム225外のどこで使用されても、社会保障番号属性450を含むありとあらゆる連絡先および従業員オブジェクト415,420のデータが保護されるように、エンティティオブジェクトの社会保障番号属性450をデータレベルでマーキングしてもよい。別の例では、管理者は、名前属性450を含む所与のコンポーネントによって使用されるエンティティオブジェクトのみが、企業インフラストラクチャシステム225外で所与のコンポーネントによって使用されたときに保護されるように、特定のタイプのエンティティオブジェクト(たとえば、従業員オブジェクト420)のみの名前属性450をコンポーネントレベルでマーキングしてもよい。次いで、クラウドインフラストラクチャシステム220は、PRSサーバ235によって認識されるUI要素とマーキングされたフィールドとの間にマップを動的に生成し得る。このように、クラウドインフラストラクチャシステム220は、どこで使用されようと、およびどの値が識別子に関連付けられようと、共有されるコンポーネントを保護することができる。これにより、PRSサーバ235によって複数の入力を維持させる必要性が低くなる。
PRSサーバ235を用いて機密データオブジェクトが識別されると、一実施形態では、管理者は、(1)コンポーネントの基本的なデータ層にヒントを追加し、(2)コンポーネントに保護鍵属性を追加し得る。保護されたエンティティオブジェクトを用いてクラウドベースのアプリケーション245がUIページを生成すると、それらの保護されたコンポーネントを含むいかなるデータも、識別子とPRSサーバ235によって認識可能なフィールドとの間のマップとともに、ネットワーク伝送のペイロードで送信され、必要なデータ暗号化/トークン化が実行される。したがって、コンポーネントを構成する際に、コンポーネントの値が保護されるべきか否かを制御する、保護鍵という名前の新たな属性を編集可能値コンポーネントに追加することができる。属性の値は、PRSサーバ235が認識するコンポーネントの名前であってもよい。PRSサーバ235によって認識される値を含む保護ヒントを抽出するためにクラウドベースのアプリケーション245のデータ結合層においてロジックが追加され得る。コンポーネントレベルで保護鍵が存在しなければ、クラウドベースのアプリケーション245は、データ結合層から保護鍵属性を検索取得し得る。要求がクラウドベースのアプリケーション245に送信されると、関連する保護データがあれば、保護鍵マップへの構築idがネットワーク伝送のペイロードに挿入され得る。このように、PRSサーバ235によって認識可能なオブジェクト/フィールドにコンポーネントクライアント識別子を直接マッピングする代わりに、静的な構成に基づいて実行中にマップを生成することができる。
図5は、いくつかの実施形態におけるPRSサーバ235の自己記述的な構成を提供するメッセージシーケンス図を示す。ブロック502において、クラウドインフラストラクチャシステム220は、クラウドベースのアプリケーション245によって使用されるデータモデルにAPIを提供し、当該APIからPRSサーバ235は構成にアクセスすることができる。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サーバ235に送信してもよい。当該ヒントは、保護可能なデータのパラメータに関する情報を提供し得る。クラウドインフラストラクチャシステム220は、以下のフォーマットを有する応答510を返す。
ブロック512において、PRSサーバ235は、クラウドインフラストラクチャシステム220から受信した保護可能な属性/コンポーネントに関する情報を用いてユーザインターフェイスを生成する。当該ユーザインターフェイスは、PRSサーバ235の管理者が、モデル化されたエンティティの1つ以上の保護可能な属性/コンポーネントを、保護された属性/コンポーネントとして構成することを可能にする。ブロック514において、PRSサーバ235の管理者は、(たとえば、企業インフラストラクチャシステム225に関連付けられた組織の要求により)モデル化されたエンティティの1つ以上の保護可能な属性/コンポーネント、たとえばオブジェクト「emp」におけるフィールド「fname」を、保護された属性/コンポーネントとしてマーキングされるようにユーザインターフェイスにおいて構成する。いくつかの実施形態では、属性/コンポーネントを保護されているものとしてマーキングすることは、属性/コンポーネントに適用される保護のタイプ(たとえば、トークン化または暗号化)に関する表示をさらに含み得る。ブロック516において、PRSサーバ235は、ユーザインターフェイスを用いて生成された保護された属性/コンポーネントの情報をクラウドインフラストラクチャシステム220に送信することによって、保護された属性/コンポーネントをクラウドインフラストラクチャシステム220に通知する。一実施形態では、PRSサーバ235は、以下のフォーマットを有するメッセージ518を送信する。
ブロック520において、クラウドインフラストラクチャシステム220は、指定されたコンポーネントまたはエンティティオブジェクト属性を、保護されているものとしてマーキングする。ブロック522において、クラウドインフラストラクチャシステム220は、保護フィールドの確認情報をPRSサーバ235に送信し得る。クラウドインフラストラクチャシステム220は、以下のフォーマットを有する応答524を返し得る。
図6は、本発明に係る一実施形態における自己記述的な構成を利用するためのメッセージシーケンス図を示す。ブロック602において、クライアントデバイス205,210および215のうちの1つ以上は、クラウドインフラストラクチャシステム220にUIページまたはクライアントコンポーネントを要求する。要求604は、HTTP要求、SOAP要求、XMLメッセージなどを含み得る。ブロック608において、クラウドインフラストラクチャシステム220は、各々の保護された属性の識別子を決定する。一実施形態では、クラウドベースのアプリケーション245(たとえば、オラクルADFフェイスレンダリング)に関連付けられたUIまたはコンポーネントランタイムは、データモデルレベルに各々の保護フィールドのトークン化識別子を尋ねる。ブロック610において、クラウドインフラストラクチャシステム220は、UIまたはクライアントコンポーネントを生成し、保護フィールドをマーキングする。クラウドインフラストラクチャシステム220は、応答612の際に、マーキングされた保護フィールドを有する生成されたUIまたはクライアントコンポーネントを返し得る。ブロック610において生成されるマーキングされた保護フィールドは、応答612のペイロードに含まれる。たとえば、保護フィールドをマーキングすることは、以下のフォーマットを有し得る。
生成されたUIまたはクライアントコンポーネントは、以下のフォーマットを有し得る。
応答612の後続のペイロードは、以下のフォーマットを有するマップ情報を含み得る。
ブロック614において、PRSサーバ235は、応答612を傍受し、応答612のペイロードに含まれるマップを用いて、UIまたはクライアントコンポーネントにプライベートデータベース240からのいずれかの保護されたデータを投入する。たとえば、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つ以上のクライアントデバイス205,210および215は、クラウドインフラストラクチャシステム220にデータを掲載し得る。掲載されたデータは、UIまたはクライアントコンポーネント内の保護フィールドの機密データに対する変更または更新を含み得る。一実施形態では、クライアントランタイム(たとえば、ADFフェイスクライアント)は、UIまたはクライアントコンポーネントのトークン化情報を用いて、PRSサーバ235へのマッピングを周知のフィールド(たとえば、保護鍵)を使用して手取り足取り教える。たとえば、PRSサーバ235は、当該周知のフィールドを用いて、その構成を調べて対応するアクション(たとえば、暗号化またはトークン化)を見つけ出してもよい。ブロック622において、1つ以上のクライアントデバイス205,210および215は、マッピングを要求624(たとえば、oracle.adf.view.rich.TOKENIZED={'rl:0:foo:itl':{'object':'emp','field':'fname'}}などのgenerate ID->protectionKey Map)に挿入する。1つ以上のクライアントデバイス205,210および215は、ブロック622からのマッピングを含むように、要求624を以下の通り生成し得る。
ブロック626において、PRSサーバ235は、要求624を傍受し、マップ(たとえば、ID->protectionKey Map)を用いて、いずれかの保護されたデータを暗号化またはトークン化された値と置換し、保護されたデータをプライベートデータベース225に格納する。次いで、PRSサーバ235は、変更された要求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」属性は、保護されているため、保護状態と保護鍵との2つのヒントをデータモデル層内に有する。これらは、「Contact」オブジェクト内の「A」属性には存在しない。さらに、「Contact」オブジェクトでは、「B」属性は、保護されているため、保護状態と保護鍵との2つのヒントをデータモデル層内に有する。これらは、「Emp」オブジェクト内の「B」属性には存在しない。したがって、データ保護はデータオブジェクトレベルで構成され、そのため、データオブジェクトに属している行のみが暗号化/トークン化の対象になる。
データオブジェクトは、UI層730内の1つ以上のUIコンポーネントに結合され得る。一般に、データオブジェクトは、データオブジェクトの1つ以上の属性をレンダリングするためのUIコンポーネントに結合される。たとえば、データモデル層720からのデータオブジェクトは、<af:inputText id="FIELDl" value="#{EMPbinding.A.inputValue}"/>などの標準的な式言語を介してUI層730に公開されてもよい。ドキュメントオブジェクトモデル層740では、レンダリングされたUIコンポーネントは、特定のドキュメントオブジェクトモデル(document object model:DOM)要素が保護フィールドであることを示す識別子を含み得る。上記のように、当該識別子は、PRSサーバ235によって生成されるトークン識別子を含み得る。
図8は、本発明に係る一実施形態における保護されたデータ列と保護されていないデータ列とで同一のテーブルを共有することをサポートするための方法800のフローチャートである。図8に示される方法800の実現または図8に示される方法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の実現または図9に示される方法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が1つ1つの検索可能な行の完全なコピーを有していなければならず、クラウドデータベース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の各々は、どのフィールドが保護されており、どのフィールドが保護されていないかを知っているからである。第1の検索は、プライベートデータベース240を用いて保護フィールドに対して実行され(たとえば、検索要求ペイロードは、PRSサーバ235が保護フィールドに対してのみクライアント側検索を実行するための情報を有し)、第2の検索は、クラウドデータベース250を用いて無保護フィールドを含む全ての他のフィールドに対して実行される(たとえば、PRSサーバ235は、その後、クラウドベースのアプリケーション245が保護トークンにより新たな検索語を理解するようにペイロード情報を変更してもよい)。保護フィールドに対する第1の検索は、PRSサーバ235を用いて実行され、結果セットは、(元の検索に加えて)クラウドベースのアプリケーション245に渡される。クラウドベースのアプリケーション245は、第1および第2の検索から最終結果セットを組み立てて、連合された検索結果ページをレンダリングすることができる。
たとえば、ユーザが「FirstName startwith 'B'」を検索する際、「Emp」オブジェクトの「firstName」属性は、保護鍵EMP_OBJ/Ename_FLDで保護されてもよく、元の検索要求は、必要な全ての情報を含む。PRSサーバ235は、要求を傍受し、プライベートデータベース240においてFirstNameを検索し、要求のペイロードを全ての一致したFirstNameのトークン化された値で更新し、要求をクラウドベースのアプリケーション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の実現または図10に示される方法1000における処理は、コンピュータシステムまたは情報処理装置などのロジックマシンの中央処理装置(CPUまたはプロセッサ)によって実行されたときにソフトウェア(たとえば、命令またはコードモジュール)によって行われてもよく、電子デバイスまたは特定用途向け集積回路のハードウェアコンポーネントによって行われてもよく、またはソフトウェア要素とハードウェア要素との組み合わせによって行われてもよい。図10に示される方法1000は、ステップ1010から開始する。
ステップ1010において、クエリを受信する。たとえば、1つ以上のクライアントデバイス205,210および215は、ユーザによって提供される情報からクエリを構築してもよく、クラウドベースのアプリケーション245は、1つ以上のクライアントデバイス205,210および215から当該クエリを受信してもよい。クエリは、保護フィールドおよび無保護フィールドに適用可能な検索基準、たとえば人物のファーストネームおよびラストネームの検索を含み得て、ファーストネームは保護されていないデータであり、ラストネームは保護されたデータである。ステップ1020において、保護フィールドに関連する検索基準をPRSサーバ235などのデータセキュリティプロバイダに送信する。一実施形態では、1つ以上のクライアントデバイス205,210および215は、クエリ全体をPRSサーバ235に送信して、保護フィールド上で処理する。次いで、PRSサーバ235は、検索結果を元のクエリとともにクラウドベースのアプリケーション230に送信し得る。たとえば、ステップ1030において、保護フィールド検索の結果とともに、パブリックフィールドに関連する検索基準をクラウドベースのアプリケーションに送信する。いくつかの実施形態では、各々のプライベートデータベース225の検索基準とクラウドデータベース235の検索基準とは、独立して送信されてもよい。
ステップ1040において、保護フィールド結果およびクラウド検索結果を用いていずれの検索最終結果もレンダリングする。一実施形態では、ユーザが検索を開始すると、検索基準のうちのいずれかが保護フィールドに対するものであれば、PRSサーバ235は、プライベートデータベース240に対して検索を適用し得る。PRSサーバは、行鍵によって識別される適格な行のセットとして結果セットを生成し得る。次いで、行鍵のセットは、クラウドベースのアプリケーション245に対する検索要求に送信される。クラウドベースのアプリケーション245が当該要求を処理する際に、適格な行鍵のセットを用いて最終検索結果をフィルタリングする。最終検索結果のみが、レンダリングされ、クライアントデバイス215に返されて、表示される。
最終検索結果は、プライベートデータベース240に対する検索基準を満たしたクラウドデータとトークン化/暗号化されたデータとの組み合わせを含む。トークン化/暗号化されたデータは、1つ以上のクライアントデバイス205,210および215によって表示される前に、プライベートデータベース240からのデータと置換することができる。したがって、プライベートデータベース240およびクラウドデータベース250の両方のデータベースからの検索結果を連合して、よりシームレスな検索経験をユーザに提供することができる。
VIII.ハードウェア環境
以下の記載では、説明を目的として、本発明の実施形態が完全に理解されるように具体的な詳細が記載されている。しかし、これらの具体的な詳細がなくてもさまざまな実施形態は実施可能であるということが明らかであろう。図面および説明は、限定的であるように意図されるものではない。
図面のうちのいくつかに示されているシステムは、さまざまな構成で提供されてもよい。いくつかの実施形態では、システムは、システムの1つ以上のコンポーネントがクラウドコンピューティングシステム内の1つ以上のネットワークにわたって分散される分散型システムとして構成されてもよい。
図11は、実施形態のうちの1つを実現するための分散型システム1100の簡略図を示す。示されている実施形態では、分散型システム1100は、1つ以上のクライアントコンピューティングデバイス1102,1104,1106および1108を含み、それらは、1つ以上のネットワーク1110を介してウェブブラウザ、所有権付きクライアント(たとえばオラクルフォームズ)などのクライアントアプリケーションを実行および動作させるように構成される。サーバ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、BlackBerry 10、Palm OSなどのさまざまなモバイルオペレーティングシステムを実行し、インターネット、電子メール、ショートメッセージサービス(SMS)、BlackBerry(登録商標)、または他のイネーブルにされた通信プロトコルである。クライアントコンピューティングデバイスは、汎用パーソナルコンピュータであってもよく、一例として、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)および/またはLinux(登録商標)オペレーティングシステムのさまざまなバージョンを実行するパーソナルコンピュータおよび/またはラップトップコンピュータを含む。クライアントコンピューティングデバイスは、さまざまな市販のUNIX(登録商標)またはUNIXのようなオペレーティングシステムのうちのいずれかを実行するワークステーションコンピュータであってもよく、当該UNIX(登録商標)またはUNIXのようなオペレーティングシステムとしては、たとえばGoogle Chrome OSなどのさまざまなGNU/Linuxオペレーティングシステムが挙げられるが、これらに限定されるものではない。代替的に、または加えて、クライアントコンピューティングデバイス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キーボード、デジタル楽器などの音声入力デバイスも含んでもよい。
ユーザインターフェイス出力デバイスは、ディスプレイサブシステム、インジケータライト、または音声出力デバイスなどの非ビジュアルディスプレイなどを含んでもよい。ディスプレイサブシステムは、陰極線管(cathode ray tube:CRT)、液晶ディスプレイ(liquid crystal display: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は、本発明に従って使用されるデータを格納するためのリポジトリも提供してもよい。
ストレージサブシステム1218は、コンピュータ読取可能な記憶媒体1222にさらに接続可能なコンピュータ読取可能記憶媒体リーダ1220も含んでもよい。システムメモリ1210とともに、およびオプションとしてシステムメモリ1210との組み合わせで、コンピュータ読取可能な記憶媒体1222は、コンピュータ読取可能な情報を一時的および/またはより永久的に収容、格納、伝送および検索取得するための、遠隔の、ローカルな、固定された、および/またはリムーバブルなストレージデバイスに記憶媒体を加えたものを包括的に表わしてもよい。
コードまたはコードの一部を含むコンピュータ読取可能な記憶媒体1222は、記憶媒体および通信媒体を含む、当該技術分野において公知であるまたは使用されるいずれかの適切な媒体も含んでもよく、当該媒体は、情報の格納および/または伝送のための任意の方法または技術において実現される揮発性および不揮発性の、リムーバブルおよび非リムーバブルな媒体などであるが、これらに限定されるものではない。これは、RAM、ROM、電気的に消去可能なプログラム可能ROM(electronically erasable programmable ROM:EEPROM)、フラッシュメモリもしくは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)、または他の光学式ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または他の有形のコンピュータ読取可能な媒体などの有形のコンピュータ読取可能な記憶媒体を含んでもよい。これは、データ信号、データ伝送、または所望の情報を伝送するために使用可能でありコンピューティングシステム1200によってアクセス可能であるその他の媒体などの無形のコンピュータ読取可能な媒体も含んでもよい。
一例として、コンピュータ読取可能な記憶媒体1222は、非リムーバブル不揮発性磁気媒体に対して読み書きするハードディスクドライブ、リムーバブル不揮発性磁気ディスクに対して読み書きする磁気ディスクドライブ、CD ROM、DVDおよびブルーレイ(登録商標)ディスクなどの、リムーバブル不揮発性光ディスクに対して読み書きする光ディスクドライブ、または他の光学式媒体を含んでもよい。コンピュータ読取可能な記憶媒体1222は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(universal serial bus:USB)フラッシュドライブ、セキュアデジタル(secure digital: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ファミリー規格、もしくは他のモバイル通信技術、またはそれらのいずれかの組み合わせを用いて)無線音声および/またはデータネットワークにアクセスするための無線周波数(radio frequency:RF)送受信機コンポーネント、グローバルポジショニングシステム(global positioning system: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の記載は、単に具体的な例として意図される。図に示されるシステムよりも多くのコンポーネントまたは少ないコンポーネントを有する多くの他の構成が可能である。たとえば、カスタマイズされたハードウェアも使用されてもよく、および/または、特定の要素が、ハードウェア、ファームウェア、ソフトウェア(アプレットを含む)、または組み合わせで実現されてもよい。さらに、ネットワーク入力/出力デバイスなどの他のコンピューティングデバイスへの接続が利用されてもよい。本明細書における開示および教示に基づいて、当業者は、さまざまな実施形態を実現するための他の態様および/または方法を理解するであろう。
上記の明細書では、本発明の局面についてその具体的な実施形態を参照して説明しているが、本発明はそれに限定されるものではないということを当業者は認識するであろう。上記の発明のさまざまな特徴および局面は、個々にまたは一緒に用いられてもよい。さらに、実施形態は、明細書のさらに広い精神および範囲から逸脱することなく、本明細書に記載されているものを超えて、さまざまな環境およびアプリケーションで利用することができる。したがって、明細書および図面は、限定的ではなく例示的であると見なされるべきである。