为什么这么多MPP方案基于PostgreSQL而不是MySQL?

Dav*_*vid 8 mysql rdbms postgresql data-warehouse parallelism

Astor Data、Greenplum 和 GridSQL 都允许对 SQL 查询进行大规模并行处理。它们也都是围绕 PostgreSQL 技术构建的。这仅仅是因为许可问题还是有其他原因?对我来说,它看起来像 MyISAM,不符合 ACID,因此不会遇到与 MVCC 相同的问题(如这里所见),因为 PostgreSQL 更适合构建高性能数据仓库。毕竟,就我所见,OLAP 负载不需要事务。

Pet*_*aut 14

这主要是许可证问题。这些开发最终会对代码进行大量修补,因此如果您要处理 MySQL,您要么必须开源代码,要么在您的业务生命周期内受 MySQL 公司所有者的支配。MySQL 的一些提议通过将它们的工作实现为存储引擎来解决这个问题,但这并没有提供他们需要的所有灵活性,而且它们最终也总是修补 MySQL 核心。

  • 盖乌斯:你的意思是什么?此处讨论的 MPP 解决方案销售源自开源软件的专有软件。他们不将他们的软件作为服务出售。 (7认同)

小智 11

我可以看到两个原因:

1) 历史上,PostgreSQL 有更好的查询计划器和统计分析器。现在可能不是这样,但几年前 PostgreSQL 在复杂查询(即 OLAP 查询)上比 MySQL 好得多。

2) PostgreSQL 有更好的函数/触发器/等编程支持。


小智 6

正如 Peter Eisentraut 正确指出的那样,首先这是一个许可问题。Postgres 是根据类似 BSD 的协议获得许可的,这使得它本质上“对所有人免费”,只要您在衍生作品中归功于原始开发人员。

MVCC 与锁定调度程序的争论已经成为不少在线“圣战”的主题。关于各种存储引擎优点的争论同样存在争议。

恕我直言,对于为分析工作负载构建的 MPP RDBMS,不同行主(又名行存储)存储引擎的优点在很大程度上无关紧要,原因有两个:

  1. 虽然存储引擎的特性对于处理 OLTP 类型工作负载中的 ACID 事务很重要,但在典型的数据仓库环境中,您只需要支持一种“事务”类型 - 批量加载。理想情况下,批处理加载应该完全成功或完全失败。
  2. 基于列存储存储引擎的分析数据库在许多情况下将优于任何行存储实现。Vertica 从一开始就是一个列存储,Teradata 和 Greenplum 最近在他们的产品中添加了列存储功能。