So nutzen Sie JSON in MariaDB
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. MitJSON_VALID
erkennt MariaDB, ob der JSON-Text korrekt aufgebaut ist. Fehlerhafte Eingaben identifizieren Sie damit frühzeitig.
- 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
);
sqlIn 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}'
);
sqlWichtig: 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;
sqlDas Ergebnis zeigt den Namen des Produkts sowie das gespeicherte Material aus dem JSON-Feld.
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';
sqlSie 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';
sqlSchritt 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';
sqlDas 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;
sqlEin 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);
sqlDieser 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';
sqlVor 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.
- Kostengünstige vCPUs und leistungsstarke dedizierte Cores
- Höchste Flexibilität ohne Mindestvertragslaufzeit
- Inklusive 24/7 Experten-Support