이 빠른 시작에서는 Rust용 Azure SDK를 사용하여 기본 Azure Cosmos DB for NoSQL 애플리케이션을 배포합니다. NoSQL용 Azure Cosmos DB는 애플리케이션이 비정형 데이터를 클라우드에 저장할 수 있는 스키마 없는 데이터 저장소입니다. 컨테이너의 데이터를 쿼리하고 Rust용 Azure SDK를 사용하여 개별 항목에 대한 일반적인 작업을 수행합니다.
중요함
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 |
이 형식은 계정 내의 데이터베이스를 나타냅니다. |
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
을 사용하여 컨테이너에 항목을 만듭니다. 이 방법은 항목이 이미 존재하는 경우 해당 항목을 효과적으로 바꿔 해당 항목을 "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 데이터를 탐색하는 방법을 참조 하세요.