发布:2023/7/20 16:36:59作者:管理员 来源:本站 浏览次数:505
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
关系型数据库(RDBMS)遵循ACID规则(事务)
A(Atomicity)原子性C(Consistency)一致性I(Isolation)独立性D(Durability)持久性
分布式计算系统-CAP定理
在计算机科学中, CAP定理(CAP theorem), 指出对于一个分布式计算系统来说,不可能同时满足以下三点:
一致性(Consistency) (所有节点在同一时间具有相同的数据)可用性(Availability) (保证每个请求不管成功或者失败都有响应)分区容错性(Partition tolerance) (系统中任意信息的丢失或失败不会影响系统的继续运作)
CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。
因此,根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三大类:
CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。CP - 满足一致性,分区容忍性的系统,通常性能不是特别高。AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。
Docker安装MongoDB
# Run MongoDB镜像
docker run -itd --name mongo -p 27017:27017 mongo --auth
# 设置密码
$ docker exec -it mongo mongo admin
# 创建一个名为 admin,密码为 123456 的用户。
> db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
# 尝试使用上面创建的用户信息进行连接。
> db.auth('admin', '123456')
C# 操作MongoDB
# 安装依赖
dotnet add package MongoDB.Driver --version 2.19.0
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using MongoDB.Bson;
using MongoDB.Driver;
namespace MongoDBDemo
{
class Program
{
static void Main(string[] args)
{
string connectionString = "mongodb://127.0.0.1:27017";
MongoClient mongoClient = new MongoClient(connectionString);
MongoCredential credential;
credential = MongoCredential.CreateCredential("sampleUser", "myDb", "password");
Console.WriteLine("Connected to the database successfully!");
IMongoDatabase database = mongoClient.GetDatabase("myDB");
const string collectionName = "tutorial3";
var collection = database.GetCollection<BsonDocument>(collectionName);
Console.WriteLine("Select collection successfully!");
BsonDocument document1 = new BsonDocument("title", "MongoDB")
.Add("description", "database")
.Add("likes", 100)
.Add("url", "www.Test.net")
.Add("by", "Test");
BsonDocument document2 = new BsonDocument("title", "html")
.Add("description", "database")
.Add("likes", 200)
.Add("url", "www.Test.net/html")
.Add("by", "Test");
List<BsonDocument> list = new List<BsonDocument>();
list.Add(document1);
list.Add(document2);
collection.InsertMany(list);
var filter = new BsonDocument();
var list2 = Task.Run(async () => await collection.Find(filter).ToListAsync()).Result;
list2.ForEach(p =>
{
Console.WriteLine(p);
});
Console.ReadKey();
}
}
}
另外,一般情况下,会在对MongoDB的基础操作上,进行二次封装为MongodbHelper,以供业务逻辑的调用。
参考
MongoDB 教程Docker 安装 MongoDBC#操作MongoDBMongodbHelper
© Copyright 2014 - 2024 柏港建站平台 ejk5.com. 渝ICP备16000791号-4