大唐起重 發表於 2022-12-18 20:20:00

MongoDB从入门到实战之MongoDB简介

<h2>前言</h2>
<p>相信很多同学对MongoDB这个非关系型数据库都应该挺熟悉的,在一些高性能、动态扩缩容、高可用、海量数据存储、数据价值较低、高扩展的业务场景下MongoDB可能是我们的首选,因为MongoDB通常能让我们以更低的成本解决问题(包括学习、开发、运维等成本)。接下来的一个月博主将会从基础出发,编写一个关于使用MongoDB从入门到实战的相关教程,该项目后端使用的是.NET7、前端页面使用Blazor、使用MongoDB存储数据,更多相关内容大家可以看目录中的MongoDB从入门到实战的相关教程。该系列教程可作为.NET Core入门项目进行学习,感兴趣的小伙伴可以关注博主和我一起学习共同进步。</p>
<h2>MongoDB从入门到实战的相关教程</h2>
<p>MongoDB从入门到实战之MongoDB简介👉</p>
<h2>YyFlight.ToDoList项目源码地址</h2>
<blockquote>
<p>GitHub地址:https://github.com/YSGStudyHards/YyFlight.ToDoList</p>
</blockquote>
<h2 data-tool="mdnice编辑器"><span>MongoDB是什么?</span></h2>
<ul class="list-paddingleft-1">
<li><span>MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。</span></li>
<li><span>MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似Json的Bson格式,因此可以存储比较复杂的数据类型。</span></li>
<li><span>MongoDB 最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。并且MongoDB-4.2版本开始已经支持分布式事务功能。</span></li>
</ul>
<blockquote>
<p><span>简而言之的话就是:MongoDB是一个文档型的NoSQL数据库,用于构建高并发、高可用和高扩展的互联网应用程序。</span></p>
</blockquote>
<h2 data-tool="mdnice编辑器"><span>BSON是什么?</span></h2>
<p data-tool="mdnice编辑器"><span>BSON 是 Binary JSON 的缩写,是一种二进制序列化格式,用于在 MongoDB 中存储文档和进行远程过程调用。</span></p>
<h3 data-tool="mdnice编辑器"><span>BSON的优势</span></h3>
<ul class="list-paddingleft-1">
<li><span>更丰富的数据类型:BSON扩展了JSON的数据类型,支持如日期(Date)、二进制数据(BinData)、对象ID(ObjectId)、正则表达式等,这些类型在JSON中需通过字符串或复杂结构模拟。</span></li>
<li><span>高效的序列化/反序列化:二进制编码允许快速解析,尤其适合大规模数据操作,减少了文本解析的开销。</span></li>
<li><span>可遍历性:BSON文档包含长度前缀等元数据,便于快速跳过无关字段,提升查询效率。</span></li>
</ul>
<h3 data-tool="mdnice编辑器"><span>BSON的局限性</span></h3>
<ul class="list-paddingleft-1">
<li><span>可读性差:二进制格式无法直接阅读,需借助工具转换为JSON进行调试。</span></li>
<li><span>存储空间:由于包含类型和长度信息,BSON可能比等效的JSON稍大,但效率提升通常抵消了空间成本。</span></li>
</ul>
<h3 data-tool="mdnice编辑器"><span>BSON类型</span></h3>
<ul class="list-paddingleft-1">
<li>官方BSON类型详细介绍:<span style="color: rgba(0, 0, 255, 1)"><span style="color: rgba(0, 0, 255, 1)">https://www.mongodb.com/zh-cn/docs/manual/reference/bson-types</span></span></li>
</ul>
<p><img src="https://img2024.cnblogs.com/blog/1336199/202504/1336199-20250418230121326-1514654057.png" alt="" loading="lazy"></p>
<h2 data-tool="mdnice编辑器"><span>MongoDB的优势</span></h2>
<h3 data-tool="mdnice编辑器"><span>高性能</span></h3>
<p data-tool="mdnice编辑器"><span>MongoDB提供高性能的数据持久性。对嵌入式数据模型的支持减少了数据库系统上的IO活动。索引支持更快的查询,并且包含嵌入式文档和数组的键。</span></p>
<ul class="list-paddingleft-1">
<li><span>文本索引解决搜索的需求;</span></li>
<li><span>TTL索引解决历史数据自动过期的需求;</span></li>
<li><span>地理位置索引可用于构建各种 O2O 应用;</span></li>
</ul>
<h3 data-tool="mdnice编辑器"><span>高可用</span></h3>
<p data-tool="mdnice编辑器"><span>MongoDB的高可用性通过副本集(Replica Set)实现,提供自动故障转移(秒级切换主节点)和多节点数据冗余,确保服务持续可用并最大程度减少数据丢失的风险。</span></p>
<h3 data-tool="mdnice编辑器"><span>海量数据存储</span></h3>
<p data-tool="mdnice编辑器"><span>MongoDB内置GridFS,支持海量存储。</span></p>
<h3 data-tool="mdnice编辑器"><span>丰富的查询支持</span></h3>
<p data-tool="mdnice编辑器"><span>MongoDB支持丰富的查询语言,支持读写(CRUD)操作、比如数据聚合、文本搜索、地理空间查询等。</span></p>
<h3 data-tool="mdnice编辑器"><span>支持多种编程语言</span></h3>
<p data-tool="mdnice编辑器"><span>MongoDB支持多种流行编程语言如C,C++,C# / .NET,Erlang,Haskell,Java,PHP,Python,Go等多种语言。</span></p>
<h3 data-tool="mdnice编辑器"><span>其他特点</span></h3>
<p data-tool="mdnice编辑器"><span>如可拓展性强模式自由、动态模式、灵活的文档模型等。</span></p>
<h2 data-tool="mdnice编辑器"><span>MongoDB的劣势</span></h2>
<ul class="list-paddingleft-1">
<li><span>单机可靠性比较差。</span></li>
<li><span>磁盘空间占用比较大。</span></li>
<li><span>在集群分片中的数据分布不均匀。</span></li>
<li><span>大数据量持续插入,写入性能有较大波动。</span></li>
</ul>
<h2 data-tool="mdnice编辑器"><span>MongoDB业务应用场景</span></h2>
<h3 data-tool="mdnice编辑器"><span>四高场景应对</span></h3>
<p data-tool="mdnice编辑器"><span>传统的关系型数据库(如MySQL,MS SQL Server),在数据操作的四高需求以及应对Web2.0的网站需求面前显得力不从心,而MongoDB可更好的应对四高需求:</span></p>
<ul class="list-paddingleft-1">
<li><span>High performance(高性能):对数据库高并发读写的需求。</span></li>
<li><span>Huge Storage(海量存储):对海量数据的高效率存储和访问的需求。</span></li>
<li><span>High Scalability &amp;&amp; High Availability(高可扩展性和高可用性):对数据库的高可扩展性和高可用性的需求。</span></li>
</ul>
<h3 data-tool="mdnice编辑器"><span>具体应用场景</span></h3>
<ul class="list-paddingleft-1">
<li><span>游戏应用:使用MongoDB作为游戏服务器的数据库存储用户信息。用户的游戏装备、积分等直接以内嵌文档的形式存储,方便进行查询与更新。</span></li>
<li><span>物流应用:使用MongoDB存储订单信息,订单状态在运送过程中会不断更新,以MongoDB内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来,方便快捷且一目了然。</span></li>
<li><span>社交应用:使用MongoDB存储用户信息以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能。并且MongoDB非常适合用来存储聊天记录,因为它提供了非常丰富的查询,并在写入和读取方面都相对较快。</span></li>
<li><span>视频直播:使用MongoDB存储用户信息、礼物信息等。</span></li>
<li><span>大数据应用:使用MongoDB作为大数据的云存储系统,随时进行数据提取分析,掌握行业动态。</span></li>
<li><span>等等等...</span></li>
</ul>
<h3 data-tool="mdnice编辑器"><span>这些应用场景中,数据操作方面的共同特点是:</span></h3>
<p data-tool="mdnice编辑器"><span>对于下面的这些数据,我们更适合使用 MongoDB来实现数据的存储:</span></p>
<ul class="list-paddingleft-1">
<li><span>数据量大。</span></li>
<li><span>读写操作频繁。</span></li>
<li><span>价值较低的数据,对事务性要求不高。</span></li>
</ul>
<h2 data-tool="mdnice编辑器"><span>MongoDB语言支持</span></h2>
<p data-tool="mdnice编辑器"><span>MongoDB官方支持的语言驱动:</span></p>
<ul class="list-paddingleft-1">
<li><span>开始使用 MongoDB 进行开发:https://www.mongodb.com/zh-cn/docs/drivers</span></li>
</ul>
<p><img src="https://img2024.cnblogs.com/blog/1336199/202504/1336199-20250418230148741-1754782660.png" alt="" loading="lazy"></p>

</div>
<div id="MySignature" role="contentinfo">
    <blockquote >
<p style='font-family:YouYuan;font-size: 16px;margin: 0 auto 0.01em auto;'><span style='font-size: 17px; '>作者名称:</span>追逐时光者</p>
<p style='font-family:YouYuan;font-size: 16px;margin: 0 auto 0.01em auto;'><span style='font-size: 17px; '>作者简介:</span>一个热爱编程、善于分享、喜欢学习、探索、尝试新事物和新技术的全栈软件工程师。</p>
<p style='font-family:YouYuan;font-size: 16px;margin: 0 auto 0.01em auto;'>
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。如果该篇文章对您有帮助的话,可以点一下右下角的【&hearts;推荐&hearts;】,希望能够持续的为大家带来好的技术文章,文中可能存在描述不正确的地方,欢迎指正或补充,不胜感激。
</p>
</blockquote><br><br>
来源:https://www.cnblogs.com/Can-daydayup/p/16797608.html
頁: [1]
查看完整版本: MongoDB从入门到实战之MongoDB简介