zoukankan      html  css  js  c++  java
  • mongoDB 固定集合(capped collection)


    固定集合(Capped Collection)是一种尺寸固定的“循环”集合,可提供高效的创建、读取、删除等操作。这里所指的“循环”的意思是,当分配给集合的文件尺寸耗尽时,就会自动开始删除最初的文档,不需要提供任何显式的指令。

    如果文档更新后增加了文档的尺寸,那么固定集合会限制对文档的更新。因为固定集合按照磁盘存储的顺序来保存文档,所以能确保文档尺寸不会增加磁盘分配的尺寸。固定集合最适合保存日志信息,缓存数据以及任何其他大容量数据。
    创建固定集合

    要想创建固定集合,需要使用 createCollection 命令,并将 capped 选项设为 true,同时还需要指定集合的最大尺寸(以字节计)。

    >db.createCollection("cappedLogCollection",{capped:true,size:10000})

    除了集合尺寸外,还可以使用 max 参数限制集合中的文档最大数量。

    >db.createCollection("cappedLogCollection",{capped:true,size:10000,max:1000})

    如果想要检查集合是否固定,使用 isCapped 命令即可。

    >db.cappedLogCollection.isCapped()

    如想将现有集合转化为固定集合,使用下列代码:

    >db.runCommand({"convertToCapped":"posts",size:10000})

    上述代码会将现有的 posts 集合转化为固定集合。
    查询固定集合

    默认情况下,利用 find 查询固定集合,结果会按照插入顺序进行显示。但如果想按相反顺序获取文档,可以使用 sort 命令,如下所示:

    >db.cappedLogCollection.find().sort({$natural:-1})

    关于固定集合,有以下几个非常值得注意的要点:
    需要事先创建,创建时指定大小,即大小固定,后续不可以随意改变。
    新文档被插入到队列末尾。
    使用循环的方式老化最老的文档,即不支持从定长集合手动删除文档。
    数据被顺序写入到磁盘上的固定空间。
    固定集合不能被分片。
    由于覆盖特性,其应用场景通常可以用于记录日志。
    无法从固定集合中删除文档。
    固定集合没有默认索引,甚至在 _id 字段中也没有。
    在插入新的文档时,MongoDB 并不需要寻找磁盘空间来容纳新文档。它只是盲目地将新文档插入到集合末尾。这使得固定集合中的插入操作是非常快速的。
    在读取文档时,MongoDB 会按照插入磁盘的顺序来读取文档,从而使读取操作也非常快。


  • 相关阅读:
    Android编译选项eng、user、userdebug的区别
    Linux 内核编码规范
    PLM之EVT、DVT、PVT、MP
    fastboot刷机的一般方法
    Android手机拨号测试项
    使用Genymotion安装APK出现错误INSTALL_FAILED_CPU_ABI_INCOMPATIBLE的解决办法
    三星手机列表拖动时出现诡异背景色的问题
    分享android ADT百度云盘下载地址
    关于互联网思维
    分享Nginx在Windows下的管理命令(bat文件)
  • 原文地址:https://www.cnblogs.com/liang545621/p/7363739.html
Copyright © 2011-2022 走看看