Machbase offers outstanding performance and dramatic powerful results
PERFORMANCE
Inputs: Over 1 Million EPS! Queries: Less Than a 1 Second!
Local server performance
AWS Performance
Input performance
EPS
Query performance
Time (seconds)
Edge
Fog
Q1: Elapsed time to retrieve a specific tag for 1 day
Q2: 1Average values per 60 seconds of a specific tag for 1 hour
Q3: 1Average values per 15 minutes of a specific tag for 1 day
Test environment
Item 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
Test results (input performance)
Item Edge Edition Fog Edition
Total count of data 400 million (400,000,000) (400,000,000) 5 billion (5,000,000,000)
Data loading time (sec) 3,900 seconds 5,057 seconds
Inputs per second (Event / Sec) 102,555 events /sec sec 1,012,771 events / sec
CPU usage during data entry 136% ~ 276% / (total 600%) 352% ~ 671% / (total 800%)
Memory usage during data entry RES 261MB ~ 293MB / (total 8GB) RES 6.4 ~ 8.4 GB / (total 32GB)
Disk Usage (GB) 18 GB /(32 GB total) 161 GB/(256 GB total)
Test results (query performance)
Edge Edition
Item SQL QUERY Results Time (seconds)
total count of data SELECT COUNT(*) FROM TAG; 400000000 0.001
min and max of time range for all data SELECT MIN(TIME), MAX(TIME) FROM TAG; 2018-01-01 00:00:00,
2018-01-03 07:33:19
0.012
min and max of time range for a specific tag 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
retrieve 1 tag for 1 day 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
retrieve 15 tags for 1 day 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
average values per second of 1 tag for 8 hours 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
sum values per minute of 1 tag for 1 hour 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
maximum values per hour of 1 tag for 1 day 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
average values per 15 seconds of 1 tag for 1 hour 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
average values per 30 seconds of 1 tag for 1 hour 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
average values per 60 seconds of 1 tag for 1 hour 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
average values per 5 minutes of 1 tag for 1 day 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
average values per 10 minutes of 1 tag for 1 day 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
average values per 15 minutes of 1 tag for 1 day 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
Item SQL QUERY Results Time (seconds)
total count of data SELECT COUNT(*) FROM TAG; 5000000000 0.001
min and max of time range for all data SELECCT MIN(TIME), MAX(TIME) FROM TAG; 2018-01-01 00:00:00,
2018-01-02 03:46:39
0.002
min and max of time range for a specific tag 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
retrieve 1 tag for 1 day 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
retrieve 15 tags for 1 day 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
average values per second of 1 tag for 8 hours 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
sum values per minute of 1 tag for 1 hour 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
maximum values per hour of 1 tag for 1 day 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
average values per 15 seconds of 1 tag for 1 hour 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
average values per 30 seconds of 1 tag for 1 hour 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
average values per 60 seconds of 1 tag for 1 hour 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
average values per 5 minutes of 1 tag for 1 day 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
average values per 10 minutes of 1 tag for 1 day 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
average values per 15 minutes of 1 tag for 1 day 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