背景 在分布式系统中,我们有多个web app,这些web app可能分别部署在不同的物理服务器上,并且有各自的日志输出.当生产问题来临时,很多时候都需要去各个日志文件中查找可能的异常,相当耗费人力.日志存储多以文本文件形式存在,当有需求需要对日志进行分析挖掘时,这个处理起来也是诸多不便,而且效率低下. 为了方便对这些日志进行统一管理和分析,我们可以将日志统一输出到指定的数据库系统中,再由日志分析系统去管理.由于这里是mongodb的篇章,所以主观上以mongodb来做日志数据存储:客观上,一是…
背景     在分布式系统当中,我们有各种各样的WebService,这些服务可能分别部署在不同的服务器上,并且有各自的日志输出.为了方便对这些日志进行统一管理和分析.我们可以将日志统一输出到指定的数据库系统中,而再由日志分析系统去管理.而这个储存日志的数据库目前最适合的还是mongodb,一是因为它轻便.简单,与log4j整合方便,对系统的侵入性低.二是因为它与大型的关系型数据库相比有不少优势,比如查询快速.储存结构(json)利于扩展.免费等. log4j与mongodb整合 1.首先安装m…
作者:HelloGitHub-*小鱼干 工欲善其事必先利其器,想要玩溜数据库,不妨去试试本文安利的 5 款开源的数据库管理工具.除了流行的 SQL 类数据库--MySQL.PostgreSQL 之外,文档型数据库 MongoDB.内存数据库 Redis 的管理工具也在列表之中. MongoDB 图形化的管理工具:Mongood GitHub Star 数 :222 Mongood 是一个 MongoDB 图形化的管理工具. 特性: 基于微软 Fluent UI,支持自动黑暗模式 支持完整的 Mo…
mongodb 投影意思是只选择必要的数据而不是选择一个文件的数据的整个.如果一个文档有5个字段,需要显示只有3个,然后选择其中只有3个字段. find() 方法 MongoDB 的find()方法,在 MongoDB查询 文档解释接受第二个可选参数是要检索的字段列表.在MongoDB中,当执行find()方法,那么它会显示一个文档所有字段.要限制这一点,需要设置的字段列表值1或0. 1用来显示字段而0是用来隐藏字段. 语法: find()方法具有投影基本语法如下 >db.COLLECTION_…
MongoDB提供了MapReduce的聚合工具来实现任意复杂的逻辑,它非常强大,非常灵活.MapReduce使用JavaScript作为“查询语言”,能够在多台服务器之间并行执行.它会将一个大问题拆分为多个小问题,将各个小问题发送到不同的机器上,每台机器只负责完成一部分工作.所有机器都完成时,再将这些零碎的解决方案合并为一个完整的解决方案. 在一般情况下,MapReduce操作有2个阶段:第一个阶段是映射(map)阶段,处理每一个符合要求的文档(即每个符合要求的文档都执行一次map的方法),然…
本篇博文主要介绍MongoDB中一些常用的特殊索引类型,主要包括: 用于简单字符串搜索的全文本索引: 用于球体空间(2dsphere)和二维平面(2d)的地理空间索引. 一.全文索引 MongoDB有一个特殊的索引用在文档中搜索文本,之前的博客都是用精确匹配来查询字符串,这些技术有一定的限制.在搜索大块文本的速度非常慢,而且无法处理自然语言礼节的问题.全文本索引使用的是“倒排索引”的思想来做的,和当前非常开源的lucene(全文检索,Apacle基金会下的开源项目)项目是一样的思想来做的.使用全…
简介: MongoDB是一个开源的文档数据库,支持高性能.高可用性.自动缩放. 在MongoDB中,一条记录就是一个文档,是由字段和值对构成一个数据结构,类似于JSON对象.字段的值可以包括其他文档.数组和文档的数组. 数据结构如下所示: mongodb中有三元素:数据库,集合,文档,其中“集合”就是对应关系型数据库中的“表”,“文档”对应“行”. 下载mongodb和robomongo: 到mongo官网下载mongodb软件.mongodb支持Windows.Linux.OSX.Solari…
数据库索引与书籍的索引类似,有了索引就不需要翻整本书,数据库可以直接在索引中查找,在索引中找到条目后,就可以直接跳到目标文档的位置,这可以让查找的速度提高几个数量级. 一.创建索引 我们在person这个集合的age键上创建一个索引,比较一下创建索引前后,一个查询的语句的性能区别. 创建索引:db.person.ensureIndex({"age":1}).这里我们使用了ensureIndex在age上建立了索引.“1”:表示按照age进行升序,“-1”:表示按照age进行降序. 没有…
mongodb性能分析方法:explain() 为了演示的效果,我们先来创建一个有200万个文档的记录.(我自己的电脑耗了15分钟左右插入完成.如果你想插更多的文档也没问题,只要有耐心等就可以了.) for(var i=0;i<2000000;i++){ db.person.insert({"name":"ryan"+i,"age":i}); } MongoDB 3.0之后,explain的返回与使用方法与之前版本有了很大的变化,介于3.0…
插入: 使用insert或save方法想目标集合插入一个文档: db.person.insert({"name":"ryan","age":30}); 使用batchInsert方法实现批量插入,它与insert方法非常类似,只是它接受的是一个文档数组作为参数.一次发送数十,数百乃至数千个文档会明显提高插入的速度. db.person.batchInsert([{"name":"ryan","ag…