Skip to main content

14E. DynamoDB 데이터 쿼리하기

About 1 minAWScrashcoursepyrasisawsamazon-web-services

14E. DynamoDB 데이터 쿼리하기 관련

목차

아마존 웹 서비스를 다루는 기술

14장 - 5. DynamoDB 데이터 쿼리하기

아마존 웹 서비스를 다루는 기술

앞서 설계했던 대로 테이블도 만들고 데이터도 추가했습니다. 이제 원하는 데이터를 얻는 쿼리를 해보겠습니다. 먼저 주간 전체순위를 산출합니다.

DynamoDB 테이블 목록에서  테이블을 선택하고 위쪽 <FontIcon icon="iconfont icon-select"/> 버튼을 클릭합니다.
DynamoDB 테이블 목록에서 UsersLeaderboard 테이블을 선택하고 위쪽 [Explore Table] 버튼을 클릭합니다.

UsersLeaderboard 테이블에서 주간 전체 순위를 쿼리합니다.

  • 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)으로 설정합니다.
설정이 완료되었으면 <FontIcon icon="iconfont icon-select"/> 버튼을 클릭합니다. 가 인 아이템들이 가 높은 순으로 정렬되어 출력됩니다. 이렇게 주간 전체순위를 산출할 수 있습니다.
설정이 완료되었으면 [Query] 버튼을 클릭합니다. Week2014-05-09,2014-05-15인 아이템들이 TopScore가 높은 순으로 정렬되어 출력됩니다. 이렇게 주간 전체순위를 산출할 수 있습니다.

범위 키(Range Key) 검색 조건

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

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

  • 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에 설정한 속성들이 출력됩니다. 기본값 그대로 사용합니다.
설정이 완료되었으면 <FontIcon icon="iconfont icon-select"/> 버튼을 클릭합니다. 가 1인 아이템들이 가 높은 순으로 정렬되어 출력됩니다.
설정이 완료되었으면 [Query] 버튼을 클릭합니다. Id가 1인 아이템들이 TopScore가 높은 순으로 정렬되어 출력됩니다.

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

FriendsLeaderboards에서 주간 친구 순위를 산출해보겠습니다.

맨 위쪽 <FontIcon icon="iconfont icon-select"/> 탭을 클릭하여 테이블 목록으로 돌아갑니다.
맨 위쪽 [List Tables] 탭을 클릭하여 테이블 목록으로 돌아갑니다.
DynamoDB 테이블 목록에서  테이블을 선택하고 위쪽 <FontIcon icon="iconfont icon-select"/> 버튼을 클릭합니다.
DynamoDB 테이블 목록에서 FriendsLeaderboard 테이블을 선택하고 위쪽 [Explore Table] 버튼을 클릭합니다.

FriendsLeaderboard 테이블에서 주간 친구 순위를 쿼리합니다.

  • 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] 버튼을 클릭합니다. FriendIdAndWeek3,2014-05-09,2014-05-15인 아이템들이 TopScore가 높은 순으로 정렬되어 출력됩니다.

이렇게 Andrew(3)의 주간 친구순위를 산출할 수 있습니다.
이렇게 Andrew(3)의 주간 친구순위를 산출할 수 있습니다.

이찬희 (MarkiiimarK)
Never Stop Learning.