摘要:固定集合使用一種類似循環(huán)緩沖區(qū)的方式進(jìn)行工作。行為順序插入固定集合保證保存的插入順序。在固定集合中緩存了少量的數(shù)據(jù)。聚合聚合管道操作不能將結(jié)果寫入到固定集合中。警告這個(gè)命令將獲得全局寫鎖,并且將會(huì)阻止其他操作,直至命令完成。
概述
固定集合是固定大小的集合,支持高吞吐量的基于插入順序的插入和檢索文檔操作。固定集合使用一種類似循環(huán)緩沖區(qū)的方式進(jìn)行工作。一旦集合填滿了其分配的空間,那么新的文檔將會(huì)覆蓋集合中最老的文檔。
創(chuàng)建固定集合可通過(guò)查看createCollection()或者create來(lái)查看更多信息。
固定集合保證保存的插入順序。因此,在順序插入的時(shí)候返回文檔不需要索引。
自動(dòng)刪除老文檔為新的文檔騰出空間,固定集合會(huì)自動(dòng)移除集合中最老的文檔,而不用任何腳本或者明確的移除操作。例如, oplog.rs 集合在副本集中使用固定集合存儲(chǔ)日志的操作。考慮以下固定集合的使用情形:
保存大容量系統(tǒng)生成的日志信息,在一個(gè)沒(méi)有索引的固定集合中插入文檔與直接在文件系統(tǒng)中寫入日志信息所花費(fèi)的時(shí)間非常接近。此外,內(nèi)置的先入先出策略保證了事件的順序,同時(shí)管理內(nèi)存的使用。
在固定集合中緩存了少量的數(shù)據(jù)。由于是緩存是讀取而不是大批量的寫,you would either need to ensure that this collection always remains in the working set (即在RAM中) or accept some write penalty for the required index or indexes.
_id 索引固定集合默認(rèn)情況下有一個(gè)_id字段和_id字段索引。
限制和建議 更新如果你計(jì)劃在固定集合中更新文檔,創(chuàng)建一個(gè)索引,這樣更新操作不需要請(qǐng)求集合掃描。
文檔大小在3.2版本中改變
如果一個(gè)更新或者替換操作將會(huì)改變文檔的大小,那么操作將會(huì)失敗。
你不能從一個(gè)固定集合中刪除文檔。從一個(gè)集合中移除所有的文檔,使用drop()方法來(lái)刪除集合和重建固定集合。
分片你不能分片一個(gè)固定集合。
查詢效率使用自然順序從集合中高效的檢索最近插入的元素。這(有點(diǎn))類似于在一個(gè)日志文件上跟蹤。
聚合$out聚合管道操作$out不能將結(jié)果寫入到固定集合中。
程序 創(chuàng)建一個(gè)固定集合你必須使用db.createCollection()方法顯式的創(chuàng)建一個(gè)固定集合。這是 Mongo Shell 一個(gè)創(chuàng)建命令,當(dāng)創(chuàng)建一個(gè)固定集合的時(shí)候,你必須指定集合的最大值(以字節(jié)為單位),MongoDB將會(huì)對(duì)集合進(jìn)行預(yù)先分配。這個(gè)固定集合的大小包含用于內(nèi)部開(kāi)銷的少量空間:
db.createCollection( "log", { capped: true, size: 100000 } )
如果size字段小于或者等于4096,然后集合的上限是4096字節(jié)。否則,MongoDB將會(huì)提升size的大小為256的整倍數(shù)。
此外,你也可以在下面的文檔使用max字段為集合指定一個(gè)文檔的最大值。
db.createCollection("log", { capped : true, size : 5242880, max : 5000 } )
查詢固定集合重要:即使你為文檔指定最大值,size參數(shù)也是必須的。如果一個(gè)集合在達(dá)到最大文檔數(shù)量之前,它的大小達(dá)到了最大值,那么MongoDB將會(huì)移除最老的文檔.
如果你想在一個(gè)固定集合中執(zhí)行沒(méi)有指定排序的find命令。那么MongoDB保證查詢出來(lái)的結(jié)果順序跟插入順序是相同的。
使用反向插入順序檢索文檔,使用find()方法帶著$natural參數(shù)設(shè)置為-1的sort()方法, 如以下示例所示:
db.cappedCollection.find().sort( { $natural: -1 } )檢測(cè)是否為固定集合
使用isCapped()方法來(lái)判斷一個(gè)集合是否是固定集合:
db.collection.isCapped()將一個(gè)集合轉(zhuǎn)化為固定集合
你可以使用convertToCapped命令來(lái)將一個(gè)非固定集合轉(zhuǎn)化為固定集合:
db.runCommand({"convertToCapped": "mycoll", size: 100000});
在固定集合中size參數(shù)指定的大小單位為字節(jié)。
在指定的時(shí)間之后自動(dòng)移除數(shù)據(jù)警告:這個(gè)命令將獲得全局寫鎖,并且將會(huì)阻止其他操作,直至命令完成。
當(dāng)數(shù)據(jù)過(guò)期之后,為了進(jìn)一步增強(qiáng)靈活性,考慮到MongoDB的TTL索引。綜上所述,集合通過(guò)設(shè)置TTL來(lái)過(guò)期數(shù)據(jù)。這些索引允許你從正常的集合中使用特定的類型,基于日期類型的字段值和TTL值索引來(lái)過(guò)期和移除數(shù)據(jù)。
TTL集合不兼容固定集合。
你可以在固定集合中使用Tailable 游標(biāo),類似于Linux的tail -f命令,Tailable 游標(biāo) 會(huì)追蹤固定集合的末尾。作為新的文檔插入到固定集合,你可以使用Tailable 游標(biāo)來(lái)繼續(xù)檢索文檔。
在創(chuàng)建Tailable 游標(biāo)的時(shí)候可以查看Tailable 游標(biāo)來(lái)獲取更多信息。
下一章:https://segmentfault.com/a/11...
本文鏈接:https://docs.mongodb.com/manu...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/18887.html
摘要:概述使用這個(gè)教程在或者使用軟件包安裝社區(qū)版雖然包含自己的軟件包但官方的社區(qū)版包通常是最新的本安裝教程僅支持位操作系統(tǒng)詳細(xì)信息請(qǐng)參閱平臺(tái)支持這些軟件包可以與其它版本一起工作。 概述 使用這個(gè)教程在 Debian 7 Wheezy 或者 Debian 8 Jessie 使用 .deb 軟件包安裝 MongoDB 社區(qū)版. 雖然 Debian 包含自己的 MongoDB 軟件包, 但官方的 ...
摘要:概述使用這個(gè)教程在使用軟件包安裝社區(qū)版包含自己的軟件包但官方的社區(qū)版包通常是最新的平臺(tái)支持本安裝教程僅提供位長(zhǎng)期支持版本例如,等等這些軟件包可能將和其它版本一起工作然后它們并不支持軟件包在自己的存儲(chǔ)庫(kù)中提供官方支持軟件包此存儲(chǔ)庫(kù)包含以下軟件 概述 使用這個(gè)教程在 LTS Ubuntu Linux 使用 .deb 軟件包安裝 MongoDB 社區(qū)版. Ubuntu 包含自己的 Mong...
摘要:例如,在集合中的數(shù)據(jù)紀(jì)錄在數(shù)據(jù)庫(kù)中的集合。因此,你可以切換到一個(gè)不存在的數(shù)據(jù)庫(kù),并且在中執(zhí)行以下操作如果它們不存在的時(shí)候,創(chuàng)建了數(shù)據(jù)庫(kù)和集合。限制數(shù)據(jù)庫(kù)名字的列表,請(qǐng)參閱命名限制。集合在集合中存儲(chǔ)文檔。集合是類似關(guān)系數(shù)據(jù)庫(kù)的表。 MongoDB 存儲(chǔ)BSON文檔。例如,在集合中的數(shù)據(jù)紀(jì)錄;在數(shù)據(jù)庫(kù)中的集合。showImg(https://segmentfault.com/img/bVC...
摘要:固定集合不能被分片。為固定集合指定文檔數(shù)量限制時(shí),必須同時(shí)指定固定集合的大小。沒(méi)有索引的集合默認(rèn)情況下,每個(gè)集合都有一個(gè)索引。 上一篇文章:MongoDB指南---13、索引類型、索引管理下一篇文章:MongoDB指南---15、特殊的索引和集合:地理空間索引、使用GridFS存儲(chǔ)文件 本章介紹MongoDB中一些特殊的集合和索引類型,包括: 用于類隊(duì)列數(shù)據(jù)的固定集合(capped...
摘要:固定集合不能被分片。為固定集合指定文檔數(shù)量限制時(shí),必須同時(shí)指定固定集合的大小。沒(méi)有索引的集合默認(rèn)情況下,每個(gè)集合都有一個(gè)索引。 上一篇文章:MongoDB指南---13、索引類型、索引管理下一篇文章:MongoDB指南---15、特殊的索引和集合:地理空間索引、使用GridFS存儲(chǔ)文件 本章介紹MongoDB中一些特殊的集合和索引類型,包括: 用于類隊(duì)列數(shù)據(jù)的固定集合(capped...
閱讀 2836·2021-11-19 11:35
閱讀 2588·2021-11-02 14:40
閱讀 1410·2021-09-04 16:48
閱讀 3015·2019-08-30 15:55
閱讀 1769·2019-08-30 13:11
閱讀 1963·2019-08-29 11:12
閱讀 1097·2019-08-27 10:52
閱讀 3168·2019-08-26 18:36