Amazon Redshift 是否有自己的存储后端

Dur*_*sad 2 amazon-web-services amazon-redshift amazon-redshift-spectrum

我是 Redshift 的新手,对 Redshift 的运作方式有一些说明:

Amazon Redshift 是否有自己的后端存储平台,还是依赖 S3 将数据存储为对象,而 Redshift 仅用于查询、处理和转换,并具有临时存储以从 S3 中获取特定切片并进行处理?

从某种意义上说,redshift 是否拥有自己的后端云空间,如 oracle 或 Microsoft SQL 拥有自己的物理服务器来存储数据?

因为,如果我由于容量增加而从传统的 RDBMS 系统迁移到 Redshift,如果我单独选择 Redshift 会或者我应该选择 Redshift 和 S3 的组合。

这个问题似乎很基本,但我无法在 Amazon 网站或任何与 Redshift 相关的博客中找到答案。

Joh*_*ein 5

是的,Amazon Redshift 使用自己的存储。

Amazon Redshift 的主要用例是针对大量数据运行复杂查询。这就是“数据仓库”的目的。

普通数据库在超过 100 万行时开始失去性能,而 Amazon Redshift 可以处理数十亿行。这是因为数据分布在多个节点上并以列格式存储,使其适合处理“宽”表(这是数据仓库中的典型情况)。这就是 Redshift 速度的原因。事实上,正是专用存储以及数据存储方式赋予了 Redshift 惊人的速度。

然而,权衡意味着虽然 Redshift 在查询大量数据方面非常出色,但它并不是为频繁更新数据而设计的。因此,它不应替代应用程序用于事务的普通数据库。相反,Redshift 通常用于获取交易数据,将其与其他信息(客户、订单、交易、支持票、传感器数据、网站点击、跟踪信息等)结合,然后运行结合所有这些数据的复杂查询。

Amazon Redshift 还可以使用Amazon Redshift Spectrum,它与 Amazon Athena 非常相似。这两种服务都可以直接从 Amazon S3 读取数据。此类访问不如使用直接存储在 Redshift 中的数据高效,但可以通过使用列式存储格式(例如 ORC 和 Parquet)和对文件进行分区来改进。当然,这仅适用于查询数据,不适用于对数据执行事务(更新)。

较新的 Amazon Redshift RA3 节点还能够将较少使用的数据卸载到 Amazon S3,并使用缓存来运行快速查询。好处是它将存储与计算分开。

快速总结:

  • 如果您的应用程序需要数据库,请使用Amazon RDS
  • 如果您要构建数据仓库,请使用Amazon Redshift
  • 如果您有大量很少查询的历史数据,请将其存储在 Amazon S3 中并通过Amazon AthenaAmazon Redshift Spectrum 进行查询