共用方式為


快速入門:搭配 Azure SDK for Rust 使用適用於 NoSQL 的 Azure Cosmos DB

在本快速入門中,您會使用 Azure SDK for Rust 部署適用於 NoSQL 的基本 Azure Cosmos DB 應用程式。 適用於 NoSQL 的 Azure Cosmos DB 是無架構資料存放區,可讓應用程式將非結構化數據儲存在雲端中。 使用 Azure SDK for Rust 查詢容器中的數據,並針對個別項目執行一般作業。

重要

適用於 Azure Cosmos DB 的 Rust SDK 目前為公開預覽狀態。 此預覽版本沒有服務等級協定,不建議將其用於生產工作負載。 某些功能不受支援,或僅具有限的功能。

如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款

API 參考文件 | 連結庫原始碼 | Crate (Rust) | Azure Developer CLI

必要條件

  • Docker 桌面
  • Rust 1.80 或更新版本

如果您沒有 Azure 帳戶,請在您開始之前先建立 免費帳戶

安裝用戶端程式庫

用戶端程式庫可透過 Rust 以 azure_data_cosmos 壓縮容器格式 (Crate) 提供。

  1. 如果尚未安裝,請使用 azure_data_cosmos 安裝 cargo install 壓縮容器格式 (Crate)。

    cargo add azure_data_cosmos
    
  2. 也請安裝 azure_identity 壓縮容器格式 (Crate) (如果尚未安裝)。

    cargo add azure_identity
    

匯入程式庫

DefaultAzureCredentialCosmosClientPartitionKey,和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,以在容器中建立項目。 此方法會有效地 "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
    }

}

探索您的資料

使用適用於 Azure Cosmos DB 的 Visual Studio Code 擴充功能來探索您的 NoSQL 數據。 您可以執行核心資料庫作業,包括但不限於:

  • 使用剪貼簿或查詢編輯器執行查詢
  • 修改、更新、建立和刪除項目
  • 從其他來源匯入大量數據
  • 管理資料庫和容器

如需詳細資訊,請參閱 如何使用 Visual Studio Code 擴充功能來探索適用於 NoSQL 數據的 Azure Cosmos DB。

後續步驟