MongoDB从入门到实战之MongoDB简介

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官方支持的语言驱动:

相关推荐
唐叔在学习10 分钟前
就算没有服务器,我照样能够同步数据
后端·python·程序员
用户68545375977691 小时前
同步成本换并行度:多线程、协程、分片、MapReduce 怎么选才不踩坑
后端
javaTodo1 小时前
Claude Code 记忆机制详解:从 CLAUDE.md 到 Auto Memory,六层体系全拆解
后端
LSTM971 小时前
使用 C# 和 Spire.PDF 从 HTML 模板生成 PDF 的实用指南
后端
JaguarJack2 小时前
为什么 PHP 闭包要加 static?
后端·php·服务端
BingoGo2 小时前
为什么 PHP 闭包要加 static?
后端
是糖糖啊2 小时前
OpenClaw 从零到一实战指南(飞书接入)
前端·人工智能·后端
百度Geek说2 小时前
基于Spark的配置化离线反作弊系统
后端
Java编程爱好者3 小时前
虚拟线程深度解析:轻量并发编程的未来趋势
后端