Хобрук: Ваш путь к мастерству в программировании

Лучший способ агрегировать данные регистрации

Итак, у меня есть база данных, содержащая журналы людей, нажимающих на ссылку. Я храню id, country, referrer-domain, clickedat. Этот последний столбец является отметкой времени.

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

  • Количество просмотров в день за последний месяц
  • Топ-20 стран, которые использовали вашу ссылку
  • Топ 20 веб-сайтов, ссылающихся на вашу ссылку

Использование COUNT(*) в конечном итоге будет слишком медленным. Я видел методы, в которых вы добавляете еще один запрос к каждому обновлению, вставке, удалению, которое происходит для сохранения в специальной таблице агрегации. Но я не уверен, что это сработает, так как я хотел бы, чтобы пользователи могли, например, выбрать две конкретные даты. Или мне пришлось бы агрегировать по дням.

07.04.2017

  • Возможно, вам подойдет решение NoSQL. 07.04.2017

Ответы:


1

Если вы добавите индексированный столбец Date, , чтобы не выполнять расчеты даты и времени на лету, вы должны просто иметь возможность запрашивать его, используя обычные агрегаты. Потребуется много времени, прежде чем это станет «слишком медленным» с правильно отформатированными запросами.

Если это взлетит, рассмотрите возможность денормализации данных, как вы описываете, но не оптимизируйте их преждевременно!

07.04.2017
  • Это на самом деле прекрасное решение на данный момент. Он медленно набирает обороты, сервис подхватывается более крупным веб-сайтом, который хочет предложить его своим участникам, но это просто больше общих данных, а не больше строк для каждого пользователя. Все они относительно мелкие пользователи. Спасибо! 10.04.2017
  • Новые материалы

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..