Substrait - 데이터 처리 연산에 대한 크로스 플랫폼 교환 표준
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
데이터 분석
대상자
데이터 분석, 데이터베이스 개발, 분산 처리 엔지니어, 하드웨어 가속기 개발자 등
핵심 요약
- Substrait는 쿼리 계획(Logical/Physical Plan)을 표준화된 포맷으로 정의해, 다양한 엔진 간 호환성을 확보함
- 프로토콜 버퍼(.proto) 기반 직렬화로, 다양한 언어 및 하드웨어와의 연동이 가능함
- 쿼리 실행 계획 레벨에서 엔진 간 연결 가능, 엔진 교체 및 확장이 유연함
섹션별 세부 요약
1. Substrait의 목적 및 기능
- 다양한 데이터베이스 및 분석 엔진 간 쿼리/실행 계획의 표준화를 목표로 함
- SQL, DataFrame, Pandas 등 다양한 쿼리 언어의 실행 계획을 중립적 포맷으로 표현
- 하드웨어 가속기(GPU, FPGA 등)와의 연동을 단순화
- 엔진 간 통합을 위해 커스텀 인터페이스 없이 Substrait만 지원 가능
2. Substrait의 주요 기능 및 구성 요소
- LogicalPlan, PhysicalPlan, Rel, Expression, Function 등으로 구성
- Filter, Join, Aggregate, Project, Sort 등 연산자별 명확한 스키마 정의
- UDF(User-Defined Function) 및 확장 가능한 함수/타입 카탈로그 지원
3. Substrait의 적용 사례 및 연동 예시
- DuckDB는 Substrait로 쿼리 플랜을 내보내기 및 불러오기 가능
- Sirius는 Substrait 쿼리 플랜을 그대로 받아 GPU 상에서 SQL 실행 가능
- Velox, Spark, DataFusion 등은 Substrait로 쿼리 플랜을 내보내 다양한 분석 엔진과 통합 가능
4. Substrait의 기술적 장점
- 프로토콜 버퍼 기반 직렬화로 다양한 언어 및 시스템 간 효율적 데이터 교환 가능
- 엔진/플러그인 확장성 지원, 새로운 함수, 연산자, 타입 추가 가능
- 하드웨어 가속기 연동을 쿼리 계획 레벨에서 간단하게 수행 가능
결론
- Substrait는 데이터 처리 시스템 간의 호환성, 하드웨어 가속, 확장성을 높이는 핵심 표준으로, 쿼리 실행 계획 레벨에서의 통합을 통해 고성능 분석 인프라 구축을 단순화함