Size: a a a

2020 August 16

M

Marat.k in Tarantool
vpol
Ну контейнер сдох. Чего делать будете?
В смысле переподнимать как? Ну, это уже дело десятое. Могу через номад катнуть, через хелс чеки переподнимется
источник

v

vpol in Tarantool
Мы просто похожую штуку делали с ECS (elastic container service), написали аналог оператора. Было больно, мы страдали. Потом перешли на кубер. Вы в публичном облаке живете или в приватном?
источник

M

Marat.k in Tarantool
vpol
Мы просто похожую штуку делали с ECS (elastic container service), написали аналог оператора. Было больно, мы страдали. Потом перешли на кубер. Вы в публичном облаке живете или в приватном?
В приватном
источник

M

Marat.k in Tarantool
Вообще, я нашёл ответ на свой вопрос в гитовой репе оператора: https://github.com/tarantool/tarantool-operator/tree/master/examples/kv
источник

v

vpol in Tarantool
Ну если вам этого достаточно то ок
источник

M

Marat.k in Tarantool
Там есть заготовка на композе, даже курловые запросы для настройки
источник

M

Marat.k in Tarantool
vpol
Ну если вам этого достаточно то ок
Пока достаточно, да. А с какими проблемами вы столкнулись?
источник

v

vpol in Tarantool
Перезапуск контейнеров, редеплой (когда контейнер надо убить и вместо него со старым стораджем запустить новый), автоскейл, и так далее. Бэкапы у нас тоже в операторе живут.
источник

v

vpol in Tarantool
Я кстати не помню сделали ли мы PR в оператора с бэкапами или ещё нет.
источник
2020 August 17

AP

Andrey Privalov in Tarantool
Мы ансиблом просто катим картридж в докере
источник

MA

Mons Anderson in Tarantool
Artur Barsegyan
@inthrax есть идеи?
IPv6. В hosts для localhost часто прописано ::1
источник

AB

Artur Barsegyan in Tarantool
проверьте hosts
источник

KO

Konstantin Otdelnov in Tarantool
Добрый день. использую образ tarantool/tarantool:2.3.1.
Создаю таблицу и индекс
box.execute([[CREATE TABLE table (id unsigned primary key, secondary unsigned);]])        
box.execute([[CREATE INDEX table_secondary_idx ON table (secondary);]])
Вставляю данные
local count = 0
for _, row in pairs(array) do
   box.execute([[INSERT INTO table (id, secondary) VALUES(?, ?);]], {count, count})
   count = count + 1
end

Далее делаю следующее.
1: Запрос в базу
res = box.execute([[SELECT id, secondary FROM table WHERE secondary >= ]] .. min .. [[ AND secondary <= ]] .. max .. [[;]]);

Предварительно достаю данные из таблицы, и сохраняю в локальной переменной. Сортирую массив по полю secondary
res = box.execute([[SELECT id, secondary FROM table;]]);
table.sort(res, function(a,b)
   return a.secondary < b.secondary
end)

2. Делаю в массиве res 2 раза бинарный поиск по числовым переменным min и max и копирую подмассив
local minPos = utils.binSearchL(res, 1, #res, min)
local maxPos = utils.binSearchR(res, 1, #res, max)
local filtered = table.move(res, minPos, maxPos, 1, {})

В таблице около 800000 строк. В первом случае, запрос выполнятеся около 100мс, во втором 1мс.
Подскажите пожалуйста, можно ли как-то улучшить результат в первом случае?
источник

DS

Dmitry Sharonov in Tarantool
за sql не подскажу
источник

DS

Dmitry Sharonov in Tarantool
но если сделать индекс id, secondary а потом по нему выбирать из луа - то они будут уже отсортированные по secondary
источник

DS

Dmitry Sharonov in Tarantool
:pairs(min,{iterator='GE'}):take_while(function(t) return t.secondary <= max end):totable()
источник

DS

Dmitry Sharonov in Tarantool
Dmitry Sharonov
но если сделать индекс id, secondary а потом по нему выбирать из луа - то они будут уже отсортированные по secondary
а вообще стоп, вам именно диапазон secondary?
источник

DS

Dmitry Sharonov in Tarantool
без учета id
источник

DS

Dmitry Sharonov in Tarantool
тогда они и так сортированные должны быть в выдаче
источник

KO

Konstantin Otdelnov in Tarantool
да, нужно диапазон по secondary выбирать
источник