GaiaEx AcademyGaiaEx Academy
KDB+/Q: A Linguagem dos Bancos de Dados de Tick
DesenvolvedorProgramação11 min read

KDB+/Q: A Linguagem dos Bancos de Dados de Tick

Como Wall Street armazena e consulta bilhões de linhas de dados de mercado

Compartilhar Posts

KDB+ e Q em um minuto

KDB+ é um banco de dados de séries temporais orientado a colunas; Q é a sua linguagem vetorial. Firmas sell-side e buy-side o adotaram para armazenamento de ticks, joins e analíticas em janela deslizante, contextos em que percorrer colunas supera loops linha a linha.

A performance vem do layout colunar, do uso agressivo de mapeamento de memória e de primitivas vetoriais implementadas próximas do metal. Não é um substituto de OLTP genérico; é ajustado para séries temporais com carga pesada de inserção.

Layout colunar (conceitual) sym A A B time t₁ t₂ t₃ price p₁ p₂ p₃ Operações vetoriais tocam arrays contíguos → varreduras cache-friendly Esquema e tipos ainda importam: listas de sym malfeitas custam espaço
As tabelas são vetores de colunas; as analíticas filtram e agregam ao longo das colunas e do tempo.

Fundamentos do Q

O Q é conciso e se lê da direita para a esquerda. Vetores são nativos; loops existem, mas caminhos críticos os evitam. As tabelas são dicionários de colunas, o que se encaixa na forma como os dados de tick são armazenados.

prices: 100.5 101.2 99.8
avg prices
deltas prices

Um Q legível vem de funções pequenas e comentários — densidade por si só não é uma virtude em bases de código compartilhadas.

Tickerplant, RDB, HDB

Um padrão comum: um tickerplant ingere os feeds e distribui aos assinantes; um banco de dados em tempo real mantém a sessão atual; um banco de dados histórico armazena o histórico particionado em disco. Processos de fim de dia migram o RT para as partições do HDB.

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

Cripto nunca fecha, então as fronteiras de “sessão” são escolhas operacionais, não sinos de bolsa.

Pipeline de tick (clássico de três partes) Feed handlers Normaliza símbolos Timestamp na fronteira Tickerplant Log + pub/sub Sem armazenamento de longo prazo RDB + HDB Intradiário vs histórico Particiona por data A recuperação de gaps usa logs; verifique gaps de feed e correções tardias Feeds de cripto podem ter picos: dimensione buffers e back-pressure
A separação entre tempo real e histórico mantém os caminhos críticos pequenos e as consultas previsíveis.

Onde ele aparece

Firmas usam o KDB+ para dashboards de vigilância, analíticas de cotação e conjuntos de dados de pesquisa. Os nomes e as implantações variam; o padrão é o corte e a fatiagem rápidos sobre ticks e ordens.

Plataformas de cripto geram dados contínuos — planeje a retenção, o replay e a exportação de compliance com antecedência.

Custo de licença e alternativas

Licenciamento comercial e contratação especializada são custos reais. Alternativas abertas (ClickHouse, Timescale, QuestDB, DuckDB sobre Parquet) trocam encaixe de ecossistema por preço. Faça benchmark com o seu mix de consultas, não com slides de fornecedor.

Stacks de tick para cripto

Muitas equipes combinam Kafka ou Redpanda com armazenamento colunar e motores SQL. O invariante do KDB+ ainda se aplica: particione por tempo, mantenha os esquemas rígidos e meça o atraso ponta a ponta desde o timestamp da corretora até o resultado da consulta.

Consumidores da API da GaiaEx devem registrar timestamps do servidor e identificadores de sequência, se expostos — correlação supera adivinhação.