아마존 웹 서비스를 다루는 기술 14장 - 3. DynamoDB 테이블 생성하기

저작권 안내
  • 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
  • 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.

확장 가능한 NoSQL 분산 데이터베이스를 제공하는 DynamoDB

이재홍 http://www.pyrasis.com 2014.03.24 ~ 2014.06.30

DynamoDB 테이블 생성하기

앞에서 설계한 DB 구조대로 테이블을 생성하고, 인덱스를 설정해보겠습니다.

AWS 콘솔로 접속한 뒤 메인 화면에서 Database의 DynamoDB를 클릭합니다.

그림 14-4 DynamoDB Predictable and Scalable NoSQL Data Store

오른쪽 위에서 DynamoDB의 리전을 변경할 수 있습니다. 이 책에서는 우리나라에서 가장 가까운 Tokyo 리전을 사용하겠습니다.

그림 14-5 DynamoDB 리전 선택

DynamoDB 메인 페이지에서 Create Table 버튼을 클릭합니다.

그림 14-6 DynamoDB 메인 페이지

전체 유저의 점수를 저장할 테이블 이름과 기본 키를 설정합니다(그림 14-7).

  • Table Name: DynamoDB의 테이블 이름입니다. 리전 안에서 중복될 수 없습니다. 앞서 설계한 대로 UsersLeaderboard를 입력합니다.
  • Primary Key Type: 해시 기본 키와 범위 기본 키 또는 해시 기본 키만 사용하는 옵션입니다. Hash and Range를 선택합니다.
  • Hash Attribute Name: 해시 기본 키의 속성(Attribute) 이름과 데이터 형식입니다. Number를 선택하고 Id를 입력합니다.
  • Range Attribute Name: 범위 기본 키의 속성 이름과 데이터 형식입니다. String을 선택하고 Week를 입력합니다.

설정이 완료되었으면 Continue 버튼을 클릭합니다.

그림 14-7 DynamoDB 테이블 이름 및 기본 키 설정

주간 전체순위를 산출할 글로벌 보조 인덱스를 추가합니다(그림 14-8).

  • Index Type: 보조 인덱스 타입입니다. Global Secondary Index를 선택합니다.
  • Index Hash Key: 인덱스 해시 키의 속성 이름입니다. String을 선택하고 Week를 입력합니다.
  • Index Range Key: 인덱스 범위 키의 속성 이름입니다. Number를 선택하고 TopScore를 입력합니다.
  • Index Name: 생성될 인덱스의 이름입니다. 해시 키와 범위 키의 속성 이름을 입력하면 자동으로 생성됩니다. 기본값 그대로 사용합니다.
  • Projected Attributes: 쿼리를 했을 때 가져올 속성입니다. 기본값 그대로 사용합니다.
    • All Attributes: 아이템의 모든 속성을 가져옵니다.
    • Table and Index Keys: 테이블 인덱스와 보조 인덱스에 키로 설정한 속성만 가져옵니다.
    • Specify Attributes: 특정 속성만 가져옵니다. 가져올 속성 이름을 추가할 수 있고, 보조 인덱스에 키로 설정한 속성은 기본적으로 가져옵니다.

설정이 완료되었으면 Add Index to Table 버튼을 클릭하여 인덱스를 추가합니다.

그림 14-8 글로벌 보조 인덱스 추가

Table Indexes에 글로벌 보조 인덱스가 추가되었습니다.

그림 14-9 글로벌 보조 인덱스 추가 완료

개인 최고기록을 조회할 로컬 보조 인덱스를 추가합니다(그림 14-10).

  • Index Type: 보조 인덱스 타입입니다. Local Secondary Index를 선택합니다.
  • Index Hash Key: 로컬 보조 인덱스는 테이블 인덱스의 해시 기본 키와 같기 때문에 변경할 수 없습니다.
  • Index Range Key: 인덱스 범위 키의 속성 이름입니다. Number를 선택하고 TopScore를 입력합니다.
  • Index Name: 생성될 인덱스의 이름입니다. 범위 키의 속성 이름을 입력하면 자동으로 생성됩니다. 기본값 그대로 사용합니다.
  • Projected Attributes: 쿼리를 했을 때 가져올 속성입니다. 기본값 그대로 사용합니다.
    • All Attributes: 아이템의 모든 속성을 가져옵니다.
    • Table and Index Keys: 테이블 인덱스와 보조 인덱스에 키로 설정한 속성만 가져옵니다.
    • Specify Attributes: 특정 속성만 가져옵니다. 가져올 속성 이름을 추가할 수 있고, 보조 인덱스에 키로 설정한 속성은 기본적으로 가져옵니다.

설정이 완료되었으면 Add Index to Table 버튼을 클릭하여 인덱스를 추가합니다.

그림 14-10 로컬 보조 인덱스 추가

Table Indexes에 로컬 보조 인덱스가 추가되었습니다. 그리고 Continue 버튼을 클릭합니다.

그림 14-11 로컬 보조 인덱스 추가 완료

DynamoDB 처리량 단위인 읽기/쓰기 용량 유닛을 설정합니다(그림 14-12).

  • Help me calculate how much throughput capacity I need to provision: 이 부분을 체크하면 평균 데이터 크기와 초당 읽고 쓴 아이템 수를 입력하여 읽기/쓰기 용량 유닛을 계산할 수 있습니다.
  • Read Capacity Units: 읽기 용량 유닛입니다. 기본값 그대로 사용합니다.
  • Write Capacity Units: 쓰기 용량 유닛입니다. 기본값 그대로 사용합니다.
  • Throughput Capacity Allocation: 생성된 보조 인덱스에도 읽기/쓰기 용량 유닛을 설정할 수 있습니다(각 숫자를 클릭하면 값을 수정할 수 있습니다). 기본값 그대로 사용합니다.

Continue 버튼을 클릭합니다.

그림 14-12 프로비저닝된 처리량 설정

DynamoDB를 사용하다가 설정한 전체 처리량에서 일정 비율 이상을 넘어서면 알람을 발생시킬 수 있습니다(그림 14-13).

  • Use Basic Alarms: 기본 알람 사용 옵션입니다. 이번 실습에서는 체크를 해제하여 사용하지 않습니다.
  • 60분 동안 전체 처리량에서 어느 정도 비율을 넘어서면 알람을 발생시킬지 설정하는 옵션입니다. 95%, 90%, 85%, 80%, 75%를 선택할 수 있으며 80%가 기본값입니다.
  • Send notification to: 이메일 주소를 입력하여 알람의 내용을 받을 수 있습니다. 이 부분은 SNS(Simple Notification Service)와 연계됩니다.

상세한 조건의 알람은 CloudWatch에서 설정할 수 있습니다. 설정이 완료되었으면 Continue 버튼을 클릭합니다.

그림 14-13 DynamoDB 처리량 알람 설정

지금까지 설정한 내용에 이상이 없는지 확인합니다. 이상이 없으면 Create 버튼을 클릭합니다.

그림 14-14 DynamoDB 테이블 생성 설정 확인

DynamoDB 테이블 목록에 UsersLeaderboard 테이블이 생성되었습니다. 처음에는 Status가 CREATING으로 나오며 완전히 생성되기까지 약 10초 정도 소요됩니다.

이제 주간 친구 순위 산출을 위해 FriendsLeaderboard 테이블을 생성합니다. 위쪽 Create Table 버튼을 클릭합니다.

그림 14-15 DynamoDB 테이블 생성 중

유저와 친구의 점수를 저장할 테이블 이름과 기본 키를 설정합니다(그림 14-16).

  • Table Name: DynamoDB의 테이블 이름입니다. 리전 안에서 중복될 수 없습니다. 앞서 설계한 대로 FriendsLeaderboard를 입력합니다.
  • Primary Key Type: 해시 기본 키와 범위 기본 키 또는 해시 기본 키만 사용하는 옵션입니다. Hash and Range를 선택합니다.
  • Hash Attribute Name: 해시 기본 키의 속성(Attribute) 이름과 데이터 형식입니다. Number를 선택하고 Id를 입력합니다.
  • Range Attribute Name: 범위 기본 키의 속성 이름과 데이터 형식입니다. String을 선택하고 FriendIdAndWeek를 입력합니다.

설정이 완료되었으면 Continue 버튼을 클릭합니다.

그림 14-16 DynamoDB 테이블 이름 및 기본 키 설정

주간 친구 순위를 산출할 글로벌 보조 인덱스를 추가합니다(그림 14-17).

  • Index Type: 보조 인덱스 타입입니다. Global Secondary Index를 선택합니다.
  • Index Hash Key: 인덱스 해시 키의 속성 이름입니다. String을 선택하고 FriendIdAndWeek를 입력합니다.
  • Index Range Key: 인덱스 범위 키의 속성 이름입니다. Number를 선택하고 Score를 입력합니다.
  • Index Name: 생성될 인덱스의 이름입니다. 해시 키와 범위 키의 속성 이름을 입력하면 자동으로 생성됩니다. 기본값 그대로 사용합니다.
  • Projected Attributes: 쿼리를 했을 때 가져올 속성입니다. 기본값 그대로 사용합니다.
    • All Attributes: 아이템의 모든 속성을 가져옵니다.
    • Table and Index Keys: 테이블 인덱스와 보조 인덱스에 키로 설정한 속성만 가져옵니다.
    • Specify Attributes: 특정 속성만 가져옵니다. 가져올 속성 이름을 추가할 수 있고, 보조 인덱스에 키로 설정한 속성은 기본적으로 가져옵니다.

설정이 완료되었으면 Add Index to Table 버튼을 클릭하여 인덱스를 추가합니다.

그림 14-17 글로벌 보조 인덱스 설정

Table Indexes에 글로벌 보조 인덱스가 추가되었습니다. 그리고 Continue 버튼을 클릭합니다.

그림 14-18 글로벌 보조 인덱스 추가 완료

DynamoDB 처리량 단위인 읽기/쓰기 용량 유닛을 설정합니다(그림 14-19).

  • Help me calculate how much throughput capacity I need to provision: 이 부분을 체크하면 평균 데이터 크기와 초당 읽고 쓴 아이템 수를 입력하여 읽기/쓰기 용량 유닛을 계산할 수 있습니다.
  • Read Capacity Units: 읽기 용량 유닛입니다. 기본값 그대로 사용합니다.
  • Write Capacity Units: 쓰기 용량 유닛입니다. 기본값 그대로 사용합니다.
  • Throughput Capacity Allocation: 생성된 보조 인덱스에도 읽기/쓰기 용량 유닛을 설정할 수 있습니다(각 숫자를 클릭하면 값을 수정할 수 있습니다). 기본값 그대로 사용합니다.

Continue 버튼을 클릭합니다.

그림 14-19 프로비저닝된 처리량 설정

DynamoDB를 사용하다가 설정한 전체 처리량에서 일정 비율 이상을 넘어서면 알람을 발생시킬 수 있습니다(그림 14-20).

  • Use Basic Alarms: 기본 알람 사용 옵션입니다. 이번 실습에서는 체크를 해제하여 사용하지 않습니다.
  • 60분 동안 전체 처리량에서 어느 정도 비율을 넘어서면 알람을 발생시킬지 설정하는 옵션입니다. 95%, 90%, 85%, 80%, 75%를 선택할 수 있으며 80%가 기본값입니다.
  • Send notification to: 이메일 주소를 입력하여 알람의 내용을 받을 수 있습니다. 이 부분은 SNS(Simple Notification Service)와 연계됩니다. (상세한 조건의 알람은 CloudWatch에서 설정할 수 있습니다.)

설정이 완료되었으면 Continue 버튼을 클릭합니다.

그림 14-20 DynamoDB 처리량 알람 설정

지금까지 설정한 내용에 이상이 없는지 확인합니다. 이상이 없으면 Create 버튼을 클릭합니다.

그림 14-21 DynamoDB 테이블 생성 설정 확인

DynamoDB 테이블 목록에서 FriendsLeaderboard 테이블이 생성되었습니다. 처음에는 Status가 CREATING으로 나오는데 완전히 생성되기까지 약 10초 정도 소요됩니다.

오른편 위쪽에 보면 리프레시 버튼이 있습니다. 이 버튼을 클릭하면 테이블의 상태를 갱신할 수 있습니다.

그림 14-22 DynamoDB 테이블 생성 중


저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.