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
@hellosct1 – Capitole du libre 2022 Modèle Utilisation de modèles de données hybrides avec MariaDB Relationnel Intégrité des données Transactions Fiabilité JSON Flexibilité Simplicité Omniprésence
@hellosct1 – Capitole du libre 2022 Colonnes dynamiques (1/4) create 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] ], ...)
@hellosct1 – Capitole du libre 2022 Colonnes dynamiques (4/4) >SELECT nom, COLUMN_JSON(nosql) FROM newsql; >SELECT id,type,nom, COLUMN_GET(nosql, 'couleur' as char) AS couleur,prix FROM newsql;
@hellosct1 – Capitole du libre 2022 Manipulation de JSON ● 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/
@hellosct1 – Capitole du libre 2022 Json-data-type (1/5) ● Disponible à 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/
@hellosct1 – Capitole du libre 2022 Avancé : JSON en 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/
@hellosct1 – Capitole du libre 2022 Avancé : JSON en 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;
@hellosct1 – Capitole du libre 2022 MariaDB ColumnStore (1/3) ● 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é.
@hellosct1 – Capitole du libre 2022 Connect : NoSQL Document 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