• Где было бы корректно обрабатывать данные, на стороне БД или ЯП?

    @nobodywithbody Автор вопроса
    Данных правда много(относительно конечно), более 1000000. К сожалению специалистом в БД такого уровня не являюсь, как и такого же рода специалистом в алгоритмах. Поэтому на данном этапе оно умудряется тормозить везде) Можно конечно наделать разных вариантов, сейчас есть около 4, плюс всякие вариации на тему, но хотел не велосипедить, а узнать может кто сталкивался. Типа "когда запросы подобной сложности и кол-во данных тоже много, то надо копать в elasticsearch/postgres/mongo/erlang/алгоритмы", или вообще комбинация "Простые запросы правильно в бд, потом парареллить фильтрацию в коде", мол best practice и все такое.
  • Где было бы корректно обрабатывать данные, на стороне БД или ЯП?

    @nobodywithbody Автор вопроса
    Скрипт способен на текущей момент выполняться до 2 минут. Это можно сказать сердце сервиса, потому вызывается часто. Вызывается для конкретного пользователя. Распараллелить не плохо звучит. Но я так понял, вы за вариант решения задачи непосредственно в коде?
  • Где было бы корректно обрабатывать данные, на стороне БД или ЯП?

    @nobodywithbody Автор вопроса
    Как один из вариантов. А это не противоречит ответственности "слоев"? Например, код - бизнес-логика, а база - хранение и фильтрация/сортировка/etc данных. Получается часть задач базы на себя берет код, тем самым мы признаем что наше хранилище не способно совершать подобного рода запросы. Может тогда хранилище не то? Не холивара ради, а понимания для) За динамическое программирование спасибо, ща буду изучать!
  • Где было бы корректно обрабатывать данные, на стороне БД или ЯП?

    @nobodywithbody Автор вопроса
    В целом вы правы. Даты загоняются в DateTime, но получается что их там 300000+(дальше будет больше 10000000), где надо еще каждый подравнять и найти пересечения, все отсортировать, а потом сгрупировать. С другой стороны было бы возможно хранить прямо ts и вычислять исключительно математически без создания лишних объектов, по факту получается, но также нужно исключить выходные дни и тут без преобразования в DateTime я уже не обойдусь. Кешировать получиться малую часть, запросы хоть и похожие, но исходные данные постоянно меняются, т.к. сам запрос меняет эти данные, выигрыш будет, но не большой + будет повышенное потребление памяти. Узкие места знаю где, их довольно много, и решение каждого будет напоминать затыкание дыр тонущего корабля) Потому и вопрос поднялся. Возможно я просто взял неподходящий инструмент.