MySQL RDS의 한계로 DynamoDB를 도입하여 포인트 시스템을 구축함
DynamoDB transaction 부재로 인해 amount_sum 테이블을 설계함
Conditional Write와 Global Secondary Index를 활용하여 데이터 일관성 및 조회 성능을 개선함
기존 MySQL에서 DynamoDB로 전환하며, amount와 sum 테이블을 통합하여 amount_sum 테이블을 설계했다. 구체적으로, user_id를 파티션 키, date를 정렬 키로 설정하여 데이터 접근성을 높였다. 따라서, Conditional Write를 통해 동시성 문제를 해결하고, 데이터 일관성을 확보했다.
DynamoDB의 transaction 부재로 인해, amount_sum_version 테이블을 도입하여 데이터 일관성을 유지했다. Version 값을 활용하여 동시성 문제를 해결하고, Conditional Write를 통해 데이터 덮어쓰기를 방지했다. 반면, Global Secondary Index를 통해 전체 데이터 조회 성능을 개선했다.
전체 데이터 시간순 조회를 위해 scatter-date-index를 활용했다. 구체적으로, scatter 값을 랜덤하게 부여하여 hot partition 문제를 해결하고, 쓰로틀링을 방지했다. 따라서, Query 성능을 향상시키고, 대규모 데이터 처리의 효율성을 높였다.