inlanger
@inlanger
Django программист

Какую БД выбрать для хранения записей о просмотрах страницы?

Возникла интересная задача — реализовать счетчик уникальных просмотров для каждой статьи сайта, с возможностью последующей фильтрации данных по датам. Позже эти данные нужно будет показывать авторам статей. Сейчас сильно задумались — а какую БД использовать в этом случае? Насиловать MySQL вроде как не сильно правильно, но ставить для такой «простой» задачи какую-нибудь MongoDB — слишком круто. Думали насчет Redis — так из него нормально не получится получать данные, нужно будет обрабатывать большое количество данных не на стороне БД.

Может кто-то сталкивался с такой задачей? Интересно узнать реально работающие варианты, спасибо :)
  • Вопрос задан
  • 4289 просмотров
Пригласить эксперта
Ответы на вопрос 6
AgentSIB
@AgentSIB
Юзайте MySQL, только создайте еще агригируемые таблицы и заполняйте их триггерами. Например _hourly, _daily, _weekly и тп. Записей будет не много. А уникальность (кликов, посещений) можно добиться уникальными ключами.
Ответ написан
@zapimir
Во-первых, Вы бы хоть уточнили сколько просмотров имеете. Сколько этих самых статей. Если Вы уже используете MySQL делайте на MySQL. Сделайте таблицу с фиксированным размером строки, они будут быстро апдейтиться.
Можете для подсчетов данных за день использовать MEMORY табличку, а вечером по крону добавлять эти данные в общую таблицу. Если нужна детализация по каждому клику можно писать в лог файл с разделителями табами, потом периодически его загружать в базу (скажем раз в 10-15 минут). В общем сильно зависит от деталей.
Ответ написан
Комментировать
EugeneOZ
@EugeneOZ
MongoDB один из самых недорогих вариантов, если не хотите MySQL. Couchbase и Riak просят от 4 GB RAM.
Ну и MySQL с этой задачей вполне справится. Если рабочую БД не хотите нагружать — дополнительную создайте.
В Redis счётчики вообще «на ура» реализовываются, смотрите sorted sets. Но тут надо быть готовым по размерам RAM.
Ответ написан
Комментировать
gigigi
@gigigi
А чем MongoDB не устраивает? Что в нём крутого? :) ставится просто, ипользуется легко, работает быстро. Мы там логи например храним. Даже при миллионах записей всё хорошо.
Ответ написан
Комментировать
subvillion
@subvillion
Redis еще посмотрите, как memcache только значения сохраняет. Ставится легко, работать с ним приятно.
Ответ написан
Комментировать
dizballanze
@dizballanze
Software developer at Yandex
Думали насчет Redis — так из него нормально не получится получать данные, нужно будет обрабатывать большое количество данных не на стороне БД.

Почему вы так считаете? Redis поддерживает несколько весьма удобных структур данных и множество операций над ними. У меня есть опыт работы с ним и могу сказать, что решить ваше задачу при помощи Redis не составит труда и не нужно никакой особой обработки данных на стороне приложения.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
26 апр. 2024, в 09:18
500 руб./в час
26 апр. 2024, в 06:46
1500 руб./в час
26 апр. 2024, в 05:31
1000 руб./за проект