본문 바로가기

공부

Data Warehouse 기반 데이터 플랫폼 Snowflake

반응형

 

 

TMI지만, 분산 시스템에서 유일한 ID를 만드는 방법 중에 UUID와 Snowflake ID 방식이 있고 한다.

거기서 말하는 Snowflake ID는 Twitter에서 만든것이며,

여기서 이야기하는 Data Warehousing 플랫폼인 Snowflake는 다른 플랫폼에 다른 회사라고 한다.

 

Data Warehouse

Data Warehouse는 데이터 중앙 리포지토리이다.

데이터는 다양한 소스로부터 들어오게 되는데, 이를 파이프라인을 구축하여 하나의 통합 플랫폼으로 모아 사용할 수 있다.

여기서 파이프라인은 ETL 파이프라인을 가르키고, 하나의 통합 플랫폼은 Data Warehouse를 의미한다.

 

데이터를 추출(Extract)하여 사용가능한 형식으로 가공(Transform)하고 Data WareHouse로 적재(Load)하는 일련의 과정이 이루어진다.

 

 

Data Warehouse는 실제 분석을 위한 데이터를 관리하기 위한 플랫폼으로, 전처리가 완료된 데이터가 저장된다.

OLTP보다 OLAP에 특화되어 트랜잭션 기반의 작업보다 다소 복잡한 SELECT 쿼리가 동반된 분석 작업에 많이 사용된다.

 

OLTP vs OLAP

 

특징

- 표준 SQL을 지원하여, DDL, DML 쿼리 모두 가능

- columnar format을 기반으로 하여, 같은 타입의 데이터를 저장하여 데이터 압축 효율이 높음

예를들어, 금융 시계열 데이터와 같이 비슷한 값이 중복되는 경우 압축 효율이 크게 작용

- 조회 쿼리에서 필요 칼럼만 가져와 로드 속도 빠름

- 기존 RDBMS 형식과 다르게, 정규화된 테이블보다는 역정규화된 하나의 테이블로 저장하는 것이 유리

- storage와 computing 엔진이 분리되어 각각의 리소스에 대한 확장성 용이

- MPP(대규모 병렬 처리)를 지원하며, 여러 노드에 데이터를 쪼개 로드하여 처리

 

Data Warehouse를 도입한 계기

기존에 데이터를 사용하려면, RDB, AWS S3, 등 데이터 소스에 접근하여 필요한 데이터를 직접 가져와서 사용한다.

이는 이기종 데이터 간에 통합이 어렵고 데이터 소스에 대한 개별적 관리 필요

 

통합 데이터 플랫폼을 구축하기 위해, 데이터 소스를 하나의 데이터베이스로 모아 사용한다.

전체 데이터 크기가 커지면, 안정성을 위해 데이터베이스를 파티셔닝하거나 클러스터로 구성하여 관리

온프레미스로 구축할 경우 데이터베이스에 대한 운영 및 관리의 필요성이 커지고,

클라우드 서비스를 사용할 경우 직접 프로비저닝(IT 인프라를 생성하고 설정하는 프로세스) 해야 함

=> 데이터 웨어하우스는 Managed 서비스로 제공되는 솔루션으로 운영/관리 수고를 낮추고, 필요한 만큼의 자원을 사용하여 효율적임

 

Data Warehouse Frameworks

주로 많이 사용되는 Data Warehouse는 GCP BigQuery, Snowflake, AWS Redshift가 있다.

- GCP BigQuery : GCP에서 제공되는 완전 관리형 분석 데이터 웨어하우스로, 실시간 속도로 방대한 데이터 분석 가능하며, 여러 머신에 쿼리 연산을 분산시켜 처리한다.

Snowflake : Data Lake, Data Warehouse, Data Mart 및 Application의 역할을 동시에 할 수 있는 통합 플랫폼이다. Storage와 Computing 노드가 분리되어, 각 Computing 노드에 필요한 Job을 나누어 수행 가능하다. AWS S3, Azure storage, GCP storage에서 데이터를 가져올 수 있다.

- Redshift : AWS에서 제공하는 완전 관리형 데이터 웨어하우스로, 메타 데이터를 저장하는 리더 노드를 중심으로, Computing 노드에 데이터를 분산시켜 병렬 처리한다.

 

Data Platform Architecture

BigQuery

처리 속도가 빠르며 확장성이 뛰어나고, 다른 Google Cloud 서비스와 호환이 잘된다는 장점을 지님

- BigQuery는 Google Cloud에서 제공하는 managed service로 다른 GCP 서비스와 연동이 쉬움

- Data Fustion : RDB와 BigQuery를 동기화할 수 있는 GCP 서비스

 

그러나, BigQuery를 중심으로 데이터 스토리지 및 컴퓨팅을 GCP기반으로 옮기려다 보니 migration이나 replication 작업에 운영 및 비용적인 측면에서 관리가 힘들다고 한다. 

기존에 클라우스 서비스를 주로 AWS에 의존한 경향이 있었는데 BigQuery 도입으로, 많은 부분이 GCP로 이전해야 하는 번거로움이 발생할 것으로 예상되어서, 어떤 회사는 Snowflake로 최종선택했다고 한다.

 

Snowflake

Snowflake는 다른 Redshift, BigQuery와 공통적으로 Managed Service를 제공하지만, 기능적인 측면에서 데이터 웨어하우스 초점을 맞춘 솔루션으로, 데이터 파이프라인 구축 및 운영에 필요한 많은 기능을 포함한다.

대용량 데이터 처리 속도가 빠르며, 데이터 크기에 따라 웨어하우스 선택해서 이용할 수 있는 장점이 있다.

특히, Data Sharing이 존재한다.

Snowflake 는 자체 마켓 플레이스에서 data sharing을 제공한다.

데이터가 AWS S3 버킷에 저장하는데, DML 쿼리로 데이터를 업데이트 한다. 사용자가 데이터 조회시에는 동일 S3 버킷으로 접근하여, 사용자 계정으로 shared table(view로 제공)이 S3 버킷에 SELECT 쿼리를 실행하여 결과값을 추출한다.

 

 

 

 

보통 ETL 과정에서의 workflow는 Airflow를 사용하는 듯하다.

CDC(Change Data Capture) : 실시간으로 데이터 변경 사항을 식별하고 추적하는 소프트웨어 프로세스

 

 

 

 

참고 및 출처 

- UUID vs Snowflake ID https://jinseong-dev.tistory.com/21

- data warehouse : https://medium.com/@happy__quokka/data-warehouse-기반의-데이터-플랫폼-구성-feat-snowflake-788a284e551a

- CDC : https://blog.naver.com/softwidesec/223246426242

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형