Definition „YAML Ain't Markup Language“

Was ist YAML?

| Autor / Redakteur: LineFeed / Stephan Augsten

Die Übersetzung zwischen nativen Datenstrukturen und einem Character Stream erfolgt in mehreren logisch getrennten Schritten, die jeweils mit einem klar definierten Input- und Output-Datenmodell versehen sind.
Die Übersetzung zwischen nativen Datenstrukturen und einem Character Stream erfolgt in mehreren logisch getrennten Schritten, die jeweils mit einem klar definierten Input- und Output-Datenmodell versehen sind. (© yaml.org)

Markup Languages wie YAML oder HTML geben Daten eine Struktur. YAML dient aber wie JSON vor allem der Datenspeicherung in menschenlesbarer Form. Von XML unterscheidet sich YAML durch den leichtgewichtigen Ansatz ohne SGML-Kompatibilität.

Ursprünglich stand YAML für „Yet Another Markup Language“, bereits seit 2002 verbirgt sich dahinter allerdings das rekursive Akronym „YAML Ain't Markup Language“. Somit definiert sich YAML als eine Auszeichnungssprache, die keine ist, was letztlich auf die Zielsetzung hinweist.

YAML will ein Format für die Serialisierung von Daten zur Verfügung stellen. Der aus dem Druckwesen stammende Begriff „Markup“ impliziert ein Format für eine sichtbare Textauszeichnung, wie es beispielsweise HTML bietet. Auch bei anderen Vertretern der Gattung überlappen sich beide Anwendungsgebiete.

Es existieren durchaus Lösungen, die gezielt beide Bereiche abdecken. So kann beispielsweise XML prinzipiell sowohl HTML als auch YAML ersetzen. Das Hauptargument für YAML ist die Schlankheit der Lösung, die auch Beschränkungen aufhebt, die sich bei XML aus dem breitgefächerten Anwendungsspektrum respektive dem Ziel ergeben, die Kompatibilität zu SGML zu erhalten. Der Hauptkonkurrent von YAML ist allerdings nicht XML sondern JSON.

YAML oder JSON?

Die „JavaScript Object Notation“, kurz JSON, ist ein Format für die Serialisierung von Daten, das aus dem Umfeld von Web-Applikationen stammt. Beide Formate bieten daher sehr ähnliche Funktionalitäten. YAML ist seit der Version 1.2 ein Superset von JSON, kann also das andere Format in allen Applikationen direkt ersetzen.

Der Hauptunterschied liegt in der Zielsetzung. Während mittels YAML formatierte Daten nicht nur für Maschinen, sondern auch für Menschen möglichst gut lesbar sein sollen, legt JSON den größten Wert auf die Einfachheit der Anwendung.

Wie funktioniert YAML?

YAML wandelt Daten aus einer programminternen Form so um, dass sie sich als Textdatei abspeichern lassen. Damit das auch für komplexe Datentypen wie zwei- oder mehrdimensionale Arrays möglich ist, werden die Elemente nacheinander ausgegeben, daher der Name Serialisierung.

Dabei macht YAML die hierarchische Struktur wie die Programmiersprache Python durch Einrückung mit Leerzeichen sichtbar, verwendet aber auch eckige und geschweifte Klammern. YAML erlaubt dabei keine Tabulatoren, weil deren Interpretation nicht eindeutig ist und von verschiedenen Programmen unterschiedlich gehandhabt wird.

Welchem Zweck dient YAML?

Die Serialisierung von Daten lässt sich einerseits nutzen, um einen Programmzustand über mehrere Programmläufe zu erhalten. In dieser Weise wird YAML häufig für die Speicherung der Laufzeitkonfiguration in Konfigurationsdateien verwendet. Die zweite Hauptanwendung ist die Übertragung von Daten zwischen Computersystemen, die über ein Netzwerk miteinander verbunden sind.

Welche Daten kann YAML verarbeiten?

Nativ unterstützt YAML einen Satz von Datentypen, den auch die Programmiersprache Perl verwendet, als da wären:

  • Skalare: Zahlen, Zeichenketten
  • Listen: eindimensionale Arrays, wobei mehrdimensionale möglich sind, da Listenelemente ebenfalls Listen sein können
  • assoziative Arrays: auch Hashtabellen oder Dictionaries genannt

Damit lassen sich bereits alle Grunddatentypen abbilden, die in den verschiedenen Programmiersprachen zu finden sind. Zusätzlich unterstützt YAML noch benutzerdefinierte Datentypen.

Mehrere Datensätze gemeinsam übertragen

Mit einer Syntax, die der bei E-Mail gebräuchlichen MIME-Spezifikation (RFC 2045) entlehnt ist, ermöglicht YAML, mehrere Datensätze zusammenzufassen. Das ist weniger für die Speicherung in einer Datei gedacht, obwohl es auch dabei nützlich sein kann, sondern mehr für die Übertragung als Datenstrom im Netz.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Aktuelle Beiträge zu diesem Thema

Continuous Delivery in GitOps-Manier

Argo CD und Git in Aktion

Continuous Delivery in GitOps-Manier

GitOps ist aktuell ein großes Thema – als Konzept aber eben reine Theorie. Schaut man sich aber mal ein konkretes Tool an, wird GitOps greifbar. Und dafür eignet sich die Open-Source-Software Argo CD sehr gut. lesen

Wie funktioniert GitOps in der Praxis?

Code-gesteuerte Anwendungsumgebung über Git

Wie funktioniert GitOps in der Praxis?

Wenn GitOps eines ist, dann aktuell ein großes Thema. Überall sprießen Artikel, Services und Produkte aus dem Boden, die sich mit GitOps schmücken. Aber um herauszufinden, was GitOps denn nun genau ist, was da passiert und wo es her kommt, braucht es bisweilen eine Ewigkeit. lesen

11 Gründe für die Einführung von GitOps

Continuous Deployments für Cloud-Native-Infrastrukturen

11 Gründe für die Einführung von GitOps

GitOps ist für alle in greifbare Nähe gerückt: Denn mit Kubernetes lassen sich Deployments von Anwendungen und Infrastruktur-Komponenten rein über deklarative Konfigurationsdateien verwalten, die in einem Git-Repository liegen. Aber was spricht eigentlich für diesen Ansatz? lesen

Buildspec.yml für CodeBuild erstellen

ASP.NET-Apps auf AWS Elastic Beanstalk migrieren, Teil 3

Buildspec.yml für CodeBuild erstellen

Wer seine ASP.NET-Anwendungen auf AWS migrieren möchte, muss zunächst ein Quellcode-Repository auf CodeCommit einrichten. Die Vorbereitung der Build-Umgebung ist der nächste Schritt, den wir heute in Angriff nehmen. lesen

1525 Eingaben für Programmplanung der CNCF

KubeCon + CloudNativeCon Europe 2020 in Amsterdam

1525 Eingaben für Programmplanung der CNCF

Das Programm für die KubeCon + CloudNativeCon Europe 2020 steht, wie die Cloud Native Computing Foundation, kurz CNCF, zu Beginn der Woche bekanntgab. Demnach wird die Konferenz über 240 Vorträge, Keynotes, Blitz-Talks und Breakout Sessions umfassen. lesen

Container Orchestration Tools im Vergleich

Die Konsolidierung der Cloud

Container Orchestration Tools im Vergleich

Seit Docker das Licht der IT-Welt erblickte, haben Container die DevOps-Idee revolutioniert. Dazu bedarf es eines Container-Clusters nebst zugehöriger Verwaltungsinstrumente wie Google Kubernetes. Hier klären wir die Zusammenhänge von Containern, Docker, DevOps und Cloud-native Computing. lesen

Azure DevOps CI/CD in der Praxis

Artikelreihe zu Windows Desktop Apps

Azure DevOps CI/CD in der Praxis

Eine ganze Artikelreihe zu Azure DevOps CI/CD für Windows Desktop Apps veröffentlicht aktuell Stefan Köll, von Microsoft mehrfach als „Most Valuable Professional“ geadelt. Im ersten Beitrag zeigt der Entwickler, wie er seine CI/CD-Pipeline nach Azure DevOps verlagert hat. lesen

Grundlagen zu AWS SAM

Serverless-Architekturen unter AWS, Teil 1

Grundlagen zu AWS SAM

In diesem Workshop wollen wir anhand einiger Beispiele lernen, serverlose Architekturen unter AWS bereitzustellen. Den thematischen roten Faden bilden dabei verwaltete AWS-Services, die im Kontext Machine Learning, Spracherkennung, Texterkennung, Bilderkennung stehen. lesen

CloudBees übernimmt Feature-Management von Rollout

Schnellere Auslieferung von Software-Funktionen

CloudBees übernimmt Feature-Management von Rollout

Der Continuous-Integration- und -Delivery-Experte CloudBees akquiriert das Unternehmen Rollout samt dessen Feature-Flag-Software. Entwickler können so Rollout und Rollback von Features plattformunabhängig steuern. lesen

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 45018835 / Definitionen)