MariaDB supporta il tipo di dati della colonna JSON nativa?


13

Non sto parlando di colonne dinamiche, sto chiedendo il tipo di dati JSON colonna nativa. In parole semplici, posso eseguire il seguente codice su qualsiasi versione di MariaDB?

CREATE TABLE example (names JSON);

Per quanto ne so, non lo è, ma non sono ancora sicuro poiché ci sono molti argomenti che parlano del supporto JSON su MariaDB da anni, ma nessuno ha detto che è stato finalmente implementato.

-- Aggiornare --

Ho appena scoperto tre problemi ancora aperti su MariaDB Jira sul supporto del tipo di dati JSON, il che significa che non è ancora stato implementato, giusto?


Quell'aggiornamento non dovrebbe essere nella domanda, questa è la risposta. Dovresti spostarlo e rispondere autonomamente. @Omranic.
Evan Carroll,

> JSON è un alias per LONGTEXT introdotto per motivi di compatibilità con il tipo di dati JSON di MySQL. mariadb.com/kb/en/library/json-data-type
zx1986

Risposte:


7

Il supporto JSON arriverà a MariaDB 10.2. Vedi il post ufficiale sul blog MariaDB del 28.02.2017. Ci sono alcuni esempi di istruzioni SQL e validazione.

JSON sta rapidamente diventando il formato standard per lo scambio di dati e per i dati non strutturati e MariaDB 10.2 aggiunge una gamma di funzioni di supporto JSON, anche se un tipo di dati JSON non è ancora implementato. Ci sono alcuni motivi per cui non esiste un tipo di dati JSON, ma uno è che in realtà non ci sono molti vantaggi in quanto JSON è un formato basato su testo. Questo post del blog ha lo scopo di descrivere JSON e i relativi casi d'uso, nonché di descrivere le funzioni e gli usi JSON MariaDB 10.2 per questi, oltre a mostrare alcune altre aggiunte a MariaDB 10.2 utili per l'elaborazione JSON.


2
Fino al 10.2.6, non supporta ancora JSON nativo.
kittygirl,

1
Memorizzano il json come testo in chiaro solo a partire dal 10.3
Musa Haidari

5

Dipende da cosa intendi quando dici "tipo di dati". Alcuni database come PostgreSQL, hanno un tipo di dati JSON che consente la ricerca di testo completo, un meccanismo di archiviazione binaria, indicizzazione e suite completa di operatori per accedere ai dati. Maria non lo ha ancora. Il tipo di dati specificamente è monitorato da MDEV-9144 .

Tuttavia, porta un tipo molto limitato a MySQL, da uno dei manutentori di bug,

Il tipo di dati JSON contraddice direttamente lo standard SQL, in base al quale le funzioni JSON_ * accettano una stringa come argomento. Inoltre, MariaDB per quanto riguarda la velocità non ha bisogno di JSON binario, secondo i nostri benchmark, il nostro parser JSON è veloce sul testo JSON come MySQL su JSON binario. Cioè, in MariaDB si potrebbe VARCHAR o TEXT per JSON. Se è necessaria una convalida, è possibile farlo con un vincolo CHECK:

my_json_column TEXT CHECK (JSON_VALID(my_json_column))

Aggiungeremo il "tipo" JSON per la compatibilità con MySQL.

Dalla mia lettura, non è esattamente questo il punto del JSON binario, facciamo riferimento ai documenti di MySQL

Il formato binario è strutturato per consentire al server di cercare oggetti secondari o valori nidificati direttamente dalla chiave o dall'indice dell'array senza leggere tutti i valori prima o dopo di essi nel documento.

Ancora una volta, PostgreSQLjsonb fa molto di più.

i dati jsonb sono archiviati in un formato binario decomposto che rende leggermente più lento l'input a causa del sovraccarico di conversione aggiunto, ma notevolmente più veloce da elaborare, poiché non è necessario alcun reparsing. jsonb supporta anche l'indicizzazione, che può essere un vantaggio significativo.

TLDR; Maria DB non ha ancora un tipo JSON. Anche quando ottiene il "tipo" è solo un wrapper sottile su una validazione del testo (come il jsontipo di PostgreSQL ). Non ci sono piani per un tipo JSON binario (come PostgreSQL jsonb) perché gli sviluppatori sembrano non capire i vantaggi.


All'utente non importa davvero se JSON in Postgres sia archiviato composto o decomposto, se json sia binario o meno. Importante è per JSON a) cosa lo metti, esci, e c'è la possibilità di controllare input validi. b) è possibile indicizzare e cercare parti di JSON. 3) Ci sono funzioni per operare su di esso.
Vladislav Vaintroub,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.