如果我不关心插入速度,我应该将 S3 与 Redshift 一起使用吗?

Posted

技术标签:

【中文标题】如果我不关心插入速度,我应该将 S3 与 Redshift 一起使用吗?【英文标题】:If I don't care about insert speed, should I use S3 with Redshift? 【发布时间】:2016-05-26 23:10:25 【问题描述】:

我有一堆数据想要存储并进行分析。基于定价和数据关系,Redshift 似乎是正确的选择。但是,我一直在文档和最佳实践中看到我应该使用 S3 并将我的数据大量复制到 Redshift 中的内容。假设我根本不关心插入速度,我只关心我为这些服务支付的金额。如果我使用 S3 和 Redshift,我基本上要付双倍的费用,而且我还有更多代码要编写。为什么(财务上)我不应该直接使用 JDBC 将我的数据插入 Redshift?

【问题讨论】:

【参考方案1】:

我相信这个想法是直接将其加载到 Redshift 将比加载到 S3 花费更长的时间 + 让 RedShift 从 S3 中获取它。 所以你必须做的数学是:将它加载到 Redshift 需要多长时间?在加载过程中并且您没有对数据做任何事情时,您打算让 Redshift 运行多少(并为此付费)? 如果上传到 S3 并在之后启动 Redshift,您需要支付多少费用? 猜测(但记住这是一个猜测)如果你通过 S3,它会稍微便宜一些。 基本上,您希望使用 S3 来加快上传速度 + 与 Redshift 成本相比,存储在 S3 中的成本是微不足道的,您还可以使用 S3 作为对数据进行其他类型处理的源。

【讨论】:

“所以你要做的数学运算是:将它加载到 Redshift 需要多长时间?”为什么我必须知道这个?你知道这是计算成本的一个因素吗?如果是这样,你能提供一个来源吗?谢谢。 要加载到 redshift,您需要让实例运行。那是 25 美分/小时和 6.8 美元/小时之间的任何地方。因为插入速度非常慢(根据docs.aws.amazon.com/redshift/latest/dg/r_INSERT_30.html),您需要为集群支付很多费用,直到所有数据都上传并且您可以使用它。因此,如果使用 S3,您将支付额外的存储空间(按存储量),如果不使用 S3,您将支付更多费用以在加载时保持 redshift 集群空闲。如果您的目标是最小化成本,Redshift 比 S3 贵得多。 “如果您的目标是最小化成本,Redshift 比 S3 贵得多。”你是说我可以只使用 S3 而不能使用 Redshift?我认为 S3 是一个密钥库。我很确定它没有我需要的排序键的概念。 您可以在需要时上下旋转 Redshift 实例并从 S3 加载。那可能更便宜。不是正常的使用模式,但您似乎又对最小化成本感兴趣。

以上是关于如果我不关心插入速度,我应该将 S3 与 Redshift 一起使用吗?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python 将数据插入 RedShift

将 ACCCEPTINVCHARS 与远程主机一起使用

如果我不关心它的返回值,我应该等待一个“异步任务”函数吗? [复制]

我应该如何批量上传到 s3 并通过最终回调从 nodeJS 网络服务器插入到 MongoDB?

将一张表从 RDS / postgres 加载到 Redshift

将 S3 静态站点与应用程序负载均衡器结合使用