mongoDB设计目标是功能齐全、易扩展、灵活快速的数据存储。不同于关系数据库的严谨表结构和表之间数据的复杂关系,以及mongoDB将一些复杂的逻辑交由用户端自行编写程序处理,也是mongoDB 高性能、易扩展的部分原因。
特殊的索引。mongoDB有三种特殊的索引:地理空间索引、全文搜索索引、TTL索引。
地理空间索引可以点、线、多边几何图形的形式给出,通过交集(intersection)、包含(within)和接近(nearness)3种类型运算进行地理空间查询,从而可以确定如用户当前所在位置、用户当前所在街区的餐馆数量、指定范围内的餐馆。
全文搜索索引即text索引。如果用户需要通过提交一些关键词来进行文本匹配查询,那么可以使用text索引。使用文本索引时,字符串会被标记并进行词干提取,很多地方会发生索引更新,因此创建text索引可能会消耗大量的系统资源。
TTL索引是指基于日期字段来创建索引并设置一个超时时间,来删除过期的数据。
GridFS。mongoDB使用GridFS规范来存储大型二进制文件,它可作为独立的文件存储工具。GridFS底层机制是将大文件分割为多个块(chunk),并将每个块作为独立文档进行存储,并有一个文档来记录这些块的元数据。
固定集合。一般的集合都是按需扩展容量的,而mongoDB种的固定集合是需要提前创建好的、大小固定的。固定集合满了之后会在插入新数据时,自动淘汰最旧的数据。这种集合的好处是,固定的空间让机械硬盘的写入速度非常快。这种集合的限制也比较多,如大小不能被改变、只能自动淘汰数据而不能手动删除。