2012-01-20 110 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點,你需要一個非常好的顯示器。

相關問題