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 json
tipo di PostgreSQL ). Non ci sono piani per un tipo JSON binario (come PostgreSQL jsonb
) perché gli sviluppatori sembrano non capire i vantaggi.