大数据的显示优化问题

2018-09-06 19:18:16 +08:00
 lovelybear

我们现在的软件的数据量比较庞大,大概 200-300 万的节奏,用户希望可以将我们的数据以图表的方式,用 select 语句查询到的数据大概有 1w 以上,如果显示在图表上的话,会很慢,影响用户体验。请问如何优化呢? 其实,编程不仅仅是实现功能,内部的优化才是真正体现功力的地方,以前的编程过于注重业务逻辑,而忽视性能优化,这的确是个错误啊!

2428 次点击
所在节点    程序员
15 条回复
swcat
2018-09-06 19:45:38 +08:00
缓存,定时更新
fangchang
2018-09-06 19:48:57 +08:00
materialize
lovelybear
2018-09-06 20:16:04 +08:00
@fangchang C# WPF 的
lovelybear
2018-09-06 20:16:42 +08:00
@swcat 嗯,具体如何操作呢?比如写个类定时更新,然后缓存进内存或者是文件?
swcat
2018-09-06 20:34:47 +08:00
function getData()
{
if (cache.hasExpired() )
{
cache.update()
}
return cache.data
}

hasExpired 方法就是你的更新策略,
如果写少读多,可以设置为最后更新时间
不确定就弄成定时更新
swcat
2018-09-06 20:35:38 +08:00
写进文件还是内存看情况啊
lihongjie0209
2018-09-06 20:48:13 +08:00
图表是什么数据? 报表: 统计性的 或者是地图: 展示型的


对于统计型
如果数据是只读的, 那么你可以提前计算好, 存哪里无所谓, 然后展示给用户看
如果数据是可写的, 那么就需要你动态计算了, 也就是你提到的会卡
以上两种方法的混合解决方案: 首先定时计算, 但是这个数据可能是不准确的, 因为数据还可写, 在每次更新数据的时候重新计算一遍, 最佳退化到只读的情况, 最差退化到可写的情况.



对于展示型的数据:
展示粒度没必须要那么细, 一万条数据 1000 条展示个大概, 放大的时候再加载嘛
liprais
2018-09-06 20:56:20 +08:00
预先计算,近似估计
mingyun
2018-09-06 22:45:38 +08:00
clickhouse 了解下 300 亿数据查询几秒
lovelybear
2018-09-07 08:31:01 +08:00
@lihongjie0209 就是 chart 控件
owenliang
2018-09-07 09:10:34 +08:00
elasticsearch 间隔取样
Eoston
2018-09-07 09:23:10 +08:00
数据采样
lovelybear
2018-09-07 09:36:21 +08:00
@Eoston 恩看上去是这样,但请问具体如何实现?
比如
int totallength=mydata.Length;

for (eachdata in mydata)
{

}
Eoston
2018-09-13 09:43:29 +08:00
@lovelybear 对这一万条数据每隔 10 条取一条,然后综合返回给前端~~数据量特别大的时候,可以用多线程对拿到的数据分组,每组里面隔一定的数据取出来
lovelybear
2018-09-14 10:30:17 +08:00
@Eoston 多谢,问题已经解决了,隔 50 取一条

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/486867

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX