公司在数据和分析能力上投入了大量资金,为公司内外的人们创造了越来越多的数据产品。这些产品依赖于一堆数据管道,每个管道都是将数据从一个地方传输到另一个地方的软件执行编排。随着这些管道变得越来越复杂,重要的是要有工具和实践来开发和调试更改,并在问题对下游造成影响之前缓解问题。数据可观察性、监控和测试都是改进管道的方法,但它们并不相同。
如果您对这三个概念之间的关系感到困惑,请继续阅读。本文将通过回答以下每个问题来解释和比较数据可观察性、监控和测试:
它是什么?
你为什么需要它?
哪些工具提供它?
数据可观察性
首先,您将了解数据可观察性以及为什么需要它。
什么是数据可观测性?
数据可观察性是一种更完整、更全面的数据质量方法,通常是数据成熟度的一个进步 数据管道.
数据可观察性超越了传统的监控能力,并通过使用监控各种数据指标的智能工具来努力减少数据不可靠的时间,并帮助排查和调查数据质量问题,以减少平均检测时间 (MTTD) 和平均解决时间(MTTR) 这些问题。
数据可观察性工具以 ML 驱动的异常检测模型的形式提供特定类型的智能,可以自动检测问题。
与监控已知问题的数据测试和数据监控不同,数据可观察性可以在没有任何先入为主的规则和策略的情况下观察数据模式并检测问题。
此外,数据可观察性可以跟踪模式和数据值的变化,并将其用作预测数据未来行为的情报。它通常以度量阈值的形式提供这些预测。例如,根据行计数的观察值,该工具将预测一个潜在范围,如果数据超出该范围,数据可观察性会创建并发送警报。
现代数据可观察性工具可以与您的数据堆栈深度集成,以深入了解 数据质量 以及管道在每一步的可靠性,并作为数据管道的控制平面。这种能力在纯数据测试或数据监控中是不具备的。
为什么需要数据可观察性?
数据产品、分析报告和基于 ML 的算法通常依赖于来自多个源系统和数据转换工作流的输入。如果一个发生变化或出现故障,它可能会破坏所有下游依赖性。
更改数据管道就像处理 Jenga 塔一样。改变一件,整个事情就会崩溃。
数据可观察性有助于数据所有者了解和解决数据管道内的任何意外问题,这些数据管道为开发和生产环境中的下游数据产品和应用程序提供数据。使用数据可观察性可以防止不可靠的数据流过管道。
例如,假设与您的应用程序的交互作为半结构化日志存储在 无SQL 数据库,例如 MongoDB;数据通过 Apache Beam 提取并存储在 Amazon S3 存储中。接下来,Snowflake 中的存储过程查询这些日志并将它们加载到 表格格式 在暂存架构中。最后,dbt 处理数据并将其添加到生产模式中的数据模型中。Apache Airflow 协调整个过程。
由于六个系统依次处理数据,因此数据可观察性可以单独监控每个系统并整体监控流程。可以对流程进行编程,以使用来自数据可观察性工具的数据质量信号和警报来开票、标记不良数据以供将来补救或完全停止管道。
数据可观察性工具
可以构建自己的数据可观察性平台。然而,这意味着不仅要实施数据验证测试,还要添加趋势分析、持续监控和数据质量结果分析,在顶部创建可视化层,并实施用于异常检测的 ML 功能。
如果这看起来工作量很大,那确实是。这就是为什么供应商提供大部分开箱即用的功能。但是,在这些工具中,存在相当大的差异。有些只能观察分析和基于 SQL 的源,而其他的则 集中数据可观察性 能够监控数据管道中所有系统和来源的数据,无论其结构如何。此外,数据质量指标的计算方式可能会给您的云数据仓库和存储系统带来额外的处理成本。将不将计算下推到数据库的平台与那些将计算下推到数据库的平台区分开来,并考虑您的 TCO。
数据监控
通常,数据监控与数据可观察性用在同一句话中。但是,两者之间存在差异。
什么是数据监控?
数据监控是超越数据测试的一步,通常在构建新的数据管道或对管道进行更改时进行数据测试时实施。在数据测试到位以在正确的点对数据进行功能测试之后,您将需要一个监控系统来继续进行。
数据监控是一种实践,在这种实践中,根据可接受的阈值不断检查数据的预定义数据指标,以发出问题警报。适当的数据监控应该从可观察性开始,识别数据模式和未知问题的异常,并从那里定义和设置需要测量和监控的内容。没有可观测性的数据监控,只能显示表面问题;数据可观察性提供了对持续问题的更深入理解。
您可以将监控称为整体监控,因为它超越了数据测试,并且随着时间的推移比较指标会产生您无法从单一数据测试中获得的模式和见解。
为什么需要数据监控?
当您需要跟踪的内容很明显时,数据监控是正确的选择。如果您监控特定的数据工件并确切知道该数据随时间的变化情况,您可以设置规则来监控它并设置警报以获取通知。
哪些工具提供数据监控?
通常很难自己找到这类工具,部分原因是一些数据监控工具已经从数据可观察平台重新定位,而没有数据可观察性的完整功能,部分原因是数据监控在技术上是数据可观察性的一个子集。
对于一个简单的解决方案,设置数据监控可以像为 Plotly 图表提供指标一样快,条件格式会在达到阈值时发生变化。或者,您可以使用 数据验证规则 在持续的基础上并逐渐建立用于自动检测异常值和异常的基线,这将导致您的数据可观察性实践。
数据测试
前两个概念可以帮助您衡量数据质量,而这个概念可以帮助您确认它。
什么是数据测试?
数据测试或“数据质量测试”验证您对假设的了解,这些假设需要保持真实才能按计划处理数据。我们可以将测试分为两类:
数据的外观: 数据类型、空值、格式等。
业务规则: 唯一的电子邮件地址、客户年龄等。
错误的数据需要特定的操作,包括标记它、以不同的方式处理它、存储它以供以后处理或触发请求人工干预的通知。
有许多 数据质量的维度 您可以测试的内容,包括以下内容:
数据有效性: 要存储日期或时间,它们需要采用正确的格式。如果预期为“YYYY-MM-DD”,则“MM/DD/YY”字符串可能会被误解。其他常见测试检查 NULL 和数据类型。
数据唯一性: 表中的两行不应相同。
数据完整性: 在不过滤或转换的情况下移动数据应该导致目标中的行数与源中的行数相同。
数据一致性: 如果多个地方的数据在应该相同的时候不相同,那么它就是不一致的。例如,当电子商务平台和CRM中存在客户档案时,两个地方的地址应该相同。
为什么需要数据测试?
无论您是抓取网络、使用传感器还是从打开的文本字段收集用户输入,数据损坏的方式有很多种。这可能会破坏关键业务模型或扭曲重要报告等问题。构建为业务应用程序、分析甚至数据产品提供数据管道的关键部分是测试数据的准确性、有效性和新鲜度。
哪些工具提供数据测试?
首先,数据测试可以很容易地用 vanilla Python 编写。 条件语句 或断言可以解决简单管道的问题。但是,对于大型项目,您需要使测试易于管理。
这就是为什么大多数可观察性平台都提供一些框架来执行数据测试的原因。
结论
数据可观察性、数据监控和数据测试可能是独立的概念,但正如您在本文中所见,它们是交织在一起的。
数据可观察性是数据领域内一种相对较新的实践,是一组可以帮助通过外部症状预测和识别数据问题的措施。通过处理相互关联的数据管道的输出和数据工件,它可以检测异常并指出导致异常的原因。
数据监控是可观察性的一个子集,是一种不断检查数据是否符合可接受阈值的预定义数据指标的实践。它只是确认存在异常。
数据测试衡量空检查等格式或业务规则等验证,以将您的数据与指定的假设列表相匹配。每个测试的范围都是有限的,并且独立于其他测试运行。
在理想情况下,您可以开发所有这三种方法来检测每一个可能的数据问题,但您组织的资源并不是无穷无尽的。根据您的需要使用正确的工具将帮助您维护高质量的数据,同时集中您的资源和精力。