Snowflake의 Zero-Copy Clone 이해하기

Daniel
Snowflake Korea
Published in
4 min readJul 22, 2022

데이터 플랫폼 환경에서 테이블의 복제는 비지니스 지원 및 오퍼레이션에서 일반적으로 필요한 일 입니다. 오늘 날까지 대부분의 데이터 플랫폼 환경에서 복제 테이블을 만들려면 원본 테이블의 데이터를 물리적으로 복사해야하여 오랜 시간과 중복 스토리지 비용이 발생합니다. 반면에, Snowflake의 Zero-Copy Clone 기능은 데이터의 물리적 복사 없이 논리적인 방식으로 몇 초 내에 테라바이트 급의 데이터의 복제 본을 만들 수 있는 매우 유니크하고 강력한 기능입니다. 어떻게 이게 가능한지 알아보겠습니다.

Snowflake는 데이터를 물리적으로 어떻게 저장할까요?

Snowflake는 약 16MB의 데이터 블록 크기인 Micro-Partition 파일들로 스토리지에 데이터를 저장합니다. Micro-Partition은 한 번 작성되면 수정할 수 없는 Immutable 데이터 파일 입니다. Snowflake는 각 Micro-Partition을 순서대로 작성하고 각 파일의 버전을 관리합니다.

위의 다이어그램은 Sales 테이블에 데이터 행을 Insert 하는 모습이며, 첫 번째 Micro-Partition이 충분한 크기가 되면 새로운 Micro-Partition에 계속해서 데이터 행을 추가합니다.

실제로 각 Micro-Partition은 Snowflake Cloud Services 계층에 저장되는 소량의 메타데이터와 Amazon S3와 같은 클라우드 스토리지에 물리적으로 보관되는 데이터, 이 두가지로 구성됩니다.

위의 다이어그램은 Snowflake Cloud Services 계층의 Sales 테이블에 대한 메타데이터와 해당 테이블의 Micro-Partition 파일들이 S3 스토리지에 물리적으로 저장되는 방식을 보여줍니다. 메타데이터는 물리적 스토리지에 저장 된 Micro-Partition을 포인팅하는 아마도 수백 바이트 정도의 데이터이므로, 물리적 스토리지에 저장 된 데이터와 비교할 때 매우 작은 규모입니다. Snowflake의 복제가 믿을 수 없을 정도로 빠른 이유를 설명하는 데 도움이 되는 중요한 정보입니다.

Snowflake는 어떻게 테이블을 빨리 복제할까요?

아래 다이어그램은 Snowflake가 몇 초 안에 테라바이트의 데이터를 복제할 수 있는 방법을 보여줍니다. Snowflake는 다른 데이터 복제 솔루션과 달리 실제로 물리적 데이터를 복사하지 않고 물리적 데이터의 메타데이터 포인터 정보를 새 테이블에 복사합니다. 즉, 컴퓨팅이나 스토리지 비용을 발생시키지 않고 몇 초 안에 테라바이트의 데이터를 복제 할 수 있습니다. 그래서 전체 복제 작업에 비용이 들지 않으므로, 저희는 이 기능을 Zero-Copy Clone 이라고 부릅니다.

위 예제에서 Sales 테이블은 복제되어 Sales_Backup 테이블을 생성합니다. 그리고 Sales_Backup 테이블은 원본 테이블인 Sales 테이블의 영향을 주지 않고, Insert, Update, Delete 또는 Drop 작업을 실행할 수 있는 완전한 독립적인 테이블로 사용할 수 있습니다.

끝으로…

이 번 글에서는 Snowflake의 데이터 저장 방식과 Zero-Copy Clone이 어떤 기능이며 어떻게 빠른 복제를 할 수 있는 지에 대해 간단히 알아보았습니다. Snowflake의 Zero-Copy Clone은 테이블 수준 외에도 스키마 및 데이터베이스 수준에서도 전체를 복제 할 수 있습니다. 데이터 플랫폼 운영팀은 Zero-Copy Clone 기능을 업무에 잘 활용하시면, 비지니스에 필요한 민첩성을 지원하면서 운영 및 비용 효율성의 효과를 얻을 수 있습니다.

--

--