我对帖子有以下架构。每个帖子都有一个嵌入的作者和附件(一系列链接/视频/照片等)。
{
"content": "Pixable tempts Everpix users with quick-import tool for photos ahead of December 15 closure http:\/\/t.co\/tbsSrVYneK by @psawers",
"author": {
"username": "TheNextWeb",
"id": "10876852",
"name": "The Next Web",
"photo": "https:\/\/pbs.twimg.com\/profile_images\/378800000147133877\/895fa7d3daeed8d32b7c089d9b3e976e_bigger.png",
"url": "https:\/\/twitter.com\/account\/redirect_by_id?id=10876852",
"description": "",
"serviceName": "twitter"
},
"attachments": [
{
"title": "Pixable tempts Everpix users with quick-import tool for photos ahead of December 15 closure",
"description": "Pixable, the SingTel-owned company that organizes your social photos in smart ways, has announced a quick-import tool for Everpix users following the company's decision to close ...",
"url": "http:\/\/t.co\/tbsSrVYneK",
"type": "link",
"photo": "http:\/\/cdn1.tnwcdn.com\/wp-content\/blogs.dir\/1\/files\/2013\/09\/camera1-.jpg"
}
]
}
经常阅读帖子(我们有4个标签的视图,每个标签需要显示24个帖子)。目前我们正在Redis中索引这些列表,因此查询4x24posts就像从Redis获取列表(返回mongo id列表)和使用id查询帖子一样简单。
嵌入式作者的更新很少发生(例如,当作者更改其图片时)。更新不必是即时的甚至是快速的。
我们想知道是否应该将作者和帖子分成两个不同的集合。所以帖子会引用其作者,而不是嵌入/重复的作者。这里是一个标准化数据状态首选(作者是否为每个帖子重复,导致大量重复数据/额外字节)?或者我们应该继续进行非标准化状态吗?
答案 0 :(得分:1)
由于您的读取数量似乎比写入数量多,因此将这些数据拆分为两个集合可能没什么意义。特别是几乎没有更新,并且您在显示帖子时需要几乎所有作者信息,一个查询将比两个更快。您还可以获得数据位置,因此您可能需要更少的内存数据,这应该提供另一个好处。
但是,您只能通过使用您在生产中使用的数据量进行基准测试来找到答案。