Variant Type을 활용한 반정형 데이터 가속화
Data Lake를 구성하기 위한 대표적인 기능은 반정형 데이터와 비정형 데이터를 저장하고 이를 조회 할 수 있는 성능입니다.
이번 Story에서는 snowflake가 어떻게 Json, Parquet과 같은 반정형 데이터를 효율적으로 저장하고 활용하며, 일반적으로 다른 dbms에서 저장하는 string 저장 방식과의 성능 차이를 테스트 해보았습니다.
Snowflake는 반정형 데이터를 효율적으로 관리하기 위해 Variant Type을 제공하고 있습니다.
이러한 variant type은 일반 테이블과 마찬가지로 내부에 있는 데이터를 빠르게 조회할 수 있도록 반정형 데이터 내부의 데이터를 column 시켜 저장합니다.
이러한 구조를 통해 반정형 데이터를 일반 테이블로 다시 변환 시키는 작업이 필요하지 않으며, 반정형 데이터의 활용에서도 일반 테이블과 동일한 조회 성능을 제공합니다.
성능 비교를 위해 json 데이터를 variant type과 일반 varchar으로 저장한 2개의 테이블을 준비합니다. (해당 데이터는 뉴욕시 자전거 이력 데이터이며, json format)
2개 테이블에 각각 6100만 건 데이터를 적재 후 해당 건수를 비교합니다.
이제 위의 데이터셋을 활용하여 데이터 집계 성능 추출(Xsmall Warehouse 활용)을 진행해 보았습니다.
1번 테스트 : 각각 서로 다른 데이터 포맷(varchar와 variant)으로 구성된 테이블에서 자전거가 운영된 거리의 합을 추출
2번 테스트 : 서로 다른 데이터 포맷(varchar와 variant)으로 구성된 테이블에서 각 성별의 통계값 확인
결론적으로 variant type은 varchar로 저장된 일반 형태에 비하여 30배 이상의 고성능을 보여주며, 반정형 데이터를 단순히 저장하는 것에 그치지 않고, 이를 손쉽게 활용할 수 있습니다.