본문 바로가기
Book & Lesson

[책정리] 빅데이터를 지탱하는 기술 3.3 데이터마트의 구축

by 카프리썬_ 2021. 6. 23.
728x90
728x90

6월 선정도서 - 빅데이터를 지탱하는 기술

선정계기 - 데이터가 쌓이고 흐르는 전체적인 구조를 깊이 있게 이해할 수 있고,

미래의 데이터엔지니어로써 해야하는 업무들의 전반적인 흐름을 파악할 수 있을 것 같아 선정(기대가 된다

 

목차 

챕터3. 빅데이터의 분산처리 

3-1. 대규모 분산처리의 프레임워크

3-2. 쿼리엔진

3-3. 데이터마트의 구축 

 

데이터구조화가 잘 되어 있으면 dw와 같은 개념으로 데이터마트를 구축할 수 있다.

팩트테이블과 디멘전 테이블 준비 -> 결합 및 집계 -> 비정규화테이블 생성 

디멘전으로 사용하는 데이터는 스냅샷으로 이력 축적, 디멘전의 카디널리티를 줄임

 

728x90

팩트테이블

팩트테이블이 아주 작으면 메모리에 올리면 되지만, 그렇지 않으면 열지향 스토리지에서 데이터를 압축해야함.

 

팩트테이블의 작성방법 

  • 추가 : 새로 도착한 데이터만 증분으로 추가
  • 치환 : 과거의 데이터를 포함해서 테이블 전체를 치환

 

테이블 파티셔닝 

팩트테이블을 '추가'하는 방식으로 작성했을때 문제점
  • 추가에 실패하게 되면 팩트테이블에 누락된 부분이 생김
  • 추가를 잘못하게 되면 팩트테이블의 일부가 중복이 생김 
  • 나중에 팩트테이블을 다시 만들고 싶은 경우 관리복잡 

이를 해결하기 위한 것이 테이블 파티셔닝.

하나의 테이블을 여러 물리적인 파티션으로 나눔으로써 파티션단위로 정리.

자주 새 파티션을 만들고, 이것을 팩트테이블에 붙여넣는다. 이미 존재하면 덮어쓰기

->중복될 가능성을 배제하면서 필요에 따라 여러번 데이터의 기록을 바로잡을 수 있다. 

 

데이터마트의 치환 

데이터마트의 데이터양은 한정되어 있기 때문에 거대한 테이블을 만들지 않는한 매번 치환가능. 

예를 들어 일일보고서를 위해 지난 30일동안의 데이터를 매일 꺼내서 치환.

 

팩트테이블을 '치환'하는 방식으로 작성했을때 장점
  • 중간에 데이터가 중복되거나 빠뜨릴 가능성이 없다. 
  • 스키마 변경에도 유연하게 대응할 수 있다.
  • 오래된 데이터는 자동으로 지워져서 관리가 복잡하지 않다. 

다만, 너무 데이터의 양이 많다면 쓰는데 시간이 오래걸린다. 


집계 테이블 

팩트테이블에서 어느정도 모아서 집계를 할 수 있을때 만드는 테이블 

팩트테이블보다 데이터의 양이 줄어듬 -> 데이터를 1일단위로 집계한 일일집계로 일일보고서를 만들떄 용이

 

필요한 칼럼을 골라 숫자데이터를 집계하기만 하면 된다. 

테이블의 집계에 의해 생성된 레코드의 수는 칼럼값의 조합수에 따라 결정된다. 

 

카디널리티 : 각 칼럼이 취하는 값의 범위. 

예를 들어, 성별과 같이 취할수 있는 값이 적으면 카디널리티가 작고, ip주소와 같이 값이 여러개면 카디널리티가 크다. 

집계테이블을 작게 하려면 즉, 레코드 수를 줄이려면 모든 칼럼의 카디널리티를 줄여야한다. 

하지만 카디널리티를 무리하게 낮추면 원래있던 정보가 손실되고, 시각화의 효율을 낮춘다. 


스냅샷 테이블 

마스터 데이터처럼 업데이트될 가능성이 있을때 만드는 테이블 

  • 스냅샷테이블 : 정기적으로 테이블을 통쨰로 저장하는 방법 
  • 이력테이블 : 변경내용만 저장하는 방법

마스터테이블의 레코드수가 많다면 스냅샷 테이블은 거대해진다. 

 

스냅샷테이블은 시간이 지남에 따라 점점 커지므로 일종의 팩트테이블로 간주한다. 

스냅샷테이블은 다른 팩트테이블과 결합해 디멘전 테이블로도 사용할 수 있다. 

스냅샷테이블(날짜포함)과 팩트테이블을 결합해서 사용할 수 있다. ->매일 변화하는 마스터정보로 데이터분석시 용이

스냅샷은 특정시점의 테이블 상태를 기록한 것으로 나중에 다시 만들수 없다. 

 

스냅샷테이블은 데이터레이크나 데이터웨어하우스와 같은 영구적인 저장소에 보관하여 삭제되지 않도록 주의해야한다. 

 


이력테이블 

변경된 데이터만 증분으로 스냅샷하거나 변경이 있을때마다 기록할때 만드는 테이블 

데이터의 양을 줄일 수 있지만, 어느순간 완전한 마스터테이블을 나중에 복원하는게 어렵다. 

하지만 처음부터 완전한 스냅샷을 만들어두는편이 훨씬 좋다. 

 


팩트테이블+디멘전테이블 = 비정규화테이블 

디멘전 테이블로 스냅샷을 사용할 뿐만 아니라 목적에 따라 각종 중간테이블이 만들어진다. 

카디널리티가 작은 디멘전을 만들어 결합하고, 시각화에 필요하지 않은 칼럼은 제거하여 

시각화하기 쉽고 데이터양은 적은 비정규화 테이블을 만든다. 

 

데이터집계 과정

팩트테이블에서 필요한 데이터를 꺼낸다. 

디멘전테이블과 결합하여 데이터마트에 저장할 칼럼을 선택한다. (카디널리는 가급적 작은 칼럼)

그룹화하여 측정값을 집계한다. 

이렇게 만들어진 비정규화테이블을 데이터마트로 보내거나 csv파일로 저장

 

728x90
반응형