다음을 통해 공유


빠른 시작: Azure SDK for Rust와 함께 NoSQL용 Azure Cosmos DB 사용

이 빠른 시작에서는 Rust용 Azure SDK를 사용하여 기본 Azure Cosmos DB for Table 애플리케이션을 배포합니다. Azure Cosmos DB for Table은 애플리케이션이 구조화된 테이블 데이터를 클라우드에 저장할 수 있는 스키마 없는 데이터 저장소입니다. Rust용 Azure SDK를 사용하여 테이블, 행을 만들고 Azure Cosmos DB 리소스 내에서 기본 작업을 수행하는 방법을 알아봅니다.

Important

Azure Cosmos DB용 Rust SDK는 현재 공개 미리 보기로 제공됩니다. 이 미리 보기는 서비스 수준 계약 없이 제공되며, 프로덕션 워크로드에는 권장되지 않습니다. 특정 기능이 지원되지 않거나 기능이 제한될 수 있습니다.

자세한 내용은 Microsoft Azure Preview에 대한 추가 사용 약관을 참조하세요.

API 참조 설명서 | 라이브러리 소스 코드 | 크레이트(Rust) | Azure Developer CLI

필수 조건

  • Docker Desktop
  • Rust 1.80 이상

Azure 계정이 없는 경우 시작하기 전에 체험 계정을 만듭니다.

클라이언트 라이브러리 설치

클라이언트 라이브러리는 Rust를 통해 상자로 azure_data_cosmos 사용할 수 있습니다.

  1. 아직 설치되지 않은 경우 .를 사용하여 cargo install만들기를 azure_data_cosmos 설치합니다.

    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 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을 사용하여 컨테이너에 항목을 만듭니다. 이 방법은 항목이 이미 존재하는 경우 해당 항목을 효과적으로 바꿔 해당 항목을 "upsert"합니다.

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 데이터를 탐색하는 방법을 참조 하세요.

다음 단계