Skip to content

Space _index structure

Aleksandr Lyapunov edited this page Jul 22, 2015 · 1 revision

Сейчас спейс _index, которое хранит описания индексов всех спейсов, хранит таплы следующей структуры:

[space_id, index_id, name, type, is_unique, parts_count, field0, type0, <field1>, <type1>, ...]

где поля type (тип индекса), typeX (тип индексируемого поля) - строковые; нумерация полей (fieldX) начинается с нуля. Предлагаю изменить структуру следующим образом:

[space_id, index_id, name, type, parts, options]

где parts это массив:

[[field0, type0, <part1_opts>], [field1, type1, <part1_opts>]..]

где options и partX_opts - необязательные мапы с опциями. is_unique должен уйти в мапу options, туда же попадет опция dimension для r-tree. неплохо было бы сделать валидацию опций в зависимости от типа индекса; для bitseta и r-дерева is_unique имхо бессмысленнен. В перспективе в partX_options можно будет добавлять опцию направления обхода, и способ сравнения строк. typeX опускать нельзя, чтобы опции были третим элементом массива, можно сделать 'auto', для р-дерева это будет удобно, ведь ежу ясно, какой там тип поля. 'auto' имхо вообще была бы удобная. Для tree, hash и bitset индексов можно сделать так, чтобы сравнение полей производилось по факту - все числа меньше всех строк; а если оба операнда одного типа, то сравнивать уже значения определенного типа.

Developer Guidelines ↗

Architecture

How To ...?

Recipes

Upgrade instructions

Useful links

Old discussions

Personal pages

Clone this wiki locally