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

Posted

技术标签:

【中文标题】Amazon Redshift 是不是有自己的存储后端【英文标题】:Does Amazon Redshift have its own storage backendAmazon Redshift 是否有自己的存储后端 【发布时间】:2020-05-07 12:27:42 【问题描述】:

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

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

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

因为,如果我因容量增加而从传统的 RDBMS 系统迁移到 Redshift,如果我选择单独使用 Redshift 会做还是应该选择 Redshift 和 S3 的组合。

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

【问题讨论】:

【参考方案1】:

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

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

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

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

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

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

快速总结:

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

【讨论】:

约翰我真的很喜欢你在这里的完整答案,并且将来可能会参考它以获得其他答案。对于 Athena/Spectrum,通常你真的应该只将它用于事务性和不可变数据,而不是经常更新的数据。如果您同意,也许您可​​以更新您的答案以包含有关该内容的内容。另外,也许您应该考虑 AWS 数据湖建议,它本质上是一种混合。【参考方案2】:

查看您的问题,您可能会从有关您的架构的专业帮助中受益。

但是让你开始,Redshift::

有自己的数据存储,没有到s3的链接。 Amazon Redshift Spectrum 还允许您查询保存在 s3 中的数据(类似于 AWS 雅典娜) 作为后端数据库来替代 传统 RDBMS 因为事务非常慢。 是一款出色的数据仓库工具,只需使用它!

【讨论】:

以上是关于Amazon Redshift 是不是有自己的存储后端的主要内容,如果未能解决你的问题,请参考以下文章

Amazon Redshift 存储过程调用

没有函数或存储过程的 Amazon RedShift 中的 Upsert

Amazon RedShift 中的“复制”命令是不是是原子的?

在 Amazon Redshift 中存储极小的值

Amazon Redshift:是不是可以返回多个结果集?

Amazon redshift 存储过程,CONTINUE 不能在循环外使用;