我們的網站爲我們的客戶提供各種數據服務;其中之一是計量數據。有些儀表每15分鐘記錄一次信息,有些每分鐘記錄一次。這些數據被髮送到我們的SQL數據庫。處理大型數據集圖形和顯示的最佳方式
所有這些數據都通過圖表(生成的服務器端通過PHP和JPG圖形)顯示,每個日誌條目在可摺疊表(jQuery 1.10.2)中顯示爲一行。
當客戶端想要觀看的數據,他們選擇日期範圍和計他們想觀看。如果他們想查看每分鐘記錄的記錄的最後3天,那麼記錄速度非常快。如果他們想要查看其中的2個,則需要大約15-30秒才能加載。真正的問題出現在他們想要查看數月的數據時;特別是超過1個規格。這可能需要15-20分鐘才能加載,瀏覽器會反覆詢問是否要停止填充可摺疊表格行(jquery)。
顯然,這是一個問題,因爲客戶希望有一個比較快的響應(1-5分鐘最大值)。理想情況下,我們也希望能夠一次抽出幾個月的測量數據。我們現在唯一可以做到的方式是每週提取兩週數據並手動編譯總數。
僅供參考:如果我想爲我們的一個分鐘日誌記錄儀中的兩個記錄一個月的數據,那麼會有86,400行通過jQuery添加到可摺疊表格中。該頁面大約需要。 5分鐘即可加載,在此期間瀏覽器非常慢。
我的問題是:什麼是拉/圖形的最佳方式/填充使用基於PHP的服務器(Symfony的1.4框架)和JavaScript的數據?
我們應該考慮升級我們的分配處理能力/ RAM(我們GoDaddy代管)?有沒有更快的方式來填充collapsibles比jquery?我們所有的calculatoins都在服務器端完成。我們是否應該提取原始數據並讓客戶端進行數據處理?我們應該在客戶端和服務器之間拆分數據處理嗎?
下面是網頁的截圖。它修剪,不顯示更多的客戶敏感信息:
這可能不適用於您,因爲您還需要顯示圖表。然而,每當我需要拉大型數據集(數百萬行)時,我所做的一件事情就是不會將整個事情傳遞給客戶端。只傳遞前200個。然後給用戶提供更多數據請求的能力。例如,像無限滾動一樣。如果你有興趣,我可以給出更詳細的答案。 – Pompey
如果需要在服務器上完成處理,則可以預處理和緩存數據。將預先緩存的數據(array_merge也許)聯合在一起很容易,速度可能要快很多。除此之外,你可以加載數據塊。在向下滾動時,通過ajax分頁數據和/或加載。 –
84'000個數據點對於閱讀數據的人來說幾乎難以管理?您是否考慮過在繪圖之前對數據進行彙總,以使數據集繪製得更小? – Twelfth