2010-02-08 52 views
0

我不確定我的問題是否完全清楚,請讓我直接介紹並給出長版本:有沒有人爲memcache創建過關係數據庫風格的前端?

有人最近在討論大容量Web應用程序時說,「磁盤是新磁帶「。網站管理員使用大量的memcache服務器來實現客戶端和服務器之間無磁盤I/O的往返。爲了實現這一點,應用程序開發人員不得不將RDBMS的通用數據存儲,像外鍵約束,檢查約束以及級聯UPDATES和DELETES這樣的有價值功能拋出。

但是如果你可以將你的memcache集羣放在應用軟件(PHP,Ruby,Python ...)領域之外的db接口的另一端,並且在RDBMS中呢?把它看作是一個大型的,分佈式的,內存中的數據庫緩存。爲了清楚起見,我正在討論的是具有可以在內存中存儲幾乎整個數據庫的memcache羣集類型,無論您的SELECT語句的參數如何,在從數據庫讀取數據時都能保證100%的高速緩存命中率。然後,在編寫應用程序代碼時,不僅可以忘記內存緩存,還可以像處理關係數據庫管理系統一樣再次處理數據存儲,並使用規範化和連接方式來實現RDBMS傳統上的鼓勵。

在保持/恢復RDBMS的數據完整性優勢的同時,性能提升可能值得研究。

有沒有人知道某個項目已經有人做過這個項目,可能作爲一個開源項目,他們可能會修改開源RDBMS,如PostGRE或MySQL?我沒有發現任何東西,我也不知道這些程序是如何構建的,或者是否有可能實現這樣的存儲引擎。

+0

爲了讓你的計劃工作,你就需要一臺服務器上運行的所有memcached實例(以避免網絡問題,殺死你的計劃),並且如果您有足夠的內存將整個數據庫放入一臺機器的內存中,則只需將內存分配給數據庫並讓它執行最佳操作即可。 – Epcylon 2010-02-08 19:57:52

回答

0

,應先查看CAP theorom:

http://www.julianbrowne.com/article/viewer/brewers-cap-theorem

請記住,如果重新啓動這些內存緩存服務器中的一個,你會有點生氣。即使你使用了所有的memcache服務器,你仍然會受到網絡速度的限制,然後網絡擁塞將成爲一個問題。

還有其他設備,如fusionIO卡和其他純粹的RAM硬盤也可以解決此問題,例如超系統的ram磁盤。 Ooohh喔,。我希望我的公司能買得起這些十幾...

-daniel