mongoDB去重操作性能指标

最近刚完成mongoDB的压力测试,单集合内拥有2亿条数据。2亿多的数据量跑一次聚合操作会是怎么样的结果呢? 我们的测试环境还是老机器配置(5台分片集群、至强3.3GHZ、16G内存),集合依据上篇文章的结果不做索引。而实验的聚合操作可参考以前的文章。使用3个stage操作将集合中重复的用户统计。 db. »

在Docker搭建Node.js+mongoDB开发环境

这周通过docker将整个技术栈更新一下,首先介绍Docker的基本概念。 Docker是在LXC上构建的容器引擎。我这里主要讲起当作更加灵巧的虚拟机用。Docker主要有如下4个概念,简单介绍一下。 镜像:类似虚拟机快照,大多都是在现有工具镜像上创建新镜像。我今天使用的都是官方的镜像。 容器:从镜像中创建应用环境, »

Paper Reader:Analysis Farm: A Cloud-based Scalable Aggregation and Query Platform for Network Log Analysis

这篇论文的主要内容是实现了要给日志分析的原型系统,其最底层使用OpenStack虚拟,数据存储层使用mongoDB。文中通过几个实验阐述了这一套架构的可扩展性和可行性。作者是上海交大的几个同学。我主要翻译相关技术内容,其研究实际背景和人称与原文可能多有所出入。论文地址 0. 摘要 网络监控数据可以提供与网络数据状态相关的信息。通过频繁的探针、 »

Paper Reader:Analysis of range-based key properties for sharded cluster of MongoDB

前述很多mongoDB集群的使用和性能优化,发现一些还有可以优化因子值得好好研究。本文首先补充一直没有提到但已经使用了好久的分片集群的知识,然后再贴上标题论文的翻译以引出分片集群优化的引子。 1. 分片集群 在《从MongoDB入门到编写数据库相关API》一文中提及了mongoDB的自动分片功能。分片就是将数据拆分,将其分散存放在不同的节点上的过程。这是数据库水平扩展( »

越过大山和mongoDB查询操作的坑

本周在2亿数据集上跑mapreduce(以下简称MR)和aggreation framework(AF)计算,但处理的速度非常慢。本文从索引入手寻找解决之道,针对这类问题进行简单的分析、实验。 1. 索引 »

MongoDB MapReduce实践

上回说到采用mongoDB自带的Aggregation功能来处理数据,但我们发现当数据量大时(1000w records)执行时间非常长。并且处理数据的结果文档超过16MB时就会报错,当然可以使用了$out的操作符来结果集大小的限制。这篇mongoDB系列文章有详细的用法和比较,文末总结并提出:简单固定的聚合操作使用管道,但是对于复杂的、 »

MongoDB Aggregation实践

内容为依据实验室项目需求来使用MongoDB聚合操作来将处理的数据存到集合中。 数据聚合 mongoDB的数据聚合使用了聚合管道(Aggregation Pipeline)和MapReduce。MapReduce将数据分两部分进行处理。首先是map步骤,以key/vaule的形式转换输入的文档并以key值来进行分组。然后是reduce步骤,在这个阶段中以key来获取最终结果。 »

部署有身份验证的mongoDB

mongoDB默认情况下是不需要身份认证的,但是处于生产环境安全的考虑,还是不能省去这一步的。本文将在这篇文章所述环境下部署带身份认证的mongoDB双副本集系统,具体内容包括了: 配置用户和身份验证 配置内部验证到副本集 mongo-connector的验证方法 1. 配置用户和身份认证 Web开发中,确保系统的安全也是后端开发任务之一。 »

从MongoDB入门到编写数据库相关API

这篇文章为实验室开会本人讲解mongoDB的讲义,主要讲述两个内容:MongoDB的入门和Nodejs编写相关API入门。内容比较简单,但是实践性比较大,最终的目的是实验室的师弟师妹们能够通过编写Node将‘从数据库增删查改数据’——‘提供给前端调用的API’这个后端工作流实现。内容有些欠缺地方,还需大家指点。 前期准备— »

MongoBD+Solr全文搜索的历程

当存储到数据库中的数据涉及到文本,针对文本的搜索需求就应运而生。MongoDB也支持文本的搜索,不过很可惜的是,MongoDB的$text不支持中文分词功能,在搜索中文文本时只会字符的匹配,这在使用上非常不方便。 最近做的一个项目中就有这个需求。师哥推荐solr+mmseq4j的组合实现中文搜索。最初的设想只是针对邮件系统的标题以及正文两个字段的提供搜索。 »

MongoDB更新操作符的实践

和查询操作符类似,更新操作符处理最复杂的对象也是数组。我们按照上一篇文章的方法,先总结我所用到的操作符,再结合项目中遇到的实例组合使用操作符。 1. 字段更新操作符 上图描述十分清晰地阐明了使用场景。$inc不仅可以增加还可以减少字段的值。$setOnInsert则需要和{ upsert: true »

MongoDB查询以及投影操作符的实践

当使用MongoDB提供复制操作时,需要简单的CURD操作基础上使用一些操作符(如同$eq这样的操作符),mongoDB官网文档[1]有其详细介绍。需要注意的是,Node端所使用的Mongoose工具,在API上与原生的驱动还是有细微的区别。,本文结合mean.js( »