Compartir vía


Unidades de solicitud en Azure Cosmos DB

SE APLICA A: NoSQL MongoDB Cassandra Gremlin Table

Azure Cosmos DB admite varias API, como SQL, MongoDB, Cassandra, Gremlin y Table. Cada API tiene su propio conjunto de operaciones de base de datos. Estas abarcan desde sencillas lecturas y escrituras de punto hasta consultas complejas. Cada operación de base de datos consume recursos del sistema en función de la complejidad de la operación.

Azure Cosmos DB normaliza el costo de todas las operaciones de base de datos mediante unidades de solicitud (o RU, para abreviar) y mide el costo en función del rendimiento (unidades de solicitud por segundo, RU/s).

Las unidades de solicitud son como una moneda de rendimiento, que abstrae los recursos del sistema, como CPU, IOPS y memoria, necesarios para realizar las operaciones de base de datos compatibles con Azure Cosmos DB. Sin importar si la operación de base de datos es una escritura, lectura puntual o consulta, los costos siempre se miden en RU. Por ejemplo, una lectura puntual (capturar un solo elemento por su id. y valor de clave de partición) para un elemento de 1 KB es una unidad de solicitud (o una RU), independientemente de la API que use para interactuar con el contenedor de Azure Cosmos DB. Puede modelar los costos de rendimiento con la calculadora de capacidad de Azure Cosmos DB.

En la siguiente imagen se muestra el concepto de unidades de solicitud a grandes rasgos:

Unidades de solicitud consumidas por operaciones de base de datos

Para administrar y planear la capacidad, Azure Cosmos DB garantiza que el número de RU para una operación de base de datos determinada en un conjunto de datos concreto sea determinista. Puede examinar el encabezado de respuesta para realizar un seguimiento del número de RU consumidas por cualquier operación de base de datos. Una vez comprendidos los factores que afectan a los cargos de unidad de solicitud y los requisitos de rendimiento de la aplicación, se puede ejecutar la aplicación de forma rentable.

El tipo de cuenta de Azure Cosmos DB que usa determina el modo en que se cobrarán las RU consumidas. Hay tres modos en los que se puede crear una cuenta:

  1. Modo de rendimiento aprovisionado: en este modo, se aprovisiona el número de RU de la aplicación por segundo en incrementos de 100 RU/segundo. Para escalar el rendimiento aprovisionado para la aplicación, puede aumentar o disminuir el número de RU en cualquier momento, en incrementos o decrementos de 100 RU. Puede realizar los cambios mediante programación o en Azure Portal. Se le factura por hora, por la cantidad de RU por segundo que haya aprovisionado. Para más información, consulte el artículo Rendimiento aprovisionado.

    Puede asignar rendimiento con dos granularidades diferentes:

  2. Modo sin servidor: en este modo, no es necesario aprovisionar rendimiento al crear recursos en una cuenta de Azure Cosmos DB. Al final del período de facturación, se le factura el número de unidades de solicitud consumidas por las operaciones de base de datos. Para más información, consulte el artículo Rendimiento sin servidor.

  3. Modo de escalado automático: en este modo, puede escalar de forma automática e instantánea el rendimiento (RU/s) de la base de datos o el contenedor en función de su uso. Esta operación de escalado no afecta a la disponibilidad, la latencia, la capacidad de proceso o el rendimiento de la carga de trabajo. Este modo es adecuado para cargas de trabajo críticas que tienen patrones de tráfico variables o imprevisibles y requieren SLA para el alto rendimiento y la escala. Para más información, consulte el artículo Rendimiento de escalabilidad automática.

Consideraciones de la unidad de solicitud

Al calcular el número de RU por segundo consumidos por su carga, tenga en cuenta los siguientes factores:

  • Tamaño del elemento: a medida que el tamaño de un elemento aumenta, el número de unidades de solicitud consumidas para leer o escribir el elemento también aumenta.

  • Indexación del elemento: De forma predeterminada, cada elemento se indexa automáticamente. Se consumen menos unidades de solicitud si decide no indexar algunos elementos de un contenedor.

  • Recuento de propiedades del elemento: suponiendo que se aplica la indexación predeterminada en todas las propiedades, el número de unidades de solicitud consumidas para escribir un elemento aumenta a medida que lo hace el recuento de propiedades del elemento.

  • Propiedades indexadas: Una directiva de índice en cada contenedor determina qué propiedades se indexan de forma predeterminada. Para reducir el consumo de unidades de solicitud para operaciones de escritura, limite el número de las propiedades indexadas.

  • Coherencia de los datos: los niveles de coherencia alta y de obsolescencia limitada consumen aproximadamente dos veces más unidades de solicitud al realizar operaciones de lectura en comparación con las que consumen los niveles de coherencia relajada.

  • Tipo de lecturas: las lecturas puntuales cuestan muchas menos RU que las consultas.

  • Patrones de consultas: la complejidad de una consulta afecta a la cantidad de unidades de solicitud consumidas en una operación. Entre los factores que influyen en el costo de las operaciones de consulta están los siguientes:

    • El número de resultados de la consulta.
    • El número de predicados.
    • La naturaleza de los predicados.
    • El número de funciones definidas por el usuario.
    • El tamaño de los datos de origen.
    • El tamaño del conjunto de resultados.
    • Proyecciones

    La misma consulta de los mismos datos cuesta siempre el mismo número de unidades de solicitud en ejecución repetidas.

  • Uso de scripts: como las consultas, los procedimientos almacenados y los desencadenadores consumen unidades de solicitud según la complejidad de las operaciones que lleven a cabo. Cuando desarrolle la aplicación, inspeccione el encabezado de cargo de solicitud para entender mejor cuánta capacidad de unidades de solicitud consume cada operación.

Unidades de solicitud y varias regiones

Si aprovisiona RU de "R" en un contenedor de Azure Cosmos DB (o base de datos), Azure Cosmos DB garantiza que las RU de "R" están disponibles en cada región asociada con su cuenta de Azure Cosmos DB. No se pueden asignar RU de forma selectiva a una región específica. Las RU aprovisionadas en un contenedor de Azure Cosmos DB (o base de datos) se aprovisionan en todas las regiones asociadas con la cuenta de Azure Cosmos DB.

Suponiendo que un contenedor de Cosmos está configurado con RU de "R" y hay "N" regiones asociadas con la cuenta de Azure Cosmos DB, el número total de RU disponibles globalmente en el contenedor = R x N.

La elección del modelo de coherencia también afecta al rendimiento. Aproximadamente, puede obtener el doble de rendimiento de lectura para los niveles de coherencia más relajados (sesión, *prefijo de coherencia y coherencia eventual), en comparación con los niveles de coherencia más altos (obsolescencia limitada o coherencia alta).