Élettartam konfigurálása az Azure Cosmos DB-ben
A KÖVETKEZŐRE VONATKOZIK: NoSQL
Az Azure Cosmos DB-ben konfigurálhatja az élettartamot (TTL) a tároló szintjén, vagy felülbírálhatja egy elem szintjén a tároló beállítása után. A tároló TTL-értékét az Azure Portalon vagy a nyelvspecifikus SDK-val lehet beállítani. Az elemszintű TTL-felülbírálások az SDK-k használatával konfigurálhatók.
A cikk tartalma az Azure Cosmos DB tranzakciós tár TTL-jével kapcsolatos. Ha Analitycal Store TTL-t keres, amely engedélyezi a NoETL HTAP-forgatókönyveket az Azure Synapse Linken keresztül, kattintson ide.
Idő engedélyezése tárolón való élethez az Azure Portal használatával
Az alábbi lépésekkel időt engedélyezhet egy lejárat nélküli tárolón való élethez. Ha engedélyezi a TTL-t a tároló szintjén, hogy ugyanazt az értéket felül lehessen bírálni egy adott elem szintjén. A TTL-t úgy is beállíthatja, hogy másodpercekig nem nulla értéket ad meg.
Jelentkezzen be az Azure Portalra.
Hozzon létre egy új Azure Cosmos DB-fiókot, vagy válasszon ki egy meglévő fiókot.
Nyissa meg az Adatkezelő panelt.
Válasszon ki egy meglévő tárolót, bontsa ki a Beállítások lapot, és módosítsa a következő értékeket:
A Keresés beállítása alatt az élettartam.
A követelményeknek megfelelően a következőt teheti:
- A beállítás kikapcsolása
- Állítsa be (nincs alapértelmezett) vagy
- Kapcsolja be másodpercben megadott TTL-értékkel.
A módosítások mentéséhez válassza a Mentés lehetőséget.
- Ha a DefaultTimeToLive értéke null, akkor az élettartam ki van kapcsolva
- Ha a DefaultTimeToLive értéke -1, akkor az Élettartam beállítás be van kapcsolva (nincs alapértelmezett)
- Ha a DefaultTimeToLive bármilyen más int értékkel rendelkezik (a 0 kivételével), akkor az Élettartam beállítás be van kapcsolva. A kiszolgáló a konfigurált érték alapján automatikusan törli az elemeket.
Az Azure CLI vagy az Azure PowerShell használatával időt engedélyezhet egy tárolón való élethez
A TTL tárolón való létrehozásához vagy engedélyezéséhez lásd:
- Tároló létrehozása TTL-vel az Azure CLI használatával
- Tároló létrehozása TTL-vel a PowerShell használatával
Tárolón való életidő engedélyezése SDK használatával
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);
Tárolón való életidő beállítása SDK használatával
A tárolón való élettartam beállításához meg kell adnia egy nem nulla pozitív számot, amely másodpercben jelzi az időtartamot. A konfigurált TTL-érték alapján a tárolóban lévő összes elem törlődik az elem _ts
utolsó módosított időbélyege után.
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);
Egy elem élettartamának beállítása a Portál használatával
Amellett, hogy beállít egy alapértelmezett élettartamot egy tárolón, beállíthat egy élettartamot egy elemhez. Az elemszinten való élettartam beállítása felülbírálja a tárolóban lévő elem alapértelmezett TTL-ét.
Ha egy elemen szeretné beállítani a TTL-t, meg kell adnia egy nem nulla pozitív számot, amely azt az időszakot jelzi másodpercben, hogy az elem az elem
_ts
utolsó módosított időbélyege után lejárjon. Akkor is megadható,-1
ha az elem nem jár le.Ha az elem nem rendelkezik TTL-mezővel, akkor alapértelmezés szerint a tárolóra beállított TTL érvényes lesz az elemre.
Ha a TTL le van tiltva a tároló szintjén, a rendszer figyelmen kívül hagyja az elem TTL-mezőjét, amíg a TTL újra nem lesz engedélyezve a tárolón.
Az alábbi lépésekkel engedélyezheti az elemeken való életidőt:
Jelentkezzen be az Azure Portalra.
Hozzon létre egy új Azure Cosmos DB-fiókot, vagy válasszon ki egy meglévő fiókot.
Nyissa meg az Adatkezelő panelt.
Válasszon ki egy meglévő tárolót, bontsa ki, és módosítsa a következő értékeket:
- Nyissa meg a Méretezés és beállítások ablakot.
- A Keresés beállítása alatt az élettartam.
- Válassza a Be (nincs alapértelmezett) lehetőséget, vagy válassza a Be lehetőséget, és állítson be egy TTL-értéket.
- A módosítások mentéséhez válassza a Mentés lehetőséget.
Ezután keresse meg azt az elemet, amelynek az élettartamát meg szeretné adni, adja hozzá a tulajdonságot, és válassza a
ttl
Frissítés lehetőséget.{ "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 }
Egy elem élettartamának beállítása SDK használatával
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);
Élettartam visszaállítása SDK használatával
Az elemen végzett írási vagy frissítési művelettel alaphelyzetbe állíthatja az elemek élettartamát. Az írási vagy frissítési művelet az aktuális időpontra állítja be az _ts
értéket, és az elem lejáratához szükséges TTL újra megkezdődik. Ha módosítani szeretné egy elem TTL-ét, ugyanúgy frissítheti a mezőt, mint bármely más mezőt.
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")
);
Élettartam letiltása SDK használatával
Ha le szeretné tiltani a tárolóban való élettartamot, és nem szeretné, hogy a háttérfolyamat lejárt elemeket keressen, törölni kell a DefaultTimeToLive
tároló tulajdonságát. A tulajdonság törlése eltér attól, hogy a tulajdonságot -1 értékre állítja. Ha -1 értékre állítja, a tárolóhoz hozzáadott új elemek örökké élnek, de ezt az értéket felülbírálhatja a tároló bizonyos elemein. Ha eltávolítja a TTL tulajdonságot a tárolóból, az elemek soha nem járnak le, még akkor sem, ha explicit módon felülírták az előző alapértelmezett TTL-értéket.
ContainerProperties properties = await container.ReadContainerAsync();
// Disable ttl at container-level
properties.DefaultTimeToLive = null;
await container.ReplaceContainerAsync(properties);
Következő lépések
További információ az élethez való időről a következő cikkben: