2011-05-22 34 views
6

我有一个包含像用户,播放列表,视频,标签表的mysql数据库。跟踪用户活动日志 - SQL vs NoSQL?

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

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的
一)。另一件事是因为上火将是巨大的活动,检索数据要快,我读了面向文档的数据库,在这样的情况下,因为没有表之间的连接需要
表现良好)由于活动日志可能不包含任何取决于活动发生的变量,因此关系模式可能不是一个好的解决方案。

我想更多地了解它,请分享知识:)
谢谢

回答

4

你是对的,任何关系数据库中的主要问题都是连接。

所以,你可以在MongoDB中或在MySQL创建跟踪系统,只是避免加入:

所以结构是这样的:

id 
activity_type - int 
user_id 
date 
field1 
field2 
filed3 

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

为了避免与用户的表连接,你应该添加一些用户相关的数据(数据,你需要显示,如名字,姓氏),以每个活动行。

随着提供上述解决方案,你可以留在MySQL,速度会一样。当你嵌入文档很多事情时,Mongodb会更快,你需要加入关系数据库。

+0

我喜欢的方式安德鲁,将尝试利用我的应用程序 – daydreamer 2011-05-23 14:46:20

+0

@daydreamer这种方法:你有没有试过? ;) – 2011-05-27 05:17:12

+0

嘿安德鲁,我有设计准备好了,但我发现很难在游戏框架与蒙戈插件工作,如果你有兴趣在我做了什么,让我知道你的电子邮件,我会送你我有什么在我看来,这将是伟大的,因为我会得到双眼清洁我的想法:) – daydreamer 2011-05-27 05:24:24

1

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

但是,当您不必平衡书籍,或者确保您不会意外地出售比您拥有的更多小部件时,请使用您所熟悉的部件。蒙戈,沙发,不管。