Azure Cosmos DB용 Microsoft .NET SDK v3 살펴보기
이 단원에서는 Azure Cosmos DB .NET SDK v3 for API for NoSQL에 중점을 둡니다. (Microsoft.Azure.Cosmos NuGet package.) 이전 버전의 .NET SDK에 익숙한 경우 컬렉션과 문서라는 용어가 친숙할 수 있습니다.
azure-cosmos-dotnet-v3 GitHub 리포지토리에는 최신 .NET 샘플 솔루션이 포함되어 있습니다. 이러한 솔루션을 사용하여 Azure Cosmos DB 리소스에서 CRUD(만들기, 읽기, 업데이트 및 삭제) 및 기타 일반적인 작업을 수행합니다.
Azure Cosmos DB는 여러 API 모델을 지원하므로 .NET SDK 버전 3은 컨테이너 및 항목이라는 일반 용어를 사용합니다. 컨테이너는 컬렉션, 그래프 또는 테이블이 될 수 있습니다. 항목은 문서, 가장자리/꼭짓점 또는 행이 될 수 있고, 컨테이너 내부의 콘텐츠입니다.
다음은 숙지해야 할 주요 작업 중 일부를 보여 주는 예입니다. 더 많은 예제를 확인하려면 앞에 표시된 GitHub 링크를 방문하세요. 아래 예제는 모두 메서드의 비동기 버전을 사용합니다.
CosmosClient
연결 문자열을 통해 새 CosmosClient
를 만듭니다. CosmosClient
는 스레드로부터 안전합니다. 효율적인 연결 관리 및 성능을 가능하게 하는 애플리케이션 수명당 CosmosClient
의 단일 인스턴스를 유지하는 것이 좋습니다.
CosmosClient client = new CosmosClient(endpoint, key);
데이터베이스 예제
데이터베이스 만들기
동일한 이름의 데이터베이스가 이미 있는 경우 CosmosClient.CreateDatabaseAsync
메서드는 예외를 throw합니다.
// New instance of Database class referencing the server-side database
Database database1 = await client.CreateDatabaseAsync(
id: "adventureworks-1"
);
CosmosClient.CreateDatabaseIfNotExistsAsync
는 데이터베이스가 있는지 확인하고, 데이터베이스가 없는 경우 만듭니다. 데이터베이스 id
만 사용하여 기존 데이터베이스가 있는지 확인합니다.
// New instance of Database class referencing the server-side database
Database database2 = await client.CreateDatabaseIfNotExistsAsync(
id: "adventureworks-2"
);
ID로 데이터베이스 읽기
Azure Cosmos DB 서비스에서 비동기 작업으로 데이터베이스를 읽습니다.
DatabaseResponse readResponse = await database.ReadAsync();
데이터베이스 삭제
데이터베이스를 비동기 작업으로 삭제합니다.
await database.DeleteAsync();
컨테이너 예제
컨테이너 만들기
Database.CreateContainerIfNotExistsAsync
메서드는 컨테이너가 있는지 확인하고, 컨테이너가 없는 경우 만듭니다. 컨테이너 id
만 사용하여 기존 컨테이너가 있는지 확인합니다.
// Set throughput to the minimum value of 400 RU/s
ContainerResponse simpleContainer = await database.CreateContainerIfNotExistsAsync(
id: containerId,
partitionKeyPath: partitionKey,
throughput: 400);
ID로 컨테이너 가져오기
Container container = database.GetContainer(containerId);
ContainerProperties containerProperties = await container.ReadContainerAsync();
컨테이너 삭제
컨테이너를 비동기 작업으로 삭제합니다.
await database.GetContainer(containerId).DeleteContainerAsync();
항목 예제
항목 만들기
Container.CreateItemAsync
메서드를 사용하여 항목을 만듭니다. 메서드에는 id
속성과 partitionKey
를 포함해야 하는 JSON 직렬화 가능 개체가 필요합니다.
ItemResponse<SalesOrder> response = await container.CreateItemAsync(salesOrder, new PartitionKey(salesOrder.AccountNumber));
항목 읽기
Container.ReadItemAsync
메서드를 사용하여 항목을 읽습니다. 메서드에는 id
속성과 partitionKey
와 함께 항목을 직렬화하는 형식이 필요합니다.
string id = "[id]";
string accountNumber = "[partition-key]";
ItemResponse<SalesOrder> response = await container.ReadItemAsync(id, new PartitionKey(accountNumber));
항목 쿼리
Container.GetItemQueryIterator
메서드는 매개 변수가 있는 값이 있는 SQL 문을 사용하여 Azure Cosmos 데이터베이스의 컨테이너 아래에 있는 항목에 대한 쿼리를 만듭니다. FeedIterator
가 반환됩니다.
QueryDefinition query = new QueryDefinition(
"select * from sales s where s.AccountNumber = @AccountInput ")
.WithParameter("@AccountInput", "Account1");
FeedIterator<SalesOrder> resultSet = container.GetItemQueryIterator<SalesOrder>(
query,
requestOptions: new QueryRequestOptions()
{
PartitionKey = new PartitionKey("Account1"),
MaxItemCount = 1
});
기타 리소스
azure-cosmos-dotnet-v3 GitHub 리포지토리에는 Azure Cosmos DB 리소스에 대한 CRUD 및 일반적인 다른 작업을 수행하는 최신 .NET 솔루션 샘플이 포함되어 있습니다.
GitHub 리포지토리의 특정 예제에 대한 직접 링크는 SQL API에 대한 Azure Cosmos DB.NET V3 SDK(Microsoft.Azure.Cosmos) 예제 문서를 참조하세요.