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

时间:2011-05-22 22:40:16

标签: mysql mongodb database-design relational-database 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)  

鉴于此类数据,哪种数据更适合设计用户活动架构? relational(I am using MySQL) or NoSQL(non-relational, like MongoDB)

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

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

2 个答案:

答案 0 :(得分:5)

你是对的,任何关系数据库中的主要问题是加入。

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

所以结构将是这样的:

id 
activity_type - int
user_id
date
field1
field2
filed3

其中activity_type(注册= 1,CreatedPlaylist = 2,...)

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

使用上面提供的解决方案,您可以使用mysql,速度也一样。当你在文档中嵌入很多东西时,Mongodb会更快,你需要加入关系数据库。

答案 1 :(得分:1)

作为一名长期的关系用户,在我看来,决定取决于您是否有金融交易或实物跟踪。 “金钱和东西”是Relational的发明之作。它非常擅长并保持高标准的正确性。

但是,如果您不需要平衡书籍,或者确保不会意外地销售比您更多的小部件,那么请使用您熟悉的内容。 Mongo,Couch,等等。