【NoSql】MongoDb

一. 文档

1. 官网

2. C# Driver

3. C# 开发文档

二. 命令

1. --config "C:\mongodb\mongod.cfg" 设置 config 文件, 推荐通过设置配置文件来启动mongod

三. 可视化管理工具

1. robomongo 源码

四. 注意点(与 Sql Server 的不同点)

1. _id Mongo 的主键,建议自己维护该字段(可用自增或Guid),查询条件已该字段为主以提供性能。

2. Mongo 是区分大小写的,这个要格外注意

3. 修改字段时,如果字段不存在则会新增字段

五. 适用场景

1. 插入

2. 完全命中索引的查询,更新,删除

3. 不适用 全文索引

六. 性能测试

1. 环境 : 系统 Win10, CPU i5-5257U 2.70GHz, 内存 8G, 硬盘 APPLE SSD SM0128G

2. 插入:

  a. 数据准备:实体 包含6个字段,_id 自增,4个string类型内容30个随机中文,一个随机int

  b. 每次插入10w条,单线程循环100次

  c. 结果 : 平均耗时:3.887秒

         IO占用:11M(注没有跑满)

         内存占用 : 3.8G(注没有跑满,不过增长不是线性的,内部应该有内存控制)

         CPU : 占用不多

         硬件资源没有跑满,多线程下总耗时会下降但单个耗时会上升

3. 查询总量:

  a. 单线程循环100次

  b. 结果 :平均耗时 : 1毫秒

        应该插入和删除时内部有字段来标志总数,所以查询时不需要全表扫描,直接返回标志

4. 查询按 _id :

  a. 随机生成1000w以内的数字,以此为条件查询,单线程循环100次

b. 结果 :平均耗时 : 1毫秒

5. 查询分页(Skip+Limit)

  a. 以 _id 排序,随机生成页数,每页100条数据,单线程循环100次

  b. 结果 :页数越大,耗时越高

        页数 10 : 平均耗时 5 毫秒

        页数 100: 平均耗时 28 毫秒

        页数 1000: 平均耗时 225 毫秒

        页数 10000: 平均耗时 1965 毫秒

6. 查询分页(Maxid+Limit)

  a. 以 _id 排序,随机生成 Maxid ,以此为判断条件,每页100条数据,单线程循环100次

  b. 结果 :平均耗时 2 毫秒

        比 (Skip + Limit)的性能高非常多,且耗时不会随着页数增大而增大

        不过需要把上一次查询的最大 _id 作为条件且 _id 为 int 类型

7. 删除

  a. 随机生成_id ,以此为判断条件,单线程循环100次

  b. 结果 : 平均耗时 1 毫秒

8. 更新

  a. 随机生成实体,以此实体的 _id 为判断条件,单线程循环100次

  b. 结果 : 平均耗时 1 毫秒

9. 结论 :

  a. 完全命中 _id 索引的操作都是非常快的,都在毫秒级

  b. 对硬件的要求, 对 CPU 要求不高, 硬盘 10M 写入以上, 内存 越高越好

      

【NoSql】MongoDb的更多相关文章

  1. 【转】MongoDB资料汇总专题

    1.MongoDB是什么 MongoDB介绍PPT分享 MongoDB GridFS介绍PPT两则 初识 MongoDB GridFS MongoDB GridFS 介绍 一个NoSQL与MongoD ...

  2. 【NoSql】Redis

    [NoSql]Redis 一. 文档 1. 官网 2. Windows 安装包 3. C# Driver a. ServiceStack.Redis 最新版本是收费的 b. StackExchange ...

  3. 【vue】MongoDB+Nodejs+express+Vue后台管理项目Demo

    ¶项目分析 一个完整的网站服务架构,包括:   1.web frame ---这里应用express框架   2.web server ---这里应用nodejs   3.Database ---这里 ...

  4. 【八】MongoDB管理之分片集群实践

    MongoDB中集群有三种:主从复制.副本集.分片集群.目前副本集已经替代主从复制架构,成为官方建议采用的架构,而分片集群相较于前两种,更加复杂. 下面是生产环境中常用的分片集群架构: 我们知道,分片 ...

  5. 【七】MongoDB管理之分片集群介绍

    分片是横跨多台主机存储数据记录的过程,它是MongoDB针对日益增长的数据需求而采用的解决方案.随着数据的快速增长,单台服务器已经无法满足读写高吞吐量的需求.分片通过水平扩展的方式解决了这个问题.通过 ...

  6. 【四】MongoDB索引管理

    一.索引介绍 在mongodb中,索引用来支持高效查询.如果没有索引,mongodb必须在整个集合中扫描每个文档来查找匹配的文档.但是如果建立合适的索引,mongodb就可以通过索引来限制检查的文档数 ...

  7. 【原创】MongoDB安装配置详解(标注两个坑)

    1.下载安装 3.4正式版([坑]不要最新版,有可能进度卡在这个位置不动,等了半个小时也没什么反映,) http://downloads.mongodb.org/win32/mongodb-win32 ...

  8. 【转】PHP操作MongoDB【NoSQL】

    原文:http://blog.sina.com.cn/s/blog_4b67d3240101519b.html 一.MongoDB简介 MongoDB (名称来自"humongous&quo ...

  9. 【翻译】MongoDB指南/聚合——聚合管道

    [原文地址]https://docs.mongodb.com/manual/ 聚合 聚合操作处理数据记录并返回计算后的结果.聚合操作将多个文档分组,并能对已分组的数据执行一系列操作而返回单一结果.Mo ...

随机推荐

  1. sublime text 3 license 2016.05

    补充:2016.05 最近经过测试,3个注册码在新版3103的sublime上已经不可用了. 现补充两枚新版的license key: -– BEGIN LICENSE -– Michael Barn ...

  2. iOS开发 - OC - PCH文件使用

    一. PCH文件的作用 Xcode中,PCH文件在程序编译的时候会自动包含进去.也就是说PCH中的内容是全局的,可以使用在程序的任何地方,通过这个特性,我们可以概括到PCH的作用有以下几个方面: (1 ...

  3. vs2008主题

    http://www.cnblogs.com/xiaoshatian/archive/2009/11/20/1606440.html

  4. (转)打印相关_C#图片处理Bitmap位图缩放和剪裁

    原文地址:http://blog.sina.com.cn/s/blog_6427a6b50101el9d.html 在GDI+中,缩放和剪裁可以看作同一个操作,无非就是原始区域的选择不同罢了. /// ...

  5. springmvc 接受特殊类型字段的处理方法

    springmvc接受前台传入的数据时如果该字段类型无法被封装(如Date),则会出现400 Bad Request错误,解决方法如下. 1.在需要处理的字段前加上注解: @DateTimeForma ...

  6. Installing Intellij IDEA sublime-text-2 on Ubuntu

    he installation on Linux is traditionally more complicated. I wonder why people complain about the l ...

  7. 异步编程,采用WorkgroupWorker,async和await关键字

    金科玉律:不要在UI线程上执行耗时的操作:不要在除了UI线程之外的其他线程上访问UI控件! NET1.1的BeginInvoke异步调用,需要准备3个方法:功能方法GetWebsiteLength,结 ...

  8. ios调用本地拨打电话,发送短信

    电话.短信是手机的基础功能,iOS中提供了接口,让我们调用.这篇文章简单的介绍一下iOS的打电话.发短信在程序中怎么调用. 1.打电话   [[UIApplication sharedApplicat ...

  9. Maven项目生成 jar直接运行

    pom.xml配置如下:红色部分要注意 在eclipse中maven生成可运行的jar需要指定可运行的主程序 <?xml version="1.0" encoding=&qu ...

  10. linux系统limit知识

    1.limit限制每个shell进程和它的子进程对资源的占用.每个登录,还是每个进程? 比如ulimit -n 10240 可以临时改变当前session的shell进程的文件句柄数限制,退出当前窗口 ...