全部產品
Search
文件中心

ApsaraDB for MongoDB:MongoDB 6.0新特性概覽

更新時間:Jun 19, 2024

本文介紹ApsaraDB for MongoDB 6.0版本推出的新特性和最佳化項。

預覽

說明

MongoDB 6.0的更多新特性以及最佳化項,請參見MongoDB 6.0 release-notes

可查詢加密(Queryable Encryption)

重要

可查詢加密功能目前是預覽(Preview)版本,不建議直接在生產環境使用。預覽(Preview)版本的更多資訊,請參見MongoDB Releases Queryable Encryption Preview

MongoDB 6.0新推出可查詢加密功能,允許使用者從用戶端加密敏感性資料,將其作為完全隨機的加密資料儲存在資料庫伺服器端,並對加密資料進行豐富的查詢。

可查詢加密只允許在用戶端查看敏感性資料的明文,在查詢到達伺服器端時會同時包含從KMS擷取的加密金鑰,然後在伺服器端以密文進行查詢並返回,最後在用戶端利用密鑰解密後以明文呈現。

可查詢加密的特點如下:

  • 從用戶端加密敏感性資料,只有用戶端擁有加密金鑰。

  • 資料在整個生命週期(傳輸、儲存、使用、審計和備份)中都是加密的。

  • 用戶端可以直接對加密資料進行豐富的查詢(包括等值匹配、範圍、前尾碼或子字串等查詢類型)。

  • 強大的資料隱私保護能力,只有能訪問用戶端的應用程式和加密金鑰的授權使用者才能看到明文資料。

  • 更輕量化的應用程式開發,涉及敏感性資料的開發人員無需考慮太多安全、合規的事情,資料庫會直接提供綜合加密解決方案。

  • 降低敏感性資料上雲的安全顧慮。

說明

可查詢加密的更多資訊,請參見Introducing Queryable Encryption

叢集同步(Cluster-to-Cluster Sync)

無論是資料的同構同步(Mongo-to-Mongo)還是異構同步(Others-to-Mongo & Mongo-to-Others)都是MongoDB生態中的一部分,開源MongoDB推出了多種工具,比如mongoimport、mongoexport、mongodump和mongorestore等,但是這些工具並沒有很好的規劃資料同步。

MongoDB 6.0推出了新的同步工具mongosync,它能支援跨執行個體資料同步(兩個MongoDB執行個體間連續且單向的資料同步)。使用者還可以即時控制和監控整個同步過程,按需啟動、停止、恢複甚至反轉同步。

說明

mongosync工具的更多資訊,請參見mongosync

時序集合(Time Series Collection)

時序集合是MongoDB 5.0版本發布的功能,主要應用於時序資料分析型情境。從5.0版本開始,時序集合的功能更新記錄如下:

版本

更新說明

MongoDB 5.0

首次發布。

MongoDB 5.1

引入分區(Sharding),以支援更好地分布資料。

MongoDB 5.2

引入柱狀壓縮(Columnar Compression),以改善儲存空間佔用。

MongoDB 5.3

引入密集化和間隙填充(Densification and Gap-Filling),以支援部分資料點缺失情況下的時序分析。

MongoDB 6.0

分別從索引、查詢以及排序多個方面增強了時序集合。

  • 引入二級和複合索引,以改善讀取效能。

  • 引入針對時空資料的地理位置索引(Geo-Indexing),將地理資訊添加到時序資料,有助於更好地分析涉及距離和位置的情境。

    情境樣本:跟蹤夏日冷鏈運輸車的溫度變化情況、監測特定航線上的貨運船燃料消耗。

  • 最佳化對時序資料的last point查詢,不再需要掃描整個集合後才能查詢到最後一個資料點。

  • 最佳化對時序資料的排序,通過時間以及中繼資料欄位上的聚簇索引(Clustered Index)和二級索引(Secondary Index)更高效地完成排序操作。

變更流(Change Streams)

變更流是MongoDB 3.6版本發布的用於支援CDC(Change Data Capture)的核心功能之一。變更流可以讓業務更容易地即時擷取資料庫的變更,並基於此構建各種事件驅動型的應用或系統,不再需要依賴其他的資料同步中介軟體。

變更流的功能更新記錄如下:

版本

更新說明

MongoDB 3.6

  • 首次發布。

  • 僅支援訂閱集合(Collection)維度。

  • events類型有限。

  • 支援故障恢複。

  • 支援查看變更後的視圖(Post-image)。

MongoDB 4.0

  • 支援訂閱庫(Database)以及執行個體維度。

  • 支援dropdropDatabaserename事件。

  • resumeToken格式從BinData變更為Hex

MongoDB 4.2

  • 支援$set$unset等更多pipeline操作符。

  • 新增startAfter選項,用於按時間點啟動監聽功能。

  • 修改事件的_id欄位,變更流將拋出異常。

  • 移除對{readConcern: majority}的依賴。

MongoDB 5.1

  • 提升部分彙總架構下stage的執行效率。

  • 提升資源使用率。

MongoDB 5.3

支援在Chunk遷移期間過濾對孤立文檔的更新。

MongoDB 6.0

  • 支援查看變更前的視圖(Pre-image)。

    說明

    MongoDB 6.0之前的版本僅支援查看變更後的視圖,從MongoDB 6.0版本開始,支援查看變更前後的視圖。前後視圖的更多資訊,請參見Change Streams with Document Pre- and Post-Images

  • 支援createcreateIndexesmodifyshardCollection等DDL語句,更多資訊,請參見Change Events

  • Change Events新增wallTime欄位,時間戳記支援多種轉換和展示運算元(包括$toDate$tsSecondstsIncrement)以方便業務消費。

彙總(Aggregation)

彙總功能允許使用者處理多個文檔並返回計算結果。通過將多個操作符組合到彙總管道中,使用者可以構建出足夠複雜的資料處理管道以提取資料並進行分析。MongoDB 6.0在原有彙總功能的基礎上,推出了如下新特性以及最佳化項:

  • 分區叢集執行個體支援$lookup$graphLookup

  • 改進$lookup對JOINS的支援。

  • 改進$graphLookup對圖遍曆的支援。

  • 提升$lookup效能,部分情境中效能提升可達百倍。

說明

$lookup$graphLookup的更多資訊,請參見$lookup (aggregation)$graphLookup (aggregation)

查詢(Query)

新增$maxN$topN$minN$bottomN$lastN$sortArray等操作符。通過操作符可以將更多的計算從業務層下沉到資料庫中,使得業務層更加輕量化。

說明

操作符的更多資訊,請參見Aggregation Pipeline Operators

彈性

MongoDB 6.0在原有彈性的基礎上,推出了如下新特性以及最佳化項:

  • 將資料區塊(Chunk)規格的預設值從64 MB調整為128 MB,有效降低了資料移轉頻率以及網路和路由層的開銷。

  • 支援configureCollectionBalancing命令,此命令支援的功能如下:

    • 支援為不同的分區表設定不同的資料區塊規格。

      樣本:資料規模特別大的分區表,將資料區塊規格調整到256 MB。資料規模相對較小但希望在分區上分布更均勻的分區表,將資料區塊規格調整到64 MB或32 MB。

    • 支援自動整理分區集合的磁碟空間片段。

      您可以通過configureCollectionBalancing命令設定自動整理磁碟片段,設定自動整理後您無需再主動使用compact命令來整理磁碟空間片段,即可有效控制磁碟空間使用率,

    說明

    configureCollectionBalancing命令的更多資訊,請參見configureCollectionBalancing

安全性

MongoDB 6.0在原有安全性的基礎上,對用戶端欄位級加密(CSFLE, Client-Side Field-Level Encryption)功能進行了最佳化。CSFLE將支援任何符合密鑰管理互連協議(KMIP,Key Management Interoperability Protocol)的密鑰管理供應商,即除了基於KeyFile的本地密鑰管理外,MongoDB支援通過KMIP與第三方密鑰管理裝置整合,為使用者提供更安全的保障。

說明

用戶端欄位級加密功能被廣泛應用于敏感資料的管理中,尤其是資料移轉的情境。