次の方法で共有


クイック スタート: 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 経由で使用できます。

  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::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 データを探す方法に関する記事を参照してください。

次のステップ