我正在使用node.js构建聊天服务器应用程序。
我需要在数据库中保存聊天记录并希望如此 像mongodb一样玩nosql数据库。如果我在关系数据库世界,我会 创建用户,chat_sessions和chat_messages表,对于每条新消息,我都会 在chat_messages表中添加新记录。
哪个是nosql中最好的方法?
我是否必须创建一个chat_session文档,并在其中创建 为每条新消息或更新的chat_messages结构 有没有更好的方法来为nosql / mongodb做?
答案 0 :(得分:2)
您将使用类似的方法,并将每条新消息作为单独的文档插入集合中(可能每个房间或频道一个)。
MongoDB中的文档有16mb的限制,因此将整个历史存储在一个文档中,这个文档以无限的方式增长,将是一个糟糕的选择。
您可以对用户名进行反规范化并将其存储在消息本身上,以避免查询两个表(这可能是关系数据库中的连接)。
将数据拆分为多个数据库而不是集合(每个房间,通道等)可能是有意义的,因为当前mongodb具有数据库级写锁定。这将允许您使用mongodb和node.js实现更高的写入并发性。