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.04] chapter2. 빅데이터의 탐색 (1) - MY #3

Open
chominyeong opened this issue Feb 4, 2024 · 1 comment
Open

[2024.02.04] chapter2. 빅데이터의 탐색 (1) - MY #3

chominyeong opened this issue Feb 4, 2024 · 1 comment

Comments

@chominyeong
Copy link
Owner

chominyeong commented Feb 4, 2024

2-1 크로스 집계의 기본

☑트랜잭션 테이블(cross table)

image

  • 컴퓨터는 열을 늘리는 것보다 을 늘리는 것이 간단하다.
  • 트랜잭션 테이블은 행 방향으로만 추가가 가능하다.

☑크로스 테이블(cross table)

image

  • 행 방향 : 사품명
  • 열 방향 : 매출 월
  • 행과 열 교차 : 숫자 테이블

☑크로스 집계(cross tabulation)

  • 트랜잭션 테이블 → 크로스 테이블로 변환

☑피벗 테이블(pivot table)

  • 소량의 데이터를 크로스 집계하는 것

✅피벗 테이블 기능에 의한 크로스 집계

image

  • 사용하려는 데이터 범위를 선택 → [삽입] → [피봇테이블]
    image
  • 열 : '매출일'
  • 행 : '점포ID', '상품ID'
  • 값 : '금액'

☑룩업 테이블(lookup table)

  • 테이블 1 : 트랜잭션 테이블
    image
  • 테이블 2 : 상품정보
    image
  • 테이블 1과 테이블2를 결합한 테이블을 룩업 테이블이라고 한다. lookup 함수 사용
    image
  • 트랜잭션 테이블과 룩업 테이블은 독립적으로 관리할 수 있다.
    • 트랜잭션 → 업무 데이터베이스에서 가져와서 사용
    • 룩업 테이블 → 데이터 분석 용도에 따라 변경해도 됨

✅1) BI 도구에 의한 크로스 집계

  • Tebleau Public에서 실습
  1. 판매이력 테이블과 상품 테이블을 결합(=조인)한다. → 룩업 테이블이 생성됐다.
    image
  2. 워크시트로 이동 후 원하는 속성을 클릭한다. → "크로스탭으로복제" 클릭
    image

✅2) Pandas에 의한 크로스 집계

image

  • 피벗 테이블에 의한 크로스 집계는 간편하지만 데이터의 양이 너무 많으면 처리할 수 없다. → SQL를 이용하여 집계하고 BI 도구로 시각화한다.

✅3) SQL에 의한 테이블의 집계

SELECT date_trunc('month', "매출일") ::DATE AS "매출일", "점포 ID", "상품 ID", "고객 ID", sum("금액") AS "금액"
FROM "판매 이력"
GROUP BY 1, 2, 3, 4
  • 먼저 'SQL로 집계'하고 '시각화 도구로 크로스 집계'한다.
  • 전자를 '데이터 집계의 프로스세', 후자를 '시각화 프로세스'라고 부른다.
@chominyeong
Copy link
Owner Author

chominyeong commented Feb 4, 2024

2-2 열 지향 스토리지에 의한 고속화

3계층의 데이터 집계 시스템

캡처

  • 데이터를 집계할때 데이터의 수가 적다면 모든 데이터를 메모리에 올려서 사용하면 된다.
  • 그러나 데이터가 수억개를 넘어가거나 메모리가 부족하면 급격히 성능이 저하된다.
  • 압축분산에 의해 지연을 줄인다. mpp 기술

행 지향(row-oriented) 데이터베이스

  • 일반적인 업무 시스템에서 사용되는 데이터베이스
  • 레코드 단위의 읽고 쓰기에 최적화
  • ex. Oracle Database, MySQL 등의 RDB(관계형데이터베이스)
    캡처2
  • 테이블의 각 행을 하나의 덩어리로 디스크에 저장
  • 새 레코드를 추가하면 파일의 끝에 데이터를 추가한다.
  • 매일 발생하는 대량의 트랜잭션을 지연 없이 처리한다.

  • 행지향 데이터베이스는 데이터 검색 고속화를 위해 '인덱스(index)'를 만든다.
  • 그러나 데이터분석에서는 컬럼이 중요하기 때문에 거의 도움이 되지 않는다.
  • 따라서 인덱스에 의지하지 않는 고속화 기술 필요

⭐열 지향(column-oriented) 데이터베이스

  • =칼럼 지향 데이터베이스
  • 컬럼 단위 집계 최적화
  • ex. Teradata, Amazon Redshint
    캡처3
  • 데이터 압축 효율 우수
    • 반복되는 동일한 문자열을 매우 작게 압축 가능
  • 열 지향 데이터베이스는 압축되지 않은 행 지향 데이터베이스와 비교하면 1/10 이하로 압축 가능하다.

⭐MPP(massive parallel processing)

  • 데이터 처리 >병렬화<
  • 열 지향 데이트베이스 가정
    캡처4
  • 하나의 쿼리를(수억개의 숫자를 처리하는 것) 다수의 작은 태스크로 분해하고 이를 병렬로 실행한다.
  • ex) 1억 레코드로 이루어진 테이블을 1000개의 태스크로 나누고 각각 cpu가 처리한다. 마지막에 모든 결과를 cpu가 합계처리한다.

MPP 데이터베이스 vs 대화형 쿼리 엔진

  • MPP 데이터베이스
    • 쿼리가 잘 병렬화할 수 있으면, MPP를 사용한 집계는 CPU 코어 수에 비례하여 고속화.
    • 디스크로부터의 로드가 병목 현상이 발생하지 않도록 데이터가 고르게 분산되어 있어야 함.
    • 하드웨어 수준에서 데이터 집계가 최적화된 데이터베이스를 'MPP 데이터베이스'라고 한다.
  • 대화형 쿼리 엔진
    • Hadoop과 함께 사용
    • 데이터를 저장하는 것은 분산 스토리지의 역할
    • 그러나 데이터를 열 지향으로 압축하지 않는 한 MPP 데이터베이스보다 성능 좋지 않음.
      → 시스템의 안정성과 서포트 체제 측면에서는 MPP를, Hadoop과의 궁합을 고려하면 편리성은 대화형 쿼리 엔진이 탁월
집계 시스템 종류 스토리지의 종류 최적의 레코드 수
RDB 행 지향 ~수천만 정도
MPP 데이터베이스 열 지향(하드웨어 일체형) 수억~
대화형 쿼리 엔진 열 지향(분산 스토리지에 보관) 수억~

MPP가 하드웨어 일체형이면 일반인은 써볼 기회가 없을 것 같은디..

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