Почему таблица ключей не может отображаться в kdb? - PullRequest
0 голосов
/ 11 апреля 2020

Таблицы с ключами - это не что иное, как словарное отображение двух таблиц, таких как:

q)kts:([] sym:`GOOG`AMZN`FB)!([] px:3?10.; size:3?100000)
q).Q.dpft[`:/path/db;.z.d;`id;`kts]
    'nyi
    [0]  .Q.dpft[`:/path/db;.z.d;`id;`kts]

Почему существует ограничение, что таблицы с ключами не могут быть развернуты или разбиты?

1 Ответ

2 голосов
/ 11 апреля 2020

Я думаю, что самый простой ответ приходит как с технической, так и с логической точек зрения.

Техническая информация: в формате на диске нет способа указать это в настоящее время. Файл .d указывает порядок столбцов на диске, но никаких дальнейших метаданных. Это можно теоретически изменить на более позднем этапе.

Логический ответ исходит из размера рассматриваемых данных. Таблицы с разбивкой обычно используются, когда вы хотите хранить несколько столбцов в памяти. Десять лет go это означало, что таблицы с разбивкой были полезны для хранения до 100 миллионов строк, но с 3.x и современной памятью этот верхний предел может быть значительно севернее 250M. Я не думаю, что есть хороший способ сделать такое соединение эффективным в вычислениях ad-ho c. Индекс сгруппированных атрибутов, поддерживаемый для выполнения этой работы, имеет тот же размер, что и столбец на диске, и его необходимо постоянно перезаписывать при добавлении данных.

Я думаю, что в этом случае используется 'nyi, иметь в виду, что «нам, вероятно, нужно немного подумать об этом»,

Очевидное решение состоит в том, чтобы взглянуть на явные отношения строк через связывание столбцов, где вычисление поиска выполняется заранее.

...