PostgreSQL与Oracle的比较

49

嗯,主题提出了问题:

  1. Oracle拥有良好的支持,EnterpriseDB也拥有
  2. 大量数据可以轻松地由Oracle或PostgreSQL管理
  3. 就特性而言,我不确定,但是在互联网上阅读有关这两个数据库的信息会得出平局的结论

现在我想知道,为什么Oracle更受欢迎。

对于一个需要可伸缩性并且可能拥有大量活跃用户(比如说在线有1万个用户)的网站,应该考虑使用哪个数据库(暂不考虑许可证/费用问题)。

我不想要像Cassandra、mongo DB等。


4
一个有10,000用户的网站的“规格”太模糊了。 10,000人同时尝试预订一个音乐会场馆座位与10,000个用户从数据库支持的CMS查看网页是非常不同的。 获取一个实际的规格并将其带到一个真正的开发商店。 - Gary Myers
不需要再重复这个了。 - JOTN
2

我们使用Postgresql: select count(*) from users; count

415027924/7集群。 只要你有一个知道自己在做什么的管理员,两个数据库都可以很好地处理大量负载。
- Scott Marlowe
在一个扩展的“CRUD环境”中,很可能是在数据仓库或BI环境中,您可能对与pg 9.3.5(7/2014)相关的这些比较感兴趣:https://dev59.com/KITba4cB1Zd3GeqP0g3k#26237464 - Andreas Covidiot
3
很惊奇没有人提到成本。甲骨文公司的费用非常高昂。 - magallanes
2
我相信一定有人做过一张图表,证明一个帖子越有用(问题获得29个赞,7个收藏,Horse的回答获得67个赞),版主就越有可能将其关闭为“不具建设性”,因为“天堂保佑!”即使在Horse的回答中有客观事实,某人仍可能表达自己的观点。对我来说,这真正展示了SO上的“不具建设性”的管理流程。 - Alan K
3个回答

88

我的看法是,PostgreSQL与Oracle非常接近,特别是即将推出的9.1版本,提供了对Oracle DataGuard的替代方案。

在SQL级别上,它们真正地是势均力敌,差别不大(Postgres实际上拥有更多“小助手”和功能,使生活变得更轻松)。

Oracle仍然提供更多功能的领域:

  • 物化视图(自Postgres 9.3以来可用,但Postgres仍没有增量刷新或查询重写)
  • 闪回查询和闪回归档(它们真的很酷)
  • 仅索引扫描(自Postgres 9.2以来可用,但我认为比Oracle的实现效率低)
  • 存储过程中的事务控制(即将到来的Postgres 11将支持该功能,但不像Oracle那样完整)
  • 索引有序表(又名“聚簇索引”)
  • ASH和AWR报告(Postgres 9.6添加了基础设施,以便将来能够实现类似的功能)
  • 并行查询
    Postgres 9.6基本上可以并行运行查询,Postgres 10进一步改进,Postgres 11甚至可以将其用于类似create table as的操作。
  • 并行DML
  • 更改在视图中使用的表(例如删除列)

尽管我喜欢PostgreSQL,但一个非常令人恼火的事情是配置(自动)清理以应对高写入流量。


PostgreSQL现在也有布尔和JSON数据类型! - markmnl
2
@markmnl:Postgres还有范围类型。我在Oracle(或任何其他DBMS)中错过它们的次数有多少次。 - user330315
@a_horse_with_no_name:我认为PG至少从2007年就拥有聚集索引了:http://www.postgresonline.com/journal/archives/10-How-does-CLUSTER-ON-improve-index-performance.html - LetMeSOThat4U
不是的。它并没有,而且现在仍然没有。cluster 命令只是根据索引重新排序表格。但这与聚集索引(又称 Oracle 中的“索引组织表”)是不同的,此外,该顺序也无法保持。 - user330315

40

出于同样的原因,Oracle比PostgreSQL更受欢迎,就像在大公司中Microsoft比Linux更受欢迎一样:任何有预算的IT主管选择它们而不是开源替代品,都不会失去工作。


22
根据我的工作经验,大公司往往是这样的。甲骨文产品很好,但选择它并非出于特定技术原因,而更多是基于其他方面的考虑。 - Datajam
34
大型企业只有在能起诉该软件公司的情况下才会使用该软件 :-)。 - hobbes3
27
公共行政领域的情况更加糟糕。往往是政治家在完全不了解技术的情况下签署购买软件的合同。他们会为创建最简单的网站购买最昂贵的企业版许可证和支持服务。 - jap1968
14
我认为说“有预算的IT主管选择Oracle而不是开源替代品,从来没有因此而失去工作”表明有理由使用Oracle。如果你推论这个说法的反面,那么至少有一个或多个有预算的IT主管因为选择开源而失去了他们的工作。他们失去工作是因为选择的解决方案未能满足要求。请理解我认为开源很好。然而,有时商业产品提供的功能、支持或其他方面是开源替代品所不能提供的。 - Thor
10
谁会起诉Oracle,以及如何起诉,考虑到所有许可协议中都写着“无保证”和“有限责任”? - i486
显示剩余4条评论

27

请问您自己:

来为您的网站(和数据库)提供支持?有很多企业级数据库公司可以提供全球范围内的支持、文档、顾问等服务。这不仅仅是Oracle,但在每个国家里找到Oracle或MSSQL专家可能更容易一些。

现在,如果您愿意面对更大的挑战去寻找PostgreSQL的专家,或者您愿意为PostgreSQL培训您的团队,请去尝试吧!今天(2016年),PostgreSQL是最先进的开源关系型数据库之一,并且在大多数情况下与商业竞争对手相当。

是否存在只有一个数据库系统提供的必需特性?您不能同时使用两个数据库平台的高级功能,因此要检查您的应用程序所真正需要的内容。例如,如果您需要特定的复制、备份和其他场景,您应该阅读两种平台的文档以做出明智的选择。它们都提供类似的功能,但最好做好准备。

大公司通常会坚持使用一个数据库平台。当他们购买了一次Oracle许可证(并聘请了DBA和其他专家),他们就继续使用该供应商。这是通常的情况,但我假设您不受此类负担的限制。

在现代IT时代,还有另一个需要考虑的问题。我真的需要RDBMS吗?每次插入/更新/删除都会非常昂贵。当您定义外键和其他约束时,它甚至更加昂贵。与Oracle相比,MongoDB的操作成本大约是1比10的关系。另一方面,RDBMS提供更多的安全性和数据完整性。如果您不需要它(即对于您来说丢失评论不是问题),您可以使用MongoDB等其他数据库。但请注意,通常有9个案例中有8个需要使用关系型数据库!


8
与第二点相反,获取 PostgreSQL 支持公司更容易。 - Ajayi Oluwaseun Emmanuel
1
并非所有的支持合同都是相等的。但总体而言,我同意你的观点。 - lzap
9
我猜测很多人因为 MongoDB 的评论而在点踩,说实话,MongoDB 相当糟糕,99% 的情况下并不是你想要的。 - semicolon
4
如果你看基准测试,使用PostgreSQL的JSON与使用MongoDB的JSON在性能上是相当的。这尽管Postgres只是将JSON作为一个附加特性,而对于Mongo来说,JSON是其核心特性。https://www.arangodb.com/2015/10/benchmark-postgresql-mongodb-arangodb/ - semicolon
1
几乎所有所谓的NoSQL(MongoDB等)支持的功能都可以很好地由备受厌恶的关系型数据库管理系统(PostgreSQL、Oracle等)支持。我无法想象一个没有任何关系数据的严肃企业业务。在可扩展性方面,Oracle和PostgreSQL比Mongo更具可扩展性。 - Sabyasachi Mitra
1
绝对同意,我一点也不推荐使用MongoDB,我建议考虑它。但是通常50年的关系型数据库经验会更胜一筹。 - lzap

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接