Amazon Glue 架构注册表 - Amazon Glue
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon Glue 架构注册表

这些区域有:Amazon Glue架构注册表是一项新功能,允许您集中发现、控制和演变数据流模式。Aschema定义了数据记录的结构和格式。与Amazon Glue架构注册表中,您可以使用与 Apache Kafka 的方便集成管理和强制实施数据流应用程序的架构,Amazon Managed Streaming for Apache KafkaAmazon Kinesis Data StreamsAmazon Kinesis Data Analytics, 和Amazon Lambda

这些区域有:Amazon Glue架构注册表支持 AVRO (v1.10.2) 数据格式,JSON 数据格式JSON 架构格式(规范草稿-04、草稿 06 和草稿-07)和 Java 语言支持,以及其他数据格式和语言。支持的功能包括兼容性、通过元数据进行架构采购、模式自动注册、IAM 兼容性以及可选 ZLIB 压缩以减少存储和数据传输。Amazon Glue模式注册表是无服务器的,可自由使用。

使用模式作为生产者和消费者之间的数据格式契约可以改进数据治理,提高数据质量,并使数据使用者能够适应兼容的上游更改。

模式注册表允许不同的系统共享序列化和反序列化的架构。例如,假设您拥有数据创建器和使用器。创建者在发布数据时知道模式。架构注册表为某些系统(如 Amazon MSK 或 Apache Kafka)提供序列化程序和反序列化程序。

有关更多信息,请参阅 模式注册表的工作原理

Schemas

Aschema定义了数据记录的结构和格式。架构是用于可靠数据发布、使用或存储的版本化规范。

在 Avro 的此示例架构中,格式和结构由布局和字段名称定义,字段名称的格式由数据类型定义(例如,stringint)。

{ "type": "record", "namespace": "ABC_Organization", "name": "Employee", "fields": [ { "name": "Name", "type": "string" }, { "name": "Age", "type": "int" }, { "name": "address", "type": { "type": "record", "name": "addressRecord", "fields": [ { "name": "street", "type": "string" }, { "name": "zipcode", "type": "int" } ] } } ] }

在此示例中,JSON 架构草案 07 中,格式由JSON 架构组织

{ "$id": "https://example.com/person.schema.json", "$schema": "http://json-schema.org/draft-07/schema#", "title": "Person", "type": "object", "properties": { "firstName": { "type": "string", "description": "The person's first name." }, "lastName": { "type": "string", "description": "The person's last name." }, "age": { "description": "Age in years which must be equal to or greater than zero.", "type": "integer", "minimum": 0 } } }

Registries

A注册表是架构的逻辑容器。注册表允许您组织架构以及管理应用程序的访问控制。注册表具有 Amazon 资源名称 (ARN),允许您组织和设置对注册表中架构操作的不同访问权限。

您可以根据需要使用默认注册表或创建任意数量的新注册表。

  • RegistryName:[字符串]

    • RegistryArn:[AmazonARN]

    • 创建时间:[时间戳]

    • 更新时间:[时间戳]

  • SchemaName:[字符串]

    • SchemaArn:[AmazonARN]

    • 数据格式:[阿夫罗或 Json]

    • 兼容性:[例如 向后、向后全部、前进、前进全部、完整、全部、无、禁用]

    • 状况:[例如 待定、可用、删除]

    • 方案点:[整数]

    • 创建时间:[时间戳]

    • 更新时间:[时间戳]

  • SchemaVersion:[字符串]

    • 方案版本号:[整数]

    • 状况:[例如 挂起、可用、删除、失败]

    • 方案定义:[字符串,值:JSON]

    • 创建时间:[时间戳]

  • 方案版本元数据:[列表]

    • 元数据键:[字符串]

    • 元数据信息

    • 元数据 Value:[字符串]

    • 创建时间:[时间戳]

架构版本控制和兼容性

每个架构都可以具有多个版本。版本控制由应用于架构的兼容性规则控制。在成功之前,模式注册表将根据此规则检查注册新架构版本的请求。

标记为检查点的架构版本用于确定注册模式的新版本的兼容性。首次创建模式时,默认检查点将是第一个版本。随着架构随着更多版本的发展,您可以使用 CLI/SDK 将检查点更改为架构版本,使用UpdateSchema遵守一组约束的 API。在控制台中,默认情况下编辑架构定义或兼容模式会将检查点更改为最新版本。

兼容性模式允许您控制模式随着时间的推移或不能发展的方式。这些模式构成了生成和使用数据的应用程序之间的契约。将架构的新版本提交给注册表时,应用于架构名称的兼容性规则将用于确定是否可以接受新版本。共有 8 种兼容模式:无、禁用、向后、向后全部、前进、前进、全部、完整、全部。

在 Avro 数据格式中,字段可能是可选字段或必填字段。可选字段是指Type包含 Null。必填字段不具有 nullType

  • :不适用兼容模式。您可以在开发方案中使用此选项,或者如果您不知道要应用于架构的兼容性模式。添加的任何新版本都将被接受,而无需进行兼容性检查。

  • 已禁用:此兼容性选项可防止对特定架构进行版本控制。无法添加新版本。

  • 向后:建议使用此兼容性选择,因为它允许使用者同时读取当前和先前的架构版本。删除字段或添加可选字段时,可以使用此选项检查与先前架构版本的兼容性。BACKWD 的典型用例是针对最近的模式创建应用程序时。

    AVRO

    例如,假定您有一个由名(必填)、姓氏(必填)、电子邮件(必填)和电话号码(可选)定义的架构。

    如果您的下一个架构版本删除了所需的电子邮件字段,这将成功注册。向后兼容性要求使用者能够读取当前和以前的架构版本。您的使用者将能够读取新架构,因为旧邮件中的额外电子邮件字段将被忽略。

    如果您有一个建议的新架构版本添加了必填字段(例如邮政编码),这将无法成功注册与 BACKWDD 兼容性。新版本的使用者将无法在模式更改之前读取旧邮件,因为他们缺少必需的邮政编码字段。但是,如果在新架构中将邮政编码字段设置为可选,则建议的版本将成功注册为使用者可以在没有可选邮政编码字段的情况下读取旧架构。

    JSON

    例如,假定您具有由名字(可选)、姓氏(可选)、电子邮件(可选)和电话号码(可选)定义的架构版本。

    如果您的下一个架构版本添加了可选的电话号码属性,则只要原始架构版本不允许通过设置additionalProperties字段设置为 false。向后兼容性要求使用者能够读取当前和以前的架构版本。您的消费者将能够读取使用原始架构生成的数据,其中电话号码属性不存在。

    如果您有一个建议的新架构版本添加了可选的电话号码属性,则当原始架构版本设置additionalProperties字段设置为 true,即允许任何附加属性。新版本中的使用者将无法在模式更改之前读取旧邮件,因为他们无法读取具有不同类型的电话号码属性的数据,例如字符串而不是数字。

  • 向后 _ 全部:此兼容性选择允许使用者同时读取当前和所有以前的架构版本。当删除字段或添加可选字段时,您可以使用此选项检查所有以前架构版本的兼容性。

  • FORWARD:此兼容性选择允许使用者同时读取当前和后续模式版本,但不一定是更高版本。在添加字段或删除可选字段时,可以使用此选项检查与上一个架构版本的兼容性。FORDE 的一个典型用例是当您的应用程序已为之前的模式创建,并且应该能够处理更新的模式。

    AVRO

    例如,假定您的架构版本由名(必需)、姓氏(必需)、电子邮件(可选)定义。

    如果您有一个新的架构版本添加了必填字段(例如电话号码),这将成功注册。前进兼容性要求使用者能够读取使用以前版本使用新架构生成的数据。

    如果您有一个建议的架构版本删除了所需的名字字段,这将无法成功注册到 FRODE 兼容性。先前版本的使用者将无法读取建议的架构,因为他们缺少必需的名字字段。但是,如果名字段最初是可选的,则建议的新架构将成功注册,因为使用者可以根据没有可选名字字段的新架构读取数据。

    JSON

    例如,假定您具有由名字(可选)、姓氏(可选)、电子邮件(可选)和电话号码(可选)定义的架构版本。

    如果您的新架构版本删除了可选的电话号码属性,则只要新架构版本不允许通过设置additionalProperties字段设置为 false。前进兼容性要求使用者能够读取使用以前版本使用新架构生成的数据。

    如果您有删除可选电话号码属性的建议架构版本,则当新架构版本设置additionalProperties字段设置为 true,即允许任何附加属性。先前版本的使用者将无法读取建议的架构,因为他们可能具有不同类型的电话号码属性,例如字符串而不是数字。

  • 全部转发:此兼容性选择允许使用者读取任何新注册模式的生产者写入的数据。当需要添加字段或删除可选字段以及检查所有以前架构版本的兼容性时,可以使用此选项。

  • FULL:此兼容性选择允许使用者读取使用先前版本或下一版本的架构(但不能读取早期版本或更高版本)编写的数据。在添加或删除可选字段时,可以使用此选项检查与上一个架构版本的兼容性。

  • 完整 _ 全部:此兼容性选择允许使用者读取生产者使用所有以前的架构版本写入的数据。在添加或删除可选字段时,您可以使用此选项来检查所有先前架构版本的兼容性。

开源 SerDe 库

Amazon提供了开源 Serde 库作为序列化和反序列化数据的框架。这些库的开源设计允许通用的开源应用程序和框架在其项目中支持这些库。

有关 Serde 库如何工作的更多详细信息,请参阅模式注册表的工作原理

架构注册表的配额

配额,也称为 Amazon 中的限制,是 Amazon 账户中资源、操作和项目的最大值。以下是模式注册表的软限制Amazon Glue。

Registries

您每个最多可以有 10 个注册表Amazon每个账户Amazon区域。

SchemaVersion

每个您最多可以有 1000 个架构版本Amazon每个账户Amazon区域。

每个新架构都会创建一个新的架构版本,因此,如果每个方案只有一个版本,理论上每个区域每个帐户最多可有 1000 个架构。

架构版本元数据键值对

每个 SchemaVersion 本最多可以拥有 10 个键值对Amazon区域。

您可以使用查询版本元数据操作(Python:查询方案版本元数据)或者PutSchemaVersion 元数据操作 (Python: put_schema _version _元数据)API。

架构负载

模式有效负载的大小限制为 170KB。