Оптимизировать использование данных профиля - PullRequest
0 голосов
/ 20 марта 2012

У меня есть система, которая позволяет пользователям планировать конференц-звонки и приглашать людей, используя свой адрес электронной почты. Это реализовано в ASP.net MVC 3 с использованием EntityFramework в шаблоне Repository. Когда пользователь вошел в систему, я хочу отобразить список предстоящих вызовов, которые они либо создали, либо на которые они были приглашены. В списке должны отображаться сведения о вызове, а также имя / адрес электронной почты организатора, которые сохраняются в поле «Имя пользователя» и «Профиль» создателя вызовов.

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

2 подхода, которые я рассмотрел:

  1. Сохраните имя и адрес электронной почты организатора при создании вызова. Однако существует вероятность, что организатор впоследствии обновит эти данные, что может привести к отображению неверной / устаревшей контактной информации.
  2. Загрузите все данные пользователей в хеш-таблицу и каждый раз запрашивайте это - система в настоящее время находится на ранних стадиях и имеет мало пользователей, однако может закончиться несколькими тысячами (максимум)

Есть ли другой подход, который я не рассматривал, который мог бы решить эту проблему оптимизированным способом?

1 Ответ

1 голос
/ 20 марта 2012

Вы можете кэшировать профили пользователей (либо в оперативной памяти [System.Web.Caching / System.Runtime.Caching], либо в более сложном кэше, например Redis ) и аннулировать его при изменении профиля какого-либо пользователя.

Конечно, вы делаете недействительной только запись измененного пользователя, а не весь кеш.

Таким образом, вы наслаждаетесь обоими мирами - попадаете в память, а не в базу данных для деталей профиля, и у вас все еще есть актуальные данные, если некоторые пользователи меняют свой профиль.

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