Однако, когда речь идет о динамическом обновлении содержимого на веб-странице, JavaScript часто является более подходящим инструментом. JavaScript выполняется непосредственно на стороне клиента, поэтому операции могут выполняться мгновенно без задержек, связанных с сетевыми операциями. JavaScript также предлагает широкие возможности для манипулирования DOM и реагирования на действия пользователя, что делает его идеальным для разработки интерактивных веб-страниц. Python с Flask также может использоваться для выполнения вычислений на сервере, но в отличие от SQL или JavaScript, он не оптимизирован для работы с данными. Python с Flask может быть полезным для более сложных вычислительных задач, подтягивания данных из базы данных и предварительной обработки данных перед их отображением на веб-странице. В общем, выбор между SQL, JavaScript и Python с Flask зависит от конкретных требований проекта. Если требуется выполнять сложные вычисления над данными, хранящимся в базе данных, SQL может быть более эффективным и быстрым решением. Для интерактивности и динамического обновления страниц JavaScript является лучшим выбором. Python с Flask может быть полезен для более сложных вычислительных задач на сервере.
объясним на пальцах. Заголовок у вопроса очень некорректный. Это как спросить, что быстрее - пылесос или стиральная машина? Очевидно, что обработку данных стоит производить в БД. Она для этого и предназначена, чтобы обрабатывать большие объемы данных. JS тоже может обрабатывать большие объемы данных, но чтобы это сделать, необходимо передать данные, что приведет к загрузке канала между сайтом и базой данных. Кроме того, для обработки значительного объема данных в многопоточном режиме, все вышеперечисленное следует умножить на количество посетителей сайта. Если вы оставляете все данные в памяти приложения, их необходимо еще синхронизировать с БД, что может вызвать проблемы. Несмотря на это, в некоторых ситуациях может потребоваться считывание данных в приложении. Однако в общем случае ответ на вопрос однозначен - обработку следует производить в БД.
Вопрос про быстродействие. Что важнее - использование PostgreSQL или JS на сайте? Важную роль играет машина, на которой будет происходить вычисление. Где будет использоваться JS - на клиентской стороне в браузере пользователя или на сервере с использованием Node.js? А PostgreSQL будет работать на той же машине или на другом устройстве? Информация о процессоре и объеме памяти на машине также имеет значение. Также учтите, что при работе с данными из базы, которые будут обрабатываться в JS, потребуется время на передачу данных, поэтому в теории лучше выполнить вычисления непосредственно в PostgreSQL. Однако точного ответа на этот вопрос сложно дать. Рекомендуется провести тесты производительности и получить реальные данные.
Разница в объемах данных. Если вы хотите найти средний чек по ста покупкам, то нет разницы, как это сделать. Но если у вас сто тысяч покупок, то вычисления на Node.js могут стать проблематичными, даже без использования ORM. Если у вас сто миллионов покупок, то проблема возникнет и в PostgreSQL.
Если вам требуется найти среднее, максимальное или минимальное значение для разных группировок данных из разных таблиц или представлений, то здесь используется OLAP (Online Analytical Processing). Поискайте о нем в интернете, есть как расширения для классической RDBMS, так и специально спроектированные базы данных. Но следует помнить, что высока вероятность использования большого объема памяти.
Мужчины уже ответили на основной вопрос. Я хотел бы добавить, что чем больше данных мы обрабатываем, тем более дорогой становится процесс передачи информации из места хранения в блок вычислений. В концепции трехзвенной системы, описанной как RDS (Postgres) / NodeJS / Python / Web, самый удобный способ вычислений - это делать прямо в Postgres. Поскольку данные находятся рядом, нет необходимости передавать их по сети. Если по какой-то причине Postgres не может выполнять вычисления или не обладает необходимым API, то мы передаем нужный набор данных на клиентскую сторону с помощью курсора (SELECT), где и производим вычисления с использованием Python / Node. При этом, стоит учитывать, что это займет время, а также результаты вычислений будут отправлены обратно. То есть данные будут передвигаться туда и обратно, как автобусы. Чтобы однозначно определить, что является хорошим и плохим подходом, нужно провести эксперимент. Однако на данный момент уже очевидно, что самый удобный способ - это вычислять прямо в хранимых процедурах Postgres. Единственным возражением может быть несовершенство языка PL/pgSQL, но я бы также проверил этот факт. В больших объемах данных эта проблема (передача данных туда и обратно) становится еще более выраженной. В таких случаях обычно стараются разработать систему таким образом, чтобы данные были только для записи и не изменялись после загрузки в хранилище, а задачи, работающие с этими данными, выполнялись в вычислительном кластере физически близко к хранилищу. Обычно на клиентской стороне отображаются сводные отчеты и аналитика, которые обычно намного меньше по размеру, чем основные данные в 100-10000 раз.