最新一轮的针对PostgreSQL和MongoDB的性能比较的多次几近重复的结果证明了PostgreSQL的性能已经超越了MongoDB。 Postgres在JSON和JSONB方面取得的进展使得Postgres可以支持文档型数据库。
能在一个关系型数据库中创建文档型数据库的能力是一项令人印象深刻的成就,尤其是它比当今主流的NOSQL解决方案还要好用!但更重要的是他对终端用户产生的重大意义:更高水平的速度、效率以及灵活性。
Postgres vs. Mongo
EnterpriseDB (EDB) 通过比较性的评估来帮助用户正确的认识Postgres NOSQL的能力。最初的几项测试在单节点的MongoDB v2.6和Postgres v9.4 beta这二者之间展开的。两个系统都被部署在32G内存的Amazon Web Services M3.2XLARGE实例中。
MongoDB 2.4/PostgreSQL 9.4相对性能比较(5000万条文档)
EDB发现在基于5000万记录的测试中,Postgres在查询、加载、插入复杂的文档数据的情况下都要优于MongoDB。
- Postgres加载大数据的速度要比MongoDB快2.1倍
- MongoDB要多消耗33%的磁盘空间
- 插入数据时MongoDB几乎花了三倍于Postgres的时间
- MongoDB在查询数据时要比Postgres多花2.5倍的时间
基于1000万条记录的测试结果和上面的基本一致,但是早些的测试版本有一点需要注意:PostgreSQL社区成员Alvaro Tortosa发现MongoDB的控制台不允许插入大于4k的文档。这导致Benchmark时准备的数据中有大约25%是没有插入MongoDB的。
我们已经公布了测试框架以方便公众来核验并邀请大家填入自己的测试结果并对我们的测试方法和新的测试框架提出建议。测试框架在EDB的Github仓库中。
开发者自由
最新版本的PostgreSQL为开发人员开创了数据灵活性的新纪元,它甚至超越了当初NOSQL-only解决方案给带来他们的自由。 类似MongoDB这类NoSQL-only解决方案的需求不断增长是因为开发者不想被关系型数据库的结构化数据模型所牵绊。 他们需要对新的数据类型做出快速响应, 最后选择了强大但是功能有限的方案来解决这些问题, 这样的话他们就不需要喊DBA来帮忙做一些数据结构的调整了。
然而, 随着数据在整个组织中的作用变得越来越珍贵,在一段时间之后他们发现成功的应用往往需要结构化的数据。
Postgres赋予了开发人员一个新的选择: 从非结构化数据着手开发,随着需求的变化,就可以在一个兼容ACID的环境中使用同一个数据库引擎来整合这些非结构化和结构化的数据。
这些代码展示了Postgres有处理文档型数据的能力,而我们的性能比较证实Postgres能够应对这些负载。
你可以在EDB的Github仓库找到这个测试框架的源码或者联系我们学习Postgres如何在你的DevOps策略中助一臂之力。