Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Progettazione di chiavi di partizione per distribuire il carico di lavoro in DynamoDB
La porzione della chiave di partizione della chiave primaria di una tabella determina le partizioni logiche in cui sono archiviati i dati di una tabella. Questo a sua volta influisce sulle partizioni fisiche sottostanti. Progettare chiavi di partizione che non distribuiscono in modo uniforme le richieste I/O può comportare partizioni "hot" che causano la limitazione della larghezza di banda della rete e usano in modo inefficiente la capacità I/O assegnata.
L'uso ottimale del throughput assegnato a una tabella dipende non solo dai modelli di carico di lavoro dei singoli item, ma anche dal modo in cui vengono progettate le chiavi di partizione. Ciò non significa che è necessario accedere a tutti i valori delle chiavi di partizione per raggiungere un livello efficiente di throughput, né significa che la percentuale dei valori delle chiavi di partizione accessibili debba essere elevata. Significa che più sono i valori distinti delle chiavi di partizione a cui può accedere il carico di lavoro e più tali richieste verranno distribuite nello spazio partizionato. In generale, la velocità effettiva assegnata verrà utilizzata in modo più efficiente all'aumentare del rapporto tra i valori delle chiavi di partizione a cui si accede e il numero totale di valori delle chiavi di partizione.
Di seguito è riportato un confronto dell'efficienza del throughput assegnato di alcuni schemi di chiavi di partizione comuni.
Valore della chiave di partizione |
Uniformità |
---|---|
ID utente, se l'applicazione ha molti utenti. |
Buona |
Codice di stato, se ci sono solo alcuni codici di stato possibili. |
Non buona |
Data di creazione dell'item, arrotondata al periodo di tempo più vicino (ad esempio giorno, ora o minuto). |
Non buona |
ID dispositivo, se ogni dispositivo accede ai dati a intervalli relativamente simili. |
Buona |
ID dispositivo, se anche quando ci sono molti dispositivi tracciati, uno è di gran lunga più popolare di tutti gli altri. |
Non buona |
Se una singola tabella ha solo un numero ridotto di valori delle chiavi di partizione, considera la possibilità di distribuire le operazioni di scrittura su più valori delle chiavi di partizione distinti. In altre parole, struttura gli elementi chiave primari per evitare un valore della chiave di partizione "hot" (fortemente richiesto) che rallenti le prestazioni generali.
Ad esempio, considera una tabella con una chiave primaria composita. La chiave di partizione rappresenta la data di creazione dell'item, arrotondata al giorno più vicino. La chiave di ordinamento è l'identificatore di un item. In un dato giorno, ad esempio il 2014-07-09
, tutti i nuovi item vengono scritti nel valore singolo della chiave di partizione (e nella partizione fisica corrispondente).
Se la tabella si adatta interamente a una singola partizione (prendendo in considerazione la crescita dei dati nel tempo) e se i requisiti di throughput in lettura e scrittura dell'applicazione non superano le capacità di lettura e scrittura di una singola partizione, l'applicazione non rileverà alcun throttling imprevisto a causa del partizionamento.
Per utilizzare NoSQL Workbench per DynamoDB per aiutarti a visualizzare la progettazione delle chiavi di partizione, consulta Creazione di modelli di dati con No SQL Workbench.