시작하며

2장은 크게 아래 세 가지 정도로 요약할 수 있다.

  1. 크로스 집계란 무엇인가
  2. 열 지향 스토리지와 MPP 아키텍처
  3. 시각화에 적합한 데이터 마트

빅데이터 탐색의 핵심 개념

크로스 집계란 무엇인가?

테이블 중에서는 그 모양에 따라 사람이 보기 편한 구조로 만들어진 테이블이 있다. 행과 열에는 데이터 분류 기준이 들어가고, 행과 열이 교차하는 지점에는 숫자 데이터가 들어간다. 이런 테이블을 Cross Table이라고 한다. 전체적인 집계를 한눈에 파악하기 굉장히 편리하여 데이터 분석을 할 때 유용하게 사용할 수 있다.

하지만 Cross Table은 데이터베이스가 다루기 쉬운 구조가 아니다. 행 추가는 간단하지만 열 추가는 힘들기 때문이다. 반면 행 방향으로 증가하는 테이블인 Transaction Table은 열이 고정되어 있으므로 RDB에서 다루기 쉬운 구조다. 따라서 업무 테이블인 Transaction Table을 사람이 보기 편한 구조인 Cross Table로 변환해야 할 필요성이 생겼고, 이 변환하는 과정을 Cross Tabulation(크로스 집계)이라 부른다.

Tip

Look up Table 트랜젝션 테이블에 새로운 항목을 추가하는 것이 아니라, 다른 테이블과 결합하고자 하는 경우에는 룩업 테이블을 사용한다. 데이터 분석 용도에 따라 참고하는 테이블이므로 얼마든지 바뀔 수 있다.

열 지향 스토리지와 MPP 아키텍처

결국 이런 크로스 집계(Cross Tabulation) 작업의 필요성이 커짐에 따라 집계 효율이 높은 데이터베이스가 필요해졌다. 데이터의 양이 증가함에 따라 메모리에 다 올리지도 못하는 양의 데이터를 집계해야 했지만, 데이터 마트에서 시각화 도구(크로스 집계)로의 응답 시간은 수초 안에 이루어지기를 기대했다. 거대한 데이터셋에서 크로스 집계의 지연을 막을 수 있는 방법은 무엇인가?

  1. 모든 데이터를 메모리에 올린다.

    • RDB는 천만 record 정도는 일반적인 RDB가 적당하며, 많은 사용자가 사용하는 실제 운영환경의 데이터 마트로 적당하다.
    • 하지만 RDB는 메모리가 부족해지면 급격하게 성능이 저하된다. 수억 record를 초과하는 데이터 집계에서는 항상 디바이스 I/O가 발생한다고 가정한다면 다른 방법이 필요하다.
  2. 고속화를 위해서는 압축분산을 사용한다.

    • 가능한 작게 압축하고, 여러 곳으로 분산하여 처리한다.
    • 분산된 데이터를 읽기 위해서는 멀티코어를 활용하여 디스크 I/O를 병렬처리한다. 이런 아키텍처를 MPP(Massive Parallel Processing: 대규모 병렬 처리)라 부르며, 대표적인 MPP 데이터베이스에는 Redshift, BigQuery가 있다.

압축분산이라는 방법을 위해 열 지향 스토리지(Column-Oriented Storage)MPP(Massive Parallel Processing)라는 개념이 도입된다.

1. 압축 - 열 지향 스토리지(Column-Oriented Storage)

데이터의 대부분은 디스크상에 있으므로, 지연을 최소화하기 위해서는 쿼리에 필요한 최소한의 데이터만을 가져와야 한다. 이때 칼럼 단위로의 데이터 압축이 이용된다.

Info

행 지향 데이터베이스(row-oriented database)와의 차이점

  • 행 지향 데이터베이스는 각 행을 하나의 덩어리로 하여 디스크에 저장할 때 꼬리를 물고 이어서 쭉 쓰게 되므로 고속으로 쓰는 것이 가능하다.
  • 따라서 행 지향 데이터베이스는 읽을 때의 효율성을 위해 인덱스를 생성하며, 적절한 인덱스를 사용하도록 하는 것이 중요하다.
  • 하지만 데이터 분석에서는 어떤 칼럼을 기준으로 사용할지 모르기 때문에 데이터를 미리 칼럼 단위로 정리해 둔다.
  • 같은 칼럼에는 보통 비슷한 데이터가 나열되는 경우도 많으므로 데이터 압축률 역시 좋아진다.

2. 분산 - MPP(Massive Parallel Processing)

열 지향 스토리지 개념으로 압축률을 높였다면 다음은 MPP 아키텍처를 활용한 병렬화 차례다. 행 지향 데이터베이스에서 실행되는 쿼리는 하나의 쿼리가 하나의 스레드에서 수행되므로 분산처리될 수 없다. 반면 열 지향 데이터베이스에서는 하나의 쿼리를 다수의 작은 태스크로 분해하고 이를 가능한 한 병렬로 실행한다. 쿼리가 잘 병렬화된다면 MPP를 이용한 데이터 집계는 CPU 코어 수에 비례하여 고속화된다. 다만 디스크로부터 로드가 병목화되지 않도록 데이터가 고르게 분산되어 있어야 한다.

Tip

Hadoop과 MPP 아키텍처와의 차이점

  • 데이터 처리 방식: Hadoop은 맵리듀스를 통한 배치 처리에 중점을 두는 반면, MPP는 복잡한 SQL 쿼리와 대화형 분석에 강점을 가진다.
  • 데이터 유형: Hadoop은 비구조화된 데이터에 적합하며, MPP는 구조화된 데이터 처리에 최적화되어 있다.
  • 최적화 및 성능: Hadoop은 수평적 확장성과 고장 내성에 중점을 두는 반면, MPP는 쿼리 성능과 처리 속도에 중점을 둔다.

Hadoop에서도 이런 MPP 데이터베이스를 사용할 수 있도록 추가적인 접근법이 만들어지고 있다. 대표적인 프로젝트로 다음과 같은 엔진들이 있다.

  1. Apache Hive - Hadoop 위에 구축된 데이터 웨어하우스 시스템으로, HiveQL 쿼리 언어를 사용한다. 기본적으로 MapReduce를 사용하여 쿼리를 처리하지만, 최근 버전에서는 Tez나 Spark와 같은 더 효율적인 실행 엔진을 사용하여 MPP 스타일의 처리를 할 수 있다.
  2. Apache Impala - 클라우데라에서 개발한 MPP SQL 쿼리 엔진으로, HDFS나 HBase에 저장된 데이터에 대해 실시간 쿼리 기능을 제공한다.
  3. Apache Drill - Hadoop과 NoSQL 데이터베이스에서 SQL 쿼리를 실행할 수 있는 분산 SQL 쿼리 엔진이다.
  4. Presto - 페이스북에 의해 개발된 분산 SQL 쿼리 엔진으로, Hadoop HDFS, Apache Hive 등과 통합하여 사용할 수 있다.

Info

열 지향 방식을 사용하지 않는 MPP 데이터베이스도 있다.

  1. Teradata - 오랜 역사를 가진 MPP 데이터 웨어하우스 솔루션으로, 전통적으로 행 지향 방식을 사용했으나 최신 버전에서는 열 지향 처리 기능도 일부 제공한다.
  2. Greenplum Database - 오픈소스 MPP 데이터베이스로, PostgreSQL을 기반으로 한다. 기본적으로 행 지향 데이터베이스다.
  3. Aster Data (Teradata의 일부) - 복잡한 분석과 대규모 데이터 처리를 위한 MPP 데이터베이스 시스템으로, 고유의 행 지향 처리 방식을 유지하고 있다.

시각화에 적합한 데이터 마트

마지막으로 시각화에 적합한 데이터 마트를 잘 만들려면 어떻게 해야 할까?

OLAP(Online Analytical Processing)은 RDB와 다르게, 다차원 모델 구조를 MDX(Multi dimensional expressions)와 같은 쿼리 언어로 집계한다. 이런 데이터 분석을 위해 만들어진 다차원 데이터를 OLAP Cube라고 하며, 이를 크로스 집계한다. MPP에서는 다차원 모델이 없으므로 이를 대신하여 비정규화 테이블을 사용한다.

과거에는 데이터 마트를 만들 때, 팩트 테이블(트랜젝션 테이블)의 키값은 최대한 줄이고, 이를 여러 디멘션 테이블(마스터 테이블)로 옮겨 사용했었다. 하지만 열 지향 스토리지(Column-Oriented Storage)의 발전으로 칼럼 수가 아무리 늘어나도 성능에 영향을 주지 않게 되면서, 처음부터 팩트 테이블에 모든 칼럼을 포함해두고 쿼리 실행 때는 테이블 결합을 하지 않는 방향으로 바뀌게 되었다.

Info

DW와 데이터 마트의 구조상 차이 데이터 웨어하우스의 구조는 스타 스키마가 적합하며, 데이터를 축적하는 과정에서는 팩트테이블 + 디멘션 테이블로 분리하고, 마트를 만드는 과정에서 비정규화(거대한 팩트테이블) 테이블을 만들게 된다.

정리하며

이번 장의 내용은 다음과 같이 정리된다.

  • 업무 테이블인 Transaction Table을 사람이 보기 편한 Cross Table로 빠르게 변환(크로스 집계)해주기 위해 열 지향 스토리지, MPP와 같은 기술들이 등장했다.
  • 빠르게 변환한다는 것은 1) 메모리상에서 처리, 2) 압축하여 처리, 3) 분산하여 처리한다는 의미를 내포한다.
  • 데이터 마트는 열 지향 스토리지(Column-Oriented Storage)의 발전으로 비정규화하여 거대한 팩트 테이블을 만들어 사용한다.

참고문헌

  • [출처] 니시다 케이스케(Keisuke Nishida), ⌜빅데이터를 지탱하는 기술(BIG DATA WO SASAERU GIJUTSU)⌟, 장성두 옮김, 주식회사 제이펍
  • https://0x0fff.com/hadoop-vs-mpp/