개발관련 도서/대규모 서비스를 지탱하는 기술

5. 압축 프로그래밍

prden 2021. 5. 9. 09:37

책의 6~10장에서는 애플리케이션 개발자를 대상으로 대규모 데이터를 처리하는 핵심 요소를 파악하도록 하기 위해 지금까지 소개했던 각종 방법을 자세히 들여다본다. 6장에서는 과제로서 압축 프로그래밍, 7,8장에서는 알고리즘, 데이터의 실용화 9장, 10장에서는 검색엔진을 만든다. 

1. 정수 데이터를 컴팩트하게 가져가기 

1) 과제 : 정수열이 기록된 CSV를 바이너리로 해서 콤팩트하게 가져가기 : 정수의 부호화를 연구해서 텍스트로 152MB인 CSV 데이터를 절반 이하의 크리로 처리할 수 있도록 하라. 물론 원본을 복원할 수 있어야 한다. 

 

2) 출제의도 : 큰데이터를 압축해서 콤팩트하게 만들면 디스크 I/O를 줄일 수 있다. (큰 데이터를 다룰 때 '압축'을 항상 염두에 두어라) 또한  RDBMS에서 보통 정수를 고정길이로 가져가기 위해 아무래도 크기가 늘어나게 되는데 이를 적당히 작은 크기로 줄여서 처리하는 방법을 알 수 있게 된다. 

 

3) 정수열 압축 방법이 쓰이는 곳 : 머신러닝, 데이터마이닝, 검색엔진 개발 이런 곳에서 거대한 정수열을 다룰 일이 많다. 

 

2. VB Code와 속도감 

VB Code = Variable Byte Code , 정수열을 압축하는 알고리즘 (감마 부호, 델타부호, Golomb부호, Interpolate보간 부호 등)

VB Code는 정수의 부호화 방법 중 하나이다.