设计数据库以收集数字产品的统计信息

时间:2018-11-14 14:00:54

标签: database database-design database-schema usage-statistics

我正在为庞大的用户社区(200万以上)构建数字产品,使用Express + GraphQL作为API服务器,并使用React + Apollo作为Web应用程序。然后,当Web部件完成时,我将使用React Native构建移动应用程序。

现在,我正在努力思考如何开发该部分,该部分将收集平台中用户生成的内容的所有统计信息。为简化起见,假设我必须记录:

  • 每篇文章的唯一用户视图
  • 每个视图的总数 文章
  • 访问每个用户个人资料

对于那些以前在开发此类系统中收集数据的经验的人,我有两个问题。

我应该如何记录原始数据? 我是否应该在数据库中创建一种日志,然后根据需要使用该日志生成聚合数据?

类似的东西(文章查看示例):

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

还是应该使用其他方法?您建议使用哪个数据库?现在,我正在考虑使用MongoDb,因为我已经在其他应用程序中使用了它。

1 个答案:

答案 0 :(得分:0)

实际上,没有单一的“正确”解决方案,但可以选择某些方法。我想建议在我的几个项目中使用的组合方法:将数据的最重要(和可查询)部分存储为结构化的,但也将原始数据存储为半结构化的。诸如SQL Server(速度更快,但仅限于免费版)或PostgreSQL(速度较慢,但​​可能就足够了)之类的DBMS可以胜任。 您可以查看my book中的“半结构化数据和高负载”一章以获取更多详细信息。