Show HN: Rocky – 브랜치, 리플레이, 컬럼 리니지(column lineage) 기능을 갖춘 Rust 기반 SQL 엔진
요약
Rocky는 Rust 기반의 SQL 엔진으로, 기존 데이터 웨어하우스(Databricks, Snowflake, BigQuery, DuckDB 등) 상단에서 동작하는 타입 지정 프로그램 레이어입니다. 브랜치, 리플레이, 컬럼 레벨 리니지 및 컴파일 타임 타입 안정성을 제공하여 데이터 파이프라인의 신뢰성을 높입니다.
핵심 포인트
- Rust 기반의 고성능 SQL 엔진으로 컴파일 타임 타입 안정성 제공
- 브랜치 및 리플레이 기능을 통한 격리된 스키마 테스트 및 데이터 검증 가능
- 컬럼 레벨 리니지를 통한 하류(downstream) 영향 범위(blast radius) 분석 지원
- PII 마스킹 전략 및 CI 게이트를 통한 데이터 보안 및 컴플라이언스 강화
- 기존 데이터 웨어하우스의 스토리지와 컴퓨팅을 그대로 활용하는 아키텍처
Rocky는 데이터 웨어하우스(warehouse) 상단의 타입 지정 프로그램(typed-program) 레이어입니다: 브랜치(branches), 리플레이(replay), 컬럼 레벨 리니지(column-level lineage), 컴파일 타임 타입 안정성(compile-time type safety), 모델별 비용 귀속(per-model cost attribution) 기능을 제공합니다. 스토리지와 컴퓨팅은 사용 중인 데이터 웨어하우스인 Databricks, Snowflake, BigQuery 또는 DuckDB에 그대로 유지됩니다. Apache 2.0 라이선스입니다.
# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/rocky-data/rocky/main/engine/install.sh | bash
# Windows (PowerShell)
...
rocky playground my-first-project
cd my-first-project
rocky compile && rocky test && rocky run
자격 증명(credentials)이 필요하지 않습니다. 플레이그라운드(playground)는 로컬 DuckDB에서 엔드 투 엔드(end-to-end)로 실행됩니다.
아래의 각 데모는 examples/playground/pocs/에 있는 독립적인 POC(Proof of Concept)입니다.
— cd 명령어로 이동하여, ./run.sh를 실행하면 로컬에서 재현할 수 있습니다.
상류(upstream)에서 소스 컬럼(source column)의 타입이 변경됩니다. 다음 실행 시, Rocky는 소스와 타겟(target)을 비교(diff)하여 타겟을 삭제하고 다시 생성합니다. 소리 없는 데이터 손상(silent data corruption)이나 dbt 방식의 조용한 불일치(quiet divergence)가 발생하지 않습니다.
필수 컬럼 누락, 보호된 컬럼 삭제 또는 안전하지 않은 타입 변경은 단 한 줄의 데이터가 쓰여지기 전에 진단 코드(E010, E013)로 나타납니다.
브랜치를 생성하고, 격리된 스키마(schema)에서 실행하여 검사한 다음, 삭제하거나 승격(promote)시키세요. 컬럼 레벨 리니지(column-level lineage)는 배포 전 하류(downstream)에 미치는 영향 범위(blast radius)를 보여줍니다.
하류의 팩트(fact) 컬럼 하나를 집계(aggregations) 과정을 거쳐 시드(seed)까지 역추적하세요. 모든 모델을 읽지 않고도 영향 범위 분석(blast-radius analysis)이 가능합니다.
원하는 내용을 평이한 영어로 설명하세요. Rocky는 Rocky DSL 모델을 생성하고 컴파일하며, 파싱 실패 시 재시도합니다. Attempts: 2 라인은 첫 번째 시도의 오류를 보이지 않게 잡아내는 루프를 보여줍니다.
두 개의 git 참조(refs)를 비교하여 변경된 컬럼별로 하류 소비자(downstream consumers)에 대한 판독값을 얻으세요. 미리 렌더링된 Markdown은 GitHub PR 댓글에 바로 삽입할 수 있습니다. CODEOWNERS 방식의 리뷰 도구는 컴파일된 엔진 없이는 이러한 세밀함(granularity)에 도달할 수 없습니다.
모델 사이드카(sidecar)에 PII(개인정보) 컬럼을 태깅하세요. 태그를 [mask] 또는 [mask.<env>]의 마스킹 전략에 바인딩합니다. rocky compliance --env prod --fail-on exception 명령을 사용하세요.
분류된 컬럼에 해결된 전략(resolved strategy)이 없는 즉시 exits 1을 반환합니다. 이는 실수로 마스킹되지 않은 데이터가 노출되는 것을 방지하기 위한 한 줄짜리 CI 게이트(gate)입니다.
strategy = "incremental"에
timestamp_column을 추가하는 것만으로 충분합니다. Rocky는 임베디드 상태 저장소(embedded state store)에 하이 워터마크(high-water mark)를 기록하며, 이후 실행 시에는 INSERT … WHERE timestamp > watermark만 수행합니다.
500개의 행을 로드한 후 25개의 행을 추가(append)해도, 두 번째 실행은 0.2초 만에 완료됩니다.
| 경로 | 아티팩트 (Artifact) | 언어 | 설명 |
|---|---|---|---|
engine/ | rocky CLI 바이너리 | Rust | 핵심 SQL 변환 엔진 — 21개의 크레이트(crate)로 구성된 Cargo 워크스페이스 |
integrations/dagster/ | dagster-rocky PyPI 휠 (wheel) | Python | Rocky CLI를 래핑하는 Dagster 리소스 및 컴포넌트 |
editors/vscode/ | Rocky VSIX | TypeScript | VS Code 확장 프로그램 — LSP 클라이언트 + AI 기능을 위한 명령 |
examples/playground/ | (설정만 포함) | TOML / SQL | 스모크 테스트(smoke tests) 및 벤치마크에 사용되는 독립형 DuckDB 샘플 파이프라인 |
각 하위 프로젝트에는 상세한 사용법이 담긴 자체 README가 있습니다. engine/README.md는 Rocky CLI에 대한 공식 제품 참조 문서입니다.
| 역할 | 어댑터 (Adapter) | 상태 | 비고 |
|---|---|---|---|
| 웨어하우스 (Warehouse) | Databricks | 프로덕션 (Production) | SQL 문 API · Unity Catalog · 브랜치를 위한 SHALLOW CLONE |
| ... |
Rocky에 기본 포함되지 않은 웨어하우스(ClickHouse, Redshift 등)를 구축하시겠습니까? 어댑터 SDK 가이드와 Rust 네이티브 스켈레톤 POC(Proof of Concept)를 참조하세요.
git clone https://github.com/rocky-data/rocky.git
cd rocky
just build # engine + dagster wheel + vscode extension 빌드
...
just는 선택 사항입니다. 각 하위 프로젝트를 직접 빌드할 수도 있습니다. 하위 프로젝트별 빌드 명령은 CONTRIBUTING.md를 참조하세요.
각 아티팩트는 태그 네임스페이스(tag-namespaced) 방식을 사용하여 독립적으로 릴리스됩니다:
engine-v* → Rocky CLI 바이너리 (교차 컴파일됨, GitHub Releases 제공)
dagster-v* → dagster-rocky 휠 (wheel)
vscode-v* → Rocky VSIX
전체 릴리스 흐름은 CONTRIBUTING.md를 참조하세요.
전체 문서: rocky-data.dev — 개념, 가이드, CLI 참조, Dagster 통합, 어댑터 SDK.
CONTRIBUTING.md를 참조하세요.
. PR (Pull Request)을 열기 전에, 프로젝트 간 변경 가이드라인(cross-project change guidance)을 읽어주세요. 스키마(schema) 및 DSL 변경 사항은 소비자(consumers)를 원자적(atomically)으로 업데이트해야 합니다.
Rocky는 자유 및 오픈 소스입니다. 만약 이 프로젝트가 팀의 시간을 절약해 준다면, 개발이 지속될 수 있도록 프로젝트 후원을 고려해 주세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 HN Design Systems의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기