Linguagem Q - Tabelas em disco

Os dados em seu disco rígido (também chamado de banco de dados histórico) podem ser salvos em três formatos diferentes - Arquivos Simples, Tabelas Splayed e Tabelas Particionadas. Aqui, aprenderemos como usar esses três formatos para salvar dados.

Arquivo plano

Os arquivos simples são totalmente carregados na memória, por isso seu tamanho (área de cobertura da memória) deve ser pequeno. As tabelas são salvas no disco inteiramente em um arquivo (portanto, o tamanho é importante).

As funções usadas para manipular essas tabelas são set/get -

`:path_to_file/filename set tablename

Vamos dar um exemplo para demonstrar como funciona -

q)tables `.
`s#`t`tab`tab1 

q)`:c:/q/w32/tab1_test set tab1
`:c:/q/w32/tab1_test

No ambiente Windows, os arquivos simples são salvos no local - C:\q\w32

Obtenha o arquivo simples do seu disco (banco de dados histórico) e use o get comando da seguinte forma -

q)tab2: get `:c:/q/w32/tab1_test

q)tab2

   sym    |   time           price   size
--------- | -------------------------------
  APPLE   | 11:16:39.779   8.388858   12
  MSFT    | 11:16:39.779   19.59907   10
  IBM     | 11:16:39.779   37.5638    1
 SAMSUNG  | 11:16:39.779   61.37452   90
  APPLE   | 11:16:39.779   52.94808   73

Uma nova tabela é criada tab2 com seu conteúdo armazenado em tab1_test Arquivo.

Mesas Espalhadas

Se houver muitas colunas em uma tabela, então armazenamos tais tabelas no formato espalhado, ou seja, nós as salvamos no disco em um diretório. Dentro do diretório, cada coluna é salva em um arquivo separado com o mesmo nome da coluna. Cada coluna é salva como uma lista do tipo correspondente em um arquivo kdb + binário.

Salvar uma tabela no formato espalhado é muito útil quando temos que acessar apenas algumas colunas frequentemente de suas muitas colunas. Um diretório de tabela espalhada contém.d arquivo binário que contém a ordem das colunas.

Muito parecido com um arquivo simples, uma tabela pode ser salva como espalhada usando o setcomando. Para salvar uma tabela como espalhada, o caminho do arquivo deve terminar com uma folga -

`:path_to_filename/filename/ set tablename

Para ler uma tabela espalhada, podemos usar o get função -

tablename: get `:path_to_file/filename

Note - Para que uma tabela seja salva como espalhada, ela deve ser liberada e enumerada.

No ambiente Windows, sua estrutura de arquivos aparecerá da seguinte forma -

Tabelas particionadas

As tabelas particionadas fornecem um meio eficiente de gerenciar tabelas enormes contendo volumes significativos de dados. As tabelas particionadas são tabelas espalhadas por mais partições (diretórios).

Dentro de cada partição, uma tabela terá seu próprio diretório, com a estrutura de uma tabela espalhada. As tabelas podem ser divididas em uma base dia / mês / ano a fim de fornecer acesso otimizado ao seu conteúdo.

Para obter o conteúdo de uma tabela particionada, use o seguinte bloco de código -

q)get `:c:/q/data/2000.01.13              // “get” command used, sample folder

quote| +`sym`time`bid`ask`bsize`asize`ex!(`p#`sym!0 0 0 0 0 0 0 0 0 0 0
0 0 0….

trade| +`sym`time`price`size`ex!(`p#`sym!0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 ….

Vamos tentar obter o conteúdo de uma tabela de negociação -

q)get `:c:/q/data/2000.01.13/trade

   sym    time            price     size    ex
--------------------------------------------------
    0   09:30:00.496    0.4092016    7      T
    0   09:30:00.501    1.428629     4      N
    0   09:30:00.707    0.5647834    6      T
    0   09:30:00.781    1.590509     5      T
    0   09:30:00.848    2.242627     3      A
    0   09:30:00.860    2.277041     8      T
    0   09:30:00.931    0.8044885    8      A
    0   09:30:01.197    1.344031     2      A
    0   09:30:01.337    1.875        3      A
    0   09:30:01.399    2.187723     7      A

Note - O modo particionado é adequado para tabelas com milhões de registros por dia (ou seja, dados de série temporal)

Arquivo Sym

O arquivo sym é um arquivo kdb + binário que contém a lista de símbolos de todas as tabelas distribuídas e particionadas. Pode ser lido com,

get `:sym

arquivo par.txt (opcional)

Este é um arquivo de configuração, usado quando as partições são espalhadas em vários diretórios / drives de disco e contém os caminhos para as partições de disco.