在大数据时代,企业面临着从海量数据中快速提取有价值信息的挑战。Azure SQL数据仓库作为一个基于云的数据仓库解决方案,利用大规模并行处理(MPP)技术,能够迅速处理PB级别的复杂查询。它不仅是大数据解决方案的核心,还能通过PolyBase T-SQL查询轻松导入大数据,从而释放MPP的强大分析能力。随着数据的分析和整合,数据仓库成为了企业可以依赖的单一真相来源,为业务洞察提供了坚实的基础。
云数据解决方案通过从不同来源接收数据到大数据仓库,利用Hadoop、Spark和机器学习算法对数据进行准备和训练。当数据准备好进行复杂分析时,SQL数据仓库使用PolyBase查询大数据存储。PolyBase使用标准的T-SQL查询将数据传输到SQL数据仓库。
SQL数据仓库以关系表的形式存储数据,并采用列存储格式,这种格式提高了查询性能并降低了数据存储成本。一旦数据存储在SQL数据仓库中,就可以进行大规模的分析。与传统数据库系统相比,分析查询的完成时间从分钟或小时缩短到秒,甚至从天缩短到秒。分析结果可以传输到全球数据库或应用程序,业务分析师可以据此做出明智的业务决策。
SQL数据仓库专为行业级数据仓库实现而设计,在Microsoft Azure云中存储大量数据。它使用单一的SQL基础视图跨非关系型大数据存储和关系数据库,使企业能够在云数据仓库中统一结构化、非结构化和流数据。用户可以使用SQL Server Management Studio (SSMS)操作Azure SQL数据仓库,或使用Azure Data Studio (ADS)编写查询。
SQL数据仓库使用PolyBase直接查询大数据存储,如Hadoop系统。PolyBase使组织能够使用标准的T-SQL查询将数据推送到SQL数据仓库,并为所有数据提供单一的SQL基础查询区域。它使用列存储在关系表中存储数据,这降低了数据存储成本并提高了查询性能。
SQL数据仓库采用可扩展的架构,在多个节点上分布数据处理。Azure SQL数据仓库的架构将计算和存储解耦,允许用户独立扩展并仅支付组织所需的处理和存储费用。
它提供了为灵活性设计的绩效层,以满足数据需求。可以选择针对计算或弹性优化的仓库。针对弹性优化的性能层将架构中的计算和存储层分开。此选项在可以充分利用计算和存储分离的工作负载中表现出色,通过频繁扩展来支持短期活动。计算层具有最低的入门价格,并可扩展以支持大多数客户工作负载。
针对计算能力优化的性能层,使用最新的Azure硬件引入了新的NVMe固态硬盘缓存,将最常用的数据保持在处理器附近,这正是想要的。自动存储分层使这个性能层在处理复杂查询时表现出色,因为所有I/O都保持在计算层本地。此外,列存储得到了增强,可以在数据仓库中存储大量数据。针对计算性能层提供了最高级别的可扩展性,允许扩展到30,000个数据仓库计算单元(cDWUs)。选择这个级别用于需要连续、极速性能的任务。
如果已经知道要在数据仓库上运行的主要操作和查询,可以优先考虑数据仓库架构。这些查询和操作可能包括:
// 示例代码
SELECT * FROM factTable
JOIN dimensionTable ON factTable.key = dimensionTable.key
WHERE factTable.date = '2023-01-01';
将一个或两个事实表与维度表连接,过滤合并后的表,然后将结果连接到数据集市。对销售事实进行大或小的更新。仅连接表中的数据。提前了解操作类型将有助于优化表的设计。
可以从Round Robin开始,但应努力采用哈希分布策略以利用大规模并行架构的优势。确保常见的哈希键具有相同的数据格式。不要以varchar数据格式分布。具有与频繁进行连接操作的事实表相似的哈希键的维度表可以进行哈希分布。使用sys.dm_nodes_db_partition_stats分析任何数据失真。使用sys.dm_request_steps分析请求背后的数据移动,并监控广播时间和随机操作。这对于检查数据分布非常有用。
如果有一个大型事实表(超过10亿行),可以分割表。在99%的情况下,分区键应该是基于日期的。记住不要分区,特别是当有聚集列存储索引时。需要ELT的工作表可以从分区中受益。便于数据生命周期管理。记住不要分区数据,特别是在聚集列存储索引中。
如果要增量加载数据,请确保分配了更大的资源类来加载数据。建议使用PolyBase和ADF V2自动化ELT提要到SQL数据仓库。对于历史数据的大量更新,首先删除相关数据。然后执行新数据的批量插入。这种两步方法更有效。