2011-08-18 80 views
0

我製作了一個應用程序,定期接收來自少數Web客戶端的位置數據。我使用couchdb做了一個快速實現,但由於couchdb爲每個更新創建了一個新的修訂版本,並且數據經常更新,所以它消耗了大量磁盤空間,而歷史數據沒有多大意義。我查看了MongoDB,但是當我在考慮如何實現MongoDB時,我有另一個想法:使用全局對象作爲存儲

全局對象位於進程範圍內,因此它可用於在會話之間共享數據。持久性超越會話不是必需的,所以我完全刪除了數據庫並將所有數據存儲在全局對象中(並且爲了便於用戶使用javascript在HTML5 localStorage中保存了一些數據)。後端的複雜性大大降低,解決方案感覺有點優雅,但我仍然覺得我需要洗個澡...

所以對我的問題:這個解決方案是否有任何明顯的缺陷,我避難沒想過?

+0

沒有足夠的信息。你打算如何使用這些數據?你將如何查詢它? etc. –

+0

數據存儲在散列表中,我不需要進行任何查詢,因爲我直接使用ID訪問它們。 –

回答

0

恭喜你重新發現了內存緩存。 (我做了兩次) 如果你需要存儲這些數據,那麼你實際上應該將它保存到數據庫,因爲服務器應用程序重新啓動將刪除RAM中的所有數據。所以實際上最好使用memcache和異步寫入數據庫。

+0

感謝:P我不需要堅持數據,因爲正確的狀態將在一個更新週期後重新生成。我更加好奇這種存儲大量數據的影響。 –

+0

爲了存儲大量的數據,你需要有大的RAM。 memcache還有一個名爲memcacheDB的數據庫,它基於BarkleyDB,但使用memcache機制,它可能是一個解決方案。 –