Azure 数据资源管理器工作原理

Azure 数据资源管理器旨在为引入和查询遥测、日志、事件、跟踪和时序数据提供无与伦比的性能。 它具有优化的存储格式、索引,并使用高级数据统计信息进行高效的查询规划和实时编译的查询执行。

存储与计算

Azure 数据资源管理器分离存储和计算资源。 永久性数据驻留在 Azure Blob 存储中,而计算资源可以存储临时数据或充当永久性存储的缓存。

这种分离具有以下优势:

  • 独立横向扩展存储和计算资源。
  • 跨多个计算群集访问相同数据。
  • SKU 优化。 有关详细信息,请参阅为群集选择 SKU

数据存储

Azure 数据资源管理器将所有引入的数据分区到盘区数据分片,这是目标表的水平切片。 盘区可以像单个记录一样小。 随着数据累积在表中,Azure 数据资源管理器会自动合并盘区,直到它们增长到包含数百万条记录。 每个盘区都独立于其他盘区进行编码和索引。 此功能有助于引入吞吐量的线性缩放。

盘区跨群集节点均匀分布,它们缓存在本地 SSD 上和内存中。 此分布增强了准备和执行高度分布式和并行查询的容量。

有关数据存储的详细信息,请参阅盘区概述

注意

Azure 数据资源管理器还保留重要的元数据,例如表架构和策略对象。 有关策略列表,请参阅策略概述

数据缓存

Azure 数据资源管理器具有多层次结构数据缓存系统,以确保尽可能接近 CPU 缓存最相关的数据。 缓存系统依赖于盘区不可变性,并且完全适用于压缩的数据。 为了提高查询性能,即使在 RAM 中,数据也会保持压缩状态,并且仅在查询需要时才解压缩。

有关缓存的详细信息,请参阅高速缓存策略

文本索引

Azure 数据资源管理器旨在引入数据时有效地为自由文本(字符串)和类似 JSON(动态)的列编制索引。 索引保持粒度级别,以便基于索引评估查询的各个部分,而无需扫描数据。

通过合并来持续优化盘区的背景优化可改进压缩和索引编制,确保高效的存储和低查询延迟。 一旦盘区达到特定大小,只会合并索引来提高查询性能,而不会降低效率。

有关盘区和索引合并的详细信息,请参阅合并策略

行存储

Azure 数据资源管理器提供名为“行存储”的中间存储解决方案。 行存储允许有效引入少量数据,并确保此数据立即可供查询。 当在群集上启用流式引入时,数据最初将引入到行存储,然后移动到列存储盘区。

有关详细信息,请参阅批处理与流式引入

列压缩

Azure 数据资源管理器维护处于压缩状态的数据,从而减少存储和处理数据所需的内存量。 此行为可提高查询性能和系统资源的使用效率。

Azure 数据资源管理器可避免垂直压缩,这涉及到对数据进行排序以提高压缩,因为它在自由文本或半结构化数据方案中的 CPU 成本较高。 相反,可以为具有主导查询模式的方案指定首选数据排序顺序。 这种权衡优先考虑查询的快速数据可用性。

有关指定数据排序顺序的详细信息,请参阅行顺序策略

分布式数据查询

Azure 数据资源管理器使用分布式数据查询技术,用于对大型非结构化数据集进行快速临时分析。 此技术的主要功能包括:

  • 查询生成的临时数据存储在聚合 RAM 中
  • 相关盘区在查询计划中标记,提供快照隔离
  • 快速高效的查询优先于短默认超时
  • 跨群集查询的本机支持,以最大程度地减少群集间数据交换
  • 查询实时编译为高效计算机代码,使用来自所有盘区的数据统计信息,并根据列编码细节进行定制

注意

Azure 数据资源管理器设计为使用 Kusto 查询语言 (KQL),这是为 Azure 数据资源管理器自定义生成的。 此外,还支持 T-SQL