Compartir a través de


Procedimientos recomendados para el SDK de Python en Azure Cosmos DB para NoSQL

En esta guía se incluyen los procedimientos recomendados para las soluciones creadas con la versión más reciente del SDK de Python para Azure Cosmos DB para NoSQL. Los procedimientos recomendados que se incluyen aquí ayudan a mejorar la latencia, mejorar la disponibilidad y aumentar el rendimiento general de las soluciones.

Configuración de la cuenta

  • Asegúrese de ejecutar la aplicación en la misma región de Azure que su cuenta de Azure Cosmos DB, siempre que sea posible, para reducir la latencia. Habilite la replicación en más de 2 regiones de las cuentas para obtener la mejor disponibilidad. Para cargas de trabajo de producción, habilite la conmutación por error administrada por el servicio. En ausencia de esta configuración, la cuenta experimenta la pérdida de disponibilidad de escritura durante toda la duración de la interrupción de la región de escritura, ya que la conmutación por error manual no se puede realizar correctamente debido a la falta de conectividad de región. Para más información sobre cómo agregar varias regiones mediante el SDK de Python, consulte el tutorial de distribución global.

Uso del SDK

  • Use siempre la versión más reciente del SDK de Azure Cosmos DB disponible para obtener un rendimiento óptimo.
  • Use una sola instancia de CosmosClient para la duración de la aplicación para mejorar el rendimiento.
  • Establezca la preferred_locations configuración en el cliente de Cosmos. Durante las conmutaciones por error, las operaciones de escritura se envían a la región de escritura actual y todas las operaciones de lectura se envían a la primera región de la lista de ubicaciones preferidas. Para más información sobre la mecánica de conmutación por error regional, consulte solución de problemas de disponibilidad.
  • Un error transitorio es un error que tiene una causa subyacente que pronto se resuelve por él mismo. Las aplicaciones que se conectan a la base de datos deberían crearse de modo que contemplen esos errores transitorios. Para controlarlos, implemente una lógica de reintento en el código en lugar de mostrarlas a los usuarios como errores de aplicación. El SDK tiene lógica integrada para controlar estos errores transitorios en solicitudes que se pueden reintentar, como operaciones de lectura o consulta. El SDK no puede reintentar las escrituras para errores transitorios, ya que las escrituras no son idempotentes. El SDK permite a los usuarios configurar la lógica de reintento para las limitaciones. Para obtener más información sobre los errores que se van a reintentar en la visita aquí.
  • Use el registro del SDK para capturar información de diagnóstico y solucionar problemas de latencia.

Diseño de datos

  • El cargo de la solicitud de una operación determinada se correlaciona directamente con el tamaño del documento. Se recomienda reducir el tamaño de los documentos, ya que las operaciones en documentos grandes cuestan más que las operaciones en documentos más pequeños.
  • Algunos caracteres están restringidos y no se pueden usar en algunos identificadores: '/', '\', '?', '#'. La recomendación general es no usar ningún carácter especial en identificadores como el nombre de la base de datos, el nombre de la colección, el identificador de elemento o la clave de partición para evitar cualquier comportamiento inesperado.
  • La directiva de indexación de Azure Cosmos DB también permite especificar las rutas de acceso de documento que se van a incluir o excluir de la indexación mediante vías de indexación. Asegúrese de excluir las rutas de acceso sin utilizar de la indexación para acelerar las escrituras. Para obtener más información, consulte Creación de índices mediante el ejemplo del SDK.

Características del host

  • Es posible que experimente problemas de conectividad o disponibilidad debido a falta de recursos en el equipo cliente. Supervise el uso de la CPU en los nodos que ejecutan el cliente de Azure Cosmos DB y escale vertical u horizontalmente si el uso es alto.
  • Si usa una máquina virtual para ejecutar la aplicación, habilite las redes aceleradas en la VM para ayudar con los cuellos de botella debidos al tráfico elevado y reducir la latencia o la inestabilidad de la CPU. También puede considerar la posibilidad de usar una máquina virtual de un extremo superior en la que el uso máximo de CPU sea inferior al 70 %.
  • De forma predeterminada, los resultados se devuelven en fragmentos de 4 MB o de 100 elementos, el límite que se alcance primero. Si una consulta devuelve más de 100 elementos, aumente el tamaño de página para reducir el número de recorridos de ida y vuelta necesarios. El consumo de memoria aumenta a medida que aumenta el tamaño de página.

Pasos siguientes

Para más información sobre las sugerencias de rendimiento para el SDK de Python, consulte Sugerencias de rendimiento para el SDK de Python de Azure Cosmos DB.

Para más información sobre cómo diseñar la aplicación para escalarla y obtener un alto rendimiento, consulte Partición y escalado en Azure Cosmos DB.

¿Está intentando hacer la planificación de capacidad para una migración a Azure Cosmos DB? Puede utilizar información sobre su clúster de bases de datos existente para la planificación de capacidad.