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

相关推荐
倒流时光三十年12 分钟前
第六阶段 57 · ES|QL 与 SQL API(用 SQL 查 ES)
数据库·sql·elasticsearch
努力进修1 小时前
“数据心脏” 驱动能源自主:国产数据库支撑 Cemsol 实现固井全流程数字化闭环
数据库·人工智能·能源
vHelios1 小时前
SQL不会写?不会找关联表?复杂SQL语句编写逻辑实现思路请查收✉
数据库·sql
DB哥讲数据库1 小时前
【ClickHouse安装教程】从零开始部署高性能列式数据库(附ClickHouse安装包)
数据库·clickhouse
TDengine (老段)2 小时前
TDengine 第三方工具 — Telegraf、Kafka Connect、Flink、Spark
大数据·数据库·物联网·flink·kafka·时序数据库·tdengine
小白勇闯网安圈11 小时前
Django 响应对象、文件上传与类视图
数据库·django·sqlite
努力的小雨11 小时前
同一份 SQL 跑多套环境:Ksql 变量怎么用才安全
数据库
科技绘图12 小时前
快鲸GEO vs 传统AI搜索优化:全链路自动化与高效内容生产在转化闭环上的对比
数据库·人工智能·自动化
ltl12 小时前
数据库作为 LLM 记忆体:语义缓存、RAG 与一致性
数据库
ltl12 小时前
WAL 与崩溃恢复:ARIES 协议怎么跑通
数据库