返回介绍

实践篇

发布于 2024-10-02 23:28:20 字数 1203 浏览 0 评论 0 收藏 0

适用场景

  • 网站数据、缓存等大尺寸、低价值的数据
  • 在高伸缩性的场景,用于对象及 JSON 数据的存储。

以下具备一条以上,就可以考虑选用 MongoDB

  • 我的数据量是有亿万级或者需要不断扩容
  • 需要 2000-3000 以上的读写每秒
  • 新应用,需求会变,数据模型无法确定
  • 我需要整合多个外部数据源
  • 我的系统需要 99.999%高可用
  • 我的系统需要大量的地理位置查询
  • 我的系统需要提供最小的 latency
  • 我要管理的主要数据对象<10
慎用场景原因
PB 数据持久存储大数据分析数据湖Hadoop、Spark 提供更多分析运算功能和工具,并行计算能力更强 MongoDB + Hadoop/Spark
搜索场景:文档有几十个字段,需要按照任意字段搜索并排序限制等不建索引查询太慢,索引太多影响写入及更新操作
ERP、CRM 或者类似复杂应用,几十上百个对象互相关联关联支持较弱,事务较弱
需要参与远程事务,或者需要跨表,跨文档原子性更新的MongoDB 事务支持仅限于本机的单文档事务
100% 写可用:任何时间写入不能停MongoDB 换主节点时候会有短暂的不可写设计所限

MongoDB 查询技巧

  1. 限定返回结果条数和字段:可以减少开销。
  2. 避免合用 skip 跳过大量结果。可以内置查询条件(需要用到带索引的排序字段),用上一次结果来计算下一次查询。
  3. 避免使用 $where 。这个操作符不能用索引,需要先将 BSON 对象转化成 JSON 对象,才可以用 $where 表达式。通常它比常规查询慢得多。
  4. MapReduce 不能作实时查询。MapReduce 有很好的聚合功能,用于统计,但执行时涉及远程交互,会比较慢。它适合处理大数据量的离线统计分析。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文