169 похожих чатов

Привет, ребят, подскажите как делать, хотя вопрос и арихитектурный, но

проект на ларавел.

Итак, у меня есть 3 таблички, в них данные пишут джобы, данных много: сотни тысяч, будут десятки миллионов строк,
в табличках хранится статистика, например какой товар, когда заказали, когда за него перевели деньги и кто, на каких складах он сейчас есть (движения по складу) из этой статистики можно считать процент выкупов (отношение всех заказов к выдачам товаров) и прочее прочее.
те хранятся "сырые данные" из которых нужные бизнесу графики собираются..


так вот встала задача сделать большую отчетную таблицу, пока конечно не большую, но все же, мне нужно вывести процент успешных продаж (отношение заказов к выдачам) все эти данные есть в этих 3ех табличках.
Я набросал метод который получает данные, на пыхе считает, выводит, метод большой и запросы даже на тестовых данных тяжелые (индексы есть) что же будет когда будет выборка из 10 млн... думаю упрусь в memeory_limit..

Вообще мне нужен текущий процент и за последние 3месяца (за каждый из 3ех месяцев), щас я просто их считаю на пыхе (могу на sql перебросить) но для этго мне нужно получить ну прям очень много строк и сделать эту математику (100% переброшу на sql с агрегатными функциями сегодня), но даже на sql... зайдет 10 клиентов одновременно у каждого по 2млн строк, нормально ли шерстить это все "на живую", в голове крутится идея какого-то кеша, те считать эту таблицу где-то в фоне и из кеша уже показывать людям.

Вопрос, какие инструменты и подходы для этого есть? (редис не подойдет, он больше для горячих данных.., тут же в mysqlскладывать, кажется старнным, я конеччно не DB-ninga, но слышал про какие-то хранимые процедуры, но особо не понял зачем, про view table (хотя не уверен о их наличии в mysql)...
Вобщем путей решния вроде как несколько, но не могу выбрать верный, подскажите пожалуйста. (как бы делали вы)

13 ответов

30 просмотров

Может стоит такую обработку переложить на mysql сервер? Процедуры, функции..

поднимите рядом инстанс в копией БД и делайте отчеты на не. Отчеты обычно не нужны в реалтайме

Александр-Панков Автор вопроса
Vitaliy
поднимите рядом инстанс в копией БД и делайте отче...

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

Александр Панков
Нифигасебе, спасибо, а это решение хорошее, оно к...

надо ли вам сырые данные в mysql сразу писать ? при innoDB - оно 4 раза диск будет дергать, только чтобы сделать insert . Есть Кликхаус для всякого шлака начального

Александр-Панков Автор вопроса
Vitaliy
надо ли вам сырые данные в mysql сразу писать ? пр...

Хороший вопрос, а почему 4 раза на инскрт, расскажите пожалуйста?

Александр-Панков Автор вопроса
PSYTRGLES
посмотри кликхаус под такую задачу

Я смотрел, дело в том что данные не просто мне летят и я сохраняю, там есть логика обновления, а на сколько погуглил и кликхауса с обновлением строк беда

Александр Панков
Хороший вопрос, а почему 4 раза на инскрт, расскаж...

было на какой то конференции. Запись в лог, в кэш, мб неявная транзации , запись в БД ... тут помню что 4 раза, там не помню

Александр-Панков Автор вопроса
PSYTRGLES
да

Может какие-то триггеры в бд можно использовать, вот гуглю но пока не понимаю как их прикрутить, или это вообще я не туда ушел?

Александр Панков
Может какие-то триггеры в бд можно использовать, в...

пока ничего не скажу, абстрактный вопрос. на самом деле да, можно считать данные отдельно, на отдельном серваке, на реплике, частичной или полной. Но, это надо исходить из проблемы. Оценивать характер нагрузки и сами данные. Бывает такое, что сначала кажется, что все данные нужды сразу, а в процессе оптимизации можно найти другие подходы к выборкам, может оказаться что не всё надо. Т.е. какого-то универсального решения нет. Можно попробовать хранить какие-то агрегированные данные отдельно.

Александр-Панков Автор вопроса

Вот да, а где их хранят обычно? Тут же в базе?

Александр Панков
Вот да, а где их хранят обычно? Тут же в базе?

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

Похожие вопросы

Обсуждают сегодня

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
как быть с принтером? такой подход прокатит?
zamtmn
12
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Привет. Подскажите, как правильно сматчить лист фиксированного размера, чтобы компилятор не говорил мне о неполном паттерне? Допустим что-то такое [x', y'] = sort [x, y]?
Arseny
8
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
Мужики. привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных элементов...
Kraszx
2
Карта сайта