На сайте несколько тысяч товарных списков.
Цель состоит в том, чтобы хранить обновленную информацию о списках для каждого продукта (просмотры / лайки / и т. Д.) В базе данных MySql каждые 15 минут или около того, сохраняя при этом предыдущие результаты.
Эти данные будут использоваться для отображения графиков с возможностью отображения ежечасных, ежедневных, еженедельных и т. Д. Статистики.
Вопрос в том, как наиболее эффективно сохранить эти данные в таблице MySQL?
Есть два подхода, которые я могу придумать:
1) Сохраняйте каждое 15-минутное обновление как отдельную запись, а затем извлекайте диапазон данных при необходимости. Проблема в том, что эта таблица может быстро перерасти в многомиллионную таблицу, которая не кажется настолько эффективной.
2) Для каждого 15-минутного обновления добавляйте необходимые данные (views / likes / etc) в конец существующей строки данных в соответствующих столбцах, а затем при извлечении разбивайте эту строку в массив. Поскольку не было бы диапазонов, я мог бы хранить данные о последних обновлениях и вычислять диапазоны оттуда. Проблема с этим может быть менее надежной, и строки данных также будут расти со временем.
Заранее спасибо!
Решение первое, безусловно, лучший ответ. Не беспокойтесь о том, сколько строк создано. По какой-то причине люди зациклены на количестве таблиц строк. В последнем ответе вы будете нарушать нормализацию базы данных, храня несколько значений в одной записи.
Других решений пока нет …