[mongo] [认证] mongodb dba 考试学习指导
参考: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
资源:
BSON
对于考试,您应该知道:
- BSON是二进制JSON数据格式
- 我们将BSON描述为轻量级,可遍历和高效的含义
- BSON如何使用显式类型信息,值的二进制表示形式和显式字节长度对值进行编码。
资源:
The Mongo Shell
对于考试,您应该知道:
- 如何在mongo shell中列出可用的数据库/集合
- 如何切换到特定的数据库上下文
- 如何编写JavaScript代码以创建示例数据以及完成其他简单任务
- 如何使用“打印”功能打印输出
- Mongo Shell中可用的管理命令
资源:
- 视频:
- 文件:
垂直和水平扩展
对于考试,您应该知道:
- 垂直和水平扩展之间的区别
- 分片是MongoDB进行水平扩展的方法
资源:
- 网络研讨会:
- 文件:
MongoDB和关系数据库
对于考试,您应该知道:
- 由于可伸缩性原因,MongoDB通常不包含在关系数据库管理系统中的功能
- 关系数据模型通常与MongoDB中的数据模型有何不同
资源:
- 视频:
- 文件:
- MongoDB.com:
MongoDB中的灵活架构
对于考试,您应该了解:
- 为什么我们说MongoDB具有灵活的架构(有时称为“动态架构”)
- 这与关系数据库有何不同
- 有关MongoDB中写操作的原子性问题
资源:
- 文件:
CRUD
在认证考试的CRUD部分,我们将验证您:
- 了解MongoDB查询语言中的所有创建,读取,更新和删除(CRUD)操作
- 熟悉常用的CRUD运算符以及如何使用它们
- 了解MongoDB支持哪些数据类型
在本节中,我们不会测试您是否记住了MongoDB查询语言语法。但是,您应该能够区分正确编写的查询和未正确编写的查询。您还应该知道哪些查询参数是必需的,哪些是可选的,以及如何使用查询参数。我们不希望您记住查询运算符,但是您应该能够从一组选择中识别出正确的运算符。
Create
对于考试,您应该能够:
- 正确使用插入,保存,更新和findAndModify命令创建新文档
- 将插入命令与其功能描述相匹配
- 知道如何执行批量插入
- 了解_id字段的唯一性约束及其对CRUD操作的影响
- 了解如何在MongoDB中创建和使用ObjectId
您应该熟悉_id字段及其特殊属性:
_id是每个MongoDB文档中必填的字段。_id字段对于用于其集合的集合必须具有唯一的值。您可以将_id字段视为文档的主键。如果您创建的新文档不包含_id字段,则MongoDB会自动创建该字段并分配一个唯一的BSON ObjectId。如果文档包含_id字段,则_id值在集合中必须唯一,以避免重复的键错误。
- 视频:
- 文件:
可以通过以下命令来创建文档:
- db.collection.insert()
- 视频:
- 文件:
- db.collection.save()更新现有文档或插入新文档,具体取决于其文档参数。
- 如果upsert设置为true,并且没有文档符合查询条件,则db.collection.update()将在集合中插入新文档。
- 视频:
- 文件:
- db.collection.update()(仅当upsert:true设置时才插入)
- 如果不存在匹配项,则插入新文档(Upsert)
- 如果不存在用于更新操作的匹配文档,则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()之间的区别。
文件:
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()
请记住,尽管findOne()方法返回单个文档,但是find()查询将返回游标:
- 影片:
- 文件:
还有其他的集合读取方法,这些方法不会返回游标,但是您应该熟悉这些方法。
还有其他方法可以应用于游标本身。这些可以返回一个数字(例如,计数),或者可以修改结果集(即,排序,跳过和限制)。您可能还应该知道如何手动迭代游标。有关游标方法的列表,请参见MongoDB文档。
- cursor.count()
- 类似于collection.count()
- cursor.count()
- sort()和limit()
- cursor.sort()
- cursor.skip()
- cursor.limit()
- cursor.next()
- cursor.allowDiskUse()-4.4版中的新功能
- 有关游标的更多信息
您也可以投影结果以限制返回的字段。
- 影片:
- 文件:
Update
对于考试,您应该能够:
- 正确使用save,update和findAndModify命令来突变现有文档
- 区分哪个参数找到要更改的文档,然后更改它们
- 解释出现给您的任何更新操作符的行为
- 识别upserts和db.collection.save()何时插入文档
更新会修改现有文档。可以使用一些收集方法来进行更新,其中一些方法在插入部分中:
- db.collection.save()
- 如果指定了_id并且与现有文档匹配,它将更新。
- save()文档
- db.collection.findAndModify()
- db.collection.findOneAndUpdate()
- db.collection.update()
- 除非指定upsert:true,并且查询不匹配任何文档,否则它将更新。
- update()文档
- 更新文件
- 在update参数中未指定运算符的情况下,将进行批量更新
- 经营者
- 更新运算符
- 更新操作员文档
- $ set(修改字段)
- $ unset(删除字段)
- $重命名
- $ setOnInsert
- $ inc
- $ mul
- $ min和$ max
- 数组运算符
- 数组运算符课程视频
- 位置$文档
- $ addToSet文档
- $ pop文档
- $ pull文档
- $ pull所有文档
- $ push文档
- 如果您使用$ push(有时是$ addToSet),则还有其他修饰符
- $每个文档
- $ slice文档
- $ sort文档
- $ position文档
- 多次更新
- 更新一
- 更新很多
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字段上。
-文档:
创建和删除索引
在考试中,我们将确保您:
- 知道如何创建索引
- 知道如何删除索引
- 影片:
- 文件:
- db.collection.createIndex()
- db.collection.getIndexes()
- db.collection.dropIndex()
- db.collection.dropIndexes()
- db.collection.drop() -从数据库中删除一个集合或视图。该方法还删除与删除的集合关联的所有索引。
Collection Scans
对于考试,您应该知道:
- 当必须检查集合中的每个文档以确定查询的结果集时,就会发生“集合扫描”
- 给定查询和可用索引列表,是否进行收集扫描
- 为什么不希望进行收集扫描
- 影片:
单字段索引
对于考试,您应该能够:
- 识别单字段索引
- 知道何时使用单字段索引(何时不使用)
- 用于.find()查询
- 用于.update()查询
- 用于.remove()查询
- 知道如何在子文档中的字段上创建单字段索引
这里有一些资源可以帮助您:
复合索引
在考试中,您应该知道:
多键索引
在考试中,您应该知道:
- 如何将多键索引与其他索引类型区分开
- 多键索引限制
- 多键索引中将为特定文档创建多少索引键
多键索引是数组字段上的索引。索引将为每个数组元素包含一个键。
地理空间指数
对于考试,您将需要知道:
- 如何创建2d和2dsphere索引
- 如何在MongoDB中为2dsphere索引字段创建geoJSON点
- 如何查询geoJSON点:
- 一圈内
- 接近一点
- 在多边形内
为了支持对地理空间坐标数据的有效查询,MongoDB提供了两个特殊的索引:返回结果时使用平面几何的2d索引和使用球面几何返回结果的2dsphere索引。
资源:
- 视频:
- 文件:
文本索引
对于考试,您将需要知道:
- 如何建立文字索引
- 如何使用文本索引进行查询
- 如何按文字分数对结果进行排序
资源:
- 视频:
- 文件:
哈希索引
对于考试,您将需要知道:
- 如何创建哈希索引
- 如何创建复合哈希索引
资源:
通配符索引
对于考试,您应该知道:
- 如何创建通配符索引
资源:
- 视频:
- 文件:
索引排序
对于考试,您将需要知道:
- 如何用索引排序
- 如何使用复合索引来过滤和排序
- 如何使用复合索引执行复合排序
- 何时索引对复合排序有效或无效
- 影片:
- 文件:
.explain()方法
对于考试,您应该知道:
- 如何使用db.collection.explain()创建一个Explainable对象并使用它来解释游标
- 如何用cursor.explain()解释光标
- 解释计划的三个详细设置及其提供的内容。
- 如何阅读每种类型的解释计划来确定事物,例如:
- 查询返回了多少文档
- 查询读取了多少个文档
- 查询查看了多少索引条目
- 查询使用哪个索引
- 进行收集扫描时
- 查询期间查看了多少个索引条目
- 查询分片集合中涉及哪些分片
- 如何识别查询已被覆盖
- 是否使用索引对查询进行排序
- 查询花费了多长时间(或估计花费了多长时间)
- 哪些类型的查询可以使用索引(.find()、. update()、. remove())
参考:
资源:
选择索引
对于考试,您应该知道:
Covered Queries
对于考试,您需要了解以下内容:
索引策略
对于考试,您应该知道:
- 如何创建索引以支持对一个字段进行排序的查询,对第二个字段进行精确匹配的查询以及对第三个字段进行范围查询的索引
- 何时可以使用索引对特定查询进行排序
- 选择性查询的数量以及它们可能从索引中受益的数量
资源:
索引对写入性能的影响
索引通常会提高读取性能,但会降低写入性能。诸如更新和删除之类的混合操作(例如,具有查找和写入操作)可能取决于用例(尽管使用索引通常更快)。
对于考试,您将想知道:
- 为什么索引会减慢写操作的速度
- 为什么更新和删除操作会因索引而受益或降低性能(但通常会受益)
资源:
唯一索引
对于考试,您应该知道:
- 如何创建唯一索引
- 如何从db.collection.getIndexes()命令识别唯一索引
- 当您尝试插入值与现有文档匹配的唯一索引字段的文档时会发生什么?
- 独特的复合索引如何工作
- 如果您尝试在已经包含具有唯一字段非唯一值的文档的集合上创建唯一索引,会发生什么情况
资源:
TTL索引
对于考试,您应该知道:
- 如何建立TTL索引
- 如何在db.collection.getIndexes()的输出中识别TTL索引
- 并确认删除发生的时间
- 知道何时绝对不会删除文档,以及何时会删除
资源:
隐藏索引
对于考试,您应该知道:
- 如何创建隐藏索引
- 如何隐藏现有索引
- 如何取消隐藏现有索引
- 什么时候以及为什么要使用隐藏索引
资源:
- 文件:
部分索引
从MongoDB 3.2开始,MongoDB提供了创建部分索引的选项。部分索引提供了稀疏索引功能的超集。如果您使用的是MongoDB 3.2或更高版本,则应优先使用部分索引而不是稀疏索引。
对于考试,您应该知道:
- 如何创建部分索引
- 偏指数行为
- 与稀疏指数比较
- 对部分指数的限制
资源:
混合索引构建
对于考试,您将需要知道:
- 如何在填充的集合上建立索引
- 索引构建如何影响数据库性能
资源:
- 视频:
- 文件:
字符串字段和索引的正则表达式
对于考试,您将需要知道:
- 标准索引与字符串字段的行为方式(与文本索引相比)
- 如何通过在左侧锚定正则表达式来最有效地使用索引
资源:
Replication
在认证考试中,我们将尝试验证您:
- 了解复制的好处
- 了解速度和耐用性之间的权衡
- 了解操作日志工作原理的基础知识,包括幂等和基于语句的复制等概念
- 知道节点(主节点或非主节点)发生故障时会发生什么
介绍
复制是关于可用性和持久性的。一般来说,它不是用于缩放。这就是分片的目的。
- 影片:
- 文件:
节点数
在考试中,您应该知道:
- 创建节点时要使用的选项,例如:
- Arbiter
- Delayed
- votes
- priority
资源:
启动副本集
对于考试,您应该熟悉:
- 如何启动副本集(或启动单个服务器并添加副本集成员)
- 副本集中辅助节点的初始同步
资源:
- 视频:
- 文件:
选举
对于考试,您将需要知道:
- 可以触发选举的事件
- 集合中的优先级,投票,optime和无法访问的服务器将如何影响选举结果
- 哪个节点将在大选中获胜
资源:
故障转移(Failover)
对于考试,您将需要知道:
- 是什么触发故障转移
- 故障转移触发选举
资源:
回滚
对于考试,您将需要知道:
- 哪些事件系列将触发回滚或不触发回滚
- 被回滚的数据会发生什么
资源:
rs.status()
对于认证考试,您应该能够:
- 阅读并了解rs.status()命令的输出
- 知道rs.status()中有什么数据
资源:
- 视频:
- 文件:
副本集重新配置
对于认证考试,您将需要能够:
- 添加和删除副本集成员
- 重新配置副本集
资源:
Oplog
对于认证考试,您需要:
- 了解MongoDB基于语句的复制的本质
- 了解为什么oplog操作必须是幂等的
- 了解操作日志中存储了哪些操作
- 知道oplog存储文档的_id以进行写入
- 计算特定写操作可能有多少个oplog条目(每个受影响的文档一个)
资源:
- 视频:
- 文件
Read Preference
对于考试,您应该知道:
- 对于每个可能的读取关注点,可以查询哪个或哪些节点(也取决于节点的状态)
- 当您的读取首选项允许您读取陈旧数据时
资源:
Write Concern
对于考试,您应该知道:
- 默认写关注
- 如何将写入关注设置为多数或固定数量的节点
- 对于给定的写入关注点,多少个节点将具有数据副本
- 如何确保在确认之前写到日志
资源:
Sharding
在认证考试中,我们将验证您:
- 了解水平扩展以及分片如何在MongoDB中提供此功能
- 知道如何构造一个好的分片密钥,以及选择分片密钥会出什么问题
- 了解负载均衡器的作用
- 了解配置服务器的角色及其工作方式。
介绍
分片与扩展有关。使用分片,您可以将数据分布在多个副本集上,每个副本集都是分片群集中的逻辑“节点”。
请注意,分片和复制解决了不同的问题。复制与数据的持久性和高可用性有关,而分片与读写工作负荷的水平扩展有关。
资源:
分片键
对于考试,您应该知道:
- 从MongoDB 4.2开始,分片键字段值是可变的,并且可以更改,除非分片键字段是不可变的_id字段
- 什么是好的分片键
- 分片密钥不好的原因
- 分片密钥如何在MongoDB中实现基于范围的分片
资源:
- 文件:
- 视频:
块和平衡器(Chunks and the Balancer)
对于考试,您应该知道:
- 如何通过分片键范围定义块
- 如何确定块范围是否包含特定文档
- 当块拆分自动发生时
- 平衡器如何使用块来保持群集平衡
资源:
配置服务器和群集元数据(Config Servers and Cluster Metadata)
对于考试,您应该知道:
- 哪些数据配置服务器包含
- 如何访问配置服务器中的数据
- 配置服务器不可用时会发生什么
- 哪些类型的服务器构成配置服务器
- 当您的配置服务器无法选择主服务器时会发生什么
资源:
预分割数据Pre-Splitting Data
对于考试,您应该知道:
- 如何预分割块
- 为什么要预分割块
- 如何手动分割块
- 如何手动合并块
资源:
分片群集中的查询
对于考试,您应该知道:
- 有针对性的查询与分散收集查询的性能影响
- 给定一个查询和分片配置的描述,该查询是针对性的还是分散性的
- 如何读取.explain()输出以确定哪些碎片受查询影响
- 分片群集中的排序和聚合工作方式
- 什么是mongos节点及其在分片群集中的作用
资源:
选择分片键
对于考试,您应该知道:
- 什么是好的分片键:
- 高基数
- 高选择性
- 非单调递增/递减值
- 这些是什么意思
资源:
- 文件:
- 视频:
Primary Shard
对于考试,您应该知道:
- 主分片包含哪些数据
- 主分片上发生什么读和写操作
- 聚合查询如何使用主分片
资源:
- 文件:
应用程序和服务器管理
对于认证考试,我们将验证您:
- 了解MongoDB日志和服务器日志的机制
- 了解MongoDB的安全性
- 了解监控和性能调整
- 可以确定不同集群体系结构的优缺点
- 能够评估有关基本服务器诊断,维护,备份和灾难恢复的选项。
介绍
虽然定义有些不确定,但是应用程序管理负责处理MongoDB与应用程序的关系。我们在这里考虑的功能包括:有线协议,有线加密和安全性。
服务器管理负责架构设计,维护和调试部署。
日志
对于考试,您应该知道:
- 该杂志的目的
- 该日志被实现为二进制预写日志
- 轴颈如何在发生碰撞时确保耐用性。
- 对于WiredTiger,日记工作方式的基础,例如,将数据刷新到磁盘的频率
资源:
压缩
对于考试,您应该知道:
- 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中定义用户角色和权限
- 还有哪些其他最佳安全实践可用
参考:
资源:
集群架构
对于考试,您应该了解以下常见的部署模式:
- 副本集
- 分片集群
资源:
诊断和调试(Diagnostics and Debugging)
对于考试,您应该知道:
- 查看服务器,副本集和分片群集状态的基本命令
- 如何解释这些命令
- 解决可能出现的简单问题的方法,例如:
- 服务器已关闭
- 配置服务器已关闭
- 长时间运行的查询占用了太多资源
- 所有查询都限于分片群集中的一台服务器
资源:
- 影片:
- 文件:
Maintenance
对于考试,您应该能够:
- 旋转日志文件
- 从分片集群中删除分片
资源:
备份与恢复
对于考试,您将需要知道:
- 单个服务器和群集的备份选项
- 文件系统快照
- mongodump
- 如何从这些备份还原数据
资源:
- 文件:
- 网络研讨会:
Server Tools
对于认证考试,将验证您是否了解:
- 如何使用服务器工具导出和导入数据
- 如何使用服务器工具监视服务器上的基本操作
- 如何使用服务器工具备份和还原数据以及检查备份的数据(仅限DBA)
- 使用哪些工具来处理GridFS文件和分析磁盘I / O(仅DBA)
介绍
通过使用带有--help选项的工具,可以找到大多数测试的信息。
对于开发者考试,您需要了解以下内容:
对于DBA考试,您需要了解以下内容:
导入和导出数据
对于考试,您应该知道如何在MongoDB和以下之间导入/导出数据:
- JSON文件
- CSV文件
资源:
基本服务器监控
对于考试,您应该知道:
- 如何使用mongostat监视MongoDB
- 如何使用mongotop查看服务器活动
- 在mongostat和mongotop中诊断某些类型的性能问题时,哪些字段特别重要
资源:
- 影片:
- 文件:
备份和还原数据(仅DBA)
对于考试,您应该知道:
- 如何使用mongodump和mongorestore保存和还原数据
- 如何在mongodump或mongorestore中包含您的oplog
资源:
注意:
对于正在进行分片事务的4.2+分片群集,mongodump和mongorestore不能成为备份策略的一部分。-参考
高级MongoDB诊断(仅DBA)
对于考试,您应该知道如何使用以下工具:
操纵BLOB(仅DBA)
对于考试,您将需要能够使用mongofiles将数据放入GridFS。
资源:
储存引擎
对于考试,我们将验证您是否知道:
- WiredTiger的并发级别
- WiredTiger可用的压缩算法
- 这些功能对MongoDB性能的影响
介绍
存储引擎是数据库的组件,负责管理如何在内存和磁盘上存储数据。MongoDB支持多个存储引擎,因为不同的引擎对于特定的工作负载性能更好。为您的用例选择合适的存储引擎会严重影响应用程序的性能。MongoDB 3.0引入了可插拔存储引擎。
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中的压缩选项
- WiredTiger支持文档级并发(锁定)
- 默认设置
- WiredTiger缓存的工作方式
- 文件:
- Concurrency FAQ
- Storage FAQ WiredTiger Section
- Index Prefix Compression
- Manage Journaling
- Journaling with WiredTiger Storage Engine
- 影片:
资料档案
这是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的分片的分片群集上运行事务,例如,具有使用内存存储引擎的投票成员的分片。
- 文件:
- 点赞
- 收藏
- 关注作者
评论(0)