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

MongoDB TTL集合与固定集合的更多相关文章

  1. 【Mongodb】聚合查询 && 固定集合

    概述 数据存储是为了可查询,统计.若数据只需存储,不需要查询,这种数据也没有多大价值 本篇介绍Mongodb 聚合查询(Aggregation) 固定集合(Capped Collections) 准备 ...

  2. MongoDB的学习和使用(固定集合[Capped Collections])

    MongoDB 固定集合(Capped Collections) MongoDB 固定集合(Capped Collections)是性能出色且有着固定大小的集合,对于大小固定,我们可以想象其就像一个环 ...

  3. mongodb的固定集合(优化效率)

    mongodb固定集合(Capped Collection)和大文件管理(GridFS)   Capped Collection   固定集合(Capped Collection)是性能出色的有着固定 ...

  4. MongoDB固定集合(Capped Collections)

    MongoDB 固定集合(Capped Collections)是性能出色且有着固定大小的集合,对于大小固定,我们可以想象其就像一个环形队列,当集合空间用完后,再插入的元素就会覆盖最初始的头部的元素! ...

  5. MongoDB 固定集合

    MongoDB 固定集合(Capped Collections)是性能出色且有着固定大小的集合,对于大小固定,我们可以想象其就像一个环形队列,当集合空间用完后,再插入的元素就会覆盖最初始的头部的元素! ...

  6. 关于MongoDB 固定集合(capped collection)的知识梳理

    一 . 什么是固定集合 MongoDB中有一种特殊类型的集合,值得我们特别留意,那就是固定集合(capped collection). 固定集合可以声明collection的容量大小,其行为类似于循环 ...

  7. mongo 固定集合,大文件存储,简单优化 + 三招解决MongoDB的磁盘IO问题

    1.固定集合 > db.createCollection(, max:});//固定集合 必须 显式创建. 设置capped为true, 集合总大小xxx字节, [集合中json个数max] { ...

  8. MongoDB固定集合(capped collection)

    一 . 什么是固定集合 MongoDB中有一种特殊类型的集合,值得我们特别留意,那就是固定集合(capped collection). 固定集合可以声明collection的容量大小,其行为类似于循环 ...

  9. MongoDB的固定集合

    一.MongoDB固定集合概念 固定集合指的是事先创建,并且大小固定的集合.即假设一个集合设置了固定大小为100,再添加一条文档的时候,会把最前面的文档剔除,永远只保留100条数据. 固定集合特性:固 ...

随机推荐

  1. Go语言【数据结构】字符串

    字符串 简介 一个字符串是一个不可改变的字节序列,字符串通常是用来包含人类可读的文本数据.和数组不同的是,字符串的元素不可修改,是一个只读的字节数组.每个字符串的长度虽然也是固定的,但是字符串的长度并 ...

  2. 【LEETCODE】67、分治递归,medium&hard级别,题目:215、312

    我被这些题整哭了,你呢??? 日了狗啊...... 好难啊.... 按照这个样子搞,不用找工作了,回家放牛去....... package y2019.Algorithm.divideandconqu ...

  3. PLC采集与控制,实现MES工序管理与品质管控,记录产品的加工数据,工厂生产装配流水线的一次成功应用

    1.通过程序与PLC的采集与控制,实现MES工序管理,品质管控,历史数据追溯的目的 2.大概的流程图 3.有三个地方相关联来实现以上功能,首先是MES的工序管理,设置指定的产品有那些工序,上位机程序扫 ...

  4. Linux下的应用进程监控

    两个思路: 一.定时执行监控脚本 采用centos自带的crontab根据需要定时执行status.sh脚本 #!/bin/bash status=$(ps -aux | grep "rsy ...

  5. python_封装redis_hash方法

    xshell 进入 虚拟环境 安装 redis workon py3env # 进入虚拟环境 pip install redis # 安装redis deactivate # 退出虚拟环境 简单的封装 ...

  6. BZOJ3514 / Codechef GERALD07 Chef and Graph Queries LCT、主席树

    传送门--BZOJ 传送门--VJ 考虑使用LCT维护时间最大生成树,那么对于第\(i\)条边,其加入时可能会删去一条边.记\(pre_i\)表示删去的边的编号,如果不存在则\(pre_i = 0\) ...

  7. vue报错[Vue warn]: Unknown custom element: <router-Link> - did you register the component correctly? For recursive components, make sure to provide the "name" option.

    vue浏览器报错,如下 vue.runtime.esm.js?2b0e:619 [Vue warn]: Unknown custom element: <router-Link> - di ...

  8. TCP,UDP 通讯的helper类

    使用Tcp通讯,首先要启动tcp服务端监听客户端,客户端发送消息,服务端收到消息 1.服务端代码如下 public class TcpServerTest { public async Task Be ...

  9. MVC中Model BLL层Model模型互转

    MVC中Model BLL层Model模型互转 一. 模型通常可以做2种:充血模型和失血模型,一般做法是模型就是模型,不具备方法来操作,只具有属性,这种叫做失血模型(可能不准确):具备对模型一定的简单 ...

  10. Centos复制的系统无法获取IP地址

    本文主要是解决自己玩虚拟机时遇到的问题,网上查询了很多资料,最好综合多方的资料进行如下总结,如果无法解决您得问题,不要着急慢慢梳理总会解决的,加油~~~ 1.添加一块新的虚拟机的网卡2.删除rm -r ...