因此,對於一些研究工作,我需要分析大量的原始運動數據(目前幾乎是一個數據,並增長),並吐出定量信息和圖表。加載和分析大量數據
我使用Groovy編寫了大部分代碼(使用JFreeChart進行製圖),當性能成爲問題時,我重寫了Java中的核心部分。
問題是分析和繪圖需要大約一分鐘,而加載所有數據需要大約5-10分鐘。正如你可以想象的,當我想對繪圖進行小的改變並看到輸出時,這會變得非常煩人。
我對解決這個一對夫婦的想法:
加載所有的數據到一個SQLite數據庫。優點:它會很快。如果需要的話,我將能夠運行SQL來獲取彙總數據。我不得不寫所有的代碼。另外,對於一些情節,我需要訪問每個數據點,因此加載幾十萬個文件,某些部分可能仍然很慢。
Java RMI返回對象。所有的數據都被加載到一個根對象中,當它被序列化時,大約是200兆。我不確定需要多長時間通過RMI傳輸200meg對象。 (同一客戶)。
我不得不運行服務器並加載所有的數據,但這不是什麼大不了的事情。
主要職業:應該採取的時間最少寫
運行加載數據和服務器VM內執行上命令Groovy腳本的服務器。總體而言,這似乎是最好的辦法(執行時間與性能,以及其他長期利益)
我想知道的是有其他人解決這個問題呢?
後分析(3/29/2011):寫了這個問題幾個月後,我結束了不得不學習R運行一些統計數據。使用R對於數據分析和聚合來說比我所做的要容易得多,速度也更快。
最終,我結束了使用Java運行初步聚合,然後運行其他所有內容在R。 R製作漂亮的圖表要比使用JFreeChart容易得多。
我知道數據庫總體上是最好的選擇,也是最可擴展的,什麼不是。如果我正在寫一個實際的應用程序,這將是沒有問題的。 我認爲你是對的,但如果#2可以用最小的性能打擊來實現(因爲它可以在大約5行代碼中實現),這可能是我最好的選擇。 –
@Rev - 不是「最具擴展性」。像Hadoop這樣的技術更具可擴展性。 –