Nei financial services i sistemi di market data si dividono di solito in due livelli: quello real-time, che serve il flusso live con latenze da microsecondi, e quello storico, l’archivio di ogni giornata passata usato per research, backtesting, transaction-cost analysis e ricostruzione regolatoria. Il tier storico è anche il posto più a basso rischio per provare un nuovo database, perché non tocca il percorso di trading live. In un post tecnico, Mark Needham di ClickHouse carica i tick data reali dall’archivio pubblico di Binance e mostra come ClickHouse li archivi a basso costo e li interroghi con SQL standard.
Storage columnar e compressione 19x
ClickHouse memorizza i dati per colonne, applicando codec specifici: dictionary encoding per le colonne a bassa cardinalità, delta encoding per i timestamp che crescono a passi regolari, run-length encoding per i valori ripetuti, oltre a compressori generici come ZSTD e LZ4. I tick data si comprimono particolarmente bene perché hanno esattamente queste proprietà: timestamp monotoni, prezzi che si muovono lentamente, simboli che si ripetono milioni di volte. Nel test con un mese di perpetual futures su cinque coppie (BTC, ETH, SOL, BNB, XRP), i circa 373 milioni di trade vengono ingeriti in poco più di 80 secondi e i quasi 2 miliardi di quote in circa 8 minuti. Il dato passa da 191 GiB di CSV grezzi a 10 GiB su disco, una riduzione di 19 volte.
Analisi in SQL puro, indice primario che salta i dati
Tutte le operazioni tipiche di un trading desk sono semplici query SQL: VWAP, candele OHLC e as-of join. L’esempio più interessante usa un ASOF JOIN per abbinare ogni trade alla quota più recente e misurare lo slippage: in una finestra di 15 secondi del 16 gennaio 2024, con il prezzo di Bitcoin in caduta, lo slippage medio schizza a 13,05 dollari, 260 volte la baseline, per poi rientrare quando i buyer tornano. Scalando a 10 mesi di dati (da maggio 2023 a marzo 2024) su ClickHouse Cloud, si arriva a 16,2 miliardi di righe compresse in 76 GiB, sempre con una riduzione di circa 19 volte, per un costo di 1,88 dollari al mese. Le query mantengono la stessa latency perché l’indice primario ordinato per (symbol, ts) filtra via la quasi totalità dei dati: nella JOIN ASOF il motore legge solo 4 dei 383.083 granuli della tabella trades.
- I codec di ClickHouse sono tarati sulla struttura dei tick data: timestamp ordinati, prezzi a deriva lenta, simboli a bassa cardinalità.
- Le analisi restano SQL standard, senza linguaggi specialistici e senza colli di bottiglia sul personale.
- Su dataset da miliardi di righe l’indice primario per (symbol, ts) mantiene la latency delle query sul workload tipico “questo simbolo, in questo intervallo”.
Fonte: Replacing the HDB: ClickHouse for historical ticker data — https://clickhouse.com/blog/historical-ticker-data
Hai qualcosa da aggiungere? Unisciti alla discussione.