首页 > 解决方案 > 为没有引用的嵌套数据确定数据库的类型和结构

问题描述

我有一个任务:将来自 3 个信使的用户消息存储在数据库中。还需要排除重新发送相同消息的可能性。

因此,假设不断请求验证类似消息的存在并添加新消息。我打算使用嵌套结构,例如:

messenger_name:
    sender_id:
        recipient_id:
            message_hashes

在我看来,像 Mongo 这样的面向文档的数据库应该适合这个。但我不知道如何正确地将所有内容划分为级别。

如果我为每个信使收集一个文件,为每个发送者创建一个文件,那么文件很快就会变大。

也许您建议采用更正确的方法,甚至是不同的存储系统。

标签: mongodbdata-structures

解决方案


我会为 3 个不同的信使制作 3 个不同的集合(因为如果再次从同一个信使发送消息,则假定消息是相同的)。

在每个集合中,每个文档将代表该信使的 1 个发送者,并且具有如下结构:

{
  senderId,
  [
   {
     receipentId1,
     [messageHash1,messageHash2...]
   },
   {
     receipentId2,
     [messageHash1,messageHash2...]
   }
}

然后我将在给定字段上创建索引(以便更快地检索以检查消息是否已存在)。

此集合中的文档数不会超过应用程序的用户数。


推荐阅读