我正在開發一個由node.js中的服務器組成的應用程序,基本上它是一個偵聽傳入連接的套接字。性能套接字nodejs + mysql
到達我的服務器的數據來自GPS跟蹤器(約30個),每個分鐘每分鐘發送5條記錄,因此在一分鐘內將有5*30 = 150
記錄,在一小時內我將有150*60 = 9000
記錄,日9000*24 =216000
和一個月216000*30 = 6.480.000
萬條記錄。
除了緯度和經度,我必須在數據庫(MySql)中存儲每個跟蹤器的累積距離。每個跟蹤器發送到服務器位置,每次接收數據時我都必須計算兩個點之間的kms(當數據量達到數百萬條記錄時,減少對數據庫的處理)。
所以問題是,總結公里和存儲它的正確方法是什麼?
我想總結整個數據庫不是一個解決方案,因爲在數百萬條記錄中會很慢。也許,每次我必須存儲一個新點(每分鐘150次),可以在數據庫中選擇最後一個記錄,然後將累積公里和新距離計算在一起?
您可以使用內存數據存儲,如[Redis](http://redis.io)來存儲累積距離。這是一個關鍵 - >值存儲器,因此您可以使用跟蹤器ID作爲密鑰,然後使用add方法將新距離添加到運行總計。 –
同意@DanielWaghorn我們在工作中使用Redis和MongoDB的組合,並且每天處理500k條記錄。 Redis是一個很好的解決方案,用於保存鍵/值數據,否則這些數據在數據庫查詢中會很昂貴。在你的情況下,你將每分鐘計算點之間的距離,然後將該總和作爲你的redis存儲中特定鍵的新值。 Redis是原子性的並且同步任何寫入,聽起來像是您項目的理想用例。我們還設置了一個定期將值寫入磁盤的cron作業,以防redis存儲崩潰(尚未發生) – Alex