【问题标题】:How does Redshift concurrency scaling work?Redshift 并发扩展如何工作?
【发布时间】:2021-12-29 16:40:59
【问题描述】:

在 AWS 文档中写道:

当您开启并发扩展时,Amazon Redshift 会自动 添加额外的集群容量以处理两个读取的增加 并编写查询。用户看到最新的数据,无论是 查询在主集群或并发扩展集群上运行。

这对我来说真的很模糊。 如何创建这个新集群?

“用户查看最新数据”

如果数据分布在不同 EBS 磁盘上的多个节点上,如何使用最新数据创建新集群? 该功能是否基于 EBS 节点快照?

【问题讨论】:

    标签: amazon-web-services amazon-redshift amazon-ebs amazon-redshift-spectrum


    【解决方案1】:

    您为什么认为 Redshift 存储基于 EBS?这将是一种网络存储解决方案,无法提供像 Redshift 这样的大数据解决方案所需的速度和带宽。节点存储是系统内部 AFAIK。

    要了解并发集群的工作原理,让我们看一个简单的近似值。 Redshift 一致性(允许用户查看最新信息的属性)的基础是块。这些块分布在基本集群的节点周围,因此任何节点使用的数据都可能是远程的(通过该节点的网络)。因此,即使是基本集群数据也可以是远程的,Redshift 一致性系统可确保在所有情况下都提供正确版本的任何块。该系统是 MVCC 模型(多版本一致性控制),适用于分布在 Redshift 等网络集群中的数据库。

    并发集群可以看作是接入基础集群一致性系统的更多节点。在这种情况下,所有数据块都远离执行工作的节点,而不仅仅是一些数据块。正是一致性系统确保将正确的块提供给任何请求节点(基本或远程)。

    现在并发集群的实际实现比这更复杂,以确保高性能执行。并发集群中的节点与基本集群中的“相同”节点配对,并且可以缓存块供该集群使用。但是对这些缓存块的请求总是针对基本集群进行一致性检查,因为这是源。如果事情没有改变,那么可以使用数据的缓存版本。通过这种方式,并发集群可以拥有它需要的所有数据以及相当独立地执行只读查询的能力。一旦块被缓存在并发集群上,基本集群上几乎没有额外的负载,除了在基本集群上完成的一致性检查。如果您的数据库中的大部分数据是静态的并且您的大部分查询负载是只读的,那么可以实现非常高水平的并发扩展。但是,如果您的数据快速变化,则会有大量额外的一致性检查和新版本块的复制。由于这些操作会影响基础集群,因此在这些情况下应该限制 (1-3) 的一致性缩放量。

    更新:已请求进一步探索 Redshift 存储、块和 MVCC 的参考和材料。

    Redshift 架构概述:https://docs.aws.amazon.com/redshift/latest/dg/c_high_level_system_architecture.html

    Redshift 数据组织概述:https://docs.aws.amazon.com/redshift/latest/dg/t_Distributing_data.html

    AWS 的 Redshift 深度探索(关于存储的幻灯片 28):https://www.slideshare.net/AmazonWebServices/deep-dive-on-amazon-redshift-72473281

    MVCC 概览:https://en.wikipedia.org/wiki/Multiversion_concurrency_control

    Posgres8(从 Postgres8 派生的 Redshift)MVCC:https://www.postgresql.org/docs/8.1/mvcc.html

    来自 re:Invent 的 Redshift 介绍演示:https://www.slideshare.net/AmazonWebServices/deep-dive-on-amazon-redshift-72473281

    作为 re:Invent 2016 的一部分,我对此的看法:https://www.youtube.com/watch?v=bxfnWTiY7EM

    【讨论】:

    • 嗨,比尔,感谢您的时间和回答。好点,我现在意识到 Redshift 文档中的任何地方都没有提到 EBS。让我觉得它是基于文档中的备份选项:“快照”、“时间点备份”、“自动或手动快照”、“增量快照”(这个“词汇”非常接近 EBS 措辞对吧?)
    • 我没有太多分布式数据库背景,所以不确定我是否能 100% 理解您的答案。我认为我不理解的部分是“这些块分布在基本集群的节点周围,因此任何节点使用的数据都可能是远程的(通过该节点的网络)。所以即使对于基本集群的数据也可以是远程的和红移 [...]”。您是否有任何文档/链接可以更好地理解?
    • 是的,我怀疑 AWS 在服务中使用了许多相同的术语,以便轻松使用不同的产品。我将在我的答案中添加一些链接,但我可能遗漏的要点是“1MB 块是 Redshift 中存储和一致性的基本单元”、“Redshift 查询工作分布在位于整个计算中的“切片”中集群”和“块分布在集群节点和片上”,具有内部数据存储。为了组合来自不同节点的数据,一些数据需要在节点之间通过网络传递。
    猜你喜欢
    • 2019-09-06
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多