2010-02-07 98 views
3

我正在研究依賴於MySQL數據庫部分內容的應用程序。在某些情況下,應用程序將運行在互聯網連接受限(UMTS)的環境中,特別是遇到高延遲。本地數據庫緩存的最佳實踐?

應用程序的用戶能夠登錄,並且應用程序的用戶界面的大部分內容都是從MySQL數據庫中檢索的。爲了防止用戶登錄後出現延遲,我想盡可能在​​客戶端緩存數據庫內容。只有在進行相關更改時才應從數據庫中檢索新內容。有沒有一種常見的方法來解決這個問題?任何描述這個問題的固體解決方案的文獻?


小更新:我現在正在研究CouchDB作爲我的特殊用例的解決方案。主要原因是:

它允許用戶和服務器訪問和更新相同的共享數據,同時斷開連接,然後雙向複製這些更改。

(來源:http://couchdb.apache.org/docs/overview.html

到目前爲止,它看起來非常有前途的。

回答

4

我們實際上運行了數據庫的本地副本,並且大部分軟件只是與本地數據庫進行通信,而該數據庫始終可用。然後我們有一個後臺進程來保持兩個數據庫的同步。

我會提醒你,任何類型的本地緩存都不適合心臟病發作。有很多方法可能會失去同步。如果可以,避免這樣做。

+0

如何使用複製保持數據庫同步?我只是讀了它,它似乎很有前途...... –

+0

如果你能找到一個很好的複製解決方案。在我們的例子中,我們在本地運行Firebird(這是一個非常棒的嵌入式或半嵌入式數據庫),並且我們在服務器上使用了一些不同的數據庫。我們無法找到任何可以與所有組合一起工作的複製,所以我們自己推出了。 –

+0

使用具有相同模式的本地數據庫還具有另一個優點。您可以非常輕鬆地編寫應用程序,以便它可以指向本地數據庫或服務器。所以在你不需要本地緩存的情況下,你只需指向服務器即可。 –

0

我不確定這是否是常見做法,但可以將緩存數據寫入客戶端緩存的JavaScript文件。然後,您可以創建Ajax調用以查看是否有任何更改......這將是一個小的請求。如果沒有更改,請使用緩存的數據。