Что быстрее SQL или Javascript?



@asyaevloeva

Есть база данных на RDS postgres, и есть сайт на js. Нужно проделать различные вычисления над данными и передать их на фронтенд (найти средние/макс/мин значения по-разному сгруппированных данных из разных таблиц/вьюх и тд).
Как будет лучше относительно скорости загрузки на сайте, проделать эти вычисления на sql или на js? (или на python используя фласк например?)


Решения вопроса 5



@ipatiev

В общем, чтобы не издеваться над девушкой, объясним на пальцах.

Во-первых, заголовок у вопроса чудовищно некорректный. Это все равно что спросить, «что быстрее — пылесос или стиральная машина?»
Во-вторых, ответ на вопрос «производить ли обработку данных в БД или же запросить все данные в клиентское приложение и обрабатывать там» совершенно очевиден: обработку данных следует производить в общем случае только в БД. Она для этого и придумана. Чтобы обрабатывать значительные объемы данных.

Да, js тоже «может» обрабатывать большие объемы данных.
Но чтобы значительный объем данных обработать, его сначала надо передать, полностью забив канал между сайтом и базой
Чтобы значительный объем данных обработать, его надо сначала проиндексировать. Причем делать это каждый раз, а не использовать уже имеющийся набор индексов
Чтобы значительный объем данных обработать, надо иметь значительный объем памяти или упасть из-за её недостатка
Чтобы значительный объем данных обработать в многопоточном режиме (а сайт как раз является многопоточной системой), все вышеперечисленное надо умножить на количество посетителей сайта — при каждом запросе перегонять весь массив данных, выделять память, индексировать, считать. Если же вы оставляете все данные в памяти приложения, то их тогда надо как-то синхронизировать с БД. То есть вы себе собираете кучу проблем на пустом месте.

Несомненно, из любого правила есть исключения. И бывают ситуации, когда приходится считать в приложении.
Но на вопрос в общем виде ответ будет совершенно однозначный. Не «может так, может сяк», а только в БД.


Ответы на вопрос 1



@hrum

если исключить ноду на сервере, то на практике данные (консолидированные в соответствии с запросами) берем с сервера из базы данных и передаем их через апач на клиента (пользовательский браузер), а там на JScript делаем с ними что угодно, в смысле вычисления / графическое представление.
Профит: сервер может обслуживать больше запросов и быстрее, обработка на стороне клиента (это уже от его РС-мощностей зависит насколько быстро будет рендерится) но если РС нормальные и это приложение бизнес и основное в браузере, то обычно без проблем.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *