Открыть сервис

Azure Cosmos DB

Azure Cosmos DB — это глобально распределённая многомодельная система управления базами данных (СУБД), разработанная корпорацией Microsoft. Относится к классу NoSQL-баз данных и предназначена для обеспечения высокой доступности, низкой задержки доступа к данным и автоматического масштабирования в глобальном масштабе. Ключевая особенность Cosmos DB — поддержка нескольких моделей данных (документная, графовая, семейство столбцов, ключ-значение) и нескольких API, включая SQL API, MongoDB, Cassandra, Gremlin и Table.

История

Azure Cosmos DB была впервые представлена публике в мае 2017 года на конференции Microsoft Build. Проект изначально разрабатывался внутри Microsoft под кодовым названием «Project Olympus» и был создан для поддержки собственных глобальных сервисов компании, таких как Bing, Office 365 и Skype. Первоначально сервис назывался Azure DocumentDB и поддерживал только документную модель данных с API, похожим на SQL. С выпуском Cosmos DB Microsoft расширила функциональность, добавив поддержку других NoSQL-моделей и API.

В 2019 году Microsoft объявила о запуске Azure Cosmos DB Serverless, позволяющего платить только за потреблённые ресурсы без необходимости предварительного выделения пропускной способности. В 2021 году была добавлена поддержка Azure Synapse Link, позволяющая выполнять аналитические запросы непосредственно к данным Cosmos DB без копирования их в отдельное хранилище.

Архитектура и ключевые характеристики

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

Основная архитектурная концепция Cosmos DB — глобальное распределение. База данных может быть развёрнута в любом количестве регионов Azure по всему миру. Данные автоматически реплицируются между выбранными регионами, обеспечивая низкую задержку чтения (менее 10 мс для чтения и менее 15 мс для записи в пределах одного региона) и высокую доступность (SLA 99,999% для чтения и 99,99% для записи). Пользователь может настроить политику согласованности данных и выбрать, какие регионы будут участвовать в репликации.

Модели данных и API

Azure Cosmos DB поддерживает несколько моделей данных через различные API:

Уровни согласованности

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

  1. Strong (Строгая): Гарантирует, что все операции чтения увидят последнюю запись. Обеспечивает самую высокую согласованность, но самую высокую задержку.
  2. Bounded Staleness (Ограниченное устаревание): Чтения могут отставать от записей не более чем на заданное количество версий или интервал времени (например, не более 5 секунд).
  3. Session (Сессионная): Гарантирует, что в рамках одной сессии (например, пользовательской) клиент увидит все свои собственные записи. Это уровень по умолчанию.
  4. Consistent Prefix (Согласованный префикс): Гарантирует, что чтения никогда не увидят записи в неправильном порядке (например, сначала версию 2, потом версию 1).
  5. Eventual (Конечная): Самая слабая согласованность. Гарантирует, что в конечном итоге все реплики получат все записи, но в любой момент времени чтения могут вернуть устаревшие данные.

Производительность и единицы запросов (RU)

Производительность в Cosmos DB измеряется в единицах запросов (Request Units, RU). RU — это абстрактная единица, которая объединяет в себе потребление процессора, памяти и операций ввода-вывода. Каждая операция (чтение, запись, запрос) потребляет определённое количество RU. Пользователь может заранее выделить определённое количество RU в секунду для контейнера или базы данных. Автоматическое масштабирование позволяет динамически увеличивать или уменьшать выделенные RU в зависимости от нагрузки.

Классификация и виды

Azure Cosmos DB можно классифицировать по нескольким признакам:

Применение

Azure Cosmos DB используется в следующих сценариях:

Критика

Несмотря на широкие возможности, Azure Cosmos DB подвергается критике по нескольким направлениям:

Интересные факты

Источники

  1. Microsoft Docs. «Introduction to Azure Cosmos DB».
  2. Microsoft Docs. «Consistency levels in Azure Cosmos DB».
  3. Microsoft Docs. «Request Units in Azure Cosmos DB».
  4. Статья «Azure Cosmos DB: The database of the future» на портале TechCrunch (2017).
  5. Официальный блог Microsoft Azure.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →