使用Atlas进行元数据管理之Type(类型)

本文涉及的产品
数据管理 DMS,安全协同 3个实例 3个月
推荐场景:
学生管理系统数据库
简介:

背景:笔者和团队的小伙伴近期在进行数据治理/元数据管理方向的探索,会在接下来的系列文章中, 将经验与收获和读者们进行分享。

元数据系列文章:
[1] - 使用Atlas进行元数据管理之Glossary(术语)
[2] - 使用Atlas进行元数据管理之Type(类型)

1. 概述

Atlas允许用户为他们想要管理的元数据对象定义模型。该模型由称为type(类型)的定义组成。称为entities(实体)type(类型)实例表示受管理的实际元数据对象。 Type System是一个允许用户定义和管理类型和实体的组件。开箱即用的Atlas管理的所有元数据对象(例如Hive表)都使用类型建模并表示为实体。要在Atlas中存储新类型的元数据,需要了解类型系统组件的概念。

2. Types(类型)

Atlas中的Type是对特定类型的元数据对象如何存储和访问的定义。Type表示定义元数据对象属性的一个或一组属性。具有开发基础的用户能了解到,类型就相当于面向对象编程语言的“Class”定义或关系数据库的“table schema”。

使用Atlas的类型的其中一个示例是Hive表。 Hive表定义了以下属性:

Name:         hive_table
TypeCategory: Entity
SuperTypes:   DataSet
Attributes:
    name:             string
    db:               hive_db
    owner:            string
    createTime:       date
    lastAccessTime:   date
    comment:          string
    retention:        int
    sd:               hive_storagedesc
    partitionKeys:    array<hive_column>
    aliases:          array<string>
    columns:          array<hive_column>
    parameters:       map<string,string>
    viewOriginalText: string
    viewExpandedText: string
    tableType:        string
    temporary:        boolean

从上面的例子中可以注意到以下几点:

  • Atlas中的类型(Type)由name唯一标识
  • 类型具有元类型。Atlas具有以下元类型:

    • 原始元类型(Primitive metatypes):boolean,byte,short,int,long,float,double,biginteger,bigdecimal,string,date
    • 枚举元型(Enum metatypes)
    • 集合元类型(Collection metatypes:):array, map
    • 复合元类型(Composite metatypes):Entity, Struct, Classification, Relationship
  • 实体(Entity)和分类(Classification)类型可以从其他类型继承,称为“超类型”(supertype) - 凭借这一点,它将包括在超类型中定义的属性。这允许建模者在一组相关类型等中定义公共属性。这再次类似于面向对象语言如何为类定义超类的概念。 Atlas中的类型也可以从多个超类型扩展。

    • 在此示例中,每个配置单元表都从称为DataSet的预定义超类型扩展。稍后将提供有关此预定义类型的更多详细信息。
  • 具有元类型EntityStructClassificationRelationship的类型可以具有属性的集合。每个属性都有一个名称(例如: name)和一些其他相关属性。可以使用表达式type_name.attribute_name引用属性。值得注意的是,属性本身是使用Atlas元类型定义的。

    • 在此示例中,hive_table.name是String,hive_table.aliases是一个字符串数组,hive_table.db是指一个名为hive_db的类型的实例,依此类推。
  • 属性中的类型引用(如hive_table.db)特别有趣,使用这样的属性,我们可以定义Atlas中定义的两种类型之间的任意关系,从而构建丰富的模型。此外,还可以将引用列表收集为属性类型(例如,hive_table.columns,表示从hive_table到hive_column类型的引用列表)

3. Entities(实体)

Atlas中的entitytype的特定值或实例,因此表示现实世界中的特定元数据对象。用我们对面向对象编程语言的类比,实例(instance)是某个类(Class)对象(Object)

实体的其中一个示例就是Hive表。Hive在'default'数据库中有一个名为'customers'的表。该表是hive_table类型的Atlas中的“实体”。由于是实体类型的实例,它将具有作为Hive表'type'的一部分的每个属性的值,例如:

guid:     "9ba387dd-fa76-429c-b791-ffc338d3c91f"
typeName: "hive_table"
status:   "ACTIVE"
values:
    name:             “customers”
    db:               { "guid": "b42c6cfc-c1e7-42fd-a9e6-890e0adf33bc", "typeName": "hive_db" }
    owner:            “admin”
    createTime:       1490761686029
    updateTime:       1516298102877
    comment:          null
    retention:        0
    sd:               { "guid": "ff58025f-6854-4195-9f75-3a3058dd8dcf", "typeName": "hive_storagedesc" }
    partitionKeys:    null
    aliases:          null
    columns:          [ { "guid": ""65e2204f-6a23-4130-934a-9679af6a211f", "typeName": "hive_column" }, { "guid": ""d726de70-faca-46fb-9c99-cf04f6b579a6", "typeName": "hive_column" }, ...]
    parameters:       { "transient_lastDdlTime": "1466403208"}
    viewOriginalText: null
    viewExpandedText: null
    tableType:        “MANAGED_TABLE”
    temporary:        false

从上面的例子中可以注意到以下几点:

  • 实体类型的每个实例都由唯一标识符GUID标识。此GUID由Atlas服务器在定义对象时生成,并在实体的整个生命周期内保持不变。在任何时间点,都可以使用其GUID访问此特定实体。

    • 在此示例中,默认数据库中的“customers”表由GUID“9ba387dd-fa76-429c-b791-ffc338d3c91f”唯一标识。
  • 实体具有给定类型,并且类型的名称随实体定义一起提供。

    • 在此示例中,'customers'表是'hive_table'类型。
  • 该实体的值是hive_table类型定义中定义的属性的所有属性名称及其值的映射。
    属性值将根据属性的数据类型。实体类型属性将具有AtlasObjectId类型的值

有了实体的这个设计,我们现在可以看到Entity和Struct元类型之间的区别。实体(Entity)和结构(Entity)都构成其他类型的属性。但是,实体类型的实例具有标识(具有GUID值),并且可以从其他实体引用(例如,从hive_table实体引用hive_db实体)。 Struct类型的实例没有自己的标识。 Struct类型的值是在实体本身内“嵌入”的属性集合。

3. Attributes(属性)

我们已经看到,属性(attributes)是在实体(Entity),结构(Struct),分类(Classification)和关系(Relationship)等元类型中定义的。但我们将属性列举为具有名称和元类型值。然而,Atlas中的attributes具有一些properties,这些properties定义了与类型系统相关的更多概念。

attributes具有以下properties:

name:        string,
    typeName:    string,
    isOptional:  boolean,
    isIndexable: boolean,
    isUnique:    boolean,
    cardinality: enum

上述属性具有以下含义:

  • name: 属性的名称
  • dataTypeName: 属性的元类型名称(native, collection, composite))
  • isComposite:

    • 该标志表示建模的一个方面。如果将属性定义为复合(composite),则意味着它不能具有独立于其所包含的实体的生命周期。这个概念的一个很好的示例是构成hive表的一部分的列集。由于列在hive表外部没有意义,因此它们被定义为复合属性。
    • 必须在Atlas中创建复合属性及其包含的实体。即,必须与hive表一起创建配置单元列。
  • isIndexable

    • 标志指示是否应该对此属性建立索引,以便可以使用属性值作为谓词来执行查找,并且可以有效地执行查找。
  • isUnique

    • 同样与索引相关。如果指定为唯一,则表示在JanusGraph中为此属性创建了一个特殊索引,允许基于相等的查找。
    • 具有该标志的真值的任何属性都被视为主键,以将该实体与其他实体区分开。因此,应该注意确保此属性确实在现实世界中为唯一属性建模。

      • 对于例如考虑hive_table的name属性。在单独的情况下,名称不是hive_table的唯一属性,因为具有相同名称的表可以存在于多个数据库中。如果Atlas在多个集群中存储hive表的元数据,那么即使是一对(数据库名称,表名)也不是唯一的。在物理世界中,只有集群位置,数据库名称和表名称才能被视为唯一。
  • multiplicity: 标示该属性是必选(required),可选(optional)的还是可以是多值的(multi-valued)。如果实体的属性值定义与类型定义中的多重性声明不匹配,则这将违反约束,并且实体添加将失败。因此,该字段可用于定义元数据信息的一些约束。

根据上面的内容,让我们展开下面的hive表的一个attributes的属性定义。让我们看一下名为'db'的属性,它表示hive表所属的数据库:

db:
    "name":        "db",
    "typeName":    "hive_db",
    "isOptional":  false,
    "isIndexable": true,
    "isUnique":    false,
    "cardinality": "SINGLE"

请注意“isOptional = true”约束 - 如果没有db引用,则无法创建表实体。

columns:
    "name":        "columns",
    "typeName":    "array<hive_column>",
    "isOptional":  optional,
    "isIndexable": true,
    “isUnique":    false,
    "constraints": [ { "type": "ownedRef" } ]

请注意列的“ownedRef”约束。通过这样,我们指出定义的列实体应始终绑定到它们所定义的表实体。

通过此描述和示例,您将能够意识到属性定义可用于影响Atlas系统强制执行的特定建模行为(约束,索引等)。

4. 系统特定类型及含义

Atlas自带了一些预定义的系统类型。我们在前面的部分中看到了一个示例(DataSet)。在本节中,我们将看到更多这些类型并了解它们的重要性。

Referenceable:该类型表示可以使用名为qualifiedName的唯一属性搜索的所有实体。

Asset:该类型扩展了Referenceable并添加了名称,描述和所有者等属性。 Name是必需属性(isOptional = false),其他属性是可选的。

Referenceable和Asset的目的是为建模者提供在定义和查询自己类型的实体时强制一致性的方法。拥有这些固定的属性集允许应用程序和用户界面基于约定做出关于默认情况下它们可以期望类型的属性的假设。

Infrastructure:该类型继承自Asset,通常可用作基础结构元数据对象(如集群,主机等)的常见超类型。

DataSet:该类型继承自Referenceable。从概念上讲,它可以用于表示存储数据的类型。在Atlas中,hive表,hbase_tables等都是从DataSet扩展的类型。扩展DataSet的类型可以预期具有Schema,因为它们具有定义该数据集的属性的属性。对于例如hive_table中的columns属性。此外,扩展DataSet的类型实体参与数据转换,Atlas可以通过血缘)图了解到转换过程。

Process:该类型继承自Asset。从概念上讲,它可以用于表示任何数据转换操作。例如,将具有原始数据的配置单元表转换为存储某些聚合的另一个配置单元表的ETL过程可以是扩展Process类型的特定类型。流程类型有两个特定属性,即输入和输出。输入和输出都是DataSet实体的数组。因此,Process类型的实例可以使用这些输入和输出来捕获DataSet的血缘如何演变。

相关实践学习
MySQL基础-学生管理系统数据库设计
本场景介绍如何使用DMS工具连接RDS,并使用DMS图形化工具创建数据库表。
目录
相关文章
|
SQL 分布式计算 Java
数据治理之元数据管理的利器——Atlas入门宝典(二)
随着数字化转型的工作推进,数据治理的工作已经被越来越多的公司提上了日程。作为Hadoop生态最紧密的元数据管理与发现工具,Atlas在其中扮演着重要的位置。但是其官方文档不是很丰富,也不够详细。所以整理了这份文档供大家学习使用。
2792 1
数据治理之元数据管理的利器——Atlas入门宝典(二)
|
5月前
|
分布式计算 数据管理 Hadoop
元数据管理平台对比预研 Atlas VS Datahub VS Openmetadata
元数据管理平台对比预研 Atlas VS Datahub VS Openmetadata
1218 57
|
存储 消息中间件 分布式计算
数据治理之元数据管理的利器——Atlas入门宝典(一)
随着数字化转型的工作推进,数据治理的工作已经被越来越多的公司提上了日程。作为Hadoop生态最紧密的元数据管理与发现工具,Atlas在其中扮演着重要的位置。但是其官方文档不是很丰富,也不够详细。所以整理了这份文档供大家学习使用。
1615 0
数据治理之元数据管理的利器——Atlas入门宝典(一)
|
2月前
|
物联网 数据管理 Apache
拥抱IoT浪潮,Apache IoTDB如何成为你的智能数据守护者?解锁物联网新纪元的数据管理秘籍!
【8月更文挑战第22天】随着物联网技术的发展,数据量激增对数据库提出新挑战。Apache IoTDB凭借其面向时间序列数据的设计,在IoT领域脱颖而出。相较于传统数据库,IoTDB采用树形数据模型高效管理实时数据,具备轻量级结构与高并发能力,并集成Hadoop/Spark支持复杂分析。在智能城市等场景下,IoTDB能处理如交通流量等数据,为决策提供支持。IoTDB还提供InfluxDB协议适配器简化迁移过程,并支持细致的权限管理确保数据安全。综上所述,IoTDB在IoT数据管理中展现出巨大潜力与竞争力。
57 1
|
3月前
|
SQL NoSQL 数据管理
数据管理DMS使用问题之如何批量导入MongoDB的数据文件
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
|
2月前
|
JSON 数据管理 关系型数据库
【Dataphin V3.9】颠覆你的数据管理体验!API数据源接入与集成优化,如何让企业轻松驾驭海量异构数据,实现数据价值最大化?全面解析、实战案例、专业指导,带你解锁数据整合新技能!
【8月更文挑战第15天】随着大数据技术的发展,企业对数据处理的需求不断增长。Dataphin V3.9 版本提供更灵活的数据源接入和高效 API 集成能力,支持 MySQL、Oracle、Hive 等多种数据源,增强 RESTful 和 SOAP API 支持,简化外部数据服务集成。例如,可轻松从 RESTful API 获取销售数据并存储分析。此外,Dataphin V3.9 还提供数据同步工具和丰富的数据治理功能,确保数据质量和一致性,助力企业最大化数据价值。
115 1
|
2月前
|
Java 测试技术 容器
从零到英雄:Struts 2 最佳实践——你的Web应用开发超级变身指南!
【8月更文挑战第31天】《Struts 2 最佳实践:从设计到部署的全流程指南》深入介绍如何利用 Struts 2 框架从项目设计到部署的全流程。从初始化配置到采用 MVC 设计模式,再到性能优化与测试,本书详细讲解了如何构建高效、稳定的 Web 应用。通过最佳实践和代码示例,帮助读者掌握 Struts 2 的核心功能,并确保应用的安全性和可维护性。无论是在项目初期还是后期运维,本书都是不可或缺的参考指南。
33 0
|
2月前
|
SQL 存储 数据管理
掌握SQL Server Integration Services (SSIS)精髓:从零开始构建自动化数据提取、转换与加载(ETL)流程,实现高效数据迁移与集成——轻松上手SSIS打造企业级数据管理利器
【8月更文挑战第31天】SQL Server Integration Services (SSIS) 是 Microsoft 提供的企业级数据集成平台,用于高效完成数据提取、转换和加载(ETL)任务。本文通过简单示例介绍 SSIS 的基本使用方法,包括创建数据包、配置数据源与目标以及自动化执行流程。首先确保安装了 SQL Server Data Tools (SSDT),然后在 Visual Studio 中创建新的 SSIS 项目,通过添加控制流和数据流组件,实现从 CSV 文件到 SQL Server 数据库的数据迁移。
51 0

热门文章

最新文章

下一篇
无影云桌面