[DB] 빅데이터를 지탱하는 기술 - 3. 빅데이터의 분산처리 (3)

토즐라·2022년 4월 21일
0
post-custom-banner

3.3 데이터 마트의 구축

3.3.1 팩트 테이블

시계열 데이터 축적하기

  • 빅데이터 분석은 데이터를 구조화하는 것 부터 시작함
    • 압도적으로 많은 부분을 차지하는 것이 팩트 테이블
  • 팩트 테이블 작성의 두 가지 방법
    1. 추가(append): 새로 도착한 데이터만을 증분으로 추가
    2. 치환(replace): 과거의 데이터를 포함하여 테이블 전체를 치환

테이블 파티셔닝

물리적인 파티션으로 분할

  • 효율만을 생각하면 추가(append)가 압도적으로 유리

  • 잠재적인 문제점

    • 추가에 실패한 것을 알아채지 못하면 팩트 테이블의 일부에 결손이 발생함
    • 추가를 잘못해서 여러 번 실행하면 팩트 테이블의 일부가 중복됨
    • 나중에 팩트 테이블을 다시 만들고 싶은 경우의 관리가 복잡해짐
  • 이런 문제가 발생할 가능성을 줄이기 위해 “테이블 파티셔닝” 사용

    • 하나의 테입르을 여러 물리적인 파티션으로 나눔으로써 파티션 단위로 정리하여 데이터를 쓰거나 삭제할 수 있도록 함.
    • 일반적으로 1일 1회, 1시간 1회라는 식으로 새 파티션을 만들고 그것을 팩트 테이블에 붙여 놓음.

데이터 마트의 치환

  • 데이터 마트의 경우 데이터양이 한정되어 있기 때문에, 상당히 거대한 테이블을 만들지 않는 한 매번 치환하기는 어렵지 않음.
  • 치환의 장점
    • 중간에 데이터가 중복되거나 빠뜨릴 가능성이 거의 없음
      • 처음부터 다시 만들고 싶다면 쿼리를 한 번 실행하기만 하면 됨
    • 스키마 변경 등에도 유연하게 대응할 수 있음
    • 오래된 데이터는 자동으로 지워지기 때문에 데이터 마트가 계속 확대되는 일도 없음
  • 치환의 단점
    • 처리 시간
      • 너무 데이터의 양이 많다면 쓰는 데 시간이 오래 걸림

3.3.2 집계 테이블

레코드 수 줄이기

  • 집계 테이블(summary table): 팩트 테이블을 어느 정도 모아서 집계한 테이블
  • 일일 집계(daily summary): 데이터를 1일 단위로 집계한 것으로, 일일 보고서를 만드는 과정에서 자주 사용됨.
  • 카디널리티: 각 칼럼이 취하는 값
    • 성별 → 적음, IP주소 → 큼
    • 집계 테이블을 작게 하려면 모든 테이블의 카디널리티를 줄여야 함
      • 하지만, 무리하게 낮추면 원래 있던 정보가 크게 손실되므로 필요 이상으로 줄일 필요는 없음.

3.3.3 스냅샷 테이블

마스터의 상태를 기록하기

  • 스냅샷 테이블(snapshot table): 정기적으로 테이블을 통째로 저장하는 방법
    • 차후의 데이터 분석을 생각하면 스냅샷이 취급하기 쉬움
  • 이력 테이블(history table): 변경 내용만을 저장하는 방법

3.3.4 이력 테이블

마스터 변화 기록하기

  • 데이터의 양을 줄이는 데 도움이 되지만, 어느 순간의 완전한 마스터 테이블을 나중에 복원하는 것이 어려움

3.3.5 [마지막] 디멘션을 추가하여 비정규화 테이블 완성시키기

profile
Work Hard, Play Hard 🔥🔥🔥
post-custom-banner

0개의 댓글