使用表更新策略的常见方案有哪些

本部分介绍使用更新策略的一些已知方案。 如果情况类似,请考虑采用这些方案。

本文介绍以下常见方案:

Medallion 体系结构数据扩充

表的更新策略提供了一种高效的方式来应用快速转换。

在 medallion 体系结构中,当原始数据到达着陆表(青铜层)时,可以使用更新策略来应用初始转换,并将扩充的输出保存银层表。 此过程可以级联,其中银层表中的数据可以触发另一个更新策略以进一步优化数据并填充金层表。

下图演示了名为 Get_Values 的数据扩充更新策略的示例。 扩充的数据会输出到银层表,其中包括基于原始数据计算出的时间戳值和查找值。

关系图显示使用更新策略解决方案的 medallion 体系结构数据扩充方案。

数据路由

当原始数据元素包含的数据必须基于数据本身的一个或多个属性路由到另一个表时,会发生数据扩充的特殊情况。

请考虑使用与上一方案相同的基本数据的示例,但这次有三条消息。 第一条消息是设备遥测消息,第二条消息是设备警报消息,第三条消息是错误消息。

若要处理此方案,将使用三个更新策略。 Get_Telemetry 更新策略会筛选设备遥测消息、扩充数据并将其保存到 Device_Telemetry 表中。 同样,Get_Alarms 更新策略也会将数据保存到 Device_Alarms 表中。 最后,Log_Error 更新策略会将未知消息发送到 Error_Log 表,让操作员能够检测格式错误的消息或意外的架构演变

下图描述了包含这三个更新策略的示例。

关系图显示使用更新策略解决方案的数据路由方案。

优化数据模型

表的更新策略旨在提高速度。 表通常符合星型架构设计,它支持开发针对性能和可用性而优化的数据模型。

在星型架构中查询表通常需要联接表。 但是,表联接可能会导致性能问题,尤其是在查询大量数据时。 为了提高查询性能,可以在数据引入时存储非规范化数据来平展模型。

在数据引入时联接表具有处理小批量数据的额外优势,可以减少联接的计算成本。 此方法可以显著提高下游查询的性能。

例如,可以通过从维度表中查找值来扩充来自设备的原始遥测数据。 更新策略可以在数据引入时执行查找,并将输出保存到非规范化表。 此外,还可以使用从参考数据表获取的数据来扩展输出。

下图描述了包含名为 Enrich_Device_Data 的更新策略的示例。 它使用从 Site 参考数据表中获取的数据来扩展输出数据

关系图显示使用更新策略解决方案的优化数据模型方案。