Perché gli elementi con Time to Live scaduto non vengono eliminati dalla mia tabella Amazon DynamoDB?

3 minuti di lettura
0

Alcuni elementi con Time to Live (TTL) scaduto non vengono eliminati dalla mia tabella Amazon DynamoDB.

Risoluzione

La funzionalità TTL di DynamoDB consente di definire un timestamp per ogni elemento per determinare quando questo non è più necessario. Poco dopo la data e l'ora del timestamp specificato, DynamoDB eliminerà l'elemento dalla tabella. L'operazione non consuma alcuna velocità di trasmissione effettiva di scrittura. Il TTL consente di mantenere solo gli elementi che rimangono attuali per le esigenze del carico di lavoro e quindi di ridurre i volumi di dati archiviati. Il TTL non comporta costi aggiuntivi. Quando attivi TTL su una tabella DynamoDB, individua un nome attributo per il servizio da cercare per determinare se un elemento è idoneo alla scadenza. Dopo aver attivato il TTL in una tabella, un processo di scansione per partizione in background valuterà automaticamente e costantemente lo stato di scadenza degli elementi inclusi nella tabella.

Ecco alcuni motivi comuni per cui l'eliminazione degli elementi scaduti potrebbe richiedere più tempo del previsto:

  • L'operazione di eliminazione effettiva di un elemento scaduto può variare a seconda delle dimensioni e del livello di attività della tabella. Poiché il TTL è un processo in background, la capacità utilizzata per far scadere ed eliminare gli elementi può variare.
  • In genere, il TTL elimina gli elementi scaduti entro pochi giorni. A seconda delle dimensioni e del livello di attività di una tabella, l'operazione di eliminazione effettiva di un elemento scaduto può variare. Il TTL elimina gli elementi con la massima cura e in alcuni casi l'eliminazione potrebbe richiedere più tempo. Durante l'eliminazione degli oggetti, DynamoDB utilizza la capacità di back-end della tabella per eliminare gli oggetti anziché la capacità allocata. Se sono presenti molte richieste di eliminazione e la capacità di back-end non è sufficiente per eliminare continuamente tali elementi, il processo potrebbe richiedere più tempo.

Per controllare se il TTL funziona correttamente, verifica le seguenti condizioni:

  • Assicurati di aver attivato il TTL sulla tabella e che le relative impostazioni siano corrette:

  • L'elemento deve contenere l'attributo che hai specificato al momento dell'attivazione del TTL nella tabella.

  • Il valore dell'attributo TTL deve avere il tipo di dati Number.

  • Il valore dell'attributo TTL deve essere un timestamp in secondi nel formato Unix Time Epoch. Per ulteriori informazioni, consulta la pagina Tempo (Unix) su Wikipedia.

  • Il valore dell'attributo TTL deve essere un datetimestamp con una scadenza non superiore a cinque anni nel passato.

  • I processi TTL vengono eseguiti sulla tabella solo quando c'è abbastanza capacità di riserva, in modo che questi processi non interferiscano con le operazioni della tabella. Se la tabella o le partizioni della tabella utilizzano la maggior parte della capacità allocata, i processi TTL potrebbero non essere eseguiti.

Gli elementi scaduti ma non ancora eliminati vengono ancora visualizzati nelle letture, nelle query e nelle scansioni. Se non desideri inserire elementi scaduti nel set di risultati, dovrai filtrarli. Utilizza un'espressione di filtro che restituisca solo gli elementi in cui il valore di scadenza Time to Live sia maggiore dell'ora corrente in formato Epoch. Per ulteriori informazioni, consulta la sezione Espressioni di filtro per la scansione.

Informazioni correlate

Scadenza degli elementi utilizzando il Time to Live (TTL) di DynamoDB

AWS UFFICIALE
AWS UFFICIALEAggiornata 6 mesi fa