빅데이터를 지탱하는 기술 ch2
빅데이터를 지탱하는 기술 ch2. 빅데이터의 탐색
목차
이 장안에서의 목표:
대량의 데이터를 효율적으로 탐색하는 방법.
크로스 집계
행 과 열이 교차하는 부분에 숫자 데이터가 들어가는 경우 크로스 테이블이라고 부른다. 보통 세로에 상품명이 나오고, 가로로 매출 월이 나오게 된다.
상품 | 1월 판매금액 | 2월 판매금액 |
---|---|---|
상품1 | 50,000 | 30,000 |
상품2 | 80,000 | 70,000 |
사람들이 보기 편한 구조이지만, 데이터베이스에서는 다루기 어렵다. 상품의 기준에서는 상품을 추가하는 것은 쉽지만 열을 늘리까 어렵기 때문이다.
트랜잭션 테이블은
매출월 | 상품명 | 금액 |
---|---|---|
1월 | 상품1 | 50,000 |
1월 | 상품2 | 80,000 |
2월 | 상품1 | 30,000 |
2월 | 상품2 | 70,000 |
이렇게 열로 늘어나지 않고 행으로 계속 늘어나는 것이 트랜잭션 테이블이다. 트랜젝션 테이블에서 크로스테이블로 변환하는 과정을 크로스 집계라고 한다.
import pandas as pd
df1 = pd.read_excel(u'판매 데이터.xlsx',u'판매이력')
df2=pd.read_excel(u'판매 데이터.xlsx',u'상품')
df3= pd.merge(df1,df2,on=u'상품')
df3.pivot_table(u'금액',[u'점포 ID',u'상품명'],u'매출일,aggfunc='sum)
파이썬에서 테이블 종횡변환
query= '''
SELECT uid, key,sum(value) value FROM vtable GROUP BY 1,2
'''
import sqlalchemy
engine= sqlalchemy.create_engine('sqlite"///sample.db')
vtable = pd.read_sql(query,engine)
열 지향 스토리지
3계층의 데이터 집계 시스템
데이터 레이크 -> 데이터마트 -> 시각화도구
데이터 처리가 느리다는 것은 대기시간이 적다는 것을 의미. 가장 간단하게 처리시간을 줄이기 위해서는 모든 데이터를 메모리에 올려놓으면 해결, 5GB 정도로 용량이 적은 경우는 RDB가 데이터 마트에 적합하다. 지연이 적고, 많은 수의 클라이언트가 접속하여도 성능이 나빠지지 않기 때문이다.
하지만 RDB의 단점으로는 메모리가 부족하면 성능이 급격하게 저하된다는 것에 있다.
RDB(Oracle SQL)는 보통 행 지향 데이터베이스로 돼있다. 하지만 데이터 분석에 있어 사용되는 데이터베이스는 열지향의 구조를 가져야한다.
행지향의 데이터는 대량의 트랜잭션을 맨 마지막에 붙이기만하면 되므로 데이터의 추가에 유리하다는 특징이 있다. 이때 원하는 데이터에 접근을 빨리하기 위해선 행지향 데이터베이스에서는 인덱스를 이용해야한다.
열 지향 데이터 베이스를 구축하는 이유
데이터 분석에는 디스크 I/O가 발생할 수 밖에 없다. 데이터 분석에는 특정 컬럼만이 이용되곤 하는데, 이에 대한 정보를 미리 칼럼단위로 저장해 놓아서 필요한 컬럼만을 로드하여 디스크 I/O를 줄인다. + 압축 효율 또한 같은 컬럼에 유사하게 반복되는 문자열을 매우 작게 압축 시킬 수 있다.
병렬화로 인한 멀티 코어 활용
열 지향의 데이터베이스의 경우 컬럼별로 하나의 쿼리를 다수의 작은 태스크로 분할하여 병렬로 실행하게 된다.
하둡에서 열 지향 스토리지를 만들기 위해 여러 라이브러리가 개발되고 있다. (3장에서 계속)
MPP데이터 구조
데이터를 압축하고, 여러 디스크에 분산시켜 지연을 줄이는 방법이 MPP (Massive Parallel Processing )이다. 대규모 병렬처리를 하게되며 이에 대한 예시로는 Amazon Redshift Google bigquery등이 있다.
MPP는 데이터 집계에 최적화 돼있고, 데이터 웨어하우스와 분석용 데이터베이스에서 많이 사용된다.
MPP데이터 베이스와 대화형 쿼리엔진
MPP데이터 베이스 => 하드웨어 일체형 스토리지
대화형 쿼리엔진 => 분산 스토리지에 보관
시스템 안정성과 서포트 체제는 MPP 데이터 베이스
하둡과의 궁합은 대화형 쿼리엔진
공통점은 *둘다 열 지향 !!이라는 것 *
시각화 도구의 특징
- Jupyter NoteBook 애드혹 분석에 사용
- 대시보드 도구
대시보드 도구로는 Redash, Superset,Kibana등이 있다.
Redash의 경우는 쿼리의 실행결과를 바로 시각화한다.
kibana는 실시간데이터 시각화 이며, 시각화 하려는 데이터는 모두
Elasticsearch에 저장해야한다. Elasticsearch란, 키워드가 아닌 전체 텍스트 검색에 대응한 데이터 스토어이다.
데이터 마트의 설계
시각화에 적합한 데이터 마트를 만드는 것은, 시각화 도구를 위한 비정규화 테이블을 만드는 과정이다.
테이블을 비정규화 하는 것이란 무엇일까
시간과 함께 생선된 데이터를 기록한 것이 트랜잭션,
트랜잭션에서 참고되는 각종 정보가 마스터이다. 트랜잭션은 변화하지 않지만 마스터는 바뀐다.
팩트테이블이란 사실이 기록된 테이블이며 예시로는 판매액, 디멘젼 테이블은 그 트랜젝션에서 참고되는 마스터 뎅이터 이다 예시로는 속성값등이 있다..
데이터 마트의 스키마는 스타스키마를 만드는 것이 좋다. 스타스키마는 팩트테이블-> 여러 디멘전테이블이 결합된 것이다 이유는 첫번째로 단순해서 이해하기가 쉽고, 데이터분석을 쉽게 할 수 있다. 또 두번째로는 성능상 팩트테이블로 접근하기 때문에 팩트테이블을 최대한 작게 하는 것이 성능에 유리하기 때문이다.
비정규화는 분리됐던 테이블들을 하나의 테이블로 최대한 합치는 것을 의미한다.
Leave a comment