안녕하세요. 마크베이스입니다.
많은 분들께서 마크베이스의 데이터 압축률에 대해서 문의를 주시는데요.
오늘은 데이터 압축률이 어느정도인지 알아보도록 하겠습니다.
마크베이스가 제공하고 있는 자료형에는 Varchar / Integer / Binary / Text 등 다양하게 지원하고 있는데요.
이 번 내용에서는 이진형태의 데이터(0과 1)를 담을 수 있는 Binary 와 Text 타입의 데이터가 얼마나 압축이 되는지 살펴보겠습니다.
우선, Binary 와 Text 타입에 대해 간단히 설명드리자면
모두 최대 64 MB 길이까지 입력이 가능하고 Binary 는 인덱스 생성이 불가하지만, Text 는 키워드(KEYWORD) 인덱스 생성이 가능합니다.
테스트를 위해서 모두 인덱스를 생성하지 않고 진행하였습니다.
1. 테스트 개요
동일한 데이터의 입력에 따른 압축률과 랜덤하게 입력되는 상황에서의 압축률을 테스트하며
총 7개의 테스트를 진행합니다.
1) 테스트 종류
테스트 종류 | 테스트 내용 | 총 입력 건수 | 입력 데이터 크기 |
Test1 | Binary 자료형에 동일한 데이터 입력(하나의 레코드 크기 8,204 byte) | 80만 건 | 6,563,200,000 byte (6.5 GB) |
Test2 | Binary 자료형에 랜덤한 데이터 입력(하나의 레코드 크기 8,204 byte) | 80만 건 | 6,563,200,000 byte (6.5 GB) |
Test3 | Binary 자료형에 랜덤한 데이터 입력(하나의 레코드 크기 65,632 byte) | 80만 건 | 52,505,600,000 byte (52 GB) |
Test4 | Text 자료형에 동일한 데이터 입력(하나의 레코드 크기 8,204 byte) | 80만 건 | 6,563,200,000 byte (6.5 GB) |
Test5 | Text 자료형에 랜덤한 데이터 입력(하나의 레코드 크기 8,204 byte) | 80만 건 | 6,563,200,000 byte (6.5 GB) |
Test6 | Text 자료형에 랜덤한 데이터 입력(하나의 레코드 크기 65,632 byte) | 80만 건 | 52,505,600,000 byte (52 GB) |
Test7(보너스 테스트) | Binary 자료형에 랜덤한 데이터 입력(하나의 레코드 크기 400,000 byte) | 400만 건 | 1,600,000,000,000 byte (1.5 TB) |
2) 테이블 스키마
테이블 스키마는 다음과 같습니다.
참고로, 테이블 생성은 매 테스트마다 재 생성해주셔야합니다.
테이블 스키마(Binary 자료형)
CREATE TABLE COMPRESS_TEST ( DATA binary );
테이블 스키마(Text 자료형)
CREATE TABLE COMPRESS_TEST ( DATA text );
2. 테스트 결과
* 각 테스트 별 압축률 그래프

* 각 테스트 별 Binary 와 Text 데이터 압축률 비교

* 테스트 압축률 결과 표
테스트 종류 | 데이터 입력 사이즈(A) | 실제 입력된 DB 사이즈(B) | 압축률, 계산식 : 100 – (B * 100 / A) |
Test1 | 6,563,200,000 byte (6.5 GB) | 1,904,083,753 byte (1.8 GB) | 70.9 % |
Test2 | 6,563,200,000 byte (6.5 GB) | 2,498,047,785 byte (2.4 GB) | 61.9 % |
Test3 | 52,505,600,000 byte (52 GB) | 21,089,456,937 byte (20 GB) | 59.8 % |
Test4 | 6,563,200,000 byte (6.5 GB) | 1,904,095,529 byte (1.8 GB) | 70.9 % |
Test5 | 6,563,200,000 byte (6.5 GB) | 2,502,180,137 byte (2.4 GB) | 61.8 % |
Test6 | 52,505,600,000 byte (52 GB) | 21,117,386,537 byte (20 GB) | 59.7 % |
Test7 | 1,600,000,000,000 byte (1.5 TB) | 648,439,121,533 byte (648 GB) | 59.5 % |
테스트를 진행한 결과, Binary / Text 압축률 차이는 없었으며 약 60% 이상의 압축률을 보여주었습니다.
* 여러 상황에 따라 압축률이 달라 질 수 있음을 유념하시기 바랍니다.
3. 테스트 해보기
테스트 환경 및 준비물
1) 테스트 환경
아래 환경과 동일한 구성일 필요는 없으나, OS 는 리눅스가 필요합니다.
항목 | 내용 |
Machbase 버전 | Fog Edition |
CPU | Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz |
Memory | 252 GB |
Disk | NVMe SSD 1.1 TB |
OS | CentOS Linux release 7.6.1810 (Core) |
2) 준비물
마크베이스 Database와 Test 파일이 필요합니다.
[Machbase 다운로드]
Machbase 다운로드 사이트(클릭) 에 접속하셔서 아래와 같은 화면에서 정보 입력 후 Submit & Download 을 누르시면,

아래 화면에서 Machbase 를 다운받으실 수 있습니다. (Version 은 최신 버전으로 변경될 수 있습니다.)

[Machbase 설치]
Machbase 메뉴얼 사이트(클릭) 에 접속하셔서 Linux 환경 설치 준비와 Tarball 설치 항목에 기술된 내용대로
따라하시면 어렵지않게 설치하실 수 있습니다.

[Test 파일 다운로드]
github 를 통해 다운로드합니다.
– github 웹페이지를 통한 다운로드
https://github.com/MACHBASE/CompressTest 에서 접속하셔서 아래와 같이 Download 하실 수 있습니다.

– 콘솔 명령(git)을 통한 다운로드
또는 아래와 같은 콘솔창 명령을 통해 다운받으실 수 있습니다.
git clone https://github.com/MACHBASE/CompressTest.git
그러면 CompressTest 라는 디렉토리가 다운받아집니다.

테스트 실행방법
아래와 같이 컴파일을 하여 실행파일을 생성합니다.
make ↵
컴파일이 완료되었으면 다음과 같이 각 테스트 실행 방법으로 테스트를 진행하시면 됩니다.
테스트 종류 | 테스트 실행 방법 |
Test1 | 1) 테스트 파일 위치로 이동 cd BinaryCompress_Test12) 테이블 생성 (스키마 파일 이용) machsql -u sys -p manager -s localhost -P 5656 -f ../1.create_table_binary.sql3) 테스트 실행 text_binary.txt 파일 확인 ./bincompress1 -s 20200701 -a 1 -n 10 -P 5656 –disable-delay4) 실행 완료후 DB 사이즈 측정 du -bs [DB 파일 위치] 별도 설정을 안하셨다면, DB 파일 위치는 machbase_home/dbs 입니다. |
Test2 | 1) 테스트 파일 위치로 이동 cd BinaryCompress_Test22) 테이블 생성 (스키마 파일 이용) machsql -u sys -p manager -s localhost -P 5656 -f ../1.create_table_binary.sql3) 테스트 실행 ./bincompress2 -s 20200701 -a 1 -n 10 -P 5656 –disable-delay –raw-size=82044) 실행 완료후 DB 사이즈 측정 du -bs [DB 파일 위치] 별도 설정을 안하셨다면, DB 파일 위치는 machbase_home/dbs 입니다. |
Test3 | 1) 테스트 파일 위치로 이동 cd BinaryCompress_Test22) 테이블 생성 (스키마 파일 이용) machsql -u sys -p manager -s localhost -P 5656 -f ../1.create_table_binary.sql3) 테스트 실행 ./bincompress2 -s 20200701 -a 1 -n 10 -P 5656 –disable-delay –raw-size=656324) 실행 완료후 DB 사이즈 측정 du -bs [DB 파일 위치] 별도 설정을 안하셨다면, DB 파일 위치는 machbase_home/dbs 입니다. |
Test4 | 1) 테스트 파일 위치로 이동 cd TextCompress_Test12) 테이블 생성 (스키마 파일 이용) machsql -u sys -p manager -s localhost -P 5656 -f ../2.create_table_text.sql3) 테스트 실행 text_binary.txt 파일 확인 ./txtcompress1 -s 20200701 -a 1 -n 10 -P 5656 –disable-delay4) 실행 완료후 DB 사이즈 측정 du -bs [DB 파일 위치] 별도 설정을 안하셨다면, DB 파일 위치는 machbase_home/dbs 입니다. |
Test5 | 1) 테스트 파일 위치로 이동 cd TextCompress_Test22) 테이블 생성 (스키마 파일 이용) machsql -u sys -p manager -s localhost -P 5656 -f ../2.create_table_text.sql3) 테스트 실행 ./txtcompress2 -s 20200701 -a 1 -n 10 -P 5656 –disable-delay –raw-size=82044) 실행 완료후 DB 사이즈 측정 du -bs [DB 파일 위치] 별도 설정을 안하셨다면, DB 파일 위치는 machbase_home/dbs 입니다. |
Test6 | 1) 테스트 파일 위치로 이동 cd TextCompress_Test22) 테이블 생성 (스키마 파일 이용) machsql -u sys -p manager -s localhost -P 5656 -f ../2.create_table_text.sql3) 테스트 실행 ./txtcompress2 -s 20200701 -a 1 -n 10 -P 5656 –disable-delay –raw-size=656324) 실행 완료후 DB 사이즈 측정 du -bs [DB 파일 위치] 별도 설정을 안하셨다면, DB 파일 위치는 machbase_home/dbs 입니다. |
Test7(보너스 테스트) | 1) 테스트 파일 위치로 이동 cd BinaryCompress_Test22) 테이블 생성 (스키마 파일 이용) machsql -u sys -p manager -s localhost -P 5656 -f ../1.create_table_binary.sql3) 테스트 실행 ./bincompress2 -s 20200701 -a 1 -n 50 -P 5656 –disable-delay –raw-size=4000004) 실행 완료후 DB 사이즈 측정 du -bs [DB 파일 위치] 별도 설정을 안하셨다면, DB 파일 위치는 machbase_home/dbs 입니다. |
맺음말
Binary 와 Text 자료형에 대한 마크베이스 Database의 데이터 압축률을 알 수 있는 시간이었습니다.
기회가 된다면, 다른 자료형의 데이터 압축률에 대해서도 알아보도록 하겠습니다.
다음번엔 더 유익한 정보로 찾아뵙도록 하며, 이것으로 이진형태 데이터의 압축률 테스트를 마치도록 하겠습니다.
감사합니다.