Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[2024.02.11] chapter2. 빅데이터의 탐색 (2) - MY #4

Open
chominyeong opened this issue Feb 7, 2024 · 2 comments
Open

[2024.02.11] chapter2. 빅데이터의 탐색 (2) - MY #4

chominyeong opened this issue Feb 7, 2024 · 2 comments

Comments

@chominyeong
Copy link
Owner

2-3 애드 혹 분석과 시각화 도구

Jupyter notebook으로 애드 혹 분석하기

애드 혹 분석 : 데이터 집계를 자동화하기 전에 수작업으로 해보는 것 (=일회성 데이터분석)

image
Jupyter notebook

  • 오픈 소스의 대화형 도구
  • 스프레드시트와 BI도구를 시작할 필요 없이 바로 애드 혹 분석이 가능
  • SQL의 결과를 크로스 테이블로 변환하고자 할때 몇 번이고 쿼리 실행과 크로스 집계 반복 가능
  • 주피터노트북은 JSON파일이므로 Git으로 관리가 쉽다.
  • Github에서는 Jupyter notebook의 렌더링(rendering)에 대응하고 있어 결과를 팀원과 공유하는데 용이하다.

렌더링 : jupyter notebook의 셀 실행 결과를 그대로 github에서 확인할 수 있음

matplotlib

  • 파이썬을 사용한 시각화 라이브러리


대시보드 도구

  • 애드 혹 분석과 다르게 정기적으로 쿼리를 실행해 보고서나 그래프를 모아야할 때 사용
  • 새로운 그래프를 쉽게 추가할 수 있어야 하고, 최신의 집계 결과를 즉시 확인할 수 있어야 한다.

Redash

  • 파이썬으로 만든 대시보드 도구, SQL 쿼리 실행 결과를 그대로 시각화하므로 직관적이다.
  1. 데이터 소스를 등록한다.
  2. 쿼리를 실행해서 표와 그래프를 만든다.
  3. 그래프를 대시보드에 추가한다.
  • 하나의 쿼리가 하나(or 여러) 그래프에 대응 → 등록한 쿼리는 정기적으로 실행되어 그 결과가 Redash 데이터베이스에 저장됨
  • Hive에서 1시간 걸리는 쿼리가 있더라도, Redash는 마지막으로 실행된 집계 결과를 대시보드에 즉시 표시한다.
    • 별도의 데이터마트 필요 X
  • 그러나 대량의 데이터는 처리할 수 없다.

Superset

  • '대화형 대시보드(interactive dashboard)'를 만들기 위한 파이썬으로 만든 웹 애플리케이션
  • "실시간 처리"를 가정한 대시보드
  • 화면상에서 마우스 조작으로 그래프를 만든다.
    image
  • 대화형 대시보드이기 때문에 집계를 몇 초 이내에 완료한다.
  • 내장 스토리지 시스템을 갖고 있지 않고 외부 데이터 저장소에서 데이터를 가져와 집계한다.
  • 열 지향 스토리지인 Druid를 표준으로 지원한다.
  • Druid를 이용하지 않으면 RDB나 MPP 데이터베이스 등과 조합해 사용한다.
  • 데이터마트를 먼저 만들어야 하고, 필요한 데이터는 미리 모두 결합해둬야 한다.

Kibana

  • 자바스크립트로 만들어진 대화식 시각화 도구
  • "실시간 대시보드"를 만드는 목적
  • 검색 엔진인 Elasticsearch의 프론트 엔드로 개발되었기 때문에 Elasticsearch가 필수다.
  • 시각화하려는 데이터는 모두 Elasticsearch에 저장해야 한다.

Elasticsearch : 전체 텍스트 검색(full-text search)에 대응한 데이터 스토어. 키워드로 텍스트 데이터를 검색하는데 용이하다.



BI 도구

  • 장기적인 데이터 추이 시각화 or 집계의 조건을 세부적으로 바꾸고 싶을 때 사용하는 대시보드

⚙Tableau Desktop

  • 처음에 하나의 테이블을 준비하고 → 나중에 화면상에서 집계 조건에 따라 정보를 확인할 수 있다.
  • 대화형 대시보드

하나의 데이터를 다각적으로 분석하기

  • 필요한 데이터를 하나의 테이블로 준비한다. → 테이블에서는 다수의 대시보드를 만든다.
  • 전체 숫자를 파악할 수 있는 리포트가 적어도 한 개 있고, 이것을 분해하여 주요 지표를 정리한 것이 몇 개 있어야 한다.
    캡처
  • BI 도구는 데이터 마트가 필요하다.
    • 데이터 웨어하우스 → 배치 처리하여 데이터 마트에서 테이블 생성 → 테이블로부터 다수의 대시보드 생성
@chominyeong
Copy link
Owner Author

2-4 데이터 마트의 기본 구조

OLAP(online analytical processing)

1

  • "다차원 모델의 데이터 구조(OLAP 큐브)"를 MDX(multidimensional expressions) 등의 쿼리 언어로 크로스 집계하여 크로스 테이블을 만드는 구조
  • 크로스 집계에 필요한 모든 조합을 미리 계산해서 데이터베이스 안에 캐시해두고, 쿼리가 실행되면 결과만 반환한다.
  • 예전에 사용되던 방법

MPP 데이터베이스+비정규화 테이블

  • MPP 데이터베이스비정규화 테이블 준비 + 비정규화 테이블에서 BI도구로 시각화
  • 최근에 사용되는 방법

테이블을 비정규화하기

💾 트랜잭션(transaction)

  • 시간과 함께 생성되는 데이터를 기록한 것
  • 한 번 기록되면 변하지 않음

💾 마스터(master)

  • 트랜잭션에서 참고되는 데이터
  • 상황에 따라 다시 쓰임

정규화(normalization)된 관계형 모델(relational model)

2

  • 트랜잭션 - 판매 이력
  • 마스터 - 고객 마스터, 점포 마스터, 상품 마스터

💾 팩트 테이블(fact table)

  • 데이터웨어하우스의 트랜잭션
  • 사실만 기록된 테이블

💾 디멘전 테이블(dimension table)

  • 팩트 테이블에서 참고되는 마스터 데이터

3

💾 비정규화(denormalization)

  • 정규화에 의해 분해된 테이블을 최대한 결합해서 하나의 테이블로 만드는 것 ↔ 정규화(분해)의 반대

💾 스타 스키마(star schema)

  • 팩트 테이블을 중심으로 여러 디멘전 테이블을 결합해서 데이터 마트를 만든다.
  • 스타 스키마의 장점
  1. 단순해서 이해하기 쉽고, 데이터 분석을 쉽게 할 수 있다.
    스타 스키마의 테이블을 SQL로 결합하는 쿼리는 작성법이 정해져 있다. 자동 생성하기 쉽다.
  2. 성능이 우수하다.
    팩트 테이블의 크기가 메모리 용량을 초과하면 디스크 I/O가 발생하고, 쿼리의 지연이 생긴다. 따라서 팩트 테이블을 작게 하고, 나머지는 디멘전 테이블로 옮기면 고속화가 가능하다.
  • 스타 스키마는 과거에 사용되던 방식이다.

💾 비정규화 테이블(denormalized table)

  • 열 지향 스토리지에 의해 데이터를 디멘전 테이블로 이동시킬 필요 없이 하나의 거대한 팩트 테이블만 있으면 된다.
  • 스타 스키마에서 더 비정규화를 진행해 모든 테이블을 결합한 팩트 테이블이 비정규화 테이블이다.


다차원 모델(multidimensional model)

4

  • 비정규화 테이블을 추상화한 것이 다차원 모델
  • 다차원 모델의 컬럼은 '디멘전(dimension)'과 '측정값(measure)'으로 분류된다.
    • 디멘전 - 크로스 집계에서 행과 열을 의미.
    • 측정값 - 숫자 데이터와 집계 방법 정의
    • 피봇 테이블과 유사하다.

@chominyeong
Copy link
Owner Author

헷갈린다노...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant