【问题标题】:Saving chat transcripts in nosql databases在 nosql 数据库中保存聊天记录
【发布时间】:2013-05-22 14:18:48
【问题描述】:

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

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

nosql 中最好的方法是什么?

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

【问题讨论】:

  • NoSQL != MongoDB。如果您专门谈论 MongoDB,您应该重新表述您的问题以表明这一点。因为在键/值存储、文档存储和大表存储中,解决方案将非常不同。

标签: node.js mongodb nosql


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    • 2013-05-06
    • 2017-10-23
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多