2014-05-20 6 views
1

데이터웨어 하우스 프로젝트에 관해서는 신참입니다. 여기 커뮤니티의 조언을 구하고 싶습니다.별도의 사실 테이블에 이력 데이터 저장

역사적인 정보와 최신 정보를 가능한 가장 효율적으로/저렴한 방법으로 추출 할 수있는 데이터웨어 하우스를 만들어야합니다. 이 특정 예에서는 웹 사이트 사용자 및 환경 설정을 다루고 있습니다.

사용자 테이블에는 기본 설정 (선호 이름 및 ID 이름)이라는 특성 테이블과 User_Preferences라는 연결 팩트 테이블이 있습니다. User_Preferences 테이블 (100 억 개의 행일 수 있음)에 모든 기록 및 환경 설정 변경/삭제/추가를 저장하는 대신 현재 환경 설정에 대한 테이블 하나와 모든 환경 설정 내역에 대한 테이블 2 개가 있어야합니다. isCurrent 플래그)? ETL 프로세스에서 prod db의 모든 기록 데이터를 하나의 dw 테이블로로드 한 다음 새 dw 테이블의 isCurrent = 1 인 레코드 만 현재 기본 설정 만 저장하는 다른 dw 테이블에 삽입합니다.

비즈니스 관점에서 볼 때 대부분의 쿼리는 현재 데이터에서 실행되지만 고객은 현재 사용자의 기본 설정 만 고려합니다. 훨씬 적은 수의 쿼리가 비즈니스의 내부 이해 관계에 대한 사용자 선호도의 전체 내역에 대한 정보를 반환해야합니다.

도움을 주셔서 감사합니다.

답변

1

네, 맞습니다. 내가 설명한 CurrentPreference 팩트 테이블과 모든 환경 설정을 선호하는 TransactionalPreference를 사용할 것입니다. 이 표에서 사용자의 기록을 쉽게 얻을 수 있습니다.

A 거래 F.T. (차원은 시간, 트랜잭션, 사용자, 환경 설정)은 모든 정보를 가지고 있지만 과거 상황을 쿼리하는 것은 꽤 어렵습니다. (작년에 텍사스 ​​사람들의 선호도는 어땠습니까?) 그래서 스냅 샷 환경 설정, 특정 시점에 상황을 포함합니다 (매월 또는 매일 사용자의 소원에 따라 다름).