Filtros de intervalo - Amazon Cloud Directory

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Filtros de intervalo

Várias APIs de lista do Cloud Directory permitem especificar um filtro na forma de um intervalo. Esses filtros permitem que você selecione subconjuntos dos links anexados ao nó especificado de maneira eficiente.

Os intervalos são fornecidos normalmente como um mapa (matriz de pares de chave-valor) cujas chaves são identificadores de atributos e cujos valores são os intervalos correspondentes. Isso permite filtrar links cujas identidades consistem em um ou mais atributos. Por exemplo, uma configuração de TypedLink para modelar uma relação de função para determinar permissões pode ter os atributos RoleType e Authorizer. Uma chamada ListOutgoingTypedLinks poderia especificar intervalos para filtrar o resultado como RoleType: “Admin” e Authorizer: “Julia”. O mapa de intervalos usado para filtrar uma única solicitação de lista deve conter somente os atributos que definem a identidade do link (o OrderedIndexedAttributeList de um índice ou o IdentityAttributeOrder de um TypedLink), mas não precisa conter intervalos para todos eles. Os intervalos ausentes serão preenchidos automaticamente com os intervalos que abrangem todos os valores possíveis (do PRIMEIRO ao ÚLTIMO).

Se você considerar cada atributo como a definição de um domínio plano independente de valores, as estruturas do intervalo definirão dois pontos lógicos nesse domínio — os pontos de início e de término — e o intervalo corresponderá a todos os pontos possíveis entre esses pontos. O StartValue e o EndValue de estrutura do intervalo definem a base para esses dois pontos com os “modos” os refinando adicionalmente para indicar se cada próprio ponto deve ser incluído ou excluído do intervalo. No exemplo de RoleType: "Admin" acima, os dois valores do atributo RoleType seriam “Admin”, e os modos seriam “INCLUSIVE” (escritos como [“Admin” to “Admin”]). Um filtro para uma chamada de ListIndex onde o índice é definido no LastName de uma faceta de usuário pode usar StartValue=”D”, StartMode=INCLUSIVE, EndValue: “G”, EndMode:EXCLUSIVE para reduzir a listagem a nomes que começam com D, E ou F.

O ponto de início de um intervalo sempre deve preceder ou ser igual ao ponto de término. O Cloud Directory retornará um erro se EndValue preceder o StartValue. Os valores também devem ser do mesmo tipo primitivo que o atributo que estão filtrando, valores de String para um atributo String, Integer para um atributo Integer e assim por diante. StartValue=“D”, StartMode=EXCLUSIVE, EndValue=“D”, EndMode=INCLUSIVE é inválido, por exemplo, porque o ponto de término inclui o valor enquanto o ponto de início segue o valor.

Existem três modos especiais que podem ser usados por pontos de início ou de término. Os seguintes modos não requerem que o campo de valor correspondente seja especificado, pois implicam uma posição em si mesmos.

  • FIRST - precede todos os valores possíveis no domínio. Quando usado para o ponto de início, corresponde a todos os valores possíveis do início do domínio até o ponto de término. Quando usado para o ponto de término, nenhum valor no domínio corresponderá ao intervalo.

  • LAST - segue todos os valores possíveis no domínio. Quando usado para o ponto de término, corresponde a todos os valores que seguem o ponto de início, incluindo valores ausentes. Quando usado para o ponto de início, nenhum valor no domínio corresponderá ao intervalo.

  • LAST_BEFORE_MISSING_VALUES - este modo só é útil para atributos opcionais em que o valor pode ser omitido (consulte Valores ausentes). Corresponde ao ponto entre os valores ausentes e os valores reais do domínio. Quando usado para o ponto de término, corresponde a todos os valores não ausentes do domínio que seguem o ponto de início. Quando usado para o ponto de início, exclui todos os valores não ausentes do domínio. Se o atributo for exigido, esse modo será equivalente a LAST, pois não pode haver nenhum valor ausente.

Várias limitações de intervalo

O Cloud Directory limita padrões onde há vários atributos para garantir o processamento de solicitações eficiente e de baixa latência. Cada link com vários atributos de identificação especifica-os em uma ordem bem-definida. Por exemplo, o exemplo de Role acima define o atributo RoleType como o mais significativo, e o atributo Authorizer como o menos significativo. Uma solicitação de lista pode especificar somente um único intervalo “de qualificação” que não seja 1) um único valor ou 2) que abranja todos os valores possíveis (pode haver vários intervalos que correspondem a esses dois requisitos). Todos os intervalos de atributos mais significativos que o atributo do intervalo de qualificação devem especificar um único valor, e qualquer intervalo de intervalos menos significativos deve abranger todos os valores possíveis. No exemplo de Role, os conjuntos de filtros (RoleType:”Admin”, Authorizer:[“J” to “L”]) (valor único + intervalo de qualificação), (RoleType:[”Admin” to “User”]) (intervalo de qualificação + intervalo abrangente implícito) e (RoleType:[FIRST to LAST]) (dois intervalos abrangentes, um implícito) são todos exemplos de conjuntos válidos de filtros. (RoleType:[FIRST to LAST], Authorizer:”Julia”) não é um conjunto válido, pois o intervalo abrangente é mais significativo que o intervalo de valor único.

Alguns padrões úteis ao preencher as estruturas de intervalos, incluem:

Corresponder a um único valor

Especifique o valor para StartValue e EndValue e defina os dois modos como “INCLUSIVE”.

Exemplo: StartValue=“Admin”, StartMode=INCLUSIVE, EndValue=“Admin”, EndMode=INCLUSIVE

Corresponder a um prefixo

Especifique o prefixo como o StartValue com modo INCLUSIVE, e o primeiro valor depois do prefixo como EndValue com um modo EXCLUSIVE.

Exemplo: StartValue=“Jo”, StartMode=INCLUSIVE, EndValue=“Jp”, EndMode=EXCLUSIVE (“p” is the next character value after “o”)

Filtrar por maior que um valor

Especifique o valor para o StartValue com modo EXCLUSIVE, e LAST como o EndMode (ou LAST_BEFORE_MISSING_VALUES para excluir valores ausentes, se aplicável).

Exemplo: StartValue=127, StartMode=EXCLUSIVE, EndValue=null, EndMode=LAST

Filtrar por menor que ou igual a um valor

Especifique o valor para o EndValue com modo INCLUSIVE, e FIRST como o StartMode.

Valores ausentes

Quando um atributo é marcado como opcional no esquema, seu valor pode ser “ausente” uma vez que ele não precisaria ter sido fornecido quando a faceta foi anexada ou o atributo poderia ter sido excluído subsequentemente. Se o objeto com um valor ausente for anexado a um índice, o link do índice ainda estará presente, mas movido para o final do conjunto de links. Uma chamada para ListIndex retornará primeiro todos os links onde os atributos indexados estão todos presentes antes de retornar os links onde um ou mais estão ausentes. Isso é aproximadamente semelhante ao valor NULL de um banco de dados relacional, com esses valores ordenados depois dos valores não NULL. Você pode especificar se um intervalo inclui esses valores ausentes ou não escolhendo os modos LAST ou LAST_BEFORE_MISSING_VALUES. Por exemplo, você fornece um filtro para uma chamada de ListIndex para retornar apenas os valores ausentes em um índice filtrando com o intervalo [LAST_BEFORE_MISSING_VALUES to LAST].