Поделиться через


Рекомендации по пакету SDK для Python в Azure Cosmos DB для NoSQL

Это руководство содержит рекомендации по решениям, созданным с помощью последней версии пакета SDK для Python для Azure Cosmos DB для NoSQL. Рекомендации, включенные здесь, помогают повысить задержку, повысить доступность и повысить общую производительность решений.

Конфигурация учетной записи

  • Чтобы сократить задержку, запускайте приложение в том же регионе Azure, что и учетная запись Azure Cosmos DB, если это возможно. Включите репликацию в более чем 2 регионах в ваших аккаунтах для обеспечения оптимальной доступности. Для производственных нагрузок включите переключение при отказе, управляемое службой. Если данная конфигурация отсутствует, учетная запись утрачивает возможность записи на протяжении всего времени сбоя в регионе записи, поскольку процедура отказоустойчивости вручную не может быть выполнена из-за отсутствия подключения к региону. Дополнительные сведения о добавлении нескольких регионов с помощью пакета SDK для Python см. в руководстве по глобальному распространению.

Использование пакета SDK

  • Всегда используйте последнюю версию пакета SDK Azure Cosmos DB, доступную для оптимальной производительности.
  • Используйте один экземпляр CosmosClient для времени существования приложения для повышения производительности.
  • Задайте конфигурацию preferred_locations в клиенте Cosmos. Во время отработки отказа операции записи отправляются в текущий регион для записи, а все операции чтения отправляются в первый регион списка предпочитаемых расположений. Дополнительные сведения о региональной отказоустойчивости см. в разделе об устранении неполадок с доступностью.
  • Временная ошибка — это ошибка, причина которой быстро устраняется сама собой. При разработке приложений, которые подключаются к вашей базе данных, необходимо учитывать возможность появления этих временных ошибок и предусматривать их обработку путем реализации логики повторных попыток в коде вместо вывода пользователю сообщений об ошибках приложения. В SDK есть встроенная логика обработки таких временных ошибок в повторяемых запросах, таких как операции чтения или запроса. Пакет SDK не может повторить попытку записи при транзиторных сбоях, так как записи не являются идемпотентными. В SDK пользователи могут настраивать логику повторных попыток для регулирования. Подробности о том, при каких ошибках стоит повторить попытку, см. здесь.
  • Используйте ведение журнала SDK для сбора диагностических сведений и устранения проблем с задержкой.

Проектирование данных

  • Плата за запрос (т. е. затраты на обработку запросов) указанной операции напрямую зависит от размера документа. Рекомендуется уменьшить размер документов, так как операции с большими документами стоят больше, чем с меньшими.
  • Некоторые символы ограничены и не могут использоваться в некоторых идентификаторах: "/", "\", "?", "#". Общая рекомендация заключается в том, чтобы не использовать специальные символы в идентификаторах, таких как имя базы данных, имя коллекции, идентификатор элемента или ключ секции, чтобы избежать непредвиденного поведения.
  • Политика индексирования Azure Cosmos DB также позволяет указать пути к документам для включения или исключения из индексирования с помощью путей индексирования. Исключите из индексирования неиспользуемые пути, чтобы ускорить выполнение операций записи. Дополнительные сведения см. в статье о создании индексов с помощью примера пакета SDK.

Характеристики хоста

  • Вы можете столкнуться с проблемами подключения или доступности из-за недостатка ресурсов на клиентском компьютере. Отслеживайте использование ЦП на узлах, где работает клиент Azure Cosmos DB, и масштабируйте вверх или наружу, если использование ЦП высокое.
  • Если вы используете для запуска приложения виртуальную машину, включите на ней ускорение сети, чтобы устранить узкие места при большом объеме трафика и уменьшить задержку или нагрузку на ЦП. Кроме того, можно использовать конечную виртуальную машину более высокого класса, где максимальная загрузка ЦП будет составлять менее 70 %.
  • По умолчанию результаты запроса возвращаются в блоках из 100 элементов или 4 МБ, в зависимости от того, какое ограничение сначала достигается. Если запрос возвращает более 100 элементов, увеличьте размер страницы, чтобы уменьшить количество необходимых круговых путей. Потребление памяти увеличивается по мере увеличения размера страницы.

Дальнейшие шаги

Дополнительные сведения о советах по повышению производительности пакета SDK для Python см. в разделе "Советы по производительности" для пакета SDK для Python Для Azure Cosmos DB.

Дополнительные сведения о создании приложения с высокой масштабируемостью и производительностью см. в статье Partitioning and scaling in Azure Cosmos DB (Секционирование и масштабирование в Azure Cosmos DB).

Пытаетесь составить план мощностей для миграции в Azure Cosmos DB? Для планирования ресурсов можно использовать сведения об имеющемся кластере базы данных.