Panoramica della durata (TTL)

Il TTL (Time to Live) ti consente di impostare criteri per eliminare periodicamente i dati dalle tabelle Spanner. Rimozione dei dati non necessari:

  • Riduce i costi di archiviazione e backup.
  • Riduce il numero di righe che il database deve scansionare per alcune query, migliorando potenzialmente le prestazioni delle query.
  • Aiuta a rispettare le normative o le linee guida del settore che limitano il di conservazione di alcuni tipi di dati.

Il TTL è ideale per le attività di pulizia regolari. Viene eseguito continuamente in background, eliminando periodicamente i dati idonei in batch. I dati sono generalmente vengono eliminati entro 72 ore dalla data di scadenza. Ogni eliminazione richiede replica della chiave primaria nelle repliche del database che porta alla replica costi aggiuntivi. Per ulteriori informazioni, consulta Prezzi della replica dei dati. Il TTL non invalida immediatamente i dati né li nasconde alle query quando diventano idonei per l'eliminazione. Inoltre, TTL non controlla i dati durante l'inserimento, quindi non impedisce di inserire una riga con un timestamp scaduto.

Il TTL è progettato per ridurre al minimo l'impatto su altre attività del database. Esegue il parallelismo del lavoro in modo più efficiente rispetto alle query degli utenti finali e include la logica di ripetizione per garantire la pulizia end-to-end.

Un'altra procedura di compattazione in background recupera lo spazio di archiviazione dalle righe eliminate, solitamente entro sette giorni.

Come funziona il TTL?

Puoi impostare il TTL sulle tabelle Spanner definendo un'eliminazione riga nello schema del database, che consente a Spanner di eliminare periodicamente i dati non necessari. Ogni tabella può avere il proprio criterio. È possibile specificare un solo criterio TTL per tabella. La TTL viene configurata in modo diverso per i database in dialetto Google SQL e per i database in dialetto PostgreSQL.

TTL con GoogleSQL

Con GoogleSQL, definisci un criterio di eliminazione delle righe specificando un timestamp e un interval per determinare quando una riga è idonea per l'eliminazione; ad esempio la data dell'ultimo aggiornamento più 30 giorni.

Un processo di sistema in background controlla quotidianamente la presenza di righe idonee. Parallelizza eliminazioni effettive in batch eseguiti vicino alla posizione in cui sono archiviati i dati internamente. Ogni batch viene eseguito con la propria transazione in corrispondenza di un timestamp coerente. Pertanto, è garantito che le righe di un determinato batch, insieme a eventuali indici ed elementi secondari con interfoliazione, verranno eliminate in modo atomico. Tuttavia, le eliminazioni tra batch vengono eseguite in transazioni diverse.

Poiché si tratta di un processo in background asincrono, esiste un ritardo tra la verifica dell'idoneità e l'eliminazione. In genere, il ritardo è inferiore a 72 ore. Di conseguenza, le righe potrebbero rimanere nella tabella per un massimo di tre giorni dopo la scadenza del TTL. Ad esempio, una tabella con un criterio di eliminazione delle righe che elimina le righe più vecchie di quattro giorni potrebbe includere righe fino a sette giorni fa, nonché righe più vecchie e non eliminabili.

Per istruzioni dettagliate su come creare un criterio di eliminazione delle righe GoogleSQL, consulta Creare un criterio TTL.

TTL con PostgreSQL

Con PostgreSQL, il proprietario di un database può utilizzare una clausola TTL INTERVAL nell'istruzione CREATE TABLE o ALTER TABLE per definire un criterio di eliminazione delle righe.

Per impostare un criterio di eliminazione delle righe in una tabella PostgreSQL, la tabella deve avere una colonna con il tipo di dati TIMESTAMPTZ. La clausola TTL INTERVAL utilizza questa colonna per impostare una specifica dell'intervallo per stabilire quando una riga è idonea all'eliminazione.

La clausola deve restituire un numero intero di giorni. Ad esempio, '3 DAYS' è consentito, così come '4 DAYS 2 MINUTES - 2 MINUTES', ma '4 DAYS 3 MINUTES' non è consentito e viene restituito un errore. Non puoi utilizzare numeri negativi.

La raccolta dei rifiuti TTL elimina le righe idonee in modo continuo e in background. Poiché si tratta di un processo in background asincrono, c'è un ritardo tra l'idoneità e l'eliminazione. La tabella potrebbe contenere righe idonee per il TTL ma per il quale il TTL non è stato ancora completato. In genere, il ritardo è inferiore a 72 ore.

Per istruzioni su come creare un criterio di eliminazione di righe PostgreSQL: consulta Creare un criterio TTL.

Backup e TTL

Ripristina un backup

Quando ripristini un database da un backup, tutti i criteri di eliminazione delle righe configurate sul database di origine vengono eliminate automaticamente. In questo modo Spanner per impedire l'eliminazione potenziale dei dati scaduti non appena il backup è stato ripristinato. Dovrai quindi riconfigurare il TTL manualmente.

Coerenza dei dati

Una backup è un'istantanea coerente dei tuoi dati un determinato momento (version_time). Il backup può contenere righe che potrebbe essere idoneo per l'eliminazione TTL, ma per il quale il TTL non è ancora stato completato. Analogamente, i job di esportazione Dataflow leggono l'intera tabella con timestamp fisso.

Controllo

TTL supporta il controllo delle eliminazioni tramite i flussi di modifiche. I record di dati in modalità flusso di modifiche che tengono traccia delle modifiche al TTL in un database hanno Campo transaction_tag impostato su RowDeletionPolicy e Campo is_system_transaction impostato su true. I lettori dei flussi di variazioni possono quindi eliminare tutti i record TTL o tutti i record tranne quelli TTL, a seconda del caso d'uso. Guarda un esempio di utilizzo di Beam per filtrare in base ai tag transazioni.

Passaggi successivi