- 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
- 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.
확장 가능한 NoSQL 분산 데이터베이스를 제공하는 DynamoDB
이재홍 http://www.pyrasis.com 2014.03.24 ~ 2014.06.30
DynamoDB 테이블 생성하기
앞에서 설계한 DB 구조대로 테이블을 생성하고, 인덱스를 설정해보겠습니다.
AWS 콘솔로 접속한 뒤 메인 화면에서 Database의 DynamoDB를 클릭합니다.
오른쪽 위에서 DynamoDB의 리전을 변경할 수 있습니다. 이 책에서는 우리나라에서 가장 가까운 Tokyo 리전을 사용하겠습니다.
DynamoDB 메인 페이지에서 Create Table 버튼을 클릭합니다.
전체 유저의 점수를 저장할 테이블 이름과 기본 키를 설정합니다(그림 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-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 버튼을 클릭하여 인덱스를 추가합니다.
Table Indexes에 글로벌 보조 인덱스가 추가되었습니다.
개인 최고기록을 조회할 로컬 보조 인덱스를 추가합니다(그림 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 버튼을 클릭하여 인덱스를 추가합니다.
Table Indexes에 로컬 보조 인덱스가 추가되었습니다. 그리고 Continue 버튼을 클릭합니다.
DynamoDB 처리량 단위인 읽기/쓰기 용량 유닛을 설정합니다(그림 14-12).
- Help me calculate how much throughput capacity I need to provision: 이 부분을 체크하면 평균 데이터 크기와 초당 읽고 쓴 아이템 수를 입력하여 읽기/쓰기 용량 유닛을 계산할 수 있습니다.
- Read Capacity Units: 읽기 용량 유닛입니다. 기본값 그대로 사용합니다.
- Write Capacity Units: 쓰기 용량 유닛입니다. 기본값 그대로 사용합니다.
- Throughput Capacity Allocation: 생성된 보조 인덱스에도 읽기/쓰기 용량 유닛을 설정할 수 있습니다(각 숫자를 클릭하면 값을 수정할 수 있습니다). 기본값 그대로 사용합니다.
Continue 버튼을 클릭합니다.
DynamoDB를 사용하다가 설정한 전체 처리량에서 일정 비율 이상을 넘어서면 알람을 발생시킬 수 있습니다(그림 14-13).
- Use Basic Alarms: 기본 알람 사용 옵션입니다. 이번 실습에서는 체크를 해제하여 사용하지 않습니다.
- 60분 동안 전체 처리량에서 어느 정도 비율을 넘어서면 알람을 발생시킬지 설정하는 옵션입니다. 95%, 90%, 85%, 80%, 75%를 선택할 수 있으며 80%가 기본값입니다.
- Send notification to: 이메일 주소를 입력하여 알람의 내용을 받을 수 있습니다. 이 부분은 SNS(Simple Notification Service)와 연계됩니다.
상세한 조건의 알람은 CloudWatch에서 설정할 수 있습니다. 설정이 완료되었으면 Continue 버튼을 클릭합니다.
지금까지 설정한 내용에 이상이 없는지 확인합니다. 이상이 없으면 Create 버튼을 클릭합니다.
DynamoDB 테이블 목록에 UsersLeaderboard 테이블이 생성되었습니다. 처음에는 Status가 CREATING으로 나오며 완전히 생성되기까지 약 10초 정도 소요됩니다.
이제 주간 친구 순위 산출을 위해 FriendsLeaderboard 테이블을 생성합니다. 위쪽 Create Table 버튼을 클릭합니다.
유저와 친구의 점수를 저장할 테이블 이름과 기본 키를 설정합니다(그림 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-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 버튼을 클릭하여 인덱스를 추가합니다.
Table Indexes에 글로벌 보조 인덱스가 추가되었습니다. 그리고 Continue 버튼을 클릭합니다.
DynamoDB 처리량 단위인 읽기/쓰기 용량 유닛을 설정합니다(그림 14-19).
- Help me calculate how much throughput capacity I need to provision: 이 부분을 체크하면 평균 데이터 크기와 초당 읽고 쓴 아이템 수를 입력하여 읽기/쓰기 용량 유닛을 계산할 수 있습니다.
- Read Capacity Units: 읽기 용량 유닛입니다. 기본값 그대로 사용합니다.
- Write Capacity Units: 쓰기 용량 유닛입니다. 기본값 그대로 사용합니다.
- Throughput Capacity Allocation: 생성된 보조 인덱스에도 읽기/쓰기 용량 유닛을 설정할 수 있습니다(각 숫자를 클릭하면 값을 수정할 수 있습니다). 기본값 그대로 사용합니다.
Continue 버튼을 클릭합니다.
DynamoDB를 사용하다가 설정한 전체 처리량에서 일정 비율 이상을 넘어서면 알람을 발생시킬 수 있습니다(그림 14-20).
- Use Basic Alarms: 기본 알람 사용 옵션입니다. 이번 실습에서는 체크를 해제하여 사용하지 않습니다.
- 60분 동안 전체 처리량에서 어느 정도 비율을 넘어서면 알람을 발생시킬지 설정하는 옵션입니다. 95%, 90%, 85%, 80%, 75%를 선택할 수 있으며 80%가 기본값입니다.
- Send notification to: 이메일 주소를 입력하여 알람의 내용을 받을 수 있습니다. 이 부분은 SNS(Simple Notification Service)와 연계됩니다. (상세한 조건의 알람은 CloudWatch에서 설정할 수 있습니다.)
설정이 완료되었으면 Continue 버튼을 클릭합니다.
지금까지 설정한 내용에 이상이 없는지 확인합니다. 이상이 없으면 Create 버튼을 클릭합니다.
DynamoDB 테이블 목록에서 FriendsLeaderboard 테이블이 생성되었습니다. 처음에는 Status가 CREATING으로 나오는데 완전히 생성되기까지 약 10초 정도 소요됩니다.
오른편 위쪽에 보면 리프레시 버튼이 있습니다. 이 버튼을 클릭하면 테이블의 상태를 갱신할 수 있습니다.
저작권 안내
이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.- 블로그, 게시판 등에 퍼가는 것을 금지합니다.
- 비공개 포스트에 퍼가는 것을 금지합니다.
- 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
- 링크 및 SNS 공유는 허용합니다.