Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом кратком руководстве описано, как развернуть базовое приложение 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;
Объектная модель
| Имя | Description |
|---|---|
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
- Быстрый старт