Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Azure Cosmos DB — это полностью управляемая платформа как услуга (PaaS). Чтобы начать использовать Azure Cosmos DB, создайте учетную запись Azure Cosmos DB в группе ресурсов Azure в своей подписке. Затем создайте базы данных и контейнеры в учетной записи.
Учетная запись Azure Cosmos DB содержит уникальное доменное имя (DNS). Вы можете управлять DNS-именем с помощью множества средств, включая:
- Azure portal
- Шаблоны диспетчера ресурсов Azure
- Шаблоны Bicep
- Azure PowerShell
- Azure CLI
- Комплекты средств разработки программного обеспечения для управления Azure (пакеты SDK)
- Azure REST API
Для репликации данных и пропускной способности между несколькими регионами Azure, вы можете в любое время добавить или удалить регионы Azure из своей учетной записи. В учетной записи можно настроить один или несколько регионов записи. Дополнительные сведения см. в статье "Управление учетной записью Azure Cosmos DB" с помощью портал Azure. Вы также можете настроить уровень согласованности по умолчанию в учетной записи.
Элементы в учетной записи Azure Cosmos DB
В настоящее время можно создать не более 250 учетных записей Azure Cosmos DB в подписке Azure. Это ограничение можно увеличить, выполнив запрос на поддержку.
Вы можете управлять неограниченным объемом данных и подготовленной пропускной способностью с помощью одной учетной записи Azure Cosmos DB. Для управления данными и подготовленной пропускной способностью необходимо создать одну или несколько баз данных в учетной записи, а затем создать один или несколько контейнеров для хранения данных.
На следующем рисунке показана иерархия элементов в учетной записи Azure Cosmos DB.
На следующем рисунке показана иерархия сущностей в учетной записи Azure Cosmos DB.
Базы данных Azure Cosmos DB
В Azure Cosmos DB база данных аналогична пространству имен. База данных — это просто группа контейнеров. В следующей таблице показано, как база данных соотносится с разными сущностями определенных API:
| Сущность Azure Cosmos DB | API для NoSQL | API для Apache Cassandra | API для MongoDB | API для Apache Gremlin | API для таблицы |
|---|---|---|---|---|---|
| База данных Azure Cosmos DB | Database | Пространство ключей | Database | Database | Неприменимо |
Замечание
С помощью API для учетных записей таблиц в Azure Cosmos DB таблицы создаются на уровне учетной записи для обеспечения совместимости с Azure Table Storage.
Контейнеры Azure Cosmos DB
Контейнер Azure Cosmos DB — это место, где хранятся данные. В отличие от большинства реляционных баз данных, которые масштабируются за счёт увеличения размеров виртуальных машин, Azure Cosmos DB масштабируется горизонтально.
Данные хранятся на одном или нескольких серверах, называемых секциями. Чтобы увеличить количество разделов, вы повышаете пропускную способность, или их количество автоматически увеличивается по мере увеличения хранилища. Это отношение обеспечивает неограниченное количество пропускной способности и места для хранения для контейнера.
При создании контейнера необходимо указать ключ раздела. Ключ секции — это свойство, которое вы выбираете из элементов, чтобы помочь Azure Cosmos DB эффективно распределять данные по секциям. Azure Cosmos DB использует значение этого свойства для маршрутизации данных в соответствующую секцию для записи, обновления или удаления. Вы также можете использовать ключ раздела в предложении WHERE в запросах для эффективного извлечения данных.
Базовый механизм хранения данных в Azure Cosmos DB называется физическим разделом. Физические секции могут иметь пропускную способность до 10 000 единиц запросов в секунду, и они могут хранить до 50 ГБ данных. Azure Cosmos DB абстрагирует эту концепцию секционирования с логическим разделом, который может хранить до 20 ГБ данных.
Логические секции позволяют службе обеспечить большую эластичность и более эффективное управление данными на базовых физических секциях при добавлении дополнительных секций. Дополнительные сведения о секционированиях и ключах секционирования см. в статье Секционирование и горизонтальное масштабирование в Azure Cosmos DB.
Если у вас есть сценарии, в которых ключи секций могут превышать 20 ГБ данных, с помощью иерархических ключей секций можно помочь. Если вы используете эту функцию, можно настроить до трехуровневой иерархии для ключей секций для дальнейшего оптимизации распределения данных и повышения уровня масштабирования. См. обзор иерархических ключей секций.
При создании контейнера пропускную способность можно настроить для использования в одном из следующих режимов:
- Выделенная пропускная способность: пропускная способность контейнера зарезервирована исключительно для этого контейнера. Существует два типа выделенной пропускной способности: стандартная и автомасштабируемая. Дополнительные сведения см. в статье о настройке стандартной (ручной) пропускной способности в контейнере Azure Cosmos DB.
- Общая пропускная способность: пропускная способность указывается на уровне базы данных, а затем предоставляется общий доступ к 25 контейнерам в базе данных. Совместное использование пропускной способности исключает контейнеры, настроенные с собственной выделенной пропускной способностью.
Общая пропускная способность может быть хорошим вариантом, если все контейнеры в базе данных имеют аналогичные запросы и потребности в хранилище, или если не требуется прогнозируемая производительность данных. Дополнительные сведения см. в статье о настройке стандартной (ручной) пропускной способности в базе данных в Azure Cosmos DB.
Замечание
Вы не можете переключаться между выделенной и общей пропускной способностью. Контейнеры, созданные в базе данных общей пропускной способности, не могут быть обновлены, чтобы иметь выделенную пропускную способность. Чтобы изменить контейнер с общего доступа к выделенной пропускной способности, необходимо создать новый контейнер и скопировать в него данные. Функция копирования контейнеров в Azure Cosmos DB упрощает этот процесс.
Контейнеры не зависят от схемы. Элементы в контейнере могут иметь произвольные схемы или разные сущности, если они используют один и тот же ключ секции. Например, контейнер может хранить профиль клиента. Он также может хранить отдельные элементы для каждого заказа на продажу, сделанный этим клиентом. Вы можете поместить аналогичную информацию для всех клиентов в одном контейнере.
По умолчанию все данные, добавляемые в контейнер, автоматически индексируются без явного индексирования. Вы можете настроить индексирование контейнера, настроив его политику индексирования.
Чтобы избежать влияния на производительность, можно задать время жизни (TTL) для выбранных элементов в контейнере или в целом контейнере, чтобы автоматически удалить эти элементы в фоновом режиме с неиспользуемой пропускной способностью. Однако даже если истекшие данные не удаляются, они не отображаются в операциях чтения. Дополнительные сведения см. в статье "Настройка времени жизни в Azure Cosmos DB".
Azure Cosmos DB предоставляет встроенную возможность для отслеживания измененных данных с именем поток изменений. Его можно использовать для подписки на все изменения данных в контейнере.
Вы можете регистрировать хранимые процедуры, триггеры, определяемые пользователем функции и процедуры слияния для контейнера.
Каждый документ в контейнере должен иметь id свойство, уникальное в значении свойства логического ключа для этого контейнера. Это сочетание свойств можно использовать для предоставления уникального ограничения в контейнере без явного определения.
Вы также можете указать уникальное ограничение ключа в контейнере Azure Cosmos DB, использующего одно или несколько свойств. Ограничение уникального ключа гарантирует уникальность одного или нескольких значений для каждого логического ключа раздела. Если вы создаете контейнер с помощью уникальной политики ключей, вы не можете создавать новые или обновленные элементы со значениями, дублирующими значения, указанные уникальным ограничением ключа.
Контейнер предназначен для сущностей, относящихся к API, как показано в следующей таблице:
| Сущность Azure Cosmos DB | API для NoSQL | API для Cassandra | API для MongoDB | API для Gremlin | API для таблицы |
|---|---|---|---|---|---|
| Контейнер Azure Cosmos DB | Контейнер | Таблица | Collection | Graph | Таблица |
Замечание
Убедитесь, что вы не создаете два контейнера с одинаковым именем, но разными регистрами. Некоторые части платформы Azure не учитывают регистр, и такой способ именования может вызвать путаницу или конфликты в диагностических данных и действиях в контейнерах.
Панель свойств контейнера Azure Cosmos DB
Контейнер Azure Cosmos DB имеет набор системных свойств. В зависимости от используемого API некоторые свойства могут быть недоступны напрямую. В следующей таблице описываются системные свойства:
| Системно определяемое свойство | Система, созданная или настраиваемая пользователем | Purpose | API для NoSQL | API для Cassandra | API для MongoDB | API для Gremlin | API для таблицы |
|---|---|---|---|---|---|---|---|
_rid |
Создано системой | Уникальный идентификатор контейнера. | Yes | нет | нет | нет | нет |
_etag |
Создано системой | Тег сущности, используемый для оптимистического управления параллелизмом. | Yes | нет | нет | нет | нет |
_ts |
Создано системой | Последняя обновленная метка времени контейнера. | Yes | нет | нет | нет | нет |
_self |
Создано системой | Адресный URI контейнера. | Yes | нет | нет | нет | нет |
id |
Настраивается пользователем | Имя контейнера. | Yes | Yes | Yes | Yes | Yes |
indexingPolicy |
Настраивается пользователем | Политика создания индекса для контейнера. | Yes | нет | Yes | Yes | Yes |
TimeToLive |
Настраивается пользователем | Автоматическое удаление элемента из контейнера после заданного периода времени. Дополнительные сведения см. в разделе "Время жизни". | Yes | нет | нет | нет | Yes |
changeFeedPolicy |
Настраивается пользователем | Политика чтения изменений, внесенных в элементы в контейнере. Дополнительные сведения см. в статье Канал изменений. | Yes | нет | нет | нет | Yes |
uniqueKeyPolicy |
Настраивается пользователем | Политика обеспечения уникальности одного или нескольких значений в логическом разделе. Дополнительные сведения см. в статье Ограничения уникальных ключей. | Yes | нет | нет | нет | Yes |
AnalyticalTimeToLive |
Настраивается пользователем | Автоматическое удаление элемента из контейнера после заданного периода времени в контексте аналитического хранилища. Эта функция устарела. | Yes | нет | Yes | нет | нет |
Элементы Azure Cosmos DB
В зависимости от используемого API отдельные сущности данных могут представляться различными способами:
| Сущность Azure Cosmos DB | API для NoSQL | API для Cassandra | API для MongoDB | API для Gremlin | API для таблицы |
|---|---|---|---|---|---|
| Элемент Azure Cosmos DB | Item | Ряд | Документ | Узел или ребро | Item |
Свойства элемента
Каждый элемент Azure Cosmos DB имеет следующие системные свойства. В зависимости от используемого API некоторые из них могут быть недоступны напрямую.
| Системно определяемое свойство | Система, созданная или определяемая пользователем | Purpose | API для NoSQL | API для Cassandra | API для MongoDB | API для Gremlin | API для таблицы |
|---|---|---|---|---|---|---|---|
_rid |
Создано системой | Уникальный идентификатор элемента | Yes | нет | нет | нет | нет |
_etag |
Создано системой | Тег сущности, используемый для управления оптимистичной параллельностью. | Yes | нет | нет | нет | нет |
_ts |
Создано системой | Метка времени последнего обновления элемента | Yes | нет | нет | нет | нет |
_self |
Создано системой | Адресуемый URI элемента. | Yes | нет | нет | нет | нет |
_lsn |
Создано системой | Номер последовательности журнала, используемый для отслеживания положения последовательности канала изменений элемента. Присутствует только в полезных данных фида изменений; не возвращается при чтении стандартного элемента. | Yes | нет | нет | нет | нет |
id |
Либо | Определяемое пользователем уникальное имя в логическом разделе | Yes | Yes | Yes | Yes | Yes |
| Произвольные определяемые пользователем свойства | Определено пользователем | Определяемые пользователем свойства в нативном формате API, включая JSON, двоичный JSON (BSON) и язык запросов Cassandra (CQL) | Yes | Yes | Yes | Yes | Yes |
Замечание
Уникальность свойства id обеспечивается в каждой логической секции. Несколько документов могут иметь одно и то же id значение свойства с разными значениями ключа секции.
Операции с элементами
Элементы Azure Cosmos DB поддерживают следующие операции. Для выполнения операций можно использовать любой из API Azure Cosmos DB.
| Операция | API для NoSQL | API для Cassandra | API для MongoDB | API для Gremlin | API для таблицы |
|---|---|---|---|---|---|
| Вставка, замена, удаление, upsert (обновление или вставка), чтение | Yes | Yes | Yes | Yes | Yes |