Кэширование больших объемов данных - PullRequest
1 голос
/ 03 января 2012

Я читал, что многие люди используют Redis или другое решение для хранения значений ключей / NoSQL в качестве распределенного кэша для своего сайта.

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

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

Есть ли какая-то стратегия кэширования, которую я могу использовать для этого типа сценария?

Ответы [ 4 ]

1 голос
/ 03 января 2012

Распределенный кеш, такой как Velocity, не требует, чтобы данные, которые он хранит, были ограничены «общими» данными.Но вам действительно нужно прочитать данные из вашей БД и сохранить их в кеше, что занимает много времени.

Несколько альтернатив:

  • Разделите ваши данные, чтобы они распределились междунесколько серверов БД
  • Добавьте как можно больше оперативной памяти к каждому серверу БД, чтобы позволить SQL Server кэшировать все, что он может

Существует множество вариантов темы разбиения ....

Сбалансирована ли загрузка вашего веб-приложения?На веб-уровне также есть опции кеширования - кеш объектов ASP.NET - хорошее начало.

0 голосов
/ 03 января 2012

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

0 голосов
/ 03 января 2012

Я прочитал хорошую статью о проблемах производительности, которые были у MySpace, когда они имели огромный рост.

Вы можете найти статью здесь .

Одна цитата из статьи, которая выделяется:

Добавление серверов кеша - это «то, что мы должны были сделать с самого начала, но мы росли слишком быстро и не стали»У меня нет времени, чтобы сесть и сделать это ", - добавляет Бенедетто

Если проблема в вашем сервере баз данных, подумайте о разделении ваших данных и использовании фермы баз данных для распределения нагрузки.Также подумайте о SSD!Они действительно могут ускорить ваш код доступа к базе данных.

0 голосов
/ 03 января 2012

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

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

Тогда посмотрите на обновление вашей машины БД.

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