如何使用 nosql 构建成就和徽章

2024-05-04

我目前有一个使用 mongodb 作为数据库的社交游戏应用程序。我的问题是,如果我想创建一个积分和徽章系统,有哪些建议。成就/徽章的业务逻辑可能会变得非常复杂并且非常临时,因此实时授予徽章似乎效率不高。我想象将跟踪的操作添加到队列中的某处,即 Amazon SQS,或者仅使用用户的活动源作为队列,并让另一个离线工作进程执行并仅处理每个操作/活动的效果,以查看阈值是否为任何特定的徽章都会被划掉。

我对这种方法的担心是,徽章查询似乎会变得非常密集,而且我还必须跟踪大量的操作。我可以想象各种成就,比如为过去 4 周内每周获得第二名的人授予徽章,或者为在 50 个州中的每一个州都有朋友的人授予徽章……等等……

对于此类东西是否有更优雅或经过验证的方法?除了 mongo 之外,使用另一个数据库来获取成就/活动提要/排行榜是否有意义,创建 mongo/其他数据库混合环境?

Redis、Neo4J 或普通的旧式 SQL Server 等选择对于混合解决方案来说是不错的选择吗?我喜欢 Mongo,因此它将保留作为我们的主要数据库,但很想知道添加另一个数据库是否会有所帮助。


这是在数据库上运行 MapReduce 的良好候选者。您可以不那么定期地运行它们,使用它们来离线计算您想要的数据。

http://www.mongodb.org/display/DOCS/MapReduce http://www.mongodb.org/display/DOCS/MapReduce

您可以使用其他工具来执行此操作,但在您的摘要中,我看不到任何令人信服的理由来增加现阶段的复杂性。我会探索地图缩减,尝试一下,如果它不能满足您的需求,请扩展您的选择。但那时,您至少会发现具体的瓶颈(如果有的话)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 nosql 构建成就和徽章 的相关文章

随机推荐

  • MVC 4 RC - Aspnet_regsql.exe

    我正在尝试使用 MVC 4 RC 默认模板启用登录 我以与 MVC 3 中相同的方式进行操作 Aspnet regsql exe gt SQL 服务器 然后我让连接字符串指向 SQL 服务器 当我尝试注册新用户时 我得到以下信息 Serve
  • Matlab 的快速 JSON 解析器

    您知道 Matlab 中有一个非常快速的 JSON 解析器吗 目前我正在使用JSONlab http www mathworks com matlabcentral fileexchange 33381 jsonlab a toolbox
  • 安装轮子后安装后脚本

    Using from setuptools command install import install 如果我运行 我可以轻松运行自定义安装后脚本python setup py install 这是相当微不足道 https stackov
  • 学习 WPF 会提高我的 ASP.NET 技能吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我已经在 Windows 窗体领域工作了很多年 而且仍然如此 我完全不熟悉 ASP NET 技术 也不熟悉其他 Web 相关技术 我曾合作过 O
  • 使用 Python/PyGObject 在 Windows 中加载 GTK-Glade 翻译

    我有一个 Python 脚本 可以加载可翻译的 Glade GUI 在 Linux 下一切工作正常 但我在理解 Windows 上的必要步骤时遇到了很多困难 Linux 下似乎需要的只是 import locale locale setlo
  • 你如何处理冗余代码?

    我有一个类 它是代码库项目的一部分 该项目是为不再需要的特定目的而编写的 所以问题是你如何处理这样的代码 您是否简单地删除它 或者您是否记住它 未来的开发人员可能会遇到它 但没有意识到他们可以忽略它 或者您是否有某种存档系统 是否存在公认的
  • 捕获通信异常而不是自定义故障异常 - WCF

    在服务器上我抛出这样的异常 catch SqlException exception if exception Message Contains Custom error from stored proc Exception to be t
  • 使用map或reduce或filter,在Scheme中,计算列表中有多少个元素[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 number length 1 1 0 1 0 0 这假设返回 6 我知道如何使用长度并找到它 但我不知道如何在没有长度的情况下使用映射或过
  • List.Except 不起作用

    我尝试减去 2 个列表 如下代码所示 assignUsers已获得 3 条记录assignedUsers有 2 行 后Except方法我仍然得到 3 行 尽管我应该得到 1 条记录 因为 2 行assignedUsers类似于assignU
  • TypeScript 中的可等待类型

    我在 JavaScript 中经常使用 async await 现在我正在逐渐将代码库的某些部分转换为 TypeScript 在某些情况下 我的函数接受将被调用和等待的函数 这意味着它可以返回一个承诺 只是一个同步值 我已经定义了Await
  • 使用来自服务器和 ko.mapping 创建函数的元数据处理任意选项

    我有一个视图模型 其中一些可供选择的属性值由其他属性决定 这是通过requires field var clusterOptions name None sku 0 price 0 name Standard MySQL Cluster s
  • Vue 创建项目 - 找不到模块“vue-loader-v16/package.json”

    我通过命令全局安装了 vue clinpm install g vue cli我尝试通过命令创建新项目vue create examples vue 2一切都很好 直到我跑步npm run serve 这个命令给我一个错误找不到模块 vue
  • Qt Designer 与手动编码

    每次我使用图形工具包开始一个项目时 第一个冲突就会发生在如何处理视觉设计和小部件布局的决定上 图形工具还是手动编码 这是一个非常棘手 主观的问题 因为大多数人会根据个人喜好来决定 它还很大程度上取决于图形工具的质量 在这种情况下 我想只关注
  • Android:如果我将serialVersionUID 添加到旧的可序列化对象中,会发生什么?

    如果您采用从未显式指定过serialVersionUID的旧可序列化对象 并将serialVersionUID添加到该对象 会发生什么情况 在我看来 下次最终用户更新应用程序时 它会尝试反序列化光盘中的数据 发现serialVersionU
  • 可以在 iOS 应用程序中全局禁用旋转吗?

    我有一个由很多视图控制器组成的应用程序 在项目摘要中 我已将纵向方向设置为唯一支持的设备方向 然而 该应用程序在横向旋转时仍然会变得混乱 我的问题是 有没有办法通过应用程序委托或其他方式全局禁用自动旋转 或者我是否必须进入所有视图控制器并添
  • 在单个测试中断言多个条件,还是分成多个测试? [复制]

    这个问题在这里已经有答案了 如果您正在测试如下所示的计数函数 那么在一个函数中测试该函数的多项内容与为每个测试使用一个测试函数相比 是否被认为是 正确 或 错误 function testGetKeywordCount tester thi
  • LINQ 分组依据和选择集合

    我有这个结构 Customer has many Orders has many OrderItems 我想生成一个列表CustomerItems通过 LINQ 给出的子集OrderItems List of new Customer Li
  • 如何使用 jq 对可能不存在的数组进行排序?

    给定以下 JSON alice items foo bar bob items bar foo charlie items foo bar 我可以排序items数组如下 jq lt users json map items sort ite
  • 在 mongodb shell 中打印文档值

    我想在 mongo shell 中打印此 JSON 文档的值 就像简单的控制台输出一样 无需创建新的集合或文档 提前致谢 我找到了一个解决方案 通过使用 forEach 应用 JavaScript 方法 db widget find id
  • 如何使用 nosql 构建成就和徽章

    我目前有一个使用 mongodb 作为数据库的社交游戏应用程序 我的问题是 如果我想创建一个积分和徽章系统 有哪些建议 成就 徽章的业务逻辑可能会变得非常复杂并且非常临时 因此实时授予徽章似乎效率不高 我想象将跟踪的操作添加到队列中的某处