mongodb固定集合、TTL集合

2024-03-15 07:32
文章标签 mongodb 集合 固定 ttl

本文主要是介绍mongodb固定集合、TTL集合,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

mongodb固定集合、TTL集合

在数据量较少的情况下,或者只需要保存部分的数据,使用固定集合不失为一个比较好的选择。

  • 插入、查询的速度非常快。

创建固定集合

  • 有点类似数据结构中的循坏队列,先进先出方式。满队列删除原来的元素。

  • 固定集合与普通集合有所不同,需要显示的创建,指定size,max参数。当其中某个条件满足,将会删除最先进来的元素。

  • db.createCollection(“test_log”,{capped:true,size:2,max:2})
    查看索引
    mongos> db.test_log.getIndexes()
    [
    {
    “v” : 1,
    “key” : {
    “_id” : 1
    },
    “name” : “id“,
    “ns” : “admin.test_log”
    }
    ]

  • 自然排序的方式,在mongodb3.0以上默认采用_id作为索引。

  • 也可以自定义索引。

转换为固定集合

  • 普通集合可以通过 convertToCapped将普通集合转为固定集合

    db.runCommand({convertToCapped:”test_2”,size:10,max:3})

     但是固定集合的特点是:
     不能进行分区,因为它本身就是不是针对大数据集合的,所以,也许这个时候可以考虑使用TTL索引。

TTL集合

通过创建TTL索引,就构建了一个TTL集合,索引建立的原则:
- 索引字段必须为时间类型
- 在本地上进行测试,进行多个分片,片键选择为key1+timeKey,成功分片。
- 确保数据保存在一定范围内,其实主要是后台有一个线程,平均60s执行一次,对超期的数据进行删除。所以,这部分也有性能的损耗,需要权衡。

建立语句:

db.ttl_test.ensureIndex({“time”:1},{expireAfterSeconds:20}})

设置其为20s后删除数据,真实情况下可能并不能精确到20s.

选择

对于大数据量来说,希望只保存几个月的数据,固定集合与TTL貌似都是对数据进行的限制。但是固定集合无法精确到具体的时间,文档的条数与文档大小都不能确定。主要是固定集合无法分片,对于需要经常查询的可能就不是太合适。
当然仅仅保存log文件,查看最新的log还是不错的选择

这篇关于mongodb固定集合、TTL集合的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/811231

相关文章

C++中unordered_set哈希集合的实现

《C++中unordered_set哈希集合的实现》std::unordered_set是C++标准库中的无序关联容器,基于哈希表实现,具有元素唯一性和无序性特点,本文就来详细的介绍一下unorder... 目录一、概述二、头文件与命名空间三、常用方法与示例1. 构造与析构2. 迭代器与遍历3. 容量相关4

Redis中的有序集合zset从使用到原理分析

《Redis中的有序集合zset从使用到原理分析》Redis有序集合(zset)是字符串与分值的有序映射,通过跳跃表和哈希表结合实现高效有序性管理,适用于排行榜、延迟队列等场景,其时间复杂度低,内存占... 目录开篇:排行榜背后的秘密一、zset的基本使用1.1 常用命令1.2 Java客户端示例二、zse

Java集合之Iterator迭代器实现代码解析

《Java集合之Iterator迭代器实现代码解析》迭代器Iterator是Java集合框架中的一个核心接口,位于java.util包下,它定义了一种标准的元素访问机制,为各种集合类型提供了一种统一的... 目录一、什么是Iterator二、Iterator的核心方法三、基本使用示例四、Iterator的工

Java JUC并发集合详解之线程安全容器完全攻略

《JavaJUC并发集合详解之线程安全容器完全攻略》Java通过java.util.concurrent(JUC)包提供了一整套线程安全的并发容器,它们不仅是简单的同步包装,更是基于精妙并发算法构建... 目录一、为什么需要JUC并发集合?二、核心并发集合分类与详解三、选型指南:如何选择合适的并发容器?在多

python语言中的常用容器(集合)示例详解

《python语言中的常用容器(集合)示例详解》Python集合是一种无序且不重复的数据容器,它可以存储任意类型的对象,包括数字、字符串、元组等,下面:本文主要介绍python语言中常用容器(集合... 目录1.核心内置容器1. 列表2. 元组3. 集合4. 冻结集合5. 字典2.collections模块

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

Java集合中的链表与结构详解

《Java集合中的链表与结构详解》链表是一种物理存储结构上非连续的存储结构,数据元素的逻辑顺序的通过链表中的引用链接次序实现,文章对比ArrayList与LinkedList的结构差异,详细讲解了链表... 目录一、链表概念与结构二、当向单链表的实现2.1 准备工作2.2 初始化链表2.3 打印数据、链表长

Java中的数组与集合基本用法详解

《Java中的数组与集合基本用法详解》本文介绍了Java数组和集合框架的基础知识,数组部分涵盖了一维、二维及多维数组的声明、初始化、访问与遍历方法,以及Arrays类的常用操作,对Java数组与集合相... 目录一、Java数组基础1.1 数组结构概述1.2 一维数组1.2.1 声明与初始化1.2.2 访问

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

C#之List集合去重复对象的实现方法

《C#之List集合去重复对象的实现方法》:本文主要介绍C#之List集合去重复对象的实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C# List集合去重复对象方法1、测试数据2、测试数据3、知识点补充总结C# List集合去重复对象方法1、测试数据