centos libmongoc,centos docker
今天给各位分享centos libmongoc的知识,其中也会对centos docker进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
为什么PostgreSQL比MongoDB还快
PostgreSQL9.4带来了全新的NoSQL特性,并且根据EnterpriseDB的测试,其加载,插入和查询的性能都已经几倍于MongoDB了。
虽然我是PG的铁杆粉丝,但是关系数据库背负了ACID的重型装甲,在性能上居然能打败轻装上阵的NoSQL数据库总觉得有点离谱。
所以我在自己的环境里验证了一下EnterpriseDB的测试结果,并且小探一下PG取胜的原因。
1. EnterpriseDB的测试结果
以下是EnterpriseDB的测试结果(数据量为5000万)
(还可以参考这篇译文: )
2.我的验证结果
测试观点
为了使测试结果更加单纯,我准备单纯比拼CPU消耗(尽量排除IO和网络的干扰),设定以下测试条件。
1)所有数据都要放进内存
2)C/S都跑在同一台单机上
所以,只在单机上进行10万条小数据量的测试。
注)EnterpriseDB的测试环境是32G内存的Amazon Web Services M3.2XLARGE实例,总数据量超过内存了。
测试环境
测试环境为个人PC上的VMware虚拟机
PC
CPU:Intel Core i5-3470 3.2G(4核)
MEM:6GB
SSD:OCZ-VERTEX4 128GB(VMware虚拟机所在磁盘,非系统盘)
OS:Win7
VMware虚拟机
CPU:4核
MEM:1GB
OS:CentOS 6.5
PG:PostgreSQL 9.4.0(shared_buffers= 428MB,其他是默认值)
MG:MongoDB 3.0.2
测试步骤
测试步骤非常简单,可以参考:
但是,在测试前,有些东西要改。
1)把数据量减小到10万
pg_nosql_benchmark-master/pg_nosql_benchmark:
declare-a json_rows=(10000000)
==>
declare-a json_rows=(100000)
2)修改mongo的一处脚本(注)
pg_nosql_benchmark-master/lib/mongo_func_lib.sh:
collectionsize="$(echo${output}|awk-F","'{print$5}'|cut-d":"-f2)"
==>
collectionsize="$(echo${output}|awk-F","'{print$6}'|cut-d":"-f2)"
注)pg_nosql_benchmark原来是基于MongoDB 2.6设计的,MongoDB 3.0的db.json_tables.stats()输出可能变了,所以这边要修改一下。
centos8安装tcmalloc
做存储,数据库系统方面的开发,主要用到* grpc/libevent/libev/libasio实现高性能网络服务器* protobuf数据结构序列化/反序列化,方便数据交换* LevelDB/RocksDB嵌入式KV数据库* snappy/zlib/lz4数据压缩,解压缩* jemalloc/tcmalloc高效内存分配器,尤其多线程场景* jerasure Reed Solomon编解码,给存储系统实现erasure code* murmurhash…实现hash摘要* crc32数据存储或传输时的数据校验* cJSON解析json格式配置文件* libBSON JSON序列化/反序列化,MongoDB使用这种格式存储数据* boost功能丰富的C++基础库,轻度使用,C++11/14后基本不用了。* libRedis redis是一个数据库服务,并不是单独的库,但其代码精简,质量非常高,里面很多代码都可以拿出来直接复用,比如网络,各种数据结构的实现。