-- ============================================================================= -- Table classifications - Dashboard Bot Detector -- ============================================================================= -- Stocke les classifications des IPs pour l'apprentissage supervisé -- -- Usage: -- clickhouse-client --host test-sdv-anubis.sdv.fr --port 8123 \ -- --user default --password < deploy_classifications_table.sql -- -- ============================================================================= USE mabase_prod; -- ============================================================================= -- Table pour stocker les classifications des IPs -- ============================================================================= CREATE TABLE IF NOT EXISTS mabase_prod.classifications ( -- Identification ip String, -- Classification label LowCardinality(String), -- "legitimate", "suspicious", "malicious" tags Array(String), -- Tags associés comment String, -- Commentaire de l'analyste -- Métriques pour ML confidence Float32, -- Confiance de la classification (0-1) features String, -- JSON avec toutes les features -- Métadonnées analyst String, -- Nom de l'analyste created_at DateTime DEFAULT now() -- Date de classification ) ENGINE = MergeTree() PARTITION BY toYYYYMM(created_at) ORDER BY (created_at, ip) SETTINGS index_granularity = 8192; -- ============================================================================= -- Index pour accélérer les recherches par IP -- ============================================================================= CREATE INDEX IF NOT EXISTS idx_classifications_ip ON TABLE mabase_prod.classifications (ip) TYPE minmax GRANULARITY 1; -- ============================================================================= -- Vue pour les statistiques de classification -- ============================================================================= CREATE VIEW IF NOT EXISTS mabase_prod.view_classifications_stats AS SELECT label, count() AS total, uniq(ip) AS unique_ips, avg(confidence) AS avg_confidence, min(created_at) AS first_classification, max(created_at) AS last_classification FROM mabase_prod.classifications GROUP BY label; -- ============================================================================= -- FIN -- ============================================================================= -- -- Vérifier que la table est créée : -- SELECT count() FROM mabase_prod.classifications; -- -- Voir les statistiques : -- SELECT * FROM mabase_prod.view_classifications_stats; -- -- =============================================================================