Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Azure Cosmos DB es una solución de base de datos totalmente administrada que puede hospedar varios tipos de base de datos, como NoSQL, relacional, vector y bases de datos de tabla. Puede adaptarse a la mayoría de los casos de uso del proceso de trabajo. Las recomendaciones de esta guía se centran en la variante de Azure Cosmos DB para NoSQL . También puede aplicar algunas recomendaciones fundamentales a otras variantes.
En este artículo se da por supuesto que, como arquitecto, ha revisado las opciones de datos de Azure y ha elegido Azure Cosmos DB para NoSQL como almacén de datos para la carga de trabajo. La guía de este artículo proporciona recomendaciones arquitectónicas que están alineadas con los principios de los pilares del marco Well-Architected.
Ámbito de la tecnología
Esta revisión se centra en las decisiones relacionadas entre sí para los siguientes recursos de Azure:
- Azure Cosmos DB para NoSQL
Reliability
El propósito del pilar Fiabilidad es proporcionar una funcionalidad continuada mediante la creación de suficiente resiliencia y la capacidad de recuperarse rápidamente de los fallos.
principios de diseño de confiabilidad proporcionar una estrategia de diseño de alto nivel aplicada a componentes individuales, flujos del sistema y al sistema en su conjunto.
Lista de comprobación de diseño de cargas de trabajo
Comience su estrategia de diseño basándose en la lista de comprobación de revisión de diseño para Fiabilidad. Determine su relevancia para los requisitos empresariales a la vez que tenga en cuenta los niveles de coherencia, la replicación entre regiones y el rendimiento aprovisionado. Amplíe la estrategia para incluir más enfoques según sea necesario.
Elija un diseño sencillo y evite características innecesarias. No adopte la funcionalidad que agrega innecesariamente complejidad a la carga de trabajo, como escrituras principales múltiples y indexación personalizada. Azure Cosmos DB admite estas características, pero pueden agregar una carga operativa y una complejidad considerables. Evalúe cuidadosamente si la carga de trabajo requiere características avanzadas.
Delegue las responsabilidades de carga de trabajo y las preocupaciones transversales a otros servicios, como Microsoft Entra ID para la autenticación y autorización, o Azure Monitor y Application Insights para la monitorización.
Identifique y priorice los flujos de carga de trabajo. No todos los flujos de la aplicación son igualmente importantes. Identifique las rutas críticas y asigne prioridades a cada flujo para guiar las decisiones de diseño. El diseño del flujo de usuario puede influir en los niveles de servicio, las características y la capacidad que asigne a la base de datos de Azure Cosmos DB.
Para ayudar a identificar flujos críticos que podrían necesitar un tratamiento especial, capture los requisitos de procesamiento que los definan en términos de funcionalidades de procesamiento de datos. Por ejemplo, algunos flujos pueden requerir un mayor rendimiento o ser más sensibles a los problemas de latencia. Y algunos flujos de solución pueden requerir diferentes niveles de coherencia de transacciones.
Use el análisis del modo de error para identificar posibles errores en la carga de trabajo. Planee estrategias de mitigación para posibles errores. En la tabla siguiente se muestran ejemplos de análisis del modo de error.
Failure Mitigation Alta latencia y tiempos de espera después de la implementación a los usuarios en una nueva región geográfica Habilite la replicación de varias regiones en una región de Azure más cercana a los nuevos usuarios. Limitación debido a que se excedió el número de unidades de solicitud (RU) Implementación de la lógica de reintento. Supervise el consumo de RU y ajuste la configuración de rendimiento según sea necesario. Error de servicio de Azure Cosmos DB en una sola zona en una sola región de Azure Configure la compatibilidad con la zona de disponibilidad al crear una base de datos. Para obtener más información, consulte Análisis del modo de fallo para aplicaciones Azure.
Cree redundancia para mejorar la resistencia y ayudar a cumplir los objetivos de confiabilidad. Diseñe la implementación de la cuenta de base de datos para que abarque al menos dos regiones en Azure. Distribuya la cuenta entre varias zonas de disponibilidad si la región de Azure la admite.
Evalúe las estrategias de escritura en una sola región y en varias para la carga de trabajo. Para operaciones de escritura en una única región, diseñe la carga de trabajo para contar con al menos una segunda región de lectura en caso de fallo. Habilite la conmutación automática por error para escenarios de escritura de una sola región y de lectura de varias regiones. En el caso de la escritura en varias regiones, compare los inconvenientes en complejidad y coherencia con respecto a las ventajas de escribir en varias regiones. Para obtener más información, consulte Expectativas durante una interrupción regional para cuentas de escritura de una sola región y de múltiples regiones.
Considere cómo afecta el nivel de coherencia y el modo de replicación al objetivo de punto de recuperación (RPO) en una interrupción en toda la región.
Diseñe una prueba de alta disponibilidad de un extremo a otro para la aplicación, que incluya la prueba de la conmutación por error de la base de datos y la conmutación por recuperación.
Use características nativas de recuperación ante desastres y copia de seguridad. Implemente copias de seguridad y restauraciones de contenedor y base de datos para satisfacer sus requisitos. Entre los escenarios de restauración se incluyen la restauración a un momento dado, la recuperación de destrucción accidental, la restauración de recursos eliminados y la restauración a otra región en un momento dado. Configure la cuenta con copia de seguridad continua. Elija el período de retención adecuado en función de sus requisitos empresariales.
Alinee el diseño de Azure Cosmos DB con instrucciones y patrones de diseño de aplicaciones estándar del sector. Explore la guía para diseñar aplicaciones resistentes, revise la directiva de reintento predeterminada para los SDK y planee el control personalizado para errores transitorios específicos. Estas guías proporcionan procedimientos recomendados para que el código de aplicación sea resistente a errores transitorios.
Recomendaciones de configuración
| Recommendation | Benefit |
|---|---|
| Distribuya la cuenta de Azure Cosmos DB entre zonas de disponibilidad cuando esté disponible. | Las zonas de disponibilidad proporcionan energía segregada, redes y refrigeración, lo que ayuda a aislar los errores de hardware en un subconjunto de las réplicas. Cuando no se usa la característica de zonas de disponibilidad, Azure Cosmos DB abarca varias réplicas en una sola zona de disponibilidad seleccionada aleatoriamente. |
| Configure la cuenta de Azure Cosmos DB para abarcar al menos dos regiones. | La expansión de varias regiones ayuda a garantizar que la carga de trabajo sea resistente a interrupciones regionales. Si se produce un error en una región de escritura, puede leer desde otra réplica. También puede conmutar por error la región de escritura en otra región. El uso del SDK de cliente permite que el cliente esté aislado de la mecánica de estas conmutaciones por error. |
| Habilite la conmutación por error administrada por el servicio para su cuenta. Comprenda las desventajas de la conmutación por error administrada por el servicio y planee la conmutación por error forzada si fuera necesario. Deshabilite temporalmente la conmutación por error administrada por el servicio para validar la alta disponibilidad de un extremo a otro de la aplicación. Puede iniciar una conmutación por error manual mediante un script o Azure Portal. |
La conmutación por error administrada por el servicio permite a Azure Cosmos DB cambiar automáticamente la región de escritura de una cuenta de varias regiones para conservar la disponibilidad. Este cambio se produce sin interacción del usuario. |
Security
El propósito del pilar seguridad es proporcionar garantías de confidencialidad, integridad y disponibilidad a la carga de trabajo.
Los principios de diseño de seguridad proporcionan una estrategia de diseño de alto nivel para lograr esos objetivos aplicando enfoques al diseño técnico de Azure Cosmos DB para NoSQL.
Lista de comprobación de diseño de cargas de trabajo
Inicie la estrategia de diseño en función de la lista de comprobación de revisión de diseño de seguridad e identifique vulnerabilidades y controles para mejorar la posición de seguridad. Amplíe la estrategia para incluir más enfoques según sea necesario.
Revise las líneas base de seguridad. Para mejorar la posición de seguridad de la carga de trabajo, revise la lista de comprobación de seguridad de las bases de datos de Azure y la línea de base de seguridad para Azure Cosmos DB. Como mínimo, implemente las líneas base de seguridad de protección de datos y administración de identidades para ayudar a proteger la cuenta de Azure Cosmos DB.
Evalúe el cumplimiento de nivel de servicio y las certificaciones en el contexto de los requisitos actuales de datos personales globales.
Implemente una administración de identidades y acceso estrictas, condicionales y auditables. Use Microsoft Entra ID para las necesidades de autenticación y autorización de la carga de trabajo. Microsoft Entra ID proporciona administración centralizada de autorización y acceso.
Para el acceso al plano de control y al plano de datos a su cuenta, cree roles, grupos y asignaciones en función del principio de acceso con privilegios mínimos. Considere la posibilidad de deshabilitar la autenticación basada en claves.
Cifrar datos.Cifre los datos en reposo o los datos en movimiento mediante claves administradas por el servicio o claves administradas por el cliente.
Aplicar controles de seguridad y segmentación de red. Cree segmentación intencionada y perímetros en el diseño de red y aplique principios de defensa en profundidad mediante controles de red localizados en todos los límites de red.
Reduzca el área expuesta a ataques mediante puntos de conexión privados de acuerdo con la línea de base de seguridad de Azure Cosmos DB.
Implemente una estrategia holística de supervisión de la seguridad. Audite el acceso de los usuarios, las infracciones de seguridad y las operaciones de recursos mediante registros del plano de control.
Supervise la salida de datos, los cambios de datos, el uso y la latencia mediante métricas del plano de datos.
Use prácticas de desarrollo y pruebas seguras. Siga los procedimientos recomendados de desarrollo de software para proteger el acceso a los datos. Siga los procedimientos de codificación seguros y realice revisiones de código seguras al desarrollar aplicaciones que interactúen con Azure Cosmos DB.
Recomendaciones de configuración
| Recommendation | Benefit |
|---|---|
| Deshabilite los puntos de conexión públicos y use puntos de conexión privados siempre que sea posible. | El uso de redes privadas a través de puntos de conexión privados reduce el área expuesta a ataques en su cuenta. |
| Use el control de acceso basado en rol (RBAC) para limitar el acceso del plano de control a identidades y grupos específicos dentro de asignaciones bien definidas. | El uso de RBAC ayuda a evitar el acceso no autorizado a su cuenta. Asigne los roles y permisos adecuados a los usuarios o aplicaciones que acceden a Azure Cosmos DB en función del principio de privilegios mínimos. |
| Cree reglas y puntos de conexión de red virtual para limitar el acceso a la cuenta. Use grupos de seguridad de red (NSG) para controlar el tráfico hacia y desde recursos de Azure Cosmos DB. | Los puntos de conexión de servicio de red virtual, los grupos de seguridad de red y las reglas de firewall ayudan a restringir el acceso a su cuenta de Azure Cosmos DB y ayudan a proteger los datos del acceso no autorizado. |
| Protección contra vulnerabilidades de seguridad comunes, como ataques por inyección, cross-site scripting, o referencias de objetos directos no seguras. Implemente la validación de entrada, las consultas con parámetros y el control de errores adecuado para códigos de estado HTTP comunes para evitar riesgos de seguridad. | La validación de entrada ayuda a evitar que la aplicación procese datos malintencionados. Este enfoque bloquea los datos potencialmente dañinos que podrían provocar infracciones de seguridad o daños en los datos. El control de errores adecuado permite a la aplicación responder a errores de forma controlada y evita la exposición de información confidencial. |
| Supervise los registros del plano de control para detectar modificaciones no autorizadas en la cuenta de Azure Cosmos DB. | La supervisión le ayuda a realizar un seguimiento de los patrones de acceso y los registros de auditoría para asegurarse de que la base de datos sigue siendo segura y compatible con las normativas de protección de datos pertinentes. La supervisión de métricas del plano de datos también puede ayudar a identificar patrones desconocidos que podrían revelar una vulneración de seguridad. |
| Habilite Microsoft Defender para Azure Cosmos DB para desencadenar alertas de seguridad cuando se produzcan actividades anómalas. | Microsoft Defender detecta intentos de aprovechar las bases de datos de su cuenta. Defender detecta posibles inyecciones de SQL, patrones de acceso sospechosos y otras actividades de explotación potenciales. |
Optimización de costos
La optimización de costes se centra en detectar patrones de gasto, priorizar inversiones en áreas críticas y optimizar en otras para ajustarse al presupuesto de la organización al tiempo que se cumplen los requisitos empresariales.
Los principios de diseño de optimización de costos proporcionan una estrategia de diseño de alto nivel para lograr esos objetivos y hacer compensaciones según sea necesario en el diseño técnico relacionado con Cosmos DB para NoSQL y su entorno.
Lista de comprobación de diseño de cargas de trabajo
Comience su estrategia de diseño basándose en la lista de comprobación de revisión de diseño para Optimización de costes para inversiones. Ajuste el diseño para que la carga de trabajo esté alineada con el presupuesto asignado para la carga de trabajo. El diseño debe usar las funcionalidades adecuadas de Azure, supervisar las inversiones y encontrar oportunidades para optimizar con el tiempo.
Optimice la estrategia de escalado de Azure Cosmos DB. Comprenda cómo Azure Cosmos DB controla el escalado de almacenamiento y rendimiento. Determine el equilibrio adecuado del rendimiento y el costo para satisfacer sus requisitos.
Seleccione un esquema de asignación de rendimiento que se adapte a la carga de trabajo. Revise las ventajas del rendimiento estándar y de escalabilidad automática distribuidos en el nivel de base de datos o contenedor. Además, tenga en cuenta las opciones sin servidor cuando corresponda. Analice los patrones de tráfico de la carga de trabajo para seleccionar el esquema de asignación de rendimiento más adecuado.
Determine una clave de partición o un conjunto de claves de partición que tengan una cardinalidad alta y permanezcan sin cambios. Use las instrucciones y los procedimientos recomendados existentes para ayudar a seleccionar una clave de partición adecuada. Además, tenga en cuenta la directiva de indexación al determinar una clave de partición.
Optimice los costos de datos de Azure Cosmos DB. Realice un inventario de los datos y calcule el almacenamiento de datos general esperado para la carga de trabajo. El tamaño de los elementos e índices influye en el costo del almacenamiento de datos. Calcule el impacto de la replicación y la copia de seguridad en los costos de almacenamiento.
Cree una estrategia para quitar automáticamente elementos antiguos que ya no se usen o sean necesarios. Si es necesario, exporte estos elementos a una solución de almacenamiento de menor costo antes de quitarlos.
Optimice las consultas en función del costo. Evalúe las consultas más comunes que minimicen las búsquedas entre particiones. Use esta información para informar al proceso de selección de una clave de partición o la personalización de una directiva de indexación.
Use la proyección para reducir los costos de rendimiento de grandes conjuntos de resultados de consulta. El autor solicita proyectar solo los campos mínimos necesarios desde un conjunto de resultados. Si se necesitan cálculos en campos, evalúe el costo de rendimiento de realizar esos cálculos en el lado servidor frente al lado cliente.
Evite usar consultas ilimitadas entre particiones. Evalúe y cree consultas para asegurarse de que buscan dentro de una sola partición lógica siempre que sea posible. Use filtros de consulta para controlar qué particiones lógicas tiene como destino la consulta. Si una consulta debe buscar entre particiones lógicas, enlaza la consulta para buscar solo un subconjunto de particiones lógicas en lugar de un examen completo.
Diseñe una directiva de indexación que tenga en cuenta las operaciones y consultas comunes de la carga de trabajo.
Recomendaciones de configuración
| Recommendation | Benefit |
|---|---|
| Supervise el uso y los patrones de RU por segundo. Use consultas y otras técnicas de investigación de datos para buscar antipatrones en el código de la aplicación. | El uso de métricas para supervisar el consumo de RU a partir de la implementación de Azure Cosmos DB le ayuda a identificar consultas y operaciones ineficaces que consumen ru excesivas. Puede optimizar las consultas para reducir los costos. |
| Personalice la directiva de indexación para alinearse con la carga de trabajo. Emplee una política de indexación basada solo en las rutas que necesita indexar para sus consultas comunes. En el caso de las cargas de trabajo con mucha escritura, deshabilite la indexación automática de columnas que no se usan en las consultas. |
La directiva de indexación predeterminada indexa todas las rutas de acceso de un elemento y puede afectar significativamente al consumo y los costos de RU. La personalización de la directiva de indexación le permite adaptar la estrategia de indexación a sus requisitos específicos. Este enfoque ayuda a garantizar un rendimiento óptimo y el uso de recursos. |
| Seleccione claves de partición para la carga de trabajo que distribuyan uniformemente el consumo de rendimiento y el almacenamiento de datos entre particiones lógicas. Evite las particiones de acceso frecuente que reciben una cantidad desproporcionada de tráfico. Las particiones desequilibradas pueden aumentar los costos de rendimiento y los errores transitorios. La selección también debe minimizar el número de consultas ilimitadas entre particiones. Utilice las consultas de búsqueda más comunes para determinar las posibles claves de partición que probablemente ejecuten solo consultas de partición única o limitadas entre particiones. |
La elección de la clave de partición correcta distribuye uniformemente los datos, lo que reduce la probabilidad de particiones activas y optimiza el consumo de rendimiento. Este enfoque puede mejorar significativamente la eficiencia y reducir los costos. |
| Seleccione la opción de rendimiento aprovisionado adecuada para su instancia de Azure Cosmos DB. Elija entre rendimiento sin servidor o aprovisionado y aprovisionamiento manual o escalabilidad automática. Aplique estas opciones en el nivel de base de datos o contenedor, en función de las necesidades específicas de la carga de trabajo. Por lo general, las cargas de trabajo pequeñas y las cargas de trabajo de desarrollo y pruebas se benefician del rendimiento sin servidor o del rendimiento compartido manual en el nivel de base de datos. Las cargas de trabajo más grandes y críticas pueden beneficiarse del rendimiento aprovisionado en el nivel de contenedor. |
La selección de la opción de rendimiento asignado adecuada ayuda a optimizar el costo, evitando tanto el aprovisionamiento excesivo como el insuficiente. También reduce los costos operativos, a la vez que garantiza que la aplicación pueda controlar eficazmente los distintos patrones de tráfico. |
| Configure el nivel de coherencia predeterminado para la aplicación. Cuando corresponda, degrade el nivel de coherencia predeterminado en las sesiones de cliente. Tenga en cuenta los costos más altos asociados con las lecturas en niveles de mayor coherencia. Es posible que no siempre tenga que cambiar el nivel de coherencia predeterminado estándar o invalidarlo en las sesiones de cliente. |
Elegir el nivel de coherencia adecuado para la aplicación garantiza que se logre el equilibrio deseado entre la coherencia de los datos, la disponibilidad, el rendimiento y el costo. |
| Para cargas de trabajo de desarrollo y pruebas, use el emulador de Azure Cosmos DB, que también está disponible como una imagen de contenedor de Docker. | El emulador reduce los costos de los casos de uso de desarrollo/pruebas y integración continua. |
| Use operaciones por lotes transaccionales. Diseñe particiones para aprovechar las operaciones por lotes transaccionales dentro de una clave de partición lógica para insertar datos. Use operaciones por lotes en SDK del lado cliente para insertar, actualizar o eliminar varios documentos en una sola solicitud de transacción. |
El uso de operaciones por lotes transaccionales en Azure Cosmos DB puede ayudar a reducir el número de solicitudes individuales. Este enfoque ayuda a reducir la latencia y mejorar la eficacia del rendimiento. |
| Implemente el período de vida (TTL) para eliminar automáticamente los datos innecesarios. Exporte los datos expirados a una solución de almacenamiento de menor costo si es necesario. | El uso de TTL garantiza que la base de datos permanezca ordenada, lo que optimiza los costos de almacenamiento. La exportación de datos expirados a una solución de almacenamiento de menor costo puede reducir aún más los gastos, a la vez que se conservan los datos históricos con fines de cumplimiento. |
| Considere un almacén analítico para agregaciones pesadas. | El almacén analítico de Azure Cosmos DB sincroniza automáticamente los datos con un almacén de columnas independiente para optimizar las agregaciones grandes, los informes y las consultas analíticas. |
Excelencia operativa
La excelencia operativa se centra principalmente en los procedimientos para las prácticas de desarrollo , la observabilidad y la administración de versiones.
Los principios de diseño de Excelencia Operativa proporcionan una estrategia de diseño de alto nivel para alcanzar los objetivos relacionados con los requisitos operativos del flujo de trabajo.
Lista de comprobación de diseño de cargas de trabajo
Inicie la estrategia de diseño en función de la lista de comprobación de revisión de diseño para la excelencia operativa para definir procesos de observabilidad, pruebas e implementación relacionados con Azure Cosmos DB para NoSQL.
Supervise las instancias de Azure Cosmos DB. Incluya instancias de Azure Cosmos DB entre regiones en la solución de supervisión de cargas de trabajo.
Cree identificadores en la aplicación cliente para diferenciar las cargas de trabajo. Tenga en cuenta las marcas, como el sufijo user-agent, para identificar con qué carga de trabajo se debe asociar cada entrada de registro o métrica.
Redacte una estrategia de supervisión de registros y métricas para diferenciar entre diferentes cargas de trabajo, marcar escenarios excepcionales, realizar un seguimiento de los patrones en excepciones y errores y realizar un seguimiento del rendimiento de la máquina host.
Defina varias alertas para supervisar la limitación, analizar la asignación de rendimiento y realizar un seguimiento del tamaño de los datos.
Planee los umbrales de métrica esperados en función del diseño de la partición y del índice. Cree un plan para supervisar esas métricas para determinar la proximidad de los umbrales planeados.
Automatice las implementaciones a través de la infraestructura como código (IaC). Incorpore todos los cambios de Azure Cosmos DB, incluidas las implementaciones de infraestructura y los cambios de configuración, en las prácticas de implementación de código.
Cree y aplique procedimientos recomendados para automatizar la implementación de la cuenta y los recursos de Azure Cosmos DB para NoSQL.
Asegúrese de que el equipo usa las mismas plantillas para implementar en otros entornos que no son de producción.
Recomendaciones de configuración
| Recommendation | Benefit |
|---|---|
| Asegúrese de que los desarrolladores de aplicaciones usen la versión más reciente del SDK para desarrolladores. Para obtener más información, consulte SDK de .NET y SDK de Java. Cada SDK de Azure Cosmos DB para NoSQL tiene una versión mínima recomendada. | El uso de las versiones más recientes de los SDK para desarrolladores ayuda a mantener el rendimiento, la seguridad y la compatibilidad de las aplicaciones. |
| Capture diagnósticos complementarios mediante las técnicas de inyección de diagnóstico para cada SDK. Estas técnicas agregan información complementaria sobre la carga de trabajo, junto con las métricas y los registros predeterminados. Para obtener más información, consulte SDK de .NET y SDK de Java. | Al insertar diagnósticos, puede capturar métricas, seguimientos y registros personalizados para mejorar la solución de problemas y optimizar las aplicaciones. Puede supervisar aspectos específicos de la carga de trabajo que no cubren las métricas y los registros predeterminados. |
| Cree alertas para los recursos del equipo host. | Los problemas de conectividad y disponibilidad pueden producirse debido a problemas de máquina host del lado cliente. Supervise recursos como CPU, memoria y almacenamiento en máquinas host mediante aplicaciones cliente que usan los SDK de Azure Cosmos DB para NoSQL. |
| Cree alertas para la limitación del rendimiento mediante métricas como el consumo de RU normalizado. Esta métrica mide el porcentaje de uso del rendimiento aprovisionado en una base de datos o contenedor. Use alertas para realizar un seguimiento cuando esta métrica supere los umbrales esperados. Con el tiempo, revise y ajuste las alertas a medida que obtenga más información sobre la carga de trabajo. |
Si la limitación de rendimiento es coherente en un 100%, es probable que las solicitudes devuelvan un error transitorio. Al crear alertas basadas en esta métrica, puede recibir notificaciones cuando el uso supere los umbrales definidos. Puede realizar acciones correctivas antes de que afecte al rendimiento de la aplicación. |
| Use métricas de rendimiento de consultas para realizar un seguimiento del rendimiento de las consultas principales a lo largo del tiempo. Si el rendimiento de las consultas es deficiente, solucione problemas de rendimiento y aplique los procedimientos recomendados de consulta. | Las métricas de rendimiento permiten comprender mejor cómo se ejecutan las consultas y dónde existen posibles cuellos de botella. Esta información le ayuda a tomar decisiones fundamentadas sobre las directivas de indexación y las optimizaciones de consultas. |
| Use plantillas para implementar automáticamente recursos de cuenta. Considere la posibilidad de usar plantillas de Azure Resource Manager, Bicep o Terraform para automatizar la implementación de la cuenta y los recursos posteriores. | Las plantillas de IaC ayudan a definir la infraestructura en un modelo descriptivo. Facilitan la repetibilidad y la coherencia y ayudan a mantener entornos uniformes y predecibles de cargas de trabajo. |
| Realice un seguimiento de las métricas clave para identificar problemas comunes en la carga de trabajo, como el uso de RU por partición, limitación y solicitudes de volúmenes por tipo. | La supervisión de estas métricas clave le ayuda a comprender cómo funciona la base de datos en varias condiciones. La supervisión también ayuda a identificar problemas comunes para que pueda tomar medidas correctivas. |
Eficiencia del rendimiento
La eficiencia del rendimiento consiste en mantener la experiencia del usuario incluso cuando hay un aumento de la carga mediante la administración de la capacidad. La estrategia incluye el escalado de recursos, la identificación y la optimización de posibles cuellos de botella y la optimización del rendimiento máximo.
Los principios de diseño eficiencia del rendimiento proporcionan una estrategia de diseño de alto nivel para lograr esos objetivos de capacidad con respecto al uso esperado.
Lista de comprobación de diseño de cargas de trabajo
Inicie la estrategia de diseño en función de la lista de comprobación de revisión de diseño para la eficiencia del rendimiento para definir una línea base basada en indicadores clave de rendimiento para Azure Cosmos DB for NoSQL.
Planee y administre proactivamente la capacidad de Azure Cosmos DB. Defina una línea base de rendimiento para la aplicación. Mida el número de usuarios y transacciones simultáneos que es posible que necesite controlar. Considere las características de carga de trabajo, como el flujo de usuario promedio, las operaciones comunes y los picos de uso.
Investigue a los usuarios de destino. Determine qué regiones de Azure están más cercanas a ellas.
Optimice el diseño de los datos. Diseñar elementos para que sus documentos JSON correspondientes sean lo más pequeños posible. Considere la posibilidad de dividir los datos entre varios elementos si es necesario.
Mantenga los elementos de menos de 100 KB de tamaño. Los elementos más grandes consumen más rendimiento para las operaciones comunes de lectura y escritura. Las consultas sobre elementos más grandes que proyectan todos los campos también pueden agregar un costo de procesamiento significativo.
Seleccione el nivel, las características y el modelo de facturación adecuados. Determine si la carga de trabajo requiere un almacén analítico. Considerar almacenes analíticos y servicios como Azure Synapse Link para consultas complejas.
Optimice el modelo de implementación. Implemente Azure Cosmos DB para NoSQL en regiones más cercanas a los usuarios finales. | Reduzca la latencia mediante la implementación de Azure Cosmos DB para NoSQL en las regiones más cercanas a los usuarios finales tanto como sea posible.
Optimice las consultas para el rendimiento. Revise las sugerencias de rendimiento de las consultas y aplique las estrategias que se aplican a los casos de uso.
Identifique las consultas que usan uno o varios campos de ordenación. Además, identifique las operaciones que afectan a varios campos. Incluya estos campos explícitamente en el diseño de la directiva de indexación.
Diseñe cargas de trabajo grandes para usar operaciones masivas siempre que sea posible.
Identifique las consultas en submatrices y determine si son candidatas para subconsultas más eficientes.
Investigue las consultas más comunes y complejas. Identifique las consultas que usan varias búsquedas, combinaciones o agregados. Tenga en cuenta estas consultas en cualquier consideración de diseño para la clave de partición o la directiva de indexación.
Para las consultas más comunes, determine el número de resultados que espera para cada página. Este número le ayuda a formalizar un recuento de elementos almacenados en búfer para los resultados de captura previa.
Optimización de la lógica de código. Usa el patrón singleton para la clase
CosmosClienten la mayoría de los SDKs. Utilice la clase cliente como un singleton en la mayoría de los SDK. La clase cliente administra su propio ciclo de vida y está diseñada para no ser descartada. La creación y eliminación constante de instancias puede provocar una reducción del rendimiento.
Recomendaciones de configuración
| Recommendation | Benefit |
|---|---|
| Use herramientas como la calculadora de capacidad para determinar la cantidad de rendimiento necesaria para la línea base de rendimiento. Use características como la escalabilidad automática para escalar el rendimiento real para que coincida más estrechamente con la carga de trabajo real. Monitoree el consumo real de ancho de banda después y realice ajustes. | El uso de la calculadora de capacidad le ayuda a tomar decisiones fundamentadas sobre el aprovisionamiento de recursos inicialmente. Puede asegurarse de que la base de datos puede controlar la carga esperada sin costos innecesarios. El escalado automático del rendimiento ajusta automáticamente el rendimiento aprovisionado para satisfacer las necesidades reales de la carga de trabajo. |
| Use técnicas de optimización en los lados del cliente y del servidor cuando corresponda. Aproveche las ventajas de la caché integrada integrada. Configure el SDK para administrar cuántos elementos se capturan previamente o se almacenan en búfer y se devuelven para cada página. | Las técnicas de optimización de código pueden mejorar la experiencia del usuario y hacer que la aplicación del lado cliente y servidor sea más eficaz al ayudar a reducir los cargos de RU para las lecturas y consultas repetidas. Estas ventajas pueden reducir los costos. |
| Use la distribución global e implemente instancias de Azure Cosmos DB en todas las regiones más cercanas a los usuarios finales. | La implementación de la base de datos en las regiones más cercanas a los usuarios finales ayuda a reducir la latencia de lectura que puede mejorar la experiencia del usuario. La replicación de lectura permite realizar operaciones de lectura independientemente de cómo se configuran las operaciones de escritura. |
| Use escrituras en varias regiones si los clientes se distribuyen geográficamente. | Reduce la latencia de escritura al permitir que el cliente escriba en una región más cercana a ella. La carga de trabajo debe admitir la lógica de resolución de conflictos y la aplicación debe esperar un comportamiento de coherencia final. |
| Configure el SDK para el modo directo para obtener el mejor rendimiento. Este modo permite al cliente abrir conexiones del Protocolo de control de transmisión (TCP) directamente a particiones en el servicio y enviar solicitudes directamente sin puerta de enlace intermedia. | El modo directo proporciona un mejor rendimiento porque hay menos saltos de red. |
| Use la característica masiva de SDK de cliente en escenarios que requieren un alto rendimiento. La función de procesamiento masivo gestiona automáticamente las operaciones por lotes para maximizar el rendimiento. | El uso de la característica masiva reduce el número de solicitudes de back-end y distribuye eficazmente las tareas entre particiones. Este enfoque mejora el rendimiento y el uso de recursos. |
| Deshabilite la indexación para operaciones masivas. Si hay varias operaciones de inserción, reemplazo o upsert, deshabilite la indexación para mejorar la velocidad de la operación mientras se usa la compatibilidad masiva del SDK correspondiente. Puede volver a habilitar inmediatamente la indexación más adelante. | Al deshabilitar la indexación durante las operaciones masivas, se reduce la sobrecarga asociada al mantenimiento del índice. Puede usar mejor los recursos para las operaciones masivas, lo que acelera la inserción y las actualizaciones de datos. |
Cree índices compuestos para campos en operaciones complejas. Considere la posibilidad de usar índices compuestos para ORDER BY instrucciones que tienen varios campos. |
Los índices compuestos pueden aumentar la eficacia de las operaciones en varios campos, lo que hace que la recuperación de datos sea rápida y eficaz. |
| Optimice las máquinas cliente host para los SDK. Para los casos más comunes, use al menos cuatro núcleos y ocho GB de memoria en máquinas host de 64 bits que usan los SDK para .NET o Java. Habilite las redes aceleradas en máquinas host. |
El uso de máquinas que tienen especificaciones más altas garantiza que los SDK puedan controlar más operaciones simultáneamente. Las redes aceleradas pueden ayudar a reducir la latencia, lo que aumenta el tiempo de respuesta. |
| Use subconsultas estratégicamente para optimizar las consultas que unen grandes conjuntos de datos.
Optimice las expresiones de autocombinación mediante subconsultas para filtrar las matrices antes de combinar matrices dentro del elemento. Para las consultas entre particiones, optimice la consulta para incluir un filtro en la clave de partición para optimizar el enrutamiento de la consulta a la menor cantidad posible de particiones. |
Las consultas que unen matrices secundarias pueden aumentar la complejidad si hay varias matrices implicadas y no filtradas. Al emplear subconsultas, las matrices se pueden filtrar antes de combinarlas, lo que aumenta la eficacia de las expresiones de autocombinación. |
| Use cargas de trabajo analíticas para las consultas más complejas. Si ejecuta agregaciones frecuentes o consultas de combinación en contenedores grandes, considere la posibilidad de habilitar el almacén analítico y realizar consultas en Azure Synapse Analytics. |
Las cargas de trabajo analíticas están aisladas de las cargas de trabajo transaccionales y están optimizadas para controlar consultas complejas, lo que evita la degradación del rendimiento y garantiza resultados más rápidos. |
Directivas de Azure
Azure proporciona un amplio conjunto de directivas integradas relacionadas con Azure Cosmos DB para NoSQL y sus dependencias. Algunas de las recomendaciones anteriores se pueden auditar mediante Azure Policy. Por ejemplo, puede comprobar si:
La cuenta de Azure Cosmos DB se implementa en al menos dos regiones.
Las cuentas de base de datos de Azure Cosmos DB están configuradas correctamente para la redundancia de zona.
Las cuentas de base de datos de Azure Cosmos DB deben tener deshabilitados los métodos de autenticación locales para que las identidades de Microsoft Entra sean necesarias para la autenticación.
El acceso a la red pública está deshabilitado para que la cuenta de Azure Cosmos DB no se exponga en la red pública de Internet.
El rendimiento máximo debe restringirse al crear bases de datos y contenedores de Azure Cosmos DB a través del proveedor de recursos.
Para una gobernanza completa, revise las definiciones integradas de Azure Policy para Azure Cosmos DB para NoSQL y otras directivas que podrían afectar a la seguridad del almacenamiento de datos.
Recomendaciones de Azure Advisor
Azure Advisor es un consultor en la nube personalizado que le ayuda a seguir los procedimientos recomendados para optimizar las implementaciones de Azure.
Para más información, consulte Azure Advisor.