Бөлісу құралы:


Рекомендации по пакету 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 элементов, увеличьте размер страницы, чтобы уменьшить количество необходимых круговых путей. Потребление памяти увеличивается по мере увеличения размера страницы.

Следующие шаги

Чтобы узнать больше о советах по повышению производительности Python SDK, см. Советы по производительности для Python SDK в Azure Cosmos DB.

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

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