개발하는 두부

[DynamoDB] Java와 DynamoDB 시작하기

by 뚜부니

DynamoDB Logo

 

1. 테이블 생성

다음과 같은 기본키를 가지는 Movies 라는 테이블을 생성한다.

  • year : 파티션키. 숫자에 대한 ScalarAttributeTypeN .
  • title : 정렬키. 문자열에 대한 ScalarAttributeTypeS .

 

2. 테이블에 샘플 데이터 로드

Movies 테이블을 샘플 데이터로 채우는 단계이다.

이 시나리오는 인터넷 영화 데이터베이스의 수처 편의 영화 정보를 담은 샘플 데이터 파일을 사용하여 JSON 형식으로 되어있다. 각 영화마다 year , title , info 라는 JSON 맵이 있으며, yeartitle 은 기본키이다.

영화 데이터 예는 다음과 같다.

2.1 샘플 데이터 파일 다운로드

아래 링크에 접속하여 moviedata.zip 을 다운받으면 된다.

 

단계 2: Java 및 DynamoDB를 사용하여 샘플 데이터 로드 - Amazon DynamoDB

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

2.2 영화 테이블에 샘플 데이터 로드

샘플 데이터를 다운로드 한 후 다음 프로그램을 실행하면 Movies 테이블을 채울 수 있다.

 

3. 새 항목 생성 (Create)

Movies 테이블에 새 항목을 추가는 코드는 다음과 같다.

 

4. 항목 읽기 (Read)

getItem 메서드를 사용하여 Moives 테이블에서 항목을 읽어올 수 있다. yeartitle 라는 기본키를 알고 있는 경우 Moives 를 읽을 수 있다.

 

5. 항목 업데이트 (Update)

updateItem 메서드를 사용해 기존 항목을 수정할 수 있다. 기존 속성의 값을 업데이트하거나 새로운 속성을 추가 또는 제거할 수 있다.

이전에 추가했던 항목의 rating , plot 값을 변경하고, 기존의 info 맵에 actors 라는 새로운 속성을 추가해보려 한다.

바꾸기 전 항목은 다음과 같다.

바꾼 후 항목은 다음과 같다.

항목 업데이트를 위한 코드는 다음과 같다.

 

6. 원자성 카운터 증가시키기

DynamoDB는 원자성 카운터를 지원한다. updateItem 메서드를 사용하면 다른 쓰기 요청을 방해하지 않고 기존 속성의 값을 증가 또는 감소시킬 수 있으며, 모든 쓰기 요청은 수신된 순서대로 적용된다.

프로그램을 실행할 때마다 rating 속성이 1씩 증가하는 코드를 작성하려 한다.

 

7. 항목 업데이트 (조건부)

조건이 true 인 경우 업데이트를 하고, 그렇지 않은 경우 업데이트를 하지 않는다. 조건은 ConditionExpression 을 이용한다.

 

8. 항목 삭제

deleteItem 메서드를 사용해 항목을 삭제할 수 있는데, ConditionExpression 에 조건을 넣고 조건에 만족하지 않는 경우 항목 삭제를 방지하는 옵션을 추가할 수도 있다.

다음 예제는 평점이 5 이하인 항목을 삭제하는 코드이다.

 

9. Query

아래 코드는 다음과 같은 쿼리를 수행한다.

  • 1985년에 개봉한 모든 영화를 조회한다.
  • 1992년에 개봉한 영화 중 이름이 "A" 부터 "L"까지의 알파벳으로 시작하는 모든 영화를 조회한다.

 

10. Scan

scan 메서드는 테이블 전체의 모든 항목을 읽고 테이블의 모든 데이터를 반환한다. filter_expression 을 통해 기준에 대해 일치하는 항목을 반환할 수도 있는데, 필터는 테이블 전체를 스캔한 후에만 적용된다.

다음 예제는 Movies 테이블 전체를 스캔하고 1950년대 이후의 영화를 필터로 추가하여 그에 해당하는 항목만 가져오는 코드이다.

 

11. 테이블 삭제

다음 예제는 Movies 테이블을 삭제하는 코드이다.

 


 

🔗 Reference

👉 Java와 DynamoDB 시작하기
👉 AWS DynamoDB

'DB > DynamoDB' 카테고리의 다른 글

[DynamoDB] 웹 서비스 설정  (0) 2021.01.31
[DynamoDB] 이름 지정 규칙 및 데이터 형식  (0) 2021.01.30
[DynamoDB] DynamoDB API  (0) 2021.01.29
[DynamoDB] 핵심 구성 요소  (0) 2021.01.27

블로그의 정보

개발하는 두부

뚜부니

활동하기