Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом кратком руководстве описано, как развернуть базовое приложение Azure Cosmos DB для NoSQL с помощью пакета SDK Azure для Rust. Azure Cosmos DB для NoSQL — это хранилище данных без схемы, позволяющее приложениям хранить неструктурированные данные в облаке. Запрос данных в контейнерах и выполнение общих операций с отдельными элементами с помощью пакета SDK Azure для Rust.
Внимание
Пакет SDK Rust для Azure Cosmos DB в настоящее время находится в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции не поддерживаются или имеют ограниченную поддержку с ограниченными возможностями.
Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.
Справочная документация по | Crate (Rust) | Azure Developer CLI
Предварительные условия
- Docker Desktop
- Rust 1.80 или более поздней версии
Если у вас нет учетной записи Azure, создайте бесплатную учетную запись, прежде чем начинать работу.
Установка клиентской библиотеки
Клиентская библиотека доступна через Rust в виде azure_data_cosmos
пакета.
Если оно еще не установлено, установите
azure_data_cosmos
с помощьюcargo install
.cargo add azure_data_cosmos
Кроме того, установите
azure_identity
библиотеку, если она еще не установлена.cargo add azure_identity
Импорт библиотек
Импортируйте типы DefaultAzureCredential
, CosmosClient
, PartitionKey
и Query
в код приложения.
use azure_data_cosmos::{CosmosClient, PartitionKey, Query};
use azure_identity::DefaultAzureCredential;
Объектная модель
Имя | Описание |
---|---|
CosmosClient |
Этот тип является основным клиентом и используется для управления метаданными или базами данных на уровне учетной записи. |
DatabaseClient |
Этот тип представляет базу данных в учетной записи. |
ContainerClient |
Этот тип в основном используется для выполнения операций чтения, обновления и удаления в контейнере или элементов, хранящихся в контейнере. |
Примеры кода
- аутентификация клиента;
- Получение базы данных
- Возьмите контейнер
- Создание элемента
- Получить элемент
- Элементы для запроса
Пример кода в шаблоне использует базу данных с именем cosmicworks
и контейнером products
. Контейнер products
содержит такие сведения, как имя, категория, количество, уникальный идентификатор и флаг продажи для каждого продукта. Контейнер использует /category
свойство в качестве ключа логического раздела.
аутентификация клиента;
В этом примере создается новый экземпляр CosmosClient
с использованием CosmosClient::new
и аутентифицируется с помощью экземпляра DefaultAzureCredential
.
let credential = DefaultAzureCredential::new()?;
let client = CosmosClient::new(&endpoint, credential, None)?;
Получение базы данных
Используется client.database
для извлечения существующей базы данных с именем cosmicworks
.
let database = client.database_client("cosmicworks");
Получите контейнер
Получение существующего products
контейнера с помощью database.container
.
let container = database.container_client("products");
Создание элемента
Создайте новый тип со всеми элементами, которые необходимо сериализовать в JSON. В этом примере тип имеет уникальный идентификатор и поля для категории, имени, количества, цены и продажи. Реализуйте признак serde::Serialize
для этого типа, чтобы его можно было сериализовать в JSON.
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
pub struct Item {
pub id: String,
pub category: String,
pub name: String,
pub quantity: i32,
pub price: f64,
pub clearance: bool,
}
Создайте элемент в контейнере с помощью container.upsert_item
. Этот метод «вставка-замена» элемента фактически заменяет элемент, если он уже существует.
let item = Item {
id: "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb".to_string(),
category: "gear-surf-surfboards".to_string(),
name: "Yamba Surfboard".to_string(),
quantity: 12,
price: 850.00,
clearance: false,
};
let partition_key = PartitionKey::from(item.category.clone());
let partition_key = PartitionKey::from(item.category.clone());
container.upsert_item(partition_key, item.clone(), None).await?;
Прочитать элемент
Выполните точечное чтение, используя поля уникального идентификатора (id
) и ключа раздела. Используйте container.ReadItem
, чтобы эффективно извлечь определённый элемент.
let item_id = "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb";
let item_partition_key = "gear-surf-surfboards";
let response = container.read_item(item_partition_key, item_id, None).await?;
let item: Item = response.into_json_body().await?;
Элементы запроса
Выполнение запроса по нескольким элементам в контейнере с помощью container.NewQueryItemsPager
. Найдите все элементы в указанной категории с помощью этого параметризованного запроса:
SELECT * FROM products p WHERE p.category = @category
let item_partition_key = "gear-surf-surfboards";
let query = Query::from("SELECT * FROM c WHERE c.category = @category")
.with_parameter("@category", item_partition_key)?;
let mut pager = container.query_items::<Item>(query, item_partition_key, None)?;
while let Some(page_response) = pager.next().await {
let page = page_response?.into_body().await?;
for item in page.items {
// Do something
}
}
Изучение данных
Используйте расширение Visual Studio Code для Azure Cosmos DB для изучения данных NoSQL. Вы можете выполнять основные операции с базой данных, включая, но не ограничиваясь следующими:
- Выполнение запросов с помощью скрапбука или редактора запросов
- Изменение, обновление, создание и удаление элементов
- Импорт массовых данных из других источников
- Управление базами данных и контейнерами
Дополнительные сведения см. в разделе использование расширения Visual Studio Code для работы с базой данных Azure Cosmos DB для NoSQL.
Связанный контент
- Краткое руководство по .NET
- Краткое руководство по Node.js
- Краткое руководство для Java
- Краткое руководство по Python
- Быстрый старт по Go