Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
AWS GlueSchemaregistrierung
Anmerkung
AWS GlueDie Schemaregistrierung wird in den folgenden Regionen der AWS Glue Konsole nicht unterstützt: Asien-Pazifik (Jakarta) und Naher Osten (UAE).
Mit der AWS Glue Schemaregistrierung können Sie Datenstromschemas zentral ermitteln, steuern und weiterentwickeln. Ein Schema definiert die Struktur und das Format eines Datensatzes. Mit der AWS Glue Schemaregistrierung können Sie Schemas in Ihren Datenstreaming-Anwendungen mithilfe praktischer Integrationen mit Apache Kafka, Amazon Kinesis Data Streams Amazon Managed Streaming for Apache Kafka
Die Schemaregistry unterstützt das Datenformat AVRO (v1.10.2), das JSON Datenformat mit dem JSONSchemaformatextensions
oder groups
und die Java-Sprachunterstützung mit weiteren Datenformaten und Sprachen, die noch folgen werden. Zu den unterstützten Funktionen gehören Kompatibilität, Schemabeschaffung über Metadaten, automatische Registrierung von Schemas, IAM Kompatibilität und optionale ZLIB Komprimierung zur Reduzierung von Speicherplatz und Datenübertragung. Die Schemaregistrierung ist serverlos und kann kostenlos verwendet werden.
Die Verwendung eines Schemas als Datenformat-Vertrag zwischen Produzenten und Verbrauchern führt zu einer verbesserten Daten-Governance sowie einer höheren Datenqualität und ermöglicht Datenkonsumenten, resistent gegen kompatible Upstream-Änderungen zu sein.
Die Schemaregistrierung ermöglicht es unterschiedlichen Systemen, ein Schema für die Serialisierung und Deserialisierung gemeinsam zu nutzen. Angenommen Sie haben einen Produzenten und Verbraucher von Daten. Der Produzent kennt das Schema, wenn er die Daten veröffentlicht. Die Schema Registry stellt einen Serializer und Deserializer für bestimmte Systeme wie Amazon oder Apache Kafka bereit. MSK
Weitere Informationen finden Sie unter So funktioniert die Schemaregistrierung.
Themen
- Schemata
- Registrierungen
- Schema-Versioning und -Kompatibilität
- Open-Source-SerDe-Bibliotheken
- Kontingente in Schema Registry
- So funktioniert die Schemaregistrierung
- Erste Schritte mit der Schemaregistrierung
- Integration in AWS Glue Schema Registry
- Migration von einer Drittanbieter-Schemaregistrierung zu AWS Glue Schema Registry
Schemata
Ein Schema definiert die Struktur und das Format eines Datensatzes. Ein Schema ist eine versionierte Spezifikation für zuverlässige Datenveröffentlichung, -nutzung oder -speicherung.
In diesem Beispielschema für Avro werden Format und Struktur durch die Layout- und Feldnamen definiert, und das Format der Feldnamen wird durch die Datentypen definiert (z. B.string
, int
).
{ "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" } ] } } ] }
{ "$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 } } }
In diesem Beispiel für Protobuf wird das Format durch Version 2 der Protocol Buffers Sprache (proto2)
syntax = "proto2"; package tutorial; option java_multiple_files = true; option java_package = "com.example.tutorial.protos"; option java_outer_classname = "AddressBookProtos"; message Person { optional string name = 1; optional int32 id = 2; optional string email = 3; enum PhoneType { MOBILE = 0; HOME = 1; WORK = 2; } message PhoneNumber { optional string number = 1; optional PhoneType type = 2 [default = HOME]; } repeated PhoneNumber phones = 4; } message AddressBook { repeated Person people = 1; }
Registrierungen
Eine Registry ist ein logischer Container mit Schemata. Eine Registry ermöglicht Ihnen, Ihre Schemata zu organisieren und die Zugriffskontrolle für Ihre Anwendungen zu verwalten. Eine Registrierung hat einen Amazon-Ressourcennamen (ARN), mit dem Sie verschiedene Zugriffsberechtigungen für Schemaoperationen innerhalb der Registrierung organisieren und festlegen können.
Sie können die Standard-Registry verwenden oder so viele neue Registries erstellen, wie nötig.
|
|
|
|
Schema-Versioning und -Kompatibilität
Jedes Schema kann mehrere Versionen haben. Das Versioning wird durch eine Kompatibilitätsregel geregelt, die auf ein Schema angewendet wird. Anforderungen zur Registrierung neuer Schemaversionen werden von der Schema Registry anhand dieser Regel geprüft, bevor sie durchgeführt werden.
Eine Schemaversion, die als Checkpoint markiert ist, wird verwendet, um die Kompatibilität der Registrierung neuer Versionen eines Schemas zu ermitteln. Wenn ein Schema zum ersten Mal erstellt wird, ist der Standard-Checkpoint die erste Version. Wenn sich das Schema mit mehr Versionen weiterentwickelt, können Sie den Checkpoint mithilfe vonCLI/SDKin eine Version eines Schemas ändern UpdateSchema
API, die einer Reihe von Einschränkungen entspricht. Wenn Sie die Schemadefinition oder den Kompatibilitätsmodus in der Konsole bearbeiten, wird der Checkpoint standardmäßig auf die neueste Version geändert.
Mit Kompatibilitätsmodi können Sie steuern, wie sich Schemata im Lauf der Zeit entwickeln können oder nicht. Diese Modi bilden den Vertrag zwischen Anwendungen, die Daten erzeugen und Anwendungen, die Daten verbrauchen. Wenn eine neue Version eines Schemas an die Registrierung übermittelt wird, wird anhand der auf den Schemanamen angewendeten Kompatibilitätsregel ermittelt, ob die neue Version akzeptiert werden kann. Es gibt 8 Kompatibilitätsmodi:NONE,DISABLED,BACKWARD, BACKWARD _ALL, FORWARD _ FORWARDALL, FULL _. FULL ALL
Im Avro-Datenformat können Felder optional oder erforderlich sein. Ein optionales Feld ist ein Feld, in dem Type
null enthält. Erforderliche Felder haben keine NULL-Werte als Type
.
Im Protobuf-Datenformat können Felder in der Proto2-Syntax optional (einschließlich wiederholt) oder erforderlich sein, während in der Proto3-Syntax alle Felder optional (einschließlich wiederholt) sind. Alle Kompatibilitätsregeln werden auf der Grundlage des Verständnisses der Protokollpufferspezifikationen sowie der Leitlinien der Dokumentation zu Google Protocol Buffers
NONE: Es gilt kein Kompatibilitätsmodus. Sie können diese Option in Entwicklungsszenarien verwenden, oder wenn Sie die Kompatibilitätsmodi, die Sie auf Schemata anwenden möchten, nicht kennen. Jede neue Version, die hinzugefügt wird, wird ohne Kompatibilitätsprüfung akzeptiert.
DISABLED: Diese Kompatibilitätsoption verhindert die Versionierung für ein bestimmtes Schema. Es können keine neuen Versionen hinzugefügt werden.
BACKWARD: Diese Kompatibilitätsoption wird empfohlen, da Benutzer damit sowohl die aktuelle als auch die vorherige Schemaversion lesen können. Sie können diese Option verwenden, wenn Sie Felder löschen oder optionale Felder hinzufügen und die Kompatibilität mit der vorherigen Schemaversion überprüfen möchten. Ein typischer Anwendungsfall BACKWARD ist, wenn Ihre Anwendung für das neueste Schema erstellt wurde.
AVRO
Angenommen Sie haben ein Schema mit Vorname (erforderlich), Nachname (erforderlich), E-Mail (erforderlich) und Telefonnummer (optional) erstellt.
Wenn Ihre nächste Schemaversion das erforderliche E-Mail-Feld entfernt, würde dies erfolgreich registriert werden. BACKWARDKompatibilität setzt voraus, dass Verbraucher die aktuelle und vorherige Schemaversion lesen können. Ihre Verbraucher können das neue Schema lesen, da das zusätzliche E-Mail-Feld aus alten Nachrichten ignoriert wird.
Wenn Sie eine vorgeschlagene neue Schemaversion haben, die ein erforderliches Feld, z. B. die Postleitzahl, hinzufügt, würde dies nicht erfolgreich mit BACKWARD Kompatibilität registriert werden. Verbraucher der neuen Version könnten alte Nachrichten vor der Schemaänderung nicht lesen, da ihnen das erforderliche PLZ-Feld fehlt. Wenn das PLZ-Feld jedoch im neuen Schema als optional festgelegt wurde, würde sich die vorgeschlagene Version erfolgreich registrieren, da Verbraucher das alte Schema ohne das optionale PLZ-Feld lesen können.
JSON
Angenommen Sie haben eine Schemaversion mit Vorname (optional), Nachname (optional), E-Mail (optional) und Telefonnummer (optional).
Wenn Ihre nächste Schemaversion die optionale Telefonnummereigenschaft hinzufügt, würde dies erfolgreich registriert werden, solange die ursprüngliche Schemaversion keine zusätzlichen Eigenschaften zulässt und das
additionalProperties
-Feld auf „False“ festlegt. BACKWARDKompatibilität setzt voraus, dass Verbraucher die aktuelle und die vorherige Schemaversion lesen können. Ihre Verbraucher können Daten lesen, die mit dem ursprünglichen Schema erstellt wurden, in dem die Telefonnummereigenschaft nicht existiert.Wenn Sie eine vorgeschlagene neue Schemaversion haben, die die optionale Eigenschaft Telefonnummer hinzufügt, würde diese nicht erfolgreich mit BACKWARD Kompatibilität registriert werden, wenn die ursprüngliche Schemaversion das
additionalProperties
Feld auf true setzt, d. h. jede zusätzliche Eigenschaft erlaubt. Ihre Verbraucher mit der neuen Version könnten alte Nachrichten vor der Schemaänderung nicht lesen, da sie keine Daten mit der Telefonnummereigenschaft als anderen Typ lesen können, z. B. „Zeichenfolge“ statt „Ganzzahl“.PROTOBUF
Angenommen, Sie haben ein Schema mit einer Nachricht
Person
mit den Feldernfirst name
(erforderlich),last name
(erforderlich),email
(erforderlich) undphone number
(optional) unter proto2-Syntax definiert.Ähnlich wie in AVRO anderen Szenarien würde die Registrierung erfolgreich sein, wenn Ihre nächste Schemaversion das erforderliche
email
Feld entfernt. BACKWARDKompatibilität setzt voraus, dass Verbraucher die aktuelle und vorherige Schemaversion lesen können. Ihre Verbraucher können das neue Schema lesen, da das zusätzlicheemail
-Feld aus alten Nachrichten ignoriert wird.Wenn Sie beispielsweise eine vorgeschlagene neue Schemaversion haben, die ein erforderliches Feld hinzufügt
zip code
, würde diese nicht erfolgreich mit BACKWARD Kompatibilität registriert werden. Verbraucher der neuen Version könnten alte Nachrichten vor der Schemaänderung nicht lesen, da ihnen das erforderlichezip code
-Feld fehlt. Wenn daszip code
-Feld jedoch im neuen Schema als optional festgelegt wurde, würde sich die vorgeschlagene Version erfolgreich registrieren, da Verbraucher das alte Schema ohne das optionalezip code
-Feld lesen können.Im Falle eines RPC G-Anwendungsfalls ist das Hinzufügen eines neuen RPC Dienstes oder einer neuen RPC Methode eine abwärtskompatible Änderung. Nehmen wir beispielsweise an, Sie haben eine Schemaversion, die durch einen RPC Dienst
MyService
mit zwei RPC MethodenFoo
undBar
definiert ist.Wenn Ihre nächste Schemaversion eine neue RPC aufgerufene Methode hinzufügt
Baz
, würde diese erfolgreich registriert werden. Ihre Benutzer können Daten, die mit dem ursprünglichen Schema erstellt wurden, je nach BACKWARD Kompatibilität lesen, da die neu hinzugefügte RPC Methode optionalBaz
ist.Wenn Sie eine vorgeschlagene neue Schemaversion haben, die die bestehende RPC Methode entfernt
Foo
, würde diese Methode nicht erfolgreich mit BACKWARD Kompatibilität registriert werden. Ihre Benutzer der neuen Version wären nicht in der Lage, alte Nachrichten vor der Schemaänderung zu lesen, da sie mit der nicht existierenden RPC MethodeFoo
in einer RPC G-Anwendung keine Daten verstehen und lesen können.BACKWARD_ ALL: Diese Kompatibilitätsoption ermöglicht es Verbrauchern, sowohl die aktuelle als auch alle vorherigen Schemaversionen zu lesen. Sie können diese Option verwenden, wenn Sie Felder löschen oder optionale Felder hinzufügen und die Kompatibilität mit allen vorherigen Schemaversionen überprüfen möchten.
FORWARD: Diese Kompatibilitätsoption ermöglicht es Verbrauchern, sowohl die aktuelle als auch die nachfolgenden Schemaversionen zu lesen, aber nicht unbedingt spätere Versionen. Sie können diese Option verwenden, wenn Sie Felder hinzufügen oder optionale Felder löschen und die Kompatibilität mit der vorherigen Schemaversion überprüfen möchten. Ein typischer Anwendungsfall FORWARD ist, wenn Ihre Anwendung für ein früheres Schema erstellt wurde und in der Lage sein sollte, ein neueres Schema zu verarbeiten.
AVRO
Angenommen Sie haben ein Schema mit Vorname (erforderlich), Nachname (erforderlich) und E-Mail (optional) erstellt.
Wenn Sie eine neue Schemaversion haben, die ein erforderliches Feld hinzufügt, z. B. Telefonnummer, würde dies erfolgreich registriert werden. FORWARDKompatibilität setzt voraus, dass Verbraucher Daten, die mit dem neuen Schema erstellt wurden, mithilfe der vorherigen Version lesen können.
Wenn Sie eine vorgeschlagene Schemaversion haben, die das erforderliche Feld für den Vornamen löscht, würde dies nicht erfolgreich mit FORWARD Kompatibilität registriert werden. Verbraucher mit der vorherigen Version könnten die vorgeschlagenen Schemata nicht lesen, da ihnen das erforderliche Vornamenfeld fehlt. Wenn das Feld für den Vornamen ursprünglich optional war, würde das vorgeschlagene neue Schema erfolgreich registriert werden, da die Verbraucher Daten basierend auf dem neuen Schema lesen können, die nicht über das optionale Feld Vorname verfügen.
JSON
Angenommen Sie haben eine Schemaversion mit Vorname (optional), Nachname (optional), E-Mail (optional) und Telefonnummer (optional).
Wenn Sie eine neue Schemaversion haben, die die optionale Telefonnummereigenschaft entfernt, würde dies erfolgreich registriert werden, solange die neue Schemaversion keine zusätzlichen Eigenschaften zulässt und das
additionalProperties
-Feld auf „False“ festlegt. FORWARDKompatibilität setzt voraus, dass Verbraucher Daten, die mit dem neuen Schema erstellt wurden, mithilfe der vorherigen Version lesen können.Wenn Sie eine vorgeschlagene Schemaversion haben, die die optionale Telefonnummereigenschaft löscht, würde dies nicht erfolgreich mit FORWARD Kompatibilität registriert werden, wenn die neue Schemaversion das
additionalProperties
Feld auf true setzt, d. h. jede zusätzliche Eigenschaft erlaubt. Ihre Verbraucher mit der vorherigen Version könnten die vorgeschlagenen Schemata nicht lesen, da diese die Telefonnummereigenschaft als anderen Typ haben könnten, z. B. „Zeichenfolge“ statt „Ganzzahl“.PROTOBUF
Angenommen, Sie haben ein Schema mit einer Nachricht
Person
mit den Feldernfirst name
(erforderlich),last name
(erforderlich) undemail
(optional) unter proto2-Syntax definiert.Ähnlich wie bei AVRO Szenarien würde eine neue Schemaversion, die z. B. ein erforderliches Feld hinzufügt
phone number
, erfolgreich registriert. FORWARDKompatibilität erfordert, dass Verbraucher Daten, die mit dem neuen Schema erstellt wurden, mithilfe der vorherigen Version lesen können.Wenn Sie eine vorgeschlagene Schemaversion haben, die das erforderliche
first name
Feld löscht, würde diese nicht erfolgreich mit FORWARD Kompatibilität registriert werden. Verbraucher mit der vorherigen Version könnten die vorgeschlagenen Schemata nicht lesen, da ihnen das erforderliche Feldfirst name
fehlt. Wenn das Feldfirst name
ursprünglich optional war, würde das vorgeschlagene neue Schema erfolgreich registriert werden, da die Verbraucher Daten basierend auf dem neuen Schema lesen können, die nicht über das optionale Feldfirst name
verfügen.Im Fall eines RPC G-Anwendungsfalls ist das Entfernen eines RPC Dienstes oder einer RPC Methode eine vorwärtskompatible Änderung. Nehmen wir beispielsweise an, Sie haben eine Schemaversion, die durch einen RPC Dienst
MyService
mit zwei RPC MethodenFoo
undBar
definiert ist.Wenn Ihre nächste Schemaversion die bestehende RPC Methode mit dem Namen löscht
Foo
, würde diese entsprechend der FORWARD Kompatibilität erfolgreich registriert werden, da die Benutzer die mit dem neuen Schema erstellten Daten mithilfe der vorherigen Version lesen können. Wenn Sie eine neue Schemaversion vorgeschlagen haben, die eine RPC Methode hinzufügtBaz
, würde diese nicht erfolgreich mit FORWARD Kompatibilität registriert werden. Ihre Benutzer der vorherigen Version könnten die vorgeschlagenen Schemas nicht lesen, da ihnen die RPC MethodeBaz
fehlt.FORWARD_ ALL: Diese Kompatibilitätsoption ermöglicht es Verbrauchern, Daten zu lesen, die von Herstellern jedes neuen registrierten Schemas geschrieben wurden. Sie können diese Option verwenden, wenn Sie Felder hinzufügen oder optionale Felder löschen und die Kompatibilität mit allen vorherigen Schemaversionen überprüfen möchten.
FULL: Diese Kompatibilitätsoption ermöglicht es Verbrauchern, Daten zu lesen, die von Produzenten mit der vorherigen oder nächsten Version des Schemas geschrieben wurden, jedoch nicht mit früheren oder späteren Versionen. Sie können diese Option verwenden, wenn Sie optionale Felder hinzufügen oder löschen und die Kompatibilität mit der vorherigen Schemaversion überprüfen möchten.
FULL_ ALL: Diese Kompatibilitätsoption ermöglicht es Verbrauchern, Daten zu lesen, die von Produzenten unter Verwendung aller vorherigen Schemaversionen geschrieben wurden. Sie können diese Option verwenden, wenn Sie optionale Felder hinzufügen oder löschen und die Kompatibilität mit allen vorherigen Schemaversionen überprüfen möchten.
Open-Source-SerDe-Bibliotheken
AWS stellt Open-Source-Serde-Bibliotheken als Framework für die Serialisierung und Deserialisierung von Daten bereit. Das Open-Source-Design dieser Bibliotheken ermöglicht gängige Open-Source-Anwendungen und Frameworks, diese Bibliotheken in ihren Projekten zu unterstützen.
Weitere Details zur Funktionsweise der SerDe-Bibliotheken finden Sie unter So funktioniert die Schemaregistrierung.
Kontingente in Schema Registry
Kontingente, auch Limits genannt AWS, sind die Höchstwerte für die Ressourcen, Aktionen und Elemente in Ihrem Konto. AWS Im Folgenden finden Sie weiche Grenzwerte für Schema Registry in AWS Glue.
Metadaten-Schlüssel-Wert-Paare pro Schemaversion.
SchemaVersion Pro Region können Sie bis zu 10 Schlüssel-Wert-Paare verwenden. AWS
Sie können die Schlüssel-Wert-Metadatenpaare mithilfe von oder anzeigen oder festlegen. QuerySchemaVersionMetadata Aktion (Python: query_schema_version_metadata) PutSchemaVersionMetadata Aktion (Python: put_schema_version_metadata) APIs
Im Folgenden finden Sie weiche Grenzwerte für Schema Registry in AWS Glue.
Registrierungen
Sie können bis zu 100 Registrierungen pro AWS Region für dieses Konto einrichten.
SchemaVersion
Sie können bis zu 10000 Schemaversionen pro AWS Region für dieses Konto haben.
Jedes neue Schema erstellt eine neue Schemaversion, sodass Sie theoretisch bis zu 10000 Schemas pro Konto und Region haben können, wenn jedes Schema nur eine Version hat.
Schema-Nutzlasten
Es gibt eine Größenbeschränkung von 170 KB für Schema-Nutzlasten.