집계 설계 이해 – (1)집계 디자인 마법사

By 01/08/2018SSAS 강좌

집계 설계 이해 – (1)집계 디자인 마법사

 

이번 시간에는 집계 설계 이해(집계 디자인 마법사)에 대해서 알아 보도록 하겠습니다.

 

집계와 사용자 계층 구조를 생성하는 과정과 특징을 이해하면 측정값과 차원을 최적으로 설계하는데 많은 도움이 됩니다.

 

집계 특성을 잘 이해하면 큐브 데이터를 저장하기 위한 디스크 공간을 최소로 하면서 조회 성능을 향상 시킬 수 있습니다. 또한 사용자 계층을 활용하여 더 효율적으로 큐브를 조회 하도록 할 뿐만 아니라 조회 성능을 개선할 수 있습니다.

 

큐브 최적화는 일회성이 아니고 진행형 입니다. SSAS는 사용자의 쿼리 로그를 관리함으로써 많이 사용하는 쿼리를 중심으로 최적화하도록 집계 디자인을 세밀하게 조정 할 수 있습니다.

 

큐브는 모든 차원의 모든 특성에 대해 존재 가능한 모든 값을 보여 줍니다. 상위 수준의 집계 데이터는 미리 계산하여 저장된 값을 사용하기도 하고 저장된 값이 없는 경우는 쿼리 시점에 실시간으로 계산하여 반환하기도 합니다. 예를들어 All 수준 집계값이 저장되어 있으면 바로 그 값을 사용합니다. 그렇지 않으면 팩트 수준 집계로부터 실시간으로 계산하여 사용합니다. 이는 대량 데이터를 처리해야 하기 때문에 비효율이 발생합니다. 따라서 중간 집계가 존재하면 그 데이터를 이용하여 계산하여 처리할 수 있으므로 훨씬 효과 적입니다.

 

상위 수준의 집계 데이터를 미리 계산하여 저장해서 사용하면 빠른 응답 속도를 기대할 수 있지만 그에 대한 비용이 증가 합니다. 예를 들어 상점과 제품이 각각 100개 1000개 라고 가정하면 이론적으로는 해당 세분성을 가지는 팩트 테이블이 100,000개의 데이터가 존재 가능합니다. 그러나 모든 상점에서 제품을 동일하게 판매하지 않는다고 가정하고 5%의 데이터가 존재한다고 가정해도 5000개의 데이터가 존재 합니다.

 

큐브를 살펴보면 상점과 제품 차원에 대하역 각각 4개의 수준이 존재하므로 이론적으로 16(4*4)개의 집계가 가능합니다. 그리고 각 차원에 속한 멤버의 수가 각각 116개, 1,111개이므로 존재 가능한 셀(데이터) 수는 128,876가 됩니다. 이는 원본 팩트 데이터의 20배가 넘습니다. 이러한 공간을 모두 디스크에 할당하면 원본에 비하여 몇 배의 디스크 공간을 요구하게 됩니다. 차원이 많아 질수록, 차원에 포함된 수준 수가 많아 질수록 그 정도가 늘어나는데 이를 데이터 폭발 이라고 합니다.

 

SSAS는 상위 수준의 일부만 사전 집계하여 저장하고 실제로 데이터가 존재하지 않는 공간에 대해서는 디스크를 할당하지 않고, 압축하여 저장함으로써 데이터 폭발의 문제를 해결하면서도 빠른 응답 속도를 보장하도록 설계되었습니다.

 

SQL Server 2005 이상은 차원 보다 특성 수준에서 집계가 이루어 집니다. 예를 들어 상품 차원은 3개의 특성을 포함하고 있으면 각 특성이 All을 포함한다면 8개(2^3)의 집계가 가능합니다. 제품 차원도 마찬가지라고 한다면 8개의 집계가 가능합니다. 만약 두 차원을 모두 고려한다면 64(8*8)개의 집계가 가능 합니다.

 

집계 디자인 마법사는 큐브 내에 생성 가능한 집계 후보들 중에 어느 집계를 사용할지 자동으로 설정해 주는 도구 입니다. 큐브에 이미 집계가 설계되어 있을 경우 새로운 집계를 추가하거나 기존의 집계를 대체할 수있습니다.

 

CodePlex에서 [AdventureWorks 2008R2 Analysis Service Project]를 다운로드 받습니다.

 

다운로드 받은 파일을 압축을 해제하여 보면 다음과 같은 프로젝트 파일이 있습니다.

BIDS에서 압축을 해제한 프로젝트 파일을 열기 합니다.

 

[솔루션 탐색기]에서 [Adventure Works.cube]를 더블 클릭 또는 [디자이너 보기]를 선택 합니다.

 

[파티션]탭을 클릭합니다. 현재 생성되어 있는 파티션을 확인 할 수 있습니다.

 

[집계]탭으로 이동하여 [집계 디자인]을 클릭 합니다.

 

[집계 디자인 마법사]창에서 [수정할 파티션 선택]에서 [Internet_Sales_2005]를 선택 합니다.

 

[집계 사용 검토]에서는 집계 사용 설정을 수정하거나 특성을 포함하거나 제외 할 수 있습니다.

 

[개체 수 지정]에서는 사용자가 수동으로 입력하거나 [계산] 버튼을 클릭하여 마법사가 자동으로 가져 올 수 있습니다.

실습에서는 [계산]을 선택 합니다.

 

팩트 테이블의 행 수와 집계 설계 후보에 해당하는 차원 특성들의 행수를 계산 합니다.

  • Internet Sales에 대한 예상 개수는 FactInternetSales 테이블의 데이터 건수
  • 파티션 수는 파티션을 처리할 때 실제로 가져오는 데이터의 건수

집계설계에서는 파티션 수를 사용합니다. 만약 파티션 수가 존재하지 않는다면 [예상 개수]를 사용합니다.

 

 

[집계 옵션 설정]에서는 최적화의 비율을 설정 할 수 있습니다.

 

[다음 성능 향상 정도까지]를 선택하고 [30%]를 설정하여 [시작]을 클릭합니다. 집계 설계의 진행 상황이 도표로 표시 됩니다.

 

집계는 자동으로 설계되며 어떤 집게를 선택할지 제어할 수는 없습니다.

 

 

성능 향상을 위해 [성능 향상 정도]를 [80%]로 설정 하여 보도록 합니다.

주의할 점은 동일한 양만큼 성능 향상 정도를 증가시키더라도 낮은 구간대에서 보다 높은 구간대에서 크기 증가 정도가 훨씬 더 빠르다는 것을 확인 할 수 있습니다.

 

일정 이상에서는 크기만 빠르게 증가 할 뿐 성능 향상은 그다지 나타나지 않게 됩니다. 따라서 무조건 성능 향상 정도를 크게 설정한다고 해서 좋은 것은 아닙니다.

 

마법사 완료 단계에서 취소를 클릭 합니다. 바로 배포 및 처리를 하거나 저장만 하고 나중에 처리할 수 있지만 실습 프로젝트에서는 이미 배포 및 처리가 된 상태의 파티션이므로 추가적인 작업 없이 취소를 선택 합니다.

 

2012-07-22 / 강성욱 / http://sqlmvp.kr / http://sqlangeles.com

 

SSAS, OLAP, 다차원모델링, BI, 큐브, MSBI, MSCUBE, SQLServer, mssql, 큐브만들기, BIDS, SSDT, 집계 디자인, sqlmvp, sqlangeles

 

Leave a Reply

%d bloggers like this: