조인이 정말 비쌀까? 벤치마크로 알아보는 데이터 모델 성능 비교

by DD
2개월 전
조회수 16

데이터 레이크(Data Lake)에서 조인(Join)이 비싸다는 일반적인 오해를 반박하기 위해, 저자는 차원 모델(Dimensional Model)OBT(One Big Table) 모델을 비교 분석함.

DuckDB를 사용한 벤치마크 결과, 다수의 열(Column)을 조회하는 경우 조인 방식이 OBT보다 CPU 사용량(CPU Usage) 측면에서 훨씬 효율적임을 확인.

PostgreSQL을 활용한 테스트에서는 Row Store 환경에서 OBT 모델이 조인 방식보다 성능 우위를 보이지 못했으며, 오히려 열 개수가 증가함에 따라 OBT 모델의 성능 저하가 나타남.

저자는 1996년 랄프 킴볼(Ralph Kimball)의 저서를 인용하며, 분석 목적의 데이터 모델은 조인을 활용하는 차원 모델(Dimensional Model)이 적합하며, 조인이 CPU 비용을 절감하는 데 기여한다고 강조함.

DuckDB를 활용한 벤치마크 결과 분석

저자는 DuckDB를 사용하여 차원 모델과 OBT 모델의 성능을 비교하는 벤치마크를 수행했다. 특히, EXPLAIN ANALYSE 기능을 통해 각 연산자의 CPU 사용량을 측정했다. 벤치마크 결과에 따르면, 다수의 열을 조회하는 경우 조인 방식이 OBT 모델보다 CPU 사용량(CPU Usage) 측면에서 훨씬 효율적이었다. 이는 DuckDB가 열 기반(Columnar) 데이터 저장 방식을 사용하기 때문이며, OBT 모델은 열을 재조립하는 과정에서 추가적인 CPU 비용이 발생하기 때문이다.

PostgreSQL을 이용한 Row Store 환경에서의 성능 비교

PostgreSQL을 사용하여 Row Store 환경에서 OBT 모델과 조인 방식의 성능을 비교한 결과, OBT 모델이 조인 방식보다 우위를 보이지 못했다. 저자는 PostgreSQL의 EXPLAIN ANALYSE를 통해 성능을 분석했으며, OBT 모델에서 열을 읽는 과정에서 메모리 복사(Memory Copy)표현식 해석(Expression Interpretation)으로 인해 CPU 사용량이 증가하는 것을 확인했다. 특히, 열 개수가 증가함에 따라 OBT 모델의 성능 저하가 두드러졌다.

차원 모델(Dimensional Model)의 장점

저자는 랄프 킴볼(Ralph Kimball)의 저서를 인용하며, 분석 목적의 데이터 모델은 조인을 활용하는 차원 모델이 적합하다고 주장한다. 킴볼은 팩트 테이블(Fact Table)과 차원 테이블(Dimension Table)을 연결하는 조인 방식을 통해 데이터 접근 효율성을 높일 수 있다고 설명한다. 특히, 조인을 통해 필요한 열만 선택적으로 가져올 수 있어, OBT 모델보다 CPU 사용량(CPU Usage)을 절감할 수 있다고 강조한다.

OBT 모델의 단점과 스케일링 문제

저자는 OBT 모델의 단점으로 열 개수가 증가함에 따른 성능 저하를 지적한다. DuckDB 벤치마크 결과에서 OBT 모델은 열 개수가 증가함에 따라 성능이 비선형적으로 감소하는 경향을 보였다. 이는 열 기반 데이터 저장 방식에서 열을 재조립하는 과정에서 발생하는 CPU 비용 때문이다. 저자는 OBT 모델이 대규모 데이터 및 다양한 열을 처리하는 데 적합하지 않으며, 스케일링(Scaling)에 어려움이 있다고 결론 내린다.

Joins are NOT Expensive