クイック スタート: Azure SDK for Rust で Azure Cosmos DB for NoSQL を使用する
このクイックスタートでは、Azure SDK for Rust を使用して、基本的な Azure Cosmos DB for Table アプリケーションをデプロイします。 Azure Cosmos DB for Table はスキーマレス データ ストアであり、アプリケーションは構造化テーブル データをクラウド内に格納できます。 Azure SDK for Rust を使用して、Azure Cosmos DB リソース内でテーブルと行を作成し、基本的なタスクを実行する方法を説明します。
重要
Azure Cosmos DB 用の Rust SDK は現在、パブリック プレビュー段階です。 このプレビューはサービス レベル アグリーメントなしで提供されており、運用環境ではお勧めしません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。
詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。
API のリファレンス ドキュメント | ライブラリのソース コード | クレート (Rust) | Azure Developer CLI
前提条件
- Docker Desktop
- Rust 1.80 以降
Azure アカウントをお持ちでない場合は、開始する前に無料アカウントを作成してください。
クライアント ライブラリをインストールする
クライアント ライブラリは、azure_data_cosmos
クレートとして Rust 経由で使用できます。
azure_data_cosmos
クレートがまだインストールされていない場合は、cargo install
を使ってインストールします。cargo install azure_data_cosmos
また、
azure_identity
クレートがまだインストールされていない場合はインストールします。cargo install azure_identity
オブジェクト モデル
名前 | 説明 |
---|---|
CosmosClient |
この型は主要なクライアントであり、アカウント全体のメタデータやデータベースを管理するために使われます。 |
DatabaseClient |
この型はアカウント内のデータベースを表します。 |
CollectionClient |
この型は主に、コンテナーまたはコンテナー内に格納されている項目の読み取り、更新、削除操作を実行するために使われます。 |
コード例
テンプレートのサンプル コードでは、cosmicworks
というデータベースと products
というコンテナーを使います。
products
コンテナーには、各製品の名前、カテゴリ、数量、一意識別子、販売フラグなどの詳細が含まれています。 コンテナーでは、論理パーティション キーとして /category
プロパティを使います。
クライアントを認証する
このサンプルでは CosmosClient::new
を使用して CosmosClient
の新しいインスタンスを作成し、DefaultAzureCredential
インスタンスを使用して認証します。
let credential = DefaultAzureCredential::new()?;
let client = CosmosClient::new(&endpoint, credential, None)?;
データベースの取得
client.database
を使って、cosmicworks
という既存のデータベースを取得します。
let database = client.database_client("cosmicworks");
コンテナーの取得
database.container
を使って既存の products
コンテナーを取得します。
let container = database.container_client("products");
項目を作成する
JSON にシリアル化するすべてのメンバーを含む新たな型をビルドします。 この例では、型には一意識別子と、カテゴリ、名前、数量、価格、セールのフィールドがあります。 JSON にシリアル化できるように、この型に serde::Serialize
トレイトを派生させます。
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
}
}
データを調査する
Azure Cosmos DB 用の Visual Studio Code 拡張機能を使用して、NoSQL データを探します。 次のようなコア データベース操作を実行できます。ただし、これらに限定されません:
- スクラップブックまたはクエリ エディターを使用したクエリの実行
- 項目の変更、更新、作成、削除
- 他のソースからのデータの一括インポート
- データベースとコンテナーの管理
詳細については、Visual Studio Code 拡張機能を使用して Azure Cosmos DB for NoSQL データを探す方法に関する記事を参照してください。