Book/빅데이터를 지탱하는 기술

빅데이터의 탐색 2 - 2. 열 지향 스토리지에 의한 고속화

쟈누이 2020. 6. 21. 22:43
반응형

- 대량의 데이터를 신속하게 집계하려면, 미리 데이터를 집계에 적합한 형태로 변환해야 한다. 

 

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

데이터의 양이 증가할 수록 집계하는데 시간이 길어진다. 이는 작업의 효율을 떨어뜨리며, 전체적으로는

모든 작업이 느려지는 원인이 된다.

 

데이터의 수집단계에서는 위 사항은 우선순위로 고려하지 않아도 되지만, DB( 데이터 레이크, 데이터 웨어하우스 ) 

에서 데이터를 추출하여 분석하는 단계에서는 위 문제를 해결하는 것이 매우 중요하다.

 

1) 데이터의 처리 지연

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

 

데이터 지연이 적은 데이터베이스를 만드는 방법은 두가지가 있다.

 

첫째, 모든 데이터를 메모리에 올리는 것

- 가장 간단한 방법이며, 적은양의 데이터를 올리는 것은 큰 문제가 되지 않는다

 

둘째, RDB에 데이터를 저장한다.

- RDB는 많은 동시접속이 일어나도 속도가 느려지지 않아 좋으며, 처리에 지연이 적어 데이터 마트로는

  특히 좋은 성능을 보인다.

- 하지만 메모리가 부족하면 급격히 성능이 저하되는 단점이 있다.

 

2) 압축과 분산에 의한 지연 줄이기

- 데이터를 가능한 작게 압축하고, 이를 여러 디스크에 분산함으로써 데이터 로드에 따른 지연을 줄여야 한다.

- 이를 위해, 멀티코어를 활용하여 디스크 I/O를 병렬처리하는 것이 효과적이다.

- 대량의 데이터를 분석하기 위한 DB에서 널리 사용된다.

- 대표적인 예로 Amzaon Redshift, Google Bigquery 가 있다. 

이를 통틀어 MPP(Massive Parallel Processing : 대규모 병렬처리)라고 부르며, 데이터 집계에 최적화되어 있다. 

 

2. 열 지향 데이터베이스  접근 

- 칼럼을 압축하여 디스크 I/O 줄이기

 

효율적인 데이터 압축을 위해 사용되는 방법이 '칼럼 단위로의 데이터 압축' 이다. 

일반적으로 DB는 레코드 단위의 읽고 쓰기에 최적화되어 있고, 이를 행 지향 데이터베이스라고 부른다.

대표적으로 Oracle, MySQL 과 같은 일반적인 RDB는 모두 행 지향 데이터베이스이다.

 

반대로 데이터 분석에 사용되는 DB는 칼럽 단위 집계에 최적화되어 있으며, 열 지향 DB로 불린다.

대표적으로 Teradata 와 Amazon Redshift 등이 있다.

 

1) 행 지향 데이터베이스

- 각 행이 디스크 상에 일련의 데이터로 기록

테이블의 각 행을 하나의 덩어리로 디스크에 저장하는 것이다. 그러면 새로운 레코드 추가 시, 파일 끝에 레코드를 추가해주기만 하면 되므로 빠른 추가가 가능하다.

 

매일 발생하는 대량의 트렌젝션을 지연없이 처리할 수 있고, 데이터 추가를 효율적으로 할 수 있다는 것이

행 지향 데이터베이스의 특징이다.

행 지향 데이터베이스에서는 데이터 검색의 고속화를 위해 인덱스를 만든다. 

따라서 적절한 인덱스가 사용되도록 튜닝하는 것이 중요하다.

 

2) 열 지향 데이터베이스

- 칼럼마다 데이터 모아두기

열 지향 데이터베이스는 데이터를 미리 칼럼 단위로 정리해 둠으로써 필요한 컬럼만을 로드하여 디스크 I/O 를 줄인다. 

열 지향 데이터베이스는 데이터 압축 효율이 우수하며, 

같은 칼럼에는 종종 유사한 데이터가 나열된다. 

열 지향 DB는 압축되지 않은 행 지향 DB와 비교하면 1/10 이하로 압축이 가능하다.

 

 

3. MPP 데이터베이스의 접근 방식

- 병렬화에 의해 멀티 코어 활용하기

 

MPP 아키텍처에 의한 데이터 처리의 병렬화는 쿼리 지연을 줄일 수 있는 다른 방법이 될 수 있다.

행 지향 데이터베이스의 경우, 행으로 정리되어 있는 데이터를 읽기 때문에 각 쿼리는 짧은 시간에

끝나므로, 쿼리 분산처리의 상황은 가정하지는 않지만, 

 

열 지향 데이터베이스의 경우 디스크에서 칼럼으로 처리된 대량의 데이터를 읽기 때문에

1번 쿼리 실행 시간이 길어진다.

 

또한, 압축괸 데이터의 전개 등으로 CPU 리소스를 필요로 하므로 멀티 코어를 활용하여 고속화하는 것이 좋다.

MPP에서는 하나의 쿼리를 다수의 작은 테스크로 분리하고 이를 가능한 한 병렬로 실행한다.

 

예를 들어, 1억개의 레코드로 이루어진 합( sum( ) ) 을 계산하기 위해 그것을 10만 레코드로

구분하여 1000개의 테스크로 나누는 것이다. 각 테스크는 독립적으로 10만 레코드의 합계를

집계해 마지막에 모든 결과를 모아 총 합계를 계산한다.

MPP 는 구조상, 고속화를 위해 CPU와 디스크 모두를 균형 있게 늘려야 한다. 따라서,

일부 제품은 하드웨어와 소프트웨어가 통합된 제품으로 제공된다.

 

이처럼 하드웨어 수준에서 데이터 집계에 최적화된 DBMPP 데이터베이스라고 한다.

MPP의 아키텍처는 하둡과 함께 사용되는 대화형 쿼리엔진으로도 채택되고 있으며,

이 경우 데이터를 저장하는 것은 분산 스토리지의 역할이다.

 

그러나 데이터를 열 지향으로 압축하지 않는 한 MPP 데이터베이스와 동등한 성능은 되지 못한다.

MPP 데이터베이스와 대화형 쿼리 엔진 중 어느 쪽을 선택할지는 때에 따라 다르다.

 

시스템의 안정성과 서포트 체제의 측면에서는 상용 MPP 데이터베이스가 오랜 실적이 있지만,

Hadoop 과의 궁합을 고려하면 편리성은 대화형 쿼리 엔진 쪽이 탁월하다.

반응형