我目前有一个使用mongodb的社交游戏应用程序用于它的数据库.我的问题是,如果我想创建一个积分和徽章系统,有什么建议.成就/徽章的业务逻辑可能变得非常复杂并且非常特别,因此实时授予徽章似乎效率不高.我想象将跟踪的动作添加到某个地方的队列,即Amazon SQS,或者只是将用户的活动源作为队列使用,并让另一个离线工作进程通过,只处理每个动作/活动的效果,看看是否有阈值任何特定徽章都是划线的.
我对这种方法的担心是,徽章查询似乎变得非常密集,我还必须跟踪大量的操作.我可以设想一些成就,例如过去4周内每周获得第二名的人的徽章,或者在50个州的每一个中都有朋友的人的徽章......等等......
对于这种类型的东西,有更优雅或经过验证的方法吗?除了mongo之外,使用另一个数据库作为成就/活动供稿/排行榜是否有意义,创建一个mongo/other db hybrid环境?
像Redis,Neo4J这样的选择,还是普通的旧SQL Server都是混合解决方案的不错选择?我喜欢Mongo所以它将作为我们的主要数据库,但很想知道是否添加另一个数据库将有所帮助.