天天看點

mongodb的限制

  • 知道一個産品的限制所在,就可以更好的使用它。

    目前已知的mongodb限制如下:

  • BSON Document Size:最大為16M
  • 資料庫:大小寫敏感、資料庫名稱必須少于64個字元
  • 集合名稱不能包含如下資訊:

    contain the $.

    be an empty string (e.g. "").

    contain the null character.

    begin with the system. prefix. (Reserved for internal use.)

    域名不能包含. 或者null字元且不能以$開頭

  • 單個集合的索引數量不能超過64個,索引鍵長度(索引隊列的大小)必須小于1k,查詢不能既使用文本又使用地理空間索引。
  • 索引名稱長度不能大于128個字元
  • 複合索引中索引域不能超過31個
  • 2dsphere索引隻能用于插入或者查詢Geometries資料
  • 地理空間和多鍵都不能覆寫查詢
  • 建立固定大小集合時,如果指定了max參數,則一個固定大小的集合不能超過2的32次方個文檔
  • 副本集的成員數不能超過50個,副本集的投票節點數不能超過7個,如果沒有指定oplog的大小則mongodb建立的oplog大小不會大于50G
  • group操作(可以使用aggregate替代)和不以shard key為字首的唯一索引均無法在shading環境中使用,如果索引沒有包含shard key當一個查詢在mongos上運作時将無法使用該索引,mongodb不支援跨越shard節點的唯一索引除非該索引以所有shard key作為字首,shard key不能超過512個位元組,shard key不能是多鍵、文本、地理空間索引。
  • 如果在chunk中的集合數量超過250000或者超過平均文檔大小超過 chunk size指定大小的1.3倍則不會發生遷移動作。
  • 1個shard key不能超過512個位元組,shard key的索引類型不能是文本,多鍵,地理空間索引。而且單調遞增/遞減的shard key可能會引發shard cluster的插入性能下降,可以采用哈希或者選擇一個不是單調遞增/遞減的key作為shard key
  • 一旦shard 了一個集合,shard key和shard key的值都是不可變的。
  • 如果mongodb無法使用索引來sort結果集,則會在記憶體中完成排序,但消耗的記憶體必須小于32M
  • pipeline操作有100M的記憶體使用限制,超過限制mongodb會報錯,如果需要處理大資料集,使用allowdiskuse選項。
  • 2d Geospatial 查詢不能使用$or操作符
  • 對于球面查詢,建議使用2dsphere索引
  • 對于地理坐标而言,有效的經度值應該是在-180--180,有效的緯度值應該是在-90--90