在有关数据网格架构的系列文章中,我们了解了 数据网格是什么 及其< a i=3>组件,以及 数据网格背后的四个原则 。
在本期中,我们将探讨领域驱动的数据所有权的原则。我们解释什么是数据域,以及它们如何为新数据产品带来更好的可扩展性和更快的交付时间。
什么是数据域?
在数据网格中,数据域是数据的逻辑分组,通常与源对齐或消费者对齐,以及其对象支持的所有操作。
下图显示了数据域在实践中如何运作的示例。域本身可以大致分为源对齐、客户对齐或数据聚合。每个领域本身并不是与一组技术相一致,而是与它所支持的业务部分相一致。
(来源 https://www.datamesh-architecture.com/ )
无论您如何构建数据域,有一个原则不会改变:数据域应该由最接近数据的团队拥有。
数据域如何改变我们思考数据的方式
数据领域需要从大多数公司构建和处理数据的方式出发采取新的思维方式。
在缺乏明确划分的数据域的情况下,许多组织存储由单个中央数据团队维护的公司数据。从技术角度来看,该团队“拥有”数据。对其结构或格式的任何更改都要求企业主向工程团队提交更改请求。
在某种程度上,这种模式适用于许多公司。随着时间的推移,这些大型的整体数据结构变得更难以导航。团队之间会形成复杂的相互依赖关系,要求每个团队了解其他团队的数据模式才能完成平凡的任务。
单团队方法也不能很好地扩展。随着越来越多的请求进来,数据工程团队成为瓶颈,越来越落后。此外,数据工程团队并不是数据的真正所有者——数据生产者才是。这限制了数据工程实际可以做的事情,进一步增加了他们与数据最终用户之间的摩擦。
数据域通过将数据模式划分为由拥有数据的业务团队拥有和维护的独立定义来解决这个问题。该团队拥有数据存储以及与之相关的所有流程——生成、收集、数据管道转换、API、报告等。其输出是 数据产品
- 直接解决客户或业务问题的数据容器或数据单元。
这是数据域的标志:它们是分散的。领域团队独立工作,同时向中央机构(例如 数据目录 )注册他们的工作产品(数据源和目标、报告等)。这种方法称为 联合计算治理 ,使业务团队能够快速行动,而无需牺牲合规性和问责制。这种所有权变化就是数据网格被称为社会技术变革的原因,因为所有权和架构发生了变化。
您可以将数据域视为 数据的“面向服务的架构”。 每个数据域团队负责维护其数据边界和支持它们的操作。
数据域与集中所有权的优势
域所有权转移给业务团队意味着,数据域理论上可以提高数据的准确性。这是因为该团队比组织中的其他团队更了解其业务,因此最有能力就如何构建和管理数据做出决策。
数据域还促进更清晰的关注点分离。这使得数据和软件工程师更容易加入到项目中。新工程师无需了解公司的整个数据环境即可开始。他们只需要了解其业务部分支持的数据和操作。
这种关注点分离还简化了跨团队同步。通过数据域,团队可以决定将哪些数据公开给其他团队以及哪些数据保留在内部。它还可以通过 API 定义标准数据操作。这使得团队能够使用明确定义的 合同 相互交互,而不是了解其完整数据模式的复杂性(通常没有记录)。
最后,数据域可以加快新数据产品的开发速度并缩短上市时间。数据领域团队比一般数据工程团队更小、更专注。这使他们能够更像 一个小型的、面向服务的软件工程团队 。团队可以定义严格的工作范围,迭代地发布产品的新版本,并根据不断变化的条件进行快速更改。
数据域如何工作
那么数据域在实践中是如何工作的呢?每个组织都有自己独特的实施方式。但这里有一些关于如何转向面向领域的方法的一般准则。
初始化和开发数据域
在完整的数据网格架构中,数据域团队通常由集中式数据平台支持。中心化数据平台对数据存储、数据转换、数据工具和实践进行标准化。
这使得数据域团队能够继续专注于其业务的特定领域部分,而不是在数据管理方面重新发明轮子。它还确保一致的技术支持和跨团队数据治理。
在自助服务基础设施中,数据域团队可以请求设计和实现其域和数据产品所需的数据存储、计算能力和其他工具。这使得领域团队能够在很大程度上独立于集中式数据工程平台团队进行操作,从而加速数据产品交付。
设计数据域
在设计数据域时,域团队需要回答一些基本问题:
· 我们从哪里获取数据?
· 我们的数据模式是什么样的?
· 我们必须对源数据进行哪些转换才能有效地使用它?
· 其他团队如何访问我们的数据?
· 谁对哪些数据集拥有什么权利?
· 哪些数据应该是公开的,哪些数据应该是我们团队内部的?
· 哪些数据需要标记为敏感数据 - 例如个人身份信息 (PII)?
在转向数据域框架之前,公司应该确定用于编码这些设计决策的工具和约定。这些工具应该是自助数据基础设施的标准部分。
dbt 数据模型 和模型合约 是您可以在此处使用的工具示例。dbt 模型使用简单的 SQL 或 Python 模型来定义如何在源格式和目标格式之间转换数据。您还可以通过简单的声明性 YAML 标记来定义数据访问规则。模型合约进一步定义了领域团队向外部消费者保证其数据满足的条件。
注册数据域的组件
作为自助数据基础设施的一部分,集中式平台团队还将提供一种注册新数据产品、其来源、合同及其数据域输出的方法。登记:
· 使其他团队能够找到数据域团队的数据产品并在自己的数据产品中使用它们
· 识别数据域的所有者,以便其他团队可以轻松找到并使用他们
· 支持对公司内的所有数据进行保护和分类,以确保符合行业标准和法律法规
注册通常由 数据目录 管理,该目录跟踪和管理公司数据资产中的所有数据。数据域团队确保其资产(数据源和目的地、模型、合约、API、数据产品等)在数据目录中注册。该团队还负责适当标记所有数据,以确保合规性并遵守有关数据质量的企业标准。
管理和修改数据域
数据领域团队发布其数据产品及其附带合同。合约至少指定所有者、版本、产品公开的数据的描述以及数据满足的条件(例如,字段非空、最大 x 个字符长、包含特殊格式的字符串、 ETC。)。
由于数据域团队规模较小且精干,因此他们可以敏捷地工作并迭代地发布数据产品的新版本。团队可以将其合同的新版本发布到数据目录,这反过来又会通知下游团队有可用的更新。
通常,数据域团队将承诺在有限的时间内维护对旧合约的向后兼容性支持。这增加了团队之间的信任,因为它创造了团队不会破坏另一个团队的项目的承诺。
数据域团队还需要随着他们所依赖的团队更改合同而进行更改。例如,销售团队可能依赖于工程团队的产品路线图信息来创建与即将推出的功能相关的报告。如果工程团队改变了数据的格式,销售团队将需要改变自己的数据处理和存储逻辑。
数据域所有权是数据网格架构的关键原则,它为大型组织提供了许多好处。通过将每个数据域视为自己独立的单元,公司可以使数据民主化,使其更易于访问,并实现更快的运输、更高的稳定性以及团队之间更脆弱的耦合。
然而,值得注意的是,数据域所有权也带来了新的挑战,例如需要强大的联合所有权模型和平台团队的新功能。通过仔细考虑这些挑战并实施适当的解决方案,组织可以充分利用数据域所有权的优势,并构建更具可扩展性和敏捷性的数据管理方法。
原文链接: https://www.getdbt.com/blog/key-components-of-data-mesh-data-domains