MongoDB学习笔记(二)

MongoDB 固定集合(Capped Collections)

Capped Collections是性能出色的有着固定大小的集合,以LRU(最近最久未使用)规则和插入顺序执行age-out(老化移出 )处理,自动维护集合中对象的插入顺序

命令

创建Capped Collections(autoIndex是否自动创建索引)

db.createCollection(“mycoll”, {capped: true, size : 100000, autoIndex: false})

通过isCapped()方法可以验证collection是不是Capped Collection

db.isCapped()

普通的collection转换为Capped Collection

db.runCommand({ “convertToCapped”: “mycoll”, size: 100000 })

用途

Capped Collection是MongoDB中日志机制的首选,没有日志文件,而是把日志事件存储在数据库中,在一个没有索引的Capped Collection插入对象的速度与文件系统中记录日志的速度相当

GridFS规范

GridFS规范提供了一种透明的机制,可以将一个大文件分割成多个较小的文档,这样的机制允许有效地保存大文件对象,特别是那些巨大的文件

使用两个表来存储数据:files(包含元数据对象)、chunks(包含其他一些相关信息的二进制块)

Map-Reduce

Map-Reduce是一种计算模型,简单的说就是将大批量的工作(数据)分解(MAP)执行,然后再将结果合并成最终结果(REDUCE)

db.collection.mapReduce(
   function() {emit(key,value);},  //map 函数
   function(key,values) {return reduceFunction},   //reduce 函数
   {
      out: collection,
      query: document,
      sort: document,
      limit: number
   }
)

Map 函数调用 emit(key, value), 使用this来访问当前待处理的document,遍历 collection 中所有的记录, 将 key 与 value 传递给 Reduce 函数进行处理

MapReduce可以被用来构建大型复杂的聚合查询

安全性

  • 限制特定IP地址访问
  • 设置监听端口
  • 使用用户名和口令登录

索引及优化

索引:指的是对数据库表中一列或者多列的值进行排序的一种结构,用来快速寻找那些具有特定值得记录,可以加快查询速度,索引也是一种MongoDB对象,它是一组排好序的键组成,这些键是从相应表中的一个列或者多个列抽取出来,默认情况下,为_id字段创建索引

db.things.ensureIndex({age : 1})

建立唯一索引:

db.things.ensureIndex({firstName: 1, lastName : 1}, {unique : true})

当表中有重复数据的时候,不能建立唯一索引

优化器Profiler

MongoDB自带Profiler,可以非常方便地记录所有耗时的操作,以便于调优,这也是它叫做“优化器”的原因

Profiler的级别从配置角度来说就是一个数值,不同级别对应不同的值,即对应不同的功能,

  • 0(不开启)
  • 1(记录慢命令)
  • 2(记录所有命令)

复制集

MongoDB支持在多个机器中通过异步复制实现故障转移和数据冗余。复制机制分为了两种:主从复制和Replica Sets(复制集),Replica Sets结构类似一个集群,完全可以把它当作一个集群,当其中一个节点发生故障,其他节点马上会将业务接管过来而无须停机操作。

读写分离

大部分的Web应用都用数据库作为数据持久化工具,而数据库有时候在并发访问存储且负载压力较大的情况下,也能成为系统性能的瓶颈,而“读写分离”就是一种有效降低数据访问符合的方式

“读写分离”首先将那些CPU及内存消耗严重的操作分离到一台或几台性能很高的机器上,而将频繁读取的操作放到几台配置较低的机器,然后,通过数据同步机制,实现多个数据库之间快速高效地同步数据,从而实现将读写请求按照实际负载情况进行均衡分布的效果

故障转移

广义上来说,故障转移对于重要的服务,使用多台服务器协同工作,共同执行同一个服务,放一台服务器发生故障时候,可以由另外的服务器暂代原有的服务,等待故障机的恢复和重新加入集群,从而在不需要人工干预的情况下,自动保证系统能持续提供服务,这种集群一般称为高性能集群

Sharding —分片

Sharding不是一门新技术,只是一个相对简单的软件理念,Sharding不是某个特定数据库软件附属的功能,而是在具体技术细节之上的抽象处理,是水平扩展(Scale Out,横向扩展或向外扩展)的解决方案,主要目的是突破单节点数据库服务器的I/O能力限制,最终解决数据库扩展问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值