天天看點

【MongoDB訓練營】第七課:MongoDB最佳實踐 答疑彙總【内含前6天課程答疑連結】

1.請問關于MongoDB 5分片環境,每個分片的架構是主從arbiter(交叉部署), 把其中的部分片的一個副本節點遷移到新機器上,現在每個分片加入一個資料節點,以4個節點的方式運作(主從從arbiter), 變更當天,再切換剔除其中一個節點,這樣的方案可行嗎?變更當天需要登入mongos更新分片資訊嗎?期待老師的答複

A:可以的,添加新節點之後會自動進行資料同步,待資料同步完成,将老機器上的節點通過rs.remove()移除就可以了。為分片增加節點不需要更新mongos資訊,這個不涉及到分片路由資訊的變動。

2.單個分片的副本集以4節點運作可以嗎

A: 如果本身已經有三個資料節點了(一個primary和兩個secondary),不建議再加一個arbiter,保持投票節點為奇數個,防止腦裂場景

3.mongodb和es應用場景有何差別

MongoDB的适用場景TJ老師視訊中也講到了,ES的主要場景是全文檢索、搜尋、時序/日志分析等,還是有很多差別的

4.mongodb的周邊生态建設太緩慢,比如sharding的一緻性備份之類的,好像到目前還沒有特别完善的方案。您怎麼看mingodb的周邊生态工具建設

A: 在MongoDB周邊生态工具上,阿裡雲提供了DMS(可視化管理工具)、DBS(資料庫備份)、DAS(資料庫自治)、DTS(資料遷移)等服務,有興趣可以關注。阿裡雲MongoDB提供了sharding的一緻性備份方案,并且支援恢複到任意時間點,這個基于開源産品的話目前應該确實并沒有比較好的方案,存在一些技術難點。

5.實時資料分析,有個場景,用oracle做的,sql比較能支援複雜條件語句查詢分析,但是累計下來資料量越來越大,隻能做結轉,現在想遷移到用mongo做,但是感覺mongodb貌似不太支援複雜條件的sql查詢,有什麼好的處理辦法嗎?謝謝老師

A:這個要結合資料模型和業務查詢需求來綜合看,如果主要的查詢分析請求需要涉及多表資料的關聯查詢,不建議用,除此之外,MongoDB是能滿足很多複雜查詢的,這個通過MongoDB提供aggregate的各種操作符,可以實作很強大的查詢分析能力。

6.在mongodb記憶體放圖檔與視訊,能講一下實際的使用情況嗎?

A: 這個可能需要看一下具體的case來看

7.這麼大量的資料,memory 要求是不是特别高呢

A:MongoDB的分片擴充能力很好,對于大量資料,首先是可以通過sharding叢集架構來解決資料分布問題,資料分攤到多個節點/機器來存儲。通常來說,MongoDB使用的WiredTiger引擎的cache size與每個shard節點的磁盤資料量是有一個比例關系的。

8.mongo隻用來記錄api層的業務資料,提供業務單據的詳情查詢,後期的報表用es或者關系型資料庫做為資料源,這種場景下,mongo是否需要做分片?從mongo将業務資料轉成es需要的統計資料,這段處理可以用哪些方法實作呢?

A:MongoDB是否要做分片,主要還是目前資料量已經未來業務的增長情況,如果預估資料量會比較大、資料增長較快,則優先使用分片。将資料從MongoDB同步到ES,也有很多的方案,比如mongodb-connector、ES提供的插件都可以做。

【内含前6天課程答疑彙總】

Day1 走進MongoDB

https://developer.aliyun.com/article/780279

Day2 MongoDB聚合架構

https://developer.aliyun.com/article/780474

Day3 複制集使用及原理介紹

https://developer.aliyun.com/article/780482

Day4 分片叢集的使用及原理介紹

https://developer.aliyun.com/article/780552

Day5 ChangeStream使用及原理介紹

https://developer.aliyun.com/article/780590

Day6 事務功能使用及原理介紹

https://developer.aliyun.com/article/780594