Alejandra, parte de este staff, nos hizo el favor de crear esta crónica porque domina a la perfección dicho tema.
El alias JSON se agregó en Maria DB 10.2.7. Esto se hizo para hacer posible el uso de columnas JSON en la replicación basada en declaraciones de MySQL a MariaDB y para que MariaDB pueda leer mysqldumps desde MySQL.
JSON es un alias para LONGTEXT introducido por razones de compatibilidad con el tipo de datos JSON de MySQL. MariaDB implementa esto como un LONGTEXT, ya que el tipo de datos JSON contradice el estándar SQL y los puntos de referencia de MariaDB indican que el rendimiento es al menos equivalente.
Para garantizar que se inserte un documento json válido, la función JSON_VALID se puede usar como una restricción CHECK. Esta restricción se incluye automáticamente para los tipos que usan el alias JSON de Maria DB 10.4.3.
Ejemplos
CREATETABLE t (j JSON);DESC t;+-------+----------+------+-----+---------+-------+| Field |Type|Null|Key|Default| Extra |+-------+----------+------+-----+---------+-------+| j |longtext| YES ||NULL||+-------+----------+------+-----+---------+-------+
Con validación:
CREATETABLE t2 ( j JSON CHECK(JSON_VALID(j)));INSERTINTO t2 VALUES('invalid'); ERROR 4025(23000): CONSTRAINT`j` failed for`test`.`t2`INSERTINTO t2 VALUES('"id": 1, "name": "Monty"'); Query OK,1row affected (0.13 sec)
Replicación de datos JSON entre MySQL y MariaDB
El tipo JSON en MySQL almacena el objeto JSON en forma compacta, no tan LONGTEXT como en MariaDB. Esto significa que la replicación basada en filas no funcionará para los tipos JSON de MySQL a MariaDB.
Hay algunas maneras diferentes de resolver esto:
- Utilice la replicación basada en declaraciones.
- Cambie la columna JSON para escribir TEXTO en MySQL
Convertir una TABLA MySQL con campos JSON a MariaDB
MariaDB no puede acceder directamente al formato JSON de MySQL.
Hay algunas formas diferentes de mover la tabla a MariaDB:
- Cambie la columna JSON para escribir TEXTO en MySQL. Después de esto, MariaDB puede usar directamente la tabla sin necesidad de volcar y restaurar.
- Use mysqldump para copiar la tabla.
Diferencias entre las cadenas MySQL JSON y las cadenas MariaDB JSON
- En MySQL, JSON es un objeto y es comparado según valores json. En MariaDB, las cadenas JSON son cadenas normales y se comparan como cadenas. Una excepción es cuando se usa JSON_EXTRACT(), en cuyo caso las cadenas no tienen escape antes de la comparación.
Ver también
- Funciones JSON
- CONECTAR Tipo de tabla JSON
- MDEV-9144
El contenido reproducido en este sitio es propiedad de sus respectivos dueños, y MariaDB no revisa este contenido por adelantado. Los puntos de vista, la información y las opiniones expresadas por este contenido no representan necesariamente las de MariaDB o cualquier otra parte.
Agradecemos que quieras añadir valor a nuestro contenido informacional contribuyendo tu experiencia en las crónicas.