天天看點

MongoDB進階知識

MongoDB進階知識

一.mongodb适合場景:

1.讀寫分離:

MongoDB服務采用三節點副本集的高可用架構,三個資料節點位于不同的實體伺服器上,自動同步資料。Primary和Secondary節點提供服務。兩個節點分别提供獨立域名,配合MongoDB Driver可自行實作讀取壓力配置設定。

2.業務靈活多變:

由于MongoDB采用No-Schema的方式,對于初創型的業務非常适用,免去變更表結構的痛苦。使用者可以将模式固定的結構化資料存儲在RDS中,模式靈活的業務存儲在 MongoDB中,高熱資料存儲在雲資料庫Memcache或雲資料庫Redis中,實作對業務資料高效存取,相應降低成本投入。

3.移動應用:

雲資料庫MongoDB版支援二維空間索引,可以完美的支撐基于位置查詢的移動類APP的業務需求。同時MongoDB動态模式存儲方式非常适合存儲多重系統的異構資料, 滿足移動APP應用的需求。

4.物聯網應用:

雲資料庫MongoDB版性能極高,具備異步資料寫入功能,特定場景下可達到記憶體資料庫的性能,非常适合物聯網高并發寫入的場景。同時MongoDB的map-reduce功能 也可以将大量資料進行聚合分析。

5.核心日志系統:

雲資料庫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 的全局壓縮技術,在提高壓縮率的同時,能大幅提高随機查詢的性能。

為了明天能幸福,今天付出再多也不後悔。