Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
GILT FÜR: NoSQL
In Azure Cosmos DB können Sie die Ablaufzeit (TTL) auf Containerebene konfigurieren oder sie auf Elementebene außer Kraft setzen, nachdem Sie TTL für den Container festgelegt haben. Sie können TTL für einen Container mithilfe des Azure-Portals oder der sprachspezifischen SDKs konfigurieren. TTL-Außerkraftsetzungen auf Elementebene können mithilfe der SDKs konfiguriert werden.
Tipp
Dieser Inhalt des Artikels bezieht sich auf die Gültigkeitsdauer des Azure Cosmos DB-Transaktionsspeichers. Wenn Sie nach TTL für analytische Speicher suchen, der NoETL-HTAP-Szenarien über Azure Synapse Link ermöglicht, lesen Sie Analytical Time-to-Live-.
Aktivieren von TTL auf einem Container mithilfe des Azure-Portals
Führen Sie die folgenden Schritte aus, um TTL für einen Container ohne Ablauf zu aktivieren. Wenn TTL auf Containerebene aktiviert wird, kann derselbe Wert auf der Ebene eines einzelnen Elements überschrieben werden. Sie können die TTL auch festlegen, indem Sie einen Wert ungleich Null für Sekunden eingeben.
Melden Sie sich beim Azure-Portal an.
Erstellen Sie ein neues Azure Cosmos DB-Konto, oder wählen Sie ein bereits vorhandenes Konto aus.
Öffnen Sie den Bereich Daten-Explorer.
Wählen Sie einen vorhandenen Container aus, erweitern Sie die Registerkarte "Einstellungen ", und ändern Sie die folgenden Werte:
- Suchen Sie unter EinstellungenTime to Live.
- Basierend auf Ihren Anforderungen können Sie:
- Deaktivieren Sie diese Einstellung.
- Legen Sie sie auf "Ein" fest (keine Standardeinstellung).
- Aktivieren Sie dies mit einem in Sekunden angegebenen TTL-Wert.
- Klicken Sie zum Speichern der Änderungen auf Speichern.
- Wenn DefaultTimeToLive null ist, ist Ihre TTL deaktiviert.
- Wenn DefaultTimeToLive-1 ist, ist Ihre TTL-Einstellung "Ein " (Keine Standardeinstellung).
- Wenn DefaultTimeToLive einen anderen ganzzahligen Wert aufweist (mit Ausnahme von 0), ist Ihre TTL-Einstellung aktiviert. Der Server löscht Elemente automatisch basierend auf dem konfigurierten Wert.
Aktivieren von TTL auf einem Container mithilfe von Azure CLI oder Azure PowerShell
Informationen zum Erstellen oder Aktivieren von TTL in einem Container finden Sie unter:
- Erstellen eines Containers mit TTL mithilfe von Azure CLI
- Erstellen eines Containers mit TTL mithilfe von PowerShell
Aktivieren von TTL auf einem Container mithilfe eines 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);
Festlegen von TTL für einen Container mithilfe eines SDK
Um die TTL für einen Container festzulegen, müssen Sie eine nichtzero positive Zahl angeben, die den Zeitraum in Sekunden angibt. Auf der Grundlage des konfigurierten Werts für die Gültigkeitsdauer werden alle Elemente im Container nach dem Zeitstempel (_ts) der letzten Änderung des Elements gelöscht.
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);
Festlegen von TTL für ein Element mithilfe des Azure-Portals
Zusätzlich zum Festlegen einer Standard-TTL für einen Container können Sie eine TTL für ein Element festlegen. Wenn Sie TTL auf Elementebene festlegen, wird die Standard-TTL des Elements in diesem Container außer Kraft gesetzt.
Um die TTL für ein Element festzulegen, müssen Sie eine positive Zahl angeben, die ungleich null ist und den Zeitraum in Sekunden angibt, nach dem das Element nach dem letzten Änderungszeitstempel des Elements
_tsabläuft. Sie können auch-1angeben, wenn das Element nicht ablaufen sollte.Wenn das Element nicht über ein TTL-Feld verfügt, gilt standardmäßig der auf den Container festgelegte TTL für das Element.
Wenn TTL auf Containerebene deaktiviert ist, wird das TTL-Feld für das Element ignoriert, bis TTL im Container erneut aktiviert ist.
Führen Sie die folgenden Schritte aus, um TTL für ein Element zu aktivieren:
Melden Sie sich beim Azure-Portal an.
Erstellen Sie ein neues Azure Cosmos DB-Konto, oder wählen Sie ein bereits vorhandenes Konto aus.
Öffnen Sie den Bereich Daten-Explorer.
Wählen Sie einen vorhandenen Container aus, erweitern Sie ihn, und ändern Sie die folgenden Werte:
- Öffnen Sie das Fenster Scale & Settings (Skalierung und Einstellungen).
- Suchen Sie unter Einstellungen nach Lebensdauer.
- Wählen Sie Ein (Standard) oder Ein aus, und legen Sie einen Wert für die Gültigkeitsdauer fest.
- Klicken Sie zum Speichern der Änderungen auf Speichern.
Navigieren Sie zu dem Element, für das Sie die Zeit auf Live festlegen möchten, fügen Sie die
ttlEigenschaft hinzu, und wählen Sie "Aktualisieren" aus.{ "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 }
Festlegen von TTL für ein Element mithilfe eines 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);
Zurücksetzen von TTL mithilfe eines SDK
Sie können die TTL für ein Element zurücksetzen, indem Sie einen Schreib- oder Aktualisierungsvorgang für das Element ausführen. Der Schreib- oder Aktualisierungsvorgang legt den _ts Wert auf die aktuelle Uhrzeit fest, und die TTL für das Ablaufen des Elements beginnt erneut. Wenn Sie die Gültigkeitsdauer eines Elements ändern möchten, können Sie das Feld genau wie jedes andere Feld aktualisieren.
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")
);
Deaktivieren von TTL mithilfe eines SDK
Um TTL für einen Container zu deaktivieren und den Hintergrundprozess daran zu hindern, auf abgelaufene Elemente zu überprüfen, sollte die DefaultTimeToLive Eigenschaft für den Container gelöscht werden. Das Löschen dieser Eigenschaft unterscheidet sich von der Einstellung auf -1. Wenn Sie den Wert auf -1 setzen, bleiben neue Elemente, die dem Container hinzugefügt werden, für immer erhalten; allerdings können Sie diesen Wert für bestimmte Elemente im Container überschreiben. Wenn Sie die TTL-Eigenschaft aus dem Container entfernen, laufen die Elemente nie ab, auch wenn sie den vorherigen Standard-TTL-Wert explizit außer Kraft setzen.
ContainerProperties properties = await container.ReadContainerAsync();
// Disable ttl at container-level
properties.DefaultTimeToLive = null;
await container.ReplaceContainerAsync(properties);
