(57)【要約】  複数のプラットフォーム及び環境にわたるクライアントアプリケーションのセッションデータへのアクセスを可能にするために、クラウドベースのデータセッションを提供するためのシステムを実施することができる。実施態様では、データセッションを提供するためのシステムは、セッション提供サービス、キャッシュ提供サービス、一意識別子提供サービス、及びデータストアを含む。一意識別子提供サービスは、各一意識別子が唯1つのデータセッションに一意に割り当てられるように、複数のシステムにわたってグローバルに一意であることを保証する一意識別子を生成するようにプログラムされている。【選択図】図1
2018536247.tif 000002
【特許請求の範囲】
【請求項１】
データセッションを提供するためのコンピュータ実施方法であって：
クライアントアプリケーションから、データセッションを生成するためのセッション提供サービスのリクエストを受信するステップ；
キャッシュ提供サービスにおいて、該データセッションのキャッシュ提供エンドポイントを生成するステップ；
該セッション提供サービスにおいて、該キャッシュ提供エンドポイントを格納するステップ；
一意識別子サービスにおいて、該データセッションのグローバル一意識別子を生成するステップ；
該セッション提供サービスにおいて、該データセッションの一意識別子を格納するステップ；
該クライアントアプリケーションに、該データセッションの一意識別子を送信するステップ；及び
該クライアントアプリケーションに、該キャッシュ提供エンドポイントを送信するステップを含む、前記方法。
【請求項２】
前記データセッションを生成するリクエストを受信するステップが、前記クライアントアプリケーションからセッション有効期限を受信するステップを含む、請求項1記載の方法。
【請求項３】
前記データセッションにおいて、前記クライアントアプリケーションから受信したデータオブジェクトを格納するステップをさらに含む、請求項1記載の方法。
【請求項４】
前記一意識別子が、32バイトのキーを含む、請求項1記載の方法。
【請求項５】
前記一意識別子サービスが、メインフレームコンピュータ上で実行される、請求項1記載の方法。
【請求項６】
前記メインフレームコンピュータが、z/OS環境を含む、請求項5記載の方法。
【請求項７】
第2のクライアントアプリケーションから、前記一意識別子を含むGETリクエストを受信するステップ；
前記キャッシュ提供サービスにおいて、前記データセッションが存在するか否かを判定するステップ；及び
該データセッションが存在する場合は、データオブジェクトを該データセッションから該第2のクライアントアプリケーションに返信するステップをさらに含む、請求項1記載の方法。
【請求項８】
前記第2のクライアントアプリケーションから、データオブジェクトを含むPOSTリクエストを受信するステップ、及び
前記データオブジェクトを前記データセッションに格納し、前記一意識別子を該第2のクライアントアプリケーションに返信するステップをさらに含む、請求項1記載の方法。
【請求項９】
第2のクライアントアプリケーションから、前記一意識別子及びデータオブジェクトを含むPUTリクエストを受信するステップ；
前記キャッシュ提供サービスにおいて、前記データセッションが前のデータオブジェクトを含むか否かを判定するステップ；
該データセッションが該前のデータオブジェクトを含む場合は、該前のデータオブジェクトを該データオブジェクトで置き換えて、該データオブジェクトを該第2のクライアントアプリケーションに返信するステップをさらに含む、請求項1記載の方法。
【請求項１０】
第2のクライアントアプリケーションから、前記一意識別子を含むDELETEリクエストを受信するステップ；
前記キャッシュ提供サービスにおいて、前記データセッションが前のデータオブジェクトを含むか否かを判定するステップ；及び
該データセッションが該前のデータオブジェクトを含む場合は、該データセッションから該前のデータオブジェクトを削除して、削除確認を該第2のクライアントアプリケーションに返信するステップをさらに含む、請求項1記載の方法。
【請求項１１】
1つ以上のプロセッサ及び、該1つ以上のプロセッサに動作可能に結合された1つ以上のメモリデバイスを備え、該1つ以上のメモリデバイスが、該1つ以上のプロセッサに以下を行わせるのに有効な実行可能な動作コードを格納している、データセッションを提供するためのシステム：
クライアントアプリケーションから、データセッションを生成するリクエストを受信する；
該データセッションのキャッシュ提供エンドポイントを生成する；
該キャッシュ提供エンドポイントを格納する；
該データセッションのグローバル一意識別子を生成する；
該データセッションの一意識別子を格納する；
該クライアントアプリケーションに、該データセッションの一意識別子を送信する：及び
該クライアントアプリケーションに、該キャッシュ提供エンドポイントを送信する。
【請求項１２】
前記メモリデバイスが、前記1つ以上のプロセッサに以下を行わせるのにさらに有効な実行可能な動作コードを格納している、請求項11記載のシステム：
前記クライアントアプリケーションからセッション有効期限を受信する、及び
該データセッションのセッション有効期限を実行する。
【請求項１３】
前記1つ以上のプロセッサのうちの少なくとも1つ、又は前記1つ以上のメモリデバイスのうちの少なくとも1つが、z/OS環境を含む、請求項11記載のシステム。
【請求項１４】
前記メモリデバイスが、前記1つ以上のプロセッサに以下を行わせるのにさらに有効な実行可能な動作コードを格納している、請求項11記載のシステム：
第2のクライアントアプリケーションから、前記一意識別子を含むGETリクエストを受信する：
前記データセッションが存在するか否かを判定する；及び
該データセッションが存在する場合は、データオブジェクトを該データセッションから該第2のクライアントアプリケーションに返信する。
【請求項１５】
前記メモリデバイスが、前記1つ以上のプロセッサに以下を行わせるのにさらに有効な実行可能な動作コードを格納している、請求項11記載のシステム：
第2のクライアントアプリケーションから、データオブジェクトを含むPOSTリクエストを受信する；
前記データセッションが該クライアントアプリケーションに存在するか否かを判定する；及び
該データセッションが存在する場合は、該データオブジェクトを該データセッションに格納して、前記一意識別子を該第2のクライアントアプリケーションに返信する。
【請求項１６】
前記メモリデバイスが、前記1つ以上のプロセッサに以下を行わせるのにさらに有効な実行可能な動作コードを格納している、請求項11記載のシステム：
第2のクライアントアプリケーションから、前記一意識別子及びデータオブジェクトを含むPUTリクエストを受信する；
前記データセッションが前のデータオブジェクトを含むか否かを判定する：及び
該データセッションが該前のデータオブジェクトを含む場合は、該前のデータオブジェクトを該データオブジェクトで置き換えて、該データオブジェクトを該第2のクライアントアプリケーションに返信する。
【請求項１７】
前記メモリデバイスが、前記1つ以上のプロセッサに以下を行わせるのにさらに有効な実行可能な動作コードを格納している、請求項11記載のシステム：
第2のクライアントアプリケーションから、前記一意識別子を含むDELETEリクエストを受信する；
前記データセッションが前のデータオブジェクトを含むか否かを判定する：及び
該データセッションが該前のデータオブジェクトを含む場合は、該前のデータオブジェクトを該データセッションから削除して、削除確認を該第2のクライアントアプリケーションに返信する。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本出願は、参照によりその全内容が本明細書に組み入れられる、2015年9月28日に出願された、「クラウドベースのセッション管理システム（Cloud Based Session Management System）」と題する米国仮特許出願第62/233,750号の利益を主張する。
【背景技術】
【０００２】
（背景）
時には、ユーザは、ウェブサイト又は他のアプリケーションにアクセスし、次いで、セッションを第2のコンピュータプラットフォームに転送したいと考える。しかしながら、セッションデータが単一のコンピュータデバイス上に格納されている場合、該セッションデータを1つのデバイスから別のデバイスに転送することが容易でない可能性があるため、切替えは、困難又は非効率的であり得る。
【図面の簡単な説明】
【０００３】
（図面の簡単な説明）
本開示の非限定的かつ非網羅的な実施態様は、以下の図を参照して説明され、特段の記載がない限り、同様の参照番号は、様々な図を通じて同様の部分を指す。
【０００４】
【図１】図1は、本開示の一実施態様によるセッション管理システムを例示するブロック図である。
【０００５】
【図２】図2は、本開示の一実施態様による一意識別子のリクエストの例示的な形式を示している。
【０００６】
【図３】図3は、本開示の一実施態様による一意識別子の例示的な形式を示している。
【０００７】
【図４】図4は、本開示の一実施態様による新しいデータセッションを提供するための方法を例示する図である。
【発明を実施するための形態】
【０００８】
対応する参照符号は、図面のいくつかの図を通じて対応する構成要素を示す。当業者であれば、図中の要素は、単純化及び明確化のために例示されており、必ずしも正確な縮尺で描かれているものではないことを理解されよう。例えば、本開示の様々な実施態様の理解の向上を助けるために、図中の一部の要素の寸法は、他の要素に対して誇張されることがある。また、商業的に実現可能な実施態様において有用又は必要である、共通であるが十分に理解されている要素は、本開示のこれらの様々な実施態様の図があまり遮られないようにするために、しばしば描かれていない。
【０００９】
（詳細な説明）
本開示は、複数のプラットフォームにわたってアクセス可能なクラウドベースの環境で維持されるデータセッションを提供するための方法、システム、及びコンピュータプログラムに関する。以下の説明では、本開示の一部を構成し、本開示が実施され得る特定の例示的な実施態様を例示として示す添付の図面を参照する。これらの実施態様は、当業者が本明細書で開示される概念を実施することを可能にするために十分詳細に説明され、本開示の精神及び範囲から逸脱することなく、様々な開示される実施態様に対する変更を行うこともできるし、他の実施態様を利用することもできることを理解されたい。従って、以下の詳細な説明は、限定的な意味で解釈されるべきではない。
【００１０】
本明細書全体を通して、「一実施態様」、「１つの実施態様」、「一例」、又は「１つの例」について述べる場合、実施態様又は例に関連して説明される特定の特徴、構造、又は特性が、本開示の少なくとも1つの実施態様に含まれていることを意味する。従って、本明細書全体を通して様々な個所における「一実施態様では」、「１つの実施態様では」、「一例」、又は「１つの例」という語句が現われた場合、これらの語句は、必ずしも全てが同じ実施態様又は例を指すものではない。さらに、特定の特徴、構造、又は特性は、1つ以上の実施態様又は例において、任意の適切な組み合わせ及び/又はサブコンビネーションで組み合わせることができる。加えて、本明細書で提供される図面は、当業者に説明するためのものであり、これらの図面は、必ずしも正確な縮尺で描かれているものではないことを理解されたい。
【００１１】
本開示による実施態様は、装置、方法、又はコンピュータプログラム製品として具現化することができる。従って、本開示は、完全にハードウェアで構成された実施態様、完全にソフトウェアで構成された実施態様（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、又はソフトウェア態様とハードウェア態様を組み合わせた実施態様の形態をとることができ、これらは全て、本明細書では、一般に、「回路」、「モジュール」、又は「システム」と呼ぶことがある。さらに、本開示の実施態様は、媒体で具現化されたコンピュータ使用可能プログラムコードを有する任意の有形の表現媒体に具現化されたコンピュータプログラム製品の形態をとることができる。
【００１２】
本開示の様々な実施態様によると、本明細書で説明されるシステム及び方法は、データを一意に参照するためのデータセッションの一意識別子、及び複数のプラットフォームにわたるその後の使用のためにアクセスされ得る生のデータを格納するためのデータベースアプリケーションを生成することによって、複数のプラットフォームにわたる様々なアプリケーションの一時的なユーザデータを格納するように適合されている。本開示で使用される「一意識別子」は、グローバルに一意であることが保証される番号、一連の英数字、又は他のデータセッション識別である。一意識別子は、クラウドベースのデータセッションに一意かつ排他的に関連付けることができる。
【００１３】
図1は、本開示の一実施態様によるセッション管理システム100を示すブロック図である。一実施態様では、セッション管理システム100は、セッション提供サービス110、キャッシュ提供サービス120、及び一意識別子提供サービス130を含む。様々な実施態様によると、前述の構成要素及び/又はモジュールは、様々なタイプの媒体に格納されたコンピュータ可読命令として具現化することができる。1つ以上のコンピュータ使用可能媒体又はコンピュータ可読媒体の任意の組合せを、本開示の様々な実施態様で利用することができる。例えば、コンピュータ可読媒体は、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ（RAM）デバイス、読み出し専用メモリ（ROM）デバイス、消去可能プログラマブル読み出し専用メモリ（EPROM又はフラッシュメモリ）デバイス、ポータブルコンパクトディスク読み出し専用メモリ（CDROM）、光学記憶装置、及び磁気記憶装置のうちの1つ以上を含み得る。本開示の動作を実行するためのコンピュータプログラムコードは、1つ以上のプログラミング言語の任意の組合せで書くことができる。このようなコードは、ソースコードから、そのコードが実行される装置又はコンピュータに適したコンピュータ可読アセンブリ言語又は機械コードにコンパイルすることができる。
【００１４】
一実施態様では、セッション提供サービス110は、コンピュータプロセッサ、及びネットワークを介してユーザ及び/又はユーザアプリケーション105とインターフェースするようにプロセッサに指示するコンピュータ可読命令を含む。セッション提供サービス110の実施態様は、ユーザ及び/又はユーザアプリケーション105、キャッシュ提供サービス120、及び一意識別子提供サービス130からリクエスト及びデータを送信し、かつ／又はこれらから該リクエスト及び該データを受信するようにさらに適合されている。実施態様では、セッション提供サービス110は、新しいエンドポイント/データセッションを提供するためにユーザ及び/又はユーザアプリケーション105からリクエストを受信することができる。このようなリクエストの受信に応答して、セッション提供サービス110は、該リクエストに基づいて新しいキャッシュ提供エンドポイントを生成するためのリクエストをキャッシュ提供サービス120に送信することができる。
【００１５】
実施態様では、セッション提供サービス110は、新しいキャッシュ提供エンドポイントを受信して格納し、新しいキャッシュ提供エンドポイントの一意識別子を生成するために、一意識別子提供サービス130にリクエストを送信することができる。実施態様では、セッション提供サービス110は、新たに生成された一意識別子を受信し、該一意識別子を処理して、これを新しいキャッシュ提供エンドポイントに関連付け、新しい一意識別子、及び新しいキャッシュ提供エンドポイントに関連する他の情報を、ユーザ及び/又はユーザアプリケーション105に送信することができる。
【００１６】
セッション提供サービス110の実施態様は、ユーザ及び/又はユーザアプリケーション105が新しいエンドポイント/データセッションのリクエストを送信するためのアプリケーション・プログラム・インタフェースを提供するように適合されている。他の実施態様は、このようなリクエストを送信するためのユーザインタフェースを提供する。一例では、ユーザインタフェースは、ウェブサイトゲートウェイを含み、該ウェブサイトゲートウェイにより、ユーザ105が新しいエンドポイントのリクエストを生成することができる。
【００１７】
実施態様では、ユーザ及び/又はユーザアプリケーション105は、新しいデータセッションに関する追加のオプションを選択して送信することができる。例えば、一実施態様では、ユーザ及び/又はユーザアプリケーション105は、そのエンドポイントのセッション有効期限を選択して送信することができる。セッション提供サービス110は、そのような選択を受信して処理し、これをキャッシュ提供サービス120に送信するようにプログラムされている。
【００１８】
実施態様では、セッション提供サービス110は、ユーザ及び/又はユーザアプリケーション105からセッションデータを受信することができる。場合によっては、この受信セッションデータは、データが格納されるべき時点で既に生成されているデータセッションの一意識別子などのメタデータを含む。セッション提供サービス110は、データ及び一意識別子をキャッシュ提供サービス120に送信して、一意識別子によって識別されるエンドポイントにセッションデータを格納することができる。別法では、セッション提供サービス110が受信した一意識別子によって識別される存在するデータセッションがない場合は、セッション提供サービス110は、新しいデータセッションを生成するためにリクエストをキャッシュ提供サービス120に送信し、新しいデータセッションの新しい一意識別子を生成するためにリクエストを一意識別子提供サービス130に送信することができる。新しいデータセッションが提供されると、セッション提供サービス110は、受信セッションデータを、セッションデータの格納のためのキャッシュ提供サービス120に送信することができる。
【００１９】
様々な実施態様では、セッション提供サービス110は、セッションデータのリクエストを受信することができる。このリクエストは、リクエストされたセッションデータが格納されているデータセッションエンドポイントを識別する一意識別子を含み得る。このリクエストは、リクエストされたデータの範囲をさらに特定又は定義することができる。セッション提供サービス110の実施態様は、データについてキャッシュ提供サービス120をリクエストし、該キャッシュ提供サービス120からデータを受信し、そしてリクエストされたデータをユーザ及び/又はユーザアプリケーション105に返信するように適合されている。セッション提供サービス110からキャッシュ提供サービス120に送信されるデータのリクエストは、データセッションエンドポイントの一意識別子を含み得る。
【００２０】
様々な実施態様では、セッション提供サービス110は、セッションデータ又はセッションデータの一部を修正するためのリクエストを受信することができる。このリクエストは、セッションデータが格納されるデータセッションエンドポイントを識別する一意識別子を含み得る。このリクエストは、修正されるべきデータの範囲をさらに特定又は定義することができる。このリクエストは、識別されたデータセッションに追加されるべきデータをさらに含み得る。セッション提供サービス110の実施態様は、データを変更及び/又は拡大するようにキャッシュ提供サービス120にリクエストし、変更が完了したという確認をキャッシュ提供サービス120から受信し、そしてこの確認をユーザ及び/又はユーザアプリケーション105に返信するように適合されている。実施態様では、修正及び/又は拡大されたデータは、キャッシュ提供サービス120からセッション提供サービス110に送信される。実施態様では、修正及び/又は拡大されたデータは、セッション提供サービス110からユーザ及び/又はユーザアプリケーション110に送信される。セッション提供サービス110からキャッシュ提供サービス120に送信される修正リクエストは、データセッションエンドポイントの一意識別子を含み得る。
【００２１】
様々な実施態様では、セッション提供サービス110は、セッションデータ又はセッションデータの一部を削除するためのリクエストを受信することができる。このリクエストは、セッションデータが格納されるデータセッションエンドポイントを識別する一意識別子を含み得る。このリクエストは、削除されるデータの範囲をさらに特定又は定義することができる。セッション提供サービス110の実施態様は、データを削除するようにキャッシュ提供サービス120にリクエストし、該キャッシュ提供サービス120から削除確認を受信し、そして該削除確認をユーザ及び/又はユーザアプリケーション105に返信するように適合されている。セッション提供サービス110からキャッシュ提供サービス120に送信される削除リクエストは、データセッションエンドポイントの一意識別子を含み得る。
【００２２】
一実施態様では、キャッシュ提供サービス120は、セッション提供サービス110からリクエストを受信し、各リクエストに従って新しいデータセッションを提供し、そしてデータセッションエンドポイントをセッション提供サービス110に返信するようにプロセッサに指示するコンピュータプロセッサ及びコンピュータ可読命令を含む。実施態様では、キャッシュ提供サービス120は、新しいデータセッションの各リクエストに関する様々なオプションを受信し、それに応じて新しいデータセッションを提供することができる。
【００２３】
実施態様では、キャッシュ提供サービス120は、一意データセッションにリンクされたセッションデータを受信するようにプログラムされている。特に、このデータは、一意識別子提供サービス130によって既に生成された一意識別子に関連付けることができる。このような場合、キャッシュ提供サービス120は、関連するデータセッションエンドポイントを識別し、該エンドポイントにセッションデータを格納することができる。
【００２４】
一実施態様では、キャッシュ提供サービス120は、存在するデータセッションエンドポイントにセッションデータを追加する命令と共に、セッション提供サービス110からセッションデータを受信することができる。このようなリクエストは、存在するデータセッションに関連する一意識別子を含み得る。キャッシュ提供サービス120は、識別されたデータセッションが存在するか否かを判定し、存在する場合は、セッションデータを該データセッションに追加することができる。識別されたデータセッションが存在しない場合は、キャッシュ提供サービス120は、存在するデータセッションがないことを示す応答をセッション提供サービス110に送信することができる。これに対応して、セッション提供サービス110は、新しいデータセッションを提供するステップ、該新しいデータセッションに関連する新しい一意識別子を生成するステップ、新しいデータセッションエンドポイントにセッションデータを格納するステップ、及び該一意識別子をユーザ及び/又はユーザアプリケーション105に返信するステップを実施し得る。
【００２５】
一実施態様では、キャッシュ提供サービス120は、存在するデータセッションエンドポイントからセッションデータを削除する命令をセッション提供サービス110から受信することができる。このようなリクエストは、存在するデータセッションに関連する一意識別子を含み得る。
【００２６】
実施態様では、セッションデータは、キャッシュ提供サービス120からデータストア140に送信し、そこに格納することができる。実施態様では、データストア140は、各データセッションの一意識別子によってインデックス付けされる複数のデータセッションを集約する。
【００２７】
一実施態様では、一意識別子提供サービス130は、コンピュータプロセッサ、及びデータセッションに関連付けられるべき一意識別子を生成するようにプロセッサに指示するコンピュータ可読命令を含む。一意識別子提供サービス130の実施態様は、セッション提供サービス110からのリクエストに応答して一意識別子を生成するようにプログラムされている。一意識別子提供サービス130の実施態様は、複数のエンティティの種類及びアプリケーションのリクエストを満たすことができ、そしてこのような一意識別子がシステム間でグローバルに一意であることを保証することが可能であり得る。
【００２８】
様々な実施態様では、一意識別子提供サービス130は、z/OSを使用するIBMメインフレームシステム上で実施される。他の実施態様では、一意識別子提供サービス130は、仮想サーバ上で実施される。一意識別子提供サービス130の実施態様は、冗長性及び信頼性の向上のために、フェイルオーバ構成に構成することができる。
【００２９】
一実施態様では、一意識別子提供サービス130は、集中クロックを含む。一意識別子は、一意識別子が生成された時間に関連する情報を含み得る。このような場合、集中クロックは、非一意識別子の生成を防止することができる。IBMベースの環境の場合、一意識別子は、IBM Parallel Sysplex及びクロックから生成することができる。実施態様では、シーケンシャルカウンタを、異なる処理エンティティによって同じ装置で生成される一意識別子に対するグローバルな一意性を保証するために使用することができ、カウンタ情報は、共有メモリから使用することができる。
【００３０】
図2は、本開示の一実施態様による一意識別子のリクエスト200の例示的な形式を示している。上述のように、セッション提供サービス110は、リクエストを生成し、一意識別子提供サービス130に通信することができる。様々な実施態様では、一意識別子リクエストは、一意識別子がどのように生成されるかを制御する1つ以上のパラメータを含み得る。
【００３１】
一例では、リクエスト200は、生成される一意識別子情報の出力形式を識別する形式情報201を含み得る。例えば、リクエストは、一意識別子が、plain形式、GUID形式（例えば、従来のGUID形式タイプ）、ESS形式、B64B、又は他のタイプの形式で生成されるべきであることを指定することができる。従来のGUIDの形式は、オープンシステムの世界では、16バイトの16進値の32バイト文字表現として以下の形式で採用されている：xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx、例えば、2e7d0f3f-00cd-74ca-359e-31c50000375a。一実施では、サービスは、以下の形式のうちの１つで出力一意識別子情報を提供するオプションを提供することができる：
【００３２】
PLAIN:2e7d0f3f00cd74ca2al7dabe00003759
【００３３】
GUID:2e7d0f3f-00cd-74ca-359e-31c50000375a
【００３４】
ESS:2e7d0f3f-00cd74ca3d56a79f-0000375b
【００３５】
B64B:デコードすると実際の16バイトの16進法の一意IDである24バイトのBase64BinaryエンコードID
【００３６】
本開示の一実施態様によると、このようなリクエストパラメータは、一意識別子提供サービス130に送信されるクエリ文字列内のオプションとして提供することができる。
【００３７】
本開示の様々な態様によると、セッション提供サービス110は、１つのリクエストでの2つ以上の一意識別子の生成をリクエストすることができる。例えば、一意識別子リクエスト200は、複数の一意識別子がリクエストされているか否かを識別する情報203を含み得る。一実施態様では、複数の一意識別子のリクエストは、HTTPヘッダ内で指定することができるが、このリクエストは、リクエストの任意の部分内で形式化することができることを理解されたい。一実施態様によると、一意識別子情報は、0001〜1000の配列位置を有するリクエスト配列の一部として提供することができる。この特徴により、一意識別子提供サービス130が、単一リクエストで1から1000のUIDに戻ることができる。一実施では、結果は、パイプで区切られた応答（例えば、HTTPレスポンス）内で提供される。この実施のためには、単一リクエストで複数のUIDを提供することが可能であり、それでもなお、トランザクション量又はサイト発信にかかわらず、GUID情報は、一意であり、重複しないことを保証する。別の実施態様では、HTTPヘッダがリクエストに存在しない場合は、配列デフォルトは1である。
【００３８】
次に図3を参照すると、本開示の一実施態様による一意識別子300の形式の例が示されている。例えば、一意識別子300の1つ以上の構成要素が存在し得る。例えば、一意識別子形式は、アプリケーション情報301、時間を表す情報302、及び/又はシーケンシャルカウンタ情報303を含み得る。このような情報は、一意識別子提供サービス130によって生成することができる。例えば、アプリケーション情報301は、一意識別子をリクエストしたアプリケーション又はサービスを一意に識別する情報を含み得る。時間を表す情報302は、一意識別子が生成された時点に対応する識別情報を含み得る。シーケンシャルカウンタ情報303は、同時にリクエスト又は生成される複数の一意識別子の一意識別を可能にするカウンタ又は他のアービトレーション機構であり得る。
【００３９】
一実施態様では、アプリケーション情報301は、特定のセッション提供サービス110を表す4バイトの一意の名称を含む。このアプリケーション情報301は、一意であるように選択され、分散ネットワーク内のサイトにわたって重複しない。一実施態様によると、アプリケーション情報301は、静的であり、これは、アプリケーション情報301の情報が0の速度を有する（即ち、情報は、サイト内で決して変化しない）ことを意味する。別の実施では、アプリケーション情報301は、該アプリケーション情報301を目視で認識できないように、不明瞭に又は人間が読めないように提示することができる。一実施では、一意識別子の最初の4バイトは、アプリケーション情報301を含む。アプリケーション情報301は、一意識別子の一部を生成するために使用できるため、異なるアプリケーション又はサービスから生成される一意識別子は、一意であることが保証され、一意識別子を生成するためのサイト間の調整は不要である。
【００４０】
本開示の一実施態様によると、絶対時間情報を使用して、一意識別子を生成することができる。一実施態様によると、絶対時間は、1900年1月1日の00:00から経過したマイクロ秒とピコ秒との間の8バイトクロックである。この値は、34,000年のどこかで0にロールオーバーし得る。
【００４１】
一実施態様によると、一意識別子は、IBM z/OS Parallel Sysplexによって提供される絶対時間を含むことができ、このIBM z/OS Parallel Sysplexは、1つ以上のハードウェアボックス（CEC/CPC）から構成することができ、各ハードウェアボックスは、STP又は「システムタイマプロトコル」（IBM z/OS Parallel Sysplex内の全てのハードウェアにわたる共有クロック）を使用して同じ時間を共有する。z/OS Parallel Sysplex上でアセンブラSTCKE命令を使用する場合、戻される時間値は、Sysplex内の全てのハードウェアにわたって同期されることを保証することができる。これは、いくつのオペレーティングシステム（例えば、LPAR）及びいくつの仮想化サーバ（例えば、CICSサーバ）がSysplexを構成するかにかかわらず、一意識別子サービスの全ての実行が、全く同じクロック時間を使用することを保証することを意味する。従って、クロック時間がいくつかの実行エンティティ間で共有されることを保証するコンピューティング環境内で実施される場合、複数のコンピューティングエンティティを使用して、サービスリクエストに応答して一意識別子情報に署名することができることを理解されたい。
【００４２】
IBM環境では、STCKE（Store Clock Extended）命令は、16バイト値を戻し、最初のバイトは、STCK限界（2042年9月17日に0にロールオーバーする）を超えた実行を提供する。（16バイト値のうちの）最初の9バイトは、1900年1月1日00:00から経過したピコ秒の数を提供する。一実施では、アルゴリズムは、最初の8バイトを使用することができ、これにより、マイクロ秒とピコ秒との間に分解能（resolution）が提供され、この最初のバイト（8ビット）は、34,000年よりも長く時間を延長する。
【００４３】
例えば、x'00CD9F77 AE0B4FFD 2400000000 01610002'のSTCKE値は、13:17:42.224059 2014/08/18（この例ではマイクロ秒後に時間が切り捨てられる）のUTC（協定世界時）を表している。絶対時間は、同じ速度で連続的に進み、全てのCEC/CPC（Central Electronic Complex / Central Processing Complex）、全てのOS画像（LPAR）、及び全てのサーバ（CICSサーバ）にわたって100%の精度で利用可能である。
【００４４】
一部の実施態様によると、シーケンシャルカウンタを使用して、同じ正確な時間にサービスされる複数のリクエストの一意性を保証することができる。例えば、異なるセッション提供サービス110から一意識別子の複数のリクエストを受信することができることが想定され得る。集中及び共有シーケンシャルカウンタを使用して、同時一意識別子リクエスト間の仲裁を行うことができる。シーケンシャルカウンタを使用してもよいが、他の方法を使用して、一意識別子リクエスト間の仲裁を行うこともできることを理解されたい。
【００４５】
IBMメインフレーム環境内で実施される一実施態様では、シーケンシャルカウンタは、Coupling Facility（CF）と呼ばれるz/OS Parallel Sysplex内の共有メモリ内に存在する4バイトのバイナリフィールドを含む。このカウンタは、カウンタを検索してインクリメントする同期及びシリアル化された呼び出しによって、全てのハードウェア（CEC/CPCZ）、OS画像（LPAR）、及びサーバ（CICSサーバ）が利用可能である。このシーケンシャルカウンタは、一度に1つのタスクによってのみメモリ内でアクセスすることができず、該カウンタがシーケンシャルであり、重複しないことを保証する。シーケンシャルカウンタは、2つ以上のサービスリクエストが正確な絶対時間を得る場合に、絶対時間を一意にするために使用することができる。シーケンシャルカウンタは、1にロールバックする前に1から4,294,967,295に至り、該カウンタは、各リクエストに対してインクリメントすることができる。このシーケンシャルカウンタは、時間内に1サブマイクロ秒に付き42億個の一意識別子を生成する能力を提供する。
【００４６】
1時点ごとにシーケンシャルカウンタのより高い分解能を提供する必要がある実施態様では、シーケンシャルカウンタを4ビット拡張して、絶対時間を4ビット短縮する単純なコード変更により、時間内に1マイクロ秒に付き68,719,476,735個までの一意識別子を提供することができる。同時リクエストのレートに応じて、シーケンシャルカウンタが、これらの同時リクエストの要求のレートで進む。従って、一意識別子提供サービス130の複数の異なるインスタンスによって、複数の異なるセッション提供サービス110からの複数の一意識別子の複数の同時リクエストを処理する能力を提供することによって、多数のユーザアプリケーション、システム、及び他のエンティティを提供できるシステムが提供され得ることを理解されたい。
【００４７】
本開示の実施態様は、クラウドコンピューティング環境において実施することができる。この説明及び以下の特許請求の範囲において、「クラウドコンピューティング」は、仮想化によって迅速に提供され、最小限の管理労力又はサービスプロバイダ相互作用でリリースされ、次いでそれに応じてスケーリングされ得る構成可能なコンピューティングリソース（例えば、ネットワーク、サーバ、ストレージ、アプリケーション、及びサービス）の共有プールへのユビキタスで便利、そしてオンデマンドのネットワークへのアクセスを可能にするモデルとして定義することができる。クラウドモデルは、様々な特性（例えば、オンデマンドセルフサービス、広域ネットワークアクセス、リソースプール、高速伸縮性、及びメジャードサービス）、サービスモデル（例えば、「SaaS」（Software as a Service）、「PaaS」（Platform as a Service）、及び「IaaS」（Infrastructure as a Service））、並びに利活用モデル（例えば、プライベートクラウド、コミュニティクラウド、パブリッククラウド、及びハイブリッドクラウド）から構成することができる。
【００４８】
添付の図面のフローチャート及びブロック図は、本開示の様々な実施態様によるシステム、方法、及びコンピュータプログラム製品の可能な実施のアーキテクチャ、機能性、及び動作を例示している。これに関して、フローチャート又はブロック図における各ブロックは、指定された論理機能（複数可）を実施するための1つ以上の実行可能な命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。フローチャート又はブロック図における各ブロック及び/又は複数のブロックは、1つ以上のサーバシステム、システムの収集（例えば、ブレードサーバシステム）、システムのクラスタ、メインフレームコンピュータシステム、又は任意のタイプ及び構成のシステムなどの1つ以上の物理システムを表すことができることに留意されたい。このようなシステムは、仮想サーバシステムなどの仮想リソースも含み得、1つ以上のレベルの仮想化を含み得る。実施態様では、このようなモジュール（複数可）及び/又はコードのセグメント（複数可）若しくは部分（複数可）は、サイト又はシステム障害の場合に冗長性を提供するために、サイトにわたって実施することができる。また、ブロック図及び/又はフローチャート図の各ブロック、並びにブロック図及び/又はフローチャート図におけるブロックの組み合わせは、指定された機能又は動作を実行する専用のハードウェアベースのシステム、又は専用のハードウェアとコンピュータ命令との組み合わせによって実施することができることに留意されたい。これらのコンピュータプログラム命令は、コンピュータ又は他のプログラマブルデータ処理装置に、特定の方法で機能するように指示することができるコンピュータ可読媒体に格納することもでき、これにより該コンピュータ可読媒体に格納された命令が、フローチャート及び/又はブロック図の1つ以上のブロックで指定された機能/動作を実施する命令手段を含む製品を生産する。
【００４９】
動作において、本開示の実施態様は、複数のプラットフォームにわたってアクセス可能なクラウドベースの環境において維持されるデータセッションを提供するように構成されている。図4を参照すると、本開示の一実施態様による、新しいデータセッションを提供するための方法400の図が示されている。方法400は、動作410から始まり、ユーザ及び/又はユーザアプリケーションが、新しいデータセッションのリクエストをセッション提供サービスに送信する。一実施態様では、ユーザは、リクエストを送信することができるウェブサイトに移動する。他の実施態様では、クライアントアプリケーションは、コマンドインタフェース又はAPIを介してリクエストを送信する。このリクエストは、提供するデータセッションの数、ユーザ及び/又はユーザアプリケーションの識別、データセッションの選択された形式、及びデータセッションの有効期限などの追加の情報又はオプションを含み得る。
【００５０】
動作420において、セッション提供サービスが、キャッシュ提供サービスにリクエストを送信する。このリクエストは、ユーザ又はユーザアプリケーションからのリクエストの情報を含み得る。ユーザ及び/又はユーザアプリケーションによって選択された場合、複数のデータセッションのリクエストをキャッシュ提供サービスに送信することができる。
【００５１】
動作430において、キャッシュ提供サービスは、リクエストとして新しいデータセッションを提供し、データセッションエンドポイントをセッション提供サービスに返信する。
【００５２】
動作440において、セッション提供サービスは、エンドポイントを処理して格納し、一意識別子提供サービスからの新しい一意識別子をリクエストする。一意識別子提供サービスへのリクエストは、一意識別子の形式及びリクエストされた一意識別子の数量を含む追加のリクエストオプションを含み得る。
【００５３】
動作450において、一意識別子提供サービスは、新しいデータセッションの提供にリンクされるべき新しいグローバル一意識別子を生成する。上述のように、一意識別子提供サービスは、システムにわたってグローバルに一意であることが保証される識別子を生成するいくつかのプロセスのうちの1つを使用することができる。一部の実施態様では、一意識別子提供サービスは、各一意識別子の一意性を保証するために、システムクロック及び/又はカウンタを組み込むことができる。次いで、一意識別子（複数）をセッション提供サービスに返信することができる。
【００５４】
動作460において、セッション提供サービスは、一意識別子を処理して格納する。一意識別子を含む、新たに提供されたデータセッションに関する情報を、ユーザ及び/又はユーザアプリケーションに送信する。動作470において、ユーザ及び/又はユーザアプリケーションは、セッションデータを格納及び/又は検索するためにデータセッションの使用を開始する。
【００５５】
実施態様では、RESTアーキテクチャに準拠し、HTTPの動詞であるGET、POST、PUT、及びDELETEを使用するリクエストを送信することによって、データセッションを生成、修正、読み取り、及び/又は削除することができる。実施態様では、コマンドは、HTTPを介して通信される。
【００５６】
一実施態様では、クライアントアプリケーションは、一意識別子を含むGETリクエストをセッション提供サービスに送信することができる。一実施態様では、GETリクエストは、リクエストされたデータの範囲をさらに特定又は定義する。次いで、セッション提供サービスは、キャッシュ提供サービスを呼び出して、その一意識別子を有するデータセッションが存在するか否かを判定することができる。データセッションが存在する場合は、該データセッションが、セッション提供サービスに送信され、次いでクライアントアプリケーションに送信される。
【００５７】
一実施態様では、クライアントアプリケーションは、データセッションに格納されるべきデータオブジェクト又は他のデータを含むPOSTリクエストをセッション提供サービスに送信することができる。セッション提供サービスは、一意識別子提供サービスから新しい一意識別子をリクエストすることができる。新しい一意識別子が生成されると、セッション提供サービスは、キャッシュ提供サービスを呼び出して、新しい一意識別子に関連付けられる新しいデータセッションに格納されるべきデータオブジェクト又は他のデータを格納することができる。
【００５８】
一実施態様では、クライアントアプリケーションは、一意識別子及び該一意識別子に関連するデータセッションを更新するためのデータを含むPUTリクエストをセッション提供サービスに送信することができる。次いで、セッション提供サービスは、キャッシュ提供サービスを呼び出して、その一意識別子を有するデータセッションが存在するか否かを判定することができる。データセッションが存在する場合は、該データセッションは、クライアントアプリケーションから受信したデータに従って更新される。次いで、データセッションからの更新されたデータを、セッション提供サービスに送信し、次いで、クライアントアプリケーションに送信することができる。
【００５９】
一実施態様では、クライアントアプリケーションは、削除されるべきデータセッションの一意識別子を含むDELETEリクエストをセッション提供サービスに送信することができる。一実施態様では、DELETEリクエストは、削除のためにリクエストされたデータの範囲をさらに特定又は定義する。次いで、セッション提供サービスは、キャッシュ提供サービスを呼び出して、その一意識別子を有するデータセッションが存在するか否かを判定することができる。データセッションが存在する場合は、データセッション又は該データセッションの一部が、クライアントアプリケーションから受信したリクエストに従って削除される。次いで、データセッションからの更新及び/又は削除されたデータを、セッション提供サービスに送信し、次いでクライアントアプリケーションに送信して、データが削除されたことを確認することができる。
【００６０】
上記の議論において、一実施態様の特定の態様は、特定の順序及び/又はグループ化における例示的な目的で、本明細書で説明される処理ステップ及び/又は動作及び/又は命令を含む。しかしながら、本明細書に示され、議論される特定の順序及び/又はグループ化は、単なる例示であり、限定ではない。当業者であれば、処理ステップ及び/又は動作及び/又は命令の他の順序及び/又はグループ化が可能であり、一部の実施態様では、上述の処理ステップ及び/又は動作及び/又は命令のうちの1つ以上を組み合わせる、及び/又は削除することができることを理解されよう。加えて、処理ステップ及び/又は動作及び/又は命令のうちの1つ以上の部分を、本明細書で説明される処理ステップ及び/又は動作及び/又は命令のうちの1つ以上の他の部分として再グループ化することができる。結果として、本明細書で説明される処理ステップ及び/又は動作及び/又は命令の特定の順序及び/又はグループ化は、本開示の範囲を限定するものではない。
【００６１】
本開示は、特定の好ましい実施態様に関して説明されているが、本開示の利益を考慮すれば、当業者には、同様に本開示の範囲内である、本明細書で説明される利点及び特徴の全てを提供するわけではない実施態様を含む他の実施態様が明らかであろう。本開示の精神及び範囲から逸脱することなく、他の実施態様を利用できることを理解されたい。
【図１】
2018536247.tif 000003
【図２】
2018536247.tif 000004
【図３】
2018536247.tif 000005
【図４】
2018536247.tif 000006
【国際調査報告】
2018536247.tif 000007