MongoDB4.2总结

什么是MongoDB

MongoDB是一个面向文档的NoSQL数据库,用于大容量数据存储

MongoDB中每个数据库都包含集合,而集合又包含文档,每个文档可以有不同的字段数。每个文档的大小和内容可以彼此不同。不需要预先定义模式。相反,可以动态创建字段。

为什么使用MongoDB

1.面向文档将数据存储在文档中,能够适应实际的业务环境和需求。

2.支持完全索引,包含内部对象

3.支持复制和故障恢复

4.文件存储格式为BSON(一种JSON的扩展)

MongoDB和RDBMS之间的差异

1.在RDBMS中,该表包含用于存储数据的列和行,而在MongoDB中,该结构称为集合。集合包含的文档依次包含字段,而字段又是键值对。

2.RDBMS对数据进行规范化MongoDB不需要首先对数据进行规范化

事务

从版本4.2开始,对于需要原子性来更新多个文档或读取多个文档之间的一致性的情况,MongoDB 为副本集、分片集群提供多文档事务(单机mongodb事务不可用)

索引

索引多采用B-Tree数据结构,不懂BTree的同学先自行去了解下,索引类型如下:

1.单键索引

2.复合索引

3.多键索引

4.哈希索引

5.唯一索引

6.全文索引       !!一个集合中,只能创建一个全文索引!!

存储引擎

MongoDB 4.0开始默认使用WiredTiger存储引擎,不推荐使用MMAPv1存储引擎

WiredTiger最大限度地利用可用内存作为缓存来减少I / O瓶颈。使用了两个缓存:WiredTiger缓存和文件系统缓存。WiredTiger缓存存储未压缩的数据并提供类似内存的性能。操作系统的文件系统缓存存储压缩数据。当在WiredTiger缓存中找不到数据时,WiredTiger将在文件系统缓存中查找数据。支持内存使用容量配置,WiredTiger内部缓存大小计算方法:0.5* (服务器内存 – 1 GB)

WriedTiger特性

     DocumentLevel Concurrency(文档级别的锁):多个写操作可以同时修改同一集合中的不同文档,修改同一文档时必须串行执行。

     Snapshotsand Checkpoints(快照和检查点):mongoDB每60秒或日志文件【jonurnal】达到2G会创建一个检查点(产生一个snapshot[快照]),该Snapshot呈现的是内存中数据的一致性视图,当向Disk写入数据时,WiredTiger将Snapshot中的所有数据以一致性方式写入到数据文件(Disk Files)中

     Journal(日志): 开启 journal 后,每次写入会记录一条操作日志(通过journal可以重新构造出写入的数据),一次写入,会对应数据、索引,oplog的修改,而这3个修改,会对应一条journal操作日志

     Compression(压缩):WiredTiger压缩存储集合(Collection)和索引(Index),压缩减少Disk空间消耗,但是消耗额外的CPU执行数据压缩和解压缩的操作。

 

注意:mongodb单个文档最大限制16M

猜你喜欢

转载自blog.csdn.net/qq_42407917/article/details/111643524
今日推荐