Sdílet prostřednictvím


Odstranění položek podle hodnoty klíče oddílu – rozhraní API pro NoSQL (Preview)

VZTAHUJE SE NA: NoSQL

Tento článek vysvětluje, jak pomocí sad SDK služby Azure Cosmos DB odstranit všechny položky podle hodnoty klíče logického oddílu.

Důležité

Funkce odstranění položek podle hodnoty klíče oddílu je ve verzi Public Preview. Tato funkce je poskytována bez smlouvy o úrovni služeb. Další informace najdete v dodatečných podmínkách použití pro verze Preview v Microsoft Azure.

Přehled funkcí

Funkce odstranění pomocí klíče oddílu je asynchronní operace na pozadí, která umožňuje odstranit všechny dokumenty se stejnou hodnotou klíče logického oddílu pomocí sady Cosmos SDK.

Vzhledem k tomu, že počet dokumentů, které chcete odstranit, může být velký, operace se spustí na pozadí. I když se operace fyzického odstranění spouští na pozadí, efekty jsou k dispozici okamžitě, protože dokumenty, které se mají odstranit, nezobrazují ve výsledcích dotazů nebo operací čtení.

Operace odstranění podle klíče oddílu se zaměřuje na spotřebu maximálně 10% z celkového dostupného počtu jednotek žádostí za sekundu (RU/s) v kontejneru na základě zásady nejlepší snahy. To pomáhá omezit prostředky používané touto úlohou na pozadí.

Začínáme

Aktualizujte svůj účet služby Azure Cosmos DB, abyste povolili funkci odstranění podle klíče oddílu pomocí Azure CLI.

  1. Nastavte proměnné shellu.

        $resourceGroupName = <azure_resource_group>
        $accountName = <azure_cosmos_db_account_name>
        $DeleteByPk = "DeleteAllItemsByPartitionKey"
    
  2. Uveďte seznam existujících funkcí vašeho účtu.

       $cosmosdb = az cosmosdb show \
        --resource-group $resourceGroupName \
        --name $accountName
       $capabilities = ($cosmosdb | ConvertFrom-Json).capabilities 
    
  3. Pokud funkce Odstranit položky podle klíče oddílu v seznamu ještě neexistuje, přidejte ji.

    Poznámka:

    Seznam funkcí musí vždy určovat všechny možnosti, které chcete povolit ( včetně). To zahrnuje funkce, které už jsou povolené pro účet, který chcete zachovat.

       $capabilities = $DeleteByPk
    
  4. Aktualizujte účet služby Cosmos DB, aby bylo možné odstranit položky podle klíče oddílu.

        az cosmosdb update --capabilities $capabilities \
         -n $accountName -g $resourceGroupName
    

Ukázkový kód

Pokud chcete odstranit položky podle klíče oddílu, použijte verzi 3.25.0 Preview nebo vyšší sady .NET SDK služby Azure Cosmos DB.

// 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");
}

Nejčastější dotazy

Projeví se výsledky operace odstranění pomocí klíče oddílu okamžitě?

Ano, po spuštění operace odstranění pomocí klíče oddílu se dokumenty, které se mají odstranit, nezobrazí ve výsledcích dotazů nebo operací čtení. To také znamená, že můžete napsat nový dokument se stejným ID a klíčem oddílu jako dokument, který se má odstranit, aniž by došlo ke konfliktu.

Podívejte se na známé problémy s výjimkami.

Co se stane, když provedu operaci smazání podle klíče oddílu a pak okamžitě zapíšu nový dokument se stejným klíčem oddílu?

Při vydání operace odstranění pomocí klíče oddílu se odstraní pouze dokumenty, které existují v kontejneru s hodnotou klíče oddílu. Všechny nové dokumenty, které přicházejí, nejsou v rozsahu odstranění.

Jak je operace odstranění podle klíče oddílu upřednostněna v porovnání s jinými operacemi ve vztahu ke kontejneru?

Ve výchozím nastavení může operace odstranění podle hodnoty klíče oddílu spotřebovat až rezervovaný zlomek – 0,1 nebo 10 % celkového počtu RU/s prostředku. Všechny jednotky žádostí (RU) v tomto kontejneru, které se nepoužívají, budou k dispozici pro jiné operace mimo prostředí, jako jsou čtení, zápisy a dotazy.

Předpokládejme například, že jste kontejneru nastavili 1000 RU/s. Operace klíče oddílu průběžně odstraňuje 100 RU za sekundu po dobu 5 sekund. Během každé z těchto 5 sekund je k dispozici 900 RU pro databázové operace mimo pozadí. Po dokončení operace odstranění je teď všech 1 000 RU/s opět k dispozici.

Známé problémy

V některých scénářích nemusí operace odstranění pomocí klíče oddílu okamžitě zaručit jeho účinky a během operace může dojít k částečné viditelnosti.

  • Agregované dotazy, které používají index – například dotazy COUNT – vydané během probíhající operace odstranění klíčem oddílu můžou obsahovat výsledky dokumentů, které se mají odstranit. K tomu může dojít, dokud nebude operace odstranění zcela dokončena.
  • Dotazy vydané v analytickém úložišti během probíhající operace mazání podle klíče oddílu mohou obsahovat výsledky dokumentů, které se mají smazat. K tomu může dojít, dokud nebude operace odstranění zcela dokončena.
  • Průběžné zálohování (obnovení k určitému bodu v čase) se aktivuje během probíhající operace odstranění podle klíče oddílu a může obsahovat výsledky dokumentů, které se mají odstranit v obnovené kolekci. Pokud máte scénář, který vyžaduje průběžné zálohování, nedoporučujeme tuto funkci Preview používat.

Omezení

Odstranění hierarchických klíčů oddílu se nepodporuje. Tato funkce umožňuje odstranění položek pouze na základě poslední úrovně klíčů oddílů. Představte si například scénář, ve kterém se rozdělovací klíč skládá ze tří hierarchických úrovní: země/region, stát a město. V tomto kontextu je možné efektivně využít funkci odstranění podle klíčů oddílů tak, že zadáte úplný klíč oddílu, který zahrnuje všechny úrovně, konkrétně země nebo oblast, stát a město. Při pokusu o odstranění pomocí klíčů středního oddílu, jako je země nebo oblast, nebo pouze země/oblast, dojde k chybě.

Jak poskytnout zpětnou vazbu nebo nahlásit problém nebo chybu

Pošlete e-mail cosmosPkDeleteFeedbk@microsoft.com s dotazy nebo zpětnou vazbou.

Požadavky sady SDK

Vyhledejte nejnovější verzi sady SDK, která tuto funkci podporuje.

sada SDK Podporované verze Odkaz správce balíčků
.NET SDK v3 3.25.0 nebo vyšší (musí být verze Preview) https://www.nuget.org/packages/Microsoft.Azure.Cosmos/
Java SDK v4 4.19.0 nebo vyšší (rozhraní API je označené jako beta verze) https://mvnrepository.com/artifact/com.azure/azure-cosmos
Python SDK v4 4.4.0b1 nebo novější (musí být beta verze) https://pypi.org/project/azure-cosmos/4.4.0b1/

Podpora dalších sad SDK se plánuje v budoucnu.

Další kroky