Home [Data] [빅데이터를 지탱하는 기술] 정리하기 - 2-2 열 지향 스토리지에 의한 고속화
Post
Cancel

[Data] [빅데이터를 지탱하는 기술] 정리하기 - 2-2 열 지향 스토리지에 의한 고속화

개요

안녕하세요.

이번 글에서는 “빅데이터를 지탱하는 기술” 이라는 책의 2장 2절, “열 지향 스토리지에 의한 고속화”를 정리했습니다.


데이터베이스의 지연 줄이기

보통 데이터 양이 증가하면 집계 소요 시간이 증가합니다.

일반적으로 데이터 수집 단계는 다음의 3계층 시스템으로 구성됩니다.

  1. 원 데이터(Raw Data)는 대량의 데이터를 처리할 수 있는 데이터 레이크와 데이터 웨어하우스에 저장
  2. 데이터 레이크와 데이터 웨어하우스에서 원하는 데이터를 추출하여 데이터 마트를 구축
  3. 데이터 마트와 초 단위의 응답을 가지는 시각화 도구 연결

[그림 1] 3계층의 데이터 집계 시스템 [그림 1] 3계층의 데이터 집계 시스템

데이터 처리의 지연 - 지연이 적은 데이터 마트 작성을 위한 기초 지식

데이터 처리의 응답이 빠르다는 것은 대기 시간(latency)가 적다는 것을 의미합니다.

띠라서 지연이 적은 데이터베이스를 만들어야하는데요.

이를 달성하기 위한 방법 중 하나는 “모든 데이터에 메모리 추가”입니다.

이 경우 메모리가 부족하면 급격히 성능 저하가 될 수 있으므로 수억 레코드가 있다면 디바이스 I/O를 고려한 효율화가 필수입니다.

압축과 분산에 의해 지연 줄이기 - MPP 기술

압축은 데이터를 가능한 작게 줄이고 분산은 데이터를 여러 디스크에 분산해 데이터 로드의 지연을 줄이는 개념입니다.

이 두 가지 개념을 적용한 기술이 바로 MPP(Massive Parallel Processing)입니다.

멀티 코어를 활용해 디스크 I/O를 병렬로 처리하는데요.

Amazon의 Redshift나 Google의 Bigquery가 여기에 해당합니다.

데이터 집계에 최적화되어있어 데이터 웨어하우스와 데이터 분석 데이터베이스에서 특히 많이 사용합니다.


열 지향 데이터베이스 접근 - 칼럼을 압축하여 디스크 I/O 줄이기

우선 열 지향이 무슨 의미인지 짚고 넘어갑시다.

빅데이터로 취급하는 데이터는 디스크에 존재합니다.

열 지향(Column-Oriented)은 디스크에서 쿼리에 필요한 최소한의 데이터만 가져와 지연을 줄입니다.

이러한 열 지향 데이터베이스(Column-Oriented Database)는 주로 데이터 분석에 사용하는데 대표적으로 Teradata, Amazon Redshift 등이 있습니다.

반대로 행 지향 데이터베이스(Row-Oriented Database)는 업무 시스템 등에서 사용되는 일반적인 데이터베이스로 레코드 단위의 읽기와 쓰기에 최적화되어있습니다.

Oracle Database나 MySQL 등의 데이터베이스가 행 지향 데이터베이스에 속합니다.

처리량과 지연 시간

데이터 처리의 성능은 주로 처리량과 지연으로 표시합니다.

처리량(Throughput)은 일정 시간에 처리할 수 있는 데이터의 양을 의미합니다.

배치 처리 등 대규모 데이터 처리에서는 처리량을 중요하게 여깁니다.

지연(Delay)은 데이터 처리가 끝날 때까지의 대기 시간을 뜻합니다.

[그림 2] 처리량과 지연 시간의 관계 [그림 2] 처리량과 지연 시간의 관계

처리량과 지연이라는 두 지표를 모두 가져가는 것은 무척이나 어렵습니다.

데이터 웨어하우스나 데이터 레이크와 같은 시스템은 매우 높은 처리량을 보이지만 그만큼 지연 시간도 깁니다.

반면 데이터 마트는 지연 시간 감소에 특화되어 있지만 처리량이 적습니다.

처리량과 지연시간을 확보하기 위해서는 충분한 메모리와 디스크 I/O 절감이 필수입니다.

행 지향 데이터베이스 - 각 행이 디스크 상에 일련의 데이터로 기록된다

행 지향 데이터베이스는 테이블의 각 행을 하나의 덩어리로 저장합니다.

만약 새 레코드가 생성된다면 파일의 끝에 데이터를 추가하구요.

결과적으로 행 지향 데이터베이스는 매일 발생하는 대량의 트랙잭션을 긴 지연없이 처리합니다.

[그림 3] 행 지향 데이터베이스에 있어서의 데이터 이미지 [그림 3] 행 지향 데이터베이스에 있어서의 데이터 이미지

열 지향 데이터베이스 - 칼럼마다 데이터를 모아두기

반대로 열 지향 데이터베이스는 데이터를 컬럼 단위로 정리합니다.

따라서 집계는 빠르지만 저장이 느리다는 특징을 갖습니다.

또한 동일한 데이터타입을 묶어 저장하므로 압축되지 않은 행 지향 데이터베이스 대비 1/10 이하로 압축할 수 있습니다.

[그림 4] 열 지향 데이터베이스에 있어서의 데이터 이미지 [그림 4] 열 지향 데이터베이스에 있어서의 데이터 이미지


MPP 데이터베이스의 접근 방식 - 병렬화에 의해 멀티코어 활용하기

직전의 데이터베이스 접근 방식은 다음과 같은 특징을 가집니다.

  • 행 지향
    • 1개 쿼리가 1개 쓰레드로 동작
    • 많은 쿼리를 동시 실행해 여러 CPU 코어를 사용하지만 분산 처리하지 않음
    • 각 쿼리가 짧은 시간에 끝난다고 가정
  • 열지향
    • 1번의 쿼리 실행 시간 증가
    • 압축된 데이터 전개에 CPU 리소스가 필요하므로 멀티 코어를 사용한 고속화 필수

MPP의 경우 다음의 접근 방식을 보여줍니다.

  1. 하나의 쿼리를 다수의 작은 태스크로 분해
  2. 태스크를 가능한 병렬로 실행
  3. 처리 결과를 모아 최종 결과 계산

[그림 5] MPP의 분산처리 [그림 5] MPP의 분산처리

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

MPP를 사용한 데이터 집계는 쿼리의 병렬화를 통해 CPU 코어 수에 비레해 빨라집니다.

물론 디스크를 불러오는 과정에서 병목이 없도록 데이터 분산도 필요하구요.

MPP 구조상 고속화를 위해서는 CPU와 디스크를 모두 확장해야하는데요.

일부 제품에서는 하드웨어와 소프트웨어가 통합된 제품을 제공합니다.

한편, MPP 데이터베이스는 Hadoop과 함께 사용되는 대화형 쿼리 엔진으로도 채택됩니다.

데이터 자체는 분산 스토리지인 Hadoop에 저장하고 쿼리를 위해 MPP 데이터베이스를 이용하는 방식입니다.

다음은 관계형 데이터베이스, MPP 데이터베이스, 대화형 쿼리 엔진을 비교한 표입니다.

집계 시스템 종류스토리지 종류최적 레코드 수
RDB행 지향~수천만
MPP 데이터베이스열 지향(하드웨어 일체형)수억~
대화형 쿼리 엔진열 지향(분산 스토리지에 보관)수억~

리소스 소비 제한하기 - 열지향 스토리지 x MPP에 의한 고속화의 주의점

데이터 집계를 빠르게 하기 위해서는 쿼리의 리소스 사용량이 증가할 수 밖에 없습니다.

예를 들어 1개의 거대한 쿼리는 모든 사용자에 영향을 미치는데요.

이러한 과부하를 방지하고자 일부 MPP 데이터베이스는 시스템의 리소스를 제한할 수 있습니다.

하지만 해당 기능이 없을 경우 부하를 모니터링을 하면서 문제 발생 시 관리자에게 알리거나 강제 종료하는 동작이 필요합니다.


마무리하며

이번 글에서는 열 지향 스토리지와 MPP에 대해 살펴봤습니다.

행 지향 데이터베이스의 쿼리 지연을 줄이기 위해 기존의 행 지향 데이터베이스를 벗어난 열 지향 스토리지와 MPP가 등장합니다.

열 지향 스토리지는 필요한 컬럼만 가져오는 방식을 통해, MPP는 압축과 분산이라는 기술을 통해 지연을 줄입니다.

하지만 행 지향 데이터베이스는 대용량 처리가 가능하고 빠른 입출력이 가능하다는 장점을 가집니다.

따라서 현재의 요구사항에 맞는 스토리지를 조사하고 테스트해보면서 도입 여부를 검토하는 것이 바람직합니다.

현재 재직 중인 회사의 경우 MySQL과 Bigquery를 함께 사용 중이기에 더욱 와닿는 내용이었습니다.

이 글이 조금이나마 도움이 되셨으면 합니다.

감사합니다. 😀


참고 문헌

  • 니시다 케이스케, 빅데이터를 지탱하는 기술, 제이펍, 2018
This post is licensed under CC BY 4.0 by the author.

[Data] [빅데이터를 지탱하는 기술] 정리하기 - 2-1 크로스 집계의 기본

-

Comments powered by Disqus.