Mongodb

特殊集合和索引

固定集合

之前介绍的集合都是随着文档插入规模不断变大的,固定的集合是规模是固定的,结构和循环队列类似,如果没有空间了,就替换最老的文档

  • 创建:和普通集合不同,固定集合需要显式的进行创建,创建后其属性就不能再被改变了

  • 自然排序:固定集合可以按数据插入的顺序读取数据

  • 循环游标:类似于tail -f,可以持续的从集合中获取数据,只适用于固定集合

  • 没有_id索引的集合

    • 允许一个集合不需要_id索引,可以提高数据插入效率
    • 2.2版本以前固定集合默认是没有id索引的

TTL索引

固定集合中内容会被自动覆盖,控制不是很灵活,TTL(time to live index)生命周期索引,允许为每一个文档设置一个超时时间

TTL是创建一个索引,对指定字段(时间类型)的数据进行比对,超过设置的过期时间之后该文档会被删除,这里清理的频率上每分钟,所以不能保证秒级别的过期时间

全文本索引

类似于ES的索引,mongo中可能还不是很成熟,对性能的影响可能会很大,需要衡量好再使用

地理空间索引

mongo支持几种地理空间索引,可以用来进行相关数据的存储和查询

GridFS存储文件

是mongo的大型二进制文件存储机制,如果已经使用了mongo的技术栈可以考虑使用,来作为一个文件存储工具

优点:

  • 自动进行分布式平衡和复制,是一种扩容和安全性保障机制
  • 可以在一个目录下存储大量文件,且存储会比较集中

缺点:

  • 性能较低,不如直接从文件系统中访问快(估计是抛出网络传输因素之后也更慢的意思)
  • 不能增量更新