Arquitetura KDB +
Kdb + é um banco de dados de alto volume e alto desempenho, projetado desde o início para lidar com enormes volumes de dados. É totalmente de 64 bits e possui processamento multi-core e multi-threading embutidos. A mesma arquitetura é usada para dados históricos e em tempo real. O banco de dados incorpora sua própria linguagem de consulta poderosa,q, portanto, a análise pode ser executada diretamente nos dados.
kdb+tick é uma arquitetura que permite a captura, processamento e consulta de dados históricos e em tempo real.
Arquitetura Kdb + / tick
A ilustração a seguir fornece um esboço generalizado de uma arquitetura Kdb + / tick típica, seguida por uma breve explicação dos vários componentes e do fluxo de dados.
o Data Feeds são dados de séries temporais fornecidos principalmente por fornecedores de alimentação de dados, como Reuters, Bloomberg ou diretamente de bolsas.
Para obter os dados relevantes, os dados do feed de dados são analisados pelo feed handler.
Depois que os dados são analisados pelo gerenciador de feed, eles vão para o ticker-plant.
Para recuperar dados de qualquer falha, o ticker-plant primeiro atualiza / armazena os novos dados no arquivo de log e depois atualiza suas próprias tabelas.
Depois de atualizar as tabelas internas e os arquivos de log, os dados do loop on-time são continuamente enviados / publicados para o banco de dados em tempo real e todos os assinantes encadeados que solicitaram os dados.
No final de um dia útil, o arquivo de log é excluído, um novo é criado e o banco de dados em tempo real é salvo no banco de dados histórico. Depois que todos os dados são salvos no banco de dados histórico, o banco de dados em tempo real limpa suas tabelas.
Componentes da arquitetura Kdb + Tick
Feeds de dados
Os feeds de dados podem ser qualquer mercado ou outros dados de série temporal. Considere os feeds de dados como a entrada bruta para o manipulador de feeds. Os feeds podem ser diretamente da troca (dados de streaming ao vivo), de fornecedores de notícias / dados como Thomson-Reuters, Bloomberg ou quaisquer outras agências externas.
Feed Handler
Um manipulador de feed converte o fluxo de dados em um formato adequado para gravação em kdb +. Ele é conectado ao feed de dados e recupera e converte os dados do formato específico do feed em uma mensagem Kdb + que é publicada no processo ticker-plant. Geralmente, um gerenciador de feed é usado para realizar as seguintes operações -
- Capture dados de acordo com um conjunto de regras.
- Traduzir (/ enriquecer) esses dados de um formato para outro.
- Pegue os valores mais recentes.
Ticker Plant
Ticker Plant é o componente mais importante da arquitetura KDB +. É o ticker plant com o qual o banco de dados em tempo real ou diretamente os assinantes (clientes) estão conectados para acessar os dados financeiros. Atua empublish and subscribemecanismo. Depois de obter uma assinatura (licença), uma publicação tick (rotineiramente) do editor (ticker plant) é definida. Ele executa as seguintes operações -
Recebe os dados do manipulador de feed.
Imediatamente após o ticker plant receber os dados, ele armazena uma cópia como um arquivo de log e o atualiza assim que o ticker plant recebe qualquer atualização para que em caso de falha, não haja perda de dados.
Os clientes (assinantes em tempo real) podem se inscrever diretamente no ticker-plant.
No final de cada dia útil, ou seja, uma vez que o banco de dados em tempo real recebe a última mensagem, ele armazena todos os dados de hoje no banco de dados histórico e os envia a todos os assinantes que assinaram os dados de hoje. Em seguida, ele redefine todas as suas tabelas. O arquivo de registro também é excluído quando os dados são armazenados no banco de dados histórico ou outro assinante diretamente vinculado ao banco de dados em tempo real (rtdb).
Como resultado, o ticker-plant, o banco de dados em tempo real e o banco de dados histórico funcionam 24 horas por dia, 7 dias por semana.
Uma vez que o ticker-plant é um aplicativo Kdb +, suas tabelas podem ser consultadas usando qcomo qualquer outro banco de dados Kdb +. Todos os clientes do ticker plant devem ter acesso ao banco de dados apenas como assinantes.
Banco de dados em tempo real
Um banco de dados em tempo real (rdb) armazena os dados de hoje. Ele está diretamente conectado à planta do relógio. Normalmente, ele seria armazenado na memória durante o horário de mercado (um dia) e gravado no banco de dados histórico (hdb) no final do dia. Como os dados (dados rdb) são armazenados na memória, o processamento é extremamente rápido.
Como o kdb + recomenda ter um tamanho de RAM quatro ou mais vezes o tamanho esperado dos dados por dia, a consulta que roda no rdb é muito rápida e oferece desempenho superior. Como um banco de dados em tempo real contém apenas os dados de hoje, a coluna de data (parâmetro) não é necessária.
Por exemplo, podemos ter consultas rdb como,
select from trade where sym = `ibm
OR
select from trade where sym = `ibm, price > 100
Banco de Dados Históricos
Se tivermos que calcular as estimativas de uma empresa, precisamos ter seus dados históricos disponíveis. Um banco de dados histórico (hdb) contém dados de transações feitas no passado. O registro de cada novo dia seria adicionado ao hdb no final do dia. As tabelas grandes no hdb são armazenadas e distribuídas (cada coluna é armazenada em seu próprio arquivo) ou são armazenadas particionadas por dados temporais. Além disso, alguns bancos de dados muito grandes podem ser particionados ainda mais usandopar.txt (Arquivo).
Essas estratégias de armazenamento (distribuídas, particionadas, etc.) são eficientes ao pesquisar ou acessar os dados de uma grande mesa.
Um banco de dados histórico também pode ser usado para fins de relatórios internos e externos, ou seja, para análises. Por exemplo, suponha que queremos obter as negociações da empresa da IBM para um determinado dia a partir do nome da tabela de negociação (ou qualquer), precisamos escrever uma consulta da seguinte forma -
thisday: 2014.10.12
select from trade where date = thisday, sym =`ibm
Note - Escreveremos todas essas consultas assim que tivermos uma visão geral do q língua.