Elemek törlése partíciókulcs-érték alapján – API for NoSQL (előzetes verzió)
A KÖVETKEZŐRE VONATKOZIK: NoSQL
Ez a cikk bemutatja, hogyan lehet az Azure Cosmos DB SDK-kkal az összes elemet logikai partíciókulcs-érték alapján törölni.
Fontos
Az elemek partíciókulcs-érték szerinti törlése nyilvános előzetes verzióban érhető el. Ez a funkció szolgáltatásszint-szerződés nélkül érhető el. For more information, see Supplemental Terms of Use for Microsoft Azure Previews.
A funkciók áttekintése
A partíciókulcs-törlési funkció egy aszinkron háttérművelet, amely lehetővé teszi az azonos logikai partíciókulcs-értékkel rendelkező összes dokumentum törlését a Cosmos SDK használatával.
Mivel a törölni kívánt dokumentumok száma nagy lehet, a művelet a háttérben fut. Bár a fizikai törlési művelet a háttérben fut, az effektusok azonnal elérhetők, mivel a törölni kívánt dokumentumok nem jelennek meg a lekérdezések vagy olvasási műveletek eredményei között.
A partíciókulcs-törlési művelet arra van korlátozva, hogy másodpercenként a tároló teljes elérhető RU/s-jának legfeljebb 10%-át használja fel. Ez segít korlátozni a háttérfeladat által használt erőforrásokat.
Első lépések
Frissítse Azure Cosmos DB-fiókját a "Törlés partíciókulcs alapján" funkció engedélyezéséhez az Azure CLI használatával.
1. lépés: Rendszerhéjváltozók beállítása
$resourceGroupName = <azure_resource_group> $accountName = <azure_cosmos_db_account_name> $DeleteByPk = "DeleteAllItemsByPartitionKey"
2. lépés: A fiók meglévő képességeinek listázása.
$cosmosdb = az cosmosdb show \ --resource-group $resourceGroupName \ --name $accountName $capabilities = ($cosmosdb | ConvertFrom-Json).capabilities
3. lépés: Ha még nem létezik, adja hozzá az "Elemek törlése partíciókulcs szerint" funkciót a képességek listájában.
Megjegyzés:
A képességek listájának mindig meg kell adnia az összes engedélyezni kívánt képességet, beleértve azokat is. Ide tartoznak azok a képességek, amelyek már engedélyezve vannak a megtartani kívánt fiókhoz.
$capabilities += $DeleteByPk
4. lépés: A Cosmos DB-fiók frissítése az "Elemek törlése partíciókulcs alapján" funkció engedélyezéséhez
az cosmosdb update --capabilities $capabilities \ -n $accountName -g $resourceGroupName
Mintakód
Az Azure Cosmos DB .NET SDK 3.25.0-s előzetes verziójával (vagy egy magasabb előzetes verzióval) partíciókulcs alapján törölheti az elemeket.
// Suppose our container is partitioned by tenantId, and we want to delete all the data for a particular tenant Contoso
// Get reference to the container
var container = cosmosClient.GetContainer("DatabaseName", "ContainerName");
// Delete by logical partition key
ResponseMessage deleteResponse = await container.DeleteAllItemsByPartitionKeyStreamAsync(new PartitionKey("Contoso"));
if (deleteResponse.IsSuccessStatusCode) {
Console.WriteLine($"Delete all documents with partition key operation has successfully started");
}
Frequently asked questions (FAQ)
Azonnal megjelennek a partíciókulcs-törlési művelet eredményei?
Igen, a partíciókulcs-törlési művelet elindítása után a törölni kívánt dokumentumok nem jelennek meg a lekérdezések vagy olvasási műveletek eredményei között. Ez azt is jelenti, hogy új dokumentumot írhat ugyanazzal az azonosítóval és partíciókulcsmal, mint a törölni kívánt dokumentum, ütközés nélkül.
A kivételek ismert problémáit lásd.
Mi történik, ha partíciókulcs-művelettel adok ki törlést, majd azonnal megírok egy új dokumentumot ugyanazzal a partíciókulcsmal?
A partíciókulcs-törlési művelet kiadásakor csak a tárolóban, majd a partíciókulcs értékével rendelkező dokumentumok törlődnek. A megjelenő új dokumentumok nem lesznek a törlés hatókörében.
Hogyan rangsorolja a partíciókulcs-törlési művelet a tárolóval szemben végzett többi művelet között?
Alapértelmezés szerint a partíciókulcs értékének törlési művelete az erőforrás teljes RU/s-jának legfeljebb 0,1 vagy 10%-át használhatja fel. A gyűjtőben nem használt kérelemegységek (kérelemegységek) más, nem visszahelyezett műveletekhez, például olvasásokhoz, írásokhoz és lekérdezésekhez is elérhetők lesznek.
Tegyük fel például, hogy 1000 RU/s-t helyezett üzembe egy tárolón. Van egy folyamatban lévő törlés partíciókulcs-művelettel, amely másodpercenként 100 kérelemegységet használ fel 5 másodpercig. Ezen 5 másodperc alatt 900 kérelemegység érhető el a nem visszahelyezhető adatbázis-műveletekhez. A törlési művelet befejeződése után mind az 1000 RU/s újra elérhető lesz.
Ismert problémák
Bizonyos esetekben előfordulhat, hogy a partíciókulcs-törlési művelet nem garantálja azonnal a hatását, és részleges láthatóság fordulhat elő a művelet során.
- Az indexet használó összesítő lekérdezések – például a DARAB lekérdezések –, amelyek a partíciókulcs-művelettel történő folyamatos törlés során lettek kiadva, tartalmazhatják a törölni kívánt dokumentumok eredményeit. Ez a törlési művelet teljes befejezéséig fordulhat elő.
- A partíciókulcs-művelet által folyamatban lévő törlés során az elemzési tárra kiadott lekérdezések tartalmazhatják a törölni kívánt dokumentumok eredményeit. Ez a törlési művelet teljes befejezéséig fordulhat elő.
- Folyamatos biztonsági mentés (időponthoz kötött visszaállítás) – a partíciókulcs-művelet által folyamatban lévő törlés során aktivált visszaállítás tartalmazhatja a visszaállított gyűjteményben törölni kívánt dokumentumok eredményeit. Nem ajánlott ezt az előzetes verziójú funkciót használni, ha olyan forgatókönyve van, amely folyamatos biztonsági mentést igényel.
Korlátozások
- A hierarchikus partíciókulcsok törlése nem támogatott. Ez a funkció lehetővé teszi az elemek törlését kizárólag a partíciókulcsok utolsó szintje alapján. Vegyük például azt a forgatókönyvet, amelyben a partíciókulcs három hierarchikus szintből áll: országból, államból és városból. Ebben az összefüggésben a partíciókulcsok által végzett törlési funkció hatékonyan alkalmazható a teljes partíciókulcs megadásával, amely az összes szintet magában foglalja, nevezetesen az országot/államot/várost. A köztes partíciókulcsok (például ország/állam vagy csak ország) használatával történő törlés megkísérlése hibát eredményez.
Visszajelzés küldése vagy probléma/hiba bejelentése
- E-mail küldése cosmosPkDeleteFeedbk@microsoft.com kérdésekkel vagy visszajelzéssel.
SDK-követelmények
Keresse meg az SDK legújabb verzióját, amely támogatja ezt a funkciót.
SDK | Támogatott verziók | Csomagkezelő hivatkozás |
---|---|---|
.NET SDK v3 | >= 3.25.0-előzetes verzió (előzetes verziónak kell lennie) | https://www.nuget.org/packages/Microsoft.Azure.Cosmos/ |
Java SDK v4 | >= 4.19.0 (az API bétaverzióként van megjelölve) | https://mvnrepository.com/artifact/com.azure/azure-cosmos |
Python SDK v4 | >= 4..4.0b1 (bétaverziónak kell lennie) | https://pypi.org/project/azure-cosmos/4.4.0b1/ |
A jövőben további SDK-k támogatását tervezik.
További lépések
További SDK-műveletek az Azure Cosmos DB-ben való megismeréséhez tekintse meg az alábbi cikkeket.