Avro-Schema
In einem Avro-Schema ist die Struktur eines Avro-Datenblocks definiert. Es wird definiert, welche Datenfelder erwartet werden und wie die Werte repräsentiert werden. Informationen zu Avro-Schemas und der dazugehörigen Spezifikation finden Sie hier.
Beachten Sie die folgenden Punkte zu Avro-Schemas:
•Ein Avro-Schema ist im JSON-Format erstellt
•Bei einem Avro-Schema kann es sich um einen JSON-String, ein JSON-Objekt oder ein JSON-Array handeln
•Ein Avro-Schema kann vier Attribute enthalten: name, namespace, type und fields
•Es gibt acht primitive Datentypen: null, boolean, int, long, float, double, bytes und string
•Es gibt sechs komplexe Typen: records, enums, arrays, maps, unions und fixed
•Primitive Typen haben keine Attribute; jeder komplexe Typ hat seine eigene Gruppe von Attributen
Nähere Informationen zu Avro-Schemas finden Sie in der Avro-Schema-Spezifikation.
Beispiele
Weiter unten finden Sie einige einfache Beispiele für Avro-Schemas, jedes davon mit dem dazugehörigen Avro-Datenfragment im JSON-Format. Beachten Sie, dass im Schema eine bestimmte Struktur definiert ist. In einigen Fällen ist die erzeugte Ausgabe eventuell kein gültiges JSON-Dokument, wenn die definierte Struktur mehrmals instantiiert wird. So kann etwas die Struktur eines JSON-Objekts in einem Schema definiert sein. Wenn das JSON-Objekt mehrmals instantiiert wird, könnte zwar jedes einzelne Objekt gemäß dem Avro-Schema gültig sein, doch wäre das gesamte Dokument kein gültiges JSON-Dokument, da kein Container-Objekt vorhanden ist. Wenn ein gültiges JSON-Dokument erforderlich ist, müssen Sie das Avro-Schema eventuell ändern, damit es als Array von JSON-Objekten validiert wird. Vergleichen Sie dazu Beispiel 4 mit Beispiel 5 weiter unten.
Dieses Schema ist ein einziger String und definiert, dass das Instanzdokument einen Wert enthalten muss, der den primitiven Avro (int)-Datentyp: "int" hat.
Gültiges Avro: 2016 Ungültiges Avro: "2016"
|
In diesem Schema ist genau dasgleiche wie im vorherigen Schema definiert, doch ist es ein JSON-Objekt. Das Instanzdokument muss ein Element enthalten, der ein Wert des primitiven Avro-Datentyps (int) ist: { "type": "int" }
Gültiges Avro: 2016 Ungültiges Avro: "2016"
|
Dieses Schema ist ein JSON-Objekt, in dem ein Array von Ganzzahlen definiert ist: { "type": "array", "items": "int" }
Gültiges Avro: [2016, 2017] Gültiges Avro: [2016] Gültiges Avro: [2016] Ungültiges Avro: 2016, 2017
|
Dieses Schema ist ein JSON-Objekt, in dem ein einziger Datensatz (record) definiert ist: { "type": "record", "name": "ages", "fields" : [ {"name": "name", "type": "string"}, {"name": "age", "type": "int"} ] }
Gültiges Avro: {"name":"John", "age":35}
|
Dieses Schema ist ein JSON-Objekt, in dem ein Array von Elementen definiert sind, von denen jeder ein JSON-Objekt sein muss: { "type": "array", "items": { "type": "record", "name": "ages", "fields" : [ {"name": "name", "type": "string"}, {"name": "age", "type": "int"} ] } }
Gültiges Avro: [{"name":"Mary", "age":34}, {"name":"John", "age":35}]
|
Avro-Schemadateitypen
Wenn Sie die Funktionen von XMLSpy für die Bearbeitung und Validierung von Dateien im Zusammenhang mit Avro verwenden möchten, muss XMLSpy in der Lage sein, eine Datei als Avro-Schema zu erkennen. Eine Datei wird als Avro-Schema erkannt, wenn die Dateierweiterung im XMLSpy-Dialogfeld "Optionen" (Extras | Optionen | Dateiarten) als solche erkannt wird. In den Standardeinstellungen von XMLSpy ist eine einzige Dateierweiterung, nämlich die Erweiterung .avsc, als die einer Avro-Schema-Datei definiert. Wenn Sie andere Dateierweiterungen für Avro-Schema-Dokumente erstellen möchten, fügen Sie diese Dateierweiterungen als Avro-Schemaerweiterungen zur Liste im Dialogfeld "Optionen" hinzu.
Erstellen und Bearbeiten von Avro-Schemas
Sie können eine neue Datei in XMLSpy als Avro-Schema erstellen, indem Sie eine Avro-Schemadatei als ihren Dateityp definieren. XMLSpy stellt während der Eingabe intelligente Bearbeitungshilfen zur Verfügung. Dazu gehören kontextsensitive Schlüsselwortvorschläge, automatische Eingabe von eckigen und geschweiften Klammerpaaren, von Anführungszeichenpaaren, Syntaxfärbung und Autokomplettierung von Schlüsselwörtern. Zusätzlich dazu gibt es drei Eingabehilfen: JSON-Eigenschaften, JSON-Werte und JSON-Entities. Die darin verfügbaren Entities sind kontextsensitiv. Doppelklicken Sie auf einen Eintrag, um diesen an der aktuellen Cursorposition einzufügen. Sie können die Datei mit dem Menübefehl Validieren | XML validieren (F8) anhand der Avro-Schema-Spezifikation validieren.