【问题标题】:Managing messages in chat room with MongoDB and Graphql使用 MongoDB 和 Graphql 管理聊天室中的消息
【发布时间】:2021-05-31 12:13:47
【问题描述】:

我想知道如何管理我的聊天室中的消息。我的假设是:

  1. 有一个集合rooms,其字段如idmessagesparticipants
  2. 可以有很多房间有很多参与者

现在,我有疑问:

  1. 我是否应该使用messages 单独收集(idauthortext,其中author 是对users 收集的引用)?
  2. 或者我应该在messages 中保留简单的对象而不是带有引用的文档?

我可以想象带有消息的集合将是 huuuuge(如果未清除)。 Mongo会处理它吗?或者也许有更好的方法来做到这一点?

问候

【问题讨论】:

    标签: node.js database mongodb performance graphql


    【解决方案1】:

    这取决于您正在构建的规模。

    我想说的是,像你我这样的人认为是巨大的数量对于数据库系统(无论是关系数据存储还是 nosql 数据存储)来说通常都是小菜一碟。

    如果对项目一无所知,很难说,但我怀疑,如果您根据正确性/有用性设计数据模型,并担心下一步的性能,您可能会过得更好。

    根据您描述的实体(房间、消息、参与者、用户……),我正在描绘一个应用程序,例如 Discord。在这种情况下,我会将房间和用户视为一阶实体,将参与者和消息都视为属于房间的(大)有序数据列表(而两者中的每个条目显然也有对其个人用户/作者的引用) .

    【讨论】:

    • 这就是它的工作原理,但在 MongoDB 中,您具有称为填充的功能。我可以有messages: [ObjectID('...') ...]messages: [{}, {}...] 之类的东西。第一种方法需要额外收集messages
    猜你喜欢
    • 2019-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-12
    • 2014-10-31
    相关资源
    最近更新 更多