카테고리
Feature
생성자
U
UntitledStarRocks 4.0 핵심 기능 및 성능 향상
starrocks 4.0은 성능, 데이터 레이크 통합, 보안 및 접근 제어, 스토리지 효율성 등 전반적인 영역에서 대폭적인 개선을 이루었으며, 특히 실시간 분석(Real-time Analytics)과 레이크하우스(Lakehouse) 환경 지원을 강화하는 데 중점을 두었음 .
1. StarRocks 개요: 실시간 데이터 웨어하우스 및 레이크하우스 쿼리 엔진
- StarRocks는 OLAP(Online Analytical Processing) 사용 사례에 초점을 맞춘 Linux Foundation의 오픈 소스 프로젝트임 .
- 실시간 데이터 웨어하우스로 배포 가능:
- 자체 스토리지 엔진을 통해 대규모에서 1초 미만의 쿼리 속도를 지원하며, 동시 조인(on-the-fly joins)이 가능함 .
- 컬럼형 스토리지에서 10초 수준의 데이터 신선도를 가진 실시간 가변 데이터(real-time mutable data)를 구현함 .
- 스토리지와 컴퓨팅 분리 아키텍처(Storage and Compute Separated Architecture)를 특징으로 하며, 데이터는 S3에 저장하고 로컬 노드는 실행 및 캐싱에만 사용됨 .
- 차세대 쿼리 엔진으로 활용 가능:
- Apache Iceberg, Delta, Apache Hudi 등 인기 있는 오픈 테이블 포맷을 지원함 .
- MPP 아키텍처, C++ 기반, SIMD 최적화 등을 통해 데이터 레이크하우스 환경에서 데이터 웨어하우스 수준의 저지연, 고동시성 성능을 제공함 .
2. 압도적인 성능 향상 (Performance Gains)
starrocks 4.0은 전년 대비 약 60%의 성능 향상을 달성했으며, 특히 코어 연산자 개선과 json 처리 최적화에 집중했음 .
- 핵심 연산자 개선을 통한 성능 부스트:
- 조인(Join) 연산 속도 향상: 해시 조인, 머지 조인 등이 복잡한 다중 테이블 쿼리를 더 빠르게 처리하며, 메모리 오버헤드를 줄이고 병렬화를 개선함 .
- 집계(Aggregation) 연산 CPU 사용량 감소:
COUNT DISTINCT,GROUP BY와 같은 집계 연산자가 최적화된 글로벌 딕셔너리와 해시 테이블을 사용하여 CPU를 덜 사용함 . - 디스크 스필(Spill) 처리 개선: 쿼리가 메모리 한도를 초과할 경우 발생하는 메모리 부족 오류(OOM)를 줄이기 위해 새로운 파티션 단위 스필 메커니즘을 도입하여 I/O를 최소화하고 쿼리 안정성을 높임 .
- JSON 처리 성능 혁신 (Flat JSON V2):
- 기존에는 JSON 객체 전체를 구문 분석해야 했지만, 4.0에서는 네이티브 컬럼형 스토리지에 가까운 성능을 제공함 .
- 성능 벤치마크: 이전 버전(3.5) 대비 3배에서 15배 더 빨라졌으며, 파이프라인 변경이나 데이터 평탄화(flattening)가 필요 없음 .
- JSON V2의 핵심 최적화 기능:
- 자동 딕셔너리 인코딩 (Auto Dictionary Encoding): 낮은 카디널리티 필드에 대해 쿼리 시점에 딕셔너리를 활용하여 조건 변환 및 데이터 건너뛰기(data skipping)를 통해 I/O와 메모리 사용량을 줄임 .
- 존 맵 및 정렬 키 인덱싱 (Zone Map & Sort Key Indexing): 페이지별 최소/최대 값을 활용하여 불필요한 데이터 스캔을 줄이고 전체 테이블 스캔을 방지함 .
- 지연 구체화 (Late Materialization): 불필요한 레코드 디코딩에 CPU와 메모리를 낭비하지 않도록, 필터를 먼저 적용한 후 필요한 행 번호에 따라 필드를 읽어옴 .
3. 데이터 레이크 분석 강화 (Data Lake Analytics)
starrocks 4.0은 apache iceberg 통합을 심화하여 데이터 레이크 환경에서 발생하는 성능 문제를 해결하고 데이터 유지 관리를 지원함 .
- Apache Iceberg 수집 및 유지 관리 (Ingestion Maintenance):
- 문제 해결: 작은 파일(Small File Problem)은 Iceberg 쿼리 성능을 저해하며, 기존에는 별도의 도구(예: Apache Spark)로 데이터 레이아웃을 수정해야 했음 .
- StarRocks의 목표: 수집 직후 쿼리 준비가 된 파일(더 크고 정렬된 파일)을 생성하고, 온디맨드 압축(compaction)을 통해 지속적인 유지 관리를 제공함 .
- 주요 최적화:
- 파티션 셔플 (Partition Shuffle): 하나의 파티션에 소수의 컴퓨팅 노드만 작업하도록 파티션을 적절한 노드에 셔플하여, 생성되는 파일 수를 줄이고 파일 크기를 목표에 가깝게 만듦 .
- 파일 내 로컬 정렬 (Local Sorting): Parquet 파일 내에서 페이지를 정렬하여 쿼리 성능을 향상시킴 .
- 쓰기 작업 스필 연산자 재사용: 쿼리 측에서 사용하는 스필 메커니즘을 쓰기 작업에도 재사용하여, 목표 파일 크기에 도달할 때까지 데이터를 유지할 수 있게 함 (OOM 방지) .
- Compaction API 도입:
- SQL을 통해 동기식(synchronous)으로 압축을 실행할 수 있으며, 사용자가 할당할 리소스를 직접 제어하여 긴급한 테이블 수정 시 모든 코어를 할당하는 등 유연한 관리가 가능함 .
4. 보안 및 접근 제어 (Security and Access Control)
- 0에서는 REST 카탈로그 보안을 강화하여 기존의 '슈퍼 유저' 접근 방식의 위험을 해소하고 카탈로그 계층 거버넌스를 실현함 .
- 기존 방식의 한계:
- 쿼리 엔진이 카탈로그 및 스토리지에 접근할 때 하나의 서비스 계정(슈퍼 유저)을 사용하며, 이는 권한 노출, 엔진에 대한 높은 신뢰 요구, 장기 저장 자격 증명 보유 등의 위험을 초래함 .
- 모든 접근이 하나의 자격 증명으로 이루어져 감사(auditing)가 파편화됨 .
- StarRocks 4.0의 개선 (JOT Token 세션 통합):
- 카탈로그 계층 거버넌스: 쿼리 엔진이 아닌 카탈로그가 단일 권한 주체(single authority)가 됨 .
- 보안 강화: 외부 ID 공급자(Identity Provider)와 통합하여 사용자(Bob 또는 Jane)별로 서명된 Jot 토큰을 사용함 .
- 임시 자격 증명: REST 카탈로그 공급자는 외부 권한 시스템(예: Apache Ranger)을 확인한 후, 장기 자격 증명 대신 임시로 발급된 자격 증명(temporary vended credentials)을 제공하여 객체 스토리지에 접근하게 함 .
5. 스토리지 및 기타 기능 개선
- S3 기반 실시간 분석 최적화: S3에서 실행되는 실시간 분석의 비용 효율성과 안정성을 높임 .
- 파일 번들링 (File Bundling): 작은 쓰기 작업을 더 큰 객체로 묶어 객체 수를 줄이고 쓰기 증폭(write amplification)을 제거함 .
- 메타데이터 캐싱 (Metadata Caching): 객체 스토어에 매번 API 호출을 하는 대신, 로컬 컴퓨팅 노드 메모리에서 메타데이터를 제공하여 왕복 시간을 절약함 .
- 고정밀 Decimal 256 지원:
- 금융 서비스나 회계 등 정확한 산술 연산이 필요한 워크로드를 위해 256비트 십진수 타입을 도입함 .
- 기존 Float/Double 형식에서 발생하는 반올림 오류나 작은 오차를 방지하여 정확한 결과를 보장함 .
- 다중 구문 트랜잭션 지원 확장 (Multi-Statement Transaction):
- 단일 원자 단위(single atomic unit)로 처리되지 않을 경우 데이터 불일치를 초래하는 복잡한 ETL 흐름을 위해 트랜잭션 지원을 확장함 .
- 주요 확장: 테이블당 다중 INSERT 지원, INSERT와 DELETE를 결합한 DML 지원, Stream Load 지원, 자동 및 명시적 롤백 보호 기능 제공 .
- As-Of Join 지원:
- 시계열 데이터, 특히 금융 분야의 고용량 데이터 처리(예: 거래 시점 직전의 마지막 시세 찾기)에 유용함 .
- 복잡한 윈도우 함수나 임시 테이블 생성 없이 두 타임스탬프 기반 데이터를 정확하게 조인할 수 있음 .
- 사용 편의성 개선 (Quality of Life):
- 노드 블랙리스팅 (Node Blacklisting): 불안정한 컴퓨팅 노드를 자동으로 격리하여 스케줄러가 해당 노드를 사용하지 않도록 함 .
- 대소문자 비구분 식별자 (Case Insensitive Identifiers): 데이터베이스, 테이블, 뷰 등의 이름을 생성할 때 대소문자를 구분하지 않고 동일하게 처리함 .
- 세션별 클러스터 전체 ID: 디버깅 개선을 위해 모든 세션에 대해 클러스터 전체에서 유일한 ID를 제공함 .
6. 4.x 이후 로드맵 (Beyond 4.0)
- 레이크하우스 실시간 수집:
- 자동화된 테이블 생성 및 튜닝을 통해 데이터 스큐나 레이아웃 문제로 인한 느린 쿼리를 방지하고, 일관되고 예측 가능한 쿼리 성능을 제공함 .
- 오픈 테이블 포맷(Iceberg)에 대한 거버넌스 및 테이블 유지 관리 지원을 강화하여 Iceberg 테이블의 건전성을 유지함 .
- 증분 구체화된 뷰 (Incremental Materialized Views):
- 비동기식 증분 구체화된 뷰를 도입하여 기존 파티션 기반 뷰보다 더 나은 데이터 신선도를 지원하고 실시간 설정에서 MV를 사용할 수 있게 함 .
- AI 통합 및 최적화:
- LLM(대규모 언어 모델) 및 MCP(Multi-Cloud Platform)를 활용하여 테이블 생성, MV 사용, 데이터베이스 튜닝 등에 대한 AI 기반 최적화 및 가이드를 제공함 .
- 벡터 데이터베이스 확장: ANN(Approximate Nearest Neighborhood) 지원을 통해 StarRocks를 LLM 시스템의 메모리나 시맨틱 검색을 위한 벡터 데이터베이스로 활용할 수 있도록 지원을 강화함 .
- 개방성 및 워크로드 분리:
- StarOS 오픈 소스화: 스토리지 및 컴퓨팅 분리 설계의 핵심인 StarOS를 오픈 소스로 공개할 예정임 .
- 멀티 웨어하우스 (Multi-Warehouse): 컴퓨팅 노드를 물리적으로 격리된 컴퓨팅 웨어하우스로 그룹화하여 워크로드 분리(예: 쿼리, Iceberg 유지 관리, 수집 분리)를 구현하고, 모든 테넌트가 SLA 목표를 달성할 수 있도록 리소스를 보장함 .