H
하베스트
AI로 요약된 콘텐츠

R2 SQL: 클라우드플레어의 새로운 분산 쿼리 엔진 깊이 파헤치기

간략 요약:
클라우드플레어가 공개한 R2 SQL은 서버를 따로 구성하지 않고도 페타바이트 급 데이터를 고속 쿼리할 수 있는 서버리스 분산 쿼리 엔진입니다. 핵심 원리는 Iceberg 기반의 데이터 카탈로그와 메타데이터 활용을 통한 효율적 탐색, 그리고 전 세계 분산 네트워크를 통한 병렬 실행에 있습니다. 이 글에서는 아키텍처, 주요 기술, 동작 원리 및 앞으로의 계획까지 시간 순으로 알기 쉽게 설명합니다.


1. 서버 없이 페타바이트 데이터를 SQL로! R2 SQL의 등장

클라우드플레어는 2025년 개발자 주간을 맞아, 페타바이트 규모의 데이터를 서버 별도 구성 없이 빠르게 질의할 수 있는 서버리스 쿼리 엔진인 R2 SQL을 공개했습니다. 이 시스템의 출발점은 다음과 같은 문제의식에서 시작됩니다.

"어떻게 하면 페타바이트의 데이터를 서버 없이 SQL로 질의할 수 있을까?"

이에 대한 답이 바로 R2 SQL입니다. 별도의 Spark나 Trino 등 복잡한 클러스터를 설정하지 않아도, Cloudflare의 R2 버킷에 저장된 Iceberg 포맷 데이터를 실시간으로 쿼리할 수 있습니다.

  • ⭐️ 서버리스 방식: 별도의 인프라 관리, 자원 관리, 가용성 보장 부담 없이 곧바로 데이터 쿼리가 가능
  • ⭐️ Iceberg와 완벽 연동: 트랜잭션, 스키마 변경 등 데이터베이스급 기능을 지원하면서, 기존엔 외부 엔진 없이는 쿼리할 수 없던 Iceberg 카탈로그를 R2 SQL로 직접 조회 가능

2. R2 SQL 아키텍처: 효율과 확장성을 모두 잡다

클라우드플레어 R2 SQL의 내부 구조는 I/O 문제컴퓨팅 문제 두 가지를 해결하기 위해 고안됐습니다.

  • I/O 문제: 페타바이트 데이터를 일일이 모두 읽는 것은 불가능에 가깝기 때문에, 최대한 필요한 데이터만 읽도록 설계
  • 컴퓨팅 문제: 대용량 데이터를 잠깐 빠르게 처리할 수 있는 파워를 확보하되, 작업이 끝나면 자원을 '0'으로 즉시 축소해 낭비를 최소화

이 목표를 위해 R2 SQL은 두 단계(Phase)로 쿼리를 처리합니다.

  1. Query Planner:
    • Iceberg 메타데이터와 통계 정보를 적극적으로 활용해, 쿼리와 상관없는 데이터는 아예 읽지 않게 탐색 범위를 '정확히 잘라냄'
  2. Query Execution:
    • 이렇게 추려진 실제 데이터를 Cloudflare 글로벌 네트워크와 Workers 구성을 바탕으로 병렬 분산 처리

3. Query Planner: 메타데이터를 통한 똑똑한 후보 파일 선정

Query Planner의 핵심 전략은 "필요한 데이터만 똑똑하게 읽자"입니다. Iceberg 카탈로그가 제공하는 다양한 메타데이터(통계)를 사용해 불필요한 데이터 파일 전체를 건너뛰게 설계되어 있죠.

"가장 효율적인 데이터 처리 방식은 애초에 읽지 않는 것!"

활용하는 주요 통계(stats)는 두 가지입니다:

  • 파티션 레벨 통계:
    테이블이 날짜 등의 파티션으로 나눠져 있다면, 각 파티션별로 포함 데이터 범위의 '최소/최대 값'(예: event_timestamp의 가장 이른/늦은 날짜)
  • 컬럼 레벨 통계:
    Parquet 데이터 파일마다 컬럼 값의 최소/최대, 널(null) 값 개수 등. 예를 들어 http_status = 500인 결과를 찾는 쿼리에서, 파일의 http_status 컬럼 최대값이 404라면 통째로 스킵 가능

3단계 메타데이터 탐색 과정

  1. 테이블 메타데이터와 스냅샷 조회
    쿼리할 시점의 테이블 상태와 스키마, 파티션 정보를 로딩
  2. 매니페스트 리스트(파티션 통계 기반 1차 컷)
    쿼리와 무관한 파티션(날짜 등) 범위의 파일들은 바로 스킵

    "이 파티션에 2025년 7월 데이터가 없다면, 관련 매니페스트도 전부 무시!"

  3. 매니페스트의 파일 목록(파일 수준 2차 컷)
    남아 있는 매니페스트의 파일들을 컬럼 통계로 세밀하게 필터링

    "이 파일의 http_status 최대값이 404니까, 500 찾는 쿼리에는 볼 필요 없음."

  4. 파일 내 Row Group 수준 3차 컷
    아직도 후보인 Parquet 파일의 각 row group을 Parquet 푸터에 저장된 통계로 세분화해 추가 스킵

최종적으로 남는 Parquet 파일 리스트와 그룹들이 구체적인 쿼리 작업 단위(work unit)가 됩니다.


4. 계획과 실행을 동시에: 파이프라인 & 우선순위 처리

수 백만 개의 파일을 다루는 현실에서, 전체 계획을 다 짜고 실행하는 방식은 지연이 큽니다.
R2 SQL은 계획 생산과 실행을 동시(스트리밍) 파이프라인으로 돌려, 메타데이터를 읽으면서 즉시 일감(work unit)을 실행 큐로 내보냅니다.

효율적 우선순위 처리

특히 쿼리에 ORDER BY절이 있을 때, 관련 있는 데이터부터 먼저 처리하도록 작업을 순서대로 정렬합니다.

"ORDER BY timestamp DESC LIMIT 5" 같은 쿼리에선, 가장 최신(timestamp) 파일/그룹을 우선 처리!

이런 방식은 쿼리 결과의 상위 일부만 필요할 때 전체 데이터 스캔 없이 "충분히 결과가 모이면 바로 중단"할 수 있게 하죠.

"우리의 Top 5 목록 중에서 가장 오래된(최소 timestamp) 값이, 앞으로 처리할 데이터의 최대값보다 크면, 더 볼 필요 없이 쿼리 끝!"

이 전략은 크게 다음의 두 단계에서 이뤄집니다:

  • 매니페스트 순서 정렬: 파티션 통계로 매니페스트파일 순서를 먼저 정하고,
  • 파일 내 Parquet 파일 순서 정렬: 컬럼 통계로 더 세밀하게 작업 순서를 지정

이렇게 함으로써, 실제 필요한 데이터만 선별적으로 읽고 쿼리 지연을 최소화할 수 있습니다.
(아직은 파티션 키 컬럼에만 ORDER BY 지원. 향후 확장 예정!)


5. Query Execution: 분산 네트워크를 활용한 초고속 처리

Query Planner가 추려낸 "row group 단위"의 작업들은 전 세계 곳곳에 분산된 Cloudflare 서버 네트워크에 나뉘어 할당됩니다.

  • ⭐️ 쿼리 코디네이터: 쿼리 요청을 받아 작업을 분할, 분산 서버(작업자)에 할당
  • ⭐️ 분산 안전성: 항상 건강한 서버만 골라 작업하도록 내부 API 및 Argo Smart Routing으로 최적 경로/품질 유지
  • ⭐️ 수평 확장성: 파일 수가 많을수록 더 많은 작업자가 동시에 처리해 속도가 극대화

각 쿼리 워커에게는 다음 정보가 전달됩니다:

  • row group 작업 단위(파일 내 정확한 바이트 오프셋 포함)
  • 실행할 SQL 쿼리
  • 파케이(Parquet) 파일의 관련 메타데이터

6. Apache DataFusion: 쿼리 엔진의 핵심

각 쿼리 워커는 Apache DataFusion 오픈소스 엔진(러스트 기반)을 사용해 SQL 쿼리를 빠르게 처리합니다.

  • DataFusion의 장점
    • 파티셔닝 기반의 병렬 처리: row group 각각을 독립 "파티션"으로 할당, 여러 CPU 코어에 분산 실행
    • 벡터화 실행: 한 번에 수천 행 단위로 처리해 쿼리 해석 오버헤드를 줄임
    • 가장 효율적인 범주(연속 대 병렬) 밸런스: 충분히 대량 데이터는 순차처리(캐시, 해석효율 ↑), 많은 파티션은 병렬처리(속도↑)

또한 Parquet 포맷의 효율도 십분 활용합니다.

"컬럼 단위 포맷인 Parquet 덕분에, 필요한 컬럼만 읽고 나머지는 스킵 가능!"

필터 조건(WHERE절)도 초기에 최대한 "푸시다운"하여,
불필요한 데이터는 아예 읽지도 않고 버릴 수 있죠.


7. 결과 반환: 빠른 전송과 호환성

모든 쿼리 결과는 gRPC 프로토콜을 통해 코디네이터로 되돌아옵니다.
내부적으로는 Apache Arrow라는 인메모리 배열 포맷을 사용합니다.

  • Arrow는 결괏값을 CPU와 네트워크에서 가장 빠르게 송수신할 수 있도록 설계
  • 쿼리 워커에서는 결과를 Arrow IPC 포맷으로 직렬화 → gRPC로 전송
  • 코디네이터도 동일 포맷으로 받아 바로 이어서 처리 가능

8. 앞으로의 계획과 개발자 경험 향상

현재 R2 SQL은 필터 쿼리에 유리하지만, 앞으로 더 많은 기능이 추가됩니다:

  • 분산 병렬 집계 함수, 복잡한 group by 지원 예정
  • 쿼리 실행 가시성 및 성능 튜닝 도구 제공
  • Apache Iceberg의 다양한 설정 지원
  • Cloudflare Dashboard에서 R2 SQL 쿼리 기능

또한 인덱싱, 전체 텍스트 검색, 지리공간 쿼리 등 기능적 확장도 예정돼 있습니다.


9. 사용해보고 싶다면?

R2 SQL은 오픈 베타로 공개 중입니다!
지금 바로 시작하기 가이드를 참고해 엔드 투 엔드 데이터 파이프라인을 구현할 수 있습니다.

"여러분의 멋진 빌드, 기다리고 있습니다! 피드백은 Developer Discord에서 듣고 싶어요."


마치며

R2 SQL은 서버 없는 데이터 분석, 페타바이트 규모 분산 처리라는 난제를 효율적으로 풀어낸 획기적인 쿼리 엔진입니다. 클라우드플레어의 글로벌 인프라, 최신 오픈소스 기술, 스마트한 메타데이터 활용이 어우러져, 누구나 빠르고 쉽게 대용량 데이터에서 가치를 얻을 수 있게 되었습니다.
이제 데이터 활용의 문턱은 더욱 낮아졌습니다! 🚀

요약 완료: 2025. 9. 27. 오전 1:55:03

이런 요약이 필요하신가요?

하베스트가 원클릭으로 요약해드립니다

5초 요약
AI 자동 분석
📱
모든 기기
웹, iOS, Chrome
🔍
스마트 검색
언제든 재발견
요약 시작하기
나도 요약하기