빠른 시작: .NET용 Azure Cosmos DB for Table 라이브러리
적용 대상: 테이블
이 빠른 시작에서는 .NET 애플리케이션에서 Azure Cosmos DB for Table을 시작하는 방법을 보여 줍니다. Azure Cosmos DB for Table은 애플리케이션이 구조적 테이블 데이터를 클라우드에 저장할 수 있도록 하는 스키마 없는 데이터 저장소입니다. .NET용 Azure SDK를 사용하여 테이블, 행을 만들고 Azure Cosmos DB 리소스 내에서 기본 작업을 수행하는 방법을 알아봅니다.
API 참조 설명서 | 라이브러리 소스 코드 | 패키지(NuGet) | Azure 개발자 CLI
필수 조건
- 활성 구독이 있는 Azure 계정. 체험 계정을 만듭니다.
- Azure Developer CLI
- Docker Desktop
- .NET 9.0
프로젝트 초기화
Azure Developer CLI(azd
)를 사용하여 Table용 Azure Cosmos DB 계정을 만들고 컨테이너화된 샘플 애플리케이션을 배포합니다. 샘플 애플리케이션은 클라이언트 라이브러리를 사용하여 샘플 데이터를 관리, 만들기, 읽기 및 쿼리합니다.
빈 디렉터리에서 터미널을 엽니다.
아직 인증되지 않은 경우 .
azd auth login
원하는 Azure 자격 증명을 사용하여 CLI에 인증하려면 도구에 지정된 단계를 따릅니다.azd auth login
프로젝트를 초기화하려면
azd init
를 사용합니다.azd init --template cosmos-db-table-dotnet-quickstart
초기화 중에 고유한 환경 이름을 구성합니다.
azd up
을 사용하여 Azure Cosmos DB 계정을 배포합니다. Bicep 템플릿은 샘플 웹 애플리케이션도 배포합니다.azd up
프로비전 프로세스 중에 구독, 원하는 위치 및 대상 리소스 그룹을 선택합니다. 프로비저닝 프로세스가 완료될 때까지 기다립니다. 이 과정은 약 5분 정도 소요됩니다.
Azure 리소스 프로비전이 완료되면 실행 중인 웹 애플리케이션에 대한 URL이 출력에 포함됩니다.
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: <https://[container-app-sub-domain].azurecontainerapps.io> SUCCESS: Your application was provisioned and deployed to Azure in 5 minutes 0 seconds.
콘솔의 URL을 사용하여 브라우저에서 웹 애플리케이션으로 이동합니다. 실행 중인 앱의 출력을 관찰합니다.
클라이언트 라이브러리 설치
클라이언트 라이브러리는 NuGet을 통해 Azure.Data.Tables
패키지로 사용할 수 있습니다.
터미널을 열고
/src/web
폴더로 이동합니다.cd ./src/web
아직 설치되지 않은 경우
dotnet add package
을 사용하여Azure.Data.Tables
패키지를 설치합니다.dotnet add package Azure.Data.Tables
src/web/Microsoft.Samples.Cosmos.Table.Quickstart.Web.csproj 파일을 열고 검토하여 항목이 있는지
Azure.Data.Tables
확인합니다.
개체 모델
이름 | 설명 |
---|---|
TableServiceClient | 이 클래스는 기본 클라이언트 클래스이며 계정 전체의 메타데이터 또는 데이터베이스를 관리하는 데 사용됩니다. |
TableClient | 이 클래스는 계정 내의 테이블에 대한 클라이언트를 나타냅니다. |
코드 예제
템플릿의 샘플 코드는 .라는 cosmicworks-products
테이블을 사용합니다. 테이블에는 cosmicworks-products
이름, 범주, 수량, 가격, 고유 식별자 및 각 제품에 대한 판매 플래그와 같은 세부 정보가 포함되어 있습니다. 컨테이너는 고유 식별자*를 행 키로 사용하고 범주를 파티션 키로 사용합니다.
클라이언트 인증
이 샘플에서는 클래스의 새 인스턴스를 TableServiceClient
만듭니다.
TableServiceClient serviceClient = new(
endpoint: new Uri("<azure-cosmos-db-table-account-endpoint>"),
credential
);
테이블 가져오기
이 샘플에서는 클래스의 메서드를 TableClient
GetTableClient
사용하여 클래스의 인스턴스를 TableServiceClient
만듭니다.
TableClient client = serviceClient.GetTableClient(
tableName: "<azure-cosmos-db-table-name>"
);
항목 만들기
테이블에서 새 항목을 만드는 가장 쉬운 방법은 ITableEntity
인터페이스를 구현하는 클래스를 만드는 것입니다. 그런 다음, 사용자 고유의 속성을 클래스에 추가하여 해당 테이블 행의 데이터 열을 채울 수 있습니다.
public record Product : ITableEntity
{
public string RowKey { get; set; } = $"{Guid.NewGuid()}";
public string PartitionKey { get; set; } = String.Empty;
public string Name { get; set; } = String.Empty;
public int Quantity { get; set; } = 0;
public decimal Price { get; set; } = 0.0m;
public bool Clearance { get; set; } = false;
public ETag ETag { get; set; } = ETag.All;
public DateTimeOffset? Timestamp { get; set; }
};
TableClient.AddEntityAsync<T>
를 호출하여 Product
클래스를 사용하는 컬렉션에 항목을 만듭니다.
Product entity = new()
{
RowKey = "68719518391",
PartitionKey = "gear-surf-surfboards",
Name = "Surfboard",
Quantity = 10,
Price = 300.00m,
Clearance = true
};
Response response = await client.UpsertEntityAsync<Product>(
entity: entity,
mode: TableUpdateMode.Replace
);
항목 가져오기
TableClient.GetEntityAsync<T>
메서드를 사용하여 테이블에서 특정 항목을 검색할 수 있습니다. 해당 항목의 빠른 지점 읽기를 수행하기 위해 올바른 행을 식별하는 매개 변수로 partitionKey
및 rowKey
를 제공합니다.
Response<Product> response = await client.GetEntityAsync<Product>(
rowKey: "68719518391",
partitionKey: "gear-surf-surfboards"
);
쿼리 항목
항목이 삽입되면 TableClient.Query<T>
메서드를 사용하여 특정 필터와 일치하는 모든 항목을 가져오는 쿼리를 실행할 수도 있습니다. 이 예제에서는 Linq 구문을 사용하여 범주별로 제품을 필터링합니다. 이는 Product
클래스와 같은 형식의 ITableEntity
모델을 사용하는 경우의 이점입니다.
string category = "gear-surf-surfboards";
AsyncPageable<Product> results = client.QueryAsync<Product>(
product => product.PartitionKey == category
);
비동기 루프를 사용하여 결과의 각 페이지를 반복하여 쿼리의 페이지를 매긴 결과를 구문 분석합니다.
List<Product> entities = new();
await foreach (Product product in results)
{
entities.Add(product);
}
리소스 정리
샘플 애플리케이션이나 리소스가 더 이상 필요하지 않으면 해당 배포와 모든 리소스를 제거합니다.
azd down