Unterstützt MariaDB native JSON-Spaltendatentypen?

13

Ich spreche nicht von dynamischen Spalten, sondern vom JSON-Datentyp der nativen Spalte. Kann ich mit einfachen Worten den folgenden Code auf jeder 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 es eine Menge Themen gibt, die sich mit der JSON-Unterstützung auf MariaDB befassen.

- Update -

In MariaDB Jira sind gerade drei Probleme bezüglich der Unterstützung von JSON-Datentypen offen, was bedeutet, dass diese noch nicht implementiert sind, oder?

Omranic
quelle
Dieses Update sollte nicht in der Frage sein, das ist die Antwort. Du solltest das herausholen und selbst antworten. @Omranic.
Evan Carroll
> JSON ist ein Alias ​​für LONGTEXT, der aus Kompatibilitätsgründen mit dem JSON-Datentyp von MySQL eingeführt wurde. mariadb.com/kb/en/library/json-data-type
zx1986

Antworten:

7

Die JSON-Unterstützung wird in MariaDB 10.2 verfügbar sein. Siehe den offiziellen MariaDB-Blogbeitrag 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 erweitert die JSON-unterstützenden Funktionen um einen Bereich, obwohl ein JSON-Datentyp noch nicht implementiert ist. Es gibt einige Gründe, warum es keinen JSON-Datentyp gibt, aber einer ist, dass es nicht so viele Vorteile gibt, da JSON ein textbasiertes Format ist. In diesem Blog-Beitrag werden JSON und die Anwendungsfälle dafür sowie die JSON-Funktionen und -Verwendungen von MariaDB 10.2 beschrieben und einige andere Ergänzungen zu MariaDB 10.2 gezeigt, die für die JSON-Verarbeitung nützlich sind.

Ivanov
quelle
2
Bis 10.2.6 wird natives JSON noch nicht unterstützt.
Kittygirl
1
Sie speichern den Json erst ab 10.3
Musa Haidari
5

Es kommt darauf an, was Sie mit "Datentyp" meinen. Einige Datenbanken wie PostgreSQL verfügen über einen JSON-Datentyp, der eine Volltextsuche, einen Binärspeichermechanismus, eine Indexierung 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 .

Auch das bringt einen sehr eingeschränkten Typ für MySQL, von einem der Bug-Betreuer,

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

my_json_column TEXT CHECK (JSON_VALID(my_json_column))

Aus Gründen der MySQL-Kompatibilität werden wir jedoch JSON "type" hinzufügen.

Nach meiner Lektüre ist das nicht genau der Punkt, an dem sich JSON auf die MySQL-Dokumente bezieht

Das Binärformat ist so aufgebaut, dass der Server Unterobjekte oder verschachtelte Werte direkt nach Schlüssel- oder Arrayindex abrufen kann, ohne alle Werte vor oder nach diesen im Dokument zu lesen.

Auch hier leistet PostgreSQL jsonbviel mehr.

jsonb-Daten werden in einem zerlegten Binärformat gespeichert, das die Eingabe aufgrund des zusätzlichen Konvertierungsaufwands etwas verlangsamt, die Verarbeitung jedoch erheblich beschleunigt, da kein erneutes Parsen 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" bekommt, ist es nur ein dünner Wrapper über einer Textvalidierung (wie der jsonTyp von PostgreSQL ). Es gibt keine Pläne für einen binären JSON-Typ (wie PostgreSQL jsonb), da die Entwickler die Vorteile anscheinend nicht verstehen.

Evan Carroll
quelle
Dem Benutzer ist es wirklich egal, ob JSON in Postgres zusammengesetzt oder zerlegt gespeichert ist, ob json binär ist oder nicht. Wichtig ist für JSON, dass a) das, was Sie eingeben, ausgegeben wird und die Möglichkeit besteht, nach gültigen Eingaben zu suchen. b) Sie können Teile von JSON indizieren und suchen. 3) Es gibt Funktionen, mit denen Sie arbeiten können.
Vladislav Vaintroub