Chapter 02 | 빅데이터의 탐색
2-1. 크로스 집계의 기본
데이터 시각화의 기본은 '크로스 집계'
1) 용어 정리
- 크로스 테이블 : 행은 상품명, 열은 매출 월, 행/열 교차부분에는 숫자 데이터
- 트랜젝션 테이블 : 행에 데이터가 추가되는 형식 (열 방향 증가 X) - DB 형태
- 크로스 집계 : 트랜잭션 테이블 -> 크로스 테이블로 변환하는 과정 (엑셀의 피벗테이블)
- 룩업 테이블 : 트랜젝션 테이블에 새로운 항목을 추가하는 것이 아닌, 다른 테이블과 결합할 때 사용됨
크로스 테이블은 시각적으로는 보기 편하지만, DB에서 다루기는 힘든 데이터 형식
반면 트랜젝션 테이블은 db에서 다루는 데이터 형식
2) 크로스 집계 방법
- BI 도구인 Tableau를 이용하여 테이블 결합
- Pandas의 pivot_table()로 크로스집계
- SQL로 테이블 집계 후 (대량 데이터를 집계할 때 유용함) 시각화도구로 크로스집계
- (비추천) SQL로 크로스 집계 - sum()함수를 이용하여 피벗함
'데이터 집계의 프로세스' : SQL로 집계
'시각화 프로세스' : SQL로 집계한 것을 시각화 도구로 크로스 집계하는 단계
3) 데이터마트
📌 데이터 집계 -> 데이터 마트 -> 시각화
: 데이터 집계와 시각화 사이에 있는 것이 데이터마트임
- 참고로 시스템 구성은 '데이터 마트의 크기'에 의해 결정됨
- 데이터 마트가 작으면 시각화는 간단하지만, 정보부족 / 데이터마트가 커지면 좋은 시각화 힘듦 ⇒ trade-off 관계
2-2. 열 지향 스트로지에 의한 고속화
📌 집계 효율이 높은 데이터베이스 구조 알아보기 _ 대량의 데이터를 신속하게 집계하려면, 미리 데이터를 집계에 적합한 형태로 변환하는 것이 필요하기 때문!
1) 초단위 데이터 집계 시스템
서론 : 데이터양이 늘면, 집계에 걸리는 시간이 길어짐 → 초단위 데이터 집계 시스템 구성 중요
주로 다음과 같이 ‘3계층 시스템’을 만들어 초단위의 데이터 집계 시스템을 만든다.
- 원 데이터는 용량적인 제약이 적어, 대량의 데이터를 처리할 수 있는 데이터레이크와 데이터 웨어하우스에 저장
- 원하는 데이터를 추출하여 데이터 마트 구축하고, 데이터 마트로부터 항상 초 단위 응답을 얻을 수 있게 함
2) 데이터 마트의 데이터 처리의 지연 (latency)
데이터 처리 응답 빠르다 == 대기시간 (latency)이 적다
데이터 마트를 만들 때는 가급적 지연이 적은 데이터베이스가 있어야한다.
방법 1. 모든 데이터를 메모리에 올리기
방법 2. 5GB의 데이터양이면 MySQL이나 PostgreSQL등의 일반적인 RDB가 데이터마트에 적합함
- RDB의 특징
- (장점) RDB는 지연이 적고, 많은 수의 클라이언트가 동시 접속해도 성능이 나쁘지 않음 → 많은 사용자가 이용하는 실제 운영환경의 데이터 마트로 특히 우수함
- (단점) 메모리가 부족하면 급격히 성능 저하됨
- 처리량과 지연시간 관계
데이터 처리 성능은 ‘처리량’과 ‘지연’의 두 종류의 숫자로 자주 표시됨
- 처리량 : 일정 시간에 처리할 수 있는 데이터의 양. 주로 배치 처리 등의 대규모 데이터 처리에서 중요시됨
- 지연 : 데이터 처리가 끝날 때까지 대기시간. 주로 애드 혹 데이터 분석등에서 중요시됨
처리량과 지연 시간은 양립되지 않음- 일부 시스템은 매우 높은 처리량을 제공하지만 지연시간도 커져 애드혹 분석에 적합하지 않을 수도 있음
- 지연시간을 작게 하는 것은 특화화한 시스템에서 처리량을 높이는데 주력하지 않은것도 있음
데이터 웨어하우스나 데이터 레이크는 대량의 데이터를 처리하기 위해 주로 처리량을 중시하는 설계로 되어있음
데이터마트는 지연시간 단축이 필수로, 충분한 메모리를 준비하거나 디스크 I/O를 절감하는게 필수적
💡 데이터 마트 만들 때 latency가 적인 데이터 사용하는 것이 좋다.
3) 기술 1. MPP - ‘압축’과 ‘분산’에 의해 지연 줄이기
고속화를 위해 ‘압축’과 ‘분산’ 기술 사용함
데이터는 가능한 작게 압축하고, 이를 여러 디스크에 분산함으로써 데이터 로드에 따른 지연 줄임
분산된 데이터를 읽어 들이려면, 멀티 코어 활용 + 디스크 I/O를 병렬 처리하는 것이 효과적
⇒ MPP 아키텍쳐
MPP (Massive Parallel Processing)
- 대규모 병렬 처리; 대량의 데이터를 분석하기 위해 DB에서 널리 사용되고 있음
- ex. Amazon RedShift와 Google BigQuery
- 데이터 집계에 최적화되어 있으며, 데이터 웨어하우스와 데이터 분석용의 DB로 특히 많이 사용됨
이제는 MPP기술을 데이터마트에도 활용하는 것을 가정하여 기본적인 구조를 설명함
💡 MPP 대규모 병렬처리 아키텍처는데이터 집계에 최적화되어 있으며, 데이터 웨어하우스와 데이터 분석용의 DB로 특히 많이 사용됨
4) 기술 2. 열 지향 데이터베이스 접근
데이터 압축 고려 후 알아야 할 것은 “열 지향” 개념이다
빅데이터의 데이터 대부분은 디스크 상에 있어, 쿼리에 필요한 최소한의 데이터만 가져옴으로써 지연이 줄어듦
→ 이를 위해 사용되는 방법이 “칼럼(열) 단위의 데이터 압축” 이다.
행 지향 데이터베이스
- 일반적인 업무 시스템에서 사용되는 DB
- 레코드 단위의 읽고 쓰기에 최적화 되어 있음
- Oracle Database와 MySQL 같은 일반적인 RDB 해당됨
[ 특징 ]
1. 매일 발생하는 트랜젝션을 지연 없이 처리하기 위해 데이터 추가를 효율적으로 할 수 있게 함
- 테이블의 각 행을 하나의 덩어리로 디스크에 저장하기에, 새 레코드 추가 시 각 파일의 끝에 데이터를 쓸 분이므로 빠르게 추가 가능
2. 데이터 검색을 고속화하기 위해 ‘인덱스’를 만들고, 적절한 인덱스가 사용되도록 튜닝하는 것이 중요함
- 인덱스가 없다면 모든 데이터를 로드해야되기 때문에 많은 디스크I/O가 발생해서 성능 저하됨
3. 데이터 분석에서는 어떤 칼럼이 사용되는지 알 수 없으므로, 인덱스에 의지하지 않는 고속화 기술 필요함
열 지향 데이터베이스
- 데이터 분석에 사용되는 DB
- 칼럼 단위의 집계에 최적화 되어 있음
- Teradata와 Amazon의 RedShift등이 해당됨
[ 특징 ]
1. 데이터를 미리 칼럼 단위로 정리해 둠으로써 필요한 칼럼만 로드하여 디스크 I/O를 줄임
- 행 지향 데이터베이스에서는 레코드 단위로 저장되어 있어 필요없는 열까지 디스크로부터 로드됨
2. 데이터 압축 효율 우수함
- 같은 칼럼에는 종종 유사한 데이터가 나열되어, 특히 같은 문자열의 반복은 매우 작게 압축할 수 있음
💡 열 지향 데이터베이스를 이용하여 열(칼럼) 단위의 데이터 압축할 시 효율성 증가함
5) 기술 3. MPP 아키텍처로 데이터 처리 병렬화
쿼리 지연을 줄일 수 있는 또 다른 방법은 MPP 아키텍처에 의한 데이터 처리의 병렬화 이다.
행 지향 데이터베이스는 보통 하나의 쿼리는 하나의 스레드에서 실행됨
- 많은 쿼리 동시에 실행하여 여러개 CPU 코더은 활용 가능하지만, 개별 쿼리 분산 처리는 안 됨
- 각 쿼리는 짧은 시간에 끝나는 것으로 생각하므로, 하나의 쿼리를 분산 처리하는 상황은 가정 안 함
열 지향 데이터베이스는 디스크에서 대량의 데이터를 읽어오기 때문에 1번의 쿼리 실행 시간이 길어짐
- 압축된 데이터 전개등으로 CPU 리소스를 필요로 하므로 멀티 코어를 활용하여 고속화하는 것이 좋음
- MPP에서는 하나의 쿼리를 다수의 작은 태스트크로 분해하고 이를 가능한 한 병렬로 실행함
- ex. 1억 레코드 테이블 합계 계산 시, 10만 레코드로 구분하여 1,000개의 태스크로 나눠서 계산후, 합계 집계 해 모든 결과 모아 총 합계 계산함
💡 MPP 데이터베이스에서는 여러 디스크에 분산된 데이터가 서로 다른 CPU코어에 의해 읽혀 부분적인 쿼리 실행이 이루어짐. 그 결과들은 한 곳에 모이고 최종적인 결과 출력됨. 해당 처리는 가능한 한 동시에 병렬로 실행됨
6) MPP 데이터베이스와 대화형 쿼리 엔진
- 쿼리가 잘 병렬화 할 수 있다면, MPP를 사용한 데이터 집계는 CPU 코어 수에 비례하여 고속화됨
- MPP 구조상, 고속화를 위해 CPU와 디스크 모두 균형있게 늘려야함
1. MPP 데이터베이스 : 하드웨어 수준에서 데이터 집계에 최적화 된 데이터베이스
2. MPP 아키텍처는 Hadoop과 함께 사용되는 대화형 쿼리 엔진으로 채택됨
- 데이터 저장하는 것은 분산 스토리지 역할이지만, 데이터를 열 지향으로 압축하지 않는 한 MPP 데이터베이스와 동등한 성능 X → Hadoop에서 열 지향 스토리지로 만들기 위해 여러 라이브러리가 개발되고 있음
시스템 안정성과 서포트 체제 측면은 상용 MPP 데이터베이스가 굳이지만,
Hadoop과의 궁합 고려시 편리성은 대화형 쿼리 엔진이 굳
어쨋든, 수억 레코드를 초과하는 데이터 마트의 지연을 작게 유지하기 위해서는 데이터를 열 지향의 스토리지로 저장해야됨.
집계 시스템 종류 |
스토리지 종류 | 최적의 레코드 수 |
RDB | 행 지향 | ~수천만 정도 |
MPP 데이터베이스 | 열 지향 (하드웨어 일체형) | 수억~ |
대화형 쿼리 엔진 | 열 지향 (분산 스토리지에 보관) | 수억~ |
표. 데이터 마트에 사용되는 주요 기술
위 글은 책 '빅데이터를 지탱하는 기술'을 읽고 정리한 글입니다.
'#️⃣ 책 리뷰' 카테고리의 다른 글
[책 리뷰] 데이터 파이프라인 핵심 가이드 - 핵심 내용 정리 (0) | 2023.11.06 |
---|---|
[책 정리] 빅데이터를 지탱하는 기술 - Chapter 1 (0) | 2022.02.07 |
[클린코드] 1•2장_의미있는 이름 (0) | 2021.12.15 |