Die Abkürzung YAML steht je nach Quelle entweder für “Yet Another Markup Language” oder für “YAML Ain’t Markup Language”. Die Sprache wird zur Serialisierung von Daten, also zur Umwandlung von strukturierten Daten in eine Sequenz. Wobei der erste Name nicht wirklich gültig ist, da es sich um keine Markup Language handelt.
Die sogenannten Markup Languages, wie HTML oder XML, nutzen nämlich Markierungen, um textuelle Informationen zu strukturieren. Bei HTML beispielsweise gibt es ein fest definiertes Set an Markierungen, welche in spitzen Klammern (<>) geschrieben sind. Dazu gehören beispielsweise Überschriften (<h1>, <h2>, <h3>, …) oder Paragraphen (<p>), welche genutzt werden, um die Struktur einer Website aufzubauen.
Wie funktioniert die Syntax von YAML?
Dieses Dateiformat nutzt Funktionen aus verschiedensten Programmiersprachen, wie Perl, C oder HTML. Gleichzeitig ist es ein sogenanntes Superset von JSON, was bedeutet, dass JSON Dateien ohne große Probleme in YAML genutzt werden können.
Eine Datei beginnt mit drei Bindestrichen (“—“) zur Anzeige, dass die Datei startet. Sie kann entweder die Struktur einer Liste oder einer Map haben. In unserem Beispiel zeigen wir eine Map mit festen Schlüssel-Wert-Paaren, die vergleichbar mit Python Dictionaries sind. Jeder Schlüssel darf dabei nur ein einziges Mal vorkommen und die Reihenfolge der Paare ist nicht vorgegeben:
---
name: Boris Miller
telephone: 0152 48912348
age: 28
Darüber hinaus gibt es noch weitere Syntaxregeln, wie beispielsweise:
- Kommentare: YAML unterstützt sowohl einzeilige als auch mehrzeilige Kommentare. Einzeilige Kommentare beginnen mit dem Rautensymbol (#) und werden bis zum Ende der Zeile fortgesetzt. Mehrzeilige Kommentare beginnen mit einem Zeilenumbruch, gefolgt von einem Rautezeichen (#) und werden bis zum Ende des Blocks fortgesetzt.
- Einrückung: Das Dateiformat verwendet Einrückungen, um die Struktur der Daten zu definieren. Jede Einrückungsebene steht für eine Hierarchieebene. Die Einrückung kann entweder mit Leerzeichen oder mit Tabulatoren erfolgen, muss aber in der gesamten Datei konsistent sein.
- Skalare: Skalare sind einzelne Werte in YAML, wie z.B. Zeichenketten, Zahlen und boolesche Werte. Sie können in verschiedenen Syntaxen dargestellt werden, z.B. als reine Skalare, Skalare in Anführungszeichen oder gefaltete Skalare.
- Sammlungen: YAML unterstützt zwei Arten von Sammlungen: Sequenzen und Mappings. Bei Sequenzen handelt es sich um geordnete Listen von Werten, bei Mappings um ungeordnete Schlüssel-Wert-Paare.
- Verankerungen und Aliase: YAML unterstützt Anker und Aliase, um das gleiche Objekt mehrfach in einer Datei zu referenzieren. Ein Anker wird mit dem kaufmännischen Und-Zeichen (&) definiert, ein Alias mit dem Sternchen (*).
Welche Datentypen unterstützt das Dateiformat?
In einer “Yet Another Markup Language” Datei können die gängigen Datentypen hinterlegt und abgespeichert werden:
- Boolean (True/False)
- Integer (Ganzzahlen, z.B. 5 oder 2304)
- Floating Point (Dezimalzahlen, z.B. 2.48 oder 1983.4335)
- String (Text)
- Null-Werte
Wofür nutzt man das Dateiformat?
YAML ist ein flexibles, menschenlesbares Format zur Datenserialisierung und wird in einer Vielzahl von Anwendungen in unterschiedlichen Domänen eingesetzt. Eine der populärsten Anwendungen sind Konfigurationsdateien, in denen die Einstellungen für Softwareanwendungen und Systeme definiert werden. YAML-Konfigurationsdateien werden von vielen gängigen Tools wie Ansible, Docker Compose, Kubernetes und Helm verwendet.
Eine weitere Anwendung findet sich im Bereich der Datenverarbeitung und -analyse. Mit YAML können Datenpipelines definiert werden, in denen der Datenfluss und die Operationen, die mit den Daten durchgeführt werden sollen, festgelegt werden. Apache Airflow ist ein Beispiel für ein Tool, das diesen Dateityp zur Definition von Datenpipelines verwendet.
Auch in der Webentwicklung wird YAML häufig zur Definition von strukturierten Daten, wie z. B. API-Spezifikationen und Swagger-Dokumentation, verwendet. Es wird aufgrund seiner Lesbarkeit und der einfachen Parsbarkeit durch Programmiersprachen gerne für diese Anwendungsfälle eingesetzt.
Darüber hinaus kann das Dateiformat auch in Datenbankanwendungen eingesetzt werden, wo es zur Definition der Struktur und des Schemas der Datenbank sowie zum Datenimport und -export verwendet wird. Tools wie das Python-basierte ORM SQLAlchemy oder die dokumentenorientierte NoSQL-Datenbank MongoDB nutzen YAML-Dateien zur Datenbankkonfiguration und Schemadefinition.
Insgesamt eignet sich YAML aufgrund seiner Flexibilität und Lesbarkeit für eine Vielzahl von Anwendungen in unterschiedlichen Domänen. Die Verbreitung nimmt weiter zu und es ist davon auszugehen, dass es auch in den kommenden Jahren ein beliebtes Format für die Serialisierung und Konfiguration von Daten bleiben wird.
Welche Vorteile hat die Arbeit mit YAML-Dateien?
YAML ist eine menschenlesbare Daten-Serialisierungssprache, die häufig für Konfigurationsdateien verwendet wird. Im Folgenden werden einige Vorteile der Verwendung dieses Dateiformats genannt:
- Lesbarkeit: YAML ist so konzipiert, dass es für den Menschen leicht zu lesen und zu schreiben ist. Die Syntax ist durch Einrückung und einfache Strukturen intuitiv zu verstehen.
- Flexibel: Es ist ein flexibles Format, mit dem sich eine Vielzahl von Datentypen wie Listen, Dictionaries und skalare Werte darstellen lassen. Damit eignet es sich für den Einsatz in unterschiedlichen Kontexten, von einfachen Konfigurationsdateien bis hin zu komplexeren Datenstrukturen.
- Integration: Das Dateiformat wird von vielen Programmiersprachen und Frameworks unterstützt und lässt sich daher leicht mit anderen Tools im Tech-Stack integrieren. So wird YAML z. B. häufig in Verbindung mit Docker und Kubernetes zur Container-Orchestrierung eingesetzt.
- Versionskontrolle: Die Dateien lassen sich problemlos mit Versionskontrollsystemen wie Git verwalten. So können Sie Änderungen im Laufe der Zeit verfolgen, mit anderen zusammenarbeiten und bei Bedarf auf frühere Versionen zurückgreifen.
- Portabilität: Da es sich um ein textbasiertes Format handelt, lässt es sich problemlos zwischen verschiedenen Systemen und Plattformen übertragen. Dies macht es zu einer guten Wahl für den Austausch von Konfigurationsdateien und anderen Daten zwischen Teams und Organisationen.
Insgesamt machen die Vorteile von YAML das Format zu einer beliebten Wahl für Konfigurationsdateien und andere Anwendungsfälle, bei denen es auf Lesbarkeit und Flexibilität ankommt.
YAML und JSON im Vergleich
YAML und JSON sind zwei beliebte Formate zur Serialisierung von Daten, die in der modernen Softwareentwicklung verwendet werden. Neben einigen Gemeinsamkeiten gibt es aber auch einige Unterschiede zwischen den beiden Formaten.
Einer der Hauptunterschiede zwischen ihnen ist die Syntax. YAML verwendet Einrückungen und Leerzeichen zur Strukturierung der Daten, während JSON geschweifte Klammern und Klammern verwendet. Dadurch ist das erste Dateiformat besser lesbar und einfacher zu schreiben als JSON, das mitunter sehr langatmig und schwierig zu lesen ist.
Ein weiterer Unterschied zwischen den Dateiformaten sind die unterstützten Datentypen. YAML unterstützt ein breiteres Spektrum an Datentypen, darunter Zeichenketten, Zahlen, Datumsangaben und sogar benutzerdefinierte Datentypen. Im Gegensatz dazu unterstützt JSON nur grundlegende Datentypen wie Zeichenketten, Zahlen und boolesche Werte.
Im Hinblick auf die Erweiterbarkeit bietet YAML eine bessere Unterstützung für benutzerdefinierte Tags und Metadaten. Dadurch ist es einfacher, eigene Datentypen zu erstellen und zu verwenden, was für manche Anwendungen unerlässlich ist.
Ein Vorteil von JSON ist die bessere sprachübergreifende Kompatibilität. JSON wird von fast allen Programmiersprachen unterstützt, während die Unterstützung von YAML eher eingeschränkt ist. Außerdem ist JSON in der Regel schneller zu parsen und zu serialisieren.
In Bezug auf die Lesbarkeit wird YAML aufgrund seiner auf Leerzeichen basierenden Syntax oft als natürlicher als JSON empfunden. Das letztere hingegen kann aufgrund der Verwendung von Klammern und geschweiften Linien schwieriger zu lesen und zu schreiben sein.
Zusammenfassend lässt sich sagen, dass die beiden Datentypen einige Gemeinsamkeiten, aber auch deutliche Unterschiede aufweisen, die sie für unterschiedliche Anwendungen besser geeignet machen. YAML ist besser lesbar und unterstützt ein breiteres Spektrum an Datentypen, während JSON eine bessere sprachübergreifende Kompatibilität und schnellere Parsingzeiten aufweist. Letztlich hängt die Entscheidung von den spezifischen Anforderungen des jeweiligen Projekts ab.
Wie schreibt und verarbeitet man YAML Dateien in Python?
Mithilfe von Python kann man sehr einfach diese Dateien schreiben und öffnen. Es gibt sogar eine eigene Bibliothek zur Verarbeitung:
# Import modules
import yaml as yml
# open the example file
with open('details.yml') as f:
data = yml.load(f, Loader=yml.FullLoader)
print(data)
Out:
{"name": "Boris Miller", "telephone": "0152 48912348", "age": 28}
Mithilfe der Bibliothek wird unsere eingelesene Beispieldatei direkt in ein Python Dictionary umgewandelt und steht dann zur Weiterverarbeitung zur Verfügung. Genauso einfach können auch Python Dictionaries in “Yet Another Markup Language” Dateien abgespeichert werden:
dict_file = [
{'cars' : ['A6', 'A180', 'M3', 'A4', 'X5']},
{'brands' : ['Audi', 'Mercedes', 'BMW', 'Audi', 'BMW']}
]
# Create new file and dump data into it
with open(data.yml', 'w') as file:
data = yml.dump(dict_file, file)
Das solltest Du mitnehmen
- YAML ist die Abkürzung für “Yet Another Markup Language” und wird hauptsächlich zur Datenserialisierung eingesetzt.
- Es ist in der Anwendung und vielen anderen Eigenschaften sehr ähnlich mit JSON und damit auch kompatibel.
- Neben der Datenserialisierung wird YAML auch bei Konfigurationsdateien von Software eingesetzt.
Was ist die Bivariate Analyse?
Nutzen Sie die Bivariate Analyse: Erforschen Sie Typen und Streudiagramme und nutzen Sie Korrelation und Regression.
Was ist eine RESTful API?
Erfahren Sie alles über RESTful APIs und wie sie Ihre Webentwicklungsprojekte effizienter und skalierbarer machen können.
Was sind Zeitreihendaten?
Gewinnen Sie mithilfe von Analyse- und Prognosetechniken Erkenntnisse aus Zeitreihendaten. Entdecken Sie Trends und Muster!
Was ist ein Balkendiagramm?
Entdecken Balkendiagramme bei der Datenvisualisierung. Lernen Sie, wie man sie für aufschlussreiche Datenanalyse erstellt und anpasst.
Was ist ein Liniendiagramm?
Meistern Sie die Kunst der Liniendiagramme: Lernen Sie in unserem Leitfaden, wie Sie Trends und Muster visualisieren können.
Was ist Data Preprocessing?
Optimieren Sie Ihre Datenanalyse mit effektivem Data Preprocessing. Lernen Sie das Wesentliche in unserem Leitfaden zur Datenvorverarbeitung.
Andere Beiträge zum Thema YAML
- Weitere Informationen zu “Yet Another Markup Language” findest Du auf der offiziellen Website.
Niklas Lang
Seit 2020 bin ich als Machine Learning Engineer und Softwareentwickler tätig und beschäftige mich leidenschaftlich mit der Welt der Daten, Algorithmen und Softwareentwicklung. Neben meiner Arbeit in der Praxis unterrichte ich an mehreren deutschen Hochschulen, darunter die IU International University of Applied Sciences und die Duale Hochschule Baden-Württemberg, in den Bereichen Data Science, Mathematik und Business Analytics.
Mein Ziel ist es, komplexe Themen wie Statistik und maschinelles Lernen so aufzubereiten, dass sie nicht nur verständlich, sondern auch spannend und greifbar werden. Dabei kombiniere ich praktische Erfahrungen aus der Industrie mit fundierten theoretischen Grundlagen, um meine Studierenden bestmöglich auf die Herausforderungen der Datenwelt vorzubereiten.