Натолкнуть на мысли по поводу кеширования

 
 
 
Сообщения:281
Доброго времени!

Прошу натолкнуть на мысли по поводу кеширования записей, возвращаемых запросами с удалённого сервера БД. Подсказать подходящие механизмы/инструменты/библиотеки/фреймворки и т.д и т.п.

Что сейчас
Сервер приложений. Ни чего особенного, банальные Tomcat+Servlets+JSP. На веб-морде пользователь выбирает тип отчёта, задаёт временной параметр, а сервер отправляет запрос на получение данных с удалённого сервера Oracle. БД находится далеко, работает не быстро, запрос может идти до 20 минут. Я тот Oracle не админю, повлиять ни на что не могу, беру данные, как есть.

После того, как данные пришли, отдаю их пользователю в том виде, в котором он пожелает: либо на веб-странице, либо скачивание в формате MS Excel (*.xslx).

Возвращаемых данных может быть порядка десятков тысяч записей (а то и за сотню может перевалить) при количестве полей - до 17 (в зависимости от типа отчёта). Браузеру бывает тяжело это всё показывать.

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

Как представляю себе абстрактно кеш

Ключ для данных - id отчёта + временной интервал, за который выбирались данные. То есть, если даже другой пользователь запросил такой же отчёт за тот же интервал времени, то можно вернуть ему его прямо из кеша.

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

Время жизни кешированых данных - сутки вполне устроит. Если ресурсы сервера не сильно будут жраться, то можно увеличить время.

Какие реальные мысли имею сейчас

Поднять какую-нибудь РСУБД на сервере, организовать подходящую структуру данных. В приложении описать бизнес-логику, реализующую все мои хотелки.

Но может есть уже готовые решения, с которыми будет сделать всё проще и о которых я не знаю?

"Любая техническая система должна быть идиотоустойчивой" (с) один из университетских преподов
 
Модераторы:wedens
Сейчас эту тему просматривают:Нет