티스토리 뷰
데이터 집계 -> 데이터 마트 -> 시각화
시스템 구성은 데이터 마트의 크기에 따라 결정된다.
- 데이터 마트의 크기가 작을수록
- 시각화는 간단
- 원래 데이터에 포함된 정보를 읽어버리게 됨.
- 시각화의 프로세스에서 할 수 있는것이 적어짐
- 데이터 마트 클수록
- 데이터 마트가 거대해져 좋은 시각화를 하기 힘듦.
데이터의 양을 수백만 건 정도까지 줄일 수 있다면 모든 데이터를 시각화 도구에 넣을 수 있기 때문에 특별한 시스템이 필요 없다. 이게 되지 않는다면 지연이 적은 데이터베이스를 사용하여 데이터 마트를 만들 수 있어야 한다.
- 데이터 마트가 거대해져 좋은 시각화를 하기 힘듦.
열 지향 스토리지에 의한 고속화
메모리에 다 올라가지 않을 정도의 대용량 데이터를 신속하게 집계하려면 미리 데이터를 집계에 적합한 형태로 변환하는 것이 필요하다.
데이터베이스의 지연을 줄이기
초 단위로 데이터를 집계하려면 처음부터 그것을 예상해서 시스템을 마련해야 한다. 데이터 수집 단계에서는 거기까지 생각하지 않기 때문에 주로 데이터 레이크 -> 데이터 마트 -> 시각화 도구
와 같이 3계층의 시스템을 만든다.
원 데이터는 용량적인 제약이 적어서 대량의 데이터를 처리할 수 있는 데이터 레이크와 데이터 웨어하우스에 저장한다. 거기에서 원하는 데이터를 추출하여 데이터 마트를 구축하고 여기에서는 항상 초 단위의 응답을 얻을 수 있도록 한다.
데이터 처리의 지연
일반적으로 데이터 처리의 응답이 빠르다는 표현을 대기 시간(latency)이 적다
또는 지연이 적다
고 한다. 데이터 마트를 만들 때는 가급적 지연이 적은 데이터베이스가 있어야 한다. 두 가지 방법이 있다.
- 압축과 분산에 의해 지연 줄이기 - MPP 기술
- 데이터를 가능한 한 작게 압축하고 그것을 여러 디스크에 분산함으로써 데이터의 로드에 따른 지연을 줄인다.
- MPP(Massive Parallel processing) - 분산된 데이터를 멀티 코어를 활용하면서 디스크 I/O 병렬 처리 하는 것
- 데이터의 집계에 최적화
- 하나의 쿼리를 다수의 작은 태스크로 분해하고 이를 병렬로 실행
- e.g) 1억 레코드로 이루어진 테이블의 합계를 계산하기 위해 10만 레코드로 구분하여 1000개의 태스크로 나누는 것
- 각 태스크는 각각 독립적으로 10만 레코드의 합계를 집계해 마지막 모든 결과를 모아 총합계를 계산한다.
- 열 지향 데이터베이스 접근 - 컬럼을 압축하여 디스크 I/O 줄이기
- 데이터 압축을 고려한 후에 알아두어야 할 것이 컬럼 지향 개념이다. 빅데이터로 취급되는 대부분의 데이터는 디스크상에 있기 때문에 쿼리에 필요한 최소한의 데이터만을 가져옴으로써 지연이 줄어들게 된다.
시각화 도구
- 대시보드 도구 or BI도구
- 대시보드
- 새로운 그래프를 쉽게 추가할 수 있는 것이 중요시 될 때
- 최신의 집계 결과를 즉시 확인하길 바랄 때.
- 정해진 지표의 일상적인 변화를 모니터링 하고 싶은 경우.
- BI
- 대화형 데이터 탐색이 중요시될 때
- 그래프를 클릭하여 상세한 표시로 전환하거나 집계에 기반이 되는 로우 데이터를 표시하는 등 차분히 데이터를 보고 싶은 경우
- 대시보드
대시보드 도구
- Redash - SQL에 의한 쿼리의 실행 결과를 그대로 시각화
- 파이썬으로 만든 대시보드
- SQL에 의한 쿼리의 실행 결과를 그대로 시각화하는데에 적합
- 하나의 쿼리가 하나 또는 여러 그래프에 대응
- 등록한 쿼리는 정기적으로 실행되어 결과가 Redash 자신의 데이터베이스에 저장됨.
- Superset - 화면상에서 마우스 조작만으로 그래프를 만들기
- 대화형 대시보드
- 쿼리를 입력하는게 아닌 마우스 조작으로 그래프를 만드는 것이 기본
- 내장 스토리지 시스템을 갖고 있지 않아 집계는 Druid와 같은 외부 저장소에 의존하고 있다.
- Druid는 집계 시에 테이블을 결합할 수 없기 때문에 시각화에 필요한 데이터는 미리 모두 결합해두어야 한다.
- Kibana - Elasticsearch의 프론트 엔드에서 실시간으로 작성
- 자바스크립트로 만들어진 대화식 시각화 도구
- 실시간 대시 보드를 만들 목적으로 자주 사용 됨
- Elasticsearch 외의 데이터 소스에는 대응하고 있지 않아 시각화하려는 데이터는 모두 Elasticsearch에 저장해야 한다.
- 검색 조건에 맞는 데이터를 빠르게 시각화하는 데에 적합한 도구이다.
BI도구
몇 개월 단위의 장기적인 데이터의 추이를 시각화하거나, 집계의 조건을 세부적으로 바꿀 수 있는 대시보드를 만들려면 BI도구를 사용하는 것이 적합하다. Tableau가 많이 사용된다.
데이터 마트의 기본 구조
BI도구에서 대화형으로 데이터를 참고하려면 시각화에 필요한 정보만을 모은 데이터 마트가 필수적이다.
시각화에 적합한 데이터 마트 만들기 - OLAP
OLAP(Online Analytical Processing)
다차원 모델과 OLAP큐브
- OLAP은 데이터 집계를 효율화하는 접근 방법 중의 하나이다.
- 다차원 모델의 구조를 MDX(Multidimensinal Expressions) 등의 쿼리 언어로 집계한다.
- 데이터 분석을 위해 만들어진 다차원 데이터를
OLAP 큐브
라고 부르며, 그것을 크로스 집계하는 구조가 OLAP이다.
MPP 데이터베이스와 비정규화 테이블
- 최근 MPP데이터베이스와 인메모리 데이터베이스 등의 보급으로 사전에 계산해 둘 필요가 없어졌다. 따라서, BI도구와 MPP데이터베이스를 조합하여 크로스 집계하는 경우가 증가하고 있다.
- BI도구로 생각한 대로의 그래프를 만들기 위해서는
비정규화 테이블
을 준비한다. - 시각화에 적합한 데이터 마트를 만드는 것은 BI도구를 위한 비정규화 테이블을 만드는 프로세스이다.
테이블 비정규화하기
- 팩트 테이블과 디멘전 테이블
- 팩트 테이블 - 트랜잭션처럼 사실이 기록된 것
- 디멘전 테이블 - 팩트 테이블에 참고되는 마스터 데이터
- e.g) 집계의 기반이 되는 숫자 데이터는 팩트 테이블, 데이터를 분류하기 위한 속성값은 디멘전 테이블
- 스타 스키마와 비정규화
- 데이터 마트를 마들 때에는 팩트 테이블을 중심으로 여러 디멘전 테이블을 결합하는 것이 좋다. 그림으로 그리면 별 모양이 되므로, 이를
스타 스키마
라고 한다.- 스타 스키마 사용 이유
- 단순하기 때문에 이해하기 쉬우며 데이터 분석을 쉽게 할 수 있다.
- 성능
- 팩트 테이블의 부하를 방지하기 위해 팩트 테이블을 될 수 있는 한 작게 하는 것이 고속화에 있어서 중요하다.
- 팩트 테이블에는 ID와 같은 키만 남겨놓고 그 외의 나머지는 디멘전 테이블로 옮긴다.
- 스타 스키마 사용 이유
- 디멘전 테이블을 작성하려면 분해된 테이블을 최대한 결합하여 하나의 테이블로 정리한다. 데이터가 중복되어도 괜찮다. 정규화의 반대 작업이기 때문에
비 정규화
라고 한다.
- 데이터 마트를 마들 때에는 팩트 테이블을 중심으로 여러 디멘전 테이블을 결합하는 것이 좋다. 그림으로 그리면 별 모양이 되므로, 이를
- 비정규화 테이블 - 데이터 마트에 정규화는 필요 없다.
- 컬럼 지향 스토리지는 컬럼 단위로 데이터가 저장되므로 컬럼의 수가 아무리 늘어나도 성능에 영향을 주지 않는다.
- 따라서, 처음부터 팩트 테이블에 모든 컬럼을 포함해두고, 쿼리의 실행 시에는 테이블 결합을 하지 않는 편이 간단하다.
- 컬럼 단위로의 데이터 압축이 있기 때문에 하나의 거대한 팩트 테이블만 있으면 디멘전 테이블을 만들 필요가 없다.
- 참고) 데이터 웨어하우스의 테이블 구조로는 스타 스키마가 우수하다.
- 데이터 축적 단계에서는 팩트 테이블과 디멘전 테이블로 분리해두고 분석 단계 후에 결합해 비정규화 테이블을 만든다.
'Book > 빅데이터를 지탱하는 기술' 카테고리의 다른 글
Chapter 3 - 1. 빅데이터의 분산 처리 - 대규모 분산 처리 프레임워크 (0) | 2022.12.23 |
---|---|
Chapter 1. 빅데이터 기초 지식 (0) | 2022.12.17 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 네트워크
- DP
- DFS
- BOJ
- 프로그래머스
- CS
- Algorithm
- Python
- Flutter
- 이코테
- 빅데이터
- kafka
- cka
- kubernetes
- elasticsaerch
- heapq
- Elasticsearch
- OS
- Hadoop
- Espher
- GROK
- sqoop
- mahout
- CSAPP
- logstash
- 파이썬
- 빅데이터를지탱하는기술
- oozie
- 백준
- HDFS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함