虛擬存儲涉及到的相關基礎知識總結 1
1169
2025-04-02
參考: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中的文本索引
文件:
文字索引
創建文本索引
文字搜尋范例
哈希索引
對于考試,您將需要知道:
如何創建哈希索引
如何創建復合哈希索引
資源:
文件:
散列索引
創建復合哈希索引
通配符索引
對于考試,您應該知道:
如何創建通配符索引
資源:
視頻:
通配符索引:第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小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。