|
數奇雜記 |
|
|
김진숙 기술보고서 2003-04-17 (2007년 6월 22일 재수정)
Embedded Storage Engine인 Berkeley DB 는 기본적으로 KEY-DATA 쌍을 저장하고 관리하는 기능만을 제공한다. 데이타에 대한 해석은 전적으로 사용자에게 맡기게 된다. 데이타 부분을 압축할 경우에는 어떤 장점이 있는 지 간단한 실험을 해보았다. 실험에 사용한 데이터는 PIR-NREF라는 데이터베이스로서 1,159,203건의 서열 정보를 가지고 있으며 길이는 문서당 평균 402바이트이다. KEY는 4바이트 정수형으로 지정하였다. 실험은 Pentium Xeon 2.4GHz Dual CPU, 메모리 4GB, Ultra160 SCSI HDD를 장착한 리눅스 장비에서 수행하였다.
그림 1. 압축 수준에 따른 DB 크기와 적재 시간 |
그림 1은 gzip 압축 수준에 따른 데이터베이스의 적재속도와 크기를 비교하고 있다. 적재시간은 압축된 DB 크기와 비례하는 것으로 보인다. 따라서 압축이 많이 될 수록 적재 속도가 증가한다고 할 수 있는데 이는 적재의 가장 큰 병목은 디스크 쓰기에 있다고 해석할 수 있다. 만약 GZIP을 압축 알고리즘으로 사용한다면 compression level 3인 경우가 가장 적당하다고 보인다. 하지만 이 경우 적재 시간은 압축하지 않은 경우(Normal) 대비 17.7%가 증가한다 (368초에서 433초로). 디스크를 사용하는 공간의 면에서는 30.7% 감소한다.
데이터를 찾을 수 없지만 색인을 압축을 했을 경우 압축하지 않은 경우에 비해서 검색속도가 크게 향상되었던 것으로 기억된다. GZIP의 경우 알고리즘적으로 압축지향적이기 때문에 압축률은 높지만 속도는 느리다는 단점이 있다. 따라서 색인의 경우 정수압축에 대한 좋은 압축 알고리즘을 사용한다면 디스크 접근을 크게 줄임으로써 검색뿐만 아니라 적재/색인에서도 속도향상을 기대할 수 있을 것으로 본다.
| 문의나 조언은 메일로... | 저작권 |