Size: a a a

Saint P Ruby Community

2020 February 02

A

Artem in Saint P Ruby Community
Igor Morozov
о, а это неплохой вариант, спасибо. я посмотрю, что там

я вообще хочу из статей/докладов ссылаться на материал, где хорошо описано про исключения.
в книге пишут хорошо, но не каждый сможет себе позволить

поэтому если у кого-то ещё есть классные штуки - кидайте, пожалуйста

❤️
Вот классная статья - https://www.honeybadger.io/blog/ruby-exception-vs-standarderror-whats-the-difference/ как по мне это одно из важных правил, которое нужно предерживаться при написании своих исключений
источник

K

Kirill in Saint P Ruby Community
Nikita Bulai
Что-то примерное такое и делали: сайдкик джоб, который пересчитывал статистику. Только данных было овер 64 млн в таблице (и похожиш таьлиц штук 5, от 20 до 70 млн рекордов), и джоб запускался пару раз в день (не реал-тайм, но и данные дополнялись не часто)
у меня данные растут, клиент сел в жопу по таймауту уже, теперь зачесал затылок, хочу помочь решить как то проблему малой кровью
источник

RR

Ruslan Ryabov in Saint P Ruby Community
Kirill
у меня данные растут, клиент сел в жопу по таймауту уже, теперь зачесал затылок, хочу помочь решить как то проблему малой кровью
попробуй вьюху, это самая малая кровь, проще чем делать отдельную таблицу
источник

NB

Nikita Bulai in Saint P Ruby Community
Идея со вьюхой мне тож нравится
источник

RR

Ruslan Ryabov in Saint P Ruby Community
ты всегда можешь перейти с реалтайм пересчета при изменении, на крон, если не будет вывозить база
источник

K

Kirill in Saint P Ruby Community
сейчас буду ее как то писать, тут просто крестики-нолики с монгой, одна там, одна постгресе
источник

RR

Ruslan Ryabov in Saint P Ruby Community
постгрес умеет коннектить таблицы из других баз
источник

RR

Ruslan Ryabov in Saint P Ruby Community
попробуй посмотреть это, мб заедет у тебя
источник

K

Kirill in Saint P Ruby Community
Ruslan Ryabov
ты всегда можешь перейти с реалтайм пересчета при изменении, на крон, если не будет вывозить база
вот-вот, я его и начал как то планировать, только с орентиром что данные валидны сейв в сейв(минимум дают добро на 5 секунд задержки)
источник

RR

Ruslan Ryabov in Saint P Ruby Community
главное не вешай на коллбек АР 🙂
источник

K

Kirill in Saint P Ruby Community
Ruslan Ryabov
главное не вешай на коллбек АР 🙂
так там системы в разные базы смотрят, так которая пишет сейв живет на своем железе, а для операторов закупили отдельное железо, так что наверное только каким то вебхуком из одной вдругую сигнал буду слать
источник

RR

Ruslan Ryabov in Saint P Ruby Community
вариант, главное сделай лок, чтобы у тебя не получилось, что если у тебя было 2 инсерта примерно в одно время, они запустили 2 пересчета
источник

K

Kirill in Saint P Ruby Community
это про который у вас в редисе сидел?
источник

K

Kirill in Saint P Ruby Community
получается в редиске заводим стейт операций и потом джобой меняем с новый/выполнен? Что-то вроде шины?
источник

K

Kirill in Saint P Ruby Community
или лок транзакций в бд?
источник

RR

Ruslan Ryabov in Saint P Ruby Community
у нас было сделано так, что апдейт\удаление\добавление записи вызывало сервис, что мол надо сделать пересчет, он внутри себя проверял, есть ли сейчас в обработке уже персчет, через обычный флаг в редисе, который ставил воркер сайдкика
источник

K

Kirill in Saint P Ruby Community
аа, понял о чем ты!
источник

RR

Ruslan Ryabov in Saint P Ruby Community
был 1 воркер на пересчет, она при запуске он ставил флаг что уже работает, при завершении удалял его, пересчет был в 1 поток
источник

K

Kirill in Saint P Ruby Community
я подумал про коллизию записи где то, что давит на базу и получаем 2 стейта в один коммит(база обгоняет сайдкик)
источник

K

Kirill in Saint P Ruby Community
сейчас попробую вьюху написать хотя бы на пару выборок, посмотрю за сколько ее обновляет
источник