2014-12-26 6 views
1

안녕하세요, 저는 datawarehouse에 대한 프로젝트를 진행하고 있으며, 제 데이터웨어 하우스를 올바르게 모델링하고 있는지 확실하지 않습니다. 내 datawarehouse 비즈니스 프로세스에 따라서 나는 그것에 대해 아주 작은 정보를 찾을 수 없습니다.계층 적 모델링 데이터웨어 하우스 - 눈송이 또는 별?

기본적으로 나는 많은 라이브러리 정보가 들어있는 라이브러리 파일을 가지고 있으며 각 셀에는 많은 핀 정보가 들어 있으며 각 핀에는 타이밍 및 전원 정보가 들어 있습니다. 서로 다른 라이브러리 파일은 기본적으로 셀의 같은 수도 형성 핀, 단지 타이밍/전력 정보는 differen입니다

라이브러리 -> 셀 -> 핀 -> 타이밍/전력 내가 알고 관심

셀 속성 -timing/power 그래서 나중에 비교할 수 있습니다.

사실 테이블에 라이브러리 차원 및 날짜 차원의 외래 키만 포함되어있는 snowflake 스키마에서웨어 하우스로 모델링해야합니까? 그런 다음 라이브러리 차원을 셀 차원으로 더 나누고 셀 차원을 핀 차원으로 더 나눈 다음 핀 차원을 타이밍 및 전원 차원으로 나눕니다

또는 내 사실 테이블에 라이브러리의 외래 키가 들어있는 스타 스키마에서, 셀, 핀, 타이밍, 전력 및 날짜 차원?

내 데이터는 약 200 개의 라이브러리 파일을 가지고 있으므로 각 라이브러리 파일에는 약 20k 셀이 포함되어 있으므로 각 셀에는 몇 개의 핀이 포함되어 있고 각 핀에는 몇 가지 타이밍 및 전원 정보가 들어 있습니다. 따라서 전체 크기는 그 큰 200 X 20,000 X 4 ×

4 I 의지 나에게 어느 제안을 줄 수

을 발표 라이브러리 파일의 새 버전이있을 때마다 지속적으로 데이터의 큰 세트 펌프 수 ?

Library A 
    Cell A 
     Pin A1 
     Condition A11 
      riseTimingTemplate 
      fallTimingTemplate 
      risePowerTemplate 
      fallPowerTemplate 

계층 구조는 위의 쇼 : 더 나은

편집을 dfdf. 다른 라이브러리에는 동일한 셀, 핀 및 조건이 포함되며 타이밍 및 전원 템플릿 만 다릅니다.

하자 내 사실 곡물이
그래서 내 치수가 라이브러리, 세포, 핀, 조건, risingTimingTemplate, fallTimingTemplate, risePOwerTemplate 및 fallPowerTemplate, 정확한 팩트 테이블에 대한 모든 링크가 것 특정 셀의 타이밍 및 전력 값이 될 것이다라고?

답변

0

이것은 사용중인 데이터베이스 기술,보고 요구 사항 및 ETL 성능 목표에 크게 의존합니다. 위의 상황에 따라 고려해야 할 몇 가지 생각을 여기에 있습니다. 질문에 대한 답의 가장 직접적인 부분은 아래 olap 섹션에 있습니다.

인 만 :
공간 효율성, etl 속도 및 디자인 단순성; 엔터티 기반 인 Inman 디자인을 사용하는 것을 고려하십시오. 예를 들어, 이것은 테이블에 직접 저장된 사실을 갖는 각 엔티티에 대한 하나의 테이블이 될 수 있으며, 계층 간에는 테이블 간의 간단한 키/fk 링크로 링크됩니다. 예를 들어 위에서 언급 한 것처럼 4 개의 테이블을 가질 수 있습니다. 이전에로드 된 데이터를 현재로드와 비교해야 할 경우를 대비하여 정렬 순서 나 다른 임의의 기회 기반 키에 대한 의존성을 피하기 위해 이러한 테이블을 자연스러운 키와 연결하십시오. 이것은 시간이 매끄럽지 않은 사실에 대해 더 효율적인 공간이 될 수 있습니다. 그러나보고가 평활화 요구 사항을 해결하는 것이 더 어려울 수 있으므로 시계열 또는 다른 시리즈가 매끄러 워야하는 경우 이는 단점입니다.

Kimball :
이 경우 Kimball 모델을 사용하는 좋은 예는 여러 사실이 있지만 모두 동일한 곡물에있는 경우입니다. 서로 다른 곡물에 사실을 혼합하면 데이터 모델을보다 복잡하게 만들고 사용할 수 있습니다. 귀하의 예제에서 곡물을 셀 수준에서 사실로 정의하면 각 테이블 사이에 1-n 관계가 있다고 가정 할 때 전력 수준의 사실은 서로 다른 입자에 있습니다. Inman 디자인의 엔티티에 단순히 측정 값을 저장하는 경우 일반적으로 이러한 측정 값을 유지하기 위해 추가 테이블을 만드는 Kimball 디자인의 치수와 사실을 구분할 수 있습니다.

OLAP :
OLAP 기술을 쿼리 엔진에 사용하는 경우이 작업은 좀 더 복잡합니다. 대부분의 데이터 모델은 스타 스키마로 필요합니다. 종속성 차원 테이블간에 n-1 또는 n-n 관계가있을 때 발생하는 '제품 가입'의 위험이 있으므로 대부분의 엔진은 눈송이 정의를 허용하지 않습니다. n-n 차원 테이블의 결과는 신중하게 처리하지 않으면 중복 된 팩트 행이 될 수 있으며 이러한 n-n 차원에 합류하여 데이터에서 이러한 중복이 발생할 때 쿼리가 너무 높은 값을 초래할 경우 문제를 해결하기가 매우 어렵습니다. ** 외곽 치수가 항상 1-1 또는 1-n (세포에 1 개의 라이브러리에서 1 개의 세포에 2 개의 라이브러리를 의미 함)을 의미하고 측정 값이 타이밍/전력 수준에서 기록되는 경우 눈송이는 데이터를 저장할 수있는 가장 좋은 방법 (최소 공간)이지만 디자인이 OLAP 도구 세트의 스타로 보일 수 있도록 '보기'를 빌드해야 할 수도 있습니다 (몇몇 새로운 OLAP 엔진은 이러한 디자인을 허용 할 것입니다). 별표로 데이터를 작성하면 더 많은 공간이 필요하지만 n-n 또는 n-1 사건을 더 쉽게 발견 할 수 있습니다.

작은 그레인을보고 할 계획이라면 사실 테이블에서 가장 낮은 레벨의 키를 유지해야합니다 (이 경우 스타에 표시하는 키는 눈송이가 동일한 키 구조를 필요로합니다)), 별의 경우처럼 각 셀에서 라이브러리 정보를 복제 할 필요가 없으므로 공간 효율성 문제 일뿐입니다.

[의견에서 편집] 주석 및 제공 모델, 몇 가지 생각을 바탕으로 Data Model :

  • 사실 테이블의 FK 년대는
  • 모델은 당신이 사실을 수집하지 않는 말한다 테이블의 PK 년대입니다 핀 또는 템플릿을 통해 정보를 제공합니다. 하나의 셀에 많은 핀/템플릿이있는 경우 테이블을 조인 할 때 중복 사실을 생성 할 수있는 제품 조인을 도입 할 것이므로이를 사용하지 않는 것이 좋습니다. 그러나 몇 가지 비정상적인 조치를 취하고, 나의 세포가 공통 핀과 어떻게 관련되어 있는지 묻는다면, 그들을 지키십시오. 또는 유사한 유형의 분석.
  • 디자인은 라이브러리가 수집 된 사실을 통해서만 세포와 관련이 있음을 나타냅니다. 그 관계 (lib to cell)를 동적으로 만들기.

마지막으로 날짜에 대한 팁 : 날짜에 대한 pk는 날짜/시간 컬렉션의 세부 수준을 기준으로하여 형식을 지정할 수 있습니다 (예 : 20150101은 2015 년 1 월 1 일의 키일 수 있음) 시간이 필요하다면 테이블이 필요합니다. 그렇지 않으면 날짜 테이블이 매우 빠르게 확장됩니다 .ETL 빌드가 더 빨라지고 기본 날짜 데이터의 조인을 건너 뛸 수도 있습니다.

+0

간단한 쿼리 엔진을 만듭니다. 그래서 내가 눈송이를 사용하든 안 했든 위의 언급처럼 8 차원 테이블을 갖게 될까요 (제 편집 질문)? 2+ 라이브러리는 동일한 셀과 일치하므로 중복을 피할 수있는 방법이 많이 생깁니 까? –

+0

2 + 라이브러리가 셀과 일치한다고 말하면 lib1이 cell2와 cell3에 링크되거나 cell2에 lib1과 lib2에 대한 링크가 있습니까? 위의 내용을 일단 확인하면 업데이트 될 것입니다. 또한, 상승과 하강이 서로 의미 상으로 일치합니까? 이러한 측정 값이 서로 관련되어 있으면 실제로 하나의 사실 테이블 일 수 있습니다. 그렇지 않은 경우에도 네 세트의 사실/측정 값 열이 될 수 있습니다. –

+0

lib1에 cellA cellB cellC가 포함되어 있고 lib2에 cellA cellB와 cellC도 포함되어있는 경우 pin과 동일합니다. 타이밍/전원 정보가 다릅니다. 라이브러리는 작동 조건에 따라 특성이 다르며 작동 조건 (라이브러리)이 다르며 동일한 셀과 핀이 있지만 각기 다른 riseTiming, fallTiminf, risePOwer, fallPower 정보가 포함되어 있습니다. 또한 팩트 테이블을 사용해야합니까? 어디에 내 타이밍/전력 정보가 ​​실제로보다는 차원에 저장되어 있습니까? –