您好,登錄后才能下訂單哦!
<div align=center>
</div>
</br>
</br>
Default Bind to Localhost
3.6版本起,默認使用localhost(127.0.0.1),多個ip使用逗號分隔:localhost,198.51.100.1
除去部分2.6 RPM安裝包是本地外,其余版本默認是All interfaces.
</br>
Authentication Restrictions
3.6版本起,新增authenticationRestrictions
參數用于將數據庫用戶連接限制為指定的IP地址,請將authenticationRestrictions參數添加到以下內容:
Commands Methods
createUser db.createUser()
updateUser db.updateUser()
createRole db.createRole()
updateRole db.updateRole()
</br>
其他安全性增強功能
在使用TLS / SSL加密時,添加了opensslCipherConfig
參數來控制OpenSSL密碼。
如果啟用了身份驗證,則只能針對您創建的游標發出getMore。
添加了convertToCapped操作來恢復角色。
</br>
Change Streams
MongoDB 3.6支持使用副本集或分片使用Change Streams。必須是復制協議版本1,且WT存儲引擎。
Change Streams允許應用程序實時了解到數據的更改,而不會增加tail oplog的復雜性和風險。 應用程序可以使用Change Streams來訂閱集合上的所有數據更改,并立即響應這些更改。
您可以使用db.collection.watch()方法從任何3.6系列驅動程序打開更改流。 有關使用的完整說明,請參閱您的首選驅動程序的文檔。
使用Change Streams必須開啟3.6版本特性參數featureCompatibilityVersion?
?see?https://docs.mongodb.com/master/reference/command/setFeatureCompatibilityVersion/#view-fcv
當數據到達集群中majority成員時,Change Streams才會立即通知客戶端響應這些更改。
在開啟權限的集群中,應用只能夠使用Change Streams訪問有權限的庫和集合。
cursor = db.inventory.watch()
document = next(cursor)
</br>
Lookup Full Document for Update Operations
full_document來看完整而非增量的版本
cursor = db.inventory.watch(full_document='updateLookup')
document = next(cursor)
Resume a Change Stream
resume_token = document.get("_id")
cursor = db.inventory.watch(resume_after=resume_token)
document = next(cursor)
</br>
Causal Consistency
需要客戶端使用MongoDB driver 3.6版本,以及需要數據庫開啟3.6特性參數featureCompatibilityVersion
</br>
Retryable Writes
重試只會重試1次,。對于可重試寫入,MongoDB驅動程序會在遇到網絡錯誤或遇到副本集故障轉移時自動重試這些操作,在此期間副本集沒有primary。
限制:
1.只有副本集和shard可用
2.數據庫要求WT或in-memory存儲引擎
3.需要客戶端使用MongoDB driver 3.6版本,以及需要,開啟3.6特性參數featureCompatibilityVersion。
4.writeconcern必須配置,i.e{w:0}不可用。
5.由于重試嘗試只進行一次,可重試功能可以幫助解決暫時的網絡錯誤,但不能解決持久的網絡錯誤。
6.驅動程序將等待serverSelectionTimeoutMS秒,以在重試之前確定新的主節點。 可重試功能不會處理故障轉移期超過serverSelectionTimeoutMS的情況。
注意:如果客戶端應用程序在發出寫入操作后暫時無法響應localLogicalSessionTimeoutMinutes,則當客戶端應用程序開始響應(不重新啟動)時,寫入操作可能會重試并重新應用。
</br>
serverstatus
serverStatus新增?logicalSessionRecordCache項.
</br>
JSON Schema
MongoDB 3.6添加了$ jsonSchema操作符來支持使用JSON Schema進行文檔驗證。 有關詳細信息,請參閱$ jsonSchema。
</br>
Replica Sets
棄用副本集協議版本0(pv0)。
添加了replSetResizeOplog
命令來動態調整
副本集成員的oplog的大小。適用于運行WiredTiger
存儲引擎的實例。
添加了catchUpTakeoverDelayMillis
配置選項,指定節點在發起選舉之前等待的時間,默認30秒。
對于使用協議版本1(pv1)的副本集,如果仲裁人發現與候選人有相同或更高優先級的節點在,他們將在選舉中投票反對票。
添加oplogInitialFindMaxSeconds
參數來調整副本集的成員在數據同步期間其find命令等待多久。默認60s
增加了waitForSecondaryBeforeNoopWriteMS
參數,以指定如果afterClusterTime大于oplog的最近應用時間,則secondary服務器必須等待多長時間。默認10毫秒
</br>
Sharded Clusters
為mongos添加了ShardingTaskExecutorPoolMaxConnecting參數,以控制mongos將連接添加到mongod實例的速率。默認是2,僅對mongos有效
添加了orphanCleanupDelaySecs,它確定從源分片中刪除遷移塊之前的最小延遲。
現在可以對config數據庫中的config.system.sessions集合進行分片。
</br>
Indexes
索引可以覆蓋嵌套文檔中字段的查詢。
如果索引跟蹤到哪個字段使其成為多鍵,則多鍵索引可以覆蓋對非數組鍵的查詢。
創建索引時,不能將*指定為索引的名稱。
</br>
listdatabase
db.adminCommand( { listDatabases: 1, nameOnly: true} ) 添加了nameOnly執行命令時不會加鎖,而不添加的話會請求庫級鎖。
db.adminCommand( { listDatabases: 1, filter: { "name": /^rep/ } } ) filter會過濾想看的數據庫,支持正則表達式
修改了validate命令和db.collection.validate()方法的行為,只有WiredTiger存儲引擎強制執行檢查點,將所有內存中的數據刷新到磁盤,然后驗證磁盤上的數據。
? The?<database>.system.profile?entry for?update?and?delete?contains the entire update/delete document applied to the named collection.
</br>
dropDatabase
dropDatabase命令會等待drop完所有集合的命令傳播到大部分副本集成員后執行。
對于在副本集和分片集群上運行的命令,響應文檔包括operationTime和$ clusterTime。
</br>
Read Concern
新增available,對于非分片集群,“local”和“available”行為是相同的。 對于分片群集,“available”提供了對分區的更大容忍度,但如果分片正在進行塊遷移,則可能會返回孤立文檔。
</br>
</br>
MongoDB3.6的諸多新特性中,限于時間和篇幅原因未能在本文全部闡述,可以看出多種新特性在存儲引擎上的選擇都要求使用WiredTiger
存儲引擎,該存儲引擎也是MongoDB3.0版本起開始支持,MongoDB3.2版本起默認的存儲引擎。多種新特性中,最讓我感到開心的是動態調整oplog大小,這個對于傳統oplog擴容來說,方便了非常之多,停機調整oplog大小的時代即將終結。由于編寫時間也很倉促,文中難免會出現一些錯誤或者不準確的地方,不妥之處懇請讀者批評指正。
喜歡的讀者可以點個贊來個關注,您的贊美和關注是對筆者繼續發文的最大鼓勵與支持!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。