많은 종류의 데이터 작업이 ACID 트랜잭션이나 일관성을 위한 스키마 강제, 보안용 메타데이터 관리 등의 기능을 필요로 하며, 데이터의 개별 버전을 다루는 역량도 필요하다. 하지만 이런 기능이 모두 데이터 소스에 표준으로 있는 것은 아닌데, 델타 레이크는 모든 스파크 데이터프레임 데이터 소스용으로 이들 기능을 제공한다.
델타 레이크는 HDFS와 같은 스토리지 시스템에 액세스하는 데 잠깐씩 사용하는 대체 기능으로 사용할 수 있다. 델타레이크를 통해 스파크에 주입된 데이터는 사용자가 선택한 클라우드 스토리지 서비스에 파케이(Parquet) 형식으로 저장된다. 개발자는 자바나 파이썬, 스칼라를 사용해 델타 레이크 API에 액세스할 수 있다.
데이터를 읽고 쓰는 데 사용하는 스파크 SQL 데이터프레임 기능 같은 기존 기능 대부분을 지원하며, 데이터 소스나 목적지로 스파크 스트럭처드 스트리밍(Spark Structured Streaming)도 지원한다. DStream API는 지원하지 않는다. 델타 레이크를 통해 이뤄지는 모든 쓰기 및 읽기 작업은 ACID 트랜잭션이 보장되기 때문에 다중 기록은 일련화되고 다중 읽기는 일관성 있는 스냅샷을 보여준다.
데이터 세트의 특정 버전을 읽는 작업을 델타 레이크 문서는 “시간 여행(Time Travel)”이라고 부르는데, 데이터프레임을 관련 타임스탬프나 버전 ID와 함께 읽는 것처럼 동작한다. 델타 레이크는 또한 기록할 테이블을 일치시켜 데이터프레임의 스키마를 보장한다. 만약 일치가 이뤄지지 않으면, 스키마를 바꾸지 않고 예외로 처리한다.
현재는 데이터프레임에 중점을 두고 있지만, 장기적으로는 더 많은 스파크 공개 API를 지원할 계획이다. editor@itworld.co.kr