【愚公系列】2022年05月 .NET架构班 056-分布式中间件 .Net Core下Mongodb基本使用
前言
1.什么是MongoDB
MongoDB是文档数据库,专门用来存储类似Json文档的数据库。
2.什么是文档
json,xml ,yaml这些就是文档。mongodb主要是用来存储什么文档呢,主要是存储Bson文档,Bson文档和json是类似的,不同在于Bson文档主要是可以添加数据类型。
一、Mongodb诞生背景
1.单体电商系统
需求:查询订单实现过程,客户端发起查询请求—>电商系统—->电商数据库—>订单表和商品表进行关联。
问题:如果电商系统并发量,业务量,数据量全部上升之后,单体系统查询,添加,修改,删除性能会急剧下降。进一步甚至会导致系统宕机(宕机也就是无法访问),如果系统出现了宕机问题,直接导致客户端无法访问。
解决方案:需要进行业务模块拆分,形成电商微服务系统。
2.电商微服务系统
需求:查询订单实现过程,客户端发起查询请求—>电商网站—->订单微服务—>电商数据库。 电商网站—->商品微服务—>电商数据库。
问题:一次订单查询需要涉及到2个微服务(订单微服务、商品微服务)查询。如果并发量比较大,会导致两个微服务查询性能下降。因为是同步请求,同步请求并发处理有限。如果2个微服务其中一个微服务宕机了,会导致无法进行查询。
解决方案:使用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类中添加代码
/// <summary>
/// 商品服务接口
/// </summary>
public interface IProductService
{
void Create(Product Product);
public void CreateList(List<Product> Products);
IEnumerable<Product> GetProducts();
Product GetProductById(string id);
public IEnumerable<Product> GetProductsByPage(int Page, int PageSize);
public IEnumerable<Product> GetProductsBySort(Product product, int Page, int PageSize);
public IEnumerable<int> 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();
}
/// <summary>
/// 商品服务实现
/// </summary>
public class ProductService : IProductService
{
private readonly IMongoCollection<Product> _products;
public ProductService()
{
// 1、建立MongoDB连接
var client = new MongoClient("mongodb://localhost:27017");
// 2、获取商品库(自己创建商品数据)
var database = client.GetDatabase("ProductDB");
// 3、获取商品表(自己创建商品数)
_products = database.GetCollection<Product>("Product");
}
public void Create(Product Product)
{
_products.InsertOne(Product);
}
}
3.配置
在ConfigureServices中注册
services.AddSingleton<IProductService,ProductService>();
4.注入到控制器
/// <summary>
/// 商品服务实现
/// </summary>
public class ProductService : IProductService
{
private readonly IMongoCollection<Product> _products;
public ProductService()
{
// 1、建立MongoDB连接
var client = new MongoClient("mongodb://localhost:27017");
// 2、获取商品库(自己创建商品数据)
var database = client.GetDatabase("ProductDB");
// 3、获取商品表(自己创建商品数)
_products = database.GetCollection<Product>("Product");
}
public void Create(Product Product)
{
_products.InsertOne(Product);
}
}
- 点赞
- 收藏
- 关注作者
评论(0)