2-1 크로스 집계의 기본
- 크로스 테이블 : 행과 열이 교차하는 부분에 숫자 데이터가 들어가는 테이블, 예로 엑셀 등의 스프레드시트가 있다.
1월 1일 | 1월 2일 | 1월 3일 | 1월 4일 | 1월 5일 | |
상품 A | 4개 | 5 | 6 | 7 | 7 |
상품 B | 3개 | 3 | 4 | 4 | 4 |
- 트랜잭션 테이블 : 행 방향으로만 데이터가 증가하고, 열 방향으로는 데이터라 증가하지 않는다.
날짜 | 상품명 | 개수 |
1월 1일 | A | 4 |
1월 2일 | B | 3 |
- 크로스 집계 : 트랜잭션 테이블에서 크로스 테이블로 변환하는 과정.
- 피벗 테이블 : 소량의 데이터를 크로스 집계하는데 편리한 것이 스프레드 시트의 피벗 테이블
스크립트로 크로스 집계를 실행하고자 한다면, pandas를 이용해서 두 개의 테이블을 결합하려면 merge()를 실행한다.
데이터를 집계해서 시각화 하는 과정 :
- SQL 등을 사용해서 대량의 데이터를 집계해서 데이터 레이크에 저장한다.
- 집게한 데이터 중 데이터 마트를 만들어서 시각화에 필요한 데이터들을 집계한다.
- 데이터를 크로스 테이블과 대시 보드를 이용해서 시각화한다.
데이터 집계 -> 데이터 마트 -> 시각화
2-2 열 지향 스토리지에 의한 고속화
데이터 수집 단계에서의 3계층 시스템
- 원데이터는 대량의 데이터를 처리할 수 있는 데이터 레이크, 데이터 웨어하우스에 저장
- 원하는 데이터를 추출해서 데이터 마트를 구축, 항상 초 단위의 응답을 얻을 수 있도록 한다.
데이터 처리의 지연 줄이기
데이터 처리의 응답이 빠르다==대기 시간이 적다, 지연이 적다
이를 처리하기 위한 방법
- 모든 데이터를 메모리에 올리는 것
-> 일반적인 RDB가 데이터 마트로 적합하다. 원래 지연이 적고 많은 클라이언트가 접속해도 성능이 나빠지지 않음, 하지만 메모리가 부족하면 성능이 급격하게 저하된다. - 압축과 분산
-> 데이터를 가능한 작게 압축하고, 이것을 여러 디스크에 분산해서 데이터 로드에 따른 지연을 줄인다.
- MPP : 멀티 코어를 활용하면서 디스크 I/O를 병렬 처리한다.
예) Amazon Redshift, Google BigQuery
데이터 집계에 최적화, 데이터 웨어하우스와 데이터 분석용의 데이터 베이스에서 많이 사용된다.
행 지향 데이터 베이스
- 테이블의 각 행을 하나의 덩어리로 디스크에 저장한다.
- 새 레코드를 추가할 때 파일의 끝에 데이터를 쓰기 때문에 빠르게 데이터를 추가할 수 있다.
- 인덱스를 만들어서 데이터 검색을 고속화한다.
1월 1일 | A | 5 |
1월 2일 | B | 4 |
열 지향 데이터 베이스
- 데이터 분석에서 주로 사용한다.
- 데이터를 미리 칼럼 단위로 정리해서 필요한 칼럼만을 로드해서 디스크 I/O를 줄인다.
- 데이터 압축 효율이 우수하다
같은 칼럼에서는 종종 유사한 데이터가 나열되기 때문에 같은 문자열의 반복은 매우 작게 압축할 수 있다.
1월 1일 | A | 5 |
1월 2일 | B | 4 |
MPP 아키텍처에 의한 데이터 처리의 병렬화를 통해 쿼리 지연을 줄일 수 있다.
MPP에서는 하나의 쿼리를 다수의 작은 태스크로 분해하고 이를 병렬로 실행한다.
쿼리가 잘 병렬화 할 수 있다면, 데이터의 집계는 CPU의 코어의 수에 비례하여 고속화 된다.
단, 디스크로부터의 로드가 병목 현상이 발생하지 않도록 데이터가 고르게 분산되어야 한다.
2-3 애드 훅 분석과 시각화 도구
애드 훅 분석 : 여러 번의 시행 착오를 반복해서 데이터를 살펴보는 것
Jupyter Notebook에 의한 애드 훅 분석
- 사용할 언어를 선택해서 새 노트북을 만든다.
- 실행 내용은 모두 기록되고 과거로 돌아가서 편집하거나 재실행할 수 있다.
- 마크다운 형실으로 주석을 넣어 모양을 좋게 하거나, 사진, 수식을 포함할 수 있다.
- 애드 훅 분석으로 크로스 집게의 결과를 보고싶을 때 노트북 안에서 실행할 수 있다.
- 시각화를 하고 싶다면 matplotlib을 사용한다.
Redash
- 다수의 데이터 소스에 대응하는 파이썬으로 만든 대시보드 도구
- SQL에 의한 쿼리의 실행 결과를 그대로 시각화한다.
- 데이터 소스 등록 -> 쿼리 실행 후 표와 그래프 만든다 -> 그래프를 대시보드에 추가
- 하나의 쿼리가 하나 이상의 그래프에 대응된다.
- 등록된 쿼리는 정기적으로 실행, 그 결과가 자신의 데이터베이스에 저장된다.
- 별도의 데이터 마트를 만들 필요가 없다.
- 구조가 알고 싶고, 팀 내에서 쿼리의 그래프나 결과를 공유하기 쉽다.
- 그래프의 수 만큼 쿼리를 실행하고, 대시보드가 증가함에 따라 백엔드 데이터베이스의 부하가 높아진다.
Superset
- 대화형 대시보드를 작성하기 위한 파이썬으로 만든 웹 애플리케이션
- 화면상에서 마우스 조작으로 그래프를 만들 수 있다.
- 내장 스토리지 시스템을 가지고 있지 않아서 데이터 집계는 외부 데이터 저장소에 의존한다.
- 데이터 마트를 먼저 만들어야 한다.
Kibana
- 자바스크립트로 만들어진 대화식 시각화 도구
- 실시간 대시보드를 만들 목적으로 이용된다.
- 검색 엔진인 Elasticsearch의 프런트 엔드로 개발되었기 때문에 도입에는 Elasticsearch가 선행되어야 한다.
- 시각화하려는 데이터는 모두 Elasticsearch에 저장해야 한다.
- Elasticsearch는 전체 텍스트 검색에 대응한 데이터 스토어이기 때문에 키워드로 텍스트를 검색하려는 경우에 유용한다.
BI도구
- 장기적인 데이터의 추이를 시각화하거나, 집계의 조건을 세부적으로 바꿀 수 있는 대시보드를 만들고 싶을 때 사용한다.
- 하나 또는 소수의 데이터 소수에서 다수의 그래프를 만든다.
- 먼저 중요한 화면을 만든 후 화면상에서 집계 조건을 바꿀 수 있도록 한다.
- 예로 Tableau Desktop이 있다.
2-4 데이터 마트의 기본 구조
BI도구에서 대화형으로 데이터를 참고하려면 시각화에 필요한 정보만을 모은 데이터 마트가 필수적이다.
- OLAP : 데이터 집계를 효율화하는 접근 방법 중 하나. OLAP 큐브를 크로스 집계하는 구조
- OLAP 큐브 : 데이터 분석을 위해 만들어진 다차원의 데이터
시각화에 적합한 데이터 마트==BI도구를 위한 비정규화 테이블을 만드는 프로세스
테이블을 비정규화하기
- 트랜잭션 : 시간과 함께 생성되는 데이터를 기록한 것, 한 번 기록하면 변화하지 않는다.
- 마스터 : 트랜잭션에서 참고되는 각종 정보, 상황에 따라 다시 쓰인다.
- 팩트 테이블 : 트랜잭션처럼 사실이 기록된 것,
집계의 기반이 되는 숫자 데이터, 판매액이 기록됨 - 디멘전 테이블 : 팩트 테이블에 참고되는 마스트 데이터
데이터를 분류하기 위한 속성값 - 데이터 마트를 만들 때에는 팩트 테이블을 중심으로 여러 디멘전 테이블을 결합하는 것이 좋다. 이 모양을 스타 스키마라 한다.
장점 : 단순해서 이해가 쉽다, 데이터 분석을 쉽게할 수 있다. - 비정규화 : 정규화에 의해 분해된 테이블을 최대한 결합하여 하나의 테이블로 정리
- 고속화를 위해 팩트 테이블을 가능한 작게 하고, 팩트 테이블에는 ID와 같은 키만 남겨두고 나머지는 디멘전 테이블로 옮긴다.
다차원 모델 시각화에 대비하여 테이블을 추상화하기
비정규화 테이블을 준비했다면 이것을 다차원 모델에 의해 추상화한다.
- 다차원 모델은 칼럼을 디멘전과 측정값으로 분류한다.
- 디멘전 : 크로스 집게에 있어서의 행과 열을 이용하는 것, 날짜 및 문자열의 길이
- 측정값 : 숫자 데이터의 그 집계 방법을 정의하는 것, sum(), max()와 같은 집계 함수와 함께 이용
모델의 정의 확장
BI 돠구를 이용한 데이터의 시각화 단계
- 시각화 하고 싶은 측정값 및 디멘전을 결정한다.
월별로 상품의 매출을 알고 싶으면 금액이 측정값, 판매일과 상품명이 디멘전 - 데이터 마트에 비정규화 테이블을 만들고 그것을 BI도구로 시각화한다.
그래프를 보고있는 사이에 상품을 그룹으로 분류해서 집계하고 싶다면, 비정규화 테이블에 새로운 칼럼을 추가하고 제품 그룹을 써놓는다. 이 과정을 거치면 새로운 디멘전이 추가된다
다차원 모델의 정의는 나중에 확장할 수 있다.
이렇게 만들어진 비정규화 테이블을 모은 것이 BI 도구를 위한 데이터 마트이다.
데이터 마트를 정기적으로 자동 업데이트함으로 일상적인 데이터의 움직임을 확인할 수 있다.
'Today I Learned > 빅데이터를 지탱하는 기술' 카테고리의 다른 글
220604 TIL : 빅데이터를 지탱하는 기술 CH3 (0) | 2022.06.20 |
---|---|
220602 TIL : 빅데이터를 지탱하는 기술 CH1 (0) | 2022.06.03 |