Compartir a través de


Eliminación de elementos por valor de clave de partición: API para NoSQL (versión preliminar)

SE APLICA A: NoSQL

En este artículo se explica cómo usar los SDK de Azure Cosmos DB para eliminar todos los elementos por valor de clave de partición lógica.

Importante

La eliminación de elementos por valor de clave de partición está en versión preliminar pública. Esta característica se proporciona sin un Acuerdo de Nivel de Servicio. Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.

Introducción a las características

La característica de eliminación por clave de partición es una operación asincrónica y en segundo plano que permite eliminar todos los documentos con el mismo valor de clave de partición lógica, mediante el SDK de Cosmos.

Dado que el número de documentos que se van a eliminar puede ser grande, la operación se ejecuta en segundo plano. Aunque la operación de eliminación física se ejecuta en segundo plano, los efectos son inmediatos, ya que los documentos que se van a eliminar no aparecen en los resultados de las consultas ni las operaciones de lectura.

La operación de eliminación por clave de partición tiene como objetivo consumir como máximo el 10 % del total de RU/s disponibles en el contenedor cada segundo mejor esfuerzo. Esto ayuda a limitar los recursos utilizados por esta tarea en segundo plano.

Introducción

Actualice la cuenta de Azure Cosmos DB para habilitar la característica "Eliminar por clave de partición" mediante la CLI de Azure.

  • Paso 1: establezca las variables del shell

        $resourceGroupName = <azure_resource_group>
        $accountName = <azure_cosmos_db_account_name>
        $DeleteByPk = "DeleteAllItemsByPartitionKey"
    
  • Paso 2: enumere las funcionalidades existentes de la cuenta.

       $cosmosdb = az cosmosdb show \
        --resource-group $resourceGroupName \
        --name $accountName
       $capabilities = ($cosmosdb | ConvertFrom-Json).capabilities 
    
  • Paso 3: agregue la funcionalidad "Eliminar elementos por clave de partición" en la lista de funcionalidades si aún no existe.

    Nota:

    La lista de capacidades siempre debe especificar todas las que desea habilitar, de forma inclusiva. Esto incluye capacidades que ya están habilitadas para la cuenta que desea conservar.

       $capabilities = $DeleteByPk
    
  • Paso 4: actualice la cuenta de Azure Cosmos DB para habilitar la característica "Eliminar por clave de partición"

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

Código de ejemplo

Use la versión 3.25.0-preview (o una versión preliminar posterior) del SDK de .NET de Azure Cosmos DB para eliminar elementos por clave de partición.

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

Preguntas más frecuentes

Los resultados de la operación de eliminación por clave de partición, ¿se reflejan inmediatamente?

Sí, una vez iniciada la operación de eliminación por clave de partición, los documentos que se van a eliminar no aparecen en los resultados de las consultas ni las operaciones de lectura. Esto también significa que puede escribir un nuevo documento con el mismo identificador y la misma clave de partición que un documento que se va a eliminar sin que se produzca conflicto.

Consulte Problemas conocidos para las excepciones.

¿Qué ocurre si emito una operación de eliminación por clave de partición y escribo inmediatamente un nuevo documento con la misma clave de partición?

Cuando se emite la operación de eliminación por clave de partición, solo se eliminan los documentos que existen en el contenedor con el valor de clave de partición. Los nuevos documentos que se incluyan no pertenecerán al ámbito de la eliminación.

¿Cómo se prioriza la operación de eliminación por clave de partición en comparación con otras del contenedor?

De forma predeterminada, la operación de eliminación por valor de clave de partición puede consumir hasta una fracción reservada (del 0,1 o el 10 %) de las RU/s totales del recurso. Las unidades de solicitud (RU) de este cubo que no se usen estarán disponibles para otras operaciones que no se realicen en segundo plano, como las lecturas, las escrituras y las consultas.

Por ejemplo, supongamos que ha aprovisionado 1000 RU/s en un contenedor. Hay una operación de eliminación continua por clave de partición que consume 100 RU cada segundo durante 5 segundos. Durante cada uno de estos 5 segundos, hay 900 RU disponibles para las operaciones de base de datos que no se ejecutan en segundo plano. Una vez completada la operación de eliminación, las 1000 RU/s estarán de nuevo disponibles.

Problemas conocidos

En algunos escenarios, una operación de eliminación por clave de partición puede no garantizar inmediatamente sus efectos y la visibilidad parcial puede producirse durante la operación.

  • Las consultas de agregado que usan el índice (por ejemplo, las consultas COUNT) emitidas durante una operación de eliminación continua por clave de partición pueden contener los resultados de los documentos que se van a eliminar. Esto puede ocurrir hasta que se termine completamente la operación de eliminación.
  • Las consultas emitidas en el almacén analítico durante una operación de eliminación continua por clave de partición pueden contener los resultados de los documentos que se van a eliminar. Esto puede ocurrir hasta que se termine completamente la operación de eliminación.
  • Copia de seguridad continua (restauración a un momento dado): la restauración que se desencadene durante una operación de eliminación continua por clave de partición puede contener los resultados de los documentos que se van a eliminar en la colección restaurada. No se recomienda usar esta característica en versión preliminar si tiene un escenario que requiere una copia de seguridad continua.

Limitaciones

  • No se admite la eliminación de claves de partición jerárquicas. Esta característica permite la eliminación de elementos únicamente en función del último nivel de claves de partición. Por ejemplo, considere un escenario en el que una clave de partición consta de tres niveles jerárquicos: país, estado y ciudad. En este contexto, la funcionalidad de eliminación por claves de partición se puede emplear eficazmente especificando la clave de partición completa, que abarca todos los niveles, es decir, país, estado y ciudad. Si se intenta eliminar mediante claves de partición intermedias, como el país o el estado o únicamente el país, se producirá un error.

Envío de comentarios o notificación de problemas o errores

  • Envíe un correo electrónico a cosmosPkDeleteFeedbk@microsoft.com con sus preguntas o comentarios.

Requisitos del SDK

Busque la versión más reciente del SDK que admita esta característica.

SDK Versiones compatibles Vínculo del administrador de paquetes
.NET SDK v3 >= 3.25.0-preview (debe ser versión preliminar) https://www.nuget.org/packages/Microsoft.Azure.Cosmos/
SDK de Java v4 >= 4.19.0 (la API se marca como beta) https://mvnrepository.com/artifact/com.azure/azure-cosmos
Python SDK v4 >= 4..4.0b1 (debe ser versión beta) https://pypi.org/project/azure-cosmos/4.4.0b1/

Está previsto admitir otros SDK en el futuro.

Pasos siguientes

Consulte los artículos siguientes para más información sobre las operaciones del SDK en Azure Cosmos DB.