Avro-Schema

www.altova.com Alle erweitern/reduzieren Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Benutzerhandbuch und Referenz > Avro, Avro-Schema >

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.

 

Click to exppand/collapse01: Avro-Schema als JSON-String

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"

 

 

Click to exppand/collapse02: Avro-Schema als JSON-Objekt

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"

 

 

Click to exppand/collapse03: Avro-Schema als JSON-Objekt: Array von Ganzzahlen

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

 

 

Click to exppand/collapse04: Avro-Schema als JSON-Objekt: Datensätze

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}

 

 

Click to exppand/collapse05: Avro-Schema als JSON-Objekt: Mehrere Datensätze

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.

 


© 2019 Altova GmbH