본문 바로가기
컴퓨터

👨‍💻 [AWS] AWS 에서 S3 Select에 의해 스캔된 데이터 란 무엇인가요?

by 밝음의기둥 2025. 4. 2.
반응형

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."


👨‍💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.

AWS 에서 S3 Select에 의해 스캔된 데이터 란 무엇인지 간략히 알아보았습니다.


질문 >

AWS 에서 S3 Select에 의해 스캔된 데이터 란 무엇인가요?

답변 >

AWS S3 Select에서 "스캔된 데이터"란?

AWS S3 Select를 사용하면 S3에 저장된 파일에서 SQL 쿼리를 실행하여 필요한 데이터만 반환할 수 있습니다.

이때, "스캔된 데이터"는 S3 Select가 쿼리를 실행하기 위해 읽은 총 데이터 크기를 의미합니다.

즉, 파일에서 조건을 적용하기 전에 S3가 읽은 전체 데이터의 양입니다.


🔹 "스캔된 데이터"와 "반환된 데이터" 차이점

개념  설명
스캔된 데이터 S3 Select가 파일을 검색하기 위해 읽은 전체 데이터 크기
반환된 데이터 쿼리 결과로 최종적으로 반환된 데이터 크기

💡 예제:

  • data.csv (100MB)에서 Age > 30인 데이터만 조회
  • 스캔된 데이터 = 100MB (파일 전체를 읽었으므로)
  • 반환된 데이터 = 10MB (필터링된 결과만 반환)

🔹 S3 Select의 스캔된 데이터 예제

📂 CSV 파일 (data.csv)

ID,Name,Age,Country
1,John,30,USA
2,Alice,25,UK
3,Bob,35,Canada
4,Emma,28,Australia

S3 Select SQL 실행

SELECT * FROM S3Object s WHERE s.Age > 30

📌 결과 데이터

3,Bob,35,Canada

📌 데이터 크기 예측

  • 파일 크기: 1MB
  • 스캔된 데이터: 1MB (전체 파일을 읽었음)
  • 반환된 데이터: 20KB (필터링된 데이터만 반환)

"스캔된 데이터"가 클수록 비용이 증가할 수 있음 ⚠️


🔹 "스캔된 데이터" 크기 확인 방법

S3 Select API 응답에서 스캔된 데이터 크기를 확인할 수 있습니다.

1️⃣ AWS CLI에서 확인

aws s3api select-object-content \\
    --bucket my-bucket \\
    --key data.csv \\
    --expression "SELECT * FROM S3Object s WHERE s.Age > 30" \\
    --expression-type SQL \\
    --input-serialization '{"CSV": {"FileHeaderInfo": "USE"}}' \\
    --output-serialization '{"CSV": {}}'

📌 결과 (로그 출력)

"ScannedBytes": 1048576,
"ReturnedBytes": 20480

S3 Select가 1MB를 스캔하고, 20KB만 반환


🔹 "스캔된 데이터" 크기를 줄이는 방법

스캔된 데이터 크기가 클수록 비용이 증가할 수 있기 때문에 최적화가 중요합니다.

1. CSV 대신 Parquet 형식 사용

  • Parquet은 컬럼 저장 방식이므로, 필요한 컬럼만 읽을 수 있어 스캔 데이터를 줄일 수 있음

2. 압축된 파일(GZIP, BZIP2) 사용

  • S3 Select는 압축된 CSV 파일도 읽을 수 있음
  • 압축하면 스캔 데이터 크기를 줄일 수 있음

3. SELECT 특정 컬럼만 조회 (SELECT * 지양)

  • SELECT * 대신 필요한 컬럼만 선택하면 스캔 데이터 감소
SELECT Name, Country FROM S3Object s WHERE s.Age > 30

4. WHERE 조건을 최대한 활용

  • 필터링을 적용하면 반환된 데이터는 줄어들지만,
  • 파일의 구조에 따라 스캔된 데이터는 줄어들지 않을 수도 있음
  • 따라서 컬럼 저장 방식(Parquet)과 함께 사용하면 더 효과적

📌 결론

  • "스캔된 데이터" = S3 Select가 파일에서 쿼리를 실행하기 위해 읽은 데이터 크기
  • "반환된 데이터" = 최종적으로 쿼리 결과로 반환된 데이터 크기
  • 스캔된 데이터 크기가 클수록 비용이 증가하므로 최적화 필요
  • Parquet 사용, 압축 적용, SELECT 컬럼 최적화 등의 방법으로 최적화 가능


🎬 유튜브 채널 🎬

 

위로그@WiLog

📢 안녕하세요, 위로그@WiLog 시청자 여러분, 저는 윌리(Willee) 입니다. 📢 위로그@WiLog 는 자기계발을 목적으로 하는 채널 입니다. 📢 오늘도 즐겁게~ 자신을 위한 계발을 함께 해보아요~ d^_^b 📌

www.youtube.com

🎬 치지직 채널 🎬

 

위로그 채널 - CHZZK

지금, 스트리밍이 시작됩니다. 치지직-

chzzk.naver.com


반응형