Size: a a a

2021 June 14

VG

Vladislav Grubov in Tarantool
conn:eval[[ return box.atomic(function(...) local transaction = box.space.transactions:insert({...}) return box.space.balances:update({{ '-', 'money', transaction.amount }}) end) ]]
источник

ВО

Виталий Охримук... in Tarantool
эээ...   блин,  мне туда 5000  инсертов передать надо :)
источник

DO

Dmitry Oboukhov in Tarantool
+

и если этот код планируется к повтору, то в session.storage ее сложить
источник

AS

Andrei 🦉 Sergeev in Tarantool
тогда лучше не eval, а написать хранимую процедуру на принимающей стороне
источник

ВО

Виталий Охримук... in Tarantool
ну видимо да
источник

VG

Vladislav Grubov in Tarantool
ну, на самом деле, с session.storage не так просто работать. При обрыве коннекта сессия рвется и сторадж вместе с ней, нужно это уметь правильно ловить и перезаливать код
источник

AL

Andrey L in Tarantool
Обязательно надо написать свою СУБД поверх тупого стораджа. А потом ваш код станет частью фреймворка - как бы внутри БД, и всё повторится (щас разрабы pl/sql,  pl/pgsql, t-sql и проч. нервно сглотнули). А масштабирование логики вне БД удавит СУБД так, что она не сможет эффективно использовать все свои преимущества, а будет только читать лишнее и лить данные наружу, вымывая кэш (архитектуру которого десятилетия доводили до ума). Потому пока один нормально запиленный инстанс СУБД с логикой внутри еще прет, в роли стораджа с внешней логикой он давно сливает (уже смасштабированный). Хотя... и так, и так завалят (как правило)
источник

MA

Mons Anderson in Tarantool
Я бы не реуомендовал рекомендовать устаревшие подходы. Нужен код? Есть картридж.
источник

DO

Dmitry Oboukhov in Tarantool
драйвер должен это сам делать
источник

MA

Mons Anderson in Tarantool
Но никто не делает. Хранение кода в session весьма упоротый сценарий. Это можно делать, если хорошо понимаешь что и как.
источник

DO

Dmitry Oboukhov in Tarantool
попиарю тут свою статью об этом :)

http://unera.net/all/2018/04/04/tarantool-session-storage.html
источник

VG

Vladislav Grubov in Tarantool
А модули как таскать? все же box.session.storage это для плоских процедур, имхо.
сторадж сессии штука безумно удобная, но редко для хранения кода. Я врапперы таскал, например, для замеров таймингов хитрых, но все же, если ты промахнешься тарантулом, может оказаться неловко
источник

DO

Dmitry Oboukhov in Tarantool
смысл тут: код проекта (скажем) на Go хранится и тестится рядом с кодом хранимок
источник

VG

Vladislav Grubov in Tarantool
но код проекта в Тарантуле может же быть огромным, с хитрой логикой, работы с очередями, сишными модулями, запросами по сети из Тарантула в Тарантул, запросами во внешние сервисы. Его так просто не принесешь
источник

DO

Dmitry Oboukhov in Tarantool
да конечно может. Но вот вопрос выше (с которого это обсуждение началось) звучит так: "я хочу транзакции с клиента выполнять"
откуда такое желание? оно от нежелания выкладывать их в БД. Моя версия - что это от того что  тут РАЗДЕЛЬНЫЙ майнтенинг, которого естественно дистанцируются.

session.storage именно для таких случаев задуман.

а какие-то общие зависимости можно (если нужно) держать около БД
источник

DO

Dmitry Oboukhov in Tarantool
в общем я не настаиваю, просто указываю что такой инструмент тоже есть и весьма удобен :)
источник

IK

Igor Kaukin in Tarantool
Улучил наконец момент и второй день штудирую тарантул, залип на вопросе:
—-
- есть хранилище профилей пользователей
- как извлечь запись я научился, в случае если шардирования нет
- когда шардирование есть, в примерах нашел как получить bucket_id чтобы потом послать запрос: local bucket_id = router:bucket_id(profile_id), где profile_id - это PK для хранилища профилей.
- как узнать bucket_id, если я хочу поискать запись не по PK, а например по login или email, которые в моем случае уникальны?
источник

AS

Andrei 🦉 Sergeev in Tarantool
map reduce запрос по кластеру
источник

IK

Igor Kaukin in Tarantool
не уверен, что прямо сейчас понял о чем речь, но гугл рулит, пасиб за подсказку
источник

RG

Ruslan Gilyazetdinov in Tarantool
господа, а есть вариант запустить докер с тарантулом на м1?
источник