2013-11-26 6 views
0

У меня есть следующая схема для сообщений. Каждый пост имеет встроенный автор и вложения (массив ссылок/видео/фотографий и т. Д.).Нормализованные или денормализованные данные в монго

{ 
    "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) и запрос сообщений с идентификаторами.

Обновления встроенного автора случаются редко (например, когда автор меняет свое изображение). Обновления не должны быть мгновенными или даже быстрыми.

Нам интересно, следует ли разделить автора и пост на две разные коллекции. Таким образом, сообщение будет ссылаться на его автора, а не на встроенного/дублированного автора. Является ли нормализованное состояние данных предпочтительным здесь (автор дублируется для каждого сообщения, что приводит к большому количеству дублированных данных/дополнительных байтов)? Или нам следует продолжать деформированное государство?

ответ

1

Как кажется, у вас есть несколько величин, более читаемых, чем пишет, вероятно, не имеет смысла разделить эти данные на две коллекции. Особенно с небольшими обновлениями, и вам нужно почти всю информацию об авторе при показе сообщений, один запрос будет быстрее, чем два. Вы также получаете местоположение данных, поэтому потенциально вам понадобится меньше данных в памяти, что также даст еще одно преимущество.

Однако вы можете только узнать об этом, сравнив это с объемом данных, которые вы будете использовать на производстве.

Смежные вопросы