Специальный сценарий кэширования для веб-приложения

1

Я делаю веб-приложение, которое предполагает возможность захвата определенных журналов компьютеров из нескольких универмагов. Приложение получает данные из базы данных SQL Server. В начале приложения я попрошу пользователя выбрать номер региона, чтобы сузить выбор. После выбора региона я звоню в БД, чтобы получить различные магазины в этой области (я создал класс Store, чтобы я мог легко создавать объекты). Я показываю их пользователю, чтобы они могли выбирать, какой магазин они хотят. После того, как пользователь выбирает свой магазин, я должен снова вызвать БД, чтобы получить список рабочих станций, принадлежащих этому хранилищу (опять же, у меня есть класс, называемый Workstation). Затем пользователь может выбрать рабочую станцию, выбрать день и месяц, из которых они хотят получить журнал, и нажать кнопку отправки.

Когда дело доходит до результатов кэширования из БД, я смущен тем, как это сделать. В идеале я бы кэшировал объекты Store и Workstation с помощью некоторого менеджера кэша, такого как JCS или EHCACHE. Мой первый оператор SQL для получения магазинов имеет предложение WHERE, проверяющее выбранный пользователем REGION. Итак, когда я получаю эти результаты обратно в объекте ResultSet, я повторяю их по очереди и проверяю, находятся ли они в кеше? Если их там нет, создайте объект Store и добавьте его. Если объект уже находится в кеше, используйте оператор continue, чтобы перейти к следующей итерации ResultSet?

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

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

Большое спасибо!

Теги:
sql-server
caching

1 ответ

1
Лучший ответ

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

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

Итак, когда я получаю эти результаты обратно в объекте ResultSet, я повторяю их по очереди и проверяю, находятся ли они в кеше?

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

См. Это для более подробной информации о кеше запросов. Статья немного устарела, но это помогло мне понять основы кеширования запросов.

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

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

  • 0
    Большое спасибо за ваш совет. В настоящее время реальные журналы рабочих станций находятся на самой рабочей станции, а не в какой-либо базе данных. Когда пользователь нажимает «Отправить», я полагаюсь на команду «net use» DOS, которая на самом деле захватывает журнал, копирует его, архивирует и отправляет его по FTP.
  • 0
    То, что ссылка говорит об использовании Hibernate, имеет смысл и звучит как хорошее решение. Я также нашел эту удобную ссылку: mastertheboss.com/quickstart-tutorials-hibernate/jpa/…
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню