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

有了实体的这个设计,我们现在可以看到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可以通过血缘)图了解到转换过程。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpsgdg.html