2010-03-12 56 views
1

我用php + postgresql創建了一個博客系統。 現在我想添加一個網絡聊天(同時用於百萬用戶的實時),其中每條消息都保存在數據庫中。Erlang:2個網絡服務器上的2個數據庫?

我想以一個不同的網絡服務器針對此問題使用二郎+ Mnesia的。

信息的表會是這樣:

MESSAGE_ID,USER_ID,信息,日期

USER_ID應與用戶表中的PostgreSQL數據庫的另一個網站服務器有關。

我該怎麼辦,沒有失去效能?

如果您有任何其他創造性的解決方案,請告訴我)。

回答

1

我不知道爲什麼你想每一個信息保存在一個數據庫中,但是Mnesia的聽起來不像做一個特別好的選擇。 Mnesia更像是一個分佈式鍵值存儲區,當您需要存儲「表格數據」並查詢它時,您可以用它來保持應用程序的狀態,以簡單到中等複雜的方式。

對於大量文本,我聽說Lucene是應該是不錯的,它的全文搜索功能等,這些被認爲是有效的,你可能想看看它:

Apache Lucene Project page

除此之外,使用Erlang的作爲的ChatServer,使用的Mnesia容納所有其他國家聽起來像一個好主意,你可以寫一個使用類似JSONP一個JavaScript客戶端(克服跨酒莊發放),並在受Mochiweb erlang網站做webserver部分。

寫內核聊天系統的其餘部分應該是相當簡單的,最有趣的部分,所以說:)

+0

我不會說mnesia不適合這個必然。這取決於他是否需要全文搜索。按照他所描述的方式查詢消息表,在mnesia中非常容易實現,完整的關係數據庫對他的需求來說是過分的。 Lucene沒有實現存儲,它只是爲該存儲提供索引服務。他仍然需要一個數據存儲來保存它。 – 2010-03-12 22:33:56

+0

好吧,這聽起來像他想存儲大量的數據,而mnesia不會很適合,但是,這是可行的。但正如你所說,它有點取決於他想用什麼樣的方式來使用存儲的數據。 – Amadiro 2010-03-13 00:38:46

0

的Mnesia可以肯定你有什麼建議,但如果你已經有Postgres的設立是有一些你不想使用它的原因?這可能比創建一個單獨的服務更簡單,如果你想讓erlang運行聊天服務,那麼它有postgres驅動程序。

+0

如果我在erlang網絡服務器上使用postgresql,那麼如何將消息表的user_id與用戶表關聯起來? – xRobot 2010-03-12 23:59:28

+0

我的意思是每個使用相同的數據庫。 erlang網絡服務器可以與另一臺服務器上的postgres數據庫進行通信。 – 2010-03-16 20:09:16

0

該項目是使用PostgreSQL大獲成功。

http://zotonic.com/

您可能需要使用相同的代碼,數據庫訪問到PostgreSQL。

相關問題