Проблема с кэшированием на стороне клиента? - PullRequest
1 голос
/ 20 мая 2009

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

Случай 1. Для хранения данных требуется чрезвычайно быстрый поиск строки.
Случай 2. Кэшированный набор данных может быть большим. Я не хочу взрывать использование памяти клиентом, а также я не хочу делать вызовы доступа к сети и диску, что замедляет мое время обработки на стороне клиента

Решения:

Случай 1: Я думаю, дерево суффиксов / Tries дает вам хорошее решение в этом случае.

Случай 2: Рассмотрим две проблемы:

  1. Для хранения больших данных с минимальным потреблением памяти
  2. Не совершать никаких сетевых вызовов для доступа к любым данным, которые недоступны в кеше. Модель кеширования LRU - это одно из решений, которое я могу придумать, но оно не мешает мне раздуть память.

Есть ли способ записать в файл и получить доступ без ущерба для данных (аспект безопасности)?

Дайте мне знать, если какой-либо пункт не ясен.

EDIT: Джош, я знаю, что мои требования нереалистичны. Чтобы сузить мои требования, я ищу что-то, что хранит, используя алгоритм LRU. Было бы хорошо, если бы у нас была конфигурация динамического размера для этого LRU с максимальным ограничением. Это уменьшит количество вызовов, поступающих в сеть / базу данных, а также обеспечит хорошую производительность.

Если этот алгоритм LRU работает со сжатыми данными, которые можно интерпретировать с небольшими издержками (но меньше, чем сетевой вызов), это будет намного лучше.

Ответы [ 2 ]

1 голос
/ 20 мая 2009

Проверьте все доступные рамки / библиотеки кэширования - я нашел Ehcache очень полезным. Вы также можете сохранить только некоторые (самые последние) данные в памяти и перейти на диск при указанном использовании памяти. Дисковые вызовы все равно будут выполняться намного быстрее сетевых вызовов, и вы избегаете использования всей памяти.

Ehcache

0 голосов
/ 20 мая 2009

К сожалению, я думаю, что ваши ожидания нереалистичны.

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

Кроме того, чтобы ответить на ваш вопрос о безопасности, на стороне клиента нет хранилища данных (если вы говорите о веб-приложении), которое является «безопасным». Вы можете зашифровать его, но это нарушит ваши требования к скорости, а также потребует обработки на стороне сервера. Все, что хранится на клиенте и отправляется с него, является подозрительным.

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

...