DynamoDB Filter Expressions tutto ciò che devi sapere

DynamoDB Filter Expressions tutto ciò che devi sapere
Le espressioni di filtro sono utilizzate nella funzione Dynamodb No-SQL come le clausole comuni nei database SQL. Tuttavia, poiché DynamoDB è un database NO-SQL, le espressioni di filtro si comportano in modo molto diverso da dove le clausole a causa della natura e della struttura dei database NO-SQL.

Questo articolo si concentra sulle espressioni di filtri. Pertanto, definiremo le espressioni del filtro, spiegheremo perché e quando sono applicabili e forniremo una guida passo-passo su come usarle attraverso esempi pertinenti.

Cosa sono le espressioni di filtro?

Le espressioni di filtri sono una tecnica popolare per filtrare i dati in DynamoDB durante le operazioni di query e scansione. In DynamoDB, la modellazione e l'organizzazione adeguate si basano sul filtraggio. Mentre la maggior parte delle applicazioni ha sempre tonnellate di dati salvati, è possibile avere urgentemente un elemento dal vasto pasticcio.

La tua capacità di recuperare i dati corretti ogni volta che ne hai bisogno dipende dalle funzionalità di filtraggio del tuo database ed è qui che le espressioni del filtro aiutano. Specificano i risultati all'interno dell'elemento di query che si desidera restituire a te mentre scartano il resto degli elementi.

È possibile applicare le espressioni di filtro sui filtri lato server sugli attributi dell'articolo al termine di un'operazione di query, ma prima che il server riporti i risultati della chiamata di query. Ciò implica che la tua query consuma ancora la stessa quantità di capacità di lettura, indipendentemente dal fatto che si usi un'espressione del filtro.

Inoltre, come le normali operazioni di query, il limite di dati da 1 MB per le operazioni di query si verifica prima della valutazione dell'operazione di espressione del filtro. È possibile utilizzare questa operazione per ridurre il payload, cercare articoli specifici e migliorare la semplicità e la leggibilità durante lo sviluppo dell'applicazione.

Sintassi dell'espressione del filtro ed esempi

In particolare, sia le espressioni di filtro che le espressioni chiave utilizzano la stessa sintassi. Inoltre, le espressioni di filtri e le espressioni delle condizioni possono anche utilizzare le stesse funzioni, comparatori e operatori logici.

Gli altri operatori che filtrano le espressioni possono utilizzare includono anche l'operatore contiene, l'operatore o l'operatore, l'operatore non equals (), l'operatore in, l'operatore tra l'operatore, l'operatore Begins_with, l'operatore di dimensioni e l'operatore esiste.

Esempio 1: query su tasti primari AWS CLI e DynamoDB

Questo esempio interroga la tabella di musica per un particolare genere (chiave di partizione) e un artista specifico (chiave di ordinamento). L'utilità riporta solo un risultato per gli elementi che corrispondono alla chiave di partizione particolare e al tasto di ordinamento per le canzoni con la maggior parte delle visualizzazioni.

È possibile specificare il numero di visualizzazioni (#v) nel comando. Ad esempio, taggiamo il nostro limite minimo a 1.000 visualizzazioni per implicare che solo i risultati per le canzoni con oltre 1000 visualizzazioni torneranno.

$ AWS DynamoDB query \
--musica da tavolo \
--espressione chiave-condizione "Genere =: fn e artista =: sub" \
--espressione filtro "#v> =: num (1000)" \
--espressione-attribute-names '"#v": "viste"' \
--espressione-attribute-valori file: // valori.JSON

Esempio 2: usando AWS CLI con espressione di condizione

Possiamo ristrutturare la stessa query dell'esempio precedente, ma ora con le chiavi della condizione insieme ai nostri filtri. Non include la chiave di ordinamento. Invece, recupera tutti i record per l'artista specificato con oltre 1.000 visualizzazioni. Può anche essere ricostruito per fornire ordini al di sopra di un determinato numero per un particolare nome utente (Customer_ID).

$ AWS DynamoDB query \
--musica da tavolo \
--espressione chiave-condizione "nome utente =: nome utente" \
--espressione filtro "Importo>: importo" \
--espressione-attributo-valori '
": nome utente": "s": "artista",
": importo": "n": "1000"
'\
$ Locale

Un esempio del risultato sembra questo:

L'illustrazione data mostra che dei 56 titoli di canzoni per lo stesso artista, solo sette canzoni hanno più di 1.000 visualizzazioni. Tuttavia, abbiamo troncato la figura per scopi di brevità e abbiamo incluso solo il primo e gli ultimi risultati nell'elenco.

Esempio 3: Utilizzo delle espressioni di filtri con l'operatore no-equal ()

Nella seguente utilità Java, vogliamo interrogare il nostro tavolo (raccolta di film) per tutti i film che non sono uguali a "Movie X". Assicurati di utilizzare un'espressione del filtro con un attributo (#Name) insieme a un valore di attributo di espressione (: nome) come illustrato nel seguente:

const AWS = requisito ("AWS-SDK");
AWS.configurazione.aggiornamento (regione: "eu-west-1");
const DynamoDB = New AWS.DynamoDB.DocumentClient ();
var params =
TableName: "Collezione di film",
KeyconditionExpression: '#PK =: pk',
FiltereExpression: "#Name: Name", (Filter Expression)
ExpressionAttributeNames: "#pk": "pk", "#name": "name", (condizione espressione)
ExpressionAttributeValues:
': Pk': 'OGEJHHRDRS453HGD4HT44',
': nome': "film x"

;
DynamoDB.query (parametri, function (err, data)
la console if (err).log (err);
Else console.registro (dati);
);

Esempio 4: utilizzando le espressioni di filtro con l'operatore di scansione

Mentre il comando precedente usa per recuperare solo quegli elementi che non sono uguali al nome del film chiamato film X, assicurati di utilizzare le espressioni della condizione chiave qui insieme all'espressione del filtro. Questo perché è impossibile filtrare i dati nell'operatore di query senza utilizzare un'espressione della condizione chiave.

var params =
TableName: "Collezione di film",
FiltereExpression: "PK =: PK e #Name: Nome",
ExpressionAttributeNames: "#Name": "Nome",
ExpressionAttributeValues:
': Pk': 'OGEJHHRDRS453HGD4HT44',
': nome': "film x"

;
DynamoDB.scan (parametri, function (err, data)
la console if (err).log (err);
Else console.registro (dati);
);

Conclusione

Questa è la fine del nostro tutorial DynamoDB sulle espressioni del filtro. È possibile utilizzare le espressioni di filtro per recuperare un set di dati preferiti, filtrare i dati recuperati dopo una scansione o una query o restituire un set di dati a un client. Sebbene sia applicabile con una serie di strumenti, non è praticabile le istanze quando si utilizza le espressioni di filtro. Ad esempio, è possibile utilizzarli solo se si dispone di un modello di dati adeguato, quando si utilizza una chiave primaria e quando si estrae grandi porzioni di dati.