没有合适的资源?快使用搜索试试~ 我知道了~
MongoDB与MySQL的插入性能测试
8 下载量 166 浏览量
2021-03-01
19:48:04
上传
评论 1
收藏 571KB PDF 举报
温馨提示
试读
15页
在当今的数据库市场上,MySQL无疑是占有一席之地的。作为一个开源的关系型数据库,MySQL被大量应用在各大网站后台中,承担着信息存储的重要作用。2009年,甲骨文公司(Oracle)收购Sun公司,MySQL成为Oracle旗下产品。而MongoDB是一种文件导向的数据库管理系统,属于一种通称为NoSQL的数据库,是10gen公司旗下的开源产品,其内部数据存储的方式与传统的关系型数据有很大差别。NoSQL的全称是NotOnlySQL,也可以理解非关系型的数据库,是一种新型的革命式的数据库设计方式,不过它不是为了取代传统的关系型数据库而被设计的,它们分别代表了不同的数据库设计思路。虽然Mong
资源详情
资源评论
资源推荐
MongoDB与与MySQL的插入性能测试的插入性能测试
1.1 MongoDB的简单介绍
在当今的数据库市场上,MySQL无疑是占有一席之地的。作为一个开源的关系型数据库,MySQL被大量应用在各大网
站后台中,承担着信息存储的重要作用。2009年,甲骨文公司(Oracle)收购Sun公司,MySQL成为Oracle旗下产
品。
而MongoDB是一种文件导向的数据库管理系统,属于一种通称为NoSQL的数据库,是10gen公司旗下的开源产品,其
内部数据存储的方式与传统的关系型数据有很大差别。
NoSQL的全称是Not Only SQL,也可以理解非关系型的数据库,是一种新型的革命式的数据库设计方式,不过它不是
为了取代传统的关系型数据库而被设计的,它们分别代表了不同的数据库设计思路。
虽然MongoDB背后的公司没有Oracle强大,但其目前也正在被应用在各行各业中。MongoDB是目前被应用最广泛的
NoSQL数据库产品。
1.2 MongoDB的存储特点
在传统的关系型数据库中,数据是以表单为媒介进行存储的,每个表单均拥有纵向的列和横向的行。以MySQL为例,
如果用户想以学生的学号为索引,存入其姓名与住址信息时,数据库中存放的信息便如下图所示:
上图表明数据库中存入了5个表项,其记录了学号为10001 – 10005的学生的姓名与住址信息。
如果用户欲把相应的信息重新存入MongoDB数据库,那么数据库中的信息应该为如下所示:
"_id" : "10001",
"Name" : "Alice",
"Address" : "A1",
"_id" : "10002",
"Name" : "Bob",
"Address" : "A2",
"_id" : "10003",
"Name" : " Cara",
"Address" : "A3",
"_id" : "10004",
"Name" : " David",
"Address" : "A4",
"_id" : "10005",
"Name" : " Eve",
"Address" : "A5",
由此可见,相比较MySQL,MongoDB以一种直观文档的方式来完成数据的存储。它很像JavaScript中定义的JSON格
式,不过数据在存储的时候MongoDB数据库为文档增加了序列化的操作,最终存进磁盘的其实是一种叫做BSON的格
式,即Binary-JSON。
对比两个数据库中数据存储的差异,你可能没有什么特别的直观感受。让我们再看看MongoDB存放的另一组数据:
"_id" : "10001",
"score" : {
"Maths" : 71,
"English" : 62,
}
"_id" : "10002",
"score" : {
"Maths" : 81,
"Chemistry" : 74,
"Sport" : {
"Basketball" : 67,
"Badminton" : 76,
},
}
上述数据表明了学号为10001与10002两名学生的课程分数信息。如果想把同样的数据存入MySQL数据中的话,势必
要很费一番功夫。在关系型数据库中,列的数目一般事先固定,各列之间可以由列名来识别。如果想存入以上数据,
我们可以采取如下方法:
或者如下这种:
上述两种存储方式无论选哪一种,都不能很直观地呈现两名学生的各科成绩与各学科之间隶属关系,在存储空间上的
利用也不尽如意,并且可扩展性也不够好。当然,为了解决这些问题,我们还可以使用多张表单来存储学生的成绩,
但这样也会使数据库中的内容更加复杂。
1.3 MongoDB的应用场景
在另一方面,对开发者来说,如果是因为业务需求或者是项目初始阶段,而导致数据的具体格式无法明确定义的
话,MongoDB的这一鲜明特性就脱颖而出了。相比传统的关系型数据库,它非常容易被扩展,这也为写代码带来了极
大的方便。
不过MongoDB对数据之间事务关系支持比较弱,如果业务这一方面要求比较高的话,MongoDB还是并不适合此类型
的应用。
另外,MongoDB出现的时机比较晚,还具备一些非常鲜明的特性。比如:
1. 它里面自带了一个名叫GirdFS的分布式文件系统,这就为MongoDB的部署提供了很大便利。而像MySQL这种比较
早的数据库,虽然市面上有很多不同的分表部署的方案,但这种终究不如MongoDB直接官方支持来得便捷实在。
2. 另外,MongoDB内部还自建了对map-reduce运算框架的支持,虽然这种支持从功能上看还算是比较简单的,相当
于MySQL里GroupBy功能的扩展版,不过也为数据的统计带来了方便。
3. MongoDB在启动后会将数据库中的数据以文件映射的方式加载到内存中。如果内存资源相当丰富的话,这将极大地
提高数据库的查询速度,毕竟内存的I/O效率比磁盘高多了。
但是,作为一个新鲜的事务,MongoDB也存在着很多不足。它在为开发人员提供了便利的情况下,却在运维上面临着
不少难题,比如:
1. 比起MySQL,MongoDB没有成熟的运维经验,需要不断地探索。
2. MongoDB中的数据存放具有相当的随意性,不具有MySQL在开始就定义好了。对运维人员来说,他们可能不清楚
数据库内部数据的数据格式,这也会数据库的运维带来了麻烦。
2. 测试目的
MongoDB与MySQL作为两种不同类型的数据库,当其中存放的记录越来越多的时候,其插入效率将会受到怎样的影
响,是本次实验所关注的对象。
在这里,我们将本次实验数据库中数据存储的规模定在1亿条。
3. 测试条件
机器配置: CPU:Intel(R) Xeon(R) CPU E5-2620 @ 2.00GHz
内存:65954040 KB
(关键词:12核CPU,64G内存,给我多好)
操作系统: Linux version 2.6.32_1-8-0-0 (gcc version 4.4.4 20100726 (Red Hat 4.4.4-13) (GCC) )
剩余14页未读,继续阅读
weixin_38613154
- 粉丝: 14
- 资源: 987
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0