久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MongoDB中參數(shù)限制與閥值的示例分析

148次閱讀
沒有評論

共計(jì) 3416 個(gè)字符,預(yù)計(jì)需要花費(fèi) 9 分鐘才能閱讀完成。

這篇文章主要介紹 MongoDB 中參數(shù)限制與閥值的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

一、BSON 文檔

BSON 文檔尺寸:一個(gè) document 文檔最大尺寸為 16M;大于 16M 的文檔需要存儲(chǔ)在 GridFS 中。

文檔內(nèi)嵌深度:BSON 文檔的結(jié)構(gòu)(tree)深度最大為 100。

二、Namespaces

collection 命名空間:.,最大長度為 120 字節(jié)。這也限定了 database 和 collection 的名字不能太長。

命名空間的個(gè)數(shù):對于 MMAPV1 引擎,個(gè)數(shù)最大為大約為 24000 個(gè),每個(gè) collection 以及 index 都是一個(gè) namespace;對于 wiredTiger 引擎則沒有這個(gè)限制。

namespace 文件的大?。簩τ?MMAPV1 引擎而言,默認(rèn)大小為 16M,可以通過在配置文件中修改。wiredTiger 不受此限制。

三、indexes

index key:每條索引的 key 不得超過 1024 個(gè)字節(jié),如果 index key 的長度超過此值,將會(huì)導(dǎo)致 write 操作失敗。

每個(gè) collection 中索引的個(gè)數(shù)不得超過 64 個(gè)。

索引名稱:我們可以為 index 設(shè)定名稱,最終全名為..$,最長不得超過 128 個(gè)字節(jié)。默認(rèn)情況下為 filed 名稱與 index 類型的組合,我們可以在創(chuàng)建索引時(shí)顯式的指定 index 名字,參見 createIndex() 方法。

組合索引最多能包含 31 個(gè) field。

四、Data

Capped Collection:如果你在創(chuàng)建“Capped”類型的 collection 時(shí)指定了文檔的最大個(gè)數(shù),那么此個(gè)數(shù)不能超過 2 的 32 次方,如果沒有指定最大個(gè)數(shù),則沒有限制。

Database Size:MMAPV1 引擎而言,每個(gè) database 不得持有超過 16000 個(gè)數(shù)據(jù)文件,即單個(gè) database 的總數(shù)據(jù)量最大為 32TB,可以通過設(shè)置“smallFiles”來限定到 8TB。

Data Size:對于 MMAVPV1 引擎而言,單個(gè) mongod 不能管理超過最大虛擬內(nèi)存地址空間的數(shù)據(jù)集,比如 linux(64 位)下每個(gè) mongod 實(shí)例最多可以維護(hù) 64T 數(shù)據(jù)。wiredTiger 引擎沒有此限制。

每個(gè) Database 中 collection 個(gè)數(shù):對于 MMAPV1 引擎而然,每個(gè) database 所能持有的 collections 個(gè)數(shù)取決于 namespace 文件大小(用來保存 namespace)以及每個(gè) collection 中 indexes 的個(gè)數(shù),最終總尺寸不超過 namespace 文件的大?。?6M)。wiredTiger 引擎不受到此限制。

五、Replica Sets

每個(gè) replica set 中最多支持 50 個(gè) members。

replica set 中最多可以有 7 個(gè) voting members。(投票者)

如果沒有顯式的指定 oplog 的尺寸,其最大不會(huì)超過 50G。

六、Sharded Clusters

group 聚合函數(shù),在 sharding 模式下不可用。請使用 mapreduce 或者 aggregate 方法。

Coverd Queries:即查詢條件中的 Fields 必須是 index 的一部分,且返回結(jié)果只包含 index 中的 fields;對于 sharding 集群,如果 query 中不包含 shard key,索引則無法進(jìn)行覆蓋。雖然_id 不是“shard key”,但是如果查詢條件中只包含_id,且返回的結(jié)果中也只需要_id 字段值,則可以使用覆蓋查詢,不過這個(gè)查詢似乎并沒有什么意義(除非是檢測此_id 的 document 是否存在)。

對于已經(jīng)存有數(shù)據(jù)的 collections 開啟 sharding(原來非 sharding),則其最大數(shù)據(jù)不得超過 256G。當(dāng) collection 被 sharding 之后,那么它可以存儲(chǔ)任意多的數(shù)據(jù)。

對于 sharded collection,update、remove 對單條數(shù)據(jù)操作(操作選項(xiàng)為 multi:false 或者 justOne),必須指定 shard key 或者_(dá)id 字段;否則將會(huì)拋出 error。

唯一索引:shards 之間不支持唯一索引,除非這個(gè)“shard key”是唯一索引的最左前綴。比如 collection 的 shard key 為 {“zipcode”:1,”name”: 1},如果你想對 collection 創(chuàng)建唯一索引,那么唯一索引必須將 zipcode 和 name 作為索引的最左前綴,比如:collection.createIndex({“zipcode”:1,”name”:1,”company”:1},{unique:true})。

在 chunk 遷移時(shí)允許的最大文檔個(gè)數(shù):如果一個(gè) chunk 中 documents 的個(gè)數(shù)超過 250000(默認(rèn) chunk 大小為 64M)時(shí),或者 document 個(gè)數(shù)大于 1.3 *(chunk 最大尺寸(有配置參數(shù)決定)/ document 平均尺寸),此 chunk 將無法被“move”(無論是 balancer 還是人工干預(yù)),必須等待 split 之后才能被 move。

七、shard key

shard key 的長度不得超過 512 個(gè)字節(jié)。

“shard key 索引”可以為基于 shard key 的正序索引,或者以 shard key 開頭的組合索引。shard key 索引不能是 multikey 索引(基于數(shù)組的索引)、text 索引或者 geo 索引。

Shard key 是不可變的,無論何時(shí)都不能修改 document 中的 shard key 值。如果需要變更 shard key,則需要手動(dòng)清洗數(shù)據(jù),即全量 dump 原始數(shù)據(jù),然后修改并保存在新的 collection 中。

單調(diào)遞增(遞減)的 shard key 會(huì)限制 insert 的吞吐量;如果_id 是 shard key,需要知道_id 是 ObjectId() 生成,它也是自增值。對于單調(diào)遞增的 shard key,collection 上的所有 insert 操作都會(huì)在一個(gè) shard 節(jié)點(diǎn)上進(jìn)行,那么此 shard 將會(huì)承載 cluster 的全部 insert 操作,因?yàn)閱蝹€(gè) shard 節(jié)點(diǎn)的資源有限,因此整個(gè) cluster 的 insert 量會(huì)因此受限。如果 cluster 主要是 read、update 操作,將不會(huì)有這方面的限制。為了避免這個(gè)問題,可以考慮使用“hashed shard key”或者選擇一個(gè)非單調(diào)遞增 key 作為 shard key。(rang shard key 和 hashed shard key 各有優(yōu)缺點(diǎn),需要根據(jù) query 的情況而定)。

八、Operations

如果 mongodb 不能使用索引排序來獲取 documents,那么參與排序的 documents 尺寸需要小于 32M。

Aggregation Pileline 操作。Pipeline stages 限制在 100M 內(nèi)存,如果 stage 超過此限制將會(huì)發(fā)生錯(cuò)誤,為了能處理較大的數(shù)據(jù)集,請開啟“allowDiskUse”選項(xiàng),即允許 pipeline stages 將額外的數(shù)據(jù)寫入臨時(shí)文件。

九、命名規(guī)則

database 的命名區(qū)分大小寫。

database 名稱中不要包含:/ .‘$* :|?

database 名稱長度不能超過 64 個(gè)字符。

collection 名稱可以以“_”或者字母字符開頭,但是不能包含”$”符號,不能為空字符或者 null,不能以“system.”開頭,因?yàn)檫@是系統(tǒng)保留字。

document 字段名不能包含“.”或者 null,且不能以“$”開頭,因?yàn)?$ 是一個(gè)“引用符號”。

最后記錄下 json 嵌套中含有列表的查詢方法,樣例數(shù)據(jù):

{  _id  : ObjectId( 5c6cc376a589c200018f7312),
  id  :  9472 ,
  data  : {
  name  :  測試 ,
  publish_date  :  2009-05-15 ,
  authors  : [ 
 {
  author_id  : 3053,
  author_name  :  測試數(shù)據(jù) 
 }
 ],
 }
}

我要查詢 authors 中的 author_id,query 可以這樣寫:

db.getCollection().find({ data.authors.0.author_id : 3053})

用 0 來代表第一個(gè)索引,點(diǎn)代表嵌套結(jié)構(gòu)。但是 spark mongo 中是不能這樣導(dǎo)入的,需要使用別的方法。

以上是“MongoDB 中參數(shù)限制與閥值的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道!

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-08-03發(fā)表,共計(jì)3416字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 南川市| 漳平市| 志丹县| 旺苍县| 来安县| 集贤县| 贡山| 航空| 晋州市| 潼南县| 沽源县| 淅川县| 疏附县| 鹤壁市| 天峻县| 清镇市| 滦平县| 宜兴市| 红安县| 鄯善县| 杭锦旗| 阳山县| 台东市| 讷河市| 卫辉市| 新泰市| 广州市| 高要市| 金塔县| 个旧市| 深水埗区| 涞水县| 固阳县| 泾阳县| 景宁| 新宁县| 北票市| 达孜县| 南安市| 清原| 南漳县|