it-swarm.com.de

Unterstützt MariaDB den nativen JSON-Spaltendatentyp?

Ich spreche nicht von dynamischen Spalten, sondern nach dem JSON-Datentyp für native Spalten. Kann ich in einfachen Worten den folgenden Code für jede MariaDB-Version ausführen?

CREATE TABLE example (names JSON);

Soweit ich weiß, ist dies nicht der Fall, aber ich bin mir immer noch nicht sicher, da viele Themen über die JSON-Unterstützung in MariaDB seit Ewigkeiten sprechen, aber keiner sagte, dass sie endgültig implementiert ist.

- Update -

Ich habe gerade drei offene Fragen zu MariaDB Jira bezüglich der Unterstützung von JSON-Datentypen gefunden, was bedeutet, dass sie noch nicht implementiert sind, oder?

13
Omranic

Die JSON-Unterstützung wird für MariaDB 10.2 bereitgestellt. Siehe den offizieller MariaDB-Blog Beitrag vom 28.02.2017. Es gibt einige Beispiele für SQL-Anweisungen und -Validierungen.

JSON wird schnell zum Standardformat für den Datenaustausch und für unstrukturierte Daten, und MariaDB 10.2 fügt einen Bereich für JSON-unterstützende Funktionen hinzu, obwohl ein JSON-Datentyp noch nicht implementiert ist. Es gibt einige Gründe, warum es keinen JSON-Datentyp gibt, aber einer ist, dass dies tatsächlich nicht so viele Vorteile bietet, da JSON ein textbasiertes Format ist. Dieser Blog-Beitrag beschreibt JSON und die Anwendungsfälle dafür sowie die Funktionen und Verwendungen von MariaDB 10.2 JSON für diese sowie einige andere Ergänzungen zu MariaDB 10.2, die für die JSON-Verarbeitung nützlich sind.

7
Ivanov

Es hängt davon ab, was Sie meinen, wenn Sie "Datentyp" sagen. Einige Datenbanken wie PostgreSQL verfügen über einen JSON-Datentyp, der die Volltextsuche, einen binären Speichermechanismus, die Indizierung und eine vollständige Reihe von Operatoren für den Zugriff auf die Daten ermöglicht. Maria hat das noch nicht. Der Datentyp wird speziell von MDEV-9144 verfolgt.

Trotzdem bringt MySQL einen sehr begrenzten Typ von einem der Bug-Betreuer.

Der JSON-Datentyp widerspricht direkt dem SQL-Standard, der besagt, dass JSON_ * -Funktionen eine Zeichenfolge als Argument verwenden. In Bezug auf die Geschwindigkeit benötigt MariaDB kein binäres JSON. Laut unseren Benchmarks ist unser JSON-Parser im Text-JSON genauso schnell wie MySQL im binären JSON. Das heißt, in MariaDB könnte man VARCHAR oder TEXT für JSON verwenden. Wenn eine Validierung erforderlich ist, kann dies mit einer CHECK-Einschränkung erfolgen:

my_json_column TEXT CHECK (JSON_VALID(my_json_column))

Wir werden jedoch JSON "type" hinzufügen, um die MySQL-Kompatibilität zu gewährleisten.

Nach meiner Lektüre ist das nicht genau der Punkt von binärem JSON. Verweisen wir auf MySQL docs

Das Binärformat ist so strukturiert, dass der Server Unterobjekte oder verschachtelte Werte direkt anhand des Schlüssel- oder Array-Index suchen kann, ohne alle Werte davor oder danach im Dokument zu lesen.

Wiederum macht PostgreSQLs jsonb viel mehr als das.

jsonb-Daten werden in einem zerlegten Binärformat gespeichert, wodurch die Eingabe aufgrund des zusätzlichen Konvertierungsaufwands etwas langsamer, die Verarbeitung jedoch erheblich schneller ist, da keine erneute Analyse erforderlich ist. jsonb unterstützt auch die Indizierung, was ein erheblicher Vorteil sein kann.

tldr; Maria DB hat noch keinen JSON-Typ. Selbst wenn es den "Typ" erhält, ist es nur ein dünner Wrapper über eine Textvalidierung (wie der Typ json von PostgreSQL). Es gibt keine Pläne für einen binären JSON-Typ (wie PostgreSQLs jsonb), da die Entwickler die Vorteile anscheinend nicht verstehen.

6
Evan Carroll