Espressioni di filtro DynamoDB: tutto ciò che devi sapere

Espressioni Di Filtro Dynamodb Tutto Cio Che Devi Sapere



Le espressioni di filtro vengono utilizzate nella funzione No-SQL DynamoDB come le clausole WHERE che sono comuni nei database SQL. Tuttavia, poiché DynamoDB è un database No-SQL, le espressioni di filtro si comportano in modo molto diverso dalle clausole WHERE a causa della natura e della struttura dei database No-SQL.

Questo articolo è incentrato sulle espressioni di filtro. Pertanto, definiremo le espressioni di filtro, spiegheremo perché e quando sono applicabili e forniremo una guida passo passo su come utilizzarle attraverso esempi pertinenti.

Cosa sono le espressioni di filtro?

Le espressioni di filtro sono una tecnica diffusa per filtrare i dati in DynamoDB durante le operazioni di query e scansione. In DynamoDB, la corretta modellazione e organizzazione dei dati si basa sul filtraggio. Mentre la maggior parte delle applicazioni ha sempre tonnellate di dati salvati, potresti aver bisogno urgentemente di un elemento dal vasto casino.







La tua capacità di recuperare i dati corretti ogni volta che ne hai bisogno dipende dalle capacità di filtraggio del tuo database, ed è qui che le espressioni di filtro aiutano. Specificano i risultati all'interno dell'elemento della query che desideri vengano restituiti mentre scartano il resto degli elementi.



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



Inoltre, come le normali operazioni di query, il limite di dati di 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 elementi specifici e migliorare la semplicità e la leggibilità durante lo sviluppo dell'applicazione.





Sintassi delle espressioni di filtro ed esempi

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

Gli altri operatori che filtrano le espressioni che possono essere utilizzate includono anche l'operatore CONTAINS, l'operatore OR, l'operatore non uguale a (), l'operatore IN, l'operatore BETWEEN, l'operatore BEGINS_WITH, l'operatore SIZE e l'operatore EXISTS.



Esempio 1: query tramite l'AWS CLI e le chiavi primarie di DynamoDB

Questo esempio esegue una query nella tabella Music 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 particolare chiave di partizione e chiave di ordinamento per i brani con il maggior numero di visualizzazioni.

È possibile specificare il numero di visualizzazioni (#v) nel comando. Ad esempio, contrassegniamo il nostro limite minimo a 1000 visualizzazioni per indicare che verranno restituiti solo i risultati per i brani con oltre 1000 visualizzazioni.

$ query aws dynamodb \
--nome-tabella Musica \
--espressione-condizione-chiave 'Genere = :fn e Artista = :sub' \
--espressione-filtro '#v >= :num(1000)' \
--espressione-attributi-nomi '{'#v': 'Visualizzazioni'}' \
--espressione-attributo-valori file: // valori.json

Esempio 2: utilizzo di AWS CLI con l'espressione di condizione

Possiamo ristrutturare la stessa query dell'esempio precedente, ma ora con chiavi di condizione accanto ai nostri filtri. Non include la chiave di ordinamento. Invece, recupera tutti i record per l'artista specificato con più di 1.000 visualizzazioni. Può anche essere ricostruito per fornire ordini superiori a un determinato numero per un particolare nome utente (customer_id).

$ query aws dynamodb \
--nome-tabella Musica \
--espressione-condizione-chiave 'Nome utente = :nomeutente' \
--espressione-filtro 'Importo > :importo' \
--espressione-attributo-valori '{
':username': { 'S': 'artista' },
':importo': { 'N': '1000' }
}'
\
$LOCALE

Un esempio del risultato è simile a questo:

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

Esempio 3: utilizzo di espressioni di filtro con l'operatore No-Equal()

Nella seguente utility Java, vogliamo interrogare la nostra tabella (Movie Collection) per tutti i film che non sono uguali a 'Movie X'. Assicurati di utilizzare un'espressione di filtro con un attributo (#name) insieme a un valore di attributo dell'espressione (:name) come illustrato di seguito:

const AWS = richiedono ( 'aws-sdk' ) ;
AWS.config.update ( { regione: 'eu-ovest-1' } ) ;
const dynamodb = nuovo AWS.DynamoDB.DocumentClient ( ) ;

var parametri = {
  Nometabella: 'raccolta di film' ,
KeyConditionExpression: '#PK = :PK' ,
FilterExpression : '#nome  :nome' , ( espressione di filtro )
ExpressionAttributeNames: { '#PK' : 'PK' , '#nome' : 'nome' } , ( espressione condizionale )
ExpressionAttributeValues: {
':PK' : 'OgejhHrdRS453HGD4Ht44' ,
':nome' : 'Film X'
}
} ;

dynamodb.query ( parametri, funzione ( ehm, dati ) {
Se ( errare ) console.log ( errare ) ;
altro console.log ( dati ) ;
} ) ;

Esempio 4: utilizzo delle espressioni di filtro con l'operatore di scansione

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

var parametri = {
NomeTabella: 'raccolta di film' ,
FilterExpression : 'PK = :PK e #nome  :nome' ,
ExpressionAttributeNames: { '#nome' : 'nome' } ,
ExpressionAttributeValues: {
':PK' : 'OgejhHrdRS453HGD4Ht44' ,
':nome' : 'Film X'
}
} ;

dynamodb.scan ( parametri, funzione ( ehm, dati ) {
Se ( errare ) console.log ( errare ) ;
altro console.log ( dati ) ;
} ) ;

Conclusione

Questa è la fine del nostro tutorial DynamoDB sulle espressioni di filtro. È possibile utilizzare le espressioni di filtro per recuperare un set di dati preferiti, filtrare i dati recuperati dopo un'analisi o una query o restituire un set di dati a un client. Sebbene sia applicabile con una serie di strumenti, ci sono casi in cui l'utilizzo delle espressioni di filtro non è fattibile. Ad esempio, puoi utilizzarli solo se disponi di un modello di dati appropriato, quando utilizzi una chiave primaria e quando estrai grandi porzioni di dati.