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.