在本快速入門中,您會使用 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) 提供。
如果尚未安裝,請使用
azure_data_cosmos安裝cargo install壓縮容器格式 (Crate)。cargo add azure_data_cosmos也請安裝
azure_identity壓縮容器格式 (Crate) (如果尚未安裝)。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,以在容器中建立項目。 此方法會有效地 "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。