我正在为大型用户社区(超过 200 万)构建数字产品,使用 Express + GraphQL 作为 API 服务器,使用 React + Apollo 作为 Web 应用程序。然后,当 Web 部件完成时,我将使用 React Native 构建移动应用程序。
现在我正在努力思考如何开发将收集平台中用户生成内容的所有统计数据的部分。为了简化事情,假设我必须记录:
对于那些有过开发此类数据收集系统经验的人,我有几个问题。
我该如何记录原始数据? 我应该在数据库中创建一种日志,然后根据我的需要使用它来生成聚合数据吗?
类似(文章视图示例):
{
'user_id' : String,
'article_id' : String,
'date' : Date,
}
或者我应该使用不同的方法?您建议使用哪个数据库?现在我正在考虑使用 MongoDb,因为我已经在应用程序的其余部分使用它了。
确实没有单一的“正确”解决方案,但可以选择一些方法。我想建议在我的几个项目中使用的组合方法:将数据最重要(且可查询)的部分存储为结构化数据,但也将原始数据存储为半结构化数据。像 SQL Server(速度更快,但免费版本有限)或 PostgreSQL(速度较慢,但可能足够)这样的 DBMS 可以完成这项工作。 您可以查看我的书中的“半结构化数据和高负载”章节了解更多详细信息。