Создание экземпляра Cosmos DB
В этом уроке вы узнаете о Azure Cosmos DB и о том, как он упорядочивает данные. Вы узнаете, как использовать Visual Studio Code для создания и обслуживания баз данных и контейнеров Azure Cosmos DB.
Что такое Azure Cosmos DB?
Azure Cosmos DB — это облачная служба, которая реализует базы данных документов. Данные в документе должны соответствовать синтаксису JSON. Документ JSON может содержать свойства, вложенные документы и массивы документов.
{
"id": "08225A9E-F2B3-4FA3-AB08-8C70ADD6C3C2",
"partitionKey": "Bikes",
"name": "Touring-1000 Blue, 50",
"description": "The product called \"Touring-1000 Blue, 50\"",
"price": 2384.0700000000002,
"inventory": [
{ "location": "Dallas", "inventory": 96 },
{ "location": "Seattle", "inventory": 85 }
]
}
В отличие от таблицы в реляционной базе данных документы в Azure Cosmos DB не соответствуют предварительно определенной схеме. Это позволяет базе данных хранить различные документы с различными фигурами и размерами . Например, в одной базе данных можно хранить различные сведения о разных клиентах. Допустим, полная история адресов клиента хранится как массив. Наряду с этим регистрируется дополнительная информация, например кредитоспособность.
Облачная служба Azure Cosmos DB организована как иерархия. В верхней части — это учетная запись Azure Cosmos DB (ресурс). Учетная запись Azure Cosmos DB — это единица безопасности для набора баз данных. Она определяет расположение баз данных, а также сведения о безопасности, необходимые для доступа к ним. Внутри учетной записи можно создать одну или несколько баз данных. В каждой базе данных создается один или несколько контейнеров. В контейнерах хранятся документы.
Контейнеры и ключи секций Cosmos DB
Каждый контейнер организован как ряд секций. Секции примерно соответствуют физическим файлам на диске. Большой раздел может быть представлен отдельным файлом, но несколько небольших разделов можно объединить в один файл. Каждый документ имеет ключ секции, определяющий секцию, к которой он принадлежит. Секционирование позволяет хранить связанные документы вместе и помогает оптимизировать доступ к данным.
В следующем примере показан документ JSON, в который хранятся сведения о продукте в рамках приложения Contoso . Так как эти данные приходят из другой системы, идентификаторы уже настроены для идентификаторов GUID. В собственном контейнере можно принести идентификатор или разрешить Cosmos DB предоставить его. При вставке нового документа необходимо указать идентификатор и ключ секции (при использовании ключей секций).
{
"id": "08225A9E-F2B3-4FA3-AB08-8C70ADD6C3C2",
"categoryName": "Bikes, Touring Bikes",
"sku": "BK-T79U-50",
"name": "Touring-1000 Blue, 50",
"description": "The product called \"Touring-1000 Blue, 50\"",
"price": 2384.0700000000002,
"tags": [
{
"_id": "27B7F8D5-1009-45B8-88F5-41008A0F0393",
"name": "Tag-61"
}
],
"inventory": [
{ "location": "Dallas", "inventory": 96 },
{ "location": "Seattle", "inventory": 85 },
{ "location": "Boston", "inventory": 4 },
{ "location": "Miami", "inventory": 12 },
{ "location": "San Diego", "inventory": 58 }
]
}
Компания Contoso решила использовать имя категории, имя категории в качестве ключа секции, так как это обеспечивает несколько даже распределение документов по контейнеру. Поле ключа секции задается для контейнера при создании контейнера. Для каждого нового документа, вставленного в контейнер, ключ секции включается в документ JSON. В приведенном выше примере минимальные требования к правильно сформированному документу являются уникальным идентификатором и ключом секции иcategoryName
id
. Если вы приносите набор данных из другой системы и хотите сохранить его уникальный идентификатор для подключения к другим системам, вы можете использовать id
поле или разрешить Cosmos DB создать новый уникальный id
идентификатор, и идентификатор может храниться в отдельном имени свойства.
Примечание.
Azure Cosmos DB добавляет в документы собственные поля. Многие из них используются для внутренних целей, и, как правило, их не следует изменять напрямую. Исключение — это идентификатор поля с именем. Azure Cosmos DB использует это поле для идентификации документа в базе данных, и каждый документ должен иметь уникальный идентификатор.
Стоимость пропускной способности Azure Cosmos DB
Azure Cosmos DB использует концепцию единиц запросов в секунду (ЕЗ/с) для управления производительностью и выставлением счетов баз данных. Эта мера позволяет абстрагировать базовые физические ресурсы, которые необходимо подготовить для обеспечения требуемой производительности. При создании базы данных или контейнера вы указываете количество ЕЗ/с, которое нужно выделить. От него будет зависеть размер оплаты.
Стоимость выполнения считывания точки (выборки одного элемента по его идентификатору и значению ключа раздела) для элемента размером 1 КБ составляет 1 единицу запроса (или 1 ЕЗ). Цены на остальные операции с базой данных выражаются в ЕЗ аналогичным образом. Независимо от того, какие API вы используете для взаимодействия с контейнером Azure Cosmos DB, затраты всегда измеряются в ЕЗ. Независимо от типа операции базы данных (запись, чтение или запрос), затраты всегда измеряются в ЕЗ.
Если подготовить 400 ЕЗ/с и создать запрос, который "стоит" 40 ЕЗ, вы сможете подавать 10 таких запросов в секунду. Любой запрос сверх этого количества будет ограничен по частоте, и вам придется его повторить. Если вы используете клиентские драйверы, они поддерживают логику автоматического повтора.
Чтобы обеспечить максимально низкий уровень запросов в секунду, рассмотрите следующее:
Объект | Рекомендации |
---|---|
Размер документа | Более крупный документ в КБ увеличивает ЕЗ. |
Индексирование документов | Производительное индексирование может уменьшить ЕЗ. |
Число свойств документа | Если индексировать все свойства, использование дополнительных свойств приведет к увеличению ЕЗ. Для выборочного индексирования ключевых свойств потребуется меньше единиц запросов. |
Согласованность данных | Уровни строгой и ограниченной согласованности используют больше единиц запросов, чем другие расслабленные уровни согласованности. |
Тип считываемых документов | Точка чтения с помощью идентификатора элемента и ключа секции значительно меньше ЕЗ, чем запросы. |
Шаблоны запросов | Сложность запроса влияет на количество ЕЗ. |
Использование скрипта | Хранимые процедуры, триггеры и определяемые пользователем функции используют ЕЗ в дополнение к запросам внутри этих скриптов. |
Доступ к Cosmos DB
Azure Cosmos DB включает следующие способы подключения к Cosmos DB:
- Visual Studio Code
- Пакеты SDK для JavaScript (и других языков)
- Портал Azure
- Azure CLI
- PowerShell
- REST API
API-интерфейсы Azure Cosmos DB
Azure Cosmos DB поддерживает несколько программных интерфейсов (API). Они максимально похожи на интерфейсы API, используемые для других распространенных баз данных NoSQL. Цель состоит в том, чтобы обеспечить простой путь миграции в Azure Cosmos DB из этих баз данных, не имея необходимости изучать новую парадигму или вносить значительные изменения в свои приложения. В настоящее время поддерживаются следующие интерфейсы API:
- Core (SQL)
- MongoDB
- Cassandra
- Gremlin (API для базы данных общих графов)
- Хранилище таблиц Azure
API Core (SQL) — это вариант языка SQL, используемого большинством систем управления реляционными базами данных. В ней есть ряд ограничений и модификаций, обусловленных тем, что она предназначена для работы с документами без схем, а не таблицами.
Управление Azure Cosmos DB с помощью Visual Studio Code
При использовании Visual Studio Code в качестве среды разработки можно установить расширение баз данных Azure для создания баз данных и приложений Azure Cosmos DB.
Расширение устанавливается из магазина расширений для Visual Studio Code. После установки расширения "Базы данных" используйте обозреватель Azure, SHIFT + ALT + A, чтобы использовать расширение Cosmos DB.
Управление Cosmos DB из обозревателя Azure
Расширение "Базы данных" в обозревателе Azure Visual Studio Code предоставляет графический пользовательский интерфейс, интегрированный с Visual Studio Code. С его помощью можно создавать и удалять учетные записи, базы данных, контейнеры и документы Azure Cosmos DB, а также управлять ими.
Доступ к учетной записи на портале
Расширение также обеспечивает простой доступ ко всем функциям Cosmos DB, предоставляя возможность открывать свою учетную запись в портал Azure. Доступ к этому можно получить при щелчке правой кнопкой мыши учетной записи и нажатии кнопки "Открыть на портале".
Портал предоставляет доступ ко всем конфигурациям для Cosmos DB, а также к Обозреватель данных для баз данных и контейнеров. Используйте Обозреватель данных для вставки, обновления, удаления и запроса данных.