2012-01-20 51 views
3

我刚刚开始解决这个问题,我想让用户任意选择范围和过滤器,使他们能够在网页上绘制大型数据集(实际上应该不超过1000万个数据点)。我使用elasticsearch作为存储和聚合数据的方法,以及用于跟踪摘要数据的redis,而d3.js是我的图形库。绘制大型数据集(1M +)的好策略是什么?

我对最佳解决方案的看法是在可用于从中绘制的不同分组中预先计算出摘要。因此,如果数据点存在数年,我可以按月份和日期分组(按我的意思),但是可以按照半天,四分之一天,小时,半小时等分组进行分组。然后,在我查询图形数据我做了一个快速计算,看看哪些分组会给我一些理想数量的数据点(比如1000)。

这是解决问题的合理方法吗?有没有更好的办法?

+1

10M积分?人们这样做吗? :shocked: –

+1

我会运行一些测试,看看10M点对你的服务器,数据库和吞吐量有什么影响。用户无需做任何他们想做的事情,只要它会严重影响其他人的系统性能。测试,如果它降低了速度,那么请设置一个他们可以选择的数字的上限。避免使用自己的网站是一种防御性的策略。 –

+1

我没有看到任何理由让这么多数据点可用,因为它远远超出了屏幕显示它们的能力?我显然会记住DOS,但如果我基本上只需要几个M请求服务几个K数据点,它就会变得更加不容易。 –

回答

2

你应该重新考虑数据量...

  1. 即使在桌面绘图应用程序是罕见表明,每小区多点 - 例如由于性能原因,原点会显示一个警告,显示它只会显示一个子集。例如,你可以扔掉每个第三点以减少它们。
  2. 你应该让用户能够放大或浏览周围探索数据,如分页式风格......
  3. 在Lucene社区中对它进行分组或分面如何在许多文档中进行分组,但确保你有足够的内存+ CPU
0

你不能在你的屏幕上绘制(通常)比点更多的点。所以要绘制1M点,你需要一个非常好的显示器。

相关问题