Тут подходит какая-нибудь аналитическая СУБД. Например, ClickHouse практически для этого и создавался (Click Stream + Ware House).
Хранить можно следующим образом:
1. Есть общая таблица по посещениям/визитами с примерно такой структурой [page_id, visit_date] (больше и не надо)
2. Для хранения статистики создаешь материализованные представления для дня/недели/года
У них есть тестовые данные для плейграунда сбора аналитики по посещениям/хитам -
https://clickhouse-docs.vercel.app/docs/en/getting...