第2章 Data Grid REST API との連携

Data Grid REST API は、Data Grid の展開を監視、維持、管理し、データへのアクセスを提供します。

注記

デフォルトでは、Data Grid REST API の操作は、成功すると 200 (OK) を返します。ただし、一部の操作が正常に処理されると、 200 ではなく 204202 などの HTTP ステータスコードが返されます。

2.1. キャッシュの作成と管理

Data Grid のキャッシュを作成・管理し、データに対する操作を行うことができます。

2.1.1. キャッシュの作成

XML または JSON 設定をペイロードに含む POST リクエストで、Data Grid クラスター全体に名前付きキャッシュを作成します。

POST /rest/v2/caches/{cacheName}

表2.1 ヘッダー

ヘッダー必須またはオプションパラメーター

Content-Type

必須

Data Grid 設定のペイロードの MediaType を設定します ( application/xml または application/json のいずれか)。

Flags

オプション

AdminFlags を設定するために使用されます

2.1.1.1. キャッシュ設定

XML、JSON、および YAML 形式で宣言型キャッシュ設定を作成できます。

すべての宣言型キャッシュは Data Grid スキーマに準拠する必要があります。JSON 形式の設定は XML 設定の構造に従う必要があります。要素がオブジェクトに対応し、属性はフィールドに対応します。

重要

Data Grid では、キャッシュ名またはキャッシュテンプレート名の文字数を最大 255 文字に制限しています。この文字制限を超えると、Data Grid サーバーは例外メッセージを発行せずに突然停止する場合があります。簡潔なキャッシュ名とキャッシュテンプレート名を記述します。

重要

ファイルシステムによってファイル名の長さに制限が設定される場合があるため、キャッシュの名前がこの制限を超えないようにしてください。キャッシュ名がファイルシステムの命名制限を超えると、そのキャッシュに対する一般的な操作または初期化操作が失敗する可能性があります。簡潔なキャッシュ名とキャッシュテンプレート名を記述します。

分散キャッシュ

XML

<distributed-cache owners="2"
                   segments="256"
                   capacity-factor="1.0"
                   l1-lifespan="5000"
                   mode="SYNC"
                   statistics="true">
  <encoding media-type="application/x-protostream"/>
  <locking isolation="REPEATABLE_READ"/>
  <transaction mode="FULL_XA"
               locking="OPTIMISTIC"/>
  <expiration lifespan="5000"
              max-idle="1000" />
  <memory max-count="1000000"
          when-full="REMOVE"/>
  <indexing enabled="true"
            storage="local-heap">
    <index-reader refresh-interval="1000"/>
  </indexing>
  <partition-handling when-split="ALLOW_READ_WRITES"
                      merge-policy="PREFERRED_NON_NULL"/>
  <persistence passivation="false">
    <!-- Persistent storage configuration. -->
  </persistence>
</distributed-cache>

JSON

{
  "distributed-cache": {
    "mode": "SYNC",
    "owners": "2",
    "segments": "256",
    "capacity-factor": "1.0",
    "l1-lifespan": "5000",
    "statistics": "true",
    "encoding": {
      "media-type": "application/x-protostream"
    },
    "locking": {
      "isolation": "REPEATABLE_READ"
    },
    "transaction": {
      "mode": "FULL_XA",
      "locking": "OPTIMISTIC"
    },
    "expiration" : {
      "lifespan" : "5000",
      "max-idle" : "1000"
    },
    "memory": {
      "max-count": "1000000",
      "when-full": "REMOVE"
    },
    "indexing" : {
      "enabled" : true,
      "storage" : "local-heap",
      "index-reader" : {
        "refresh-interval" : "1000"
      }
    },
    "partition-handling" : {
      "when-split" : "ALLOW_READ_WRITES",
      "merge-policy" : "PREFERRED_NON_NULL"
    },
    "persistence" : {
      "passivation" : false
    }
  }
}

YAML

distributedCache:
  mode: "SYNC"
  owners: "2"
  segments: "256"
  capacityFactor: "1.0"
  l1Lifespan: "5000"
  statistics: "true"
  encoding:
    mediaType: "application/x-protostream"
  locking:
    isolation: "REPEATABLE_READ"
  transaction:
    mode: "FULL_XA"
    locking: "OPTIMISTIC"
  expiration:
    lifespan: "5000"
    maxIdle: "1000"
  memory:
    maxCount: "1000000"
    whenFull: "REMOVE"
  indexing:
    enabled: "true"
    storage: "local-heap"
    indexReader:
      refreshInterval: "1000"
  partitionHandling:
    whenSplit: "ALLOW_READ_WRITES"
    mergePolicy: "PREFERRED_NON_NULL"
  persistence:
    passivation: "false"
    # Persistent storage configuration.

レプリケートされたキャッシュ

XML

<replicated-cache segments="256"
                  mode="SYNC"
                  statistics="true">
  <encoding media-type="application/x-protostream"/>
  <locking isolation="REPEATABLE_READ"/>
  <transaction mode="FULL_XA"
               locking="OPTIMISTIC"/>
  <expiration lifespan="5000"
              max-idle="1000" />
  <memory max-count="1000000"
          when-full="REMOVE"/>
  <indexing enabled="true"
            storage="local-heap">
    <index-reader refresh-interval="1000"/>
  </indexing>
  <partition-handling when-split="ALLOW_READ_WRITES"
                      merge-policy="PREFERRED_NON_NULL"/>
  <persistence passivation="false">
    <!-- Persistent storage configuration. -->
  </persistence>
</replicated-cache>

JSON

{
  "replicated-cache": {
    "mode": "SYNC",
    "segments": "256",
    "statistics": "true",
    "encoding": {
      "media-type": "application/x-protostream"
    },
    "locking": {
      "isolation": "REPEATABLE_READ"
    },
    "transaction": {
      "mode": "FULL_XA",
      "locking": "OPTIMISTIC"
    },
    "expiration" : {
      "lifespan" : "5000",
      "max-idle" : "1000"
    },
    "memory": {
      "max-count": "1000000",
      "when-full": "REMOVE"
    },
    "indexing" : {
      "enabled" : true,
      "storage" : "local-heap",
      "index-reader" : {
        "refresh-interval" : "1000"
      }
    },
    "partition-handling" : {
      "when-split" : "ALLOW_READ_WRITES",
      "merge-policy" : "PREFERRED_NON_NULL"
    },
    "persistence" : {
      "passivation" : false
    }
  }
}

YAML

replicatedCache:
  mode: "SYNC"
  segments: "256"
  statistics: "true"
  encoding:
    mediaType: "application/x-protostream"
  locking:
    isolation: "REPEATABLE_READ"
  transaction:
    mode: "FULL_XA"
    locking: "OPTIMISTIC"
  expiration:
    lifespan: "5000"
    maxIdle: "1000"
  memory:
    maxCount: "1000000"
    whenFull: "REMOVE"
  indexing:
    enabled: "true"
    storage: "local-heap"
    indexReader:
      refreshInterval: "1000"
  partitionHandling:
    whenSplit: "ALLOW_READ_WRITES"
    mergePolicy: "PREFERRED_NON_NULL"
  persistence:
    passivation: "false"
    # Persistent storage configuration.

複数のキャッシュ

XML

<infinispan
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="urn:infinispan:config:13.0 https://infinispan.org/schemas/infinispan-config-13.0.xsd
                          urn:infinispan:server:13.0 https://infinispan.org/schemas/infinispan-server-13.0.xsd"
      xmlns="urn:infinispan:config:13.0"
      xmlns:server="urn:infinispan:server:13.0">
  <cache-container name="default"
                   statistics="true">
    <distributed-cache name="mycacheone"
                       mode="ASYNC"
                       statistics="true">
      <encoding media-type="application/x-protostream"/>
      <expiration lifespan="300000"/>
      <memory max-size="400MB"
              when-full="REMOVE"/>
    </distributed-cache>
    <distributed-cache name="mycachetwo"
                       mode="SYNC"
                       statistics="true">
      <encoding media-type="application/x-protostream"/>
      <expiration lifespan="300000"/>
      <memory max-size="400MB"
              when-full="REMOVE"/>
    </distributed-cache>
  </cache-container>
</infinispan>

YAML

infinispan:
  cacheContainer:
    name: "default"
    statistics: "true"
    caches:
      mycacheone:
       distributedCache:
          mode: "ASYNC"
          statistics: "true"
          encoding:
            mediaType: "application/x-protostream"
          expiration:
            lifespan: "300000"
          memory:
            maxSize: "400MB"
            whenFull: "REMOVE"
      mycachetwo:
        distributedCache:
          mode: "SYNC"
          statistics: "true"
          encoding:
            mediaType: "application/x-protostream"
          expiration:
            lifespan: "300000"
          memory:
            maxSize: "400MB"
            whenFull: "REMOVE"

JSON

{
  "infinispan" : {
    "cache-container" : {
      "name" : "default",
      "statistics" : "true",
      "caches" : {
        "mycacheone" : {
          "distributed-cache" : {
            "mode": "ASYNC",
            "statistics": "true",
            "encoding": {
              "media-type": "application/x-protostream"
            },
            "expiration" : {
              "lifespan" : "300000"
            },
            "memory": {
              "max-size": "400MB",
              "when-full": "REMOVE"
            }
          }
        },
        "mycachetwo" : {
          "distributed-cache" : {
            "mode": "SYNC",
            "statistics": "true",
            "encoding": {
              "media-type": "application/x-protostream"
            },
            "expiration" : {
              "lifespan" : "300000"
            },
            "memory": {
              "max-size": "400MB",
              "when-full": "REMOVE"
            }
          }
        }
      }
    }
  }
}

2.1.2. キャッシュの変更

ペイロードに XML または JSON 設定を含む PUT リクエストを使用して、Data Grid クラスター全体のキャッシュ設定の属性を変更します。

注記

変更が既存の設定と互換性がある場合にのみ、キャッシュを変更できます。

たとえば、レプリケートされたキャッシュ設定を使用して分散キャッシュを変更することはできません。同様に、特定の属性を使用してキャッシュ設定を作成する場合、代わりに別の属性を使用するように設定を変更することはできません。たとえば、max-count 属性の値を指定してキャッシュ設定を変更しようとすると、max-size がすでに設定されている場合、無効な設定になります。

PUT /rest/v2/caches/{cacheName}

表2.2 ヘッダー

ヘッダー必須またはオプションパラメーター

Content-Type

必須

Data Grid 設定のペイロードの MediaType を設定します ( application/xml または application/json のいずれか)。

Flags

オプション

AdminFlags を設定するために使用されます

2.1.3. キャッシュの検証

HEAD リクエストで Data Grid クラスターでキャッシュが利用可能かどうかを確認します。

HEAD /rest/v2/caches/{cacheName}

2.1.4. テンプレートを使用したキャッシュの作成

POST リクエストと ?template= パラメーターを使用して、Data Grid テンプレートからキャッシュを作成します。

POST /rest/v2/caches/{cacheName}?template={templateName}

2.1.5. キャッシュ設定の取得

GET リクエストで Data Grid のキャッシュ設定を取得します。

GET /rest/v2/caches/{name}?action=config

表2.3 ヘッダー

ヘッダー必須またはオプションパラメーター

Accept

オプション

コンテンツを返すために必要な形式を設定します。対応フォーマットは、application/xmlapplication/json です。デフォルトは application/json です。詳細については、 Accept を参照してください。

2.1.6. XML、JSON、YAML 間のキャッシュ設定の変換

有効な設定と ?action=convert パラメーターを使用して POST リクエストを呼び出します。Data Grid は、Accept ヘッダで指定されたタイプの設定の同等の表現で応答します。

POST /rest/v2/caches?action=convert

キャッシュ設定を変換するには、Content-Type ヘッダーで設定の入力形式を指定し、Accept ヘッダーで目的の出力形式を指定する必要があります。たとえば、次のコマンドは、レプリケートされたキャッシュ設定を XML から YAML に変換します。

curl localhost:11222/rest/v2/caches?action=convert \
--digest -u username:password \
-X POST -H "Accept: application/yaml" -H "Content-Type: application/xml" \
-d '<replicated-cache mode="SYNC" statistics="false"><encoding media-type="application/x-protostream"/><expiration lifespan="300000" /><memory max-size="400MB" when-full="REMOVE"/></replicated-cache>'

2.1.7. すべてのキャッシュの詳細を取得する

GET リクエストを呼び出し、Data Grid キャッシュのすべての詳細を取得します。

GET /rest/v2/caches/{name}

Data Grid は、以下のような JSON レスポンスを提供します。

{
  "stats": {
    "time_since_start": -1,
    "time_since_reset": -1,
    "hits": -1,
    "current_number_of_entries": -1,
    "current_number_of_entries_in_memory": -1,
    "total_number_of_entries": -1,
    "stores": -1,
    "off_heap_memory_used": -1,
    "data_memory_used": -1,
    "retrievals": -1,
    "misses": -1,
    "remove_hits": -1,
    "remove_misses": -1,
    "evictions": -1,
    "average_read_time": -1,
    "average_read_time_nanos": -1,
    "average_write_time": -1,
    "average_write_time_nanos": -1,
    "average_remove_time": -1,
    "average_remove_time_nanos": -1,
    "required_minimum_number_of_nodes": -1
  },
  "size": 0,
  "configuration": {
    "distributed-cache": {
      "mode": "SYNC",
      "transaction": {
        "stop-timeout": 0,
        "mode": "NONE"
      }
    }
  },
  "rehash_in_progress": false,
  "rebalancing_enabled": true,
  "bounded": false,
  "indexed": false,
  "persistent": false,
  "transactional": false,
  "secured": false,
  "has_remote_backup": false,
  "indexing_in_progress": false,
  "statistics": false
}
  • stats キャッシュの現在の状態を表示します。
  • size キャッシュの推定サイズ。
  • configuration キャッシュ設定。
  • rehash_in_progress リハッシュが進行中の場合は true。
  • indexing_in_progress インデックス作成中の場合は true。
  • rebalancing_enabled は、リバランシングが有効な場合は true。このプロパティーの取得は、サーバーで失敗する可能性があります。その場合、プロパティーはペイロードに存在しません。
  • bounded 有効期限が有効になっている。
  • indexed キャッシュがインデックス化されている場合は true。
  • persistent キャッシュが永続化されている場合は true。
  • transactional キャッシュがトランザクショナルである場合は true。
  • secured キャッシュが保護されている場合は true。
  • has_remote_backup キャッシュがリモートバックアップを持っている場合は true。
  • key_storage キャッシュキーのメディアタイプです。
  • value_storage キャッシュの値のメディアタイプです。
注記

key_storagevalue_storage は、キャッシュのエンコーディング設定と一致します。エンコーディングなしのサーバーキャッシュの場合、Data Grid はキャッシュがインデックス化されている場合は application/x-protostream を、それ以外の場合は application/unknown を想定しています。

2.1.8. すべての可変キャッシュ設定属性の取得

GET 要求を呼び出して、Data Grid キャッシュのすべての可変キャッシュ設定属性を取得します。

GET /rest/v2/caches/{name}?action=get-mutable-attributes

Data Grid は、以下のような JSON レスポンスを提供します。

[
  "jmx-statistics.statistics",
  "locking.acquire-timeout",
  "transaction.single-phase-auto-commit",
  "expiration.max-idle",
  "transaction.stop-timeout",
  "clustering.remote-timeout",
  "expiration.lifespan",
  "expiration.interval",
  "memory.max-count",
  "memory.max-size"
]

値や型の情報を得るには、full パラメーターを追加します。

GET /rest/v2/caches/mycache?action=get-mutable-attributes&full=true

Data Grid は、以下のような JSON レスポンスを提供します。

{
  "jmx-statistics.statistics": {
    "value": true,
    "type": "boolean"
  },
  "locking.acquire-timeout": {
    "value": 15000,
    "type": "long"
  },
  "transaction.single-phase-auto-commit": {
    "value": false,
    "type": "boolean"
  },
  "expiration.max-idle": {
    "value": -1,
    "type": "long"
  },
  "transaction.stop-timeout": {
    "value": 30000,
    "type": "long"
  },
  "clustering.remote-timeout": {
    "value": 17500,
    "type": "long"
  },
  "expiration.lifespan": {
    "value": -1,
    "type": "long"
  },
  "expiration.interval": {
    "value": 60000,
    "type": "long"
  },
  "memory.max-count": {
    "value": -1,
    "type": "long"
  },
  "memory.max-size": {
    "value": null,
    "type": "string"
  }
}

enum 型の属性の場合、追加の universe プロパティーには、可能な値のセットが含まれます。

2.1.9. キャッシュ設定属性の更新

変更可能なキャッシュ設定属性を変更するために、POST リクエストを呼び出します。

POST /rest/v2/caches/{name}?action=set-mutable-attributes&attribute-name={attributeName}&attribute-value={attributeValue}

2.1.10. エントリーの追加

POST リクエストでキャッシュにエントリーを追加します。

POST /rest/v2/caches/{cacheName}/{cacheKey}

前述の要求は cacheKey キーで cacheName を指定のキャッシュに、ペイロード、またはリクエストボディを配置します。リクエストは、既存のデータを置き換え、適用可能であれば、Time-To-LiveLast-Modified の値を更新します。

エントリーが正常に作成されると、サービスは 204 (No Content) を返します。

指定されたキーに既に値が存在する場合、POST リクエストは 409 (Conflict) を返し、値の変更は行いません。値を更新するには、PUT リクエストを使用する必要があります。エントリーの入れ替え をご覧ください。

表2.4 ヘッダー

ヘッダー必須またはオプションパラメーター

Key-Content-Type

オプション

リクエストのキーのコンテンツタイプを設定します。詳細は、Key-Content-Type を参照してください。

Content-Type

オプション

キーの値の MediaType を設定します。

timeToLiveSeconds

オプション

エントリーが自動的に削除されるまでの秒数を設定します。このパラメーターを設定しない場合、DataGrid は設定のデフォルト値を使用します。負の値を設定すると、エントリーが削除されることはありません。

maxIdleTimeSeconds

オプション

エントリーがアイドル状態になることができる秒数を設定します。最大アイドル時間が経過してもエントリーの読み取りまたは書き込み操作が発生しない場合、エントリーは自動的に削除されます。このパラメーターを設定しない場合、DataGrid は設定のデフォルト値を使用します。負の値を設定すると、エントリーが削除されることはありません。

flags

オプション

エントリーの追加に使用されるフラグ。詳細については、フラグ を参照してください。

注記

flags ヘッダーは、キャッシュでのデータ操作を含む他のすべての操作にも適用されます。

注記

timeToLiveSecondsmaxIdleTimeSeconds の両方の値が 0 の場合、Data Grid は設定のデフォルトの lifespanmaxIdle の値を使用します。

only maxIdleTimeSeconds のみ値が 0 の場合、Data Grid が使用します。

  • コンフィグレーションのデフォルトの maxIdle 値を使用します。
  • リクエストパラメーターとして渡した timeToLiveSeconds の値、または値を渡さなかった場合は -1 の値です。

timeToLiveSeconds の値だけが 0 の場合、Data Grid は

  • 設定のデフォルトの lifespan 値を使用。
  • リクエストパラメーターとして渡された maxIdle の値、または値を渡さない場合は -1 の値を使用。

2.1.11. エントリーの置き換え

キャッシュ内のエントリーを PUT リクエストに置き換えます。

PUT /rest/v2/caches/{cacheName}/{cacheKey}

指定されたキーの値がすでに存在する場合、 PUT 要求は値を更新します。既存の値を変更したくない場合は、値を変更する代わりに、409 (Conflict) を返す POST リクエストを使用してください。値の追加 を参照してください。

2.1.12. キーによるデータの取得

GET リクエストを使用して特定のキーのデータを取得します。

GET /rest/v2/caches/{cacheName}/{cacheKey}

サーバーは、応答本文の指定されたキー cacheKey の下にある指定されたキャッシュ cacheName からデータを返します。応答には、MediaType ネゴシエーションに対応する Content-Type ヘッダーが含まれています。

注記

ブラウザーは、たとえばコンテンツ配信ネットワーク (CDN) として、キャッシュに直接アクセスすることもできます。Data Grid は、各エントリーに固有のETagを、Last-Modified および Expires ヘッダーフィールドとともに返します。

これらのフィールドは、リクエストで返されるデータの状態に関する情報を提供します。ETag を使用すると、ブラウザーやその他のクライアントは、変更されたデータのみを要求できるため、帯域幅が節約されます。

表2.5 ヘッダー

ヘッダー必須またはオプションパラメーター

Key-Content-Type

オプション

リクエストのキーのコンテンツタイプを設定します。デフォルトは application/x-java-object; type=java.lang.String です。詳細は、Key-Content-Type を参照してください。

Accept

オプション

コンテンツを返すために必要な形式を設定します。詳細については、 Accept を参照してください。

ヒント

extended パラメーターをクエリー文字列に追加して、追加情報を取得します。

GET /rest/v2/caches/{cacheName}/{cacheKey}?extended

上記のリクエストはカスタムヘッダーを返します:

  • Cluster-Primary-Owner は、キーのプライマリー所有者であるノード名を返します。
  • Cluster-Node-Name は、要求を処理したサーバーの JGroups ノード名を返します。
  • Cluster-Physical-Address は、要求を処理したサーバーの物理 JGroups アドレスを返します。

2.1.13. エントリーが存在するかどうかの確認

HEAD リクエストで特定のエントリーが存在することを確認します。

HEAD /rest/v2/caches/{cacheName}/{cacheKey}

上記のリクエストは、ヘッダーフィールドと、エントリーとともに保存したものと同じコンテンツのみを返します。たとえば、文字列を保存した場合、リクエストは文字列を返します。バイナリー、base64 エンコード、blob、またはシリアル化された Java オブジェクトを保存した場合、DataGrid はリクエストのコンテンツを逆シリアル化しません。

注記

HEAD リクエストは、extended パラメーターもサポートしています。

表2.6 ヘッダー

ヘッダー必須またはオプションパラメーター

Key-Content-Type

オプション

リクエストのキーのコンテンツタイプを設定します。デフォルトは application/x-java-object; type=java.lang.String です。詳細は、Key-Content-Type を参照してください。

2.1.14. エントリーの削除

DELETE リクエストを使用してキャッシュからエントリーを 削除 します。

DELETE /rest/v2/caches/{cacheName}/{cacheKey}

表2.7 ヘッダー

ヘッダー必須またはオプションパラメーター

Key-Content-Type

オプション

リクエストのキーのコンテンツタイプを設定します。デフォルトは application/x-java-object; type=java.lang.String です。詳細は、Key-Content-Type を参照してください。

2.1.15. キャッシュの削除

DELETE リクエストを使用して Data Grid クラスターからキャッシュを DELETE 削除します。

DELETE /rest/v2/caches/{cacheName}

2.1.16. キャッシュからのすべてのキーの取得

GET リクエストを呼び出して、キャッシュ内のすべてのキーを JSON 形式で取得します。

GET /rest/v2/caches/{cacheName}?action=keys

表2.8 リクエストパラメーター

パラメーター必須またはオプション

limit

オプション

InputStream を使用して取得するキーの最大数を指定します。負の値はすべてのキーを取得します。デフォルト値は -1 です。

batch

オプション

キーを取得するときの内部バッチサイズを指定します。デフォルト値は 1000 です。

2.1.17. キャッシュからのすべてのエントリーの取得

GET リクエストを呼び出し、キャッシュ内のすべてのエントリーを JSON 形式で取得します。

GET /rest/v2/caches/{cacheName}?action=entries

表2.9 リクエストパラメーター

パラメーター必須またはオプション

metadata

オプション

応答の各エントリーのメタデータが含まれます。デフォルト値は false です。

limit

オプション

応答に含めるキーの最大数を指定します。負の値はすべてのキーを取得します。デフォルト値は -1 です。

batch

オプション

キーを取得するときの内部バッチサイズを指定します。デフォルト値は 1000 です。

content-negotiation

オプション

true の場合、キーと値を読み取り可能な形式に変換します。テキストエンコーディングのキャッシュ (text/plain、xml、json など) では、サーバーはキーと値をプレーンテキストで返します。バイナリーエンコーディングのキャッシュの場合、変換がサポートされている場合、サーバーはエントリーを JSON として返します。サポートされていない場合は、テキストの 16 進形式 ( 0xA123CF98 など) で返します。content-negotiation が使用される場合、応答には key-content-typevalue-content-type の 2 つのヘッダが含まれ、ネゴシエートされたフォーマットが記述されます。

Data Grid は、以下のような JSON レスポンスを提供します。

[
    {
        "key":1,
        "value":"value1",
        "timeToLiveSeconds":-1,
        "maxIdleTimeSeconds":-1,
        "created":-1,
        "lastUsed":-1,
        "expireTime":-1
    },
    {
        "key":2,
        "value":"value2",
        "timeToLiveSeconds":10,
        "maxIdleTimeSeconds":45,
        "created":1607966017944,
        "lastUsed": 1607966017944,
        "expireTime":1607966027944
    }
]
  • key エントリーのキー。
  • value エントリーの値。
  • timeToLiveSeconds エントリーの有効期間に基づきますが、秒単位です。エントリーが期限切れにならない場合は -1 です。metadata = "true"を設定しない限り、返されません。
  • maxIdleTimeSeconds 最大アイドル時間 (秒単位)。エントリーが期限切れにならない場合は -1。metadata = "true"を設定しない限り、返されません。
  • 作成済みエントリーが created された時刻、または不滅のエントリーの場合は -1。metadata = "true"を設定しない限り、返されません。
  • lastUsed エントリーに対して操作が行われた最後の時刻、または不滅のエントリーでは -1。metadata = "true"を設定しない限り、返されません。
  • expireTime エントリーが期限切れになる時間、または不死身のエントリーの場合は -1。metadata = "true"を設定しない限り、返されません。

2.1.18. キャッシュのクリア

キャッシュからすべてのデータを削除するには、POST リクエストに ?action=clear パラメーターを付けて実行します。

POST /rest/v2/caches/{cacheName}?action=clear

操作が正常に完了すると、サービスは 204 (No Content) を返します。

2.1.19. キャッシュサイズの取得

GET リクエストと ?action=size パラメーターを使用して、クラスター全体のキャッシュのサイズを取得します。

GET /rest/v2/caches/{cacheName}?action=size

2.1.20. キャッシュ統計の取得

GET リクエストを使用してキャッシュの実行時統計を取得します。

GET /rest/v2/caches/{cacheName}?action=stats

2.1.21. キャッシュの一覧表示

GET リクエストを使用して、 Data Grid クラスターで使用可能なすべてのキャッシュを一覧表示します。

GET /rest/v2/caches/

2.1.22. キャッシュイベントをリッスンする

Server-Sent Events でキャッシュイベントを受信する。event 値は、cache-entry-createdcache-entry-removedcache-entry-updatedcache-entry-expired のいずれかになります。data 値には、Accept ヘッダーで設定された形式でイベントを発生させたエントリーのキーが含まれます。

GET /rest/v2/caches/{name}?action=listen

表2.10 ヘッダー

ヘッダー必須またはオプションパラメーター

Accept

オプション

コンテンツを返すために必要な形式を設定します。サポートされている形式は、 text/plain および application/json です。デフォルトは application/json です。詳細については、 Accept を参照してください。

2.1.23. リバランスの有効化

特定のキャッシュの自動リバランスをオンにします。

POST /rest/v2/caches/{cacheName}?action=enable-rebalancing

2.1.24. リバランスの無効化

特定のキャッシュの自動リバランスをオフにします。

POST /rest/v2/caches/{cacheName}?action=disable-rebalancing

2.1.25. キャッシュの可用性の取得

キャッシュの可用性を取得します。

GET /rest/v2/caches/{cacheName}?action=get-availability
注記

内部キャッシュの可用性を取得できますが、これは将来の Data Grid バージョンで変更される可能性があります。

2.1.26. キャッシュの可用性の設定

DENY_READ_WRITES または ALLOW_READS パーティション処理戦略のいずれかを使用する場合は、クラスター化されたキャッシュの可用性を変更します。

POST /rest/v2/caches/{cacheName}?action=set-availability&availability={AVAILABILITY}

表2.11 リクエストパラメーター

パラメーター必須またはオプション

availability

必須

AVAILABLE または DEGRADED_MODE

  • AVAILABLE は、ネットワークパーティション内のすべてのノードでキャッシュを利用できるようにします。
  • DEGRADED_MODE は、ネットワークパーティションが発生したときにキャッシュの読み取りおよび書き込み操作を防止します。
注記

内部キャッシュの可用性を設定できますが、これは将来の Data Grid バージョンで変更される可能性があります。

2.1.27. RESTAPI を使用したインデックス作成とクエリー

HTTP クライアントから GET リクエストと ?action=search&query パラメーターを使用して、リモートキャッシュにクエリーを実行します。

GET /rest/v2/caches/{cacheName}?action=search&query={ickle query}

Data Grid の応答

{
  "total_results" : 150,
  "hits" : [ {
    "hit" : {
      "name" : "user1",
      "age" : 35
    }
  }, {
    "hit" : {
       "name" : "user2",
       "age" : 42
    }
  }, {
    "hit" : {
       "name" : "user3",
       "age" : 12
    }
  } ]
}

  • total_results は、クエリーの結果の合計数を表示します。
  • hits は、クエリーからのマッチの配列です。
  • hit は、クエリーにマッチするオブジェクトです。

    ヒント

    ヒットにはすべてのフィールドを含めることができますが、Select 句を使用するとフィールドのサブセットを含めることができます。

表2.12 リクエストパラメーター

パラメーター必須またはオプション

query

必須

クエリー文字列を指定します。

max_results

オプション

返す結果の数を設定します。デフォルトは 10 です。

offset

オプション

返される最初の結果のインデックスを指定します。デフォルトは 0 です。

local

オプション

true の場合、クエリーは、リクエストを処理するノードに存在するデータに制限されます。デフォルトは false です。

クエリーパラメーターを指定せずにリクエストの本文を使用するには、以下のように POST リクエストを呼び出します。

POST /rest/v2/caches/{cacheName}?action=search

リクエスト本文のクエリー

{
 "query":"from Entity where name:\"user1\"",
 "max_results":20,
 "offset":10
}

2.1.27.1. データのインデックスの再作成

POST リクエストと ?action=mass-index パラメーターを使用して、キャッシュ内のすべてのデータのインデックスを再作成することができます。

POST  /v2/caches/{cacheName}/search/indexes?action=mass-index

表2.13 リクエストパラメーター

パラメーター必須またはオプション

mode

オプション

mode パラメーターの値は以下の通りです。

sync は、インデックス再作成の操作が完了した後にのみ、204 (No Content) を返します。

async はすぐに 204 (No Content) を返し、再インデックス化処理はクラスター内で継続して実行されます。Index StatisticsREST コールで状態を確認できます。

local

オプション

true の場合、リクエストを処理するノードからのデータのみが再インデックス付けされます。デフォルトは false で、クラスター全体のデータが再インデックス化されます。

2.1.27.2. インデックスのパージ

POST リクエストと ?action=clear パラメーターを使用して、キャッシュからすべてのインデックスを削除します。

POST  /rest/v2/caches/{cacheName}/search/indexes?action=clear

操作が正常に完了すると、サービスは 204 (No Content) を返します。

2.1.27.3. クエリーおよびインデックス統計の取得

GET 要求を使用して、キャッシュでクエリーとインデックスに関する情報を取得します。

注記

キャッシュ設定で統計を有効にする必要があります。有効にしないと、結果が空になります。

GET /rest/v2/caches/{cacheName}/search/stats

表2.14 リクエストパラメーター

パラメーター必須またはオプション

scope

オプション

クラスターの全メンバーの連結統計情報を取得するには、cluster を使用します。省略すると、Data Grid はローカルのクエリーとインデックスの統計情報を返します。

Data Grid の応答

{
  "query": {
    "indexed_local": {
      "count": 1,
      "average": 12344.2,
      "max": 122324,
      "slowest": "FROM Entity WHERE field > 4"
    },
    "indexed_distributed": {
      "count": 0,
      "average": 0.0,
      "max": -1,
      "slowest": "FROM Entity WHERE field > 4"
    },
    "hybrid": {
      "count": 0,
      "average": 0.0,
      "max": -1,
      "slowest": "FROM Entity WHERE field > 4 AND desc = 'value'"
    },
    "non_indexed": {
      "count": 0,
      "average": 0.0,
      "max": -1,
      "slowest": "FROM Entity WHERE desc = 'value'"
    },
    "entity_load": {
      "count": 123,
      "average": 10.0,
      "max": 120
    }
  },
  "index": {
    "types": {
      "org.infinispan.same.test.Entity": {
        "count": 5660001,
        "size": 0
      },
      "org.infinispan.same.test.AnotherEntity": {
        "count": 40,
        "size": 345560
      }
    },
    "reindexing": false
  }
}

query のセクション

  • indexed_local インデックス付きのクエリーの詳細を提供します。
  • indexed_distributed 分散したインデックス付きクエリーの詳細を提供します。
  • hybrid インデックスを部分的にしか使用していないクエリーの詳細を提供します。
  • non_indexed インデックスを使用しなかったクエリーの詳細を提供します。
  • entity_load インデックス付きクエリーの実行後にオブジェクトをフェッチするためのキャッシュ操作に関する詳細を提供します。
注記

時間は常にナノ秒単位で測定されます。

index のセクション

  • types キャッシュに設定されている各インデックスタイプ (クラス名や protobuf メッセージ) の詳細を提供する。

    • count そのタイプにインデックスされているエンティティーの数。
    • size 型の使用量 (バイト)。
  • reindexing 値が true の場合、Indexer はキャッシュで動作しています。

2.1.27.4. クエリー統計のクリア

POST リクエストと ?action=clear パラメーターを使用して、ランタイムの統計情報をリセットすることができます。

POST /rest/v2/caches/{cacheName}/search/stats?action=clear

Data Grid は、ローカルノードのクエリー実行時間のみをリセットします。この操作では、インデックス統計はクリアされません。

2.1.27.5. インデックス統計の取得 (非推奨)

GET リクエストでキャッシュ内のインデックスの情報を取得します。

GET /rest/v2/caches/{cacheName}/search/indexes/stats

Data Grid の応答

{
    "indexed_class_names": ["org.infinispan.sample.User"],
    "indexed_entities_count": {
        "org.infinispan.sample.User": 4
    },
    "index_sizes": {
        "cacheName_protobuf": 14551
    },
    "reindexing": false
}

  • indexed_class_names キャッシュに存在するインデックスのクラス名を提供します。Protobuf の場合、値は常に org.infinispan.query.remote.impl.indexing.ProtobufValueWrapper です。
  • indexed_entities_count クラスごとにインデックスされているエンティティーの数を提供します。
  • index_sizes キャッシュ内の各インデックスのサイズをバイト単位で指定します。
  • reindexing キャッシュに対してインデックス変更操作が行われたかどうかを示す。この値が true の場合、MassIndexer はキャッシュで起動したことになります。

2.1.27.6. クエリー統計の取得 (非推奨)

GET リクエストでキャッシュに実行されたクエリーの情報を取得します。

GET /rest/v2/caches/{cacheName}/search/query/stats

Data Grid の応答

{
    "search_query_execution_count":20,
    "search_query_total_time":5,
    "search_query_execution_max_time":154,
    "search_query_execution_avg_time":2,
    "object_loading_total_time":1,
    "object_loading_execution_max_time":1,
    "object_loading_execution_avg_time":1,
    "objects_loaded_count":20,
    "search_query_execution_max_time_query_string": "FROM entity"
}

  • search_query_execution_count 実行されたクエリーの数を提供します。
  • search_query_total_time クエリーに費やされた総時間を提供します。
  • search_query_execution_max_time クエリーにかかる最大時間を指定します。
  • search_query_execution_avg_time クエリーの平均実行時間を提供します。
  • object_loading_total_time クエリー実行後にキャッシュからオブジェクトをロードするのにかかった時間の合計を提供します。
  • object_loading_execution_max_time オブジェクトのロード実行にかかる最大時間を提供します。
  • object_loading_execution_avg_time オブジェクトのロード実行にかかる最大時間を提供します。
  • objects_loaded_count ロードされたオブジェクトの数を提供します。
  • search_query_execution_max_time_query_string 実行された最も遅いクエリーを提供します。

2.1.27.7. クエリー統計情報のクリア (非推奨)

POST リクエストと ?action=clear パラメーターを使用して、ランタイムの統計情報をリセットすることができます。

POST /rest/v2/caches/{cacheName}/search/query/stats?action=clear

2.1.28. キャッシュを利用したクロスサイト・オペレーション

Data Grid REST API を使用して、クロスサイトレプリケーション操作を行います。

2.1.28.1. すべてのバックアップロケーションのステータス取得

GET リクエストですべてのバックアップロケーションのステータスを取得します。

GET /rest/v2/caches/{cacheName}/x-site/backups/

Data Grid は、以下の例のように、各バックアップロケーションのステータスを JSON 形式で応答します。

{
  "NYC": {
    "status": "online"
  },
  "LON": {
    "status": "mixed",
    "online": [
      "NodeA"
    ],
    "offline": [
      "NodeB"
    ]
  }
}

表2.15 リターンステータス

説明

online

ローカルクラスター内のすべてのノードには、バックアップの場所を含むクロスサイトビューがあります。

offline

ローカルクラスター内のノードには、バックアップの場所とのクロスサイトビューがありません。

mixed

ローカルクラスター内の一部のノードにはバックアップの場所を含むクロスサイトビューがあり、ローカルクラスター内の他のノードにはクロスサイトビューがありません。応答は、各ノードのステータスを示します。

2.1.28.2. 特定のバックアップの場所のステータスの取得

GET リクエストでバックアップロケーションのステータスを取得する。

GET /rest/v2/caches/{cacheName}/x-site/backups/{siteName}

Data Grid は、以下の例のように、サイト内の各ノードのステータスを JSON 形式で応答します。

{
  "NodeA":"offline",
  "NodeB":"online"
}

表2.16 リターンステータス

説明

online

ノードはオンラインです。

offline

ノードはオフラインです。

failed

ステータスを取得できません。リモートキャッシュがシャットダウンしているか、リクエスト中にネットワークエラーが発生した可能性があります。

2.1.28.3. バックアップの場所をオフラインにする

POST リクエストと ?action=take-offline パラメーターを使用して、バックアップの場所をオフラインにします。

POST /rest/v2/caches/{cacheName}/x-site/backups/{siteName}?action=take-offline

2.1.28.4. バックアップの場所をオンラインにする

?action=bring-online パラメーターを使用してバックアップ場所をオンラインにします。

POST /rest/v2/caches/{cacheName}/x-site/backups/{siteName}?action=bring-online

2.1.28.5. バックアップ場所への状態のプッシュ

?action=start-push-state パラメーターを使用して、キャッシュ状態をバックアップ場所にプッシュします。

POST /rest/v2/caches/{cacheName}/x-site/backups/{siteName}?action=start-push-state

2.1.28.6. 状態遷移のキャンセル

?action=cancel-push-state パラメーターを使用して状態転送操作をキャンセルします。

POST /rest/v2/caches/{cacheName}/x-site/backups/{siteName}?action=cancel-push-state

2.1.28.7. 状態遷移ステータスの取得

?action=push-state-status パラメーターを使用して状態転送操作のステータスを取得します。

GET /rest/v2/caches/{cacheName}/x-site/backups?action=push-state-status

Data Grid は、以下の例のように、各バックアップ拠点の状態移行の状況を JSON 形式で応答します。

{
   "NYC":"CANCELED",
   "LON":"OK"
}

表2.17 リターンステータス

説明

SENDING

バックアップ場所への状態転送が進行中です。

OK

状態の転送が正常に完了しました。

ERROR

状態転送でエラーが発生しました。ログファイルを確認してください。

CANCELLING

状態移行のキャンセルが進行中です。

2.1.28.8. 状態遷移ステータスのクリア

?action=clear-push-state-status パラメーターを使用して送信サイトの状態転送ステータスをクリアします。

POST /rest/v2/caches/{cacheName}/x-site/local?action=clear-push-state-status

2.1.28.9. オフラインにする条件の変更

特定の条件が満たされると、サイトはオフラインになります。オフラインにするパラメーターを変更して、バックアップロケーションが自動的にオフラインになるタイミングを制御します。

手順

  1. GET リクエストと take-offline-config パラメーターで設定されたテイクオフラインパラメーターを確認します。

    GET /rest/v2/caches/{cacheName}/x-site/backups/{siteName}/take-offline-config

    Data Grid のレスポンスには、以下のように after_failuresmin_wait フィールドがあります。

    {
      "after_failures": 2,
      "min_wait": 1000
    }
  2. PUT リクエストの本文のオフライン取得パラメーターを変更します。

    PUT /rest/v2/caches/{cacheName}/x-site/backups/{siteName}/take-offline-config

    操作が正常に完了すると、サービスは 204 (No Content) を返します。

2.1.28.10. 受信サイトからの状態遷移のキャンセル

2 つのバックアップ場所間の接続が切断された場合、プッシュを受信しているサイトでの状態転送をキャンセルできます。

?action=cancel-receive-state パラメーターで、リモートサイトからの状態転送をキャンセルし、ローカルキャッシュの現在の状態を維持する。

POST /rest/v2/caches/{cacheName}/x-site/backups/{siteName}?action=cancel-receive-state

2.1.29. ローリングアップグレード

Data Grid クラスター間でキャッシュデータのローリングアップグレードを実行します

2.1.29.1. ソースクラスターの接続

ターゲット・クラスターとソース・クラスターの接続は

POST /rest/v2/caches/{cacheName}/rolling-upgrade/source-connection

本文として JSON 形式の remote-store 定義を提供する必要があります。

JSON

{
  "remote-store": {
    "cache": "my-cache",
    "shared": true,
    "raw-values": true,
    "socket-timeout": 60000,
    "protocol-version": "2.9",
    "remote-server": [
      {
        "host": "127.0.0.2",
        "port": 12222
      }
    ],
    "connection-pool": {
      "max-active": 110,
      "exhausted-action": "CREATE_NEW"
    },
    "async-executor": {
      "properties": {
        "name": 4
      }
    },
    "security": {
      "authentication": {
        "server-name": "servername",
        "digest": {
          "username": "username",
          "password": "password",
          "realm": "realm",
          "sasl-mechanism": "DIGEST-MD5"
        }
      },
      "encryption": {
        "protocol": "TLSv1.2",
        "sni-hostname": "snihostname",
        "keystore": {
          "filename": "/path/to/keystore_client.jks",
          "password": "secret",
          "certificate-password": "secret",
          "key-alias": "hotrod",
          "type": "JKS"
        },
        "truststore": {
          "filename": "/path/to/gca.jks",
          "password": "secret",
          "type": "JKS"
        }
      }
    }
  }
}

securityasync-executorconnection-pool など、いくつかの要素はオプションです。この設定には、最低限、キャッシュ名、false に設定された raw-values、ソースクラスター内の単一ポートのホスト/IP が含まれていなければなりません。remote-store 設定の詳細については、XSD Schemaを参照してください。

操作が正常に完了した場合、サービスは 204(No Content) を返します。ターゲット・クラスターがソース・クラスターに既に接続されている場合は、ステータス 304(Not Modified) を返します。

2.1.29.2. ソースクラスター接続の詳細の取得

キャッシュの remote-store 定義を取得するには、 GET リクエストを使用します。

GET /rest/v2/caches/{cacheName}/rolling-upgrade/source-connection

キャッシュが以前に接続されていた場合は、関連付けられた remote-store の設定を JSON 形式とステータス 200(OK) で返します。それ以外の場合は、404(見つかりません) ステータスを返します。

注記

これはクラスター全体の操作ではなく、REST の呼び出しが処理されたノードのキャッシュのリモートストアのみを返します。

2.1.29.3. キャッシュが接続されているかどうかの確認

キャッシュがリモートクラスターに接続されているかどうかを確認するには、HEAD リクエストを使用します。

HEAD /rest/v2/caches/{cacheName}/rolling-upgrade/source-connection

クラスターのすべてのノードにおいて、cacheName に 1 つのリモートストアが設定されている場合は 200(OK)、そうでない場合は 404(NOT_FOUND) を返します。

2.1.29.4. データの同期

ソースクラスターからターゲットクラスターへのデータの同期には、POST リクエストと ?action=sync-data パラメーターを使用します。

POST /rest/v2/caches/{cacheName}?action=sync-data

操作が完了すると、Data Grid はターゲットクラスターにコピーされたエントリーの合計数で応答します。

2.1.29.5. ソースクラスターの接続

ターゲット・クラスターにデータを同期させた後、DELETE リクエストでソース・クラスターから切断します。

DELETE /rest/v2/caches/{cacheName}/rolling-upgrade/source-connection

操作が正常に完了すると、サービスは 204 (No Content) を返します。ソースが接続されていない場合、コード 304(変更なし) を返します。