分类:服务和运维 相关文章

Mongodb索引

参考 MongoDB权威指南(第2版) Mongodb Docs 前言 建立索引对于任何需要提高查询速度的数据库来说都非常重要,那么索引究竟是一个什么?首先来看看下面是《区块链:技术驱动金融》这本书的前两章的目录。 第1章密码学及加密货币概述———-1 1.1密码学哈希函数———-4 1.2哈希指针及数据结构———-14 1.3数字签名———-19 1.4公钥即身份———-24 1.5两种简单的加密货币———-26 第2章比特币如何做到去中心化———-35 2.1中心化与去中心化———-37 2.2……

继续阅读»»»

Mongodb特殊索引和集合

参考 MongoDB权威指南(第2版) Mongodb Docs 特殊集合 封顶集合 封顶集合和普通集合不一样,普通集合的大小是可以随着数据的增加而增加的,封顶集合是在创建的时候就已经设置了集合的大小。 封顶集合的大小已经满了后,当再次插入数据的时候,它会把最老的数据丢掉,然后写入新数据,封顶集合不难看出很适合当log型数据库。 创建封顶集合 创建封顶集合我们需要显式的创建集合,因为需要在显式创建的方法中设置一些选项,同时我们需要在选项中设置两个选项capped和size。 db.createCollection(‘test’, { capped: true, size: 10485760 }……

继续阅读»»»

Mongodb GridFS

参考 MongoDB权威指南(第2版) Mongodb Docs 前言 Mongodb提供了一个轻量级的文件系统来专门处理超过16MB的文件,这个文件系统叫GridFS,它的使用非常简单,几乎所有的Mongodb驱动程序都提供了GridFS API。GridFS将集合放在一个共享的储存区域,GridFS使用两个集合来存储我们存放的数据: fs.files:这个集合当中的每一个文档都表示一个文件的信息 fs.chunks:这个集合中存放实际的数据内容 GridFS存储的文件无法进行修改,如果要进行修改只能删除修改的文档,然后再将修改完的文档重新保存。 下面讲一下如何使用Mongodb提供的mon……

继续阅读»»»

Mongodb 聚合

参考 MongoDB权威指南(第2版) Mongodb Docs 前言 Mongodb提供了一个强大的处理框架,可以对集合中的文档进行各种组合、过滤、输出,如果你通过Mongodb其他的查询方法无法处理你的查询或者查询难度很高,那么你可以试试聚合。 这里我们只讲解一下常用的聚合管道操作符,其他的可以自行到官方文档进行查询。 语法 官方文档的聚合语法是这样的: db.collection.aggregate(pipeline,options); 聚合:计算集合或视图中数据的聚合值,并且聚合接受一个数组,数组的每一个成员都是对象,对象里面子键都代表一个管道操作,按照顺序的从第一个管道操作到最后一个……

继续阅读»»»

Mongodb MapReduce

前言 在上一节中说到了appregate聚合功能,聚合功能已经非常强大了,但是如果你还是无法通过聚合解决问题的话,那么你可能需要使用MapReduce了。 MapReduce提供了Javascript的解释器,所以非常的强大,并且MapReduce可以在多台服务器之间并行的执行,将一个大问题拆分为多个小问题然后分发执行并返回,但是这样的代价就是牺牲了速度,所以才产品发布环境中尽量不要使用MapReduce,因为会很慢很慢。 MapReduce分为两个部分,一个为map一个为reduce,它们两个都是一个纯Js函数,map分别对作用的集合里的每一个文档传入自身函数进行调用返回了一个不同键值对组成……

继续阅读»»»

Mongodb 副本集

介绍 Mongodb官方提供了一个复制功能,它提供冗余的功能,它可以将数据保存在不同服务器上,并保持多个服务器的数据一致性。 当主要提供数据的服务器出现了问题不能访问等问题,副本集中的其他服务器会自动替代主要提供数据的服务器进行提供数据功能。 副本集中有三个角色: 主节点:所有副节点的数据均来自于主节点,并且只能对主节点进行读写操作。 副节点:数据来自于主节点,可以进行读取操作,但是不能进行写操作。 仲裁者:不含数据也不与客户端交流,只在选举主节点的时候进行投票。 选举机制 Mongodb最多支持50个副本集成员以及最多7个选举成员,启动副本集后将开始第一次选举,在选举过程中,所有副本集成员都……

继续阅读»»»

Mongodb 分片

介绍 分片是指将数据拆分,并分散放在多个服务器中组成一个集群,这可以将N台服务器的性能集中到一起来处理数据,这将很大程度的提高数据处理的速度。 在Mongodb的分片中必须具备三个角色: 路由服务器:用于处理和响应请求,并把各个分片服务器查询到的结果处理合并然后返回。 配置服务器(configServer):存储集群、数据的描述信息。 分片服务器:用于储存拆分的数据服务器。 而这三个角色都是普通的数据库,只是扮演的角色不一样。 它们的请求、响应流程就如下图中表示一样: 因为所有的应用程序都是通过路由进行请求,所以对于应用程序来说,它没有什么不同就如请求一个普通数据服务器一样: 搭建配置服务器 ……

继续阅读»»»

Mongodb 监测

介绍 为什么要进行监控状态,因为在实际的情况中可能会发生一下无法预计的情况,比如阻塞的问题,阻塞的原因会有很多种情况造成,如果当我们查询文档的时候发生了阻塞,那么就会影响到后面的操作,甚至无法对后面的操作进行响应。 我们可以通过监控很快速的找到到底是哪里出了问题,这样有助于我们快速定位所在的问题,从而得到解决。 Mongodb官方提供了三种用语分析Mongodb的方式: Mongodb自带的监控工具:用于提供数据库活动的实时报告 数据库命令:以更真实的情况返回数据库状态的统计信息 第三方平台托管监控 Mongodb自带监控工具 mongostat mongostat是官方随同mongodb下载……

继续阅读»»»

Mongodb 数据修复

介绍 很多时候我们看见数据目录下有一个mongodb.lock文件,这个文件在开启了日志系统后不会出现,在没有开启日志系统的情况下非常重要,并且有时发现重新启动数据库的时候无法启动了,然后删除mongodb.lock又可以启动了,但是尽量不要这样做。 当Mongodb启动的时候会建立一个mongodb.lock文件,而正常退出的时候就会删除这个文件,但是遇见非正常退出,这个文件就滞留了,Mongodb就会得知上一次是非正常退出,所以第一时间不是删除这个文件启动,而是尝试着修复数据,再进行启动。 mongod –repair mongod内置了一个修复数据的选项,这个工具相比与下面介绍的另一种……

继续阅读»»»

Mongodb 备份及恢复

介绍 无论在什么情况下都应该进行数据备份,才能避免灾难性的数据损坏,下面将介绍两种备份方式,两种备份方式使用的场景也不一样,可以根据自身的使用情况进行选择 复制文件备份 在复制数据库文件之前,我们可以通过db.fsynclock()方法让数据库禁止一切写入,并把所有在缓存中的信息全部同步到磁盘中,让所有的写操作进入队列,在没有取消锁之前,Mongodb不会对任何写操作进行处理。 > db.fsyncLock(); 首先给数据库上锁,以免出现我们在备份的过程中同时还有数据写入 $ cp -R /data/blog/* /data/Backup/blog //复制数据库所有的文件到备份目录 ……

继续阅读»»»