Кэширование умеренных объемов данных в веб-приложении - БД или плоские файлы? - PullRequest
1 голос
/ 29 июня 2009

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

Должен ли я:

  1. Сохраните время доступа (например, 29.06.09 в 10:50) и сам ресурс в базе данных.
  2. Сохраните время доступа и уникальный идентификатор в базе данных. Уникальный идентификатор - это имя файла ресурса, хранящегося на локальном диске.
  3. Используйте другой подход или стороннее программное решение.

По сути, этот вопрос можно переписать так: «Что лучше для хранения умеренных объемов данных - база данных или простые файлы?»

Спасибо за вашу помощь! :)

Примечание: приложение работает на VPS, поэтому ограничения на размер базы данных / плоских файлов не применяются.

Ответы [ 4 ]

1 голос
/ 29 июня 2009

Чтобы ответить на ваш вопрос: «Что лучше для хранения умеренных объемов данных - база данных или простые файлы?»

Ответ (на мой взгляд) Плоские файлы. Плоские файлы проще для резервного копирования и удаления.

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

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

1 голос
/ 29 июня 2009

Ни.

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

1 голос
/ 29 июня 2009

Зависит от платформы, если вы используете .NET

Ответ 3, используйте объект Cache, идеально подходящий для этого в ASP.NET

Вы можете установить время и зависимость истечения, этот документ объясняет объект кеша

https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-5034946.html

0 голосов
/ 01 июля 2009

Все предложенные решения являются обоснованными. Тем не менее, для моих конкретных потребностей, я пошел с плоскими файлами. Как ни странно, я сделал это по причинам, не упомянутым в некоторых других ответах. Для меня не имеет значения, что плоские файлы проще создавать и удалять, а решения для работы с БД и плоскими файлами позволяют легко проверить, не устарели ли кэшированные данные. В первую очередь я использовал плоские файлы, потому что на моей архитектуре VPS LAMP с одним блоком среднего размера я думаю, что она будет быстрее, чем стороннее решение для кэша или базы данных.

Спасибо всем за ваши мысли! :)

...