這篇文章主要介紹MongoDB中參數(shù)限制與閥值的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),來鳳企業(yè)網(wǎng)站建設(shè),來鳳品牌網(wǎng)站建設(shè),網(wǎng)站定制,來鳳網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,來鳳網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。一、BSON文檔
BSON文檔尺寸:一個document文檔大尺寸為16M;大于16M的文檔需要存儲在GridFS中。
文檔內(nèi)嵌深度:BSON文檔的結(jié)構(gòu)(tree)深度大為100。
二、Namespaces
collection命名空間:.,大長度為120字節(jié)。這也限定了database和collection的名字不能太長。
命名空間的個數(shù):對于MMAPV1引擎,個數(shù)大為大約為24000個,每個collection以及index都是一個namespace;對于wiredTiger引擎則沒有這個限制。
namespace文件的大?。簩τ贛MAPV1引擎而言,默認大小為16M,可以通過在配置文件中修改。wiredTiger不受此限制。
三、indexes
index key:每條索引的key不得超過1024個字節(jié),如果index key的長度超過此值,將會導(dǎo)致write操作失敗。
每個collection中索引的個數(shù)不得超過64個。
索引名稱:我們可以為index設(shè)定名稱,最終全名為..$,最長不得超過128個字節(jié)。默認情況下為filed名稱與index類型的組合,我們可以在創(chuàng)建索引時顯式的指定index名字,參見createIndex()方法。
組合索引最多能包含31個field。
四、Data
Capped Collection:如果你在創(chuàng)建“Capped”類型的collection時指定了文檔的大個數(shù),那么此個數(shù)不能超過2的32次方,如果沒有指定大個數(shù),則沒有限制。
Database Size:MMAPV1引擎而言,每個database不得持有超過16000個數(shù)據(jù)文件,即單個database的總數(shù)據(jù)量大為32TB,可以通過設(shè)置“smallFiles”來限定到8TB。
Data Size:對于MMAVPV1引擎而言,單個mongod不能管理超過大虛擬內(nèi)存地址空間的數(shù)據(jù)集,比如linux(64位)下每個mongod實例最多可以維護64T數(shù)據(jù)。wiredTiger引擎沒有此限制。
每個Database中collection個數(shù):對于MMAPV1引擎而然,每個database所能持有的collections個數(shù)取決于namespace文件大?。ㄓ脕肀4鎛amespace)以及每個collection中indexes的個數(shù),最終總尺寸不超過namespace文件的大小(16M)。wiredTiger引擎不受到此限制。
五、Replica Sets
每個replica set中最多支持50個members。
replica set中最多可以有7個voting members。(投票者)
如果沒有顯式的指定oplog的尺寸,其大不會超過50G。
六、Sharded Clusters
group聚合函數(shù),在sharding模式下不可用。請使用mapreduce或者aggregate方法。
Coverd Queries:即查詢條件中的Fields必須是index的一部分,且返回結(jié)果只包含index中的fields;對于sharding集群,如果query中不包含shard key,索引則無法進行覆蓋。雖然_id不是“shard key”,但是如果查詢條件中只包含_id,且返回的結(jié)果中也只需要_id字段值,則可以使用覆蓋查詢,不過這個查詢似乎并沒有什么意義(除非是檢測此_id的document是否存在)。
對于已經(jīng)存有數(shù)據(jù)的collections開啟sharding(原來非sharding),則其大數(shù)據(jù)不得超過256G。當(dāng)collection被sharding之后,那么它可以存儲任意多的數(shù)據(jù)。
對于sharded collection,update、remove對單條數(shù)據(jù)操作(操作選項為multi:false或者justOne),必須指定shard key或者_id字段;否則將會拋出error。
唯一索引:shards之間不支持唯一索引,除非這個“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ù):如果一個chunk中documents的個數(shù)超過250000(默認chunk大小為64M)時,或者document個數(shù)大于 1.3 *(chunk大尺寸(有配置參數(shù)決定)/ document平均尺寸),此chunk將無法被“move”(無論是balancer還是人工干預(yù)),必須等待split之后才能被move。
七、shard key
shard key的長度不得超過512個字節(jié)。
“shard key索引”可以為基于shard key的正序索引,或者以shard key開頭的組合索引。shard key索引不能是multikey索引(基于數(shù)組的索引)、text索引或者geo索引。
Shard key是不可變的,無論何時都不能修改document中的shard key值。如果需要變更shard key,則需要手動清洗數(shù)據(jù),即全量dump原始數(shù)據(jù),然后修改并保存在新的collection中。
單調(diào)遞增(遞減)的shard key會限制insert的吞吐量;如果_id是shard key,需要知道_id是ObjectId()生成,它也是自增值。對于單調(diào)遞增的shard key,collection上的所有insert操作都會在一個shard節(jié)點上進行,那么此shard將會承載cluster的全部insert操作,因為單個shard節(jié)點的資源有限,因此整個cluster的insert量會因此受限。如果cluster主要是read、update操作,將不會有這方面的限制。為了避免這個問題,可以考慮使用“hashed shard key”或者選擇一個非單調(diào)遞增key作為shard key。(rang shard key 和hashed shard key各有優(yōu)缺點,需要根據(jù)query的情況而定)。
八、Operations
如果mongodb不能使用索引排序來獲取documents,那么參與排序的documents尺寸需要小于32M。
Aggregation Pileline操作。Pipeline stages限制在100M內(nèi)存,如果stage超過此限制將會發(fā)生錯誤,為了能處理較大的數(shù)據(jù)集,請開啟“allowDiskUse”選項,即允許pipeline stages將額外的數(shù)據(jù)寫入臨時文件。
九、命名規(guī)則
database的命名區(qū)分大小寫。
database名稱中不要包含:/ .‘'$*<>:|?
database名稱長度不能超過64個字符。
collection名稱可以以“_”或者字母字符開頭,但是不能包含”$”符號,不能為空字符或者null,不能以“system.”開頭,因為這是系統(tǒng)保留字。
document字段名不能包含“.”或者null,且不能以“$”開頭,因為$是一個“引用符號”。
最后記錄下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來代表第一個索引,點代表嵌套結(jié)構(gòu)。但是spark mongo中是不能這樣導(dǎo)入的,需要使用別的方法。
以上是“MongoDB中參數(shù)限制與閥值的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
網(wǎng)站標(biāo)題:MongoDB中參數(shù)限制與閥值的示例分析-創(chuàng)新互聯(lián)
轉(zhuǎn)載源于:http://jinyejixie.com/article42/dcjchc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計、企業(yè)建站、云服務(wù)器、營銷型網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、網(wǎng)頁設(shè)計公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容