【发布时间】:2014-09-14 05:32:33
【问题描述】:
我对 noSQL 数据库有点陌生(不过我对关系数据库相当熟悉),我想知道处理带有线程消息的收件箱系统的最有效方法是什么。
每条“消息”都有一个发件人和收件人。用户之间接收/发送消息的数量会有很大差异。这个系统应该可以很好地扩展到超过 1k 的用户。
我已经阅读了有关写/读时扇出的信息,但我不确定这对线程消息的效果如何。
由于我是 MongoDB / NoSQL 的新手,我不太习惯以这种方式有效地构建数据。
我猜想会有嵌套对象以任何一种有效的方式来处理这个问题……但我无法确定一个对于两个用户之间的线程对话既高效又方便的设计。
我想用一个由 2 个用户组成的数组存储数据,并结合一个“消息”对象数组。但接下来是 2 个用户的用户名的顺序问题。 (例如,[UserA, UserB] 和 [UserB, UserA] 都是可能的并且会有问题,所以这似乎是个坏主意)。
我想过在读/写事情上进行整个扇形,但这对于线程消息似乎并不有效(因为如果收件人抓取消息很方便,那么发件人抓取消息就不会了,反之亦然)。
我倾向于按收件人抓取邮件(因为收件箱会加载多条邮件,而发送只涉及一个 [尽管查找时间较长])。但我真的很想一次性获取一个线程对话,以及用户与之进行线程对话的用户列表(用于线程列表)。
如果有人能给我一个有效的线程对话模式,我将不胜感激。我一直在研究这个并试图解决几个小时的设计,我已经筋疲力尽了。我一直在我的设计中发现缺陷并废弃它们,我真的很想从对 NoSQL 数据库/MongoDB 更有经验的人那里得到一些输入,这样我就可以避免出现巨大的设计缺陷和/或编写本来可以处理的逻辑更好的数据库设计。
提前感谢所有帮助。
【问题讨论】:
标签: performance mongodb mongoose schema inbox