Какой метод лучше?

  • Автор темы Ramzes III
  • Обновлено
  • 13, May 2024
  • #1
Какая структура лучше?

У меня есть собственная CMS, где я хочу отслеживать посещения страниц.

У меня сейчас 2 варианта.

1. Я создаю столбец «СРЕДНИЙ ТЕКСТ» в той же таблице, где хранятся данные страницы,

и я продолжаю добавлять IP/UserAgent в этот столбец при каждой загрузке страницы.

Средний текстовый столбец имеет ограничение в 16 МБ, а мой PHP Memory_limit превышает 30 МБ, поэтому нехватка памяти не является проблемой.

Большинство общих хостов имеют примерно столько же, поэтому даже если сайт переместится, это не будет проблемой.

Проблема в том,

для каждой загрузки страницы во внешнем интерфейсе мне придется извлекать эти 16 МБ данных, добавлять к ним новую строку и обновлять запись таблицы.

Может стать проблемой, если трафик высокий, ресурсы сервера будут слишком перегружены.

CONCAT, похоже, не работает с MediumText и LongText на моем общем сервере, не знаю почему...

2. Я добавляю новую таблицу и сохраняю в ней IP/UserAgent.

Загрузка главной страницы будет быстрее, потребуется только быстрая вставка.

Однако на заднем плане, когда я проверю статистику,

тогда очень огромную таблицу придется читать снова и снова.

Предположим, что страниц 100, тогда данные о посещениях всех 100 страниц будут храниться в этой таблице.

Это может вырасти очень сильно.

Таким образом, выполнение одного запроса означало бы чтение этой огромной таблицы снова и снова.

Например, если я хочу посчитать общее количество посещений за одну неделю, затем за месяц, а затем за отдельные дни, это может быть...

Невозможно установить ограничение в этом типе запроса на подсчет...

Конечно, будут индексы и т. д., но меня все еще беспокоит размер.

Однако, если это просто средний текстовый столбец, в самой таблице страниц,

затем я просто извлекаю максимум 16 МБ данных для конкретной страницы и использую PHP для остальной обработки.

Это дешевле на бэкэнде и, вероятно, быстрее.

Какой из них вы бы предложили?

Ramzes III


Рег
28 Dec, 2006

Тем
71

Постов
185

Баллов
560
  • 03, Jun 2024
  • #2
Статистика AW есть, но она необходима для ведения журнала конкретной страницы, а не всего сайта. Если быть точным, регистрируйте статистику для конкретной целевой страницы. Это для бесплатно распространяемой CMS PowerPress в моей подписи.
https://13pp.co.uk/

Некоторые пользователи могут использовать аналитику, другим может потребоваться что-то встроенное.

Я выбрал второе решение — отдельную таблицу и предоставил возможность очистки базы данных в случае возникновения проблем с производительностью.

Работает хорошо, не так ресурсозатратно, как я думал...
 

SiceancessHek


Рег
27 Oct, 2011

Тем
48

Постов
206

Баллов
496
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно