Seit Version 10.2 können Sie JSON in MariaDB als Data Type (Da­ten­for­mat) einsetzen, um flexible, semi-struk­tu­rier­te Daten direkt in re­la­tio­na­len Tabellen zu speichern und zu ver­ar­bei­ten. Wir zeigen Ihnen die wich­tigs­ten Funk­tio­nen und Schritte.

MariaDB: JSON-Funk­tio­nen im Überblick

MariaDB stellt Ihnen eine Reihe hilf­rei­cher Funk­tio­nen zur Verfügung, mit denen Sie direkt in der Datenbank effektiv mit JSON-Daten arbeiten können. Sie benötigen keine zu­sätz­li­che NoSQL-Datenbank. Mit den folgenden Werk­zeu­gen greifen Sie gezielt auf In­for­ma­tio­nen zu, verändern Inhalte oder prüfen struk­tu­rier­te Daten:

  • JSON_VALUE(json_doc, json_path): Diese Funktion erlaubt es Ihnen, einen ganz be­stimm­ten Wert innerhalb eines JSON-Feldes aus­zu­le­sen. Sie geben das JSON-Dokument und den Pfad zum ge­wünsch­ten Element an. MariaDB liefert Ihnen genau diesen Wert zurück. So sparen Sie sich die Mühe, das gesamte Dokument zu ana­ly­sie­ren oder extern zu parsen.
  • JSON_SET(json_doc, path, value): Hiermit ändern Sie einen vor­han­de­nen Eintrag oder fügen ein neues Feld direkt in der Datenbank hinzu. Existiert der an­ge­ge­be­ne 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 auf­zu­räu­men. Wenn Sie bei­spiels­wei­se ein ver­al­te­tes 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 Fil­ter­ab­fra­gen. Sie können fest­stel­len, ob ein be­stimm­ter Wert in JSON vorhanden ist.
  • JSON_VALID(json_doc): Bevor Sie JSON ver­ar­bei­ten, sollten Sie si­cher­stel­len, dass es gültig ist. Mit JSON_VALID erkennt MariaDB, ob der JSON-Text korrekt aufgebaut ist. Feh­ler­haf­te Eingaben iden­ti­fi­zie­ren Sie damit früh­zei­tig.
Managed Database Services
Da­ten­ban­ken – Auf´s We­sent­li­che kon­zen­trie­ren
  • IONOS Cloud-Partner: Die Experten für Ihren Datenbank-Betrieb
  • Flexibel: Maß­ge­schnei­der­te Datenbank-Lösungen ganz auf Ihre Be­dürf­nis­se
  • Re­chen­zen­tren in Deutsch­land: 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 ma­ni­pu­lie­ren.

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 Ver­wen­dung von JSON-Funk­tio­nen au­to­ma­tisch 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 Da­ten­sät­ze 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 for­ma­tie­ren und in An­füh­rungs­zei­chen setzen. Innerhalb des Strings müssen doppelte An­füh­rungs­zei­chen mit einem Backslash escaped werden (\").

Schritt 3: Daten aus einer JSON-Spalte lesen

Um gezielt Werte aus einem JSON-Objekt zu ex­tra­hie­ren, verwenden Sie JSON_VALUE():

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

Das Ergebnis zeigt den Namen des Produkts sowie das ge­spei­cher­te Material aus dem JSON-Feld.

Hinweis

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

Schritt 4: MariaDB JSON-Daten ak­tua­li­sie­ren

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 hin­zu­fü­gen, die vorher nicht exis­tier­ten.

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 be­stimm­ten 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 Pro­dukt­su­chen oder per­so­na­li­sier­ten Inhalten.

Schritt 7: Va­li­die­rung und Debugging

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

SELECT name, JSON_VALID(properties) FROM products;
sql

Ein Rück­ga­be­wert von „1“ bedeutet gültiges JSON, „0“ weist auf Syn­tax­feh­ler hin.

Schritt 8: JSON-Spalten mit ge­ne­rier­ten Spalten und Indizes kom­bi­nie­ren

Da MariaDB JSON-Inhalte intern als Text speichert, müssen bei Abfragen die Daten jedes Mal neu geparst werden. Das kann zu Per­for­man­ce­pro­ble­men führen, ins­be­son­de­re bei großen Tabellen oder häufig wie­der­hol­ten Zugriffen auf bestimmte JSON-Felder. Eine effektive Lösung dafür sind ge­ne­rier­te Spalten, die au­to­ma­tisch aus dem JSON-Inhalt bestimmte Werte ex­tra­hie­ren und separat speichern.

So können Sie zum Beispiel aus der JSON-Spalte properties den Wert des Schlüs­sels material ex­tra­hie­ren und in einer neuen, in­de­xier­ba­ren 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üs­sel­wort STORED sorgt dafür, dass der Wert in der Datenbank ge­spei­chert wird und nicht nur zur Laufzeit berechnet wird. Zu­sätz­lich erstellen wir den Index (idx_material), um präzise Such­ab­fra­gen effizient zu gestalten.

Sie führen danach deutlich schnel­le­re Abfragen wie diese durch:

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

Vor allem in pro­duk­ti­ven Um­ge­bun­gen mit vielen Le­se­zu­grif­fen lohnt sich diese Technik. Sie reduziert die Re­chen­last bei Abfragen und sorgt auch bei großen Da­ten­men­gen für kürzere Ant­wort­zei­ten.

Warum ist die Kom­bi­na­ti­on von JSON und MariaDB sinnvoll?

Die Ver­wen­dung von JSON in MariaDB ist besonders dann praktisch, wenn An­wen­dun­gen Daten in einer variablen Struktur ablegen müssen. Dies können Kon­fi­gu­ra­tio­nen, API-Antworten, Be­nut­zer­pro­fi­le oder Logs sein. JSON hält ver­schach­tel­te und flexible Inhalte direkt in einer Spalte. Sie legen keine zu­sätz­li­chen Spalten für jedes mögliche Feld an. Statt­des­sen fügen Sie neue Werte direkt in die JSON-Struktur ein. So passen Sie Ihre Daten an, ohne das Da­ten­bank­sche­ma zu ändern.

Gerade in Systemen, die sowohl feste Ta­bel­len­struk­tu­ren als auch flexible Da­ten­spei­che­rung benötigen, bietet JSON in MariaDB eine schnelle und einfache Lösung. Sie arbeiten mit dy­na­mi­schen Inhalten, ohne auf die Vorteile klas­si­scher SQL-Abfragen zu ver­zich­ten. So kom­bi­nie­ren Sie die Sta­bi­li­tät re­la­tio­na­ler Daten mit der An­pas­sungs­fä­hig­keit von NoSQL.

Compute Engine
Die ideale IaaS für Ihre Workloads
  • Kos­ten­güns­ti­ge vCPUs und leis­tungs­star­ke de­di­zier­te Cores
  • Höchste Fle­xi­bi­li­tät ohne Min­dest­ver­trags­lauf­zeit
  • Inklusive 24/7 Experten-Support
Zum Hauptmenü