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

VS-Code und IntelliJ-Plug-in von Google

Cloud-Native-Development mit Cloud Code

VS-Code und IntelliJ-Plug-in von Google

Google hat mit Cloud Code eine Reihe neuer Plug-ins für IntelliJ- und Visual Studio Code für die Entwicklung Cloud-nativer Anwendungen bereitgestellt. In der ersten Version lag der Fokus auf Applikationen, die auf Kubernetes laufen, einschließlich der Google Kubernetes Engine. lesen

Pivotal Cloud Foundry 2.5 veröffentlicht

Neue Features und Beta-Tools für die Cloud-Plattform

Pivotal Cloud Foundry 2.5 veröffentlicht

Pivotal hat just seine Version 2.5 der Open-Source-Multi-Cloud-Plattform Cloud Foundry vorgestellt und verspricht eine ganze Reihe größerer wie kleinerer Neuerungen, beispielsweise die flexiblere Einbindung von Kubernetes. lesen

Commits und Tests mit AWS CodeCommit und CodeBuild

CI/CD-Pipeline mit AWS-Tools, Teil 2

Commits und Tests mit AWS CodeCommit und CodeBuild

Ein neues Projekt ist in AWS CodeStar schnell erstellt. Umgehend kann man in den einzelnen Stufen experimentierten, z. B. mit neuen Commits zu Feature-Upgrades beitragen oder Unit-Tests implementieren. CodeStar visualisiert dabei den Projekt-Status und unterstützt die Tool-Integration. lesen

Data-Management-Automatisierung als Antwort?

Steigende Anforderungen an Test/Dev im Jahr 2019

Data-Management-Automatisierung als Antwort?

Automatisiertes Datenmanagement unterstützt die Umsetzung von DevOps. Test/Dev-Umgebungen werden damit generell dynamischer und fit für die Hybrid-Cloud-Ära gemacht, wie wir im Folgenden zeigen. lesen

Programmieren mit Notepad++

Erweiterbarer Texteditor unter Windows

Programmieren mit Notepad++

Das Notepad++ ist ein mächtiger Texteditor. Dabei bietet das Tool Syntax Highlighting und weitere Entwickler-Funktionen und lässt sich als Open-Source-Software um zusätzliche Sprachen und Plugins bis hin zur vollständigen IDE erweitern. lesen

Was ist Ansible?

Definition „Ansible“

Was ist Ansible?

Ansible ist ein Open-Source-Tool, mit dem sich die Konfiguration und Administration von Systemen automatisieren lässt. Das reicht von simplen bis hin zu hoch komplexen Tasks. Das Werkzeug beherrscht Modularisierung und erfordert minimale Systemvoraussetzungen lesen

Ansible, AWX und Ansible Tower im Überblick

DevOps-Enabler Ansible, Teil 1

Ansible, AWX und Ansible Tower im Überblick

Mit Blick auf die Veröffentlichung von Ansible 2.5 und Ansible Tower 3.2.2 bringt Dev-Insider ein Rundum-Spezial im Kontext von Puppet, Chef und Salt. Dieser Teil klärt, was der Open-Source-Star besser macht als die etablierte Konkurrenz, worin sich Ansible, Ansible Tower und AWX unterscheiden und wer die Player hinter Ansible sind. lesen

Reverse-Engineering mit AWS CloudFormer

AWS CloudFormation, Teil 4

Reverse-Engineering mit AWS CloudFormer

AWS CloudFormation erlaubt es, Infrastruktur nach dem „Infrastructure as Code“-Prinzip per JSON- oder YAML-Vorlagen zu definieren. Mit dem Tool CloudFormer lassen sich bereits vorhandene Ressourcen zwecks einfacherer Reproduzierung sogar in CloudFormation-Vorlagen konvertieren. lesen

Was ist SaltStack?

Definition „Salt“

Was ist SaltStack?

Das DevOps-Toolset SaltStack oder kurz Salt dient der automatisierten Steuerung und Überwachung die Infrastruktur. Die Orchestrierung von Cloud-Ressourcen, Containern und virtuellen Servern ist dabei ebenso möglich wie manuelle Remote-Ausführung und Konfigurationsmanagement. lesen

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 45018835 / Definitionen)