2012-05-15 42 views
-1

我做了一些關於MongoDB的研究,並認識到它沒有任何查詢緩存。Rails 3:如何在MongoDB中實現查詢緩存

MongoDB沒有實現查詢緩存:MongoDB直接從索引和/或數據文件提供所有查詢。 (http://docs.mongodb.org/manual/faq/fundamentals/)

有沒有辦法在Rails for MongoDB中實現查詢緩存?我只想要與MySQL查詢緩存相同的行爲。第二次同樣的數據庫查詢應該更快。

謝謝!

回答

2

您可以使用memcached添加緩存層,但MongoDB可能仍然會將數據從上次讀取/寫入操作分頁到內存中。將MongoDB服務器內存用於memcached將與其內存映射文件模型競爭。 MongoDB的內存較少意味着更多地交換到磁盤。

如果您正在運行地圖縮減作業(大到足以導致分頁),可能值得緩存結果,但正確跟蹤更新可能非常棘手。

+0

+1對於這個答案,問題是混淆mongoDB如何運作。他應該閱讀:http://www.mongodb.org/display/DOCS/Caching –

+0

謝謝你的答案約書亞! @Adam:我的確看過這個簡短的緩存文檔。也許我沒有正確理解它!?操作系統是否將MongoDB的結果自動存儲在內存中?如果是,我怎樣才能再次檢索這些數據? –

+0

MongoDB使用內存映射文件,然後讓操作系統管理數據進/出內存的實際分頁。除非您在其他地方有內存壓力,並且數據因此被換出,否則當您訪問數據時,數據仍將保留在RAM中,因此只需要第一次訪問磁盤。一旦你用這種方式加熱它,你就可以有效地將MongoDB看作內存中的緩存,除非你的內存不足。 –