MongoDB 3.6新功能先睹為快!
作者介紹
上海小胖,中國第十五位MONGODB PROFESSIONAL獲得者,資深Python開發、DBA。DevOps踐行者,曾獨立開發Web服務平臺,電商爬蟲系統、運維管理系統,涵蓋資料熱力圖、核心資料監控、伺服器監控系統等。個人部落格地址:https://segmentfault.com/u/shanghaixiaopang。
振奮人心的時刻終於到來!MongoDB 在上市之後,終於釋出了MongoDB 3.6 RC3。今天花了整整一天把Release Notes 看了一遍,把大多數的功能都嘗試了一遍,其中也不乏一些坑。有興趣的小夥伴們可以先睹為快。
今天的文章將為大家帶來一個總體的概覽,並給出我個人的踩坑經驗。
Security
在這裡,能看出MongoDB 是有多重視安全了吧,把它放在第一位。那麼有哪些需要注意的呢?
bind_ip
經過多輪位元比勒索案後(我猜的),在不影響開發效率的情況下,做了一些改變,將bind_ip 預設值修改為了localhost,這也是一個從之前版本升級過來後的坑,因為本人就因為一掃而過,直接看ReplcaSet 去了,導致在這裡停留了半個小時,差點GG了。
那麼如何解決這個問題呢?在啟動時,會有一個關於這個的WARNING。
所以根據提示,我們只需要在啟動的時候加上 –bind_ip_all 或者 在配置檔案中加入net.bindIp: 0.0.0.0 或者 net.bindIpAll: true。
其它安全性方面的加強
- 在使用SSL 時,添加了opensslCipherConfig引數。
- 現在,只要服務端開啟了認證許可權,開發者只能發出一個getMore 的遊標請求。
- 在db.createUser()和 db.updateUser()中添加了authenticationRestrictions 引數,可以用來控制Client端發來的請求源IP以及請求的Server端指定IP。(這個功能一直覺得很有必要出啊!真是出到我心坎裡去了!)
- 添加了convertToCapped的方法用來儲存自定義角色。
Aggregation
$lookup
(https://docs.mongodb.com/master/reference/operator/aggregation/lookup/#lookup-syntax-let-pipeline)
其它聚合操作符:
- $listSessions
- $listLocalSessions
- $currentOp
- $arrayToObject
- $objectToArray
- $mergeObjects
- $dateFromString
- $dateFromParts
- $dateToParts
db.aggregate()
比如:
- $currentOp
- $listLocalSessions
REMOVE
https://docs.mongodb.com/master/reference/aggregation-variables/#variable.REMOVE
Array Update Operator Enhancements
$[]
mongo Shell Changes
聚合
- $listSessions
- $listLocalSessions
JSON Schema
我們可以通過$jsonSchema操作符來對集合的建立進一步的限制,但千萬不要以為,這是MongoDB 向 RDB 的妥協哦。
相反的,MongoDB 保留了它的Flexible特性,通過其中的required 屬性,可以控制哪些欄位是強制要求的,哪些是可以不用保持一致的。
並且還添加了description 屬性,用來對欄位進行註解,這樣其它開發者包括DBAer 就可以一目瞭然了。
Replica Sets
另外我們的OpLog 也可以熱重置了:
- 開始廢棄了 副本集協議版本 0;
- 添加了 replSetResizeOplog 對OpLog 進行熱重置大小,無需重啟。
Sharded Clusters
ShardingTaskExecutorPoolMaxConnecting
https://docs.mongodb.com/master/reference/parameters/#param.ShardingTaskExecutorPoolMaxConnecting
其它加強
- 每個集合都添加了一個類似的UUID
- 不能對索引命名為帶星號*
- 現在如果Multi-Key Index 上有沒有陣列的文件,也可以進行索引了
- adminCommand中的listDatabase 添加了一些引數
https://docs.mongodb.com/master/reference/command/listDatabases/#dbcmd.listDatabases
1)nameOnly
2)filter
- 現在網路傳輸中,支援zlib壓縮協議了
今天的內容就分享到這裡了,下次的分享內容有點糾結了,歡迎大家留言,多提意見。
- 實戰 MongoDB 3.6 ReplcaSet 線上開啟認證模式
- 解讀 MongoDB 3.6 $jsonSchema
原文來自微信公眾號:DBAplus社群