Amazon Athena 는 Trino(과거 Presto) 기반의 서버리스 쿼리 엔진이다. 데이터를 자기 저장소에 적재하지 않고 바깥에 있는 데이터를 그 자리에서 읽는다. 읽을 대상은 크게 두 갈래로 나뉜다 — S3 에 놓인 파일을 카탈로그의 메타데이터로 해석해 읽는 기본 경로와, Lambda 커넥터를 통해 외부 데이터 저장소에 질의하는 연합 쿼리(Federated Query) 경로다.
기본 대상은 S3 다. 파일 형식은 CSV · TSV · JSON · Avro · ORC · Parquet 을 읽고, 압축은 GZIP · Snappy · ZSTD · BZIP2 등을 지원한다. 테이블 형식으로는 Apache Iceberg · Apache Hudi · Delta Lake 를 읽을 수 있다.
메타데이터는 AWS Glue Data Catalog 를 기본으로 쓴다. 이미 운영 중인 Hive Metastore 가 있으면 Lambda 기반 커넥터로 외부 Hive Metastore 를 카탈로그로 연결할 수도 있다.
성능과 비용은 스캔한 바이트 수로 결정되므로, 열 지향 형식(Parquet · ORC)과 파티션 설계가 사실상 전부다. 파티션 키로 필터하지 않는 쿼리는 전체를 읽는다.
연합 쿼리는 Athena 가 직접 외부 DB 에 붙는 것이 아니라, 계정 안에 배포한 Lambda 함수(커넥터) 가 대신 조회해 결과를 Athena 로 넘기는 구조다. 커넥터는 AWS Serverless Application Repository 에서 배포하고, 중간 결과를 담을 S3 spill 버킷을 지정한다.
AWS 가 제공하는 커넥터는 관계형 DB(MySQL · PostgreSQL · Oracle · SQL Server · Db2 · SAP HANA · Snowflake 등), AWS 서비스(DynamoDB · DocumentDB · Redshift · Timestream · Neptune · CloudWatch Logs 및 Metrics · MSK), 그 밖의 저장소(OpenSearch · Redis · HBase · Google BigQuery 등)를 덮는다. 목록은 계속 늘어나므로 실제 사용 전에 공식 문서의 커넥터 목록을 확인한다.
성능 특성이 기본 경로와 완전히 다르다. 원본 DB 의 부하가 그대로 올라가고, Lambda 의 실행 시간·메모리 상한과 동시 실행 한도에 걸린다. 대량 조인을 연합 쿼리로 처리하는 것은 적절하지 않다 — 원본에서 필요한 범위만 걸러 S3 로 내린 뒤 그 위에서 조인하는 편이 빠르고 싸다.
커넥터가 푸시다운을 어디까지 지원하는지도 커넥터마다 다르다. 필터가 원본까지 내려가지 않으면 전체 테이블을 Lambda 가 읽어 spill 버킷에 쏟는다.
비용은 스캔 바이트(Athena) + Lambda 실행 시간 + spill 버킷의 S3 요금으로 나뉘어 청구된다.