文章目录
前言
Lakehouse 架构中的存储层负责存储整个平台的数据,要查询存储的这些数据,我们需要一个数据目录来帮助用户查询、检索和发现这些数据。
本文将对元数据、元存储和数据目录等重要概念进行说明。
解读元数据
就像我们需要流程来管理平台内的数据一样,我们也需要定义明确的方法来管理元数据,健全的元数据管理流程有助于简化平台用户的搜索和数据发现。
元数据通常被定义为"描述数据的数据 ",它与数据本身一样重要。元数据通过提供描述数据的附加信息(如属性名称、数据类型、文件名、文件大小等)来帮助我们定义数据。
元数据提供了理解数据所需的结构和其他相关信息,元数据帮助用户发现、理解和找到满足其特定要求所需的相关数据。
元数据大致分为技术元数据和业务元数据。
技术元数据
技术元数据为我们提供有关数据的技术信息,比如说表的 schema 详细信息就是技术元数据,包括属性名称、数据类型、长度和其他相关约束,如下表所示展示了三个属性的元数据:
Attribute name | Attribute type | Attribute length | Attribute constraint |
---|---|---|---|
product_id | integer | Not Null | |
product_name | string | 100 | Null |
product_category | string | 50 | Null |
与表类似,文件等其他对象也有元数据,文件元数据提供文件名、创建或更新时间、文件大小、访问权限等详细信息。CSV 文件也具有定义数据属性名称的HEADER, JSON 和 XML 文件中也包含属性名称。
业务元数据
业务元数据有助于理解数据的业务含义。业务元数据增强了技术元数据,为数据提供业务上下文。
下边是 Product 表的业务元数据:
Attribute technical name | Attribute business name | Attribute business meaning |
---|---|---|
product_id | 产品标识符 | 产品的唯一标识符 |
product_name | 产品名称 | 产品名称 |
product_category | 产品分类 | 产品类别 |
技术和业务元数据对于更好地理解数据至关重要,完善的元数据管理应该包括对技术元数据和业务元数据都有的维护和管理功能,以及支持访问权限控制、敏感数据处理和数据共享的附加功能。
元存储和数据目录如何协同工作?
要想对元数据进行管理,并给用户提供数据对应的功能,我们需要一些解决方案和工具来实现此过程。元存储和数据目录就是帮助构建元数据管理重要的解决方案。
元存储(metadata)是元数据在数据平台物理存储的位置,它充当中央元数据存储系统,我们可以从此中央存储访问所有元数据。
数据目录(catalog)提供了一种访问元存储中存储的元数据的机制,它提供了检索元数据以及各种表和属性所需的与用户交互的界面。
下图展示了元存储和数据目录是如何关联,并使用户能够访问元数据的:
例如,在传统的本地Hadoop生态系统中,Hive提供了Hive Metastore(HMS)来存储元数据(用于在HDFS数据之上创建的Hive表)和Hive目录来访问HMS表。
数据目录是对元存储的逻辑概念抽象,帮助我们以有组织的方式管理元数据。它们帮助我们对数据进行权限访问控制,来保证数据安全。我们可以将目录进一步划分为表、视图和其他对象的数据库或 schema,以更细粒度的级别(例如schema 或表级别)管理用户访问权限。
下图显示了根据用户角色和权限访问特定目录的场景:
上图中,"X"业务单元的用户只能访问"X"业务单元关联的目录,"Y"业务单元用户只能访问"Y"业务单元关联的目录。
上边是使用元存储和数据目录的一个场景,我们在实际的业务中,需要结合实际的场景进行控制,比如说更细粒度的 schema 和表级别的权限控制,或者根据不同环境(开发,测试,生产)进行数据目录权限区分。
说明
业界经常使用术语"元存储"或"数据目录"来描述元数据存储系统。大多数现代云服务都提供数据目录功能,抽象元数据的物理存储,仅公开数据目录供用户浏览和访问schema、表和属性。每个目录背后都有一个物理存储,用于存储实际的元数据。
数据目录的特点
数据目录提供了几个关键功能,可帮助平台管理员组织、管理和治理数据。
查询、检索和发现数据
数据目录为用户提供了一种简单的机制来搜索所需的数据,并了解数据存在的位置(哪个schema、表、属性),以便他们可以查询数据。
数据目录还提供向表和属性添加业务描述的功能。
用户可查看数据目录、了解业务数据上下文并发现可能有助于他们进一步分析的数据。
数据分类
数据分类是根据一定的规范或标准对属性进行分类的过程,我们可以根据域(如客户、产品和销售)或敏感度(如机密、内部或公共)对属性进行分类。分类可以帮助用户理解数据并更好地利用数据。例如,分类为"内部"的属性表示用户不应在组织外部共享数据。在分类的过程中,我们还可以向元数据添加标签,并且可以通过标签去过滤查询想要的数据。
数据分类有助于管理数据、实施治理策略以及保护平台内的数据。
数据治理
数据目录充当数据的看门人,帮助实施数据治理策略,来管理、治理和访问整个公司的数据。
数据目录提供以下数据治理功能:
- 支持对想要访问数据的用户进行细粒度的权限控制。
- 通过对平台内存储的敏感数据进行过滤或抽象展示,来保护平台数据。
- 支持实施用于维护数据质量的标准流程和政策
- 实施合规性报告所需的审计流程,例如跟踪访问特定表或属性的用户。
- 保证数据消费者数据共享数据的安全。
数据血缘
在大数据生态中,任何数据分析都包含多个作业,这些作业从源系统获取数据,对其进行转换,最后将其加载到目标存储中以供用户使用。可能有数百个表,每个表中有数千个属性,数据通过这些表在该生态系统内的各个组件之间流动。随着系统的发展,数据资产不断增加。要跟踪跨组件的数据流,我们需要一个跟踪机制来提供数据如何在这些数据源中流动的端到端详细信息,数据血缘就是对数据流动追踪的一种很好的展示。
数据目录可帮助我们实施数据血缘解决方案,来跟踪源属性和目标属性之间的关系。每当任何属性名称、类型或长度发生变化时,数据血缘还可以帮助分析其影响。它还可以帮助我们审查冗余或未被任何消费者使用的表等数据资产。
数据目录是一种支持公司内不同数据团队和数据角色之间协作的工具,它是技术和业务用户可以搜索和发现数据的中心位置。数据目录使团队能够弥合业务和 IT 之间的差距,并使业务用户能够利用它获取数据分析所需的数据。
关于数据血缘的详细描述可以查看我之前写的这篇文章:数据血缘对于数据平台的重要性