alt

9:28

Shared on October 9, 2026

05:59:31

데이터 레이크에 대해서도 함께 알아봤습니다. 그리고 그 다음으로 데이터 웨어하우스와 데이터 레이크 두 가지가 각각 장단점을 가지고 있었습니다. 데이터 웨어하우스는 데이터를 관리하거나 트랜잭션을 체계적으로 처리하는 그러한 측면에서 장점을 가지고 있었고요. 데이터 레이크는 다양한 종류의 데이터를 저장하는 데에 특화된 장점을 가지고 있었습니다.

05:59:31

그래서 그 두 가지의 장점을 함께 가지고 있는 것이 데이터 레이크 하우스인데요. 데이터 레이크와 데이터 하우스를 합쳐서 만든 그런 형태의 데이터 저장 방식이다 라고 생각을 해주시면 됩니다. 그래서 간단히 데이터 레이크 하우스가 어떤 특성을 가지고 있고 어떤 기능을 제공하는 지만 알아보도록 하겠습니다. 그래서 데이터 레이크 하우스는 데이터 레이크의 대표적인 장점이죠.

05:59:31

유연성, 그리고 코스트, 비용 효율성, 그리고 확장성이 있다. 이렇게 다양한 데이터를 자유롭게 저장을 할 수 있기 때문에 이러한 장점을 가지고 있고요. 그래서 이러한 장점을 그대로 승계를 하고 또한 데이터 웨어하우스가 가진 장점도 있었습니다. 데이터를 체계적으로 관리하고 트랜잭션의 ACID를 보장하는 이러한 장점을 가지고 있는 그러한 형태의 데이터 저장 또는 관리 체계를 의미합니다.

05:59:31

지난 시간에 트랜잭션에 대해서 간단하게 설명을 드렸고요. 그리고 이러한 트랜잭션이 만족해야 하는 대표적인 4가지의 특성을 있었습니다. 그래서 원자성, 일관성, 고립성, 지속성이라는 4개의 특성을 기본적으로 보장을 해야 되고 이러한 것을 데이터 웨어하우스에서는 보장을 해준다는 것까지 지난 시간에 공부를 했었고요.

05:59:31

그래서 간단하게 이런 데이터 웨어하우스가 어떠한 기능들을 제공하는지 알아보도록 하겠습니다. 그래서 앞에서 설명드렸던 것처럼 트랜잭션에 ACID라는 그 네 가지 특성을 보장하고요. 이 트랜잭션을 처리할 수 있는 다양한 기능을 데이터 웨어워스처럼 함께 제공을 해주고 있습니다. 그리고 두번째, schema enforcement는 각각의 데이터의 schema가 각자 다르겠죠.

05:59:31

다양한 데이터의 schema를 하나로 통합해서 관리해주는 그러한 기능을 의미합니다. 그래서 데이터 레이크하우스에는 비정형 데이터도 있고, 정형 데이터도 있고, 반정형 다양한 데이터도 있겠죠. 그 스키마들을 하나로 통합해서 관리해주는 그런 기능을 제공하고요. 그리고 governance라는 것은 어떤 데이터의 전반적인 관리 체계 또는 관리 정책을 의미하는데요.

05:59:31

이러한 관리 정책을 설정해서 세계적으로 데이터를 관리할 수 있는 그러한 기능도 제공합니다. 그 다음에 이제 BI 라는 비즈니스 인텔리전스 라는 기능을 제공합니다. 이걸 어떤 기능을 의미하냐면 우리가 일상적인 어떤 업무 처리를 위한 기능입니다. 그래서 어떤 리포트를 작성을 하거나 아니면은 배시고드 같은

05:59:31

것을 제공을 해서 어떤 업무 분석을 가능하게 하거나 이렇게 업무를 효율적으로 처리할 수 있는 그런 기능도 제공을 해줍니다. 그리고 그 다음으로 스토리지 저장 공간과 컴퓨팅 공간을 분리를 합니다. 그래서 이렇게 분리를 해서 따로 관리를 하기 때문에 장점은 만약에 우리가 저장 공간만 부족해서 더 필요하다 하면 스토리지만 더 추가를 해주면 되겠죠.

05:59:31

그리고 만약에 어떤 컴퓨팅 파워가 좀 부족해서 컴퓨팅 을 추가를 하고 싶다 라고 하면은 이 컴퓨팅 쪽에만 새로운 어떤 장비를 추가하거나 하는 그런 작업을 굉장히 유연하게 수행을 할 수 있습니다. 그리고 이제 다음으로 오픈 스토리지 포맷을 제공을 하기 때문에 어떤 한 시스템에 종속되어 있는게 아니고요. 여러 시스템에 잘 적응해서 활용을 할 수 있습니다.

05:59:31

그래서 다양한 시스템에 잘 적용해서 활용할 수 있다는 장점을 가지고 있습니다. 그리고 그 다음에는 데이터, 레이크와 마찬가지로 비정형 데이터부터 정형 데이터까지 굉장히 다양한 형식의 데이터를 저장할 수 있고요. 그리고 또한 다양한 워크로드도 지원을 해서 데이터 사이언스, 머신러닝, 혹은 단순한 SQL을 이용한 데이터 분석 등 다양한 기능도 제공을 하고 있습니다.

05:59:31

그리고 마지막으로 실시간 데이터의 처리도 가능합니다. 그래서 실시간으로 데이터가 들어왔을 때 그 데이터를 처리하고 분석해서 리포트 하는 것까지 end to end 즉 처음부터 끝까지 실시간 데이터 처리도 지원을 해주고 있습니다. 간단하게 그냥 레이크하우스라는 게 무엇이고 그냥 이러한 버튼을 지원해 놓은구나

05:59:31

이정도만 간단하게 알아두시면 될 것 같습니다. 그리고 그 다음은 이제 복잡적으로 데이터 웨어하우스를 모델링하는 방법이 어떤 것들이 있는지에 대해서 공부를 해보도록 하겠습니다. 그래서 여기서 이제 스키마 그리고 메저라는 개념에 대해서 공부를 하고요. 데이터 웨어하우스는 기본적으로 이제 데이터 큐브 형태로 데이터들을 구성합니다.

05:59:31

데이터큐브라는게 무엇인지에 대해서 먼저 간단하게 알아볼 예정이구요. 그 다음에는 데이터 모델을 구성하기 위한 대표적인 스키마들이 있습니다. 구조들이 있습니다. 그래서 스타, 스노우플레이크, 팩트콘스텔레이션이라는 세가지 대표적인 스키마에 대해서 공부를 해볼 예정이구요. 그 다음에는 이제 우리가 dimension이랑 measure라는 두 개의 개념이 계속 나올텐데

05:59:31

이제 dimension, measure에 대한 각각의 특징에 대해서 한번 공부를 해보도록 하겠습니다. 먼저 이제 데이터 웨어하우스는 기본적인 테이블이나 원래 스프레드 시트 형태로 정형 데이터가 구성이 되어 있겠죠. 그런데 그것 그대로 우리가 데이터를 활용하는게 아니라 데이터 웨어하우스는 데이터를 다차원 데이터로 구성을 해서 활용을 합니다.

05:59:31

그래서 다차원의 데이터 형태로 데이터를 보게 되고요. 이러한 다차원의 데이터 모델을 구성하는 대표적인 방법이 데이터 모델입니다. 다시 데이터 큐브를 정의하면 다차원의 데이터 모델을 만들어주는 그런 하나의 형태라고 생각을 해줄 수 있습니다. 예를 들어 예를 한번 들어보겠습니다.

05:59:31

그래서 만약에 판매량이라는 어떤 데이터를 분석하고 싶다고 한번 가정을 해보도록 하겠습니다. 그럼 판매량을 그냥 분석을 하면 안되고요. 우리가 판매량을 분석을 할 때 예를 들어서 어떤 상품별 판매량을 분석을 할 수도 있겠고요. 혹은 날짜별 판매량을 분석을 할 수도 있고 아니면 지역별 판매량 이렇게 여러가지 기준축으로 어떤 데이터를 분석을 할 수 있습니다.

05:59:31

그래서 이렇게 여러 개의 기준의 축을 설정을 하는 것 즉 상품별, 날짜별, 지역별 이런 것을 다차원 데이터 모델이라고 하고요. 이러한 데이터를 분석하기 위한 각각의 축을 dimension 이라고 부릅니다. 그리고 우리가 최종적으로 분석하고 싶은 분석의 대상이 있겠죠. 여기서 예를 들면은 우리는 판매량이라는 것을 분석을 하고 싶은 거죠. 그 판매량이라는 값이 measure가 됩니다.

05:59:31

계속 이제 디멘전이랑 레저 라는 용어가 나올텐데 디멘전은 우리가 분석을 하고 싶은 기준축 날짜, 상품, 지역 등이 디멘전이 되고요 레저는 우리가 실제 분석을 하는 대상 즉 판매량, 판매수량 판매 금액, 뭐 이런 값들이 됩니다. 그래서 이러한 데이터 큐브는 이러한 디벤전과 메저를 중심으로 두 가지 종류의 테이블로 구성이 됩니다.

05:59:31

먼저 디벤전 테이블인데요. 여기는 이제 각각의 디벤점들이 저장이 됩니다. 예를 들어서 어떤 아이템 테이블에는 아이템 이름, 브랜드가 뭔지, 타입이 뭔지 이 아이템에 관련된 그러한 정보가 저장이 됩니다. 그럼 이 아이템이라는 dimension 테이블을 이용해서 상품별로 분석을 할 수도 있고요. 아니면 브랜드별로 분석을 수행을 할 수도 있겠죠. 어떤 분석기준 축에 대한 그런 상세한 정보가 여기 저장이 되어 있습니다.

05:59:31

또한 이제 타임이라는 dimension 테이블을 만들 수도 있겠죠. 여기에는 예를 들어서 일, 주, 달 같은 이런 시간정보가 저장될 수 있습니다. 그럼 역시 이 타임이라는 기준축을 중심으로 해서 일별 판매량 주별 판매량, 월별 판매량, 이러한 식으로 어떠한 기준으로 데이터를 분석할지를 우리가 정해줄 수 있습니다.

05:59:31

그 다음, Fact Table이라는 게 있는데요. Fact Table은 기본적으로 우리가 분석을 하는 대상에 해당이 되죠. 이 매적 값을 저장을 합니다. 예를 들어서 달러 판매량 같은 이러한 분석 대상을 저장을 할 수 있습니다. 그런데 여기서 문제는 뭐냐면 이렇게 예를 들어서 어떤 판매 금액만 딱 저장을 해 놓게 되면은 어떤 문제가 발생할 수 있냐면 그 판매 금액이

05:59:31

어떤 것에 대한 판매 금액인지 우리가 알 수 없겠죠. 예를 들어서 어떤 상품에 대한 판매 금액인 것인지 아니면 어떤 일별 판매 금액인 것인지 아니면 어떤 지역에 대한 판매 금액인 것인지 그 값 하나만 있으면 우리는 알 수가 없습니다. 그래서 우리가 이러한 매저가 어떠한 기준으로 측정된 값인지를 함께 이 팩트 테이블 안에 표현을 해줘야 됩니다.

05:59:31

그래서 표현을 하는 방식은 이 키 라는 값을 같이 저장을 합니다. 이 키는 각각의 디멘전 테이블에 연결이 되어 있습니다. 그래서 이 키 값을 통해서 예를 들어서 판매 금액이라는게 있다면 이 판매 금액이 아이템별 판매 금액인지 아니면 시간별 판매 금액인지 이러한 정보들을 이 키 값을 통해서 우리가 알 수 있습니다. 정리하자면 이 팩트 테이블은 두가지 정보를 함께 포함하고 있는데요.

05:59:31

메저라는 실제 측정값을 우리가 가지고 있고 두번째로 키값을 가지고 있습니다. 이 키값은 디멘전 테이블과 연결이 되어서요. 어떤 기준으로 이 값이 분석이 되었는지를 표현을 해주게 됩니다. - Mm-hmm. 그리고 이러한 데이터 큐브를 조금 다른 관점에서 살펴보자면

05:59:31

이 큐보이드라는 것이 계층적으로 쌓여있는 구조라고 우리가 해석을 해줄 수 있습니다. 큐보이드라는 것은 뒤에서 구체적으로 보겠지만 특정 차원을 기준으로 집계한 값이라고 생각을 할 수 있습니다.

05:59:31

예를 들어서 가장 아래에 있는 가장 저계층의 큐보이드를 우리가 베이스 큐보이드라고 하는데요. 이 베이스 큐보이드는 어떤 아무런 기준으로도 집계하지 않은 순수한 원래 형태의 데이터를 의미합니다. 그리고 이제 상위계층으로 올라갈수록 어떤 특정 차원을 기준으로 예를

05:59:31

들어서 어떤 상품별. 혹은 일별, 혹은 어떠한 지역별로 이런 값들을 집계해서 보게 되는데요. 이러한 한 차원에 대해서 값을 집계할 때마다 더 상위 차원으로 올라가게 됩니다. 그렇게 상위 차원으로 끝까지 올라가게 되면은 가장 상위 계층에는 제로 디벤전 큐보이드가 위치하는데요.

05:59:31

이것은 모든 디벤전, 모든 차원의 기준으로 집계한 값이기 때문에 하나의 단일 값을 나타내게 됩니다. 그래서 여기서는 일단은 이 데이터 큐보라는 게 큐보이드라는 게 계층적으로 쌓여있다는 것만 기억을 하고 어떻게 쌓여있을지는 뒤에서 조금 더 구체적으로 공부를 해보도록 하겠습니다. 그래서 아래와 같은 형태를 가지고 있습니다.

05:59:31

여기서 이 타임, 아이템, 로케이션, 서플라이어 라는 것은 4개의 각각의 차원을 의미합니다. 즉 어떠한 데이터, 예를 들어서 판매량이라는 데이터를 분석할 때 분석의 기준이 되는 축들을 의미하죠. 그래서 시간은 언제 팔린 언제 판매량인지, 어떤 아이템에 대한 판매량인지 어떤 지역에 대한 판매량인지 어떤 판매자의 판매량인지에 대한 이러한 정보를 하나의 데이터에 모두 포함을 시킬 수 있습니다.

05:59:31

이 dimension은 우리가 계속 공부를 했던 attribute와 여기서는 동일하다고 생각을 해 줄 수 있습니다. 그래서 가장 아래에 있는 베이스 큐보이드는 이런 모든 디벤전에 대한 정보를 다 구체적으로 가지고 있는 그러한 데이터를 배우는 겁니다. 그리고 그 위에 이제 3D 큐보이드로 가게 되면은 이 4개의 디벤전 중에 하나의 값을 요약해서 나타냅니다.

05:59:31

그래서 3가지 경우가 나올 수 있겠죠. 예를 들어서 첫번째 타임, 아이템, 로케이션 같은 경우에는 이 서플라이어에 대해서 요약한 정보를 나타냅니다. 그래서 모든 판매자에 대한 그러한 모든 판매자에 대한 판매 금액을 요약해서 나타내 주고 있고요. 이 두 번째 같은 경우에는 여기서는 로케이션이 없죠. 그래서 모든 지역에 대한 판매 금액을 요약해서 나타내 주고 있습니다.

05:59:31

세 번째 같은 경우에는 역시 아이템 모든 상품에 대한 판매 금액을 각각 타임 로케이션 서플라이어에 대해 나타내고 있고요. 마지막은 타임 시간에 대해서 모든 시간에 대해서 요약한 그러한 판매 금액을 Item Location Supplier 3개의 축에 대해서 나타내 주고 있습니다. 그 다음 한 단계 더 올라가서 2D Cuboid로 올라가게 되면은

05:59:31

여기서 하나의 Dimension에 대한 집계를 또 다시 한번 진행하게 됩니다. 그래서 그 위로 갈수록 이번에는 두 개의 Dimension에 대해서 값을 나타내고 있는 것을 확인할 수 있고요 총 6개의 값을 나타낼 수 있습니다 그 다음에 한차원 올라가게 되면은 여기서 이제 두개의 디멘전 중에 또 한개의 디멘전에 대해서 요약을 하게 되겠죠 그래서 이번에는 이제 하나의 차원에 대해서만

05:59:31

값을 나타내고 있습니다. 그래서 예를 들어서 time 이라고 되어 있으면 어떤 시간에 대해서 나머지 차원에 대해서는 모두 다 요약된 하나의 값을 시간에 대해서만 이렇게 나타내고 있는 걸 확인할 수 있습니다. 그리고 이제 가장 상위의 퓨보이드로 올라가게 되면은 이것을 이제 제로 디메이션 퓨보이드 혹은 스튜보이드라고 하는데요. 이것은 모든 차원에 대해 요약한 하나의 값을 나타내고 있습니다.

05:59:31

예를 들어서 판매금액이라고 하면은 그냥 총 판매금액 이렇게 하나의 값만 나타낼 수 있고요. 혹은 평균으로 요약을 하게 되면은 그냥 평균 판매금액 이렇게 하나의 값으로 요약된 것을 의미합니다. 그래서 데이터 웨어하우스를 모델링을 할 때는 결국 이 두 가지 정보, 디멘션과 매저 혹은 팩트 테이블이라고 하시겠죠.

05:59:31

그래서 이 디멘션 테이블과 팩트 테이블을 어떤 방식으로 구성하냐에 따라서 이 모델이 정해지게 됩니다. 그래서 가장 기본적인 구조는 스타 스키마 입니다. 스타 스키마는 가운데 팩트 테이블이 위치하고요. 그리고 그 팩트 테이블에 있는 키를 사용해서 주변에 있는 여러개의 디멘전 테이블과 연결하는 구조를 가지고 있습니다.

05:59:31

그래서 다운제 팩트 테이블이 있고 그 키로 여러개의 주변의 디벤젼 테이블과 연결이 되기 때문에 별과 같은 그러한 모양으로 생겼다 라고 해서 스타 스키마라고 부르고 있습니다. 그 다음 이제 두번째로 스노우 플레이크 라는 스키마가 있는데요. 이 스키마 같은 경우에는 스타 스키마랑 마찬가지로 가운데 팩트 스키마가 있고요.

05:59:31

그리고 주변에 디벤젼 테이블로 연결된 비유사한 구조를 가지고 있습니다. 그래서 유사하게 가운데 팩트 테이블 그리고 주변에 디벤젼 테이블이 있는데 차이점은 이 dimension 테이블에 계층 정보가 포함이 되어 있을 수 있습니다. 어떤 계층을 가지는 그러한 정보가 포함이 되어 있을 때는 뒤에서 자세히 조금 더 배우겠지만 정교화라는 과정을 수행을 해서요.

05:59:31

그런 정교화를 통해서 테이블을 여러 작은 테이블로 쪼개주는 그러한 과정을 수행하게 됩니다. 스타 스키마 같은 경우에는 디벤전 테이블이 반드시 가운데 있는 팩트 스키마에 다 직접적으로 연결이 되어 있어야 됩니다. 그런데 스노우 플레이크는 디벤전 테이블을 분리를 해서 여러 개의 작은 디멘전 테이블 형태로 가지고 있기 때문에

05:59:31

이 디멘전 테이블이 팩트 테이블에 직접적으로 연결이 되어 있지 않을 수도 있습니다. 그래서 어떤 디멘전 테이블에만 연결되어 있는 작은 디벤젼 테이블들도 존재할 수 있습니다. 그래서 이거는 눈송이 같은 구조를 가지고 있다 라고 해서 스노우 플레이크 스키마라고 부르고 있습니다. 마지막 팩트 코스틀레이션이라는

05:59:31

이러한 스키마 같은 경우에는 팩트 테이블이 여러 개가 존재합니다. 그래서 위에 두 개는 팩트 테이블이 하나였는데 아래는 팩트 테이블이 여러 개고요. 그러면은 예를 들어서 여러 개의 팩트 테이블이 서로 공유하는 디벤전 테이블이 있을 수도 있고요. 아니면 특정한 팩트 테이블에만 속해 있는 디벤전 테이블이 있을 수도 있겠죠. 그래서 이거는 이제 스타 스키마가 여러 개 합쳐져 있는 구조를 가지고 있다 라고 해서

05:59:31

이런 갤럭시 스키마라고 부르기도 합니다. 그래서 뒤에서 실제 어떤 모양이 어떻게 생겼는지 실제 예시를 통해서 조금 더 구체적으로 한번 살펴보도록 하겠습니다. 먼저 가장 간단한 스타 스키마의 구조입니다. 다음 내 팩트 테이블이 위치합니다. 그래서 아래에 있는 분홍색으로 표현된 세 가지의 값은 매저를 의미합니다.

05:59:31

그래서 단위별 판매량, 달러 판매액, 그리고 평균 매출액 등을 매저로 가지고 있습니다. 그리고 이 메저들이 어떤 기준축에 해당되는지 모르니까 그에 대한 키값도 팩트테이블에 함께 저장한다고 했습니다. 그래서 윗부분을 보면 이 4개의 키, 각각의 기준축에 대한 키값이 저장되어 있는 것을 확인할 수 있습니다.

05:59:31

그래서 타임키를 통해서 왼쪽에 있는 타임에 대한 디멘전 테이블에 연결이 되고요. 이 타임이라는 디멘전 테이블은 시간과 관련된 다양한 세부적인 정보를 가지고 있습니다. 그래서 이러한 데이터가 어떤 날짜에 대해서 해당이 되는지 아니면 어떤 개월에 해당이 되는지 어떤 연도에 해당이 되는지 이런 상세한 정보를 가지고 있고요 그리고 예를 들어서 아이템키 같은 경우에는

05:59:31

오른쪽 아이템에 대한 상품에 대한 상세한 정보를 포함하고 있습니다 그래서 이러한 측정값이 어떤 브랜드에 대한 측정값인지 어떤 타입인지 아이템 이름이 어떻게 되는지에 대한 이러한 정보를 얻을 수 있습니다 그래서 이러한 구조를 스타 스키마라고 부르고 있고요. 그 다음에 있는 두 번째 스노우 플레이크 같은 경우에는 스타와 굉장히 유사한 스키마를 가지고 있습니다. 근데 차이점은 이 오른쪽과 같은 이러한 일부 디벤전 테이블이 분리되어 있습니다.

05:59:31

그래서 이 서플라이어라는 예를 들어서 디벤전 테이블은 이 팩트 테이블과 직접적으로 연결되어 있지 그럼 왜 이 테이블을 어떠한 경우에 분리를 해주냐 라고 하면은 어떤 계층 정보가 포함이 되어 있어서 중복된 값이 많이 발생을 할 때 이러한 분리를 진행을 해주게 됩니다. 예를 들어서 이 서플라이어는 판매자를 의미하죠.

05:59:31

그런데 이 판매자에 대한 정보가 여러번 중복이 될 수 있습니다. 예를 들어서 이 판매자 삼성이라고 한번 해보도록 하겠습니다. 굉장히 다양한 아이템이 있겠죠. 그래서 예를 들어서 PC도 있을 수도 있고 모니터도 있을 수도 있고 노트북이 있을 수도 있습니다. 그러면 예를 들어서 중복된 정보가 그런 각각의 상품에 대해서 계속 반복이 되겠죠. 그렇기 때문에 이 중복된 정보를

05:59:31

계속 포함시키지 않기 위해서 이렇게 따로 서플라이어라는 이러한 테이블로 만들어 줄 수 있습니다. 이러한 과정을 정규화라고 합니다. 그래서 Slow Flake는 정규화를 통해서 Dimension Table이 중복된 정보가 많이 발생되지 않도록 이렇게 테이블을 나누는 것을 의미합니다. 그래서 구체적으로 여러가지 정규화 규칙, 정규화 방법들이 있는데 이러한 것들은 데이터베이스 과목에서 다루고 있고요.

05:59:31

그래서 이 수업에서는 구체적인 정규화 방법을 다루지는 않겠습니다. 그래서 그냥 이렇게 분리를 한다 정도만 알아두시면 될 것 같고요. 예를 들어서 아래 로케이션 같은 경우에도 어떤 거리가 있는데 그 거리는 하나의 도시에 많이 포함될 수 있죠. 예를 들어서 서울에 있는 A거리, B거리, C거리 이렇게. 그러면 이제 서울이라는 정보가 각각의 거리마다 계속 반복해서 나타나기 때문에

05:59:31

이 반복을 피하기 위해서 오른쪽처럼 이렇게 시티라는 테이블 정보를 분리시킬 수 있습니다. 이러한 식으로 구성을 한 것을 Snowflake라고 합니다. 그리고 마지막 Fact Constellation 인데요. 이 스키마 같은 경우에는 앞에와 다르게 팩트 테이블을 여러 개 가지고 있을 수 있습니다. 그래서 여기서는 Shales와 Shipping 이라는 두 개의 팩트 테이블을 가지고 있고요.

05:59:31

각각의 벤저가 있겠죠. 여기서 이 여러 개의 팩트 테이블이 공유하는 아이템과 로케이션 같은 이런 공유되는 디벤저 테이블이 있을 수도 있고요. 아니면은 브랜치와 같이 이렇게 하나의 팩트 테이블에만 속해 있는 이런 테이블도 가지고 있을 수도 있습니다. 이렇게

05:59:31

데이터 큐브를 모델링하는 간단히 세 가지 방법에 대해서 한번 알아봤는데요. 그 다음에는 이런 데이터 큐브를 구성하는 두 가지 요소죠. 디멘전 그리고 메저의 특징에 대해서 한번 간략하게 핵심적인 부분만 알아보도록 하겠습니다. 먼저 dimension의 특징인데요. dimension은 어떤 분석을 진행할 때 그 분석의 기준이 되는 축이라고 말씀을 드렸습니다.

05:59:31

dimension은 concept hierarchy라는 특징을 가지고 있습니다. 즉 디멘전에 포함된 여러가지 정보가 이렇게 계층적으로 일반적으로 구성이 되어 있습니다. 예를 들어서 이 디멘전 중에 로케이션이라는 디멘전이 있다고 하겠습니다. 그러면 어떤 위치를 이렇게 오피스 차원의 값을 가지고 있고요

05:59:31

그 더 상위 계층의 시티에 대한 그러한 값도 가지고 있고 컨트리에 대한 값도 가지고 있고 브리즌에 대한 값도 가지고 있을 수 있습니다 그래서 이렇게 로케이션 안에 포함되는 4개의 이러한 정보가 서로 계층적인 구조를 가지고 있는 이러한 특징을 가지고 있습니다. 예를 들어서 어떤 판매량이다 라고 하면 우리가 주소를 표현을 할 때 예를 들어서 유럽에 있는 독일에 있는 프랑크프루트에 있는

05:59:31

어떤 오피스에서 발생한 판매 매출이다 이러한 정보를 표현을 해주겠죠. 이러한 것들이 이렇게 계층적인 형태로 구성이 되어 있다는 특징을 가지고 있습니다. 이런 위치뿐만 아니라 다른 데이터도 다른 디멘전도 마찬가지입니다. 그래서 예를 들어서 타임도, 몇 년도, 몇 월, 몇 일, 몇 시에 일어난 판매라. 이런 식으로 계층적으로 이러한 값을 가지고 있겠죠.

05:59:31

그래서 이러한 특징을 가지고 있고요. 그래서 이러한 외계층적인 특징을 디멘션이 가지고 있기 때문에 더 상위계층으로 올라가서 더 요약된 값을 보는 그런 연산도 수행을 하게 되고요. 반대로 하위계층으로 내려가서 더 세부적으로 데이터를 보는 연산도 그러한 연산도 수행을 하게 됩니다. 그래서 결국에는 이 디벤저를 이용해서 상위계층, 하위계층으로 이동을 하면서

05:59:31

더 요약된 집계된 값을 볼 수도 있고요. 아니면은 더 세부적인 값도 우리가 원할 때 필요에 따라서 이런 정보들을 볼 수 있습니다. 다음은 매저인데요. 매저는 실제 분석이 되는 대상 또는 값을 의미합니다. 그래서 매저는 크게 세 가지 카테고리로 우리가 분류를 할 수 있습니다.

05:59:31

첫 번째는 매저는 매저입니다. 디스트리뷰티브 인데요. 이 디스트리뷰티브는 가장 단순한 형태로 계산된 매저에 해당이 됩니다. 그래서 어떤 전체 데이터가 있을 때 그 전체 데이터를 여러 개의 그룹으로 나누고요. 그 그룹에 대해서 각각의 집계함수를 수행합니다.

05:59:31

그러면 각각에 대해서 집계함수로 계산된 결과값들이 나오겠죠. 그 결과값들을 가지고 다시 한번 그 동일한 집계함수를 수행합니다. 전체 데이터를 한번에 집계함수를 통해서 집계함 값이 같을 경우에 이러한 매저를 디스트리뷰티브라고 합니다. 말로 설명하면 굉장히 복잡한데

05:59:31

예시를 하나 들면 이 sum같은 경우에는 어떤 데이터를 두 개의 그룹으로 우리가 한번 나누겠습니다. 전체 데이터를 두 개의 그룹으로 나눠서요. 첫 번째 그룹에 대한 합계를 구하고요. 두 번째 그룹에 대한 합계를 구합니다. 그러면 두 개의 값이 나오겠죠. 다시 그 두 개의 합계를 다시 한번 이 sum이랑 동일한 함수를 통해서 다시 한번 최종적인 합계를 풀어겠습니다. 그러면 그건 어떤 값이랑 같냐면

05:59:31

전체 데이터를 그냥 한번에 sum을 한 값과 같겠죠. 그래서 그룹을 나누어서 그 나눈 그룹에 대해서 집계함수를 수행한 다음에 요약을 하던 아니면 한번에 모든 데이터를 요약을 하던 그 결과가 같은 것을 Distributive Measure라고 합니다. 그래서 여기에 해당되는게 대표적으로 Count, Sum, Min, Max 등이 쓸 수 있습니다. 예를 들어서 Min 같은 경우에도 각 그룹에 대한 최소값을 구한 다음에

05:59:31

그 중에서 다시 최소값을 구하면 전체 최소값을 구하는 것과 같죠. 그래서 여기에 해당이 됩니다. 두 번째는 algebraic이라는 매저인데요. 이 매저 같은 경우에는 전체 데이터를 m계라는 고정된 갯수의 중간값으로 나눕니다. 그리고 그 m계에 대한 중간값을 통해서 최종적인

05:59:31

결과를 얻을 수 있는 경우를 말합니다. 그래서 전체 결과를 m개로 쪼개서 m개의 중간값을 얻고요. 그 중간값을 이용해서 최종적인 결과를 얻을 수 있는 그러한 경우를 의미하고요. 그리고 한 가지 조건이 더 있는데 이 중간값을 계산할 때 활용하는 함수는 위에서 공부했던 Distributive Function으로 계산된 중간값을 이용을 해야 됩니다.

05:59:31

그래서 이것도 예시를 통해서 직관적으로 이해할 수 있는데 평균이라는 것을 계산을 한다고 했을 때 이 평균값은 두 개의 중간값을 이용해서 계산할 수 있습니다. 첫 번째로 sum이라는 중간값을 활용할 수 있고요. 두 번째로 count라는 중간값을 활용할 수 있습니다. 그런데 이 중간값을 보면은 이 sum은 위에서 봤을 때 이 distribute에 해당이 되고요. count도 distribute measure에 해당이 되죠.

05:59:31

그래서 distribute measure로 계산된 두 개의 중간값으로 최종적인 average를 구할 수 있기 때문에 이 average는 L'에 해당이 됩니다. 밑에 아이는 minn 같은 경우에는 좀 애매해서 잠시 후에 설명을 드리고요. 표준 편차 같은 경우에도 L'에 해당이 됩니다. 왜냐하면 표준 편차를 구하는 공식을 앞에서 공부를 해봤었죠.

05:59:31

세 개의 값이 필요하게 되는데요. 먼저 count, 전체 데이터의 개수, 그리고 평균값, 그리고 제곱 평균값이 필요하죠. 이 평균값도 결국에는 이 앞에 있는 sum이랑 count로 계산이 되기 때문에 결국에 이 distribute function의 조합으로 이러한 표준 편차를 모두 계산할 수 있습니다.

05:59:31

따라서 distribute function의 조합으로 계산을 할 수 있으니까 이것도 l8에 해당이 됩니다. 그리고 마지막 min n 같은 경우에는 최소 n개, 최소값 n개를 구하는 연산인데 이 경우에는 교재에서는 l8이라고 얘기를 하고 있는데요. 사실 이 디스트리뷰티브 정의로도 계산을 해줄 수가 있습니다. 왜냐면은 그룹을 여러개를 나눠서 각각의 그룹에 대해서 최소값을 가지는 n개를 선택을 한 다음에

05:59:31

그 전체를 다시 모아서 거기서 또 최소가 되는 n개를 선택을 하면은 이 값을 구할 수가 있겠죠. 그래서 사실 이 경우에는 좀 애매하긴 해서 두 경우로 해석을 다 할 수 있는데 여기서는 조금 혼동이 없게 디스트리뷰티브에 해당이 된다라고 여기서는 정의하고 넘어가도록 하겠습니다. 그리고 마지막 홀리스틱인데요.

05:59:31

홀리스틱은 어떤 고정된 개수의 중간값으로 전체 집계값을 계산할 수 없는 경우를 의미합니다. 예를 들어서 미디안 같은 경우를 한번 보면은 N개의 그룹으로 나눠서 각각의 중간값을 구한 다음에 그 중간값을 요약을 중간값만을 활용해서 전체의 중간값을 계산할 수 없겠죠.

05:59:31

각 그룹의 중간값을 안다고 해서 그중에 어떤게 진짜 중간값인지 아니면은 중간값이 포함이 되지 않을 수도 있습니다. 따라서 이렇게 어떤 고정된 개수의 중간값으로 계산할 수 없는 경우가 홀리스틱에 해당이 됩니다. 그래서 이 경우에는 계산을 할 때 전체 데이터가 다 필요하거나 아니면 그와 유사한 개수의 데이터가 필요하게

05:59:31

여기까지 이제 dimension 그리고 measure의 특징에 대해서 알아봤는데요. 그 다음에는 실제 dimension과 measure를 통해서 데이터 큐브가 어떻게 구성이 되는지 한번 시각적으로 알아보도록 하겠습니다. 그래서 이 왼쪽과 같이 이런 식으로 데이터 큐브가 만들어질 수 있습니다. 이 차원은 각각의 큐브오이드에 따라서 3차원, 2차원, 4차원 여기는 3개의 디멘전이 있습니다. 지역, 상품, 개월이라는 3개의 디멘전이 있고요.

05:59:31

이 하나의 셀은 하나의 메저에 해당이 됩니다. 그래서 예를 들어서 이 하나의 메저는 어떤 지역에서 발생한 어떤 상품의 어떤 계열의 값이다라는 것을 이 하나의 셀이 의미하게 됩니다. 그리고 오른쪽과 같이 각각의 디멘저는 이렇게 계층적인 형태로 구성이 되어 있습니다. 그래서 프로덕트는 예를 들어 프로덕트 카테고리 산업 뭐 이러한 식으로 계층 정보가 구성되어 있을 수 있고요.

05:59:31

로케이션 파우드도 이러한 식으로 각각의 디벤션 정보가 계층으로 구성될 수 있습니다. 실제 한번 데이터큐브 구조를 예시로 살펴보도록 하겠습니다. 각각 이제 프로덕트 데이트 컨트리라는 세 개의 디멘션으로 데이터를 다차원으로 표현을 해주고 있습니다.

05:59:31

결국에는 각각의 차원에 대한 집계값을 계산을 해서 결국에 이러한 요약된 정보를 보여줄 수 있습니다. 그래서 실제로 베이스는 3차원이지만 이렇게 집계된 값을 통해서 2차원의 정보 혹은 1차원 혹은 0차원의 정보로 우리가 요약해서 이 데이터 큐브로 한 번에 데이터를 보여줄 수 있습니다. 예를 들어서 오른쪽에 있는 밝은색, 초록색 같은 경우에는 데이터라는 디멘저를 기준으로 요약된 정보를 예비합니다.

05:59:31

밝은 초록색 같은 경우에는 2차원의 데이터입니다. 그래서 이 프로덕트 컨트리로만 표현된 2차원의 데이터에 해당이 됩니다. 그래서 이 가장 오른쪽 상단에 있는 이 데이터를 한번 봐보면 이 셀은 어떤 정보를 나타내냐면 미국에서 판매된 모든 tv에 대한 판매량을 나타냅니다. 그래서 1분기 2분기 3분기 4분기에 대해서 합계를 해서요.

05:59:31

이제 모든 분기에 대해서 미국에서 판매된 tv에 그런 판매량을 나타내니까 2차원에 해당이 됩니다. 그리고 또한 이 앞에 있는 이 밝은색, 주황색 같은 경우에는 이거는 이제 모든 프로덕트, 모든 상품에 대해서 집계된 결과를 보여줍니다. 그 프로덕트라는 디벤젤에 대해서 집계한 결과고요. 그래서 역시

05:59:31

2차원의 정보를 나타냅니다. 그래서 예를 들어서 이 왼쪽 위에 있는 이 데이터는 뭘 나타냈냐 라고 했을 때 1분기에 미국에서 판매된 모든 상품에 대한 판매 금액을 의미하게 됩니다. 그리고 마지막 남은 컨트리에 대한 축으로 요약을 진행할 수 있겠죠. 그건 여기 뒷부분에 가려져서 여기서는 보이지 않는데

05:59:31

이 반대쪽 뒷부분 면도 있겠죠. 거기에는 이 컨트리에 대해서 요약된 그런 집게값도 표현이 되어 있습니다. 그리고 그 다음에 여기서 이렇게 진한색 주황색으로 표현된 부분은 그리고 진한색 초록색으로 표현된 부분 그리고 회색으로 표현된 부분은 두 개의 디멘션을 기준으로 요약된 정보를 의미합니다. 즉 1차원의 원지 큐보이드를 의미합니다.

05:59:31

예를 들어서 이 주황색 가장 왼쪽 하단에 있는 진한 주황색 셀을 한번 보면 이 셀 같은 경우에는 1분기에 판매는 모든 상품에 대한 그리고 모든 국가에 대한 그러한 요약된 정보를 가지고 있습니다. 그래서 1분기에 판매는 그냥 판매 가격이겠죠. 그렇기 때문에 이 프로덕트라는 축 그리고 컨트리라는 축 두 개의 디멘션에 대해서 요약된 것을 확인할 수 있습니다.

05:59:31

오른쪽 아래에 있는 진한 초록색 같은 경우에는 country 그리고 분기에 대해서 이 시간에 대해서 요약된 값을 예비합니다. 이 회색 같은 경우에는 이번에는 분기 그리고 이 프로덕트에 대해서 요약된 값을 대비합니다.

05:59:31

그래서 이런 식으로 이제 1차원의 데이터로 요약할 수 있고요. 그리고 마지막 이 파란색 하나의 셀 같은 경우에는 가장 상단에 있는 에이펙스 큐브이드를 의미합니다. 그래서 전체 디멘션에 대한 유약된 하나의 값, 그 전체 판매액이겠죠. 전체 판매 금액이라는 하나의 값을 모서리 정보가 나타내 주고 있습니다.

05:59:31

이러한 정보를 방금 전에는 데이터 큐브 형태로 살펴봤고요. 이것을 큐브이드 형태로도 한번 살펴볼 수 있겠죠. 그래서 가장 하위 계층에 있는 베이스 큐브이드는 세 가지 디멘션 프로덕트 데이트 컨트리라는 이런 세 가지 디멘션을 가지고 있고요. 그 다음에 한 차원 올라가게 되면 여기에 나와 있는 밝은 주황색 밝은 초록색과 같이 두 개의 축으로 표현을 해줄 수 있습니다.

05:59:31

여기서 더 하나의 계층을 올라가게 되면은 이렇게 여기 있는 진한 주황색, 회색, 진한 초록색처럼 이 한 개의 축에 대한 정보만 나타낼 수 있고요. 마지막 가장 상위의 큐보이드는 여기 나와 있는 것 같은 이 파란색 이 부분에 해당해 줍니다. 여기까지 데이터 웨어워스의 기본적인 구조와 모델에 대해서 공부를 했고

05:59:31

그 다음에는 OLAP 오퍼레이션에 대해서 한번 공부를 해보도록 하겠습니다. 데이터 큐브는 방금 전에 공부를 했던 것처럼 굉장히 다차원의 데이터로 구성이 되어 있습니다. 그러면 우리가 어떤 차원 조합을 선택하냐에 따라서

05:59:31

굉장히 여러 개의 서브 스페이스가 만들어집니다. 예를 들어서 시간과 상품에 대해서 분석을 한다. 그럼 시간과 상품으로 이루어진 하나의 서브 스페이스가 나올 수 있고요. 시간과 위치로 우리가 분석을 하고 싶다. 그러면 시간과 위치에 대한 하나의 서브 스페이스가 나올 수 있겠죠. 그래서 굉장히 많은 서브 스페이스가 나오게 되는데요. 이렇게 되면 이런 모든 서브 스페이스죠. 어떤 것을 탐색을 할지 아니면 어떤 식으로 효율적으로 탐색을 할 수 있을지에 대한 문제가 나오게 됩니다.

05:59:31

그래서 이러한 데이터 분석이나 데이터 마이닝을 수행을 할 때 결국에 중요한 두 가지 문제가 있는데요. 첫번째 질문은 우리가 분석한 이 결과가 의미있는 정보인지를 판단을 해줘야 되고요. 두번째로는 가능한 서머스페이스가 굉장히 많으니까 어떻게 하면은 이러한 탐색을 조금 더

05:59:31

효율적이고 체계적으로 할 수 있을지에 대한 이러한 방법이 필요하게 됩니다. 그리고 이러한 두 번째 질문 즉, 어떠한 이런 굉장히 많은 서브 스페이스를 어떻게 효율적으로 탐색할지에 대한 그러한 부분을 해결해주는 것이 이제 OLAP라고 할 수 있습니다. 그래서 OLAP는 어떤 데이터의 다차원 분석을 진행을 할 때 그것을 조금 더 효율적이고 체계적으로 분석할 수 있도록 만들어주는 그런 툴이라고 생각을 할 수 있습니다.

05:59:31

이런 ONAP 같은 경우에는 아래에 같이 나와 있는 것처럼 어떤 집계 함수 혹은 어떤 그룹을 묶는 그러한 연산이 굉장히 많이 포함되게 됩니다. 당연히 그럴 수밖에 없는 게 여러 차원의 데이터를 요약하기도 하고요. 그리고 특정 어떤 그룹을 나눠서 분석을 진행을 하게 되겠죠.

05:59:31

그래서 이러한 두 개의 연산이 굉장히 많이 사용이 됩니다. 그래서 아래의 쿼리 예시를 통해서 대략적으로 살펴보도록 하겠습니다. 쿼리 같은 경우에는 데이터베이스에서 주로 다루는 내용이고요. 여기서는 커리까지 다르기에는 시간이 없어서 이 부분은 구체적인 내용을 생략하도록 하겠습니다. 이 의미만 그냥 대략적으로 설명을 드리면

05:59:31

먼저 우리가 어떤 날씨를 분석을 하고 싶습니다. 그 날씨를 두 가지 그룹으로 두 가지 기준으로 그룹을 나눠서 분석을 한다는 것을 의미합니다. 그룹 바위는 그룹을 묶는 그런 역할을 하고요. 그리고 어떤 시간이나 고도에 따라서 그룹을 묶어서 각 그룹에 대한 평균 온도를 불석해라 라는 서류를 의미합니다.

05:59:31

즉 타임과 고도를 기반으로 그룹을 묶은 다음에 각 그룹에 대한 평균 온도를 불석해라 라는 여기서 보면 알 수 있듯이 이렇게 그룹으로 보는 연산 그리고 집게 함수를 사용하는 이러한 연산이 많이 활용이 되게 됩니다. 그래서 여러개의 표준 벤치마크를 분석을 했을 때 예를 들어서 거기에 있는 이제 대표적인

05:59:31

83개의 쿼리가 있는데요. 그중에 59번 집계함수가 사용되었고요. 20번의 그룹 바이 연장이 사용되었다라는 것을 보여주고 있습니다. 다음으로는 대표적인 OLAP 연산 몇가지를 알아보도록 하겠습니다.

05:59:31

먼저 첫번째 연산은 Roll Up이라고도 하고요. Drill Up이라고도 하는데 개천을 위로 올라가거나 아니면 차원을 감소시켜서 어떤 데이터를 요약해주는 그러한 연산에 해당이 됩니다. 그래서 아래의 예시를 한번 보면은 왼쪽에 있는 그런 데이터 같은 경우에는 어떤 판매 금액을 나타내고 있죠.

05:59:31

썸 세이제니까 총 판매 금액을 나타내고 있는데 어떠한 기준으로 나타내고 있냐면 일별 그리고 어떤 가계별 상품별 이러한 판매 금액을 나타내고 있습니다. 이것을 이제 롤업 연산을 통해서 오른쪽처럼 조금 더 요약한 요약된 데이터 형태로 이 데이터를 얻어낼 수 있습니다. 데이를 month로 요약을 했고요. 가계별 데이터를 city, 도시별로 요약을 했고

05:59:31

이 가운데 스타 연산을 통해서 또 요약을 진행을 했습니다. 여기서 스타 연산은 뒤에서도 계속 나오게 되는데 어떤 걸 의미를 하냐면 해당 차원의 모든 값을 다 하나로 요약했다 라는 것을 의미합니다. 즉 여기서는 이 해당하는 차원이 이제 프로덕트 타입이죠. 그래서 모든 프로덕트 타입을 하나로 요약을 해서

05:59:31

결국에는 모든 프로덕트 타입에 대한 그런 판매 가격이다 라는 것을 의미하게 됩니다. 그리고 이제 오른쪽 그림으로도 이런 롤업 연산의 예시가 표현되어 있는데요. 이 왼쪽에 있는 데이터를 롤업해서 오른쪽과 같이 데이터 큐브를 변환을 해서 우리가 이런 데이터를 분석할 수 있습니다.

05:59:31

그래서 이 가로축만 세로축만 먼저 한번 살펴보면은 이 세로축은 이렇게 각각의 도시가 표현이 되어 있는 것을 알 수 있습니다. 이것을 롤업을 해서 이 두 개의 도시는 캐나다에 있는 도시고 이 두 개의 도시는 미국에 있는 도시니까 이거를 시티 단위를 위처럼 컨트리 단위로 유약을 해서 캐나다 그리고 미국 이렇게 두 개의 값으로 요약된 값을 보여주고 있습니다.

05:59:31

그리고 그 다음은 이제 Drill Down 인데요. 이거는 Roll Down 이라고 부르기도 하고요. Roll Up과 반대 연상으로 생각을 하면 됩니다. 그래서 차원을 더 낮춰서 조금 더 요약된 정보로부터 더 세부적인 구체적인 정보를 얻어내는 그런 연산을 의미합니다. 그래서 반대로 이렇게 국가 단위로 원래는 요약이 된 정보를 나라처럼 도시 단위로 우리가 더 세부적인 정보로 표현을 한다.

05:59:31

여기서 드릴다운 연산이 될 수 있습니다. 다음은 DICE 연산인데요. DICE 같은 경우에는 구체적인 값이나 범위를 가져오는 이런 연산을 의미합니다. 그래서 오른쪽에 그림으로 예시가 표현이 되어 있습니다. 그래서 이 오른쪽에 있는 아래의 데이터 큐브를 보면은

05:59:31

먼저 이 가로축에는 4개의 도시로 데이터가 각각, 4개의 도시에 대한 데이터를 가지고 있죠. 이 중에 우리가 두 개를 선택을 합니다. 이 중에 일부인 벤쿠버와 토론토라는 두 개의 도시만 여기서 선택을 했고요. 그리고 이 높이 같은 경우에는 이 Q1부터 Q4까지 4개의 분기값을 가지고 있는데 거기서 1분기, 2분기 두 개의 값만 선택을 했고요.

05:59:31

이 가로축 같은 경우에는 이 상품명을 가지고 있는데 이 상품 중에 모바일이랑 모뎀이라는 두 개의 상품만 가지고 왔습니다. 그래서 각 축에서 일부의 데이터만 선택을 해서 가져오는 것을 선택했습니다. 다이슨 연산이라고 합니다. 그 다음 팝업 같은 경우에는 아래와 같이 이 데이터 큐브를 그냥 어떤 특정한 축 방향으로 회전하는 것을 의미합니다.

05:59:31

그래서 여기 안에 저장되어 있는 데이터 자체는 전혀 변경이 되지 않고요. 우리가 분석의 편의성을 위해서 이렇게 어떤 차원 순서를 변경할 때 사용을 합니다. 그래서 주로 우리가 자주 분석을 하고 싶은 그러한 차원이 예를 들어서 뭐 위치 기준으로 분석을 하고 싶다 라고 하면은 위치를 그 첫 번째 차원으로 가져오거나

05:59:31

뭐 이러한 역할을 수행을 할 때 이런 피벗 연산을 사용할 수 있습니다. 마지막 슬라이스 같은 경우에는 하나의 차원 값을 하나의 값으로 고정시킨 다음에 해당 값에 대한 것만 가져오는 연산을 의미합니다. 그래서 예를 들어서 이 로케이션 이라는 하나의 차원의 값을 이렇게 시카고로 고정을 합니다.

05:59:31

그러면 이 시카고에 대한 모든 값만 가져오는 것을 슬라이싱이라고 합니다. 그래서 이렇게 하나의 값만 가져오게 되면 이렇게 칼로 자른 형태로 특정한 값에 대한 것만 이렇게 가져오게 되죠. 그래서 이제 슬라이싱이라고 부르고 있고요. 그래서 사실 슬라이싱은 전체 데이터의 일부분을 가져오는 형태이기 때문에

05:59:31

이 다이스가 이 슬라이스의 일반화 된 형태다 라고 할 수 있습니다. 이 다이스 같은 경우에도 그냥 이 중에서 하나의 디멘션에 하나의 값만 선택을 해주면은 동일하게 슬라이스처럼 가져올 수 있겠죠. 그래서 슬라이스는 다이스의 특수한 형태다 라고 말할 수 있습니다. Thank you. 그럼 마지막으로 이러한 OLAP 연산을 조금 더 효율적으로 활용하기 위한 데이터 저장 방식에 대해서 알아보도록 하겠습니다.

05:59:31

팩트 테이블 같은 경우에는 일반적으로 옆으로 넓은 구조를 많이 가지고 있습니다. 왜냐하면 우리가 분석하고 싶은 데이터가 있는 것들은 어떤 속성 정보가 굉장히 많죠. 예를 들어서 어떤 거래내역이라는 그런 하나의 튜플에는 그 거래내역에 대한 거래일자도 있고요. 거래금액도 있고 상품명도 있고 굉장히 그걸 표현해주는 많은 어트리뷰트가 이렇게 있게 됩니다.

05:59:31

그래서 어트리뷰트의 개수가 굉장히 많은 이렇게 옆으로 뚱뚱한 형태의 이러한 형태를 굉장히 많이 가지고 있습니다. 그래서 우리가 다뤄야 되는 이런 dimension 혹은 attribute의 양이 수십 개가 될 수도 있고요. 아니면 수백 개 그 이상이 될 수도 있습니다. 그런데 이렇게 data는 굉장히 많은 attribute를 가지고 있지만 문제가 되는 것은

05:59:31

우리가 실제 데이터 분석을 진행할 때는 이렇게 많은 어트리뷰트를 다 사용하지 않습니다. 우리가 필요한 몇몇 개의 어트리뷰트 혹은 디멘점만 사용을 하겠죠. 예를 들어서 여기 뭐 위치 아니면 판매자와 같은 이런 몇 개의 어트리뷰트만 사용을 하게 됩니다. 그래서 이러한 몇 개의 어투리뷰트만 사용할 때 어떻게 이 데이터를 저장했을 때 효율적일지를 우리가 고려를 해줘야 됩니다.

05:59:31

그래서 크게 데이터 저장 방식은 두 가지가 있는데요. 호리슨탈 방식이 있고요. vertical 방식이 있습니다. 첫 번째 horizontal 방식은 이제 왼쪽과 같이 tuple 단위로 저장을 하는 방식입니다. 그래서 하나의 행에 포함된 모든 attribute 값을 한 번에 저장을 하는 방식입니다. 그래서 tuple 단위로

05:59:31

저장을 하고요. 오른쪽 같은 경우에는 두번째 vertical 방식에 해당이 됩니다. 그래서 이런 vertical 방식은 행별로 저장을 하는게 아니라 열별로 즉 하나의 attribute 값별로 묶어서 저장을 하게 됩니다. 그러면 우리가 사용하는 OLAP에는 어떤 방식이 효과적이냐고 하면

05:59:31

일반적으로 이 두 번째 vertical 방식이 효과적입니다. 예를 들어서 다음 시간에 조금 더 구체적인 예로 살펴보겠지만 두 개의 100개 중에서 두 개의 어트리뷰트만 사용을 했다 라고 했을 때 그럼 이 두 개에 대한 어트리뷰트 값만 우리가 가져오면 되겠죠. vertical 방식에서는 그런데, horizontal 방식에서는 A1과 A2가 필요하다 할지라도 어차피 데이터는 이 모든 하나의 특품은 모든 attribute 데이터를 다 함께 포함하고 있기 때문에

05:59:31

이 100개에 대한 attribute 정보를 어차피 다 가져와야 된다라는 이러한 비효율성이 존재하게 됩니다. 그래서 OLAP에서는 이런식으로 버텍칼 저장 방식을 조금 더 많이 사용하고 있습니다. 그래서 오늘 수업은 여기서 마치고요. 다음 시간에는 이러한 각각의 저장 방식이 어떠한 연산에 효과적인지 구체적으로 알아보도록 하겠습니다.

05:59:31

수고하셨습니다.