TL;DR
- Ursa는 오브젝트 스토리지용 스트림 저장 API·명세인 Lakestream을 구현하고 스트림을 레이크하우스 테이블로 구체화하는 스토리지 엔진임.
- Ursa 1.0은
org.openlakestream그룹으로 Maven Central에 공개되며, Java 프로그램에 임베드할 수 있음. - 오브젝트·블록·파일 스토리지를 스트림 저장소로 전환해 디스크리스·리더리스 구조를 지원함.
- Delta Lake, Apache Iceberg, ClickHouse 등과 연계해 스트림 데이터를 외부 분석 테이블로 전달함.
- AWS S3, Google Cloud Storage, Azure Blob Storage를 지원하며, Kafka 배포판인 Ursa for Apache Kafka (UFK)는 디스크리스 토픽을 Ursa에 저장함.
Ursa
- Ursa는 레이크하우스 패러다임에서 스트림을 저장 기본 요소로 다루는 스토리지 엔진임.
- 오브젝트 스토리지의 스트림 저장을 위한 개방형 API·명세인 Lakestream과, 스트림을 레이크하우스 테이블로 전환하는 방식을 정의하는 스트림 구체화 프레임워크를 구현함.
- 모든 오브젝트·블록·파일 저장소를 스트림 저장소로 전환하고, 스트림을 레이크하우스 테이블과 기타 질의 가능한 상태로 구체화함.
- Ursa 1.0은
org.openlakestream그룹으로 Maven Central에 공개되며, 빠른 시작 예제는 Java 프로그램에 Ursa를 임베드함. - 메시징 브로커에 임베드하도록 설계됐으며, Apache Kafka 배포판인 Ursa for Apache Kafka (UFK)는 Lakestream API·명세를 기반으로 하고 디스크리스 토픽을 Ursa에 저장함.
원칙
스트림 저장 및 테이블 구체화
- 스트리밍 읽기와 재생을 위해 스트림 레코드를 쓰기 선행 로그(WAL)와 오프셋 인덱스가 포함된 압축 객체(Compacted Objects)에 보관함.
- 선택적 테이블 구체화 기능은 레코드를 외부 분석 테이블로 전달하며, 해당 테이블의 파일과 수명 주기는 내부 스트림 저장소와 독립적임.
디스크리스·리더리스 아키텍처
- 모든 오브젝트·블록·파일 저장소를 공유 로그 또는 스트림 저장소로 전환함으로써, 저장소 엔진을 브로커 프로토콜에 결합하지 않는 디스크리스 이벤트 스트리밍 통합을 지원함.
- 파티션의 단일 장애 지점 또는 병목이 없음.
- 가용 영역 간 네트워크 트래픽이 감소함.
- 리더 선출이나 리밸런싱이 필요하지 않아 운영 복잡성이 낮아짐.
- 이벤트 브로커에 리밸런싱이 필요 없는 아키텍처임.
통합 테이블 전달
- 백그라운드 구체화는 내부 압축과 동일한 WAL 읽기 패스를 사용해 스트림 레코드를 외부 테이블로 전달함.
- 애플리케이션은 스트림 API로 보관된 레코드를 소비하고 대상 테이블의 API로 전달된 사본을 질의할 수 있음.
주요 기능
- 스트림 우선 저장 기본 요소: 데이터 스트림과 레이크하우스 테이블을 위한 통합 추상화
- 멀티클라우드 지원: AWS S3, Google Cloud Storage, Azure Blob Storage
- 레이크하우스 통합: 다중 카탈로그 지원을 포함한 Delta Lake 및 Apache Iceberg
- 고성능: 읽기·쓰기 캐싱, 배칭, 프리페칭 최적화
- 관측 가능성: 저장소 및 압축 경로에 대한 메트릭(메트릭스 참조)
개념 및 아키텍처
- 스토리지 개념
- 레이크하우스 테이블
- 기능 매트릭스
모듈
lakestream-api: 프로토콜 중립적인 스트림·로그·카탈로그 APIursa-storage-core: 여러 저장소 백엔드를 지원하는 핵심 스토리지 엔진ursa-storage-common: 공유 유틸리티, 예외, 공통 인터페이스ursa-storage-lakestream: Lakestream API 구현 및 카탈로그ursa-storage-materialization: 스트림-테이블 구체화 SPI 및 Kafka 코덱ursa-storage-lakehouse: 카탈로그 지원을 포함하는 레이크하우스 통합ursa-storage-lakehouse-kafka-reader: 격리된 Kafka 압축 데이터 리더ursa-storage-kafka-runtime: Lakestream API 뒤에서 Ursa와 Kafka 압축 읽기를 연결하는 리프 런타임ursa-storage-clickhouse: ClickHouse 구체화 싱크ursa-storage-compact: 분산 압축 서비스ursa-storage-containers: 테스트 인프라 및 Testcontainersursa-storage-test: 통합 및 종단 간 테스트ursa-storage-tools: 성능 테스트 및 벤치마킹 도구
빌드 및 실행
- 전체 빌드 및 로컬 실행 안내는 로컬 빌드 및 실행 문서를 참조함.
개발
- 프로젝트 기여 방법은 기여 가이드를 참조함.
지원
- 이슈: GitHub Issues에서 버그 및 기능 요청을 보고함.
- 문서: 자세한 가이드는
docs/를 참조함. - 질문: GitHub Discussions에서 질문함.
- 명세: Lakestream API 및 명세는 openlakestream.org에 문서화됨.
라이선스
- Ursa의 라이선스는 Apache License, Version 2.0임.
- 바이너리 배포판에는 Apache 2.0 및 기타 허용적 라이선스의 서드파티 JAR만 포함됨.
- JSON Schema 및 Protobuf 레코드는 Confluent Community License 제공자 아티팩트 없이 디코딩됨. 자세한 내용은 서드파티 라이선스 안내와 빌드 가드레일을 참조함.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요