购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.6 构建数据目录

假设你确实想从头开始构建一个数据目录,那么,你将如何开始呢?

在构建或投资数据目录之前,你需要与运营和分析团队的下游利益相关方一起合作,了解哪些数据对业务最为重要,从而需要进行记录和编目。很多团队通过电子表格处理这一步的协同工作,该电子表格突出显示了数据源、其连接到的内容以及上次更新的时间。

在协同一致后,团队应指派所有者来负责保持表格中的数据是最新的。有些团队则根据来源、模式甚至数据域来分配所有权。

最基本的,数据目录是元数据集合,可提供对数据位置、所有权和潜在用例的背景信息和洞察。为了实际填充数据目录,如表2-1所示,数据团队可以手动梳理数据仓库中的每个表,或者使用SQL自动化解析器来完成工作。Sqlparse( https://oreil.ly/5zhUG )、ANTLR( https://oreil.ly/XTGr5 )、Apache Calcite( https://oreil.ly/wl7ok )和MySQL的SQL Parser( https://oreil.ly/55PCH )都是流行的开源SQL解析解决方案。

表2-1:一个简略的数据目录

SQL解析器将SQL语句的各个部分(即关键字、标识符、子句等)分离成其他例程可以处理的数据结构。

在解析SQL后,你需要在某个地方存储和处理它。开源数据库,如开放ELK栈( https://oreil.ly/JarRL )、PostgreSQL( https://oreil.ly/QdVve )、MySQL( https://oreil.ly/TwfWw )和MariaDB( https://oreil.ly/M027O ),都是从头开始构建数据目录的绝佳选择。

鉴于每个解析器和数据库应用程序的功能都有所不同,示例2-8展示了你可以编写用于提取查询的代码(在本例中,使用ANTLR从CSV文件中提取查询,并将查询的“输出”移动到MySQL中),该查询与给定数据库中数据的信息有关。

示例2-8:通过数据库查询来收集元数据并存储在数据目录或相关的发现工具中

该查询的输出将呈现关于给定数据库中数据的元数据,并存储在数据目录或发现工具中,如示例2-9所示。

示例2-9:示例2-8中查询的输出

GraphQL( https://oreil.ly/WbFAK )、REST( https://oreil.ly/MT2pR )和Cube.js( https://oreil.ly/LlBTt )等开源查询语言工具将允许你在数据库中查询SQL并将其呈现在编目可视化服务中,例如Amundsen( https://oreil.ly/Svhlg )、Apache Atlas( https://oreil.ly/Q1X7F )、DataHub( https://oreil.ly/CCH6M )或CKAN( https://oreil.ly/K2HVG )。

当你拥有严格的模型时,数据目录的效果很好,但随着数据管道变得越来越复杂,非结构化数据开始成为黄金标准,我们对数据的理解(数据做什么、谁在使用它、如何使用它)并不能反映现实情况。

下一代数据目录将具有学习、理解和推断数据的能力,让用户能够以自助式服务的方式利用其洞察力。最重要的是,数据目录将支持自动数据发现和主动元数据。想象一下,能够使用Slack、Teams或任何其他通信渠道来查询数仓中的数据,是不是很令人感到兴奋?我们距离这个时刻已经不远了。

除了对数据进行编目外,数据管理策略还必须包含数据发现,这是一种实时了解分布式数据资产健康状况的新方法。数据发现借鉴了Zhamak Dehghani和Thoughtworks的数据网格模型提出的面向领域的分布式架构,认为不同的数据所有者都应对其数据产品负责,并推动不同位置的分布式数据之间的通信。一旦数据被提供给某一特定领域并在该领域转换后,该领域数据的所有者就可以利用这些数据来满足其自身的运营或分析需求。

数据发现取代了对数据目录的需要,它根据一组特定消费者如何摄取、存储、聚合和使用数据,提供了对特定领域数据的动态解读。与数据目录一样,数据治理的标准和工具同样是跨领域联合的,以支持更高的可访问性和互操作性。但与数据目录不同的是,数据发现可以实时了解数据的当前状态,而不是其理想状态或“编目”状态。

数据发现不仅可以回答数据理想状态的问题,还能回答涉及不同领域中数据当前状态的问题:

· 哪些数据集是最新的?哪些数据集可以被弃用?

· 表格最后一次更新是什么时候?

· 给定字段在领域中的含义是什么?

· 谁有权访问这些数据?该数据最后一次使用的时间和使用者是什么情况?

· 这些数据在上下游的依赖关系是怎样的?

· 数据质量是否达到了生产环境的要求?

· 哪些数据对我所在领域的业务需求至关重要?

· 我对这些数据的假设是什么,这些假设是否得到了验证?

一个以数据质量为优先的数据目录具有以下特点:

自助式服务的数据发现与自动化

即使没有专门的支持团队,数据团队也应该能轻松利用其数据目录。自助式服务、自动化和工作流编排等数据工具消除了数据管道各阶段之间及其过程中产生的孤岛,让数据变得更容易理解和访问。更高的可访问性自然会提高数据的采用率,从而减轻数据工程团队的负担。

随数据演变的可扩展性

随着公司接收越来越多的数据且非结构化数据开始成为常态,通过扩展来满足这些需求的能力对于数据计划的成功将变得至关重要。数据发现利用机器学习来获得数据资产扩展时的整体视图,确保用户对数据的理解能够跟上数据演变。通过这种方式,数据消费者可以做出更明智、更可靠的决策,避免依赖过时的文档(也就是说元数据过时了!)或做出错误决策。

用于分布式数据发现的数据沿袭

数据发现严重依赖自动化表格和字段级的沿袭来映射数据资产之间的上下游依赖关系。沿袭有助于在正确的时间显示正确的信息(这是数据发现的核心功能),并给出数据资产之间的关联关系,以便在数据管道出现故障时能够更好地进行排查。随着现代数据栈为了适应更复杂的用例而不断演变,这正成为一个越来越普遍的问题。在第7章中,我们将深入探讨如何为数据管道构建沿袭。

其实你的团队可能已经以某种方式在数据发现方面进行了投资,无论是通过团队为验证数据而正在进行的手动工作,还是通过工程师编写的自定义验证规则,或者仅仅是基于损坏的数据或未被察觉的隐性错误所做出的决策成本。现代数据团队已经开始利用自动化方法来确保管道中每个阶段的数据都是高度可信的,从数据质量监控到更强大的端到端的数据可观测性平台,它们都可以用来监控数据管道中的问题并发出警报。这些解决方案会在数据中断时通知你,让你能够快速确定问题的根本原因,进而快速解决问题并防止进一步发生宕机。

数据发现让数据团队能够相信团队对数据的假设与现实相符,从而在不考虑领域的前提下,在数据基础设施中实现动态发现和高度的可靠性。 Nu7kzbsbkrl9bJ3fh229vMze9EK9w9VKODyUousBP3aNnoBB5NrLy0CNDeRMRJO2

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开