Schon länger verfügt PostgreSQL über einen JSON-Datentyp, der das Speichern von JSON-Dokumenten in relationalen Datenbeständen vereinfacht. Er ist geeignet, um JSON-Dokumente als ganze Entität zu betrachten und nicht auf ein relationales Datenmodell abzubilden. Dies ermöglicht die Datenhaltung innerhalb einer Datenbank, mit allen Vorteilen, die PostgreSQL für den Anwender bereithält, wie kompromisslose Transaktionssicherheit, hervorragende Erweiterbarkeit, aber auch Skalierbarkeit in derselben Softwarekomponente.
Die ursprüngliche Implementierung des JSON-Datentyps wies jedoch einen großen Nachteil auf: JSON-Dokumente wurden in der Datenbank als Zeichenkette gespeichert und erforderten bei jedem Zugriff das Parsen und Analysieren des Dokuments. Auch ist es sehr aufwendig, bei einer derartigen Repräsentation eines Dokuments auf Bestandteile eines Dokuments zuzugreifen, geschweige denn sie effizient zu indizieren.
Mit JSONB hat PostgreSQL 9.4 nun einen Datentyp eingeführt, der JSON-Dokumente als strukturierten, binären Datentypen behandelt und speichert. Dies erlaubt effizienten Zugriff auf JSON-Dokumente und sogar die Implementierung schneller Indexzugriffsmethoden. Skalarwerte von JSONB-Dokumenten werden als fundamentale PostgreSQL-Typen innerhalb eines Dokuments gespeichert. Die Abfrage in Bild 1 zeigt als sehr einfaches Beispiel die Tabelle "movies", deren Spalte "entry" ein JSONB-Dokument mit jeweils einem Filmtitel enthält. Der "@>"-Operator prüft den linken Operanden daraufhin, ob der rechte JSONB-Ausdruck darin enthalten ist.
Daneben gibt es noch die Operatoren "<@", um zu prüfen, ob der linke JSONB-Ausdruck im rechten JSONB-Operanden enthalten ist, "?", um zu erfragen, ob ein bestimmter Schlüssel existiert, "?|", um zu testen, ob ein Schlüssel einer Menge in dem linken JSONB-Operanden existiert, sowie "?&", das herausfindet, ob alle
...Der komplette Artikel ist nur für Abonnenten des ADMIN Archiv-Abos verfügbar.