用于线程消息的MongoDB/Mongoose模式(有效)

 j7988l28 发布于 2023-01-01 16:17

我对noSQL数据库有点新手(虽然我对关系数据库相当不错),我想知道处理带有线程消息的收件箱系统的最有效方法是什么.

每个"消息"都有一个发件人和收件人.用户之间接收/发送的消息数量差别很大.该系统应该可以很好地扩展到超过1k +的用户.

我已经阅读了关于写/读的扇出,但我不确定这对于线程消息有多好用.

由于我一般都是MongoDB/NoSQL的新手,因此我并不习惯以这种方式高效地构建数据.

我猜测将会以任何有效的方式处理嵌套对象...但我不能满足于两个用户之间的线程对话似乎既高效又方便的设计.

我想到了使用2个用户的数组存储数据,并结合了一组"消息"对象.但接下来是2用户的用户名的顺序问题.(例如[UserA,UserB]和[UserB,UserA]都是可能的,并且会有问题,因此这似乎是一个坏主意).

我想在读/写事情上做整个扇子,但对于线程消息来说这似乎并不高效(因为如果收件人抓取邮件很方便,发送者抓取邮件将不会,反之亦然).

我倾向于倾向于收件人抓取消息(因为收件箱加载了多个消息,而发送只涉及一个[虽然查询时间较长]).但我真的想一次性获取线程会话,以及用户与线程对话的用户列表(对于线程列表).

如果有人能给我一个有效的线程对话架构,我将非常感激.我一直在研究这个并试图在几个小时内完成设计,我很累.我一直在寻找设计中的缺陷并废弃它们,我真的很喜欢那些对NoSQL数据库/ MongoDB更有经验的人的一些意见,这样我就可以避免制造一个巨大的设计缺陷和/或编写可以用一个处理过的逻辑更好的数据库设计

在此先感谢您的帮助.

1 个回答
  • 在这个特定主题上,你很幸运,有一篇很棒的文章讨论了这里的各种方法(这是你所看到的,但没有太大的不同):

    http://blog.mongodb.org/post/65612078649/schema-design-for-social-inboxes-in-mongodb

    然后,Darren Wood和Asya Kamsky分三部分详细介绍了MongoDB World 2014的主题:

    第1部分大纲和视频

    第2部分大纲和视频

    第3部分大纲和视频

    同样在MongoDB World,Dropbox的人们谈到了他们在构建邮箱时学到的经验教训:

    http://www.mongodb.com/presentations/mongodb-mailbox

    然后,为了完善它,有一个完整的参考架构,其代码名为Socialite on Github,由前面提到的Darren Wood编写:

    https://github.com/10gen-labs/socialite

    2023-01-01 16:20 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有