Présentation effectuée au Capitole du libre par Christophe Villeneuve sur "Mixer le JSON dans une base de données".
Cette présentation a pour but de vous montrer toutes les facettes du JSON dans une base de données comme MariaDB
table newsql( id int auto_increment primary key, nom varchar(40), type enum ('animal', 'ordinateur'), prix int, nosql blob); COLUMN_CREATE( column_nr, value [as type], [ column_nr, value [as type] ], ...)
En fonctions • Gestion en tableau – Array • Insert • Explose • Value • Structure • ... • En tables • Dispo 10.6 + • Utilisation – Dans des contextes – Référence à une table – Compatible • Select • Insert • Update • Delete • Sur le principe de JSON_DOC En fonctions En tables https://mariadb.com/kb/en/json-functions/ https://mariadb.com/kb/en/json_table/
à partir de 10.2.7 • But – Pour rendre possible l'utilisation de colonnes JSON • dans la réplication basée sur les déclarations – de MySQL vers MariaDB – pour permettre à MariaDB de lire les mysqldumps de MySQL • JSON est un alias LONGTEXT • Benchmarks de MariaDB → performances sont au moins équivalentes • fonction JSON_VALID – Utilisée comme une contrainte CHECK https://mariadb.com/kb/en/json-data-type/
id int auto_increment primary key, nom varchar(40), type enum ('animal', 'ordinateur'), prix int, attr JSON, CHECK (JSON_VALID(attr)) ); https://mariadb.com/kb/en/json_valid/ • Desc demo2 ;
tables (1/5) > CREATE TABLE people ( id INT NOT NULL, name VARCHAR(50) NOT NULL, pets JSON ); https://mariadb.com/fr/resources/blog/introducing-json-tables/
tables (3/5) > SELECT id, JSON_VALUE(JSON_QUERY(pets, CONCAT('$[', ind.ind, ']')), '$.type') pet_type, JSON_VALUE(JSON_QUERY(pets, CONCAT('$[', ind.ind, ']')), '$.name') pet_name FROM people CROSS JOIN (SELECT 0 AS ind UNION ALL SELECT 1 AS ind) ind;
Extract Transform Load • Lecture / Ecriture / MAJ – TXT, DBF, INI, XML, JSON – MS Access, MS Excel, TBL (similaire à MERGE) – ODBC, MySQL,SQLite, Oracle, DB2, WMI… • Locale ou distant • Custom possible • Accès en parallèle sur multitables Installation dans My.cnf [mariadb] plugin_load_add = ha_connect
Moteur de stockage orienté en colonnes – Utilise une architecture de données distribuées massivement parallèle – Système de stockage en colonnes – Utile pour le Big Data – Architecture (en parallèle) • Exécution de requêtes distribuée • Chargement de données • Depuis la version 10.6 – Disponible en tant que moteur de stockage pour le serveur MariaDB • Avant cela, il est uniquement disponible en téléchargement séparé.
protocol • Le module nosqlprotocol permet d'utiliser un serveur ou un cluster MariaDB – comme backend d'une application utilisant une bibliothèque client MongoDB®. • En interne, tous les documents sont stockés dans une table contenant deux colonnes : – une colonne id pour l'identifiant de l'objet – une colonne doc pour le document lui-même. MariaDB MaxScale App id doc