2015-05-23 3 views
0

Я ищу простой способ хранения и получения счета, но сколько раз пользователь просматривает уникальное сообщение/страницу. ex post/1 сообщение/2. И меня тоже интересует общее количество просмотров.Уникальный счетчик просмотров с историей

Как я думаю, что я должен осуществить это:

  1. Создать userpostview таблицу со столбцами (идентификатор пользователя, сообщения дан, datecreated)
  2. Создать строку из userpostview каждый раз с идентификатором пользователя, сообщения дан, если запись не существует
  3. Получить общее количество строк, где идентификатор == Х
  4. Получить общее количество строк, где Y == сообщения дана

Для небольшого приложения с несколькими рядами все в порядке. Но я ожидаю высокий процент различных пользователей, читающих разные должности в день. Поэтому таблица userpostview будет намного больше, чем таблица таблицы пользователя или таблицы. В конечном счете, я считаю, что это будет проблема производительности, правильно? Например, при вызове счетчиков непрерывно может замедлить чтение. Мне интересно, будет ли кеширование графа идеальным в этой ситуации. Или должна быть отдельная таблица для хранения инкрементного счетчика?

Я использую колбу с sqlalchemy backend для postgresql. Достаточно ли этого?

Однако после того, как делать немного исследований, я увидел это:

https://www.youtube.com/watch?v=G-lGCC4KKok

http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html

Должен ли я быть "притворяется" счетчик? Есть ли лучший подход? Любые улучшенные или улучшенные предложения приветствуются.

Заранее спасибо.

ответ

1

Вы logging user interactions with your application?

Ведение журнала может быть отличным способом хранения таких данных. Просто настройте простой регистратор в приложении Flask, который создает журнал каждый раз, когда пользователь загружает почтовую страницу. Сохраните user_id, post_id и timestamp в файле журнала. (Примечание: если вы беспокоитесь, что файлы журналов становятся слишком большими, вы можете configure the logger to start a new file every day).

После того, как вы установили ведение журнала, вы можете использовать утилиты для анализа ваших журналов и предоставления вам агрегированных результатов, подобных тем, которые вы просили. Или вы даже можете анализировать журналы с помощью Python и запускать пользовательские «запросы».

Я рекомендую использовать ELK stack. Logstash, Elasticsearch и Kibana - это бесплатные проекты с открытым исходным кодом. В течение часа у вас могут быть красивые диаграммы и графики активности пользователя на вашем сайте.

+0

Хм .. это выглядит интересно. На данный момент меня не обязательно интересуют графики или графики. Как мое основное приложение/api получает подсчеты? В чем преимущество стека ELK над добавлением новых строк в базу данных postgresql? – user805981

+0

О! Я не знал, что вы хотите, чтобы подсчеты были частью ваших данных приложения. Я думал, что вы хотите видеть активность пользователя для отслеживания sys-ops и т. Д. Если вы хотите, чтобы ваше приложение использовало данные userpostviews, оно должно быть в базе данных. Я рекомендую таблицу разбиения Postgres. https://blog.engineyard.com/2013/scaling-postgresql-performance-table-partitioning –

+0

Это больше похоже на то, что я ищу.Что вы думаете об использовании базы данных nosql вместе с postgres, где база данных nosql обрабатывает запись счетчика просмотров? – user805981

Смежные вопросы