MongoDB从入门到实战之MongoDB简介
前言
相信很多同学对MongoDB这个非关系型数据库都应该挺熟悉的,在一些高性能、动态扩缩容、高可用、海量数据存储、数据价值较低、高扩展的业务场景下MongoDB可能是我们的首选,因为MongoDB通常能让我们以更低的成本解决问题(包括学习、开发、运维等成本)。接下来的一个月博主将会从基础出发,编写一个关于使用MongoDB从入门到实战的相关教程,该项目后端使用的是.NET7、前端页面使用Blazor、使用MongoDB存储数据,更多相关内容大家可以看目录中的MongoDB从入门到实战的相关教程。该系列教程可作为.NET Core入门项目进行学习,感兴趣的小伙伴可以关注博主和我一起学习共同进步。
MongoDB从入门到实战的相关教程
YyFlight.ToDoList项目源码地址
MongoDB是什么?
- MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
- MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似Json的Bson格式,因此可以存储比较复杂的数据类型。
- MongoDB 最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。并且MongoDB-4.2版本开始已经支持分布式事务功能。
简而言之的话就是:MongoDB是一个文档型的NoSQL数据库,用于构建高并发、高可用和高扩展的互联网应用程序。
BSON是什么?
BSON 是 Binary JSON 的缩写,是一种二进制序列化格式,用于在 MongoDB 中存储文档和进行远程过程调用。
BSON的优势
- 更丰富的数据类型:BSON扩展了JSON的数据类型,支持如日期(Date)、二进制数据(BinData)、对象ID(ObjectId)、正则表达式等,这些类型在JSON中需通过字符串或复杂结构模拟。
- 高效的序列化/反序列化:二进制编码允许快速解析,尤其适合大规模数据操作,减少了文本解析的开销。
- 可遍历性:BSON文档包含长度前缀等元数据,便于快速跳过无关字段,提升查询效率。
BSON的局限性
- 可读性差:二进制格式无法直接阅读,需借助工具转换为JSON进行调试。
- 存储空间:由于包含类型和长度信息,BSON可能比等效的JSON稍大,但效率提升通常抵消了空间成本。
BSON类型
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
作者名称:追逐时光者
作者简介:一个热爱编程、善于分享、喜欢学习、探索、尝试新事物和新技术的全栈软件工程师。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。如果该篇文章对您有帮助的话,可以点一下右下角的【♥推荐♥】,希望能够持续的为大家带来好的技术文章,文中可能存在描述不正确的地方,欢迎指正或补充,不胜感激。