2009-08-22 35 views
2

如果應用程序要求設置一個類似的結果,最近被要求,如何才能對ORM跟蹤哪些結果是陳舊的,並且可以從之前沒有使用太多的資源(內存)被重複使用或產生過多的建築複雜?ORM可以使用什麼策略來緩存數據,同時將複雜性降至最低?

+0

除非你自己構建ORM,否則這是一個奇怪的問題。你究竟想要做什麼? – Juliet 2009-08-22 18:16:36

+0

要小心考慮您的ORM是否需要跨多個進程/機器運行......在這種情況下,緩存層會變得更加困難。 – 2009-08-22 20:04:34

回答

2

緩存失效是一個非常棘手的問題。您提出的基本案例似乎是數據庫的查詢緩存最容易處理的事情(頻繁的請求會將查詢保留在緩存中)。一旦緩存策略變得比這更復雜,大多數收益將來自使用單獨的鍵值緩存存儲手動管理緩存和緩存到期。

如果這類事情是您應用程序數據訪問的標準,並且您正在嘗試新潮時髦的新事物,那麼couchdb的mapreduce視圖可能會非常適合。

除了基本的備忘錄之外,我傾向於將ORM級別的緩存視爲相當挑剔和糟糕的計劃。

+1

我直接引用了像memcache之類的ORM級別之外的緩存(我是web dev),但任何鍵值存儲都應該可以工作。從本質上講,自動做ORM緩存將需要大量的東西,同時增加建築和錯誤數據庫應該做的重複。在大多數情況下,通過顯式的應用程序級緩存和更好的db索引等可以更好地獲得性能。 – 2009-08-22 19:00:14

1

當我需要知道本地數據是否與(遠程)服務器同步時,我會跟蹤事務。

所以之前的「提神」本地數據I「查詢交易歷史」,如果對有關(遠程)數據沒有發生任何交易,因爲最後的「刷新」,它仍然保持同步。

但我不知道它是否「儘量減少複雜性」。