3-3. 데이터 마트의 구축
팩트 테이블
▪ 팩트 테이블의 작성에는 ' 추가(append)'와 '치환(replace)'의 두 가지 방법이 있음
▪ 추가는 새로운 데이터만을 증분으로 추가
▪ 치환은 과거의 데이터를 포함하여 테이블 전체를 치환
테이블 파티셔닝
▪ 추가의 효율이 압도적으로 유리 하지만 잠재적인 문제가 있음
▪ 추가의 잠재적인 문제
- 추가에 실패한 것을 알아채지 못하면 팩트 테이블의 일부에 결손이 발생
- 추가를 잘못해서 여러 번 실행하면 팩트 테이블의 일부가 중복
- 팩트 테이블을 다시 만들 경우 관리가 복잡
▪ 해당 문제의 가능성을 줄이기 위해 '테이블 파티셔닝(table partitioning)'을 사용
▪ 하나의 테이블을 물리적 파티션으로 나눠 파티션 단위로 정리하여 데이터를 쓰거나 삭제 할 수 있게 함
▪ 주기적으로 새 파티션을 만들고 팩트 테이블에 붙여 놓음
▪ 데이터가 중복될 가능성을 배제하면서 여러 번 데이터의 기록을 바로 잡을 수 있음
데이터 마트의 치환
▪ 데이터 마트를 만드는 경우에는 단순히 팩트 테이블을 치환하는 경우가 많음
▪ 팩트 테이블 치환의 장점
- 중간에 데이터가 중복되거나 결손될 가능성이 거의 없음
- 스키마 변경에 유연하게 대응
- 오래된 데이터는 자동으로 지워져 데이터 마트가 지속적으로 확대되는 일이 없음
▪ 데이터의 양이 많으면 쓰는 데 시간이 오래 걸림
▪ 1시간 이내에 팩트 테이블을 만들 수 있으면 치환, 아니면 추가를 이용한 워크플로 고려
집계 테이블
▪ 집계 테이블(summary table): 팩트 테이블을 어느 정도 모아서 집계, 1일 단위로 집계 할 경우 '일일 집계(daily summary)'
▪ 카디널리티(cardinality): 각 칼럼이 취하는 값을 범위 ex) '성별'은 카디널리티가 적고 'IP 주소'는 카디널리티가 큼
▪ 집계 테이블을 작게하기 위해 칼럼의 카디널리티를 줄여서 측정값을 집계
▪ 카디널리티를 무리하기 낮추면 정보 손실이 크고 시각화의 효율을 낮추기에 균형을 잘 고려
스냅샷 테이블
▪ 마스터 데이터처럼 업데이트될 가능성이 있는 테이블에 대해서 두가지 방안
▪ 정기적으로 테이블 전체를 저장하는 '스냅샷 테이블(snapshot table)'
▪ 변경 내용만을 저장하는 '이력 테이블(history table)'
▪ 데이터 분석 측면에서는 스냅샷 테이블이 다루기 쉬움
▪ 스냅샷 테이블은 시간이 지남에 따라 커지므로 일종의 팩트 테이블로 간주
▪ 스냅샷은 특정 시점의 테이블 상태를 기록한 것으로 다시 만들수 없기 때문에, 영구적인 저장소에 보관
▪ 스냅샷 테이블은 다른 팩트 테이블과 결합함으로써 디멘전 테이블로도 사용
▪ 다음과 같이 날짜를 지정하여 과거의 마스터 테이블을 볼 수 있음
▪ 또는 팩트 테이블과 스냅샷 테이블을 날짜를 포함해서 결합
▪ 이는 매일 변화하는 마스터 정보를 이용하여 분석할때 유용
이력 테이블
▪ 변경된 데이터만을 추가로 스냅샷 또는 변경이 있을 때 마다 내용을 기록하는 '이력 테이블'
▪ 테이블의 양을 줄이는 것은 도움 but 완전한 마스터 테이블을 복원하는 것이 어려움
▪ 디멘전 테이블로는 사용하기 어려움
▪ 마스터 관계의 테이블은 스냅샷을 하는 것이 편리
디멘전을 추가하여 비정규화 테이블 완성시키기
▪ 마지막으로 팩트 테이블과 디멘전 테이블을 결합하여 비정규화 테이블을 만듬
▪ 카디널리티가 작은 디멘젼을 만들어 결합하고, 시각화에 필요하지 않은 칼럼은 제거
데이터 집계의 기본형
▪ 시간에 의한 검색이나 참고할 칼럼 수를 줄여, 팩트 테이블에서 필요한 데이터를 추출
▪ 디멘전 테이블과 결합하여 데이터 마트에 저장할 칼럼을 선택, 이때 카디널리티를 작게하는 것이 중요
▪ 세션 ID와 같이 다수의 값을 갖는 것을 출력에 포함하는 것은 피함
▪ 마지막으로 그룹화를 통해 집계하여 비정규화 테이블을 만듬
[참고]
'Data Engineering > 책 리뷰' 카테고리의 다른 글
[빅데이터를 지탱하는 기술] 4. 빅데이터의 축적 (2) (0) | 2023.09.12 |
---|---|
[빅데이터를 지탱하는 기술] 4. 빅데이터의 축적 (1) (0) | 2023.09.08 |
[빅데이터를 지탱하는 기술] 3. 빅데이터의 분산 처리 (2) (0) | 2023.09.06 |
[빅데이터를 지탱하는 기술] 3. 빅데이터의 분산 처리 (1) (0) | 2023.09.05 |
[빅데이터를 지탱하는 기술] 2. 빅데이터의 탐색 (2) (0) | 2023.09.04 |