Вопросы по Tarantool - PullRequest
       36

Вопросы по Tarantool

0 голосов
/ 07 февраля 2020

У меня есть следующий формат структуры данных:

unix/:/var/run/tarantool/tarantool.sock> s:format()
---
- [{'name': 'id', 'type': 'unsigned'}, {'name': 'version', 'type': 'array'}, {'name': 'data',
    'type': 'array'}]
...

И у меня уже есть следующие данные:

unix/:/var/run/tarantool/tarantool.sock> s:select{}
---
- - [0, [[21, 'action123'], [12, 'actionXYZ'], [11, 'actionABC']], [['actionXYZ',
        'SOME_JAVASCRIPT_CONTENT']]]
  - [1, [[33, 'action123'], [12, 'baseXYZ'], [11, 'baseABC']], [['bas123', 'SOME_CSS_CONTENT']]]
...

Я прочитал ссылки и документацию, и я ' немного потерян при выполнении следующего:

  1. Что такое эквивалент "ГДЕ"? ie. Выберите, чтобы найти записи, которые имеют version из 12

    Не отображаются применимые примеры в https://www.tarantool.io/en/doc/2.2/reference/reference_lua/box_space/#lua -function.space_object.select

  2. Список элементов с именами полей (поэтому я знаю, на какой блок смотрю). В некотором смысле, вроде «заголовки столбцов» в ваших результатах в SQL.

    У меня есть с именем кортежей в моих format() - как можно Я вижу эти имена, когда я запрашиваю данные?

    {'name': 'id', 'type': 'unsigned'}, {'name': 'version', 'type': 'array'}, {'name': 'data' , 'type': 'array'}]

  3. Хорошая печать! (предпочтительно yaml)

    Я пытался использовать https://www.tarantool.io/en/doc/2.2/reference/reference_lua/yaml/, чтобы обернуть мои операторы select, но ничего не получалось.

1 Ответ

0 голосов
/ 20 февраля 2020
  1. Вам необходимо использовать индексы для императивных эффективных запросов, смотрите здесь:

https://www.tarantool.io/en/doc/2.2/reference/reference_lua/box_space/#lua -function.space_object.create_index

https://www.tarantool.io/en/doc/2.2/reference/reference_lua/box_index/

использовать tuple: tomap ():

https://www.tarantool.io/en/doc/2.2/reference/reference_lua/box_tuple/#lua -function.tuple_object.tomap

Это зависит от того, где вы хотите, чтобы это было красиво. Возможно, вам придется настроить параметры yaml или просто соединить вызовы tomap:
tarantool> box.space.TEST:pairs():map(function(x) return x:tomap({names_only=true}) end):totable()
---
- - COLUMN1: 1
    COLUMN2: a
  - COLUMN1: 13
    COLUMN2: a
  - COLUMN1: 1000
    COLUMN2: a
...