DynamoDB는 pure ‘key-value’ NoSQL로 'GROUP BY, SUM, MAX ...' 같은 집계 메서드는 제공하지 않는다.
생각해본 다른 방법
- Apache Hive 연동
- 별도 table 두기
- Amazon Redshift 이용
1. Hive 사용
- 장점 : RDB에서 사용하는 쿼리문을 그대로 사용할 수 있음
- 단점 : Hive에 저장한 데이터가 항상 최신 데이터임이 보장되지 않는다.
2. 별도의 table 두기
- 예상했던 시나리오 : append table과 update table을 나눠 append table에 데이터가 추가 될 때마다 stream trigger를 걸어 총 재생수와 같은 갱신되는 항목들의 값을 update table에 저장해두고 요청시 추가 연산 없이 값을 전송하도록 한다.
- 고려하지 못한 점 : 현재 집계 내야 하는 내용은
date
를 어떻게 설정하느냐에 따라 계속해서 달라지는 값이므로 어느 테이블에 고정되어 변하지 않는 값이 아니다.
-
잘못된 접근
3. Amazon Redshift
big data를 다루기 위한 aws 서비스이다.
-
Redshift를 사용할 만큼 로그를 분석하여 새로운 데이터를 도출하는 큰 작업은 필요없기 때문에 사용하지 않는게 낫다고 생각했다.
Global Secondary Index 사용하기
기본키
기본키는 테이블의 각 항목을 나타내는 고유 식별자로, DynamoDB 기본키의 종류는 두 가지가 있다.
- 파티션키(해시키) : 하나의 속성으로 구성되는 단순 기본키. 파티션 키로만 구성되어있는 테이블에서는 어떤 두 개의 테이블 항목도 동일한 파티션 값을 가질 수 없다.