MongoDB自动删除过期数据--TTL索引】的更多相关文章

  前序: 由于公司业务需求,对于3个月前的过期数据需要进行删除动作,以释放空间和方便维护 本来想的是使用crontab写个脚本定时执行,但是看到Mongo本身就有自动删除过期数据的功能,所以还是用一下吧 这个方法就是使用TTL索引,后续我再写一个脚本定时删除的任务 介绍: TTL索引是MongoDB中一种特殊的索引, 可以支持文档在一定时间之后自动过期删除,目前TTL索引只能在单字段上建立, 并且字段类型必须是date类型或者包含有date类型的数组(如果数组中包含多个date类型字段,则取最…
一 简介:本文介绍创建自动删除数据的TTL索引 二 目的 定时删除数据三 创建方法   db.collection.createIndex(keys, options)   options:   expireAfterSeconds 指定多少秒或者包含日期值的数组 创建示例   db.eventlog.createIndex( { "lastModifiedDate": 1 }, { expireAfterSeconds: 3600 },{backgroup: true}) 四 何时失…
TTL索引: TTL集合支持mongodb对存储的数据进行失效时间设置,经过指定的时间段后.或在指定的时间点过期,集合自动被mongod清除.这一特性有利于对一些只需要保存一定时间的数据信息进行存储,比如机器产生的事件数据.日志.会话信息等. 先创建一个集合TTLCol: 创建TTL索引,60秒过期. 60秒后查询发现数据被删除了. 部分索引: MongoDB部分索引只为那些在一个集合中,满足指定的筛选条件的文档创建索引.由于部分索引是一个集合文档的一个子集,因此部分索引具有较低的存储需求,并降…
TTL索引是mongodb新支持的用于延时自动删除记录的一种索引.它仅包含一个字段,该字段值需要是Date()类型,并且不支持复合索引.可以指定某条记录在延时固定时间后自动删除.数据自动超时删除主要用在系统生成的事件.日志或者会话信息等不需要永久存储的数据. 创建语法 在集合eventlog的字段"lastModifiedDate"上创建延时1小时自动删除的TTL索引,其中"expireAfterSeconds"是超时字段,单位是秒. 数据超时 TTL索引会按设置的…
下面是实验步骤: > db.things.find(){ "_id" : ObjectId("5652d71a1524dc14663060e8"), "x" : 4, "j" : 2 }{ "_id" : ObjectId("5652d71a1524dc14663060e9"), "x" : 4, "j" : 3 }{ "_id&q…
关键词: expireAfterSeconds.TTL TTL Time to Live 类似Redis中的expire机制,MongoDB也可以设置过期自动删除的表. MongoDB的过期设置依赖索引(TTL-index),设置过期字段使用的索引后,插入数据时在该字段指定日期时间, 经过在创建索引时指定的秒数后,该记录会被MongoDB认为已经过期,然后删除. JS版 db.test_timer.createIndex({"timer":1}, {expireAfterSeconds…
在工作过程中,我们难免会遇到这样的问题,我们想保存一些数据,但是我们对这些数据的要求并不高,有时候往往只是想要某个时间范围内的数据,比如我们如果永远只关心从当前时间往前推半年内的数据特性,那么我们就不需要将所有数据都保存起来,因为不仅浪费磁盘空间,而且随着数据量的不断累积,其他性能也会受到影响. 这时候我们迫切的需要一直方法能够在我们插入数据的时候自动的帮我们去删除我们过一段时间就不想要的数据,那么怎么实现呢? 在Mongodb内部,有一个特殊的索引,称为TTL索引,通过该索引便可以实现上面的功…
目录 一.TTL索引介绍 二.TTL索引运行逻辑 三.TTL索引的限制 四.TTL索引的使用场景 1. 指定具体的过期时间属性 2. 插入一个具体的过期时间 3. TTL属性的修改(collMod) 五.Date类型 六.参考文档 一.TTL索引介绍 TTL全称是(Time To Live),TTL索引能对一个单列配置过期属性来实现对文档的自动过期删除,我们可以在对字段创建索引时添加expireAfterSeconds选项将索引转换为TTL索引,该字段需要是date类型,在以下几种场景下即使索引…
这篇文章主要介绍了MongoDB性能篇之创建索引,组合索引,唯一索引,删除索引和explain执行计划的相关资料,需要的朋友可以参考下 一.索引 MongoDB 提供了多样性的索引支持,索引信息被保存在system.indexes 中,且默认总是为_id创建索引,它的索引使用基本和MySQL 等关系型数据库一样.其实可以这样说说,索引是凌驾于数据存储系统之上的另一层系统,所以各种结构迥异的存储都有相同或相似的索引实现及使用接口并不足为 奇. 1.基础索引 在字段age 上创建索引,1(升序);-…
在mongo中我们可以设置文档的过期时间,超过时间,文档会自动删除.(2.x版本中  固定结合也支持,但是到了3.x中 固定集合这个索引不好用) 用法: 1.创建一个db:db.createCollection("test"): 2.创建一个表并且放入数据 db.test.insertMany([{ "name" : "3", "ldate" : ISODate("2018-08-10T06:37:56.372Z&q…
db.log_events.find()                                     # 查找log_events里的所有数据   db.log_events.createIndex( { "LogDT": 1 }, { expireAfterSeconds: 3600 } )                              #设置log_events里的TTL过期索引清理时间为3600秒   db.runCommand( { collMod: &…
一 简介:本文介绍创建自动删除数据的TTL索引 二 目的 定时删除数据三 创建方法   db.collection.createIndex(keys, options)   options:   expireAfterSeconds 指定多少秒或者包含日期值的数组 创建示例   db.eventlog.createIndex( { "lastModifiedDate": 1 }, { expireAfterSeconds: 3600 },{backgroup: true}) 四 何时失…
索引就是用来加速查询的.创建数据库索引就像确定如何组织书的索引一样.但是你的优势是知道今后做何种查询,以及哪些内容需要快速查找.比如:所有的查询都包括"date"键,那么很可能(至少)需要建立一个关于"date"的索引.如果要查询用户名,则不必索引"user_num"键,因为根本不会对其进行查询.现在要依照某个键进行查找:> db.people.find({"username" : "mark"})当…
1. MongoDB中数据查询的方法 (1)find函数的使用: (2)条件操作符: (3)distinct找出给定键所有不同的值: (4)group分组: (5)游标: (6)存储过程. 文档查找 1.数据准备,find函数() var persons = [{ name:"jim", age:25, email:"75431457@qq.com", c:89,m:96,e:87, country:"USA", books:["JS&…
1.索引介绍 2.创建语句 1)基础索引 在字段age 上创建索引,1(升序);-1(降序):db.users.ensureIndex({age:1}) _id 是创建表的时候自动创建的索引,此索引是不能够删除的.当系统已有大量数据时,创建索引就是个非常耗时的活,我们可以在后台执行,只需指定“backgroud:true”即可. db.t3.ensureIndex({age:1} , {backgroud:true}) 2)文档索引 索引可以任何类型的字段,甚至文档: db.factories.…
查询 1. MongoDB使用find来进行查询.find的第一个参数决定了要返回哪些文档,这个参数是一个文档,用于指定查询条件.空的查询会匹配集合的全部内容.要是不指定查询,默认是{}. 2. 可以通过find的第二个参数来指定想要的键.这样即会节省传输的数量,又能节省客户端解码文档的时间和内存消耗.举例:db.users.find({},{"username":1,"email":1}) 3. 默认情况下"_id"这个键总是被返回,即便是没有…
Mongodb 是基于集合建立索引 (Index),索引的作用类似于传统关系型数据库,目的是为了提高查询速度 . 如果没有建立索引, Mongodb  在读取数据时必须扫描集合中的 所有文档记录. 这种全集合扫描效率是非常低的,尤其在处理大数据时,查询可能需要花费几十秒到几分钟的时间,这对基于互联网应用的网站来说是无法容忍的. 当集合建立索引后,查询将扫描索引内容,而不会去扫描对应的集合. 但在建立索引的同时,是需要增加额外存储开销的:在已经建立索引的情况下,若新 插入了集合文档记录,则会引起索…
在mongodb中,排序和索引其实都是十分容易的,先来小结下排序: 1 先插入些数据    db.SortTest.insert( { name : "Denis", age : 20 } ) db.SortTest.insert( { name : "Abe", age : 30 } ) db.SortTest.insert( { name : "John", age : 40 } ) db.SortTest.insert( { name :…
Solr与MongoDB集成,实时增量索引 一. 概述 大量的数据存储在MongoDB上,需要快速搜索出目标内容,于是搭建Solr服务. 另外一点,用Solr索引数据后,可以把数据用在不同的项目当中,直接向Solr服务发送请求,返回xml.json等形式的内容,使得对数据的使用更灵活. 对于MongoDB与Solr的描述不在这里阐释了,本文旨在给大家提供整个Solr与MongoDB接合的方法,实现实时的增量索引. MongoDB的官网:http://www.mongodb.org/ Solr项目…
MongoDB部署实验系列文章 MongoDB做为NoSQL数据库,最近几年持续升温,越来越多的企业都开始尝试用MongoDB代替原有Database做一些事情.MongoDB也在集群,分片,复制上也有相当不错的的表现.我通过将做各种MongoDB的部署实验进行介绍. 原网址:http://blog.fens.me/mongodb-shard/ 第三篇 MongoDB 自动分片 auto sharding,分为6个部分 初始化文件目录 启动shard节点 配置shard节点 插入数据分片实验 删…
原博文出自于: http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/page/4/ 感谢! MongoDB 自动分片 auto sharding MongoDB部署实验系列文章,MongoDB做为NoSQL数据库,最近几年持续升温,越来越多的企业都开始尝试用MongoDB代替原有Database做一些事情.MongoDB也在集群,分片,复制上也有相当不错的的表现.我通过将做各种MongoDB的部署实验进行介绍. 关于作者: 张丹(Co…
12-5. 自动删除相关联实体 问题 当一个实体被删除时,你想自动删除它相关联的实体 解决方案 假设你有一个表结构由一个course (科目), course 的classes (课程),以及enrollment (登记学生选课),如 Figure 12-5所示:. Figure 12-5. The Course, Class, and Enrollment tables in our database 由上述表生成一个模型,如下图Figure 12-6所示:. Figure 12-6. A m…
一:手写TSQL 脚本 1,自动备份 每周进行一次Database 的 Full Backup,设置 Schedule Interval 为Weekly use master go ) )+N'.bak' BACKUP DATABASE [TESTDB] TO DISK = @FileName WITH Compression ,INIT ,SKIP ,Format GO 每天进行一次Database的 Differential Backup,设置Schedule Interval 为Daily…
在开发过程中,随着项目的迭代,文件内部分import 可能早已经不用了,对于这种无用的 import,我们不可能一个一个文件的删除.这里记录个自动删除无用import的功能. 一 .开发环境: Android Studio  1.5 二.方法/步骤 1.启动Android Studio,打开项目,可以看到该java文件有多余的import,如图: 2.点击菜单中的“Code”,如图:   3. 再选子菜单"Optimize Imports...".   3.1 由于之前是选中当前文件的…
1.favicon.ico制作:favicon.ico可以ps制作;“shortcut icon”中间有一个空格 <head> <link rel="shortcut icon" href="favicon.ico"> </head> 2.正则表达式验证邮箱(可自动删除前后的空格) [\s*\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*\s*]  …
使用Devexpress+ReSharper进行开发,似乎是C/S开发的最佳搭配. 但在ReSharper使用时,发现一个非常烦人的问题:即按F5进行调试时,自动删除换行,这样不仅把代码搞乱了,而且有可能造成语法错误编译不通过的情况.例如: 原本的代码是: //列名 public string ColName { get; set; } F5进行调试后会出现: //列名public string ColName { get; set; } 网上已说了,是因为Devexpress+ReSharpe…
直接上脚本 热备(全备) #!/bin/bash user='root' passwd='123456' my_config='/etc/my.cnf' #mysql configure log=full-$(date +%Y%m%d-%H%M).log #log file format str=full-$(date +%Y%m%d-%H%M).tar.gz #mysqlbackup file format backup_dir='/var/www/html/manager/data/html…
源博客 http://blog.itpub.net/24996904/viewspace-769327/ 在/etc/default/目录下有个rcS文件,文件内容如下:## /etc/default/rcS## Default settings for the scripts in /etc/rcS.d/## For information about these variables see the rcS(5) manual page.## This file belongs to the…
在protel 2004 DXP中,“自动删除走线”的位置就在"PCB Editor"的默认页面,非常好找. 但是升级到了altium 6.7,6.9之后,很多人就找不到这个了. 很多人以为是“PCB Editor ——>General——>移除复制品”,其实是不对的,这个跟“自动删除重复走线”是没有任何关系的. 其实,在altium6.x中,“自动删除重复走线”的位置在 “DXP——>优先选项——>PCB Editor ——>Interactive Ro…
目前有一个备份目录,目录名称为d:\temp\bak目录,在这目录下,根据备份要求,自动生成了如下目录的列表: 20131012 20131011 20131010 20131009 20131008 20131007 ............. 现在需要自动删除7天之前的目录,只保留最近一周的目录备份数据. 当然删除方式有很多种方法,我们这里先讲下这个我们目前采用的方法,先把脚本写出来,我们根据脚本进行分析: param($removepath="d:\temp\bak", #设定需…