Atributos do Plug-in HashIndex

É possível usar os seguintes atributos para configurar o plug-in HashIndex. Esses atributos definem propriedades, como se você estiver usando um atributo ou HashIndex composto ou se a indexação do intervalo estiver ativada.

Atributos

Name
Especifica o nome do índice. O nome deve ser exclusivo para cada mapa. O nome é usado para recuperar o objeto do da instância de mapa de objetos para o mapa de apoio.
AttributeName
Especifica os nomes delimitados por vírgula dos atributos a serem indexados. Para índices acessados por campo, os nomes de atributos são equivalentes aos nomes de campo. Para índices acessados por propriedade, os nomes de atributos são os nomes da propriedade compatíveis com JavaBean. Se apenas um nome de atributo existir, o HashIndex será um índice de atributo único. Se este atributo for um relacionamento, ele também será um índice de relacionamento. Se múltiplos nomes de atributo são incluídos nos nomes de atributo, o HashIndex é um índice composto.
FieldAccessAttribute
Usado para mapas sem entidade. Se true, o objeto será acessado usando os campos diretamente. Se não for especificado ou se especificar false, o método getter para o atributo será usado para acessar os dados.
POJOKeyIndex
Usado para mapas sem entidade. Se especificar true, o índice examinará o objeto na parte da chave do mapa. Esta configuração é útil quando a chave é uma chave composta e o valor não tem a chave integrada dentro dele. Se não for especificado ou se especificar false, o índice examinará o objeto na parte do valor do mapa.
RangeIndex
Se especificar true, a indexação do intervalo será ativada e o aplicativo poderá efetuar cast do objeto do índice recuperado para a interface MapRangeIndex. Se a propriedade RangeIndex for configurada como false, o aplicativo poderá efetuar cast do objeto do índice recuperado apenas para a interface MapIndex.

HashIndex de Atributo Único Versus HashIndex Composto

Quando a propriedade AttributeName de HashIndex inclui diversos nomes de atributos, o HashIndex será um índice composto. Caso contrário, se ela incluir somente um nome de atributo, ela é um índice de atributo único. Por exemplo, o valor da propriedade AttributeName de um HashIndex composto pode ser city,state,zipcode. Ela inclui três atributos delimitados por vírgulas. Se a propriedade valor AttributeName for apenas zipcode que tem apenas um atributo, ele será um HashIndex de atributo único.

O HashIndex composto fornece uma maneira eficiente de consultar objetos em cache quando os critérios de busca envolvem muitos atributos. No entanto, ele não suporta o índice de intervalo e sua propriedade RangeIndex deve ser configurada para false.

Para obter mais informações, consulte Usando um Índice Composto.

HashIndex de Relacionamento

Se o atributo indexado de um HashIndex de atributo único for um relacionamento, tanto com valor único ou múltiplos valores, o HashIndex é um HashIndex de relacionamento. Para HashIndex de relacionamento, a propriedade RangeIndex de HashIndex deve ser definida para “false”.

O HashIndex de relacionamento pode acelerar as consultas que usam referências cíclicas ou usam os filtros de consulta IS NULL, IS EMPTY, SIZE e MEMBER OF. Para obter mais informações, consulte o Otimização de Consulta Utilizando Índices.

HashIndex Principal

Para mapas sem entidade, quando a propriedade POJOKeyIndex do HashIndex é configurada para true, o HashIndex é um HashIndex principal e a parte da chave da entrada é usada para indexação. Quando a propriedade AttributeName do HashIndex não é especificada, a chave inteira é indexada; caso contrário, o HashIndex principal poderá ser apenas um HashIndex de atributo único.

Por exemplo, a inclusão da seguinte propriedade na amostra precedente faz com que o HashIndex se torne o HashIndex principal porque o valor da propriedade POJOKeyIndex é true.

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

No exemplo do índice de chave anterior, como o valor da propriedade AttributeName é especificado como employeeCode, o atributo indexado é o campo employeeCode da parte da chave da entrada do mapa. Se você desejar construir o índice principal na parte da chave inteira da entrada do mapa, remova a propriedade AttributeName.

HashIndex de Intervalo

Quando a propriedade RangeIndex do HashIndex é configurada para true, o HashIndex é um índice de intervalo e pode suportar a interface MapRangeIndex. Uma implementação MapRangeIndex suporta funções para localizar dados usando funções de intervalo, como maior que, menor que, ou ambas, enquanto que um MapIndex suporta apenas funções iguais. Para um índice de atributo único, a propriedade RangeIndex pode ser configurada para true apenas se o atributo indexado for do tipo Comparable. Se o índice de atributo único for usado pela consulta, a propriedade RangeIndex deverá ser configurada para true e o atributo indexado deverá ser do tipo Comparable. Para o HashIndex de relacionamento e o HashIndex composto, a propriedade RangeIndex deve ser configurada para false.

A amostra precedente é um HashIndex de intervalo porque o valor da propriedade RangeIndex é true.

A tabela a seguir fornece um resumo do uso do índice de intervalo.

Tabela 1. Suporte para Índice de Intervalo. Define se os tipos de HashIndex suportam o índice de intervalo.
Tipo HashIndex Suporta índice de intervalo
HashIndex de atributo único: chave ou atributo indexado é do tipo Comparable Sim
HashIndex de atributo único: chave ou atributo indexado não é do tipo Comparable Não
HashIndex Composto Não
HashIndex de Relacionamento Não

Otimização de Consulta com Plug-ins HashIndex

Definir índices pode significativamente melhorar o desempenho da consulta. As consultas do WebSphere eXtreme Scale podem usar plug-insHashIndex integrados para melhorar o desempenho das consultas. Embora o uso de índices possa aprimorar significativamente o desempenho da consulta, isso pode ter um impacto no desempenho nas operações do mapa transacional.