HashIndex プラグイン属性

次の属性を使用して、HashIndex プラグインを構成できます。 これらの属性は、属性 HashIndex を使用しているか複合 HashIndex を使用しているか、または範囲を指定した索引付けが使用可能かどうかといったプロパティーを定義します。

属性

Name
索引の名前を指定します。名前は各マップで固有で なければなりません。この名前は、バックアップ・マップのオブジェクト・マップ・インスタンスから索引オブジェクトを取り出すのに使用されます。
AttributeName
索引に対する属性の名前をコンマで区切ったリストを指定します。フィールド・アクセス索引の場合、属性名はフィールド名 と同じです。プロパティー・アクセス索引の場合、属性名は JavaBean 互換のプロパティー名です。属性名が 1 つだけであれば、HashIndex は単一属性索引です。 この属性がリレーションシップの場合は、リレーションシップ索引でもあります。 複数の属性名が含まれている場合は、HashIndex は複合索引です。
FieldAccessAttribute
非エンティティー・マップに使用されます。true の場合、フィールドを使用してオブジェクトに直接アクセスします。指定されていないか、false の場合、データのアクセスには、属性の getter メソッドが使用されます。
POJOKeyIndex
非エンティティー・マップに使用されます。true の場合、索引はマップのキー部分でオブジェクトをイントロスペクトします。この設定は、キーが複合キーで、値にキーが組み込まれていない場合に役立ちます。指定されていないか、false の場合、索引はマップの値部分でオブジェクトをイントロスペクトします。
RangeIndex
true の場合、範囲索引付けが使用可能にされ、アプリケーションは取り出された索引オブジェクトを MapRangeIndex インターフェースにキャストできます。RangeIndex プロパティーが false と構成されている場合は、アプリケーションは取り出された索引オブジェクトを MapIndex インターフェースにしかキャストできません。

単一属性 HashIndex と複合 HashIndex

HashIndex の AttributeName プロパティー に複数の属性名が含まれている場合、HashIndex は複合索引です。そうではなく、含まれている属性名 が 1 つのみの場合は、単一属性索引です。例えば、AttributeName プロパティー値が city,state,zipcode であるような、複合 HashIndex が考えられます。この例では、3 つの属性がコンマで区切られています。もし AttributeName プロパティー値が単に zipcode であれば、属性は 1 つだけなので、単一属性 HashIndex であるということになります。

複合 HashIndex は、 検索条件に多くの属性が関係するような場合に、キャッシュに入れられたオブジェクトを検索する 効果的な方法を提供します。ただし、範囲索引はサポートしないため、 RangeIndex プロパティーは false に設定されている必要があります。

詳しくは、複合索引の使用を参照してください。

リレーションシップ HashIndex

単一属性 HashIndex の索引属性が、単一値または複数値のリレーションシップ の場合、その HashIndex はリレーションシップ HashIndex です。リレーションシップ HashIndex の場合、 HashIndex の RangeIndex プロパティーは「false」に設定されている必要があります。

リレーションシップ HashIndex は、循環参照を使用する照会や、IS NULL、IS EMPTY、SIZE、および MEMBER OF 照会フィルターを使用する照会を速くすることができます。詳しくは、索引を使用した照会の最適化を参照してください。

キー HashIndex

非エンティティー・マップの場合、HashIndexPOJOKeyIndex プロパティーが true に設定されていると、HashIndex はキー HashIndex であり、エントリーのキー部分が索引付けに使用されます。HashIndex の AttributeName プロパティーが指定されていないと、キー全体に索引が付けられます。指定されていると、キー HashIndex は単一属性 HashIndex にしかなりません。

例えば、以下のプロパティーを前記の例に追加すると、POJOKeyIndex プロパティーの値が true のため、HashIndex はキー HashIndex になります。

<property name="POJOKeyIndex" type="boolean" value="true" 
description="indicates if POJO key HashIndex" />

前記のキー索引の例では、AttributeName プロパティーの値が employeeCode として指定されているため、索引付き属性はマップ・エントリーのキー部分の employeeCode フィールドです。 キー索引をマップ・エントリーのキー部分全体で作成する場合は、AttributeName プロパティーを除去してください。

範囲 HashIndex

HashIndex の RangeIndex プロパティーが true に設定されている場合、その HashIndex は範囲索引であり、MapRangeIndex インターフェースをサポートできます。MapRangeIndex は、 範囲関数 greater than や less than、あるいは両方を使用するデータ検出をサポートしますが、MapIndex は equals 関数 のみをサポートします。単一属性索引の場合、RangeIndex プロパティーを true に設定できるのは、索引付けられる属性のタイプが Comparable の場合に限ります。単一属性索引が照会によって使用される場合、RangeIndex プロパティーは true に設定されていなければならず、索引付けられる属性のタイプは Comparable でなければなりません。リレーションシップ HashIndex および複合 HashIndex の場合、RangeIndex プロパティーは false に設定されていなければなりません。

RangeIndex プロパティーの値が true なので、前記の例は範囲 HashIndex です。

以下の表に、範囲索引の使用についての要約を示します。

表 1. 範囲索引のサポート. HashIndex のタイプが範囲索引をサポートするかどうかを記述します。
HashIndex タイプ 範囲索引のサポート
単一属性 HashIndex: 索引付けられるキーまたは属性のタイプは Comparable である はい
単一属性 HashIndex: 索引付けられるキーまたは属性のタイプは Comparable でない いいえ
複合 HashIndex いいえ
リレーションシップ HashIndex いいえ

HashIndex プラグインを使用した照会の最適化

索引を定義することで、照会パフォーマンスを大きく向上させることができます。WebSphere® eXtreme Scale 照会は、組み込みの HashIndex プラグインを使用して、照会パフォーマンスを向上させることができます。索引の使用は、照会パフォーマンスを大きく向上させることができますが、トランザクションのマップ操作のパフォーマンスに影響を与えることもあります。