Архитектура Cosmos DB

Разработка для Azure Storage

Shahzad Mian

Content developer, DataCamp

Azure Cosmos DB

Azure_Cosmos_DB.svg.png

Разработка для Azure Storage

Проблема

Проблема Cosmos DB

Разработка для Azure Storage

Что такое Cosmos DB?

 

CosmosDB

  • Мультимодельная глобально распределённая NoSQL-база данных.
  • NoSQL — гибкое хранилище с папочной структурой.
  • Поддерживает несколько API и типов данных.
  • Выберите подходящий API:
    • SQL (Core) — для JSON-документов.
    • MongoDB — для разработчиков на Mongo.
    • Cassandra — для ширококолоночных данных.
    • Gremlin — для графовых связей.
    • Table API — для хранилища «ключ — значение».
Разработка для Azure Storage

Cosmos DB для разработчиков

  • Создана с учётом потребностей разработчиков.
  • Автоматическая индексация — управление схемой не требуется.
  • Быстрые запросы.
  • Пять уровней согласованности: от Strong до Eventual.
  • Компромисс между производительностью и согласованностью.
    • Strong — все получают одинаковые данные мгновенно.
    • Eventual — данные синхронизируются со временем.

 

Строгая и eventual-согласованность

Разработка для Azure Storage

Масштабирование и пропускная способность (RU/s)

Режим с подготовленной пропускной способностью

  • Единицы запросов в секунду (RU/s) — «валюта» производительности Cosmos DB.
  • Каждая операция чтения, записи или запроса расходует RU/s.
  • Выберите фиксированную подготовку или автомасштабирование.
Разработка для Azure Storage

Масштабирование и пропускная способность (RU/s)

Масштабирование

  • Единицы запросов в секунду (RU/s) — «валюта» производительности Cosmos DB.
  • Каждая операция чтения, записи или запроса расходует RU/s.
  • Выберите фиксированную подготовку или автомасштабирование.
  • Автомасштабирование подстраивается под нагрузку автоматически.
Разработка для Azure Storage

Эластичное масштабирование и секционирование

  • Cosmos DB масштабируется с помощью секционирования.
  • Каждый контейнер использует ключ секции.
  • Ключ группирует связанные данные вместе.
  • Пример: Cipher Coffee использует /customerId для заказов.
  • Все заказы клиента хранятся в одной секции при использовании /customerId в качестве ключа секции.
  • Запросы остаются быстрыми даже при росте данных.
  • Горячая секция: неравномерная нагрузка, снижающая производительность.

Эластичное масштабирование и секционирование

Разработка для Azure Storage

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

  • Легко реплицируйте данные в любой регион Azure.
  • Достаточно отметить нужные регионы — никакой сложной настройки.
  • При сбое региона трафик автоматически перенаправляется.
  • Без простоев и потери данных.
  • Резервный регион всегда готов обслуживать пользователей.

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

Разработка для Azure Storage

Мониторинг и оптимизация затрат

  • Отслеживайте производительность на портале Azure.
  • Просматривайте метрики: RU/s, задержку и стоимость запросов.
  • Как приборная панель автомобиля — показывает скорость и расход топлива.
  • Инженеры Cipher Coffee проанализировали эти метрики.
  • Динамическая настройка пропускной способности позволила снизить затраты.

Мониторинг

Разработка для Azure Storage

Давайте потренируемся!

Разработка для Azure Storage

Preparing Video For Download...