码农庄园

MongoDB入门理解精华笔记

2020-08-18  本文已影响0人  小马过河R

参考文献原文地址:MongoDB菜鸟教程

一、什么是MongoDB ?

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。(redis是存在内存)

在高负载的情况下,添加更多的节点,可以保证服务器性能

MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB 将数据存储为一个文档数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组

但其具备各种关系型数据库的查询操作方法,如增删改查,原子性,索引,排序等等。

二、MongoDB 关系

MongoDB 的关系表示多个文档之间在逻辑上的相互联系

文档间可以通过嵌入和引用来建立联系。

MongoDB 中的关系可以是:

1:1 (1对1)

1: N (1对多)

N: 1 (多对1)

N: N (多对多)

三、MongoDB ObjectId

小马认为这也是分布式ID的一种参考方案。

ObjectId 是一个12字节 BSON 类型数据,有以下格式:

前4个字节表示时间戳

接下来的3个字节是机器标识码

紧接的两个字节由进程id组成(PID)

最后三个字节是随机数。

MongoDB中存储的文档必须有一个"_id"键。这个键的值可以是任何类型的,默认是个ObjectId对象

在一个集合里面,每个文档都有唯一的"_id"值,来确保集合里面每个文档都能被唯一标识

MongoDB采用ObjectId,而不是其他比较常规的做法(比如自动增加的主键)的主要原因,因为在多个 服务器上同步自动增加主键值既费力还费时。涉及分布式ID解决方案的问题。

四、MongoDB 自动增长

MongoDB 没有像 SQL 一样有自动增长的功能, MongoDB 的 _id 是系统自动生成的12字节唯一标识。

但在某些情况下,我们可能需要实现 ObjectId 自动增长功能。

由于 MongoDB 没有实现这个功能,我们可以通过编程的方式来实现,以下我们将在 counters 集合中实现_id字段自动增长。通过脚本的方式生成自增ID并嵌入进去来实现自增。

五、MongoDB 索引

索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对网站的性能是非常致命的。索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构

六、适用场景

适合代替传统关系型数据库,提升海量数据的访问性能。

适合存储文档化格式的数据。

与MySQL的区别:

Redis主要把数据存储在内存中,其“缓存”的性质远大于其“数据存储“的性质,其中数据的增删改查也只是像变量操作一样简单;

MongoDB却是一个“存储数据”的系统,增删改查可以添加很多条件,就像SQL数据库一样灵活。MongoDB适合提升海量数据的访问性能。与传统MySQL功能同级,但其分布式文件存储比关系型DB查询机制,极大提升了性能。

上一篇下一篇

猜你喜欢

热点阅读