Учебники

Q Language — таблицы на диске

Данные на вашем жестком диске (также называемом исторической базой данных) могут быть сохранены в трех различных форматах — плоские файлы, разбитые таблицы и секционированные таблицы. Здесь мы узнаем, как использовать эти три формата для сохранения данных.

Плоский файл

Плоские файлы полностью загружаются в память, поэтому их размер (объем памяти) должен быть небольшим. Таблицы сохраняются на диске целиком в одном файле (поэтому размер имеет значение).

Функции, используемые для управления этими таблицами, устанавливаются / получают

`:path_to_file/filename set tablename

Давайте рассмотрим пример, чтобы продемонстрировать, как это работает.

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

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

В среде Windows плоские файлы сохраняются в расположении — C: \ q \ w32

Окружающая среда Windows

Получите плоский файл с вашего диска (исторический дБ) и используйте команду get следующим образом:

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

Создается новая таблица tab2, содержимое которой хранится в файле tab1_test .

Таблицы с растяжкой

Если в таблице слишком много столбцов, мы храним такие таблицы в расширенном формате, т.е. сохраняем их на диске в каталоге. Внутри каталога каждый столбец сохраняется в отдельном файле под тем же именем, что и имя столбца. Каждый столбец сохраняется в виде списка соответствующего типа в двоичном файле kdb +.

Сохранение таблицы в расширенном формате очень полезно, когда нам приходится часто обращаться только к нескольким столбцам из множества столбцов. Каталог с развернутой таблицей содержит двоичный файл .d, который содержит порядок столбцов.

Подобно плоскому файлу, таблица может быть сохранена как развернутая с помощью команды set . Чтобы сохранить таблицу как развернутую, путь к файлу должен заканчиваться отрицательной реакцией —

`:path_to_filename/filename/ set tablename

Для чтения развернутой таблицы мы можем использовать функцию get

tablename: get `:path_to_file/filename

Примечание. Чтобы таблица сохранялась как развернутая, она должна быть разблокирована и перечислена.

В среде Windows ваша файловая структура будет выглядеть следующим образом:

Файловая структура

Разделенные таблицы

Секционированные таблицы предоставляют эффективные средства для управления огромными таблицами, содержащими значительные объемы данных. Разделенные таблицы — это расширенные таблицы, распределенные по нескольким разделам (каталогам).

Внутри каждого раздела таблица будет иметь свой собственный каталог со структурой развернутой таблицы. Таблицы могут быть разделены на день / месяц / год, чтобы обеспечить оптимизированный доступ к его контенту.

Чтобы получить содержимое секционированной таблицы, используйте следующий блок кода —

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 ….

Давайте попробуем получить содержимое торговой таблицы —

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

Примечание. Режим секционирования подходит для таблиц с миллионами записей в день (т. Е. Данные временных рядов).

Sym файл

Файл sym — это двоичный файл kdb +, содержащий список символов из всех таблиц с разделениями и секциями. Это можно прочитать с,

get `:sym

файл par.txt (необязательно)

Это файл конфигурации, используемый, когда разделы распределены по нескольким каталогам / дискам, и содержит пути к разделам диска.