0Pricing
Cloud & IT Cert Prep · Урок

Azure Cosmos DB: глобальная NoSQL-база данных

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

«Azure Cosmos DB: глобальная NoSQL-база данных» — бесплатный урок Cloud & IT Cert Prep на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cloud & IT Cert Prep, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cloud & IT Cert Prep содержит 4 уроков всего.

Что такое Azure Cosmos DB

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

Поддержка API нескольких моделей

Cosmos DB поддерживает несколько API баз данных в рамках одного сервиса. Вы можете использовать собственный API NoSQL (документы JSON), API MongoDB для приложений, созданных с использованием драйверов MongoDB, API Apache Cassandra для рабочих нагрузок с широкими столбцами, API Gremlin для данных графов и API Table для данных типа «ключ — значение». Каждый API предоставляет доступ к базовому ядру Cosmos DB через знакомый интерфейс.

Учётные записи, базы данных и контейнеры

Иерархия ресурсов Cosmos DB состоит из трёх уровней. Учётная запись — это ресурс верхнего уровня, определяющий список регионов репликации и уровень согласованности. Внутри учётной записи Вы создаёте базы данных как логические пространства имён. В каждой базе данных Вы создаёте контейнеры — единицы, содержащие Items (документы) и предназначенные для выделения пропускной способности.

# Create a Cosmos DB account with the NoSQL API
az cosmosdb create \
  --name mycosmosaccount \
  --resource-group myRG \
  --kind GlobalDocumentDB \
  --locations regionName=eastus failoverPriority=0 isZoneRedundant=true

# Create a database
az cosmosdb sql database create \
  --account-name mycosmosaccount \
  --resource-group myRG \
  --name myDatabase

Ключи секционирования: основа масштабирования

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

// Example container with /userId as partition key
// Items in the container:
{
  'id': 'order-001',
  'userId': 'user-42',
  'product': 'Widget',
  'total': 29.99
}
// userId distributes orders across partitions

Пропускная способность: модель RU/s

Cosmos DB взимает плату за пропускную способность в единицах запросов в секунду (RU/s). Одна RU примерно соответствует стоимости чтения документа размером 1 KB по его идентификатору. Запись, запросы и удаление требуют большего количества RU в зависимости от размера элемента и сложности индексов. Вы можете выделить RU/s на уровне контейнера или использовать общий пул для всех контейнеров базы данных, а также переключиться в режим autoscale, чтобы Cosmos DB автоматически масштабировал пропускную способность.

# Create a container with 400 RU/s
az cosmosdb sql container create \
  --account-name mycosmosaccount \
  --resource-group myRG \
  --database-name myDatabase \
  --name orders \
  --partition-key-path '/userId' \
  --throughput 400

Глобальное распределение

Самая мощная возможность Cosmos DB — способность глобально реплицировать данные всего за несколько щелчков. Вы добавляете регионы в учётную запись, а Cosmos DB автоматически синхронизирует все записи между ними. В конфигурации с несколькими операциями записи (multi-master) каждый регион может одновременно обслуживать чтение и запись, сокращая задержку для пользователей, находящихся в разных географических точках.

# Add a second region to the Cosmos DB account
az cosmosdb update \
  --name mycosmosaccount \
  --resource-group myRG \
  --locations regionName=eastus failoverPriority=0 \
                regionName=westeurope failoverPriority=1

Пять уровней согласованности

Cosmos DB предлагает пять настраиваемых уровней согласованности, образующих диапазон от самого строгого к самому слабому: Strong (линеаризуемое чтение, максимальная задержка), Bounded Staleness (чтение отстаёт от записи в пределах ограниченного интервала), Session (по умолчанию — согласованное чтение собственных записей в рамках сеанса), Consistent Prefix (чтение никогда не видит записи в неправильном порядке) и Eventual (самое быстрое чтение, наиболее слабые гарантии). Выбирайте уровень с учётом допустимой для приложения степени устаревания данных.

Автоматическая индексация

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

// Custom indexing policy example
{
  'indexingMode': 'consistent',
  'includedPaths': [{ 'path': '/*' }],
  'excludedPaths': [
    { 'path': '/largeTextBlob/?' },
    { 'path': '/_etag/?' }
  ]
}

Лента изменений для приложений, управляемых событиями

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

Time-to-Live (TTL) для истекающих данных

Cosmos DB поддерживает Time-to-Live (TTL) — свойство, задаваемое для контейнера или отдельных элементов, чтобы автоматически удалять их через указанное количество секунд. Это идеально подходит для данных сеансов, записей кэша, журналов аудита с установленными нормативными сроками хранения и любых данных с известным сроком действия. Удаление по TTL выполняется в качестве фоновых задач и не расходует выделенные RU/s.

// Enable TTL on a container (TTL in seconds)
az cosmosdb sql container update \
  --account-name mycosmosaccount \
  --resource-group myRG \
  --database-name myDatabase \
  --name sessions \
  --ttl 3600

Цены и бессерверный уровень

Cosmos DB предлагает два режима оплаты. При использовании выделенной пропускной способности плата взимается за каждый час RU/s независимо от фактического использования, что подходит для стабильных предсказуемых рабочих нагрузок. В режиме Serverless плата взимается за потреблённые RU и хранимые GB, без минимальной стоимости, что делает этот режим экономичным для разработки, создания прототипов и резких всплесков трафика. Бессерверный Cosmos DB в настоящее время ограничен одним регионом.

Быстрая проверка

Проверьте своё понимание концепций Microsoft Azure Fundamentals (AZ-900) из этого урока.

Итоги урока

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

Часто задаваемые вопросы

Урок «Azure Cosmos DB: глобальная NoSQL-база данных» бесплатный?

Да — полный текст урока «Azure Cosmos DB: глобальная NoSQL-база данных» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cloud & IT Cert Prep, подпишись на CoddyKit PRO. Курс Cloud & IT Cert Prep содержит 4 уроков всего.

Чему я научусь в уроке «Azure Cosmos DB: глобальная NoSQL-база данных»?

Изучите многомодельную архитектуру Cosmos DB с поддержкой нескольких регионов, разберитесь с ключами секционирования и выберите подходящий уровень согласованности для потребностей приложения. Ты практикуешь Cloud & IT Cert Prep с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cloud & IT Cert Prep?

Предыдущий опыт не требуется. Cloud & IT Cert Prep на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Azure Cosmos DB: глобальная NoSQL-база данных»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cloud & IT Cert Prep?

Да. Каждый урок Cloud & IT Cert Prep включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Azure SQL Database
  2. Azure Cosmos DB: глобальная NoSQL-база данных
  3. Базы данных Azure на движках с открытым исходным кодом
  4. Миграция базы данных в Azure
← Назад к Cloud & IT Cert Prep