안녕하세요!
지난해 12월 스노우플레이크 데이터 플랫폼에서 공식 아이스버그를 출시하였는데요📢
과연 아이스버그가 어떠한 기능을 가지고 있기에 스노우플레이크에서 출시되었는지 알아보겠습니다!
💡아이스버그란?
아이스버그는 데이터레이크의 약점인 데이터 무결성 등의 문제들을 해결하는 오픈소스인데요!
데이터웨어하우스, 데이터레이크가 합쳐진 데이터레이크하우스입니다.
기존 데이터레이크는 데이터의 원자성, 일관성, 격리성, 지속성(ACID)등의 특성을 확보하기 위해 복잡한 기술을 동원해야했습니다.
하지만, 넷플릭스 프로젝트를 통하여 넷플릭스 인프라의 서비스와 엔진에 활용되는 아파치 하이브에서 데이터 ACID 특성을 보장하기 위해 설계되었고 아이스버그를 이용하여 무결성을 보장할 수 있게 되었습니다.
그리하여 2018년 오픈소스 소프트웨어 단체인 아파치 소프트웨어 재단에 기부된 오픈 소스 테이블 형식이 바로 아이스버그 입니다.
그러면 아이스버그의 주요 기능들이 무엇이 있는지 알아보겠습니다!
💡아이스버그 기능
📌Upsert(Update+Insert) 및 삭제(Delete)지원
아이스버그는 새로운 데이터를 병합하고, 기존 행을 업데이트하고, 대상 삭제를 수행하는 유연한 SQL 명령을 지원합니다. 아이스버그는 읽기 성능을 위해 데이터 파일을 열심히 다시 쓰거나 더 빠른 업데이트를 위해 삭제 사용할 수 있습니다.
데이터를 안전하게 추가, 삭제, 업데이트, 이름 변경이 가능하게 됩니다.
📌스키마 진화
스키마 진화란 추가, 삭제, 이름바꾸기, 업데이트, 재정렬이 가능합니다.
아이스버그 스키마 업데이트는 메타데이터 변경이므로 업데이트를 수행하기 위해 데이터파일을 다시 작성할 필요가 없습니다.
스키마는 컬럼으로 생각하시면 됩니다.
컬럼은 테이블이 가지고 있는 카테고리로써 데이터레이크에서는 스키마 및 데이터를 변경하려면 테이블을 다시 만들어야했었습니다. 그렇기 때문에 해당 기능을 통하여 번거로운 작업을 많이 줄이게 된것이죠!
📌파티셔닝
파티셔닝은 유사한 행을 그룹화하여 큰 테이블을 작은 테이블로 나누고, 데이터의 일부에만 액세스하기때문에 쿼리의 읽기 및 로드 시간을 단축합니다. 각 파티션 버전과 관련된 메타데이터는 별도로 저장됩니다.
예를 들면 1월 생일자의 고객을 조회하고 싶습니다. 하지만 모든 데이터를 다 읽기는 너무 많은 데이터가 있기 때문에 시간이 오래걸립니다.
그렇다면 1,2월 유사한 생일 월로 그룹화하여, 파티셔닝한 데이터만 조회하면되는겁니다. 그렇기때문에 로드 시간을 단축하게 되었고 파티션으로 나눈 버전들은 별도로 관리하게 되어 관리도 용이하게 됩니다.
📌Time Travel & Rollback 기능 지원
아이스버그 타임 트레블을 사용하면 동일한 테이블 스냅샷*에 대해 재현 가능한 쿼리를 실행할 수 있으며 사용자는 이전 변경 사항을 검토할 수 있습니다. 버전 롤백을 통해서 문제가 발생하거나 되돌려야 할 때 이전 상태로 신속하게 재설정 할 수 있습니다.
*스냅샷: 특정 시점의 테이블 형상을 기록한 파일
📌ACID 보장
데이터 레이크 아키텍처에저장된 데이터는 조직 전체의 여러 독립 애플리케이션은 동시에 사용할 수 있는데요.
이는 상당한 이점이지만 시스템적으로 오류를 초래할 수 있습니다. 특히 여러 사용자가 동시에 동일한 데이터를 쓰는 경우엔 더욱 그렇습니다.
그러나 Iceberg는 대규모 ACID 트랜잭션을 지원하므로 동시 사용자가 동시에 작업할 수 있습니다. 사용자가 데이터를 업데이트 하면 Iceberg는 테이블 데이터 파일과 메타데이터의 새 버전을 생성합니다.
이해하기 쉽게 하기 아이스버그 아키텍처를 보시면 데이터를 읽기 위해서는 아이스버그 카탈로그 부터 시작하여 메타데이터 파일, 매니패스트 리스트, 매니패스트 파일, 데이터 파일로 읽게 됩니다.
그렇다면 메타데이터 파일에 있는 s1버전 말고 s2버전을 생성하는 중에 s1버전을 읽게 된다면 데이터레이크에서는 오류가 발생하게 됩니다.
아이스버그에서는 메타데이터 파일의 s2버전을 데이터레이어에 있는 데이터 파일부터 먼저 생성하게 됩니다.
그 후 매니패스트 파일, 매니패스트 리스트가 생성된 후 메타데이터 파일에 s2 버전이 생성되기때문에 다른사람이 동시에 s1메타데이터 파일을 조회하게 되더라도 s2생성 과정에 오류가 발생하지 않게 되는거죠!

이러한 이점들을 가진 아이스버그 기능을 스노우플레이크에 출시되었으니 많은 관심 부탁드립니다!
더 궁금하신 내용이 있다면 문의하기 또는 아래 이메일로 문의 주세요!

문의하기

안녕하세요!
지난해 12월 스노우플레이크 데이터 플랫폼에서 공식 아이스버그를 출시하였는데요📢
과연 아이스버그가 어떠한 기능을 가지고 있기에 스노우플레이크에서 출시되었는지 알아보겠습니다!
💡아이스버그란?
아이스버그는 데이터레이크의 약점인 데이터 무결성 등의 문제들을 해결하는 오픈소스인데요!
데이터웨어하우스, 데이터레이크가 합쳐진 데이터레이크하우스입니다.
기존 데이터레이크는 데이터의 원자성, 일관성, 격리성, 지속성(ACID)등의 특성을 확보하기 위해 복잡한 기술을 동원해야했습니다.
하지만, 넷플릭스 프로젝트를 통하여 넷플릭스 인프라의 서비스와 엔진에 활용되는 아파치 하이브에서 데이터 ACID 특성을 보장하기 위해 설계되었고 아이스버그를 이용하여 무결성을 보장할 수 있게 되었습니다.
그리하여 2018년 오픈소스 소프트웨어 단체인 아파치 소프트웨어 재단에 기부된 오픈 소스 테이블 형식이 바로 아이스버그 입니다.
그러면 아이스버그의 주요 기능들이 무엇이 있는지 알아보겠습니다!
💡아이스버그 기능
📌Upsert(Update+Insert) 및 삭제(Delete)지원
아이스버그는 새로운 데이터를 병합하고, 기존 행을 업데이트하고, 대상 삭제를 수행하는 유연한 SQL 명령을 지원합니다. 아이스버그는 읽기 성능을 위해 데이터 파일을 열심히 다시 쓰거나 더 빠른 업데이트를 위해 삭제 사용할 수 있습니다.
데이터를 안전하게 추가, 삭제, 업데이트, 이름 변경이 가능하게 됩니다.
📌스키마 진화
스키마 진화란 추가, 삭제, 이름바꾸기, 업데이트, 재정렬이 가능합니다.
아이스버그 스키마 업데이트는 메타데이터 변경이므로 업데이트를 수행하기 위해 데이터파일을 다시 작성할 필요가 없습니다.
스키마는 컬럼으로 생각하시면 됩니다.
컬럼은 테이블이 가지고 있는 카테고리로써 데이터레이크에서는 스키마 및 데이터를 변경하려면 테이블을 다시 만들어야했었습니다. 그렇기 때문에 해당 기능을 통하여 번거로운 작업을 많이 줄이게 된것이죠!
📌파티셔닝
파티셔닝은 유사한 행을 그룹화하여 큰 테이블을 작은 테이블로 나누고, 데이터의 일부에만 액세스하기때문에 쿼리의 읽기 및 로드 시간을 단축합니다. 각 파티션 버전과 관련된 메타데이터는 별도로 저장됩니다.
예를 들면 1월 생일자의 고객을 조회하고 싶습니다. 하지만 모든 데이터를 다 읽기는 너무 많은 데이터가 있기 때문에 시간이 오래걸립니다.
그렇다면 1,2월 유사한 생일 월로 그룹화하여, 파티셔닝한 데이터만 조회하면되는겁니다. 그렇기때문에 로드 시간을 단축하게 되었고 파티션으로 나눈 버전들은 별도로 관리하게 되어 관리도 용이하게 됩니다.
📌Time Travel & Rollback 기능 지원
아이스버그 타임 트레블을 사용하면 동일한 테이블 스냅샷*에 대해 재현 가능한 쿼리를 실행할 수 있으며 사용자는 이전 변경 사항을 검토할 수 있습니다. 버전 롤백을 통해서 문제가 발생하거나 되돌려야 할 때 이전 상태로 신속하게 재설정 할 수 있습니다.
*스냅샷: 특정 시점의 테이블 형상을 기록한 파일
📌ACID 보장
데이터 레이크 아키텍처에저장된 데이터는 조직 전체의 여러 독립 애플리케이션은 동시에 사용할 수 있는데요.
이는 상당한 이점이지만 시스템적으로 오류를 초래할 수 있습니다. 특히 여러 사용자가 동시에 동일한 데이터를 쓰는 경우엔 더욱 그렇습니다.
그러나 Iceberg는 대규모 ACID 트랜잭션을 지원하므로 동시 사용자가 동시에 작업할 수 있습니다. 사용자가 데이터를 업데이트 하면 Iceberg는 테이블 데이터 파일과 메타데이터의 새 버전을 생성합니다.
이해하기 쉽게 하기 아이스버그 아키텍처를 보시면 데이터를 읽기 위해서는 아이스버그 카탈로그 부터 시작하여 메타데이터 파일, 매니패스트 리스트, 매니패스트 파일, 데이터 파일로 읽게 됩니다.
그렇다면 메타데이터 파일에 있는 s1버전 말고 s2버전을 생성하는 중에 s1버전을 읽게 된다면 데이터레이크에서는 오류가 발생하게 됩니다.
아이스버그에서는 메타데이터 파일의 s2버전을 데이터레이어에 있는 데이터 파일부터 먼저 생성하게 됩니다.
그 후 매니패스트 파일, 매니패스트 리스트가 생성된 후 메타데이터 파일에 s2 버전이 생성되기때문에 다른사람이 동시에 s1메타데이터 파일을 조회하게 되더라도 s2생성 과정에 오류가 발생하지 않게 되는거죠!

이러한 이점들을 가진 아이스버그 기능을 스노우플레이크에 출시되었으니 많은 관심 부탁드립니다!
더 궁금하신 내용이 있다면 문의하기 또는 아래 이메일로 문의 주세요!
문의하기