В какую бд лучше всего записывать много логов сайта?

У меня появилась задача написать свою систему сбора статистики посещения сайтов, что-то вроде Яндекс метрики и Google Analytics.

В пуле будет много сайтов, суммарная посещалка думаю до 100к пользователей в день.
Схема будет схожая: выдается js скрипт, который вешается на сайт, он собирает нужные данные и отправляет запись на сервер. В таблицах будет примерно по 50 параметров о посетителе (IP, User Agent, параметры браузера...)

Возник вопрос: как целесообразнее хранить данные? Какую базу данных выбрать? Mysql, Postgresql, Mongodb, Redis или другу?
Статистика системы будет выдавать не только само значение посещения, но и её можно будет группировать по разным параметрам (примерно как в Яндекс метрике).

Так же верно я понимаю, что записи в бд из js скрипта достаточно делать обычными ajax запросами, или уже придумано более эффективная схема, чтобы сервер по 100к записей в день не упал?
  • Вопрос задан
  • 2083 просмотра
Пригласить эксперта
Ответы на вопрос 7
WinPooh32
@WinPooh32
Stack Overflow answer searching expert
clickhouse, который был специально разработан для яндекс.метрики
Ответ написан
ky0
@ky0
Миллиардер, филантроп, патологический лгун
Sanes
@Sanes
Так же верно я понимаю, что записи в бд из js скрипта достаточно делать обычными ajax запросами

Нет. Должен быть веб-сервер. И какой-то слой, который сможет вытащить данные из БД и отдать результат веб-серверу.
Ответ написан
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Ну, кроме clickhouse еще порекомендую kafka с записью в тот же сликхоус или hbase/hadoop. Причем из кафки данные можно вытащить в любой момент времени и за любой момент времени (ну это как ретеншион настроите). Так что пишите в кафку, а агрегируйте куда бог пошлет, хоть в hbase, хоть в clickhouse, хоть в postgres.
Ответ написан
Комментировать
@res2001
Developer, ex-admin
Читал, что PostgreSQL нынче то же умеет хранить данные по колонкам, как clickhouse.
Ответ написан
Комментировать
@vanyabrovaru
Web Developer
Чтобы не положило сервер, лучше писать в файл, затем раз в пол часа или десять минут (например) экспортировать в реляционную БД (postgresql или mariadb для вашей задачи особой разницы нету).
Также предусмотреть архивные таблицы (например по месяцам или годам).
Так сделано у piwik или сейчас уже matomo называется.
К стати, почему не хотите использовать piwik?
Ответ написан
Комментировать
@Barmunk
еще можно посмотреть на готовые решения:
https://medevel.com/best-20-open-source-free-self-...

К примеру мы используем у себя matomo / демо
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы