.NET 객체 지속성 모델 및 DynamoDB로 작업
AWS SDK for .NET은 객체 지속성 모델을 제공하므로 이것으로 클라이언트 측 클래스를 Amazon DynamoDB 테이블에 매핑할 수 있습니다. 그러면 각 객체 인스턴스도 해당 테이블 항목으로 매핑됩니다. 클라이언트 측 객체를 테이블에 저장하기 위해 객체 지속성 모델에서는 DynamoDB에 대한 진입점인 DynamoDBContext
클래스를 제공합니다. 이 클래스는 DynamoDB로 연결하는 역할을 하기 때문에 테이블에 액세스하여 다양한 CRUD 작업이 가능할 뿐만 아니라 쿼리를 실행할 수 있습니다.
객체 지속성 모델은 속성 세트를 제공하여 클라이언트 측 클래스를 테이블로 매핑할 수 있으며, 속성/필드를 테이블 속성으로 매핑할 수 있습니다.
참고
객체 지속성 모델은 테이블을 생성, 업데이트 또는 삭제할 수 있는 API를 제공하지 않으며 데이터 작업만 제공합니다. 테이블 생성, 업데이트 및 삭제에는 AWS SDK for .NET 하위 수준 API만 사용할 수 있습니다.
다음 예제에서는 객체 지속성 모델이 작동하는 방법을 보여줍니다. ProductCatalog
테이블로 시작합니다. Id
를 기본 키로 갖고 있습니다.
ProductCatalog(Id, ...)
Book
클래스를 Title
, ISBN
및 Authors
속성과 함께 갖고 있는 경우 다음 C# 코드 예제와 같이 객체 지속성 모델로 정의된 속성을 추가하여 Book
클래스를 ProductCatalog
테이블에 매핑할 수 있습니다.
예
[DynamoDBTable("ProductCatalog")] public class Book { [DynamoDBHashKey] public int Id { get; set; } public string Title { get; set; } public int ISBN { get; set; } [DynamoDBProperty("Authors")] public List<string> BookAuthors { get; set; } [DynamoDBIgnore] public string CoverPage { get; set; } }
앞의 예제에서는 DynamoDBTable
속성이 Book
클래스를 ProductCatalog
테이블에 매핑합니다.
객체 지속성 모델은 클래스 속성 및 테이블 속성 간 명시적 매핑과 기본 매핑 모두를 지원합니다.
-
명시적 매핑 - 속성을 기본 키에 매핑하려면
DynamoDBHashKey
및DynamoDBRangeKey
객체 지속성 모델 속성을 사용해야 합니다. 또한 기본이 아닌 키 속성의 경우 클래스의 속성 이름과 이를 매핑하려는 해당 테이블 속성이 같지 않다면DynamoDBProperty
속성을 명시적으로 추가하여 매핑을 정의해야 합니다.앞의 예제에서는
Id
속성이 같은 이름의 기본 키로 매핑되고BookAuthors
속성이ProductCatalog
테이블의Authors
속성으로 매핑됩니다. -
기본 매핑 - 기본적으로 객체 지속성 모델은 클래스 속성을 같은 이름의 테이블 속성으로 매핑합니다.
앞의 예제에서는
Title
및ISBN
속성이ProductCatalog
테이블에 있는 같은 이름의 속성으로 매핑됩니다.
각 클래스 속성을 전부 하나씩 매핑할 필요는 없습니다. DynamoDBIgnore
속성을 추가하여 이러한 속성을 확인할 수 있습니다. Book
인스턴스를 테이블에 저장하더라도 DynamoDBContext
에는 CoverPage
속성이 포함되지 않습니다. 또한 이러한 책 인스턴스를 가져와도 이 속성은 반환되지 않습니다.
int 및 문자열과 같은 .NET 기본 유형의 속성을 매핑할 수 있습니다. 적절한 변환기를 사용하여 임의 데이터를 DynamoDB 형식 중 하나로 매핑만 한다면 어떤 임의 데이터 형식도 매핑할 수 있습니다. 임의 유형 매핑에 대한 자세한 내용은 AWS SDK for .NET 객체 지속성 모델을 사용하여 DynamoDB에서 임의 데이터 매핑 단원을 참조하세요.
객체 지속성 모델은 낙관적 잠금을 지원합니다. 따라서 업데이트 작업 동안 업데이트하려는 항목의 최신 복사본을 가질 수 있습니다. 자세한 내용은 DynamoDB 및 AWS SDK for .NET 객체 지속성 모델을 사용하여 낙관적 잠금 수행 단원을 참조하십시오.
자세한 내용은 아래 주제를 참조하십시오.
주제
지원되는 데이터 유형
객체 지속성 모델은 기본 .NET 데이터 유형 세트와 컬렉션, 그리고 임의 데이터 유형을 지원합니다. 모델이 지원하는 기본 데이터 유형은 다음과 같습니다.
-
bool
-
byte
-
char
-
DateTime
-
decimal
-
double
-
float
-
Int16
-
Int32
-
Int64
-
SByte
-
string
-
UInt16
-
UInt32
-
UInt64
객체 지속성 모델은 .NET 컬렉션 형식도 지원합니다. DynamoDBContext
는 구체적인 컬렉션 형식과 단순한 POCO(Plain Old CLR Object)를 변환할 수 있습니다.
다음 표에서는 앞서 나온 .NET 형식을 DynamoDB 형식으로 매핑하는 것을 요약하여 보여 줍니다.
.NET 기본 유형 | DynamoDB 형식 |
---|---|
모두 숫자 형식 |
|
모든 문자열 형식 |
|
MemoryStream, byte[] |
|
bool | N (숫자 형식). 0은 false를 나타내고 1은 true를 나타냅니다. |
컬렉션 유형 | BS (이진수 세트) 형식, SS (문자열 세트) 형식, 그리고 NS (숫자 세트) 형식 |
DateTime | S (문자열 형식) DateTime 값은 ISO-8601 형식의 문자열로 저장됩니다. |
객체 지속성 모델은 임의 데이터 형식 또한 지원합니다. 하지만 여러 형식을 DynamoDB 형식으로 매핑하려면 변환기 코드를 입력해야 합니다.
참고
-
빈 이진수 값이 지원됩니다.
-
빈 문자열 값 읽기가 지원됩니다. DynamoDB에 쓰는 동안 문자열 집합 형식의 속성 값에서 빈 문자열 속성 값이 지원됩니다. 문자열 형식의 빈 문자열 속성 값과 목록 또는 맵 형식에 포함된 빈 문자열 값은 쓰기 요청에서 삭제됩니다.