Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
SI APPLICA A: NoSQL
In Azure Cosmos DB è possibile scegliere di configurare la TTL a livello di contenitore oppure è possibile eseguirne l'override a livello di elemento dopo l'impostazione per il contenitore. È possibile configurare la durata di vita (TTL) per un contenitore utilizzando il portale Azure oppure gli SDK specifici per linguaggio. Gli override della TTL a livello di elemento possono essere configurati usando gli SDK.
Il contenuto del presente articolo è correlato al TTL dell'archivio transazionale di Azure Cosmos DB. Se si sta cercando la TTL dell'archivio analitico che abilita gli scenari NoETL HTAP tramite Azure Collegamento a Synapse, fare clic qui.
Abilitare il Time to Live (TTL) in un contenitore utilizzando il portale di Azure
Usare la procedura seguente per abilitare la TTL in un contenitore senza scadenza. Abilitazione del TTL a livello di contenitore per consentire la sovrascrittura dello stesso valore a livello di singolo elemento. È anche possibile impostare la durata (TTL) immettendo un valore diverso da zero per i secondi.
Accedere al portale di Azure.
Creare un nuovo account Azure Cosmos DB o selezionarne uno esistente.
Aprire il riquadro Esplora dati.
Selezionare un contenitore esistente, espandere la scheda Impostazioni e modificare i valori seguenti:
In Impostazione trovare TTL.
In base alle esigenze, è possibile:
- Disattivare questa impostazione
- Impostare l'opzione su Sì (nessun valore predefinito) oppure
- Attivare l'opzione con un valore TTL specificato in secondi.
Seleziona Salva per salvare le modifiche.
- Quando DefaultTimeToLive è nullo, allora il tuo Tempo di vita è disattivato.
- Quando DefaultTimeToLive è -1, l'impostazione della durata TTL è attivata (nessun valore predefinito)
- Quando DefaultTimeToLive include qualsiasi altro valore Int, ad eccezione di 0, l'impostazione della durata TTL è attivata. Il server eliminerà automaticamente gli elementi sulla base del valore configurato.
Abilitare il tempo di vita (TTL) in un contenitore tramite Azure CLI o Azure PowerShell
Per creare o abilitare la TTL in un contenitore, consultare:
Abilitare il tempo di vita (TTL) in un contenitore usando un SDK
Database database = client.GetDatabase("database");
ContainerProperties properties = new ()
{
Id = "container",
PartitionKeyPath = "/customerId",
// Never expire by default
DefaultTimeToLive = -1
};
// Create a new container with TTL enabled and without any expiration value
Container container = await database
.CreateContainerAsync(properties);
Impostare il tempo di vita (TTL) di un contenitore usando un SDK
Per impostare la durata (TTL) in un contenitore, è necessario specificare un numero positivo diverso da zero che indica il periodo di tempo in secondi. In base al valore TTL configurato, tutti gli elementi nel contenitore dopo l'ultima modifica del timestamp dell'elemento _ts
vengono eliminati.
Database database = client.GetDatabase("database");
ContainerProperties properties = new ()
{
Id = "container",
PartitionKeyPath = "/customerId",
// Expire all documents after 90 days
DefaultTimeToLive = 90 * 60 * 60 * 24
};
// Create a new container with TTL enabled and without any expiration value
Container container = await database
.CreateContainerAsync(properties);
Impostare il tempo di vita (TTL) di un elemento utilizzando il portale
Oltre a impostare una durata (TTL) predefinita per un contenitore, è possibile impostare una durata (TTL) per un elemento. L'impostazione della TTL a livello di elemento eseguirà l'override della TTL predefinita dell'elemento in tale contenitore.
Per impostare la durata (TTL) in un elemento, è necessario specificare un numero positivo diverso da zero che indica il periodo di tempo, espresso in secondi, per la scadenza dell'elemento dopo l'ultima modifica del timestamp dell'elemento
_ts
. È possibile fornire anche un-1
quando l'elemento non deve scadere.Se l'elemento non ha un campo TTL, per impostazione predefinita all'elemento verrà applicata la TTL impostata per il contenitore.
Se la durata (TTL) è disabilitata a livello di contenitore, il campo TTL dell'elemento viene ignorato finché la durata (TTL) non viene abilitata nuovamente per il contenitore.
Usare la procedura seguente per abilitare la TTL in un elemento:
Accedere al portale di Azure.
Creare un nuovo account Azure Cosmos DB o selezionarne uno esistente.
Aprire il riquadro Esplora dati.
Selezionare un contenitore esistente, espanderlo e modificare i valori seguenti:
- Aprire la finestra Scalabilità e impostazioni.
- In Impostazione trovare TTL.
- Selezionare Sì (nessun valore predefinito) oppure selezionare Sì e impostare un valore TTL.
- Seleziona Salva per salvare le modifiche.
Passare quindi all'elemento per cui si desidera impostare la durata, aggiungere la proprietà
ttl
e selezionare Aggiorna.{ "id": "1", "_rid": "Jic9ANWdO-EFAAAAAAAAAA==", "_self": "dbs/Jic9AA==/colls/Jic9ANWdO-E=/docs/Jic9ANWdO-EFAAAAAAAAAA==/", "_etag": "\"0d00b23f-0000-0000-0000-5c7712e80000\"", "_attachments": "attachments/", "ttl": 10, "_ts": 1551307496 }
Impostare la TTL di un elemento usando un SDK
public record SalesOrder(string id, string customerId, int ttl);
Container container = database.GetContainer("container");
SalesOrder item = new (
"SO05",
"CO18009186470"
// Expire sales order in 30 days using "ttl" property
ttl: 60 * 60 * 24 * 30
);
await container.CreateItemAsync<SalesOrder>(item);
Reimpostare la TTL usando un SDK
È possibile reimpostare la durata (TTL) per un elemento eseguendo un'operazione di scrittura o aggiornamento per l'elemento. L'operazione di scrittura o aggiornamento imposterà _ts
sull'ora corrente e la TTL per la scadenza dell'elemento inizierà nuovamente. Se si vuole modificare la durata (TTL) di un elemento, è possibile aggiornare il campo nello stesso modo in cui si aggiornano tutti gli altri campi.
SalesOrder item = await container.ReadItemAsync<SalesOrder>(
"SO05",
new PartitionKey("CO18009186470")
);
// Update ttl to 2 hours
SalesOrder modifiedItem = item with {
ttl = 60 * 60 * 2
};
await container.ReplaceItemAsync<SalesOrder>(
modifiedItem,
"SO05",
new PartitionKey("CO18009186470")
);
Disabilitare la TTL usando un SDK
Per disabilitare la TTL in un contenitore e impedire al processo in background di controllare gli elementi scaduti, è necessario eliminare la proprietà DefaultTimeToLive
per il contenitore. Eliminare questa proprietà non equivale a impostarla su -1. Quando si imposta il valore su -1, i nuovi elementi aggiunti al contenitore non hanno scadenza, tuttavia è possibile eseguire l'override di questo valore per elementi specifici nel contenitore. Quando si rimuove la proprietà TTL dal contenitore, gli elementi non avranno mai scadenza anche se sono presenti elementi con override esplicito di un valore TTL predefinito precedente.
ContainerProperties properties = await container.ReadContainerAsync();
// Disable ttl at container-level
properties.DefaultTimeToLive = null;
await container.ReplaceContainerAsync(properties);
Passaggi successivi
Altre informazioni sulla TTL nell'articolo seguente: