恕我直言,牛逼哄哄的MongoDB你可能只会30%

  • 日期:03-11
  • 点击:(769)


MongoDB是一个基于分布式文件存储的数据库。用c语言写的。目的是为网络应用提供可扩展的高性能数据存储解决方案。

MongoDB是关系数据库和非关系数据库之间的产品。在非关系数据库中,它具有最丰富的功能,与关系数据库最相似。

MongoDB的特点是没有模式限制和高灵活性。数据格式是BSON,它是一种类似于JSON的二进制存储格式。简单地称为二进制JSON,像JSON一样,它支持嵌入的文档对象和数组对象。

与关系数据库的表概念相比,MysqlMongoDBDatabase以BSON格式将数据存储为文档。它由键和值组成。

Usage Scenarios

大数据存储Scenarios

MongoDB带有自己的副本集和碎片,这自然适用于大量场景,并且非常方便,不需要开发人员通过中间件来划分库和表。

Crawler数据存储

大多数情况下,我们需要存储一些操作日志,例如,可能只需要存储最近一个月的操作日志。通常的做法是定期清洗。蒙古数据库中有一个固定集的概念。当我们创建一个集合时,我们可以指定大小。当数据量超过大小时,旧数据将被自动删除。

Crawler数据存储

爬网数据包括网页和Json格式的数据,这些数据通常按照表格格式存储。如果我们使用MongoDB,我们可以直接将捕获的Json数据存储到集合中,而没有格式限制。

Social Data Store

MongoDB用于存储社交场景中的用户地址和位置信息,以及附近的人、地方等。是通过地理位置索引实现的。

电子商务商品商店

不同的商品有不同的属性。常见的方法是提取一个公共属性表,并将其与SPU相关联。如果使用MongoDB,属性可以直接嵌入到SPU中。

自恋

MongoDB有许多功能点,但是我们在大多数场景中只使用最简单的CRUD操作。下面是对MongoDB功能点的一个重要介绍。就像你去相亲一样,如果你不能很好地介绍你自己的优势,你怎么能让相反的蘑菇变酷呢?

db . collection . InsertMulti()

CRUD也是添加、删除、修改和查询,这是数据库最基本的功能。该查询还支持全文检索、地理位置查询等。

db . collection . InsertMulti()

将单个文档插入集合

db . collection . InsertMulti()

将多个文档插入集合

db . collection . find()

将单个或多个文件插入集合

db . collection . find()

query data

db . inventory . UpdateOne()

update single

db . inventory . UpdateMulti()

update multiple

db . inventory . DeleteOne()

删除单个文档

db . inventory . DeleteMulti()

删除多个文档

聚合有两种方法可以满足我们对数据进行统计的需要,一种是聚合,另一种是MapReduce。

Aggregation用于数据统计。例如,Mysql将具有计数、求和、分组等功能。蒙古数据库中相应的聚合操作。

聚合有两种方法可以满足我们对数据进行统计的需要,一种是聚合,另一种是MapReduce。

下图显示了聚合的执行原理:

聚合执行原理

聚合有许多内置函数。有了这些函数,我们可以计算我们想要的数据。

$project:修改输入文档的结构。它可用于重命名、添加或删除字段,以及创建计算和嵌套文档。

:用于过滤数据并仅输出符合条件的文档。匹配使用MongoDB的标准查询操作。

$limit:用于限制MongoDB聚合管道返回的文档数量。

$skip:跳过聚合管道中指定数量的文档,并返回剩余的文档。

$group:将集合中的文档分组,可用于统计结果。

$sort:对输入文档进行排序并输出。

$geoNear:输出靠近地理位置的有序文档。

$展开:将文档中的数组类型字段拆分成多个部分,每个部分包含数组中的一个值。

下图显示了MapReduce的执行原理:

共4条数据。查询指定查询条件,并且只处理状态=A的数据

映射阶段将数据聚合成组,即形成第三部分的效果,并根据cust_id执行重复数据消除统计。

reduce中的键是cust_id,值是集合的总量。然后进行求和运算,最终结果输出到一组输出端。

Transactions

MongoDB最初不支持事务。在MongoDB中,对单个文档的操作是原子操作。因此,嵌入式文档和数组可以用来描述重新设计过程中数据之间的关系,因此不需要跨多个文档和集合执行操作,并且通过单个文档原子性消除了许多实际用例中对多个文档事务的需求。

一切都是有限的,有些场景仍然不能完全通过嵌入来描述数据的关系,否则会有多个集合。对于使用MongoDB的用户来说,支持事务非常方便。

不出所料,MongoDB版为我们带来了本机事务操作。

Indexes

index不用我多说,大家都知道效果。单一索引、组合索引、全文索引、哈希索引等。

创建索引时,应特别注意将背景设置为真。其他数据库操作将在索引过程中被阻止。后台可以指定以后创建索引的方式,默认值为false。这是血的教训,记得要记住。需要注意

Security

MongoDB中的安全性。目前,对启动没有强制性限制。在以前的启动中,没有指定身份验证方法,也就是说,不需要密码来访问它。然后,许多人直接使用的默认端口被暴露在公共网络上,给了罪犯一个利用它的机会。在许多情况下,数据被删除,需要比特币来检索数据。

还需要打开安全认证,内置许多角色,不同的角色可以操作不同的内容,控制相对较好。

Replication

副本集是同一数据集的MongoDB实例,同时将数据存储在多个节点中,提高了可用性。主节点负责写入,从节点负责读取,从而提高整体性能。

副本集由以下组件组成:

主节点:主节点接收所有写操作。

Secondaries:从节点将从主节点复制数据,并维护与主节点相同的数据。用于查询操作。

仲裁者:仲裁节点本身不存储数据,只参与选举。

副本集体系结构碎片化是MongoDB的绝对亮点,将数据水平分割成多个节点。MongoDB的切片是完全自动的。我们只需要配置切片规则,它可以自动维护数据并将其存储到不同的节点。MongoDB使用碎片来支持大量数据存储和高吞吐量操作。

下图是Mongodb的碎片化集群体系结构图:

碎片化体系结构

MongoDB碎片化集群由以下组件组成:

碎片:每个碎片的数据都是一个独立的完整副本。并且可以作为副本集部署。

mongos:mongos是一个查询路由器。在客户机和服务器之间的中间层,请求将直接发送到mongos,并由mongos路由到特定的碎片。

配置服务器:存储集群中所有节点的路由信息和分段数据。

GridFS是MongoDB的一个子模块,主要用于在MongoDB中存储文件,相当于在MongoDB中构建的分布式文件系统。

GridFS是MongoDB的一个子模块,主要用于在MongoDB中存储文件,相当于在MongoDB中构建的分布式文件系统。

本质上,文件的数据存储在集合中的块中。文件的默认集合分为fs.files和fs.chunks,

fs.files是存储文件的基本信息,如文件名、大小、上传时间、md5等。Fs.chunks是存储文件真实数据的地方。一个文件被分成多个存储块,通常为256k/文件。

如果您的项目中使用了MongoDB,那么您可以使用GridFS来构建文件系统,这样您就不必购买第三方存储服务。

如果您的项目中使用了MongoDB,那么您可以使用GridFS来构建文件系统,这样您就不必购买第三方存储服务。

GridFS的优点是,您不需要单独设置文件系统,您可以直接使用Mongodb自己的文件系统。备份和碎片都依赖于MongoDB,这便于维护。

下图是我自己对知识点的总结。作为后端开发,最好掌握以下内容。毕竟,我们不是想抢数据库管理员的工作。如果你想在业余时间学习,你可以根据以下几点来学习。几年前,我录制了一组视频,在我的网站上,大部分的视频

下图是我自己对知识点的总结。作为后端开发,最好掌握以下内容。毕竟,我们不是想抢数据库管理员的工作。如果你想在业余时间学习,你可以根据以下几点来学习。几年前,我录制了一组视频,在我的网站上,大部分的视频

蒙古数据库知识点总结工作将使用蒙古数据库和Mysql的语法比较 春季启动集成蒙古数据库

对蒙古数据库的依赖关系:

配置蒙古数据库信息:

直接插入蒙古模板来操作蒙古数据库:

使用列创建实体类

。最终存储在数据中的相应蒙古数据库集

的格式如下:

insert data

database syntax

update data

database syntax

delete data

database syntax

query data

database syntax

storage file

source Code reference

树/Master/Spring-Cloud-Book-Code-2/CH-17/蒙古数据库[1]

客户端推荐

下载地址:

3t . com/Download/[2]

蒙古数据库客户端Spring-Boot-Starter-蒙古数据库-池

最后, 我推荐一个我自己编写的小框架:在春季启动时增强的MongoDB的配置,多数据源,连接池

reference

[1]

Mongodb : 春季-云-书-代码-2/ch-17/Mongodb

[2]

studio 3:

[3]

春季-启动-启动程序-Mongodb-池:

热文本推荐

FeignClient进行深度通信注释的那天晚上

Deep在Rocketmq生产环境的主题扩展后遇到的坑

弹力 !

干货|携程对一次性Dubbo连接超时的调查