Рекомендации по пакету SDK для Python в Azure Cosmos DB для NoSQL
ОБЛАСТЬ ПРИМЕНЕНИЯ: 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, Для планирования ресурсов можно использовать сведения об имеющемся кластере базы данных.
- Если вам известно только количество виртуальных ядер и серверов в существующем кластере баз данных, см. сведения об оценке единиц запросов на основе виртуальных ядер и серверов.
- Если вам известна стандартная частота запросов для текущей рабочей нагрузки базы данных, ознакомьтесь со статьей о расчете единиц запросов с помощью планировщика ресурсов Azure Cosmos DB