mongodb的多表关联哪种处理方式最优

重阳真人 发布于 2013/03/23 18:51
阅读 9K+
收藏 0

@huzorro 你好,想跟你请教个问题:这段时间一直在看您发表的mongodb方面的文章,对我的帮助的很大,非常感谢!今天遇到了一个问题,想了一下午,查看了很多资料也没能找到合理的解决方式,不知道您有没有遇到过。

需求是这样的,一个游戏后台系统,需要对每天产生的日志文件进行分析。游戏日志有用户注册、用户登录等。使用mapreduce将用户注册信息统计到一个集合user_register,将用户登录信息去重后放到另一个集合user_login,现在需要根据用户名关联这个两个集合统计出一些数据。但查了很多资料没有发现mongodb在这方面有很好的解决办法,也想过使用mapreduce来解决,但根据这段时间我使用mapreduce的心得,感觉mapreduce只能处理一个集合,不能同时处理两个集合。目前我想出的一个解决方案就是把这两个集合中的数据都读出来,然后使用程序代码处理。这种方式虽然能暂时解决问题,但肯定不是最优的。

所以就冒昧给您发了这条信息,看您能不能给一些合理的建议或方法,先在此谢过!!

加载中
0
huzorro
huzorro

惭愧 其实我只是使用mogodb的一部分功能

对于你说的应用场景有以下几个建议仅供参考

1.如果需要的数据实时性要求比较高,可以用mongodb做队列服务使用 程序代码实时处理数据

2.合并user_register user_login 到一个collection 然后再mapreduce

3.使用dbref关联两个collection 然后再mapreduce

0
Jarry_liu
Jarry_liu
@huzorro 同请教,如何跳出关系型数据库的设计思路?
0
重阳真人
重阳真人

谢谢您的建议!

系统对数据实时性没有要求,只要满足今天能看到昨天数据就行。mongodb队列服务不知道怎么使用,但“程序代码实时处理”是不是可以理解就是把数据取出来在代码中处理。

第二种、第三种方法我也考虑过,但可行性不大。因为user_reigster、user_login日志都是单独存放的,而且存放的都是一些基础数据。如果想要二者关联,只有在从日志中读取数据往mongodb插入时关联,但这样的话怕有些顾此失彼,怕出现插入时速度很慢,读取时速度也不是很快

重阳真人
重阳真人
回复 @huzorro : 谢谢!现在正在用第一种方式测试,等需求稳定后再用第二种方式。谢谢您的耐心解答!
huzorro
huzorro
第二种 我看你的回复 你的理解应该是要把register和login信息用userid合并到一行 其实只需要把register和login记录合并到一个collection register和login信息是作为独立行存在的 mapreduce的时候使用userid来获取同一userid的register和login信息
0
天天天
天天天
关联的项存为主表的一个属性
0
开胃
开胃
如果R>W,那么把信息整合到一个表中比较好
返回顶部
顶部