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


Лучшие практики архитектуры для Azure Cosmos DB и NoSQL-баз данных

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

В этой статье предполагается, что в качестве архитектора вы ознакомились с параметрами данных Azure и выбрали Azure Cosmos DB для NoSQL в качестве хранилища данных для рабочей нагрузки. В этой статье приведены рекомендации по архитектуре, сопоставленные с принципами Well-Architected платформы.

Technology scope

В этом обзоре рассматриваются взаимосвязанные решения для следующих ресурсов Azure:

  • Azure Cosmos DB для NoSQL

Reliability

Цель компонента надежности заключается в обеспечении непрерывной функциональности путем создания достаточной устойчивости и возможности быстрого восстановления после сбоев.

принципы проектирования надежности обеспечивают высокоуровневую стратегию проектирования, применяемую для отдельных компонентов, системных потоков и системы в целом.

Контрольный список разработки рабочей нагрузки

Начните стратегию проектирования на основе контрольного списка для проверки надежности. Определите их актуальность для ваших бизнес-требований, учитывая уровни согласованности, репликацию между регионами и выделенную пропускную способность. Расширьте стратегию, чтобы включить дополнительные подходы по мере необходимости.

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

    Перенесите ответственность за рабочую нагрузку и общие задачи на другие службы, такие как Microsoft Entra ID для аутентификации и авторизации или Azure Monitor и Application Insights для мониторинга.

  • Определение и приоритет потоков рабочей нагрузки. Не все потоки в приложении одинаково важны. Определите критически важные пути и назначьте приоритеты каждому потоку для руководства по принятию решений по проектированию. Проектирование потока пользователей может повлиять на уровни служб, функции и емкость, которую вы выделяете для базы данных Azure Cosmos DB.

    Чтобы помочь определить критически важные потоки, которые могут потребовать специального лечения, зафиксируйте требования к обработке, которые отличают их с точки зрения возможностей обработки данных. Например, некоторые потоки могут требовать более высокую пропускную способность или более чувствительны к проблемам задержки. Для некоторых потоков решений могут потребоваться различные уровни согласованности транзакций.

  • Используйте анализ режима сбоя для выявления потенциальных сбоев в рабочей нагрузке. Планировать стратегии смягчения рисков в случае потенциальных сбоев. В следующей таблице показаны примеры анализа режима сбоя.

    Failure Mitigation
    Высокая задержка и время ожидания после развертывания для пользователей в новом географическом регионе Включите репликацию в нескольких регионах в регион Azure, который находится ближе к новым пользователям.
    Ограничение вследствие превышения единиц запроса (ЕЗ) Реализуйте логику повторных попыток. Отслеживайте потребление единиц запросов и настраивайте параметры пропускной способности по мере необходимости.
    Сбой службы Azure Cosmos DB в одной зоне в одном регионе Azure Настройте поддержку зоны доступности при создании базы данных.

    Дополнительные сведения см. в статье Анализ режима сбоя для приложений Azure.

  • Создайте избыточность, чтобы повысить устойчивость и помочь достичь целевых показателей надежности. Создайте развертывание учетной записи базы данных, чтобы она охватывала по крайней мере два региона в Azure. Распределите учетную запись между несколькими зонами доступности, если регион Azure поддерживает ее.

    Оцените подходы к записи с несколькими регионами и одним регионом для вашей рабочей нагрузки. Для записи в одном регионе настройте рабочую нагрузку так, чтобы иметь по крайней мере второй регион чтения для резервного режима работы. Включите автоматическое переключение для сценариев записи в одном регионе и чтения в нескольких регионах. Для внесения данных в нескольких регионах сравните компромиссы, связанные со сложностью и согласованностью, с преимуществами внесения данных в несколько регионов. Дополнительные сведения см. в разделе «Ожидания во время регионального сбоя для учетных записей с одним регионом и несколькими регионами».

    Consider how your consistency level and replication mode affects the recovery point objective (RPO) in a region-wide outage.

    Создайте полный тест для приложения высокой доступности, который включает тестирование переключения базы данных при сбое и восстановление после сбоя.

  • Используйте собственные функции аварийного восстановления и резервного копирования. Реализуйте резервные копии базы данных и контейнеры и восстанавливайте их в соответствии с вашими требованиями. Сценарии восстановления включают восстановление на определенный момент времени, восстановление от случайных разрушительных операций, восстановление удаленных ресурсов и восстановление в другой регион в определенный момент времени. Configure your account with continuous backup. Выберите соответствующий период хранения на основе бизнес-требований.

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

Configuration recommendations

Recommendation Benefit
Distribute your Azure Cosmos DB account across availability zones when available. Зоны доступности предоставляют раздельное электропитание, сетевую инфраструктуру и охлаждение, что помогает изолировать аппаратные сбои в подмножестве реплик. Если вы не используете функцию зон доступности, Azure Cosmos DB охватывает несколько реплик в одной случайно выбранной зоне доступности.
Configure your Azure Cosmos DB account to span at least two regions. Охватывание нескольких регионов помогает обеспечить устойчивость рабочей нагрузки к региональным сбоям.
Enable service-managed failover for your account. Изучите компромиссы с переключением на резерв, управляемым службой, и при необходимости запланируйте принудительное переключение на резерв.

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

Security

Цель компонента "Безопасность" — обеспечить конфиденциальности, целостности и доступности гарантии рабочей нагрузки.

Принципы проектирования безопасности обеспечивают высокоуровневую стратегию проектирования для достижения этих целей, применяя подходы к техническому проектированию Azure Cosmos DB для NoSQL.

Контрольный список разработки рабочей нагрузки

Начните стратегию проектирования, основываясь на контрольном списке проверки проектирования для безопасности, и выявляйте уязвимости и меры управления для улучшения состояния безопасности. Расширьте стратегию, чтобы включить дополнительные подходы по мере необходимости.

  • Просмотрите базовые показатели безопасности. Чтобы повысить уровень безопасности рабочей нагрузки, просмотрите контрольный список для баз данных Azure и базовые показатели безопасности Для Azure Cosmos DB. At a minimum, implement the data protection and identity management security baselines to help secure your Azure Cosmos DB account.

    Assess service-level compliance and certifications in the context of current global personal data requirements.

  • Реализация строгого, условного и аудита управления удостоверениями и доступом. Используйте идентификатор Microsoft Entra для проверки подлинности и авторизации рабочей нагрузки. Идентификатор Microsoft Entra предоставляет централизованное управление авторизацией и доступом.

    For control plane and data plane access to your account, create roles, groups, and assignments based on the principle of least-privilege access. Рассмотрите возможность отключения проверки подлинности на основе ключей.

  • Encrypt data.Encrypt data at rest or data in motion by using service-managed keys or customer-managed keys.

  • Применение сегментации сети и элементов управления безопасностью. Создавайте преднамеренное сегментирование и периметры в структуре сети и применяйте принципы глубинной защиты с помощью локализованных сетевых элементов управления на всех границах сети.

    Reduce the surface attack area by using private endpoints in accordance with the security baseline for Azure Cosmos DB.

  • Реализуйте целостную стратегию мониторинга безопасности. Аудит доступа пользователей, нарушений безопасности и операций с ресурсами с помощью журналов управления.

    Отслеживайте исходящие данные, изменения данных, использование и задержку с помощью метрик плоскости данных.

  • Используйте безопасные методики разработки и тестирования. Следуйте рекомендациям по разработке программного обеспечения для безопасного доступа к данным. Следуйте рекомендациям по безопасному написанию кода и выполните безопасные проверки кода при разработке приложений, взаимодействующих с Azure Cosmos DB.

Configuration recommendations

Recommendation Benefit
Disable public endpoints and use private endpoints whenever possible. Использование частной сети через частные конечные точки уменьшает область поверхности, подверженную атакам в вашей учетной записи.
Используйте управление доступом на основе ролей (RBAC), чтобы ограничить доступ уровня управления к определенным удостоверениям и группам в четко определенных назначениях. Использование RBAC помогает предотвратить несанкционированный доступ к учетной записи. Назначьте соответствующие роли и разрешения пользователям или приложениям, которые обращаются к Azure Cosmos DB на основе принципа наименьших привилегий.
Create virtual network endpoints and rules to limit access to the account. Используйте группы безопасности сети (NSG) для управления трафиком в ресурсы Azure Cosmos DB и из нее. Конечные точки службы виртуальной сети, группы безопасности сети и правила брандмауэра помогают ограничить доступ к учетной записи Azure Cosmos DB и защитить данные от несанкционированного доступа.
Защита от распространенных уязвимостей безопасности, таких как атаки на внедрение, межсайтовые скрипты или небезопасные прямые ссылки на объекты. Implement input validation, parameterized queries, and appropriate error handling for common HTTP status codes to prevent security risks. Проверка входных данных помогает предотвратить обработку вредоносных данных приложением. Этот подход блокирует потенциально опасные данные, которые могут привести к нарушению безопасности или повреждению данных.

Правильная обработка ошибок позволяет приложению реагировать на ошибки управляемым образом и предотвращать воздействие конфиденциальной информации.
Отслеживайте журналы плоскости управления для обнаружения несанкционированных изменений в учетной записи Azure Cosmos DB. Мониторинг помогает отслеживать шаблоны доступа и журналы аудита, чтобы убедиться, что база данных остается безопасной и совместимой с соответствующими правилами защиты данных. Мониторинг метрик плоскости данных также может помочь определить незнакомые шаблоны, которые могут выявить нарушение безопасности.
Включите Microsoft Defender для Azure Cosmos DB для активации оповещений системы безопасности при возникновении аномальных действий. Microsoft Defender обнаруживает попытки эксплойтировать базы данных в вашей учетной записи. Defender обнаруживает потенциальные SQL-инъекции, подозрительные шаблоны доступа и другие потенциальные действия эксплуатации.

Cost Optimization

Оптимизация затрат фокусируется на обнаружении шаблонов расходов, приоритете инвестиций в критически важные области и оптимизации в других в соответствии с бюджетом организации при выполнении бизнес-требований.

Принципы проектирования оптимизации затрат предоставляют высокоуровневую стратегию проектирования для достижения этих целей и учета необходимых компромиссов в техническом дизайне, относящихся к Cosmos DB для No SQL и его окружению.

Контрольный список разработки рабочей нагрузки

Начните стратегию проектирования на основе контрольного списка оценки для оптимизации затрат при инвестициях. Настройте структуру, чтобы рабочая нагрузка соответствовала бюджету, выделенному для рабочей нагрузки. Проект должен использовать правильные возможности Azure, отслеживать инвестиции и находить возможности для оптимизации с течением времени.

  • Оптимизируйте стратегию масштабирования Azure Cosmos DB. Узнайте, как Azure Cosmos DB обрабатывает масштабирование хранилища и пропускной способности. Определите правильный баланс производительности и стоимости в соответствии с вашими требованиями.

    Выберите схему распределения пропускной способности, которая соответствует рабочей нагрузке. Ознакомьтесь с преимуществами стандартной и автомасштабируемой пропускной способности, распределенной на уровне базы данных или контейнера. Кроме того, при необходимости рассмотрите бессерверные параметры. Анализ шаблонов трафика рабочей нагрузки , чтобы выбрать наиболее подходящую схему распределения пропускной способности.

    Определите ключ секции или набор ключей секций, которые имеют высокую кардинальность и остаются неизменными. Используйте существующие рекомендации и лучшие практики, чтобы помочь выбрать соответствующий ключ секции. Also, consider your indexing policy when you determine a partition key.

  • Оптимизируйте затраты на данные Azure Cosmos DB. Выполните инвентаризацию данных и вычислите ожидаемое общее хранилище данных для рабочей нагрузки. Размер элементов и индексов влияет на стоимость хранения данных. Вычислите влияние репликации и резервного копирования на затраты на хранилище.

    Создайте стратегию для автоматического удаления старых элементов, которые больше не используются или необходимы. При необходимости экспортируйте эти элементы в решение хранилища с более низкой стоимостью перед их удалением.

  • Оптимизируйте запросы с учетом затрат. Оцените наиболее распространенные запросы, которые минимизируют межсекционный поиск. Используйте эти сведения для информирования о процессе выбора ключа секции или настройки политики индексирования.

    Использование проекции для снижения затрат на пропускную способность больших результирующих наборов запросов. Автор выполняет запросы, запрашивая только минимально необходимое количество полей из результирующего набора. Если необходимы вычисления по полям, оцените стоимость пропускной способности выполнения этих вычислений на стороне сервера вычислений и стороне клиента.

    Избегайте использования несвязанных запросов между секциями. Оцените и создайте запросы, чтобы они искали в одном логическом разделе, если это возможно. Используйте фильтры запросов для управления логическими секциями целевых объектов запроса. Если запрос должен выполнять поиск по логическим секциям, привязывает запрос только к подмножествам логических секций вместо полной проверки.

    Создайте политику индексирования, которая учитывает общие операции и запросы в рабочей нагрузке.

Configuration recommendations

Recommendation Benefit
Отслеживайте использование и характеристики РЕ в расчёте на секунду. Используйте запросы и другие методы исследования данных, чтобы найти антипаттерны в коде приложения. Использование метрик для отслеживания потребления единиц запросов с самого начала развертывания Azure Cosmos DB помогает выявлять неэффективные запросы и операции, которые потребляют чрезмерное количество единиц запросов. Вы можете оптимизировать запросы для снижения затрат.
Customize your indexing policy to align with your workload. Используйте политику индексирования на основе только путей, которые необходимо индексировать для распространенных запросов.

Для рабочих нагрузок с высокой нагрузкой на запись отключите автоматическое индексирование столбцов, не используемых в запросах.
Политика индексирования по умолчанию индексирует все пути в элементе и может значительно повлиять на потребление и затраты ресурсов (RU). Настройка политики индексирования позволяет настроить стратегию индексирования с учетом конкретных требований. Этот подход помогает обеспечить оптимальную производительность и использование ресурсов.
Select partition keys for your workload that evenly distribute throughput consumption and data storage across logical partitions. Избегайте горячих секций, получающих непропорциональное количество трафика. Несбалансированные разделы могут увеличить затраты на пропускную способность и временные ошибки.

Выбор также должен свести к минимуму количество несвязанных запросов между секциями. Используйте наиболее распространенные поисковые запросы, чтобы определить потенциальные ключи секций, которые, скорее всего, выполняют только один раздел или привязанные запросы между секциями.
Выбор правильного ключа секции равномерно распределяет данные, что снижает вероятность горячих секций и оптимизирует потребление пропускной способности. Этот подход может значительно повысить эффективность и снизить затраты.
Выберите подходящий вариант выделенной пропускной способности для экземпляра Azure Cosmos DB. Choose between serverless or provisioned throughput and manual provisioning or autoscale. Примените эти параметры на уровне базы данных или контейнера в зависимости от конкретных потребностей рабочей нагрузки.

Как правило, небольшие рабочие нагрузки и рабочие нагрузки разработки и тестирования используют бессерверную пропускную способность или общую пропускную способность вручную на уровне базы данных. Более крупные критически важные рабочие нагрузки могут воспользоваться резервируемой пропускной способностью на уровне контейнера.
Выбор подходящего варианта выделенной пропускной способности помогает оптимизировать затраты, избегая избыточного выделения или недостаточного выделения. Это также снижает операционные затраты, гарантируя, что приложение может эффективно обрабатывать различные шаблоны трафика.
Настройте уровень согласованности по умолчанию для приложения. При необходимости понизьте уровень согласованности по умолчанию в клиентских сеансах.

Рассмотрите более высокие затраты, связанные с чтением при более строгих уровнях согласованности. Возможно, не всегда нужно изменить стандартный уровень согласованности по умолчанию или переопределить его в сеансах клиента.
Выбор правильного уровня согласованности для вашего приложения обеспечивает достижение необходимого баланса между согласованностью данных, доступностью, производительностью и затратами.
Для рабочих нагрузок разработки и тестирования используйте эмулятор Azure Cosmos DB, который также доступен в качестве образа контейнера Docker. Эмулятор сокращает затраты на разработку и тестирование и варианты использования непрерывной интеграции.
Используйте транзакционные пакетные операции. Проектирование разделов для использования транзакционных пакетных операций в пределах логического ключа раздела при вставке данных.

Используйте пакетные операции в клиентских пакетах SDK для вставки, обновления или удаления нескольких документов в одном запросе транзакции.
Использование транзакционных пакетных операций в Azure Cosmos DB может помочь сократить количество отдельных запросов. Этот подход помогает сократить задержку и повысить эффективность пропускной способности.
Implement time-to-live (TTL) to automatically delete unnecessary data. При необходимости экспортируйте просроченные данные в более экономичное решение для хранения. Использование TTL гарантирует, что база данных остается свободной от захламления, что оптимизирует затраты на хранение. Экспорт данных с истекшим сроком действия в решение хранилища с более низкими затратами может сократить расходы, сохраняя исторические данные в целях соответствия требованиям.
Consider an analytical store for heavy aggregations. Аналитическое хранилище Azure Cosmos DB автоматически синхронизирует ваши данные с отдельным хранилищем столбцов для оптимизации больших агрегаций данных, отчетов и аналитических запросов.

Operational Excellence

Операционное совершенство в основном сосредоточено на процедурах, касающихся практик разработки , наблюдаемости и управления релизами.

Принципы проектирования операционной эффективности обеспечивают высокоуровневую стратегию проектирования для достижения этих целей в соответствии с операционными требованиями рабочей нагрузки.

Контрольный список разработки рабочей нагрузки

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

  • Отслеживайте экземпляры Azure Cosmos DB. Включите экземпляры Azure Cosmos DB в разных регионах в ваше решение для мониторинга рабочей нагрузки.

    Создайте идентификаторы в клиентском приложении, чтобы различать рабочие нагрузки. Рассмотрим флаги, такие как суффикс пользовательского агента, чтобы определить, с какой рабочей нагрузкой должна быть связана каждая запись журнала или метрика.

    Разработать стратегию мониторинга журналов и метрик для разделения разных рабочих нагрузок, выявления исключительных сценариев, отслеживания шаблонов исключений и ошибок и отслеживания производительности хост-компьютера.

    Определите несколько оповещений для отслеживания регулирования, анализа распределения пропускной способности и отслеживания размера данных.

    Планируйте ожидаемые пороговые значения метрик на основе дизайна раздела и индекса. Создайте план для мониторинга этих метрик, чтобы определить, как они близки к запланированным пороговым значениям.

  • Автоматизация развертываний с помощью инфраструктуры в виде кода (IaC). Включите все изменения Azure Cosmos DB, включая развертывания инфраструктуры и изменения конфигурации, в методики развертывания кода.

    Создайте и примените рекомендации по автоматизации развертывания учетной записи и ресурсов Azure Cosmos DB для NoSQL.

    Убедитесь, что команда использует те же шаблоны для развертывания в других непроизводственных средах.

Configuration recommendations

Recommendation Benefit
Убедитесь, что разработчики приложений используют последнюю версию пакета SDK для разработчиков. For more information, see .NET SDK and Java SDK. Каждый пакет SDK Azure Cosmos DB для NoSQL имеет минимальную рекомендуемую версию. Использование последних версий пакетов SDK для разработчиков помогает поддерживать производительность, безопасность и совместимость приложений.
Capture supplemental diagnostics by using the diagnostics injection techniques for each SDK. Эти методы добавляют дополнительные сведения о рабочей нагрузке, а также метрики и журналы по умолчанию. For more information, see .NET SDK and Java SDK. Внедряя диагностику, вы можете записывать пользовательские метрики, трассировки и журналы для улучшения устранения неполадок и оптимизации приложений. Вы можете отслеживать конкретные аспекты рабочей нагрузки, которые метрики и журналы по умолчанию не охватывают.
Create alerts for host machine resources. Проблемы с подключением и доступностью могут возникать из-за проблем на стороне клиента. Мониторинг ресурсов, таких как ЦП, память и хранилище на хост-компьютерах, с помощью клиентских приложений, использующих пакеты SDK Azure Cosmos DB для NoSQL.
Создавайте оповещения о ограничении пропускной способности, используя такие метрики, как нормализованное потребление единиц запросов. Эта метрика измеряет процентное использование подготовленной пропускной способности в базе данных или контейнере.

Используйте оповещения для отслеживания превышения ожидаемых пороговых значений этой метрики. Со временем просмотрите и настройте оповещения, как вы узнаете больше о рабочей нагрузке.
Если ограничение пропускной способности постоянно равно 100%, запросы, вероятно, будут возвращать временную ошибку. Создавая оповещения на основе этой метрики, вы можете получать уведомления, когда использование превышает определенные пороговые значения. Вы можете предпринять корректирующие действия до того, как это скажется на производительности вашего приложения.
Use query performance metrics to track the performance of your top queries over time. Если производительность запросов низка, устраняйте неполадки с производительностью и применяйте рекомендации по запросу. Метрики производительности позволяют лучше понять, как выполняются запросы и где существуют потенциальные узкие места. Эта информация помогает принимать обоснованные решения о политиках индексирования и оптимизации запросов.
Используйте шаблоны для автоматического развертывания ресурсов учетной записи. Рассмотрим шаблоны Azure Resource Manager, Bicep или Terraform , чтобы автоматизировать развертывание учетной записи и последующих ресурсов. Шаблоны IaC помогают определить инфраструктуру в описательной модели. Они упрощают повторяемость и согласованность и помогают поддерживать унифицированные и прогнозируемые среды рабочей нагрузки.
Track key metrics to identify common problems in your workload like RU usage by partition, throttling, and request volumes by type. Мониторинг этих ключевых метрик помогает понять, как база данных выполняется в различных условиях. Мониторинг также помогает выявить распространенные проблемы, чтобы можно было предпринять корректирующие действия.

Performance Efficiency

Эффективность производительности заключается в поддержании пользовательского опыта даже в условиях увеличения нагрузки за счёт управления ресурсами. Стратегия включает масштабирование ресурсов, определение потенциальных узких мест и оптимизацию для достижения пиковой производительности.

Принципы проектирования эффективности производительности предлагают высокоуровневую стратегию для достижения этих целей по емкости с учетом ожидаемого использования.

Контрольный список разработки рабочей нагрузки

Начните свою стратегию проектирования, основываясь на контрольном списке для проверки эффективности производительности, чтобы определить исходные показатели на основе ключевых показателей эффективности для Azure Cosmos DB в NoSQL.

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

    Исследование целевых пользователей. Определите, какие регионы Azure ближе всего к ним.

  • Оптимизируйте структуру данных. Разрабатывайте элементы так, чтобы их соответствующие JSON-документы были как можно меньше. При необходимости рассмотрите возможность разделения данных по нескольким элементам.

    Keep items less than 100 KB in size. Более крупные элементы используют большую пропускную способность для распространенных операций чтения и записи. Запросы на крупные элементы данных, которые проецируют все поля, также могут значительно увеличивать затраты на пропускную способность.

  • Выберите нужный уровень, функции и модель выставления счетов. Определите, требуется ли для рабочей нагрузки аналитическое хранилище. Рассмотрим аналитические хранилища и службы, такие как Azure Synapse Link , для сложных запросов.

  • Оптимизация модели развертывания. Разверните Azure Cosmos DB для NoSQL в регионах, ближайших к конечным пользователям. | Уменьшите задержку, развернув Azure Cosmos DB для NoSQL в регионы, ближайшие к конечным пользователям, как можно больше.

  • Оптимизируйте запросы на производительность. Просмотрите советы по производительности запросов и примените стратегии, которые применяются к вашим вариантам использования.

    Определите запросы, использующие одно или несколько полей упорядочения. Кроме того, определите операции, влияющие на несколько полей. Включите эти поля явным образом в структуру политики индексирования.

    Проектируйте крупные рабочие нагрузки так, чтобы по возможности использовать массовые операции.

    Определите запросы на дочерние массивы и определите, является ли они кандидатами на более эффективные вложенные запросы.

    Изучите наиболее распространенные и сложные запросы. Определите запросы, использующие несколько подстановок, соединений или агрегирования. Учтите эти запросы при разработке ключа партиции или политики индексирования.

    Для наиболее распространенных запросов определите количество ожидаемых результатов для каждой страницы. Это число помогает формализировать количество буферированных элементов для предварительно подготовленных результатов.

  • Оптимизация логики кода. Используйте шаблон singleton для CosmosClient класса в большинстве пакетов SDK. Используйте клиентский класс в большинстве пакетов SDK в качестве одиночного объекта. Класс клиента управляет собственным жизненным циклом и не предназначен для удаления. Постоянное создание и удаление экземпляров может привести к снижению производительности.

Configuration recommendations

Recommendation Benefit
Use tools like the capacity calculator to determine the amount of throughput required for your performance baseline. Use features like autoscale to scale your actual throughput to more closely match your actual workload. Отслеживайте фактическое потребление пропускной способности после этого и внесите корректировки. Использование калькулятора емкости помогает изначально принимать обоснованные решения о подготовке ресурсов. Вы можете убедиться, что база данных может обрабатывать ожидаемую нагрузку без ненужных затрат. Автоматическое масштабирование автоматически регулирует подготовленную пропускную способность в соответствии с фактическими потребностями рабочей нагрузки.
При необходимости используйте методы оптимизации на стороне клиента и сервера. Take advantage of the built-in integrated cache. Configure the SDK to manage how many items are prefetched, or buffered, and returned for each page. Методы оптимизации кода могут улучшить пользовательский опыт и сделать клиентские и серверные приложения более эффективными, помогая сократить затраты на запросные единицы (RU) для повторяющихся операций чтения и запросов. Эти преимущества могут снизить затраты.
Разверните экземпляры Azure Cosmos DB в регионах, ближайших к конечным пользователям. Configure the .NET or Java SDK to prefer regions closer to your end users.

Воспользуйтесь преимуществами репликации чтения, чтобы обеспечить оптимизированную производительность чтения независимо от того, как настроить операции записи в одном или нескольких регионах.
Развертывание базы данных в регионах, ближайших к конечным пользователям, помогает сократить задержку и улучшить взаимодействие с пользователем. Репликация чтения позволяет выполнять операции чтения независимо от того, как настроены операции записи.
Configure the SDK for Direct mode for the best performance. Этот режим позволяет клиенту открывать подключения протокола TCP напрямую к секциям в службе и отправлять запросы напрямую без промежуточного шлюза. Прямой режим обеспечивает более высокую производительность, поскольку сокращается количество промежуточных сетевых соединений.
Use the bulk feature of client SDKs in scenarios that require high throughput. Функция массовой обработки автоматически управляет и группирует операции для максимальной пропускной способности. Использование массового компонента уменьшает количество внутренних запросов и эффективно распределяет задачи по секциям. Такой подход повышает производительность и использование ресурсов.
Отключите индексирование для массовых операций. If there are several insert, replace, or upsert operations, disable indexing to improve the speed of the operation while using the bulk support of the corresponding SDK. Вы сможете повторно включить индексирование позже. Отключение индексирования во время массовых операций снижает нагрузку, связанную с сохранением индекса. Вы можете лучше использовать ресурсы для массовых операций, что ускоряет вставку и обновление данных.
Create composite indexes for fields in complex operations. Рекомендуется использовать составные индексы для ORDER BY инструкций с несколькими полями. Составные индексы могут повысить эффективность операций с несколькими полями, что делает получение данных быстрым и эффективным.
Оптимизируйте клиентские машины хоста для пакетов SDK. For most common cases, use at least four cores and eight GB of memory on 64-bit host machines that use the SDKs for .NET or Java.

Enable accelerated networking on host machines.
Использование компьютеров с более высокими спецификациями гарантирует, что пакеты SDK могут одновременно обрабатывать больше операций. Ускорение сети может помочь уменьшить задержку, которая увеличивает время отклика.
Используйте вложенные запросы стратегически для оптимизации запросов, которые объединяют большие наборы данных. Оптимизируйте выражения самосоединения, используя подзапросы для предварительной фильтрации массивов перед их объединением в элементе.

Для запросов между секциями оптимизируйте запрос, чтобы включить фильтр в ключ секции, чтобы оптимизировать маршрутизацию запроса до минимального количества секций.
Запросы, присоединенные к дочерним массивам, могут увеличить сложность, если задействовано несколько массивов и не фильтруются. Используя вложенные запросы, массивы можно фильтровать перед присоединением, что повышает эффективность операций самосоединения.
Use analytical workloads for the most complex queries.

Если вы часто выполняете агрегации или объединяете запросы в больших контейнерах, рассмотрите возможность включения аналитического хранилища и осуществления запросов в Azure Synapse Analytics.
Аналитические рабочие нагрузки изолированы от транзакционных рабочих нагрузок и оптимизированы для обработки сложных запросов, что предотвращает снижение производительности и обеспечивает более быстрые результаты.

Azure policies

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

  • Учетная запись Azure Cosmos DB развертывается по крайней мере в двух регионах.

  • Учетные записи базы данных Azure Cosmos DB правильно настроены для зонального резервирования.

  • Учетные записи базы данных Azure Cosmos DB должны иметь отключенные локальные методы проверки подлинности, чтобы удостоверения Microsoft Entra были необходимы для аутентификации.

  • Доступ к публичной сети отключен, чтобы ваша учетная запись Azure Cosmos DB не была доступна в публичном интернете.

  • Максимальная пропускная способность должна быть ограничена при создании баз данных и контейнеров Azure Cosmos DB через поставщика ресурсов.

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

Рекомендации Помощника по Azure

Помощник по Azure — это персонализированный облачный консультант, который поможет вам следовать рекомендациям по оптимизации развертываний Azure.

For more information, see Azure Advisor.