Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Azure Cosmos DB — это полностью управляемое решение базы данных, которое может размещать несколько типов баз данных, таких как NoSQL, реляционные, векторные и табличные базы данных. Он способен поддерживать основные сценарии использования для вашей рабочей нагрузки. Рекомендации, приведенные в этом руководстве, посвящены варианту Azure Cosmos DB для NoSQL . Вы также можете применить некоторые базовые рекомендации к другим вариантам.
В этой статье предполагается, что в качестве архитектора вы ознакомились с параметрами данных Azure и выбрали Azure Cosmos DB для NoSQL в качестве хранилища данных для рабочей нагрузки. В этой статье приведены рекомендации по архитектуре, сопоставленные с принципами Well-Architected платформы.
Это важно
Как использовать это руководство
Каждый раздел содержит контрольный список проектирования, который включает архитектурные аспекты, вызывающие обеспокоенность, а также стратегии проектирования, адаптированные к конкретным технологиям.
Также включены рекомендации по возможностям технологий, которые помогут материализовать эти стратегии. Рекомендации не представляют исчерпывающий список всех конфигураций, доступных для Azure Cosmos DB для NoSQL и его зависимостей. Вместо этого они перечисляют ключевые рекомендации, сопоставленные с перспективами проектирования. Используйте рекомендации для создания подтверждения концепции или оптимизации существующих сред.
Область технологии
В этом обзоре рассматриваются взаимосвязанные решения для следующих ресурсов Azure:
- Azure Cosmos DB для NoSQL
Надежность
Цель компонента надежности заключается в обеспечении непрерывной функциональности путем создания достаточной устойчивости и возможности быстрого восстановления после сбоев.
принципы проектирования надежности обеспечивают высокоуровневую стратегию проектирования, применяемую для отдельных компонентов, системных потоков и системы в целом.
Контрольный список проектирования
Начните стратегию проектирования на основе контрольного списка для проверки надежности. Определите их актуальность для ваших бизнес-требований, учитывая уровни согласованности, репликацию между регионами и выделенную пропускную способность. Расширьте стратегию, чтобы включить дополнительные подходы по мере необходимости.
Выберите простой дизайн и избавьтесь от ненужных функций. Не применяйте функциональные возможности, которые ненужным образом добавляют сложность рабочей нагрузке, такие как несколько первичных записей и настраиваемая индексация. Azure Cosmos DB поддерживает эти функции, но они могут значительно усложнить и увеличить операционную нагрузку. Тщательно оцените, требуется ли для рабочей нагрузки какие-либо расширенные функции.
Перенесите ответственность за рабочую нагрузку и общие задачи на другие службы, такие как Microsoft Entra ID для аутентификации и авторизации или Azure Monitor и Application Insights для мониторинга.
Определение и приоритет потоков рабочей нагрузки. Не все потоки в приложении одинаково важны. Определите критически важные пути и назначьте приоритеты каждому потоку для руководства по принятию решений по проектированию. Проектирование потока пользователей может повлиять на уровни служб, функции и емкость, которую вы выделяете для базы данных Azure Cosmos DB.
Чтобы помочь определить критически важные потоки, которые могут потребовать специального лечения, зафиксируйте требования к обработке, которые отличают их с точки зрения возможностей обработки данных. Например, некоторые потоки могут требовать более высокую пропускную способность или более чувствительны к проблемам задержки. Для некоторых потоков решений могут потребоваться различные уровни согласованности транзакций.
Используйте анализ режима сбоя для выявления потенциальных сбоев в рабочей нагрузке. Планировать стратегии смягчения рисков в случае потенциальных сбоев. В следующей таблице показаны примеры анализа режима сбоя.
Неудача Смягчение последствий Высокая задержка и время ожидания после развертывания для пользователей в новом географическом регионе Включите репликацию в нескольких регионах в регион Azure, который находится ближе к новым пользователям. Ограничение вследствие превышения единиц запроса (ЕЗ) Реализуйте логику повторных попыток. Отслеживайте потребление единиц запросов и настраивайте параметры пропускной способности по мере необходимости. Сбой службы Azure Cosmos DB в одной зоне в одном регионе Azure Настройте поддержку зоны доступности при создании базы данных. Дополнительные сведения см. в статье Анализ режима сбоя для приложений Azure.
Создайте избыточность, чтобы повысить устойчивость и помочь достичь целевых показателей надежности. Создайте развертывание учетной записи базы данных, чтобы она охватывала по крайней мере два региона в Azure. Распределите учетную запись между несколькими зонами доступности, если регион Azure поддерживает ее.
Оцените подходы к записи с несколькими регионами и одним регионом для вашей рабочей нагрузки. Для записи в одном регионе настройте рабочую нагрузку так, чтобы иметь по крайней мере второй регион чтения для резервного режима работы. Включите автоматическое переключение для сценариев записи в одном регионе и чтения в нескольких регионах. Для внесения данных в нескольких регионах сравните компромиссы, связанные со сложностью и согласованностью, с преимуществами внесения данных в несколько регионов. Дополнительные сведения см. в разделе «Ожидания во время регионального сбоя для учетных записей с одним регионом и несколькими регионами».
Рассмотрите, как уровень согласованности и режим репликациивлияют на целевой показатель точки восстановления (RPO) в случае сбоя на уровне региона.
Создайте полный тест для приложения высокой доступности, который включает тестирование переключения базы данных при сбое и восстановление после сбоя.
Используйте собственные функции аварийного восстановления и резервного копирования. Реализуйте резервные копии базы данных и контейнеры и восстанавливайте их в соответствии с вашими требованиями. Сценарии восстановления включают восстановление на определенный момент времени, восстановление от случайных разрушительных операций, восстановление удаленных ресурсов и восстановление в другой регион в определенный момент времени. Настройте учетную запись с непрерывным резервным копированием. Выберите соответствующий период хранения на основе бизнес-требований.
Выровняйте проект Azure Cosmos DB с помощью отраслевых рекомендаций и шаблонов проектирования приложений. Изучите руководство по разработке устойчивых приложений, просмотрите политику повторных попыток по умолчанию для пакетов SDK и запланируйте пользовательскую обработку для конкретных временных ошибок. Эти руководства предоставляют рекомендации по обеспечению устойчивости кода приложения к временным ошибкам.
Рекомендации
Рекомендация | Преимущества |
---|---|
Распределите учетную запись Azure Cosmos DB между зонами доступности , если она доступна. | Зоны доступности предоставляют раздельное электропитание, сетевую инфраструктуру и охлаждение, что помогает изолировать аппаратные сбои в подмножестве реплик. Если вы не используете функцию зон доступности, Azure Cosmos DB охватывает несколько реплик в одной случайно выбранной зоне доступности. |
Настройте учетную запись Azure Cosmos DB, чтобы охватывать по крайней мере два региона. | Охватывание нескольких регионов помогает обеспечить устойчивость рабочей нагрузки к региональным сбоям. |
Включите управляемую службой отказоустойчивость для вашей учетной записи. Изучите компромиссы с переключением на резерв, управляемым службой, и при необходимости запланируйте принудительное переключение на резерв. Временно отключите отказоустойчивость, управляемую службой, чтобы проверить достоверную высокую доступность приложения. Вы можете запустить процесс аварийного переключения вручную с помощью скрипта или через Azure. |
Процесс отказоустойчивости, управляемый службой, позволяет Azure Cosmos DB автоматически изменять регион записи учетной записи с несколькими регионами для обеспечения доступности. Это изменение происходит без взаимодействия с пользователем. |
Безопасность
Цель компонента "Безопасность" — обеспечить конфиденциальности, целостности и доступности гарантии рабочей нагрузки.
Принципы проектирования безопасности обеспечивают высокоуровневую стратегию проектирования для достижения этих целей, применяя подходы к техническому проектированию Azure Cosmos DB для NoSQL.
Контрольный список проектирования
Начните стратегию проектирования, основываясь на контрольном списке проверки проектирования для безопасности, и выявляйте уязвимости и меры управления для улучшения состояния безопасности. Расширьте стратегию, чтобы включить дополнительные подходы по мере необходимости.
Просмотрите базовые показатели безопасности. Чтобы повысить уровень безопасности рабочей нагрузки, просмотрите контрольный список для баз данных Azure и базовые показатели безопасности Для Azure Cosmos DB. Как минимум, реализуйте базовые показатели безопасности защиты данных и управления удостоверениями , чтобы защитить учетную запись Azure Cosmos DB.
Оцените соответствие и сертификацию уровня обслуживания в контексте текущих глобальных требований к персональным данным.
Реализация строгого, условного и аудита управления удостоверениями и доступом. Используйте идентификатор Microsoft Entra для проверки подлинности и авторизации рабочей нагрузки. Идентификатор Microsoft Entra предоставляет централизованное управление авторизацией и доступом.
Для доступа к учетной записи плоскости управления и плоскости данных создайте роли, группы и назначения на основе принципа наименее привилегированного доступа. Рассмотрите возможность отключения проверки подлинности на основе ключей.
Шифрование данных.Шифрование неактивных данных или данных в движении с помощью ключей, управляемых службой, или ключей, управляемых клиентом.
Применение сегментации сети и элементов управления безопасностью. Создавайте преднамеренное сегментирование и периметры в структуре сети и применяйте принципы глубинной защиты с помощью локализованных сетевых элементов управления на всех границах сети.
Уменьшите область атак на поверхность с помощью частных конечных точек в соответствии с базовым уровнем безопасности Для Azure Cosmos DB.
Реализуйте целостную стратегию мониторинга безопасности. Аудит доступа пользователей, нарушений безопасности и операций с ресурсами с помощью журналов управления.
Отслеживайте исходящие данные, изменения данных, использование и задержку с помощью метрик плоскости данных.
Используйте безопасные методики разработки и тестирования. Следуйте рекомендациям по разработке программного обеспечения для безопасного доступа к данным. Следуйте рекомендациям по безопасному написанию кода и выполните безопасные проверки кода при разработке приложений, взаимодействующих с Azure Cosmos DB.
Рекомендации
Рекомендация | Преимущества |
---|---|
Отключите общедоступные конечные точки и по возможности используйте частные конечные точки . | Использование частной сети через частные конечные точки уменьшает область поверхности, подверженную атакам в вашей учетной записи. |
Используйте управление доступом на основе ролей (RBAC), чтобы ограничить доступ уровня управления к определенным удостоверениям и группам в четко определенных назначениях. | Использование RBAC помогает предотвратить несанкционированный доступ к учетной записи. Назначьте соответствующие роли и разрешения пользователям или приложениям, которые обращаются к Azure Cosmos DB на основе принципа наименьших привилегий. |
Создайте конечные точки и правила виртуальной сети , чтобы ограничить доступ к учетной записи. Используйте группы безопасности сети (NSG) для управления трафиком в ресурсы Azure Cosmos DB и из нее. | Конечные точки службы виртуальной сети, группы безопасности сети и правила брандмауэра помогают ограничить доступ к учетной записи Azure Cosmos DB и защитить данные от несанкционированного доступа. |
Защита от распространенных уязвимостей безопасности, таких как атаки на внедрение, межсайтовые скрипты или небезопасные прямые ссылки на объекты. Реализуйте входную проверку, параметризованные запросы и соответствующую обработку ошибок для распространенных кодов состояния HTTP , чтобы предотвратить риски безопасности. | Проверка входных данных помогает предотвратить обработку вредоносных данных приложением. Этот подход блокирует потенциально опасные данные, которые могут привести к нарушению безопасности или повреждению данных. Правильная обработка ошибок позволяет приложению реагировать на ошибки управляемым образом и предотвращать воздействие конфиденциальной информации. |
Отслеживайте журналы плоскости управления для обнаружения несанкционированных изменений в учетной записи Azure Cosmos DB. | Мониторинг помогает отслеживать шаблоны доступа и журналы аудита, чтобы убедиться, что база данных остается безопасной и совместимой с соответствующими правилами защиты данных. Мониторинг метрик плоскости данных также может помочь определить незнакомые шаблоны, которые могут выявить нарушение безопасности. |
Включите Microsoft Defender для Azure Cosmos DB для активации оповещений системы безопасности при возникновении аномальных действий. | Microsoft Defender обнаруживает попытки эксплойтировать базы данных в вашей учетной записи. Defender обнаруживает потенциальные SQL-инъекции, подозрительные шаблоны доступа и другие потенциальные действия эксплуатации. |
Оптимизация затрат
Оптимизация затрат фокусируется на обнаружении шаблонов расходов, приоритете инвестиций в критически важные области и оптимизации в других в соответствии с бюджетом организации при выполнении бизнес-требований.
Принципы проектирования оптимизации затрат предоставляют высокоуровневую стратегию проектирования для достижения этих целей и учета необходимых компромиссов в техническом дизайне, относящихся к Cosmos DB для No SQL и его окружению.
Контрольный список проектирования
Начните стратегию проектирования на основе контрольного списка оценки для оптимизации затрат при инвестициях. Настройте структуру, чтобы рабочая нагрузка соответствовала бюджету, выделенному для рабочей нагрузки. Проект должен использовать правильные возможности Azure, отслеживать инвестиции и находить возможности для оптимизации с течением времени.
Оптимизируйте стратегию масштабирования Azure Cosmos DB. Узнайте, как Azure Cosmos DB обрабатывает масштабирование хранилища и пропускной способности. Определите правильный баланс производительности и стоимости в соответствии с вашими требованиями.
Выберите схему распределения пропускной способности, которая соответствует рабочей нагрузке. Ознакомьтесь с преимуществами стандартной и автомасштабируемой пропускной способности, распределенной на уровне базы данных или контейнера. Кроме того, при необходимости рассмотрите бессерверные параметры. Анализ шаблонов трафика рабочей нагрузки , чтобы выбрать наиболее подходящую схему распределения пропускной способности.
Определите ключ секции или набор ключей секций, которые имеют высокую кардинальность и остаются неизменными. Используйте существующие рекомендации и лучшие практики, чтобы помочь выбрать соответствующий ключ секции. Кроме того, при определении ключа раздела следует учитывать вашу политику индексирования.
Оптимизируйте затраты на данные Azure Cosmos DB. Выполните инвентаризацию данных и вычислите ожидаемое общее хранилище данных для рабочей нагрузки. Размер элементов и индексов влияет на стоимость хранения данных. Вычислите влияние репликации и резервного копирования на затраты на хранилище.
Создайте стратегию для автоматического удаления старых элементов, которые больше не используются или необходимы. При необходимости экспортируйте эти элементы в решение хранилища с более низкой стоимостью перед их удалением.
Оптимизируйте запросы с учетом затрат. Оцените наиболее распространенные запросы, которые минимизируют межсекционный поиск. Используйте эти сведения для информирования о процессе выбора ключа секции или настройки политики индексирования.
Использование проекции для снижения затрат на пропускную способность больших результирующих наборов запросов. Автор выполняет запросы, запрашивая только минимально необходимое количество полей из результирующего набора. Если необходимы вычисления по полям, оцените стоимость пропускной способности выполнения этих вычислений на стороне сервера вычислений и стороне клиента.
Избегайте использования несвязанных запросов между секциями. Оцените и создайте запросы, чтобы они искали в одном логическом разделе, если это возможно. Используйте фильтры запросов для управления логическими секциями целевых объектов запроса. Если запрос должен выполнять поиск по логическим секциям, привязывает запрос только к подмножествам логических секций вместо полной проверки.
Создайте политику индексирования, которая учитывает общие операции и запросы в рабочей нагрузке.
Рекомендации
Рекомендация | Преимущества |
---|---|
Отслеживайте использование и характеристики РЕ в расчёте на секунду. Используйте запросы и другие методы исследования данных, чтобы найти антипаттерны в коде приложения. | Использование метрик для отслеживания потребления единиц запросов с самого начала развертывания Azure Cosmos DB помогает выявлять неэффективные запросы и операции, которые потребляют чрезмерное количество единиц запросов. Вы можете оптимизировать запросы для снижения затрат. |
Настройте политику индексирования для соответствия рабочей нагрузке. Используйте политику индексирования на основе только путей, которые необходимо индексировать для распространенных запросов. Для рабочих нагрузок с высокой нагрузкой на запись отключите автоматическое индексирование столбцов, не используемых в запросах. |
Политика индексирования по умолчанию индексирует все пути в элементе и может значительно повлиять на потребление и затраты ресурсов (RU). Настройка политики индексирования позволяет настроить стратегию индексирования с учетом конкретных требований. Этот подход помогает обеспечить оптимальную производительность и использование ресурсов. |
Выберите ключи секций для рабочей нагрузки, которые равномерно распределяют потребление пропускной способности и хранилище данных между логическими секциями. Избегайте горячих секций, получающих непропорциональное количество трафика. Несбалансированные разделы могут увеличить затраты на пропускную способность и временные ошибки. Выбор также должен свести к минимуму количество несвязанных запросов между секциями. Используйте наиболее распространенные поисковые запросы, чтобы определить потенциальные ключи секций, которые, скорее всего, выполняют только один раздел или привязанные запросы между секциями. |
Выбор правильного ключа секции равномерно распределяет данные, что снижает вероятность горячих секций и оптимизирует потребление пропускной способности. Этот подход может значительно повысить эффективность и снизить затраты. |
Выберите подходящий вариант выделенной пропускной способности для экземпляра Azure Cosmos DB. Выберите между бессерверной или подготовленной пропускной способностью и ручной подготовкой или автомасштабированием. Примените эти параметры на уровне базы данных или контейнера в зависимости от конкретных потребностей рабочей нагрузки. Как правило, небольшие рабочие нагрузки и рабочие нагрузки разработки и тестирования используют бессерверную пропускную способность или общую пропускную способность вручную на уровне базы данных. Более крупные критически важные рабочие нагрузки могут воспользоваться резервируемой пропускной способностью на уровне контейнера. |
Выбор подходящего варианта выделенной пропускной способности помогает оптимизировать затраты, избегая избыточного выделения или недостаточного выделения. Это также снижает операционные затраты, гарантируя, что приложение может эффективно обрабатывать различные шаблоны трафика. |
Настройте уровень согласованности по умолчанию для приложения. При необходимости понизьте уровень согласованности по умолчанию в клиентских сеансах. Рассмотрите более высокие затраты, связанные с чтением при более строгих уровнях согласованности. Возможно, не всегда нужно изменить стандартный уровень согласованности по умолчанию или переопределить его в сеансах клиента. |
Выбор правильного уровня согласованности для вашего приложения обеспечивает достижение необходимого баланса между согласованностью данных, доступностью, производительностью и затратами. |
Для рабочих нагрузок разработки и тестирования используйте эмулятор Azure Cosmos DB, который также доступен в качестве образа контейнера Docker. | Эмулятор сокращает затраты на разработку и тестирование и варианты использования непрерывной интеграции. |
Используйте транзакционные пакетные операции. Проектирование разделов для использования транзакционных пакетных операций в пределах логического ключа раздела при вставке данных. Используйте пакетные операции в клиентских пакетах SDK для вставки, обновления или удаления нескольких документов в одном запросе транзакции. |
Использование транзакционных пакетных операций в Azure Cosmos DB может помочь сократить количество отдельных запросов. Этот подход помогает сократить задержку и повысить эффективность пропускной способности. |
Реализуйте срок жизни (TTL) для автоматического удаления ненужных данных. При необходимости экспортируйте просроченные данные в более экономичное решение для хранения. | Использование TTL гарантирует, что база данных остается свободной от захламления, что оптимизирует затраты на хранение. Экспорт данных с истекшим сроком действия в решение хранилища с более низкими затратами может сократить расходы, сохраняя исторические данные в целях соответствия требованиям. |
Рассмотрим аналитическое хранилище для сложных агрегаций. | Аналитическое хранилище Azure Cosmos DB автоматически синхронизирует ваши данные с отдельным хранилищем столбцов для оптимизации больших агрегаций данных, отчетов и аналитических запросов. |
Операционное превосходство
Операционное совершенство в основном сосредоточено на процедурах, касающихся практик разработки , наблюдаемости и управления релизами.
Принципы проектирования операционной эффективности обеспечивают высокоуровневую стратегию проектирования для достижения этих целей в соответствии с операционными требованиями рабочей нагрузки.
Контрольный список проектирования
Начните разработку стратегии на основе контрольного списка проверки дизайна для операционного совершенства для определения процессов наблюдаемости, тестирования и развертывания, связанных с Azure Cosmos DB для NoSQL.
Отслеживайте экземпляры Azure Cosmos DB. Включите экземпляры Azure Cosmos DB в разных регионах в ваше решение для мониторинга рабочей нагрузки.
Создайте идентификаторы в клиентском приложении, чтобы различать рабочие нагрузки. Рассмотрим флаги, такие как суффикс пользовательского агента, чтобы определить, с какой рабочей нагрузкой должна быть связана каждая запись журнала или метрика.
Разработать стратегию мониторинга журналов и метрик для разделения разных рабочих нагрузок, выявления исключительных сценариев, отслеживания шаблонов исключений и ошибок и отслеживания производительности хост-компьютера.
Определите несколько оповещений для отслеживания регулирования, анализа распределения пропускной способности и отслеживания размера данных.
Планируйте ожидаемые пороговые значения метрик на основе дизайна раздела и индекса. Создайте план для мониторинга этих метрик, чтобы определить, как они близки к запланированным пороговым значениям.
Автоматизация развертываний с помощью инфраструктуры в виде кода (IaC). Включите все изменения Azure Cosmos DB, включая развертывания инфраструктуры и изменения конфигурации, в методики развертывания кода.
Создайте и примените рекомендации по автоматизации развертывания учетной записи и ресурсов Azure Cosmos DB для NoSQL.
Убедитесь, что команда использует те же шаблоны для развертывания в других непроизводственных средах.
Рекомендации
Рекомендация | Преимущества |
---|---|
Убедитесь, что разработчики приложений используют последнюю версию пакета SDK для разработчиков. Дополнительные сведения см. в пакете SDK для .NET и пакете SDK для Java. Каждый пакет SDK Azure Cosmos DB для NoSQL имеет минимальную рекомендуемую версию. | Использование последних версий пакетов SDK для разработчиков помогает поддерживать производительность, безопасность и совместимость приложений. |
Захват дополнительной диагностики с помощью методов внедрения диагностики для каждого пакета SDK. Эти методы добавляют дополнительные сведения о рабочей нагрузке, а также метрики и журналы по умолчанию. Дополнительные сведения см. в пакете SDK для .NET и пакете SDK для Java. | Внедряя диагностику, вы можете записывать пользовательские метрики, трассировки и журналы для улучшения устранения неполадок и оптимизации приложений. Вы можете отслеживать конкретные аспекты рабочей нагрузки, которые метрики и журналы по умолчанию не охватывают. |
Создание оповещений для ресурсов хост-компьютера. | Проблемы с подключением и доступностью могут возникать из-за проблем на стороне клиента. Мониторинг ресурсов, таких как ЦП, память и хранилище на хост-компьютерах, с помощью клиентских приложений, использующих пакеты SDK Azure Cosmos DB для NoSQL. |
Создавайте оповещения о ограничении пропускной способности, используя такие метрики, как нормализованное потребление единиц запросов. Эта метрика измеряет процентное использование подготовленной пропускной способности в базе данных или контейнере. Используйте оповещения для отслеживания превышения ожидаемых пороговых значений этой метрики. Со временем просмотрите и настройте оповещения, как вы узнаете больше о рабочей нагрузке. |
Если ограничение пропускной способности постоянно равно 100%, запросы, вероятно, будут возвращать временную ошибку. Создавая оповещения на основе этой метрики, вы можете получать уведомления, когда использование превышает определенные пороговые значения. Вы можете предпринять корректирующие действия до того, как это скажется на производительности вашего приложения. |
Используйте метрики производительности запросов для отслеживания производительности основных запросов с течением времени. Если производительность запросов низка, устраняйте неполадки с производительностью и применяйте рекомендации по запросу. | Метрики производительности позволяют лучше понять, как выполняются запросы и где существуют потенциальные узкие места. Эта информация помогает принимать обоснованные решения о политиках индексирования и оптимизации запросов. |
Используйте шаблоны для автоматического развертывания ресурсов учетной записи. Рассмотрим шаблоны Azure Resource Manager, Bicep или Terraform , чтобы автоматизировать развертывание учетной записи и последующих ресурсов. | Шаблоны IaC помогают определить инфраструктуру в описательной модели. Они упрощают повторяемость и согласованность и помогают поддерживать унифицированные и прогнозируемые среды рабочей нагрузки. |
Отслеживайте ключевые метрики, чтобы определить распространенные проблемы в рабочей нагрузке, например RU использование по разделам, ограничение и объемы запросов по типам. | Мониторинг этих ключевых метрик помогает понять, как база данных выполняется в различных условиях. Мониторинг также помогает выявить распространенные проблемы, чтобы можно было предпринять корректирующие действия. |
Эффективность производительности
Эффективность производительности заключается в поддержании пользовательского опыта даже в условиях увеличения нагрузки за счёт управления ресурсами. Стратегия включает масштабирование ресурсов, определение потенциальных узких мест и оптимизацию для достижения пиковой производительности.
Принципы проектирования эффективности производительности предлагают высокоуровневую стратегию для достижения этих целей по емкости с учетом ожидаемого использования.
Контрольный список проектирования
Начните свою стратегию проектирования, основываясь на контрольном списке для проверки эффективности производительности, чтобы определить исходные показатели на основе ключевых показателей эффективности для Azure Cosmos DB в NoSQL.
Планирование и упреждающее управление емкостью Azure Cosmos DB. Определите базовые показатели производительности для приложения. Измеряйте количество одновременных пользователей и транзакций, которые может потребоваться обрабатывать. Рассмотрим характеристики рабочей нагрузки, такие как средний поток пользователя, распространенные операции и пики использования.
Исследование целевых пользователей. Определите, какие регионы Azure ближе всего к ним.
Оптимизируйте структуру данных. Разрабатывайте элементы так, чтобы их соответствующие JSON-документы были как можно меньше. При необходимости рассмотрите возможность разделения данных по нескольким элементам.
Держите элементы размером менее 100 КБ . Более крупные элементы используют большую пропускную способность для распространенных операций чтения и записи. Запросы на крупные элементы данных, которые проецируют все поля, также могут значительно увеличивать затраты на пропускную способность.
Выберите нужный уровень, функции и модель выставления счетов. Определите, требуется ли для рабочей нагрузки аналитическое хранилище. Рассмотрим аналитические хранилища и службы, такие как Azure Synapse Link , для сложных запросов.
Оптимизация модели развертывания. Разверните Azure Cosmos DB для NoSQL в регионах, ближайших к конечным пользователям. | Уменьшите задержку, развернув Azure Cosmos DB для NoSQL в регионы, ближайшие к конечным пользователям, как можно больше.
Оптимизируйте запросы на производительность. Просмотрите советы по производительности запросов и примените стратегии, которые применяются к вашим вариантам использования.
Определите запросы, использующие одно или несколько полей упорядочения. Кроме того, определите операции, влияющие на несколько полей. Включите эти поля явным образом в структуру политики индексирования.
Проектируйте крупные рабочие нагрузки так, чтобы по возможности использовать массовые операции.
Определите запросы на дочерние массивы и определите, является ли они кандидатами на более эффективные вложенные запросы.
Изучите наиболее распространенные и сложные запросы. Определите запросы, использующие несколько подстановок, соединений или агрегирования. Учтите эти запросы при разработке ключа партиции или политики индексирования.
Для наиболее распространенных запросов определите количество ожидаемых результатов для каждой страницы. Это число помогает формализировать количество буферированных элементов для предварительно подготовленных результатов.
Оптимизация логики кода. Используйте шаблон singleton для
CosmosClient
класса в большинстве пакетов SDK. Используйте клиентский класс в большинстве пакетов SDK в качестве одиночного объекта. Класс клиента управляет собственным жизненным циклом и не предназначен для удаления. Постоянное создание и удаление экземпляров может привести к снижению производительности.
Рекомендации
Рекомендация | Преимущества |
---|---|
Используйте такие средства, как калькулятор емкости , чтобы определить объем пропускной способности, необходимый для базовой конфигурации производительности. Используйте такие функции, как автомасштабирование , чтобы масштабировать фактическую пропускную способность для более тесного сопоставления фактической рабочей нагрузки. Отслеживайте фактическое потребление пропускной способности после этого и внесите корректировки. | Использование калькулятора емкости помогает изначально принимать обоснованные решения о подготовке ресурсов. Вы можете убедиться, что база данных может обрабатывать ожидаемую нагрузку без ненужных затрат. Автоматическое масштабирование автоматически регулирует подготовленную пропускную способность в соответствии с фактическими потребностями рабочей нагрузки. |
При необходимости используйте методы оптимизации на стороне клиента и сервера. Воспользуйтесь встроенным интегрированным кэшем. Настройте пакет SDK для управления количеством предварительно загружаемых и буферизируемых элементов, возвращаемых для каждой страницы. | Методы оптимизации кода могут улучшить пользовательский опыт и сделать клиентские и серверные приложения более эффективными, помогая сократить затраты на запросные единицы (RU) для повторяющихся операций чтения и запросов. Эти преимущества могут снизить затраты. |
Разверните экземпляры Azure Cosmos DB в регионах, ближайших к конечным пользователям. Настройте пакет SDK для .NET или Java , чтобы предпочитать регионы ближе к конечным пользователям. Воспользуйтесь преимуществами репликации чтения, чтобы обеспечить оптимизированную производительность чтения независимо от того, как настроить операции записи в одном или нескольких регионах. |
Развертывание базы данных в регионах, ближайших к конечным пользователям, помогает сократить задержку и улучшить взаимодействие с пользователем. Репликация чтения позволяет выполнять операции чтения независимо от того, как настроены операции записи. |
Настройте пакет SDK для прямого режима для оптимальной производительности. Этот режим позволяет клиенту открывать подключения протокола TCP напрямую к секциям в службе и отправлять запросы напрямую без промежуточного шлюза. | Прямой режим обеспечивает более высокую производительность, поскольку сокращается количество промежуточных сетевых соединений. |
Используйте массовую функцию клиентских пакетов SDK в сценариях, требующих высокой пропускной способности. Функция массовой обработки автоматически управляет и группирует операции для максимальной пропускной способности. | Использование массового компонента уменьшает количество внутренних запросов и эффективно распределяет задачи по секциям. Такой подход повышает производительность и использование ресурсов. |
Отключите индексирование для массовых операций. Если существует несколько операций вставки, замены или upsert, отключите индексирование, чтобы повысить скорость операции при использовании массовой поддержки соответствующего пакета SDK. Вы сможете повторно включить индексирование позже. | Отключение индексирования во время массовых операций снижает нагрузку, связанную с сохранением индекса. Вы можете лучше использовать ресурсы для массовых операций, что ускоряет вставку и обновление данных. |
Создайте составные индексы для полей в сложных операциях. Рекомендуется использовать составные индексы для ORDER BY инструкций с несколькими полями. |
Составные индексы могут повысить эффективность операций с несколькими полями, что делает получение данных быстрым и эффективным. |
Оптимизируйте клиентские машины хоста для пакетов SDK. В большинстве случаев используйте по крайней мере четыре ядра и восемь ГБ памяти на 64-разрядных хост-компьютерах, использующих пакеты SDK для .NET или Java. Включите ускоренную сеть на хост-компьютерах. |
Использование компьютеров с более высокими спецификациями гарантирует, что пакеты SDK могут одновременно обрабатывать больше операций. Ускорение сети может помочь уменьшить задержку, которая увеличивает время отклика. |
Используйте вложенные запросы стратегически для оптимизации запросов, которые объединяют большие наборы данных.
Оптимизируйте выражения самосоединения, используя подзапросы для предварительной фильтрации массивов перед их объединением в элементе. Для запросов между секциями оптимизируйте запрос, чтобы включить фильтр в ключ секции, чтобы оптимизировать маршрутизацию запроса до минимального количества секций. |
Запросы, присоединенные к дочерним массивам, могут увеличить сложность, если задействовано несколько массивов и не фильтруются. Используя вложенные запросы, массивы можно фильтровать перед присоединением, что повышает эффективность операций самосоединения. |
Используйте аналитические рабочие нагрузки для наиболее сложных запросов. Если вы часто выполняете агрегации или объединяете запросы в больших контейнерах, рассмотрите возможность включения аналитического хранилища и осуществления запросов в Azure Synapse Analytics. |
Аналитические рабочие нагрузки изолированы от транзакционных рабочих нагрузок и оптимизированы для обработки сложных запросов, что предотвращает снижение производительности и обеспечивает более быстрые результаты. |
Политики Azure
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.
Для получения дополнительной информации см. Azure Advisor.