跟踪用户活动日志 - SQL vs NoSQL?

day*_*mer 7 mysql database-design relational-database mongodb nosql

我有一个mysql数据库,包含用户,播放列表,视频,标签等表格.

基于此,我想收集应用程序上的用户活动.示例用例可能是:

a.) (user) joined (app) on (date)  
b.) (user) created playlist (playlist) on (date)  
c.) (user) added (video(s)) to playlist (playlist)  
d.) (user) added tags (tag(s)) to video in playlist (playlist)  
Run Code Online (Sandbox Code Playgroud)

有了这样的数据,这将是设计用户活动架构的更好选择吗? relational(I am using MySQL) or NoSQL(non-relational, like MongoDB)

支持NoSQL
a.)另一件事是因为活动点亮会很大,检索数据应该很快,我读文档导向数据库在这种情况下表现良好,因为不需要在表之间加入
b.)因为活动日志可能不包含,一个,很多变量取决于发生的活动,关系模式可能不是一个好的解决方案.

我想了解更多相关信息,请分享知识:)
谢谢

And*_*ich 5

您是正确的,任何关系数据库中的主要问题都是联接。

因此,您可以在mongodb或mysql中创建跟踪系统,只需避免加入:

因此结构将如下所示:

id 
activity_type - int
user_id
date
field1
field2
filed3
Run Code Online (Sandbox Code Playgroud)

其中activity_type(Signup = 1,CreatedPlaylist = 2,...)

为避免与用户表联接,您应在每个活动行中添加一些与用户相关的数据(需要显示的数据,例如first_name,last_name)。

使用上面提供的解决方案,您可以使用mysql,并且速度相同。当您将许多需要嵌入关系数据库的东西嵌入文档中时,Mongodb会更快。