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 entre MariaDB et Clickhouse car les fonctions de gestion des dates ont des syntaxes légèrement différentes (dommage !).

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 ici 158 fois plus rapide.