码迷,mamicode.com
首页 > 数据库 > 详细

Mongodb 笔记04

时间:2016-01-10 12:58:56      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:

特殊索引和集合

1. 固定集合:固定集合需要事先创建好看,而且它的大小是固定的。当固定集合被占满时,如果再插入新文档,固定集合会自动将最老的文档从集合中删除。

2. 创建固定集合:db.createCollection("my_collection",{"capped":true,"size":10000})  创建一个大小为10000字节的固定集合

    除了大小,createCollection还能指定固定集合中文档的数量:db.createCollection("my_collection",{"capped":true,"size":10000,"max":10})  

    指定文档数量时,必须同时指定集合大小。固定集合的文档数量不能超过文档数量限制,固定集合的大小也不能超过大小限制。

3. 将某个常规集合转换为固定集合:db.runCommand({"convertToCapped":"test","size":10000})   无法将固定集合转换为非固定集合。

4. 自然排序:自然排序返回结果集中文档的顺序就是文档在磁盘上的顺序。只有固定集合中的自然排序才有意义,对其他集合来说文档位置经常变化,自然排序意义不大。

5. 循环游标:一种特殊的游标,当循环游标的结果集被取光后,游标不会被关闭。当有新文档插入到集合时,循环游标会继续取到结果。由于普通集合并不维护文档的插入顺序,循环游标只能用在固定集合上。

6. 调用createCollection创建集合时指定autoIndexId选项为false,创建集合时就不会自动在"_id"上创建索引。实践中不建议这么用,但对于只有插入操作的集合来说,这确实可以带来速度上的稍许提升。

7. TTL索引:如果需要更加灵活的老化移出系统,可以使用TTL索引,这种索引允许为每一个文档设置一个超时时间。一个文档到达预设置的老化程度之后就会被删除。这种类型的索引对于缓存问题很有用。

    db.foo.ensureIndex({"lastUPdated":1},{"expireAfterSecs":60*60*24})            // 过期时间24小时

    MongoDB每分钟对TTL索引进行一次清理,所以不应该依赖以秒为单位的时间保证索引的存活状态。可以使用collMod命令修改expireAfterSecs的值:

    db.runCommand({"collMod":"someapp.cache","expireAfterSecs":3600})           

    一个给定的集合上可以有多个TTL索引,但TTL不能是复合索引。

8. 全文本索引:暂不建议使用,性能影响太大。

9. 地理空间索引:最常用的是2dsphere索引(用于地球表面类型的地图)和2d索引(用于平面地图和时间连续的数据)

10. 使用GridFS存储文件:GridFS是MongoDB的一种存储机制,用来存储大型二进制文件。

      优点:

      a. 简化你的栈,可以使用GRIDFS来代替独立的文件存储工具。

      b. 对文件存储做故障转义或者横向扩展更容易

      c. 可以比较从容地解决其他一些文件系统可能遇到的问题。

      d. 文件存储的集中度会比较高

      缺点:

  a. 性能低:从MongoDB中访问文件,不如直接从文件系统中访问文件速度快。

      b. 如果要修改GridFS上的文档,只能先将已有的文档删除。

      通常来说,如果你有一些不常改变但是经常需要连续访问的大文件,那么使用GridFS再合适不过。(性能呢?因为缓存到内存了?)

11. GridFS背后的理念:可以将大文件分割为多个比较大的块,将每个快作为独立的文档进行存储。有一个文档用于将这些块组织在一起并存储该文档的元信息。

12. 可以使用任何自定义的字段来保存必须的文件元信息。可能你希望在文件元信息中保存文件的下载次数,MIME类型或者用户评分。

 

Mongodb 笔记04

标签:

原文地址:http://www.cnblogs.com/Jtianlin/p/5118097.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!