【愚公系列】2022年05月 .NET架构班 056-分布式中间件 .Net Core下Mongodb基本使用

网友投稿 517 2022-05-29

前言

1.什么是MongoDB

MongoDB是文档数据库,专门用来存储类似Json文档的数据库。

2.什么是文档

json,xml ,yaml这些就是文档。mongodb主要是用来存储什么文档呢,主要是存储Bson文档,Bson文档和json是类似的,不同在于Bson文档主要是可以添加数据类型。

一、Mongodb诞生背景

1.单体电商系统

需求:查询订单实现过程,客户端发起查询请求—>电商系统—->电商数据库—>订单表和商品表进行关联。

问题:如果电商系统并发量,业务量,数据量全部上升之后,单体系统查询,添加,修改,删除性能会急剧下降。进一步甚至会导致系统宕机(宕机也就是无法访问),如果系统出现了宕机问题,直接导致客户端无法访问。

解决方案:需要进行业务模块拆分,形成电商微服务系统。

2.电商微服务系统

需求:查询订单实现过程,客户端发起查询请求—>电商网站—->订单微服务—>电商数据库。 电商网站—->商品微服务—>电商数据库。

问题:一次订单查询需要涉及到2个微服务(订单微服务、商品微服务)查询。如果并发量比较大,会导致两个微服务查询性能下降。因为是同步请求,同步请求并发处理有限。如果2个微服务其中一个微服务宕机了,会导致无法进行查询。

【愚公系列】2022年05月 .NET架构班 056-分布式中间件 .Net Core下Mongodb基本使用

解决方案:使用MongoDB

3.电商微服务系统-MongoDB

查询订单实现过程,客户端发起查询请求—>电商网站—->MongoDB。

在MongoDB中可以一次性查询出订单商品数据。而且还可以提升性能。这就是我们在电商系统中使用MongoDB原因

二、Mongodb前提准备

1.MongoDB

MongoDB-:https://fastdl.mongodb.org/windows/mongodb-windows-x86_64-5.0.7-rc1-signed.msi

2.MongoDB Compass

MongoDB Compass-:https://downloads.mongodb.com/compass/mongodb-compass-1.31.1-win32-x64.zip

三、启动Mongodb

1.先进入到MongoDB中

2.然后打开MongoDB.conf配置,在里面添加

# Where and how to store data. storage: dbPath: D:\work\net\mongodb\MongoDB-5.0.6\data journal: enabled: true # engine: # wiredTiger: # where to write logging data. systemLog: destination: file logAppend: true path: D:\work\net\mongodb\MongoDB-5.0.6\log\mongod.log # network interfaces net: port: 27017 bindIp: 127.0.0.1

3.启动MongoDB

mongod.exe –config “D:\work\net\mongodb\MongoDB-5.0.6\bin\mongod.cfg”

四、.Net Core下Mongodb基本使用

1.下载对应的包

MongoDB.Driver

2.封装

创建ProductController类,在ProductController类中添加代码

///

/// 商品服务接口 /// public interface IProductService { void Create(Product Product); public void CreateList(List Products); IEnumerable GetProducts(); Product GetProductById(string id); public IEnumerable GetProductsByPage(int Page, int PageSize); public IEnumerable GetProductsBySort(Product product, int Page, int PageSize); public IEnumerable GetProductsByAggregation(Product product); void Update(string id,Product Product); public void UpdateList(string id, Product Product); // 更新字段 public void UpdateFiled(string id, ProductUpdateFiledDto productUpdateFiledDto); void Delete(Product Product); public void DeleteList(Product Product); bool ProductExists(string id); // 字段修改 public void Replace(string id, Product Product); // 创建索引 public string CreateIndex(); }

///

/// 商品服务实现 /// public class ProductService : IProductService { private readonly IMongoCollection _products; public ProductService() { // 1、建立MongoDB连接 var client = new MongoClient("mongodb://localhost:27017"); // 2、获取商品库(自己创建商品数据) var database = client.GetDatabase("ProductDB"); // 3、获取商品表(自己创建商品数) _products = database.GetCollection("Product"); } public void Create(Product Product) { _products.InsertOne(Product); } }

3.配置

在ConfigureServices中注册

services.AddSingleton();

4.注入到控制器

///

/// 商品服务实现 /// public class ProductService : IProductService { private readonly IMongoCollection _products; public ProductService() { // 1、建立MongoDB连接 var client = new MongoClient("mongodb://localhost:27017"); // 2、获取商品库(自己创建商品数据) var database = client.GetDatabase("ProductDB"); // 3、获取商品表(自己创建商品数) _products = database.GetCollection("Product"); } public void Create(Product Product) { _products.InsertOne(Product); } }

.NET MongoDB 分布式 数据库

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:MongoDB介绍
下一篇:Tello无人机的使用笔记之dji-sdk/Tello-Python
相关文章