JP6902580B2 - Systems and methods for providing distributed caching in transaction processing environments - Google Patents

Systems and methods for providing distributed caching in transaction processing environments Download PDF

Info

Publication number
JP6902580B2
JP6902580B2 JP2019158649A JP2019158649A JP6902580B2 JP 6902580 B2 JP6902580 B2 JP 6902580B2 JP 2019158649 A JP2019158649 A JP 2019158649A JP 2019158649 A JP2019158649 A JP 2019158649A JP 6902580 B2 JP6902580 B2 JP 6902580B2
Authority
JP
Japan
Prior art keywords
caching
cache
distributed
memory data
layer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019158649A
Other languages
Japanese (ja)
Other versions
JP2020017288A (en
Inventor
シェン,シュガン
リトル,トッド
ジン,ジム・ヨンシュン
ホウ,ジェシー
Original Assignee
オラクル・インターナショナル・コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from JP2017558432A external-priority patent/JP6613320B2/en
Application filed by オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Priority to JP2019158649A priority Critical patent/JP6902580B2/en
Publication of JP2020017288A publication Critical patent/JP2020017288A/en
Application granted granted Critical
Publication of JP6902580B2 publication Critical patent/JP6902580B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

発明の分野:
本発明の実施形態は、概して、アプリケーションサーバおよびクラウド環境に関し、特に、トランザクション処理環境において分散型キャッシングを提供するためのシステムおよび方法に関する。
Field of Invention:
Embodiments of the invention generally relate to application server and cloud environments, especially systems and methods for providing distributed caching in transaction processing environments.

背景:
Tuxedo(登録商標)サーバ環境などのトランザクション処理環境においては、性能を向上させるためのユーザ関連データまたはアプリケーションデータをキャッシュする分散型キャッシングシステムは難易度の高いものになる可能性がある。なぜなら、クライアントプロセスとサーバプロセスとの間でデータを送信するのに複数のデータタイプを用いることができ、このため、さまざまな顧客が別々のキャッシングソリューションを選ぶ可能性があるからである。これらは、本発明の実施形態が対処するように意図される分野である。
background:
In transaction processing environments such as Tuxedo® server environments, distributed caching systems that cache user-related or application data to improve performance can be challenging. This is because multiple data types can be used to send data between the client and server processes, which can lead to different customers choosing different caching solutions. These are areas that the embodiments of the present invention are intended to address.

概要:
一実施形態に従うと、トランザクション処理環境において分散型キャッシングを提供するためのシステムおよび方法がこの明細書中に記載される。最上層は、キャッシングシステムと対話するためにクライアントをキャッシュすることによってアプリケーションプログラミングインターフェイス(application programming interface:API)をエクス
ポーズして使用できるようにすることができ、複数のバッファタイプと、各バッファタイプに対する1つ以上のコールバック機能とを登録することができる。共通のキャッシング層は共通のデータ構造をサポートすることができ、最上層からキャッシング要求を受取ったとき、そこにあるコールバック機能を用いて、キャッシング要求に関連付けられた特定のバッファタイプと共通のデータ構造との間で変換を行なうことができる。共通のキャッシング層は、キャッシング関連のAPIを提供するために1組の共通のAPIを定義することができるとともに、キーおよび値データのシリアライゼーション/デシリアライゼーションなどの複数のインプリメンテーションについての共通の挙動を定義することができる。プロバイダスイッチおよび関連するAPIを用いて、インプリメンテーション層からプロバイダスイッチの特定のインプリメンテーションをロードすることができる。プロバイダスイッチは、特定のキャッシングプロバイダによって提供されるキャッシング動作を指し示すポインタを含み得る。構成ファイルは、データコーディングと、キャッシングシステムのためにどのキャッシングプロバイダを使用するべきかとを指定するのに用いることができる。
Overview:
According to one embodiment, systems and methods for providing distributed caching in a transaction processing environment are described herein. The top layer can expose and use the application programming interface (API) by caching the client to interact with the caching system, with multiple buffer types and each buffer type. One or more callback functions can be registered for. A common caching layer can support a common data structure, and when it receives a caching request from the top layer, it uses its callback functionality to provide data in common with the particular buffer type associated with the caching request. Conversions can be made to and from the structure. A common caching layer can define a set of common APIs to provide caching-related APIs, as well as common behavior for multiple implementations such as serialization / deserialization of key and value data. Can be defined. The provider switch and associated APIs can be used to load specific implementations of the provider switch from the implementation layer. The provider switch may include pointers to the caching behavior provided by a particular caching provider. The configuration file can be used to specify the data coding and which caching provider to use for the caching system.

一実施形態に従うと、分散型キャッシングシステムによって使用されるデータシリアライゼーションをサポートするためのシステムおよび方法がこの明細書中に記載される。データシリアライゼーションシステムは共通のデータ構造を含み得る。共通のデータ構造は、複数のデータタイプのシリアライズされたストリーム/バイトを格納するために用いることができる。データ構造は、キャッシュセッターのアーキテクチャを記述する情報を含むヘッダを含み得る。異なるアーキテクチャ上で使用するために、キャッシュされたデータを検索する場合、ヘッダ内のアーキテクチャ情報を用いて、データを、その異なるアーキテクチャ上で使用できるように変換することができる。キャッシュされたデータが同じ
アーキテクチャ上で検索される場合、キャッシュされたデータを変換することなく用いることができる。データ構造は、付加的に、メモリを効率的に使用できるようにするために可変長をもつボディ、後方互換性についてのバージョン情報、および、拡張用のオプション特徴のためのフィールドを含み得る。
According to one embodiment, systems and methods for supporting data serialization used by distributed caching systems are described herein. Data serialization systems can contain common data structures. Common data structures can be used to store serialized streams / bytes of multiple data types. The data structure may include a header that contains information that describes the cache setter's architecture. When retrieving cached data for use on a different architecture, the architecture information in the header can be used to transform the data for use on that different architecture. If the cached data is retrieved on the same architecture, the cached data can be used without conversion. The data structure may additionally include a body with variable length to allow efficient use of memory, version information about backward compatibility, and fields for optional features for expansion.

一実施形態に従うと、分散型インメモリ・データグリッド(たとえば、Coherence)を
、キャッシングプロバイダとしての分散型キャッシングシステムに統合するためのシステムおよび方法がこの明細書中に記載される。分散型キャッシングシステムにおけるプロキシサーバは、分散型インメモリ・データグリッドに対するクライアントとしての役割を果たし得るとともに、IDCクライアントから転送されたキャッシング要求を受取り得る。起動時に、プロキシサーバは、キャッシング・システム・キャッシュを定義する構成ファイルと、分散型インメモリ・データグリッドキャッシュにキャッシュするマップとをロードし、キャッシング・システム・キャッシュの名前を用いてサービスをアドバタイズすることができる。要求されたサービスを指定するキャッシング要求をキャッシング・クライアントから受取ると、プロキシサーバは、要求されたサービスに基づいてアクセスするために、分散型インメモリ・データグリッドにおける対応するキャッシュを決定することができる。
According to one embodiment, systems and methods for integrating a distributed in-memory data grid (eg, Coherence) into a distributed caching system as a caching provider are described herein. The proxy server in the distributed caching system can act as a client for the distributed in-memory data grid and can receive caching requests forwarded from the IDC client. At startup, the proxy server loads the configuration file that defines the caching system cache and the map that it caches in the distributed in-memory data grid cache, and advertises the service using the name of the caching system cache. be able to. Upon receiving a caching request from a caching client that specifies the requested service, the proxy server can determine the corresponding cache in the distributed in-memory data grid for access based on the requested service. ..

一実施形態に従うと、トランザクション処理環境において分散型キャッシングシステムを用いて、サービスから戻された結果をキャッシュするためのシステムおよび方法がこの明細書中に記載される。構成ファイルは、サービスから戻された結果をキャッシュするのにどのキャッシュを用いるべきかと、キャッシュされた結果を識別する際に使用されるキーを如何に生成するかとを記述するエントリを含むキャッシングセクションを含み得る。サービスについての要求がクライアントから受取られると、トランザクション処理環境のアプリケーションサーバコアは、関連するキャッシュされたデータが、構成ファイルを用いて生成されたキーによって識別されるキャッシュに存在しているかどうかを判断することができる。存在している場合、アプリケーションサーバコアは、サービスを呼出す代わりに、キャッシュされたデータを直接戻すことができる。他の場合、アプリケーションサーバコアは、サービスを呼出し、生成されたキーを用いて、構成ファイルによって指定されたキャッシュにデータをキャッシュし、クライアントに結果を戻すことができる。 According to one embodiment, a system and method for caching the results returned from a service using a distributed caching system in a transaction processing environment is described herein. The configuration file contains a caching section that contains an entry that describes which cache should be used to cache the results returned by the service and how to generate the key used to identify the cached results. Can include. When a request for a service is received from a client, the application server core in the transaction processing environment determines if the associated cached data is in the cache identified by the key generated using the configuration file. can do. If present, the application server core can return the cached data directly instead of calling the service. In other cases, the application server core can call the service and use the generated key to cache the data in the cache specified by the configuration file and return the result to the client.

一実施形態に従った、トランザクション処理環境における分散型キャッシングを提供するためのシステムを示す図である。It is a figure which shows the system for providing the distributed caching in the transaction processing environment according to one Embodiment. 一実施形態に従った、トランザクション処理環境において使用される分散型キャッシングを提供するためのシステムをさらに示す図である。FIG. 5 further illustrates a system for providing distributed caching used in a transaction processing environment according to an embodiment. 一実施形態に従った、キャッシングAPIを示す詳細なクラス図である。It is a detailed class diagram which shows the caching API according to one Embodiment. 一実施形態に従った、トランザクション処理環境において使用される分散型キャッシングを提供するための方法を示す図である。It is a figure which shows the method for providing the distributed caching used in the transaction processing environment according to one Embodiment. 一実施形態に従った例示的な型付きバッファを示す図である。It is a figure which shows the exemplary typed buffer according to one Embodiment. 一実施形態に従った、分散型キャッシングシステムによって使用されるデータシリアライゼーションをサポートするためのシステムを示す図である。It is a figure which shows the system for supporting the data serialization used by the distributed caching system according to one Embodiment. 一実施形態に従った、分散型キャッシングシステムによって使用されるデータシリアライゼーションをサポートするための方法を示す図である。It is a figure which shows the method for supporting the data serialization used by the distributed caching system according to one Embodiment. 一実施形態に従った、キャッシングプロバイダとしての分散型キャッシングシステムに分散型インメモリ・データグリッドを統合するためのシステムを示す図である。It is a figure which shows the system for integrating the distributed in-memory data grid into the distributed caching system as a caching provider according to one Embodiment. 一実施形態に従った、キャッシングプロバイダとしての分散型キャッシングシステムに分散型インメモリ・データグリッドを統合するためのシステムをさらに示す図である。FIG. 5 further illustrates a system for integrating a distributed in-memory data grid into a distributed caching system as a caching provider according to one embodiment. 一実施形態に従った、キャッシングプロバイダとしての分散型キャッシングシステムに分散型インメモリ・データグリッドを統合するための方法を示す図である。It is a figure which shows the method for integrating the distributed in-memory data grid into the distributed caching system as a caching provider according to one Embodiment. 一実施形態に従った、トランザクション処理環境において分散型キャッシングシステムを用いて、サービスから戻された結果をキャッシュするためのシステムを示す図である。It is a figure which shows the system for caching the result returned from the service by using the distributed caching system in the transaction processing environment according to one Embodiment. 一実施形態に従った、トランザクション処理環境において分散型キャッシングシステムを用いて、サービスから戻された結果をキャッシュするための方法を示す図である。It is a figure which shows the method for caching the result returned from the service by using the distributed caching system in the transaction processing environment according to one Embodiment.

詳細な説明:
トランザクション処理環境(たとえば、Tuxedoサーバ環境)においては、メッセージが1つのプロセスから別のプロセスに送信可能になる前にバッファが割当てられる必要がある。このような環境における複雑なアプリケーションは、さまざまなプロトコルを用いて複数のネットワークを介して通信する異種システムにインストールすることができる。そのため、異なるタイプのバッファが必要となり、各々のバッファタイプは、メッセージを初期化し、送信し、受信し、かつデータを符号化し、復号化するためのさまざまなルーチンを必要とする。
Detailed explanation:
In a transaction processing environment (eg, a Tuxedo server environment), a buffer needs to be allocated before a message can be sent from one process to another. Complex applications in such an environment can be installed on heterogeneous systems that communicate over multiple networks using a variety of protocols. Therefore, different types of buffers are needed, and each buffer type requires different routines for initializing, sending, receiving, and encoding and decoding data.

典型的には、ユーザ(たとえば、アプリケーション開発者)が性能向上のために分散型キャッシングシステムに型付きバッファをキャッシュする場合、ユーザは、特定の型付きバッファ用にカスタマイズされたコードを書込む必要がある。さらに、アプリケーションの開発が完成した後に異なるキャッシングプロバイダが用いられる場合、キャッシングプロバイダの変更に対応するために、コードを付加的に変更する必要がある。 Typically, when a user (for example, an application developer) caches a typed buffer in a distributed caching system for better performance, the user must write code customized for a particular typed buffer. There is. In addition, if a different caching provider is used after the application development is complete, additional code changes will be required to accommodate the changes in the caching provider.

分散型キャッシングシステム
一実施形態に従うと、トランザクション処理環境において分散型キャッシングを提供するためのシステムおよび方法がこの明細書中に記載される。最上層は、キャッシングシステムと対話させるためにクライアントをキャッシュすることによってアプリケーションプログラミングインターフェイス(API)をエクスポーズして使用できるようにすることができ、複数のバッファタイプと、各バッファタイプに対する1つ以上のコールバック機能とを登録することができる。共通のキャッシング層は、共通のデータ構造をサポートすることができ、最上層からキャッシング要求を受取ると、そこにあるコールバック機能を用いて、キャッシング要求に関連付けられた特定のバッファタイプと共通のデータ構造との間で変換を行なうことができる。共通のキャッシング層は、キャッシング関連のAPIを提供するために1組の共通のAPIを定義し、キーおよび値データのシリアライゼーション/デシリアライゼーションなどの複数のインプリメンテーションについての共通の挙動を定義することができる。プロバイダスイッチおよび関連するAPIを用いて、インプリメンテーション層からプロバイダスイッチの特定のインプリメンテーションをロードすることができる。プロバイダスイッチは、特定のキャッシングプロバイダによって提供されるキャッシング動作を指し示すポインタを含み得る。構成ファイルは、データコーディングと、キャッシングシステムのためにどのキャッシングプロバイダを使用するべきかとを指定するのに用いることができる。
Distributed Caching Systems According to one embodiment, systems and methods for providing distributed caching in a transaction processing environment are described herein. The top layer can expose and use application programming interfaces (APIs) by caching clients to interact with the caching system, with multiple buffer types and one or more for each buffer type. You can register the callback function of. A common caching layer can support a common data structure, and when it receives a caching request from the top layer, it uses its callback functionality to provide data in common with the particular buffer type associated with the caching request. Conversions can be made to and from the structure. A common caching layer defines a set of common APIs to provide caching-related APIs, and defines common behavior for multiple implementations such as serialization / deserialization of key and value data. Can be done. The provider switch and associated APIs can be used to load specific implementations of the provider switch from the implementation layer. The provider switch may include pointers to the caching behavior provided by a particular caching provider. The configuration file can be used to specify the data coding and which caching provider to use for the caching system.

階層化されたキャッシングシステムは、ユーザと下層のキャッシングプロバイダとの間を分離させることができ、これにより、システムが使いやすくなり、その拡張が容易になる。 A layered caching system can separate the user from the underlying caching provider, which makes the system easier to use and scale.

たとえば、キャッシングシステムは、複数のキャッシングプロバイダとともに用いることができ、ユーザのアプリケーションを変更する必要なしに、複数のデータタイプをキャ
ッシュすることができる。開発者がどんなバッファタイプをキャッシュする必要があるかどうかにかかわらず、かつ、そのキャッシングシステムのためにどのキャッシングプロバイダが構成されるべきであるかにかかわらず、ユーザは、同じセットのAPIを用いてキャッシング動作を実行することができる。
For example, a caching system can be used with multiple caching providers to cache multiple data types without the need to modify the user's application. Users use the same set of APIs regardless of what buffer type the developer needs to cache and which caching provider should be configured for that caching system. Can perform caching operations.

一実施形態に従うと、分散型キャッシングシステムは、アクセス回数および更新回数を減らすことができ、各々がキーによって識別されている複数のタイプのバッファをキャッシュすることができ、複製アクセス、非複製アクセス、ローカルアクセスおよびリモートアクセスを提供することができる。 According to one embodiment, the distributed caching system can reduce the number of accesses and updates, can cache multiple types of buffers, each identified by a key, replication access, non-replication access, Can provide local and remote access.

図1は、一実施形態に従った、トランザクション処理環境において使用される分散型キャッシングを提供するためのシステムを示す。 FIG. 1 shows a system for providing distributed caching used in a transaction processing environment according to an embodiment.

図1に示されるように、分散型キャッシングシステム105は、キャッシュにデータを格納する(106)かまたはキャッシュからデータを検索する(107)ために、キャッシング・クライアント(たとえば、Tuxedoクライアントまたはサーバ)101によって使用されるトランザクション処理システム(たとえば、Tuxedoサーバ環境)100において、提供され得る。 As shown in FIG. 1, the distributed caching system 105 has a caching client (eg, a Tuxedo client or server) 101 to store data in the cache (106) or retrieve data from the cache (107). It may be provided in the transaction processing system (eg, Tuxedo server environment) 100 used by.

図1においてさらに示されるように、分散型キャッシングシステムは、複数の層、たとえば、バッファベースの分散型キャッシング(buffer-based distributed caching:BDC)層109、共通の分散型キャッシング(common distributed caching:CDC)層125、分散型キャッシングのインプリメンテーション(implementation of distributed caching:IDC)層141、および、従属型サードパーティベンダー(dependent third-party vendor:DTV)層149を含み得る。構成ファイル103は、BDC層、CD
C層およびIDC層の挙動を定義するために用いることができる。
As further shown in FIG. 1, a distributed caching system includes multiple layers, such as buffer-based distributed caching (BDC) layer 109, common distributed caching (CDC). ) Layer 125, implementation of distributed caching (IDC) layer 141, and dependent third-party vendor (DTV) layer 149. The configuration file 103 includes a BDC layer and a CD.
It can be used to define the behavior of the C layer and the IDC layer.

一実施形態に従うと、BCD層は、キャッシング・クライアントに対する最上層であり、複数の型付きバッファを処理することができ、型付きバッファをCDCによってサポートされる共通の型付きバッファに変換した後、キャッシング・クライアントからCDC層にキャッシング要件を転送することができる。最上層の主要な機能は、さまざまな型付きバッファのシリアライゼーションおよびデシリアライゼーションである。 According to one embodiment, the BCD layer is the top layer for caching clients and can handle multiple typed buffers, after converting the typed buffer to a common typed buffer supported by the CDC. Caching requirements can be transferred from the caching client to the CDC layer. The main function of the top layer is the serialization and deserialization of various typed buffers.

図1においてさらに示されるように、BDC層は、キャッシングシステムと通信するためにキャッシング・クライアントによって使用される1組の外部API121をエクスポーズすることができる。たとえば、外部APIは、データをキャッシュするかまたはデータをキャッシュから検索するために、アプリケーションにおいて直接用いることができる。 As further shown in FIG. 1, the BDC layer can expose a set of external APIs 121 used by the caching client to communicate with the caching system. For example, an external API can be used directly in an application to cache or retrieve data from the cache.

以下の表1は、一実施形態に従った外部APIの例示的なインターフェイスのリストを示す。 Table 1 below shows a list of exemplary interfaces for external APIs according to one embodiment.

Figure 0006902580
Figure 0006902580

表1に示されるように、一実施形態に従うと、外部APIは、キャッシュに対するハンドルを取得し、キャッシュにバッファを入れ、バッファをキーに関連付け、バッファをキャッシュから削除して検索する際にアプリケーションが使用するべき方法を含み得る。 According to one embodiment, as shown in Table 1, the external API gets a handle to the cache, puts a buffer in the cache, associates the buffer with a key, and the application removes the buffer from the cache and retrieves it. It may include the method to be used.

たとえば、ユーザは、Tuxedoキャッシュハンドルを得るために方法「tpgetcache」を用いることができる。方法のパラメータ「名」は、取得すべきキャッシュのタイプを指定することができる。方法についての戻された結果は、構造名TCACHEを指し示すポインタであり得る。「tpcacheput/tpcacheget」はデータをキャッシュに入れる/キャ
ッシュから入手するために用いることができる。「tpcacheremove/tpcachemremove/tpcacheremoveall」は、キャッシュからアイテムを削除するために用いることができる。
For example, the user can use the method "tpgetcache" to obtain the Tuxedo cache handle. The method parameter "name" can specify the type of cache to be acquired. The returned result for the method can be a pointer to the structure name TCACHE. "Tpcacheput / tpcacheget" can be used to cache / get data from the cache. "Tpcacheremove / tpcachemremove / tpcacheremoveall" can be used to remove an item from the cache.

一実施形態に従うと、BDC層は、キャッシングシステムにおいてキャッシュすることができるデータタイプとして複数の型付きバッファ130を登録することができる。たとえば、複数の型付きバッファは、ストリング(一連の文字)、carray(文字配列)、ptr(バッファを指すポインタ)、FML型付きバッファおよびVIEW型バッファを含み得る。他のデータタイプも、それらのデータタイプがBDC層に登録されていれば、キャッシングのためにサポートされ得る。 According to one embodiment, the BDC layer can register a plurality of typed buffers 130 as data types that can be cached in the caching system. For example, a plurality of typed buffers may include a string (a series of characters), a carry (character array), a ptr (a pointer to a buffer), an FML typed buffer, and a VIEW type buffer. Other data types may also be supported for caching if they are registered in the BDC layer.

図1に示されるように、各々の登録された型付きバッファは、型付きバッファを記述するメタデータ(たとえば、型付きバッファメタデータ132)と、符号化および暗号化ならびにシリアライゼーションおよびデシリアライゼーションを含むバッファ上での複数の動作を定義する1つ以上のコールバック機能131と、に関連付けることができる。 As shown in FIG. 1, each registered typed buffer contains metadata describing the typed buffer (eg, typed buffer metadata 132), as well as encoding and encryption as well as serialization and deserialization. It can be associated with one or more callback functions 131 that define multiple actions on the buffer.

一実施形態に従うと、BDC層は、各々の登録されたデータタイプ毎に、メタデータおよびコールバック機能を提供するスイッチ(データ構造)を含み得る。 According to one embodiment, the BDC layer may include a switch (data structure) that provides metadata and callback functions for each registered data type.

以下のリスト1は、一実施形態に従った例示的なスイッチを示す。 Listing 1 below shows exemplary switches according to one embodiment.

Figure 0006902580
Figure 0006902580

リスト1に示されるように、スイッチは、バッファのタイプ、サブタイプおよびサイズ、シリアライゼーション動作「presend」および「presend2」、デシリアライゼーション
動作「postrecv」、ならびに符号化/暗号化動作「encdec」を記述するメタデータを含み得る。
As shown in Listing 1, the switch describes the buffer type, subtype and size, serialization actions "presend" and "presend2", deserialization action "postrecv", and encoding / encryption action "encdec". May include metadata.

一実施形態に従うと、CDC層は、キャッシング関連のAPIを提供するために1組の共通のAPI(たとえば、キャッシングAPI127)を含み得るとともに、名前/キー値ペアを含むデータのシリアライゼーション/デシリアライゼーションなどの複数のインプリメンテーションについての共通の挙動を定義し得る。CDC層は、シリアライゼーション/デシリアライゼーションのインプリメンテーションのためのコールバック登録をサポートすることによって、複数のタイプのデータをシリアライズ/デシリアライズすることができる。 According to one embodiment, the CDC layer may include a set of common APIs (eg, caching API 127) to provide caching related APIs, as well as serialization / deserialization of data containing name / key value pairs, etc. Can define common behavior for multiple implementations of. The CDC layer can serialize / deserialize multiple types of data by supporting callback registration for serialization / deserialization implementations.

一実施形態に従うと、共通のデータ構造(たとえば、共通の型付きバッファ)133は、キャッシュされるべき型付きバッファのシリアライズされたバイトを格納するために、CDC層によってサポートすることができる。BDC層に登録される登録済みの型付きバッファまたは他のデータタイプの各々は、シリアライズされ、共通のデータ構造に格納され得る。 According to one embodiment, a common data structure (eg, a common typed buffer) 133 can be supported by the CDC layer to store the serialized bytes of the typed buffer to be cached. Each of the registered typed buffers or other data types registered in the BDC layer can be serialized and stored in a common data structure.

一実施形態に従うと、CDC層は実際のキャッシング動作を実行せず、必要なインターフェイスを定義する。これらのインターフェイスは、キャッシング動作の特定のインプリメンテーションに依拠しない。構成に基づいて、これらのインターフェイスの特定のインプリメンテーションは、IDC層から動的にロードすることができる。 According to one embodiment, the CDC layer does not perform the actual caching operation and defines the required interfaces. These interfaces do not rely on any particular implementation of caching behavior. Based on the configuration, certain implementations of these interfaces can be dynamically loaded from the IDC layer.

一実施形態に従うと、キャッシングプロバイダスイッチ143および特定の方法はCDC層に提供されて、プロバイダスイッチの特定のインプリメンテーションを検索するのに使用され得る。プロバイダスイッチは、キャッシングプロバイダによって提供されるキャッシング動作を指し示す複数のポインタを含み得る。プロバイダスイッチの各インプリメ
ンテーションのロードは、BDC層からのキャッシング要求に応じて、キャッシングAPIによって開始され得る(128)。以下のリスト2は、一実施形態に従った例示的なプロバイダスイッチを示す。
According to one embodiment, the caching provider switch 143 and certain methods can be provided to the CDC layer and used to search for a particular implementation of the provider switch. The provider switch may contain multiple pointers to the caching behavior provided by the caching provider. Loading of each implementation of the provider switch can be initiated by the caching API in response to caching requests from the BDC layer (128). Listing 2 below shows an exemplary provider switch according to one embodiment.

Figure 0006902580
Figure 0006902580

リスト2に示されるように、プロバイダスイッチは、「入れる(put)」、「入手する
(get)」および「削除する(remove)」などのキャッシング動作を示すポインタを含み
得る。方法「TMTDCGetCachingProviderSW」は、構成ファイルによって定義されるように、キャッシングインターフェイスの特定のインプリメンテーションを検索するために用いられる特定の方法である。
As shown in Listing 2, the provider switch may include pointers that indicate caching actions such as "put", "get", and "remove". The method "TMDDCGetCachingProviderSW" is a specific method used to search for a specific implementation of a caching interface, as defined by the configuration file.

再び図1を参照すると、IDC層は、実際のキャッシング動作を提供することができ、各キャッシングプロバイダ毎にクライアントおよびサーバを含み得る。上述のとおり、各々のクライアントは、プロバイダスイッチのインプリメンテーションであってもよく、CDC層によって使用されるべく提供することができる。クライアントは、1つ以上のダイナミックライブラリによって提供することができ、このため、クライアントの各々を動的にCDC層にロードすることができる。サーバは、実際のキャッシングサーバまたはプロバイダとしてサードパーティアプリケーションを用いることができる。各々のキャッシングプロバイダは、それ自体のIDCインプリメンテーションを有することができ、これにより、ユーザが、アプリケーションコード変更のない構成によってIDCインプリメンテーションを変更することが可能となる。 With reference to FIG. 1 again, the IDC layer can provide the actual caching behavior and may include a client and a server for each caching provider. As mentioned above, each client may be an implementation of a provider switch and can be provided for use by the CDC layer. Clients can be provided by one or more dynamic libraries, so that each of the clients can be dynamically loaded into the CDC layer. The server can use a third party application as the actual caching server or provider. Each caching provider can have its own IDC implementation, which allows the user to modify the IDC implementation in a configuration that does not change the application code.

一実施形態に従うと、DTV層は、複数のサードパーティキャッシングプロバイダ(たとえば、CoherenceおよびCloudStore)を含み得る。 According to one embodiment, the DTV layer may include multiple third party caching providers (eg, Coherence and CloudStore).

一実施形態に従うと、BDC層およびCDC層は、トランザクション処理環境に対するクライアントアプリケーションとそこにあるサーバ(たとえば、TuxedoクライアントおよびTuxedoサーバ)との両方に存在し得るとともに、IDC層およびDTV層はサーバ上にのみ存在し得る。 According to one embodiment, the BDC and CDC layers can be present in both the client application for the transaction processing environment and the servers there (eg, Tuxedo client and Tuxedo server), while the IDC and DTV layers are on the server. Can only exist in.

一実施形態に従うと、構成ファイルは単純な行指向型フォーマットのファイルであり得る。構成ファイルにおけるプロパティは、行の観点から処理することができるため、新しく導入されたプロパティがファイルのローディングプロセスに影響を与えることはない。表2は、構成ファイルにおけるプロパティのサンプルリストを示す。 According to one embodiment, the configuration file can be a file in a simple line-oriented format. Properties in the configuration file can be processed in terms of lines, so the newly introduced properties do not affect the file loading process. Table 2 shows a sample list of properties in the configuration file.

Figure 0006902580
Figure 0006902580

一実施形態に従うと、階層化されたキャッシングシステムは、ユーザと下層にあるキャッシングプロバイダとの間を分離し得るとともに、ユーザがシステム上でキャッシング動作を実行するために同じセットのインターフェイスを用いることを可能にし得る。 According to one embodiment, a layered caching system may separate the user from the underlying caching provider and allow the user to use the same set of interfaces to perform caching operations on the system. It can be possible.

具体例として、BDC層が型付きバッファをキャッシュするようにとのキャッシング要求をキャッシング・クライアントから受取ると、BDC層は、CDC層にキャッシング要求を転送する(123)ことができ、これにより、型付きバッファをシリアライズするためにBDC層における対応するコールバック機能を呼出す(137)ことができ、シリアライズされたバイトを共通のデータ構造に格納する(138)ことができる。CDC層は、共通セットのインターフェイスを用いて、構成ファイルによって指定される特定のキャッシングプロバイダからキャッシング動作にアクセスして、キャッシング動作を実行することができる。 As a specific example, when a BDC layer receives a caching request from a caching client to cache a typed buffer, the BDC layer can forward the caching request to the CDC layer (123), thereby typing. The corresponding callback function in the BDC layer can be called (137) to serialize the attached buffer, and the serialized bytes can be stored in a common data structure (138). The CDC layer can access the caching operation from a particular caching provider specified by the configuration file and perform the caching operation using a common set of interfaces.

図2は、一実施形態に従った、トランザクション処理環境において使用される分散型キャッシングを提供するためのシステムをさらに示す。 FIG. 2 further shows a system for providing distributed caching used in a transaction processing environment according to one embodiment.

図2に示されるように、CDC層におけるキャッシングAPIはさらに、共通のキャッシングインターフェイスおよび他の共通の挙動、たとえばシリアライゼーションおよびデシリアライゼーションなど、を定義する複数のオブジェクトを含み得る。ユーザにエクスポーズされる外部APIとは異なり、上述のとおり、キャッシングAPIは、キャッシングシステムによって使用されるべく提供される。 As shown in FIG. 2, the caching API at the CDC layer may further include multiple objects that define a common caching interface and other common behaviors such as serialization and deserialization. Unlike external APIs that are exposed to the user, as mentioned above, caching APIs are provided for use by the caching system.

一実施形態に従うと、キャッシングAPIは、外部APIのユーザによって取得されるキャッシュを表わし得るキャッシュオブジェクト223を含み得る。このキャッシュは、キャッシュ関連の動作をすべて提供することができ、外部APIからキャッシング動作を受取ることができる。キャッシュは、たとえば、構成ファイルの「tdc.cache」プロパテ
ィによって指定されるキャッシュ名によって識別され得る。
According to one embodiment, the caching API may include a cache object 223 that may represent a cache acquired by a user of the external API. This cache can provide all cache-related actions and can receive caching actions from an external API. The cache can be identified, for example, by the cache name specified by the "tdc.cache" property of the configuration file.

図2に示されるように、キャッシュオブジェクトは、キャッシュキーオブジェクト225およびキャッシュ値オブジェクト227に関連付けることができる。キャッシュキーオブジェクトは、キャッシュのためのキーを生成および検索するための方法を含み得るとともに、キャッシュ値オブジェクトは、シリアライゼーションインターフェイスを含み得る。 As shown in FIG. 2, the cache object can be associated with the cache key object 225 and the cache value object 227. A cache key object can include a method for generating and retrieving a key for a cache, and a cache value object can include a serialization interface.

一実施形態に従うと、キャッシングプロバイダ229は、構成ファイルにおいて、プロパティcache.providerによって指定されるように、プロバイダ名によって識別される1組のキャッシング動作を定義することができる。プロセスレベルコンテキスト(TUXP)において維持されるグローバルなキャッシュプロバイダコンテナ230は、すべてのキャッシングプロバイダを暗黙的に維持することができる。キャッシュマネージャ224は、トランザクション処理環境においてキャッシュを管理するために用いることができる。キャッシュマネージャは、ユーザが直接キャッシュを作成するべき場合に暗黙的に作成することができるものであるが、単一のキャッシングプロバイダに関連付けることができる。キャッシュマネージャが作成されたとき、キャッシングプロバイダが存在していなければ、関連付けられたキャッシングプロバイダを内部に作成することができる。グローバルなキャッシュマネージャコンテナ228は、スレッド内で暗黙的に作成されたマネージャを管理するためにスレッドレベル・コンテキスト(TUXT)において維持することができる。 According to one embodiment, the caching provider 229 can define a set of caching behaviors identified by the provider name in the configuration file, as specified by the property cache.provider. The global cache provider container 230 maintained in the process level context (TUXP) can implicitly maintain all caching providers. The cache manager 224 can be used to manage the cache in a transaction processing environment. A cache manager can be implicitly created when the user should create the cache directly, but can be associated with a single caching provider. When the cache manager is created, if the caching provider does not exist, the associated caching provider can be created internally. The global cache manager container 228 can be maintained in a thread-level context (TUXT) to manage managers implicitly created within a thread.

図3は、一実施形態に従ったキャッシングAPIの詳細なクラス図を示す。
図4は、一実施形態に従った、トランザクション処理環境において使用される分散型キャッシングを提供するための方法を示す。
FIG. 3 shows a detailed class diagram of the caching API according to one embodiment.
FIG. 4 shows a method for providing distributed caching used in a transaction processing environment according to one embodiment.

図4に示されるように、ステップ411において、分散型キャッシングシステムは、ト
ランザクション処理環境において提供することができる。分散型キャッシングシステムは、キャッシング・クライアントからキャッシング要件を受取るためのBDC層と、共通セットのキャッシングインターフェイスを提供するためのCDC層と、共通セットのキャッシングインターフェイスのインプリメンテーションを提供するためのIDC層と、実際のキャッシングプロバイダを提供するためのDTV層とを含み得る。
As shown in FIG. 4, in step 411, the distributed caching system can be provided in a transaction processing environment. A distributed caching system is a BDC layer for receiving caching requirements from caching clients, a CDC layer for providing a common set of caching interfaces, and an IDC layer for providing an implementation of a common set of caching interfaces. And a DTV layer for providing an actual caching provider.

ステップ413において、分散型キャッシングシステムのBDC層は、キャッシング・クライアントからキャッシング要求を受取ることができる。キャッシング要求は、BDC層によってエクスポーズされるAPIを用いて開始することができる。 At step 413, the BDC layer of the distributed caching system can receive caching requests from caching clients. The caching request can be initiated using the API exposed by the BDC layer.

ステップ415において、BDC層はCDC層にキャッシング要求を転送することができる。キャッシング要求に関連付けられた型付きバッファは、BDC層において定義されるコールバック機能を用いて、共通のデータ構造に変換することができる。 At step 415, the BDC layer can transfer the caching request to the CDC layer. The typed buffer associated with the caching request can be transformed into a common data structure using the callback function defined in the BDC layer.

ステップ417において、CDC層は、インプリメンテーション層から共通セットのキャッシングインターフェイスの特定のインプリメンテーションをロードし、特定のインプリメンテーションを用いてキャッシング動作を実行することができる。 At step 417, the CDC layer can load a particular implementation of a common set of caching interfaces from the implementation layer and perform caching operations with that particular implementation.

シリアライゼーションサポート
上述のとおり、CDC層は、型付きバッファ上でシリアライゼーション動作/デシリアライゼーション動作を呼出すために、コールバック機能のための登録機能を定義することができる。
Serialization Support As mentioned above, the CDC layer can define a registration function for the callback function to call the serialization / deserialization operation on the typed buffer.

一実施形態に従うと、型付きバッファまたは別のデータタイプは、登録機能を用いて、シリアライゼーション・ハンドラ/デシリアライゼーション・ハンドラに登録される必要がある。登録機能の例は以下のとおりであり得る。 According to one embodiment, the typed buffer or another data type needs to be registered with the serialization handler / deserialization handler using the registration function. An example of a registration function could be:

Figure 0006902580
Figure 0006902580

上述の登録機能においては、シリアライゼーションコールバック機能(cb1)およびデ
シリアライゼーション機能(cb2)が登録される。これらのコールバック機能は、上述の
とおり、BDC層において定義することができ、以下のリスト3に例示することができる。
In the above-mentioned registration function, the serialization callback function (cb1) and the deserialization function (cb2) are registered. These callback functions can be defined in the BDC layer as described above and can be illustrated in Listing 3 below.

Figure 0006902580
Figure 0006902580

リスト3に示されるように、登録された型付きバッファまたは別のユーザ定義型データタイプはシリアライズされたストリームに変換され、キャッシュに格納され得る。その後
、シリアライズされたストリームは、キャッシュから検索された後、変換されてユーザ定義型データバッファに戻され得る。
As shown in Listing 3, a registered typed buffer or another user-defined type data type can be converted to a serialized stream and stored in the cache. The serialized stream can then be retrieved from the cache and then converted back into a user-defined data buffer.

分散型キャッシングシステムにおいて使用される型付きバッファを含むさまざまなデータタイプをサポートするために、これらのデータタイプのシリアライズされたストリームを格納するための共通のデータ構造を提供することができる。 To support a variety of data types, including typed buffers used in distributed caching systems, it is possible to provide a common data structure for storing serialized streams of these data types.

一実施形態に従うと、分散型キャッシングシステムによって使用されるデータシリアライゼーションをサポートするためのシステムおよび方法がこの明細書中に記載される。データシリアライゼーションシステムは、複数のデータタイプのシリアライズされたストリーム/バイトを格納するために用いることができる共通のデータ構造を含み得る。データ構造は、キャッシュセッターのアーキテクチャを記述する情報を含むヘッダを含み得る。異なるアーキテクチャ上で使用するために、キャッシュされたデータが検索される場合、ヘッダ内のアーキテクチャ情報を用いて、この異なるアーキテクチャ上で使用できるようにデータを変換することができる。キャッシュされたデータが同じアーキテクチャ上で検索される場合、キャッシュされたデータは、変換されずに用いることができる。データ構造は、付加的に、メモリを効率的に使用できるようにするために可変長をもつボディ、後方互換性についてのバージョン情報、および、拡張用のオプション特徴のためのフィールドを含み得る。 According to one embodiment, systems and methods for supporting data serialization used by distributed caching systems are described herein. A data serialization system may include a common data structure that can be used to store serialized streams / bytes of multiple data types. The data structure may include a header that contains information that describes the cache setter's architecture. When cached data is retrieved for use on a different architecture, the architecture information in the header can be used to transform the data for use on this different architecture. If the cached data is retrieved on the same architecture, the cached data can be used unconverted. The data structure may additionally include a body with variable length to allow efficient use of memory, version information about backward compatibility, and fields for optional features for expansion.

図5は、一実施形態に従った例示的な型付きバッファを示す。
図5に示されるように、型付きバッファ(たとえば、Tuxedo型バッファ)511は、フレキシブル・メッセージ・ヘッダ(flexible message header:FML)513、
およびユーザ型付きコンテナモジュール(user typed container module:TCM)51
7を含み得る。TCMはさらに、型付きコンテナヘッダー(typed container header:TCH)519および型付きコンテナボディ(typed container body:TCB)521を含み得る。TCBはT_BUFFER523およびユーザデータ529を含み得る。T_BUFFERは、型付きバッファのタイプ525およびサブタイプ527を格納するために用いることができる。型付きバッファは、他のバッファに格納することができるいくつかの非ユーザTCMを有し得る。
FIG. 5 shows an exemplary typed buffer according to one embodiment.
As shown in FIG. 5, the typed buffer (eg, Tuxedo type buffer) 511 is a flexible message header (FML) 513,
And user typed container module (TCM) 51
7 may be included. The TCM may further include a typed container header (TCH) 519 and a typed container body (TCB) 521. The TCB may include T_BUFFER523 and user data 529. T_BUFFER can be used to store type 525 and subtype 527 typed buffers. A typed buffer may have several non-user TCMs that can be stored in other buffers.

図6は、一実施形態に従った、分散型キャッシングシステムによって使用されるデータシリアライゼーションをサポートするためのシステムを示す。 FIG. 6 shows a system for supporting data serialization used by a distributed caching system according to one embodiment.

図6に示されるように、データ構造はCDC層によってサポートされる共通の型付きバッファ133であってもよい。データ構造はヘッダ611およびボディ613を含み得る。ヘッダは、4バイトで位置合わせされる必要があり、複数のフィールド、たとえば、マジックフィールド615、メジャーバージョンフィールド617、マイナーバージョンフィールド618、長さフィールド619、vdataフィールド622、exlenフィールド623、タイプフィールド625、およびフラグフィールド621を含み得る。 As shown in FIG. 6, the data structure may be a common typed buffer 133 supported by the CDC layer. The data structure may include header 611 and body 613. The header must be aligned with 4 bytes and multiple fields, such as magic field 615, major version field 617, minor version field 618, length field 619, vdata field 622, exlen field 623, type field 625. , And the flag field 621 may be included.

一実施形態に従うと、ボディは、ボディのサイズを示すための長さのフィールド629と、ソース型付きバッファのタイプ631およびサブタイプ633を格納するために用いられるT_Bufferのフィールド626と、ユーザデータフィールド635とを含み得る。 According to one embodiment, the body has a length field 629 to indicate the size of the body, a T_Buffer field 626 used to store the source typed buffer types 631 and subtype 633, and a user data field. 635 and may be included.

一実施形態に従うと、「マジック」のフィールドは、ヘッダを区別するために用いられるcharであり得るとともに、長さのフィールドは、ヘッダのサイズを示し得る。フラグのフィールドは、メジャーバージョンのフィールドにおける状態を示し得るかまたはオプション特徴を制御し得る。メジャーバージョンのフィールドは、データ構造における構造の
変更を示すことができる。たとえば、新しいフィールド/メンバが追加もしくは削除されるか、または、フィールドの意味が変更される。マイナーバージョンのフィールドは、メジャーバージョン内の変更を示すために用いることができる。たとえば、新しいビット・フラグがフラグのフィールドに投入される。
According to one embodiment, the "magic" field can be the char used to distinguish the header, and the length field can indicate the size of the header. The flag field can indicate the state in the major version of the field or control optional features. Major version fields can indicate structural changes in the data structure. For example, a new field / member is added or removed, or the meaning of a field is changed. Minor version fields can be used to indicate changes within the major version. For example, a new bit flag is populated in the flag field.

一実施形態に従うと、exlenのフィールドは、一般的にはヘッダに含まれないであろう
いずれの余分なヘッダデータ(たとえば、オプションの特徴)をも記述し得る。「exlen
」がゼロでなければ、プレースホルダ「vdata」から始まる最初の「exlen」*4バイトが
ヘッダデータの一部になり得る。余分なヘッダデータは、さまざまなフィールドを有し得る。各々のフィールドは、4バイトで位置合わせされたアドレスから始まり得るとともに、そのタイプを示すunsigned shortとしてfirst shortを用い、フィールドのデータの長
さ(バイト)を示すunsigned shortとしてsecond shortを用い得るとともに、シリアライズされ得る。
According to one embodiment, the exlen field may describe any extra header data (eg, optional features) that would generally not be included in the header. "Exlen
If "" is not zero, the first "exlen" * 4 bytes starting with the placeholder "vdata" can be part of the header data. The extra header data can have various fields. Each field can start with a 4-byte aligned address, use first short as the unsigned short to indicate its type, and use second short as the unsigned short to indicate the length (bytes) of the field's data. , Can be serialized.

一実施形態に従うと、vdataのフィールドは、余分なヘッダデータおよびボディを含む
可変データを示すためのプレースホルダであり得る。ヘッダのうち最初の4バイトは、他の用途のために変更される可能性はなく、ヘッダにおけるメンバは、ビッグエンディアンを用いることができる(vdataは含まれていない)。ヘッダのサイズは可変データを含ん
でおらず、そのため、長さのフィールドに影響を与えることはない。
According to one embodiment, the vdata field can be a placeholder to indicate variable data, including extra header data and body. The first 4 bytes of the header are not subject to modification for other uses, and the members in the header can use big endian (vdata is not included). The size of the header does not contain variable data and therefore does not affect the length field.

一実施形態に従うと、メジャーバージョン、長さおよびフラグのそれぞれのフィールドは、メジャーバージョン間でのプロトコル互換性をサポートするために用いることができる。加えて、フラグのフィールドは、符号化されていないデータ、符号化されたデータおよび自己記述型データのうちの1つであり得るデータの状態を示すことができる。 According to one embodiment, the major version, length and flag fields can be used to support protocol compatibility between major versions. In addition, the flag field can indicate the state of the data, which can be one of unencoded data, encoded data and self-descriptive data.

一実施形態に従うと、データが符号化されていない場合、シリアライゼーション中にどの動作も実行されず、ボディは、型付きバッファにおける元のユーザTCMと同じであり得る。キャッシュセッター(たとえば、キャッシュにデータを格納するアプリケーション)と同じアーキテクチャ(たとえば、同じ文字符号化または同じエンディアン)のマシンに存在するキャッシュゲッター(たとえば、キャッシュされたデータを検索するアプリケーション)は、キャッシュされたデータを検索して用いることができる。 According to one embodiment, if the data is unencoded, no action is taken during serialization and the body can be the same as the original user TCM in the typed buffer. A cache getter (for example, an application that retrieves cached data) that resides on a machine with the same architecture (for example, the same character encoding or the same endian) as the cache setter (for example, an application that stores data in the cache) is cached. Data can be searched and used.

一実施形態に従うと、データが符号化されると、型付きバッファにおける元のユーザTCMが特定の符号化機構を用いてシリアライズされるため、キャッシュゲッターがデータをデシリアライズするために適切な対応機構を用いていれば、如何なるプラットフォーム上のキャッシュゲッターでもデータを正確に取得することができるようになる。 According to one embodiment, when the data is coded, the original user TCM in the typed buffer is serialized using a particular coding mechanism, so the appropriate corresponding mechanism for the cache getter to deserialize the data. Will allow cache getters on any platform to retrieve data accurately.

一実施形態に従うと、この明細書中に記載されるデータ構造は「自己記述型」モードまたは状態を提供することができ、これにより、データ構造のボディを、型付きバッファにおいて、たとえば、「符号化されていない」状態で、元のユーザTCMと同じ状態にすることが可能になる。さらに、キャッシュセッターの元のアーキテクチャについての追加情報は、データ構造のヘッダに含めることができる。異なるアーキテクチャに位置するキャッシュゲッターがキャッシュされたデータを入手する場合、追加情報を用いて、異なるアーキテクチャにおいて使用できるようにデータを変換することができる。キャッシュゲッターがキャッシュセッターと同じアーキテクチャに位置する場合、データは、変換されずに直接用いられ得る。 According to one embodiment, the data structures described herein can provide a "self-describing" mode or state, which causes the body of the data structure to be, for example, "coded" in a typed buffer. It is possible to make it the same state as the original user TCM in the state of "not being converted". In addition, additional information about the cache setter's original architecture can be included in the header of the data structure. When cache getters located in different architectures obtain cached data, additional information can be used to transform the data for use in different architectures. If the cache getter is located on the same architecture as the cache setter, the data can be used directly without conversion.

一実施形態に従うと、データ構造は依然として「符号化された」モードをサポートすることができ、このため、Tuxedo符号化アルゴリズムをサポートする他のプロダクトとデータを共有することができるようになる。シナリオの例として、Tuxedoアプリ
ケーションがキャッシュセッターとして機能するとともに、JATMIパッケージを用いるWeblogicアプリケーションがキャッシュゲッターとして機能する例を挙げることができる。
According to one embodiment, the data structure can still support the "encoded" mode, which allows the data to be shared with other products that support the Tuxedo coding algorithm. As an example of the scenario, a Tuxedo application functions as a cache setter, and a WebLogic application using the JATMI package functions as a cache getter.

一実施形態に従うと、アーキテクチャは、以下のうち1つ以上によって異種となり得る。すなわち、1)異なるエンディアン(バイトオーダー、リトルエンディアンまたはビッグエンディアン);2)異なる文字集合(ASCII、EBCDICなど);および、3)異なるサ
イズを有するタイプ(たとえば、長さが4バイトまたは8バイトであり得る)。
According to one embodiment, the architecture can be heterogeneous by one or more of the following: That is, 1) different endian (byte order, little endian or big endian); 2) different character sets (ASCII, EBCDIC, etc.); and 3) types with different sizes (eg, 4 or 8 bytes in length). possible).

一実施形態に従うと、「自己記述」状態が用いられる場合、構造上の相違についての情報を、データ構造のヘッダにおいて指定することができる。異種環境においては、「自己記述」モードは、符号化モードと比べて2つの利点を有する。すなわち、1)キャッシュセッターについて、「符号化されていない(unencoded)」場合と同じ性能;および、2
)ゲッターがキャッシュゲッターと同じアーキテクチャに位置する場合、キャッシュゲッターについて、「符号化されていない(unencoded)」場合と同じ性能を有する。
According to one embodiment, when the "self-describing" state is used, information about structural differences can be specified in the header of the data structure. In a heterogeneous environment, the "self-describing" mode has two advantages over the coding mode. That is, 1) for the cache setter, the same performance as for the "unencoded"; and 2
) If the getter is located on the same architecture as the cache getter, it has the same performance as if it were "unencoded" for the cache getter.

具体例として、キャッシュセッターはデータ構造を用いて、シリアライズされたバイトをそれら自体のフォーマット(たとえば、ビッグエンディアンまたはリトルエンディアン)でキャッシュに格納することができ、かつ、データがどの「エンディアン」にあるかを指定する追加情報を格納することができる。キャッシュゲッターは、データを検索すると、追加情報を用いて、データをローカルフォーマットに変換することができる。 As a specific example, cache setters can use data structures to store serialized bytes in their own format (eg, big endian or little endian), and in which "endian" the data is. Can store additional information that specifies. When the cache getter retrieves the data, it can use additional information to convert the data to a local format.

一実施形態に従うと、異種環境においては、ライブラリは各々のマシンに提供することができ、このため、受取るマシンは、キャッシュセッターのマシンのアーキテクチャにかかわらず、ライブラリを用いて、キャッシュされたデータを変換することができる。 According to one embodiment, in a heterogeneous environment, the library can be provided to each machine, so that the receiving machine will use the library to receive cached data regardless of the architecture of the cache setter's machine. Can be converted.

そのため、データ構造は、キャッシングシステムの性能を向上させることができ、Tuxedo型付きバッファを含むさまざまなデータタイプのシリアライズされたバイトを格納することができる。 As such, the data structure can improve the performance of the caching system and can store serialized bytes of various data types, including Tuxedo typed buffers.

一実施形態に従うと、型付きバッファのユーザTCMをシリアライズするために2つのステップを実行することができる。第1のステップは表示することであり、第2のステップは符号化することである。上述のとおり、シリアライゼーションおよびデシリアライゼーションのための機能はBDC層におけるコールバック機能において実現される。 According to one embodiment, two steps can be performed to serialize the user TCM in the typed buffer. The first step is to display and the second step is to code. As mentioned above, the functions for serialization and deserialization are realized in the callback function in the BDC layer.

一実施形態に従うと、型付きバッファのユーザTCMをシリアライズすることができるものの、不必要なデータを減らすために型付きバッファのユーザデータおよびT−バッファだけがキャッシュされる必要があり、型付きバッファの残りはキャッシュされる必要がない。 According to one embodiment, the user TCM in the typed buffer can be serialized, but only the user data in the typed buffer and the T-buffer need to be cached to reduce unnecessary data, and the typed buffer. The rest of does not need to be cached.

リスト4は、一実施形態に従った型付きバッファの例示的なヘッダを示す。 Listing 4 shows an exemplary header of a typed buffer according to one embodiment.

Figure 0006902580
Figure 0006902580

図7は、一実施形態に従った、分散型キャッシングシステムによって使用されるデータシリアライゼーションをサポートするための方法を示す。 FIG. 7 shows a method for supporting data serialization used by a distributed caching system according to one embodiment.

図7に示されるように、ステップ711において、分散型キャッシングシステムがトランザクション処理環境において提供され得る。 As shown in FIG. 7, in step 711, a distributed caching system may be provided in a transaction processing environment.

ステップ713において、複数のデータタイプのシリアライズされたストリーム/バイトを格納するために用いられるデータ構造が提供され得る。データ構造は、キャッシュ設定アプリケーションを実行するシステムアーキテクチャについての情報を含むヘッダを含む。 In step 713, a data structure used to store serialized streams / bytes of multiple data types may be provided. The data structure contains a header that contains information about the system architecture that runs the cache setup application.

ステップ715において、異なるシステムアーキテクチャ上で実行されるキャッシュ入手アプリケーションはキャッシュされたデータを検索し、ソースシステムアーキテクチャについての情報を用いて、異なるアーキテクチャ上で使用できるようにデータを変換する。 In step 715, a cache-acquiring application running on a different system architecture looks up the cached data and uses information about the source system architecture to transform the data for use on different architectures.

Coherenceとの統合
一実施形態に従うと、キャッシングプロバイダ(たとえば、CoherenceまたはCloudStore)は構成によってキャッシングプロバイダとして用いることができる。
Integration with Coherence According to one embodiment, a caching provider (eg, Coherence or CloudStore) can be used as a caching provider by configuration.

一実施形態に従うと、分散型インメモリ・データグリッド(たとえば、Coherence)を
、キャッシングプロバイダとしての分散型キャッシングシステムに統合するためのシステムおよび方法がこの明細書中に記載される。分散型キャッシングシステムにおけるプロキシサーバは分散型インメモリ・データグリッドに対するクライアントとして機能し得るとともに、IDCクライアントから転送されたキャッシング要求を受取り得る。始動時に、プロキシサーバは、キャッシング・システム・キャッシュを定義する構成ファイルと、分散型インメモリ・データグリッドキャッシュにキャッシュするマップとをロードすることができ、キャッシング・システム・キャッシュの名前を用いて、サービスをアドバタイズすることができる。要求されたサービスを指定するキャッシング要求をキャッシング・クライアントから受取ると、プロキシサーバは、要求されたサービスに基づいてアクセスするために、分散型インメモリ・データグリッドにおける対応するキャッシュを決定することができる。
According to one embodiment, systems and methods for integrating a distributed in-memory data grid (eg, Coherence) into a distributed caching system as a caching provider are described herein. A proxy server in a distributed caching system can act as a client for a distributed in-memory data grid and can receive caching requests forwarded from IDC clients. At startup, the proxy server can load the configuration file that defines the caching system cache and the map that it caches in the distributed in-memory data grid cache, using the name of the caching system cache. You can advertise the service. Upon receiving a caching request from a caching client that specifies the requested service, the proxy server can determine the corresponding cache in the distributed in-memory data grid for access based on the requested service. ..

一実施形態に従うと、キャッシュされるべきデータはシリアライズされてから、プロキシサーバに転送することができ、このプロキシサーバは、シリアライズされたデータを対応するインメモリ・データグリッドキャッシュに格納することができる。キャッシュされたデータが、シリアライズされたバイトとして対応するインメモリ・データグリッドキャッシュから検索されて、キャッシング・クライアントに送り返されると、キャッシング・クライアントは、データを元のデータにデシリアライズすることができる。 According to one embodiment, the data to be cached can be serialized and then transferred to a proxy server, which can store the serialized data in the corresponding in-memory data grid cache. .. When the cached data is retrieved from the corresponding in-memory data grid cache as serialized bytes and sent back to the caching client, the caching client can deserialize the data back to the original data.

図8は、一実施形態に従った、キャッシングプロバイダとしての分散型キャッシングシステムに分散型インメモリ・データグリッドを統合するためのシステムを示す。 FIG. 8 shows a system for integrating a distributed in-memory data grid into a distributed caching system as a caching provider according to one embodiment.

図8に示されるように、複数のコンピュータノード(たとえば、ノードA805およびノードB807)は、トランザクション処理環境(たとえば、Tuxedoサーバ環境)におけるクラスタまたはドメインにおいて機能するように構成することができる。各々のコンピュータノードはアプリケーションサーバ(たとえば、アプリケーションサーバA811およびアプリケーションサーバB813)を含み得る。 As shown in FIG. 8, a plurality of computer nodes (eg, node A805 and node B807) can be configured to function in a cluster or domain in a transaction processing environment (eg, Tuxedo server environment). Each computer node may include an application server (eg, application server A811 and application server B813).

図8にさらに示されるように、分散型インメモリ・データグリッドクラスタ(たとえば、Coherence)831は、複数のコンピュータノード上でサポートされ得る。分散型イン
メモリ・データグリッドは、複数のコンピュータノードにわたって分散された複数のメンバを含み得る。たとえば、CoherenceメンバA819およびCoherenceメンバC823は、コンピュータノードA上に存在し得るとともに、CoherenceメンバB821およびCoherenceメンバD825はコンピュータノードB上に存在し得る。
As further shown in FIG. 8, a distributed in-memory data grid cluster (eg, Coherence) 831 may be supported on multiple computer nodes. A distributed in-memory data grid can contain multiple members distributed across multiple computer nodes. For example, Coherence member A819 and Coherence member C823 can reside on computer node A, while Coherence member B821 and Coherence member D825 can reside on computer node B.

一実施形態に従うと、1つ以上のプロキシサーバは、ロードバランシングおよび性能向上のために各々のコンピュータノード上に設けることができる。たとえば、Coherenceの
ためのプロキシサーバ815および817は、それぞれ、コンピュータノードAおよびコンピュータノードB上に設けられる。
According to one embodiment, one or more proxy servers can be provided on each computer node for load balancing and performance improvement. For example, proxy servers 815 and 817 for Coherence are provided on computer node A and computer node B, respectively.

一実施形態に従うと、各々のプロキシサーバは、Tuxedo Java(登録商標)サーバによって実現することができ、分散型キャッシングシステムにおいてサーバとして機能し得る。キャッシング・クライアント(たとえば、Tuxedoクライアントまたはサーバ)からのキャッシング要求は、トランザクション手順を呼出すことによって各々のプロキシサーバに転送され得る。各々のプロキシは、その後、1つ以上のキャッシング要求を分散型インメモリ・データグリッドに転送して、対応する応答を受取ることができる。 According to one embodiment, each proxy server can be implemented by a Tuxedo Java® server and can function as a server in a distributed caching system. Caching requests from caching clients (eg, Tuxedo clients or servers) can be forwarded to their respective proxy servers by invoking transaction procedures. Each proxy can then forward one or more caching requests to a distributed in-memory data grid to receive the corresponding response.

一実施形態に従うと、各々のプロキシサーバは、分散型インメモリ・データグリッドに対するJava(登録商標)クライアントとして、直接、機能し得る。構成ファイルは、分散型インメモリ・データグリッドに如何にアクセスするかを指定することができ、たとえば、1つ以上の分散されたキャッシュまたは複製されたキャッシュにアクセスするべきかどうかを指定することができる。読取りのアクセスが高く、および書込みのアクセスが低い場合、複製されたキャッシュをアクセス用に構成することができる。 According to one embodiment, each proxy server can act directly as a Java® client for a distributed in-memory data grid. The configuration file can specify how to access the distributed in-memory data grid, for example, whether to access one or more distributed or replicated caches. it can. If read access is high and write access is low, a replicated cache can be configured for access.

図9は、一実施形態に従った、キャッシングプロバイダとしての分散型キャッシングシステムに分散型インメモリ・データグリッドを統合するためのシステムをさらに示す。 FIG. 9 further shows a system for integrating a distributed in-memory data grid into a distributed caching system as a caching provider according to one embodiment.

図9に示されるように、プロキシサーバ930は、Coherenceのためのキャッシングプ
ロバイダスイッチインプリメンテーション943からトランザクション手順の呼出し929を受取るために、CDC層に存在し得る。トランザクション手順の呼出しは、キャッシング・クライアントから分散型キャッシングシステムへのキャッシング要求を受取った後
、キャッシングプロバイダ・スイッチ・インプリメンテーションをホストしているサーバによって生成することができる。トランザクション手順の呼出しは、共通の型付きバッファから(928)のシリアライズされたバイトを含み得る。
As shown in FIG. 9, the proxy server 930 may be present at the CDC layer to receive the transaction procedure call 929 from the caching provider switch implementation 943 for Coherence. Transaction procedure calls can be generated by the server hosting the caching provider switch implementation after receiving a caching request from the caching client to the distributed caching system. The transaction procedure call may include (928) serialized bytes from a common typed buffer.

一実施形態に従うと、Coherenceのためのキャッシングプロバイダ・インプリメンテー
ションは、IDC層からCDC層に提供されるIDCクライアントであり得る。Coherence932はデフォルトのキャッシングプロバイダとなるように構成することができる。こ
のため、プロバイダスイッチのインプリメンテーションと、プロバイダスイッチインプリメンテーションをロードするのに用いられる方法とが、Tuxedoダイナミックライブラリlibtuxおよびlibwsに統合され得る。この場合、前者はTuxedoサーバおよび固
有のクライアントによって使用され得るとともに、後者はTuxedo/WSクライアントのために使用され得る。
According to one embodiment, the caching provider implementation for Coherence can be an IDC client provided from the IDC layer to the CDC layer. Coherence 932 can be configured to be the default caching provider. Thus, the provider switch implementation and the method used to load the provider switch implementation can be integrated into the Tuxedo dynamic libraries libtux and libws. In this case, the former can be used by the Tuxedo server and its own client, while the latter can be used for the Tuxedo / WS client.

一実施形態に従うと、Coherenceに基づいたプロバイダスイッチ・インプリメンテーシ
ョンまたはIDCクライアントは、tpcallによってプロキシサーバにキャッシング要求を転送することができる。不必要なコピーを減じるようにとの要求のタイプに基づいて、さまざまなバッファタイプを用いることができる。表3は、キャッシング要求のタイプに基づいて用いることができる型付きバッファのサンプルリストを示す。
According to one embodiment, a Coherence-based provider switch implementation or IDC client can forward a caching request to a proxy server via tpcall. Various buffer types can be used based on the type of request to reduce unnecessary copies. Table 3 shows a sample list of typed buffers that can be used based on the type of caching request.

Figure 0006902580
Figure 0006902580

一実施形態に従うと、プロキシサーバは、始動されると、構成ファイルから構成プロパティをロードすることができる。この場合、構成プロパティが定義することができる提供されたTuxedoキャッシュは、分散型キャッシングシステムにおける、構成された論理キャッシュまたは物理キャッシュであり得る。プロキシサーバは、Tuxedoキャッシュ名を用いて、サービスをアドバタイズすることができる。構成ファイルからのプロパティのリストの例を以下のリスト5に示すことができる。 According to one embodiment, the proxy server can load configuration properties from the configuration file when it is started. In this case, the provided Tuxedo cache for which configuration properties can be defined can be a configured logical or physical cache in a distributed caching system. The proxy server can advertise the service using the Tuxedo cache name. An example of a list of properties from the configuration file can be shown in Listing 5 below.

Figure 0006902580
Figure 0006902580

一実施形態に従うと、上述のプロパティであれば、プロキシサーバは、「tc」という名のTuxedoサービスをアドバタイズすることができる。IDCクライアントは、tpcallによってプロキシサーバがアドバタイズしたサービス「tc」に対し、キャッシュ「tc」についての要求を転送することができる。リスト3に示されるように、プロパティは、分散型キャッシングシステムにおいて構成されたキャッシュについての、マップされたCoherenceキャッシュを指定することができる。キャッシング・クライアントがコマンド「getcache」によってキャッシュを取得する必要がある場合、プロキシサーバは、このキャッ
シュのために必要なすべてのプロパティ(たとえば、プロパティoptions.encoding)をキャッシング・クライアントに送り返すことができる。
According to one embodiment, the proxy server can advertise a Tuxedo service named "tc" with the above properties. The IDC client can forward the request for the cache "tc" to the service "tc" advertised by the proxy server by tpcall. As shown in Listing 3, the property can specify a mapped Coherence cache for the cache configured in the distributed caching system. If the caching client needs to get the cache with the command "getcache", the proxy server can send back to the caching client all the properties needed for this cache (for example, the property options.encoding).

一実施形態に従うと、要求されたサービスの名前が、構成ファイルによってCoherence
キャッシュにマッピングされたTuxedoキャッシュの名前と同じであり得る場合、プロキシサーバは、要求されたサービスに基づいてCoherenceキャッシュ名を決定すること
ができる。
According to one embodiment, the name of the requested service is Coherence by the configuration file.
The proxy server can determine the Coherence cache name based on the requested service if it can be the same as the name of the Tuxedo cache mapped to the cache.

一実施形態に従うと、プロキシサーバはCoherenceのクライアントとして機能すること
ができる。プロキシサーバは、プロキシサーバによって用いられるCoherence構成ファイ
ルによって定義されるように、固有のクライアント(Coherenceクラスタのメンバ)また
はリモートクライアントであり得る。
According to one embodiment, the proxy server can act as a client of Coherence. The proxy server can be a unique client (a member of a Coherence cluster) or a remote client, as defined by the Coherence configuration file used by the proxy server.

一実施形態に従うと、Coherenceキャッシュは、アプリケーションの要件によって決定
されるように、分散型キャッシュ、ローカルキャッシュまたは他の任意のタイプのキャッシュであり得る。
According to one embodiment, the Coherence cache can be a distributed cache, a local cache or any other type of cache, as determined by the requirements of the application.

一実施形態に従うと、キャッシュにデータを格納するために、たとえば「入れる(put
)」というコマンドがアプリケーションにおいて呼出されると、データはシリアライズされてからプロキシサーバに転送され得る。プロキシサーバがバイト[]のタイプであり得るシリアライズされたデータを受取ると、プロキシサーバはシリアライズされたデータをCoherenceに格納することができる。
According to one embodiment, for example, "put" to store data in the cache.
When the command ")" is called in the application, the data can be serialized and then transferred to the proxy server. When the proxy server receives serialized data that can be of the type byte [], the proxy server can store the serialized data in Coherence.

同様に、データをキャッシュから検索するために、たとえば「入手する(get)」とい
うコマンドがアプリケーションにおいて呼出されると、キャッシュされたデータは、バイト[]のタイプを備えたCoherenceから検索されて、さらにキャッシング・クライアント
に送り返され、このキャッシング・クライアントが、データをその元のフォーマットにデシリアライズすることができる。
Similarly, when a command such as "get" is called in an application to retrieve data from the cache, the cached data is retrieved from the Coherence of type []. It is then sent back to the caching client, which can deserialize the data into its original format.

図10は、一実施形態に従った、キャッシングプロバイダとしての分散型キャッシングシステムに分散型インメモリ・データグリッドを統合するための方法を示す。 FIG. 10 shows a method for integrating a distributed in-memory data grid into a distributed caching system as a caching provider according to one embodiment.

図10に示されるように、ステップ1011において、プロキシサーバは、トランザクション処理環境において分散型キャッシングシステムに提供することができる。プロキシサーバは、キャッシング・システム・キャッシュを定義する構成ファイルと、分散型インメモリ・データグリッドキャッシュにキャッシュするマップとをロードし、キャッシング・システム・キャッシュの名前を用いてサービスをアドバタイズすることができる。 As shown in FIG. 10, in step 1011 the proxy server can be provided to the distributed caching system in a transaction processing environment. The proxy server can load the configuration file that defines the caching system cache and the map that it caches in the distributed in-memory data grid cache and advertise the service using the name of the caching system cache. ..

ステップ1013において、プロキシサーバは、キャッシング要求を受取ることができる。キャッシング要求は、分散型キャッシングシステムのIDCクライアントからのトランザクション手順の呼出しの際に転送される。 In step 1013, the proxy server can receive the caching request. The caching request is forwarded when the transaction procedure is called from the IDC client of the distributed caching system.

ステップ1015において、プロキシサーバは、トランザクション手順の呼出しの際に、要求されたサービスに基づいてアクセスするために、分散型インメモリ・データグリッドにおける対応するキャッシュを決定することができる。 At step 1015, the proxy server can determine the corresponding cache in the distributed in-memory data grid to access based on the requested service when invoking the transaction procedure.

サービスキャッシング
上述の分散型キャッシングシステムは以下のキャッシング特徴を提供することができる。すなわち、アクセス回数および更新回数が極めて少なく、キーによって識別されたTuxedoバッファをキャッシュすることができ、複製アクセス、非複製アクセス、ローカルアクセスおよびリモートアクセスを含む調整可能な品質サービスを提供する、というキャッシング特徴を提供することができる。
Service Caching The decentralized caching system described above can provide the following caching features: That is, caching that has very few accesses and updates, can cache the Tuxedo buffer identified by the key, and provides tunable quality services including replication access, non-replication access, local access and remote access. Features can be provided.

一実施形態に従うと、トランザクション処理環境において分散型キャッシングシステムを用いて、サービスから戻された結果をキャッシュするためのシステムおよび方法がこの明細書中に記載される。構成ファイルは、サービスから戻された結果をキャッシュするのにどのキャッシュを用いるべきかと、キャッシュされた結果を識別する際に使用されるキーを如何に生成するかとを記述するエントリを含むキャッシングセクションを含み得る。サービスについての要求がクライアントから受取られると、トランザクション処理環境のアプリケーションサーバコアは、関連するキャッシュされたデータが、構成ファイルを用いて生成されたキーによって識別されるキャッシュに存在しているかどうかを判断することができる。存在している場合、アプリケーションサーバコアは、サービスを呼出す代わりに、キャッシュされたデータを直接戻すことができる。他の場合、アプリケーションサーバコアは、サービスを呼出し、生成されたキーを用いて、構成ファイルによって指定されるキャッシュにデータをキャッシュし、クライアントに結果を戻すことができる。 According to one embodiment, a system and method for caching the results returned from a service using a distributed caching system in a transaction processing environment is described herein. The configuration file contains a caching section that contains an entry that describes which cache should be used to cache the results returned by the service and how to generate the key used to identify the cached results. Can include. When a request for a service is received from a client, the application server core in the transaction processing environment determines if the associated cached data is in the cache identified by the key generated using the configuration file. can do. If present, the application server core can return the cached data directly instead of calling the service. In other cases, the application server core can call the service and use the generated key to cache the data in the cache specified by the configuration file and return the result to the client.

一実施形態に従うと、キャッシュされるべきサービスについて戻された結果は、サービス要求における入力キーワードに基づいた、データベースからの検索結果であり得る。 According to one embodiment, the result returned for the service to be cached can be a search result from the database based on the input keywords in the service request.

サービス(たとえば、Tuxedoサービス)が、或る期間内で特定の要求に応じて、同じ結果を戻すのに比較的長い時間を費やし得る場合、サービスキャッシング特徴により、システム性能を著しく向上させることができる。加えて、このキャッシング特徴は、ユーザが、既存のコードを変更することなく、サービスから戻された結果をキャッシュすることを可能にする。 If a service (eg, a Tuxedo service) can spend a relatively long time returning the same result in response to a particular request over a period of time, the service caching feature can significantly improve system performance. .. In addition, this caching feature allows the user to cache the results returned by the service without modifying existing code.

一実施形態に従うと、構成ファイルは、キャッシュされた結果を識別するために用いら
れるべきキーを如何に生成するかを指定することができる。このような識別用途のキーは、単純な連続ストリング(simple solid string)、サービス名から構成されるストリン
グ、要求データから構成されるストリング、ならびに、サービス名および要求データから構成されるストリング、のうちの1つであり得る。
According to one embodiment, the configuration file can specify how to generate a key that should be used to identify the cached result. The key for such identification is a simple solid string, a string consisting of a service name, a string consisting of request data, and a string consisting of a service name and request data. Can be one of.

一実施形態に従うと、要求データがキーを生成するために用いられるべき場合、要求データ全体またはデータの一部を、要求データを含んでいる型付きバッファに従ってキーの一部として用いることができる。ユーザは以下を用いることができる。 According to one embodiment, if the request data should be used to generate the key, the entire request data or part of the data can be used as part of the key according to the typed buffer containing the request data. The user can use:

1)開始インジケータ/終了インジケータによって識別されるSTRIGN/CARRAYバッファの一部;
2)VIEW/VIEW32バッファのうちの1つのフィールドもしくはいくつかのフィールド;
3)FML/FML32バッファのうちの1つのフィールドもしくはいくつかのフィールド;または、
4)XMLバッファのうちの1つのフィールドもしくはいくつかのフィールド。
1) Part of the STRIGN / CARRAY buffer identified by the start / end indicator;
2) One or several fields in the VIEW / VIEW32 buffer;
3) One or several fields in the FML / FML32 buffer; or
4) One or several fields in the XML buffer.

一実施形態に従うと、トランザクション処理環境においては、FML型バッファなどの型付きバッファは、複数セットの名前値ペアを含み得る。型付きバッファは、クライアントからサーバに要求を送信し、サーバからクライアントに結果を戻すために用いることができる。キャッシュされたサービス結果は、特定のキャッシング要求についての外部からのデータを含み得る複数セットの名前値ペアを含み得る。たとえば、キャッシュされた名前値ペアのうちのいくつかは特定の要求のために必要とされないかもしれないが、但し、これらの名前値ペアは後続のキャッシング要求のために必要とされるかもしれない。 According to one embodiment, in a transaction processing environment, a typed buffer, such as an FML type buffer, may contain multiple sets of name-value pairs. A typed buffer can be used to send a request from the client to the server and return the result from the server to the client. Cached service results can contain multiple sets of name-value pairs that can contain external data for a particular caching request. For example, some of the cached name-value pairs may not be needed for a particular request, but these name-value pairs may be needed for subsequent caching requests. ..

そのため、一実施形態に従うと、要求データから生成されたキーを用いることにより、クライアントアプリケーションが、必要なデータを正確に示し、それらのデータだけを検索することが可能となり、これにより、アクセス時間を減らし、性能を増強させることができる。 Therefore, according to one embodiment, by using the key generated from the request data, the client application can accurately indicate the necessary data and search only those data, thereby reducing the access time. It can be reduced and the performance can be enhanced.

図11は、一実施形態に従った、トランザクション処理環境において分散型キャッシングシステムを用いて、サービスから戻された結果をキャッシュするためのシステムを示す。 FIG. 11 shows a system for caching the results returned from a service using a distributed caching system in a transaction processing environment according to one embodiment.

図11に示されるように、分散型キャッシングシステムは、分散されたかまたは複製された複数のキャッシュ(たとえば、キャッシュA1121およびキャッシュB1123)を含み得るキャッシングプロバイダ1119としてCoherenceを用いるように構成するこ
とができる。
As shown in FIG. 11, a distributed caching system can be configured to use Coherence as a caching provider 1119 which may include multiple distributed or replicated caches (eg, cache A1121 and cache B1123). ..

さらに図示されるように、トランザクション処理環境のための構成ファイル1104は、分散型キャッシングシステムを如何に用いるかを記述するエントリを含み得るサービスキャッシングセクション1107を含み得る。 As further illustrated, the configuration file 1104 for a transaction processing environment may include a service caching section 1107 that may include an entry describing how to use the distributed caching system.

たとえば、キャッシングセクションは、サービスAのためのキャッシュA1110およびサービスBのためのキャッシュB1111によって例示されるように、特定のサービスから戻されたものをキャッシュするためにどのキャッシュを使用すべきかを記述することができる。 For example, the caching section describes which cache should be used to cache what is returned from a particular service, as illustrated by cache A1110 for service A and cache B1111 for service B. be able to.

一実施形態に従うと、セクションにおける追加のエントリは、サービスAのためのキーを生成するための方法1113、およびサービスBのためのキーを生成するための方法1
115によって示されるように、特定のサービスからのキャッシュ済み結果を識別する際に使用すべきキーを如何に生成するかを記述することができる。上述のとおり、キー生成方法は、要求データを含むバッファのタイプに基づいて、キーを生成する際に、要求におけるデータのうちどのフィールドを使用すべきかを定義することができる。
According to one embodiment, additional entries in the section include method 1113 for generating a key for service A, and method 1 for generating a key for service B.
As indicated by 115, it is possible to describe how to generate a key that should be used to identify cached results from a particular service. As mentioned above, the key generation method can define which field of the data in the request should be used when generating the key, based on the type of buffer containing the request data.

図11を参照して、アプリケーションサーバコア(たとえば、Tuxedoコア)1114は、戻された結果をサービス1102からクライアントアプリケーション(たとえば、Tuxedoクライアント)1101に渡すために提供することができる。アプリケーションサーバコアは、複数のサービス(たとえば、サービスA1105およびサービスB1109)を実行することができるアプリケーションサーバA(たとえば、Tuxedoサーバ)1117に関連付けることができる。アプリケーションサーバコアはまた、結果についての特定のサービスを呼出すべきか、またはキャッシュにキャッシュされた結果を用いるべきかどうかを判断する際に使用されるサービスキャッシング論理1128にも関連付けることができる。 With reference to FIG. 11, the application server core (eg, Tuxedo core) 1114 can be provided to pass the returned results from service 1102 to the client application (eg, Tuxedo client) 1101. The application server core can be associated with an application server A (eg, Tuxedo server) 1117 capable of executing multiple services (eg, service A1105 and service B1109). The application server core can also be associated with service caching logic 1128, which is used in determining whether to call a particular service for a result or use a cached result.

具体例として、サービスA1125についての要求がアプリケーションサーバによって受取られると、それに関連付けられたアプリケーションサーバコアは、サービスAのために構成されたキャッシュをチェックして、構成ファイルにおけるサービスについての関連するエントリに従って生成されたキー1127によって識別されるような、関連するキャッシュデータがキャッシュに存在するかどうかを判断することができる。存在する場合、アプリケーションサーバは、サービスAを呼出す代わりに、直接、キャッシュされたデータを戻すことができる。存在しない場合、アプリケーションサーバコアはサービスAを呼出し(1108)、クライアントアプリケーションに結果を戻すことができる。クライアントアプリケーションに結果を転送し返す前に、アプリケーションサーバコアは、生成されたキーを用いるデータを、サービスAによって使用されるように構成されたキャッシュにキャッシュすることができる。 As a specific example, when a request for service A1125 is received by the application server, the application server core associated with it checks the cache configured for service A and follows the relevant entry for the service in the configuration file. It is possible to determine if relevant cached data exists in the cache, as identified by the generated key 1127. If present, the application server can return the cached data directly instead of calling service A. If it does not exist, the application server core can call service A (1108) and return the result to the client application. Before transferring the results back to the client application, the application server core can cache the data with the generated key in a cache configured to be used by service A.

図12は、一実施形態に従った、トランザクション処理環境において分散型キャッシングシステムを用いて、サービスから戻された結果をキャッシュするための方法を示す。 FIG. 12 shows a method for caching the results returned from a service using a distributed caching system in a transaction processing environment according to one embodiment.

図12に示されるように、ステップ1211において、分散型キャッシングシステムは、特定のサービスのために戻された結果をキャッシュするためにどのキャッシュを使用すべきかと、キャッシュされた結果を識別する際に使用されるキーを如何に生成すべきかとを記述しているエントリを備えた構成ファイルを含み得るトランザクション処理環境において提供することができる。 As shown in FIG. 12, in step 1211 the distributed caching system identifies which cache should be used to cache the returned results for a particular service and in identifying the cached results. It can be provided in a transaction processing environment that may contain a configuration file with an entry describing how the key used should be generated.

ステップ1213において、アプリケーションサーバに関連付けられたアプリケーションサーバコアは、サービスについての要求が、サービスをホストしているアプリケーションサーバに対してクライアントアプリケーションから送信されていることを検出することができ、関連するキャッシュされたデータが構成ファイルを用いて生成されたキーによって識別されるキャッシュに存在しているかどうかを判断することができる。 In step 1213, the application server core associated with the application server can detect that a request for the service is being sent from the client application to the application server hosting the service and the associated cache. It is possible to determine whether the generated data exists in the cache identified by the key generated using the configuration file.

テップ1215において、関連するキャッシュされたデータがキャッシュに存在している場合、アプリケーションサーバコアはサービスを呼出す代わりに、キャッシュされたデータを直接戻すことができる。他の場合、アプリケーションサーバコアは、サービスを呼出し、構成ファイルによって指定されたキャッシュに、生成されたキーを用いるデータをキャッシュし、クライアントに結果を戻すことができる。 In Tep 1215, if the associated cached data exists in the cache, the application server core can return the cached data directly instead of calling the service. In other cases, the application server core can call the service, cache the data with the generated key in the cache specified by the configuration file, and return the result to the client.

この発明は、この開示の教示に従ってプログラミングされた1つ以上のプロセッサ、メモリおよび/またはコンピュータ読取り可能記憶媒体を含む、1つ以上の従来の汎用また
は特化型デジタルコンピュータ、コンピューティング装置、マシン、またはマイクロプロセッサを使用して都合よく実現されてもよい。ソフトウェア技術の当業者には明らかであるように、この開示の教示に基づいて、適切なソフトウェアコーディングが、熟練したプログラマによって容易に準備され得る。
The present invention comprises one or more conventional general purpose or specialized digital computers, computing devices, machines, including one or more processors, memories and / or computer readable storage media programmed according to the teachings of this disclosure. Alternatively, it may be conveniently realized using a microprocessor. Appropriate software coding can be easily prepared by a skilled programmer based on the teachings of this disclosure, as will be apparent to those skilled in the art of software technology.

実施形態によっては、本発明は、本発明のプロセスのうちいずれかを実行するためにコンピュータをプログラムするのに使用できる命令が格納された非一時的な記憶媒体または(1つもしくは複数の)コンピュータ読取り可能な媒体であるコンピュータプログラムプロダクトを含む。この記憶媒体は、フロッピー(登録商標)ディスク、光ディスク、DVD、CD−ROM、マイクロドライブ、および光磁気ディスクを含む、任意の種類のディスク、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、フラッシュメモリデバイス、磁気もしくは光カード、ナノシステム(分子メモリICを含む)、または、命令および/もしくはデータを格納するのに適した任意の種類の媒体もしくはデバイスを含み得るものの、これらに限定されない。 In some embodiments, the invention is a non-temporary storage medium or computer (s) that contains instructions that can be used to program a computer to perform any of the processes of the invention. Includes computer program products that are readable media. This storage medium includes any type of disk, ROM, RAM, EPROM, EEPROM, DRAM, VRAM, flash memory, including floppy (registered trademark) disks, optical disks, DVDs, CD-ROMs, microdrives, and magneto-optical disks. It may include, but is not limited to, devices, magnetic or optical cards, nanosystems (including molecular memory ICs), or any type of medium or device suitable for storing instructions and / or data.

本発明のこれまでの記載は例示および説明を目的として提供されている。すべてを網羅するかまたは本発明を開示された形態そのものに限定することは意図されていない。当業者には数多くの変更および変形が明らかであろう。実施形態は、本発明の原理およびその実際の応用を最もうまく説明することによって他の当業者がさまざまな実施形態および意図している特定の用途に適したさまざまな変形を理解できるようにするために、選択され説明されている。本発明の範囲は添付の特許請求の範囲およびそれらの同等例によって規定されるものと意図されている。 Previous descriptions of the present invention are provided for purposes of illustration and description. It is not intended to be exhaustive or limited to the disclosed form itself. Numerous changes and variations will be apparent to those skilled in the art. The embodiments are intended to allow others skilled in the art to understand the various embodiments and the various variations suitable for the particular application intended by best explaining the principles of the invention and their practical applications. Selected and explained in. The scope of the present invention is intended to be defined by the appended claims and their equivalents.

Claims (8)

トランザクション処理環境における分散型キャッシングシステムに分散型インメモリ・データグリッドを統合するためのシステムであって、
1つ以上のマイクロプロセッサを含むコンピュータと、
前記コンピュータ上で実行されるとともに、キャッシング機能を提供する複数の層を含むトランザクション処理環境とを含み、前記複数の層は共通の分散型キャッシング(CDC)層およびインプリメンテーション層を含み、前記システムはさらに、
前記インプリメンテーション層において動作する分散型インメモリ・データグリッドと、
前記CDC層におけるプロキシサーバとを含み、前記プロキシサーバは、前記分散型インメモリ・データグリッドに対するクライアントとして機能し、前記CDC層からのトランザクション手順の呼出しの際にキャッシング要求を受取り、キャッシングに関連付けられたデータを前記分散型インメモリ・データグリッドにおけるキャッシュに格納するかまたは前記キャッシュから検索
前記プロキシサーバは構成ファイルからプロパティをロードし、前記ロードされたプロパティはキャッシュを定義し、前記定義されたキャッシュを前記分散型インメモリ・データグリッドにおけるキャッシュに対してマッピングする、システム。
A system for integrating a distributed in-memory data grid into a distributed caching system in a transaction processing environment.
With a computer that contains one or more microprocessors,
A transaction processing environment including a plurality of layers running on the computer and providing caching functions, the plurality of layers including a common distributed caching (CDC) layer and an implementation layer, said system. Furthermore,
A distributed in-memory data grid that operates in the implementation layer,
Including a proxy server in the CDC layer, the proxy server acts as a client to the distributed in-memory data grid, receives a caching request when invoking a transaction procedure from the CDC layer, and is associated with caching. The data is stored in the cache in the distributed in-memory data grid or searched from the cache.
A system in which the proxy server loads properties from a configuration file, the loaded properties define a cache, and the defined cache is mapped to a cache in the distributed in-memory data grid .
前記分散型インメモリ・データグリッドはCoherenceである、請求項1に記載のシステム。 The system of claim 1, wherein the distributed in-memory data grid is Coherence. 前記プロキシサーバは前記定義されたキャッシュの名前を用いてサービスをアドバタイズする、請求項1または2に記載のシステム。 The system according to claim 1 or 2 , wherein the proxy server advertises a service using the name of the defined cache. 前記プロキシサーバは、前記定義されたキャッシュに基づいて、かつ、前記定義されたキャッシュと前記分散型インメモリ・データグリッドにおけるキャッシュとの間におけるマッピングに基づいて、キャッシング動作を実行する際に使用される前記分散型インメモリ・データグリッドにおける前記キャッシュを決定する、請求項1〜3のいずれか1項に記載のシステム。 The proxy server is used to perform caching operations based on the defined cache and based on the mapping between the defined cache and the cache in the distributed in-memory data grid. The system according to any one of claims 1 to 3, which determines the cache in the distributed in-memory data grid. 1つ以上の付加的なプロキシサーバが、ロードバランシングのために、前記分散型インメモリ・データグリッドをホストする各々のコンピュータノード上に設けられる、請求項1からのいずれか一項に記載のシステム。 The invention according to any one of claims 1 to 4 , wherein one or more additional proxy servers are provided on each computer node hosting the distributed in-memory data grid for load balancing. system. 前記プロキシサーバはJava(登録商標)サーバである、請求項1からのいずれか一項に記載のシステム。 The system according to any one of claims 1 to 5 , wherein the proxy server is a Java (registered trademark) server. トランザクション処理環境における分散型キャッシングシステムに分散型インメモリ・データグリッドを統合するための方法であって、
1つ以上のマイクロプロセッサを含むコンピュータ上で実行されるとともに、キャッシング機能を提供する複数の層を含むトランザクション処理環境を設けるステップを含み、前記複数の層は、共通の分散型キャッシング(CDC)層およびインプリメンテーション層を含み、前記方法はさらに、
前記インプリメンテーション層において動作する分散型インメモリ・データグリッドを設けるステップと、
前記CDC層にプロキシサーバを設けるステップとを含み、前記プロキシサーバは前記分散型インメモリ・データグリッドに対するクライアントとして機能し、前記CDC層からのトランザクション手順の呼出しの際にキャッシング要求を受取り、前記キャッシング要求に関連付けられたデータを、前記分散型インメモリ・データグリッドにおけるキャッシュに格納するかまたは前記キャッシュから検索
前記プロキシサーバは構成ファイルからプロパティをロードし、前記ロードされたプロパティはキャッシュを定義し、前記定義されたキャッシュを前記分散型インメモリ・データグリッドにおけるキャッシュに対してマッピングする、方法。
A method for integrating a distributed in-memory data grid into a distributed caching system in a transaction processing environment.
The plurality of layers include a common distributed caching (CDC) layer, which includes a step of providing a transaction processing environment including a plurality of layers that are executed on a computer including one or more microprocessors and that provide caching functions. And the implementation layer, the method further comprises.
Steps to provide a distributed in-memory data grid that operates in the implementation layer,
Including the step of providing a proxy server in the CDC layer, the proxy server functions as a client for the distributed in-memory data grid, receives a caching request when calling a transaction procedure from the CDC layer, and receives the caching. the data associated with the request, retrieves or from the cache is stored in the cache in the distributed-memory data grid,
A method in which the proxy server loads properties from a configuration file, the loaded properties define a cache, and the defined cache is mapped to a cache in the distributed in-memory data grid .
トランザクション処理環境における分散型キャッシングシステムに分散型インメモリ・データグリッドを統合するための1セットの命令を格納するプログラムであって、前記命令は、1つ以上のプロセッサによって実行されると、前記1つ以上のプロセッサに以下のステップを実行させ、前記以下のステップは、
コンピュータ上で実行されるとともに、キャッシング機能を提供する複数の層を含むトランザクション処理環境を設けるステップを含み、前記複数の層は、共通の分散型キャッシング(CDC)層およびインプリメンテーション層を含み、前記以下のステップはさらに、
前記インプリメンテーション層において動作する分散型インメモリ・データグリッドを設けるステップと、
前記CDC層にプロキシサーバを設けるステップとを含み、前記プロキシサーバは前記分散型インメモリ・データグリッドに対するクライアントとして機能し、前記CDC層からのトランザクション手順の呼出しの際にキャッシング要求を受取り、前記キャッシング要求に関連付けられたデータを、前記分散型インメモリ・データグリッドにおけるキャッシュに格納するかまたは前記キャッシュから検索
前記プロキシサーバは構成ファイルからプロパティをロードし、前記ロードされたプロパティはキャッシュを定義し、前記定義されたキャッシュを前記分散型インメモリ・データグリッドにおけるキャッシュに対してマッピングする、プログラム。
A program that stores a set of instructions for integrating a distributed in-memory data grid into a distributed caching system in a transaction processing environment, said 1 when executed by one or more processors. Have one or more processors perform the following steps, the following steps
It includes a step of providing a transaction processing environment that is executed on a computer and includes a plurality of layers that provide caching functions, the plurality of layers including a common distributed caching (CDC) layer and an implementation layer. The following steps further
Steps to provide a distributed in-memory data grid that operates in the implementation layer,
Including the step of providing a proxy server in the CDC layer, the proxy server functions as a client for the distributed in-memory data grid, receives a caching request when calling a transaction procedure from the CDC layer, and receives the caching. the data associated with the request, retrieves or from the cache is stored in the cache in the distributed-memory data grid,
A program in which the proxy server loads properties from a configuration file, the loaded properties define a cache, and the defined cache is mapped to a cache in the distributed in-memory data grid .
JP2019158649A 2015-10-22 2019-08-30 Systems and methods for providing distributed caching in transaction processing environments Active JP6902580B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019158649A JP6902580B2 (en) 2015-10-22 2019-08-30 Systems and methods for providing distributed caching in transaction processing environments

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2017558432A JP6613320B2 (en) 2015-10-22 2015-10-22 System and method for providing distributed caching in a transaction processing environment
JP2019158649A JP6902580B2 (en) 2015-10-22 2019-08-30 Systems and methods for providing distributed caching in transaction processing environments

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2017558432A Division JP6613320B2 (en) 2015-10-22 2015-10-22 System and method for providing distributed caching in a transaction processing environment

Publications (2)

Publication Number Publication Date
JP2020017288A JP2020017288A (en) 2020-01-30
JP6902580B2 true JP6902580B2 (en) 2021-07-14

Family

ID=69580503

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019158649A Active JP6902580B2 (en) 2015-10-22 2019-08-30 Systems and methods for providing distributed caching in transaction processing environments

Country Status (1)

Country Link
JP (1) JP6902580B2 (en)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102467408B (en) * 2010-11-12 2014-03-19 阿里巴巴集团控股有限公司 Method and device for accessing data of virtual machine
US8832111B2 (en) * 2010-12-30 2014-09-09 Facebook, Inc. Distributed cache for graph data
CA2843886C (en) * 2011-08-02 2020-09-22 Ajay JADHAV Cloud-based distributed persistence and cache data model
US9231995B2 (en) * 2011-09-30 2016-01-05 Oracle International Corporation System and method for providing asynchrony in web services

Also Published As

Publication number Publication date
JP2020017288A (en) 2020-01-30

Similar Documents

Publication Publication Date Title
JP6613320B2 (en) System and method for providing distributed caching in a transaction processing environment
US20190138283A1 (en) Methods and systems for providing a user interface
JP2018531439A6 (en) System and method for providing distributed caching in a transaction processing environment
US20060206903A1 (en) System data interfaces, related architectures, print system data interfaces and related print system architectures
US10817312B2 (en) Programming model for performant computing in document-oriented storage services
JPH1069395A (en) Request dispatch mechanism in distributed object system
JP6902580B2 (en) Systems and methods for providing distributed caching in transaction processing environments
JP6902579B2 (en) Systems and methods for providing distributed caching in transaction processing environments
JP6827084B2 (en) Systems and methods for providing distributed caching in transaction processing environments
US20110321043A1 (en) System, Method and Program Product for Native Interface Optimization of Read-Only Arrays
CN112347794B (en) Data translation method, device, equipment and computer storage medium
CA3089289C (en) System and methods for loading objects from hash chains
US7720877B1 (en) Class structure based enhancer for data objects

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190919

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190919

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200826

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200923

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201118

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210525

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210621

R150 Certificate of patent or registration of utility model

Ref document number: 6902580

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150