Модель ресурсов Azure Cosmos DB

ПРИМЕНИМО К: API SQL API Cassandra API Gremlin API таблиц API Azure Cosmos DB для MongoDB

Azure Cosmos DB — это полностью управляемая платформа как услуга (PaaS). Чтобы начать работу с Azure Cosmos DB, сначала необходимо создать учетную запись Azure Cosmos в группе ресурсов Azure в соответствующей подписке, а затем базы данных, контейнеры и элементы. В этой статье описана модель ресурсов Azure Cosmos DB и различные сущности в иерархии модели ресурсов.

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

Элементы в учетной записи Azure Cosmos

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

На данный момент по подписке Azure можно создать до 50 учетных записей Azure Cosmos (это мягкое ограничение, которое можно увеличить, отправив запрос на поддержку). Одна учетная запись Azure Cosmos может управлять практически неограниченным объемом данных и подготовленной пропускной способностью. Для управления данными и подготовленной пропускной способностью можно создать одну или несколько баз данных Azure Cosmos в учетной записи, а в рамках базы данных создать один или несколько контейнеров. Ниже показана иерархия разных элементов в учетной записи Azure Cosmos:

Иерархия учетной записи Azure Cosmos

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

Ниже показана иерархия разных сущностей в учетной записи Azure Cosmos DB:

Сущности учетной записи Azure Cosmos

базы данных Azure Cosmos.

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

Сущность Azure Cosmos DB API SQL API Cassandra API Azure Cosmos DB для MongoDB API Gremlin API таблиц
База данных Azure Cosmos База данных Пространство ключей База данных База данных Н/Д

Примечание

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

Операции с базой данных Azure Cosmos

Вы можете взаимодействовать с базой данных Azure Cosmos с помощью API Azure Cosmos, приведенных в таблице ниже.

Операция Azure CLI API SQL API Cassandra API Azure Cosmos DB для MongoDB API Gremlin API таблиц
Перечисление всех баз данных Да Да Да (база данных соответствует пространству имен) Да Н/Д Н/Д
Чтение базы данных Да Да Да (база данных соответствует пространству имен) Да Н/Д Н/Д
Создание базы данных Да Да Да (база данных соответствует пространству имен) Да Н/Д Н/Д
Обновление базы данных Да Да Да (база данных соответствует пространству имен) Да Н/Д Н/Д

Контейнеры Azure Cosmos

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

При создании контейнера пропускную способность можно настроить для использования в одном из следующих режимов:

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

  • Режим общей подготовленной пропускной способности: контейнеры совместно используют подготовленную пропускную способность с другими контейнерами в пределах одной базы данных (кроме контейнеров с выделенной подготовленной пропускной способностью). Другими словами, подготовленная пропускная способность для базы данных является общим ресурсом для всех связанных контейнеров. Дополнительные сведения см. в статье Подготовка пропускной способности для базы данных

Примечание

Общую и выделенную пропускную способность можно настроить только при создании базы данных и контейнера. Чтобы переключиться из режима выделенной пропускной способности в режим общей пропускной способности (и наоборот) после создания контейнера, необходимо создать контейнер и перенести данные в новый контейнер. Данные можно перенести с помощью функции канала изменений Azure Cosmos DB.

Контейнеры Cosmos Azure поддерживают эластичное масштабирование независимо от выбранного при создании режима подготовленной пропускной способности (выделенной или общей).

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

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

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

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

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

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

Сущность Azure Cosmos DB API SQL API Cassandra API Azure Cosmos DB для MongoDB API Gremlin API таблиц
Контейнер Azure Cosmos Контейнер Таблица Коллекция График Таблица

Примечание

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

Свойства контейнера Azure Cosmos

Контейнер Azure Cosmos имеет набор системных свойств. В зависимости от используемого API некоторые свойства могут быть недоступны напрямую. В следующей таблице приведен список системных свойств.

Системные свойства Генерируемые системой или настраиваемые пользователем Цель API SQL API Cassandra API Azure Cosmos DB для MongoDB API Gremlin API таблиц
_rid Генерируемые системой Уникальный идентификатор контейнера. Да Нет Нет Нет Нет
_etag Генерируемые системой Тег сущности, используемый для управления оптимистической блокировкой. Да Нет Нет Нет Нет
_ts Генерируемые системой Метка времени последнего обновления контейнера. Да Нет Нет Нет Нет
_self Генерируемые системой Адресуемый URI контейнера. Да Нет Нет Нет Нет
идентификатор Настраиваемые пользователем Определяемое пользователем уникальное имя контейнера. Да Да Да Да Да
indexingPolicy Настраиваемые пользователем Позволяет изменять путь, тип и режим индекса Да Нет Нет Нет Да
timeToLive Настраиваемые пользователем Позволяет автоматически удалять элементы из контейнера через заданное время. Дополнительные сведения см. в статье Срок жизни. Да Нет Нет Нет Да
changeFeedPolicy Настраиваемые пользователем Используется для считывания изменений, внесенных в элементы в контейнере. Дополнительные сведения см. в статье Канал изменений. Да Нет Нет Нет Да
uniqueKeyPolicy Настраиваемые пользователем Гарантируют уникальность одного или нескольких значений в пределах логической секции. Дополнительные сведения см. в статье Ограничения уникальных ключей. Да Нет Нет Нет Да

Операции с контейнером Azure Cosmos

Контейнер Azure Cosmos поддерживает следующие операции при использовании любого из API Azure Cosmos.

Операция Azure CLI API SQL API Cassandra API Azure Cosmos DB для MongoDB API Gremlin API таблиц
Перечисление контейнеров в базе данных Да Да Да Да Н/Д Н/Д
Считывание контейнера Да Да Да Да Н/Д Н/Д
Создает контейнер. Да Да Да Да Н/Д Н/Д
Обновление контейнера Да Да Да Да Н/Д Н/Д
Удаление контейнера Да Да Да Да Н/Д Н/Д

Элементы Azure Cosmos

В зависимости от используемого API элемент Azure Cosmos может представлять документ в коллекции, строку в таблице или узел (ребро) в графе. В следующей таблице показано, как элемент Azure Cosmos соотносится с разными сущностями определенных API:

Сущность Azure Cosmos DB API SQL API Cassandra API Azure Cosmos DB для MongoDB API Gremlin API таблиц
Элемент Azure Cosmos Item Строка Документ Узел или ребро Item

Свойства элемента

Каждый элемент Azure Cosmos имеет следующие системные свойства. В зависимости от используемого API некоторые из них могут быть недоступны напрямую.

Системные свойства Генерируемые системой или настраиваемые пользователем Цель API SQL API Cassandra API Azure Cosmos DB для MongoDB API Gremlin API таблиц
_rid Генерируемые системой Уникальный идентификатор элемента Да Нет Нет Нет Нет
_etag Генерируемые системой Тег сущности, используемый для управления оптимистической блокировкой. Да Нет Нет Нет Нет
_ts Генерируемые системой Метка времени последнего обновления элемента Да Нет Нет Нет Нет
_self Генерируемые системой Адресуемый URI элемента. Да Нет Нет Нет Нет
идентификатор Можно использовать Определяемое пользователем уникальное имя в пределах логической секции. Да Да Да Да Да
Определяемые пользователем свойства Определяемые пользователем маршруты Определяемые пользователем свойства в собственном формате API (включая JSON, BSON и CQL). Да Да Да Да Да

Примечание

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

Операции с элементами

Элементы Azure Cosmos поддерживают приведенные ниже операции. Для выполнения этих операций можно использовать любой из интерфейсов API Azure Cosmos.

Операция Azure CLI API SQL API Cassandra API Azure Cosmos DB для MongoDB API Gremlin API таблиц
Вставка, замена, удаление, обновление или вставка, чтение Нет Да Да Да Да Да

Дальнейшие действия

Узнайте, как управлять учетной записью Azure Cosmos, и ознакомьтесь с другими концепциями: