MongoDB相关概念

简介: MongoDB适用于高并发、海量数据、高扩展性场景,如社交、游戏、物流、物联网等。适合数据量大、读写频繁、事务要求不高的应用,满足快速迭代与水平扩展需求,是应对“三高”挑战的理想选择。

1.1 业务应用场景

传统的关系型数据库(如MySQL),在数据操作的“三高”需求以及应对Web2.0的网站需求面前,显得力不从心。“三高”需求:

  • High performance - 对数据库高并发读写的需求。
  • Huge Storage - 对海量数据的高效率存储和访问的需求。
  • High Scalability && High Availability- 对数据库的高可扩展性和高可用性的需求。

MongoDB应用场景

  1. 社交场景:使用 MongoDB 存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能。
  2. 游戏场景:使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、高效率存储和访问。
  3. 物流场景:使用 MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以 MongoDB 内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。
  4. 物联网场景:使用 MongoDB 存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析。
  5. 视频直播:使用 MongoDB 存储用户信息、点赞互动信息等。

这些应用场景中,数据操作方面的共同特点是:

1)数据量大

2)写入操作频繁(读写都很频繁)

3)价值较低的数据,对事务性要求不高

对于这样的数据,我们更适合使用MongoDB来实现数据的存储。

MongoDB什么时候用

在架构选型上,除了上述的三个特点外,如果你还犹豫是否要选择它?可以考虑以下的一些问题:

  • 应用不需要事务及复杂 join 支持
  • 新应用,需求会变,数据模型无法确定,想快速迭代开发
  • 应用需要2000-3000以上的读写QPS(更高也可以)
  • 应用需要TB甚至 PB 级别数据存储
  • 应用发展迅速,需要能快速水平扩展
  • 应用要求存储的数据不丢失
  • 应用需要99.999%高可用
  • 应用需要大量的地理位置查询、文本查询

如果上述有1个符合,可以考虑 MongoDB,2个及以上的符合,选择 MongoDB 绝不会后悔。

思考:如果用MySQL呢?

答:相对MySQL,可以以更低的成本解决问题(包括学习、开发、运维等成本)

相关文章
|
存储 缓存 算法
存储管理
一、存储管理 存储管理是操作系统中的一个核心功能,它负责管理计算机系统中的主存储器(内存)和辅助存储器(硬盘、光盘等)等存储设备,为进程提供存储空间和管理存储资源。存储管理的主要任务包括以下几个方面: 1. 内存分配:操作系统需要为进程分配内存空间,以便进程可以存储和执行程序。内存分配可以采用静态分配或动态分配的方式,静态分配是在编译时确定分配的内存空间大小,动态分配是在运行时根据进程的需求动态分配内存空间。 2. 内存保护:操作系统需要保护进程的内存空间,防止进程之间相互干扰或访问非法内存区域。内存保护可以采用硬件保护或软件保护的方式,硬件保护是通过硬件机制实现内存隔离和保护,软件保护是通过
1216 0
|
6月前
|
人工智能 并行计算 机器人
未来人工智能如何重构”时间“?
时间是数学还是幻觉?从熵增到几何,从人类意识到AI智能,本文探讨时间的本质。线性、循环与拓扑模型揭示其多维可能;热力学箭头与认知局限引发哲学思辨;而AI的并行预测与信息压缩,或将重构时间本身。未来智能或不再线性行走,而是编织多维时间之网,重塑我们对存在的理解。(238字)
318 0
|
4月前
|
Java
ArrayList 的扩容机制解析
ArrayList扩容机制解析:添加元素时先检查容量,不足则触发扩容。默认初始容量为10,每次扩容1.5倍,通过数组拷贝实现,耗时O(n)。频繁扩容影响性能,建议预估容量并初始化指定大小,提升效率。
|
4月前
|
运维 监控 安全
为什么禁止使用 Executors 创建线程池?
Java并发中,`Executors`快捷方法易导致OOM或系统雪崩,因隐藏关键配置。阿里手册禁止其在生产使用。应显式创建`ThreadPoolExecutor`,设定核心参数与有界队列,结合Guava命名线程,提升系统稳定性与可维护性。
|
4月前
|
负载均衡 Java 应用服务中间件
Nacos注册中心
本文介绍了Nacos的安装部署、服务注册与发现、分级模型、负载均衡策略、权重控制、环境隔离及临时/持久化实例等核心功能,涵盖从本地启动到生产级配置的完整实践流程。通过实际操作演示了如何整合Spring Cloud Alibaba实现服务治理,并深入解析其架构设计与应用场景。
 Nacos注册中心
|
4月前
|
机器学习/深度学习 传感器 人工智能
对抗样本攻击详解:如何让AI模型产生错误判断
对抗样本是通过微小扰动欺骗机器学习模型的输入,人眼难辨却致模型高置信度误判。其原理源于模型线性特性,如FGSM利用梯度符号生成扰动。此类攻击具迁移性,可跨模型生效,但亦可用于对抗训练,提升模型鲁棒性与泛化能力。
260 0
|
9月前
|
关系型数据库 MySQL 数据库连接
二次元风格导航网站源码——二次元导航站【小Z站长版】
二次元风格导航网站源码——二次元导航站【小Z站长版】
|
人工智能 监控 算法
千星计划如何解决私域裂变难题?
《千星计划:破解私域裂变难题》介绍了通过“零成本裂变引擎”降低参与门槛、构建轻量启动场景,实现低成本高回报的用户增长;借助指数级收益模型激发用户动力,提升裂变效率;清流机制解决流量垄断问题,确保公平分配;视频号变现闭环与自动化运营体系助力降本增效。方案结合实际案例(如众店生活、店商豹等),为高毛利低决策成本品类提供可验证的增长模型,打造私域流量全链路闭环。作者张梅以丰富经验,为企业搭建自驱型增长生态提供参考。
|
测试技术 开发工具 Android开发
探索移动应用开发之旅:从基础到精通
本文旨在为初学者和有经验的开发者提供一份全面的移动应用开发指南。我们将从移动操作系统的概述开始,深入到移动应用开发的各个方面,包括编程语言、工具选择、设计原则以及测试与部署策略。无论你是刚踏入这一领域的新手,还是希望提升技能的资深开发者,这篇文章都将为你指明方向,助你构建出既美观又实用的移动应用。
|
SQL Oracle 关系型数据库
关系型数据库Oracle并行查询
【7月更文挑战第12天】
514 15

热门文章

最新文章