PERFORMANCE
그 어떤 오픈소스보다 Agile 한 설계 드라마틱하고 파워풀한 결과를 통해 마크베이스의 성능을 확인하세요
100만 EPS 입력, Under Second 조회!
Local 서버 성능
AWS 성능
입력성능
EPS
조회성능
시간(초)
Edge
Fog
Q1: 하루동안의 데이터 중 특정 태그 1개를 추출하는데 걸린 시간
Q2: 1시간 범위 특정 태그의 60초당 평균값
Q3: 1일 범위 특정 태그의 15분당 평균값
테스트 환경
항목 Edge Device Fog Server
CPU ARMv8 Processor rev 0 (v8l) 6 Cores Intel(R) Xeon(R) CPU E3-1231 v3 @ 3.40GHz 4 Cores ( 8 Threads )
Memory 8 GB 32 GB
Disk 32GB eMMC 1EA 256GB SSD 1EA
OS Linux Ubuntu 16.04.5 LTS ( Kernel 4.4.38-tegra ) CentOS 6.6 ( Kernel 2.6.32-504.el6.x86_64 )
NIC 1Gbps 1Gbps
Machbase Machbase Edge 5.5 Release Machbase Fog 5.5 Release
테스트 결과(입력성능)
항목 Edge Edition Fog Edition
전체 데이터 건수 4억 건 (400,000,000) 50억 건 (5,000,000,000)
데이터 로딩 시간(sec) 3,900초 5,057 초
초당 입력 건수 (Event/Sec) 102,555 건/초 1,012,771 건/초
데이터 입력 중 CPU 사용률 136% ~ 276% / (총 600%) 352% ~ 671% / (총 800%)
데이터 입력 중 메모리 사용량 RES 261MB ~ 293MB / (총 8GB) RES 6.4 ~ 8.4 GB / (총 32GB)
디스크 사용량(GB) 18 GB / (총 32GB) 161 GB / (총 256GB)
테스트 결과(조회성능)
Edge Edition
항목 SQL QUERY 결과건수 시간(초)
전체 건수 SELECT COUNT(*) FROM TAG; 400000000 0.001
데이터 시간 범위 최소, 최대값 SELECT MIN(TIME), MAX(TIME) FROM TAG; 2018-01-01 00:00:00,
2018-01-03 07:33:19
0.012
특정 태그시간 범위 최소,최대값 SELECT MIN(TIME), MAX(TIME) FROM TAG WHERE NAME = ‘EQ0^TAG567’; 2018-01-01 00:00:00,
2018-01-03 07:33:19
0.237
1일 시간 범위 1개 태그 추출 SELECT COUNT(*) FROM(SELECT * FROM TAG WHERE NAME = 'EQ0^TAG287'
AND TIME BETWEEN TO_DATE('2018-01-01 00:00:00')
AND TO_DATE('2018-01-01 23:59:59'));
172,799 0.195
1일 시간 범위 15개 태그 추출 SELECT COUNT(*) FROM ( SELECT * FROM TAG WHERE NAME IN
(('EQ0^TAG17', 'EQ0^TAG27','EQ0^TAG37', 'EQ0^TAG47', 'EQ0^TAG57', 'EQ0^TAG127',
'EQ0^TAG137', 'EQ0^TAG287', 'EQ0^TAG398', 'EQ0^TAG467', 'EQ0^TAG455', 
'EQ0^TAG512', 'EQ0^TAG677', 'EQ0^TAG834', 'EQ0^TAG934' )
AND TIME BETWEEN TO_DATE('2018-01-01 00:00:00') AND TO_DATE('2018-01-01 23:59:59') );
2,591,985 1.339
8시간 범위 특정 태그의 초당 평균값 추출 SELECT /*+ ROLLUP(TAG, SEC) */ TIME,
VALUE FROM TAG WHERE NAME = ''EQ0^TAG187' AND TIME BETWEEN TO_DATE('2018-01-01 12:00:00')
AND TO_DATE('2018-01-01 19:59:59') ORDER BY TIME;
28,800 0.259
1시간 범위 특정 태그의 분당 합계 추출 SELECT /*+ ROLLUP(TAG, MIN, SUM */ TIME,
VALUE FROM TAG WHERE NAME = 'EQ0^TAG678' AND TIME BETWEEN TO_DATE('2018-01-01 20:00:00')
AND TO_DATE('2018-01-01 20:59:59') ORDER BY TIME;
60 0.003
1일 동안 특정 태그의 시간당 최대값 추출 SELECT /*+ ROLLUP(TAG, HOUR, MAX) */ TIME,
VALUE FROM TAG WHERE NAME = 'EQ0^TAG24' AND TIME BETWEEN TO_DATE('2018-01-01 00:00:00')
AND TO_DATE('2018-01-01 23:59:59') ORDER BY TIME;
24 0.003
1시간 범위 특정 태그의 15초당 평균값 추출 SELECT DATE_TRUNC('second', time, 15) time,
avg(value) avg FROM (SELECT /*+ ROLLUP(TAG, SEC) */ TIME,
VALUE FROM TAG WHERE NAME = ''EQ0^TAG587' AND TIME BETWEEN TO_DATE('2018-01-01 12:00:00')
AND TO_DATE('2018-01-01 12:59:59')) GROUP BY TIME ORDER BY TIME;
240 0.064
1시간 범위 특정 태그의 30초당 평균값 추출 SELECT DATE_TRUNC('second', time, 30) time,
avg(value) avg FROM (SELECT /*+ ROLLUP(TAG, SEC) */ TIME,
VALUE FROM TAG WHERE NAME = ''EQ0^TAG287' AND TIME BETWEEN TO_DATE('2018-01-01 12:00:00')
AND TO_DATE('2018-01-01 12:59:59')) GROUP BY TIME ORDER BY TIME;
120 0.043
1시간 범위 특정 태그의 60초당 평균값 추출 SELECT DATE_TRUNC('second', time, 60) time,
avg(value) avg FROM (SELECT /*+ ROLLUP(TAG, SEC) */ TIME,
VALUE FROM TAG WHERE NAME = ''EQ0^TAG987' AND TIME BETWEEN TO_DATE('2018-01-01 12:00:00')
AND TO_DATE('2018-01-01 12:59:59')) GROUP BY TIME ORDER BY TIME;
60 0.038
1일 범위 특정 태그의 5분당 평균값 추출 SELECT DATE_TRUNC('minute', time, 5) time,
avg(value) avg FROM (SELECT /*+ ROLLUP(TAG, MIN) */ TIME,
VALUE FROM TAG WHERE NAME = ''EQ0^TAG387' AND TIME BETWEEN TO_DATE('2018-01-01 00:00:00')
AND TO_DATE('2018-01-01 23:59:59')) GROUP BY TIME ORDER BY TIME;
288 0.863
1일 범위 특정 태그의 10분당 평균값 추출 SELECT DATE_TRUNC('minute', time, 10) time,
avg(value) avg FROM (SELECT /*+ ROLLUP(TAG, MIN) */ TIME,
VALUE FROM TAG WHERE NAME = ''EQ0^TAG687' AND TIME BETWEEN TO_DATE('2018-01-01 00:00:00')
AND TO_DATE('2018-01-01 23:59:59')) GROUP BY TIME ORDER BY TIME;
144 0.860
1일 범위 특정 태그의 15분당 평균값 추출 SELECT DATE_TRUNC('minute', time, 15) time,
avg(value) avg FROM (SELECT /*+ ROLLUP(TAG, MIN) */ TIME,
VALUE FROM TAG WHERE NAME = ''EQ0^TAG487' AND TIME BETWEEN TO_DATE('2018-01-01 00:00:00')
AND TO_DATE('2018-01-01 23:59:59')) GROUP BY TIME ORDER BY TIME;
96 0.863
Fog Edition
항목 SQL QUERY 결과건수 시간(초)
전체 건수 SELECT COUNT(*) FROM TAG; 5000000000 0.001
데이터 시간 범위 최소, 최대값 SELECCT MIN(TIME), MAX(TIME) FROM TAG; 2018-01-01 00:00:00,
2018-01-02 03:46:39
0.002
특정 태그시간 범위 최소,최대값 SELECCT MIN(TIME), MAX(TIME) FROM TAG WHERE NAME = ‘EQ0^TAG567’; 2018-01-01 00:00:00,
2018-01-02 03:46:39
0.055
1일 시간 범위1개 태그 추출 SELECT COUNT(*) FROM ( SELECT * FROM TAG WHERE NAME = 'EQ0^TAG287'
AND TIME BETWEEN TO_DATE('2018-01-01 00:00:00')
AND TO_DATE('2018-01-01 23:59:59'));
431,996 0.094
1일 시간 범위15개 태그 추출 SELECT COUNT(*) FROM ( SELECT * FROM TAG WHERE NAME IN
('EQ0^TAG17', 'EQ0^TAG27', 'EQ0^TAG37', 'EQ0^TAG47', 'EQ0^TAG57', 'EQ0^TAG127',
'EQ0^TAG137', 'EQ0^TAG287', 'EQ0^TAG398', 'EQ0^TAG467', 'EQ0^TAG455', 
'EQ0^TAG512', 'EQ0^TAG677', 'EQ0^TAG834', 'EQ0^TAG934' )
AND TIME BETWEEN TO_DATE('2018-01-01 00:00:00') AND TO_DATE('2018-01-01 23:59:59') );
6,479,940 0.674
8시간 범위특정 태그의 초당 평균값 추출 SELECT /*+ ROLLUP(TAG, SEC) */ TIME,
VALUE FROM TAG WHERE NAME = ''EQ9^TAG9187' AND TIME BETWEEN TO_DATE('2018-01-01 12:00:00')
AND TO_DATE('2018-01-01 19:59:59') ORDER BY TIME;
28,800 0.187
1시간 범위 특정 태그의 분당 합계 추출 SELECT /*+ ROLLUP(TAG, MIN, SUM */ TIME,
VALUE FROM TAG WHERE NAME = 'EQ5^TAG5678' AND TIME BETWEEN TO_DATE('2018-01-01 20:00:00')
AND TO_DATE('2018-01-01 20:59:59') ORDER BY TIME;
60 0.004
1일 동안 특정 태그의 시간당 최대값 추출 SELECT /*+ ROLLUP(TAG, HOUR, MAX) */ TIME,
VALUE FROM TAG WHERE NAME = 'EQ1^TAG1024' AND TIME BETWEEN TO_DATE('2018-01-01 00:00:00')
AND TO_DATE('2018-01-01 23:59:59') ORDER BY TIME;
24 0.000
1시간 범위 특정 태그의 15초당 평균값 추출 SELECT DATE_TRUNC('second', time, 15) time,
avg(value) avg FROM (SELECT /*+ ROLLUP(TAG, SEC) */ TIME,
VALUE FROM TAG WHERE NAME = ''EQ7^TAG7587' AND TIME BETWEEN TO_DATE('2018-01-01 12:00:00')
AND TO_DATE('2018-01-01 12:59:59')) GROUP BY TIME ORDER BY TIME;
240 0.008
1시간 범위 특정 태그의 30초당 평균값 추출 SELECT DATE_TRUNC('second', time, 30) time,
avg(value) avg FROM (SELECT /*+ ROLLUP(TAG, SEC) */ TIME,
VALUE FROM TAG WHERE NAME = ''EQ8^TAG8287' AND TIME BETWEEN TO_DATE('2018-01-01 12:00:00')
AND TO_DATE('2018-01-01 12:59:59')) GROUP BY TIME ORDER BY TIME;
120 0.008
1시간 범위 특정 태그의 60초당 평균값 추출 SELECT DATE_TRUNC('second', time, 60) time,
avg(value) avg FROM (SELECT /*+ ROLLUP(TAG, SEC) */ TIME,
VALUE FROM TAG WHERE NAME = ''EQ9^TAG9987' AND TIME BETWEEN TO_DATE('2018-01-01 12:00:00')
AND TO_DATE('2018-01-01 12:59:59')) GROUP BY TIME ORDER BY TIME;
60 0.007
1일 범위 특정 태그의 5분당 평균값 추출 SELECT DATE_TRUNC('minute', time, 5) time,
avg(value) avg FROM (SELECT /*+ ROLLUP(TAG, MIN) */ TIME,
VALUE FROM TAG WHERE NAME = ''EQ5^TAG5387' AND TIME BETWEEN TO_DATE('2018-01-01 00:00:00')
AND TO_DATE('2018-01-01 23:59:59')) GROUP BY TIME ORDER BY TIME;
288 0.275
1일 범위 특정 태그의 10분당 평균값 추출 SELECT DATE_TRUNC('minute', time, 10) time,
avg(value) avg FROM (SELECT /*+ ROLLUP(TAG, MIN) */ TIME,
VALUE FROM TAG WHERE NAME = ''EQ4^TAG4387' AND TIME BETWEEN TO_DATE('2018-01-01 00:00:00')
AND TO_DATE('2018-01-01 23:59:59')) GROUP BY TIME ORDER BY TIME;
144 0.264
1일 범위 특정 태그의 15분당 평균값 추출 SELECT DATE_TRUNC('minute', time, 15) time,
avg(value) avg FROM (SELECT /*+ ROLLUP(TAG, MIN) */ TIME,
VALUE FROM TAG WHERE NAME = ''EQ5^TAG5387' AND TIME BETWEEN TO_DATE('2018-01-01 00:00:00')
AND TO_DATE('2018-01-01 23:59:59')) GROUP BY TIME ORDER BY TIME;
96 0.258