[mongo] [认证] mongodb dba 考试学习指导

网友投稿 957 2022-05-29

参考:https://university.mongodb.com/exam/guide

参加考试

您即将参加MongoDB认证考试。我们的免费学习指南将成为您准备考试的路线图。我们为您提供最相关信息的摘要,以便您可以准确地指出最关注的领域。对这里所涉及的主题有充分的了解之后,您就应该做好通过的准备。祝好运!

监察

MongoDB专业认证考试完全在线提供,使您可以在家中或办公室的舒适环境中方便地参加考试,同时由异地经纪人监控。监理人员将提供分步说明,以确保无缝的登机流程。完成身份验证后,他们将连续监视您和您的测试环境,以确保考试的安全性和完整性,并帮助您避免发生任何意外违规行为。

电脑要求

要完成考试,您需要一台带有摄像机(网络摄像机),麦克风和扬声器的Windows或Mac计算机。不支持平板电脑(例如iPad和Google Chromebook)以及其他操作系统(例如Linux)。您必须能够旋转相机(可能是通过拿起笔记本电脑),以便监理人员可以看到房间中的所有物品,包括办公桌。整个考试期间,网络摄像头,扬声器和麦克风都必须保持打开状态。考试期间不允许使用耳机。为了确保流畅的检查体验,保持稳定的连接非常重要。请在安排考试之前进行一次系统就绪检查,然后再次接近您的考试约会日期以确认系统仍在运行。

考试环境

考试期间,您必须在私人房间内,而不能打扰。请要求其他人不要进入要参加考试的房间,因为这可能会导致考试违规。考试期间不允许访问参考资料。请确保您的办公桌区域无任何杂物,包括电子设备和记事本。监考人员会在考试开始之前要求您扫描办公桌和房间区域,如果他们认为有必要,则会在整个考试期间定期扫描。您可以在白天或晚上进行注册的考试期间的任何时间参加考试。考试时间为一周。他们通常在星期二的17:00 UTC开始和结束,但是请务必检查您的考试的About页面(DBA或Developer))的确切时间。

计分

该考试由60个多项选择题和所有可以应用的问题组成。所有问题的权重均相等。您会发现回答所有问题的好处,因为不正确的答案不会受到任何惩罚。悬而未决的问题没有任何好处。

翻译软件

您可以在考试期间使用翻译软件来翻译问题。但是,请注意,MongoDB大学不支持任何翻译软件,也不能保证其翻译的适当性或准确性。通过使用翻译软件,您承担与之相关的所有风险。

通用知识

介绍

本节将介绍您应该熟悉的基础计算概念。您应该将这些视为了解MongoDB的先决条件。我们不会在课程中直接教授这些知识,但是考试中的某些问题假定您已掌握这些概念。您可以在计算机科学教科书中或通过搜索引擎(例如Google,Bing等)在Internet上搜索找到有关这些主题的详细信息。

基础数据库概念

预期您将大致了解什么是数据库,尤其是:

Records (i.e. rows/documents)

Tables/collections

Databases

身份验证和授权概念

joins及其在关系数据库中的工作方式

事务和基本了解与诸如提交和回滚之类的。

内存管理和数据表示

对于考试,您应该对以下内容有所了解:

物理内存

虚拟内存

内存映射

数据的十六进制(基数16)表示

JavaScript编程基础

对于考试,您应该知道:

如何在JavaScript中为变量赋值

如何迭代(例如,使用for或while)

概念(Philosophy and Features

在该部分中,我们将验证您是否了解以下内容:

MongoDB的主要功能及其提供的功能

JSON和BSON的基础知识

高层次的MongoDB数据模型

高级别的MongoDB查询模型

MongoDB中的数据一致性和可用性

《MongoDB体系结构指南》和此视频讲座简要介绍了这些主题。我们在下面对此材料进行扩展。

JSON格式

对于考试,您应该知道:

JSON支持哪些数据类型,例如对象和数组

JSON对象和数组的结构

如何在JSON对象和数组中嵌套数据

如何读取JSON

资源:

影片:

JSON简介

重新访问JSON

JSON规格

什么是MongoDB中的文档

文件:

JSON简介

外部链接:

json.org

BSON

对于考试,您应该知道:

BSON是二进制JSON数据格式

我们将BSON描述为轻量级,可遍历和高效的含义

BSON如何使用显式类型信息,值的二进制表示形式和显式字节长度对值进行编码。

资源:

影片:

BSON

BSON与JSON

文件:

BSON规范

The Mongo Shell

对于考试,您应该知道:

如何在mongo shell中列出可用的数据库/集合

如何切换到特定的数据库上下文

如何编写JavaScript代码以创建示例数据以及完成其他简单任务

如何使用“打印”功能打印输出

Mongo Shell中可用的管理命令

资源:

视频:

课程视频

文件:

mongo Shell入门

mongo Shell快速参考

您还应该知道如何在Shell中使用数据类型。

垂直和水平扩展

对于考试,您应该知道:

垂直和水平扩展之间的区别

分片是MongoDB进行水平扩展的方法

资源:

网络研讨会:

扩展MongoDB网络研讨会系列

文件:

分片介绍

MongoDB和关系数据库

对于考试,您应该知道:

由于可伸缩性原因,MongoDB通常不包含在关系数据库管理系统中的功能

关系数据模型通常与MongoDB中的数据模型有何不同

资源:

视频:

MongoDB和关系数据库

文件:

SQL到MongoDB的映射图

MongoDB.com:

比较MongoDB和MySQL

MongoDB中的灵活架构

对于考试,您应该了解:

为什么我们说MongoDB具有灵活的架构(有时称为“动态架构”)

这与关系数据库有何不同

有关MongoDB中写操作的原子性问题

资源:

文件:

MongoDB中的灵活架构

CRUD

在认证考试的CRUD部分,我们将验证您:

了解MongoDB查询语言中的所有创建,读取,更新和删除(CRUD)操作

熟悉常用的CRUD运算符以及如何使用它们

了解MongoDB支持哪些数据类型

在本节中,我们不会测试您是否记住了MongoDB查询语言语法。但是,您应该能够区分正确编写的查询和未正确编写的查询。您还应该知道哪些查询参数是必需的,哪些是可选的,以及如何使用查询参数。我们不希望您记住查询运算符,但是您应该能够从一组选择中识别出正确的运算符。

参考:

MongoDB CRUD操作

MongoDB基本介绍

MongoDB查询语言(MQL)演示

Create

对于考试,您应该能够:

正确使用插入,保存,更新和findAndModify命令创建新文档

将插入命令与其功能描述相匹配

知道如何执行批量插入

了解_id字段的唯一性约束及其对CRUD操作的影响

了解如何在MongoDB中创建和使用ObjectId

您应该熟悉_id字段及其特殊属性:

_id是每个MongoDB文档中必填的字段。_id字段对于用于其集合的集合必须具有唯一的值。您可以将_id字段视为文档的主键。如果您创建的新文档不包含_id字段,则MongoDB会自动创建该字段并分配一个唯一的BSON ObjectId。如果文档包含_id字段,则_id值在集合中必须唯一,以避免重复的键错误。

视频:

插入新文档-ObjectId

复合_id字段

文件:

对象编号

_id字段

可以通过以下命令来创建文档:

db.collection.insert()

视频:

插入新文档-insert()和错误

插入新文档-insert()顺序

文件:

插入文件

db.collection.insertOne()

db.collection.insert()

db.collection.insertMany()

db.collection.save()更新现有文档或插入新文档,具体取决于其文档参数。

文件:

db.collection.save()

如果upsert设置为true,并且没有文档符合查询条件,则db.collection.update()将在集合中插入新文档。

视频:

补习课程视频

Upsert-更新还是插入?

文件:

db.collection.update()(仅当upsert:true设置时才插入)

如果不存在匹配项,则插入新文档(Upsert)

如果不存在用于更新操作的匹配文档,则db.collection.findAndModify()可能会导致插入。

文件:

db.collection.findAndModify()

增补

返回新文件

有关文档创建的大多数问题都将涉及db.collection.insert()命令。插入通常很简单。

Upsert可能更复杂。在下面的示例中,假定foo集合尚未包含a = 5和b <= 7的文档。

> db.foo.update( { a : 5, b : { $lte : 7 } }, { $set : { c : 8 } }, { upsert : true } )

WriteResult({

"nMatched" : 0,

"nUpserted" : 1,

"nModified" : 0,

"_id" : ObjectId("55b0200e5ef34083de46367e")

})

> db.foo.find()

{ "_id" : ObjectId("55b0200e5ef34083de46367e"), "a" : 5, "c" : 8 }

在这种情况下,将插入一个新文档。在此特定情况下,新文档包含值c:8,因为upsert指示设置它。查询文档还为创建的文档贡献字段。在这种情况下,还设置了:5。无法从查询中确定b的值,因此将不会设置它。最后,将ObjectId分配给_id字段。

最后,您可以通过将数组传递到db.collection.insert()或db.collection.bulkWrite()进行批量插入。您应该知道有序和无序批量插入之间的区别。您还应该知道何时使用批量操作与何时使用insertMany()之间的区别。

文件:

插入多个文件

批量写入操作

db.collection.bulkWrite()

批量操作方法

Read

在MongoDB中,您可以使用db.collection.find()方法或db.collection.findAndModify()方法阅读文档。您应该熟悉这两个命令,但是find()方法将在考试中获得更大的覆盖范围。

对于考试,您应该能够:

正确使用查询,投影和选项参数

排序查询结果

展示对所有匹配和投影运算符的理解

读取和解释MongoDB查询中使用的正则表达式

展示对find()查询如何与数组一起使用的理解

从MongoDB 4.4开始,作为使find和findAndModify投影与聚合的$ project阶段保持一致的一部分,

find和findAndModify投影可以接受聚合表达式和聚合语法,包括使用文字和聚合变量。通过使用聚合表达式和语法,您可以投影新字段或使用新值投影现有字段。

find和findAndModify投影可以使用嵌套形式指定嵌入字段;例如{field:{nestedfield:1}}以及点符号。在早期版本中,只能使用点符号。

在MongoDB中,使用以下方法执行数据读取:

db.collection.find()

影片:

find()简介

读取标量字段

读取数组字段

投影

db.collection.find()的运算符:

比较运算符

逻辑运算符

表达查询运算符

元素运算符

正则表达式运算符

数组运算符:

数组运算符:$ all

数组运算符:$ size

数组运算符:$ elemMatch

文件:

db.collection.find()

db.collection.findAndModify()

db.collection.findOne()

查询文件

请记住,尽管findOne()方法返回单个文档,但是find()查询将返回游标:

影片:

光标课

文件:

在mongo Shell中迭代游标

还有其他的集合读取方法,这些方法不会返回游标,但是您应该熟悉这些方法。

db.collection.count()

影片:

count()课程

文件:

计数()

db.collection.distinct()

文件:

不同()

还有其他方法可以应用于游标本身。这些可以返回一个数字(例如,计数),或者可以修改结果集(即,排序,跳过和限制)。您可能还应该知道如何手动迭代游标。有关游标方法的列表,请参见MongoDB文档。

cursor.count()

类似于collection.count()

cursor.count()

sort()和limit()

cursor.sort()

排序文件

cursor.skip()

跳过文档

cursor.limit()

极限文件

cursor.next()

cursor.next()文档

cursor.allowDiskUse()-4.4版中的新功能

cursor.allowDiskUse()文档

有关游标的更多信息

您也可以投影结果以限制返回的字段。

影片:

投影课

阵列算子与投影

文件:

从查询返回的项目字段

db.collection.find()中的投影

Update

对于考试,您应该能够:

正确使用save,update和findAndModify命令来突变现有文档

区分哪个参数找到要更改的文档,然后更改它们

解释出现给您的任何更新操作符的行为

识别upserts和db.collection.save()何时插入文档

更新会修改现有文档。可以使用一些收集方法来进行更新,其中一些方法在插入部分中:

db.collection.save()

如果指定了_id并且与现有文档匹配,它将更新。

save()文档

db.collection.findAndModify()

findAndModify()文档

db.collection.findOneAndUpdate()

findOneAndUpdate()文档

db.collection.update()

除非指定upsert:true,并且查询不匹配任何文档,否则它将更新。

update()文档

更新文件

在update参数中未指定运算符的情况下,将进行批量更新

更新文件

批发更新课程视频

经营者

更新运算符

更新操作员文档

$ set(修改字段)

$ set课程视频

$ set文档

$ unset(删除字段)

$未设置课程视频

$未设置文档

$重命名

$重命名文档

$ setOnInsert

$ setOnInsert文档

$ inc

$ inc文档

$ mul

$ mul文档

$ min和$ max

$ min文档

$ max文档

数组运算符

数组运算符课程视频

位置$文档

$ addToSet文档

$ pop文档

$ pull文档

$ pull所有文档

$ push文档

如果您使用$ push(有时是$ addToSet),则还有其他修饰符

$每个文档

$ slice文档

$ sort文档

$ position文档

多次更新

多次更新课程视频

更新一

db.collection.updateOne()

更新很多

updateMany()

db.collection.updateMany()

Delete

对于考试,您应该能够:

删除集

建立一个查询,该查询仅删除您要删除的文档

管理数据删除的替代方法

视频:

删除文件并收集

文件:

删除集合:-从MongoDB 4.4开始,db.collection.drop()方法和drop命令会在删除集合之前中止目标集合上正在进行的任何正在进行的索引构建。在MongoDB 4.4之前的版本中,尝试删除具有进行中索引的集合会导致错误,并且不会删除该集合。- db.collection.drop() -降命令

db.collection.remove()

db.collection.deleteOne()

db.collection.deleteMany()

db.collection.findOneAndDelete()

通过设置TTL使集合中的数据过期

Indexes

在认证考试中,我们将验证您:

了解MongoDB中可用的索引类型

单字段索引(Single Field Indexes)

复合索引(Compound Indexes)

多键索引(Multikey Indexes)

地理空间指数(Geospatial Indexes)

文字索引(Text Indexes)

哈希索引(Hashed Indexes)

通配符索引(Wildcard Indexes)

了解索引属性:

TTL

(Sparse)

唯一(Unique)

部分的(Partial)

(Hidden)

知道如何使用索引提高查询效率

了解索引的写入性能成本

介绍

以下资源提供了索引的基本介绍。

影片:

索引简介

文件:

指标

索引名称

默认_id索引

在创建集合期间,MongoDB在_id字段上创建唯一索引。_id索引可防止客户端为_id字段插入两个具有相同值的文档。您不能将此索引放在_id字段上。

-文档:

默认_id索引

创建和删除索引

在考试中,我们将确保您:

知道如何创建索引

知道如何删除索引

影片:

createIndex(),getIndexes(),dropIndex()

创建索引

文件:

db.collection.createIndex()

db.collection.getIndexes()

db.collection.dropIndex()

db.collection.dropIndexes()

db.collection.drop() -从数据库中删除一个集合或视图。该方法还删除与删除的集合关联的所有索引。

Collection Scans

对于考试,您应该知道:

当必须检查集合中的每个文档以确定查询的结果集时,就会发生“集合扫描”

给定查询和可用索引列表,是否进行收集扫描

为什么不希望进行收集扫描

影片:

集合扫描

单字段索引

对于考试,您应该能够:

识别单字段索引

知道何时使用单字段索引(何时不使用)

用于.find()查询

用于.update()查询

用于.remove()查询

知道如何在子文档中的字段上创建单字段索引

这里有一些资源可以帮助您:

影片:

单字段索引第1部分

单一字段索引第2部分

文件:

单字段索引

在嵌入式字段上创建索引

在嵌入式文档上创建索引

用单字段索引排序

复合索引

在考试中,您应该知道:

什么是复合指数

如何使用复合索引的前缀来满足查询

影片:

复合索引第1部分

复合索引第2部分

文件:

复合索引

前缀

在多个字段上排序

多键索引

在考试中,您应该知道:

如何将多键索引与其他索引类型区分开

多键索引限制

多键索引中将为特定文档创建多少索引键

多键索引是数组字段上的索引。索引将为每个数组元素包含一个键。

影片:

多键索引

点表示法和多键

文件:

多键索引

多键索引范围

地理空间指数

对于考试,您将需要知道:

如何创建2d和2dsphere索引

如何在MongoDB中为2dsphere索引字段创建geoJSON点

如何查询geoJSON点:

一圈内

接近一点

在多边形内

为了支持对地理空间坐标数据的有效查询,MongoDB提供了两个特殊的索引:返回结果时使用平面几何的2d索引和使用球面几何返回结果的2dsphere索引。

资源:

视频:

地理空间指数

文件:

地理空间索引和查询

GeoJSON对象

2d索引

创建二维索引

查询二维索引

2dsphere索引

创建一个2dsphere索引

查询2dsphere索引

使用球面几何计算距离

文本索引

对于考试,您将需要知道:

如何建立文字索引

如何使用文本索引进行查询

如何按文字分数对结果进行排序

资源:

视频:

MongoDB中的文本索引

文件:

文字索引

创建文本索引

文字搜寻范例

哈希索引

对于考试,您将需要知道:

如何创建哈希索引

如何创建复合哈希索引

资源:

文件:

散列索引

[mongo] [认证] mongodb dba 考试学习指导

创建复合哈希索引

通配符索引

对于考试,您应该知道:

如何创建通配符索引

资源:

视频:

通配符索引:第1部分

通配符索引:第2部分

通配符索引用例

文件:

通配符索引

通配符索引查询/排序支持

索引排序

对于考试,您将需要知道:

如何用索引排序

如何使用复合索引来过滤和排序

如何使用复合索引执行复合排序

何时索引对复合排序有效或无效

影片:

什么时候可以用索引排序

文件:

使用索引对查询结果进行排序

.explain()方法

对于考试,您应该知道:

如何使用db.collection.explain()创建一个Explainable对象并使用它来解释游标

如何用cursor.explain()解释光标

解释计划的三个详细设置及其提供的内容。

如何阅读每种类型的解释计划来确定事物,例如:

查询返回了多少文档

查询读取了多少个文档

查询查看了多少索引条目

查询使用哪个索引

进行收集扫描时

查询期间查看了多少个索引条目

查询分片集合中涉及哪些分片

如何识别查询已被覆盖

是否使用索引对查询进行排序

查询花费了多长时间(或估计花费了多长时间)

哪些类型的查询可以使用索引(.find()、. update()、. remove())

参考:

查询性能的技巧和窍门:让我们对它们进行.explain()

资源:

影片:

了解解释第1部分

了解解释第2部分

文件:

cursor.explain()

db.collection.explain()

说明结果

选择索引

对于考试,您应该知道:

当可以应用多个索引时如何选择索引

重新运行查询优化器时

影片:

选择索引

索引使用效率

查询计划

文件:

查询计划

Covered Queries

对于考试,您需要了解以下内容:

涵盖的查询

为什么涵盖的查询对性能有好处

如何识别说明计划中已发生覆盖查询

视频:

涵盖查询

文件:

涵盖查询

索引策略

对于考试,您应该知道:

如何创建索引以支持对一个字段进行排序的查询,对第二个字段进行精确匹配的查询以及对第三个字段进行范围查询的索引

何时可以使用索引对特定查询进行排序

选择性查询的数量以及它们可能从索引中受益的数量

资源:

影片:

索引使用效率2

索引注释

文件:

索引策略

优化查询性能

索引常见问题

查询优化

索引对写入性能的影响

索引通常会提高读取性能,但会降低写入性能。诸如更新和删除之类的混合操作(例如,具有查找和写入操作)可能取决于用例(尽管使用索引通常更快)。

对于考试,您将想知道:

为什么索引会减慢写操作的速度

为什么更新和删除操作会因索引而受益或降低性能(但通常会受益)

资源:

视频:

插入效果

文件:

写操作性能

唯一索引

对于考试,您应该知道:

如何创建唯一索引

如何从db.collection.getIndexes()命令识别唯一索引

当您尝试插入值与现有文档匹配的唯一索引字段的文档时会发生什么?

独特的复合索引如何工作

如果您尝试在已经包含具有唯一字段非唯一值的文档的集合上创建唯一索引,会发生什么情况

资源:

视频:

索引创建选项,唯一

文件:

唯一索引

TTL索引

对于考试,您应该知道:

如何建立TTL索引

如何在db.collection.getIndexes()的输出中识别TTL索引

并确认删除发生的时间

知道何时绝对不会删除文档,以及何时会删除

资源:

视频:

TTL索引

文件:

TTL索引

隐藏索引

对于考试,您应该知道:

如何创建隐藏索引

如何隐藏现有索引

如何取消隐藏现有索引

什么时候以及为什么要使用隐藏索引

资源:

文件:

隐藏索引

部分索引

从MongoDB 3.2开始,MongoDB提供了创建部分索引的选项。部分索引提供了稀疏索引功能的超集。如果您使用的是MongoDB 3.2或更高版本,则应优先使用部分索引而不是稀疏索引。

对于考试,您应该知道:

如何创建部分索引

偏指数行为

与稀疏指数比较

对部分指数的限制

资源:

文件:

部分索引

稀疏索引

混合索引构建

对于考试,您将需要知道:

如何在填充的集合上建立索引

索引构建如何影响数据库性能

资源:

视频:

索引构建

索引键长度限制

文件:

在填充的集合上建立索引

在副本集上建立索引

在分片群集上建立索引

字符串字段和索引的正则表达式

对于考试,您将需要知道:

标准索引与字符串字段的行为方式(与文本索引相比)

如何通过在左侧锚定正则表达式来最有效地使用索引

资源:

正则表达式中的索引使用

Replication

在认证考试中,我们将尝试验证您:

了解复制的好处

了解速度和耐用性之间的权衡

了解操作日志工作原理的基础知识,包括幂等和基于语句的复制等概念

知道节点(主节点或非主节点)发生故障时会发生什么

介绍

复制是关于可用性和持久性的。一般来说,它不是用于缩放。这就是分片的目的。

影片:

什么是复制

MongoDB副本集

异步复制

文件:

复制简介

副本集数据同步

节点数

在考试中,您应该知道:

创建节点时要使用的选项,例如:

Arbiter

Delayed

votes

priority

资源:

文件:

副本集成员

延迟成员

隐藏的成员

非投票成员

副本集配置

复制集仲裁器

启动副本集

对于考试,您应该熟悉:

如何启动副本集(或启动单个服务器并添加副本集成员)

副本集中辅助节点的初始同步

资源:

视频:

设置副本集

文件:

rs.initiate()

初始同步

副本集部署教程

选举

对于考试,您将需要知道:

可以触发选举的事件

集合中的优先级,投票,optime和无法访问的服务器将如何影响选举结果

哪个节点将在大选中获胜

资源:

视频:

故障转移和选举

文件:

Elections

故障转移(Failover)

对于考试,您将需要知道:

是什么触发故障转移

故障转移触发选举

资源:

视频:

自动故障转移

故障转移示例

文件:

副本集高可用性

回滚

对于考试,您将需要知道:

哪些事件系列将触发回滚或不触发回滚

被回滚的数据会发生什么

资源:

视频:

Recovery

文件:

回滚

回滚时间限制

回滚目录

rs.status()

对于认证考试,您应该能够:

阅读并了解rs.status()命令的输出

知道rs.status()中有什么数据

资源:

视频:

副本集状态

文件:

replSetGetStatus

副本集重新配置

对于认证考试,您将需要能够:

添加和删 除副本集成员

重新配置副本集

资源:

文件:

rs.add()

rs.remove()

rs.reconfig()

重新配置副本集

4.4中的副本集重新配置更改

影片:

重新配置副本集

Oplog

对于认证考试,您需要:

了解MongoDB基于语句的复制的本质

了解为什么oplog操作必须是幂等的

了解操作日志中存储了哪些操作

知道oplog存储文档的_id以进行写入

计算特定写操作可能有多少个oplog条目(每个受影响的文档一个)

资源:

视频:

基于语句的复制与二进制复制

文件

副本集Oplog

上限集合

最短Oplog保留期限

幂等(词汇)

流复制

Read Preference

对于考试,您应该知道:

对于每个可能的读取关注点,可以查询哪个或哪些节点(也取决于节点的状态)

当您的读取首选项允许您读取陈旧数据时

资源:

文件:

阅读偏好参考

影片:

阅读偏好简介

阅读首选项

Write Concern

对于考试,您应该知道:

默认写关注

如何将写入关注设置为多数或固定数量的节点

对于给定的写入关注点,多少个节点将具有数据副本

如何确保在确认之前写到日志

资源:

影片:

编写关注原则

写关注点:第1部分

写关注点:第2部分

检查“ w”参数

编写关注的用例和模式

文件:

写关注

写关注参考

默认写问题

写副本集关注点

全局默认写问题

4.4中的副本集写确认

Sharding

在认证考试中,我们将验证您:

了解水平扩展以及分片如何在MongoDB中提供此功能

知道如何构造一个好的分片密钥,以及选择分片密钥会出什么问题

了解负载均衡器的作用

了解配置服务器的角色及其工作方式。

介绍

分片与扩展有关。使用分片,您可以将数据分布在多个副本集上,每个副本集都是分片群集中的逻辑“节点”。

请注意,分片和复制解决了不同的问题。复制与数据的持久性和高可用性有关,而分片与读写工作负荷的水平扩展有关。

资源:

文件:

分片介绍

分片集群组件

碎片

部署分片集群

视频:

分片简介

分片架构

分片键

对于考试,您应该知道:

从MongoDB 4.2开始,分片键字段值是可变的,并且可以更改,除非分片键字段是不可变的_id字段

什么是好的分片键

分片密钥不好的原因

分片密钥如何在MongoDB中实现基于范围的分片

资源:

文件:

分片键

缺少分片键

分片索引

MongoDB 4.4版中的更改

视频:

分片键

块和平衡器(Chunks and the Balancer)

对于考试,您应该知道:

如何通过分片键范围定义块

如何确定块范围是否包含特定文档

当块拆分自动发生时

平衡器如何使用块来保持群集平衡

资源:

文件:

块(词汇表条目)

管理分片集群平衡器

分片群集中的块分割

分片集合平衡

迁移分片集群中的块

修改分片群集中的块大小

MongoDB 4.4版中的更改(巨型块迁移)

影片:

大块

平衡性

配置服务器和群集元数据(Config Servers and Cluster Metadata)

对于考试,您应该知道:

哪些数据配置服务器包含

如何访问配置服务器中的数据

配置服务器不可用时会发生什么

哪些类型的服务器构成配置服务器

当您的配置服务器无法选择主服务器时会发生什么

资源:

文件:

配置服务器

副本集配置服务器

配置服务器可用性

分片集群元数据

影片:

群集设置拓扑

设置分片集群

配置数据库

预分割数据Pre-Splitting Data

对于考试,您应该知道:

如何预分割块

为什么要预分割块

如何手动分割块

如何手动合并块

资源:

文件:

创建块

分割块

合并块

分片群集中的查询

对于考试,您应该知道:

有针对性的查询与分散收集查询的性能影响

给定一个查询和分片配置的描述,该查询是针对性的还是分散性的

如何读取.explain()输出以确定哪些碎片受查询影响

分片群集中的排序和聚合工作方式

什么是mongos节点及其在分片群集中的作用

资源:

文件:

广播业务

目标操作

说明结果

分片集群查询路由

聚合管道和分片集合

对冲读取

视频:

分片群集中的查询

目标与散点收集查询

选择分片键

对于考试,您应该知道:

什么是好的分片键:

高基数

高选择性

非单调递增/递减值

这些是什么意思

资源:

文件:

选择一个分片键

使用哈希分片键对集合进行分片

远程分片

视频:

选择分片键

选择一个好的分片键

Primary Shard

对于考试,您应该知道:

主分片包含哪些数据

主分片上发生什么读和写操作

聚合查询如何使用主分片

资源:

文件:

主分片

应用程序和服务器管理

对于认证考试,我们将验证您:

了解MongoDB日志和服务器日志的机制

了解MongoDB的安全性

了解监控和性能调整

可以确定不同集群体系结构的优缺点

能够评估有关基本服务器诊断,维护,备份和灾难恢复的选项。

介绍

虽然定义有些不确定,但是应用程序管理负责处理MongoDB与应用程序的关系。我们在这里考虑的功能包括:有线协议,有线加密和安全性。

服务器管理负责架构设计,维护和调试部署。

日志

对于考试,您应该知道:

该杂志的目的

该日志被实现为二进制预写日志

轴颈如何在发生碰撞时确保耐用性。

对于WiredTiger,日记工作方式的基础,例如,将数据刷新到磁盘的频率

资源:

文件:

Journaling Mechanics

Manage Journaling

博客:

MongoDB的日记如何工作

MongoDB存储引擎日记

压缩

对于考试,您应该知道:

MongoDB如何压缩数据

可用的压缩库

压缩的优点

WiredTiger压缩:

使用WiredTiger,MongoDB支持所有集合和索引的压缩。压缩可以最大程度地减少存储使用量,但会增加CPU的开销。- WiredTiger存储引擎-压缩

snappy:

压缩/解压缩库旨在平衡有效的计算要求和合理的压缩率。snappy是MongoDB使用WiredTiger的默认压缩库。-活泼- WiredTiger压缩文件

prefix compression:

通过每页内存仅存储一次相同的索引键前缀来减少内存和磁盘消耗。-压缩

zlib:

与MongoDB使用snappy相比,该数据压缩库以更高的CPU成本提供更高的压缩率。您可以将wiredTiger配置为使用zlib作为其压缩库。- zlib的

zstd:

2版的新功能

与zlib相比,提供更高的压缩率和更低的CPU使用率的数据压缩库。

Server Logs

对于考试,您应该知道:

服务器日志中捕获了哪些查询

如何旋转日志文件

捕获的常见事件:

创建/删除数据库

连接数

资源:

影片:

服务器日志简介

文件:

日志信息

旋转日志文件

流程记录

探查器(The Profiler)

对于考试,您应该知道:

如何打开和关闭探查器或更改其设置

分析器捕获的内容

该信息存储在哪里

资源:

影片:

剖析器简介

探查器演示

分析概述

检查探查器操作

通过时间戳过滤探查器

文件:

数据库探查器

数据库探查器输出

博客:

性能最佳实践:查询模式和分析

监控和性能调整

对于考试,您将需要知道:

哪些工具可用于监视和调整MongoDB

如何解释简单方案的输出,例如:

工作集的RAM用完了

磁盘I / O已饱和

资源:

文件:

监控MongoDB

分析MongoDB的性能

博客:

性能最佳实践:MongoDB数据建模和内存大小调整

性能最佳实践:硬件和操作系统配置

MongoDB安全

对于考试,您应该知道:

如何在MongoDB中定义用户角色和权限

还有哪些其他最佳安全实践可用

参考:

安全最佳实践系列:Authn Authz

安全最佳实践系列:审计

安全最佳实践系列:字段级加密

资源:

影片:

认证机制

授权模型

审核能力

文件:

安全介绍

认证方式

授权书

加强网络基础设施

集合级访问控制

稽核

集群架构

对于考试,您应该了解以下常见的部署模式:

副本集

分片集群

资源:

文件:

副本集部署体系结构

分片集群要求

生产集群架构

配置服务器可用性

博客:

性能最佳实践:分片

MongoDB数据平台架构指南

诊断和调试(Diagnostics and Debugging)

对于考试,您应该知道:

查看服务器,副本集和分片群集状态的基本命令

如何解释这些命令

解决可能出现的简单问题的方法,例如:

服务器已关闭

配置服务器已关闭

长时间运行的查询占用了太多资源

所有查询都限于分片群集中的一台服务器

资源:

影片:

诊断和调试简介

currentOp和killOp

服务器状态简介-1

服务器状态简介-2

文件:

db.currentOp()

db.serverStatus()

诊断常见问题

rs.status()

sh.status()

db.killOp()

Maintenance

对于考试,您应该能够:

旋转日志文件

从分片集群中删除分片

资源:

文件:

运行时数据库配置

升级到最新版本的MongoDB

管理mongod流程

终止正在运行的操作

旋转日志文件

备份与恢复

对于考试,您将需要知道:

单个服务器和群集的备份选项

文件系统快照

mongodump

如何从这些备份还原数据

资源:

文件:

使用文件系统快照备份和还原

使用MongoDB工具进行备份和还原

从MongoDB备份还原副本集

备份和还原分片群集

意外关闭后恢复独立服务器

网络研讨会:

Ops Manager简介

MongoDB Ops Manager数据表

Server Tools

对于认证考试,将验证您是否了解:

如何使用服务器工具导出和导入数据

如何使用服务器工具监视服务器上的基本操作

如何使用服务器工具备份和还原数据以及检查备份的数据(仅限DBA)

使用哪些工具来处理GridFS文件和分析磁盘I / O(仅DBA)

介绍

通过使用带有--help选项的工具,可以找到大多数测试的信息。

对于开发者考试,您需要了解以下内容:

mongoimport

mongoexport

mongostat

mongotop

对于DBA考试,您需要了解以下内容:

mongoimport

mongoexport

mongostat

mongotop

mongodump

mongorestore

mongofiles

bsondump

导入和导出数据

对于考试,您应该知道如何在MongoDB和以下之间导入/导出数据:

JSON文件

CSV文件

资源:

文件:

mongoimport

mongoexport

基本服务器监控

对于考试,您应该知道:

如何使用mongostat监视MongoDB

如何使用mongotop查看服务器活动

在mongostat和mongotop中诊断某些类型的性能问题时,哪些字段特别重要

资源:

影片:

mongostat视频

mongotop视频

文件:

mongostat

Mongotop

备份和还原数据(仅DBA)

对于考试,您应该知道:

如何使用mongodump和mongorestore保存和还原数据

如何在mongodump或mongorestore中包含您的oplog

资源:

文件:

mongodump

mongorestore

注意:

对于正在进行分片事务的4.2+分片群集,mongodump和mongorestore不能成为备份策略的一部分。-参考

高级MongoDB诊断(仅DBA)

对于考试,您应该知道如何使用以下工具:

bsondump

jq工具:在MongoDB 4.4中,日志已更改为结构化日志,您需要了解如何使用jq工具来解析日志

操纵BLOB(仅DBA)

对于考试,您将需要能够使用mongofiles将数据放入GridFS。

资源:

mongofiles

储存引擎

对于考试,我们将验证您是否知道:

WiredTiger的并发级别

WiredTiger可用的压缩算法

这些功能对MongoDB性能的影响

介绍

存储引擎是数据库的组件,负责管理如何在内存和磁盘上存储数据。MongoDB支持多个存储引擎,因为不同的引擎对于特定的工作负载性能更好。为您的用例选择合适的存储引擎会严重影响应用程序的性能。MongoDB 3.0引入了可插拔存储引擎。

文件:

WiredTiger

In-Memory Storage Engine

Storage Engines Documentation

WiredTiger

WiredTiger是从MongoDB 3.2开始的默认存储引擎。它非常适合大多数工作负载,建议用于新部署。WiredTiger提供了文档级并发模型,检查点和压缩以及其他功能。

WiredTiger的功能

Locks/Concurrency

WiredTiger支持文档级并发

Journaling

建议对WiredTiger进行日志记录

从MongoDB 4.0开始,您不能指定--nojournal选项或storage.journal.enabled:使用WiredTiger存储引擎的副本集成员为false。

对于WT,它确保在检查点之间将写入写入磁盘

如果日志记录少于或等于128个字节(WiredTiger的最小日志记录大小),则WiredTiger不会压缩该记录。

Data Compression

默认情况下,WiredTiger使用块压缩与活泼的所有集合和前缀压缩所有索引压缩库。

对于集合,下面的块压缩库也是可用的: - zlib的 - zstd(MongoDB中4.2获得的起始)

对于考试,您应该知道:

WiredTiger中的压缩选项

WiredTiger支持文档级并发(锁定)

默认设置

WiredTiger缓存的工作方式

文件:

Concurrency FAQ

Storage FAQ WiredTiger Section

Index Prefix Compression

Manage Journaling

Journaling with WiredTiger Storage Engine

影片:

WiredTiger

资料档案

这是WiredTiger数据目录的示例:

内存中存储引擎

从MongoDB Enterprise 3.2.6版开始,内存存储引擎是64位版本中通用可用性(GA)的一部分。除某些元数据和诊断数据外,内存存储引擎不维护任何磁盘上的数据,包括配置数据,索引,用户凭据等。通过避免磁盘I / O,内存存储引擎可实现更多功能。可预测的数据库操作延迟。

Journaling

从版本4.2(以及4.0.13和3.6.14)开始,如果副本集成员使用内存中的存储引擎(投票或不投票),但是副本集的writeConcernMajorityJournalDefault设置为true,则副本集成员记录一个启动警告。

Concurrency

Durability

Transactions

您无法在具有将writeConcernMajorityJournalDefault设置为false的分片的分片群集上运行事务,例如,具有使用内存存储引擎的投票成员的分片。

文件:

内存中存储引擎

日记和内存中存储引擎

MongoDB 云数据库 GaussDB(for Mongo)

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:技术综述十五:自然场景文字检测与识别系列--背景与业界产品
下一篇:PHP开发APP接口实现--基本篇
相关文章