Необходимо в БД хранить информацию о взаимодействии пользователя с объектом. Среди характеристик сессии есть два параметра: продолжительность сессии и задействованные элементы объекта. Предполагаемая структура такова:
Таблица sessions
Таблица elements
Связующая таблица session_elements
Вроде все хорошо, но сессий (80к-100к в месяц) и элементов (10к-20к) будет многовато. Таким образом связующая таблица будет расти еще быстрее в расчете, что одна сессия в среднем будет иметь 5-10 элементов. Основные запросы будут вида:
SELECT * FROM `sessions` WHERE `duration` > 100 AND EXIST (SELECT * FROM `session_elements` WHERE `session_id` = 1 AND `element_id` = 1)
Хотелось бы не делать ошибку на этапе проектирования и не переделывать в ходе работы. Пугают размеры таблиц. Может целесообразней будет использовать что-то вроде mongoDB и хранить в удобных json форматах?