MongoDB常见知识(一)

1、MongoDB基础
(1)MongoDB是什么
MongoDB是一个基于分布式文件存储的开源NoSQL数据库系统,MongoDB提供了面向文档的存储方式。
NoSQL,泛指非关系型的数据库。
(2)MongoDB的存储结构是什么
主要由如下三个单元组成:
文档(Document):MongoDB中最基本的单元,由BSON键值对(key-value)组成,类似于关系型数据库中的行(Row)。
集合(Collection):一个集合可以包含多个文档,类似于关系型数据库中的表(Table)。
数据库(Database):一个数据库中可以包含多个集合,可以在MongoDB中创建多个数据库,类似于关系型数据库中的数据库(Database)。
BSON代表二进制JSON。它是一种二进制文件格式,用于以二进制编码格式存储序列化的JSON文档。
也就是说,MongoDB将数据记录存储为文档(更具体来说是BSON文档),这些文档在集合中聚集在一起,数据库中存储一个或多个文档集合。
(3)MongoDB有什么特点
数据记录被存储为文档:MongoDB中的记录就是一个BSON文档,它是由键值对组成的数据结构,类似于JSON对象,是MongoDB中的基本数据单元。
模式自由:集合的概念类似MySQL里的表,但它不需要定义任何模式,能够用更少的数据对象表现复杂的领域模型对象。
支持多种查询方式:MongoDB查询API支持读写操作(CRUD)以及数据聚合、文本搜索和地理空间查询。
支持ACID事务:NoSQL数据库通常不支持事务,为了可扩展和高性能进行了权衡。不过,也有例外,MongoDB就支持事务。与关系型数据库一样,MongoDB事务同样具有ACID特性。
高效的二进制存储:存储在集合中的文档,是以键值对的形式存在的。键用于唯一标识一个文档,一般是ObjectId类型,值是以BSON形式存在的。
自带数据压缩功能:存储同样的数据所需的资源更少。
支持mapreduce:通过分治的方式完成复杂的聚合任务。不过,从MongoDB5.0开始,map-reduce已经不被官方推荐使用了,替代方案是聚合管道。聚合管道提供比map-reduce更好的性能和可用性。
支持多种类型的索引:MongoDB支持多种类型的索引,包括单字段索引、复合索引、多键索引、哈希索引、文本索引、地理位置索引等,每种类型的索引有不同的使用场合。
支持failover:提供自动故障恢复的功能,主节点发生故障时,自动从从节点中选举出一个新的主节点,确保集群的正常使用,这对于客户端来说是无感知的。
支持分片集群:MongoDB支持集群自动切分数据,让集群存储更多的数据,具备更强的性能。在数据插入和更新时,能够自动路由和存储。
支持存储大文件:MongoDB的单文档存储空间要求不超过16MB。对于超过16MB的大文件,MongoDB提供了GridFS来进行存储,通过GridFS,可以将大型数据进行分块处理,然后将这些切分后的小文档保存在数据库中。
(4)MongoDB适合什么应用场景
MongoDB的优势在于其数据模型和存储引擎的灵活性、架构的可扩展性以及对强大的索引支持。
2、MongoDB存储引擎
与MySQL一样,MongoDB采用的也是插件式的存储引擎架构,支持不同类型的存储引擎,不同的存储引擎解决不同场景的问题。在创建数据库或集合时,可以指定存储引擎。
现在主要有下面这两种存储引擎:
WiredTiger存储引擎:自MongoDB3.2以后,默认的存储引擎为WiredTiger存储引擎。WiredTiger提供文档级并发模型、检查点和数据压缩(后文会介绍到)等功能。WiredTiger使用的是B+树作为其存储结构。
In-Memory存储引擎:In-Memory存储引擎在MongoDBEnterprise中可用。它不是将文档存储在磁盘上,而是将它们保留在内存中以获得更可预测的数据延迟。
3、MongoDB聚合
MongoDB提供了两种执行聚合的方法:
聚合管道(AggregationPipeline):执行聚合操作的首选方法。MongoDB聚合管道由多个阶段组成,每个阶段在文档通过管道时转换文档。每个阶段接收前一个阶段的输出,进一步处理数据,并将其作为输入数据发送到下一个阶段。
单一目的聚合方法(Singlepurposeaggregationmethods):也就是单一作用的聚合函数比如count()、distinct()、estimatedDocumentCount()。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值