Поделиться через


Краткое руководство. Использование 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 контейнер.

  1. Если он еще не установлен, установите azure_data_cosmos создание с помощью cargo install.

    cargo install azure_data_cosmos
    
  2. Кроме того, установите 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.

Следующий шаг