빠른 시작: 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
사용할 수 있습니다.
아직 설치되지 않은 경우 .를 사용하여
cargo install
만들기를azure_data_cosmos
설치합니다.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
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 데이터를 탐색하는 방법을 참조 하세요.