標籤:內容 app 分析 日誌 cache plog 情境 二級索引 引擎
MongoDB進階知識
一.mongodb適合情境:
1.讀寫分離:
MongoDB服務採用三節點複本集的高可用架構,三個資料節點位於不同的物理伺服器上,自動同步資料。Primary和Secondary節點提供服務。兩個節點分別提供獨立網域名稱,配合MongoDB Driver可自行實現讀取壓力分配。
2.業務靈活多變:
由於MongoDB採用No-Schema的方式,對於初創型的業務非常適用,免去變更表結構的痛苦。使用者可以將模式固定的結構化資料存放區在RDS中,模式靈活的業務儲存在 MongoDB中,高熱資料存放區在ApsaraDB for Memcache或ApsaraDB for Redis中,實現對業務資料高效存取,相應降低成本投入。
3.行動裝置 App:
ApsaraDB for MongoDB支援二維空間索引,可以完美的支撐基於位置查詢的移動類APP的業務需求。同時MongoDB動態模式儲存方式非常適合儲存多重系統的異構資料, 滿足移動APP應用的需求。
4.物聯網應用:
ApsaraDB for MongoDB效能極高,具備非同步資料寫入功能,特定情境下可達到記憶體資料庫的效能,非常適合物聯網高並發寫入的情境。同時MongoDB的map-reduce功能 也可以將大量資料進行彙總分析。
5.核心日誌系統:
ApsaraDB for MongoDB在非同步落盤情境下可提供極高的插入效能,具備記憶體資料庫的處理能力。MongoDB提供二級索引功能滿足動態查詢的需求,並且可以利用map- reduce的彙總架構進行多維度資料分析。
二.mongodb v3.4有那些更新:
1.更快的複製集全量同步:
在拷貝資料的時候,同時建立所有的索引(以前版本只有_id索引是在同步資料時建立的),拷貝資料的階段,secondary 不斷拉取新的 oplog,確保 secondary 的 local 資料庫有足夠的空間來儲存這些臨時資料。
2.更高效的負載平衡:
MongoDB 3.2及以前版本裡,分區叢集的負載平衡由mongos負責,多個 mongos 會搶一個分布式鎖,搶鎖成功的 mongos 會對執行負載平衡任務,在shard間遷移chunk;在3.4版本裡,負載平衡將由config server的 primary 節點負責,負載平衡並發度及效率上會有大的提升。
3.更豐富的Aggregation操作:
MongoDB 在3.4版本增加了大量的 aggregation 操作符,資料分析功能更加強大,如bucket 能方便的對資料進行分類;$grahpLookup 在 3.2的$lookup 的基礎上更進一步,能支援更複雜的關係運算;$addFields使得文檔操作更豐富,比如將某些欄位求和儲存為新的欄位。
4.支援 Sharding Zones:
分區叢集裡引入了 Zone 的概念,主要取代現在的 tag-aware sharding 機制,能將某些資料分配到指定的一個或多個 shard 上,這個特性將極大的方便 sharding cluster 的跨機房部署。
5.支援 Collation:
MongoDB 3.4 開始支援 collation,在之前的版本裡,文檔裡儲存的字串,不論是中文還是英文,不論大小寫,一律按位元組來對比,引入 collation 後,支援對字串的內容進行解讀,可以按使用的 locale 進行對比,也支援對比時忽略大小寫。
6.支援唯讀視圖(Read-only views):
MongoDB 3.4裡增加了對唯讀視圖的支援,視圖將集合裡滿足某個查詢條件的資料虛擬成一個特殊的集合,使用者可以在特殊的集合上做進一步的查詢操作。
7.引擎更新換代:
WiredTiger儲存引擎:基於 btree 結構組織資料,相比 MongoDB早期的 mmapv1 存續引擎效能上有非常大的提升,而且支援資料壓縮,儲存成本更低。
RocksDB儲存引擎:是基於 LSM tree 結構組織資料,其針對寫入做了最佳化,將隨機寫入轉換成了順序寫入,能保證持續高效的資料寫入。
TerarkDB儲存引擎:藉助 TerarkDB 的全域壓縮技術,在提高壓縮率的同時,能大幅提高隨機查詢的效能。
DataBase MongoDB進階知識