AI, 데이터 분석 등 공부를 하면서 그 어느 것보다 데이터가 중요하다는 것을 깨달은 순간,
데이터를 활용할 수 있는 다양한 기술에 대한 궁금함이 밀려왔다.
조금씩 알아보면서 시중에 있는 다양한 기능의 제품들을 눈동냥했고,
강의나 세미나를 통해서 이들의 활용 사례를 접하면서 이 체계에 대한 정리가 필요함을 느꼈다.
그리하여 빅지기를 정독하며 중요한 내용과 용어 등을 정리해보도록 하겠다.
📖 챕터 2. 빅데이터의 탐색
데이터의 대화적인 집계와 시각화, 데이터 마트의 성질
📗 2-1. 크로스 집계의 기본
📍 트랜잭션 테이블, 크로스 테이블, 피벗 테이블
- '크로스 집계'의 개념
행 방향과 열 방향의 테이블에 숫자가 위치하여 크로스 테이블이라고 한다.
수작업으로 진행시 이 작업은 간단하지만, DB에 새로운 열을 추가하는 것은 간단하지 않다.
따라서 행 방향(아래)로만 증가하게 하고 열 방향(오른쪽)으로는 데이터를 증가시키지 않도록 한 것이 트랜잭션 테이블이다.
트랜잭션 테이블에서 크로스 테이블로 변환하는 과정을 크로스 집계(cross tabulation)라고 한다.
소량의 데이터를 크로스 집계하는데 편리한 것이 피벗 테이블 기능이다.
📍 룩업 테이블
- 테이블을 결합하여 속성 늘리기
트랜잭션 테이블에 새로운 항목을 추가하는 것이 아니라, 다른 테이블과 결합하는 경우를 룩업 테이블이라 한다.트랜잭션 테이블과 룩업테이블은 서로 독립적으로 관리할 수 있다.
📍 SQL에 의한 테이블의 집계
- 대량 데이터의 크로스 집계 사전 준비
대량의 데이터를 크로스 집계하려면 SQL의 집계 함수를 이용해야한다.
DB에 저장되어 있는 데이터를 먼저 SQL로 집계하여 데이터양을 줄여 트랜잭션 테이블의 형태로 만들고,
이후에 크로스 집계를 통해 크로스 테이블을 만들거나, 대시보드를 통해 시각화한다.
📍 데이터 집계 => 데이터 마트 => 시각화
- 시스템 구성은 데이터 마트의 크기에 따라 결정된다.
일반적으로 데이터 마트가 작을수록 시각화하는 것이 간단하지만, 원래 데이터에 포함된 정보 손실이 커진다.
반대로 집계 프로세스에서 많은 데이터를 남기면 데이터 마트가 거대화되어 좋은 시각화를 할 수 없다.
최종적으로 데이터 마트의 크기에 따라 시스템 구성이 결정된다.
📗 2-2. 열 지향 스토리지에 의한 고속화
📍 데이터베이스의 지연을 줄이기
데이터 수집 단계에서는 데이터 집계에 소요되는 시간을 예상하지 않기에 주로 3계층의 시스템을 만든다.
데이터 처리의 지연 : 지연이 적은 데이터 마트 작성을 위한 기초 지식
[지연이 적은 DB를 만드는 방법]
- 모든 데이터를 메모리에 올리기(RDB는 원래 지연이 적고, 동시 접속해도 성능이 나빠지지 않기에 사용자가 많은 실제 운영 환경의 데이터 마트로 우수/메모리가 부족하면 급격히 성능이 저하됨)
- 압축과 분산으로 지연 줄이기
'압축'과 '분산'에 의해 지연 줄이기 : MPP 기술
고속화를 위해 데이터를 압축하고 여러 디스크에 분산하여 데이터 로드에 따른 지연을 감소
MPP(massive parallel processing : 대규모 병렬처리) : 멀티 코어 활용, 디스크 I/O 병렬 처리를 통해 분산된 데이터를 읽어 들이는 아키텍쳐 (ex. Amazon Redshift, Google BigQuery 등)
MPP는 데이터 집계에 최적화되어 있어, DWH와 분석용 DB에 주로 사용
📍 열 지향 데이터베이스 접근
- 칼럼을 압축하여 디스크 I/O를 줄이기
- 행 지향 데이터베이스(row-oriented database) : 레코드 단위의 읽고 쓰기에 최적화된 DB (ex. MySQL 등 일반적인 RDB)
- 열 지향 데이터베이스(column-oriented database) : 칼럼 단위의 집계에 최적화된 DB (ex. Teradata, Amazon Redshift 등)
📌 처리량과 지연 시간 - 데이터 처리의 성능 지표
- 처리량(throughput) : 일정 시간에 처리할 수 있는 데이터의 양, 배치 처리 등 대규모 데이터 처리에서 중요
- 지연 시간(delay) : 데이터 처리가 끝날 때까지의 대기 시간, 애드 혹 데이터 분석에서 중요
- DWH나 데이터 레이크는 대량의 데이터를 처리하기 위해 처리량을 중시하나
- 데이터 마트에서는 지연 시간의 단축을 중시함
행 지향 데이터베이스 : 각 행이 디스크 상에 일련의 데이터로 기록된다.
행 지향 DB에서는 각 행을 한 덩어리로 디스크에 저장한다.
파일의 끝에 데이터를 쓰기만 하면돼서 빠르게 추가 가능, 대량의 트랜잭션을 지연 없이 처리하기 위해 데이터 추가가 효율적이다.
인덱스(index)를 만들어 데이터 검색을 고속화한다.
열 지향 데이터베이스 : 칼럼마다 데이터를 모아 두기
데이터 분석에서는 일부 칼럼만 집계 대상으로 활용하는 경우가 많다. 행 지향 DB에서는 레코드 단위로 데이터가 저장되어 있어 필요없는 열까지 모두 로드된다. 반면 열 지향 DB에서는 데이터를 미리 칼럼 단위로 정리해둬 디스크 I/O를 줄인다. 문자열 반복과 같은 동일 칼럼의 유사한 데이터의 나열은 매우 작게 압축할 수 있다. 데이터 구조 상 집계와 압축은 고속이지만 저장하거나 추가하는데에는 시간이 소요된다.
📍 MPP 데이터베이스(대규모 병렬 처리 : massive parellel processing)의 접근 방식
- 병렬화에 의해 멀티 코어 활용하기
행 지향 DB에서는 하나의 쿼리가 하나의 스레드에서 실행된다. 쿼리 동시 실행을 통해 여러개의 CPU 코어를 활용할 수 있지만, 개별 쿼리가 분산 처리되는 것은 아니다.
열 지향 DB에서는 한번에 컬럼 전체의 대량의 데이터를 읽거나 압축 데이터의 전개로 인해 쿼리 실행 기간이 길어진다. 따라서 MPP를 통해 하나의 쿼리를 다수의 작은 태스크로 분해하고 병렬로 실행한다.
MPP 데이터베이스와 대화형 쿼리 엔진
쿼리 병렬화가 잘 이뤄진다면 MPP 활용 데이터 집계는 CPU 코어 수에 비례하여 고속화되지만, 이를 위해 데이터가 고르게 분산되어 있어야 한다.
MPP는 구조상 고속화를 위해 CPU와 디스크 모두 균형있게 늘려야하기에 HW와 SW가 통합된 제품으로 제공되고 HW 수준의 DB를 MPP 데이터베이스 라고 한다.
MPP 아키텍처는 Hadoop과 함께 사용되는 대화형 쿼리 엔진으로 사용된다. 하지만 데이터를 저장하는 분산 스토리지에서 데이터를 열 지향으로 압축하지 않는 한 MPP DB와 동등한 성능은 되지 못한다.
[MPP DB vs 대화형 쿼리 엔진]
MPP DB | 대화형 쿼리 엔진 | |||||
사용처 | 대용량 데이터 처리 대규모 DWH, BI, 복잡한 분석 작업 |
실시간 처리, 대화형 대시보드, 실시간 분석, 모니터링 시스템 |
||||
특징 | 시스템 안정성과 서포트 체제 | Hadoop과의 궁합을 고려한 편리성 | ||||
제품 | Amazon Redshift, Google BigQuery, Snowflake | Apache Druid, MemSQL, VoltDB |
[데이터 마트에 사용되는 주요 기술]
집계 시스템 종류 | 스토리지의 종류 | 최적의 레코드 수 | ||
RDB | 행 지향 | ~수천만 정도 | ||
MPP DB | 열 지향(하드웨어 일체형) | 수억~ | ||
대화형 쿼리 엔진 | 열 지향(분산 스토리지에 보관) | 수억~ |
📗 2-3. 애드 혹 분석과 시각화 도구
📍 Jupyter Notebook에 의한 애드 혹 분석
- 노트북에 분석 과정 기록하기
애드 혹 분석에서는 데이터의 위치, 집계 시간 등을 알지 못하기에 시행착오를 거쳐야하므로 대화형 실행 환경을 자주 사용한다.
Jupyter Notebook은 오픈 소스의 대화형 도구로 인기가 있다.
애드 혹 분석으로 크로스 집계 결과를 보고 싶은 경우에는 스프레드시트와 BI도구 없이 노트북 안에서 실행할 수 있다.
노트북 내에서의 시각화
Jupyter Notebook에는 유명한 시각화 라이브러리인 matplotlib이 있다. 이를 활용해 복잡한 그래프를 파이썬을 사용하여 생성한다. 하지만 마우스 조작만으로 대화형 차트를 만들고 싶을 때는 스프레드시트 및 BI 도구 등 시각화 도구를 사용하는 것이 편하다.
노트북에 의한 워크플로 : 일련의 태스크를 한꺼번에 실행하기
노트북의 Run All 메뉴를 통해 모든 셀을 순서대로 실행함으로써 간이적인 워크플로의 실행에도 사용할 수 있다.
📍 대시보드 도구
- 정기적으로 집계 결과를 시각화하기
애드 혹 분석과 다르게, 정기적으로 쿼리를 실행해 대시보드를 작성하기 위해 BI 도구 또는 대시보드 도구가 자주 사용된다.
[BI 도구 vs 대시보드 도구]
- BI 도구 : 대화형 데이터 탐색이 중요시, 그래프의 상세 내용이나 집계의 기반이 되는 데이터를 살펴볼 때 사용
- 대시보드 도구 : 새로운 그래프를 쉽게 추가 가능, 최신의 집계 결과를 즉시 확인, 정해진 지표의 일상 변화 모니터링에 사용
Redash : SQL에 의한 쿼리의 실행 결과를 그대로 시각화
다수의 데이터 소수에 대응하는 파이썬 기반 대시보드 도구로 SQL에 의한 쿼리 실행 결과를 시각화하는데 적합
하나의 쿼리가 하나 또는 여러 그래프에 대응하며, 등록한 쿼리는 정기적으로 실행되어 Redash DB에 저장된다.
이를 통해 마지막으로 실행된 집계 결과를 표시하기에 대시보드 적용이 즉각적으로 이뤄진다.
따라서 별도 데이터 마트를 만들 필요가 없다.
- 장점 : 구조를 알기 쉽고, SQL 쿼리를 통해 그래프를 만들고 결과를 공유하기가 쉽다.
- 단점 : BI 도구만큼 대량의 데이터를 처리할 수는 없다.
Superset : 화면 상에서 마우스 조작만으로 그래프 생성
대화형 대시보드를 작성하기 위한 파이썬 웹 어플리케이션으로, GUI를 통해 그래프를 생성한다.
Redash와 달리 데이터 소스에 의한 집계가 몇 초 만에 완료된다.
내장 스토리지를 갖고 있지 않아 데이터의 집계는 외부 스토리지에 의존한다.
시계열 데이터에 대응한 열 지향 스토리지인 Druid를 표준으로 지원하며, 실시간 정보 취급이 가능하다.
BI 도구와 마찬가지로 시각화를 위한 데이터 마트를 먼저 만드는 것이 기본.
Druid는 집계 시에 테이블 join이 불가하므로 미리 join한 데이터 마트를 만들어둬야한다.
Kibana : Elasticsearch의 프론트 엔드에서 실시간으로 작성
자바스크립트로 만들어진 대화형 시각화 도구로, 특히 실시간 대시보드를 만들 목적으로 자주 이용된다.
Elasticsearch의 프론트 엔드로 개발되었기 때문에 도입 시 Elasticsearch가 필수다.
Elasticsearch는 전체 텍스트 검색(full-text search)에 대응한 데이터 스토어이므로 키워드로 텍스트 데이터 검색을 하는 경우에는 강력하나, SQL을 활용한 복잡한 데이터 분석에는 적합하지 않다.
시간을 들이는 데이터 탐색보다는 검색 조건에 맞는 데이터를 빠르게 시각화하는데 적합하다.
시각화 도구의 선택
실시간 처리가 중요한 경우에는 실시간 처리를 가정한 대시보드 도구가 필요하나, 전용 프로그램이 필요해 시스템 운용의 부담이 커진다.
웹 형 BI 도구를 사용하면 대화형 대시보드를 자동으로 업데이트할 수는 없으나 BI 도구 고유 지식이 필수적이다.
[스프레드 시트]
장점 - 도입이 간단해 피벗 데이블을 사용한 크로스 집계 및 그래프 작성이 쉽다.
단점 - 클라우드 서비스라면 팀 내 공유가 쉽고, API 등으로 자동 업데이트 가능
[대시보드 도구(Redash 등)]
장점) 직접 SQL 쿼리를 작성하는 것이 편한 사람에게 용이.
애드 혹 또는 정기적으로 반복되는 현황 파악 및 지속적인 모니터링에 최적
단점) SQL 쿼리에 대한 지식이 필요, 대량의 데이터 집계에는 적합하지 않다.
[Jupyter Notebook 등]
장점) 시각화를 위해 서버를 설치할 필요없이 데이터를 살펴볼 수 있다.
작업 과정을 기록으로 남길 수 있고, 시각화 결과를 위해 대시보드를 만들 필요가 없다.
단점) 시각화를 위해 프로그래밍 지식이 필요하다.
📍 BI 도구
- 정기적으로 집계 결과를 시각화하기
장기적인 데이터의 추이를 시각화하거나, 집계 조건을 변경할 수 있는 대시보드를 만들기 위해선, BI 도구가 적합하다.
BI 도구에서는 데이터를 그대로 가져오는 경우도, 분석을 위해 데이터를 가공하는 경우도 있기에 시각화에 적합한 데이터 마트를 만들어 읽고 쓰는 것을 전제로 한다.
BI 도구에서는 하나의 데이터 소스에서 다수의 그래프를 만든다. 하나의 대시보드에 표시할 수 있는 정보량에는 한계가 있기 때문에 몇가지 중요 화면만 먼저 만든 다음, 화면 상에서 집계 조건을 바꿀 수 있도록 한다.
하나의 데이터를 다각적으로 분석하기
대화형 대시보드를 만들기 위해서는 데이터를 모두 포함하는 하나의 테이블을 작성하고 그 테이블에서 다수의 대시보드를 만든다.
시각화 내용을 늘리기 위해 배치 처리에 의한 데이터 마트 작성을 통해 다수의 파생된 대시보드를 만들 수 있다.
📗 2-4. 데이터 마트의 기본 구조
📍 시각화에 적합한 데이터 마트 만들기
- OLAP(Online Analytical Processing)
다차원 모델과 OLAP 큐브
OLAP는 데이터 집계를 효율화하는 접근 방법 중의 하나다.
OLAP에서는 다차원 모델의 데이터 구조를 MDX(multidimensional expressions) 등의 쿼리 언어로 집계한다.
데이터 분석을 위해 만들어진 다차원 데이터를 OLAP 큐브라고 부르며, 그곳을 크로스 집계하는 구조가 OLAP다.
MPP 데이터베이스와 비정규화 테이블
BI 도구로 그래프를 만들기 위해서, 이미 존재하는 테이블을 그대로 시각화하는 것이 아니라,
만들고 싶은 그래프에 맞춰 다차원 모델을 설계한다.
그러나 MPP 데이터베이스에 다차원 모델 개념은 없기에, 이를 대신해 비정규화 테이블을 준비한다.
'시각화에 적합한 데이터 마트를 만드는 것'은 'BI 도구를 위한 비정규화 테이블을 만드는 것'이다.
📍 테이블을 비정규화하기
DB 설계에서는 테이블을 마스터와 트랜잭션으로 구분한다.
생성되는 데이터를 기록한 것이 트랜잭션이며, 이를 통해 참고되는 정보가 마스터이다. 따라서 트랜잭션은 한 번 기록하면 변화하지 않지만, 마스터는 상황에 따라 다시 쓰인다.
위 테이블 관계에서 판매 이력만이 트랜잭션이고 다른 것은 모두 마스터다.
이것이 RDB에서의 관계형 모델(relational model)이다.
팩트 테이블과 디멘전 테이블
- 팩트 테이블 : 트랜잭션처럼 사실이 기록된 것, 집계의 기반이 되는 숫자 데이터
- 디멘전 테이블 : 트랜잭션에서 참조된 마스터 데이터 등, 데이터 분류를 위한 속성값
스타 스키마와 비정규화 : 팩트 테이블을 중심으로 여러 디멘전 테이블을 결합
데이터 마트를 만들 때는 ②처럼 팩트 테이블을 중심으로 여러 디멘젼 테이블을 결합하는 것이 좋다.
디멘전 테이블을 작성하려면 정규화에 의해 분해된 테이블을 최대한 결합해 하나의 테이블로 정리한다.
정규화의 반대작업을 하므로 비정규화(demormalization)이라고 한다.(중복 데이터도 OK)
[데이터 마트에서 스타 스키마를 사용하는 이유]
- 단순하고, 데이터 분석을 쉽게 할 수 있어 데이터 마트에 사용된다.
- 팩트 테이블에는 ID와 같은 키만을 남겨두고 나머지는 디멘전 테이블로 옮겨 팩트 테이블을 가능한 작게 둘 수 있어 좋은 성능을 유지시킬 수 있다.
비정규화 테이블 : 데이터 마트에 정규화는 필요없다.
MPP DB와 같은 열 지향 스토리지 시스템이 보급되며 변화가 생겼다. 열 지향 스토리지는 칼럼 단위로 데이터가 저장되어 칼럼의 수는 성능에 영향을 주지 않는다. 따라서 처음부터 팩트 테이블에 모든 칼럼을 포함해두고, 쿼리 실행이 테이블 JOIN을 하지 않는 편이 간단하다. 또한 칼럼 단위로 데이터 압축이 되어 디스크 I/O의 증가가 억제되기에 디멘전 테이블 없이 하나의 거대한 팩트 테이블만으로도 충분해졌다.
따라서 성능상의 문제가 열 지향 스토리지에 의해 해결되었기에, 스타 스키마에서 비정규화를 통해 모든 테이블을 결합하여 비정규화 테이블로 만들어 데이터 마트에 사용한다.
📌 DWH와 스타 스키마
- 데이터 마트가 아니라 DWH의 테이블 구조로는 스타 스키마가 우수하다.
데이터 축적 단계에서는 팩트 테이블과 디멘전 테이블로 분리해두고,
데이터 마트를 만드는 단계에서 결합해 비정규화 테이블을 만든다.
📍 다차원 모델 시각화에 대비하여 테이블을 추상화하기
비정규화 테이블을 다차원 모델(multidimensional model)로 추상화한다. 이것은 테이블 및 칼럼의 집합을 정리해 이름 붙인 것이다.
다차원 모델은 디멘전과 측정값으로 분류한다.
- 디멘전(dimension) : 크로스 집계에 있어서 행과 열을 이용하는 것
- 측정값(measure) : 숫자 데이터와 그 집계 방법을 정의하는 것
다차원 모델에서 디멘전을 선택하여 행과 열로 지정하면 이들의 조합에 대한 측정값이 계산된다.
원래의 데이터가 다수의 디멘전으로 이루어진 다차원 공간이고, 그것을 행과 열로 구성된 2차원 테이블로 표현한 것이 크로스 집계다.
모델의 정의 확장
새로운 집계와 그래프가 보고 싶다면, 비정규화 테이블에 새로운 컬럼을 추가하고 새로운 디멘전을 입력함으로써 만들 수 있다.
이처럼 다차원 모델의 정의는 나중에 확장할 수 있다. 이런 비정규화 테이블을 모은 것이 BI 도구를 위한 데이터 마트다.
비정규화 테이블을 업데이트 함에 따라 참고하는 모든 그래프를 업데이트 할 수 있다.
워크플로 관리 도구 등을 이용해 데이터 마트를 정기적으로 자동 업데이트하여 데이터의 움직임을 확인할 수 있다.
📌 브레이크 다운 분석(breakdown analysis)
- 복잡한 데이터 분석을 위해 데이터를 그룹화시킨 후 각 그룹에 내용을 정리하는 것을 말한다.
- 그룹화된 디멘전을 팩트 테이블에 추가하여 그룹별 개별 대시보드를 작성하고 집계할 수 있다.
'독서, 강의 기록' 카테고리의 다른 글
빅데이터를 지탱하는 기술 - 챕터 1 : 빅데이터의 기초 지식 (0) | 2023.12.13 |
---|---|
[세미나] 데이터리안 SQL 코딩테스트 노하우 강의 (0) | 2023.12.12 |
07.27.데이터 과학자&분석가 모임 3회 밋업 (0) | 2023.07.28 |