Partager via


Supprimer des éléments par valeur de clé de partition - API NoSQL (préversion)

S’APPLIQUE À : NoSQL

Cet article explique comment utiliser les kits de développement logiciel (SDK) Azure Cosmos DB pour supprimer tous les éléments par valeur de clé de partition logique.

Important

La suppression d’éléments par valeur de clé de partition est en préversion publique. Cette fonctionnalité est fournie sans contrat de niveau de service. Pour plus d’informations, consultez Conditions d’Utilisation Supplémentaires relatives aux Évaluations Microsoft Azure.

Présentation des fonctionnalités

La fonctionnalité de suppression par clé de partition est une opération asynchrone en arrière-plan qui vous permet de supprimer tous les documents qui ont la même valeur de clé de partition logique, en utilisant le SDK Cosmos.

Le nombre de documents à supprimer pouvant être volumineux, l’opération s’exécute en arrière-plan. Bien que l’opération de suppression physique s’exécute en arrière-plan, les effets sont disponibles immédiatement, car les documents à supprimer n’apparaissent pas dans les résultats de requêtes ou les opérations de lecture.

L’opération de suppression par clé de partition vise à consommer au maximum 10 % du nombre total de RU/s disponibles sur le conteneur chaque seconde, sur la base du meilleur effort. Cela permet de limiter les ressources utilisées par cette tâche en arrière-plan.

Bien démarrer

Mettez à jour votre compte Azure Cosmos DB pour activer la fonctionnalité « Supprimer par clé de partition » en utilisant Azure CLI.

  • Étape 1 : définir les variables de l’interpréteur de commandes

        $resourceGroupName = <azure_resource_group>
        $accountName = <azure_cosmos_db_account_name>
        $DeleteByPk = "DeleteAllItemsByPartitionKey"
    
  • Étape 2 : répertorier les fonctionnalités existantes de votre compte

       $cosmosdb = az cosmosdb show \
        --resource-group $resourceGroupName \
        --name $accountName
       $capabilities = ($cosmosdb | ConvertFrom-Json).capabilities 
    
  • Étape 3 : ajouter la fonctionnalité « Supprimer des éléments par clé de partition » dans la liste des fonctionnalités si elle n’existe pas déjà

    Remarque

    La liste des fonctionnalités doit toujours spécifier toutes les fonctionnalités que vous souhaitez activer, inclusivement. Cela inclut les fonctionnalités déjà activées pour le compte que vous souhaitez conserver.

       $capabilities = $DeleteByPk
    
  • Étape 4 : mettre à jour le compte Azure Cosmos DB pour activer la fonctionnalité « Supprimer des éléments par clé de partition »

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

Exemple de code

Utilisez la version 3.25.0-preview (ou une préversion ultérieure) du Kit de développement logiciel (SDK) .NET Azure Cosmos DB pour supprimer des éléments par clé de partition.

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

Forum Aux Questions (FAQ)

Les résultats de l’opération de suppression par clé de partition sont-ils reflétés immédiatement ?

Oui, une fois l’opération de suppression par clé de partition démarrée, les documents à supprimer ne s’affichent pas dans les résultats de requêtes ou d’opérations de lecture. Cela signifie également que vous pouvez écrire un nouveau document avec le même ID et la même clé de partition qu’un document à supprimer sans entraîner de conflit.

Consultez Problèmes connus pour les exceptions.

Que se passe-t-il si j’émets une opération de suppression par clé de partition, puis que j’écris immédiatement un nouveau document avec la même clé de partition ?

Lorsque l’opération de suppression par clé de partition est émise, seuls les documents qui existent dans le conteneur à ce stade avec la valeur de clé de partition sont supprimés. Les nouveaux documents qui arrivent n’entrent pas dans l’étendue de la suppression.

Dans quelle mesure l’opération de suppression par clé de partition est-elle prioritaire sur autres opérations sur le conteneur ?

Par défaut, l’opération de suppression par valeur de clé de partition peut consommer jusqu’à une fraction réservée, 0,1 ou 10 %, de la RU/s globale sur la ressource. Toutes les unités de requête (RU) inutilisées dans ce compartiment sont disponibles pour d’autres opérations non effectuées en arrière-plan, telles que les lectures, les écritures et les requêtes.

Par exemple, supposons que vous avez provisionné 1000 RU/s sur un conteneur. Une opération de suppression par clé de partition en cours consomme 100 RU chaque seconde pendant 5 secondes. Au cours de chacune de ces 5 secondes, 900 RU sont disponibles pour les opérations de base de données non effectuées en arrière-plan. Une fois l’opération de suppression terminée, toutes les 1 000 RU/s sont désormais disponibles à nouveau.

Problèmes connus

Dans certains scénarios, une opération de suppression par clé de partition peut ne pas garantir immédiatement ses effets, ce qui peut entraîner une visibilité partielle pendant l’opération.

  • Requêtes d’agrégation qui utilisent l’index (par exemple, les requêtes COUNT), émises pendant une opération de suppression par clé de partition en cours, peuvent contenir les résultats des documents à supprimer. Cela peut se produire jusqu’à ce que l’opération de suppression soit complètement terminée.
  • Les requêtes émises sur le magasin analytique pendant une opération de suppression par clé de partition en cours peuvent contenir les résultats des documents à supprimer. Cela peut se produire jusqu’à ce que l’opération de suppression soit complètement terminée.
  • Sauvegarde continue (restauration à un instant dans le passé) : une restauration déclenchée lors d’une opération de suppression par clé de partition peut contenir les résultats des documents à supprimer dans la collection restaurée. Il n’est pas recommandé d’utiliser cette fonctionnalité d’évaluation si vous avez un scénario nécessitant une sauvegarde continue.

Limites

  • La suppression de clés de partition hiérarchiques n’est pas prise en charge. Cette fonctionnalité permet la suppression d’éléments uniquement en fonction du dernier niveau de clés de partition. Par exemple, considérez un scénario où une clé de partition se compose de trois niveaux hiérarchiques : pays, état et ville. Dans ce contexte, la fonctionnalité de suppression par clé de partition peut être utilisée efficacement en spécifiant la clé de partition complète, englobant tous les niveaux, à savoir le pays/l’état/la ville. Toute tentative de suppression à l’aide de clés de partition intermédiaires, telles que le pays/l’état ou le seul pays, génère une erreur.

Comment envoyer des commentaires ou signaler un problème/bogue

  • Envoyez vos questions et commentaires par e-mail à cosmosPkDeleteFeedbk@microsoft.com.

Configuration requise du kit de développement logiciel (SDK)

Recherchez la dernière version du Kit de développement logiciel (SDK) qui prend en charge cette fonctionnalité.

Kit SDK Versions prises en charge Lien du gestionnaire de package
Kit de développement logiciel (SDK) .NET v3 >= 3.25.0-preview (doit être une préversion) https://www.nuget.org/packages/Microsoft.Azure.Cosmos/
Kit SDK Java v4 >= 4.19.0 (l’API est marquée comme bêta) https://mvnrepository.com/artifact/com.azure/azure-cosmos
Kit SDK Python v4 >= 4..4.0b1 (doit être une version bêta) https://pypi.org/project/azure-cosmos/4.4.0b1/

La prise en charge d’autres kits SDK est prévue ultérieurement.

Étapes suivantes

Consultez les articles suivants pour en savoir plus sur les opérations de Kit de développement logiciel (SDK) dans Azure Cosmos DB.