MongoDB 4.0 RC 版本強勢登陸
MongoDB 因其靈活的文檔模型、可擴展分布式設計廣受開發者喜愛,在此基礎上,MongoDB 4.0 推出了更強大的功能支持,目前4.0第一個RC版本已經發布,本文將介紹 MongoDB 4.0 核心的一些新特性。
多文檔事務(Multi-Document ACID Transaction)
結合 MongoDB 文檔模型內嵌數組、文檔的支持,目前的單文檔事務能滿足絕大部分開發者的需求。為了讓 MongoDB 能適應更多的應用場景,讓開發變得更簡單,MongoDB 4.0 將支持復制集內部跨一或多個集合的多文檔事務,保證針對多個文檔的更新的原子性。而在未來的 MongoDB 4.2 版本,還會支持分片集群的分布式事務。
MongoDB 的事務接口非常簡單,開發者只需要將「需要保證原子性的更新序列」放到一個 session 的 開始事務
與提交事務
之間即可。
如下是 Python API 使用事務的例子
with client.start_session() as s: s.start_transaction(): try: collection.insert_one(doc1, session=s) collection.insert_one(doc2, session=s) except: s.abort_transaction() raise s.commit_transaction()
如下是 Java API 使用事務的例子
try (ClientSession clientSession = client.startSession()) { clientSession.startTransaction(); try { collection.insertOne(clientSession, docOne); collection.insertOne(clientSession, docTwo); clientSession.commitTransaction(); } catch (Exception e) { clientSession.abortTransaction(); } }
事務是 MongoDB 開發團隊經過3年多努力的結果,從3.0版本引入 WiredTiger 、到3.2版本支持 ReadConcern、3.6 支持 Causal Consistency 等很多工作都是在為事務功能做準備,最終在4.0版本將整個事務的API提供給用戶,幫助用戶更好的構建應用。
聚合類型轉換( Aggregation Pipeline Type Conversions)
靈活的文檔模型是 MongoDB 相比傳統關系型數據庫的一大優勢,應用開發者無需為存儲的數據預先定義結構(或者模式),這使得開發者能快速的應對開發需求的叠代;在靈活的同時,MongoDB 還提供了 schema validation
功能,使得開發者可以根據需要定義文檔數據的模型。
MongoDB 的文檔允許用戶靈活的寫入各種類型的數據字段,這給消費數據帶了一定的復雜性,比如一些數據分析的場景,應用通常希望某個字段的數據擁有統一的類型,以方便數據處理。
MongoDB 4.0 引入了新的聚合操作符 $convert
, 允許用戶在 aggregation pipeline
裏將文檔的字段轉換成統一的類型輸出,使得數據消費端,比如 MongoDB BI 工具、Spark Connectors 以及其他 ETL 工具能更簡單的處理 MongoDB 數據。
非阻塞的備節點讀(Non-Blocking Secondary Reads)
為了確保備節點上的讀與主節點保持相同的因果一致性語義,MongoDB 備節點在批量應用 oplog 的時候會阻塞讀請求,這使得在高寫入負載下,備節點上讀的平均延時通常比主節點更高。
借助事務功能中 storage engine timestamps and snapshots
的實現,引擎層可以很容易的實現「指定時間戳快照讀取的功能」,使得備節點上的讀請求無需阻塞等待就能讀到一致時間點的數據。這個特性將極大的提升 MongoDB 讀擴展的能力。
遷移速度提升40%(40% Faster Data Migrations)
應用在不斷演進過程中,其負載特性也在不斷發生變化,這就要求數據庫具備擴展的能力,及時適應應用的負載變化。MongoDB 分片集群支持實時的添加、移除shard 節點,並能在各個 shard 之間自動遷移數據來均衡負載。
MongoDB 4.0 支持在遷移數據的過程中,並發的讀取(源端)和寫入(目標端),使得遷移的性能提升了約 40%, 使得新添加的節點能更快的承載業務壓力,讓分片集群發揮最佳效果。
擴展修改訂閱(Extensions to Change Streams)
MongoDB 3.6 推出了修改訂閱( Change Streams)的功能,使得用戶能實時的獲取數據的修改,同時通過 Change Streams 還能很方便的實現多數據中心跨復制集的數據同步。MongoDB 4.0 進一步擴展 Change Streams 功能,可以實現分片集群維度的修改訂閱。
開始體驗 MongoDB 4.0 RC
猛擊這裏體驗MongoDB 4.0 RC
查看Release Notes for MongoDB 4.0 Release Candidate
原文鏈接
MongoDB 4.0 RC 版本強勢登陸