Size: a a a

Saint P Ruby Community

2020 February 02

v

vizvamitra in Saint P Ruby Community
агент подключаешь в рантайме и шлёшь из него граф на сервер
источник

v

vveare138 in Saint P Ruby Community
на локалхост)
источник

K

Kirill in Saint P Ruby Community
Ребята, кто разруливал такую ситуацию, данных много(2-3 млн) в таблице, сделана страница куда выводятся резуьтаты статистики, сейчас все работает на связке постгресс+монго, тормозит все адово, клиент не хочет уступать в сторону кеширования части данных, просит реалтайм вывод.

Я вижу схему так, берем таблицы, которые хранят данные для расчетов, создаем одну таблицу, в которой будут колонки с параметрами для графиков(проценты, разница и т.п) пишем импорт данных с применением их написанных считалок этого всего добра, расчитываем все в бекграунде и заносит потихоньку в эту одну таблицу.
Так же пишем обработку новых данных, где на бекграунде будет пересчитывать поля(процентные, разница) и +=1 для счетчиков(int) каждый раз, когда поступает процесс создания.

Входные:
Давит не сильно, 50-70rpm на новые данные

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

Кто разруливал реалтайм статистику с кучей процентов и вывода разниц, когда требовали - здесь и сейчас(новый сейв - покажи нам его прямо сейчас) ?
источник

v

vizvamitra in Saint P Ruby Community
vveare138
на локалхост)
на локальный сервер, без разницы) либо он тебе формирует файл с графом и коммитишь его в репу, а сервис подцепляет
источник

v

vizvamitra in Saint P Ruby Community
даже проще так
источник

RR

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

Я вижу схему так, берем таблицы, которые хранят данные для расчетов, создаем одну таблицу, в которой будут колонки с параметрами для графиков(проценты, разница и т.п) пишем импорт данных с применением их написанных считалок этого всего добра, расчитываем все в бекграунде и заносит потихоньку в эту одну таблицу.
Так же пишем обработку новых данных, где на бекграунде будет пересчитывать поля(процентные, разница) и +=1 для счетчиков(int) каждый раз, когда поступает процесс создания.

Входные:
Давит не сильно, 50-70rpm на новые данные

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

Кто разруливал реалтайм статистику с кучей процентов и вывода разниц, когда требовали - здесь и сейчас(новый сейв - покажи нам его прямо сейчас) ?
сделай материализованную вьюху
источник

K

Kirill in Saint P Ruby Community
постгресную?
источник

RR

Ruslan Ryabov in Saint P Ruby Community
да
источник

RR

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

RR

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

RR

Ruslan Ryabov in Saint P Ruby Community
у нас обновление было порядка 2-3 секунд
источник

K

Kirill in Saint P Ruby Community
а обьем данных по которым вьюха работала?
источник

v

vveare138 in Saint P Ruby Community
Kirill
Ребята, кто разруливал такую ситуацию, данных много(2-3 млн) в таблице, сделана страница куда выводятся резуьтаты статистики, сейчас все работает на связке постгресс+монго, тормозит все адово, клиент не хочет уступать в сторону кеширования части данных, просит реалтайм вывод.

Я вижу схему так, берем таблицы, которые хранят данные для расчетов, создаем одну таблицу, в которой будут колонки с параметрами для графиков(проценты, разница и т.п) пишем импорт данных с применением их написанных считалок этого всего добра, расчитываем все в бекграунде и заносит потихоньку в эту одну таблицу.
Так же пишем обработку новых данных, где на бекграунде будет пересчитывать поля(процентные, разница) и +=1 для счетчиков(int) каждый раз, когда поступает процесс создания.

Входные:
Давит не сильно, 50-70rpm на новые данные

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

Кто разруливал реалтайм статистику с кучей процентов и вывода разниц, когда требовали - здесь и сейчас(новый сейв - покажи нам его прямо сейчас) ?
а почему сразу не писать агрегированные данные?
источник

RR

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

RR

Ruslan Ryabov in Saint P Ruby Community
по сути ты свою стату, которую выводишь, выделишь в SQL запрос
источник

RR

Ruslan Ryabov in Saint P Ruby Community
и примерно его скорость работы будет равна пересчету +\-
источник

NB

Nikita Bulai in Saint P Ruby Community
Kirill
Ребята, кто разруливал такую ситуацию, данных много(2-3 млн) в таблице, сделана страница куда выводятся резуьтаты статистики, сейчас все работает на связке постгресс+монго, тормозит все адово, клиент не хочет уступать в сторону кеширования части данных, просит реалтайм вывод.

Я вижу схему так, берем таблицы, которые хранят данные для расчетов, создаем одну таблицу, в которой будут колонки с параметрами для графиков(проценты, разница и т.п) пишем импорт данных с применением их написанных считалок этого всего добра, расчитываем все в бекграунде и заносит потихоньку в эту одну таблицу.
Так же пишем обработку новых данных, где на бекграунде будет пересчитывать поля(процентные, разница) и +=1 для счетчиков(int) каждый раз, когда поступает процесс создания.

Входные:
Давит не сильно, 50-70rpm на новые данные

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

Кто разруливал реалтайм статистику с кучей процентов и вывода разниц, когда требовали - здесь и сейчас(новый сейв - покажи нам его прямо сейчас) ?
Что-то примерное такое и делали: сайдкик джоб, который пересчитывал статистику. Только данных было овер 64 млн в таблице (и похожиш таьлиц штук 5, от 20 до 70 млн рекордов), и джоб запускался пару раз в день (не реал-тайм, но и данные дополнялись не часто)
источник

K

Kirill in Saint P Ruby Community
vveare138
а почему сразу не писать агрегированные данные?
считает много(27 графиков, проценты, разница, сравнение вчера - сегодня и прочая каша)
источник

RR

Ruslan Ryabov in Saint P Ruby Community
а там уже индексы можно навесить и тд
источник

RR

Ruslan Ryabov in Saint P Ruby Community
https://github.com/scenic-views/scenic
вот через него делал, + у тебя версионирование SQL
источник