
간략 요약:
클라우드플레어가 공개한 R2 SQL은 서버를 따로 구성하지 않고도 페타바이트 급 데이터를 고속 쿼리할 수 있는 서버리스 분산 쿼리 엔진입니다. 핵심 원리는 Iceberg 기반의 데이터 카탈로그와 메타데이터 활용을 통한 효율적 탐색, 그리고 전 세계 분산 네트워크를 통한 병렬 실행에 있습니다. 이 글에서는 아키텍처, 주요 기술, 동작 원리 및 앞으로의 계획까지 시간 순으로 알기 쉽게 설명합니다.
클라우드플레어는 2025년 개발자 주간을 맞아, 페타바이트 규모의 데이터를 서버 별도 구성 없이 빠르게 질의할 수 있는 서버리스 쿼리 엔진인 R2 SQL을 공개했습니다. 이 시스템의 출발점은 다음과 같은 문제의식에서 시작됩니다.
"어떻게 하면 페타바이트의 데이터를 서버 없이 SQL로 질의할 수 있을까?"
이에 대한 답이 바로 R2 SQL입니다. 별도의 Spark나 Trino 등 복잡한 클러스터를 설정하지 않아도, Cloudflare의 R2 버킷에 저장된 Iceberg 포맷 데이터를 실시간으로 쿼리할 수 있습니다.
클라우드플레어 R2 SQL의 내부 구조는 I/O 문제와 컴퓨팅 문제 두 가지를 해결하기 위해 고안됐습니다.
이 목표를 위해 R2 SQL은 두 단계(Phase)로 쿼리를 처리합니다.
Query Planner의 핵심 전략은 "필요한 데이터만 똑똑하게 읽자"입니다. Iceberg 카탈로그가 제공하는 다양한 메타데이터(통계)를 사용해 불필요한 데이터 파일 전체를 건너뛰게 설계되어 있죠.
"가장 효율적인 데이터 처리 방식은 애초에 읽지 않는 것!"
활용하는 주요 통계(stats)는 두 가지입니다:
http_status = 500인 결과를 찾는 쿼리에서, 파일의 http_status 컬럼 최대값이 404라면 통째로 스킵 가능"이 파티션에 2025년 7월 데이터가 없다면, 관련 매니페스트도 전부 무시!"
"이 파일의 http_status 최대값이 404니까, 500 찾는 쿼리에는 볼 필요 없음."
최종적으로 남는 Parquet 파일 리스트와 그룹들이 구체적인 쿼리 작업 단위(work unit)가 됩니다.
수 백만 개의 파일을 다루는 현실에서, 전체 계획을 다 짜고 실행하는 방식은 지연이 큽니다.
R2 SQL은 계획 생산과 실행을 동시(스트리밍) 파이프라인으로 돌려, 메타데이터를 읽으면서 즉시 일감(work unit)을 실행 큐로 내보냅니다.
특히 쿼리에 ORDER BY절이 있을 때, 관련 있는 데이터부터 먼저 처리하도록 작업을 순서대로 정렬합니다.
"ORDER BY timestamp DESC LIMIT 5" 같은 쿼리에선, 가장 최신(timestamp) 파일/그룹을 우선 처리!
이런 방식은 쿼리 결과의 상위 일부만 필요할 때 전체 데이터 스캔 없이 "충분히 결과가 모이면 바로 중단"할 수 있게 하죠.
"우리의 Top 5 목록 중에서 가장 오래된(최소 timestamp) 값이, 앞으로 처리할 데이터의 최대값보다 크면, 더 볼 필요 없이 쿼리 끝!"
이 전략은 크게 다음의 두 단계에서 이뤄집니다:
이렇게 함으로써, 실제 필요한 데이터만 선별적으로 읽고 쿼리 지연을 최소화할 수 있습니다.
(아직은 파티션 키 컬럼에만 ORDER BY 지원. 향후 확장 예정!)
Query Planner가 추려낸 "row group 단위"의 작업들은 전 세계 곳곳에 분산된 Cloudflare 서버 네트워크에 나뉘어 할당됩니다.
각 쿼리 워커에게는 다음 정보가 전달됩니다:
각 쿼리 워커는 Apache DataFusion 오픈소스 엔진(러스트 기반)을 사용해 SQL 쿼리를 빠르게 처리합니다.
또한 Parquet 포맷의 효율도 십분 활용합니다.
"컬럼 단위 포맷인 Parquet 덕분에, 필요한 컬럼만 읽고 나머지는 스킵 가능!"
필터 조건(WHERE절)도 초기에 최대한 "푸시다운"하여,
불필요한 데이터는 아예 읽지도 않고 버릴 수 있죠.
모든 쿼리 결과는 gRPC 프로토콜을 통해 코디네이터로 되돌아옵니다.
내부적으로는 Apache Arrow라는 인메모리 배열 포맷을 사용합니다.
현재 R2 SQL은 필터 쿼리에 유리하지만, 앞으로 더 많은 기능이 추가됩니다:
또한 인덱싱, 전체 텍스트 검색, 지리공간 쿼리 등 기능적 확장도 예정돼 있습니다.
R2 SQL은 오픈 베타로 공개 중입니다!
지금 바로 시작하기 가이드를 참고해 엔드 투 엔드 데이터 파이프라인을 구현할 수 있습니다.
"여러분의 멋진 빌드, 기다리고 있습니다! 피드백은 Developer Discord에서 듣고 싶어요."
R2 SQL은 서버 없는 데이터 분석, 페타바이트 규모 분산 처리라는 난제를 효율적으로 풀어낸 획기적인 쿼리 엔진입니다. 클라우드플레어의 글로벌 인프라, 최신 오픈소스 기술, 스마트한 메타데이터 활용이 어우러져, 누구나 빠르고 쉽게 대용량 데이터에서 가치를 얻을 수 있게 되었습니다.
이제 데이터 활용의 문턱은 더욱 낮아졌습니다! 🚀