Cron 作业中聚合的力量和成本效益

cron 作业中聚合的力量和成本效益

在开发我的 saas 产品时,我发现,对于 10k 用户,您每天需要 10,001 次查询,并定期进行数据库查询来重置积分或免费提示。通过智能聚合,无论您有 10k 还是 100k 用户,您都只需要 2 次查询!

首先,让我给您一些 mongodb 生产数据库的成本审查(10k 和 1 年):

正常方式,每日查询:10,001
年度查询:10,001 x 365 = 3,650,365 次查询
年度费用:3,650,365 x 0.001 美元 = 3,650.37 美元

聚合方式,每日查询:2
年度查询:2 x 365 = 730 次查询
年度费用:730 x 0.001 美元 = 0.73 美元

节省:3,650.37 – 0.73 = 3,649.64 美元(近 40 万泰铢)

太棒了,现在看看传统的查询方法(为每个用户进行一个查询)

模力视频 模力视频

模力视频 – AIGC视频制作平台 | AI剪辑 | 云剪辑 | 海量模板

模力视频 51 查看详情 模力视频

const resetlimitsforusers = async () => {  const users = await user.find({ /* conditions to select users */ });  for (const user of users) {    if (user.plan.remaining_prompt_count < 3 || user.plan.remaining_page_count < 3) {      user.plan.remaining_prompt_count = 3;      user.plan.total_prompt_count = 3;      // save updated plan      await user.plan.save();    }  }};

这里,如果您有 10,000 个用户,这会导致 10,001 个查询(每个用户 1 个,加上用于获取用户的初始查询) – 这是巨大的..

现在是英雄条目,[看起来有点困难,但它可以节省大量的钱]

const resetPlanCounts = () => {  cron.schedule('* * * * *', async () => {    try {      const twoMinutesAgo = new Date(Date.now() - 2 * 60 * 1000); // 2 minutes ago      const usersWithRegisteredPlan = await User.aggregate([        {          $match: {            createdAt: { $lte: twoMinutesAgo },            plan: { $exists: true }          }        },        {          $lookup: {            from: 'plans',            localField: 'plan',            foreignField: '_id',            as: 'planDetails'          }        },        {          $unwind: '$planDetails'        },        {          $match: {            'planDetails.name': 'Registered',            $or: [              { 'planDetails.remaining_prompt_count': { $lt: 3 } },              { 'planDetails.remaining_page_count': { $lt: 3 } }            ]          }        },        {          $project: {            planId: '$planDetails._id'          }        }      ]);      const planIds = usersWithRegisteredPlan.map(user => user.planId);      if (planIds.length > 0) {        const { modifiedCount } = await Plan.updateMany(          { _id: { $in: planIds } },          { $set: { remaining_prompt_count: 3, total_prompt_count: 3, remaining_page_count: 3, total_page_count: 3 } }        );        console.log(`${modifiedCount} plans reset for "Registered" users.`);      } else {        console.log('No plans to reset for today.');      }    } catch (error) {      console.error('Error resetting plan counts:', error);    }  });};

这就是您如何运行 cron 作业 [它在特定时间自动运行] 来更新所有 10k 用户积分或限制,这可以在一年内节省超过 3600 美元。

作者,
姓名:mahinur ra​​hman
联系方式:dev.mahinur.rahman@gmail.com

以上就是Cron 作业中聚合的力量和成本效益的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/451546.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月7日 23:23:06
下一篇 2025年11月7日 23:24:13

相关推荐

  • 如何用C++编写快递管理系统 物流状态追踪和数据库基础

    高效的物流状态更新机制设计可通过消息队列实现异步处理。首先,使用消息队列(如rabbitmq或kafka)解耦状态更新服务与核心业务逻辑,在状态变化时发送消息至队列;其次,由消费者服务异步处理并批量更新数据库,以降低频繁更新对数据库的压力。 快递管理系统的核心在于追踪物流状态和高效管理数据。C++虽…

    2025年12月18日 好文分享
    000
  • 如何在C++中构建NoSQL客户端_数据库驱动开发

    构建c++++ nosql客户端需选合适数据库、理解协议并用c++网络库实现交互,同时掌握api和数据模型。1. 选择数据库时考虑数据模型(如mongodb适合文档,redis适合缓存,cassandra适合大数据)。2. 根据性能需求选择(如redis用于高并发缓存,cassandra用于高写入负…

    2025年12月18日 好文分享
    000
  • 使用免费 NET DIO + Randstad 的后端训练营

    免费的 bootcamp coding the future randstad – backend with .net 对于任何想要专注于 c# 编程语言和 microsoft 开发生态系统的人来说都是一个绝佳的机会。 凭借超过 8,000 个奖学金,参与者将有机会学习 .net 基础知识,成为能够…

    2025年12月18日 好文分享
    000
  • 如何将C++框架与分布式系统集成

    在分布式系统中,c++++框架可与分布式系统集成:通信库集成:使用第三方库建立节点间通信,封装库函数并创建自定义接口。分布式数据存储整合:使用分布式数据库技术存储和检索数据,利用框架的dal集成访问和操作数据。消息队列集成:使用消息队列平台实现异步通信,利用框架的事件处理功能监听消息并采取相应操作。…

    2025年12月18日
    000
  • 如何在 C++ 框架中集成 NoSQL 数据库?

    如何集成 nosql 数据库?在 c++++ 框架中集成 nosql 数据库涉及以下步骤:选择 nosql 数据库。创建数据库连接。执行数据库操作。管理事务(可选)。 如何在 C++ 框架中集成 NoSQL 数据库 介绍 NoSQL 数据库与关系型数据库 (RDBMS) 不同,它们不使用表和行的数据…

    2025年12月18日
    000
  • 将C++框架与物联网技术集成需要考虑哪些因素?

    将 c++++ 框架集成到物联网中需要考虑以下关键因素:通信协议:选择轻量级协议,例如 mqtt,以与物联网设备通信。数据管理:设计可处理大量数据的可扩展系统,利用 c++ 框架提供的工具。设备管理:利用 c++ 框架的线程和并发特性管理设备连接。安全性:实施安全措施,保护系统免受网络攻击,并利用 …

    2025年12月18日
    000
  • C++框架中的数据处理和存储机制

    本文介绍了 c++++ 框架中处理和存储数据的关键技术:数据处理:stl 容器(vector、map、set)boost 库(额外容器和算法)eigen 库(优化矩阵和向量)数据存储:关系数据库管理系统(rdbms)(mysql、postgresql、sqlite)文档存储(mongodb、redi…

    2025年12月18日
    000
  • C++ 框架如何处理大规模数据和并发场景,以保持可扩展性和维护性?

    c++++ 框架为应对大规模数据和并发场景提供了解决方案:1. 并发支持(线程库、并行标准库);2. 数据存储(关系型、nosql 数据库);3. 高性能计算(openmp、cuda);4. 数据分片(水平、垂直);5. 缓存(boost.cache、redis)。这些框架使应用程序能够扩展、提高可…

    2025年12月18日
    000
  • 哪种C++框架具有最广泛的社区支持?

    qt和boost是c++++框架中社区支持最广泛的两个选择。qt,一个跨平台应用程序框架,拥有大型且活跃的社区,包括论坛、用户组和商业支持。boost,一组c++库,也拥有一个活跃的社区,包括邮件列表、用户论坛和社交媒体组。qt最适合开发跨平台gui应用程序,而boost最适合需要扩展c++标准库的…

    2025年12月18日
    000
  • 如何根据特定行业或领域的需求评估C++框架?

    根据特定行业或领域的需求评估 c++++ 框架:确定行业/领域特定需求。研究 c++ 框架的特性和功能。评估框架的性能、可扩展性、易用性、灵活性和支持。检查实战案例,例如零售、金融和医疗保健。根据评估结果,选择最符合行业/领域特定需求的 c++ 框架。 如何根据特定行业或领域的需求评估 C++ 框架…

    2025年12月18日
    100
  • C++ 框架如何与其他技术集成?

    c++++ 框架可通过代码库级或运行时集成无缝地与其他技术相结合。利用代码库级集成,外部技术的代码合并到框架中,形成一个统一的解决方案。运行时集成则通过接口或中间件实现外部技术与框架的松散耦合。以集成 mongodb 为例,代码库级集成通过在 qt 中包含 mongodb 驱动程序并连接到 mong…

    2025年12月18日
    000
  • 针对特定任务选择 C++ 框架的指南

    选择 c++++ 框架指南:确定项目需求(功能、性能、可伸缩性、社区支持)研究 c++ 框架(架构、性能、社区支持、工具集)评估框架(功能符合、性能基准、文档质量、社区参与) 针对特定任务选择 C++ 框架的指南 在当今快节奏的软件开发领域,选择正确的框架对于项目成功至关重要。对于 C++ 而言,有…

    2025年12月18日
    000
  • 揭秘 C++ 框架的盲点:解决隐藏问题

    c++++ 框架的隐藏问题:依赖关系、代码生成、接口依赖、性能瓶颈和调试问题,可通过查找文档、隔离问题、深入源码、使用调试器和寻求专业帮助解决。 揭秘 C++ 框架的盲点:解决隐藏问题 在 C++ 开发中,框架已成为提高生产力、可复用性和代码质量的重要工具。然而,当框架隐藏了实现细节时,也可能会带来…

    2025年12月18日
    000
  • C++ 框架的学习指南:快速上手

    对于使用 c++++ 框架,本指南提供了分步指导,包括:了解基础知识:熟悉框架概念和 oop 原则。探索框架功能:容器、算法、线程管理、网络操作和数据库集成。实战案例:创建一个文件管理程序,演示框架的使用。扩展知识:探索其他框架、参与社区和练习项目。 C++ 框架的学习指南:快速上手 随着 C++ …

    2025年12月18日
    000
  • 如何选择合适的 C++ 框架用于企业级应用

    在为企业级应用选择 c++++ 框架时,需要考虑功能特性、性能、可扩展性、社区支持和许可条款。根据具体应用需求,建议的框架包括:电子商务平台(qt 和 boost.asio)、社交媒体应用(c++ rest sdk 和 mongodb c++ 驱动程序)以及金融交易系统(ace 和 zeromq)。…

    2025年12月18日
    000
  • C++在清算和结算平台中的分布式架构

    分布式架构在清算和结算平台中至关重要,而 c++++ 以其高性能和并行性适合用于分布式系统。c++ 在分布式架构中的关键应用包括:微服务实现:c++ 可用于编写高效、可扩展的微服务。消息处理:c++ 可轻松集成消息队列,实现快速、可靠的消息处理。分布式数据访问:c++ 支持访问分布式数据库,如 ap…

    2025年12月18日
    000
  • C++技术中的大数据处理:如何有效存储和检索大数据集?

    c++++ 中大数据处理的有效存储和检索策略:存储策略:数组和向量(快速访问)、链表和列表(动态插入和删除)、散列表(快速查找和检索)、数据库(可扩展性和灵活的数据管理)。检索技巧:索引(快速查找元素)、二分查找(有序数据集的快速查找)、散列表(快速查找)。 C++ 技术中的大数据处理:如何有效存储…

    2025年12月18日
    000
  • C++技术中的大数据处理:如何使用第三方库和框架简化大数据处理?

    使用第三方库(如 apac++he hadoop 和 apache spark)以及框架在 c++ 中处理大数据变得更加容易,从而提高了开发效率、性能和可扩展性。具体来说:第三方库提供处理海量数据集的强大功能,例如 hadoop 和 spark。mongodb 和 redis 等 nosql 数据库…

    2025年12月18日
    000
  • C++技术中的大数据处理:如何构建基于C++的大数据处理管道?

    如何使用 c++++ 技术构建大数据处理管道?数据获取:使用 c++ 连接器连接到数据源,例如 hdfs 或 kafka。数据处理:利用 c++ 标准库中的算法和数据结构进行数据处理,例如并行模式。数据存储:将处理后的数据存储在存储系统中,例如 cassandra 或 mongodb。 C++ 技术…

    2025年12月18日
    000
  • .NET中的日志记录框架:Serilog与NLog的比较和使用

    Serilog侧重结构化日志与现代可观测性,适合云原生应用;NLog强调配置灵活性与运行时控制,适用于传统或混合环境。两者均支持ASP.NET Core集成、高性能输出及丰富扩展,选择取决于具体需求:Serilog更适合需集中分析的日志流水线,NLog更适配企业级多样化输出场景。 在 .NET 应用…

    2025年12月17日
    000

发表回复

登录后才能评论
关注微信