首先是数据的录入,为了分析我们服务器集群的性能,需要准备大量的用户数据,幸运的是mtools提供了mgenerate方法供我们使用。他可以根据一个数据模版向 MongoDB 中插入任意条 json 数据。下面的 json 结构是我们在例子中需要使用的数据模版:

{

"user": {

"name": {

"first": {"$choose": ["Liam", "Aubrey", "Zoey", "Aria", "Ellie", "Natalie", "Zoe", "Audrey", "Claire", "Nora", "Riley", "Leah"] },

"last": {"$choose": ["Smith", "Patel", "Young", "Allen", "Mitchell", "James", "Anderson", "Phillips", "Lee", "Bell", "Parker", "Davis"] }

},

"gender": {"$choose": ["female", "male"]},

"age": "$number",

"address": {

"zip_code": {"$number": [10000, 99999]},

"city": {"$choose": ["Beijing", "ShangHai", "GuangZhou", "ShenZhen"]}

},

"created_at": {"$date": ["2010-01-01", "2014-07-24"] }

}

}

把它保存为一个叫user.json的文件中,然后使用mgenerate插入一百条随机数据。随机数据的格式就按照上面json文件的定义。你可以通过调整--num的参数来插入不同数量的 Document。(Link to mgenerate wiki)

mgenerate user.json --num 1000000 --database test --collection users --port 38017

上面的命令会像test数据库中users collection 插入一百万条数据。在有些机器上,运行上面的语句可能需要等待一段时间,因为生成一百万条数据是一个比较耗时的操作,之所以生成如此多的数据是方便后面我们分析性能时,可以看到性能的显著差别。当然你也可以只生成十万条数据来进行测试,只要能够在你的机器上看到不同find语句的执行时间差异就可以。

插入完数据之后,我们想看一下刚刚插入的数据在服务器集群中是如何分配的。通常,可以通过sh.status() MongoDB shell 命令查看。不过对于一套全新的集群服务器,再没有切分任何 collection 之前,我们是看不到太多有用的信息。不过,可以通过 explain 一条查询语句来看一下数据的分布情况。这里不得不强调一下在进行数据性能分析时一个好的 IDE 对工作效率有多大的影响,我选择 dbKoda 作为 MongoDB 的 IDE 主要原因是他是目前唯一一款对 MongoDB Shell 的完美演绎,对于 MongoDB Shell 命令不太熟悉的开发人员来说尤为重要,幸运的是这款 IDE 还支持 Windows/Mac/Linux 三种平台,基本上覆盖了绝大多数操作系统版本。下面是对刚才建立的一百万条 collection 的一次 find 的 explain 结果。(对于 Explain 的应用,大家可以参考我的另外一片文章:如何通过 MongoDB 自带的 Explain 功能提高检索性能?)

 

来自: https://www.jianshu.com/p/f33570f0cd30

最新文章

  1. ABP(现代ASP.NET样板开发框架)系列之12、ABP领域层——工作单元(Unit Of work)
  2. Glide 魔法般的自定义扩展
  3. org.eclipse.ui.menus扩展点学习
  4. [python学习笔记]Day3
  5. 案例(用封装的ajax加载数据库的数据到页面)
  6. eclipse 中的 jar file 和 runnable jar file的区别
  7. 【转载】linux内核笔记之高端内存映射
  8. webconfig中配置各种数据库的连接字符串
  9. 类和ID选择器的区别
  10. Apple Swift学习资料汇总
  11. [转]oracle误删数据的恢复
  12. 设置ubuntu下使用ls命令显示文件颜色显示
  13. VS2015 安装nuget离线包nupkg文件
  14. ArcGIS API for JavaScript 入门教程[1] 渊源
  15. 更改WebBrowser控件的用户代理
  16. php算法题2
  17. Fetch的使用及兼容ie的处理
  18. git的reset的理解
  19. asp.netmvc 三层搭建一个完整的项目
  20. mocha测试接口类型及测试报告收集

热门文章

  1. HTML解析利器HtmlAgilityPack
  2. HDU 4768 Flyer (2013长春网络赛1010题,二分)
  3. STM32F103ZET6 用定时器级联方式输出特定数目的PWM
  4. mysqlsandbox
  5. Android论坛
  6. 对数据集“dsArea”执行查询失败。 (rsErrorExecutingCommand),Query execution failed for dataset 'dsArea'. (rsErrorExecutingCommand),Manually process the TFS data warehouse and analysis services cube
  7. sublime关闭自动打开上次的文件
  8. nginx 获取自定义header头部信息
  9. appstore防代充的一些想法
  10. 用SimpleAdapter来设置ListView的内容