mongoDB的Journaling日志功能与常见的log日志是不一样的,mongoDB也有log日志,它只是简单记录了数据库在服务器上的启动信息.慢查询记录.数据库异常信息.客户端与数据库服务器连接.断开等信息.Journaling日志功能则是mongoDB里面非常重要的一个功能,它保证了数据库服务器在意外断电.自然灾害等情况发生下数据的完整性.尽管mongoDB还提供了其它的复制集等备份措施(后面会分析),但Journaling的功能在生产环境中是不可缺少的,它依靠了较小的CPU和内存消耗,…
锁粒度与并发性能怎么样? 数据库的读写并发性能与锁的粒度息息相关,不管是读操作还是写操作开始运行时,都会请求相应的锁资源,如果请求不到,操作就会被阻塞.读操作请求的是读锁,能够与其它读操作共享,但是当写操作请求数据库时,它所申请的是写锁,具有排它性. MongoDB在2.2之前的版本,锁的粒度是非常粗的,它会锁住整个mongod实例.这意味着当一个数据库上的写锁被请求后,对mongod实例上管理的其它数据库的操作都会被阻塞.2.2版本降低了锁的粒度,引入了单个数据库范围的锁,也就是说读写操作的锁…
1. 复制集概述 数据库总是会遇到各种失败的场景,如网络连接断开.断电等,尽管journaling日志功能也提供了数据恢复的功能,但journaling通常是针对单个节点来说的,只能保证单节点数据的一致性,而复制集通常是由多个节点组成,每个节点除了journaling日志恢复功能外,整个复制集还具有故障自动转移的功能,这样能保证数据库的高可用性.在生产环境中一个复制集最少应该包含三个节点,其中有一个必须是主节点,典型的部署结构如下图:…
http://www.cnblogs.com/longshiyVip/p/5097336.html 概述了复制集,整体上对复制集有了个概念,但是复制集最重要的功能之——自动故障转移是怎么实现的呢?数据同步又是如何实现的?带着这两个问题,下面展开分析. 一. 数据同步 先利用mongo客户端登录到复制集的primary节点上. >mongo --port 查看实例上所有数据库 rs0:PRIMARY> show dbs local .09375GB 可以看到只有一个local数据库,因为此时还没…
数据库保存记录的机制是建立在文件系统上的,索引也是以文件的形式存储在磁盘上,在数据库中用到最多的索引结构就是B树.尽管索引在数据库领域是不可缺少的,但是对一个表建立过多的索引会带来一些问题,索引的建立要花费系统时间,同时索引文件也会占用磁盘空间.如果并发写入的量很大,每个插入的文档都要建立索引,可想而知,性能会较低.因此合理的建立索引是关键,搞清楚哪些字段上面需要建立索引,索引以什么样的方式建立,我们需要对每个查询过程进行分析,才能得出合理的结论. 1. 索引 在MongoDB上面,索引能够提高…
聚集操作是对数据进行分析的有效手段.MongoDB主要提供了三种对数据进行分析计算的方式:管道模式聚集分析,MapReduce聚集分析,简单函数和命令的聚集分析. 1. 管道模式进行聚集 这里所说的管道类似于Unix上的管道命令.数据通过一个多步骤的管道,每个步骤都会对数据进行处理,最后返回需要的结果集.管道提供了高效的数据分析流程,是MongoDB中首选的数据分析方法.一个典型的管道操作流程如下图所示:…
与关系数据库一样,MongoDB也是通过锁机制来保证数据的完整性和一致性,MongoDB利用读写锁来支持并发操作,读锁可以共享写锁具有排他性.当一个读锁存在时,其他读操作也可以用这个读锁:但当一个写锁存在时,其他任何读写操作都不能共享这把锁,当一个读和写都等待一个锁时,MongoDB将优先分配锁给写操作. 从版本2.2开始,MongoDB在每一个数据库上实现锁的粒度,当然对于某些极少数的操作,在实例上面的全局锁依然存在,锁粒度的降低能够提高系统的并发性.成熟的关系数据库锁的粒度更低,它可以在表中…
1.1 什么大数据 具体来说,大数据技术涉及到数据的创造,存储,获取和分析,大数据的主要特点有下面几个: 数据量大.一个典型的PC机载2000年前后其存储空间可能有10GB,今天facebook一天增加的数据量就将近有500TB:一架波音737的飞机绕美国飞行一周将会产生200TB的数据:移动互联网的发展,智能手机的普及,人们每时每刻都在产生数以万计的数据. 数据变化快.高速的股票交易市场,产生的数据以微秒计算:基础设施系统,实施系统每秒都产生大量变化的日志,每秒都处理大量的并发. 数据多样性.…
第四章 Mongodb聚合函数 插入 测试数据 ;j<;j++){ for(var i=1;i<3;i++){ var person={ Name:"jack"+i, Age:i, Address:["henan","wuhan"], Course:[ {Name:"shuxue",Score:i}, {Name:"wuli",Score:i} ] } db.DemoTest.Person.in…
更新文档主要有以下几种方法: db.collection.updateOne(filter, update, options) db.collection.updateMany(filter, update, options) db.collection.replaceOne(filter, update, options) 另外MongoDB提供了更新运算符,更加方便我们进行文档的更新.其使用方法如下: { update operator: { field1: value1, ... }, u…