MongoDB与PostgresQL无责任初步测试
PostgresQL一秒能插入多少条记录,MongoDB呢?读取的情况又如何?我写了一些简单的程序,得出了一些简单的数据,贴在这里分享,继续往下阅读前请注意下本文标题中的“无责任”,这表示此测试结果不代表真实的生产环境下的情况,只能说给大家一个比较直观的概念,可用于设计架构时候的估算。(量级上来说应该基本上是正确的)
本次测试选择的服务器环境为:
- VMWare虚拟机(双核,4G内存)
- CentOS 7
- MongoDB 3.2
- PostgresQL 9.4
- 客户端均为Java版
- 单线程客户端
插入数据比较简单,PostgresQL中创建这么一张表:
CREATE TABLE realtime(
id BIGINT PRIMARY KEY,
longtitude DOUBLE PRECISION,
latitude DOUBLE PRECISION,
velocity DOUBLE PRECISION,
soc DOUBLE PRECISION
);
对应地,MongoDB中的Document大致如此:
{
"_id" : NumberLong(1458587322),
"longitude" : 0.5812149460333115,
"latitude" : 0.23716701482457414,
"velocity" : 0.9920389498763238,
"soc" : 0.6602090307636349
}
数据随机生成,只有id为索引。
插入100万条数据
- MongoDB(带ACK)——约300秒(约3300条/秒)
- MongoDB(无ACK)——约35秒(月28000条/秒)
- PostgresQL——约670秒(约1500条/秒)
不带ACK的MongoDB的速度大约是PostgresQL的20倍,写入条目数可轻松破万。
随机查询(无索引,600万条数据)
- MongoDB——约2秒
- PostgresQL——约0.5秒
这次PostgresQL占优,速度大约是MongoDB的4倍。
顺序读取一万条数据
- MongoDB——约0.1秒
- PostgresQL——约0.5秒
这次MongoDB占优,速度大约是PostgresQL的5倍。
也许你说MongoDB和PostgresQL是两种不同截然的数据库系统啊,干嘛放一起比?我当然知道,所以才拿出来比,(呵呵)比较后才知道什么情况下用什么样的数据库,怎么样才能将其能力发挥到最好嘛,对不对?于是有了下面这些“无责任”的结论(或者说小小建议了):
- PostgresQL功能强大通用性好可靠性高适用面广(嗯?我的测试并未反映出这点啊?请执行忽略掉这些细节)
- MongoDB适合于逻辑简单,存储量大,性能要求高,而可靠性要求相对不高的场合
- 存储量巨大的情况下,MongoDB的查询必须得依赖索引
- MongoDB的索引越少性能越好,磁盘空间消耗越少(索引能不要就不要),和前一点做一些自我平衡吧
实际的情况会有哪些不同?实际中性能肯定是要比这个高的,我这次只是用了一台本地的虚拟机用单线程访问尝试了一下,真实环境下的话肯定是高配置的服务器主机加多线程。一般来说关系型数据库(PostgresQL这种)在单台主机上的表现确实存在一个性能瓶颈,每秒写入万条对关系型数据库来说就很吃力,如果遇到了这个瓶颈,就可以考虑调整系统架构,使用NoSQL(MongoDB这种)分摊一些数据存储了,当然了,逻辑复杂,事务性要求高的数据还是得用PostgresQL,MongoDB则用于存那些“又大又傻”的数据。
MongoDB与PostgresQL无责任初步测试的更多相关文章
- 无责任共享 Coursera、Udacity 等课程视频
本文转载自网络,原作者不详. (本文是用 markdown 写的,访问 https://www.zybuluo.com/illuz/note/71868 获得更佳体验) 程序语言 interactiv ...
- 无责任Windows Azure SDK .NET开发入门(二):使用Azure AD 进行身份验证
<編者按>本篇为系列文章,带领读者轻松进入Windows Azure SDK .NET开发平台.本文为第二篇,将教导读者使用Azure AD进行身分验证.也推荐读者阅读无责任Windows ...
- Emotiv脑电设备与RDS机器人仿真初步测试
Emotiv脑电设备与RDS机器人仿真初步测试 在脑电设备相关算法进行真实机器人测试前,有必要进行大量仿真验证算法,节约开发时间. 这里给我启发的Emotiv使用所参考的一些网址. 官网:https: ...
- The Guardian’s Migration from MongoDB to PostgreSQL on Amazon RDS
转载一片mongodb 迁移pg 数据库的文章 原文:https://www.infoq.com/news/2019/01/guardian-mongodb-postgresql The Guardi ...
- NoSql非关系型数据库之MongoDB应用(三):MongoDB在项目中的初步应用
业精于勤,荒于嬉:行成于思,毁于随. 我们可以结合相关的IDE做一个简单的增删改查了,实现MongoDB在项目中的初步应用. 前提是安装了MongoDB服务和MongoDB可视化工具,没有安装的可以点 ...
- 串口之完整封装包含发送和接收(windows+ubuntu已通过初步测试)(持续更新)
这里下载源码 更新日志 16-08-2021 V1.0.3 1.修复接收数据没有将数据传递给应用层的bug 2.windows版本:设置接收数据相邻字节间间隔为5ms 24-09-2020 V1.0. ...
- Debian/Ubuntu手动编译安装MongoDB C++11驱动及驱动测试
本文章仅限cnblogs网站内转载!请某网站自觉,遵纪守法,尊重原创! 系统环境情况: 最小化.无桌面环境 新安装的Debian 8 Server 版本操作系统虚拟机一台 手动编译安装MongoDB ...
- mongodb 3.x WiredTiger存储优化测试
http://pan.baidu.com/s/1sk8zekX 总结:1.使用WiredTiger引擎压缩比例约是MMAP引擎的12倍,2.从时间上看,此次测试100个线程并发,mongodb 3.2 ...
- MySQL Cluster初步测试结果汇总图示报告 --> 用mysqlslap与sysbench进行测试
Cluster结构图 测试环境简介 Mysql cluster集群测试环境 4 data node,32G 8核cpu 4 ...
随机推荐
- POCO Controller 你这么厉害,ASP.NET vNext 知道吗?
写在前面 阅读目录: POCO 是什么? 为什么会有 POJO? POJO 的意义 POJO 与 PO.VO 的区别 POJO 的扩展 POCO VS DTO Controller 是什么? 关于 P ...
- 使用Zabbix监控Oracle数据库
Orabbix介绍 监控Oracle数据库我们需要安装第三方提供的Zabbix插件,我们先测试比较有名的Orabbix,http://www.smartmarmot.com/product/orabb ...
- 在ASP.NET Core应用中如何设置和获取与执行环境相关的信息?
HostingEnvironment是承载应用当前执行环境的描述,它是对所有实现了IHostingEnvironment接口的所有类型以及对应对象的统称.如下面的代码片段所示,一个HostingEnv ...
- 学习ASP.NET Core, 怎能不了解请求处理管道[4]: 应用的入口——Startup
一个ASP.NET Core应用被启动之后就具有了针对请求的处理能力,而这个能力是由管道赋予的,所以应用的启动同时意味着管道的成功构建.由于管道是由注册的服务器和若干中间件构成的,所以应用启动过程中一 ...
- vs2010静态链接MFC库报链接错误
由于需要将MFC程序在其它电脑上运行,所以需要将动态链接的MFC改成静态链接,本以为很简单,没想到链接的时候出现下面的链接错误: uafxcw.lib(afxmem.obj) : error LNK2 ...
- CRL快速开发框架系列教程十三(嵌套查询)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- 【需求设计1】VIP积分系统无聊YY
RT,想到什么就写什么呗,这是最简单的方式,顺便给自己做一个记录,反正自己记忆力也不太好.本文是仿陆金所的积分系统,自己YY的一套东西. 首先我想做一个VIP兑换投资卷的功能: 我们先来确定一些我知道 ...
- angluarjs2项目生成内容合并到asp.net mvc4项目中一起发布
应用场景 angular2(下文中标注位NG2)项目和.net mvc项目分别开发,前期采用跨域访问进行并行开发,后期只需要将NG2项目的生产版本合并到.net项目. NG2项目概述 ng2项目采用的 ...
- 利用Select2优化@Html.ListBoxFor显示,学会用MultiSelectList
最近需要用到多选框,Asp.Net MVC自带的@Html.ListBox或@Html.ListBoxFor的显示效果太差,于是找到了Select2进行优化,并正式了解了多选框的操作方法. 首先介绍多 ...
- Atitit.研发管理如何避免公司破产倒闭的业务魔咒
Atitit.如何避免公司破产倒闭的业务魔咒 1. 大型公司的衰落或者倒闭破产案例1 1.1. 摩托罗拉1 1.2. 诺基亚2 1.3. sun2 2. 为什么他们会倒闭?? 常见的一些倒闭元素2 2 ...