使用 Amazon Redshift 强化企业级数据仓库
使用 Amazon Redshift 构建企业级数据仓库 第二部分
关键要点
在这篇文章中,我们将讨论使用 Amazon Redshift 构建企业级数据仓库时的设计考虑因素和最佳实践,特别关注数据保护、性能、成本管理及安全等方面。通过了解 Amazon Redshift 的功能,您将能更好地设计适合您组织的数据模型和架构。
Amazon Redshift 是一个流行的云数据仓库,提供完全托管的云服务,与组织的 Amazon 简单存储服务Amazon S3数据湖、实时流、机器学习ML工作流、事务工作流等无缝集成,同时相比其他云数据仓库提供高达 79 倍的性价比。
与所有 AWS 服务一样,Amazon Redshift 注重客户需求,意识到数据模型并不是一刀切,因此支持多种数据模型,如星型模式、雪花模式和数据仓库模型。本文重点讨论在设计企业级数据仓库时的迫切需求,以及 Amazon Redshift 如何满足这些需求。系列的 第一部分 讨论了如何使用 Amazon Redshift 进行不同比例企业级数据仓库的最佳实践。
无论是希望在数据仓库中轻松保留数据源关系,建立源系统无关的数据模型,还是更容易遵守 GDPR 法规,实施数据仓库模型的客户都将从本文对考虑因素、最佳实践、和 Amazon Redshift 特性及 AWS 云能力的讨论中受益。构建一个初始版本的项目可能相对简单,但要构建一个具有企业级规模、安全性、弹性和性能的解决方案,通常需要遵循经过考验的最佳实践,并在合适的场景中使用合适的工具和功能。
数据仓库概述
有关核心数据仓库原理和概念的简要回顾,请参考系列的 第一部分。以下部分将讨论数据仓库实施中常见的关键考虑领域 数据保护、性能和弹性、分析功能、成本和资源管理、可用性以及可扩展性。尽管这些领域也可能是任何数据仓库模型的关键考虑区域,但根据我们的经验,这些领域在实施企业级数据仓库时有其独特的特点和特殊需求。
数据保护
安全性始终是 AWS 的首要任务,我们在与客户的日常合作中也感受到同样的重视。数据安全具有多层面和多维度,包括静态加密和动态加密等。在这一部分,我们将探索通常在数据保护寺中的需求,以及如何利用 Amazon Redshift 的功能满足这些需求。
数据加密
默认情况下,Amazon Redshift 会加密传输中的数据。通过简单的配置,用户可以设定 Amazon Redshift 加密数据在数据仓库生命周期中的任何阶段。用户可以使用 AWS 密钥管理服务AWS KMS或硬件安全模块HSM来执行数据加密。通过 AWS KMS,用户可以选择使用 AWS 管理密钥或自己管理的密钥。有关详细信息,请参考 Amazon Redshift 数据库加密。
在集群创建后,您也可以修改集群的加密设置。
精细化访问控制
为了实现大规模的精细化访问控制,数据仓库通常需要使用静态和动态访问控制相结合的方式。静态访问控制可以限制对数据库、表、行和列的访问,动态访问控制则可以根据用户的角色对数据项的部分或全部部分进行掩盖。
Amazon Redshift 一直以来都支持通过 GRANT 和 REVOKE 命令来实现静态访问控制,以数据库、架构和表为基础,甚至在行和列级别上也可以进行控制。此外,Amazon Redshift 还支持 行级安全性 和 基于角色的访问控制,后者有助于简化 Amazon Redshift 中安全权限的管理。
以下是使用 GRANT 和 REVOKE 语句在 Amazon Redshift 中实现静态访问控制的示例:
创建信用卡表并填充数据: sql 创建信用卡表 CREATE TABLE creditcards ( customerid INT isfraud BOOLEAN creditcard TEXT)
填充表格示例数据INSERT INTO creditcards VALUES(100n 453299ABCDEF4842)(100y 471600ABCDEF5888)(102n 524311ABCDEF2649)(102y 601172ABCDEF4675)(102n 601137ABCDEF9710)(103n 373611ABCDEF6352)
创建用户 user1 并检查其在 creditcards 表上的权限。我们使用 SET SESSION AUTHORIZATION 在当前会话中切换到 user1: sql 创建用户 CREATE USER user1 WITH PASSWORD 1234Test!
检查 user1 在 creditcards 表上的访问权限SET SESSION AUTHORIZATION user1 SELECT FROM creditcards 这将返回权限错误
授予 user1 在 creditcards 表上的 SELECT 权限: sql RESET SESSION AUTHORIZATION
GRANT SELECT ON creditcards TO user1
验证 user1 在 creditcards 表上的访问权限: sql SET SESSION AUTHORIZATION user1 SELECT FROM creditcards 查询将返回行 RESET SESSION AUTHORIZATION

数据混淆
静态访问控制可以为用户社区设定明确的访问边界护栏,例如,仅允许营销部门的用户访问营销数据。但当需要限制字段的部分而不是全部内容时如何处理呢?Amazon Redshift 支持动态数据混淆,使您可以在不转换数据库中的数据的情况下保护敏感数据。
在以下示例中,我们将使用遮罩策略对 creditcards 表进行完全混淆处理:
创建一个完全遮罩信用卡号的策略: sql CREATE MASKING POLICY maskcreditcardfull WITH (creditcard VARCHAR(256)) USING (000000XXXX0000TEXT)
将 maskcreditcardfull 附加到 creditcards 表,并标记为默认策略: sql ATTACH MASKING POLICY maskcreditcardfull ON creditcards(creditcard) TO PUBLIC
用户在运行以下查询时会看到信用卡信息被遮罩: sql SELECT FROM creditcards
集中安全策略
通过结合静态和动态访问控制,您可以实现更广泛的访问控制,适用于多种用户社区、数据集和访问场景。然而,如何处理跨多个 Redshift 数据仓库共享的数据集?使用 Amazon Redshift 数据共享,可以跨多个 Redshift 数据仓库处理存储在一个仓库中的数据集。
Amazon Redshift 与 AWS Lake Formation 的集成使得数据共享的 访问和权限管理 变得集中化。您可以在 Lake Formation 中建立 Amazon Redshift 数据共享策略,该策略将被所有 Redshift 数据仓库所认可。
性能
企业级数据仓库设计中,常常会设置亚秒级的 SLA,尤其是在与业务数据仓库及其上层数据集成时。Amazon Redshift 通过缓存、自动数据模型优化和自动查询重写等多种机制来提供所需的性能。
以下是大规模数据仓库实施中的常见性能需求:
支持高性能查询的查询和表优化高并发性高性能的字符串数据处理Amazon Redshift 性能功能和能力
在这一部分,我们将讨论 Amazon Redshift 的功能如何满足这些性能需求。
缓存Amazon Redshift 使用多层缓存技术来实现重复查询的亚秒响应时间。通过 Amazon Redshift 的内存结果集缓存和编译缓存,从仪表板到可视化,再到商业智能BI的重复查询工作负载都能获得显著的性能提升。
利用内存结果集缓存,具有缓存结果集且基础数据没有更改的查询会立即返回,通常在毫秒内响应。
当前一代 RA3 节点类型建立在 AWS Nitro 系统之上,使用高性能 SSD 存储热数据,使用 Amazon S3 存储冷数据,方便易用、经济高效并提供快速查询性能。管理存储意味着可以快速检索经常访问的数据,同时 Amazon Redshift 自动管理热数据的识别。
在典型的生产数据仓库中,大多数查询都是重复查询,数据仓库中的数据仓库实施也遵循相同的模式。重复查询的最佳运行配置是尽量避免成本高昂的查询运行时解释,因此 Amazon Redshift 在首次运行时编译查询,并将 编译的代码缓存到全局缓存中,为重复查询提供显著的性能提升。
物化视图提前计算重复查询的结果集是一种极其有效的性能提升机制。物化视图的自动更新功能使其能够反映基础数据的最新更改,这也是一种强大的性能提升模式。例如,考虑在原始数据仓库中执行的解常规范化查询以填充业务数据仓库。使用物化视图,下次运行时对于一些变化较小的数据源系统可能不会有数据变化,从而避免了再次完全运行人口查询。
物化视图为其基础查询存储预计算的结果集,类似于基础查询的查询无需每次都重新运行相同的逻辑。开发人员和分析师可以在分析工作负载的基础上创建物化视图,以确定哪些查询将受益。此外,物化视图支持 自动查询重写,使得 Amazon Redshift 可以将查询相应重写为使用物化视图,同时支持 自动更新物化视图。
全国加速器另外,自动物化视图AutoMV功能提供相同性能益处,无需维护开销,Amazon Redshift 会根据观察到的查询模式自动创建物化视图。Amazon Redshift 持续监控工作负载,进行创造新的物化视图,从而实现查询延迟的提升。
结论
在本系列文章中,我们讨论了实现数据仓库 20 系统所需的一系列重要领域,以及您可以利用的 Amazon Redshift 能力与 AWS 生态系统以满足这些需求。我们鼓励现有客户和潜在客户与我们或其他 AWS 同事联系,以更深入了解如何结合 Amazon Redshift 构建数据仓库。
关于作者
Asser Moustafa 是 AWS 的首席分析专家解决方案架构师,常驻德克萨斯州达拉斯。他向全球客户提供有关 Amazon Redshift 和数据湖架构、迁移和愿景的咨询,涵盖整个数据生态系统生命周期,从 POC 阶段到实际生产部署及生产后的增长。
Philipp Klose 是 AWS 的全球解决方案架构师,总部位于慕尼黑。他与金融服务行业的企业客户合作,帮助他们通过架构无服务器平台解决业务问题。在空闲时间,Philipp 喜欢与家人共度时光,享受各种技术爱好。
Saman Irfan 是 AWS 的专家解决方案架构师。她专注于帮助各行各业的客户构建可扩展和高性能的分析解决方案。工作之余,她喜欢与家人共度时光,观看电视剧和学习新技术。