Хранение имен против извлечения из кэша по идентификатору - PullRequest
1 голос
/ 03 июня 2011

Простая коллекция mongodb, в которой хранятся отправленные электронные письма:

{
    msgid: objectid
    senderid: <some objectid>,
    sendername: <some name>,
    recip: [{memid:<objectid>, name:<some name>}, {memid:<objectid>, name:<some name>}, ...]
}

содержит информацию об отправителе и получателях сообщения.Теперь я пытаюсь решить, следует ли сохранять имена отправителей / получателей в сообщении или разрешать их после получения сообщений.Под «разрешением» я подразумеваю поиск имен по id в кэше memcached основной системы.Может быть 1-10 получателей на сообщение, и я получаю 10-20 сообщений на запрос, поэтому в худшем случае мне потребуется поискать 200 имен на запрос страницы.На сайте будет высокая нагрузка, поэтому меня беспокоит нагрузка на memcached, но, с другой стороны, хранение имен вместе с сообщениями значительно увеличит используемое дисковое пространство.

Любое предложение высоко ценится!

1 Ответ

0 голосов
/ 04 июня 2011

хранение имен вместе с сообщениями значительно увеличит дисковое пространство.

Не заботьтесь о дисковом пространстве - дисковое пространство - ничто, это дешево.

Если ваша система будет перегружать хранилище на recip всем, что вам нужно (даже имена мамы, папы;)), без сомнения.

  1. Денормализация ваших данных для увеличенияСкорость приложения и уменьшение количества запросов к базе данных (даже в memcache).
  2. Обновление денормализованных данных в фоновом режиме, если необходимо.

Я делаю это способом, описанным выше в моих проектах, и все работаетбыстро ;).Но это только мое мнение и мое решение.Другие народы могут думать иначе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...