EMZETT.
Login

JSON in SQL-Datenbanken

Kurz: Moderne SQL-Datenbanken können JSON-Dokumente in Spalten speichern, abfragen und indizieren. So mischt man feste Tabellen mit flexiblen Daten.

Genauer: PostgreSQL (json, jsonb), MySQL (JSON) und SQLite (JSON-Funktionen) bieten Operatoren, um Felder aus dem Dokument zu lesen und zu filtern.

Im Detail

  • PostgreSQL: jsonb speichert binär, ist schneller abfragbar und indexierbar (GIN). daten->'name' liefert JSON, daten->>'name' Text, daten @> '{"typ":"a"}' prüft Enthaltensein.
  • Wann sinnvoll: Selten genutzte oder sehr unterschiedliche Attribute, Rohdaten von Schnittstellen, Einstellungen, Ereignisse mit wechselnden Feldern.
  • Wann nicht: Für Daten, über die man oft filtert, verknüpft und die Konsistenz braucht. Fremdschlüssel, Typprüfung und Einschränkungen gibt es in JSON nicht.
  • Kompromiss: Wichtige Felder als echte Spalten, der Rest als JSON. Generierte Spalten oder Indizes auf JSON-Ausdrücken beschleunigen Abfragen.
  • Fallstricke: Änderungen an einem Feld schreiben oft das ganze Dokument neu. Große JSON-Werte bremsen Tabellen.
  • Alternative: Eine Dokumentendatenbank, siehe NoSQL im Überblick.

Siehe auch: PostgreSQL-Indizes