Funzionamento di scansione DynamoDB

Funzionamento di scansione DynamoDB
Le operazioni di scansione sono probabilmente gli strumenti più sfumati in un elenco di strumenti DynamoDB. Un'operazione di scansione in AWS DynamoDB legge ogni elemento nella tabella o l'indice secondario su cui viene utilizzato. Può afferrare qualsiasi cosa nel suo percorso. Pertanto, un'operazione di scansione, per impostazione predefinita, restituisce tutti gli attributi di dati per ciascun elemento nella tabella o nell'indice.

È possibile modificare la natura predefinita delle operazioni di scansione utilizzando il parametro proieciectespression, poiché ciò restituisce solo gli attributi specificati e non tutto nell'indice o nell'indice o nella tabella. In particolare, ogni richiesta di scansione può restituire solo 1 MB di dati sull'articolo e niente di più. Inoltre, DynamoDB può applicare un'espressione del filtro a qualsiasi set di dati e restringere i risultati prima che fornisca i risultati all'utente.

Questa guida elabora come è possibile utilizzare l'operazione di scansione su DynamoDB. Spiega quando utilizzare l'operazione di scansione DynamoDB, come funzionano le espressioni di filtro, la coerenza delle letture delle scansioni e le scansioni parallele.

Ma prima di arrivarci, è fondamentale utilizzare l'operazione di scansione solo quando sei sicuro di averne bisogno. Funziona sull'intera tabella e può utilizzare tutta la capacità di lettura se utilizzato sulle tabelle di dimensioni reali. Inoltre, se utilizzato sul percorso critico di un'applicazione, può essere lento nel restituire i risultati.

Situazioni in cui è necessario utilizzare una scansione su tabelle e indici DynamoDB

L'uso dell'operazione di scansione su DynamoDB ha senso nei seguenti scenari:

  • Quando il tuo tavolo è molto piccolo
  • Quando si utilizzano indici secondari globali per impostare le code di lavoro
  • Quando si esportano tutti i dati da una determinata tabella a un altro sistema di archiviazione

Esecuzione di una scansione di base su una tabella DynamoDB

Le operazioni di scansione sono facili da gestire. Tutto quello che devi fare è specificare il tuo table_name insieme al comando AWS DynamoDB Scan. Una semplice utilità di scansione dovrebbe apparire così:

$ AWS DynamoDB Scan \
--Table-Name Emlyteedata \
$ Locale

Il risultato è mostrato nel seguente. Si noti che è troncato per essere abbastanza breve per l'illustrazione poiché mostrare tutti e 35 articoli in questo articolo può essere ingombrante.

L'operazione di scansione su DynamoDB utilizzando le espressioni del filtro

La risposta precedente restituisce tutti i 35 elementi contenuti nella tabella. Tuttavia, è possibile utilizzare il parametro di espressione -proiezione per specificare gli attributi a cui sei interessato. Conosciuta anche come espressioni di filtri, questa funzione consente di perfezionare i risultati e determinare gli elementi specifici all'interno della tabella che trovi nella risposta. I risultati di cui non hai bisogno non saranno nella risposta.

Dovresti applicare il parametro di espressione del filtro solo dopo aver terminato la scansione completa e avere i risultati con te. Tuttavia, sia le espressioni di proiezione che le scansioni full dynamoDB consumeranno le pari quantità della capacità di lettura. E mentre i limiti di scansione hanno spesso un massimo di 1 MB di dati, questo calcolo si verifica prima di valutare i risultati dell'espressione del filtro.

Assicurati di specificare tutti gli attributi di cui hai bisogno nell'espressione del filtro. Gli attributi possono includere chiavi di partizione e tasti di ordinamento. Le espressioni di filtro condividono la stessa sintassi delle espressioni di condizione.

Ad esempio, la seguente utilità di interfaccia della riga di comando AWS scansiona la tabella Employeata e restituisce i dettagli degli elementi che sono stati lastimatizzati.

AWS DynamoDB Scan \
--Table-Name Employeata \
--Espressione filtro "LastMoppled =: Name" \
--espressione-attribute-value '": name": "s": "utente ab"'

L'esecuzione di un'operazione di scansione che supera il limite di dati di 1 MB

Abbiamo detto più volte che l'operazione di scansione DynamoDB ha un limite di dati da 1 MB. Ma cosa succede quando le scansioni raggiungono il limite di dati da 1 MB? Se si colpisce il limite di 1 MB durante una scansione, la risposta conterrà un tasto "NextToken".

Utilizzare il valore fornito nel tasto "NextToken" con - -di partenza Opzione per continuare la funzione di scansione da dove si è fermato. Puoi testare questa funzionalità con il - - max Opzione limite. In questo esempio, anziché tentare una scansione completa, scansioniamo la nostra tabella Employeata ma permettiamo il limite del nostro articolo a un massimo di 1 come mostrato nel seguente:

$ AWS DynamoDB Scan \
--Table-nome userorderstable \
--max-items 1 \
$ Locale

La risposta contiene solo un elemento. Tuttavia, troverai anche una chiave "NextToken" nei risultati per consentire di continuare con la scansione da dove si è fermato. Fare riferimento al seguente screenshot:

La risposta precedente produce solo un elemento da una tabella che contiene 35 articoli. È possibile completare la scansione utilizzando la chiave successiva fornita.

Usando scansioni parallele

I motivi principali per cui DynamoDB rimane un database popolare sono la sua velocità, flessibilità e scalabilità. È interessante notare che l'uso dell'operazione di scansione consente anche di esportare il contenuto per l'analisi dei dati o l'archiviazione a freddo.

Funzionalità DynamoDB Segmenti che consente alle scansioni parallele di scansionare grandi quantità di dati senza fare affidamento su un singolo processo di scansione su ciascuna tabella. Questa funzione consente di specificare il numero di Segmenti che vuoi che un tavolo sia diviso e le richieste per ogni segmento. Ciò consente ai gestori dei dati di scansionare i dati da una determinata tabella in parallelo.

Mentre la nostra tabella di impiegata che viene utilizzata in questo tutorial non ha una grande quantità di dati, possiamo dividerlo in quattro segmenti e usarli per questa illustrazione. Puoi strutturare il comando di scansione definendo il numero di segmenti e il numero di segmento che intendi scansionare. Mentre i segmenti sono indicizzati zero, l'uso di 0 nella specifica del segmento può essere un'attività in salita.

$ AWS DynamoDB Scan \
--Table-Name Employeata \
--seggi totali 4 \
--Segmento 1 \
$ Locale

I risultati contengono solo gli elementi che rientrano nel primo segmento. La risposta sembra così. Si noti che i risultati sono troncati per brevità e presentano solo il primo e gli ultimi elementi nel primo segmento.

Conclusione

Questo è tutto per l'operazione di scansione DynamoDB. Mentre è probabilmente una delle operazioni più senza sforzo in AWS DynamoDB, dovresti usarlo con parsimonia in quanto può consumare tutta la tua allocazione di capacità di consumo. Ancora una volta, assicurati di sapere quando è possibile utilizzare le diverse applicazioni dell'operazione di scansione.