MongoDB -- 特殊集合和索引
特殊集合和索引
固定集合
之前介绍的集合都是随着文档插入规模不断变大的,固定的集合是规模是固定的,结构和循环队列类似,如果没有空间了,就替换最老的文档
创建:和普通集合不同,固定集合需要显式的进行创建,创建后其属性就不能再被改变了
自然排序:固定集合可以按数据插入的顺序读取数据
循环游标:类似于tail -f,可以持续的从集合中获取数据,只适用于固定集合
没有_id索引的集合
- 允许一个集合不需要_id索引,可以提高数据插入效率
- 2.2版本以前固定集合默认是没有id索引的
TTL索引
固定集合中内容会被自动覆盖,控制不是很灵活,TTL(time to live index)生命周期索引,允许为每一个文档设置一个超时时间
TTL是创建一个索引,对指定字段(时间类型)的数据进行比对,超过设置的过期时间之后该文档会被删除,这里清理的频率上每分钟,所以不能保证秒级别的过期时间
全文本索引
类似于ES的索引,mongo中可能还不是很成熟,对性能的影响可能会很大,需要衡量好再使用
地理空间索引
mongo支持几种地理空间索引,可以用来进行相关数据的存储和查询
GridFS存储文件
是mongo的大型二进制文件存储机制,如果已经使用了mongo的技术栈可以考虑使用,来作为一个文件存储工具
优点:
- 自动进行分布式平衡和复制,是一种扩容和安全性保障机制
- 可以在一个目录下存储大量文件,且存储会比较集中
缺点:
- 性能较低,不如直接从文件系统中访问快(估计是抛出网络传输因素之后也更慢的意思)
- 不能增量更新