Infiniflux vs cassandra 비교 테스트 결과 20160928
-
Upload
sungjin-kim -
Category
Technology
-
view
155 -
download
3
Transcript of Infiniflux vs cassandra 비교 테스트 결과 20160928
InfiniFlux DBMS VS CASSANDRA
저장 및 검색 성능 테스트 결과
기술 문서(Technical Note)
2016-09-28
INFINIFLUX
www.infiniflux.com
목 차
1. 개요 ...................................................................................... 1
1.1 H/W 환경 ................................................................................... 1
1.2 S/W 환경 ................................................................................... 1
1.3 테스트 대상 데이터 .................................................................. 1
1.3.1 InfiniFlux 테이블............................................................................... 1
1.3.2 CASSANDRA 테이블 ....................................................................... 2
1.4 대상 데이터 파일 ..................................................................... 2
2. 성능 테스트 ......................................................................... 3
2.1 데이터 입력 .............................................................................. 3
2.1.1 InfiniFlux 데이터 입력 ...................................................................... 3
2.1.2 CASSANDRA 데이터 입력 .............................................................. 3
2.1.3 InfiniFlux vs CASSANDRA ............................................................... 3
2.2 DISK 저장 용량 ........................................................................ 4
2.3 시스템 자원 사용 ..................................................................... 4
2.3.1 CPU 사용률 ..................................................................................... 4
2.3.2 Memory 사용량 ................................................................................ 5
2.4 쿼리 테스트 .............................................................................. 5
3. 테스트 총평 ......................................................................... 8
개요
1
1. 개요
1.1 H/W 환경
CPU : Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz * 8 CORE
MEM : 32GB
DISK: HDD 3.6 TB * 5
1.2 S/W 환경
OS : CentOS 6.4
DB : InfiniFlux 3.0.1.9094, CASSANDRA 3.7
1.3 테스트 대상 데이터
InfiniFlux 에서 타사 비교 테스트 용 데이터와 테이블을 사용
일반적인 weblog에 대하여 추가 칼럼을 생성하여 데이터 생성
시간, IP, port, 이벤트 내용으로 구성
샘플 데이터
2015-05-20 06:00:00,219.229.142.218,2762,7.234.88.67,593,62,GET
/twiki/bin/view/Main/MikeMannix HTTP/1.1,200,3686
2015-05-20 06:00:11,100.46.183.122,11989,227.106.13.91,4709,50,GET
/mailman/listinfo/administration HTTP/1.1,200,6459
2015-05-20 06:00:11,214.153.107.182,7586,5.114.66.53,5213,6,GET
/twiki/bin/view/Main/SpamAssassin HTTP/1.1,200,4081
1.3.1 InfiniFlux 테이블
테이블 생성
create table sampletable
(
AT1 datetime property (MINMAX_CACHE_SIZE=1048576) not null,
SRCIP ipv4,
SCRPORT integer,
DSTIP ipv4,
DSTPORT integer,
PROTOCOL short,
eventlog varchar(1024),
개요
2
eventcode short,
eventsize long
);
Index 생성
create index idx2 on sampletable(srcip) index_type lsm max_level=3;
create index idx3 on sampletable(dstip) index_type lsm max_level=3;
create keyword index idx4 on sampletable(eventlog) index_type lsm max_level=3;
- 테이블의 컬럼은 각 데이터 타입에 맞게 생성
- datetime 컬럼의 경우 minmax_cache 설정
- 조건 검색을 위한 index 생성
1.3.2 CASSANDRA 테이블
테이블 생성
CREATE TABLE sampletable (
at timestamp,
srcip varchar,
srcport int,
dstip varchar,
dstport int,
ptocol smallint,
eventlog varchar,
eventcode smallint,
eventsize bigint,
PRIMARY KEY (eventlog,at,srcip,dstip)
);
- 테이블의 컬럼은 각 데이터 타입에 맞게 생성
- Primary key 값에서 eventlog 칼럼을 partition key 로 사용
- 검색을 위한 index 생성은 Primary key 생성으로 대체
1.4 대상 데이터 파일
샘플 데이터 (1억건 13GB)
-rw-rw-r--. 1 demo demo 13045863917 May 20 11:15 sampletable100m.csv
성능 테스트
3
2. 성능 테스트
2.1 데이터 입력
2.1.1 InfiniFlux 데이터 입력
InfiniFlux 에 데이터를 입력 하는 방법은 InfiniFlux 에서 제공하는 ifluxloader tool을 사용하여
CSV 파일을 테이블에 입력 하는 방법을 사용
파일명 대상 테이블 건수 용량 시간 EPS
sampletable100m.csv sampletable 1억건 13GB 4.96 min 336,022
- 전체 1억건에 대하여 초당 33만개의 데이터가 입력.
2.1.2 CASSANDRA 데이터 입력
CASSANDRA 에 데이터를 입력 하는 방법은 cqlsh 프로그램에서 copy 명령어를 사용하여
CSV 파일을 테이블에 입력 하는 방법을 사용
파일명 대상 테이블 건수 용량 시간 EPS
sampletable100m.csv sampletable 1억건 13GB 39.41 min 41,986
- 전체 1억건에 대하여 초당 4만개의 데이터 입력
2.1.3 InfiniFlux vs CASSANDRA
- 테스트 결과 InfiniFlux 의 입력 속도가 CASSANDRA 대비 8배 정도 빠름
41,986
336,022
0
100000
200000
300000
400000
1
초당 입력 속도
CASSANDRA
InfiniFlux
성능 테스트
4
2.2 DISK 저장 용량
InfiniFlux 와 CASSANDRA 모두 데이터를 저장 할 때 압축하여 저장 하기 때문에
DISK사용에 큰 차이는 없다.
- 13GB 의 데이터에 대하여 InfiniFlux 는 5GB, CASSANDRA는 5.3GB 의 저장 공간을
사용한다.
2.3 시스템 자원 사용
시스템 리소스 측정은 dstat 로 1초 간격으로 측정 후 저장
시스템 리소스 측정은 개별 프로세스가 아닌 전체 시스템 사용량으로 측정
2.3.1 CPU 사용률
CASSANDRA 의 경우 데이터 입력 시에 평균 92% 의 CPU를 사용하는 것으로 측정
InfiniFlux 는 평균 24% 의 CPU 를 사용
5.3
5.0
4.8
5
5.2
5.4
1
저장
용량
GB
저장 용량
CASSANDRA
InfiniFlux
0
50
100
150
11
06
21
13
16
42
15
26
63
17
36
84
19
46
10
51
11
56
12
61
13
66
14
71
15
76
16
81
17
86
18
91
19
96
21
01
22
06
23
11사
용률
%
시간 (초)
CPU 사용률
CASSADRA
InfinFlux
성능 테스트
5
2.3.2 Memory 사용량
- CASSANDRA 의 메모리 사용량은 데이터 입력 시 평균 11GB를 사용하며, CASSANDRA
를 종료 하기 전까지 사용 메모리 감소가 없음.
- InfiniFlux 는 평균 1.5GB를 사용하였으며, 상황에 따라 메모리 사용이 유동적으로 변함.
2.4 쿼리 테스트
CASSANDRA 쿼리의 경우 GROUP BY 가 지원 하지 않고 ORDER BY 및 LIMIT 의
경우도 제약 사항이 큼.
CASSANDRA 쿼리는 기본 WHERE 조건만을 사용하여 결과를 출력하는 형태만
지원하여 쿼리 테스트는 단순 쿼리만으로 테스트
전체 데이터 건수 카운트
select count(*) from mykeyspace.sampletable;
시간 기준 검색
select count(*)
from mykeyspace.sampletable
where at <= '2015-05-21 12:20:00' and
at >= '2015-05-21 12:10:00' ALLOW FILTERING;
0.0
10.0
20.01
111
221
331
441
551
661
771
881
991
1101
1211
1321
1431
1541
1651
1761
1871
1981
2091
2201
2311
크기
GB
시간 (초)
Memory 사용량
CASSADRA
InfinFlux
성능 테스트
6
복합 조건 쿼리
select count(srcip), min(srcip), sum(eventsize)
from mykeyspace.sampletable
where at <= '2015-05-21 12:20:00' and
at >= '2015-05-21 12:10:00' and
srcip <= '192.168.0.0' and
eventcode = 200 ALLOW FILTERING;
GROUP BY 쿼리
select srcip,count(srcip)
from mykeyspace.sampletable
where at <= '2015-05-21 12:20:00' and
at >= '2015-05-21 12:10:00' and
eventcode = 200
group by srcip ALLOW FILTERING;
ORDER BY 쿼리
select srcip
from mykeyspace.sampletable
where at <= '2015-05-21 12:20:00' and
at >= '2015-05-21 12:10:00' and
eventcode = 200
order by srcip ALLOW FILTERING;
Limit offset 쿼리
select srcip
from mykeyspace.sampletable
where at <= '2015-05-21 12:20:00' and
at >= '2015-05-21 12:10:00' and
eventcode = 200
limit 10,10 ALLOW FILTERING;
Like 검색 쿼리
select count(srcip)
from mykeyspace.sampletable
where eventlog like '%robots%';
성능 테스트
7
수행 결과
InfiniFlux CASSANDRA 결과값(건수)
전체 카운트 0.001 초 807.101 초 1억건
시간 검색 0.103 초 3.348 초 260,000
복합 조건 0.740 초 1.037 초 152,046
GROUP BY 0.281 초 실행 불가 75
ORDER BY 3.261 초 실행 불가 207,866
LIMIT offset 0.088 초 실행 불가 10
Like(search) 1.447 초 실행 불가 4,000,497
테스트 총평
8
3. 테스트 총평
InfiniFlux VS CASSANDRA 테스트 결과 요약
InfiniFlux CASSANDRA 비고
원본 데이터 sampletable100m.csv (1억건, 13GB) 테스트용 샘플데이터
CPU 사용률(%) 24% 92% 100% = 8 core 전체
3.8배 적게 사용
메모리 사용량(GB) 1.5GB 11GB 7.3배 적게 사용
DISK 사용량(GB) 5GB 5.3GB 동일하게 압축 저장
초당 입력 속도(EPS) 336,022 EPS 41,968 EPS 8배 빠름
쿼리
전체 카운트 0.001 초 807.101 초 결과건수 1억건
시간 검색 0.103 초 3.348 초 결과건수 26만건
복합 검색 0.740 초 1.037 초 결과건수 15만건
GROUP BY 0.281 초 실행 불가 CASSANDRA 의 경우
쿼리문이 제약적으로
지원됨
ORDER BY 3.261 초 실행 불가
LIMIT offset 0.088 초 실행 불가
Like(search) 1.447 초 실행 불가
- InfiniFlux 와 CASSANDRA는 기본적으로 SQL 문을 사용하는 것이 동일하지만,
기본적인 내부 설계에서 많은 차이가 발생
- InfiniFlux 는 Column 형 DB를 기본 아키텍처로 사용하지만, CASSANDRA는 key-values
저장소 방식을 사용하고 있어 두 DB의 성능 및 사용방법에 많은 차이가 있음
- 데이터를 저장하는 방식의 차이로 InfiniFlux 는 기존 DB와 같이 Table schema 를 만들거
구조에 맞게 데이터를 입력 해야 하지만 CASSANDRA는 컬럼 내부에 다른 컬럼을
저장 할 수 있거나 일부 칼럼만 데이터 저장이 가능
- 이런 저장 방식의 차이로 인하여 현재 CASSANDRA는 GROUP BY 쿼리 자체가 사용이
불가능 하며, ORDER BY 와 LIMIT 사용에 제약이 있음.
- 또한 LIKE 구문과 같이 특정 키워드 검색이 불가능.
- CASSANDRA 의 쿼리 속도 의 경우 결과 건수가 증가 할수록 속도가 느려지는 특성이
있어 쿼리를 사용 할 때 Equal 조건의 경우는 빠른 반응을 보이지만 Range 조건의 경우
속도가 느려지는 현상이 발생
테스트 총평
9
본 테스트를 통하여 InfiniFlux 와 CASSANDRA 의 성능을 비교 하였다.
본 테스트 결과 CASSANDRA는 데이터를 분석하기에는 쿼리문 사용에 제약 사항이 많지만
조건절을 사용하여 특정 데이터를 찾는 용도의 단순 저장소로 사용하기에 적합한 구성을
가지고 있다.
반면에 InfiniFlux 는 적은 하드웨어 자원에서도 빠른 입력과 다양한 분석 쿼리 사용이
가능하여 단순 저장소 용도뿐만 아니라 데이터를 빠르게 분석하는 다양한 용도에 사용이
가능하다.