Кэширование больших наборов данных - PullRequest
2 голосов
/ 21 сентября 2009

Я работаю над приложением ASP.NET, которое имеет следующие требования:

  1. Раз в 15 минут выполняется довольно дорогой запрос из примерно 20 000 элементов ( не из базы данных ). Имеет около 10 столбцов, все короткие строки, кроме одного, в котором хранится до 3000 символов (обычно намного меньше).
  2. Обработайте итоговый DataTable с различными сортировками и фильтрами, а затем сохраните первые 100 элементов в дополнительных DataTables.
  3. Показать эту информацию в виде агрегирования для потенциально 10 000 человек.

Мне кажется, что это отличный кандидат для кеширования (System.Web.Caching), особенно если учесть, что мы можем пожелать поддерживать дополнительную фильтрацию "на лету". Например: фильтрация таблицы по строкам, относящимся только к конкретному пользователю.

Однако, прежде чем начать, я хотел бы понять:

  1. Если есть какие-либо рекомендации по хранению такого большого DataTable в Cache.
  2. Если у кого-то есть опыт, которым он может поделиться? Большие таблицы вы сохранили?
  3. Есть ли какие-нибудь ловушки, по которым нужно быть осторожнее?

Заранее спасибо.

Ответы [ 4 ]

2 голосов
/ 21 сентября 2009

Это довольно просто, но вы можете следить за тем, что на самом деле кэшируется. У Рика Стрэла есть интересный пост о том, как кэш был фактически пуст из-за нехватки памяти.

2 голосов
/ 21 сентября 2009

Стив Смит выиграл конкурс на мероприятии Microsoft с одним из своих решений для кэширования. Вот сообщение из его блога. Вот эпизод DNR TV , в котором он рассматривает свои техники.

1 голос
/ 21 сентября 2009

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

Файловая система в любом случае работает довольно эффективно, поэтому зачем изобретать велосипед заново.

Лучшим подходом может быть переписать ваш «запрос», чтобы вы получили все необходимое в один проход файла.

1 голос
/ 21 сентября 2009

Посмотрели ли вы блок приложения кэширования Microsoft Enterprise Library

Он построен на основе передового опыта и очень прост в использовании

http://msdn.microsoft.com/en-us/library/cc309103.aspx

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