个人建议放在你的程序中进行计算。
理由是:
1.增加了数据库的负担,会让数据库返回的时间边长,导致你持有连接的时间边长,如果你处于事务中,还会导致你持有锁的时间变长等等。
2.程序和数据库基本都是内网传输,带宽都是相当大的,基本上不用考虑网络方面的问题。
3.至于你说的程序消耗,如果是业务处理,这本来就是它的本职工作,你如果觉得获取的数据太多导致数据库压力大,你可以考虑修改下数据结构,冗余字段或者存储的时候计算好结果,减少数据的获取量。
4.你的程序集群应该比较容易扩容的,你说的内存和计算性能,相对于数据库更容易获得
流式计算,比如,Spark、Flink、Kafka...
不管是在数据库, 还是是后端程序都可以. 几个数字字段的计算, 或者网络传输 消耗微乎其微. 你程序可能的瓶颈根本就不在这里.
听君一席话,如听一席话
@不识少年愁:
二楼说的对
楼上也说了,都可以。但是我觉得最好是各司其职(职责单一原则),数据库就只是获取基础数据,程序中进行计算,而且计算本身属于业务代码。
首先 #二楼已经给了答案。
这里补充说点,对于你写的sql语句程序里计算和数据库自身计算其实都没啥大问题...
关于数据传输,这个完全取决于你数据库的数据量了,如果数据量极大,以上说的方法可能都不是很可取了。如果数据不大,你可以使用二楼的思路也么问题。
除此之外,其实你还可以利用数据库的存储过程来解决,当然说到存储过程肯定会有人说不要用,用于不用要考虑场景从实际出发,比如你就一个小项目,开发维护的人员就那么多,对数据库也比较了解,规范也有,等等等等,那用存储过程也没啥...当然使用存储过程了会更简单的...
放在后台处理 别放数据库
这个需要考虑cpu密集型还是io密集型
个人觉得吧,数据库其实就是数据的仓库。好比一个大车库,就是停车用的。
运算应该属于数据处理范畴了,是程序的功课。