第4章 キャッシュエンコーディングの設定
Data Grid は、キャッシュとの間で読み取りおよび書き込みを行うときにオンザフライで変換できる特定の形式でデータを保存します。キーと値の MediaType を指定して、ストレージ形式を設定します。これはデータの形式を記述します。
Data Grid は、異なるストレージ形式間でデータを変換して、異なるクライアントプロトコル間の相互運用性を処理したり、カスタムコードを使用してデータを処理したりすることもできます。
4.1. キャッシュエンコーディングとクライアントの相互運用性
データに使用するエンコーディングは、クライアントの相互運用性と Data Grid Search などの機能に影響します。
Protobuf 形式でデータを保存して、以下と使用します。 | |
---|---|
Data Grid コンソール | はい |
REST クライアント | はい |
Java Hot Rod クライアント | はい |
Java 以外の Hot Rod クライアント | はい |
Data Grid Search | はい |
カスタム Java オブジェクト | はい |
テキストベースの形式でデータを保存して、以下と使用します。 | |
---|---|
Data Grid コンソール | はい |
REST クライアント | はい |
Java Hot Rod クライアント | はい |
Java 以外の Hot Rod クライアント | はい |
Data Grid Search | いいえ |
カスタム Java オブジェクト | いいえ |
マーシャリングされた Java オブジェクトは以下と互換性があります。 | |
---|---|
Data Grid コンソール | いいえ |
REST クライアント | はい |
Java Hot Rod クライアント | はい |
Java 以外の Hot Rod クライアント | いいえ |
Data Grid Search | いいえ |
POJO (Plain Old Java Object) は推奨されませんが、以下と互換性があります。 | |
---|---|
Data Grid コンソール | いいえ |
REST クライアント | はい |
Java Hot Rod クライアント | はい |
Java 以外の Hot Rod クライアント | いいえ |
Data Grid Search | 必要。ただし、POJO で検索し、クラスを Data Grid Server で使用できるようにするには、エンティティーにアノテーションを付ける必要があります。 |
カスタム Java オブジェクト | はい |
4.1.1. Memcached クライアントのキャッシュエンコーディングの設定
Data Grid Server は、デフォルトで Memcached エンドポイントを無効にします。Memcached エンドポイントを有効にする場合は、Memcached クライアントに適したエンコーディングでキャッシュを設定する必要があります。
Memcached エンドポイントは認証をサポートしません。セキュリティー上の理由から、Memcached クライアント専用のキャッシュを使用する必要があります。Memcached クライアントと同じデータセットで対話するために REST または Hot Rod クライアントを使用しないでください。
手順
-
キーに
text/plain
を使用するようにキャッシュエンコーディングを設定します。 application/x-java- object
以外の適切な MediaType を値に指定します。Memcached クライアントは、鍵を
text/plain
としてのみ処理できます。値は、Data Grid がbyte[]
として保存する MediaType にすることができます。これは Protobuf、マーシャリングされた Java オブジェクト、またはテキストベースの形式になります。<encoding> <key media-type="text/plain"/> <value media-type="application/x-protostream"/> </encoding>
Memcached エンドポイントには、値のエンコーディングを変換する client-encoding
属性が含まれます。
たとえば、前述の設定の例にあるように、Protobuf としてエンコードされた値を保存します。Memcached クライアントで値を JSON として読み書きできるようにする場合は、次の設定を使用できます。
<memcached-connector cache="memcachedCache" client-encoding="application/json">