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:
jsonbspeichert 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