Desde la versión 10.2, puedes usar JSON en MariaDB como tipo de dato para almacenar y procesar datos flexibles y semiestructurados en tablas relacionales. Te mostramos las funciones y pasos más importantes.

Vista general de las funciones JSON en MariaDB

MariaDB te ofrece una serie de funciones útiles con las que puedes trabajar de forma eficaz con datos JSON directamente en la base de datos. No necesitas una base de datos NoSQL adicional. Con las siguientes herramientas puedes acceder de forma precisa a la información, modificar contenidos o verificar datos estructurados:

  • JSON_VALUE(json_doc, json_path): esta función te permite leer un valor específico dentro de un campo JSON. Indicas el documento JSON y la ruta al elemento deseado. MariaDB te devuelve exactamente ese valor, ahorrándote la tarea de analizar o parsear el documento completo externamente.
  • JSON_SET(json_doc, path, value): con esta función puedes modificar una entrada existente o añadir un nuevo campo directamente en la base de datos. Si la ruta indicada existe, MariaDB reemplaza el valor; si no existe, MariaDB crea la ruta.
  • JSON_REMOVE(json_doc, path): esta función te ayuda a limpiar un documento JSON. Por ejemplo, si quieres eliminar un atributo obsoleto, solo tienes que indicar la ruta.
  • JSON_CONTAINS(json_doc, value, path): esta función es útil para comprobaciones o consultas con filtros. Puedes verificar si un valor determinado está presente en el JSON.
  • JSON_VALID(json_doc): antes de procesar JSON, deberías asegurarte de que es válido. Con JSON_VALID, MariaDB detecta si el texto JSON está correctamente formado, lo que te permite identificar errores de forma temprana.
Bases de datos gestionadas
Bases de datos seguras y fáciles de usar
  • Arquitectura de primera gestionada por expertos
  • Soluciones flexibles adaptadas a tus necesidades
  • Seguridad máxima en centros de datos con certificación ISO

Guía paso a paso: usar JSON en MariaDB

En esta sección te mostramos cómo almacenar, consultar y manipular datos JSON en MariaDB.

Paso 1: crea una tabla con un campo JSON

Primero, crea una tabla con una columna del tipo LONGTEXT o JSON. MariaDB almacena JSON internamente como texto, pero al usar las funciones JSON verifica automáticamente la sintaxis.

CREATE TABLE products (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255),
    properties JSON
);
sql

En la columna properties puedes almacenar cualquier objeto JSON.

Paso 2: inserta datos JSON

Ahora puedes insertar registros con JSON válido usando MariaDB INSERT INTO:

INSERT INTO products (name, properties) VALUES (
    'desk',
    '{"color": "brown", "material": "timber", "weight": 12.5}'
);
sql

Es importante formatear correctamente la cadena JSON y colocarla entre comillas. Dentro de la cadena, las comillas dobles deben escaparse con una barra invertida (\").

Paso 3: lee datos desde una columna JSON

Para extraer valores específicos de un objeto JSON, usa JSON_VALUE():

SELECT name, JSON_VALUE(properties, '$.material') AS material
FROM products;
sql

El resultado muestra el nombre del producto y el material almacenado en el campo JSON.

Nota

JSON_VALUE() está disponible en MariaDB a partir de la versión 10.6.1. En versiones anteriores, se debe usar JSON_UNQUOTE(JSON_EXTRACT(...)) en su lugar.

Paso 4: actualiza datos JSON en MariaDB

Para modificar un valor dentro de un objeto JSON en MariaDB, utiliza JSON_SET():

UPDATE products
SET properties = JSON_SET(properties, '$.color', 'white')
WHERE name = 'desk';
sql

También puedes añadir nuevos pares clave-valor que no existían previamente.

Paso 5: elimina un elemento de un JSON

Con JSON_REMOVE() puedes eliminar valores específicos de un objeto:

UPDATE products
SET properties = JSON_REMOVE(properties, '$.weight')
WHERE name = 'desk';
sql

Paso 6: busca valores en un JSON

En MariaDB puedes filtrar registros según contenidos específicos dentro del JSON:

SELECT * FROM products
WHERE JSON_VALUE(properties, '$.material') = 'timber';
sql

Esto es especialmente útil para filtros complejos, como búsquedas de productos o contenidos personalizados.

Paso 7: validación y depuración

Si quieres comprobar si una columna contiene un JSON válido, puedes usar JSON_VALID():

SELECT name, JSON_VALID(properties) FROM products;
sql

Si la función devuelve 1, el JSON es válido; si devuelve 0, hay errores de sintaxis.

Paso 8: combina columnas JSON con columnas generadas e índices

MariaDB almacena internamente los contenidos JSON como texto. Por ello, los datos deben ser analizados cada vez que se consultan. Esto puede causar problemas de rendimiento, especialmente en tablas grandes o cuando se accede con frecuencia a determinados campos JSON. Una solución eficaz son las columnas generadas, que extraen automáticamente ciertos valores del contenido JSON y los almacenan por separado.

Por ejemplo, puedes extraer el valor de la clave material desde la columna JSON properties y guardarlo en una nueva columna indexable:

ALTER TABLE products
ADD COLUMN material VARCHAR(100) AS (JSON_VALUE(properties, '$.material')) STORED,
ADD INDEX idx_material (material);
sql

Este comando crea la columna material, que toma el valor JSON de $.material. La palabra clave STORED garantiza que el valor se almacene en la base de datos y no se calcule solo en tiempo de ejecución. Además, se crea un índice (idx_material) para realizar consultas precisas de forma eficiente.

Después, puedes ejecutar consultas mucho más rápidas como esta:

SELECT name FROM products WHERE material = 'timber';
sql

Esta técnica es especialmente recomendable en entornos de producción con muchas operaciones de lectura. Además, reduce la carga de procesamiento en las consultas y garantiza tiempos de respuesta más cortos, incluso con grandes volúmenes de datos.

¿Por qué es útil la combinación de JSON y MariaDB?

El uso de JSON en MariaDB es especialmente práctico cuando las aplicaciones necesitan almacenar datos con una estructura variable. Esto puede incluir configuraciones, respuestas de API, perfiles de usuario o registros (logs). JSON mantiene contenidos anidados y flexibles en una columna. No necesitas crear columnas adicionales para cada campo posible. En su lugar, añades nuevos valores en la estructura JSON. De este modo, adaptas tus datos sin cambiar el esquema de la base de datos.

Especialmente en sistemas que requieren tanto estructuras tabulares fijas como almacenamiento flexible de datos, JSON en MariaDB ofrece una solución rápida y sencilla. Puedes manejar contenidos dinámicos sin renunciar a las ventajas de las consultas SQL tradicionales. Así, combinas la estabilidad de los datos relacionales con la adaptabilidad de NoSQL.

Compute Engine
La solución IaaS ideal para tus cargas de trabajo
  • vCPU económico con núcleos dedicados
  • Flexible y sin periodo mínimo contractual
  • Soporte experto 24/7
¿Le ha resultado útil este artículo?
Ir al menú principal