2010-03-12 57 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。

相关问题