Clickhouse : Test 3

Le but de cet ordre SQL est de trouver les adresses IP qui ont contacté sans succès la machine, ceci est identifié par une valeur 0 dans le champ OUT_BYTES et qui ont "tenté" des connexions sur au moins 10 ports différents. Ceci peut arriver si la demande a été bloquée par le firewall (drop). 
L'ordre SQL est légèrement différent car les fonctions de gestion des dates ont des syntaxes légèrement différentes.

select IP_SRC_ADDR as SRC,IP_DST_ADDR as DST, 
    count(distinct L4_DST_PORT) as NPORT 
from flowsv4 
-- mariadb    where FIRST_SWITCHED > DATE_SUB(now(), interval 20 day) 
-- clickhouse where FIRST_SWITCHED > DATE_SUB(DAY,20,now()) 
and IP_SRC_ADDR not between '192.168.1.1' 
                and '192.168.3.255' 
and L4_DST_PORT < 15000 
group by  SRC,DST 
having NPORT > 10 
order by SRC;

La différence n'est pas énorme mais il faut y faire attention ... 
Et maintenant passons aux faits.

1) Clickhouse.

┌─SRC─────────────┬─DST─────────┬─NPORT─┐ 
│ 103.138.109.220 │ 192.168.1.2 │   105 │ 
│ 103.56.61.144   │ 192.168.1.2 │    12 │ 
│ 104.156.155.13  │ 192.168.1.2 │  1216 │ 
│ 104.168.53.114  │ 192.168.1.2 │    23 │ 
   ...... 
│ 94.232.45.241   │ 192.168.1.2 │    68 │ 
│ 95.161.131.235  │ 192.168.1.2 │    19 │ 
└─────────────────┴─────────────┴───────┘ 
377 rows in set. Elapsed: 0.120 sec. Processed 7.92 million rows, 395.57 MB (66.10 million rows/s., 3.30 GB/s.)

2) MariaDB.

+-----------------+-------------+-------+ 
| SRC             | DST         | NPORT | 
+-----------------+-------------+-------+ 
| 103.138.109.220 | 192.168.1.2 |   105 | 
| 103.56.61.144   | 192.168.1.2 |    12 | 
| 104.156.155.13  | 192.168.1.2 |  1216 | 
| 104.168.53.114  | 192.168.1.2 |    23 | 
    ...... 
| 94.232.45.241   | 192.168.1.2 |    68 | 
| 95.161.131.235  | 192.168.1.2 |    19 | 
+-----------------+-------------+-------+ 
377 rows in set (19,137 sec)

3) Comparaison. 
Le rapport entre 19 secondes et 0.12 est frappant, Clickhouse est 158 fois plus rapide.