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