Я хочу кэшировать данные на клиенте. Каков наилучший алгоритм/структура данных, которые можно использовать?Проблема с кэшированием на стороне клиента?
Корпус 1. Данные, подлежащие хранению, требуют чрезвычайно быстрого поиска строк.
Корпус 2. Кэш-набор данных может быть большим. Я не хочу, чтобы взорвать использование памяти клиента, а также я не хочу, чтобы в сеть и доступ к диску вызовов, которые замедляют свое время обработки на стороне клиента
Решение:
Случай 1: I думаю, suffix tree/Tries предоставляет вам хорошее решение в этом случае.
Случай 2: Две проблемы рассмотреть здесь:
- Для хранения больших объемов данных с минимальным потреблением памяти
- Не делать какие-либо сетевые вызовы для доступа к любой информации, которая не доступна в кэше. Модель кэширования LRU - это одно из решений, о котором я могу думать, но это не мешает мне раздувать память.
Есть ли способ записать в файл и получить доступ без ущерба для данных (аспект безопасности)?
Сообщите мне, если какой-либо вопрос не ясен.
EDIT: Josh, Я знаю, что мои требования нереалистичны. Чтобы сузить мое требование, я ищу что-то, что хранится с использованием алгоритма LRU. Будет хорошо, если мы сможем иметь динамическую конфигурацию размера для этого LRU с максимальным лимитом. Это уменьшит количество вызовов, идущих в сеть/базу данных, и обеспечит хорошую производительность.
Если этот алгоритм LRU работает с сжатыми данными, которые могут быть интерпретированы с небольшими накладными расходами (но меньше, чем сетевой вызов), это будет намного лучше.
Что вы имеете в виду под «быстрый поиск строки» - точное соответствие Струнный или шаблону соответствия?Если вам нужно найти элемент на основе точной строки, то хэш-таблица может это сделать. – Gandalf
если у вас есть большая коллекция строк, вы все равно предпочтете хеш-таблицу? – pankajt