Preguntas más frecuentes sobre las claves de partición jerárquicas en Azure Cosmos DB

SE APLICA A: NoSQL MongoDB Cassandra Gremlin Table

Las claves de partición jerárquicas, o subpartición, le permiten configurar una jerarquía de hasta tres niveles para sus claves de partición para optimizar aún más la distribución de los datos y permitir una mayor escala. En este artículo se responden las preguntas más frecuentes sobre las claves de partición jerárquica de Azure Cosmos DB.

¿Puedo agregar claves de partición jerárquicas a contenedores existentes?

No se admite la adición de claves de partición jerárquicas a contenedores existentes. Pero puede crear un contenedor con la clave de partición jerárquica deseada y ejecutar un trabajo de copia de contenedor para copiar datos del contenedor existente en el nuevo. Para más información sobre cómo copiar datos, consulte trabajos de copia de contenedores.

¿Hay un límite de almacenamiento en el tamaño de una clave de partición lógica?

Sí. Al igual que en Azure Cosmos DB en la actualidad, el tamaño de la partición lógica todavía está limitado a 20 GB. Sin embargo, con claves de partición jerárquicas, la partición lógica es ahora toda la ruta de acceso de la clave de partición. Por ejemplo, si ha realizado particiones por TenantId: > UserId, una partición lógica de ejemplo sería Contoso_Alice. El uso de subparticiones significa que puede tener 20 GB de datos donde el valor de la clave de partición es Contoso_Alice. La cantidad de almacenamiento permitida para los datos en "Contoso" es efectivamente de 20 GB * número de Identificadores de usuario únicos para el inquilino "Contoso".

¿Hay algún cambio en los límites de almacenamiento y RU/s en las particiones físicas?

No. Al igual que en Cosmos DB en la actualidad, una partición física puede contener 50 GB de almacenamiento y servir hasta 10 000 RU/s. Sin embargo, con claves de partición jerárquicas, si los datos de un prefijo de clave de partición determinado (por ejemplo, TenantId) están en varias particiones físicas, la subpartición significa que el total de RU/s factibles para un único TenantId puede superar los 10 000 RU/s.

¿Qué ocurre si se consulta y solo se especifica una clave de partición en el "centro" de la ruta de acceso?

La consulta es una consulta entre particiones. Por ejemplo, si crea particiones por TenantId:> UserId y solo proporciona el valor UserId en la consulta, esta consulta se ramifica a todas las particiones físicas.

Para tener una consulta enrutada eficazmente mediante el ejemplo TenantId -> UserId, hay dos opciones:

  • Proporcionar tenantId. Las consultas irán a todas las particiones físicas que contengan los datos de TenantId.
  • Proporcionar tenantId y UserId. Las consultas van a la única partición física que contiene los valores TenantId y UserId específico.

¿Tengo que crear una nueva propiedad en mis documentos para usar esta característica?

No. Especifique la jerarquía de rutas de acceso de clave de partición que desea usar durante la creación del contenedor. Por ejemplo, si crea particiones por TenantId -> UserId, no es necesario crear una nueva propiedad con estos valores concatenados. Asegúrese de que cada documento tiene una propiedad TenantId y una propiedad UserId. Para más información, consulte los ejemplos de código de subdivisión.

He creado una jerarquía de claves que no tiene mucha cardinalidad. ¿Cuál debo hacer?

Es posible que esté en un escenario en el que la carga de trabajo solo alcanza algunas particiones físicas de todas las particiones. Este escenario puede significar que uno o varios niveles de la clave de partición jerárquica tienen una cardinalidad baja. Para solucionar problemas del escenario, siempre se recomienda volver a crear la clave de partición jerárquica y puede usar DTS para cambiar la clave y copiar los datos del contenedor en el nuevo contenedor. Si este paso no es posible, hay dos soluciones alternativas por las que se recomienda garantizar la distribución uniforme de los datos.

  • Enfoque 1:
  1. Puede crear un contenedor con menos de 10 000 RU para asegurarse de que solo tiene una partición física.
  2. Ingiera alrededor de 5 GB de datos para asegurarse de que no hay divisiones de partición.
  3. Escale verticalmente a las RU deseadas, continúe con la ingesta de datos y Azure Cosmos DB garantizará que las particiones físicas se dividan uniformemente.
  • Enfoque 2:
  1. Puede aumentar la oferta total a un mayor número de RU e ingerir todos los datos.
  2. A continuación, realice la combinación de particiones para asegurarse de que las particiones de la carga de trabajo no están fragmentadas y tienen una distribución uniforme.
  3. Una vez completada la combinación, vuelva a reducir verticalmente al número deseado original de RU.

Para tener más control sobre la cantidad de rendimiento que tiene cada partición, también puede usar la redistribución del rendimiento para asegurarse de que las particiones que usa la carga de trabajo tienen suficientes RU para las solicitudes futuras.

Pasos siguientes