Распределенные системы кэширования — цель?

Я действительно новичок в концепции кэширования, и мне нужно некоторое руководство по

  1. Какова цель веб-кэша (например, ehCache или memcache)?
  2. Насколько я понимаю, они используются для временного хранения, но зачем кому-то временно хранить какие-то данные?
  3. Зачем использовать кеш вместо nosql или реляционной базы данных?

Любые плюсы и минусы в отношении архитектурно-дизайнерских решений будут полезны.


person PacificNW_Lover    schedule 07.03.2015    source источник


Ответы (1)


  1. Кэши используются потому, что они быстры. Для этого кэш обычно хранит все свои данные в памяти, чтобы можно было избежать дорогостоящих операций чтения с диска. Запрос к реляционной базе данных часто включает одно или несколько соединений с другими таблицами, которые могут усложнить (для базы данных) запрос и замедлить его выполнение. С помощью кеша вы сохраняете денормализованное представление ваших данных в точной форме, которая требуется вашему приложению, т. е. если вы показываете список заказов пользователю, вам не нужно хранить данные заголовка заказа отдельно от Данные строки заказа при кэшировании, потому что все эти данные отображаются для пользователя вместе.

  2. Кэшированные данные строятся из постоянных данных приложения, и в результате нет необходимости сохранять данные кэша, поскольку они могут быть перестроены из данных вашего приложения и фактически будут перестраиваться каждый раз при изменении данных вашего приложения. Как отмечалось ранее, системы кэширования часто хранят все данные в памяти, поэтому количество данных, которые можно сохранить, ограничено доступной оперативной памятью. Это приводит к стратегиям вытеснения кэша, таким как LRU (наименее недавно использовавшийся), которые удаляют редко используемые данные, чтобы можно было отдать приоритет более часто используемым данным.

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

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

person flipchart    schedule 14.07.2015