Краткое руководство. Использование Azure Cosmos DB для NoSQL с пакетом SDK Azure для Rust
В этом кратком руководстве описано, как развернуть базовое приложение Azure Cosmos DB для таблицы с помощью пакета SDK Azure для Rust. Azure Cosmos DB для таблицы — это хранилище данных без схемы, позволяющее приложениям хранить структурированные данные таблицы в облаке. Вы узнаете, как создавать таблицы, строки и выполнять основные задачи в ресурсе Azure Cosmos DB с помощью пакета SDK Azure для Rust.
Внимание
Пакет SDK Rust для Azure Cosmos DB в настоящее время находится в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены.
Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.
Справочная документация по | API: исходный код | Crate (Rust) | Azure Developer CLI
Необходимые компоненты
- Docker Desktop
- Rust 1.80 или более поздней версии
Если у вас нет учетной записи Azure, создайте бесплатную учетную запись, прежде чем начинать работу.
Установка клиентской библиотеки
Клиентская библиотека доступна через Rust, так как azure_data_cosmos
контейнер.
Если он еще не установлен, установите
azure_data_cosmos
создание с помощьюcargo install
.cargo install azure_data_cosmos
Кроме того, установите
azure_identity
ящик, если он еще не установлен.cargo install azure_identity
Объектная модель
Имя | Описание |
---|---|
CosmosClient |
Этот тип является основным клиентом и используется для управления метаданными или базами данных на уровне учетной записи. |
DatabaseClient |
Этот тип представляет базу данных в учетной записи. |
CollectionClient |
Этот тип в основном используется для выполнения операций чтения, обновления и удаления в контейнере или элементов, хранящихся в контейнере. |
Примеры кода
- аутентификация клиента;
- Получение базы данных
- Получение контейнера
- Создание элемента
- Получение элемента
- Запрос элементов
Пример кода в шаблоне использует базу данных с именем 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
. Этот метод "upserts" элемент фактически заменяет элемент, если он уже существует.
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
- Краткое руководство по переходу