- A+
一 . 什么是固定聚拢
MongoDB中有一种特殊类型的聚拢,值得我们分外把稳,那便是固定聚拢(capped collection)。
固定聚拢可以声明collection的容量年夜小,其行动相似于轮回行列步队。数据插入时,新文档会被插入到行列步队的末端,假如行列步队已经被占满,那么最老的文档会被之后插入的文档笼罩。
固定聚拢特征:固定聚拢很像环形行列步队,假如空间不敷,最早的文档就会被删除,为新的文档腾出空间。一样平常来说,固定聚拢实用于任何想要主动镌汰过时属性的场景。
固定聚拢利用场景
好比日记文件,谈天记载,通话信息记载等只需保存比来某段光阴内的利用场景,都邑使用到MongoDB的固定聚拢。
固定聚拢的长处
1.写入速率晋升。固定聚拢中的数据被次序写入磁盘上的固定空间,以是,不会由于其他聚拢的一些随机性的写操作而“中止”,其写入速率异常快(不树立索引,机能更好)。
2.固定聚拢会主动笼罩失落最老的文档,是以不必要再设置装备摆设额外的事情来进行旧文档删除。设置Job进行旧文档的准时删除容易形成机能的压力毛刺。
固定聚拢异常适用与记载日记等场景。
二 . 固定聚拢的创立
分歧于通俗聚拢,固定聚拢必需在使用前显式创立。
例如,创立固定聚拢coll_testcapped,年夜小限定为1024个字节。
除了年夜小,创立时还可以指定固定聚拢中文档的数据量。
例如,创立固定聚拢coll_testcapped,年夜小限定为1024个字节,文档数目限定为100。
创立固定聚拢还有另一道路,便是将通俗聚拢装换为固定聚拢,使用的敕令是convertToCapped。
例如将testcol1聚拢转换为一个年夜小为1024字节的固定聚拢:
三 . 固定聚拢信息的查看
(1)断定聚拢是否为固定聚拢,其鉴定敕令为:
db.聚拢.isCapped()
。
例如断定前面已创立的固定聚拢coll_testcapped2是否为固定聚拢:
(2) 从聚拢信息中获取 有关固定聚拢的属性,查看聚拢的指令为:
db.聚拢.stats()
例如查看聚拢coll_testcapped2的信息:
四 . 注意事变:
(1) 固定聚拢创立之后就弗成以转变,只能将其删除重修。
(2) 通俗聚拢可以使用convertToCapped转换固定聚拢,然则固定聚拢弗成以转换为通俗聚拢。
(3) 创立固定聚拢,为固定聚拢指定文档数目限定时(指参数max),必需同时指定固定聚拢的年夜小(指参数size)。不管先到达哪一个限定,之后插入的新文档都邑把最老的文档移除聚拢。
(4) 使用convertToCapped敕令将通俗聚拢转换固定聚拢时,既有的索引会丧失,必要手动创立。而且,此转换敕令没有限定文档数目的参数(即没有max的参数选项)。
(5) 弗成以对 固定聚拢 进行分片。
(6) 对固定聚拢中的文档可以进行更新(update)操作,但更新不克不及导致文档的Size增加或缩小,不然更新失败。
如果聚拢中有一个key,其value 对应的数据长度为100个字节,假如要更新这个key 对应的value,更新后的值也必需为100个字节,年夜于100个字节弗成以,小于100个字节也弗成以。
报错信息为:Cannot change the size of a document in a capped collection : XXXX(XXXX代表某个数据字) !=XXXX。
(7) 弗成以对固定聚拢执行删除文档操作,但可以删除整个聚拢。
删除文档时,报错信息为:cannot remove from a capped collection:XXXX
(8) 还有必定必要注意,对聚拢估算size时,不要根据聚拢的storageSize ,而是根据聚拢的size。storageSize是wiredTiger存储引擎采纳高紧缩算法紧缩后的。
例如经由过程db.聚拢.stats()敕令查看某聚拢的数据,"大众size"大众 和 "大众storageSize"大众 二者相差照样很年夜的。
总结
以上便是这篇文章的全体内容了,愿望本文的内容对年夜家的进修或者事情具有必定的参考进修代价,假如有疑问年夜家可以留言交流,谢谢年夜家对剧本之家的支撑。
您可能感兴致的文章:
MongoDB在分歧主机间复制数据库和聚拢的教程详解MongoDB中创立聚拢与删除聚拢的操作办法