개요
S3 Select과 AWS Athena는 S3 버킷에 저장된 데이터를 DB를 사용하는 것처럼 SQL을 사용하여 조회할 수 있게 해 준다.
비슷한 기능을 제공하는데 두 서비스의 차이는 어떻게 될까? 간단히 정리해 둔다.
S3 Select
참고 : 2022.11.07 - [AWS] S3 Select - 객체 내 데이터 쿼리
간단한 SQL을 사용해 전체 객체를 검색하는 대신 S3 객체 콘텐츠의 하위 집합을 검색하는 S3 기능이다.
CSV, JSON, Apache Parquet 형식이어야 하며, GZIP, BZIP2 방식으로 압축된 데이터 대해서도 사용할 수 있다. 서버리스 기능이므로 기능을 사용하기 위해 관리해야 하는 인프라가 없다.
다만 SELECT 문만 지원하며 FROM, WHERE, LIMITS 절만 사용할 수 있다.
AWS Athena
2023.03.11 - [AWS] Athena 개념 및 사용법
표준 SQL을 사용해 S3에 저장된 데이터를 쉽게 분석할 수 있는 대화형 쿼리 서비스로 주로 빅데이터 분석에 사용한다.
S3 경로 내 여러 객체를 나타내는 테이블을 정의하여 테이블 간의 집계, JOIN 등의 복잡한 쿼리를 수행할 수 있다.
S3 Select와 마찬가지로 서버리스 서비스이므로, 서비스를 이용하기 위해 관리해야 하는 인프라가 없다. 또한 AWS Glue 등과 연동하여 사용할 수 있다.
S3 Select VS AWS Athena
S3 Select와 Athena의 가장 큰 차이점은 지원하는 SQL의 종류와 데이터 쿼리 대상으로 보인다.
S3 Select는 S3에 저장된 단일 객체를 대상으로 쿼리 하는 반면 Athena는 S3의 특정 경로 아래 모든 객체를 테이블로 생성하여 쿼리 할 수 있다. 또한 S3 Select는 SELECT문만 지원하는 반면 Athena는 ANSI 표준 SQL을 지원하며 복잡한 쿼리도 사용할 수 있다.
Athena는 S3 Select 대신 사용할 수 있지만 S3 Select 기능만이 필요할 때는 좋은 선택이라고 할 수 없다.
Athena로 데이터를 쿼리하기 위해서는 각 개별 객체에 대한 테이블을 생성해야 하는 반면, S3 Select는 테이블 생성 없이 API 호출 부분에서 쿼리 할 객체의 Key만 지정하면 되기 때문이다.
참고 문서
https://repost.aws/questions/QU1_wCZSxES6-QHh7QBTDYDA/s-3-select-vs-athena
https://stackoverflow.com/questions/49102577/what-is-difference-between-aws-s3-select-and-aws-athena
https://blog.clairvoyantsoft.com/accelerate-s3-data-querying-performance-with-s3-select-ff84dde1b8da
https://beabetterdev.com/2021/10/17/amazon-s3-select-vs-athena-whats-the-difference/