infiniflux vs cassandra 비교 테스트 결과 20160928

12
InfiniFlux DBMS VS CASSANDRA 저장 검색 성능 테스트 결과 기술 문서(Technical Note) 2016-09-28 INFINIFLUX www.infiniflux.com

Upload: sungjin-kim

Post on 14-Feb-2017

155 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Infiniflux vs cassandra 비교 테스트 결과 20160928

InfiniFlux DBMS VS CASSANDRA

저장 및 검색 성능 테스트 결과

기술 문서(Technical Note)

2016-09-28

INFINIFLUX

www.infiniflux.com

Page 2: Infiniflux vs cassandra 비교 테스트 결과 20160928

목 차

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

Page 3: Infiniflux vs cassandra 비교 테스트 결과 20160928

3. 테스트 총평 ......................................................................... 8

Page 4: Infiniflux vs cassandra 비교 테스트 결과 20160928

개요

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),

Page 5: Infiniflux vs cassandra 비교 테스트 결과 20160928

개요

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

Page 6: Infiniflux vs cassandra 비교 테스트 결과 20160928

성능 테스트

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

Page 7: Infiniflux vs cassandra 비교 테스트 결과 20160928

성능 테스트

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

Page 8: Infiniflux vs cassandra 비교 테스트 결과 20160928

성능 테스트

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

Page 9: Infiniflux vs cassandra 비교 테스트 결과 20160928

성능 테스트

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%';

Page 10: Infiniflux vs cassandra 비교 테스트 결과 20160928

성능 테스트

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

Page 11: Infiniflux vs cassandra 비교 테스트 결과 20160928

테스트 총평

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 조건의 경우

속도가 느려지는 현상이 발생

Page 12: Infiniflux vs cassandra 비교 테스트 결과 20160928

테스트 총평

9

본 테스트를 통하여 InfiniFlux 와 CASSANDRA 의 성능을 비교 하였다.

본 테스트 결과 CASSANDRA는 데이터를 분석하기에는 쿼리문 사용에 제약 사항이 많지만

조건절을 사용하여 특정 데이터를 찾는 용도의 단순 저장소로 사용하기에 적합한 구성을

가지고 있다.

반면에 InfiniFlux 는 적은 하드웨어 자원에서도 빠른 입력과 다양한 분석 쿼리 사용이

가능하여 단순 저장소 용도뿐만 아니라 데이터를 빠르게 분석하는 다양한 용도에 사용이

가능하다.