Delta Lake란 무엇인가요

Delta Lake란 무엇인가요

Parquet 파일을 그대로 쓰면 파일 조각이 늘어날수록 일관성 관리가 어려워져요. Delta Lake는 Parquet 데이터 파일에 파일 기반 트랜잭션 로그를 더해 ACID 트랜잭션을 보장하고, 큰 규모에서도 메타데이터를 효율적으로 다룰 수 있게 해 주는 최적화된 저장 계층이에요. 오픈소스로 제공되며, Databricks 레이크하우스에서 테이블의 기반이 됩니다.

Databricks에서의 위치

Delta Lake는 Databricks의 모든 연산에 쓰이는 기본 포맷이에요. 특별히 다른 지정을 하지 않으면 Databricks의 모든 테이블은 델타 테이블이죠. Apache Spark DataFrame API든 SQL이든 기본 설정만으로 저장하면 Delta Lake의 이점을 그대로 얻습니다.

Databricks가 원래 Delta Lake 프로토콜을 개발했고 현재도 오픈소스 프로젝트에 적극적으로 기여하고 있어요. 플랫폼의 많은 최적화와 제품이 Apache Spark와 Delta Lake가 보장하는 특성 위에 만들어졌죠.

트랜잭션 로그는 잘 정의된 공개 프로토콜이라 어떤 시스템이든 로그를 읽을 수 있어요. 자세한 규약은 Delta Transaction Log Protocol에서 확인할 수 있습니다.

핵심 기능

트랜잭션과 데이터 갱신 — Delta Lake의 원자적 트랜잭션은 데이터와 메타데이터를 갱신하는 여러 방법을 제공해요. Databricks는 파일 디렉토리의 데이터·트랜잭션 로그 파일을 직접 건드리지 말 것을 권장하는데, 그러면 테이블이 손상될 수 있기 때문이죠.

  • merge로 upsert — 조건 기반으로 행을 삽입·갱신·삭제하는 병합 연산을 지원합니다.
  • 선택적 덮어쓰기 — 필터와 파티션을 기준으로 특정 부분만 덮어쓸 수 있어요.
  • 스키마 갱신 — 데이터를 다시 쓰지 않고 테이블 스키마를 수동 또는 자동으로 변경합니다.
  • 컬럼 매핑 — 데이터를 다시 쓰지 않고 컬럼의 이름을 바꾸거나 삭제할 수 있어요.

스트리밍과 버전 관리 — Delta Lake는 Databricks의 Structured Streaming에 맞춰 최적화돼 있어요. 배치와 스트리밍 양쪽에 데이터 사본 하나를 쓰고, 규모에 맞는 증분 처리를 제공하죠. 델타 테이블에 쓰기를 할 때마다 새 테이블 버전이 생기므로 트랜잭션 로그로 변경 이력을 검토하고 이전 버전을 조회할 수 있습니다.

스키마 강제 — Delta Lake는 쓰기 시점에 스키마를 검증해 테이블에 쓰이는 모든 데이터가 설정한 요건을 만족하는지 확인해요. 이 덕분에 잘못된 데이터가 조용히 섞여 들어가는 일을 막을 수 있어요.

도구와 참고

Delta 테이블의 대부분 읽기·쓰기 연산은 Spark SQL이나 Apache Spark DataFrame API로 할 수 있고, Delta Lake 전용 SQL 문은 별도로 정리돼 있어요. Databricks Runtime에 패키징된 Delta Lake API 버전은 릴리스 노트의 System environment 섹션에서 확인할 수 있고, Python·Scala·Java API 문서는 OSS Delta Lake 문서에서 볼 수 있어요. Delta Lake 기능이 모든 Databricks Runtime 버전에 있는 건 아니므로 기능 호환성과 프로토콜 문서를 확인하는 게 좋습니다.

또한 데이터를 정제·강화하며 일련의 테이블을 거쳐 처리하는 메달리온 아키텍처가 권장되며, Databricks는 파이프라인 구축을 빠르게 해 주는 ETL 도구들을 제공해요.

출처: What is Delta Lake in Databricks? — Databricks on AWS

더 알아보기