2010-01-19 44 views
0

我正在查看一個應用程序,我需要將用戶朋友模型構建爲圖結構。我需要深入幾度,所以在MySQL中使用標準SQL將無法工作,因爲循環引用。我查看了可用的圖算法,它們涉及將整個記錄集加載到Graph對象中,然後對其執行操作。我無法爲每項手術都做這件事。將全局散列存儲在Ruby on Rails上

我想將Graph對象作爲全局對象存儲在內存中,只需調用並更新它即可。但是,由於Rails通過創建單獨的進程進行擴展,我將會遇到幾乎立即的同步問題,因爲單個Rails進程只能擴展到幾個併發用戶。

有誰知道一種方法來存儲在Rails的內存中的對象,並保持它在兩個請求之間和多個雜種/任何進程之間同步?

在這一點上,我正在尋找一個圖形操作的Java服務,因爲它使用線程模型而不是流程模型進行擴展。我可以擴展到足以讓我暫時不必處理擴展問題。

我想有一個全部的Rails解決方案,因爲它會更容易維護和構建。

+0

下面是很好的答案,雖然我沒有具體使用其中之一,但我正在朝着這個大方向前進。由於這是一個社會圖形問題,我正在看neo4j,因爲這是一個社交圖形數據庫。 – 2010-09-15 11:51:46

回答

1

一種選擇是構建一個小型機架應用程序,用於加載數據。查詢和計算您的數據的邏輯將在該機架應用程序中。您可以使用普通的HTTP調用本地主機來傳輸您需要傳輸的任何內容(生成的HTML?其他?)從機架應用程序到您的Rails應用程序。

這基本上是爲您的Rails應用程序擁有多個進程的解決方法。我確信有更好的解決方案,比如memcached,NoSQL數據庫等等。

0

這聽起來像你可能需要一個分佈式哈希表,或者可能是像CouchDB的東西,作爲RDBMS的替代品。

1

Redis是您正在尋找的工具。

+0

有趣的是,我看到一些人在社交圖表中使用這個帖子,所以我會深入一點 – 2011-07-18 13:40:44