数据仓库用于整合来自多个来源的数据,使您能够跨数据运行业务智能工具,帮助您识别可操作的业务信息,然后使用这些信息来指导和推动您的组织做出有效的数据驱动决策 为了您公司的利益。
因此,使用数据仓库是大规模管理报告和数据分析的非常有效的方法。 数据仓库本质上需要能够存储大量数据,并且其数据可能会受到不同的数据操作,例如数据清理,例如,可能会识别、更正、替换或删除不完整的记录。 表或记录集。
这可以根据执行提取、转换和加载或 ETL 作业的需要进行扩展。 这是将来自多个系统的数据组合到单个数据库数据存储或仓库以进行遗留存储或分析的常见范例。
提取是从一个或多个来源检索数据的过程。 在线数据、实体数据、遗留数据、Salesforce 数据等等。 检索数据后,ETL 将计算工作,将其加载到暂存区域并为下一阶段做好准备。
转换是映射、重新格式化、一致、添加含义等以更容易使用的方式准备数据的过程。 其中一个例子是将货币金额从美元转换为欧元的转换和计算。
加载涉及将转换数据成功插入目标数据库数据存储(在本例中为数据仓库)。 所有这些工作都在业务智能开发人员所谓的 ETL 作业中进行处理。
现在我们了解了什么是 Amazon Redshift。 让我们继续看看该服务的架构以及所构建的组件。
让我从集群和节点开始。 集群可以被视为 Amazon Redshift 服务的主要或核心组件。 在每个集群中,它将运行自己的 Redshift 引擎,其中至少包含一个数据库。 顾名思义,集群实际上是另一个组件的分组,这些组件是计算节点。
每个节点将包含至少一个计算节点。 但是,如果集群配置了多个计算节点,则 Amazon Redshift 将添加另一个称为领导节点的组件。
计算节点都包含各自数量的 CPU 连接存储和内存。 并且不同的节点提供不同的性能。 例如,以下 RA3 节点类型。 此外,正如您在此处看到的,密集的计算节点类型。
集群的领导节点的作用是协调集群中的计算节点与访问 Redshift 数据仓库的外部应用程序之间的通信。 因此,领导节点本质上是从应用程序进入集群的网关。 当外部应用程序查询仓库中的数据时,领导节点将创建执行计划,其中包含从数据库返回所需结果的代码。
如果来自外部应用程序的查询引用与计算节点关联的表,则该代码将分发到集群中的计算节点以获取所需的数据,然后将其发送回领导节点。 如果查询未引用计算节点上存储的表,则查询将仅在领导节点上运行。
每个计算节点本身也被分成片,称为节点片。 节点切片只是计算节点的一个分区,其中节点内存和磁盘空间分开。 然后,每个节点切片处理领导节点给出的操作,然后可以针对同一查询同时在所有切片和所有节点上执行并行操作。 正如我之前提到的,计算节点可以有不同的容量,这些容量决定了每个计算节点可以分为多少个切片。
创建表时,可以根据为表定义的分布情况将表的行分布在不同的节点切片上。 要更深入地了解如何选择最佳分发方式,请参阅此处的以下链接。
创建 Amazon Redshift 数据库后,您当然会使用您的应用程序连接到它。 通常,这些应用程序将是您与组织一起运行的分析和商业智能工具。 您的 BI 应用程序和 Redshift 之间的通信将使用行业标准开放数据库连接 ADBC。 与Java数据库导通,PostgreSQL的JDBC驱动。
Amazon Redshift 可以产生的性能给许多组织带来了巨大的好处。 事实上,在撰写本课程时,AWS 目前声称其速度是其他云数据仓库的三倍。
从查询的角度来看,Amazon Redshift 具有许多功能可以快速有效地返回结果。 让我们看一下其中的一些。
首先,大规模并行处理。 正如上一节中所强调的,通过跨不同节点切片和节点关联表中的行。 它允许节点领导者生成执行计划,将外部应用程序的工作人员同时分配到多个计算节点,使它们能够共同工作以生成最终结果,该结果由领导者节点聚合。
列式数据存储。 这是减少数据库执行磁盘 I/O 次数的一种方法,有助于提高查询性能。 减少从磁盘检索数据意味着有更多的内存容量可以对查询结果进行内存处理。 如果没有缓存,缓存通常是实现一定程度的优化的好方法。
结果缓存通过将一些查询结果缓存在集群中领导节点的内存中,有助于减少执行查询所需的时间。 因此,当提交查询时,领导节点将检查其自己的结果缓存副本,如果找到成功的匹配,则使用缓存的结果,而不是在 Redshift 集群上执行另一个查询。
Amazon Redshift 还与 Amazon CloudWatch 集成,使您能够监控物理资源的性能,例如 CPU 利用率和吞吐量。 除此之外,Redshift 还生成查询和加载性能数据,使您能够跟踪整体数据库性能。 与查询和负载性能相关的任何数据只能从 Redshift 控制台本身访问,而不能从 Amazon CloudWatch 访问。
在创建 Redshift 集群期间,您可以作为可选元素,选择最多 10 个不同的 IAM 角色来与您的集群关联。 这允许您向 Amazon Redshift 原则 redshift.amazonaws.com 授予代表您访问其他服务的权限,例如,您可能拥有数据湖的 Amazon S3。 访问 S3 中的数据需要一组凭据来授权 Redshift 访问 S3。 最好的方法是使用 IAM 角色。 因此,如果您打算在使用 Amazon Redshift 集群时执行此类操作,您可能需要考虑您需要哪些访问权限以及需要创建哪些角色。