• MongoDB-固定集合 capped collection 操作 介绍


    固定集合:capped collection 是性能出色的固定大小的集合,以LRU算法淘汰记录,自助维护集合中的对象的插入顺序,创建时预先制定大小,空间使用完,心对象取代旧的对象,保持最新的数据。

     可以插入及更新,但更新不能超出 

    collection 的大小,否则更新失败。不允许删除,但是可 以调用 drop() 删除集合中的所有行,但是drop 后需要显式地重建集合。在 32 位机上,一 个 capped collection 的最大值约为 482.5M,64 位上只受系统文件大小的限制。

    属性以及用法:

    属性:1、对固定集合插入速度极快。

               2、按照插入顺序的查询输出速度极快。

               3、能够在插入最新时候淘汰最早的数据。

    用法:1、储存日志信息。

       2、储存少量的文档。

    使用

     1、可以在创建 capped collection 时指定 collection 中能够存放的最大文档数。但这时也要指
    定 size, 因为总是先检查 size 后检查 maxRowNumber。 可以使用 validate()查看一个 collection 已经使用了多少空间,从而决定size 设为多大。如:

    db.createCollection("mycoll", {capped:true, size:100000, max:100});  //100000表示字节

    注意:指定文档上限,必须指定大小,文档限制是在容量没满时进行淘汰,要是满了,就根据容量限制来进行淘汰。

    > db.createCollection("mycol",{capped:true,size:100000,max:100})
    { "ok" : 1 }
    > db.mycol.val
    db.mycol.validate(  db.mycol.valueOf(
    > db.mycol.validate()          //用来查看固定集合的使用情况
    {
        "ns" : "admin.mycol",
        "capped" : true,
        "max" : 100,
        "firstExtent" : "0:8c000 ns:admin.mycol",
        "lastExtent" : "0:8c000 ns:admin.mycol",
        "extentCount" : 1,
        "datasize" : 0,
        "nrecords" : 0,
        "lastExtentSize" : 102400,
        "padding" : 1,
        "firstExtentDetails" : {
            "loc" : "0:8c000",
            "xnext" : "null",
            "xprev" : "null",
            "nsdiag" : "admin.mycol",
            "size" : 102400,
            "firstRecord" : "null",
            "lastRecord" : "null"
        },
        "deletedCount" : 2,
        "deletedSize" : 102224,
        "nIndexes" : 1,
        "keysPerIndex" : {
            "admin.mycol.$_id_" : 0
        },
        "valid" : true,
        "errors" : [ ],
        "warning" : "Some checks omitted for speed. use {full:true} option to do more thorough scan.",
        "ok" : 1
    }
    > db.createCollection("mycol",{capped:true,size:100000,max:100,autoIndexId:false})
    //创建collection时还有一个参数”autoIndexID”,值可以为”true”和”false”,决定是否需要在”_id”上创建索引
    
    { "ok" : 0, "errmsg" : "collection already exists" } > db.mycol.drop() true > db.createCollection("mycol",{capped:true,size:100000,max:100,autoIndexId:false}) { "ok" : 1 } >

    2、转换集合   把test普遍集合转换为固定集合,大小为10000字节.

    db.runCommand( { convertTocapped:"test",size:10000 } );

     3、自然排序

    固定集合文档按照插入顺序储存的,默认情况下查询就是按照插入顺序返回的,也可以使用$natural调整返回顺序.

    db.mycappedcolt.find().sort( {"$natural":1} );

    参数1表示默认顺序,-1则相反.

    4、判断集合是否为固定集合

    db.colt.isCapped();

    5、查看集合状态信息

    db.colt.stats();

     

  • 相关阅读:
    【转】 springBoot(5)---单元测试,全局异常
    【转】 springBoot(4)---热部署,配置文件使用
    【转】 springBoot(3)---目录结构,文件上传
    【转】 springBoot(2)---快速创建项目,初解jackson
    【转】 springBoot(1)---springboot初步理解
    【转】 SpringBoot+MyBatis+MySQL读写分离
    简单请求 vs 非简单请求
    H5新增的API
    图片
    vue更新dom的diff算法
  • 原文地址:https://www.cnblogs.com/timelesszhuang/p/4351875.html
Copyright © 2020-2023  润新知