Case Study

DBMS, DB 구축 절차, 빅데이터 기술 칼럼, 사례연구 및 세미나 자료를 소개합니다.

빅 데이터 시대를 향한 DW의 미래상, Clustered Columnstore Index에서 찾아

Case Study
DBMS별 분류
Etc
작성자
dataonair
작성일
2015-01-09 00:00
조회
1347











빅 데이터 시대를 향한 DW의 미래상,

Clustered Columnstore Index에서 찾아



"실제 운영 환경을 놓고 봤을 때 CCI(Clustered Columnstore Index) 적용 대상은 일부가 될 것이라 보았고 그 외적인 부문에서 성능 개선 효과가 어느 정도일지 궁금했었다. 직접 평가를 해보니 SQL Server 2014로 업그레이드 할 경우 대형 팩트 테이블뿐 아니라 일반 테이블들도 포함해 DW의 전반적인 성능이 올라갔다”
- 넥슨 김지선 과장



넥슨의 OLAP (On-line Analytical Processing) 시스템에 ‘초고속’이란 수식어가 조만간 붙을 예정이다. 넥슨은 지난 2005년 데이터웨어하우스(DW)를 구축한 이후 지속적으로 분석 플랫폼 환경을 확장해 왔다. 2014년 1월 현재 초기 대비 데이터 사이즈와 리포트 양식 모든 면에서 10배 이상 큰 분석 환경을 운영하고 있다. 데이터 분석 전문가뿐 아니라 일반 사업부 관계자들까지 데이터 분석을 일상적으로 하는 시대가 되면서 넥슨은 OLAP 관련 성능 이슈에 직면하게 된다. 하드웨어 확장으로 풀어 내는 데에도 한계가 있었고, 관계형 데이터베이스 기반 DW 상에서 쿼리 튜닝으로도 답을 낼 수 없던 가운데 넥슨은 SQL Server 2014의 CCI (Clustered Columnstore Index)에서 새로운 가능성을 발견하게 된다.


고급 분석, 대용량 데이터 처리 등에 있어 관계형 데이터베이스가 갖는 구조적 취약점을 메우는 현실적인 방법을 찾은 것이다. 넥슨은 실제 운영 환경에서 어느 정도 CCI 채용 효과를 거둘 수 있는지 확인해 보기 위해 평소 속도 이슈가 잦았던 보고서를 샘플로 테스트를 하였다. 이번 평가는 CCI가 실전에 당장 투입해도 충분하다는 확신을 심어주었다. SQL Server 2012의 컬럼스토어 인덱스는 데이터 업데이트 제약 때문에 도입을 주저하였는데, SQL Server 2014의 CCI는 이런 제약이 말끔히 사라진 동시에 기술적 완성도가 높아졌기 때문이다. 넥슨은 이번 검토를 통해 CCI를 쓸 경우 대용량 데이터 집계 성능 개선, CPU 및 메모리 입출력 (I/O) 절감, 높은 압축률을 통한 저장 공간 절약 등의 이점이 크다는 사실을 알았다. 또한 CCI 채용시 일반 사용자는 물론이고 매일 같이 고급 분석을 수행하는 분석 전문가들의 업무 편의와 생산성까지 높일 수 있다는 것도 확인했다. 넥슨은 평가 결과를 바탕으로 CCI 적용 테이블 크기, 쿼리 유형 등에 대한 내부 기준을 마련하였고, 향후 데이터베이스 업그레이드 시 DW 환경 전반의 성능 개선을 이뤄낼 계획이다.


Business Needs

넥슨의 데이터 분석 환경이 차세대로의 전환을 눈 앞에 두고 있다. 온라인 게임 분야의 글로벌 선도 주자답게 넥슨은 일찌감치부터 데이터 분석의 중요성에 눈을 뜨고 2005년 데이터웨어하우스(DW)를 구축했다. 당시 구축한 DW는 일반 기업의 그것과 크게 다르지 않았다. 매출 등 주요 경영 지표 관련 데이터를 뽑아내기 위한 목적으로 주요 활용되었던 것이다. 하지만 곧 변화가 일어났다. 온라인 게임 시장의 경쟁이 치열해 지면서 데이터 분석에 대한 요청이 올라오기 시작한 것이다. 즉, 게임을 잘 만드는 것 못지 않게 사용자들이 온라인 상에 남기는 다양한 디지털 흔적 속에서 의미 있는 정보를 찾아 이를 마케팅 캠페인이나 고객 서비스 등에 적절히 반영하는 것이 중요하다고 보는 조직원들이 하나 둘 늘어난 것이다. 그리고 이런 조직 차원의 욕구는 DW 플랫폼 확장으로 이어지게 되었다.


넥슨의 경우 처음 DW를 구축했을 때와 비교해 볼 때 2014년 1월 기준으로 10배 이상 데이터 사이즈가 커졌다. 보고서 화면 수 역시 몇 가지이던 것이 150본 이상이 될 정도로 많아졌다. 여기에 고급 분석 기술을 사용하는 데이터 분석 전문가들의 DW 이용 역시 함께 상승 곡선을 그려갔다. DW에 대한 수요 증가는 곧 성능 이슈로 이어졌다. 사용자들의 원하는 보고서들이 많아지고 처리해야 하는 데이터 양이 늘자 자연스럽게 처리 속도가 떨어진 것이다. 성능 저하 이슈가 불거진 데에는 게임 비즈니스의 특성도 일부 원인으로 작용했다. 원본 데이터 자체도 크지만 전체 데이터를 참조해야 하는 리포트 종류가 많다 보니 전반적인 성능 저하가 일어났던 것이다.


이와 관련해 넥슨 관계자는 “배치 작업을 통해 매일 DW로 데이터를 가져와 작업을 하는데 집계 처리가 완료된 차원, 팩트, 써머리 테이블 용량만 500GB 수준이다”라며 “처리 속도를 높이기 위해 주요 단위 별로 집계 테이블을 만들어도 전체 데이터를 읽어 들이는 쿼리가 많다 보니 튜닝에 한계가 있었다”라고 말했다. 실제로 넥슨의 경우 일별 매출 합계, 게임 별 신규 사용자 등 단순 집계뿐 아니라 게임 아이템 별 얼마나 판매가 되었는지에 대한 정보와 같이 여러 테이블을 넘나들며 만들어지는 류의 보고서도 꽤 된다. 전체 데이터에 접근하는 쿼리가 많은 이유다.


분석 속도 향상을 고민하던 넥슨은 2011년 SQL Server 2012의 신 기능 중 하나인 컬럼스토어 인덱스(Columnstore Index)를 눈 여겨 보게 된다. 관계형 데이터베이스에 기초한 DW 환경의 구조적 한계를 뛰어 넘을 수 있는 가능성을 컬럼스토어 인덱스에서 찾은 것이다. 내부적으로 테스트 해본 결과도 만족스러웠다. 특히 집계 쿼리 처리 속도는 놀라울 정도였다. 열(row) 단위로 데이터를 관리하는 일반 인텍스와 달리 컬럼(Column) 단위로 데이터를 그룹화 하기 때문에 불필요하게 중복해서 모든 열을 읽을 필요가 없었다. 또한 컬럼에 열 데이터를 저장할 때 압축을 하기 때문에 많은 양을 담을 수 있어 쿼리 처리시 디스크 입출력(I/O)과 메모리 사용량이 줄어 들었다. 이처럼 성능 향상은 분명했지만 당장 운영 환경에 적용하는데 있어 넥슨은 주저할 수 밖에 없었다. 컬럼스토어 인덱스가 있는 테이블은 데이터 업데이트에 제약이 있었기 때문이다. 매일 같이 배치 작업을 통해 데이터를 가져와야 하는 데 변경이 있을 때마다 인덱스를 새로 만들어야 한다는 것은 운영자 입장에서 볼 때 현실적이지 않았던 것이다.


당장의 대안으로 쓰이지 못했지만 컬럼스토어 인덱스는 2014년 초 다시 한번 넥슨의 관심을 끌게 된다. 2011년 당시 아쉬움을 느꼈던 테이블 업데이트 문제의 해결책으로 SQL Server 2014의 CCI(Clustered Columnstore Index)가 등장한 것이다.


Solution

넥슨은 2013년 하반기 마이크로소프트로부터 SQL Server 2014 RDP(Rapid Deployment Program) 추진 제안을 받았다. 이미 SQL Server 2012 발표 시 컬럼스토어 인덱스의 가능성을 확인한 넥슨은 2014 버전에서 괄목할 만한 발전을 이룬 CCI를 직접 점검하고 향후 어떻게 이를 활용할 것인지에 대한 구체적인 전략 수립을 위해 RDP 추진을 결정하였다.


넥슨과 마이크로소프트는 정확한 성능 개선 수치 파악을 위해 16코어 CPU와 32GB의 메모리를 장착한 테스트 서버 상에 SQL Server 2008과 SQL Server 2014 인스턴스를 각각 띄워 비교를 하였다. 참고로 SQL Server 2008은 기존 환경과 동일하게 일반 인덱스를 그리고 SQL Server 2014는 CCI를 각각 적용하였다. 비교 환경에 올릴 예제는 CCI의 특징을 뚜렷하게 보기 위해 평소 사용자들이 처리 속도가 느리다고 불평하는 것은 같지만 테이블 크기, 쿼리 유형은 다른 두 개의 보고서가 선택되었다.


CCI 테스트를 위해 선택된 보고서 중 첫 번째 것은 원본 데이터 크기가 약 12GB 정도 되는 것으로 특정 게임 아이템이 얼마나 판매되었는지를 보여주는 보고서였다. 이 보고서는 전형적인 성능 문제를 가지다 게임 당 수백 개의 아이템을 다루어야 하다 보니 쿼리 대상 데이터가 클 뿐 아니라 여러 테이블을 오가며 집계를 하기 위해 전체 데이터를 모두 읽어야 하다 보니 CPU나 메모리에 주는 부하가 상당한 그런 특징을 띄고 있었다. 이와 달리 비교 대상으로 선택된 보고서는 원본이 100MB 정도로 작지만 평소 분석 속도가 잘 안 나오는 그런 예제였다.


증상은 같지만 조건이 다른 두 가지 샘플을 가지고 일반 인덱스와 CCI를 각각 적용해 본 넥슨은 나름의 판단 기준을 정립할 수 있었다. 첫 번째 예제의 경우 일반 인덱스와 달리 CCI 환경에서는 열 데이터가 압축되어 저장되기 때문에 원본 용량이 600MB 수준으로 줄었다. 참고로 CCI 환경에서는 데이터 유형에 따라 압축률이 다르다. 처리 속도의 경우도 4분 대이던 응답 시간이 CCI 조건에서는 처음에 30초 수준으로 짧아졌고 약간의 튜닝을 거치자 9초 대까지 빨라졌다. 반면에 두 번째 예제는 성능 차이가 거의 없었다. 원본 데이터가 1/10 수준으로 압축되어 10MB로 작아졌지만 일반 인덱스와 CCI 적용 간 속도 차이는 크지 않았다. 두 예제를 통한 실험으로 넥슨은 대용량 팩트 테이블 적용시 CCI가 유리한 반면 작은 테이블에는 굳이 적용할 필요가 없음을 확인하였다.


한편 넥슨은 CCI뿐 아니라 이번 RDP를 통해 SharePoint Server를 기존 DW 및 보고서 환경에 접목하는 것도 꼼꼼히 챙겨 보았다. 최종 사용자를 위한 비즈니스 인텔리전스 (BI) 포털로 SharePoint Server가 어떻게 제 기능을 하는지 살펴본 넥슨은 새로운 사용자 경험 제공 가능성을 엿보았다. SharePoint Server가 제공하는 BI 관련 사용자 경험은 리포팅 툴을 통해 사용자에게 보고서를 제공하는 전형적인 방식과 여러 면에서 차이를 보였다. 넥슨은 테스트 서버 상에서 적용한 것이지만 빠른 처리 속도, 각종 차트와 그래프의 풍부하고 미려한 표현력, 누구나 쉽게 원하는 정보를 얻을 수 있는 손쉬움과 공유의 편의성 등 여러 측면에서 기존에 사용하고 있는 리포팅 툴과 차이를 느꼈다.


이와 관련해 넥슨 관계자는 “실제 정보가 흘러가듯이 실시간으로 차트가 그려지는 시각적 표현력을 보고 놀랐다”라며 “서버 단에서 처리되어서 그런지 용량이 큰 데이터도 속도 저하 없이 빠르게 표현되는 것을 확인할 수 있었다”라고 말했다. 그는 또한 “실제 DW 사용 패턴을 보면 제공되는 보고서를 이용하는 것보다 사용자들이 필요 데이터를 뽑아 직접 가공하는 경우가 많다”라며 “업무 보고나 회의 등의 목적으로 데이터를 가공하는 데 있어 SharePoint Server를 쓰면 일일이 데이터를 내려 받지 않고 웹 상에서도 어느 정도까지는 원하는 스타일로 가공할 수 있다는 것이 큰 장점으로 다가왔다”라고 덧붙여 설명했다.


Benefits


DW 성능 이슈 해결 가능성 엿봐

CCI 활용은 전략적 관점에서 접근할 필요가 있다. 데이터 크기, 쿼리 유형 등을 꼼꼼히 따져 일반 인덱스를 적용할 것인지 CCI를 쓸 것인지 잘 판단하는 것이 중요하다. 넥슨은 이번 RDP를 통해 10GB 이상 되는 크기의 대형 팩트 테이블에 CCI를 적용하고 그 이하 크기의 데이터는 기존에 하던 데로 열(row) 단위로 저장되는 구조로 관리하면 된다는 나름의 기준을 잡았다. 그리고 또 한 가지 중요한 사실도 파악했다. 바로 SQL Server 2014로 업그레이드 하면 CCI 외적인 부문에서도 성능 향상 효과를 거둘 수 있다는 것이었다.


넥슨 관계자는 “실제 운영 환경을 놓고 봤을 때 CCI 적용 대상은 일부가 될 것이라 보았고 그 외적인 부문에서 성능 개선 효과가 어느 정도일지 궁금했었다”라며 “직접 평가를 해보니 SQL Server 2014로 업그레이드 할 경우 대형 팩트 테이블뿐 아니라 일반 테이블들도 포함해 DW의 전반적인 성능이 올라갔다”고 말했다. CCI 적용 대상 컬럼뿐 아니라 열 단위 데이터 관리 측면에서도 속도가 개선됨을 느낀 것이다. RDP를 통해 모든 면에서 성능 향상이 가능함을 확인한 넥슨은 향후 DW 플랫폼 환경을 SQL Server 2014로 업그레이드 할 계획이다.


일반 사용자, 고급 분석 전문가 모두 만족

관계형 데이터베이스 구조의 DW에 컬럼 지향적인 기능성을 가미하면 이를 가장 반길 사람은 넥슨은 보고서 처리 속도 개선에 따른 일반 사용자 보다 분석을 주요 업무로 하는 분석 전문가들이 CCI를 두 손 들어 환영할 것으로 예상하고 있다. 넥슨은 조만간 전문 분석가들을 위한 데이터 마트를 구축할 예정이다. 분석 전문가 전용 데이터 마트를 구축하는 이유는 DW 플랫폼의 부하를 분산하기 위함이다. 분석 전문가들의 DW 활용 방식은 일반 사용자들과는 차이가 크다. 직접 데이터를 만지면서 결과를 확인하는 이들이다 보니 그 만큼 DW에 많은 부하를 주게 된다. 이런 측면에서 볼 때 CCI는 분석 전문가들에게 아주 이상적인 기능이라 볼 수 있다.


넥슨 관계자는 “분석 전문가들은 모든 컬럼을 가지고 이리 저리 쿼리 패턴을 바꾸어 가면서 작업을 한다”라며 “하나의 결과를 원하는 것이 아니라 다양한 관점에서 가능한 모든 경우의 수까지 살펴 답을 이끌어 내고자 하는 것인데, 모든 컬럼을 바라보고 고급 분석을 하는 전문가들에게 있어 CCI는 원하는 답을 보다 빨리 얻게 해주는 데 있어 중요한 역할을 할 것이라 본다”라고 말했다. 대용량 데이터 처리 시 속도 이슈로 데이터베이스 관리자에게 일일이 연락하거나 스스로 쿼리를 튜닝할 일이 없어 분석 전문가들이 좀더 편하고 생산적으로 일할 수 있게 될 것이라 보는 것이다.


DW 스토리지 용량 절감에도 도움

늘어만 가는 데이터 홍수는 운영 환경뿐 아니라 분석 플랫폼 쪽도 마찬가지다. 이런 측면에서 SQL Server 2014의 CCI 기능은 DW 스토리지 절감에도 도움이 될 것으로 넥슨은 기대하고 있다. 데이터 유형 별로 압축률이 다르긴 하지만 저장 공간 절약도 가능할 것이라 보는 것이다. 이와 관련해 넥슨 관계자는 “예전에 SQL Server 2005를 2008로 업그레이드 한 주요 이유 중 하나는 백업과 압축 효율이 높기 때문이었다”라며 “당시 스토리지 절감 효과를 꽤 보았는데, SQL Server 2014로 업그레이드할 경우 CCI 적용 대상의 경우 원본 데이터를 압축해 처리하기 때문에 스토리지 절약에도 도움이 되지 않을까 생각한다”라고 말했다.