У меня есть следующая схема для сообщений. Каждый пост имеет встроенный автор и вложения (массив ссылок/видео/фотографий и т. Д.).Нормализованные или денормализованные данные в монго
{
"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) и запрос сообщений с идентификаторами.
Обновления встроенного автора случаются редко (например, когда автор меняет свое изображение). Обновления не должны быть мгновенными или даже быстрыми.
Нам интересно, следует ли разделить автора и пост на две разные коллекции. Таким образом, сообщение будет ссылаться на его автора, а не на встроенного/дублированного автора. Является ли нормализованное состояние данных предпочтительным здесь (автор дублируется для каждого сообщения, что приводит к большому количеству дублированных данных/дополнительных байтов)? Или нам следует продолжать деформированное государство?