Azure Cosmos DB용 Microsoft .NET SDK v3 살펴보기

완료됨

단원에서는 Azure Cosmos DB .NET SDK v3 for API for NoSQL에 중점을 둡니다. (Microsoft.Azure.Cosmos NuGet 패키지.) 이전 버전의 .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.CreateDatabaseIfNotExistsAsync는 데이터베이스가 있는지 확인하고, 데이터베이스가 없는 경우 만듭니다. 데이터베이스 id만 사용하여 기존 데이터베이스가 있는지 확인합니다.

// An object containing relevant information about the response
DatabaseResponse databaseResponse = await client.CreateDatabaseIfNotExistsAsync(databaseId, 10000);

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
    });

기타 리소스