¿MariaDB admite el tipo de datos de columna JSON nativo?


13

No estoy hablando de columnas dinámicas, estoy preguntando sobre el tipo de datos JSON de columna nativa. En palabras simples, ¿puedo ejecutar el siguiente código en cualquier versión de MariaDB?

CREATE TABLE example (names JSON);

Hasta donde sé, no lo hace, pero todavía no estoy seguro, ya que hay muchos temas que hablan sobre el soporte de JSON en MariaDB durante años, pero ninguno dijo que finalmente se implementara.

- Actualización -

Acabo de encontrar tres problemas aún abiertos en MariaDB Jira sobre el soporte de tipo de datos JSON, lo que significa que aún no se ha implementado, ¿verdad?


Esa actualización no debería estar en la pregunta, esa es la respuesta. Deberías sacar eso y responder a ti mismo. @Omranic.
Evan Carroll

> JSON es un alias para LONGTEXT introducido por razones de compatibilidad con el tipo de datos JSON de MySQL. mariadb.com/kb/en/library/json-data-type
zx1986

Respuestas:


7

El soporte de JSON llegará a MariaDB 10.2. Vea la publicación oficial del blog MariaDB del 28.02.2017. Hay algunos ejemplos de sentencias SQL y validación.

JSON se está convirtiendo rápidamente en el formato estándar para el intercambio de datos y para los datos no estructurados, y MariaDB 10.2 agrega un rango de funciones compatibles con JSON, a pesar de que todavía no se ha implementado un tipo de datos JSON. Hay algunas razones por las que no hay un tipo de datos JSON, pero una es que en realidad no hay tantas ventajas, ya que JSON es un formato basado en texto. Esta publicación de blog tiene como objetivo describir JSON y los casos de uso, así como describir las funciones y usos de MariaDB 10.2 JSON para estos, así como mostrar algunas otras adiciones a MariaDB 10.2 que son útiles para el procesamiento de JSON.


2
Hasta 10.2.6, todavía no es compatible con JSON nativo.
kittygirl

1
Almacenan el json como texto sin formato solo a partir de 10.3
Musa Haidari

5

Depende de lo que quiera decir cuando dice "tipo de datos". Algunas bases de datos como PostgreSQL tienen un tipo de datos JSON que permite la búsqueda de texto completo, un mecanismo de almacenamiento binario, indexación y un conjunto completo de operadores para acceder a los datos. María aún no tiene eso. El tipo de datos específicamente está siendo rastreado por MDEV-9144 .

Aun así, trae un tipo muy limitado a MySQL, de uno de los mantenedores de errores,

El tipo de datos JSON contradice directamente el estándar SQL, es decir, que las funciones JSON_ * toman una cadena como argumento. Además, MariaDB en cuanto a velocidad no necesita JSON binario, de acuerdo con nuestros puntos de referencia, nuestro analizador JSON es tan rápido en texto JSON como MySQL en JSON binario. Es decir, en MariaDB uno podría VARCHAR o TEXTO para JSON. Si se necesita una validación, se puede hacer con una restricción CHECK:

my_json_column TEXT CHECK (JSON_VALID(my_json_column))

Sin embargo, agregaremos "tipo" JSON para compatibilidad con MySQL.

Según mi lectura, ese no es exactamente el punto de JSON binario, consultemos los documentos de MySQL

El formato binario está estructurado para permitir que el servidor busque subobjetos o valores anidados directamente por clave o índice de matriz sin leer todos los valores anteriores o posteriores en el documento.

Una vez más, PostgreSQLjsonb hace mucho más que eso.

Los datos de jsonb se almacenan en un formato binario descompuesto que hace que la entrada sea un poco más lenta debido a la sobrecarga de conversión agregada, pero es significativamente más rápido de procesar, ya que no se necesita volver a analizar. jsonb también es compatible con la indexación, lo que puede ser una ventaja significativa.

tldr; Maria DB todavía no tiene un tipo JSON. Incluso cuando obtiene el "tipo", es solo una envoltura delgada sobre una validación de texto (como el jsontipo de PostgreSQL ). No hay planes para un tipo JSON binario (como PostgreSQL jsonb) porque los desarrolladores aparentemente no entienden las ventajas.


Al usuario realmente no le importa si JSON en Postgres se almacena compuesto o descompuesto, si json es binario o no. Lo importante es para JSON a) lo que pones, sales y existe la posibilidad de verificar la entrada válida. b) puede indexar y buscar partes de JSON. 3) Hay funciones para operar en él.
Vladislav Vaintroub
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.