Attributs du plug-in HashIndex

Vous pouvez utiliser les attributs suivants pour configurer le plug-in HashIndex Ces attributs définissent des propriétés comme si vous utilisiez un attribut ou un index HashIndex composite ou que l'indexation de plage était activée.

Attributs

Name
Spécifie le nom de l'index. Le nom doit être unique pour chaque mappe. Ce nom est utilisé pour extraire l'objet d'index de l'instance de mappe d'objet pour la mappe de sauvegarde.
AttributeName
Spécifie à l'index les noms des attributs, séparés par des virgules. Pour les index d'accès par zone, les noms d'attributs sont équivalents aux noms des zones. Pour les index d'accès par propriété, les noms d'attributs sont les noms de propriétés compatibles JavaBean. Si un seul nom d'attribut existe, HashIndex est un index d'attribut unique. Si cet attribut est une relation, il est également un index de relation. Si les noms d'attributs recouvrent plusieurs attributs, l'index HashIndex sera un index composite.
FieldAccessAttribute
Utilisé pour les mappes de non-entités. Si la valeur est égale à true, l'accès à l'objet s'effectue par les zones. S'il n'est pas défini ou a la valeur false, la méthode getter de l'attribut est utilisée pour accéder aux données.
POJOKeyIndex
Utilisé pour les mappes de non-entités. Si true, l'index introspecte l'objet dans la partie clé de la mappe. Ce paramètre est utile lorsque la clé est une clé composite et que la valeur ne contient pas la clé intégrée. Si l'attribut n'est pas défini ou que sa valeur est false, l'index introspecte l'objet dans la partie clé de la mappe.
RangeIndex
Si true, l'indexation de plage est activée et l'application peut transtyper l'objet d'index extrait vers l'interface MapRangeIndex. Si la propriété RangeIndex a la valeur false, l'application peut transtyper uniquement l'objet d'index extrait vers l'interface MapIndex.

HashIndex à attribut unique ou HashIndex composite ?

Lorsque la propriété AttributeName de l'index HashIndex contient plusieurs noms d'attributs, l'index HashIndex est un index composite. Dans le cas contraire, si l'index inclut un seul nom d'attribut, il s'agit d'un index à attribut unique. Par exemple, la valeur de la propriété AttributeName d'un HashIndex composite pourra être city,state,zipcode. L'index contient trois attributs séparés par des virgules. Si la valeur de la propriété AttributeName est uniquement zipcode qui n'a qu'un seul attribut, il s'agit d'un index HashIndex à attribut unique.

Les index HashIndex composites constituent un mode efficace de consultation des objets mis en cache lorsque les critères de recherche impliquent plusieurs attributs. Toutefois, ils ne prennent pas en charge les index de plage et la propriété RangeIndex doit avoir la valeur false.

Pour plus d'informations, voir Utilisation d'un index composite.

HashIndex de relation

Si l'attribut indexé d'un HashIndex à attribut unique est une relation, que ce soit à valeur unique ou à valeurs multiples, l'index HashIndex est un HashIndex de relation. Pour l'index HashIndex de relation, la propriété RangeIndex de l'index HashIndex doit être définie sur false.

Les HashIndex de relation peuvent accélérer l'exécution des requêtes qui exploitent des références cycliques ou qui utilisent les filtres de requête IS NULL, IS EMPTY, SIZE et MEMBER OF. Pour plus d'informations, voir Optimisation des requêtes à l'aide d'index.

HashIndex de clés

Dans le cas de mappes de non-entité, lorsque la propriété POJOKeyIndex de HashIndex a la valeur true, l'index HashIndex est un index HashIndex de clés et la partie clé de l'entrée est utilisée pour l'indexation. Lorsque la propriété AttributeName du HashIndex n'est pas spécifiée, la totalité de la clé est indexée. Sinon, le HashIndex de clés ne peut être qu'un HashIndex à attribut unique.

Par exemple, l'ajout de la propriété suivante dans l'exemple précédent transforme le HashIndex en HashIndex de clés car la propriété POJOKeyIndex a la valeur true.

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

Dans l'exemple d'index de clé précédent, comme la propriété AttributeName a la valeur employeeCode, l'attribut indexé est la zone employeeCode de la partie clé de l'entrée de mappe. Si vous souhaitez générer un index de clé sur la totalité de la partie clé de l'entrée de mappe, supprimez la propriété AttributeName.

HashIndex de plage

Lorsque la propriété RangeIndex de HashIndex a la valeur true, l'index HashIndex est un index de plage et il peut prendre en charge l'interface MapRangeIndex. Une implémentation MapRangeIndex prend en charge des fonctions de recherche de données à l'aide des fonctions de plage (range) telles que greater than, less than ou les deux, alors qu'un index MapIndex prend uniquement en charge les fonctions d'égalité (equals). Pour un index à attribut unique, la propriété RangeIndex ne peut avoir la valeur true que si l'attribut indexé est de type Comparable. Si l'index à attribut unique est utilisé par la requête, la propriété RangeIndex doit avoir la valeur true et l'attribut indexé doit être de type Comparable. Pour l'index HashIndex de relation et l'index HashIndex composite, la propriété RangeIndex doit avoir la valeur false.

L'exemple qui précède est un index HashIndex de plage car la propriété RangeIndex a la valeur true.

Le tableau qui suit récapitule l'utilisation de l'index de plage.

Tableau 1. Prise en charge de l'index de plage. Indique si les types de HashIndex prennent ou non en charge l'index de plage.
Type de HashIndex Prise en charge de l'index de plage
HashIndex à attribut unique : la clé ou l'attribut indexé est de type Comparable Oui
HashIndex à attribut unique : la clé ou l'attribut indexé n'est pas de type Comparable Non
HashIndex composite Non
HashIndex de relation Non

Optimisation des requêtes avec des plug-in HashIndex

La définition d'index peut améliorer sensiblement les performances des requêtes. Les requêtes WebSphere eXtreme Scale peuvent utiliser des plug-in HashIndex pour améliorer les performances des requêtes. Même si l'utilisation des index peut considérablement améliorer les performances des requêtes, elle n'est pas sans impact sur les performances des opérations transactionnelles des mappes.