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