Clickhouse : Test 3

Soumis par jpp le dim 04/09/2022 - 19:27

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.