Q Language - Tablas en disco

Los datos de su disco duro (también llamado base de datos histórica) se pueden guardar en tres formatos diferentes: archivos planos, tablas distribuidas y tablas particionadas. Aquí aprenderemos cómo usar estos tres formatos para guardar datos.

Archivo plano

Los archivos planos están completamente cargados en la memoria, por lo que su tamaño (espacio de memoria) debe ser pequeño. Las tablas se guardan en el disco en su totalidad en un archivo (por lo que el tamaño importa).

Las funciones utilizadas para manipular estas tablas son set/get -

`:path_to_file/filename set tablename

Tomemos un ejemplo para demostrar cómo funciona:

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

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

En el entorno de Windows, los archivos planos se guardan en la ubicación: C:\q\w32

Obtenga el archivo plano de su disco (base de datos histórica) y use el get comando de la siguiente manera:

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

Se crea una nueva tabla tab2 con su contenido almacenado en tab1_test archivo.

Mesas extendidas

Si hay demasiadas columnas en una tabla, almacenamos dichas tablas en formato extendido, es decir, las guardamos en el disco en un directorio. Dentro del directorio, cada columna se guarda en un archivo separado con el mismo nombre que el nombre de la columna. Cada columna se guarda como una lista del tipo correspondiente en un archivo binario kdb +.

Guardar una tabla en formato dividido es muy útil cuando tenemos que acceder solo a unas pocas columnas con frecuencia de sus muchas columnas. Un directorio de tabla desplegado contiene.d archivo binario que contiene el orden de las columnas.

Al igual que un archivo plano, una tabla se puede guardar como se muestra utilizando el setmando. Para guardar una tabla como desplegada, la ruta del archivo debe terminar con una reacción violenta:

`:path_to_filename/filename/ set tablename

Para leer una tabla extendida, podemos usar el get función -

tablename: get `:path_to_file/filename

Note - Para que una tabla se guarde como desplegada, debe estar sin clave y enumerada.

En el entorno de Windows, su estructura de archivos aparecerá de la siguiente manera:

Tablas particionadas

Las tablas particionadas proporcionan un medio eficiente para administrar tablas enormes que contienen volúmenes importantes de datos. Las tablas particionadas son tablas divididas distribuidas en más particiones (directorios).

Dentro de cada partición, una tabla tendrá su propio directorio, con la estructura de una tabla extendida. Las tablas se pueden dividir día / mes / año para proporcionar un acceso optimizado a su contenido.

Para obtener el contenido de una tabla particionada, use el siguiente bloque 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 ….

Intentemos obtener el contenido de una tabla de operaciones:

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 - El modo particionado es adecuado para tablas con millones de registros por día (es decir, datos de series de tiempo)

Archivo Sym

El archivo sym es un archivo binario kdb + que contiene la lista de símbolos de todas las tablas divididas y divididas. Se puede leer con

get `:sym

archivo par.txt (opcional)

Este es un archivo de configuración, que se utiliza cuando las particiones se distribuyen en varios directorios / unidades de disco y contiene las rutas a las particiones del disco.