액세스 패턴 - AWS 규범적 지침

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

액세스 패턴

이 가이드의 앞부분에서 설명한 것처럼 DynamoDB 테이블에서 생성, 읽기, 업데이트 및 삭제 (CRUD) 작업을 수행하기 위한 세 가지 액세스 패턴, 즉 객체 지속성 인터페이스, 문서 인터페이스, 하위 수준 API 인터페이스 중에서 선택할 수 있습니다. 다음 섹션에서는 각 인터페이스에 대해 설명합니다. SQL Server에서 DynamoDB로의 사용 사례에서는 단순성, 가독성 및 유지 관리 용이성을 위해 객체 지속성 인터페이스를 선택했습니다.

객체 지속성 인터페이스

객체 지속성 인터페이스는 엔티티 프레임워크 엔티티와 유사한.NET 모델을 사용하여 DynamoDB 항목에 대한 CRUD 작업을 수행할 수 있는 상위 수준의 추상화된 액세스 메커니즘을 제공합니다. 인터페이스 속성은 DynamoDB 항목 속성에 매핑됩니다. AWSSDK for .NET SDK는 이 모델의 사용자 지정 속성 특성을 지원하여 개별 속성의 직렬화 및 역직렬화를 사용자 지정하고, null 값을 처리하고, 형식 변환을 지원합니다.

애플리케이션에서 사용되는 샘플 모델:

[DynamoDBTable(“AppLibrary")] public class ProdApp { [DynamoDBHashKey] public string PK { get; set; } //Partition key [DynamoDBRangeKey] public string SK { get; set; } //Sort key [DynamoDBGlobalSecondaryIndexRangeKey(“Version-index")] [DynamoDBProperty] public int Version { get; set; } . . . [DynamoDBProperty] public Int64 TTL { get; set; } }

항목 액세스:

var _dynamoDbClient = new AmazonDynamoDBClient(AWSCredentials); var _context = new DynamoDBContext(_dynamoDbClient); public ProdApp GetProdAppById (Guid id, int version) { var pk = $”{id}-{version}”; return _context.Load<ProdApp>(pk, ItemType.ProductionApplication); }

자세한 내용은 DynamoDB 설명서의 객체 지속성 인터페이스를 참조하십시오.

문서 인터페이스

문서 인터페이스 모델은 DynamoDB 항목에 대한 문서 기반 액세스 (.NET과 유사) 를 제공합니다.XMLDocument 이 모델은 상위 수준의 프로그래밍 인터페이스를 제공하지만 호출을 하위 수준 API로 변환하여 작업을 수행합니다.

var _dynamoDbClient = new AmazonDynamoDBClient(AWSCredentials); var _table = Table.LoadTable(_dynamoDbClient, “AppLibrary”); public ProdApp GetProdAppById (Guid id, int version) { var pk = $”{id}-{version}”; var doc = _table.GetItem(pk, ItemType.ProductionApplication); var app = new ProdApp { PK = doc[“PK”], SK = doc[“SK”], Version = doc[“Version”], . . . }; return app; }

자세한 내용은 DynamoDB 설명서의 문서 인터페이스를 참조하십시오.

하위 수준 API

DynamoDB용AWS SDK는 또한PutItem,GetItemUpdateItem, 및DeleteItem 메서드를 사용하여 CRUD 작업을 수행할 수 있는 저수준 API 액세스를 제공합니다. 이 모델은 속성 매핑 및 유형 변환을 완벽하게 제어합니다. 이 호출에 대한 응답은 키-값 페어 사전입니다.

[DynamoDBTable(“AppLibrary")] public class ProdApp { [DynamoDBHashKey] public string PK { get; set; } //Partition key [DynamoDBRangeKey] public string SK { get; set; } //Sort key [DynamoDBGlobalSecondaryIndexRangeKey(“Version-index")] [DynamoDBProperty] public int Version { get; set; } . . . [DynamoDBProperty] public ProdConfig Config { get; set; } } var _dynamoDbClient = new AmazonDynamoDBClient(AWSCredentials); public ProdApp GetProdAppById (Guid id, int version) { var pk = $”{id}-{version}”; var resp = _dynamoDbClient.Query(queryRequest); var item = resp.Items[0]; var app = new ProdApp { PK = item[“PK”].S, SK = item[“SK”].S, Version = Convert.ToInt32(item[“Version”].S), . . . Config = new ProdConfig { Name = item[“Config”].M[“Name”].S, Id = Conver.ToInt32(item[“Config”].M[“Id”].S) } }; return app; }

자세한 내용은 DynamoDB 설명서의 하위 수준 인터페이스를 참조하십시오.