mongodb - 为没有引用的嵌套数据确定数据库的类型和结构
问题描述
我有一个任务:将来自 3 个信使的用户消息存储在数据库中。还需要排除重新发送相同消息的可能性。
因此,假设不断请求验证类似消息的存在并添加新消息。我打算使用嵌套结构,例如:
messenger_name:
sender_id:
recipient_id:
message_hashes
在我看来,像 Mongo 这样的面向文档的数据库应该适合这个。但我不知道如何正确地将所有内容划分为级别。
如果我为每个信使收集一个文件,为每个发送者创建一个文件,那么文件很快就会变大。
也许您建议采用更正确的方法,甚至是不同的存储系统。
解决方案
我会为 3 个不同的信使制作 3 个不同的集合(因为如果再次从同一个信使发送消息,则假定消息是相同的)。
在每个集合中,每个文档将代表该信使的 1 个发送者,并且具有如下结构:
{
senderId,
[
{
receipentId1,
[messageHash1,messageHash2...]
},
{
receipentId2,
[messageHash1,messageHash2...]
}
}
然后我将在给定字段上创建索引(以便更快地检索以检查消息是否已存在)。
此集合中的文档数不会超过应用程序的用户数。
推荐阅读
- c# - 如何在列表框中设置文本块的背景颜色?
- postgresql - 不能从 db.QueryRow() 推断出错误
- python - 如何提取列名的两个特定字符并将它们附加到另一个列名?
- node.js - 无法在 Google Cloud Function 中加载 node_modules(index.js,不在项目根目录上)
- java - Java中的循环不可变链表
- javascript - 使用ajax将数据从php发送到图表
- javascript - 如何从 Google Analytics 跟踪器获取电子商务交易 ID
- linux - 排除 vcd2fst 分段错误时调试信息不正确
- node.js - MongoDB out collection(替换所有数据,不减少)配额超出
- php - SplFileInfo::getSize(): 统计失败