GaiaEx AcademyGaiaEx Academy
KDB+/Q: Il Linguaggio dei Tick Database
SviluppatoreProgrammazione11 min read

KDB+/Q: Il Linguaggio dei Tick Database

Come Wall Street memorizza e interroga miliardi di punti di dati di mercato

Condividi Post

KDB+ e Q in un minuto

KDB+ è un database time-series column-oriented; Q è il suo linguaggio vettoriale. Le società sell-side e buy-side lo hanno adottato per lo storage dei tick, i join, e le analitiche rolling dove scansionare le colonne batte i loop riga per riga.

La performance viene dal layout columnar, dall'uso aggressivo del memory mapping, e da primitive vettoriali implementate vicino al metallo. Non è un sostituto OLTP generico; è ottimizzato per serie temporali ad append intensivo.

Columnar layout (conceptual) sym A A B time t₁ t₂ t₃ price p₁ p₂ p₃ Vector ops touch contiguous arrays → cache-friendly scans Schema and types still matter: bad sym lists cost space
Le tabelle sono vettori di colonne; le analitiche filtrano e aggregano lungo colonne e tempo.

Basi di Q

Q è conciso e da destra a sinistra. I vettori sono nativi; i loop esistono ma i percorsi caldi li evitano. Le tabelle sono dizionari di colonne, il che corrisponde a come vengono memorizzati i dati tick.

prices: 100.5 101.2 99.8
avg prices
deltas prices

Il Q leggibile viene da piccole funzioni e commenti — la densità da sola non è una virtù nei codebase condivisi.

Tickerplant, RDB, HDB

Un pattern comune: un tickerplant ingerisce i feed e li distribuisce ai subscriber; un database in tempo reale detiene la sessione corrente; un database storico memorizza la storia partizionata su disco. I processi di fine giornata fanno rollare l'RT nelle partizioni HDB.

select last price by sym from trades where time > .z.t - 00:05

Il crypto non chiude mai, quindi i confini di «sessione» sono scelte operative, non campane di apertura dell'exchange.

Tick pipeline (classic three-piece) Feed handlers Normalize symbols Timestamp at boundary Tickerplant Log + pub/sub No long-term store RDB + HDB Intraday vs history Partition by date Gap recovery uses logs; verify feed gaps and late corrections Crypto feeds can burst: size buffers and back-pressure
La separazione tra tempo reale e storico mantiene i percorsi caldi piccoli e le query predicibili.

Dove si trova

Le società usano KDB+ per dashboard di sorveglianza, analitiche sulle quotazioni, e dataset di ricerca. Nomi e deployment variano; il pattern è il taglia-e-scomponi rapido su tick e ordini.

Le piattaforme crypto generano dati continui — pianifica retention, replay, ed esportazione compliance in anticipo.

Costo della licenza e alternative

Il licensing commerciale e le assunzioni specializzate sono costi reali. Le alternative open (ClickHouse, Timescale, QuestDB, DuckDB su Parquet) scambiano l'adattamento all'ecosistema per il prezzo. Fai il benchmark sul tuo mix di query, non sulle slide del vendor.

Stack tick per il crypto

Molti team accoppiano Kafka o Redpanda con storage columnar e motori SQL. L'invariante da KDB+ si applica ancora: partiziona per tempo, mantieni gli schemi rigorosi, e misura il lag end-to-end dal timestamp dell'exchange al risultato della query.

I consumer delle API GaiaEx dovrebbero registrare i timestamp del server e gli identificatori di sequenza se esposti — la correlazione batte l'indovinare.