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