Seit Version 10.2 können Sie JSON in MariaDB als Data Type (Datenformat) einsetzen, um flexible, semi-strukturierte Daten direkt in relationalen Tabellen zu speichern und zu verarbeiten. Wir zeigen Ihnen die wichtigsten Funktionen und Schritte.

MariaDB: JSON-Funktionen im Überblick

MariaDB stellt Ihnen eine Reihe hilfreicher Funktionen zur Verfügung, mit denen Sie direkt in der Datenbank effektiv mit JSON-Daten arbeiten können. Sie benötigen keine zusätzliche NoSQL-Datenbank. Mit den folgenden Werkzeugen greifen Sie gezielt auf Informationen zu, verändern Inhalte oder prüfen strukturierte Daten:

  • JSON_VALUE(json_doc, json_path): Diese Funktion erlaubt es Ihnen, einen ganz bestimmten Wert innerhalb eines JSON-Feldes auszulesen. Sie geben das JSON-Dokument und den Pfad zum gewünschten Element an. MariaDB liefert Ihnen genau diesen Wert zurück. So sparen Sie sich die Mühe, das gesamte Dokument zu analysieren oder extern zu parsen.
  • JSON_SET(json_doc, path, value): Hiermit ändern Sie einen vorhandenen Eintrag oder fügen ein neues Feld direkt in der Datenbank hinzu. Existiert der angegebene Pfad, ersetzt MariaDB den Wert. Fehlt der Pfad, legt MariaDB ihn an.
  • JSON_REMOVE(json_doc, path): Diese MariaDB JSON Function hilft Ihnen, ein JSON-Dokument aufzuräumen. Wenn Sie beispielsweise ein veraltetes Attribut löschen möchten, geben Sie einfach den Pfad an.
  • JSON_CONTAINS(json_doc, value, path): Diese Funktion eignet sich für Prüfungen oder Filterabfragen. Sie können feststellen, ob ein bestimmter Wert in JSON vorhanden ist.
  • JSON_VALID(json_doc): Bevor Sie JSON verarbeiten, sollten Sie sicherstellen, dass es gültig ist. Mit JSON_VALID erkennt MariaDB, ob der JSON-Text korrekt aufgebaut ist. Fehlerhafte Eingaben identifizieren Sie damit frühzeitig.
Managed Database Services
Datenbanken – Auf´s Wesentliche konzentrieren
  • IONOS Cloud-Partner: Die Experten für Ihren Datenbank-Betrieb
  • Flexibel: Maßgeschneiderte Datenbank-Lösungen ganz auf Ihre Bedürfnisse
  • Rechenzentren in Deutschland: Ihre Daten sind sicher

Schritt-für-Schritt-Anleitung: JSON in MariaDB einsetzen

In diesem Abschnitt zeigen wir Ihnen, wie Sie in MariaDB JSON-Daten speichern, abfragen und manipulieren.

Schritt 1: Eine Tabelle mit JSON-Feld erstellen

Zunächst legen Sie eine Tabelle mit einer Spalte vom Typ LONGTEXT oder JSON an. MariaDB speichert JSON intern als Text, prüft jedoch bei Verwendung von JSON-Funktionen automatisch die Syntax.

CREATE TABLE products (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255),
    properties JSON
);
sql

In der Spalte properties können Sie beliebige JSON-Objekte speichern.

Schritt 2: JSON-Daten einfügen

Sie können nun mit MariaDB INSERT INTO Datensätze mit gültigem JSON einfügen:

INSERT INTO products (name, properties) VALUES (
    'desk',
    '{"color": "brown", "material": "timber", "weight": 12.5}'
);
sql

Wichtig: Sie müssen den JSON-String korrekt formatieren und in Anführungszeichen setzen. Innerhalb des Strings müssen doppelte Anführungszeichen mit einem Backslash escaped werden (\").

Schritt 3: Daten aus einer JSON-Spalte lesen

Um gezielt Werte aus einem JSON-Objekt zu extrahieren, verwenden Sie JSON_VALUE():

SELECT name, JSON_VALUE(properties, '$.material') AS material
FROM products;
sql

Das Ergebnis zeigt den Namen des Produkts sowie das gespeicherte Material aus dem JSON-Feld.

Hinweis

JSON_VALUE() steht in MariaDB erst ab Version 10.6.1 zur Verfügung. In älteren Versionen ist stattdessen JSON_UNQUOTE(JSON_EXTRACT(...)) zu verwenden.

Schritt 4: MariaDB JSON-Daten aktualisieren

Um einen Wert innerhalb eines JSON-Objekts in MariaDB zu ändern, nutzen Sie JSON_SET():

UPDATE products
SET properties = JSON_SET(properties, '$.color', 'white')
WHERE name = 'desk';
sql

Sie können auch neue Schlüssel-Wert-Paare hinzufügen, die vorher nicht existierten.

Schritt 5: Ein Element aus JSON entfernen

Mit JSON_REMOVE() löschen Sie gezielt Werte aus einem Objekt:

UPDATE products
SET properties = JSON_REMOVE(properties, '$.weight')
WHERE name = 'desk';
sql

Schritt 6: Nach Werten in JSON suchen

Sie können in MariaDB nach Einträgen mit bestimmten JSON-Inhalten filtern:

SELECT * FROM products
WHERE JSON_VALUE(properties, '$.material') = 'timber';
sql

Das ist besonders nützlich für komplexe Filter, zum Beispiel bei Produktsuchen oder personalisierten Inhalten.

Schritt 7: Validierung und Debugging

Falls Sie überprüfen wollen, ob eine Spalte gültiges JSON enthält, hilft JSON_VALID():

SELECT name, JSON_VALID(properties) FROM products;
sql

Ein Rückgabewert von „1“ bedeutet gültiges JSON, „0“ weist auf Syntaxfehler hin.

Schritt 8: JSON-Spalten mit generierten Spalten und Indizes kombinieren

Da MariaDB JSON-Inhalte intern als Text speichert, müssen bei Abfragen die Daten jedes Mal neu geparst werden. Das kann zu Performanceproblemen führen, insbesondere bei großen Tabellen oder häufig wiederholten Zugriffen auf bestimmte JSON-Felder. Eine effektive Lösung dafür sind generierte Spalten, die automatisch aus dem JSON-Inhalt bestimmte Werte extrahieren und separat speichern.

So können Sie zum Beispiel aus der JSON-Spalte properties den Wert des Schlüssels material extrahieren und in einer neuen, indexierbaren Spalte ablegen:

ALTER TABLE products
ADD COLUMN material VARCHAR(100) AS (JSON_VALUE(properties, '$.material')) STORED,
ADD INDEX idx_material (material);
sql

Dieser Befehl erstellt die Spalte material, die den JSON-Wert aus $.material übernimmt. Das Schlüsselwort STORED sorgt dafür, dass der Wert in der Datenbank gespeichert wird und nicht nur zur Laufzeit berechnet wird. Zusätzlich erstellen wir den Index (idx_material), um präzise Suchabfragen effizient zu gestalten.

Sie führen danach deutlich schnellere Abfragen wie diese durch:

SELECT name FROM products WHERE material = 'timber';
sql

Vor allem in produktiven Umgebungen mit vielen Lesezugriffen lohnt sich diese Technik. Sie reduziert die Rechenlast bei Abfragen und sorgt auch bei großen Datenmengen für kürzere Antwortzeiten.

Warum ist die Kombination von JSON und MariaDB sinnvoll?

Die Verwendung von JSON in MariaDB ist besonders dann praktisch, wenn Anwendungen Daten in einer variablen Struktur ablegen müssen. Dies können Konfigurationen, API-Antworten, Benutzerprofile oder Logs sein. JSON hält verschachtelte und flexible Inhalte direkt in einer Spalte. Sie legen keine zusätzlichen Spalten für jedes mögliche Feld an. Stattdessen fügen Sie neue Werte direkt in die JSON-Struktur ein. So passen Sie Ihre Daten an, ohne das Datenbankschema zu ändern.

Gerade in Systemen, die sowohl feste Tabellenstrukturen als auch flexible Datenspeicherung benötigen, bietet JSON in MariaDB eine schnelle und einfache Lösung. Sie arbeiten mit dynamischen Inhalten, ohne auf die Vorteile klassischer SQL-Abfragen zu verzichten. So kombinieren Sie die Stabilität relationaler Daten mit der Anpassungsfähigkeit von NoSQL.

Compute Engine
Die ideale IaaS für Ihre Workloads
  • Kostengünstige vCPUs und leistungsstarke dedizierte Cores
  • Höchste Flexibilität ohne Mindestvertragslaufzeit
  • Inklusive 24/7 Experten-Support
War dieser Artikel hilfreich?
Zum Hauptmenü