DynamoDB - Indici
DynamoDB utilizza gli indici per gli attributi della chiave primaria per migliorare gli accessi. Accelerano gli accessi alle applicazioni e il recupero dei dati e supportano prestazioni migliori riducendo il ritardo dell'applicazione.
Indice secondario
Un indice secondario contiene un sottoinsieme di attributi e una chiave alternativa. Puoi usarlo tramite una query o un'operazione di scansione, che ha come destinazione l'indice.
Il suo contenuto include attributi proiettati o copiati. Nella creazione, definisci una chiave alternativa per l'indice e tutti gli attributi che desideri proiettare nell'indice. DynamoDB esegue quindi una copia degli attributi nell'indice, inclusi gli attributi della chiave primaria provenienti dalla tabella. Dopo aver eseguito queste attività, è sufficiente utilizzare una query / scansione come se si eseguisse su una tabella.
DynamoDB mantiene automaticamente tutti gli indici secondari. Durante le operazioni sugli elementi, come l'aggiunta o l'eliminazione, aggiorna eventuali indici sulla tabella di destinazione.
DynamoDB offre due tipi di indici secondari:
Global Secondary Index- Questo indice include una chiave di partizione e una chiave di ordinamento, che possono differire dalla tabella di origine. Utilizza l'etichetta "globale" a causa della capacità di query / scansioni sull'indice di estendere tutti i dati della tabella e su tutte le partizioni.
Local Secondary Index- Questo indice condivide una chiave di partizione con la tabella, ma utilizza una chiave di ordinamento diversa. La sua natura "locale" deriva dal fatto che tutte le sue partizioni hanno come ambito una partizione di tabella con lo stesso valore della chiave di partizione.
Il miglior tipo di indice da utilizzare dipende dalle esigenze dell'applicazione. Considera le differenze tra i due presentati nella tabella seguente:
Qualità | Indice secondario globale | Indice secondario locale |
---|---|---|
Schema chiave | Utilizza una chiave primaria semplice o composita. | Utilizza sempre una chiave primaria composta. |
Attributi chiave | La chiave di partizione dell'indice e la chiave di ordinamento possono essere costituite da attributi di stringa, numero o tabella binaria. | La chiave di partizione dell'indice è un attributo condiviso con la chiave di partizione della tabella. La chiave di ordinamento può essere stringa, numero o attributi di tabella binaria. |
Limiti di dimensione per valore chiave di partizione | Non hanno limiti di dimensioni. | Impone un limite massimo di 10 GB alla dimensione totale degli elementi indicizzati associati a un valore della chiave di partizione. |
Operazioni sugli indici in linea | Puoi generarli durante la creazione della tabella, aggiungerli a tabelle esistenti o eliminare quelli esistenti. | È necessario crearli durante la creazione della tabella, ma non è possibile eliminarli o aggiungerli a tabelle esistenti. |
Interrogazioni | Consente query che coprono l'intera tabella e ogni partizione. | Indirizzano le singole partizioni tramite il valore della chiave di partizione fornito nella query. |
Consistenza | Le query di questi indici offrono solo l'opzione eventualmente coerente. | Le query di questi offrono le opzioni di eventualmente coerente o fortemente coerente. |
Costo della produttività | Include le impostazioni di velocità effettiva per letture e scritture. Le query / scansioni consumano capacità dall'indice, non dalla tabella, che si applica anche agli aggiornamenti di scrittura della tabella. | Le query / scansioni consumano la capacità di lettura della tabella. Le scritture della tabella aggiornano gli indici locali e consumano unità di capacità della tabella. |
Proiezione | Le query / scansioni possono richiedere solo attributi proiettati nell'indice, senza richiami di attributi di tabella. | Le query / scansioni possono richiedere quegli attributi non proiettati; inoltre, vengono recuperati automaticamente. |
Quando crei più tabelle con indici secondari, fallo in sequenza; significa creare una tabella e attendere che raggiunga lo stato ATTIVO prima di crearne un'altra e attendere di nuovo. DynamoDB non consente la creazione simultanea.
Ogni indice secondario richiede determinate specifiche:
Type - Specifica locale o globale.
Name - Utilizza regole di denominazione identiche alle tabelle.
Key Schema - È consentito solo il tipo stringa, numero o binario di primo livello, con il tipo di indice che determina altri requisiti.
Attributes for Projection - DynamoDB li proietta automaticamente e consente qualsiasi tipo di dati.
Throughput - Specifica la capacità di lettura / scrittura per gli indici secondari globali.
Il limite per gli indici rimane 5 globali e 5 locali per tabella.
È possibile accedere alle informazioni dettagliate sugli indici con DescribeTable. Restituisce il nome, la dimensione e il conteggio degli elementi.
Note - Questi valori vengono aggiornati ogni 6 ore.
Nelle query o nelle scansioni utilizzate per accedere ai dati dell'indice, fornire la tabella e i nomi dell'indice, gli attributi desiderati per il risultato e qualsiasi istruzione condizionale. DynamoDB offre la possibilità di restituire i risultati in ordine crescente o decrescente.
Note - La cancellazione di una tabella elimina anche tutti gli indici.