Кэширование пользовательских данных на уровне базы данных или сеанса - PullRequest
1 голос
/ 12 ноября 2011

Должны ли данные пользователя кэшироваться на уровне базы данных или внутри области сеансов JSF?

1 Ответ

2 голосов
/ 12 ноября 2011

Нет единого размера, который бы подходил всем ответам на этот вопрос.В распределенном приложении состояние может храниться на стороне клиента (файлы cookie и т. Д.), На уровне приложения в памяти или в более постоянном хранилище, например, в базе данных.Вам также не нужно выбирать один - вы можете комбинировать.

Вместо этого, существуют данные для ваших пользовательских данных:

  • В сеансе памяти данные просты, но вы должныБыть занятым - большой объем памяти у многих пользователей может быть проблематичным.Если вы храните МБ данных у большого количества пользователей, рассмотрите возможность постоянного хранения.
  • В состоянии сеанса памяти может возникнуть проблема для служб, которые вы хотите масштабировать до многих серверов уровня приложений.Его можно уменьшить с помощью соответствия балансировки нагрузки, но это также препятствует масштабируемости.
  • В состоянии памяти должно храниться только это состояние - пользовательские данные должны сохраняться.Всегда спрашивайте себя, что, если этот уровень приложений выйдет из строя - нас волнует это состояние?Может ли пользователь восстановиться?Какой опыт?Постоянное хранилище обладает этим преимуществом.
  • Базы данных лучше подходят для хранения больших объемов данных, но вы можете использовать их в обоих направлениях.
  • Базы данных лучше подходят для конкретной даты пользователя, которая должна охватывать сеансы.
  • Клиентские куки-файлы являются дополнительным вариантом, но их размер должен быть очень небольшим, поскольку они отправляются с запросами.
  • Как и базы данных, куки-файлы на стороне клиента могут охватывать сеансы, если это необходимо.

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

Другой другой подход - приложения RESTful.

Не сохранять состояние вообще вслужбы - все возвращается к постоянному хранилищу, а ресурсы кешируются вне сервера приложений (akamai, client и т. д.).Обычно это приводит к более масштабируемым приложениям (даже если одна операция может быть не такой быстрой).На этом этапе параметры постоянного хранилища определяют способ масштабирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...