mongo開發標準(待完善)

MongoDB開發規範

1.mongoDB庫的設計
mongodb數據庫命名規範:db_xxxx
禁止使用任何 " _ "(下劃線)外的特殊字符
禁止使用數字打頭的庫名
數據庫名最多爲64字符
命名不能與系統庫相同(admin、local、config)

2.mongoDB集合的設計
mongodb集合命名規範:t_xxxx
集合名全部小寫
禁止使用任何 " _ "(下劃線) 以外的特殊字符
禁止使用數字打頭的集合名稱
集合名稱最多爲 64字符

3.mongoDB文檔的設計
文檔中的 key 禁止使用任何 " _ "(下劃線)以外的特殊字符
禁止使用 _id ,如:向 _id 中寫入自定義內容中寫入自定義內容
儘量不要讓數組字段成爲查詢條件
儘量存放統一了大小寫後的數據
單個文檔不超過16M,嵌套不能超過100層;若單個文檔超過16M,建議s使用GridFS

4.mongoDB索引的設計
儘量遵循最左前綴原則
索引名稱長度不要超過 128 字符
儘可能的將單列索引併入組合索引以降低數量
多列索引儘量不要超過5個字段
單個集合索引數量適當控制至5個
避免對數組字段創建索引
TTL索引如果是複合索引則過期將失效
使用background模式批量創建索引

5.分佈式集羣限制
分片key最大長度不能超過512字節
分片key索引類型不能是text、數據索引和geo索引
分片集合單個文檔的條件操作必須帶分片key或者_id
分片key及其值不允許修改
分片集合不允許創建(不含分片key前綴)唯一性索引


6.其他建議
查詢、更新與刪除必須帶條件並且條件字段具有合適的索引(最好是以_id字段爲條件)
update必須使用$set否則會重置文檔
find和aggregate操作建議按需返回對應的字段
全集合掃描排序的內存限制32M,故需要爲排序添加索引,控制排序的數量
aggregate管道操作的內存限制100MB,故需要控制計算數據量和調整allowDiskUse允許磁盤排序
數據元素添加儘量使用$push並且避免對中間元素進行更新
建議實際業務每次批量更新控制在1000~5000
默認情況下bulkWrite操作有序一般建議設置false
爲避免批量操作導致複製延遲可每批適當sleep
開發不能在業務裏面建立索引,加索引需要聯繫dba

7.驅動配置
對於只做查詢的程序連接(如數據分析)讀寫優先級read_preference必須設置成secondary

 

8.索引原則

1. 每個查詢原則上都需要創建對應索引
2. 單個索引設計應考慮滿足儘量多的查詢
3. 索引字段選擇及順序需要考慮查詢覆蓋率及選擇性
4. 對於更新極其頻繁的字段上創建需慎重考慮
5. 對於數組索引需要慎重考慮未來元素個數
6. 對於超長字符串類型字段上慎用B-tree索引
7. 對於重度字符串搜索可考慮第三方解決方案
8. 併發更新較高的單個集合上不適宜創建過多索引

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章