MongoDB权威指南-第6章

来源:互联网 发布:xp桌面壁纸软件下载 编辑:程序博客网 时间:2024/06/06 17:41

MongoDB权威指南
特殊的索引和集合
6.1-固定集合
6.1.1-创建固定集合
固定集合要事先创建,而且它的大小是固定的
固定集合的行为类似循环队列.如果没有空间了,最老的文档会被删除,新插入的文档会占据这块空间
固定集合不能被分片
固定集合可用于记录日志,虽然可以在创建时指定大小,但无法控制什么时候数据会被覆盖.
db.createCollection(“myCollection”,{“capped”:true,”size”:100000})
db.createCollection(“myCollection”,{“capped”:true,”size”:100000,”max”:100})
固定集合的文档数量不能超过限制,大小也不能超过大小限制
常规集合转换为固定集合
db.runCommand({“convertToCapped”:”test”,”size”:10000})
6.1.2-自然排序
自然排序返回结果集中文档的顺序就是文档在磁盘上的顺序
{“natural”:1}  
                固定集合中的文档是按照文档的插入顺序保存的  
                    自然排序得到的文档是从旧到新排列的  
            6.1.3-循环游标  
                循环 游标的灵感来自于tail -f  
                由于普通集合并不维护文档的插入顺序,所以循环游标只能用在固定集合上  
                如果超过10分钟没有新的结果,循环游标就会被释放  
            6.1.4-没有_id索引的集合  
                创建集合时指定autoInexed为false,创建集合时就不会自动在”_id”上创建索引.实践中不建议这么使用  
                如果创建了没有_id索引的集合,那就永远都不能复制它所在的mongod了  
                _id索引必须是唯一索引  
        6.2-TTL索引  
            time-to-live index据有生命周期的索引  
                TTL索引允许为每个文档设置一个超时时间  
                一个文档到达预设置的老化程度后就会被删除  
                TTL索引对于缓存非常有用  
                db.foo.ensureIndex({“lastUpdated”:1},{“expireAfterSecs”:60*60*24})  
        6.3-全文本索引  
            6.3.1-搜索语法  
                在一个操作频繁的集合上创建全文本索引可能导致MongoDB过载,所以应该在离线状态下创建全文本索引  
                全文本索引仍然只是一个处于‘试验阶段’的功能  
                启动MongoDB时指定–setParameter textSearchEnabled=true选项  
            6.3.2-优化全文本搜索  
            6.3.3-在其他语言中搜索  
        6.4-地理空间索引  
            6.4.1-地理空间查询的类型  
                MongoDB支持几种类型的地理空间索引,最常用的是2dsphere索引和2d索引  
                2dsphere允许使用GeoJSON格式指定点、线和多边形
within
near6.4.2geometry
6.4.3-2d索引
6.5-使用GridFS存储文件
6.5.1-GridFS入门
GridFS是MongoDB的一种存储机制,用来存储大型二进制文件
GridFS会自动平衡已有的复制或者为MongoDB设置的自动分片,所以对文件存储做故障转移或横向扩展会更容易
缺点
GridFS的性能比较低:从MongoDB中访问文件,不如直接从文件系统中访问文件速度快
如果要修改GridFS上的文档,只能先将已有文档删除,然后再将新文档重新保存
如果你有一些不常改变但是经常需要连续访问的大文件,那么GridFS很适合
mongofiles工具(上传文件、下载文件、查看文件列表、搜索文件及删除文件)
get
put
6.5.2-在MongoDB驱动程序中使用GridFS
get
put
list
6.5.3-揭开GridFS的面纱
GridFS是一种轻量级的文件存储规范
背后理念:可以将大文件分割为多个比较大的块,将每个块作为独立的文档进行存储
GridFS中的块会被存储到专用的集合中.块默认使用的集合是fs.chunks
files_id块所属文件的元信息
n:块在文件中的相对位置
data:块所包含的二进制数据
chunkSize:组成文件的每个块的大小,单位是字节.默认值是256KB
可通过检查文件的md5校验值来确保文件上传正确
特殊的索引和集合
6.1-固定集合
6.1.1-创建固定集合
固定集合要事先创建,而且它的大小是固定的
固定集合的行为类似循环队列.如果没有空间了,最老的文档会被删除,新插入的文档会占据这块空间
固定集合不能被分片
固定集合可用于记录日志,虽然可以在创建时指定大小,但无法控制什么时候数据会被覆盖.
db.createCollection(“myCollection”,{“capped”:true,”size”:100000})
db.createCollection(“myCollection”,{“capped”:true,”size”:100000,”max”:100})
固定集合的文档数量不能超过限制,大小也不能超过大小限制
常规集合转换为固定集合
db.runCommand({“convertToCapped”:”test”,”size”:10000})
6.1.2-自然排序
自然排序返回结果集中文档的顺序就是文档在磁盘上的顺序
{“natural”:1}  
            固定集合中的文档是按照文档的插入顺序保存的  
                自然排序得到的文档是从旧到新排列的  
        6.1.3-循环游标  
            循环 游标的灵感来自于tail -f  
            由于普通集合并不维护文档的插入顺序,所以循环游标只能用在固定集合上  
            如果超过10分钟没有新的结果,循环游标就会被释放  
        6.1.4-没有_id索引的集合  
            创建集合时指定autoInexed为false,创建集合时就不会自动在”_id”上创建索引.实践中不建议这么使用  
            如果创建了没有_id索引的集合,那就永远都不能复制它所在的mongod了  
            _id索引必须是唯一索引  
    6.2-TTL索引  
        time-to-live index据有生命周期的索引  
            TTL索引允许为每个文档设置一个超时时间  
            一个文档到达预设置的老化程度后就会被删除  
            TTL索引对于缓存非常有用  
            db.foo.ensureIndex({“lastUpdated”:1},{“expireAfterSecs”:60*60*24})  
    6.3-全文本索引  
        6.3.1-搜索语法  
            在一个操作频繁的集合上创建全文本索引可能导致MongoDB过载,所以应该在离线状态下创建全文本索引  
            全文本索引仍然只是一个处于‘试验阶段’的功能  
            启动MongoDB时指定–setParameter textSearchEnabled=true选项  
        6.3.2-优化全文本搜索  
        6.3.3-在其他语言中搜索  
    6.4-地理空间索引  
        6.4.1-地理空间查询的类型  
            MongoDB支持几种类型的地理空间索引,最常用的是2dsphere索引和2d索引  
            2dsphere允许使用GeoJSON格式指定点、线和多边形
within
near6.4.2geometry
6.4.3-2d索引
6.5-使用GridFS存储文件
6.5.1-GridFS入门
GridFS是MongoDB的一种存储机制,用来存储大型二进制文件
GridFS会自动平衡已有的复制或者为MongoDB设置的自动分片,所以对文件存储做故障转移或横向扩展会更容易
缺点
GridFS的性能比较低:从MongoDB中访问文件,不如直接从文件系统中访问文件速度快
如果要修改GridFS上的文档,只能先将已有文档删除,然后再将新文档重新保存
如果你有一些不常改变但是经常需要连续访问的大文件,那么GridFS很适合
mongofiles工具(上传文件、下载文件、查看文件列表、搜索文件及删除文件)
get
put
6.5.2-在MongoDB驱动程序中使用GridFS
get
put
list
6.5.3-揭开GridFS的面纱
GridFS是一种轻量级的文件存储规范
背后理念:可以将大文件分割为多个比较大的块,将每个块作为独立的文档进行存储
GridFS中的块会被存储到专用的集合中.块默认使用的集合是fs.chunks
files_id块所属文件的元信息
n:块在文件中的相对位置
data:块所包含的二进制数据
chunkSize:组成文件的每个块的大小,单位是字节.默认值是256KB
可通过检查文件的md5校验值来确保文件上传正确
DISSIDIA思维导图

0 0