Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Кэширование больших наборов данных

Автор вопроса: CommunityОтветов: 4

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

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

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

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

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

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

caching

Ответы

Ответ 1 · рейтинг 2 · StingyJack

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

Ответ 2 · рейтинг 2 · David Robbins

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

Ответ 3 · рейтинг 1 · monkey_p

Вы смотрели блок приложений кэширования корпоративной библиотеки Microsoft?

Он основан на лучших практиках и очень прост в использовании.

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

Ответ 4 · рейтинг 1 · James Anderson

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

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы