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

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

DynamoDB 데이터 쿼리하기

앞서 설계했던 대로 테이블도 만들고 데이터도 추가했습니다. 이제 원하는 데이터를 얻는 쿼리를 해보겠습니다. 먼저 주간 전체순위를 산출합니다. DynamoDB 테이블 목록에서 UsersLeaderboard 테이블을 선택하고 위쪽 Explore Table 버튼을 클릭합니다.


그림 14-34 DynamoDB 테이블 목록에서 UsersLeaderboard 선택

UsersLeaderboard 테이블에서 주간 전체 순위를 쿼리합니다(그림 14-35).

  • Scan, Query: Scan은 테이블의 모든 아이템을 출력하는 것이고, Query는 지정한 조건에 맞은 내용을 출력하는 것입니다. Query를 선택합니다.
  • Index Name: 검색할 인덱스입니다. [Global] Week-TopScore-Index: Week, TopScore를 선택합니다.
  • Hash Key: 검색할 해시 키입니다. 인덱스를 선택하면 자동으로 설정됩니다. 기본값 그대로 사용합니다.
    • Week equal to: 주 단위로 검색할 것이므로 2014-05-09,2014-05-15를 입력합니다.
  • Range Key: 검색할 범위 키입니다. 인덱스를 선택하면 자동으로 설정됩니다. 기본값 그대로 사용합니다.
    • TopScore: 최대점수를 99999라 보고, 99999를 입력합니다.
    • less than: 범위 키는 검색 조건을 정할 수 있습니다. 지정한 값보다 작은 값을 구하도록 less than을 선택합니다.
  • Ascending, Descending: 높은 점수가 맨 위에 출력되도록 내림차순(Descending)으로 설정합니다.

설정이 완료되었으면 Query 버튼을 클릭합니다. Week가 2014-05-09,2014-05-15인 아이템들이 TopScore가 높은 순으로 정렬되어 출력됩니다. 이렇게 주간 전체순위를 산출할 수 있습니다.


그림 14-35 주간 전체 순위 쿼리

범위 키(Range Key) 검색 조건

  • equal to: 속성의 값과 같을 때
  • less than: 속성의 값보다 작을 때
  • less than or equal to: 속성의 값보다 작거나 같을 때
  • greater than: 속성의 값보다 클 때
  • greater than or equal to: 속성의 값보다 크거나 같을 때
  • between: 속성의 값에 포함 될 때
  • begins with: 속성의 값이 ~로 시작될 때

이번에는 로컬 보조 인덱스를 사용하여 개인 최고기록을 조회해 보겠습니다. UsersLeaderboard 테이블에서 개인 최고기록을 쿼리합니다(그림 14-36).

  • Scan, Query: Scan은 테이블의 모든 아이템을 출력하는 것이고, Query는 지정한 조건에 맞은 내용을 출력하는 것입니다. Query를 선택합니다.
  • Index Name: 검색할 인덱스입니다. [Local] TopScore-Index: Id, TopScore를 선택합니다.
  • Hash Key: 검색할 해시 키입니다. 인덱스를 선택하면 자동으로 설정됩니다. 기본값 그대로 사용합니다.
    • Id equal to: John(1) 유저의 점수를 조회할 것이므로 1을 입력합니다.
  • Range Key: 검색할 범위 키입니다. 인덱스를 선택하면 자동으로 설정됩니다. 기본값 그대로 사용합니다.
    • TopScore: 최대점수를 99999라 보고, 99999를 입력합니다.
    • less than: 범위 키는 검색 조건을 정할 수 있습니다. 지정한 값보다 작은 값을 구하도록 less than을 선택합니다.
  • Ascending, Descending: 높은 점수가 맨 위에 출력되도록 내림차순(Descending)으로 설정합니다.
  • All, Projected: All을 선택하면 아이템의 모든 속성이 출력되고, Projected를 선택하면 보조 인덱스를 생성할 때 Projected Attributes에 설정한 속성들이 출력됩니다. 기본값 그대로 사용합니다.

설정이 완료되었으면 Query 버튼을 클릭합니다. Id가 1인 아이템들이 TopScore가 높은 순으로 정렬되어 출력됩니다. 이렇게 개인 최고기록을 조회할 수 있습니다.


그림 14-36 개인 최고기록 쿼리

AWS 콘솔에서는 쿼리 출력 개수를 설정할 수 없지만 프로그래밍 언어에서 API로 DynamoDB에 쿼리하는 경우 출력 개수를 설정할 수 있습니다. 쿼리 출력 개수를 1개로 설정하면 개인 최고기록이 되는 것입니다.

FriendsLeaderboards에서 주간 친구 순위를 산출해보겠습니다. 맨 위쪽 List Tables 탭을 클릭하여 테이블 목록으로 돌아갑니다.


그림 14-37 DynamoDB 테이블 목록으로 돌아가기

DynamoDB 테이블 목록에서 FriendsLeaderboard 테이블을 선택하고 위쪽 Explore Table 버튼을 클릭합니다.


그림 14-38 DynamoDB 테이블 목록에서 FriendsLeaderboard 선택

Friends Leaderboard 테이블에서 주간 친구 순위를 쿼리합니다(그림 14-39).

  • Scan, Query: Scan은 테이블의 모든 아이템을 출력하는 것이고, Query는 지정한 조건에 맞은 내용을 출력하는 것입니다. Query를 선택합니다.
  • Index Name: 검색할 인덱스입니다. [Global] FriendIdAndWeek-Score-Index: FriendIdAndWeek, Score를 선택합니다.
  • Hash Key: 검색할 해시 키입니다. 인덱스를 선택하면 자동으로 설정됩니다. 기본값 그대로 사용합니다.
    • FriendIdAndWeek equal to: 3번 유저의 2014-05-09,2014-05-15 주간의 친구 순위를 산출할 것이므로 3,2014-05-09,2014-05-15를 입력합니다.
  • Range Key: 검색할 범위 키입니다. 인덱스를 선택하면 자동으로 설정됩니다. 기본값 그대로 사용합니다.
    • TopScore: 최대점수를 99999라 보고, 99999를 입력합니다.
    • less than: 범위 키는 검색 조건을 정할 수 있습니다. 지정한 값보다 작은 값을 구하도록 less than을 선택합니다.
  • Ascending, Descending: 높은 점수가 맨 위에 출력되도록 내림차순(Descending)으로 설정합니다.

설정이 완료되었으면 Query 버튼을 클릭합니다. FriendIdAndWeek가 3,2014-05-09,2014-05-15인 아이템들이 TopScore가 높은 순으로 정렬되어 출력됩니다. 이렇게 Andrew(3)의 주간 친구순위를 산출할 수 있습니다.


그림 14-39 주간 친구순위 쿼리


저작권 안내

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