我想知道如果使用像mongoDB這樣的NoSQL數據庫,建議使用Memcache。使用MongoDB時建議使用Memcache嗎?
回答
使用內存緩存的概念從你有想法源於「額外內存「坐在某處。 MongoDB和MySQL(以及大多數數據庫)都會佔用每一個他們可以獲得的RAM。
對於非常常見的MySQL/Memcache,有很好的文檔記載,使用Memcache更多的是減少服務器上的查詢負載,而不是加快查詢速度。一個好的內存緩存實現基本上只是試圖將最常見的數據保存在內存中,這樣數據庫服務器就可以在更大的內存上流失。
事實上,這是我的經驗是使用內存緩存的通常成爲依賴內存緩存以保持系統性能。
回到原來的問題,你在哪裏有額外的RAM?
如果您在Web服務器上有額外的RAM,則可能可以使用Memcache。當然,你也可以在Web服務器上本地運行Mongo。只需要從主服務器上獲取所需的數據。
如果您在其他計算機上有額外的RAM,那麼使用memcache並沒有什麼意義。只需將更多節點添加到MongoDB副本集或分片。這是MongoDB實際照耀的地方。由於分片/複製,您可以向Mongo Horizontally添加更多RAM以提高性能。有了SQL,「添加更多服務器」非常困難,因爲連接不能很好地擴展。但是對於Mongo來說,僅僅爲一個問題添加更多的節點是完全可能的。
起初沒有。如果稍後遇到性能問題,請添加緩存層(memcache)。但是,如果您要使用Redis,則無法獲取任何內容,因爲Redis已將所有內容存儲在內存中。
MongoDB無論如何都將所有東西都存儲在內存中,並且以類似的方式工作,這是一個基於鍵值的系統,但是我相信MongoDB更靈活,因爲它允許在內部存儲BSON對象。
(只是爲了澄清,MongoDB使用BSON,JSON的一種特殊形式,用於存儲的所有數據,包括對象中的對象。)
答案取決於您的使用情況。
通常,訪問RAM比訪問磁盤快幾個數量級。
即使是最快的SSD驅動器,其訪問速度也要比RAM慢100倍。
現在,我不知道Mongo是否有一個緩存系統(最有可能),或驅逐策略是什麼,但作爲一個程序員,我更喜歡一個緩存,我可以存儲/檢索和刪除物品隨意。因此,我寧願使用Mongo的緩存解決方案。
總之,它確實取決於您使用這些解決方案。沒有一個答案涵蓋所有可能的用途。
- 1. 建議在mongodb中使用Hibernate嗎?
- 2. 建議使用DoctrineMigrationsBundle嗎?
- 3. 在mongodb服務器的infront使用memcache
- 4. Google App Engine ndb memcache何時使用memcache
- 5. 建議使用node.js構建論壇嗎?
- 6. 爲此,建議使用Lucene嗎?
- 7. 建議使用GAE類型嗎?
- 8. 有關jQuery使用css3的建議嗎?
- 9. 建議使用Wild Card SSL證書嗎?
- 10. 建議使用CSS框架嗎?
- 11. 我可以使用$ _SESSION作爲memcache嗎?
- 12. 在啓用memcache時會使用ZF2的版本嗎?
- 13. 使用的建議
- 14. 建議使用jQuery
- 15. didSet使用建議?
- 16. 建議使用MFC?
- 17. 建議使用ServiceStack.ORMLite
- 18. 建議使用python
- 19. Membership.GetUser()建議使用?
- 20. 使用java在Memcache中創建區域
- 21. 不建議使用CMS構建Web應用程序嗎?
- 22. 建議使用片段構建所有應用程序嗎?
- 23. 我應該使用MongoDB嗎?
- 24. 在php中使用MVC時的建議
- 25. EJB定時器使用建議
- 26. 使用Resharper時關閉Visual Studio建議?
- 27. 關於使用定時器的建議
- 28. 什麼時候不使用memcache
- 29. 使用Google建議使用JavaScript
- 30. 使用Memcache協議存儲的Apache Ignite值的大小限制
該功能讓我更喜歡mongoDB比其他鍵值數據庫:) – 2010-11-25 14:21:21