Стремясь добавить статистику и отслеживание пользователей на моем сайте, я подумал о том, как лучше вести счетчики просмотров страниц и других очень часто происходящих событий.Теперь мой сайт явно не такого размера, как Facebook, чтобы оправдать некоторые из реализованных ими стратегий (например, даже не нужно использование шардинга), но я бы хотел избежать любых вопиющих глупых ошибок.
Кажется, самый простой способ отслеживать это просто иметь целочисленный столбец в таблице.Например, у каждой страницы есть столбец просмотра страниц, который увеличивается на 1 для каждого просмотра.Похоже, что это может быть проблемой, если люди переходят на страницу быстрее, чем может написать база данных.
Если, например, два человека одновременно заходят на страницу, то счет previous_pageview
будет одинаковымдо обоих обновлений, и каждое обновление будет обновлять его до previous_pageview+1
, а не +2
.Однако, если предположить, что скорость записи в базу данных составляет 10 мс (я думаю, что она действительно высока), вам потребуется порядка ста просмотров страниц в секунду или миллионов просмотров страниц в день.
Хорошо, тогдадля меня просто увеличивать столбец?Точное число не слишком важно, поэтому некоторые ошибки здесь и там терпимы.Замедляется ли оператор обновления в одном столбце, если в одной строке много столбцов?(Я предполагаю, что нет.)
Я планировал использовать отдельную базу данных No-SQL для хранения pk_[stat]->value
пар для каждой статистики, быстро увеличивая их, а затем выполняя задание cron для периодического обновления MySQL.ценности.Это похоже на излишество;кто-нибудь, пожалуйста, убедите меня, что это так.