DynamoDB를 사용한 데이터 저장 및 검색 - AWS Mobile SDK

AWS Mobile SDK for Xamarin은 이제 AWS SDK for .NET에 포함됩니다. 이 안내서에서는 Xamarin용 모바일 SDK의 아카이브된 버전을 참조합니다.

DynamoDB를 사용한 데이터 저장 및 검색

Amazon DynamoDB는 속도가 빠르고 확장성이 뛰어나며 비용 효과적인 비 관계형 데이터베이스 서비스입니다. DynamoDB는 기존 데이터 스토리지에서의 확장성 제한을 없애면서도 낮은 지연 시간과 예측 가능한 성능을 유지합니다.

다음 자습서에서는 DynamoDB에 객체를 저장하는 앱에 DynamoDB 객체 지속성 모델을 통합하는 방법을 설명합니다.

프로젝트 설정

필수 조건

이 자습서를 시작하기 전에 .NET 및 Xamarin용 AWS Mobile SDK 설정의 지침을 모두 완료해야 합니다.

DynamoDB 테이블 생성

DynamoDB 데이터베이스에서 데이터를 읽고 쓰려면 먼저 테이블을 생성해야 합니다. 테이블을 생성할 때 기본 키를 지정해야 합니다. 기본 키는 해시 속성과 범위 속성(선택 사항) 두 가지로 구성됩니다. 기본 및 범위 속성의 사용 방식에 대한 자세한 내용은 테이블 작업을 참조하세요.

  1. DynamoDB 콘솔로 이동하여 테이블 생성을 클릭합니다. [Create Table] 마법사가 표시됩니다.

  2. 아래와 같이 테이블 이름, 기본 키 유형(해시) 및 해시 속성 이름("ID")을 지정하고 계속을 클릭합니다.

    DynamoDB table creation interface showing table name, primary key type, and hash attribute configuration.
  3. 다음 화면의 편집 필드는 비워 둔 상태에서 계속을 클릭합니다.

  4. 읽기 용량 단위 및 쓰기 용량 단위의 기본값을 수락하고 계속을 클릭합니다.

  5. 다음 화면의 알림 보내기: 텍스트 상자에 이메일 주소를 입력하고 계속을 클릭합니다. 검토 화면이 표시됩니다.

  6. 생성을 클릭합니다. 테이블이 생성되는 데 몇 분 정도 걸릴 수 있습니다.

DynamoDB에 대한 권한 설정

자격 증명 풀이 Amazon DynamoDB에 액세스할 수 있으려면 자격 증명 풀의 역할을 수정해야 합니다.

  1. Identity and Access Management 콘솔로 이동하여 왼쪽 창에서 역할을 클릭합니다. 자격 증명 풀 이름을 검색합니다(자격 증명당 인증된 사용자 및 인증되지 않은 사용자에 대해 하나씩 2개의 역할이 생성됨).

  2. 인증되지 않은 사용자의 역할을 클릭하고(자격 증명 풀 이름에 "unauth"가 추가됨) 역할 정책 생성을 클릭합니다.

  3. 정책 생성기를 클릭하고 선택을 클릭합니다.

  4. 권한 편집 페이지에서 다음 그림과 같이 설정을 입력합니다. DynamoDB 테이블의 Amazon 리소스 이름(ARN)은 arn:aws:dynamodb:us-west-2:123456789012:table/Books와 비슷하며 테이블이 위치한 리전, 소유자의 AWS 계정 번호 및 table/Books 형식의 테이블 이름으로 구성됩니다. ARN 지정에 대한 자세한 내용은 DynamoDB의 Amazon 리소스 이름을 참조하세요.

    Edit Permissions page for Amazon DynamoDB with Allow effect and ARN input field.
  5. 설명문 추가를 클릭하고 다음 단계를 클릭합니다. 마법사가 앞서 생성한 구성을 표시합니다.

  6. Apply Policy(정책 적용)를 클릭합니다.

프로젝트에 DynamoDB용 NuGet 패키지 추가

.NET 및 Xamarin용 AWS Mobile SDK 설정 내 지침의 4단계를 따라 DynamoDB NuGet 패키지를 프로젝트에 추가합니다.

AmazonDynamoDBClient 초기화

초기화된 Amazon Cognito 자격 증명 공급자 및 리전을 AmazonDynamoDB 생성자로 전달한 다음 클라이언트를 DynamoDBContext로 전달합니다.

var client = new AmazonDynamoDBClient(credentials,region); DynamoDBContext context = new DynamoDBContext(client);

클래스 생성

테이블에 행을 기록하려면 행 데이터를 보관할 클래스를 정의합니다. 클래스는 행의 속성 데이터를 보관하는 속성도 포함해야 하며, 콘솔에서 생성된 DynamoDB 테이블에 매핑됩니다. 다음 클래스 선언은 그러한 클래스를 예시합니다.

[DynamoDBTable("Books")] public class Book { [DynamoDBHashKey] // Hash key. public int Id { get; set; } public string Title { get; set; } public string ISBN { get; set; } public int Price { get; set; } public string PageCount { get; set; } public string Author{ get; set; } }

항목 저장

항목을 저장하려면 먼저 객체를 생성합니다.

Book songOfIceAndFire = new Book() { Id=1, Title="Game Of Thrones", ISBN="978-0553593716", Price=4, PageCount="819", Author="GRRM" };

그런 다음 저장합니다.

context.Save(songOfIceAndFire);

행을 업데이트하려면 위와 같이 DDTableRow 클래스의 인스턴스를 수정하고 AWSDynamoObjectMapper.save()를 호출합니다.

항목 검색

기본 키를 사용하여 항목을 검색합니다.

Book retrievedBook = context.Load<Book>(1);

항목 업데이트

항목 업데이트 방법:

Book retrievedBook = context.Load<Book>(1); retrievedBook.ISBN = "978-0553593716"; context.Save(retrievedBook);

항목 삭제

항목 삭제 방법:

Book retrievedBook = context.Load<Book>(1); context.Delete(retrievedBook);

Xamarin 애플리케이션에서 DynamoDB에 액세스하는 방법에 대한 자세한 내용은 Amazon DynamoDB를 참조하세요.