MongoDB从入门到实战之MongoDB简介

mongodb,入门,实战,简介 · 浏览次数 : 1607

小编点评

**MongoDB 从入门到实战** **引言** MongoDB 是一个基于分布式文件存储的非关系型数据库,适用于构建高并发、高可用和高扩展的互联网应用程序。 **安装和配置** 1. 下载并安装 MongoDB 服务器。 2. 安装 MongoDB驱动程序。 3. 配置 MongoDB 服务器,例如设置数据库名称、用户名和密码。 **数据模型** MongoDB 使用文档型数据模型,文档是类似于 JSON 的对象。文档包含一个 key 和一个值。 **查询** MongoDB 支持多种查询语言,例如 CRUD (创建、读取、更新、删除)。 **高性能** MongoDB 提供高性能的数据持久性,通过使用索引和复制集来提高查询速度。 **可扩展性** MongoDB 支持高度可扩展的架构,通过添加新的副本集来扩展数据存储能力。 **海量数据存储** MongoDB 支持海量数据存储,通过使用 GridFS 存储引擎来提供超大数据的存储和访问。 **示例代码** ```csharp // 连接到 MongoDB 服务器 var client = new MongoClient("mongodb://localhost:27017"); // 获取数据库 var database = client.GetDatabase("mydatabase"); // 获取集合 var collection = database.GetCollection("mycollection"); // 插入数据 collection.InsertOne(new { name = "John Doe" }); // 查询数据 var results = collection.Find().ToList(); ``` **应用场景** * 游戏应用 * 物流应用 * 社交应用 * 视频直播 **结论** MongoDB 是一个功能强大的非关系型数据库,可用于构建各种类型应用程序。其高性能、可扩展性和海量数据存储能力使其成为理想的选择。

正文

前言

  相信很多同学对MongoDB这个非关系型数据库都应该挺熟悉的,在一些高性能、动态扩缩容、高可用、海量数据存储、数据价值较低、高扩展的业务场景下MongoDB可能是我们的首选,因为MongoDB通常能让我们以更低的成本解决问题(包括学习、开发、运维等成本)。接下来的一个月博主将会从基础出发,编写一个关于使用MongoDB从入门到实战的相关教程,该项目后端使用的是.NET7、前端页面使用Blazor、使用MongoDB存储数据,更多相关内容大家可以看目录中的MongoDB从入门到实战的相关教程。该系列教程可作为.NET Core入门项目进行学习,感兴趣的小伙伴可以关注博主和我一起学习共同进步。

MongoDB从入门到实战的相关教程

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

YyFlight.ToDoList项目源码地址

GitHub地址:https://github.com/YSGStudyHards/YyFlight.ToDoList

MongoDB是什么?

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似Json的Bson格式,因此可以存储比较复杂的数据类型。
MongoDB 最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。并且MongoDB-4.2版本开始已经支持分布式事务功能。

简而言之的话就是:MongoDB是一个文档型的NoSQL数据库,用于构建高并发、高可用和高扩展的互联网应用程序。

什么是Bson格式?

Bson是一种类Json的一种二进制形式的存储格式,简称Binary Json,它和Json一样,支持内嵌的文档对象和数组对象,但是Bson有Json没有的一些数据类型,如Date和BinData类型。

Bson可以做为网络数据交换的一种存储形式,这个有点类似于Google的Protocol Buffer,但是Bson是一种schema-less的存储形式,它的优点是灵活性高,但它的缺点是空间利用率不是很理想,Bson有三个特点:轻量性、可遍历性、高效性,

{“hello":"world"} 这是一个Bson的例子,其中"hello"是key name,它一般是cstring类型,字节表示是cstring::= (byte*) "/x00" ,其中*表示零个或多个byte字节,/x00表示结束符;后面的"world"是value值,它的类型一般是string,double,array,binarydata等类型。

MongoDB的优势

1.高性能

MongoDB提供高性能的数据持久性。对嵌入式数据模型的支持减少了数据库系统上的IO活动。

索引支持更快的查询,并且包含嵌入式文档和数组的键。

  • 文本索引解决搜索的需求;
  • TTL索引解决历史数据自动过期的需求;
  • 地理位置索引可用于构建各种 O2O 应用;

2.高可用

MongoDB的复制工具称为副本集(reolica set),它包含提供自动故障转移和数据冗余。

3.海量数据存储

内置GridFS,支持海量存储。

4.丰富的查询支持

MongoDB支持丰富的查询语言,支持读写(CRUD)操作、比如数据聚合、文本搜索、地理空间查询等。

5.支持多种编程语言

MongoDB支持多种流行编程语言如C,C++,C# / .NET,Erlang,Haskell,Java,PHP,Python,Go等多种语言。

6、其他特点

如可拓展性强模式自由、动态模式、灵活的文档模型等。

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发展史

  • MongoDB 最初由一个名为 10gen 的组织在 2007 年开发的,并在 2009 年 2 月发布了 MongoDB 1.0 版本,其中提供了大部分基本的查询功能。
  • 2009 年 12 月发布了 MongoDB 1.2 版本,其中引入了 map-reduce(一种编程模型,用于大规模数据集(大于 1TB)的并行运算),让 MongoDB 拥有了支持大规模数据处理的能力。
  • 2010 年 3 月发布了 MongoDB 1.4 版本,该版本中引入了创建后台索引的功能。
  • 2010 年 8 月发布了 MongoDB 1.6 版本,该版本种引入了一些主要特性,比如用于水平伸缩的分片、具备自动故障转移能力的副本集以及对 IPv6 的支持。
  • 2012 年 8 月发布了 MongoDB 2.2 版本,该版本引入了聚合管道功能,可以将多个数据处理步骤组合成一个操作链。
  • 2013 年 3 月发布了 MongoDB 2.4 版本,并在 Mongo Shell(一个与 MongoDB 交互的组件)中引入了文本搜索和谷歌的 V8 JS 引擎等增强功能。另外,还发布了 MongoDB 的企业版,企业版中另外提供了监控和安全集成等附加功能。
  • 2015 年 3 月发布了 MongoDB 3.0 版本,该版本中引入了新的 WiredTiger 存储引擎、可插拔存储引擎 API 并增加了 50 个副本集限制和安全改进。同年晚些时候又发布了 MongoDB 3.2 版本,该版本增加了文档验证、部分索引的功能。
  • 2017 年 11 月发布了 MongoDB 3.6 版本,该版本为多集合连接查询、变更流和使用 JSON 模式进行文档验证提供了更好的支持。MongoDB 3.6 是微软 Azure CosmosDB(截止到 2020 年 8 月)能够支持的最新版本。
  • 2018 年 6 月发布了 MongoDB 4.0 版本,该版本提供了跨文档处理事务的能力。
  • 2019 年 8 月发布了 MongoDB 4.2 版本,该版本中引入分布式事务处理的能力。

参考文章

https://www.mongodb.com/docs/drivers/

 

与MongoDB从入门到实战之MongoDB简介相似的内容:

MongoDB从入门到实战之MongoDB简介

前言 相信很多同学对MongoDB这个非关系型数据库都应该挺熟悉的,在一些高性能、动态扩缩容、高可用、海量数据存储、数据价值较低、高扩展的业务场景下MongoDB可能是我们的首选,因为MongoDB通常能让我们以更低的成本解决问题(包括学习、开发、运维等成本)。接下来的一个月博主将会从基础出发,编写

MongoDB从入门到实战之MongoDB快速入门

前言 上一章节主要概述了MongoDB的优劣势、应用场景和发展史。这一章节将快速的概述一下MongoDB的基本概念,带领大家快速入门MongoDB这个文档型的NoSQL数据库。 MongoDB从入门到实战的相关教程 MongoDB从入门到实战之MongoDB简介👉 MongoDB从入门到实战之Mo

MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(1)-后端项目框架搭建

前言: 前面的四个章节我们主要讲解了MongoDB的相关基础知识,接下来我们就开始进入使用.NET7操作MongoDB开发一个ToDoList系统实战教程。本章节主要介绍的是如何快熟搭建一个简单明了的后端项目框架。 MongoDB从入门到实战的相关教程 MongoDB从入门到实战之MongoDB简介

MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(3)-系统数据集合设计

前言 前几章教程我们把ToDoList系统的基本框架搭建好了,现在我们需要根据我们的需求把ToDoList系统所需要的系统集合(相当于关系型数据库中的数据库表)。接下来我们先简单概述一下这个系统主要需要实现的功能以及实现这些功能我们需要设计那些数据库集合。 MongoDB从入门到实战的相关教程 Mo

全面的ASP.NET Core Blazor简介和快速入门

前言 因为咱们的MongoDB入门到实战教程Web端准备使用Blazor来作为前端展示UI,本篇文章主要是介绍Blazor是一个怎样的Web UI框架,其优势和特点在哪?并带你快速入门上手ASP.NET Core Blazor(当然这个前提是你要有一定的C#编程基础的情况,假如你完全没有接触过C#的

MongoDB从入门到实战之MongoDB工作常用操作命令

前言: 上一章节我们快速的在Docker容器中安装了MongoDB,并且通过Navicat MongoDB可视化管理工具快速的连接、创建数据库、集合以及添加了文档数据源。这一章节我们主要是了解一下在日常工作中MongoDB一些常用的操作命令。 MongoDB从入门到实战的相关教程 MongoDB从入

MongoDB从入门到实战之Docker快速安装MongoDB

前言 在上一篇文章中带领带同学们快速入门MongoDB这个文档型的NoSQL数据库,让大家快速的了解了MongoDB的基本概念。这一章开始我们就开始实战篇教程,为了快速把MongoDB使用起来我将会把MongoDB在Docker容器中安装起来作为开发环境使用。然后我这边MongoDB的可视化工具用的

MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(2)-Swagger框架集成

Swagger是什么? Swagger是一个规范且完整API文档管理框架,可以用于生成、描述和调用可视化的RESTful风格的 Web 服务。Swagger 的目标是对 REST API 定义一个标准且和语言无关的接口,可以让人和计算机拥有无须访问源码、文档或网络流量监测就可以发现和理解服务的能力。

MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(8)-Ant Design Blazor前端框架搭建

前言 前面的章节我们介绍了一些值得推荐的Blazor UI组件库,通过该篇文章的组件库介绍最终我选用Ant Design Blazor这个UI框架作为ToDoList系统的前端框架。因为在之前的工作中有使用过Ant Design Vue、Ant Design Angular习惯并且喜欢Ant Des

.NET Core MongoDB数据仓储和工作单元模式实操

前言 上一章节我们主要讲解了MongoDB数据仓储和工作单元模式的封装,这一章节主要讲的是MongoDB用户管理相关操作实操。如:获取所有用户信息、获取用户分页数据、通过用户ID获取对应用户信息、添加用户信息、事务添加用户信息、用户信息修改、用户信息删除等实战教程。 MongoDB从入门到实战的相关