• MongoDB从入门到实战之MongoDB简介

MongoDB从入门到实战之MongoDB简介

2025-04-27 10:40:11 栏目:宝塔面板 98 阅读

MongoDB是什么?

  • MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
  • MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似Json的Bson格式,因此可以存储比较复杂的数据类型。
  • MongoDB 最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。并且MongoDB-4.2版本开始已经支持分布式事务功能。


简而言之的话就是:MongoDB是一个文档型的NoSQL数据库,用于构建高并发、高可用和高扩展的互联网应用程序。

BSON是什么?

BSON 是 Binary JSON 的缩写,是一种二进制序列化格式,用于在 MongoDB 中存储文档和进行远程过程调用。它和Json一样,支持内嵌的文档对象和数组对象,但是 Bson 有 Json 没有的一些数据类型,如 Date 和 BinData 类型。

MongoDB的优势

高性能

MongoDB提供高性能的数据持久性。对嵌入式数据模型的支持减少了数据库系统上的IO活动。索引支持更快的查询,并且包含嵌入式文档和数组的键。

  • 文本索引解决搜索的需求;
  • TTL索引解决历史数据自动过期的需求;
  • 地理位置索引可用于构建各种 O2O 应用;

高可用

MongoDB的高可用性通过副本集(Replica Set)实现,提供自动故障转移(秒级切换主节点)和多节点数据冗余,确保服务持续可用并最大程度减少数据丢失的风险。

海量数据存储

MongoDB内置GridFS,支持海量存储。

丰富的查询支持

MongoDB支持丰富的查询语言,支持读写(CRUD)操作、比如数据聚合、文本搜索、地理空间查询等。

支持多种编程语言

MongoDB支持多种流行编程语言如C,C++,C# / .NET,Erlang,Haskell,Java,PHP,Python,Go等多种语言。

其他特点

如可拓展性强模式自由、动态模式、灵活的文档模型等。

MongoDB的劣势

  • 单机可靠性比较差。
  • 磁盘空间占用比较大。
  • 在集群分片中的数据分布不均匀。
  • 大数据量持续插入,写入性能有较大波动。

MongoDB业务应用场景

四高场景应对

传统的关系型数据库(如MySQL,MS SQL Server),在数据操作的四高需求以及应对Web2.0的网站需求面前显得力不从心,而MongoDB可更好的应对四高需求:

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

具体应用场景

  • 游戏应用:使用MongoDB作为游戏服务器的数据库存储用户信息。用户的游戏装备、积分等直接以内嵌文档的形式存储,方便进行查询与更新。
  • 物流应用:使用MongoDB存储订单信息,订单状态在运送过程中会不断更新,以MongoDB内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来,方便快捷且一目了然。
  • 社交应用:使用MongoDB存储用户信息以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能。并且MongoDB非常适合用来存储聊天记录,因为它提供了非常丰富的查询,并在写入和读取方面都相对较快。
  • 视频直播:使用MongoDB存储用户信息、礼物信息等。
  • 大数据应用:使用MongoDB作为大数据的云存储系统,随时进行数据提取分析,掌握行业动态。
  • 等等等...

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

对于下面的这些数据,我们更适合使用 MongoDB来实现数据的存储:

  • 数据量大。
  • 读写操作频繁。
  • 价值较低的数据,对事务性要求不高。

MongoDB语言支持

MongoDB官方支持的语言驱动:

  • 开始使用 MongoDB 进行开发:https://www.mongodb.com/zh-cn/docs/drivers

图片

本文地址:https://www.yitenyun.com/135.html

搜索文章

Tags

数据库 API FastAPI Calcite 电商系统 MySQL Web 应用 异步数据库 数据同步 ACK 双主架构 循环复制 JumpServer SSL 堡垒机 跳板机 HTTPS TIME_WAIT 运维 负载均衡 HexHub Docker JumpServer安装 堡垒机安装 Linux安装JumpServer Deepseek 宝塔面板 Linux宝塔 生命周期 服务器 管理口 esxi esxi6 root密码不对 无法登录 web无法登录 序列 核心机制 服务器性能 Windows Windows server net3.5 .NET 安装出错 HTTPS加密 查看硬件 Linux查看硬件 Linux查看CPU Linux查看内存 宝塔面板打不开 宝塔面板无法访问 开源 PostgreSQL 存储引擎 Windows宝塔 Mysql重置密码 Oracle 处理机制 无法访问宝塔面板 监控 InnoDB 数据库锁 连接控制 机制 Spring Redis 异步化 Serverless 无服务器 语言 Undo Log SQL 查询 ES 协同 优化 万能公式 技术 group by 索引 分页查询 高可用 缓存方案 缓存架构 缓存穿透 动态查询 机器学习 scp Linux的scp怎么用 scp上传 scp下载 scp命令 GreatSQL 连接数 响应模型 锁机制 工具 数据 主库 R edis 线程 日志文件 MIXED 3 加密 场景 SVM Embedding openHalo Linux 安全 Postgres OTel Iceberg Netstat Linux 服务器 端口 R2DBC SQLite-Web SQLite 数据库管理工具 行业 趋势 RocketMQ 长轮询 配置 Recursive 云原生 存储 自定义序列化 AI 助手 启动故障 ​Redis 推荐模型 共享锁 SQLark Hash 字段 PG DBA OB 单机版 国产数据库 向量数据库 大模型 防火墙 黑客 电商 系统 Ftp 架构 向量库 Milvus 业务 Rsync MySQL 9.3 Python mini-redis INCR指令 修改DNS Centos7如何修改DNS 数据分类 不宕机 流量 sftp 服务器 参数 • 索引 • 数据库 线上 库存 预扣 redo log 重做日志 分库 分表 信息化 智能运维 Doris SeaTunnel 人工智能 推荐系统 磁盘架构 MVCC 同城 双活 聚簇 非聚簇 高效统计 今天这篇文章就跟大家 Canal Redisson 锁芯 PostGIS 虚拟服务器 虚拟机 内存 传统数据库 向量化 INSERT COMPACT IT运维 语句 数据备份 缓存 filelock 事务 Java 开发 网络架构 网络配置 prometheus Alert 失效 窗口 函数 ZODB 引擎 性能 Web 核心架构 订阅机制 数据脱敏 加密算法 发件箱模式 速度 服务器中毒 MongoDB 容器 频繁 Codis RDB AOF 数据结构 读写 聚簇索引 非聚簇索引 Redis 8.0 工具链 Go 数据库迁移 自动重启 数据类型 分布式 集中式 崖山 新版本 容器化 B+Tree ID 字段 模型 MCP 开放协议 OAuth2 Token 网络故障 分布式架构 分布式锁​ QPS 高并发 JOIN SSH 池化技术 连接池 微软 SQL Server AI功能 Redka Web 接口 DBMS 管理系统 部署 SpringAI StarRocks 数据仓库 Caffeine CP 播客 原子性 Entity 数据页 数据集成工具 Pottery 分页方案 排版 排行榜 排序 Testcloud 云端自动化 主从复制 代理 事务隔离 大表 业务场景 网络 sqlmock 悲观锁 乐观锁 dbt 数据转换工具 LRU EasyExcel MySQL8 1 优化器 分页 意向锁 记录锁 AIOPS 单点故障 日志 Order 事务同步 数据字典 兼容性 UUIDv7 主键 仪表盘 InfluxDB 对象 千万级 Ansible ReadView Pump RAG HelixDB Crash 代码 订单 单线程 IT UUID ID 字典 双引擎 MGR 分布式集群 LLM Weaviate 分布式锁 Zookeeper 产业链 编程 线程安全 Valkey Valkey8.0 恢复数据 List 类型 拦截器 动态代理 Next-Key 关系数据库 表空间 解锁 调优 慢SQL优化 快照读 当前读 视图 矢量存储 数据库类型 AI代理 国产 用户 RR 互联网 算法 GitHub Git 神经系统 count(*) count(主键) 行数 查询规划 技巧 并发控制 恢复机制 CAS 多线程 闪回