我有一個捕獲工具,每秒捕獲大約1000個50字節的數據記錄,將它們有效地存儲到1千兆以太網網絡中的MongoDB集合中。Mongo增加延遲容忍度
我想將服務器帶到互聯網上,也就是說,捕獲源和Mongod數據庫將不再位於同一個LAN中。雖然吞吐量仍然可能是足夠的(我在兩點之間有100Mbps的雙向服務,並且捕獲速率爲1000 * 50 * 8 = 400kbps,所以即使假設大量開銷也有幾個數量級的空間),延遲可能成爲一個問題。
我可以調整Mongo,使其確實不是確認每寫幾秒鐘,從而克服任何延遲問題? Mongo確認每一個寫作?我的工具全部用Python編寫,使用Pymongo,每次發生數據點事件時都會觸發原子寫入。
我需要手動批處理嗎?
謝謝你:這正是我想知道的。是的,這是樣本數據,所以在這裏和那裏的損失幾乎不會有太大問題,因爲如果有永遠存在災難性問題的話,數據點可能會被「歷史地」提取幾天。 如何設置未確認的寫入?這是必須在mongo服務器和pymongo驅動程序中指定的東西嗎? 關於爲什麼要移出數據庫的好問題。他們是商業原因,而不是技術原因。是否有可能有一個輔助服務器以容忍延遲的方式饋送主服務器? – 2014-10-08 15:03:54
請參閱關注[在pymongo文檔中](http://api.mongodb.org/python/current/api/pymongo/mongo_client.html) - tl; dr:'w = 0'。至於第二個問題,是的 - mongo支持「副本集」 - 複製數據的節點集羣。你將有1個主要和N個次級。寫入將轉到主要,然後它會透明地將它們同步到輔助。 – 2014-10-08 15:22:54
好的只是一點反饋。在pymongo.MongoClient初始化中設置w = 0,使我的「通過互聯網」吞吐量(單個mondod實例)增加了4倍以上,因此延遲現在基本上是完全沒有問題的。根據我的用例,對非關鍵(類似樣本)的數據非常有用。 – 2014-10-08 16:02:12