在nosql数据库中保存聊天记录

时间:2013-05-22 14:18:48

标签: node.js mongodb nosql

我正在使用node.js构建聊天服务器应用程序。

我需要在数据库中保存聊天记录并希望如此 像mongodb一样玩nosql数据库。如果我在关系数据库世界,我会 创建用户,chat_sessions和chat_messages表,对于每条新消息,我都会 在chat_messages表中添加新记录。

哪个是nosql中最好的方法?

我是否必须创建一个chat_session文档,并在其中创建 为每条新消息或更新的chat_messages结构 有没有更好的方法来为nosql / mongodb做?

1 个答案:

答案 0 :(得分:2)

您将使用类似的方法,并将每条新消息作为单独的文档插入集合中(可能每个房间或频道一个)。

MongoDB中的文档有16mb的限制,因此将整个历史存储在一个文档中,这个文档以无限的方式增长,将是一个糟糕的选择。

您可以对用户名进行反规范化并将其存储在消息本身上,以避免查询两个表(这可能是关系数据库中的连接)。

将数据拆分为多个数据库而不是集合(每个房间,通道等)可​​能是有意义的,因为当前mongodb具有数据库级写锁定。这将允许您使用mongodb和node.js实现更高的写入并发性。