Generatore di query DynamoDB
Componi l’intera richiesta Query o Scan — tabella, indice, condizione di chiave, filtro, proiezione, Limit, ordine di ordinamento, letture coerenti e paginazione — e copia un programma eseguibile per AWS SDK v3, CLI o boto3, oppure l’istruzione PartiQL.
Dal pattern di accesso alla richiesta eseguibile
L’espressione raramente è tutto il lavoro. Una Query di produzione decide anche quale indice leggere, quanti Item valutare per richiesta, in quale direzione scorre la sort key, se la lettura deve essere fortemente coerente e cosa succede quando la risposta torna con un LastEvaluatedKey. Questi parametri a livello di richiesta vivono fuori dalla stringa dell’espressione — ed è lì che gli snippet copiati di solito sbagliano.
Questo generatore tratta la richiesta come unità di lavoro. Componi condizione di chiave, filtro e proiezione sullo stesso modello tipizzato e a prova di parole riservate usato dal nostro Generatore di espressioni, poi imposti accanto le opzioni della richiesta. L’output non è un frammento: è un programma che puoi eseguire — import, inizializzazione del client, la chiamata stessa e, quando attivi «Recupera tutte le pagine», il loop su ExclusiveStartKey che svuota ogni pagina di risultati.
Il codice generato resta onesto con ogni destinazione. La AWS CLI pagina da sola, quindi il suo Limit diventa --page-size e un’esecuzione a singola richiesta riceve --no-paginate; PartiQL rifiuta i parametri che appartengono all’API ExecuteStatement anziché all’istruzione; e una Query discendente diventa ORDER BY sulla tua sort key dove ciò è esprimibile.
Ti serve solo l’espressione in sé — una condition, filter o update expression con le sue mappe di segnaposto, per una qualunque delle sei operazioni? Il Generatore di espressioni DynamoDB è fatto esattamente per questo. Stai ancora decidendo tra le due operazioni di lettura? Query vs Scan spiega quando ciascuna è la scelta giusta.
Domande frequenti
In cosa differisce dal Generatore di espressioni DynamoDB?
Si dividono il problema di proposito. Il Generatore di espressioni riguarda la sintassi delle espressioni — condizioni di chiave, filtri, espressioni di aggiornamento e di condizione con le loro mappe ExpressionAttributeNames/Values — per tutte e sei le operazioni, ed emette il comando nudo. Il Generatore di query riguarda la richiesta Query o Scan completa: tabella e indice, condizione di chiave, filtro, proiezione, più i parametri a livello di richiesta che lo strumento per le espressioni non espone (Limit, ordine di ordinamento, ConsistentRead, ExclusiveStartKey), ed emette un programma eseguibile con l’inizializzazione del client e un loop di paginazione opzionale.
Che cosa limita davvero Limit in una Query o in uno Scan?
Limit fissa quanti Item DynamoDB valuta per richiesta, non quanti Item corrispondenti ricevi. I filtri si applicano dopo la lettura, quindi una Query con Limit 25 e una FilterExpression può restituire meno di 25 Item — o nessuno — pur consumando la capacità di lettura di tutto ciò che ha valutato, e la paginazione prosegue da LastEvaluatedKey. Nella AWS CLI, che pagina automaticamente, lo stesso parametro si imposta con --page-size.
Come funziona la paginazione di DynamoDB (LastEvaluatedKey)?
Una risposta di Query o Scan che ha altri dati include un LastEvaluatedKey — la chiave primaria dell’ultimo Item letto. Lo ripassi come ExclusiveStartKey nella richiesta successiva e ripeti finché non arriva una risposta senza. Attiva «Recupera tutte le pagine» e i programmi generati per SDK v3 e boto3 contengono esattamente quel loop; la AWS CLI segue le pagine da sola, a meno che tu non passi --no-paginate.
Quando posso usare una lettura fortemente coerente?
ConsistentRead funziona su tabelle base e local secondary index, ma non sui global secondary index — una Query su un GSI con ConsistentRead impostato viene rifiutata. Una lettura fortemente coerente consuma inoltre il doppio della capacità di lettura di una eventualmente coerente. È un parametro dell’API e non parte del testo dell’istruzione PartiQL — ecco perché la scheda PartiQL la rifiuta onestamente.
Ciò che inserisco qui viene caricato da qualche parte?
No. Questa è una pagina statica: la richiesta viene composta e il codice generato interamente nel tuo browser, quindi nomi di tabella, valori di chiave e filtri non raggiungono mai un server. «Copia link» impacchetta l’intera richiesta nell’URL — condividere quel link è l’unico modo in cui qualcosa che hai digitato lascia la pagina, ed è nelle tue mani.