zoukankan      html  css  js  c++  java
  • MongoDB TTL集合与固定集合

    1、固定集合
        MongoDB可以创建固定长度的集合,可以设置最大的集合空间或最大的集合数。创建集合的语法如下:
        db.createCollection("collection-name", { option对象 }); # option都为可选对象,可选项如下:
    可选参数
       类型
       说明
      capped
       boolean
       默认为false则为正常的集合,当设置为true时,则为固定长度集合,到达设置的空间或集合长度的上线,则会删除最老的数据
      
       autoIndexId
       
       boolean
       为true则在_id上自动创建索引。默认为true,为唯一索引,建立后就不能进行删除索引
      size
       
       数字(单位字节)
       
       前提是capped设置为true。指定集合能使用的数据空间上限。
      max
       
       数字(文档数)
       
       前提是capped设置为true。指定集合能使用的最大文档数据。当文档空间和最大文档数时,谁先到达限制都会触发,而扔掉最老的文档
           db.createCollection("user-max",{capped:true,size:1000000,max:10000,autoIndexId:true});
     
     
     
    固定集合特点:
        1、到达数据空间或者文档数的上限,则扔掉最老的文档
        2、MySQL的数据copy使用的是binlog,而MongoDB数据copy则使用固定长度的集合
        3、固定集合不能转换为正常的集合,正常的集合可以转化为固定集合,转化方式如下:
            db.runCommand({"covertToCapped":"collection-name", size:100000,max:1000});
     
     
    2、TTL索引
        使用固定集合的方式,不能确认会将哪些数据扔掉。很多时候我们需要保存一段时候的数据,如前面提到的MongoDB应用中的使用--删除旧数据场景。就可以在集合中根据每个文档定时删除不需要的文档,若需要保存数据,则可以让大数据定时将数据抽取走。为集合的创建日期设置一个TTL索引,如下:
          # 保存最近三个月的文档(单位秒),当中途修改了createdAt的值时,则不会删除文档(指定的时间是字段与当前时间的差值)
        db.user.createIndex({"createdAt": 1},{expireAfterSeconds: 60*60*24*3});
     
        # 若需求变动,需要将三个月修改为一个月可以使用collMod,如下:
      db.runCommand({collMod: 'user', index: {keyPattern:{"createdAt": 1}, expireAfterSeconds:60*60*24*1}});
     
      TTL集合特点:
        1、TTL索引是单字段索引,不能使用在聚合索引上
        2、_id主键上不能建立TTL索引
        3、一个集合上可以建立多个TTL索引
        4、不能在普通索引上再创建TTL索引,只能删除再建
        5、TTL索引可以用于普通索引一样进行排序和查询
        6、TTL索引会每分钟检查超时文档,并进行删除操作。需要注意删除时候的并发问题(不要影响线上业务)。
     

    原文链接:https://blog.csdn.net/it_lihongmin/article/details/81739988
  • 相关阅读:
    evernote100个做笔记的好方法
    平衡二叉树的调整模版
    晨间日记的奇迹
    hdu 2952 Counting Sheep
    hdu 1535 Invitation Cards
    poj 3259 Wormholes(spfa)
    poj 2263 Heavy Cargo(floyd)
    poj 3268 Silver Cow Party(SPFA)
    hdu 1690 Bus System
    hdu 3631 Shortest Path(Floyd)
  • 原文地址:https://www.cnblogs.com/xibuhaohao/p/12016921.html
Copyright © 2011-2022 走看看