DynamoDB - Best practice

Alcune pratiche ottimizzano il codice, prevengono gli errori e riducono al minimo i costi di throughput quando si lavora con varie fonti ed elementi.

Di seguito sono riportate alcune delle migliori pratiche più importanti e comunemente utilizzate in DynamoDB.

Tabelle

La distribuzione delle tabelle significa che i migliori approcci distribuiscono l'attività di lettura / scrittura in modo uniforme su tutti gli elementi della tabella.

Obiettivo per un accesso uniforme ai dati sugli elementi della tabella. L'utilizzo ottimale della velocità effettiva si basa sulla selezione della chiave primaria e sui modelli di carico di lavoro degli elementi. Distribuire il carico di lavoro in modo uniforme tra i valori delle chiavi di partizione. Evita cose come una piccola quantità di valori delle chiavi di partizione molto utilizzati. Optare per scelte migliori come grandi quantità di valori di chiavi di partizione distinti.

Acquisisci una comprensione del comportamento delle partizioni. Stima le partizioni assegnate automaticamente da DynamoDB.

DynamoDB offre un utilizzo del throughput elevato, che riserva il throughput inutilizzato per "picchi" di potenza. Evita un uso intenso di questa opzione perché i burst consumano rapidamente grandi quantità di throughput; inoltre, non si rivela una risorsa affidabile.

Durante i caricamenti, distribuire i dati per ottenere prestazioni migliori. Implementalo caricando simultaneamente su tutti i server allocati.

Memorizza nella cache gli elementi utilizzati di frequente per scaricare l'attività di lettura nella cache anziché nel database.

Elementi

La limitazione, le prestazioni, le dimensioni e i costi di accesso rimangono le principali preoccupazioni degli articoli. Optare per tavoli uno-a-molti. Rimuovere gli attributi e dividere le tabelle per abbinare i modelli di accesso. È possibile migliorare notevolmente l'efficienza attraverso questo semplice approccio.

Comprimere valori elevati prima di archiviarli. Utilizza strumenti di compressione standard. Utilizza l'archiviazione alternativa per valori di attributi di grandi dimensioni come S3. È possibile memorizzare l'oggetto in S3 e un identificatore nell'elemento.

Distribuisci attributi di grandi dimensioni su diversi articoli tramite pezzi di oggetti virtuali. Ciò fornisce una soluzione alternativa per i limiti delle dimensioni degli elementi.

Query e scansioni

Le query e le scansioni soffrono principalmente di problemi di consumo di throughput. Evita i burst, che in genere derivano da cose come il passaggio a una lettura fortemente coerente. Usa le scansioni parallele in un modo con poche risorse (cioè, funzione in background senza limitazione). Inoltre, utilizzarli solo con tabelle di grandi dimensioni e le situazioni in cui non si utilizza completamente la velocità effettiva o le operazioni di scansione offrono prestazioni scadenti.

Indici secondari locali

Gli indici presentano problemi nelle aree della velocità effettiva e dei costi di archiviazione e dell'efficienza delle query. Evita di indicizzare a meno che non interroghi spesso gli attributi. Nelle proiezioni, scegli saggiamente perché gonfiano gli indici. Seleziona solo quelli molto utilizzati.

Utilizza indici sparsi, ovvero indici in cui le chiavi di ordinamento non vengono visualizzate in tutti gli elementi della tabella. Beneficiano delle query sugli attributi non presenti nella maggior parte degli elementi della tabella.

Presta attenzione all'espansione della raccolta di oggetti (tutti gli elementi della tabella e i loro indici). Le operazioni di aggiunta / aggiornamento fanno aumentare sia le tabelle che gli indici e 10 GB rimangono il limite per le raccolte.

Indici secondari globali

Gli indici presentano problemi nelle aree della velocità effettiva e dei costi di archiviazione e dell'efficienza delle query. Optare per la diffusione degli attributi chiave, che come la diffusione in lettura / scrittura nelle tabelle fornisce l'uniformità del carico di lavoro. Scegli attributi che distribuiscono i dati in modo uniforme. Inoltre, utilizza indici sparsi.

Sfrutta gli indici secondari globali per ricerche rapide nelle query che richiedono una modesta quantità di dati.