검색어를 입력해 주세요.
SQL_Server / 07 4월 2021
Tabular vs Multidimensional Modelv

MS SQL Server Analysis Service에는 테이블 형식 모델과 다차원 모델이 있습니다.
다차원 모델은 OLAP(Online Analytical Processing)의 전통적인 근간 기술로 Cube라는 개체를 만들고 사용하게 되는데 Cube는 차원과 측정값을 포함한 개체입니다.

테이블 형식은 마이크로소프트가 “Personal BI”를 위해 사용자가 쉽게 정의하고 사용할 수 있는 도구를 제공하면서 제공되기 시작한 분석 엔진입니다.

대화형 사용자 인터페이스를 갖춘 Power BI는 사용자의 충족되지 않은 사용 용이성 및 신속한 배포를 지원한다. 이러한 도구는 특히 중간 규모 비즈니스 부문에서 효율적일 수 있습니다.
테이블 형식 모델은 SQL Server 2012에서 처음 소개가 되었으며 사용자는 Excel의 PowerPivot을 통해 모델을 작성하고 분석할 수 있었습니다.

[그림] MS BI Architecture (2012년)

마이크로소프트는 이후 PowerPivot 대신 Power BI를 제공합니다.
Power BI는 셀프 서비스 및 엔터프라이즈 BI를 위한 확장성 있는 통합 플랫폼을 사용하여 모든 데이터에 연결하고 모든 데이터를 시각화 할 수 있습니다.
PowerPivot과 가장 큰 차이는 웹 게시를 통한 공유와 활용입니다.

 

테이블 형식 및 다차원 모델 소개

두 모델의 목표는 최종 사용자가 데이터를 분석할 수 있는 기능을 갖춘 데이터 웨어하우스 위에 논리 체계 계층을 제공하는 것입니다.
이 두 모델은 Analysis Services의 일부로 한 모델에서 다른 모델로 쉽게 전환 할 수 있을 것이라 생각할 수 있습니다. 그러나 두 모델은 설계 방법과 사용 방법이 전혀 다른 것으로 각 서비스 특성에 따라 사용해야 합니다.

  • 테이블 형식 모델(In-Memory Cube)
    테이블 형식 모델은 Analysis Services의 메모리 내 데이터베이스입니다.
    최신 압축 알고리즘과 다중 스레드 쿼리 처리를 사용하는 Xvelocity 엔진은 Microsoft Excel 및 Microsoft Power View, Power BI 같은 클라이언트 응용 프로그램을 통해 테이블 ​​형식 모델 개체 및 데이터에 대한 빠른 액세스를 제공합니다.
  • 다차원 모델(traditional OLAP Cube)
    다차원 모델은 OLAP을 위한 전통적인 모델입니다.
    차원으로 지정된 좌표에 대해 집계 데이터를 다차원 구성합니다.

 

테이블 형식은 메모리 분석 엔진으로 다차원 모델과는 다른 형태로
두 형식의 장점과 단점을 통해 활용도를 살펴보고자 한다.

[그림] MS BI Architecture

 

데이터 원본 계층

데이터 원본에 대해서는 테이블 형식과 다차원 모델에는 차이가 없습니다. 다차원으로 가져올 수 있는 모든 데이터 원본을 테이블 형식으로 가져올 수도 있습니다. 중요한 제한 사항은 하나뿐입니다. 직접쿼리 모드를 사용하는 경우 SQL Server 관계형 데이터베이스로 제한됩니다.
직접쿼리(DirectQuery) 모드는 테이블 형식 모델에서 데이터베이스 원본에서 직접 데이터를 가져올 수 있도록 하는 기능입니다.

 

데이터 액세스 계층

테이블 형식 모델은 캐시 모드와 직접쿼리 모드의 두 가지 모드를 통해 데이터 액세스를 지원합니다.

  • 캐시 모드는 테이블 형식 모델의 기본으로 모든 데이터가 메모리에 로드되고 모든 쿼리는 캐시에서  데이터를 가져온다.
  • 직접쿼리 모드에서는 클라이언트 응용 프로그램이 데이터베이스 원본에서 직접 데이터를 쿼리 할 수 ​​있도록 합니다.

다차원 모델은 두 가지 모드를 지원합니다. For additional information look at hyvä kasino.

  • MOLAP은 다차원 모델의 기본으로 큐브를 처리 할 때 원본 데이터가 관계형 저장소에서 가져온 다음 필요한 집계가 Analysis Services 내에서 수행되고 마지막으로 데이터가 압축되고 최적화 된 다차원 형식으로 Analysis Services 서버에 저장됩니다.
  • ROLAP 는 기본 관계형 데이터베이스 소스에서 OLAP 서버로 데이터를 가져 오지 않고 큐브 세부 데이터와 집계 된 데이터 모두 관계형 데이터베이스 소스에 유지됩니다. 계산 된 집계를 저장하기 위해서 데이터베이스에 테이블이나 인덱싱 된 뷰를 만듭니다.

직접쿼리(DirectQuery) 모드는 ROLAP 모드와 동일한 형태로 데이터 요청에 응답하기 위해 관계형 데이터베이스에 전적으로 의존합니다.
일반적으로 성능이 더 좋은 MOLAP으로 구현하며, 성능 외적인 이유로 ROLAP 모드를 구현하는 경우가 존재합니다. 예를 들면 관계형 데이터베이스의 데이터를 실시간으로 액세스 할 필요가 있는 경우입니다.

이런 경우에도 성능상 문제를 최소화하기 위해 이전일까지의 데이터는 MOLAP으로 실시간 데이터는 ROLAP 파티션 조합 구성을 고려할 수 있습니다.

테이블 형식 모델에서는 파티션을 캐시 모드와 직접쿼리 모드를 조합 구성할 수 없기 때문에 2개의 테이블 원본으로부터 2개의 측정값을 각각 캐시 모드와 직접쿼리 모드로 만들고 합산 측정값을 만드는 형태를 고려할 수 있습니다.

 

성능

대부분의 프로젝트는 MOLAP 또는 캐시 모드를 사용합니다.
주요 차이점은 MOLAP 모드는 사전 집계 데이터를 빌드하여 집계 데이터와 원시 데이터를 분석 엔진 디스크에 모두 저장하는 반면, 캐시 모드는 사전 집계 없이  열 저장소 형식으로 메모리의 모든 원시 데이터를 로드한다는 것입니다.
테이블 형식 모델에서 캐시 모드를 사용하는 경우 사용 가능한 메모리 사이즈가 고려되어야 합니다. 즉 원시 데이터를 상당히 압축하지만 메모리 사이즈 이상의 자료를 로드 할 수 없습니다.

전체 큐브를 로드하는 데 필요한 메모리 사이즈을 미리 계산하는 간단한 규칙은 없습니다. 행 대신 열에 저장할 때 데이터 특성에 따라 압축에 따라 달라지기 때문입니다. 예를 들어 열에 고유한 값의 개수가 작을 수록 데이터의 압축률이 높아집니다. 즉, 필요한 메모리 양을 줄이기 위해 모델에 트랜잭션 식별자, 타임 스탬프 등과 같은 데이터를 포함하지 않아야 합니다.

 

위에서 설명한 것처럼 메모리 엔진의 테이블 형식은 다차원 MOLAP 엔진과 근본적으로 다릅니다 . 테이블 형식 모델은 캐시에서 직접 데이터를 읽고 컬럼 저장소 인덱스로 인한 쿼리 가속화를 활용하는 반면, 다차원 모델은 큐브 설계 중에 정의된 기존 집계에 따라 디스크에서 사전 집계 된 데이터 또는 원시 데이터를 읽습니다.

  • 기본적으로 테이블 형식 엔진은 특별한 조정없이 뛰어난 성능을 제공합니다. 대부분의 경우 테이블 형식 모델은 다차원 모델보다 성능이 뛰어납니다. 그러나 대량의 데이터에 대해서는 오히려 다차원 모델 엔진 더 좋은 성능과 일정한 성능을 제공할 수 있습니다.
  • 다차원 모델의 경우 특히 집계된 데이터가 이미 캐시에 있는 경우 다차원 모델이 더 나은 성능을 제공 할 수 있습니다. 테이블 형식 모델과 달리 다차원 모델은 쿼리 결과를 캐시에 보관하므로 큐브를 많이 사용할수록 쿼리 성능이 향상됩니다.
  • DAX 쿼리의 결과는 캐시에 저장되지 않으므로 DAX 쿼리를 실행하는 데 항상 같은 시간이 걸립니다.
  • 테이블 형식 모델의 관계형 개념은 가장 낮은 세분성 수준에서 데이터를 쿼리 할 때 좋은 성능 결과를 제공합니다.

 

데이터 언어 계층

다차원 모델은 MDX (Multidimensional Expression)라는 언어로 사용합니다.
MDX는 매우 강력한 언어이지만 다차원적 개념에 대한 이해가 필요하기 때문에 종종 다소 복잡하고 배우기 어렵다고 인식됩니다.

 

테이블 형식 모델은 DAX (Data Analysis Expression)라는 언어를 사용합니다.
DAX 구문은 Excel 수식과 유사하며 DAX 개념은 관계형 데이터베이스 개념과 유사하므로 다차원 개념에 대한 경험이 없는 개발자가 이해하기가 더 쉽습니다.

DAX가 다소 간단하지만 고급 계산에서는 더 복잡해질 수 있습니다.

MDX는 계층간 연계나 명명된 집합 정의, SCOPE 할당 등 다양한 함수를 이용하여 복잡한 산식을 효율적으로 지원합니다.

 

데이터 모델 계층

테이블 형식 및 다차원 모델은 모두 데이터 집합 간의 관계 정의는 동일한 개념으로 작동합니다. 테이블 형식에서는 관계를 설정하는 데 하나의 열만 사용할 수 있으므로 적절한 대리 키를 데이터 웨어하우스에 만들어야 합니다. 이를 위해서 대리키나 조합키를 만들어야 하며, 조합키의 경우는 뷰와 같은 논리 계층으로 만드는 것을 고려할 수 있습니다.

 

테이블 형식에서는 속성 간의 관계를 정의 할 필요가 없기 때문에 다차원 프로젝트보다 더 쉬워 보입니다.

다차원 모델에서는 속성 간의 관계를 정의하고 자연 계층 구조가 되도록 정의하여 성능을 최적화 할 수 있도록 정의하는 것이 필수입니다.

 

자연 계층(Natural hierarchies)이라는 것은 속성 간의 상하위 정의 하는 것으로 예를 들어 년-반기-분기-월-일 계층을 만들었을 때 각 속성간의 상하위를 정의하여 성능을 최적화하는 것이다. 특정 레벨 집계되어 있는 경우 집계되지 않은 상위 레벨 조회 시 하위 레벨 집계를 사용할 수 있도록 유도 합니다. 또한 집계 정도에 따는 구조 설계에서 각 레벨간의 카디널리티를 고려하여 집계를 구성할 수 있도록 유도합니다.  년 하위의 반기는 2개의 값, 반기 하위의 분기는 2개의 값, 분기 하위의 월은 3개의 값, 월 하위의 일은 31의 값을 가지므로 기본적인 집계는 일에 대한 집계를 하며, 집계 수준을 좀더 높이면 월 집계를 할 것입니다. 분기 조회 시 월 집계의 데이터를 읽어 메모리에서 집계하여 사용하게 됩니다.

 

[그림] Attribute Relationships

 

테이블 ​​형식의 제한 사항

  • 롤 플레잉(role-playing) 차원을 정의 할 수 없습니다.
    특히 Date 차원의 경우 주문일, 배송시작일, 배송완료일 등에 대해 각각의 차원을 만들어 대응해야 합니다.
  • 다 대다 관계(Many-to-Many Relationships)를 정의 할 수 없습니다.
  • 부모-자식 계층(Parent-Child hierarchy)을 정의 할 수 없습니다.
  • 사용자 지정 롤업(Custom Rollups)은 지원되지 않습니다.
    롤업은 대차대조표와 같이 회계 계정에 따라 상위로 집계되는 방식을 정의할 수 있는 기능입니다. 사용자 지정 롤업을 위해 연산자(Operator) 컬럼을 지정할 수 있으며 +, -, ~ 값으로 연사자를 정의할 수 있습니다.
  • 작업 (드릴 쓰루,보고 등)을 정의 할 수 없습니다.
  • 다시 쓰기(Write Back)가 지원되지 않습니다.

전반적으로 테이블 형식 모델은 다차원 모델보다 사용 가능한 속성이 훨씬 적습니다. 그러나 테이블 형식 모델은 정의하여 사용하기가 쉽습니다.

 

보고서 작성

최근은 대부분 Power BI로 보고서를 작성합니다. Power BI에서 테이블 형식 모델과 다차원 모델을 이용하여 보고서를 작성할 수 있습니다.

다차원 모델을 이용한 전통적인 보고서 도구로 Excel, SQL Server Reporting Services가 있습니다. 그리고 Excel로 작성된 분석 화면을 SharePoint Server에 게시하여 웹에서 피벗팅할 수 있는 형태로 사용할 수 있습니다.

Excel 추가 기능으로 제공되었던 Power View를 통해 작성하고 SharePoint Server 에 게시하면 웹브라우저 플러그인 Silverlight를 통해 분석할 수 있었습니다. Power View는 Power BI가 나오기전 테이블 형식 모델을 사용하는 과도기적인 제품으로 Excel 2016에서부터는 제공하지 않았습니다.

 

결론

Power BI 활용 시 기본이 되는 테이블 형식 모델 사용은 최종 사용자가 분석을 위해 편리하고 효과적으로 사용할 수 있을 것입니다.

그러나 테이블 형식 모델을 통해 제공할 수 없는 기능에 대해서는 다차원 모델 사용을 고려해 볼 수 있을 것입니다.

Power BI를 통한 모델 작성과 게시는 SQL Server의 테이블 형식 모델에 배포할 수 있었던 위치가 확장되어 Power BI Report Server, Power BI Service, Office 365 Teams에 SharePoint Server등에 배포할 수 있습니다.

Power BI 배포할 수 있는 서비스를 사용하는 경우에 공유 용량을 1Gb까지 지원합니다. 즉 1Gb보다 큰 모델 공유를 위해서는 용량에 따라 Power BI 프리미엄을 구매하여야 합니다.

 

아래에서는 사용 선택을 용이하게 하기 위해 두 모델 간의 장단점을 요약하였습니다.

[표] 테이블 형식 모델 대 다차원 모델 장단점

그리고 우리의 최종 권장 사항은 무엇입니까? 현재로서는 프로젝트 유형에 관계없이 한 모델에 대한 간단한 추천을 내릴 수 없습니다.

 

따라서 다음을 권장합니다.

  • 최종 사용자가 만족한다면 기존의 다차원 모델을 마이그레이션하지 마십시오. 마이그레이션 시 재현할 수 있는 없는 기능이 무엇인지, 없는 기능 대안이 있는지, 대안을 위해 어느 정도의 학습과 리소스가 필요한지  먼저 확인해야합니다.
  • 매우 많은 양의 데이터가 있거나, 재무보고서와 같은 매우 복잡한 비즈니스 요구 사항이 없는 경우 테이블 ​​형식 모델을 선택하면 될 것 같습니다.
  • Power BI 배포 시 1Gb보다 큰 모델 공유를 위해서는 Power BI 프리미엄 라이센스를 구매할 수 있으나, 모델에 데이터를 포함하지 않는 직접쿼리 모드나 다차원 모델을 구성된 경우 복합 활용을 고려할 수 있습니다.

Copyright © 2020 eloicube inc. All rights reserved.