Compartir a través de


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

SE APLICA A: NoSQL

En esta guía se incluyen procedimientos recomendados para soluciones creadas con la versión más reciente del SDK de Python para Azure Cosmos DB for 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 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 la disponibilidad de escritura durante todo el tiempo que dure la interrupción de la región de escritura, ya que la conmutación por error manual no se realizará correctamente debido a la falta de conectividad de la región. Para obtener 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 durante la vigencia de la aplicación para mejorar el rendimiento.
  • Establezca la configuración preferred_locations 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 lecturas se envían a la primera ubicación de la lista de regiones preferidas. Para más información sobre la mecánica de conmutación por error regional, consulte la 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 en caso de 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 más información sobre qué errores se deben reintentar, visite este vínculo.
  • 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 pueden utilizarse en algunos identificadores: "/", "\", "?", "#". La recomendación general es no utilizar ningún carácter especial en identificadores como el nombre de la base de datos, el nombre de la colección, el id. 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 documentos que se incluyen o excluyen de la indexación mediante las rutas de acceso 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, vea creación de indexadores 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 aumente 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.

¿Intenta planear la capacidad de una migración a Azure Cosmos DB? Para ello, puede usar información sobre el clúster de bases de datos existente.