Filtri di intervallo - Amazon Cloud Directory

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Filtri di intervallo

VCloud Directory API consentono di specificare un filtro sotto forma di intervallo. Questi filtri ti consentono di selezionare in modo efficiente subset dei collegamenti associati al nodo specificato.

In genere, gli intervalli vengono forniti come mappa (matrice di coppie chiave-valore), le cui chiavi sono identificatori di attributo e i cui valori sono gli intervalli corrispondenti. In questo modo puoi filtrare i collegamenti le cui identità sono costituite da uno o più attributi. Ad esempio, una configurazione TypedLink per il modellamento di una relazione Role per determinare le autorizzazioni potrebbe presentare entrambi gli attributi RoleType e Authorizer. Una chiamata ListOutgoingTypedLinks potrebbe quindi specificare gli intervalli per filtrare il risultato a RoleType:"Admin" e Authorizer:"Julia". La mappa di intervalli utilizzati per filtrare una singola richiesta di elenco deve contenere solo attributi che definiscono l'identità del collegamento (un OrderedIndexedAttributeList dell'indice o un IdentityAttributeOrder di TypedLink), ma non deve contenere intervalli di tutti gli attributi. Gli intervalli mancanti verranno compilati automaticamente con intervalli che comprendono tutti i valori possibili (da FIRST a LAST).

Considerando che ogni attributo definisce un dominio flat indipendente di valori, le strutture di intervallo definiscono due punti logici in tale dominio, ovvero i punti di inizio e fine. L'intervallo soddisfa tutti i punti possibili tra tali punti. I valori StartValue e EndValue della struttura dell'intervallo definiscono la base per questi due punti, dove le "modalità" li perfezionano ulteriormente per indicare se ciascun punto deve essere incluso o escluso dall'intervallo. Nell'esempio precedente RoleType:”Admin”, i valori dell'attributo di RoleType sarebbero entrambi “Admin” e le modalità sono entrambe “INCLUSIVE” (scritte come [“Admin” ad “Admin”]). Un filtro per una chiamata ListIndex in cui l'indice è definito sul valore LastName di un facet User potrebbe utilizzare StartValue=”D”, StartMode=INCLUSIVE, EndValue:”G”, EndMode:EXCLUSIVE per limitare l'elencazione di nomi che iniziano con D, E o F.

Il punto di avvio di un intervallo deve sempre precedere o essere uguale al punto di fine. Cloud Directory restituirà un errore se EndValue precede StartValue. I valori devono inoltre essere dello stesso tipo primitivo dell'attributo che filtrano: i valori String per un attributo String, Integer per un attributo Integer e così via. Ad esempio, StartValue=“D”, StartMode=EXCLUSIVE, EndValue=“D”, EndMode=INCLUSIVE non è valido, in quanto il punto di fine include il valore, mentre il punto di avvio segue il valore.

Esistono tre modalità speciali utilizzabili sia dai punti di avvio che dai punti di fine. Le modalità seguenti non richiedono la specificazione del campo del valore corrispondente, in quanto implicano una posizione a sé stante.

  • FIRST: precede tutti i valori possibili nel dominio. Quando utilizzato per il punto di avvio, soddisfa tutti i valori possibili dall'inizio del dominio fino al punto di fine. Quando utilizzato per il punto di fine, nessun valore nel dominio soddisferà l'intervallo.

  • LAST: segue tutti i valori possibili nel dominio. Quando utilizzato per il punto di fine, soddisfa tutti i valori possibili che seguono il punto di avvio, inclusi i valori mancanti. Quando utilizzato per il punto di avvio, nessun valore nel dominio soddisferà l'intervallo.

  • LAST_BEFORE_MISSING_VALUES: questa modalità è utile solo per gli attributi opzionali in cui il valore può essere omesso (consulta Valori mancanti). Corrisponde al punto tra i valori mancanti e i valori di dominio reali. Quando utilizzato per il punto di fine, soddisfa tutti i valori di dominio non mancanti che seguono il punto di avvio. Quando usato per il punto di inizio, esclude tutti i valori di dominio non mancanti. Se l'attributo è obbligatorio, questa modalità è equivalente a LAST, in quanto non possono esserci valori mancanti.

Limitazioni di intervalli multipli

Cloud Directory limita i modelli in cui sono presenti più attributi per garantire un'elaborazione delle richieste efficiente e a bassa latenza. Ciascun collegamento con più attributi di identificazione li specifica in un ordine ben definito. Ad esempio, l'esempio di Role precedente definisce l'attributo RoleType come il più significativo, e l'attributo Authorizer come il meno significativo. Una richiesta List è in grado di specificare solo un singolo intervallo "qualificativo" che non è né 1) un valore singolo né 2) comprende tutti i valori possibili (possono esserci più intervalli che soddisfano questi due requisiti). Tutti gli intervalli per gli attributi più significativi rispetto all'attributo dell'intervallo qualificativo devono specificare un unico valore. Tutti gli intervalli per gli intervalli meno significativi devono comprendere tutti i valori possibili. Nell'esempio di Role, il filtro imposta (RoleType:"Admin", Authorizer:["J" a "L"]) (valore singolo +intervallo qualificativo), (RoleType: ["Admin" a "User"]) (intervallo qualificativo + intervallo globale implicito) e (RoleType: [FIRST a LAST]) (due intervalli globali, uno implicito) sono tutti esempi di set di filtri validi. (RoleType: [FIRST a LAST], Authorizer:"Julia") non è un set valido, in quanto l'intervallo globale è più significativo rispetto all'intervallo del valore singolo.

Alcuni modelli utili per la compilazione delle strutture degli intervalli, sono:

Corrispondenza di un valore singolo

Specifica il valore sia per StartValue che per EndValue e imposta entrambe le modalità su "INCLUSIVE".

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

Corrispondenza di un prefisso

Specificare il prefisso come StartValue con modalità INCLUSIVE e il primo valore dopo il prefisso come EndValue con modalità EXCLUSIVE.

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

Filtraggio per un valore maggiore

Specifica il valore per StartValue con modalità EXCLUSIVE e LAST come EndMode (o LAST_BEFORE_MISSING_VALUES per escludere i valori mancanti, se applicabile).

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

Filtraggio per un valore minore o uguale

Specifica il valore per EndValue con modalità INCLUSIVE e FIRST come StartMode.

Valori mancanti

Quando un attributo viene contrassegnato come Optional (Facoltativo) nello schema, il valore può risultare "mancante" in quanto potrebbe non essere stato fornito al collegamento del facet oppure l'attributo potrebbe essere stato eliminato successivamente. Se l'oggetto con tale valore mancante è collegato a un indice, il collegamento dell'indice è ancora presente, ma è spostato alla fine del set di collegamenti. Una chiamata ListIndex restituirà prima tutti i collegamenti in cui gli attributi indicizzati sono tutti presenti e successivamente restituirà i collegamenti in cui uno o più attributi risultano mancanti. Questo è pressappoco simile a un valore NULL del database relazionale, con tali valori ordinati in base a valori non NULL. Puoi specificare se un intervallo include tali valori mancanti o meno scegliendo le modalità LAST o LAST_BEFORE_MISSING_VALUES. Ad esempio, puoi fornire un filtro a una chiamata ListIndex per restituire solo i valori mancanti in un indice filtrando attraverso l'intervallo [LAST_BEFORE_MISSING_VALUES a LAST].