Таблица Char vs Symbol KDB разделена на части

Я создаю новую таблицу в базе данных KDB как разделенную на части (разделенную по дате), в новой схеме таблицы есть столбец с именем CCYY, в котором много повторяющихся значений. Я не уверен, должен ли я сохранить его как char или символы. Моя главная цель - использовать наименьшее количество памяти.

В результате какой из них я должен использовать? В чем преимущество/недостаток сохранения повторяющихся значений либо в виде массива символов, либо в виде символа в разделенной расширенной настройке?


person stretchr    schedule 18.04.2014    source источник


Ответы (2)


Похоже, вы должны использовать символ.

Здесь есть руководство по символам/перечислениям:http://www.timestored.com/kdb-guides/strings-symbols-enumeration#when-to-use цитата:

Как правило, вы должны следовать рекомендациям:

  1. Если столбец используется в сравнениях равенства предложений, например. выберите из t, где символ в AB -> Символ
  2. Короткие, часто повторяющиеся строки -> Символ
  3. Else Long, Неповторяющиеся строки -> Строка
person Ryan Hamilton    schedule 18.04.2014

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

Если ваши значения достаточно короткие, не забывайте о возможности использования .Q.j10, .Q.x10, .Q.j12 и .Q.x12. Это будет использовать меньше места, чем вектор символов. И он не зависит от файла sym, который в сложных средах может избавить вас от необходимости повторного перечисления, если вы, скажем, копируете таблицы между hdbs, файлы sym которых не синхронизированы.

Если вам не хватает места, всегда сжимайте данные на диске.

person mollmerx    schedule 21.04.2014