AWS Redshift 与 Snowflake 用例

Posted

技术标签:

【中文标题】AWS Redshift 与 Snowflake 用例【英文标题】:AWS Redshift vs Snowflake use cases 【发布时间】:2017-12-14 17:58:07 【问题描述】:

我想知道是否有人同时使用了 AWS Redshift 和 Snowflake 以及其中一个更好的用例。我使用过 Redshift,但最近有人建议 Snowflake 作为一个不错的选择。我的用例基本上是零售营销数据,少数分析师会使用这些数据,这些分析师不太精通 SQL,并且很可能会在顶部使用报告工具

【问题讨论】:

这个怎么样? periscopedata.com/blog/… 不是编码问题,过于主观。这两个平台都具有数百万种功能,而您实际上是在询问最终用户功能……您询问的两种产品中没有一个实际具有。 【参考方案1】:

Redshift 是一款不错的产品,但很难想出比 Snowflake 更好的用例。以下是 Snowflake 更好的一些原因:

管理控制台很棒,Redshift 没有。 放大/缩小只需几秒到几分钟,Redshift 需要几分钟到几小时。 两种产品的文档都很好,但雪花更好地铺设 出门在外,更方便。 您需要了解更少的“秘诀”才能让 Snowflake 发挥出色。在 Redshift 上,您至少需要了解和理解分布键和排序键等对性能的影响。 Snowflake 的加载过程比 Redshift 更优雅。 Redshift 假设您的数据已经在 S3 中。 Snowflake 支持 S3,但具有对 JDBC、ODBC 和 dbAPI 的扩展,可真正简化和保护摄取过程。 Snowflake 对数据库内 JSON 有很好的支持,并且正在迅速增强其 XML。 Redshift 有一种更复杂的 JSON 方法,建议不要在除较小用例之外的所有用例中使用它,并且不支持 XML。

我只能想到 Redshift 胜出的两个案例。一是地理可用性,因为 Redshift 在比 Snowflake 更多的位置可用,这可以在数据传输和报表提交时间上产生差异。另一个是提交一批多条语句的能力。 Snowflake 一次只能接受一个语句,如果批处理包含许多语句,这可能会减慢您的批处理速度,尤其是当您的服务器位于另一个大陆时。

Ajilius 我们的开发人员每天都在使用 Redshift、Snowflake 和 Azure SQL 数据仓库;我们在所有三个平台上都有客户。即使有这样的选择,每个开发人员都更喜欢 Snowflake 作为他们的首选云 DW。

【讨论】:

我不确定这是来自什么经验,但是:redshift 中的管理控制台非常真实、实用且广泛。我对雪花的经验有限,但我的印象是,如果您愿意投入时间和试错来调整 redshift,则可以为 hadware 提供更高的性能,而雪花似乎更加用户友好。【参考方案2】:

我评估了 Redshift(使用 S3 的 Redshfit 光谱)和 SnowFlake。

在我的 poc 中,snowFlake 比 Redshift 好得多。 SnowFlake 与关系/NOSQL 数据很好地集成。不需要前期索引或分区键。它的效果令人惊叹,无需担心以何种方式访问​​这一天。

Redshift 非常有限,不支持 json。很难理解分区。你必须做很多工作才能完成某件事。不支持json。您可以使用红移光谱作为访问 S3 的创可贴。祝你提前分区好运。在 S3 存储桶中创建分区后,您就完成了,除非您再次将所有数据重做为新结构,否则无法更改。您最终会花时间解决这些问题,而不是解决实际的业务问题。

这就像比较智能手机和摩尔斯电码机器。 Redshift 就像莫尔斯电码的一种实现方式,它不适合现代开发

【讨论】:

【参考方案3】:

我们最近从 Redshift 切换到 Snowflake 的原因如下:

实时数据同步 并发查询的处理 最小化数据库管理 为不同的 Looker 用户提供不同数量的计算能力

可以在我们的data blog 上找到更深入的文章。

【讨论】:

如果您使用过该功能,我将不胜感激有关雪花流的任何信息。谢谢。【参考方案4】:

我评估了 Redshift 和 Snowflake,以及一点点 Athena 和 Spectrum。在我们有大连接的情况下,后两者是非首发,因为它们会耗尽内存。对于 Redshift,我实际上可以获得更好的性价比,原因如下:

允许我选择一个对于同位连接来说非常重要的分发密钥 三年保留价格可享受极大折扣,因此您可以以合理的成本真正提升您的计算能力

在大多数情况下,我可以使用 Redshift 获得更好的性能,但它需要良好的 MPP 知识才能正确设置物理架构。专业知识和复杂性的成本抵消了部分产品成本。

Redshift 将 JSON 存储在 VARCHAR 列中。当跨大型表查询 JSON 元素的子集时,这可能会导致问题 (OOM),其中 VARCHAR 列的大小太大。在我们的例子中,我们必须将 VARCHAR 定义为非常大,以容纳一些具有非常大的 JSON 文档的记录。

Snowflake 功能非常棒,包括:

能够克隆对象 处理 JSON 数据的深层功能 用于低维护负载、自动缩放负载、涓流更新的雪管 本地 ETL 的流和任务 能够单独扩展存储和计算 能够在一分钟内扩展计算,无需迁移数据 还有更多

关于 Snowflake,我要提醒的一件事是,人们可能会想聘请技能较低的开发人员/DBA 来运行系统。使用巨大的计算集群可以解决糟糕的架构设计中的性能问题,但这可能不是最好的选择。无论如何,Snowflake 中的功能是惊人的。

【讨论】:

如果您实际使用过 Snowflake 流,我将不胜感激。谢谢! 是的,我们使用流。流在功能上类似于表上的事务日志。基本上,它们通过元数据跟踪更新、插入和删除。在我们的例子中,我们将原始数据加载到数据湖中的 Snowflake。我们为每个数据湖表声明了一个流。我们使用任务进行 ETL 处理,从流中提取更改数据,对其进行处理,然后更新我们数据仓库中的星型模式。 Looter,您是否有兴趣为一家咨询公司提供有关数据库密集型(Snowflake 和其他后端)项目的建议?如果是,他们的联系信息如下: 公司名称:Akvelon 电话号码:+1 (206) 905-4626 联系表格:akvelon.com/company/contact-us 姓名:Javier Sanchez 和 Alex Kosolapov 谢谢!

以上是关于AWS Redshift 与 Snowflake 用例的主要内容,如果未能解决你的问题,请参考以下文章

解析 JSON 时出错:输入中有多个文档(Redshift 到 Snowflake SQL)

Redshift COPY 命令与 AWS 数据管道 RedshiftCopyActivity

AWS Redshift 列式存储与分布方式

将 Laravel 迁移与 AWS Redshift 数据库一起使用

SnowFlake 可以用作 AWS 的数据迁移服务中的源端点吗?

使用 AWS 驱动程序与 Redshift 的 R 连接不起作用,但可以与 Postgre 驱动程序一起使用