2010-05-19 50 views
0

我有一個Rails應用程序,允許用戶建立一個網絡結構,然後詢問有關如何瀏覽它的問題。如何在調用Rails Web服務之間共享預先計算的數據?

添加節點和連接時,這些只保存到數據庫。在您查詢網絡時,我計算從任何節點到任何其他節點的最短路徑。

在內存中構造這需要一段時間(我需要修復的東西),但一旦它存在,您可以立即得到任何這些路徑問題的答案。

問題是......如何在網站調用之間共享此網絡,因此每次請求都不會每次都重新生成路徑網絡?

注:我使用的乘客主辦這次Apache服務器上(MOD紅寶石)

的思考?

+0

我試過做一個全局變量..這是在Mongrel但不是阿帕奇的作品 – 2010-05-19 04:53:48

回答

1

你能使用memcached這個數據? (有關Rails緩存API,請參閱ActiveSupport::Cache::Store)。

+0

我從Jet的答案中找到答案。 Rails.cache.fetch(「network」){calculate_network}緩存結果..然後在配置文件中設置緩存方法讓我可以跨線程共享緩存方法。 :) 多謝你們 – 2010-05-20 11:47:40

1

37個信號做的一種方式是在XGB上具有mysql/db緩衝區大小,並且在服務器上有大量RAM/FLASH存儲器,這將緩存您的所有選擇。

瑞安貝茨有一個屏幕投在那裏,他解釋了這些概念,包括數據庫拆分 主從複製相當不錯,它有助於您在長期運行;)

+0

您是否建議將計算出的路徑存儲在數據庫中,以便它們可以查詢。 (我知道你也在說讓數據庫緩存內存中的所有內容以提高性能)。這可以工作。每當我重新計算它們時,我都需要刪除新路徑表的內容。 – 2010-05-19 05:57:21

+0

不,只將它們存儲在緩存中,它可以是MemCache或DB緩存或這兩者的組合 這樣,您最常訪問的路徑將可用,而無需點擊數據庫 – 2010-05-21 03:07:29