
PostgreSQL与RedShift之间的区别
下面的文章提供了一个PostgreSQL与RedShift的概要。一个开源的RDBMS系统,支持SQL和扩展,使用称为T-SQL的SQL的变体,在其查询中启用更多的高级程序,这就是PostgreSQL。这有助于在其系统中存储和扩展任何工作负载,无论是复杂还是简单。它可以为任何类型的应用程序存储数据。亚马逊的一个数据仓库产品,在并行处理和压缩的帮助下,执行时间更短,被称为RedShift。RedShift与PostgreSQL兼容,我们可以在RedShift中运行T-SQL查询以获得高级查询。这主要用于分析和报告。
PostgreSQL与RedShift之间比较(信息图)
下面是PostgreSQL与RedShift之间的五大区别。

PostgreSQL与RedShift的主要区别
让我们讨论一下PostgreSQL与RedShift之间的一些主要的关键区别。
- RedShift更多用于分析,因此,列式数据库有助于更快地处理数据。RedShift不使用索引键,而是用SORT和DIST键代替。外键或任何其他约束条件都不存在,因此,在RedShift数据库中,需要花费时间来整理数值。这里使用了集群,这样我们就可以在一个短时间内管理数十亿条记录。PostgreSQL适用于简单的查询和较少的数据。数据被存储在节点中,这里没有集群。我们有索引,这是PostgreSQL中的外键概念。与PostgreSQL相比,RedShift在分析方面的性能是最好的。
- SQL在RedShift和PostgreSQL中都有使用,但SQL命令的应用有所不同。我们可以在RedShift中借助CREATE TABLE进行分布和排序算法,但RedShift不支持继承和分区。我们可以做插入和更新表,但它不允许我们在插入命令的同时创建新的表。通过创建命令,我们可以在PostgreSQL中创建带有排序、继承和分区的表。在PostgreSQL中,我们可以通过 "WITH "子句来插入和删除表。
- 在RedShift中遵循不同的分布方式,以便数据能够更快地插入到数据库中。在RedShift中,我们有键分布,数据会与列中的键值进行交叉检查,并放在相同的列中。这些值会与其他列进行比较,如果有匹配的值,这些列就会放在一起。这有助于用户轻松找到数据。在PostgreSQL中没有遵循分布样式或模式,我们必须通过查询来定位类似的数据承载列。
- 在两个数据库中,VACUUM的使用是不同的。PostgreSQL通过VACUUM命令帮助取回数据库中的空间,而RedShift在取回数据库空间的同时也对所有行进行排序。
- 在数据库集群中存在一个领导节点,以便它管理数据插入和管理数据库。工作被分配到不同的工作节点,数据被很好地管理,以便在需要时可以查询。在PostgreSQL中,我们没有任何领导节点或工作节点,因为它在单节点数据库中工作。
PostgreSQL与RedShift的比较表
让我们来讨论一下PostgreSQL与RedShift之间的顶级比较。
| PostgreSQL | RedShift |
| 数据是以行来存储和管理的,有助于直接创建表格。这有助于围绕插入的行建立查询,我们也可以按照数据插入到表中的方式来管理表。 | 数据是以列的形式插入的。这有助于更快地读取数据,并比PostgreSQL更有效地返回查询结果。存储效率在这里得到了提高,因为数据的压缩发生在列级,因为每一列都携带类似的数据。 |
| 在PostgreSQL中,由于计算节点不存在于这个数据库中,所以扩展并不容易。只有通过为数据创建一个新的服务器或将整个数据复制到一个单独的数据库中才能完成扩展。垂直扩展是通过PostgreSQL完成的,成本很高。 | 在RedShift中,扩展很容易,因为AWS帮助管理节点配置,并通过并行处理进行水平扩展。这种节点的扩展有助于创建更多的集群。横向扩展不需要更多的服务器,因为它是在计算节点的帮助下完成的,所以扩展可以以较低的成本完成。 |
| PostgreSQL简单而容易使用。我们可以插入数据并编写T-SQL查询,这将给我们带来结果。但这适用于数据较少的情况。如果我们有更多的数据,速度就会降低,而且不可能轻易地扩展数据库。这对初学者来说是很好的,因为它是免费的。 | RedShift不是免费提供的,它是和Amazon S3存储一起使用的。但查询速度较快,查询方式与PostgreSQL类似。对于任何数量的数据,查询可以在几分钟内完成,这个特点让用户选择了RedShift。 |
| PostgreSQL支持数组、比特、范围、JSON、数字和几何类型、XML、时间戳数据和许多其他形式。如果不是大数据,坚持使用PostgreSQL也不错,因为它有不同的函数和触发器以及序列。 | RedShift不支持PostgreSQL的所有功能,尤其是不支持时间戳数据。这些都是我们在数据库的扩展和性能方面应该预见的一些缺点。对于大数据,RedShift是一个不错的选择。 |
| 一个数据库连接到一个CPU,因此数据应该是一个接一个地处理。我们不能指望数据库在没有扩展的情况下用一个CPU更快地运作。我们没有集群,只有节点的存在。 | RedShift中进行了大规模的并行处理,这有助于同时处理数据,这有助于以比预期更快的速度完成查询。不同的节点被用来在数据库中进行集群配置的处理。 |
总结
当数据量是TB级的时候,如果近期内数据没有增加,我们可以使用PostgreSQL。如果是大数据,而且分析性查询一直在运行,那么RedShift是一个不错的选择。另外,如果我们已经有了AWS的数据库,那么PostgreSQL就不是很好,因为它的成本会超过预期的数额。