MySQL 테이블을 S3로 옮기고 Athena로 쿼리하는 효율적인 데이터 접근 방법
by DD
2년 전
조회수 3
MySQL 테이블의 증가하는 저장 비용 문제를 해결하기 위해 S3로 데이터 이관
Spark를 사용하여 Parquet 형식으로 데이터를 S3에 저장하고, bucketing 적용
Athena를 통해 데이터 쿼리 비용을 700배 감소 및 MySQL 저장 비용 3배 절감
S3 Parquet 데이터 저장 구조
데이터를 S3에 저장할 때 Parquet 형식을 사용하고, dt=YYYY-MM-DD, hour=HH 파티션 구조를 적용했다. 구체적으로 Spark Job을 통해 Kafka에서 읽은 데이터를 S3에 저장한다. 따라서 데이터 접근 효율성을 높이고, Athena 쿼리 성능을 향상시켰다.
Bucketing vs Partitioning
Bucketing은 특정 필드 값을 기준으로 데이터를 분산 저장하여 쿼리 성능을 향상시킨다. 반면 Partitioning은 데이터 접근 범위를 줄여 쿼리 속도를 높인다. 따라서 Athena 쿼리 비용 700배 감소라는 놀라운 결과를 얻었으며, 데이터 처리량을 최적화했다.
Athena 쿼리 최적화 팁
Athena 쿼리 시 Bucketing된 테이블의 특성을 고려하여 쿼리를 작성해야 한다. 구체적으로 bucketed Atable - bucketd Btable과 같은 조인 쿼리에서 버킷 키를 활용한다. 결과적으로 데이터 스캔량 감소를 통해 쿼리 성능 향상을 기대할 수 있다.
댓글 0
첫 번째 댓글을 남겨보세요!