Zero to Hero

분석계 처리는 무엇이 어려운가?

1. 데이터베이스는 데이터를 안전하고 빠르게 저장하는 것도 중요하지만, 결국 저장된 데이터를 어떻게 사용할지가 근본적인 존재 이유다.

2. 그러나 "분석 자체에 너무 시간이 걸려 현실적인 시간 내에 처리를 완료할 수 없다"라는 문제가 발생한다.

3. 그 이유는 RDBMS 자체가 DWH 같은 형태의 작업 형태에 적합하지 않기 때문이다.

 

4. 테이블은 크게 2개로 분류할 수 있다. 팩트 테이블, 디멘션 테이블이 그것이다.

5. 디멘션 테이블은 상대적으로 데이터의 삽입이나 갱신이 적은 테이블을 의미한다. 예를 들어 "고객", "협력사" 등의 테이블은 데이터의 갱신이 자주 이루어질 필요가 없다. 하지만 이 테이블의 데이터는 다른 테이블의 FK로 사용된다

6. 팩트 테이블은 축적계 데이터 테이블이다. 예를 들어서 Order라는 테이블이 있다면 고객마다 추가되는 주문 데이터가 계속 쌓일 것이다. 

7. 즉 팩트 테이블은 다른 테이블에 비해서 데이터의 양이 매우 비대하고, 팩트 테이블의 데이터는 디멘션 테이블의 칼럼들을 요구한다.

 

8. 문제는 RDBMS는 이 팩트 테이블의 수많은 컬럼들의 일부를 다루는 것이 구조적으로 매우 어렵다.

9. 쿼리를 생각해면 내가 필요한 컬럼은 몇 개가 안되지만, 내가 그 칼럼에 접근하려면 일단 그 ROW 자체를 접근해야 한다.

10. 인덱스를 설계하려고 해도 분석계 쿼리의 문제점인 "어떠한 관점으로 분석할 것인지 처음부터 명확하게 되고 있어 그 이외의 관점은 존재할 수 없다"는 점에서 패턴에 가져올 수 있는 것이 적다는 것이다.

11. 또 분석계 쿼리에서 검색에 인덱스가 사용되었다 하더라도 일치하는 데이터가 너무 많아 대량의 랜덤 액세스가 발생한다. 수만 건 수준에서 대량의 레코드가 매치되면 HDD의 랜덤 읽기로 인해 FULL SCAN보다 늦어지는 일이 발생한다.

 

해결법

1. 열 지향 데이터베이스(Column-Oriented Database) 사용하기

2. 말 그대로 row 가 아닌 col 기반의 데이터 처리를 하는 데이터베이스다.

 

장점

1. 필요한 열만 액세스 되기 때문에 I/O 효율이 높다.

2. 압축 효율이 좋다. 예를 들어  UNSIGNED INTEGER형인 경우에는 4바이트로 0~40억의 값을 취급할 수 있지만, "구입 가격"이라는 열이라면 1000원 ~ 20000원의 범위로 대다수가 해당되며 나머지는 약간만 존재할 것이다.

3. 로드 처리가 고속이다. B+Tree 인덱스 구조를 사용하지 않는 제품의 열 지향 데이터베이스의 경우 대량으로 데이터를 투입해도 업데이트 성능이 떨어지기 어렵다는 장점이 있다.

 

단점

1. 기본 키 검색 등 좁은 범위의 처리가 느리다. --> RDBMS와 상반된 점

2. 제품 자체가 보편적이지 않다(==성숙한 제품이 아니다), 유지 및 보수 기법이 좋지 못하다.

 

출처 및 참고문헌

데이터베이스를 지탱하는 기술
국내도서
저자 : 마쯔노부 요시노리 / 정인식역
출판 : 제이펍 2012.11.18
상세보기
profile

Zero to Hero

@Doljae

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!