Posting

Machbase의 최신 소식을 지금 만나보세요

Machbase 데이터 압축률 측정결과

안녕하세요. 마크베이스입니다.


많은 분들께서 마크베이스의 데이터 압축률에 대해서 문의를 주시는데요.

오늘은 데이터 압축률이 어느정도인지 알아보도록 하겠습니다.

마크베이스가 제공하고 있는 자료형에는 Varchar / Integer / Binary / Text 등 다양하게 지원하고 있는데요. 

이 번 내용에서는 이진형태의 데이터(0과 1)를 담을 수 있는 Binary 와 Text 타입의 데이터가 얼마나 압축이 되는지 살펴보겠습니다.


우선, Binary 와 Text 타입에 대해 간단히 설명드리자면

모두 최대 64 MB 길이까지 입력이 가능하고 Binary 는 인덱스 생성이 불가하지만, Text 는 키워드(KEYWORD) 인덱스 생성이 가능합니다. 

테스트를 위해서 모두 인덱스를 생성하지 않고 진행하였습니다.

1. 테스트 개요

동일한 데이터의 입력에 따른 압축률과 랜덤하게 입력되는 상황에서의 압축률을 테스트하며
총 7개의 테스트를 진행합니다.

1) 테스트 종류

테스트 종류테스트 내용총 입력 건수입력 데이터 크기
Test1Binary 자료형에 동일한 데이터 입력(하나의 레코드 크기 8,204 byte)80만 건6,563,200,000‬ byte (6.5 GB)
Test2Binary 자료형에 랜덤한 데이터 입력(하나의 레코드 크기 8,204 byte)80만 건6,563,200,000‬ byte (6.5 GB)
Test3Binary 자료형에 랜덤한 데이터 입력(하나의 레코드 크기 65,632 byte)80만 건52,505,600,000‬ byte (52 GB)
Test4Text 자료형에 동일한 데이터 입력(하나의 레코드 크기 8,204 byte)80만 건6,563,200,000‬ byte (6.5 GB)
Test5Text 자료형에 랜덤한 데이터 입력(하나의 레코드 크기 8,204 byte)80만 건6,563,200,000‬ byte (6.5 GB)
Test6Text 자료형에 랜덤한 데이터 입력(하나의 레코드 크기 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. 테스트 결과

* 각 테스트 별 압축률 그래프

compress ratio.png

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

compress ratio diff.png

* 테스트 압축률 결과 표

테스트 종류데이터 입력 사이즈(A)실제 입력된 DB 사이즈(B)압축률, 계산식 : 100 – (B * 100 / A)
Test16,563,200,000‬ byte (6.5 GB)1,904,083,753‬ byte (1.8 GB)70.9 %
Test26,563,200,000‬ byte (6.5 GB)2,498,047,785‬ byte (2.4 GB)61.9 %
Test352,505,600,000‬ byte (52 GB)21,089,456,937 byte (20 GB)59.8 %
Test46,563,200,000‬ byte (6.5 GB)1,904,095,529 byte (1.8 GB)70.9 %
Test56,563,200,000‬ byte (6.5 GB)2,502,180,137‬ byte (2.4 GB)61.8 %
Test652,505,600,000‬ byte (52 GB)21,117,386,537‬ byte (20 GB)59.7 %
Test71,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
CPUIntel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz
Memory252 GB
DiskNVMe SSD 1.1 TB
OSCentOS Linux release 7.6.1810 (Core)

2) 준비물

마크베이스 Database와 Test 파일이 필요합니다.

[Machbase 다운로드]

Machbase 다운로드 사이트(클릭) 에 접속하셔서 아래와 같은 화면에서 정보 입력 후 Submit & Download 을 누르시면,

machbase download 1.png

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

machbase download 2.png

[Machbase 설치]

Machbase 메뉴얼 사이트(클릭) 에 접속하셔서 Linux 환경 설치 준비와 Tarball 설치 항목에 기술된 내용대로 

따라하시면 어렵지않게 설치하실 수 있습니다.

machbase install.png

[Test 파일 다운로드]

github 를 통해 다운로드합니다.

– github 웹페이지를 통한 다운로드

https://github.com/MACHBASE/CompressTest 에서 접속하셔서 아래와 같이 Download 하실 수 있습니다.

github 1.png

– 콘솔 명령(git)을 통한 다운로드

또는 아래와 같은 콘솔창 명령을 통해 다운받으실 수 있습니다.

git clone https://github.com/MACHBASE/CompressTest.git

그러면 CompressTest 라는 디렉토리가 다운받아집니다.

github 2.png

테스트 실행방법

아래와 같이 컴파일을 하여 실행파일을 생성합니다.

make ↵

컴파일이 완료되었으면 다음과 같이 각 테스트 실행 방법으로 테스트를 진행하시면 됩니다.

테스트 종류테스트 실행 방법
Test11) 테스트 파일 위치로 이동
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 입니다.
Test21) 테스트 파일 위치로 이동
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 입니다.
Test31) 테스트 파일 위치로 이동
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 입니다.
Test41) 테스트 파일 위치로 이동
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 입니다.
Test51) 테스트 파일 위치로 이동
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 입니다.
Test61) 테스트 파일 위치로 이동
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의 데이터 압축률을 알 수 있는 시간이었습니다.

기회가 된다면, 다른 자료형의 데이터 압축률에 대해서도 알아보도록 하겠습니다. 

다음번엔 더 유익한 정보로 찾아뵙도록 하며, 이것으로 이진형태 데이터의 압축률 테스트를 마치도록 하겠습니다.

감사합니다.

연관 포스트

Deep Anomaly Detection in Time Series (2) : 이상 감지 모델

개요 안녕하세요, 마크베이스의 Cloud개발본부 연구원 양창은입니다. 지난 게시글 Deep Anomaly Detection in Time Series (1) : Time Series Data에서는 시계열 데이터와 이상치(Anomaly)의 종류에 대해 알아보았습니다. 그리고

IIoT를 위한 Data Lake – machlake

Data Lake 란, 대규모의 다양한 원시 데이터 세트를 기본 형식으로 저장하는 데이터 리포지터리 유형입니다. 원시 데이터는 특정 목적을 위해 처리되지 않은 데이터를 뜻합니다. 산업 IoT