Разработка базы данных для сбора статистики для цифрового продукта - PullRequest
0 голосов
/ 14 ноября 2018

Я создаю цифровой продукт для большого сообщества пользователей (более 2 миллионов), используя Express + GraphQL для сервера API и React + Apollo для веб-приложения. Затем я собираюсь создавать мобильные приложения с использованием React Native по завершении веб-части.

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

  • уникальных пользовательских просмотров каждой статьи
  • общее количество просмотров каждого статья
  • посещений каждого профиля пользователя

У меня есть пара вопросов к тем, кто имел опыт разработки таких систем для сбора данных.

Как записать необработанные данные? Должен ли я создать своего рода журнал в базе данных и использовать его позже для генерации агрегированных данных в зависимости от моих потребностей?

Нечто подобное (пример просмотра статьи):

{
    'user_id' : String,
    'article_id' : String,
    'date' : Date,
}

или я должен использовать другой подход? А какую базу данных вы рекомендуете использовать? Сейчас я думаю об использовании MongoDb, так как я уже использую его для остальной части приложения.

1 Ответ

0 голосов
/ 16 ноября 2018

Действительно, единого «правильного» решения не существует, но могут быть выбраны некоторые подходы.Я хотел бы предложить комбинированный подход, используемый в нескольких моих проектах: хранить наиболее значимую (и запрашиваемую) часть данных как структурированную, а также необработанные данные как полуструктурированные.СУБД, такая как SQL Server (более быстрая, но ограниченная в бесплатной редакции) или PostgreSQL (более медленная, но может быть достаточной), может выполнять эту работу.Вы можете взглянуть на главу «Полуструктурированные данные и высокая нагрузка» в моей книге для получения более подробной информации.

...