База данных для счётчика хостов

программирование базы данных sql статистика nosql

Пишу небольшой сервис (пока для личного пользования), суть которого состоит в возможности подсчёта просмотров (да, картинкою, как top.(mail|rambler|etc)), встраиваться это будет во блоги, подписи/посты в форумы, разные сообщества и комментарии. Раздумываю над способом хранения визитов, для последующего определения уникальности хоста/посетителя. Что лучше использовать: RDBMS (PostgreSQL), NoSQL (mongo), Plain text? Счётчиков может быть великое множество (от нескольких тысяч), количество просмотров на один от одного в сутки до, вероятно, 4-5 в секунду.

Напоминаю, задача БД - определить уникальность хоста/посетителя для конкретного счётчика. Для хранения значений каждого отдельного счётчика выбрал in-memory DB с возможностью сохранения снапшотов на диск.

Примечание:
index0h, да примерно так и делаю (про redis, но пока переносить данные в sql/nosql не думал), но вы меня немного не поняли.

> Напоминаю, задача БД - определить уникальность хоста/посетителя для конкретного счётчика.
Переформулирую вопрос: при каждом уникальном запросе в базу будет добавляться запись вида counter_id:IP. Поскольку нужно вычислить уникальность хоста/посетителя за всё время существования счётчика (очистка базы отпадает), то таких записей может накопиться по несколько тысяч на один счётчик, что может (ох, как я на это надеюсь) означать, что записей будут миллионы. Вопрос: смогут ли справиться реляционные технологии с такой задачей? Опыта у меня в этом нет (если не считать написание простых бложиков да другой ереси), потому и интересуюсь, может подскажет кто.

P.S.: поскольку мне не нужны, в данном случае (логи, по сути), реляционные технологии, то чашу, пока что, переклоняют nosql db. Сейчас читаю маны и активно гуглю. Посмотрим, что получится.

Примечание:
Тоска. Я им об арахисе, а они мне о малине. Я не спрашивал, каким образом идентифицировать уникальность хоста/посетителя (видите, везде пишу "хоста/посетителя", значит, понимаю, что это разные понятия) или как рисовать картинку. Я спрашиваю, есть ли смысл хранить логи, используя релиционную СУБД, NoSQL решение или обычные текстовые файлы.
В любом случае, спасибо за ответы и потраченное время.

P.S.: конкретной цели нет, главное - получить некий опыт.
Ответы:
я бы на вашем месте сделал следующее:
Если поток пользователей большой количество сначала кэшировал в redis, дальше передавал данные в MySQL, или в PostgreSQL. При этом ночью в период минимальной активности генерировал изображения счетчика на приблизительную активность на следующий день. Т.е. например в день 1к пользователей:
имеем в redis текущее количество просмотров, 1 раз в час синхронизируем это значение с MySQL, ночью генерируем 1к изображений на перед и дальше при каждом заходе отображаем изображение со смещением в redis на перед. Сами изображения рекомендую хранить в файловой системе, потому что тот же gridfs (mongo) будет жрать лишние ресурсы, хотя смысла в этом мало (данные быстро устаревают и нет необходимости их просто так хранить)
1) Считать IP - это все равно что считать красные машины и не замечать зеленые. Есть много случаев, когда с одного IP приходят разные посетители. Есть много случаев когда один посетитель приходит с разных IP. Есть простое решение проблемы - генерировать случайное число и сохранять его в куках браузера. Тогда отслеживаться будет конкретный браузер, независимо с какого IP он пришел.
2) Реляционные технологии справятся и с десятками миллионов записей. Вопрос справится ли хостинг? Какая нагрузка будет на сервер? Стоит ли красивая картинка около записи лишних 100$ в месяц на хостинг?
3) Какова цель этих подсчетов? Если красивая картинка - то ответ выше, Если знать действительную посещаемость и статистику, то для этого существуют другие приемы.
Полностью уникальность юзверя определить увы нереально, так как данные отправляет пользователь, а он может врать)). Можно конечно в кукисы прописать хэш: ip+soult. А дальше, если он еще раз зашел - проверят этот хеш: хэш правильный - не уник., неправильный - уник. Обращаю внимание для каждого уникального запроса добавлять свой хэш.


12 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.