Share via


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.