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.