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

MongoDB从入门到实战之MongoDB简介

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

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