大家好,我需要在数据库获取十几万条数据,然后通过得到的这些数据,计算得到十几个参数(统计计算:方差、极差等)。
现在的任务是,需要从前端得到这所有的十几万条数据,以及另外计算得到的十几个参数。其宗问题是,在数据库中获取数据的过程非常慢,大约的两分钟。
现在我有几种解决方案:
描述的可能比较麻烦,非常感谢大家能为我指点迷津!感谢
|  |      1sagaxu      2016-11-28 09:29:21 +08:00 via Android 4 最好 | 
|  |      2sarices      2016-11-28 09:31:38 +08:00 大量数据还是服务端运算吧,毕竟浏览器效率提不上去 | 
|  |      3lslqtz      2016-11-28 09:32:19 +08:00 只提供一个 api ,这个 api 返回一个 json 。只提供另外的十几个参数。 返回几十万条太费资源,浏览器也容易卡死。 这属于在服务端计算,那么大的数量,建议不要传给客户端耗费带宽。 | 
|  |      4kimchan      2016-11-28 09:35:27 +08:00 同三楼...json 把十几万条数据返回......真的大丈夫? | 
|      5jimzhong      2016-11-28 09:50:38 +08:00 用任务队列吧,前端先把数据上传给后端,后端开始计算。前端定期 poll 计算状态,直到取得结果。 十几万条数据交给前端浏览器算会消耗很多内存的。 | 
|  |      6lrh3321      2016-11-28 10:24:34 +08:00 对实时性要求不高的话就提前算好,存另一个表里,然后定时更新 | 
|      8just4test      2016-11-28 10:39:39 +08:00 能描述下是什么业务场景需要把这些数据放在客户端吗?我觉得这个设计从根本上就有问题。 | 
|  |      11hujianxin OP | 
|      12just4test      2016-11-28 10:53:35 +08:00 | 
|  |      13kimchan      2016-11-28 10:53:47 +08:00 @hujianxin 具体是怎么个压缩法? 如果压缩后还是很大. 浏览器渲染会很慢. 任务队列是个方法. 另外. 计算结果是否可以放缓存? 还是说计算结果会经常变? | 
|  |      14tomczhen      2016-11-28 10:53:54 +08:00 x-y problem | 
|      15shibingsw      2016-11-28 10:59:00 +08:00 x-y problem | 
|      16just4test      2016-11-28 10:59:57 +08:00 | 
|  |      17windyboy      2016-11-28 11:00:30 +08:00 从前端获得十几万条数据是什么意思? | 
|  |      18Bryan0Z      2016-11-28 11:09:12 +08:00 via Android 几十万条数据压缩一下,也就几兆啊,为啥不能传… | 
|  |      19scys      2016-11-28 11:52:24 +08:00 | 
|  |      20scys      2016-11-28 11:58:05 +08:00 感觉楼主要考虑的是后端缓存,前端考虑的是绘制的程度,你确定要绘制那么精细的图表? 没讲过那么精细的图表就是,如果有了缓存,你就可以抽样,比如 1/2 这样返回。 你的 IO 压力减少了,同时各个函数间如果同意用一分缓存,连内存压力也减少了。 前端也能减少数据获取量,你的 CDN 也能减少传输量了。 --- 你究竟遇到啥问题,好像和你数量级没啥关系就是。 | 
|      21nicevar      2016-11-28 12:06:00 +08:00 不是专业做服务器开发的,有个建议,可以考虑中间用 mongodb 过度,有公司是这样做的 | 
|  |      22hujianxin OP | 
|  |      24Miy4mori      2016-11-29 01:53:32 +08:00 via Android 见过一个请求 6mb 的应用,用 ng2 做客户端排序和搜索,除了加载慢点也没啥毛病。客户端崩溃是不太可能的,浏览器还没娇惯到存十几兆数据就崩溃。其实我有一次用 js 读了 1g 的视频文件到内存里都没有崩溃,就是多吃了点内存……… | 
|  |      25Miy4mori      2016-11-29 01:55:11 +08:00 via Android 我觉得你要考虑考虑如果这个接口并发高了服务端会不会崩溃 |