14C. DynamoDB 테이블 생성하기
14C. DynamoDB 테이블 생성하기 관련
앞에서 설계한 DB 구조대로 테이블을 생성하고, 인덱스를 설정해보겠습니다.
오른쪽 위에서 DynamoDB의 리전을 변경할 수 있습니다.
전체 유저의 점수를 저장할 테이블 이름과 기본 키를 설정합니다
- Table Name: DynamoDB의 테이블 이름입니다. 리전 안에서 중복될 수 없습니다. 앞서 설계한 대로 UsersLeaderboard를 입력합니다.
- Primary Key Type: 해시 기본 키와 범위 기본 키 또는 해시 기본 키만 사용하는 옵션입니다. Hash and Range를 선택합니다.
- Hash Attribute Name: 해시 기본 키의 속성(Attribute) 이름과 데이터 형식입니다. Number를 선택하고 Id를 입력합니다.
- Range Attribute Name: 범위 기본 키의 속성 이름과 데이터 형식입니다. String을 선택하고 Week를 입력합니다.
주간 전체순위를 산출할 글로벌 보조 인덱스를 추가합니다.
- 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: 특정 속성만 가져옵니다. 가져올 속성 이름을 추가할 수 있고, 보조 인덱스에 키로 설정한 속성은 기본적으로 가져옵니다.
개인 최고기록을 조회할 로컬 보조 인덱스를 추가합니다.
- 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: 특정 속성만 가져옵니다. 가져올 속성 이름을 추가할 수 있고, 보조 인덱스에 키로 설정한 속성은 기본적으로 가져옵니다.
DynamoDB 처리량 단위인 읽기/쓰기 용량 유닛을 설정합니다.
- Help me calculate how much throughput capacity I need to provision: 이 부분을 체크하면 평균 데이터 크기와 초당 읽고 쓴 아이템 수를 입력하여 읽기/쓰기 용량 유닛을 계산할 수 있습니다.
- Read Capacity Units: 읽기 용량 유닛입니다. 기본값 그대로 사용합니다.
- Write Capacity Units: 쓰기 용량 유닛입니다. 기본값 그대로 사용합니다.
- Throughput Capacity Allocation: 생성된 보조 인덱스에도 읽기/쓰기 용량 유닛을 설정할 수 있습니다(각 숫자를 클릭하면 값을 수정할 수 있습니다). 기본값 그대로 사용합니다.
DynamoDB를 사용하다가 설정한 전체 처리량에서 일정 비율 이상을 넘어서면 알람을 발생시킬 수 있습니다(그림 14-13).
- Use Basic Alarms: 기본 알람 사용 옵션입니다. 이번 실습에서는 체크를 해제하여 사용하지 않습니다.
- 60분 동안 전체 처리량에서 어느 정도 비율을 넘어서면 알람을 발생시킬지 설정하는 옵션입니다. 95%, 90%, 85%, 80%, 75%를 선택할 수 있으며 80%가 기본값입니다.
- Send notification to: 이메일 주소를 입력하여 알람의 내용을 받을 수 있습니다. 이 부분은 SNS(Simple Notification Service)와 연계됩니다.
상세한 조건의 알람은 CloudWatch에서 설정할 수 있습니다.
지금까지 설정한 내용에 이상이 없는지 확인합니다.
DynamoDB 테이블 목록에 UsersLeaderboard
테이블이 생성되었습니다. 처음에는 Status가 CREATING으로 나오며 완전히 생성되기까지 약 10초 정도 소요됩니다.
이제 주간 친구 순위 산출을 위해 FriendsLeaderboard
테이블을 생성합니다.
유저와 친구의 점수를 저장할 테이블 이름과 기본 키를 설정합니다.
- Table Name: DynamoDB의 테이블 이름입니다. 리전 안에서 중복될 수 없습니다. 앞서 설계한 대로 FriendsLeaderboard를 입력합니다.
- Primary Key Type: 해시 기본 키와 범위 기본 키 또는 해시 기본 키만 사용하는 옵션입니다. Hash and Range를 선택합니다.
- Hash Attribute Name: 해시 기본 키의 속성(Attribute) 이름과 데이터 형식입니다. Number를 선택하고 Id를 입력합니다.
- Range Attribute Name: 범위 기본 키의 속성 이름과 데이터 형식입니다. String을 선택하고 FriendIdAndWeek를 입력합니다.
주간 친구 순위를 산출할 글로벌 보조 인덱스를 추가합니다.
- 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: 특정 속성만 가져옵니다. 가져올 속성 이름을 추가할 수 있고, 보조 인덱스에 키로 설정한 속성은 기본적으로 가져옵니다.
DynamoDB 처리량 단위인 읽기/쓰기 용량 유닛을 설정합니다.
- Help me calculate how much throughput capacity I need to provision: 이 부분을 체크하면 평균 데이터 크기와 초당 읽고 쓴 아이템 수를 입력하여 읽기/쓰기 용량 유닛을 계산할 수 있습니다.
- Read Capacity Units: 읽기 용량 유닛입니다. 기본값 그대로 사용합니다.
- Write Capacity Units: 쓰기 용량 유닛입니다. 기본값 그대로 사용합니다.
- Throughput Capacity Allocation: 생성된 보조 인덱스에도 읽기/쓰기 용량 유닛을 설정할 수 있습니다(각 숫자를 클릭하면 값을 수정할 수 있습니다). 기본값 그대로 사용합니다.
DynamoDB를 사용하다가 설정한 전체 처리량에서 일정 비율 이상을 넘어서면 알람을 발생시킬 수 있습니다.
- Use Basic Alarms: 기본 알람 사용 옵션입니다. 이번 실습에서는 체크를 해제하여 사용하지 않습니다.
- 60분 동안 전체 처리량에서 어느 정도 비율을 넘어서면 알람을 발생시킬지 설정하는 옵션입니다. 95%, 90%, 85%, 80%, 75%를 선택할 수 있으며 80%가 기본값입니다.
- Send notification to: 이메일 주소를 입력하여 알람의 내용을 받을 수 있습니다. 이 부분은 SNS(Simple Notification Service)와 연 (상세한 조건의 알람은 CloudWatch에서 설정할 수 있습니다.)
지금까지 설정한 내용에 이상이 없는지 확인합니다.
DynamoDB 테이블 목록에서 FriendsLeaderboard 테이블이 생성되었습니다. 처음에는 Status가 CREATING으로 나오는데 완전히 생성되기까지 약 10초 정도 소요됩니다.