-
Notifications
You must be signed in to change notification settings - Fork 0
Space _index structure
Сейчас спейс _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 индексов можно сделать так, чтобы сравнение полей производилось по факту - все числа меньше всех строк; а если оба операнда одного типа, то сравнивать уже значения определенного типа.
Architecture Specifications
- Server architecture
- Feature specifications
- What's in a good specification
- Functional indexes
- Space _index structure
- R tree index quick start and usage
- LuaJIT
- Vinyl
- SQL
- Testing
- Performance
How To ...?
- ... add new fuzzers
- ... build RPM or Deb package using packpack
- ... calculate memory size
- ... debug core dump of stripped tarantool
- ... debug core from different OS
- ... debug Lua state with GDB
- ... generate new bootstrap snapshot
- ... use Address Sanitizer
- ... collect a coredump
Lua modules
Useful links