11.2.2. インデックス化


Red Hat Data Grid でのインデックス作成はキャッシュごとに行われ、デフォルトではキャッシュはインデックス化されません。インデックスの有効化は必須ではありませんが、インデックスを使用するクエリーにはパフォーマンスが非常に高くなります。一方、インデックスを有効にすると、クラスターの書き込みスループットに悪影響を及ぼす可能性があるため、キャッシュの種類やユースケースに応じてこの影響を最小限に抑えるために、一部のストラテジーの クエリーパフォーマンスガイド を確認してください。

11.2.2.1. 設定

11.2.2.1.1. 一般的な形式

XML でインデックスを有効にするには、<indexing> 要素と インデックス インデックス モード)をキャッシュ設定に追加し、必要に応じて追加のプロパティーを指定する必要があります。

<infinispan>
   <cache-container default-cache="default">
      <replicated-cache name="default">
         <indexing index="ALL">
            <property name="property.name">some value</property>
         </indexing>
      </replicated-cache>
   </cache-container>
</infinispan>
Copy to Clipboard Toggle word wrap

プログラムによる:

import org.infinispan.configuration.cache.*;

ConfigurationBuilder cacheCfg = ...
cacheCfg.indexing().index(Index.ALL)
      .addProperty("property name", "propery value")
Copy to Clipboard Toggle word wrap
11.2.2.1.2. インデックス名

index 要素内の各プロパティーの前にインデックス名が付けられ、org.infinispan.sample.Car という名前 のインデックスは local-heap です。

    ...
    <indexing index="ALL">
        <property name="org.infinispan.sample.Car.directory_provider">local-heap</property>
    </indexing>
    ...
</infinispan>
Copy to Clipboard Toggle word wrap
cacheCfg.indexing()
   .index(Index.ALL)
      .addProperty("org.infinispan.sample.Car.directory_provider", "local-heap")
Copy to Clipboard Toggle word wrap

Red Hat Data Grid は、キャッシュに存在する各エンティティーのインデックスを作成し、これらのインデックスを個別に設定できます。@Indexed アノテーションが付けられたクラスの場合、インデックス名はアノテーションの name 引数で上書きされない限り、完全修飾クラス になります。

以下のスニペットでは、すべてのエンティティーのデフォルトストレージは infinispan ですが、Boat インスタンスは boatIndex という名前のインデックスの local-heap に保存されます。空プレーン エンティティーは local-heap にも保存されます。その他のエンティティーのインデックスは、デフォルト で接頭辞が付けられたプロパティーで設定されます。

package org.infinispan.sample;

@Indexed(name = "boatIndex")
public class Boat {

}

@Indexed
public class Airplane {

}
Copy to Clipboard Toggle word wrap
    ...
    <indexing index="ALL">
        <property name="default.directory_provider">infinispan</property>
        <property name="boatIndex.directory_provider">local-heap</property>
        <property name="org.infinispan.sample.Airplane.directory_provider">
            ram
        </property>
    </indexing>
    ...
</infinispan>
Copy to Clipboard Toggle word wrap
11.2.2.1.3. インデックス化されたエンティティーの指定

Red Hat Data Grid は、キャッシュ内の異なるエンティティータイプのインデックスを自動的に認識および管理できます。Red Hat Data Grid の今後のバージョンではこの機能が削除されるため、インデックス化されるタイプを事前に宣言することが推奨されます(完全修飾クラス名でリストされます)。これは、xml で行うことができます。

<infinispan>
   <cache-container default-cache="default">
      <replicated-cache name="default">
         <indexing index="ALL">
            <indexed-entities>
                <indexed-entity>com.acme.query.test.Car</indexed-entity>
                <indexed-entity>com.acme.query.test.Truck</indexed-entity>
            </indexed-entities>
         </indexing>
      </replicated-cache>
   </cache-container>
</infinispan>
Copy to Clipboard Toggle word wrap

プログラムを使用する場合

 cacheCfg.indexing()
      .index(Index.ALL)
       .addIndexedEntity(Car.class)
       .addIndexedEntity(Truck.class)
Copy to Clipboard Toggle word wrap

サーバーモードでは、'indexed-entities' 要素の下に一覧表示されるクラス名は、JBoss Modules モジュール識別子、スロット名、および完全修飾クラス名で構成される 'extended' クラス名形式を使用する必要があります。これらの 3 つのコンポーネントは、':' 文字によって区切られます(例: "com.acme.my-module-with-entity-classes:my-slot:com.acme.query.test.Car")。エンティティークラスは、参照されるモジュールに置く必要があります。これは、サーバーの 'modules' フォルダーにデプロイされるユーザー提供モジュールか、'deployments' フォルダーにデプロイされるプレーン jar のいずれかになります。問題のモジュールはキャッシュの自動依存関係となるため、最終的に再デプロイするとキャッシュが再起動されます。

注記

サーバーに対してのみ、'extended' クラス名の使用要件をフォローできず、プレーンクラス名を使用すると、誤った ClassLoader が使用されているためクラスがないために解決に失敗します(Red Hat Data Grid の内部クラスパスが使用されている)。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る