Size: a a a

2020 July 27

KN

Konstantin Nechaev in Tarantool
Прошу прощения, вечер, уже туплю,

box.space.counters:format()  
---
- [{'name': 'id', 'type': 'unsigned'}, {'name': 'clientid', 'type': 'unsigned'}, {
   'name': 'starttime', 'type': 'unsigned'}, {'name': 'interval', 'type': 'unsigned'},
 {'name': 'ip', 'type': 'string'}, {'name': 'action', 'type': 'string'}, {'name': 'count',
   'type': 'unsigned'}, {'name': 'f8', 'type': 'unsigned'}, {'name': 'expiration_time',
   'type': 'unsigned'}, {'name': 'f10', 'type': 'unsigned'}, {'name': 'f11',
   'type': 'integer'}]
источник

GS

Gleb Selyukov in Tarantool
Прошу прощения за большое количество вопросов, но все же, довольно не тривиальное поведение.

Есть функция:

function search_key_prefix(space_name, index_name, prefix)
   local t =
box.space[space_name].index[index_name]:pairs(prefix, { iterator='GE' }):
   take_while(function(t) return t[1]:match('^' ..
prefixprefix) end)
   return t:totable(1, 3)
end


Которая возвращает:

- ['a2', 'howeex snowy', 'string']
- ['a3', 'text', 'string']
- ['a4', 40.1, 'float']
- ['a5', 40, 'integer']
- ['a7', 'blalala', 'string']



Вопрос: Почему tuple_instance:totable(1, 3) возвращает сразу три филда, а не 1 и 3? То есть:

- ['a2', 'string']
- ['a3', 'string']
- ['a4', 'float']
- ['a5', 'integer']
- ['a7', 'string']
источник

ОБ

Олег Бабин in Tarantool
Gleb Selyukov
Прошу прощения за большое количество вопросов, но все же, довольно не тривиальное поведение.

Есть функция:

function search_key_prefix(space_name, index_name, prefix)
   local t =
box.space[space_name].index[index_name]:pairs(prefix, { iterator='GE' }):
   take_while(function(t) return t[1]:match('^' ..
prefixprefix) end)
   return t:totable(1, 3)
end


Которая возвращает:

- ['a2', 'howeex snowy', 'string']
- ['a3', 'text', 'string']
- ['a4', 40.1, 'float']
- ['a5', 40, 'integer']
- ['a7', 'blalala', 'string']



Вопрос: Почему tuple_instance:totable(1, 3) возвращает сразу три филда, а не 1 и 3? То есть:

- ['a2', 'string']
- ['a3', 'string']
- ['a4', 'float']
- ['a5', 'integer']
- ['a7', 'string']
Потому что с 1 и по 3. Там интервал указывается, а не перечисление
источник

GS

Gleb Selyukov in Tarantool
Олег Бабин
Потому что с 1 и по 3. Там интервал указывается, а не перечисление
Даже если указать totable(2, 3), то все равно вернутся все 3 колонки
Можно ли как-нибудь избавиться от 2ой колонки из данного примера?
источник

ОБ

Олег Бабин in Tarantool
tarantool> box.tuple.new({1, 2, 3}):totable(1, 3)
---
- [1, 2, 3]
...

tarantool> box.tuple.new({1, 2, 3}):totable(2, 3)
---
- [2, 3]
...
Должно вернуться 2 колонки

Избавиться можно, если вместо return t:totable(1, 3) делать return {t[1], t[3]}
источник

MA

Mons Anderson in Tarantool
Konstantin Nechaev
Прошу прощения, вечер, уже туплю,

box.space.counters:format()  
---
- [{'name': 'id', 'type': 'unsigned'}, {'name': 'clientid', 'type': 'unsigned'}, {
   'name': 'starttime', 'type': 'unsigned'}, {'name': 'interval', 'type': 'unsigned'},
 {'name': 'ip', 'type': 'string'}, {'name': 'action', 'type': 'string'}, {'name': 'count',
   'type': 'unsigned'}, {'name': 'f8', 'type': 'unsigned'}, {'name': 'expiration_time',
   'type': 'unsigned'}, {'name': 'f10', 'type': 'unsigned'}, {'name': 'f11',
   'type': 'integer'}]
сорян, по формату всё ок
а репродьюсер есть или это происходит иногда и непредвиденно?
источник
2020 July 28

SO

Sergey Ostanevich in Tarantool
Konstantin Nechaev
ребят, подскажите пожалуйста, как так может получаться:
вылетает  Tuple field 11 type does not match one required by operation: expected integer при этом перед вставкой идет преобразование tonumber(), потом подстановка дефолтного числа, если nil вышел, затем идет проверка на type(value) ~= 'number`, число не может быть и float (так как при нем не запись падает а дальнейшая работа с таблицей)), что может дать такую ошибку?
там точно не cdata в том месте, где ждут целое? такое может быть, если ваш дефолт прописан как 1ULL например
источник

MA

Mons Anderson in Tarantool
Sergey Ostanevich
там точно не cdata в том месте, где ждут целое? такое может быть, если ваш дефолт прописан как 1ULL например
хочешь сказать, что 1ULL нельзя вставить в поле integer? ;)
источник

SO

Sergey Ostanevich in Tarantool
Можно ругнуться что cdata не integer
источник

KN

Konstantin Nechaev in Tarantool
доброе утро, там мы явно задаем -1 (Int), 1ull не должно быть. Сейчас все-таки склоняемся к тому что туда Float попадает, если через гем на руби запрос слать, а не через консоль, то такая ошибка отстреливается до записи в базу.
источник

D

Dmitry in Tarantool
Добрый день! Не могу понять, из-за чего достигается большой перформанс у тарантула при записи? На сколько я понимаю, тарантул на каждый инсерт дампит данные на диск, а это ведь не может быть быстрой операцией по определению. Учитываю что тут ACID транзакция, гарантирующая что данные сохранены на диске.
источник

KN

Konstantin Nazarov in Tarantool
Dmitry
Добрый день! Не могу понять, из-за чего достигается большой перформанс у тарантула при записи? На сколько я понимаю, тарантул на каждый инсерт дампит данные на диск, а это ведь не может быть быстрой операцией по определению. Учитываю что тут ACID транзакция, гарантирующая что данные сохранены на диске.
Мы пишем на диск не по одной записи, а батчами. Плюс пишем в линейный файл, а не случайно. То есть append-only
источник

KN

Konstantin Nazarov in Tarantool
диски хорошо для этого оптимизированы
источник

D

Dmitry in Tarantool
а как тогда ACID достигается? клиенту ведь возвращается что запись прошла только когда фактически на диск батч записался?
источник

KN

Konstantin Nazarov in Tarantool
да, все так. мы принимаем транзакцию и она ожидает запись на диск перед возвратом управления клиенту, но другие в это время могут выполняться
источник

KN

Konstantin Nazarov in Tarantool
то есть получается такой батчинг
источник

KN

Konstantin Nazarov in Tarantool
latency есть, но пропускная способность высокая
источник

D

Dmitry in Tarantool
а все понял, спасибо большое )
источник

AR

Aleksandr Razumov in Tarantool
fsync разве там включен по дефолту?
источник

KN

Konstantin Nazarov in Tarantool
нет, не включен. но мы все же дожидаемся возврата системного вызова
источник