delta-io/delta
An open-source storage framework that enables building a Lakehouse architecture with compute engines including Spark, PrestoDB, Flink, Trino, and Hive and APIs
그것이 무엇인가
Delta Lake는 레이크하우스 아키텍처를 구축할 수 있는 오픈소스 스토리지 프레임워크입니다. 이는 데이터 레이크의 저비용 스토리지와 데이터 웨어하우스의 신뢰성 및 트랜잭션 기능을 결합한 시스템입니다. Apache Spark, PrestoDB, Flink, Trino, Hive와 같은 인기 있는 데이터 처리 엔진과 함께 작동하며, Scala, Java, Rust, Ruby, Python용 API를 제공합니다.
이 저장소(delta-io/delta)는 핵심 프로젝트이지만, delta.io 조직 아래의 더 큰 Delta Lake 저장소 제품군(delta-rs, delta-sharing, kafka-delta-ingest 등)의 일부입니다.
주요 기능
- ACID 트랜잭션 — Delta Lake는 동시 읽기 및 쓰기가 직렬화 가능(즉, 작업이 어떤 순서로 한 번에 하나씩 발생한 것과 같은 결과)함을 보장합니다. 이는 모든 변경 사항을 기록하는 트랜잭션 로그를 통해 달성됩니다.
- 다중 커넥터 — README는 다음 통합을 강조합니다:
- Apache Spark(읽기 및 쓰기)
- Apache Flink(쓰기, 미리 보기)
- PrestoDB(읽기)
- Trino(읽기 및 쓰기)
- Delta Standalone(Scala/Java 프로젝트용 단일 노드 Java 라이브러리, Flink, Hive, Beam, PrestoDB 포함)
- Apache Hive(읽기)
- Delta Rust API(Rust용 저수준 액세스, Python 및 Ruby 바인딩 포함)
작동 방식(트랜잭션 프로토콜)
Delta Lake의 보장은 Delta 트랜잭션 로그 프로토콜(PROTOCOL.md 파일에 지정됨)에서 비롯됩니다. 이 프로토콜은 테이블 메타데이터가 트랜잭션 로그에 저장되는 방식을 정의하며, 형식에 트랜잭션 동작을 부여합니다. Delta Standalone 라이브러리는 이 프로토콜을 구현하여 비 Spark 도구가 Delta 테이블을 읽고 쓸 수 있게 합니다.
호환성
- API 호환성: 문서화된 공개 API(Scala, Java, Python)는 안정적입니다. Spark 기반 API(
spark.read및df.write등)는 주요 릴리스(예: 1.x.x) 내에서 안정적으로 유지됩니다. 내부 클래스는 변경될 수 있습니다. - 데이터 스토리지 호환성: 최신 버전의 Delta Lake는 항상 이전 버전으로 작성된 테이블을 읽을 수 있습니다(이전 버전 호환성). 그러나 이전 버전은 최신 버전으로 작성된 테이블을 읽지 못할 수 있습니다(향후 버전 호환성은 보장되지 않음) — 이는 트랜잭션 프로토콜에 새 기능이 추가될 때 발생하며, 최소 리더/라이터 버전을 증가시켜 알립니다.
기본 스토리지 요구 사항
Delta Lake의 ACID 보장은 스토리지 시스템이 다음 세 가지를 제공하는 데 의존합니다:
- 원자적 가시성 — 파일은 완전히 보이거나 전혀 보이지 않아야 합니다.
- 상호 배타 — 최종 대상에서 파일을 만들거나 이름을 바꿀 수 있는 작성자는 하나뿐입니다.
- 일관된 목록 나열 — 파일이 작성된 후 모든 향후 디렉터리 목록에는 해당 파일이 포함되어야 합니다.
빌드 및 개발
- 프로젝트는 SBT(Scala 빌드 도구)로 컴파일됩니다.
- 빌드하려면 Java 17 이상이 필요합니다(
java -version으로 확인). - 일반적인 명령:
build/sbt compile,build/sbt package,build/sbt test. - Python 테스트의 경우 README는 Conda 환경(해당 특정 빌드 경로에는 JDK 11 필요)을 설정하고
python/run-tests.py를 실행하는 방법을 설명합니다. - IntelliJ 개발의 경우 README는 JDK 11을 권장하고 자세한 설정 단계(생성된 파서 파일 문제 해결 포함)를 제공합니다.
커뮤니티 및 라이선스
- 라이선스: Apache License 2.0.
- 커뮤니티 채널: Slack(go.delta.io/slack에서 등록), LinkedIn, YouTube, 공개 메일링 리스트.
- 기여는 환영하며, 프로젝트는 행동 강령을 따릅니다.
다음 단계
README는 전체 세부 사항은 Delta Lake 문서, Scala/Java/Python용 빠른 시작 가이드, 향후 계획은 로드맵을 참조합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트