當前位置:
首頁 > 最新 > 談談工作中使用mongo遇到的坑

談談工作中使用mongo遇到的坑

使用mongo也一年多了,這一年裡該踩的雷踩了,不該踩的也踩了,下面記錄了這一年以來的坑坑窪窪。

1:安全

安全,安全,安全, 重要的事情說三遍,網路安全一定要重視,之前筆者把博客的內容存儲在mongo里,突然有一天,發現文章都沒有了,後面發現,是筆者直接把埠暴露到外網,沒有加密碼訪問,沒加防火牆,沒設置白名單規則,所以安全這塊一定要特別注意。

2:mongo沒有事務

一次參看線上mongo 的時候偶然發現,mongo中有很多臟數據,因為那個collection是我們從mysql而且是增量同步過去的,發現兩邊的數據不一致,後面跟蹤發現,是我們程序操作這張表的時候,有做事務處理,一些數據在關係型資料庫回滾了,而mongo 並不支持事務。所以大家使用的時候一定要考慮清楚,權衡利弊。不然你需要用非常醜陋的方法,就是要記錄每個創建和更新的內容。

3:忘建索引

4:守護進程啟動

就是在啟動的時候加--fork 參數, 公司最早沒有直接買mongo服務,而是在ecs上直接搭建mongoDb,操作頻繁的時候,發現mongo經常退出,後台日誌分析得出主要是由於終端退出導致非守護經常其他的mongod 也跟著退出。

5:啊里雲服務不支持副本集添加

隱藏坑,也不算是問題,這邊記錄一下。

收集一些網上小夥伴遇到的坑

1:MongoDB 資料庫級鎖

MongoDB的鎖機制和一般關係資料庫如 MySQL(InnoDB), Oracle 有很大的差異,InnoDB 和 Oracle 能提供行級粒度鎖,而 MongoDB 只能提供 庫級粒度鎖,這意味著當 MongoDB 一個寫鎖處於佔用狀態時,其它的讀寫操作都得乾等。

2: 建索引導致資料庫阻塞,

上面提到了 MongoDB 庫級鎖的問題,建索引就是一個容易引起長時間寫鎖的問題,MongoDB 在前台建索引時需要佔用一個寫鎖(而且不會臨時放棄),如果集合的數據量很大,建索引通常要花比較長時間,特別容易引起問題。

解決的方法很簡單,MongoDB 提供了兩種建索引的訪問,一種是 background 方式,不需要長時間佔用寫鎖,另一種是非 background 方式,需要長時間佔用鎖。使用 background 方式就可以解決問題。 例如,為超大表 posts 建立索引, 千萬不用使用

3:不要在和資料庫直接相關的model裡面使用繼承,盡量避免在model裡面使用Array類型的欄位

什麼意思呢?就是 modelB < model A ,而他們都是mongo裡面的 document,為什麼不能這樣? 因為mongoid的內部實現其實只會創建一張表就是documentA, 然後在 documentA 裡面用一個 _type 欄位來標識 documentB,這樣當你查詢 modelB 時,內部會生成一個查詢到 documentA 的語句,那個查詢就是用的 _type in [xxxx] 類似這樣的語句,你看又是 in 操作。如果這種情況你是在後期才發現的,你真是回天無術,想死的心都有

4: 只返回你想要的列,盡量一次返回所有需要的數據,避免GET_MORE,避免游標操作

覺得這條資訊有幫助?請轉發給更多人

關注瘋狂架構師大家一起聊聊架構

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 瘋狂架構師 的精彩文章:

記一次伺服器承受DDos攻擊

TAG:瘋狂架構師 |

您可能感興趣

不懂Networking,還想找到好工作?
誰引進了倒格子?Laue,Bragg,Bragg及Ewald的工作
如何拿下Gooligan(一):對Gooligan起源和工作原理的初步分析
git-flow 的工作流程
你知道Networking有多重要嗎?喝咖啡都能喝出工作offer!
最重要的工作習慣-寫To do list
找到家庭和工作的balance!昆凌工作帶娃兩不誤
Evolve studio Turtle Rock不再在遊戲中工作
谷歌研究員Francois Chollet:有良知的AI研究人員不應該在Facebook工作
致工作:You are a liability
使用 Jira Software 搜索加速 DevOps 工作流程
python是什麼語言?現在學Python好找工作嗎?
Insel工作室嫌刷Steam好評導致旗下所有遊戲被下架
offer狂人為何找不到工作
汝工作室Bailey Brooke
Elmwood收購VR-AR工作室Framework Creative
Justine Greening MP離開倫敦的ITV工作室
OneNote使用心得-工作篇
因為喜歡Red Velvet的Irene進了SM工作,結果卻成為了他的經紀人!
NYU聯合Google Brain提出結合工作記憶的視覺推理架構和數據集